diff --git a/less/actor-sheet.less b/less/actor-sheet.less new file mode 100644 index 0000000..958cd57 --- /dev/null +++ b/less/actor-sheet.less @@ -0,0 +1,469 @@ +.editor { + border: 2; + height: 100%; + padding: 0 3px; +} + +.medium-editor { + border: 2; + height: 240px; + max-height: 240px; + overflow-y: auto; + overflow-x: hidden; + padding: 0 3px; + + prose-mirror, .editor, .editor-content, .ProseMirror { + overflow: hidden; + height: auto; + } +} + +.small-editor { + border: 2; + height: 120px; + max-height: 120px; + overflow-y: auto; + overflow-x: hidden; + padding: 0 3px; + + prose-mirror, .editor, .editor-content, .ProseMirror { + overflow: hidden; + height: auto; + } +} + +.questionnaire-reponse { + max-width: 42rem; + margin-left: 1rem; +} + +.questionnaire-element { + margin-top: 0.5rem; +} + +// Style unifié pour tous les inputs et selects (fiches acteur, item, roll dialogs) +.fvtt-te-deum { + input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]), + select { + background: rgba(248, 245, 238, 0.95); + color: rgba(19, 18, 18, 0.95); + border: 1px solid rgba(139, 115, 85, 0.35); + border-radius: 3px; + padding: 0.15rem 0.3rem; + transition: border-color 0.2s ease, box-shadow 0.2s ease; + + &:hover { + border-color: rgba(139, 115, 85, 0.65); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); + } + + &:focus { + outline: none; + border-color: rgba(139, 115, 85, 0.85); + box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); + } + + &:disabled { + color: rgba(19, 18, 18, 0.4); + background: rgba(220, 216, 205, 0.6); + border-color: rgba(139, 115, 85, 0.15); + } + } + + textarea { + background: rgba(248, 245, 238, 0.95); + color: rgba(19, 18, 18, 0.95); + border: 1px solid rgba(139, 115, 85, 0.35); + border-radius: 3px; + padding: 0.2rem 0.4rem; + transition: border-color 0.2s ease, box-shadow 0.2s ease; + + &:hover { + border-color: rgba(139, 115, 85, 0.65); + } + + &:focus { + outline: none; + border-color: rgba(139, 115, 85, 0.85); + box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); + } + } +} + +.fvtt-te-deum.window-app .window-content, +.fvtt-te-deum.application .window-content, +.fvtt-te-deum.window-app.sheet .window-content .sheet-body, +.fvtt-te-deum.application.sheet .window-content .sheet-body { + font-size: 0.8rem; + background: rgba(226, 226, 222, 0.95); + color: rgba(19, 18, 18, 0.95); +} + +// Améliorations pour les fiches d'items +.item-form { + .sheet-header { + background: linear-gradient( + 135deg, + rgba(226, 226, 222, 0.95) 0%, + rgba(240, 235, 225, 0.9) 100% + ); + padding: 0.8rem; + border-radius: 8px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(139, 115, 85, 0.3); + margin-bottom: 0.5rem; + + h1.charname input { + // Voir règles haute-spécificité charname ci-dessous + } + } + + .sheet-body { + ul { + list-style: none; + padding: 0; + margin: 0; + + li.flexrow { + background: rgba(255, 255, 255, 0.3); + padding: 0.4rem 0.6rem; + margin: 0.3rem 0; + border-radius: 4px; + border-left: 3px solid rgba(139, 115, 85, 0.3); + transition: all 0.2s ease; + + &:hover { + background: rgba(255, 255, 255, 0.5); + border-left-color: rgba(139, 115, 85, 0.6); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + } + } + } + + h3 { + background: linear-gradient( + 135deg, + rgba(196, 186, 166, 0.6) 0%, + rgba(226, 226, 222, 0.5) 100% + ); + padding: 0.4rem 0.6rem; + margin: 0.8rem 0 0.4rem 0; + border-radius: 4px; + border-left: 4px solid rgba(139, 115, 85, 0.6); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + font-family: MailartRubberstamp; + font-size: 1.1rem; + color: #3d3a2e; + } + + input[type="checkbox"] { + width: 18px; + height: 18px; + cursor: pointer; + } + } +} + +// Champ "name" — règles haute-spécificité (spec 0,6,2 / 0,7,2) pour surcharger les règles génériques d'input +// Fiche acteur : font-size 3rem +.fvtt-te-deum.application .window-content .sheet-header h1.charname input[name="name"], +.fvtt-te-deum.window-app .window-content .sheet-header h1.charname input[name="name"] { + font-family: "GreatPrimer"; + font-size: 3rem; + background: transparent; + border: none; + border-bottom: 2px solid rgba(139, 115, 85, 0.4); + color: rgba(50, 35, 15, 0.95); + width: 100%; + height: 100%; + margin: 0; + letter-spacing: 0.05em; + transition: border-color 0.2s ease; + + &:hover { + border-width: 2px; + border-color: rgba(139, 115, 85, 0.7); + } + + &:focus { + border-bottom-color: rgba(139, 115, 85, 0.9); + outline: none; + } +} + +// Fiche item : même style mais font-size plus petit +.fvtt-te-deum.application .window-content .item-form .sheet-header h1.charname input[name="name"], +.fvtt-te-deum.window-app .window-content .item-form .sheet-header h1.charname input[name="name"] { + font-size: 1.6rem; + height: auto; +} + +.fvtt-te-deum .sheet-body { + padding: 0.25rem 0.5rem; + + &:after { + content: ""; + display: block; + clear: both; + } +} + +.fvtt-te-deum nav { + &.tabs { + .item { + z-index: 2; + position: relative; + opacity: 1; + color: rgba(29, 28, 31); + padding: 0 0.25rem; + + &:after { + content: ""; + position: absolute; + top: 0; + right: 0; + height: 2rem; + width: 1px; + } + } + } +} + +.select-diff { + display: inline-block; + text-align: left; + width: 50px; +} + +.fvtt-te-deum.window-app.sheet .window-content .carac-value, +.fvtt-te-deum.application.sheet .window-content .carac-value, +.fvtt-te-deum.window-app.sheet .window-content .competence-xp, +.fvtt-te-deum.application.sheet .window-content .competence-xp { + margin: 0.05rem; + flex-basis: 3rem; + text-align: center; +} + +.fvtt-te-deum h1, +.fvtt-te-deum h2, +.fvtt-te-deum h3, +.fvtt-te-deum h4 { + font-weight: bold; + color: rgba(19, 18, 18, 0.95); +} + +.fvtt-te-deum .malus-sante { + font-size: 0.88rem; + font-weight: normal; +} + +.fvtt-te-deum .malus-sante-active { + color: rgba(200, 80, 10, 0.95); + font-weight: bold; +} + +.fvtt-te-deum ul, +.fvtt-te-deum ol { + margin: 0; + padding: 0; +} + +.fvtt-te-deum ul, +.fvtt-te-deum li { + list-style-type: none; +} + +.header-fields { + li { + margin: 0; + padding: 0; + } +} + +.alterne-list { + & > .list-item { + &:hover { + background: rgba(226, 226, 222, 0.4); + transform: translateX(2px); + } + + &:nth-child(even) { + background: rgba(240, 235, 225, 0.3); + } + + &:nth-child(odd) { + background: rgba(250, 245, 235, 0.2); + } + } +} + +.specialisation-label { + font-size: 0.8rem; +} + +.carac-label, +.attr-label { + font-weight: bold; +} + +.list-item { + margin: 0.125rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0.3rem; + padding: 0.3rem 0.4rem; + flex: 1 1 5rem; + border: 1px solid rgba(139, 115, 85, 0.15); + transition: all 0.2s ease; + + &:hover { + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + border-color: rgba(139, 115, 85, 0.3); + background: rgba(255, 255, 255, 0.3); + } +} + +.list-item-shadow { + background: linear-gradient( + 135deg, + rgba(170, 168, 167, 0.25) 0%, + rgba(200, 195, 185, 0.2) 100% + ); + flex-grow: 0; + flex-wrap: nowrap; + justify-content: flex-start; + border-left: 3px solid rgba(139, 115, 85, 0.3); +} + +.list-item-shadow2 { + background: linear-gradient( + 135deg, + rgba(87, 60, 32, 0.2) 0%, + rgba(120, 90, 60, 0.15) 100% + ); + flex-grow: 0; + flex-wrap: nowrap; + justify-content: flex-start; + border-left: 3px solid rgba(87, 60, 32, 0.4); +} + +.item-display-show { + display: block; +} + +.item-display-hide { + display: none; +} + +.item-quantite { + margin-left: 0.5rem; +} + +.list-item-margin1 { + margin-left: 1rem; +} + +.list-item-margin2 { + margin-left: 2rem; +} + +.list-item-margin3 { + margin-left: 3rem; +} + +.list-item-margin4 { + margin-left: 4rem; +} + +.sheet-competence-img { + width: 24px; + max-width: 24px; + height: 24px; + max-height: 24px; + flex-grow: 0; + margin-right: 0.25rem; + border-radius: 3px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(139, 115, 85, 0.3); +} + +.competence-column { + flex-direction: column; + align-content: flex-start; + justify-content: flex-start; + flex-grow: 0; + flex-basis: 1; +} + +.competence-header { + align-content: flex-start; + justify-content: flex-start; + font-weight: bold; + flex-grow: 0; +} + +.comp-li { + max-width: 8rem; + width: 8rem; +} + +.description-label { + flex-grow: 2; + margin-left: 4px; +} + +.status-header-label { + margin-left: 2px; +} + +.roll-dialog-label { + margin: 4px 0; + min-width: 96px; +} + +.short-label { + flex-grow: 1; +} + +.keyword-label { + font-size: 0.85rem; +} + +.item-sheet-label { + flex-grow: 1; +} + +.item-text-long-line { + flex-grow: 3; +} + +.score-label { + flex-grow: 2; + align-content: center; +} + +.attribut-value, +.carac-value { + flex-grow: 0; + flex-basis: 64px; + margin-right: 4px; + margin-left: 4px; +} + +.sante-value, +.competence-value { + flex-grow: 0; + flex-basis: 2rem; + margin-right: 0.25rem; + margin-left: 0.25rem; +} + +.description-value { + flex-grow: 0; + flex-basis: 4rem; + margin-right: 0.25rem; + margin-left: 0.25rem; +} + +.small-label { + margin-top: 5px; +} diff --git a/less/base.less b/less/base.less new file mode 100644 index 0000000..8bb7ad8 --- /dev/null +++ b/less/base.less @@ -0,0 +1,235 @@ +.fvtt-te-deum.window-app, +.fvtt-te-deum.application { + text-align: justify; + font-size: 16px; + letter-spacing: 1px; + + &.sheet { + .window-content { + margin: 0; + padding: 0; + font-family: "GreatPrimer"; + + .sheet-header { + color: rgba(19, 18, 18, 0.95); + background: rgba(226, 226, 222, 0.95); + } + + .tooltip { + &:hover { + .tooltiptext { + top: 2rem; + left: 2rem; + margin: 0; + padding: 0.25rem; + } + } + } + } + } +} + +.fvtt-te-deum.sheet header.sheet-header h1 input, +.window-app .window-header, +.application .window-header, +#actors .directory-list, +#navigation #scene-list .scene.nav-item { + font-size: 1rem; +} + +.fvtt-te-deum.sheet { + nav { + &.sheet-tabs, + &.tabs { + font-size: 0.8rem; + font-size: 1.2rem; + font-weight: bold; + height: 3rem; + flex: 0 0 3rem; + margin: 0; + padding: 0 0 0 0.25rem; + text-align: center; + line-height: 1.5rem; + border-top: 0 none; + border-bottom: 0 none; + background: + linear-gradient(rgba(226, 226, 222, 0.5), rgba(226, 226, 222, 0.5)), + url("../images/ui/frise_bottom_01.webp"); + background-repeat: no-repeat; + background-size: 100% 100%; + z-index: 1; + } + } + + header { + &.sheet-header { + .profile-img { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 0; + object-position: 50% 0; + margin: 0.5rem 0 0.5rem 0.5rem; + padding: 0; + } + + .flex-compteurs { + text-align: right; + } + + .resource-content { + width: 2rem; + } + } + } + + .tab[data-tab] { + padding: 0; + } + + li { + margin: 0.2rem; + padding: 0.15rem; + } +} + +.fvtt-te-deum.window-app input, +.fvtt-te-deum.application input, +.fvtt-te-deum .item-form, +.fvtt-te-deum.sheet header.sheet-header .flex-group-center.flex-compteurs, +.fvtt-te-deum.sheet header.sheet-header .flex-group-center.flex-fatigue, +.fvtt-te-deum select, +.fvtt-te-deum button, +.item-checkbox, +#sidebar, +#players, +#navigation #nav-toggle { + font-size: 0.8rem; +} + +.window-header { + background: rgba(0, 0, 0, 0.75); +} + +.strong-text { + font-weight: bold; +} + +.fvtt-te-deum .tabs .item.active, +.fvtt-te-deum .blessures-list li ul li:first-child:hover, +.fvtt-te-deum a:hover { + text-shadow: 1px 0px 0px #ff6600; +} + +.rollable:hover, +.rollable:focus { + color: #000; + text-shadow: 0 0 10px red; + cursor: pointer; +} + +li.folder > .folder-header h3 { + color: #aaa; +} + +.fvtt-te-deum table { + border: 1px solid #7a7971; +} + +.grid, +.grid-2col { + display: grid; + grid-column: span 2 / span 2; + grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-gap: 10px; + grid-gap: 10px; + gap: 10px; + margin: 10px 0; + padding: 0; +} + +.grid-3col { + grid-column: span 3 / span 3; + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.grid-4col { + grid-column: span 4 / span 4; + grid-template-columns: repeat(4, minmax(0, 1fr)); +} + +.grid-5col { + grid-column: span 5 / span 5; + grid-template-columns: repeat(5, minmax(0, 1fr)); +} + +.grid-6col { + grid-column: span 5 / span 5; + grid-template-columns: repeat(5, minmax(0, 1fr)); +} + +.grid-7col { + grid-column: span 7 / span 7; + grid-template-columns: repeat(7, minmax(0, 1fr)); +} + +.grid-8col { + grid-column: span 8 / span 8; + grid-template-columns: repeat(8, minmax(0, 1fr)); +} + +.grid-9col { + grid-column: span 9 / span 9; + grid-template-columns: repeat(9, minmax(0, 1fr)); +} + +.grid-10col { + grid-column: span 10 / span 10; + grid-template-columns: repeat(10, minmax(0, 1fr)); +} + +.grid-11col { + grid-column: span 11 / span 11; + grid-template-columns: repeat(11, minmax(0, 1fr)); +} + +.grid-12col { + grid-column: span 12 / span 12; + grid-template-columns: repeat(12, minmax(0, 1fr)); +} + +.flex-group-center, +.flex-group-left, +.flex-group-right { + justify-content: center; + align-items: center; + text-align: center; + padding: 5px; +} + +.flex-group-left { + justify-content: flex-start; + text-align: left; +} + +.flex-group-right { + justify-content: flex-end; + text-align: right; +} + +.flex-center { + align-items: center; + justify-content: center; + text-align: center; +} + +.table-create-actor { + font-size: 0.8rem; +} + +.flex-between { + justify-content: space-between; +} + +.flex-shrink { + flex: "flex-shrink"; +} diff --git a/less/chat.less b/less/chat.less new file mode 100644 index 0000000..6035d7f --- /dev/null +++ b/less/chat.less @@ -0,0 +1,581 @@ +.chat-message-header { + background: linear-gradient( + 135deg, + rgba(226, 226, 222, 0.95) 0%, + rgba(196, 186, 166, 0.9) 100% + ); + font-size: 0.9rem; + min-height: 26px; + text-align: center; + vertical-align: middle; + display: flex; + align-items: center; + justify-content: center; + border-bottom: 2px solid rgba(139, 115, 85, 0.6); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + padding: 0.1rem 0.3rem; + border-radius: 6px 6px 0 0; +} + +.chat-message .message-header .flavor-text, +.chat-message .message-header .whisper-to { + font-size: 0.9rem; +} + +.chat-result-text { + font-weight: bold; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + padding: 0 0 0.1rem 0; + line-height: 1.3; + border-bottom: 1px solid rgba(139, 115, 85, 0.4); + display: block; + margin-bottom: 0.2rem; + letter-spacing: 0.03em; +} + +.chat-actor-name { + font-weight: bold; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + line-height: 1; + letter-spacing: 0.03em; + margin: 0; + padding: 0; +} + +.chat-actor-name-opposition { + font-weight: bold; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + padding: 0.1rem 0.3rem; + letter-spacing: 0.03em; +} + +.chat-result-success { + color: #2d5016; + background: linear-gradient( + 135deg, + rgba(144, 238, 144, 0.3), + rgba(107, 186, 107, 0.25) + ); + padding: 0.25rem 0.6rem; + border-radius: 4px; + border-left: 3px solid #4a7c2c; + display: inline-block; + margin: 0.15rem 0; + box-shadow: 0 1px 3px rgba(45, 80, 22, 0.2); + font-weight: bold; +} + +.chat-result-failure { + color: #7a1a1a; + background: linear-gradient( + 135deg, + rgba(255, 160, 160, 0.3), + rgba(205, 120, 120, 0.25) + ); + padding: 0.25rem 0.6rem; + border-radius: 4px; + border-left: 3px solid #a82020; + display: inline-block; + margin: 0.15rem 0; + box-shadow: 0 1px 3px rgba(122, 26, 26, 0.2); + font-weight: bold; +} + +.chat-img { + width: 64px; + height: 64px; +} + +.chat-command-img { + border: 0px; + width: 32px; + height: 32px; + transition: + transform 0.2s ease, + box-shadow 0.2s ease; + border-radius: 4px; + + &:hover { + transform: scale(1.1); + box-shadow: 0 3px 8px rgba(255, 102, 0, 0.4); + } +} + +.chat-result-column { + min-width: 70%; + width: 70%; +} + +.roll-dialog-header { + background: linear-gradient( + 135deg, + rgba(226, 226, 222, 0.95) 0%, + rgba(196, 186, 166, 0.9) 100% + ); + min-height: 48px; + padding: 0.4rem 0.6rem; + border-radius: 6px 6px 0 0; + border-bottom: 2px solid rgba(139, 115, 85, 0.6); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + + .actor-icon { + width: 40px; + height: 40px; + border-radius: 50%; + border: 2px solid rgba(139, 115, 85, 0.5); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + } + + .dialog-roll-title { + font-family: GreatPrimer; + font-size: 1.1rem; + margin: 0; + color: #3d3a2e; + text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.5); + } +} + +.actor-icon { + width: 28px; + height: 28px; + padding: 1px; + border-radius: 50%; + border: 2px solid rgba(139, 115, 85, 0.5); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + flex-shrink: 0; + margin-right: 0.4rem; +} + +.padding-dice { + padding-top: 0.2rem; + padding-bottom: 0.2rem; +} + +.dice-image { + box-sizing: border-box; + border: none; + border-radius: 0; + max-width: 100%; +} + +.dice-image-reroll { + background-color: rgba(115, 224, 115, 0.25); + border-color: #011d33; + box-sizing: border-box; + border: 1px; + border-radius: 0%; + max-width: 100%; +} + +.chat-dice { + width: 15%; + height: 15%; + font-size: 15px; + padding: 10px; + padding-bottom: 20px; + padding-top: 0.2rem; + padding-bottom: 0.2rem; +} + +.div-center { + align-self: center; +} + +.chat-message { + background: rgba(240, 235, 225, 0.95); + font-size: 0.9rem; + border-radius: 8px; + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(139, 115, 85, 0.3); + + &.whisper { + background: rgba(220, 220, 210, 0.85); + border: 2px solid #545469; + box-shadow: 0 3px 10px rgba(84, 84, 105, 0.3); + } + + .chat-icon { + border: 0; + padding: 2px 6px 2px 2px; + float: left; + width: 64px; + height: 64px; + } +} + +.ability-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 32px; + max-height: 32px; + width: auto; + height: auto; +} + +.small-ability-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 16px; + max-height: 16px; + width: auto; + height: auto; +} + +.combat-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 24px; + max-height: 24px; + width: auto; + height: auto; +} + +#sidebar-tabs { + flex: 0 0 32px; + box-sizing: border-box; + margin: 0 0 5px; + border-bottom: 1px solid rgba(0, 0, 0, 0); + box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.5); + + & > .item { + &.active { + border: 1px solid rgba(114, 98, 72, 1); + background: rgba(30, 25, 20, 0.75); + box-shadow: 0 0 6px inset rgba(114, 98, 72, 1); + } + } +} + +#controls .scene-control, +#controls .control-tool { + box-shadow: 0 0 3px #000; + margin: 0 0 8px; + border-radius: 0; + background: rgba(30, 25, 20, 1); + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; +} + +#controls .scene-control.active, +#controls .control-tool.active, +#controls .scene-control:hover, +#controls .control-tool:hover { + background: rgba(72, 46, 28, 1); + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; + box-shadow: 0 0 3px #ff6400; +} + +#hotbar { + #action-bar { + #macro-list { + border: 1px solid rgba(72, 46, 28, 1); + box-shadow: 2px 2px 5px #000000; + } + + .macro { + border-image: url(img/ui/bg_control.jpg) 21 repeat; + border-image-slice: 6 6 6 6 fill; + border-image-width: 6px 6px 6px 6px; + border-image-outset: 0px 0px 0px 0px; + border-radius: 0px; + } + } + + .bar-controls { + background: rgba(30, 25, 20, 1); + border: 1px solid rgba(72, 46, 28, 1); + } +} + +#players { + border-image-width: 4px; + border-image-outset: 0px; + background: rgba(30, 25, 20, 1); +} + +#navigation { + #scene-list { + .scene { + &.nav-item { + background: rgba(30, 25, 20, 1); + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; + + &.active { + background: rgba(72, 46, 28, 1); + } + } + } + } + + #nav-toggle { + background: rgba(30, 25, 20, 1); + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; + } +} + +#navigation #scene-list .scene.view, +#navigation #scene-list .scene.context { + background: rgba(72, 46, 28, 1); + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; + box-shadow: 0 0 3px #ff6400; +} + +.chat-card-button { + box-shadow: inset 0px 1px 0px 0px #a6827e; + background: linear-gradient( + to bottom, + rgba(33, 55, 74, 0.98824) 5%, + rgba(21, 40, 51, 0.67059) 100% + ); + background-color: rgba(125, 93, 59, 0); + border-radius: 3px; + border: 2px ridge #846109; + display: inline-block; + cursor: pointer; + color: #ffffff; + font-size: 0.8rem; + padding: 4px 12px 0px 12px; + text-decoration: none; + text-shadow: 0px 1px 0px #4d3534; + position: relative; + margin: 2px; + + &:hover { + background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); + background-color: red; + } + + &:active { + position: relative; + top: 1px; + } +} + +.plus-minus-button { + box-shadow: inset 0px 1px 0px 0px #a6827e; + background: linear-gradient( + to bottom, + rgba(33, 55, 74, 0.98824) 5%, + rgba(21, 40, 51, 0.67059) 100% + ); + background-color: rgba(125, 93, 59, 0); + border-radius: 2px; + border: 1px ridge #846109; + display: inline-block; + cursor: pointer; + color: #ffffff; + margin: 2px 2px 2px 2px; + padding: 2px 2px 2px 2px; + text-decoration: none; + text-shadow: 0px 1px 0px #4d3534; + position: relative; + margin: 0px; +} + +.plus-minus-button:hover, +.chat-card-button:hover { + background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); + background-color: red; +} + +.plus-minus-button:active, +.chat-card-button:active { + position: relative; + top: 1px; +} + +.plus-minus { + font-size: 0.9rem; + font-weight: bold; +} + +.ul-level1 { + padding-left: 2rem; +} + +#pause { + font-size: 2rem; + + & > h3 { + color: #ccc; + } + + & > img { + content: url(../images/ui/logo_tedeum_pause.webp); + height: 200px; + width: 200px; + top: -200px; + left: calc(50% - 132px); + } +} + +#logo { + content: url(../images/ui/logo_tedeum_pause.webp); + width: 100px; + height: 60px; +} + +.dice-cell { + padding-left: 12px; + padding-right: 12px; + width: 60px; + text-align: center; +} + +.dice-formula, +.dice-total { + height: 54px; + position: relative; +} + +// Améliorations esthétiques pour les messages de chat +.chat-roll-details { + background: rgba(255, 255, 255, 0.4); + border-radius: 4px; + padding: 0.4rem 0.5rem; + margin: 0.25rem 0; + border: 1px solid rgba(139, 115, 85, 0.25); + + ul { + margin: 0; + padding-left: 0.8rem; + + li { + padding: 0.05rem 0; + line-height: 1.25; + + strong { + color: rgba(70, 67, 49, 0.9); + } + } + } +} + +.chat-roll-result-section { + background: linear-gradient( + 135deg, + rgba(255, 250, 240, 0.6), + rgba(245, 240, 230, 0.5) + ); + border-radius: 4px; + padding: 0.35rem; + margin: 0.2rem 0; + border: 2px solid rgba(139, 115, 85, 0.3); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); + + .chat-total-result { + font-size: 1rem; + font-weight: bold; + color: #3d3a2e; + text-align: center; + padding: 0.25rem; + background: rgba(226, 226, 222, 0.5); + border-radius: 4px; + margin-bottom: 0.25rem; + text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.5); + } +} + +.chat-dice-formula { + display: inline-block; + background: rgba(139, 115, 85, 0.15); + padding: 0.15rem 0.4rem; + border-radius: 3px; + font-family: monospace; + font-size: 0.9em; + border: 1px solid rgba(139, 115, 85, 0.3); + color: #5a4a3a; + font-weight: 600; +} + +.chat-difficulty-badge { + display: inline-block; + background: linear-gradient( + 135deg, + rgba(180, 160, 130, 0.4), + rgba(160, 140, 110, 0.35) + ); + padding: 0.15rem 0.5rem; + border-radius: 10px; + font-weight: bold; + border: 1px solid rgba(139, 115, 85, 0.4); + color: #4a3a2a; + font-size: 0.85em; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); +} + +.chat-info-badge { + display: inline-block; + background: rgba(100, 149, 237, 0.15); + padding: 0.15rem 0.4rem; + border-radius: 3px; + border-left: 2px solid rgba(70, 130, 180, 0.6); + margin: 0.08rem 0; + font-size: 0.8em; + color: #2c4a6a; +} + +.chat-warning-badge { + display: inline-block; + background: rgba(255, 200, 100, 0.2); + padding: 0.15rem 0.4rem; + border-radius: 3px; + border-left: 2px solid rgba(218, 165, 32, 0.7); + margin: 0.08rem 0; + font-size: 0.8em; + color: #7a5a1a; +} + +.chat-actions-bar { + display: flex; + justify-content: center; + gap: 0.3rem; + padding: 0.4rem; + background: rgba(226, 226, 222, 0.4); + border-top: 1px solid rgba(139, 115, 85, 0.25); + border-radius: 0 0 6px 6px; + margin-top: 0.25rem; + + a { + transition: all 0.2s ease; + + &:hover { + transform: translateY(-2px); + } + } +} + +.chat-negative-dice { + display: inline-block; + background: linear-gradient( + 135deg, + rgba(255, 100, 100, 0.2), + rgba(220, 80, 80, 0.15) + ); + padding: 0.2rem 0.5rem; + border-radius: 4px; + border: 2px solid rgba(178, 34, 34, 0.4); + font-weight: bold; + color: #8b0000; + margin: 0.15rem 0; + box-shadow: 0 1px 3px rgba(178, 34, 34, 0.2); +} diff --git a/less/dialogs.less b/less/dialogs.less new file mode 100644 index 0000000..0c4375b --- /dev/null +++ b/less/dialogs.less @@ -0,0 +1,235 @@ +.te-deum-roll-dialog { + .window-header { + border-radius: 10px 10px 0% 0%; + } + + .window-content { + border-radius: 0% 0% 10px 10px; + } +} + +.skill-roll-dialog { + background: linear-gradient( + 135deg, + rgba(240, 235, 225, 0.98) 0%, + rgba(250, 245, 235, 0.95) 100% + ); + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); + border: 1px solid rgba(139, 115, 85, 0.3); + overflow: hidden; + + .flexcol { + padding: 0.6rem 0.8rem; + gap: 0.4rem; + } + + .flexrow { + margin: 0.3rem 0; + padding: 0.4rem 0.5rem; + background: rgba(255, 255, 255, 0.4); + border-radius: 4px; + border-left: 3px solid rgba(139, 115, 85, 0.3); + align-items: center; + gap: 0.5rem; + transition: all 0.2s ease; + + &:hover { + background: rgba(255, 255, 255, 0.6); + border-left-color: rgba(139, 115, 85, 0.6); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + } + } + + .roll-dialog-label { + font-family: GreatPrimer; + font-size: 0.85rem; + font-weight: 600; + color: #3d3a2e; + min-width: 140px; + + &:first-child { + color: rgba(70, 67, 49, 0.9); + font-weight: 700; + } + } + + input[type="checkbox"] { + width: 18px; + height: 18px; + cursor: pointer; + } + + div { + margin-top: 4px; + margin-bottom: 4px; + } + + .sheet-footer { + padding: 0.5rem 0.8rem; + gap: 0.5rem; + border-top: 1px solid rgba(139, 115, 85, 0.3); + margin-top: 0.5rem; + + button { + flex: 1; + padding: 0.4rem 0.8rem; + border-radius: 4px; + font-family: "GreatPrimer"; + font-size: 0.9rem; + cursor: pointer; + border: 1px solid rgba(139, 115, 85, 0.5); + background: linear-gradient(135deg, rgba(196, 186, 166, 0.8) 0%, rgba(226, 226, 222, 0.9) 100%); + color: rgba(50, 35, 15, 0.95); + transition: all 0.2s ease; + + &:hover { + background: linear-gradient(135deg, rgba(196, 186, 166, 1) 0%, rgba(210, 205, 195, 1) 100%); + border-color: rgba(139, 115, 85, 0.8); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + } + } + } +} + +.confront-dice { + border-width: 0px; +} + +.bonus-spec { + max-width: 48px; +} + +.confront-bonus-container { + position: relative; + flex-grow: 1; + text-align: center; + color: black; +} + +.pool-list { + align-items: center; + justify-content: center; +} + +.corps-combat-block { + position: relative; + width: 600px; + height: 600px; +} + +.silhouette-combat-picture { + width: 250px; + max-width: 250px; + border: 0; +} + +.silhouette-combat-block { + position: absolute; + background: white; + border-color: darkgray; + border-style: ridge; + border: 1; + width: 180px; + min-height: 84px; + height: auto; + margin: 0 auto; + font-size: 0.8rem; + align-self: center; + overflow: visible; +} + +.silhouette-combat-space { + width: 60px; + min-width: 60px; +} + +.center-content { + display: flex; + justify-content: center; + align-items: center; +} + +.chat-message .message { + font-family: "GreatPrimer"; + font-size: 0.9rem; +} + +.fvtt-te-deum-character-creator { + /*background: rgba(226, 226, 222, 0.95);*/ + font-family: "GreatPrimer"; + font-size: 0.9rem; + + .field-title { + font-weight: bold; + } + + .form-group label { + color: rgba(30, 25, 15, 0.9); + } + + .status-section { + display: block; + max-width: 34rem; + } + + .creator-finished-section { + display: block; + max-width: 34rem; + text-align: center; + margin-bottom: 1rem; + } + + .stage-main-details { + text-align: center; + margin-top: 1rem; + } +} + +.grace-texte { + margin-top: 1rem; +} + +.chat-welcome { + text-align: center; +} + +.item-name-label { + min-width: 12rem; +} + +.compendium-sidebar .directory-item.compendium.locked .compendium-name { + background: rgba(0, 0, 0, 0.1); +} + +.compendium-sidebar .directory-item.compendium .compendium-name { + background: rgba(0, 0, 0, 0.1); +} + +.compendium-sidebar .directory-item.compendium:hover .compendium-name { + text-shadow: 0 0 8px var(--color-shadow-primary); + background: rgba(0, 0, 0, 0.9); +} + +.compendium-sidebar .directory-item.compendium .compendium-footer .source { + display: inline-block; + font-size: var(--font-size-12); + padding: 1px 0.5rem 0 0.25rem; + border-radius: 0 3px 0 0; + background: rgba(0, 0, 0, 0.1); +} + +.tedeum-create-character { + align-self: anchor-center; +} + +.message-chat-center { + text-align: center; +} + +.welcome-message-h3 { + font-size: 1.2rem; + text-align: center; + margin-bottom: 0.5rem; + color: darkred; +} diff --git a/less/items.less b/less/items.less new file mode 100644 index 0000000..379f93b --- /dev/null +++ b/less/items.less @@ -0,0 +1,414 @@ +.padd-right { + margin-right: 8px; +} + +.padd-left { + margin-left: 8px; +} + +.fortune-row { + flex-wrap: nowrap; + align-items: center; + gap: 0.4rem; + padding: 0.3rem 0.5rem; + margin-bottom: 0.5rem; + + label { + flex: 0 0 auto; + min-width: unset; + font-weight: 600; + color: rgba(70, 67, 49, 0.9); + } + + input { + flex: 0 0 auto; + } +} + +.stack-left { + align-items: center; + flex-shrink: 1; + flex-grow: 0; +} + +.packed-left { + white-space: nowrap; + flex-grow: 0; +} + +.input-numeric-short { + width: 52px; + max-width: 52px; + flex-grow: 0; + flex-shrink: 0; + flex-basis: 52px; + margin-right: 0.15rem; + margin-left: 0.15rem; +} + +.abilities-table { + align-content: flex-start; +} + +.tokenhudext { + display: flex; + flex: 0 !important; + font-weight: 600; + + &.left { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: 2.75rem; + right: 4rem; + } + + &.right { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: 2.75rem; + left: 4rem; + } +} + +.control-icon { + &.tokenhudicon { + width: -moz-fit-content; + width: fit-content; + height: -moz-fit-content; + height: fit-content; + min-width: 6rem; + flex-basis: auto; + padding: 0; + line-height: 1rem; + margin: 0.25rem; + + &.right { + margin-left: 8px; + } + } +} + +#token-hud { + .status-effects { + &.active { + z-index: 2; + } + } +} + +.token-sheet { + .window-content { + .flexcol { + .sheet-tabs { + font-size: 0.8rem; + } + } + } +} + +.item-checkbox { + height: 25px; + border: 1px solid rgba(115, 105, 83, 0.65098); + border-left: none; + font-weight: 500; + font-size: 1rem; + color: black; + padding-top: 5px; + margin-right: 0px; + width: 45px; + position: relative; + left: 0px; + text-align: center; +} + +.skill-label { + font-size: 0.7rem; +} + +.skill-good-checkbox { + max-height: 10px; + max-width: 10px; +} + +.flex-actions-bar { + flex-grow: 2; +} + +#sidebar { + font-size: 1rem; + background-color: #f5f5f5; + background-position: 0px 35px; + background-repeat: no-repeat; + background: rgba(226, 226, 222, 0.95); + color: rgba(19, 18, 18, 0.95); + + &.collapsed { + height: 470px !important; + } + + #sidebar-tabs { + i { + display: inline-block; + background-position: center; + background-size: cover; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); + } + } +} + +#sidebar-tabs > .collapsed, +#chat-controls .chat-control-icon { + color: rgba(19, 18, 18, 0.95); + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); +} + +.sidebar-tab { + .directory-list { + .entity { + border-top: 1px rgba(0, 0, 0, 0.25); + border-bottom: 0 none; + padding: 0.25rem 0; + + &:hover { + background: rgba(0, 0, 0, 0.05); + cursor: pointer; + } + } + } +} + +.status-small-label { + font-size: 0.65rem; +} + +.no-grow { + flex-grow: 1; + max-width: 32px; +} + +.status-col-name { + max-width: 72px; +} + +.img-no-border { + max-width: 48px; + max-height: 48px; + border: 0px; +} + +.items-title-bg { + margin-top: 6px; + color: rgba(19, 18, 18, 0.95); + background: linear-gradient( + 135deg, + rgba(196, 186, 166, 0.6) 0%, + rgba(226, 226, 222, 0.5) 100% + ); + border-radius: 4px; + padding: 0.3rem 0.5rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-left: 4px solid rgba(139, 115, 85, 0.6); + + h3 { + margin: 0; + padding: 0; + font-size: 1.15rem; + font-weight: 600; + color: rgba(19, 18, 18, 0.95); + } +} + +.item-name-label-header-long2 { + flex-grow: 1; + max-width: 14rem; + min-width: 14rem; +} + +.impact-box { + border-width: 2px; + border-color: #000000; + border-radius: 6px; + border: 2px ridge #443307; + margin: 4px; + padding: 4px; +} + +.impact-title { + font-size: bold; + display: flex; + align-items: center; + justify-content: center; + margin-left: auto; + margin-right: auto; + text-align: center; +} + +.items-title-text { + text-align: center; + font-family: MailartRubberstamp; + margin-left: 4px; +} + +.lock-icon { + width: 16px; + height: 16px; +} + +.item-sheet-img { + width: 64px; + height: 64px; + border: 2px solid rgba(139, 115, 85, 0.4); + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + object-fit: cover; +} + +.item-name-img { + flex-grow: 1; + max-width: 2rem; + min-width: 2rem; +} + +.item-field { + margin-top: 4px; +} + +.item-field-xp { + margin-top: 4px; + min-width: 8rem; + max-width: 8rem; +} + +.item-field-label-short { + flex-grow: 1; + max-width: 4rem; + min-width: 4rem; +} + +.item-field-label-medium { + flex-grow: 1; + max-width: 6rem; + min-width: 6rem; +} + +.item-field-label-long, +.item-name-label-long { + font-weight: 600; + color: rgba(70, 67, 49, 0.9); + min-width: 160px; +} + +.item-field-skill { + flex-grow: 1; + max-width: 6.8rem; + min-width: 6.8rem; +} + +.item-field-label-long { + flex-grow: 1; + max-width: 10rem; + min-width: 10rem; +} + +.item-field-title-long { + flex-grow: 1; + max-width: 12rem; + min-width: 12rem; +} + +.item-field-label-long14 { + flex-grow: 1; + max-width: 14rem; + min-width: 14rem; + color: rgba(70, 67, 49, 0.9); + font-size: 1.0rem; + font-weight: 600; +} + +.carac-box { + background: linear-gradient( + 135deg, + rgba(226, 226, 222, 0.4) 0%, + rgba(240, 235, 225, 0.3) 100% + ); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0.45rem; + padding: 0.3rem 0.5rem; + border: 1px solid rgba(139, 115, 85, 0.2); + transition: all 0.2s ease; + + &:hover { + border-color: rgba(139, 115, 85, 0.4); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + } +} + +.comp-box { + max-width: 16rem; + min-width: 16rem; + width: 16rem; + min-height: 1.6rem; + background: linear-gradient( + 135deg, + rgba(250, 245, 235, 0.5) 0%, + rgba(255, 255, 255, 0.3) 100% + ); + padding: 0.25rem 0.4rem; + margin: 0.15rem; + border-radius: 3px; + border-left: 2px solid rgba(139, 115, 85, 0.3); + transition: all 0.2s ease; + + &:hover { + background: rgba(226, 226, 222, 0.4); + border-left-color: rgba(139, 115, 85, 0.6); + transform: translateX(2px); + } +} + +.item-control-end { + align-self: flex-end; +} + +.alternate-list { + margin-top: 4px; + flex-wrap: nowrap; +} + +.item-filler { + flex-grow: 6; + flex-shrink: 7; +} + +.item-controls-fixed { + min-width: 2rem; + max-width: 2rem; +} + +.item-controls-fixed-full { + min-width: 3rem; + max-width: 3rem; +} + +.item-left-pad { + margin-left: 4px; +} + +.attribute-label { + font-weight: bold; +} + +.flexrow-no-expand { + flex-grow: 0; +} + +.item-input-small { + max-width: 16px; + max-height: 12px; +} + +.character-summary-rollable { + text-decoration: underline; +} diff --git a/less/layout.less b/less/layout.less new file mode 100644 index 0000000..0adbe1d --- /dev/null +++ b/less/layout.less @@ -0,0 +1,240 @@ +.fvtt-te-deum.window-app.sheet .window-content, +.fvtt-te-deum.application.sheet .window-content { + overflow: hidden; + display: flex; + flex-direction: column; +} + +// AppV2: le part wrapper et la section root du template doivent propager la hauteur +// Uniquement pour les fiches (.sheet) — les autres fenêtres (dialogs) gardent un layout block normal +.application.fvtt-te-deum.sheet .window-content > [data-application-part], +.application.fvtt-te-deum.sheet .window-content > [data-application-part] > section { + flex: 1 1 0; + min-height: 0; + display: flex; + flex-direction: column; + overflow: hidden; +} + +.fvtt-te-deum { + display: flex; + flex-direction: column; + overflow: hidden; + + .sheet-header { + flex: 0 0 auto; + overflow: hidden; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + margin-bottom: 10px; + background: linear-gradient( + 135deg, + rgba(226, 226, 222, 0.95) 0%, + rgba(240, 235, 225, 0.9) 100% + ); + padding: 0.3rem 0.8rem; + border-radius: 8px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(139, 115, 85, 0.3); + + .profile-img { + flex: 0 0 128px; + width: 128px; + height: auto; + max-height: 128px; + margin-top: 0px; + margin-right: 10px; + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 0; + object-position: 50% 0; + border-width: 0px; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + border: 2px solid rgba(139, 115, 85, 0.4); + } + + .header-fields { + flex: 1; + } + + h1 { + &.charname { + height: 50px; + padding: 0px; + margin: 5px 0; + border-bottom: 0; + } + } + + .header-identity-fields { + flex-wrap: nowrap; + align-items: center; + gap: 0.3rem; + margin-top: 0.2rem; + + input, select { + flex: 1 1 auto; + font-size: 0.75rem; + height: 1.6rem; + } + } + + .header-identity-label { + flex: 0 0 auto; + font-size: 0.7rem; + font-weight: 600; + color: rgba(70, 67, 49, 0.9); + white-space: nowrap; + } + } + + .sheet-tabs { + flex: 0; + font-family: "MailartRubberstamp"; + font-size: 2.2rem; + } + + .tox { + .tox-editor-container { + background: #fff; + } + + .tox-edit-area { + padding: 0 8px; + } + } + + .resource-label { + font-weight: bold; + text-transform: uppercase; + } + + .tabs { + height: 40px; + border-top: 1px solid rgba(139, 115, 85, 0.4); + border-bottom: 1px solid rgba(139, 115, 85, 0.4); + background: linear-gradient( + 180deg, + rgba(226, 226, 222, 0.5) 0%, + rgba(240, 235, 225, 0.3) 100% + ); + color: #000000; + font-family: "GreatPrimer"; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + + .item { + line-height: 40px; + font-weight: bold; + padding: 0 1rem; + transition: all 0.2s ease; + + &:hover { + background: rgba(226, 226, 222, 0.6); + color: rgba(70, 67, 49, 0.9); + } + + &.active { + text-decoration: underline; + text-shadow: none; + background: rgba(196, 186, 166, 0.4); + border-bottom: 3px solid rgba(139, 115, 85, 0.8); + } + } + } + + .items-list { + list-style: none; + margin: 1px 0; + padding: 0; + overflow-y: auto; + + .item-header { + font-weight: bold; + } + + .item { + height: 30px; + line-height: 24px; + padding: 1px 0; + border-bottom: 1px solid #bbb; + + .item-image { + flex: 0 0 24px; + margin-right: 5px; + } + + img { + display: block; + } + } + + .item-name { + margin: 0; + } + + .item-controls { + flex: 0 0 86px; + text-align: right; + } + } +} + +.profile-img-container { + margin-right: 0.2rem; + max-width: 140px; + width: 140px; +} + +.button-img { + vertical-align: baseline; + width: 8%; + height: 8%; + max-height: 48px; + border-width: 0px; + border: 1px solid rgba(0, 0, 0, 0); + + &:hover { + color: rgba(255, 255, 128, 0.7); + border: 1px solid rgba(255, 128, 0, 0.8); + cursor: pointer; + } +} + +.button-effect-img { + vertical-align: baseline; + width: 16px; + max-height: 16px; + height: 16; + border-width: 0; +} + +.small-button-container { + height: 16px; + width: 16px; + border: 0; + vertical-align: bottom; +} + +.fvtt-te-deum .sheet-body { + flex: 1 1 0; + min-height: 0; + overflow: hidden; + font-size: 0.8rem; + font-family: "GreatPrimer"; +} + +.fvtt-te-deum .sheet-body .tab { + height: 100%; + overflow-y: auto; + font-size: 0.8rem; + font-family: "GreatPrimer"; +} + +.fvtt-te-deum .sheet-body .tab .editor { + height: 100%; + font-size: 0.8rem; + font-family: "GreatPrimer"; +} diff --git a/less/tedeum.less b/less/tedeum.less index 42a2640..16249e3 100644 --- a/less/tedeum.less +++ b/less/tedeum.less @@ -1,2070 +1,7 @@ -@font-face { - font-family: "MailartRubberstamp"; - src: url("../fonts/MailartRubberstamp-Regular.woff") format("woff"); - font-family: "GreatPrimer"; - src: url("../fonts/IM_FELL_Great_Primer_Roman.woff") format("woff"); -} - -// Variables LESS -@window-header-title-font-size: 1.3rem; -@window-header-title-font-weight: normal; -@window-header-title-color: #f5f5f5; -@major-button-font-size: 1.05rem; -@major-button-font-weight: normal; -@major-button-color: #dadada; -@tab-header-font-size: 1rem; -@tab-header-font-weight: 700; -@tab-header-color: #403f3e; -@tab-header-color-active: #4a0404; -@actor-input-font-size: 0.8rem; -@actor-input-font-weight: 500; -@actor-input-color: black; -@actor-label-font-size: 0.8rem; -@actor-label-font-weight: 700; -@actor-label-color: rgba(70, 67, 49, 0.76863); -@debug-background-color-red: rgba(255, 0, 0, 0.32941); -@debug-background-color-blue: rgba(29, 0, 255, 0.32941); -@debug-background-color-green: rgba(84, 255, 0, 0.32941); -@debug-box-shadow-red: inset 0 0 2px red; -@debug-box-shadow-blue: inset 0 0 2px blue; -@debug-box-shadow-green: inset 0 0 2px green; - -.window-app { - text-align: justify; - font-size: 16px; - letter-spacing: 1px; - - &.sheet { - .window-content { - margin: 0; - padding: 0; - font-family: "GreatPrimer"; - - .sheet-header { - color: rgba(19, 18, 18, 0.95); - background: rgba(226, 226, 222, 0.95); - } - - .tooltip { - &:hover { - .tooltiptext { - top: 2rem; - left: 2rem; - margin: 0; - padding: 0.25rem; - } - } - } - } - } -} - -.sheet header.sheet-header h1 input, -.window-app .window-header, -#actors .directory-list, -#navigation #scene-list .scene.nav-item { - font-size: 1rem; -} - -.sheet { - nav { - &.sheet-tabs { - font-size: 0.8rem; - font-size: 1.2rem; - font-weight: bold; - height: 3rem; - flex: 0 0 3rem; - margin: 0; - padding: 0 0 0 0.25rem; - text-align: center; - line-height: 1.5rem; - border-top: 0 none; - border-bottom: 0 none; - background: - linear-gradient(rgba(226, 226, 222, 0.5), rgba(226, 226, 222, 0.5)), - url("../images/ui/frise_bottom_01.webp"); - background-repeat: no-repeat; - background-size: 100% 100%; - z-index: 1; - } - } - - header { - &.sheet-header { - .profile-img { - -o-object-fit: cover; - object-fit: cover; - -o-object-position: 50% 0; - object-position: 50% 0; - margin: 0.5rem 0 0.5rem 0.5rem; - padding: 0; - } - - .flex-compteurs { - text-align: right; - } - - .resource-content { - width: 2rem; - } - } - } - - .tab[data-tab] { - padding: 0; - } - - li { - margin: 0.2rem; - padding: 0.15rem; - } -} - -.window-app input, -.fvtt-te-deum .item-form, -.sheet header.sheet-header .flex-group-center.flex-compteurs, -.sheet header.sheet-header .flex-group-center.flex-fatigue, -select, -button, -.item-checkbox, -#sidebar, -#players, -#navigation #nav-toggle { - font-size: 0.8rem; -} - -.window-header { - background: rgba(0, 0, 0, 0.75); -} - -.strong-text { - font-weight: bold; -} - -.tabs .item.active, -.blessures-list li ul li:first-child:hover, -a:hover { - text-shadow: 1px 0px 0px #ff6600; -} - -.rollable:hover, -.rollable:focus { - color: #000; - text-shadow: 0 0 10px red; - cursor: pointer; -} - -input { - &:hover { - border-width: 4px; - border-color: rgba(37, 124, 37, 0.7); - } - - &:disabled { - color: #1c2058; - } -} - -select { - background: white; - color: #494e6b; - - &:disabled { - color: #1c2058; - } -} - -li.folder > .folder-header h3 { - color: #aaa; -} - -table { - border: 1px solid #7a7971; -} - -.grid, -.grid-2col { - display: grid; - grid-column: span 2 / span 2; - grid-template-columns: repeat(2, minmax(0, 1fr)); - grid-gap: 10px; - grid-gap: 10px; - gap: 10px; - margin: 10px 0; - padding: 0; -} - -.grid-3col { - grid-column: span 3 / span 3; - grid-template-columns: repeat(3, minmax(0, 1fr)); -} - -.grid-4col { - grid-column: span 4 / span 4; - grid-template-columns: repeat(4, minmax(0, 1fr)); -} - -.grid-5col { - grid-column: span 5 / span 5; - grid-template-columns: repeat(5, minmax(0, 1fr)); -} - -.grid-6col { - grid-column: span 5 / span 5; - grid-template-columns: repeat(5, minmax(0, 1fr)); -} - -.grid-7col { - grid-column: span 7 / span 7; - grid-template-columns: repeat(7, minmax(0, 1fr)); -} - -.grid-8col { - grid-column: span 8 / span 8; - grid-template-columns: repeat(8, minmax(0, 1fr)); -} - -.grid-9col { - grid-column: span 9 / span 9; - grid-template-columns: repeat(9, minmax(0, 1fr)); -} - -.grid-10col { - grid-column: span 10 / span 10; - grid-template-columns: repeat(10, minmax(0, 1fr)); -} - -.grid-11col { - grid-column: span 11 / span 11; - grid-template-columns: repeat(11, minmax(0, 1fr)); -} - -.grid-12col { - grid-column: span 12 / span 12; - grid-template-columns: repeat(12, minmax(0, 1fr)); -} - -.flex-group-center, -.flex-group-left, -.flex-group-right { - justify-content: center; - align-items: center; - text-align: center; - padding: 5px; -} - -.flex-group-left { - justify-content: flex-start; - text-align: left; -} - -.flex-group-right { - justify-content: flex-end; - text-align: right; -} - -.flex-center { - align-items: center; - justify-content: center; - text-align: center; -} - -.table-create-actor { - font-size: 0.8rem; -} - -.flex-between { - justify-content: space-between; -} - -.flex-shrink { - flex: "flex-shrink"; -} - -.fvtt-te-deum { - .sheet-header { - flex: 0 0 210px; - overflow: hidden; - display: flex; - flex-direction: row; - flex-wrap: wrap; - justify-content: flex-start; - margin-bottom: 10px; - background: linear-gradient( - 135deg, - rgba(226, 226, 222, 0.95) 0%, - rgba(240, 235, 225, 0.9) 100% - ); - padding: 0.8rem; - border-radius: 8px; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); - border: 1px solid rgba(139, 115, 85, 0.3); - - .profile-img { - flex: 0 0 128px; - width: 128px; - height: auto; - max-height: 128px; - margin-top: 0px; - margin-right: 10px; - -o-object-fit: cover; - object-fit: cover; - -o-object-position: 50% 0; - object-position: 50% 0; - border-width: 0px; - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - border: 2px solid rgba(139, 115, 85, 0.4); - } - - .header-fields { - flex: 1; - } - - h1 { - &.charname { - height: 50px; - padding: 0px; - margin: 5px 0; - border-bottom: 0; - - input { - font-family: "MailartRubberstamp"; - font-size: 3rem; - width: 100%; - height: 100%; - margin: 0; - } - } - } - } - - .sheet-tabs { - flex: 0; - font-family: "MailartRubberstamp"; - font-size: 2.2rem; - } - - .tox { - .tox-editor-container { - background: #fff; - } - - .tox-edit-area { - padding: 0 8px; - } - } - - .resource-label { - font-weight: bold; - text-transform: uppercase; - } - - .tabs { - height: 40px; - border-top: 1px solid rgba(139, 115, 85, 0.4); - border-bottom: 1px solid rgba(139, 115, 85, 0.4); - background: linear-gradient( - 180deg, - rgba(226, 226, 222, 0.5) 0%, - rgba(240, 235, 225, 0.3) 100% - ); - color: #000000; - font-family: "GreatPrimer"; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - - .item { - line-height: 40px; - font-weight: bold; - padding: 0 1rem; - transition: all 0.2s ease; - - &:hover { - background: rgba(226, 226, 222, 0.6); - color: rgba(70, 67, 49, 0.9); - } - - &.active { - text-decoration: underline; - text-shadow: none; - background: rgba(196, 186, 166, 0.4); - border-bottom: 3px solid rgba(139, 115, 85, 0.8); - } - } - } - - .items-list { - list-style: none; - margin: 1px 0; - padding: 0; - overflow-y: auto; - - .item-header { - font-weight: bold; - } - - .item { - height: 30px; - line-height: 24px; - padding: 1px 0; - border-bottom: 1px solid #bbb; - - .item-image { - flex: 0 0 24px; - margin-right: 5px; - } - - img { - display: block; - } - } - - .item-name { - margin: 0; - } - - .item-controls { - flex: 0 0 86px; - text-align: right; - } - } -} - -.profile-img-container { - margin-right: 0.2rem; - max-width: 140px; - width: 140px; -} - -.button-img { - vertical-align: baseline; - width: 8%; - height: 8%; - max-height: 48px; - border-width: 0px; - border: 1px solid rgba(0, 0, 0, 0); - - &:hover { - color: rgba(255, 255, 128, 0.7); - border: 1px solid rgba(255, 128, 0, 0.8); - cursor: pointer; - } -} - -.button-effect-img { - vertical-align: baseline; - width: 16px; - max-height: 16px; - height: 16; - border-width: 0; -} - -.small-button-container { - height: 16px; - width: 16px; - border: 0; - vertical-align: bottom; -} - -.fvtt-te-deum .sheet-body, -.fvtt-te-deum .sheet-body .tab, -.fvtt-te-deum .sheet-body .tab .editor { - height: 100%; - font-size: 0.8rem; - font-family: "GreatPrimer"; -} - -.editor { - border: 2; - height: 100%; - padding: 0 3px; -} - -.medium-editor { - border: 2; - height: 240px; - padding: 0 3px; -} - -.small-editor { - border: 2; - height: 120px; - padding: 0 3px; -} - -.questionnaire-reponse { - max-width: 42rem; - margin-left: 1rem; -} - -.questionnaire-element { - margin-top: 0.5rem; -} - -input[type="text"], -select[type="text"] { - background: white; - color: #494e6b; -} - -.window-app.sheet .window-content .sheet-header select[type="text"], -.window-app.sheet .window-content .sheet-header input[type="text"], -.window-app.sheet .window-content .sheet-header input[type="number"], -.window-app.sheet .window-content .sheet-body input[type="text"], -.window-app.sheet .window-content .sheet-body input[type="number"], -.window-app.sheet .window-content .sheet-body select[type="text"], -textarea { - color: rgba(19, 18, 18, 0.95); -} - -.window-app.sheet .window-content .sheet-header input[type="password"], -.window-app.sheet .window-content .sheet-header input[type="date"], -.window-app.sheet .window-content .sheet-header input[type="time"] { - color: rgba(19, 18, 18, 0.95); - background: rgba(226, 226, 222, 0.95); - border: 1 none; - margin-bottom: 0.25rem; - margin-left: 2px; -} - -.window-app.sheet .window-content .sheet-body select, -.window-app.sheet .window-content .sheet-header select { - color: rgba(19, 18, 18, 0.95); - background: #fff; - border: 1 none; - margin-bottom: 0.25rem; - margin-left: 2px; -} - -.window-app .window-content, -.window-app.sheet .window-content .sheet-body { - font-size: 0.8rem; - background: rgba(226, 226, 222, 0.95); - color: rgba(19, 18, 18, 0.95); -} - -// Améliorations pour les fiches d'items -.item-form { - .sheet-header { - background: linear-gradient( - 135deg, - rgba(226, 226, 222, 0.95) 0%, - rgba(240, 235, 225, 0.9) 100% - ); - padding: 0.8rem; - border-radius: 8px; - box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); - border: 1px solid rgba(139, 115, 85, 0.3); - margin-bottom: 0.5rem; - - h1.charname input { - background: transparent; - border: none; - border-bottom: 2px solid rgba(139, 115, 85, 0.3); - transition: border-color 0.2s ease; - - &:focus { - border-bottom-color: rgba(139, 115, 85, 0.7); - outline: none; - } - } - } - - .sheet-body { - ul { - list-style: none; - padding: 0; - margin: 0; - - li.flexrow { - background: rgba(255, 255, 255, 0.3); - padding: 0.4rem 0.6rem; - margin: 0.3rem 0; - border-radius: 4px; - border-left: 3px solid rgba(139, 115, 85, 0.3); - transition: all 0.2s ease; - - &:hover { - background: rgba(255, 255, 255, 0.5); - border-left-color: rgba(139, 115, 85, 0.6); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - } - } - } - - h3 { - background: linear-gradient( - 135deg, - rgba(196, 186, 166, 0.6) 0%, - rgba(226, 226, 222, 0.5) 100% - ); - padding: 0.4rem 0.6rem; - margin: 0.8rem 0 0.4rem 0; - border-radius: 4px; - border-left: 4px solid rgba(139, 115, 85, 0.6); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - font-family: MailartRubberstamp; - font-size: 1.1rem; - color: #3d3a2e; - } - - input[type="text"], - input[type="number"], - select { - background: rgba(255, 255, 255, 0.9); - border: 1px solid rgba(139, 115, 85, 0.3); - border-radius: 3px; - padding: 0.25rem 0.4rem; - transition: all 0.2s ease; - - &:hover { - border-color: rgba(139, 115, 85, 0.5); - } - - &:focus { - outline: none; - border-color: rgba(139, 115, 85, 0.8); - box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); - } - } - - input[type="checkbox"] { - width: 18px; - height: 18px; - cursor: pointer; - } - } -} - -section { - &.sheet-body { - padding: 0.25rem 0.5rem; - - &:after { - content: ""; - display: block; - clear: both; - } - } -} - -nav { - &.sheet-tabs { - .item { - z-index: 2; - position: relative; - opacity: 1; - color: rgba(29, 28, 31); - padding: 0 0.25rem; - - &:after { - content: ""; - position: absolute; - top: 0; - right: 0; - height: 2rem; - width: 1px; - } - } - } -} - -.select-diff { - display: inline-block; - text-align: left; - width: 50px; -} - -.window-app.sheet .window-content .carac-value, -.window-app.sheet .window-content .competence-xp { - margin: 0.05rem; - flex-basis: 3rem; - text-align: center; -} - -h1, -h2, -h3, -h4 { - font-weight: bold; -} - -ul, -ol { - margin: 0; - padding: 0; -} - -ul, -li { - list-style-type: none; -} - -.header-fields { - li { - margin: 0; - padding: 0; - } -} - -.alterne-list { - & > .list-item { - &:hover { - background: rgba(226, 226, 222, 0.4); - transform: translateX(2px); - } - - &:nth-child(even) { - background: rgba(240, 235, 225, 0.3); - } - - &:nth-child(odd) { - background: rgba(250, 245, 235, 0.2); - } - } -} - -.specialisation-label { - font-size: 0.8rem; -} - -.carac-label, -.attr-label { - font-weight: bold; -} - -.list-item { - margin: 0.125rem; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - border-radius: 0.3rem; - padding: 0.3rem 0.4rem; - flex: 1 1 5rem; - border: 1px solid rgba(139, 115, 85, 0.15); - transition: all 0.2s ease; - - &:hover { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); - border-color: rgba(139, 115, 85, 0.3); - background: rgba(255, 255, 255, 0.3); - } -} - -.list-item-shadow { - background: linear-gradient( - 135deg, - rgba(170, 168, 167, 0.25) 0%, - rgba(200, 195, 185, 0.2) 100% - ); - flex-grow: 0; - flex-wrap: nowrap; - justify-content: flex-start; - border-left: 3px solid rgba(139, 115, 85, 0.3); -} - -.list-item-shadow2 { - background: linear-gradient( - 135deg, - rgba(87, 60, 32, 0.2) 0%, - rgba(120, 90, 60, 0.15) 100% - ); - flex-grow: 0; - flex-wrap: nowrap; - justify-content: flex-start; - border-left: 3px solid rgba(87, 60, 32, 0.4); -} - -.item-display-show { - display: block; -} - -.item-display-hide { - display: none; -} - -.item-quantite { - margin-left: 0.5rem; -} - -.list-item-margin1 { - margin-left: 1rem; -} - -.list-item-margin2 { - margin-left: 2rem; -} - -.list-item-margin3 { - margin-left: 3rem; -} - -.list-item-margin4 { - margin-left: 4rem; -} - -.sheet-competence-img { - width: 24px; - max-width: 24px; - height: 24px; - max-height: 24px; - flex-grow: 0; - margin-right: 0.25rem; - border-radius: 3px; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); - border: 1px solid rgba(139, 115, 85, 0.3); -} - -.competence-column { - flex-direction: column; - align-content: flex-start; - justify-content: flex-start; - flex-grow: 0; - flex-basis: 1; -} - -.competence-header { - align-content: flex-start; - justify-content: flex-start; - font-weight: bold; - flex-grow: 0; -} - -.comp-li { - max-width: 8rem; - width: 8rem; -} - -.description-label { - flex-grow: 2; - margin-left: 4px; -} - -.status-header-label { - margin-left: 2px; -} - -.roll-dialog-label { - margin: 4px 0; - min-width: 96px; -} - -.short-label { - flex-grow: 1; -} - -.keyword-label { - font-size: 0.85rem; -} - -.item-sheet-label { - flex-grow: 1; -} - -.item-text-long-line { - flex-grow: 3; -} - -.score-label { - flex-grow: 2; - align-content: center; -} - -.attribut-value, -.carac-value { - flex-grow: 0; - flex-basis: 64px; - margin-right: 4px; - margin-left: 4px; -} - -.sante-value, -.competence-value { - flex-grow: 0; - flex-basis: 2rem; - margin-right: 0.25rem; - margin-left: 0.25rem; -} - -.description-value { - flex-grow: 0; - flex-basis: 4rem; - margin-right: 0.25rem; - margin-left: 0.25rem; -} - -.small-label { - margin-top: 5px; -} - -.padd-right { - margin-right: 8px; -} - -.padd-left { - margin-left: 8px; -} - -.stack-left { - align-items: center; - flex-shrink: 1; - flex-grow: 0; -} - -.packed-left { - white-space: nowrap; - flex-grow: 0; -} - -.input-numeric-short { - width: 40px; - max-width: 40px; - flex-grow: 0; - flex-shrink: 0; - flex-basis: 40px; - margin-right: 0.15rem; - margin-left: 0.15rem; -} - -.abilities-table { - align-content: flex-start; -} - -.tokenhudext { - display: flex; - flex: 0 !important; - font-weight: 600; - - &.left { - justify-content: flex-start; - flex-direction: column; - position: absolute; - top: 2.75rem; - right: 4rem; - } - - &.right { - justify-content: flex-start; - flex-direction: column; - position: absolute; - top: 2.75rem; - left: 4rem; - } -} - -.control-icon { - &.tokenhudicon { - width: -moz-fit-content; - width: fit-content; - height: -moz-fit-content; - height: fit-content; - min-width: 6rem; - flex-basis: auto; - padding: 0; - line-height: 1rem; - margin: 0.25rem; - - &.right { - margin-left: 8px; - } - } -} - -#token-hud { - .status-effects { - &.active { - z-index: 2; - } - } -} - -.token-sheet { - .window-content { - .flexcol { - .sheet-tabs { - font-size: 0.8rem; - } - } - } -} - -.item-checkbox { - height: 25px; - border: 1px solid rgba(115, 105, 83, 0.65098); - border-left: none; - font-weight: 500; - font-size: 1rem; - color: black; - padding-top: 5px; - margin-right: 0px; - width: 45px; - position: relative; - left: 0px; - text-align: center; -} - -.skill-label { - font-size: 0.7rem; -} - -.skill-good-checkbox { - max-height: 10px; - max-width: 10px; -} - -.flex-actions-bar { - flex-grow: 2; -} - -#sidebar { - font-size: 1rem; - background-color: #f5f5f5; - background-position: 0px 35px; - background-repeat: no-repeat; - background: rgba(226, 226, 222, 0.95); - color: rgba(19, 18, 18, 0.95); - - &.collapsed { - height: 470px !important; - } - - #sidebar-tabs { - i { - display: inline-block; - background-position: center; - background-size: cover; - text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); - } - } -} - -#sidebar-tabs > .collapsed, -#chat-controls .chat-control-icon { - color: rgba(19, 18, 18, 0.95); - text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); -} - -.sidebar-tab { - .directory-list { - .entity { - border-top: 1px rgba(0, 0, 0, 0.25); - border-bottom: 0 none; - padding: 0.25rem 0; - - &:hover { - background: rgba(0, 0, 0, 0.05); - cursor: pointer; - } - } - } -} - -.chat-message-header { - background: linear-gradient( - 135deg, - rgba(226, 226, 222, 0.95) 0%, - rgba(196, 186, 166, 0.9) 100% - ); - font-size: 0.9rem; - min-height: 26px; - text-align: center; - vertical-align: middle; - display: flex; - align-items: center; - justify-content: center; - border-bottom: 2px solid rgba(139, 115, 85, 0.6); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); - padding: 0.1rem 0.3rem; - border-radius: 6px 6px 0 0; -} - -.chat-message .message-header .flavor-text, -.chat-message .message-header .whisper-to { - font-size: 0.9rem; -} - -.chat-result-text, -.chat-actor-name { - font-weight: bold; - font-family: MailartRubberstamp; - font-size: 0.9rem; - padding: 0px; - line-height: 1.2; -} - -.chat-actor-name-opposition { - font-weight: bold; - font-family: MailartRubberstamp; - font-size: 0.9rem; - padding: 4px; -} - -.chat-result-success { - color: #2d5016; - background: linear-gradient( - 135deg, - rgba(144, 238, 144, 0.3), - rgba(107, 186, 107, 0.25) - ); - padding: 0.25rem 0.6rem; - border-radius: 4px; - border-left: 3px solid #4a7c2c; - display: inline-block; - margin: 0.15rem 0; - box-shadow: 0 1px 3px rgba(45, 80, 22, 0.2); - font-weight: bold; -} - -.chat-result-failure { - color: #7a1a1a; - background: linear-gradient( - 135deg, - rgba(255, 160, 160, 0.3), - rgba(205, 120, 120, 0.25) - ); - padding: 0.25rem 0.6rem; - border-radius: 4px; - border-left: 3px solid #a82020; - display: inline-block; - margin: 0.15rem 0; - box-shadow: 0 1px 3px rgba(122, 26, 26, 0.2); - font-weight: bold; -} - -.chat-img { - width: 64px; - height: 64px; -} - -.chat-command-img { - border: 0px; - width: 32px; - height: 32px; - transition: - transform 0.2s ease, - box-shadow 0.2s ease; - border-radius: 4px; - - &:hover { - transform: scale(1.1); - box-shadow: 0 3px 8px rgba(255, 102, 0, 0.4); - } -} - -.chat-result-column { - min-width: 70%; - width: 70%; -} - -.roll-dialog-header { - background: linear-gradient( - 135deg, - rgba(226, 226, 222, 0.95) 0%, - rgba(196, 186, 166, 0.9) 100% - ); - min-height: 48px; - padding: 0.4rem 0.6rem; - border-radius: 6px 6px 0 0; - border-bottom: 2px solid rgba(139, 115, 85, 0.6); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); - display: flex; - align-items: center; - justify-content: center; - gap: 0.5rem; - - .actor-icon { - width: 40px; - height: 40px; - border-radius: 50%; - border: 2px solid rgba(139, 115, 85, 0.5); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); - } - - .dialog-roll-title { - font-family: MailartRubberstamp; - font-size: 1.1rem; - margin: 0; - color: #3d3a2e; - text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.5); - } -} - -.actor-icon { - float: left; - width: 28px; - height: 28px; - padding: 1px; - border-radius: 50%; - border: 2px solid rgba(139, 115, 85, 0.5); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); - margin-right: 0.3rem; -} - -.padding-dice { - padding-top: 0.2rem; - padding-bottom: 0.2rem; -} - -.dice-image { - box-sizing: border-box; - border: none; - border-radius: 0; - max-width: 100%; -} - -.dice-image-reroll { - background-color: rgba(115, 224, 115, 0.25); - border-color: #011d33; - box-sizing: border-box; - border: 1px; - border-radius: 0%; - max-width: 100%; -} - -.chat-dice { - width: 15%; - height: 15%; - font-size: 15px; - padding: 10px; - padding-bottom: 20px; - padding-top: 0.2rem; - padding-bottom: 0.2rem; -} - -.div-center { - align-self: center; -} - -.chat-message { - background: rgba(240, 235, 225, 0.95); - font-size: 0.9rem; - border-radius: 8px; - box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15); - border: 1px solid rgba(139, 115, 85, 0.3); - - &.whisper { - background: rgba(220, 220, 210, 0.85); - border: 2px solid #545469; - box-shadow: 0 3px 10px rgba(84, 84, 105, 0.3); - } - - .chat-icon { - border: 0; - padding: 2px 6px 2px 2px; - float: left; - width: 64px; - height: 64px; - } -} - -.ability-icon { - border: 0; - padding: 2px 2px 2px 2px; - max-width: 32px; - max-height: 32px; - width: auto; - height: auto; -} - -.small-ability-icon { - border: 0; - padding: 2px 2px 2px 2px; - max-width: 16px; - max-height: 16px; - width: auto; - height: auto; -} - -.combat-icon { - border: 0; - padding: 2px 2px 2px 2px; - max-width: 24px; - max-height: 24px; - width: auto; - height: auto; -} - -#sidebar-tabs { - flex: 0 0 32px; - box-sizing: border-box; - margin: 0 0 5px; - border-bottom: 1px solid rgba(0, 0, 0, 0); - box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.5); - - & > .item { - &.active { - border: 1px solid rgba(114, 98, 72, 1); - background: rgba(30, 25, 20, 0.75); - box-shadow: 0 0 6px inset rgba(114, 98, 72, 1); - } - } -} - -#controls .scene-control, -#controls .control-tool { - box-shadow: 0 0 3px #000; - margin: 0 0 8px; - border-radius: 0; - background: rgba(30, 25, 20, 1); - background-origin: padding-box; - border-image-width: 4px; - border-image-outset: 0px; -} - -#controls .scene-control.active, -#controls .control-tool.active, -#controls .scene-control:hover, -#controls .control-tool:hover { - background: rgba(72, 46, 28, 1); - background-origin: padding-box; - border-image-width: 4px; - border-image-outset: 0px; - box-shadow: 0 0 3px #ff6400; -} - -#hotbar { - #action-bar { - #macro-list { - border: 1px solid rgba(72, 46, 28, 1); - box-shadow: 2px 2px 5px #000000; - } - - .macro { - border-image: url(img/ui/bg_control.jpg) 21 repeat; - border-image-slice: 6 6 6 6 fill; - border-image-width: 6px 6px 6px 6px; - border-image-outset: 0px 0px 0px 0px; - border-radius: 0px; - } - } - - .bar-controls { - background: rgba(30, 25, 20, 1); - border: 1px solid rgba(72, 46, 28, 1); - } -} - -#players { - border-image-width: 4px; - border-image-outset: 0px; - background: rgba(30, 25, 20, 1); -} - -#navigation { - #scene-list { - .scene { - &.nav-item { - background: rgba(30, 25, 20, 1); - background-origin: padding-box; - border-image-width: 4px; - border-image-outset: 0px; - - &.active { - background: rgba(72, 46, 28, 1); - } - } - } - } - - #nav-toggle { - background: rgba(30, 25, 20, 1); - background-origin: padding-box; - border-image-width: 4px; - border-image-outset: 0px; - } -} - -#navigation #scene-list .scene.view, -#navigation #scene-list .scene.context { - background: rgba(72, 46, 28, 1); - background-origin: padding-box; - border-image-width: 4px; - border-image-outset: 0px; - box-shadow: 0 0 3px #ff6400; -} - -.chat-card-button { - box-shadow: inset 0px 1px 0px 0px #a6827e; - background: linear-gradient( - to bottom, - rgba(33, 55, 74, 0.98824) 5%, - rgba(21, 40, 51, 0.67059) 100% - ); - background-color: rgba(125, 93, 59, 0); - border-radius: 3px; - border: 2px ridge #846109; - display: inline-block; - cursor: pointer; - color: #ffffff; - font-size: 0.8rem; - padding: 4px 12px 0px 12px; - text-decoration: none; - text-shadow: 0px 1px 0px #4d3534; - position: relative; - margin: 2px; - - &:hover { - background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); - background-color: red; - } - - &:active { - position: relative; - top: 1px; - } -} - -.plus-minus-button { - box-shadow: inset 0px 1px 0px 0px #a6827e; - background: linear-gradient( - to bottom, - rgba(33, 55, 74, 0.98824) 5%, - rgba(21, 40, 51, 0.67059) 100% - ); - background-color: rgba(125, 93, 59, 0); - border-radius: 2px; - border: 1px ridge #846109; - display: inline-block; - cursor: pointer; - color: #ffffff; - margin: 2px 2px 2px 2px; - padding: 2px 2px 2px 2px; - text-decoration: none; - text-shadow: 0px 1px 0px #4d3534; - position: relative; - margin: 0px; -} - -.plus-minus-button:hover, -.chat-card-button:hover { - background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); - background-color: red; -} - -.plus-minus-button:active, -.chat-card-button:active { - position: relative; - top: 1px; -} - -.plus-minus { - font-size: 0.9rem; - font-weight: bold; -} - -.ul-level1 { - padding-left: 2rem; -} - -#pause { - font-size: 2rem; - - & > h3 { - color: #ccc; - } - - & > img { - content: url(../images/ui/logo_tedeum_pause.webp); - height: 200px; - width: 200px; - top: -200px; - left: calc(50% - 132px); - } -} - -#logo { - content: url(../images/ui/logo_tedeum_pause.webp); - width: 100px; - height: 60px; -} - -.dice-cell { - padding-left: 12px; - padding-right: 12px; - width: 60px; - text-align: center; -} - -.dice-formula, -.dice-total { - height: 54px; - position: relative; -} - -.status-small-label { - font-size: 0.65rem; -} - -.no-grow { - flex-grow: 1; - max-width: 32px; -} - -.status-col-name { - max-width: 72px; -} - -.img-no-border { - max-width: 48px; - max-height: 48px; - border: 0px; -} - -.items-title-bg { - margin-top: 6px; - color: rgba(19, 18, 18, 0.95); - background: linear-gradient( - 135deg, - rgba(196, 186, 166, 0.6) 0%, - rgba(226, 226, 222, 0.5) 100% - ); - border-radius: 4px; - padding: 0.3rem 0.5rem; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - border-left: 4px solid rgba(139, 115, 85, 0.6); - - h3 { - margin: 0; - padding: 0; - } -} - -.impact-box { - border-width: 2px; - border-color: #000000; - border-radius: 6px; - border: 2px ridge #443307; - margin: 4px; - padding: 4px; -} - -.impact-title { - font-size: bold; - display: flex; - align-items: center; - justify-content: center; - margin-left: auto; - margin-right: auto; - text-align: center; -} - -.items-title-text { - text-align: center; - font-family: MailartRubberstamp; - margin-left: 4px; -} - -.lock-icon { - width: 16px; - height: 16px; -} - -.item-sheet-img { - width: 64px; - height: 64px; - border: 2px solid rgba(139, 115, 85, 0.4); - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - object-fit: cover; -} - -.item-name-img { - flex-grow: 1; - max-width: 2rem; - min-width: 2rem; -} - -.item-field { - margin-top: 4px; -} - -.item-field-xp { - margin-top: 4px; - min-width: 8rem; - max-width: 8rem; -} - -.item-field-label-short { - flex-grow: 1; - max-width: 4rem; - min-width: 4rem; -} - -.item-field-label-medium { - flex-grow: 1; - max-width: 6rem; - min-width: 6rem; -} - -.item-field-label-long, -.item-name-label-long { - font-weight: 600; - color: rgba(70, 67, 49, 0.9); - min-width: 160px; -} - -.item-field-skill { - flex-grow: 1; - max-width: 6.8rem; - min-width: 6.8rem; -} - -.item-field-label-long { - flex-grow: 1; - max-width: 10rem; - min-width: 10rem; -} - -.item-field-title-long { - flex-grow: 1; - max-width: 12rem; - min-width: 12rem; -} - -.item-field-label-long14 { - flex-grow: 1; - max-width: 14rem; - min-width: 14rem; -} - -.carac-box { - background: linear-gradient( - 135deg, - rgba(226, 226, 222, 0.4) 0%, - rgba(240, 235, 225, 0.3) 100% - ); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - border-radius: 0.45rem; - padding: 0.3rem 0.5rem; - border: 1px solid rgba(139, 115, 85, 0.2); - transition: all 0.2s ease; - - &:hover { - border-color: rgba(139, 115, 85, 0.4); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); - } -} - -.comp-box { - max-width: 16rem; - min-width: 16rem; - width: 16rem; - min-height: 1.6rem; - background: linear-gradient( - 135deg, - rgba(250, 245, 235, 0.5) 0%, - rgba(255, 255, 255, 0.3) 100% - ); - padding: 0.25rem 0.4rem; - margin: 0.15rem; - border-radius: 3px; - border-left: 2px solid rgba(139, 115, 85, 0.3); - transition: all 0.2s ease; - - &:hover { - background: rgba(226, 226, 222, 0.4); - border-left-color: rgba(139, 115, 85, 0.6); - transform: translateX(2px); - } -} - -.item-control-end { - align-self: flex-end; -} - -.alternate-list { - margin-top: 4px; - flex-wrap: nowrap; -} - -.item-filler { - flex-grow: 6; - flex-shrink: 7; -} - -.item-controls-fixed { - min-width: 2rem; - max-width: 2rem; -} - -.item-controls-fixed-full { - min-width: 3rem; - max-width: 3rem; -} - -.item-left-pad { - margin-left: 4px; -} - -.attribute-label { - font-weight: bold; -} - -.flexrow-no-expand { - flex-grow: 0; -} - -.item-input-small { - max-width: 16px; - max-height: 12px; -} - -.character-summary-rollable { - text-decoration: underline; -} - -.te-deum-roll-dialog { - .window-header { - border-radius: 10px 10px 0% 0%; - } - - .window-content { - border-radius: 0% 0% 10px 10px; - } -} - -.skill-roll-dialog { - background: linear-gradient( - 135deg, - rgba(240, 235, 225, 0.98) 0%, - rgba(250, 245, 235, 0.95) 100% - ); - border-radius: 8px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); - border: 1px solid rgba(139, 115, 85, 0.3); - overflow: hidden; - - .flexcol { - padding: 0.6rem 0.8rem; - gap: 0.4rem; - } - - .flexrow { - margin: 0.3rem 0; - padding: 0.4rem 0.5rem; - background: rgba(255, 255, 255, 0.4); - border-radius: 4px; - border-left: 3px solid rgba(139, 115, 85, 0.3); - align-items: center; - gap: 0.5rem; - transition: all 0.2s ease; - - &:hover { - background: rgba(255, 255, 255, 0.6); - border-left-color: rgba(139, 115, 85, 0.6); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - } - } - - .roll-dialog-label { - font-family: GreatPrimer; - font-size: 0.85rem; - font-weight: 600; - color: #3d3a2e; - min-width: 140px; - - &:first-child { - color: rgba(70, 67, 49, 0.9); - font-weight: 700; - } - } - - select, - input[type="checkbox"] { - background: rgba(255, 255, 255, 0.9); - border: 1px solid rgba(139, 115, 85, 0.4); - border-radius: 3px; - padding: 0.2rem 0.4rem; - color: #3d3a2e; - transition: all 0.2s ease; - - &:hover { - border-color: rgba(139, 115, 85, 0.7); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - } - - &:focus { - outline: none; - border-color: rgba(139, 115, 85, 0.9); - box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); - } - } - - input[type="checkbox"] { - width: 18px; - height: 18px; - cursor: pointer; - } - - div { - margin-top: 4px; - margin-bottom: 4px; - } -} - -.confront-dice { - border-width: 0px; -} - -.bonus-spec { - max-width: 48px; -} - -.confront-bonus-container { - position: relative; - flex-grow: 1; - text-align: center; - color: black; -} - -.pool-list { - align-items: center; - justify-content: center; -} - -.corps-combat-block { - position: relative; - width: 600px; - height: 600px; -} - -.silhouette-combat-picture { - width: 250px; - max-width: 250px; - border: 0; -} - -.silhouette-combat-block { - position: absolute; - background: white; - border-color: darkgray; - border-style: ridge; - border: 1; - width: 180px; - height: 84px; - margin: 0 auto; - font-size: 0.8rem; - align-self: center; -} - -.silhouette-combat-space { - width: 60px; - min-width: 60px; -} - -.center-content { - display: flex; - justify-content: center; - align-items: center; -} - -.chat-message .message { - font-family: "GreatPrimer"; - font-size: 0.9rem; -} - -.fvtt-te-deum-character-creator { - /*background: rgba(226, 226, 222, 0.95);*/ - font-family: "GreatPrimer"; - font-size: 0.9rem; - - .field-title { - font-weight: bold; - } - - .status-section { - display: block; - max-width: 34rem; - } - - .creator-finished-section { - display: block; - max-width: 34rem; - text-align: center; - margin-bottom: 1rem; - } - - .stage-main-details { - text-align: center; - margin-top: 1rem; - } -} - -.grace-texte { - margin-top: 1rem; -} - -.chat-welcome { - text-align: center; -} - -.item-name-label { - min-width: 12rem; -} - -.compendium-sidebar .directory-item.compendium.locked .compendium-name { - background: rgba(0, 0, 0, 0.1); -} - -.compendium-sidebar .directory-item.compendium .compendium-name { - background: rgba(0, 0, 0, 0.1); -} - -.compendium-sidebar .directory-item.compendium:hover .compendium-name { - text-shadow: 0 0 8px var(--color-shadow-primary); - background: rgba(0, 0, 0, 0.9); -} - -.compendium-sidebar .directory-item.compendium .compendium-footer .source { - display: inline-block; - font-size: var(--font-size-12); - padding: 1px 0.5rem 0 0.25rem; - border-radius: 0 3px 0 0; - background: rgba(0, 0, 0, 0.1); -} - -.tedeum-create-character { - align-self: anchor-center; -} - -.message-chat-center { - text-align: center; -} - -.welcome-message-h3 { - font-size: 1.2rem; - text-align: center; - margin-bottom: 0.5rem; - color: darkred; -} - -// Améliorations esthétiques pour les messages de chat -.chat-roll-details { - background: rgba(255, 255, 255, 0.4); - border-radius: 4px; - padding: 0.4rem 0.5rem; - margin: 0.25rem 0; - border: 1px solid rgba(139, 115, 85, 0.25); - - ul { - margin: 0; - padding-left: 0.8rem; - - li { - padding: 0.05rem 0; - line-height: 1.25; - - strong { - color: rgba(70, 67, 49, 0.9); - } - } - } -} - -.chat-roll-result-section { - background: linear-gradient( - 135deg, - rgba(255, 250, 240, 0.6), - rgba(245, 240, 230, 0.5) - ); - border-radius: 4px; - padding: 0.35rem; - margin: 0.2rem 0; - border: 2px solid rgba(139, 115, 85, 0.3); - box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); - - .chat-total-result { - font-size: 1rem; - font-weight: bold; - color: #3d3a2e; - text-align: center; - padding: 0.25rem; - background: rgba(226, 226, 222, 0.5); - border-radius: 4px; - margin-bottom: 0.25rem; - text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.5); - } -} - -.chat-dice-formula { - display: inline-block; - background: rgba(139, 115, 85, 0.15); - padding: 0.15rem 0.4rem; - border-radius: 3px; - font-family: monospace; - font-size: 0.9em; - border: 1px solid rgba(139, 115, 85, 0.3); - color: #5a4a3a; - font-weight: 600; -} - -.chat-difficulty-badge { - display: inline-block; - background: linear-gradient( - 135deg, - rgba(180, 160, 130, 0.4), - rgba(160, 140, 110, 0.35) - ); - padding: 0.15rem 0.5rem; - border-radius: 10px; - font-weight: bold; - border: 1px solid rgba(139, 115, 85, 0.4); - color: #4a3a2a; - font-size: 0.85em; - box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); -} - -.chat-info-badge { - display: inline-block; - background: rgba(100, 149, 237, 0.15); - padding: 0.15rem 0.4rem; - border-radius: 3px; - border-left: 2px solid rgba(70, 130, 180, 0.6); - margin: 0.08rem 0; - font-size: 0.8em; - color: #2c4a6a; -} - -.chat-warning-badge { - display: inline-block; - background: rgba(255, 200, 100, 0.2); - padding: 0.15rem 0.4rem; - border-radius: 3px; - border-left: 2px solid rgba(218, 165, 32, 0.7); - margin: 0.08rem 0; - font-size: 0.8em; - color: #7a5a1a; -} - -.chat-actions-bar { - display: flex; - justify-content: center; - gap: 0.3rem; - padding: 0.4rem; - background: rgba(226, 226, 222, 0.4); - border-top: 1px solid rgba(139, 115, 85, 0.25); - border-radius: 0 0 6px 6px; - margin-top: 0.25rem; - - a { - transition: all 0.2s ease; - - &:hover { - transform: translateY(-2px); - } - } -} - -.chat-negative-dice { - display: inline-block; - background: linear-gradient( - 135deg, - rgba(255, 100, 100, 0.2), - rgba(220, 80, 80, 0.15) - ); - padding: 0.2rem 0.5rem; - border-radius: 4px; - border: 2px solid rgba(178, 34, 34, 0.4); - font-weight: bold; - color: #8b0000; - margin: 0.15rem 0; - box-shadow: 0 1px 3px rgba(178, 34, 34, 0.2); -} +@import "variables"; +@import "base"; +@import "layout"; +@import "actor-sheet"; +@import "items"; +@import "chat"; +@import "dialogs"; diff --git a/less/variables.less b/less/variables.less new file mode 100644 index 0000000..f7ddea1 --- /dev/null +++ b/less/variables.less @@ -0,0 +1,30 @@ +@font-face { + font-family: "MailartRubberstamp"; + src: url("../fonts/MailartRubberstamp-Regular.woff") format("woff"); + font-family: "GreatPrimer"; + src: url("../fonts/IM_FELL_Great_Primer_Roman.woff") format("woff"); +} + +// Variables LESS +@window-header-title-font-size: 1.3rem; +@window-header-title-font-weight: normal; +@window-header-title-color: #f5f5f5; +@major-button-font-size: 1.05rem; +@major-button-font-weight: normal; +@major-button-color: #dadada; +@tab-header-font-size: 1rem; +@tab-header-font-weight: 700; +@tab-header-color: #403f3e; +@tab-header-color-active: #4a0404; +@actor-input-font-size: 0.8rem; +@actor-input-font-weight: 500; +@actor-input-color: black; +@actor-label-font-size: 0.8rem; +@actor-label-font-weight: 700; +@actor-label-color: rgba(70, 67, 49, 0.76863); +@debug-background-color-red: rgba(255, 0, 0, 0.32941); +@debug-background-color-blue: rgba(29, 0, 255, 0.32941); +@debug-background-color-green: rgba(84, 255, 0, 0.32941); +@debug-box-shadow-red: inset 0 0 2px red; +@debug-box-shadow-blue: inset 0 0 2px blue; +@debug-box-shadow-green: inset 0 0 2px green; diff --git a/modules/actors/tedeum-actor-sheet.js b/modules/actors/tedeum-actor-sheet.js index 359c3fd..13861ae 100644 --- a/modules/actors/tedeum-actor-sheet.js +++ b/modules/actors/tedeum-actor-sheet.js @@ -1,179 +1,227 @@ /** - * Extend the basic ActorSheet with some very simple modifications - * @extends {ActorSheet} + * Feuille de personnage Te Deum - AppV2 */ import { TeDeumUtility } from "../common/tedeum-utility.js"; +const { HandlebarsApplicationMixin } = foundry.applications.api + /* -------------------------------------------- */ -export class TeDeumActorPJSheet extends foundry.appv1.sheets.ActorSheet { +export class TeDeumActorPJSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ActorSheetV2) { + + constructor(options = {}) { + super(options) + this._sheetMode = this.constructor.SHEET_MODES.PLAY + } + + static SHEET_MODES = { EDIT: 0, PLAY: 1 } /** @override */ - static get defaultOptions() { - - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["fvtt-te-deum", "sheet", "actor"], - template: "systems/fvtt-te-deum/templates/actors/actor-sheet.hbs", + static DEFAULT_OPTIONS = { + classes: ["fvtt-te-deum", "sheet", "actor"], + position: { width: 860, height: 680, - tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "skills" }], - dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }], - editScore: true - }); + }, + form: { + submitOnChange: true, + closeOnSubmit: false, + }, + window: { + resizable: true, + }, + dragDrop: [{ dragSelector: ".item-list .item", dropSelector: null }], + actions: { + editImage: TeDeumActorPJSheet.#onEditImage, + toggleSheet: TeDeumActorPJSheet.#onToggleSheet, + editItem: TeDeumActorPJSheet.#onEditItem, + deleteItem: TeDeumActorPJSheet.#onDeleteItem, + createItem: TeDeumActorPJSheet.#onCreateItem, + createBlessure: TeDeumActorPJSheet.#onCreateBlessure, + createCompetence: TeDeumActorPJSheet.#onCreateCompetence, + equipItem: TeDeumActorPJSheet.#onEquipItem, + modifyQuantity: TeDeumActorPJSheet.#onModifyQuantity, + rollCompetence: TeDeumActorPJSheet.#onRollCompetence, + rollArme: TeDeumActorPJSheet.#onRollArme, + rollDegats: TeDeumActorPJSheet.#onRollDegats, + }, + } + + /** @override */ + static PARTS = { + sheet: { + template: "systems/fvtt-te-deum/templates/actors/actor-sheet.hbs", + }, + } + + tabGroups = { primary: "principal" } + + get isEditMode() { + return this._sheetMode === this.constructor.SHEET_MODES.EDIT + } + + get isPlayMode() { + return this._sheetMode === this.constructor.SHEET_MODES.PLAY } /* -------------------------------------------- */ - async getData() { - - let formData = { + /** @override */ + async _prepareContext() { + const actor = this.document + return { title: this.title, - id: this.actor.id, - type: this.actor.type, - img: this.actor.img, - name: this.actor.name, + id: actor.id, + type: actor.type, + img: actor.img, + name: actor.name, editable: this.isEditable, cssClass: this.isEditable ? "editable" : "locked", - system: foundry.utils.duplicate(this.object.system), - limited: this.object.limited, - competences: this.actor.getCompetences(), + system: foundry.utils.duplicate(actor.system), + systemFields: actor.system.schema.fields, + limited: actor.limited, + competences: actor.getCompetences(), config: foundry.utils.duplicate(game.system.tedeum.config), - armes: this.actor.getArmes(), - caracList: this.actor.prepareCaracteristiques(), - providence: this.actor.prepareProvidence(), - arbreCompetences: this.actor.prepareArbreCompetences(), - equipements: this.actor.getEquipements(), - simples: this.actor.getSimples(), - armures: this.actor.getArmures(), - graces: this.actor.getGraces(), - blessures: this.actor.getBlessures(), - maladies: this.actor.getMaladies(), - poisons: this.actor.getPoisons(), - combat: this.actor.prepareCombat(), - bonusDegats: this.actor.getBonusDegats(), - nbActions: this.actor.getNbActions(), - initiative: this.actor.getInitiative(), - pointsArmuresLourdes: this.actor.getNbArmures(), - nbArmuresLourdes: this.actor.getNbArmuresLourdesActuel(), - santeModifier: this.actor.getSanteModifier(), - educations: this.actor.getEducations(), - description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.description, { async: true }), - equipmentfree: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.equipmentfree, { async: true }), - notes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.notes, { async: true }), - histoire: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.histoire, { async: true }), - options: this.options, - owner: this.document.isOwner, - editScore: this.options.editScore, - isGM: game.user.isGM + armes: actor.getArmes(), + caracList: actor.prepareCaracteristiques(), + providence: actor.prepareProvidence(), + arbreCompetences: actor.prepareArbreCompetences(), + equipements: actor.getEquipements(), + simples: actor.getSimples(), + armures: actor.getArmures(), + graces: actor.getGraces(), + blessures: actor.getBlessures(), + maladies: actor.getMaladies(), + poisons: actor.getPoisons(), + combat: actor.prepareCombat(), + bonusDegats: actor.getBonusDegats(), + nbActions: actor.getNbActions(), + initiative: actor.getInitiative(), + pointsArmuresLourdes: actor.getNbArmures(), + nbArmuresLourdes: actor.getNbArmuresLourdesActuel(), + santeModifier: actor.getSanteModifier(), + educations: actor.getEducations(), + enrichedDescription: await foundry.applications.ux.TextEditor.implementation.enrichHTML(actor.system.description, { async: true }), + enrichedEquipmentFree: await foundry.applications.ux.TextEditor.implementation.enrichHTML(actor.system.equipmentfree, { async: true }), + enrichedNotes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(actor.system.notes, { async: true }), + enrichedHistoire: await foundry.applications.ux.TextEditor.implementation.enrichHTML(actor.system.histoire, { async: true }), + owner: actor.isOwner, + isEditMode: this.isEditMode, + isPlayMode: this.isPlayMode, + isGM: game.user.isGM, } - this.formData = formData; - - return formData; - } - - - /* -------------------------------------------- */ - /** @override */ - activateListeners(html) { - super.activateListeners(html); - - // Everything below here is only needed if the sheet is editable - if (!this.options.editable) return; - - html.bind("keydown", function (e) { // Ignore Enter in actores sheet - if (e.keyCode === 13) return false; - }); - - // Update Inventory Item - html.find('.item-edit').click(ev => { - const li = $(ev.currentTarget).parents(".item-id") - let itemId = li.data("item-id") - const item = this.actor.items.get(itemId); - item.sheet.render(true); - }); - // Delete Inventory Item - html.find('.item-delete').click(ev => { - const li = $(ev.currentTarget).parents(".item-id") - TeDeumUtility.confirmDelete(this, li).catch("Error : No deletion confirmed") - }) - html.find('.item-add').click(ev => { - let dataType = $(ev.currentTarget).data("type") - this.actor.createEmbeddedDocuments('Item', [{ name: "Nouveau " + dataType, type: dataType }], { renderSheet: true }) - }) - html.find('.blessure-add').click(ev => { - let dataType = $(ev.currentTarget).data("type") - this.actor.createEmbeddedDocuments('Item', [{ name: "Nouvelle " + dataType, type: dataType, system: { typeBlessure: "estafilade", localisation: "corps", value: 0, appliquee: true, description: "" } }], { renderSheet: true }) - }) - html.find('.competence-add').click(ev => { - let dataType = $(ev.currentTarget).data("type") - let caracKey = $(ev.currentTarget).data("carac-key") - this.actor.createEmbeddedDocuments('Item', [{ name: "Nouvelle " + dataType, type: dataType, system: { caracteristique: caracKey } }], { renderSheet: true }) - }) - - html.find('.subactor-edit').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - let actorId = li.data("actor-id"); - let actor = game.actors.get(actorId); - actor.sheet.render(true); - }); - - html.find('.subactor-delete').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - let actorId = li.data("actor-id"); - this.actor.delSubActor(actorId); - }); - html.find('.quantity-minus').click(event => { - const li = $(event.currentTarget).parents(".item"); - this.actor.incDecQuantity(li.data("item-id"), -1); - }); - html.find('.quantity-plus').click(event => { - const li = $(event.currentTarget).parents(".item"); - this.actor.incDecQuantity(li.data("item-id"), +1); - }); - - html.find('.roll-competence').click((event) => { - let compId = $(event.currentTarget).data("comp-id") - this.actor.rollCompetence(compId) - }); - html.find('.roll-arme').click((event) => { - const armeId = $(event.currentTarget).data("arme-id") - this.actor.rollArme(armeId) - }); - html.find('.roll-degats').click((event) => { - const armeId = $(event.currentTarget).data("arme-id") - this.actor.rollDegatsArme(armeId) - }); - - - html.find('.lock-unlock-sheet').click((event) => { - this.options.editScore = !this.options.editScore; - this.render(true); - }); - html.find('.item-equip').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - this.actor.equipItem(li.data("item-id")); - this.render(true); - }); - html.find('.update-field').change(ev => { - const fieldName = $(ev.currentTarget).data("field-name"); - let value = Number(ev.currentTarget.value); - this.actor.update({ [`${fieldName}`]: value }); - }); } /* -------------------------------------------- */ /** @override */ - setPosition(options = {}) { - const position = super.setPosition(options); - const sheetBody = this.element.find(".sheet-body"); - const bodyHeight = position.height - 192; - sheetBody.css("height", bodyHeight); - return position; + _onRender(context, options) { + super._onRender(context, options) + + // Tab navigation + const nav = this.element.querySelector('nav.tabs[data-group]') + if (nav) { + const group = nav.dataset.group + const activeTab = this.tabGroups[group] || "principal" + nav.querySelectorAll('[data-tab]').forEach(link => { + const tab = link.dataset.tab + link.classList.toggle('active', tab === activeTab) + link.addEventListener('click', event => { + event.preventDefault() + this.tabGroups[group] = tab + this.render() + }) + }) + this.element.querySelectorAll(`[data-group="${group}"][data-tab]`).forEach(content => { + content.classList.toggle('active', content.dataset.tab === activeTab) + }) + } + + // Ignore Enter key in sheet inputs + this.element.addEventListener('keydown', e => { + if (e.keyCode === 13 && e.target.tagName !== 'TEXTAREA') e.preventDefault() + }) } /* -------------------------------------------- */ - /** @override */ - _updateObject(event, formData) { - // Update the Actor - return this.object.update(formData); + // #region Static action handlers + + static async #onEditImage(event) { + const fp = new FilePicker({ + type: "image", + current: this.document.img, + callback: path => this.document.update({ img: path }), + }) + fp.browse() } + + static async #onToggleSheet(event) { + this._sheetMode = this.isEditMode + ? this.constructor.SHEET_MODES.PLAY + : this.constructor.SHEET_MODES.EDIT + this.render() + } + + static async #onEditItem(event, target) { + const li = target.closest("[data-item-id]") + const item = this.actor.items.get(li?.dataset.itemId) + if (item) item.sheet.render(true) + } + + static async #onDeleteItem(event, target) { + const li = target.closest("[data-item-id]") + await TeDeumUtility.confirmDelete(this, li) + } + + static async #onCreateItem(event, target) { + const type = target.dataset.type + await this.actor.createEmbeddedDocuments('Item', [{ name: "Nouveau " + type, type }], { renderSheet: true }) + } + + static async #onCreateBlessure(event, target) { + const type = target.dataset.type + await this.actor.createEmbeddedDocuments('Item', [{ + name: "Nouvelle " + type, type, + system: { typeBlessure: "estafilade", localisation: "corps", value: 0, appliquee: true, description: "" } + }], { renderSheet: true }) + } + + static async #onCreateCompetence(event, target) { + const type = target.dataset.type + const caracKey = target.dataset.caracKey + await this.actor.createEmbeddedDocuments('Item', [{ name: "Nouvelle " + type, type, system: { caracteristique: caracKey } }], { renderSheet: true }) + } + + static async #onEquipItem(event, target) { + const li = target.closest("[data-item-id]") + if (!li?.dataset.itemId) return + await this.actor.equipItem(li.dataset.itemId) + } + + static async #onModifyQuantity(event, target) { + const li = target.closest("[data-item-id]") + if (!li?.dataset.itemId) return + const item = this.actor.items.get(li.dataset.itemId) + if (!item) return + const delta = parseInt(target.dataset.qty) || 0 + await this.actor.incDecQuantity(li.dataset.itemId, delta) + } + + static async #onRollCompetence(event, target) { + const li = target.closest("[data-item-id]") + if (!li?.dataset.itemId) return + await this.actor.rollCompetence(li.dataset.itemId) + } + + static async #onRollArme(event, target) { + const li = target.closest("[data-item-id]") + if (!li?.dataset.itemId) return + await this.actor.rollArme(li.dataset.itemId) + } + + static async #onRollDegats(event, target) { + const li = target.closest("[data-item-id]") + if (!li?.dataset.itemId) return + await this.actor.rollDegatsArme(li.dataset.itemId) + } + + // #endregion } diff --git a/modules/actors/tedeum-actor.js b/modules/actors/tedeum-actor.js index 4047145..61667d8 100644 --- a/modules/actors/tedeum-actor.js +++ b/modules/actors/tedeum-actor.js @@ -785,8 +785,7 @@ export class TeDeumActor extends Actor { /* -------------------------------------------- */ async startRoll(rollData) { console.log("startRoll", rollData) - let rollDialog = await TeDeumRollDialog.create(this, rollData) - rollDialog.render(true) + await TeDeumRollDialog.create(this, rollData) } } diff --git a/modules/app/tedeum-character-creator.js b/modules/app/tedeum-character-creator.js index 9d6f0a3..c1f41d8 100644 --- a/modules/app/tedeum-character-creator.js +++ b/modules/app/tedeum-character-creator.js @@ -575,7 +575,7 @@ export class TeDeumCharacterCreator { for (let compName in this.competenceBonus) { let comp = actor.items.find( i => i.type == "competence" && i.name.toLowerCase() === compName.toLowerCase()) if (comp) { - updateComp.push({ _id: comp._id, "system.score": this.competenceBonus[compName].value }) + updateComp.push({ _id: comp._id, "system.score": comp.system.score + this.competenceBonus[compName].value }) } else { toAdd.push( compName) } diff --git a/modules/common/tedeum-utility.js b/modules/common/tedeum-utility.js index 0c1739d..cf5e738 100644 --- a/modules/common/tedeum-utility.js +++ b/modules/common/tedeum-utility.js @@ -147,6 +147,14 @@ export class TeDeumUtility { } return value }) + // Handle v12 removal of this helper + Handlebars.registerHelper('select', function (selected, options) { + const escapedValue = RegExp.escape(Handlebars.escapeExpression(selected)); + const rgx = new RegExp(' value=[\"\']' + escapedValue + '[\"\']'); + const html = options.fn(this); + return html.replace(rgx, "$& selected"); + }); + // Load compendium data const competences = await TeDeumUtility.loadCompendium("fvtt-te-deum.competences") @@ -389,7 +397,17 @@ export class TeDeumUtility { 'systems/fvtt-te-deum/templates/actors/editor-notes-gm.hbs', 'systems/fvtt-te-deum/templates/items/partial-item-nav.hbs', 'systems/fvtt-te-deum/templates/items/partial-item-description.hbs', - 'systems/fvtt-te-deum/templates/dialogs/partial-creator-status.hbs' + 'systems/fvtt-te-deum/templates/dialogs/partial-creator-status.hbs', + 'systems/fvtt-te-deum/templates/items/item-arme-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-armure-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-blessure-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-competence-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-education-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-equipement-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-grace-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-maladie-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-origine-sheet.hbs', + 'systems/fvtt-te-deum/templates/items/item-simple-sheet.hbs', ] return foundry.applications.handlebars.loadTemplates(templatePaths); } @@ -885,7 +903,7 @@ export class TeDeumUtility { /* -------------------------------------------- */ static async confirmDelete(actorSheet, li) { - let itemId = li.data("item-id"); + let itemId = li.dataset ? li.dataset.itemId : li.data("item-id"); let msgTxt = "

Etes vous certain de supprimer cet item ?"; let buttons = { delete: { @@ -893,7 +911,12 @@ export class TeDeumUtility { label: "Oui, aucun souci", callback: () => { actorSheet.actor.deleteEmbeddedDocuments("Item", [itemId]); - li.slideUp(200, () => actorSheet.render(false)); + if (li.slideUp) { + li.slideUp(200, () => actorSheet.render(false)); + } else { + li.style.display = "none"; + actorSheet.render(false); + } } }, cancel: { diff --git a/modules/dialogs/tedeum-roll-dialog.js b/modules/dialogs/tedeum-roll-dialog.js index 9ebc7d9..95b29b9 100644 --- a/modules/dialogs/tedeum-roll-dialog.js +++ b/modules/dialogs/tedeum-roll-dialog.js @@ -1,102 +1,103 @@ import { TeDeumUtility } from "../common/tedeum-utility.js"; -export class TeDeumRollDialog extends Dialog { +const { HandlebarsApplicationMixin } = foundry.applications.api + +/* -------------------------------------------- */ +export class TeDeumRollDialog extends HandlebarsApplicationMixin(foundry.applications.api.ApplicationV2) { + + static DEFAULT_OPTIONS = { + classes: ["fvtt-te-deum", "te-deum-roll-dialog"], + window: { title: "Lancer !", resizable: false }, + position: { width: 540 }, + actions: { + roll: TeDeumRollDialog.#onRoll, + cancel: TeDeumRollDialog.#onCancel, + } + } + + static PARTS = { + content: { template: "systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs" } + } + + /* -------------------------------------------- */ + constructor(actor, rollData, options = {}) { + super(options) + this.actor = actor + this.rollData = rollData + } /* -------------------------------------------- */ static async create(actor, rollData) { - - let options = { classes: ["tedeum-roll-dialog"], width: 540, height: 'fit-content', 'z-index': 99999 } - let html = await foundry.applications.handlebars.renderTemplate('systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs', rollData); - return new TeDeumRollDialog(actor, rollData, html, options); + const dialog = new TeDeumRollDialog(actor, rollData) + dialog.render(true) + return dialog } /* -------------------------------------------- */ - constructor(actor, rollData, html, options, close = undefined) { - let conf = { - title: "Lancer !", - content: html, - buttons: { - roll: { - icon: '', - label: "Lancer", - callback: () => { this.roll() } - }, - cancel: { - icon: '', - label: "Annuler", - callback: () => { this.close() } - } - }, - close: close - } - - super(conf, options); - - this.actor = actor; - this.rollData = rollData; - } - - /* -------------------------------------------- */ - roll() { - TeDeumUtility.rollTeDeum(this.rollData) + async _prepareContext() { + return { ...this.rollData } } /* -------------------------------------------- */ async refreshDialog() { - const content = await foundry.applications.handlebars.renderTemplate("systems/fvtt-te-deum/templates/dialogs/roll-dialog-generic.hbs", this.rollData) - this.data.content = content - this.render(true) + this.render() } /* -------------------------------------------- */ - activateListeners(html) { - super.activateListeners(html); + static #onRoll(event, target) { + TeDeumUtility.rollTeDeum(this.rollData) + this.close() + } - let dialog = this; - function onLoad() { - } - $(function () { onLoad(); }); + /* -------------------------------------------- */ + static #onCancel(event, target) { + this.close() + } - html.find('#bonusMalusPerso').change((event) => { + /* -------------------------------------------- */ + _onRender(context, options) { + super._onRender(context, options) + + const html = this.element + + html.querySelector('#bonusMalusPerso')?.addEventListener('change', (event) => { this.rollData.bonusMalusPerso = Number(event.currentTarget.value) }) - html.find('#roll-allonge').change((event) => { + html.querySelector('#roll-allonge')?.addEventListener('change', (event) => { this.rollData.allongeId = event.currentTarget.value }) - html.find('#roll-main-gauche').change((event) => { + html.querySelector('#roll-main-gauche')?.addEventListener('change', (event) => { this.rollData.isMainGauche = event.currentTarget.checked }) - html.find('#roll-difficulty').change((event) => { + html.querySelector('#roll-difficulty')?.addEventListener('change', (event) => { this.rollData.difficulty = String(event.currentTarget.value) || "pardefaut" }) - html.find('#roll-attaque-ciblee').change((event) => { + html.querySelector('#roll-attaque-ciblee')?.addEventListener('change', (event) => { this.rollData.attaqueCiblee = event.currentTarget.value || "0" }) - html.find('#roll-bonus-malus').change((event) => { + html.querySelector('#roll-bonus-malus')?.addEventListener('change', (event) => { this.rollData.bonusMalus = event.currentTarget.value || "0" }) - html.find('#roll-enable-providence').change((event) => { + html.querySelector('#roll-enable-providence')?.addEventListener('change', (event) => { this.rollData.enableProvidence = event.currentTarget.checked }) - html.find('#roll-portee-tir').change((event) => { + html.querySelector('#roll-portee-tir')?.addEventListener('change', (event) => { this.rollData.porteeTir = event.currentTarget.value this.rollData.difficulty = game.system.tedeum.config.ARME_PORTEES[this.rollData.porteeTir].difficulty this.rollData.porteeLabel = game.system.tedeum.config.ARME_PORTEES[this.rollData.porteeTir].label + this.refreshDialog() }) - html.find('#roll-tir-viser').change((event) => { + html.querySelector('#roll-tir-viser')?.addEventListener('change', (event) => { this.rollData.isViser = event.currentTarget.checked }) - html.find('#roll-tir-mouvement').change((event) => { + html.querySelector('#roll-tir-mouvement')?.addEventListener('change', (event) => { this.rollData.isMouvement = event.currentTarget.checked }) - html.find('#roll-charge-a-pied').change((event) => { + html.querySelector('#roll-charge-a-pied')?.addEventListener('change', (event) => { this.rollData.isChargeAPied = event.currentTarget.checked }) - html.find('#roll-charge-a-cheval').change((event) => { + html.querySelector('#roll-charge-a-cheval')?.addEventListener('change', (event) => { this.rollData.isChargeACheval = event.currentTarget.checked }) - - - } -} \ No newline at end of file +} diff --git a/modules/items/tedeum-item-sheet.js b/modules/items/tedeum-item-sheet.js index 09990e4..abf3112 100644 --- a/modules/items/tedeum-item-sheet.js +++ b/modules/items/tedeum-item-sheet.js @@ -1,172 +1,154 @@ import { TeDeumUtility } from "../common/tedeum-utility.js"; +const { HandlebarsApplicationMixin } = foundry.applications.api + /** - * Extend the basic ItemSheet with some very simple modifications - * @extends {ItemSheet} + * Feuille d'item Te Deum - AppV2 */ -export class TeDeumItemSheet extends foundry.appv1.sheets.ItemSheet { +export class TeDeumItemSheet extends HandlebarsApplicationMixin(foundry.applications.sheets.ItemSheetV2) { /** @override */ - static get defaultOptions() { - return foundry.utils.mergeObject(super.defaultOptions, { - classes: ["fvtt-te-deum", "sheet", "item"], - template: "systems/fvtt-te-deum/templates/item-sheet.hbs", - dragDrop: [{ dragSelector: null, dropSelector: null }], + static DEFAULT_OPTIONS = { + classes: ["fvtt-te-deum", "sheet", "item"], + position: { width: 620, height: 580, - tabs: [{ navSelector: ".sheet-tabs", contentSelector: ".sheet-body", initial: "description" }] - }); + }, + form: { + submitOnChange: true, + closeOnSubmit: false, + }, + window: { + resizable: true, + }, + actions: { + editImage: TeDeumItemSheet.#onEditImage, + postItem: TeDeumItemSheet.#onPostItem, + deleteSubitem: TeDeumItemSheet.#onDeleteSubitem, + viewSubitem: TeDeumItemSheet.#onViewSubitem, + }, } - /* -------------------------------------------- */ - _getHeaderButtons() { - let buttons = super._getHeaderButtons(); - // Add "Post to chat" button - // We previously restricted this to GM and editable items only. If you ever find this comment because it broke something: eh, sorry! - buttons.unshift( - { - class: "post", - icon: "fas fa-comment", - onclick: ev => { } - }) - return buttons + // Static PARTS pointing to the dynamic wrapper template + static PARTS = { + sheet: { template: "systems/fvtt-te-deum/templates/items/item-sheet.hbs" }, } - /* -------------------------------------------- */ - async getData() { + tabGroups = { primary: "description" } - let formData = { + /* -------------------------------------------- */ + /** @override */ + async _prepareContext() { + const item = this.document + const TextEditor = foundry.applications.ux.TextEditor.implementation + const enrich = async (val) => val !== undefined ? await TextEditor.enrichHTML(val ?? "", { async: true }) : "" + const context = { title: this.title, - id: this.id, - type: this.object.type, - img: this.object.img, - name: this.object.name, + id: item.id, + type: item.type, + img: item.img, + name: item.name, editable: this.isEditable, cssClass: this.isEditable ? "editable" : "locked", - system: foundry.utils.duplicate(this.object.system), + system: foundry.utils.duplicate(item.system), + systemFields: item.system.schema.fields, config: foundry.utils.duplicate(game.system.tedeum.config), competences: TeDeumUtility.getCompetencesForDropDown(), - limited: this.object.limited, - options: this.options, - owner: this.document.isOwner, - description: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.description, { async: true }), - notes: await foundry.applications.ux.TextEditor.implementation.enrichHTML(this.object.system.notes, { async: true }), - isGM: game.user.isGM + limited: item.limited, + owner: item.isOwner, + enrichedDescription: await enrich(item.system.description), + enrichedTransmission: await enrich(item.system.transmission), + enrichedSymptomes: await enrich(item.system.symptomes), + enrichedComplications: await enrich(item.system.complications), + enrichedVertus: await enrich(item.system.vertus), + enrichedToxicite: await enrich(item.system.toxicite), + isGM: game.user.isGM, + itemPartialName: `systems/fvtt-te-deum/templates/items/item-${item.type}-sheet.hbs`, } - - if (this.object.type == "education") { - TeDeumUtility.prepareEducationContent(formData); + if (item.type === "education") { + TeDeumUtility.prepareEducationContent(context) } - - this.options.editable = !(this.object.origin == "embeddedItem"); - return formData; - } - - - /* -------------------------------------------- */ - _getHeaderButtons() { - let buttons = super._getHeaderButtons(); - buttons.unshift({ - class: "post", - icon: "fas fa-comment", - onclick: ev => this.postItem() - }); - return buttons + return context } /* -------------------------------------------- */ - postItem() { - let chatData = duplicate(this.item) + /** @override */ + _onRender(context, options) { + super._onRender(context, options) + + // Tab navigation + const nav = this.element.querySelector('nav.tabs[data-group]') + if (nav) { + const group = nav.dataset.group + const activeTab = this.tabGroups[group] || "description" + nav.querySelectorAll('[data-tab]').forEach(link => { + const tab = link.dataset.tab + link.classList.toggle('active', tab === activeTab) + link.addEventListener('click', event => { + event.preventDefault() + this.tabGroups[group] = tab + this.render() + }) + }) + this.element.querySelectorAll(`[data-group="${group}"][data-tab]`).forEach(content => { + content.classList.toggle('active', content.dataset.tab === activeTab) + }) + } + + // Ignore Enter key in inputs + this.element.addEventListener('keydown', e => { + if (e.keyCode === 13 && e.target.tagName !== 'TEXTAREA') e.preventDefault() + }) + } + + // #region Static action handlers + + static async #onEditImage(event, target) { + const fp = new FilePicker({ + type: "image", + current: this.document.img, + callback: path => this.document.update({ img: path }), + }) + fp.browse() + } + + static async #onPostItem(event, target) { + const chatData = foundry.utils.duplicate(this.item) if (this.actor) { - chatData.actor = { id: this.actor.id }; + chatData.actor = { id: this.actor.id } } - // Don't post any image for the item (which would leave a large gap) if the default image is used - if (chatData.img.includes("/blank.png")) { - chatData.img = null; + if (chatData.img?.includes("/blank.png")) { + chatData.img = null } - // JSON object for easy creation - chatData.jsondata = JSON.stringify( - { - compendium: "postedItem", - payload: chatData, - }); - - foundry.applications.handlebars.renderTemplate('systems/fvtt-te-deum/templates/post-item.html', chatData).then(html => { - let chatOptions = TeDeumUtility.chatDataSetup(html); - ChatMessage.create(chatOptions) - }); + chatData.jsondata = JSON.stringify({ compendium: "postedItem", payload: chatData }) + const html = await foundry.applications.handlebars.renderTemplate( + 'systems/fvtt-te-deum/templates/post-item.html', chatData + ) + ChatMessage.create(TeDeumUtility.chatDataSetup(html)) } - /* -------------------------------------------- */ - async viewSubitem(ev) { - let levelIndex = Number($(ev.currentTarget).parents(".item").data("level-index")) - let choiceIndex = Number($(ev.currentTarget).parents(".item").data("choice-index")) - let featureId = $(ev.currentTarget).parents(".item").data("feature-id") - - let itemData = this.object.system.levels[levelIndex].choices[choiceIndex].features[featureId] - - if (itemData.name != 'None') { - let item = await Item.create(itemData, { temporary: true }); - item.system.origin = "embeddedItem"; - new TeDeumItemSheet(item).render(true); + static async #onDeleteSubitem(event, target) { + const field = target.dataset.type + const idx = parseInt(target.dataset.index) + const oldArray = this.document.system[field] + if (Array.isArray(oldArray) && oldArray[idx]?.name !== 'None') { + const newArray = oldArray.filter((_, i) => i !== idx) + this.document.update({ [`system.${field}`]: newArray }) } } - /* -------------------------------------------- */ - async deleteSubitem(ev) { - let field = $(ev.currentTarget).data('type'); - let idx = Number($(ev.currentTarget).data('index')); - let oldArray = this.object.system[field]; - let itemData = this.object.system[field][idx]; - if (itemData.name != 'None') { - let newArray = []; - for (let i = 0; i < oldArray.length; i++) { - if (i != idx) { - newArray.push(oldArray[i]); - } - } - this.object.update({ [`system.${field}`]: newArray }); + static async #onViewSubitem(event, target) { + const li = target.closest(".item") + const levelIndex = parseInt(li?.dataset.levelIndex) + const choiceIndex = parseInt(li?.dataset.choiceIndex) + const featureId = li?.dataset.featureId + const itemData = this.document.system.levels?.[levelIndex]?.choices?.[choiceIndex]?.features?.[featureId] + if (itemData?.name !== 'None') { + const item = await Item.create(itemData, { temporary: true }) + item.system.origin = "embeddedItem" + new TeDeumItemSheet(item).render(true) } } - /* -------------------------------------------- */ - /** @override */ - activateListeners(html) { - super.activateListeners(html); - - // Everything below here is only needed if the sheet is editable - if (!this.options.editable) return; - - - // Update Inventory Item - html.find('.item-edit').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - const item = this.object.options.actor.getOwnedItem(li.data("item-id")); - item.sheet.render(true); - }); - - html.find('.delete-subitem').click(ev => { - this.deleteSubitem(ev); - }); - - // Update Inventory Item - html.find('.item-delete').click(ev => { - const li = $(ev.currentTarget).parents(".item"); - let itemId = li.data("item-id"); - let itemType = li.data("item-type"); - }); - - } - - /* -------------------------------------------- */ - get template() { - let type = this.item.type; - return `systems/fvtt-te-deum/templates/items/item-${type}-sheet.hbs` - } - - /* -------------------------------------------- */ - /** @override */ - _updateObject(event, formData) { - return this.object.update(formData) - } + // #endregion } \ No newline at end of file diff --git a/packs/aides/000177.ldb b/packs/aides/000236.ldb similarity index 100% rename from packs/aides/000177.ldb rename to packs/aides/000236.ldb diff --git a/packs/aides/CURRENT b/packs/aides/CURRENT index 72f074e..c19bf10 100644 --- a/packs/aides/CURRENT +++ b/packs/aides/CURRENT @@ -1 +1 @@ -MANIFEST-000226 +MANIFEST-000245 diff --git a/packs/aides/LOG b/packs/aides/LOG index 7272d90..183086a 100644 --- a/packs/aides/LOG +++ b/packs/aides/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:49.096861 7f821f7fe6c0 Recovering log #224 -2026/02/25-16:17:49.106471 7f821f7fe6c0 Delete type=3 #222 -2026/02/25-16:17:49.106539 7f821f7fe6c0 Delete type=0 #224 +2026/02/28-09:14:40.938346 7f56f93fe6c0 Recovering log #243 +2026/02/28-09:14:40.993306 7f56f93fe6c0 Delete type=3 #241 +2026/02/28-09:14:40.993438 7f56f93fe6c0 Delete type=0 #243 +2026/02/28-11:53:47.481993 7f54e37ef6c0 Level-0 table #248: started +2026/02/28-11:53:47.482026 7f54e37ef6c0 Level-0 table #248: 0 bytes OK +2026/02/28-11:53:47.487859 7f54e37ef6c0 Delete type=0 #246 +2026/02/28-11:53:47.488058 7f54e37ef6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) diff --git a/packs/aides/LOG.old b/packs/aides/LOG.old index 97b7095..667c9ec 100644 --- a/packs/aides/LOG.old +++ b/packs/aides/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.937630 7f821ffff6c0 Recovering log #220 -2026/02/25-15:53:40.949873 7f821ffff6c0 Delete type=3 #218 -2026/02/25-15:53:40.949933 7f821ffff6c0 Delete type=0 #220 -2026/02/25-16:16:19.716603 7f821d8d46c0 Level-0 table #225: started -2026/02/25-16:16:19.716652 7f821d8d46c0 Level-0 table #225: 0 bytes OK -2026/02/25-16:16:19.765894 7f821d8d46c0 Delete type=0 #223 -2026/02/25-16:16:19.766155 7f821d8d46c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.828064 7f56f8bfd6c0 Recovering log #239 +2026/02/27-17:11:33.838170 7f56f8bfd6c0 Delete type=3 #237 +2026/02/27-17:11:33.838231 7f56f8bfd6c0 Delete type=0 #239 +2026/02/27-17:22:38.249017 7f54e37ef6c0 Level-0 table #244: started +2026/02/27-17:22:38.249057 7f54e37ef6c0 Level-0 table #244: 0 bytes OK +2026/02/27-17:22:38.255519 7f54e37ef6c0 Delete type=0 #242 +2026/02/27-17:22:38.255693 7f54e37ef6c0 Manual compaction at level-0 from '!journal!uNwJgi4kXBCiZmAH' @ 72057594037927935 : 1 .. '!journal.pages!uNwJgi4kXBCiZmAH.onhNU0mXhOpdNZJF' @ 0 : 0; will stop at (end) diff --git a/packs/aides/MANIFEST-000226 b/packs/aides/MANIFEST-000226 deleted file mode 100644 index f462645..0000000 Binary files a/packs/aides/MANIFEST-000226 and /dev/null differ diff --git a/packs/aides/MANIFEST-000245 b/packs/aides/MANIFEST-000245 new file mode 100644 index 0000000..3e15748 Binary files /dev/null and b/packs/aides/MANIFEST-000245 differ diff --git a/packs/armes/000280.ldb b/packs/armes/000280.ldb deleted file mode 100644 index 6131c39..0000000 Binary files a/packs/armes/000280.ldb and /dev/null differ diff --git a/packs/armes/CURRENT b/packs/armes/CURRENT index 00ac499..2033052 100644 --- a/packs/armes/CURRENT +++ b/packs/armes/CURRENT @@ -1 +1 @@ -MANIFEST-000329 +MANIFEST-000347 diff --git a/packs/armes/LOG b/packs/armes/LOG index 0ce0f42..fe6ab4c 100644 --- a/packs/armes/LOG +++ b/packs/armes/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:49.007591 7f821f7fe6c0 Recovering log #327 -2026/02/25-16:17:49.018485 7f821f7fe6c0 Delete type=3 #325 -2026/02/25-16:17:49.018548 7f821f7fe6c0 Delete type=0 #327 +2026/02/28-09:14:40.507166 7f56f8bfd6c0 Recovering log #345 +2026/02/28-09:14:40.569877 7f56f8bfd6c0 Delete type=3 #343 +2026/02/28-09:14:40.570013 7f56f8bfd6c0 Delete type=0 #345 +2026/02/28-11:53:47.420510 7f54e37ef6c0 Level-0 table #350: started +2026/02/28-11:53:47.420538 7f54e37ef6c0 Level-0 table #350: 0 bytes OK +2026/02/28-11:53:47.427480 7f54e37ef6c0 Delete type=0 #348 +2026/02/28-11:53:47.427767 7f54e37ef6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/armes/LOG.old b/packs/armes/LOG.old index 9d91d27..1e7c2b5 100644 --- a/packs/armes/LOG.old +++ b/packs/armes/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.848906 7f821effd6c0 Recovering log #323 -2026/02/25-15:53:40.858667 7f821effd6c0 Delete type=3 #321 -2026/02/25-15:53:40.858720 7f821effd6c0 Delete type=0 #323 -2026/02/25-16:16:19.467652 7f821d8d46c0 Level-0 table #328: started -2026/02/25-16:16:19.467677 7f821d8d46c0 Level-0 table #328: 0 bytes OK -2026/02/25-16:16:19.528659 7f821d8d46c0 Delete type=0 #326 -2026/02/25-16:16:19.528885 7f821d8d46c0 Manual compaction at level-0 from '!folders!InCQeTRdT5jXMX82' @ 72057594037927935 : 1 .. '!items!wxIHkrq98eQ3cOvp' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.742557 7f56f8bfd6c0 Recovering log #341 +2026/02/27-17:11:33.751671 7f56f8bfd6c0 Delete type=3 #339 +2026/02/27-17:11:33.751725 7f56f8bfd6c0 Delete type=0 #341 +2026/02/27-17:22:38.183980 7f54e37ef6c0 Level-0 table #346: started +2026/02/27-17:22:38.184010 7f54e37ef6c0 Level-0 table #346: 0 bytes OK +2026/02/27-17:22:38.189997 7f54e37ef6c0 Delete type=0 #344 +2026/02/27-17:22:38.202756 7f54e37ef6c0 Manual compaction at level-0 from 'undefined' @ 72057594037927935 : 1 .. 'undefined' @ 0 : 0; will stop at (end) diff --git a/packs/armes/MANIFEST-000329 b/packs/armes/MANIFEST-000329 deleted file mode 100644 index f8e2672..0000000 Binary files a/packs/armes/MANIFEST-000329 and /dev/null differ diff --git a/packs/armes/MANIFEST-000347 b/packs/armes/MANIFEST-000347 new file mode 100644 index 0000000..1f2cf7e Binary files /dev/null and b/packs/armes/MANIFEST-000347 differ diff --git a/packs/armures/000304.ldb b/packs/armures/000339.ldb similarity index 100% rename from packs/armures/000304.ldb rename to packs/armures/000339.ldb diff --git a/packs/armures/CURRENT b/packs/armures/CURRENT index 00ac499..549acb4 100644 --- a/packs/armures/CURRENT +++ b/packs/armures/CURRENT @@ -1 +1 @@ -MANIFEST-000329 +MANIFEST-000348 diff --git a/packs/armures/LOG b/packs/armures/LOG index 80e27ca..ee50a65 100644 --- a/packs/armures/LOG +++ b/packs/armures/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:49.020792 7f821effd6c0 Recovering log #327 -2026/02/25-16:17:49.030955 7f821effd6c0 Delete type=3 #325 -2026/02/25-16:17:49.031024 7f821effd6c0 Delete type=0 #327 +2026/02/28-09:14:40.573416 7f56f93fe6c0 Recovering log #346 +2026/02/28-09:14:40.630571 7f56f93fe6c0 Delete type=3 #344 +2026/02/28-09:14:40.630725 7f56f93fe6c0 Delete type=0 #346 +2026/02/28-11:53:47.408468 7f54e37ef6c0 Level-0 table #351: started +2026/02/28-11:53:47.408492 7f54e37ef6c0 Level-0 table #351: 0 bytes OK +2026/02/28-11:53:47.414369 7f54e37ef6c0 Delete type=0 #349 +2026/02/28-11:53:47.427738 7f54e37ef6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) diff --git a/packs/armures/LOG.old b/packs/armures/LOG.old index cf3c48d..11dac7c 100644 --- a/packs/armures/LOG.old +++ b/packs/armures/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.860848 7f821f7fe6c0 Recovering log #323 -2026/02/25-15:53:40.871268 7f821f7fe6c0 Delete type=3 #321 -2026/02/25-15:53:40.871372 7f821f7fe6c0 Delete type=0 #323 -2026/02/25-16:16:19.298465 7f821d8d46c0 Level-0 table #328: started -2026/02/25-16:16:19.298546 7f821d8d46c0 Level-0 table #328: 0 bytes OK -2026/02/25-16:16:19.356349 7f821d8d46c0 Delete type=0 #326 -2026/02/25-16:16:19.528831 7f821d8d46c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.753908 7f56f9bff6c0 Recovering log #342 +2026/02/27-17:11:33.763888 7f56f9bff6c0 Delete type=3 #340 +2026/02/27-17:11:33.763941 7f56f9bff6c0 Delete type=0 #342 +2026/02/27-17:22:38.176835 7f54e37ef6c0 Level-0 table #347: started +2026/02/27-17:22:38.176924 7f54e37ef6c0 Level-0 table #347: 0 bytes OK +2026/02/27-17:22:38.183841 7f54e37ef6c0 Delete type=0 #345 +2026/02/27-17:22:38.202741 7f54e37ef6c0 Manual compaction at level-0 from '!folders!2wTJBj3dicRKzNOE' @ 72057594037927935 : 1 .. '!items!ufvhWG5V8pX0qrtR' @ 0 : 0; will stop at (end) diff --git a/packs/armures/MANIFEST-000329 b/packs/armures/MANIFEST-000329 deleted file mode 100644 index 5916731..0000000 Binary files a/packs/armures/MANIFEST-000329 and /dev/null differ diff --git a/packs/armures/MANIFEST-000348 b/packs/armures/MANIFEST-000348 new file mode 100644 index 0000000..2300152 Binary files /dev/null and b/packs/armures/MANIFEST-000348 differ diff --git a/packs/competences/000278.ldb b/packs/competences/000337.ldb similarity index 100% rename from packs/competences/000278.ldb rename to packs/competences/000337.ldb diff --git a/packs/competences/CURRENT b/packs/competences/CURRENT index 9f81527..94be369 100644 --- a/packs/competences/CURRENT +++ b/packs/competences/CURRENT @@ -1 +1 @@ -MANIFEST-000327 +MANIFEST-000346 diff --git a/packs/competences/LOG b/packs/competences/LOG index c30e909..ac35ff6 100644 --- a/packs/competences/LOG +++ b/packs/competences/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:48.995540 7f821e7fc6c0 Recovering log #325 -2026/02/25-16:17:49.005262 7f821e7fc6c0 Delete type=3 #323 -2026/02/25-16:17:49.005349 7f821e7fc6c0 Delete type=0 #325 +2026/02/28-09:14:40.445424 7f56e3fff6c0 Recovering log #344 +2026/02/28-09:14:40.502194 7f56e3fff6c0 Delete type=3 #342 +2026/02/28-09:14:40.502321 7f56e3fff6c0 Delete type=0 #344 +2026/02/28-11:53:47.402111 7f54e37ef6c0 Level-0 table #349: started +2026/02/28-11:53:47.402185 7f54e37ef6c0 Level-0 table #349: 0 bytes OK +2026/02/28-11:53:47.408357 7f54e37ef6c0 Delete type=0 #347 +2026/02/28-11:53:47.427714 7f54e37ef6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) diff --git a/packs/competences/LOG.old b/packs/competences/LOG.old index b42a71a..d7ecf45 100644 --- a/packs/competences/LOG.old +++ b/packs/competences/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.836015 7f821ffff6c0 Recovering log #321 -2026/02/25-15:53:40.846129 7f821ffff6c0 Delete type=3 #319 -2026/02/25-15:53:40.846180 7f821ffff6c0 Delete type=0 #321 -2026/02/25-16:16:19.415073 7f821d8d46c0 Level-0 table #326: started -2026/02/25-16:16:19.415106 7f821d8d46c0 Level-0 table #326: 0 bytes OK -2026/02/25-16:16:19.467523 7f821d8d46c0 Delete type=0 #324 -2026/02/25-16:16:19.528868 7f821d8d46c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.729701 7f56f93fe6c0 Recovering log #340 +2026/02/27-17:11:33.739927 7f56f93fe6c0 Delete type=3 #338 +2026/02/27-17:11:33.739998 7f56f93fe6c0 Delete type=0 #340 +2026/02/27-17:22:38.190111 7f54e37ef6c0 Level-0 table #345: started +2026/02/27-17:22:38.190141 7f54e37ef6c0 Level-0 table #345: 0 bytes OK +2026/02/27-17:22:38.196111 7f54e37ef6c0 Delete type=0 #343 +2026/02/27-17:22:38.202769 7f54e37ef6c0 Manual compaction at level-0 from '!folders!4OPhigzcPv46qbWW' @ 72057594037927935 : 1 .. '!items!yx4k7lQHGcom99mk' @ 0 : 0; will stop at (end) diff --git a/packs/competences/MANIFEST-000327 b/packs/competences/MANIFEST-000327 deleted file mode 100644 index 9d13f81..0000000 Binary files a/packs/competences/MANIFEST-000327 and /dev/null differ diff --git a/packs/competences/MANIFEST-000346 b/packs/competences/MANIFEST-000346 new file mode 100644 index 0000000..bd9aeb7 Binary files /dev/null and b/packs/competences/MANIFEST-000346 differ diff --git a/packs/education/000314.ldb b/packs/education/000349.ldb similarity index 100% rename from packs/education/000314.ldb rename to packs/education/000349.ldb diff --git a/packs/education/CURRENT b/packs/education/CURRENT index 7adea65..52db918 100644 --- a/packs/education/CURRENT +++ b/packs/education/CURRENT @@ -1 +1 @@ -MANIFEST-000339 +MANIFEST-000358 diff --git a/packs/education/LOG b/packs/education/LOG index 89c31ef..27d90a7 100644 --- a/packs/education/LOG +++ b/packs/education/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:49.032966 7f821ffff6c0 Recovering log #337 -2026/02/25-16:17:49.043199 7f821ffff6c0 Delete type=3 #335 -2026/02/25-16:17:49.043264 7f821ffff6c0 Delete type=0 #337 +2026/02/28-09:14:40.634961 7f56e3fff6c0 Recovering log #356 +2026/02/28-09:14:40.683602 7f56e3fff6c0 Delete type=3 #354 +2026/02/28-09:14:40.683765 7f56e3fff6c0 Delete type=0 #356 +2026/02/28-11:53:47.414491 7f54e37ef6c0 Level-0 table #361: started +2026/02/28-11:53:47.414521 7f54e37ef6c0 Level-0 table #361: 0 bytes OK +2026/02/28-11:53:47.420403 7f54e37ef6c0 Delete type=0 #359 +2026/02/28-11:53:47.427753 7f54e37ef6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) diff --git a/packs/education/LOG.old b/packs/education/LOG.old index 994b1d2..892ed9e 100644 --- a/packs/education/LOG.old +++ b/packs/education/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.874436 7f821ffff6c0 Recovering log #333 -2026/02/25-15:53:40.884848 7f821ffff6c0 Delete type=3 #331 -2026/02/25-15:53:40.884904 7f821ffff6c0 Delete type=0 #333 -2026/02/25-16:16:19.356498 7f821d8d46c0 Level-0 table #338: started -2026/02/25-16:16:19.356535 7f821d8d46c0 Level-0 table #338: 0 bytes OK -2026/02/25-16:16:19.414898 7f821d8d46c0 Delete type=0 #336 -2026/02/25-16:16:19.528852 7f821d8d46c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.765979 7f56f93fe6c0 Recovering log #352 +2026/02/27-17:11:33.775426 7f56f93fe6c0 Delete type=3 #350 +2026/02/27-17:11:33.775496 7f56f93fe6c0 Delete type=0 #352 +2026/02/27-17:22:38.196266 7f54e37ef6c0 Level-0 table #357: started +2026/02/27-17:22:38.196298 7f54e37ef6c0 Level-0 table #357: 0 bytes OK +2026/02/27-17:22:38.202584 7f54e37ef6c0 Delete type=0 #355 +2026/02/27-17:22:38.202781 7f54e37ef6c0 Manual compaction at level-0 from '!folders!9PQi3Lv54rpcxavo' @ 72057594037927935 : 1 .. '!items!zGlRtP7zSnkjuuue' @ 0 : 0; will stop at (end) diff --git a/packs/education/MANIFEST-000339 b/packs/education/MANIFEST-000339 deleted file mode 100644 index 6e70a9c..0000000 Binary files a/packs/education/MANIFEST-000339 and /dev/null differ diff --git a/packs/education/MANIFEST-000358 b/packs/education/MANIFEST-000358 new file mode 100644 index 0000000..0c36a71 Binary files /dev/null and b/packs/education/MANIFEST-000358 differ diff --git a/packs/graces/000279.ldb b/packs/graces/000338.ldb similarity index 100% rename from packs/graces/000279.ldb rename to packs/graces/000338.ldb diff --git a/packs/graces/CURRENT b/packs/graces/CURRENT index 6926645..2033052 100644 --- a/packs/graces/CURRENT +++ b/packs/graces/CURRENT @@ -1 +1 @@ -MANIFEST-000328 +MANIFEST-000347 diff --git a/packs/graces/LOG b/packs/graces/LOG index d739d9f..5b7fc72 100644 --- a/packs/graces/LOG +++ b/packs/graces/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:49.045639 7f821e7fc6c0 Recovering log #326 -2026/02/25-16:17:49.056537 7f821e7fc6c0 Delete type=3 #324 -2026/02/25-16:17:49.056606 7f821e7fc6c0 Delete type=0 #326 +2026/02/28-09:14:40.690048 7f56f9bff6c0 Recovering log #345 +2026/02/28-09:14:40.753536 7f56f9bff6c0 Delete type=3 #343 +2026/02/28-09:14:40.753696 7f56f9bff6c0 Delete type=0 #345 +2026/02/28-11:53:47.440306 7f54e37ef6c0 Level-0 table #350: started +2026/02/28-11:53:47.440331 7f54e37ef6c0 Level-0 table #350: 0 bytes OK +2026/02/28-11:53:47.446262 7f54e37ef6c0 Delete type=0 #348 +2026/02/28-11:53:47.453090 7f54e37ef6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) diff --git a/packs/graces/LOG.old b/packs/graces/LOG.old index b33c017..0b2a11c 100644 --- a/packs/graces/LOG.old +++ b/packs/graces/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.888183 7f821effd6c0 Recovering log #322 -2026/02/25-15:53:40.897808 7f821effd6c0 Delete type=3 #320 -2026/02/25-15:53:40.897873 7f821effd6c0 Delete type=0 #322 -2026/02/25-16:16:19.645632 7f821d8d46c0 Level-0 table #327: started -2026/02/25-16:16:19.645665 7f821d8d46c0 Level-0 table #327: 0 bytes OK -2026/02/25-16:16:19.716424 7f821d8d46c0 Delete type=0 #325 -2026/02/25-16:16:19.766141 7f821d8d46c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.778709 7f56f8bfd6c0 Recovering log #341 +2026/02/27-17:11:33.788574 7f56f8bfd6c0 Delete type=3 #339 +2026/02/27-17:11:33.788626 7f56f8bfd6c0 Delete type=0 #341 +2026/02/27-17:22:38.202910 7f54e37ef6c0 Level-0 table #346: started +2026/02/27-17:22:38.202969 7f54e37ef6c0 Level-0 table #346: 0 bytes OK +2026/02/27-17:22:38.209282 7f54e37ef6c0 Delete type=0 #344 +2026/02/27-17:22:38.228524 7f54e37ef6c0 Manual compaction at level-0 from '!items!17mjvwS8R3B6LloG' @ 72057594037927935 : 1 .. '!items!zUYIVOuFpRur9aAR' @ 0 : 0; will stop at (end) diff --git a/packs/graces/MANIFEST-000328 b/packs/graces/MANIFEST-000328 deleted file mode 100644 index bbe1ccd..0000000 Binary files a/packs/graces/MANIFEST-000328 and /dev/null differ diff --git a/packs/graces/MANIFEST-000347 b/packs/graces/MANIFEST-000347 new file mode 100644 index 0000000..0bad360 Binary files /dev/null and b/packs/graces/MANIFEST-000347 differ diff --git a/packs/maladies/000279.ldb b/packs/maladies/000338.ldb similarity index 100% rename from packs/maladies/000279.ldb rename to packs/maladies/000338.ldb diff --git a/packs/maladies/CURRENT b/packs/maladies/CURRENT index 6926645..2033052 100644 --- a/packs/maladies/CURRENT +++ b/packs/maladies/CURRENT @@ -1 +1 @@ -MANIFEST-000328 +MANIFEST-000347 diff --git a/packs/maladies/LOG b/packs/maladies/LOG index 97bb116..94dc38c 100644 --- a/packs/maladies/LOG +++ b/packs/maladies/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:49.058989 7f821effd6c0 Recovering log #326 -2026/02/25-16:17:49.068511 7f821effd6c0 Delete type=3 #324 -2026/02/25-16:17:49.068568 7f821effd6c0 Delete type=0 #326 +2026/02/28-09:14:40.758009 7f56f8bfd6c0 Recovering log #345 +2026/02/28-09:14:40.809385 7f56f8bfd6c0 Delete type=3 #343 +2026/02/28-09:14:40.809522 7f56f8bfd6c0 Delete type=0 #345 +2026/02/28-11:53:47.427947 7f54e37ef6c0 Level-0 table #350: started +2026/02/28-11:53:47.427981 7f54e37ef6c0 Level-0 table #350: 0 bytes OK +2026/02/28-11:53:47.434137 7f54e37ef6c0 Delete type=0 #348 +2026/02/28-11:53:47.453062 7f54e37ef6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) diff --git a/packs/maladies/LOG.old b/packs/maladies/LOG.old index 64d27d1..602bd29 100644 --- a/packs/maladies/LOG.old +++ b/packs/maladies/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.899737 7f821f7fe6c0 Recovering log #322 -2026/02/25-15:53:40.910545 7f821f7fe6c0 Delete type=3 #320 -2026/02/25-15:53:40.910590 7f821f7fe6c0 Delete type=0 #322 -2026/02/25-16:16:19.529006 7f821d8d46c0 Level-0 table #327: started -2026/02/25-16:16:19.529044 7f821d8d46c0 Level-0 table #327: 0 bytes OK -2026/02/25-16:16:19.584573 7f821d8d46c0 Delete type=0 #325 -2026/02/25-16:16:19.766110 7f821d8d46c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.790985 7f56e3fff6c0 Recovering log #341 +2026/02/27-17:11:33.800729 7f56e3fff6c0 Delete type=3 #339 +2026/02/27-17:11:33.800800 7f56e3fff6c0 Delete type=0 #341 +2026/02/27-17:22:38.215408 7f54e37ef6c0 Level-0 table #346: started +2026/02/27-17:22:38.215437 7f54e37ef6c0 Level-0 table #346: 0 bytes OK +2026/02/27-17:22:38.221481 7f54e37ef6c0 Delete type=0 #344 +2026/02/27-17:22:38.228550 7f54e37ef6c0 Manual compaction at level-0 from '!items!1icaxIywAwDXQcMz' @ 72057594037927935 : 1 .. '!items!ysGehYm1VkMWrI22' @ 0 : 0; will stop at (end) diff --git a/packs/maladies/MANIFEST-000328 b/packs/maladies/MANIFEST-000328 deleted file mode 100644 index 6c8dc48..0000000 Binary files a/packs/maladies/MANIFEST-000328 and /dev/null differ diff --git a/packs/maladies/MANIFEST-000347 b/packs/maladies/MANIFEST-000347 new file mode 100644 index 0000000..e2b3ab0 Binary files /dev/null and b/packs/maladies/MANIFEST-000347 differ diff --git a/packs/scenes/000216.ldb b/packs/scenes/000275.ldb similarity index 100% rename from packs/scenes/000216.ldb rename to packs/scenes/000275.ldb diff --git a/packs/scenes/CURRENT b/packs/scenes/CURRENT index f10934b..0041f5d 100644 --- a/packs/scenes/CURRENT +++ b/packs/scenes/CURRENT @@ -1 +1 @@ -MANIFEST-000265 +MANIFEST-000284 diff --git a/packs/scenes/LOG b/packs/scenes/LOG index 63d7a68..1a58a0f 100644 --- a/packs/scenes/LOG +++ b/packs/scenes/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:49.082827 7f821e7fc6c0 Recovering log #263 -2026/02/25-16:17:49.093869 7f821e7fc6c0 Delete type=3 #261 -2026/02/25-16:17:49.093933 7f821e7fc6c0 Delete type=0 #263 +2026/02/28-09:14:40.881498 7f56f9bff6c0 Recovering log #282 +2026/02/28-09:14:40.932289 7f56f9bff6c0 Delete type=3 #280 +2026/02/28-09:14:40.932424 7f56f9bff6c0 Delete type=0 #282 +2026/02/28-11:53:47.446364 7f54e37ef6c0 Level-0 table #287: started +2026/02/28-11:53:47.446388 7f54e37ef6c0 Level-0 table #287: 0 bytes OK +2026/02/28-11:53:47.452966 7f54e37ef6c0 Delete type=0 #285 +2026/02/28-11:53:47.453100 7f54e37ef6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) diff --git a/packs/scenes/LOG.old b/packs/scenes/LOG.old index af77ea8..06c2da6 100644 --- a/packs/scenes/LOG.old +++ b/packs/scenes/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.925187 7f821effd6c0 Recovering log #259 -2026/02/25-15:53:40.934520 7f821effd6c0 Delete type=3 #257 -2026/02/25-15:53:40.934568 7f821effd6c0 Delete type=0 #259 -2026/02/25-16:16:19.945947 7f821d8d46c0 Level-0 table #264: started -2026/02/25-16:16:19.946001 7f821d8d46c0 Level-0 table #264: 0 bytes OK -2026/02/25-16:16:20.001848 7f821d8d46c0 Delete type=0 #262 -2026/02/25-16:16:20.001994 7f821d8d46c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.815402 7f56f9bff6c0 Recovering log #278 +2026/02/27-17:11:33.825096 7f56f9bff6c0 Delete type=3 #276 +2026/02/27-17:11:33.825159 7f56f9bff6c0 Delete type=0 #278 +2026/02/27-17:22:38.221603 7f54e37ef6c0 Level-0 table #283: started +2026/02/27-17:22:38.221636 7f54e37ef6c0 Level-0 table #283: 0 bytes OK +2026/02/27-17:22:38.228408 7f54e37ef6c0 Delete type=0 #281 +2026/02/27-17:22:38.228561 7f54e37ef6c0 Manual compaction at level-0 from '!scenes!FJXugdbkBpEJEdR6' @ 72057594037927935 : 1 .. '!scenes!FJXugdbkBpEJEdR6' @ 0 : 0; will stop at (end) diff --git a/packs/scenes/MANIFEST-000265 b/packs/scenes/MANIFEST-000265 deleted file mode 100644 index 6e06778..0000000 Binary files a/packs/scenes/MANIFEST-000265 and /dev/null differ diff --git a/packs/scenes/MANIFEST-000284 b/packs/scenes/MANIFEST-000284 new file mode 100644 index 0000000..ae614e8 Binary files /dev/null and b/packs/scenes/MANIFEST-000284 differ diff --git a/packs/simples/000280.ldb b/packs/simples/000339.ldb similarity index 100% rename from packs/simples/000280.ldb rename to packs/simples/000339.ldb diff --git a/packs/simples/CURRENT b/packs/simples/CURRENT index 00ac499..549acb4 100644 --- a/packs/simples/CURRENT +++ b/packs/simples/CURRENT @@ -1 +1 @@ -MANIFEST-000329 +MANIFEST-000348 diff --git a/packs/simples/LOG b/packs/simples/LOG index d853150..2149f04 100644 --- a/packs/simples/LOG +++ b/packs/simples/LOG @@ -1,3 +1,7 @@ -2026/02/25-16:17:49.070393 7f821ffff6c0 Recovering log #327 -2026/02/25-16:17:49.080654 7f821ffff6c0 Delete type=3 #325 -2026/02/25-16:17:49.080720 7f821ffff6c0 Delete type=0 #327 +2026/02/28-09:14:40.813470 7f56f93fe6c0 Recovering log #346 +2026/02/28-09:14:40.876043 7f56f93fe6c0 Delete type=3 #344 +2026/02/28-09:14:40.876176 7f56f93fe6c0 Delete type=0 #346 +2026/02/28-11:53:47.434224 7f54e37ef6c0 Level-0 table #351: started +2026/02/28-11:53:47.434247 7f54e37ef6c0 Level-0 table #351: 0 bytes OK +2026/02/28-11:53:47.440199 7f54e37ef6c0 Delete type=0 #349 +2026/02/28-11:53:47.453078 7f54e37ef6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) diff --git a/packs/simples/LOG.old b/packs/simples/LOG.old index 7976077..8d96879 100644 --- a/packs/simples/LOG.old +++ b/packs/simples/LOG.old @@ -1,7 +1,7 @@ -2026/02/25-15:53:40.912618 7f821e7fc6c0 Recovering log #323 -2026/02/25-15:53:40.922737 7f821e7fc6c0 Delete type=3 #321 -2026/02/25-15:53:40.922804 7f821e7fc6c0 Delete type=0 #323 -2026/02/25-16:16:19.584692 7f821d8d46c0 Level-0 table #328: started -2026/02/25-16:16:19.584724 7f821d8d46c0 Level-0 table #328: 0 bytes OK -2026/02/25-16:16:19.645484 7f821d8d46c0 Delete type=0 #326 -2026/02/25-16:16:19.766128 7f821d8d46c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) +2026/02/27-17:11:33.802695 7f56f93fe6c0 Recovering log #342 +2026/02/27-17:11:33.813017 7f56f93fe6c0 Delete type=3 #340 +2026/02/27-17:11:33.813086 7f56f93fe6c0 Delete type=0 #342 +2026/02/27-17:22:38.209394 7f54e37ef6c0 Level-0 table #347: started +2026/02/27-17:22:38.209417 7f54e37ef6c0 Level-0 table #347: 0 bytes OK +2026/02/27-17:22:38.215315 7f54e37ef6c0 Delete type=0 #345 +2026/02/27-17:22:38.228539 7f54e37ef6c0 Manual compaction at level-0 from '!items!1bAL2MQVpVBd0c5Z' @ 72057594037927935 : 1 .. '!items!zs67k4sxCid6oTK3' @ 0 : 0; will stop at (end) diff --git a/packs/simples/MANIFEST-000329 b/packs/simples/MANIFEST-000329 deleted file mode 100644 index 46d89cb..0000000 Binary files a/packs/simples/MANIFEST-000329 and /dev/null differ diff --git a/packs/simples/MANIFEST-000348 b/packs/simples/MANIFEST-000348 new file mode 100644 index 0000000..8b0aeb1 Binary files /dev/null and b/packs/simples/MANIFEST-000348 differ diff --git a/styles/actor-sheet.css b/styles/actor-sheet.css new file mode 100644 index 0000000..b6ec69a --- /dev/null +++ b/styles/actor-sheet.css @@ -0,0 +1,371 @@ +.editor { + border: 2; + height: 100%; + padding: 0 3px; +} +.medium-editor { + border: 2; + height: 240px; + max-height: 240px; + overflow-y: auto; + overflow-x: hidden; + padding: 0 3px; +} +.medium-editor prose-mirror, +.medium-editor .editor, +.medium-editor .editor-content, +.medium-editor .ProseMirror { + overflow: hidden; + height: auto; +} +.small-editor { + border: 2; + height: 120px; + max-height: 120px; + overflow-y: auto; + overflow-x: hidden; + padding: 0 3px; +} +.small-editor prose-mirror, +.small-editor .editor, +.small-editor .editor-content, +.small-editor .ProseMirror { + overflow: hidden; + height: auto; +} +.questionnaire-reponse { + max-width: 42rem; + margin-left: 1rem; +} +.questionnaire-element { + margin-top: 0.5rem; +} +.fvtt-te-deum input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]), +.fvtt-te-deum select { + background: rgba(248, 245, 238, 0.95); + color: rgba(19, 18, 18, 0.95); + border: 1px solid rgba(139, 115, 85, 0.35); + border-radius: 3px; + padding: 0.15rem 0.3rem; + transition: border-color 0.2s ease, box-shadow 0.2s ease; +} +.fvtt-te-deum input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]):hover, +.fvtt-te-deum select:hover { + border-color: rgba(139, 115, 85, 0.65); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); +} +.fvtt-te-deum input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]):focus, +.fvtt-te-deum select:focus { + outline: none; + border-color: rgba(139, 115, 85, 0.85); + box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); +} +.fvtt-te-deum input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]):disabled, +.fvtt-te-deum select:disabled { + color: rgba(19, 18, 18, 0.4); + background: rgba(220, 216, 205, 0.6); + border-color: rgba(139, 115, 85, 0.15); +} +.fvtt-te-deum textarea { + background: rgba(248, 245, 238, 0.95); + color: rgba(19, 18, 18, 0.95); + border: 1px solid rgba(139, 115, 85, 0.35); + border-radius: 3px; + padding: 0.2rem 0.4rem; + transition: border-color 0.2s ease, box-shadow 0.2s ease; +} +.fvtt-te-deum textarea:hover { + border-color: rgba(139, 115, 85, 0.65); +} +.fvtt-te-deum textarea:focus { + outline: none; + border-color: rgba(139, 115, 85, 0.85); + box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); +} +.fvtt-te-deum.window-app .window-content, +.fvtt-te-deum.application .window-content, +.fvtt-te-deum.window-app.sheet .window-content .sheet-body, +.fvtt-te-deum.application.sheet .window-content .sheet-body { + font-size: 0.8rem; + background: rgba(226, 226, 222, 0.95); + color: rgba(19, 18, 18, 0.95); +} +.item-form .sheet-header { + background: linear-gradient(135deg, rgba(226, 226, 222, 0.95) 0%, rgba(240, 235, 225, 0.9) 100%); + padding: 0.8rem; + border-radius: 8px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(139, 115, 85, 0.3); + margin-bottom: 0.5rem; +} +.item-form .sheet-body ul { + list-style: none; + padding: 0; + margin: 0; +} +.item-form .sheet-body ul li.flexrow { + background: rgba(255, 255, 255, 0.3); + padding: 0.4rem 0.6rem; + margin: 0.3rem 0; + border-radius: 4px; + border-left: 3px solid rgba(139, 115, 85, 0.3); + transition: all 0.2s ease; +} +.item-form .sheet-body ul li.flexrow:hover { + background: rgba(255, 255, 255, 0.5); + border-left-color: rgba(139, 115, 85, 0.6); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} +.item-form .sheet-body h3 { + background: linear-gradient(135deg, rgba(196, 186, 166, 0.6) 0%, rgba(226, 226, 222, 0.5) 100%); + padding: 0.4rem 0.6rem; + margin: 0.8rem 0 0.4rem 0; + border-radius: 4px; + border-left: 4px solid rgba(139, 115, 85, 0.6); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + font-family: MailartRubberstamp; + font-size: 1.1rem; + color: #3d3a2e; +} +.item-form .sheet-body input[type="checkbox"] { + width: 18px; + height: 18px; + cursor: pointer; +} +.fvtt-te-deum.application .window-content .sheet-header h1.charname input[name="name"], +.fvtt-te-deum.window-app .window-content .sheet-header h1.charname input[name="name"] { + font-family: "GreatPrimer"; + font-size: 3rem; + background: transparent; + border: none; + border-bottom: 2px solid rgba(139, 115, 85, 0.4); + color: rgba(50, 35, 15, 0.95); + width: 100%; + height: 100%; + margin: 0; + letter-spacing: 0.05em; + transition: border-color 0.2s ease; +} +.fvtt-te-deum.application .window-content .sheet-header h1.charname input[name="name"]:hover, +.fvtt-te-deum.window-app .window-content .sheet-header h1.charname input[name="name"]:hover { + border-width: 2px; + border-color: rgba(139, 115, 85, 0.7); +} +.fvtt-te-deum.application .window-content .sheet-header h1.charname input[name="name"]:focus, +.fvtt-te-deum.window-app .window-content .sheet-header h1.charname input[name="name"]:focus { + border-bottom-color: rgba(139, 115, 85, 0.9); + outline: none; +} +.fvtt-te-deum.application .window-content .item-form .sheet-header h1.charname input[name="name"], +.fvtt-te-deum.window-app .window-content .item-form .sheet-header h1.charname input[name="name"] { + font-size: 1.6rem; + height: auto; +} +.fvtt-te-deum .sheet-body { + padding: 0.25rem 0.5rem; +} +.fvtt-te-deum .sheet-body:after { + content: ""; + display: block; + clear: both; +} +.fvtt-te-deum nav.tabs .item { + z-index: 2; + position: relative; + opacity: 1; + color: rgba(29, 28, 31); + padding: 0 0.25rem; +} +.fvtt-te-deum nav.tabs .item:after { + content: ""; + position: absolute; + top: 0; + right: 0; + height: 2rem; + width: 1px; +} +.select-diff { + display: inline-block; + text-align: left; + width: 50px; +} +.fvtt-te-deum.window-app.sheet .window-content .carac-value, +.fvtt-te-deum.application.sheet .window-content .carac-value, +.fvtt-te-deum.window-app.sheet .window-content .competence-xp, +.fvtt-te-deum.application.sheet .window-content .competence-xp { + margin: 0.05rem; + flex-basis: 3rem; + text-align: center; +} +.fvtt-te-deum h1, +.fvtt-te-deum h2, +.fvtt-te-deum h3, +.fvtt-te-deum h4 { + font-weight: bold; + color: rgba(19, 18, 18, 0.95); +} +.fvtt-te-deum .malus-sante { + font-size: 0.88rem; + font-weight: normal; +} +.fvtt-te-deum .malus-sante-active { + color: rgba(200, 80, 10, 0.95); + font-weight: bold; +} +.fvtt-te-deum ul, +.fvtt-te-deum ol { + margin: 0; + padding: 0; +} +.fvtt-te-deum ul, +.fvtt-te-deum li { + list-style-type: none; +} +.header-fields li { + margin: 0; + padding: 0; +} +.alterne-list > .list-item:hover { + background: rgba(226, 226, 222, 0.4); + transform: translateX(2px); +} +.alterne-list > .list-item:nth-child(even) { + background: rgba(240, 235, 225, 0.3); +} +.alterne-list > .list-item:nth-child(odd) { + background: rgba(250, 245, 235, 0.2); +} +.specialisation-label { + font-size: 0.8rem; +} +.carac-label, +.attr-label { + font-weight: bold; +} +.list-item { + margin: 0.125rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0.3rem; + padding: 0.3rem 0.4rem; + flex: 1 1 5rem; + border: 1px solid rgba(139, 115, 85, 0.15); + transition: all 0.2s ease; +} +.list-item:hover { + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + border-color: rgba(139, 115, 85, 0.3); + background: rgba(255, 255, 255, 0.3); +} +.list-item-shadow { + background: linear-gradient(135deg, rgba(170, 168, 167, 0.25) 0%, rgba(200, 195, 185, 0.2) 100%); + flex-grow: 0; + flex-wrap: nowrap; + justify-content: flex-start; + border-left: 3px solid rgba(139, 115, 85, 0.3); +} +.list-item-shadow2 { + background: linear-gradient(135deg, rgba(87, 60, 32, 0.2) 0%, rgba(120, 90, 60, 0.15) 100%); + flex-grow: 0; + flex-wrap: nowrap; + justify-content: flex-start; + border-left: 3px solid rgba(87, 60, 32, 0.4); +} +.item-display-show { + display: block; +} +.item-display-hide { + display: none; +} +.item-quantite { + margin-left: 0.5rem; +} +.list-item-margin1 { + margin-left: 1rem; +} +.list-item-margin2 { + margin-left: 2rem; +} +.list-item-margin3 { + margin-left: 3rem; +} +.list-item-margin4 { + margin-left: 4rem; +} +.sheet-competence-img { + width: 24px; + max-width: 24px; + height: 24px; + max-height: 24px; + flex-grow: 0; + margin-right: 0.25rem; + border-radius: 3px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(139, 115, 85, 0.3); +} +.competence-column { + flex-direction: column; + align-content: flex-start; + justify-content: flex-start; + flex-grow: 0; + flex-basis: 1; +} +.competence-header { + align-content: flex-start; + justify-content: flex-start; + font-weight: bold; + flex-grow: 0; +} +.comp-li { + max-width: 8rem; + width: 8rem; +} +.description-label { + flex-grow: 2; + margin-left: 4px; +} +.status-header-label { + margin-left: 2px; +} +.roll-dialog-label { + margin: 4px 0; + min-width: 96px; +} +.short-label { + flex-grow: 1; +} +.keyword-label { + font-size: 0.85rem; +} +.item-sheet-label { + flex-grow: 1; +} +.item-text-long-line { + flex-grow: 3; +} +.score-label { + flex-grow: 2; + align-content: center; +} +.attribut-value, +.carac-value { + flex-grow: 0; + flex-basis: 64px; + margin-right: 4px; + margin-left: 4px; +} +.sante-value, +.competence-value { + flex-grow: 0; + flex-basis: 2rem; + margin-right: 0.25rem; + margin-left: 0.25rem; +} +.description-value { + flex-grow: 0; + flex-basis: 4rem; + margin-right: 0.25rem; + margin-left: 0.25rem; +} +.small-label { + margin-top: 5px; +} diff --git a/styles/base.css b/styles/base.css new file mode 100644 index 0000000..22c670c --- /dev/null +++ b/styles/base.css @@ -0,0 +1,186 @@ +.fvtt-te-deum.window-app, +.fvtt-te-deum.application { + text-align: justify; + font-size: 16px; + letter-spacing: 1px; +} +.fvtt-te-deum.window-app.sheet .window-content, +.fvtt-te-deum.application.sheet .window-content { + margin: 0; + padding: 0; + font-family: "GreatPrimer"; +} +.fvtt-te-deum.window-app.sheet .window-content .sheet-header, +.fvtt-te-deum.application.sheet .window-content .sheet-header { + color: rgba(19, 18, 18, 0.95); + background: rgba(226, 226, 222, 0.95); +} +.fvtt-te-deum.window-app.sheet .window-content .tooltip:hover .tooltiptext, +.fvtt-te-deum.application.sheet .window-content .tooltip:hover .tooltiptext { + top: 2rem; + left: 2rem; + margin: 0; + padding: 0.25rem; +} +.fvtt-te-deum.sheet header.sheet-header h1 input, +.window-app .window-header, +.application .window-header, +#actors .directory-list, +#navigation #scene-list .scene.nav-item { + font-size: 1rem; +} +.fvtt-te-deum.sheet nav.sheet-tabs, +.fvtt-te-deum.sheet nav.tabs { + font-size: 0.8rem; + font-size: 1.2rem; + font-weight: bold; + height: 3rem; + flex: 0 0 3rem; + margin: 0; + padding: 0 0 0 0.25rem; + text-align: center; + line-height: 1.5rem; + border-top: 0 none; + border-bottom: 0 none; + background: linear-gradient(rgba(226, 226, 222, 0.5), rgba(226, 226, 222, 0.5)), url("../images/ui/frise_bottom_01.webp"); + background-repeat: no-repeat; + background-size: 100% 100%; + z-index: 1; +} +.fvtt-te-deum.sheet header.sheet-header .profile-img { + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 0; + object-position: 50% 0; + margin: 0.5rem 0 0.5rem 0.5rem; + padding: 0; +} +.fvtt-te-deum.sheet header.sheet-header .flex-compteurs { + text-align: right; +} +.fvtt-te-deum.sheet header.sheet-header .resource-content { + width: 2rem; +} +.fvtt-te-deum.sheet .tab[data-tab] { + padding: 0; +} +.fvtt-te-deum.sheet li { + margin: 0.2rem; + padding: 0.15rem; +} +.fvtt-te-deum.window-app input, +.fvtt-te-deum.application input, +.fvtt-te-deum .item-form, +.fvtt-te-deum.sheet header.sheet-header .flex-group-center.flex-compteurs, +.fvtt-te-deum.sheet header.sheet-header .flex-group-center.flex-fatigue, +.fvtt-te-deum select, +.fvtt-te-deum button, +.item-checkbox, +#sidebar, +#players, +#navigation #nav-toggle { + font-size: 0.8rem; +} +.window-header { + background: rgba(0, 0, 0, 0.75); +} +.strong-text { + font-weight: bold; +} +.fvtt-te-deum .tabs .item.active, +.fvtt-te-deum .blessures-list li ul li:first-child:hover, +.fvtt-te-deum a:hover { + text-shadow: 1px 0px 0px #ff6600; +} +.rollable:hover, +.rollable:focus { + color: #000; + text-shadow: 0 0 10px red; + cursor: pointer; +} +li.folder > .folder-header h3 { + color: #aaa; +} +.fvtt-te-deum table { + border: 1px solid #7a7971; +} +.grid, +.grid-2col { + display: grid; + grid-column: span 2 / span 2; + grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-gap: 10px; + gap: 10px; + margin: 10px 0; + padding: 0; +} +.grid-3col { + grid-column: span 3 / span 3; + grid-template-columns: repeat(3, minmax(0, 1fr)); +} +.grid-4col { + grid-column: span 4 / span 4; + grid-template-columns: repeat(4, minmax(0, 1fr)); +} +.grid-5col { + grid-column: span 5 / span 5; + grid-template-columns: repeat(5, minmax(0, 1fr)); +} +.grid-6col { + grid-column: span 5 / span 5; + grid-template-columns: repeat(5, minmax(0, 1fr)); +} +.grid-7col { + grid-column: span 7 / span 7; + grid-template-columns: repeat(7, minmax(0, 1fr)); +} +.grid-8col { + grid-column: span 8 / span 8; + grid-template-columns: repeat(8, minmax(0, 1fr)); +} +.grid-9col { + grid-column: span 9 / span 9; + grid-template-columns: repeat(9, minmax(0, 1fr)); +} +.grid-10col { + grid-column: span 10 / span 10; + grid-template-columns: repeat(10, minmax(0, 1fr)); +} +.grid-11col { + grid-column: span 11 / span 11; + grid-template-columns: repeat(11, minmax(0, 1fr)); +} +.grid-12col { + grid-column: span 12 / span 12; + grid-template-columns: repeat(12, minmax(0, 1fr)); +} +.flex-group-center, +.flex-group-left, +.flex-group-right { + justify-content: center; + align-items: center; + text-align: center; + padding: 5px; +} +.flex-group-left { + justify-content: flex-start; + text-align: left; +} +.flex-group-right { + justify-content: flex-end; + text-align: right; +} +.flex-center { + align-items: center; + justify-content: center; + text-align: center; +} +.table-create-actor { + font-size: 0.8rem; +} +.flex-between { + justify-content: space-between; +} +.flex-shrink { + flex: "flex-shrink"; +} diff --git a/styles/chat.css b/styles/chat.css new file mode 100644 index 0000000..dfd8768 --- /dev/null +++ b/styles/chat.css @@ -0,0 +1,466 @@ +.chat-message-header { + background: linear-gradient(135deg, rgba(226, 226, 222, 0.95) 0%, rgba(196, 186, 166, 0.9) 100%); + font-size: 0.9rem; + min-height: 26px; + text-align: center; + vertical-align: middle; + display: flex; + align-items: center; + justify-content: center; + border-bottom: 2px solid rgba(139, 115, 85, 0.6); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + padding: 0.1rem 0.3rem; + border-radius: 6px 6px 0 0; +} +.chat-message .message-header .flavor-text, +.chat-message .message-header .whisper-to { + font-size: 0.9rem; +} +.chat-result-text { + font-weight: bold; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + padding: 0 0 0.1rem 0; + line-height: 1.3; + border-bottom: 1px solid rgba(139, 115, 85, 0.4); + display: block; + margin-bottom: 0.2rem; + letter-spacing: 0.03em; +} +.chat-actor-name { + font-weight: bold; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + line-height: 1; + letter-spacing: 0.03em; + margin: 0; + padding: 0; +} +.chat-actor-name-opposition { + font-weight: bold; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + padding: 0.1rem 0.3rem; + letter-spacing: 0.03em; +} +.chat-result-success { + color: #2d5016; + background: linear-gradient(135deg, rgba(144, 238, 144, 0.3), rgba(107, 186, 107, 0.25)); + padding: 0.25rem 0.6rem; + border-radius: 4px; + border-left: 3px solid #4a7c2c; + display: inline-block; + margin: 0.15rem 0; + box-shadow: 0 1px 3px rgba(45, 80, 22, 0.2); + font-weight: bold; +} +.chat-result-failure { + color: #7a1a1a; + background: linear-gradient(135deg, rgba(255, 160, 160, 0.3), rgba(205, 120, 120, 0.25)); + padding: 0.25rem 0.6rem; + border-radius: 4px; + border-left: 3px solid #a82020; + display: inline-block; + margin: 0.15rem 0; + box-shadow: 0 1px 3px rgba(122, 26, 26, 0.2); + font-weight: bold; +} +.chat-img { + width: 64px; + height: 64px; +} +.chat-command-img { + border: 0px; + width: 32px; + height: 32px; + transition: transform 0.2s ease, box-shadow 0.2s ease; + border-radius: 4px; +} +.chat-command-img:hover { + transform: scale(1.1); + box-shadow: 0 3px 8px rgba(255, 102, 0, 0.4); +} +.chat-result-column { + min-width: 70%; + width: 70%; +} +.roll-dialog-header { + background: linear-gradient(135deg, rgba(226, 226, 222, 0.95) 0%, rgba(196, 186, 166, 0.9) 100%); + min-height: 48px; + padding: 0.4rem 0.6rem; + border-radius: 6px 6px 0 0; + border-bottom: 2px solid rgba(139, 115, 85, 0.6); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); + display: flex; + align-items: center; + justify-content: center; + gap: 0.5rem; +} +.roll-dialog-header .actor-icon { + width: 40px; + height: 40px; + border-radius: 50%; + border: 2px solid rgba(139, 115, 85, 0.5); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); +} +.roll-dialog-header .dialog-roll-title { + font-family: GreatPrimer; + font-size: 1.1rem; + margin: 0; + color: #3d3a2e; + text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.5); +} +.actor-icon { + width: 28px; + height: 28px; + padding: 1px; + border-radius: 50%; + border: 2px solid rgba(139, 115, 85, 0.5); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); + flex-shrink: 0; + margin-right: 0.4rem; +} +.padding-dice { + padding-top: 0.2rem; + padding-bottom: 0.2rem; +} +.dice-image { + box-sizing: border-box; + border: none; + border-radius: 0; + max-width: 100%; +} +.dice-image-reroll { + background-color: rgba(115, 224, 115, 0.25); + border-color: #011d33; + box-sizing: border-box; + border: 1px; + border-radius: 0%; + max-width: 100%; +} +.chat-dice { + width: 15%; + height: 15%; + font-size: 15px; + padding: 10px; + padding-bottom: 20px; + padding-top: 0.2rem; + padding-bottom: 0.2rem; +} +.div-center { + align-self: center; +} +.chat-message { + background: rgba(240, 235, 225, 0.95); + font-size: 0.9rem; + border-radius: 8px; + box-shadow: 0 3px 8px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(139, 115, 85, 0.3); +} +.chat-message.whisper { + background: rgba(220, 220, 210, 0.85); + border: 2px solid #545469; + box-shadow: 0 3px 10px rgba(84, 84, 105, 0.3); +} +.chat-message .chat-icon { + border: 0; + padding: 2px 6px 2px 2px; + float: left; + width: 64px; + height: 64px; +} +.ability-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 32px; + max-height: 32px; + width: auto; + height: auto; +} +.small-ability-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 16px; + max-height: 16px; + width: auto; + height: auto; +} +.combat-icon { + border: 0; + padding: 2px 2px 2px 2px; + max-width: 24px; + max-height: 24px; + width: auto; + height: auto; +} +#sidebar-tabs { + flex: 0 0 32px; + box-sizing: border-box; + margin: 0 0 5px; + border-bottom: 1px solid rgba(0, 0, 0, 0); + box-shadow: inset 0 0 2rem rgba(0, 0, 0, 0.5); +} +#sidebar-tabs > .item.active { + border: 1px solid #726248; + background: rgba(30, 25, 20, 0.75); + box-shadow: 0 0 6px inset #726248; +} +#controls .scene-control, +#controls .control-tool { + box-shadow: 0 0 3px #000; + margin: 0 0 8px; + border-radius: 0; + background: #1e1914; + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; +} +#controls .scene-control.active, +#controls .control-tool.active, +#controls .scene-control:hover, +#controls .control-tool:hover { + background: #482e1c; + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; + box-shadow: 0 0 3px #ff6400; +} +#hotbar #action-bar #macro-list { + border: 1px solid #482e1c; + box-shadow: 2px 2px 5px #000000; +} +#hotbar #action-bar .macro { + -o-border-image: url(img/ui/bg_control.jpg) 21 repeat; + border-image: url(img/ui/bg_control.jpg) 21 repeat; + border-image-slice: 6 6 6 6 fill; + border-image-width: 6px 6px 6px 6px; + border-image-outset: 0px 0px 0px 0px; + border-radius: 0px; +} +#hotbar .bar-controls { + background: #1e1914; + border: 1px solid #482e1c; +} +#players { + border-image-width: 4px; + border-image-outset: 0px; + background: #1e1914; +} +#navigation #scene-list .scene.nav-item { + background: #1e1914; + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; +} +#navigation #scene-list .scene.nav-item.active { + background: #482e1c; +} +#navigation #nav-toggle { + background: #1e1914; + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; +} +#navigation #scene-list .scene.view, +#navigation #scene-list .scene.context { + background: #482e1c; + background-origin: padding-box; + border-image-width: 4px; + border-image-outset: 0px; + box-shadow: 0 0 3px #ff6400; +} +.chat-card-button { + box-shadow: inset 0px 1px 0px 0px #a6827e; + background: linear-gradient(to bottom, rgba(33, 55, 74, 0.98824) 5%, rgba(21, 40, 51, 0.67059) 100%); + background-color: rgba(125, 93, 59, 0); + border-radius: 3px; + border: 2px ridge #846109; + display: inline-block; + cursor: pointer; + color: #ffffff; + font-size: 0.8rem; + padding: 4px 12px 0px 12px; + text-decoration: none; + text-shadow: 0px 1px 0px #4d3534; + position: relative; + margin: 2px; +} +.chat-card-button:hover { + background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); + background-color: red; +} +.chat-card-button:active { + position: relative; + top: 1px; +} +.plus-minus-button { + box-shadow: inset 0px 1px 0px 0px #a6827e; + background: linear-gradient(to bottom, rgba(33, 55, 74, 0.98824) 5%, rgba(21, 40, 51, 0.67059) 100%); + background-color: rgba(125, 93, 59, 0); + border-radius: 2px; + border: 1px ridge #846109; + display: inline-block; + cursor: pointer; + color: #ffffff; + margin: 2px 2px 2px 2px; + padding: 2px 2px 2px 2px; + text-decoration: none; + text-shadow: 0px 1px 0px #4d3534; + position: relative; + margin: 0px; +} +.plus-minus-button:hover, +.chat-card-button:hover { + background: linear-gradient(to bottom, #800000 5%, #3e0101 100%); + background-color: red; +} +.plus-minus-button:active, +.chat-card-button:active { + position: relative; + top: 1px; +} +.plus-minus { + font-size: 0.9rem; + font-weight: bold; +} +.ul-level1 { + padding-left: 2rem; +} +#pause { + font-size: 2rem; +} +#pause > h3 { + color: #ccc; +} +#pause > img { + content: url(../images/ui/logo_tedeum_pause.webp); + height: 200px; + width: 200px; + top: -200px; + left: calc(50% - 132px); +} +#logo { + content: url(../images/ui/logo_tedeum_pause.webp); + width: 100px; + height: 60px; +} +.dice-cell { + padding-left: 12px; + padding-right: 12px; + width: 60px; + text-align: center; +} +.dice-formula, +.dice-total { + height: 54px; + position: relative; +} +.chat-roll-details { + background: rgba(255, 255, 255, 0.4); + border-radius: 4px; + padding: 0.4rem 0.5rem; + margin: 0.25rem 0; + border: 1px solid rgba(139, 115, 85, 0.25); +} +.chat-roll-details ul { + margin: 0; + padding-left: 0.8rem; +} +.chat-roll-details ul li { + padding: 0.05rem 0; + line-height: 1.25; +} +.chat-roll-details ul li strong { + color: rgba(70, 67, 49, 0.9); +} +.chat-roll-result-section { + background: linear-gradient(135deg, rgba(255, 250, 240, 0.6), rgba(245, 240, 230, 0.5)); + border-radius: 4px; + padding: 0.35rem; + margin: 0.2rem 0; + border: 2px solid rgba(139, 115, 85, 0.3); + box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1); +} +.chat-roll-result-section .chat-total-result { + font-size: 1rem; + font-weight: bold; + color: #3d3a2e; + text-align: center; + padding: 0.25rem; + background: rgba(226, 226, 222, 0.5); + border-radius: 4px; + margin-bottom: 0.25rem; + text-shadow: 1px 1px 2px rgba(255, 255, 255, 0.5); +} +.chat-dice-formula { + display: inline-block; + background: rgba(139, 115, 85, 0.15); + padding: 0.15rem 0.4rem; + border-radius: 3px; + font-family: monospace; + font-size: 0.9em; + border: 1px solid rgba(139, 115, 85, 0.3); + color: #5a4a3a; + font-weight: 600; +} +.chat-difficulty-badge { + display: inline-block; + background: linear-gradient(135deg, rgba(180, 160, 130, 0.4), rgba(160, 140, 110, 0.35)); + padding: 0.15rem 0.5rem; + border-radius: 10px; + font-weight: bold; + border: 1px solid rgba(139, 115, 85, 0.4); + color: #4a3a2a; + font-size: 0.85em; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.15); +} +.chat-info-badge { + display: inline-block; + background: rgba(100, 149, 237, 0.15); + padding: 0.15rem 0.4rem; + border-radius: 3px; + border-left: 2px solid rgba(70, 130, 180, 0.6); + margin: 0.08rem 0; + font-size: 0.8em; + color: #2c4a6a; +} +.chat-warning-badge { + display: inline-block; + background: rgba(255, 200, 100, 0.2); + padding: 0.15rem 0.4rem; + border-radius: 3px; + border-left: 2px solid rgba(218, 165, 32, 0.7); + margin: 0.08rem 0; + font-size: 0.8em; + color: #7a5a1a; +} +.chat-actions-bar { + display: flex; + justify-content: center; + gap: 0.3rem; + padding: 0.4rem; + background: rgba(226, 226, 222, 0.4); + border-top: 1px solid rgba(139, 115, 85, 0.25); + border-radius: 0 0 6px 6px; + margin-top: 0.25rem; +} +.chat-actions-bar a { + transition: all 0.2s ease; +} +.chat-actions-bar a:hover { + transform: translateY(-2px); +} +.chat-negative-dice { + display: inline-block; + background: linear-gradient(135deg, rgba(255, 100, 100, 0.2), rgba(220, 80, 80, 0.15)); + padding: 0.2rem 0.5rem; + border-radius: 4px; + border: 2px solid rgba(178, 34, 34, 0.4); + font-weight: bold; + color: #8b0000; + margin: 0.15rem 0; + box-shadow: 0 1px 3px rgba(178, 34, 34, 0.2); +} diff --git a/styles/dialogs.css b/styles/dialogs.css new file mode 100644 index 0000000..dd2e839 --- /dev/null +++ b/styles/dialogs.css @@ -0,0 +1,191 @@ +.te-deum-roll-dialog .window-header { + border-radius: 10px 10px 0% 0%; +} +.te-deum-roll-dialog .window-content { + border-radius: 0% 0% 10px 10px; +} +.skill-roll-dialog { + background: linear-gradient(135deg, rgba(240, 235, 225, 0.98) 0%, rgba(250, 245, 235, 0.95) 100%); + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); + border: 1px solid rgba(139, 115, 85, 0.3); + overflow: hidden; +} +.skill-roll-dialog .flexcol { + padding: 0.6rem 0.8rem; + gap: 0.4rem; +} +.skill-roll-dialog .flexrow { + margin: 0.3rem 0; + padding: 0.4rem 0.5rem; + background: rgba(255, 255, 255, 0.4); + border-radius: 4px; + border-left: 3px solid rgba(139, 115, 85, 0.3); + align-items: center; + gap: 0.5rem; + transition: all 0.2s ease; +} +.skill-roll-dialog .flexrow:hover { + background: rgba(255, 255, 255, 0.6); + border-left-color: rgba(139, 115, 85, 0.6); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} +.skill-roll-dialog .roll-dialog-label { + font-family: GreatPrimer; + font-size: 0.85rem; + font-weight: 600; + color: #3d3a2e; + min-width: 140px; +} +.skill-roll-dialog .roll-dialog-label:first-child { + color: rgba(70, 67, 49, 0.9); + font-weight: 700; +} +.skill-roll-dialog input[type="checkbox"] { + width: 18px; + height: 18px; + cursor: pointer; +} +.skill-roll-dialog div { + margin-top: 4px; + margin-bottom: 4px; +} +.skill-roll-dialog .sheet-footer { + padding: 0.5rem 0.8rem; + gap: 0.5rem; + border-top: 1px solid rgba(139, 115, 85, 0.3); + margin-top: 0.5rem; +} +.skill-roll-dialog .sheet-footer button { + flex: 1; + padding: 0.4rem 0.8rem; + border-radius: 4px; + font-family: "GreatPrimer"; + font-size: 0.9rem; + cursor: pointer; + border: 1px solid rgba(139, 115, 85, 0.5); + background: linear-gradient(135deg, rgba(196, 186, 166, 0.8) 0%, rgba(226, 226, 222, 0.9) 100%); + color: rgba(50, 35, 15, 0.95); + transition: all 0.2s ease; +} +.skill-roll-dialog .sheet-footer button:hover { + background: linear-gradient(135deg, #c4baa6 0%, #d2cdc3 100%); + border-color: rgba(139, 115, 85, 0.8); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); +} +.confront-dice { + border-width: 0px; +} +.bonus-spec { + max-width: 48px; +} +.confront-bonus-container { + position: relative; + flex-grow: 1; + text-align: center; + color: black; +} +.pool-list { + align-items: center; + justify-content: center; +} +.corps-combat-block { + position: relative; + width: 600px; + height: 600px; +} +.silhouette-combat-picture { + width: 250px; + max-width: 250px; + border: 0; +} +.silhouette-combat-block { + position: absolute; + background: white; + border-color: darkgray; + border-style: ridge; + border: 1; + width: 180px; + min-height: 84px; + height: auto; + margin: 0 auto; + font-size: 0.8rem; + align-self: center; + overflow: visible; +} +.silhouette-combat-space { + width: 60px; + min-width: 60px; +} +.center-content { + display: flex; + justify-content: center; + align-items: center; +} +.chat-message .message { + font-family: "GreatPrimer"; + font-size: 0.9rem; +} +.fvtt-te-deum-character-creator { + /*background: rgba(226, 226, 222, 0.95);*/ + font-family: "GreatPrimer"; + font-size: 0.9rem; +} +.fvtt-te-deum-character-creator .field-title { + font-weight: bold; +} +.fvtt-te-deum-character-creator .form-group label { + color: rgba(30, 25, 15, 0.9); +} +.fvtt-te-deum-character-creator .status-section { + display: block; + max-width: 34rem; +} +.fvtt-te-deum-character-creator .creator-finished-section { + display: block; + max-width: 34rem; + text-align: center; + margin-bottom: 1rem; +} +.fvtt-te-deum-character-creator .stage-main-details { + text-align: center; + margin-top: 1rem; +} +.grace-texte { + margin-top: 1rem; +} +.chat-welcome { + text-align: center; +} +.item-name-label { + min-width: 12rem; +} +.compendium-sidebar .directory-item.compendium.locked .compendium-name { + background: rgba(0, 0, 0, 0.1); +} +.compendium-sidebar .directory-item.compendium .compendium-name { + background: rgba(0, 0, 0, 0.1); +} +.compendium-sidebar .directory-item.compendium:hover .compendium-name { + text-shadow: 0 0 8px var(--color-shadow-primary); + background: rgba(0, 0, 0, 0.9); +} +.compendium-sidebar .directory-item.compendium .compendium-footer .source { + display: inline-block; + font-size: var(--font-size-12); + padding: 1px 0.5rem 0 0.25rem; + border-radius: 0 3px 0 0; + background: rgba(0, 0, 0, 0.1); +} +.tedeum-create-character { + align-self: anchor-center; +} +.message-chat-center { + text-align: center; +} +.welcome-message-h3 { + font-size: 1.2rem; + text-align: center; + margin-bottom: 0.5rem; + color: darkred; +} diff --git a/styles/items.css b/styles/items.css new file mode 100644 index 0000000..91036e3 --- /dev/null +++ b/styles/items.css @@ -0,0 +1,324 @@ +.padd-right { + margin-right: 8px; +} +.padd-left { + margin-left: 8px; +} +.fortune-row { + flex-wrap: nowrap; + align-items: center; + gap: 0.4rem; + padding: 0.3rem 0.5rem; + margin-bottom: 0.5rem; +} +.fortune-row label { + flex: 0 0 auto; + min-width: unset; + font-weight: 600; + color: rgba(70, 67, 49, 0.9); +} +.fortune-row input { + flex: 0 0 auto; +} +.stack-left { + align-items: center; + flex-shrink: 1; + flex-grow: 0; +} +.packed-left { + white-space: nowrap; + flex-grow: 0; +} +.input-numeric-short { + width: 52px; + max-width: 52px; + flex-grow: 0; + flex-shrink: 0; + flex-basis: 52px; + margin-right: 0.15rem; + margin-left: 0.15rem; +} +.abilities-table { + align-content: flex-start; +} +.tokenhudext { + display: flex; + flex: 0 !important; + font-weight: 600; +} +.tokenhudext.left { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: 2.75rem; + right: 4rem; +} +.tokenhudext.right { + justify-content: flex-start; + flex-direction: column; + position: absolute; + top: 2.75rem; + left: 4rem; +} +.control-icon.tokenhudicon { + width: -moz-fit-content; + width: fit-content; + height: -moz-fit-content; + height: fit-content; + min-width: 6rem; + flex-basis: auto; + padding: 0; + line-height: 1rem; + margin: 0.25rem; +} +.control-icon.tokenhudicon.right { + margin-left: 8px; +} +#token-hud .status-effects.active { + z-index: 2; +} +.token-sheet .window-content .flexcol .sheet-tabs { + font-size: 0.8rem; +} +.item-checkbox { + height: 25px; + border: 1px solid rgba(115, 105, 83, 0.65098); + border-left: none; + font-weight: 500; + font-size: 1rem; + color: black; + padding-top: 5px; + margin-right: 0px; + width: 45px; + position: relative; + left: 0px; + text-align: center; +} +.skill-label { + font-size: 0.7rem; +} +.skill-good-checkbox { + max-height: 10px; + max-width: 10px; +} +.flex-actions-bar { + flex-grow: 2; +} +#sidebar { + font-size: 1rem; + background-color: #f5f5f5; + background-position: 0px 35px; + background-repeat: no-repeat; + background: rgba(226, 226, 222, 0.95); + color: rgba(19, 18, 18, 0.95); +} +#sidebar.collapsed { + height: 470px !important; +} +#sidebar #sidebar-tabs i { + display: inline-block; + background-position: center; + background-size: cover; + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); +} +#sidebar-tabs > .collapsed, +#chat-controls .chat-control-icon { + color: rgba(19, 18, 18, 0.95); + text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.75); +} +.sidebar-tab .directory-list .entity { + border-top: 1px rgba(0, 0, 0, 0.25); + border-bottom: 0 none; + padding: 0.25rem 0; +} +.sidebar-tab .directory-list .entity:hover { + background: rgba(0, 0, 0, 0.05); + cursor: pointer; +} +.status-small-label { + font-size: 0.65rem; +} +.no-grow { + flex-grow: 1; + max-width: 32px; +} +.status-col-name { + max-width: 72px; +} +.img-no-border { + max-width: 48px; + max-height: 48px; + border: 0px; +} +.items-title-bg { + margin-top: 6px; + color: rgba(19, 18, 18, 0.95); + background: linear-gradient(135deg, rgba(196, 186, 166, 0.6) 0%, rgba(226, 226, 222, 0.5) 100%); + border-radius: 4px; + padding: 0.3rem 0.5rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-left: 4px solid rgba(139, 115, 85, 0.6); +} +.items-title-bg h3 { + margin: 0; + padding: 0; + font-size: 1.15rem; + font-weight: 600; + color: rgba(19, 18, 18, 0.95); +} +.item-name-label-header-long2 { + flex-grow: 1; + max-width: 14rem; + min-width: 14rem; +} +.impact-box { + border-width: 2px; + border-color: #000000; + border-radius: 6px; + border: 2px ridge #443307; + margin: 4px; + padding: 4px; +} +.impact-title { + font-size: bold; + display: flex; + align-items: center; + justify-content: center; + margin-left: auto; + margin-right: auto; + text-align: center; +} +.items-title-text { + text-align: center; + font-family: MailartRubberstamp; + margin-left: 4px; +} +.lock-icon { + width: 16px; + height: 16px; +} +.item-sheet-img { + width: 64px; + height: 64px; + border: 2px solid rgba(139, 115, 85, 0.4); + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -o-object-fit: cover; + object-fit: cover; +} +.item-name-img { + flex-grow: 1; + max-width: 2rem; + min-width: 2rem; +} +.item-field { + margin-top: 4px; +} +.item-field-xp { + margin-top: 4px; + min-width: 8rem; + max-width: 8rem; +} +.item-field-label-short { + flex-grow: 1; + max-width: 4rem; + min-width: 4rem; +} +.item-field-label-medium { + flex-grow: 1; + max-width: 6rem; + min-width: 6rem; +} +.item-field-label-long, +.item-name-label-long { + font-weight: 600; + color: rgba(70, 67, 49, 0.9); + min-width: 160px; +} +.item-field-skill { + flex-grow: 1; + max-width: 6.8rem; + min-width: 6.8rem; +} +.item-field-label-long { + flex-grow: 1; + max-width: 10rem; + min-width: 10rem; +} +.item-field-title-long { + flex-grow: 1; + max-width: 12rem; + min-width: 12rem; +} +.item-field-label-long14 { + flex-grow: 1; + max-width: 14rem; + min-width: 14rem; + color: rgba(70, 67, 49, 0.9); + font-size: 1rem; + font-weight: 600; +} +.carac-box { + background: linear-gradient(135deg, rgba(226, 226, 222, 0.4) 0%, rgba(240, 235, 225, 0.3) 100%); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0.45rem; + padding: 0.3rem 0.5rem; + border: 1px solid rgba(139, 115, 85, 0.2); + transition: all 0.2s ease; +} +.carac-box:hover { + border-color: rgba(139, 115, 85, 0.4); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); +} +.comp-box { + max-width: 16rem; + min-width: 16rem; + width: 16rem; + min-height: 1.6rem; + background: linear-gradient(135deg, rgba(250, 245, 235, 0.5) 0%, rgba(255, 255, 255, 0.3) 100%); + padding: 0.25rem 0.4rem; + margin: 0.15rem; + border-radius: 3px; + border-left: 2px solid rgba(139, 115, 85, 0.3); + transition: all 0.2s ease; +} +.comp-box:hover { + background: rgba(226, 226, 222, 0.4); + border-left-color: rgba(139, 115, 85, 0.6); + transform: translateX(2px); +} +.item-control-end { + align-self: flex-end; +} +.alternate-list { + margin-top: 4px; + flex-wrap: nowrap; +} +.item-filler { + flex-grow: 6; + flex-shrink: 7; +} +.item-controls-fixed { + min-width: 2rem; + max-width: 2rem; +} +.item-controls-fixed-full { + min-width: 3rem; + max-width: 3rem; +} +.item-left-pad { + margin-left: 4px; +} +.attribute-label { + font-weight: bold; +} +.flexrow-no-expand { + flex-grow: 0; +} +.item-input-small { + max-width: 16px; + max-height: 12px; +} +.character-summary-rollable { + text-decoration: underline; +} diff --git a/styles/layout.css b/styles/layout.css new file mode 100644 index 0000000..efe39e5 --- /dev/null +++ b/styles/layout.css @@ -0,0 +1,195 @@ +.fvtt-te-deum.window-app.sheet .window-content, +.fvtt-te-deum.application.sheet .window-content { + overflow: hidden; + display: flex; + flex-direction: column; +} +.application.fvtt-te-deum.sheet .window-content > [data-application-part], +.application.fvtt-te-deum.sheet .window-content > [data-application-part] > section { + flex: 1 1 0; + min-height: 0; + display: flex; + flex-direction: column; + overflow: hidden; +} +.fvtt-te-deum { + display: flex; + flex-direction: column; + overflow: hidden; +} +.fvtt-te-deum .sheet-header { + flex: 0 0 auto; + overflow: hidden; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + margin-bottom: 10px; + background: linear-gradient(135deg, rgba(226, 226, 222, 0.95) 0%, rgba(240, 235, 225, 0.9) 100%); + padding: 0.3rem 0.8rem; + border-radius: 8px; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); + border: 1px solid rgba(139, 115, 85, 0.3); +} +.fvtt-te-deum .sheet-header .profile-img { + flex: 0 0 128px; + width: 128px; + height: auto; + max-height: 128px; + margin-top: 0px; + margin-right: 10px; + -o-object-fit: cover; + object-fit: cover; + -o-object-position: 50% 0; + object-position: 50% 0; + border-width: 0px; + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + border: 2px solid rgba(139, 115, 85, 0.4); +} +.fvtt-te-deum .sheet-header .header-fields { + flex: 1; +} +.fvtt-te-deum .sheet-header h1.charname { + height: 50px; + padding: 0px; + margin: 5px 0; + border-bottom: 0; +} +.fvtt-te-deum .sheet-header .header-identity-fields { + flex-wrap: nowrap; + align-items: center; + gap: 0.3rem; + margin-top: 0.2rem; +} +.fvtt-te-deum .sheet-header .header-identity-fields input, +.fvtt-te-deum .sheet-header .header-identity-fields select { + flex: 1 1 auto; + font-size: 0.75rem; + height: 1.6rem; +} +.fvtt-te-deum .sheet-header .header-identity-label { + flex: 0 0 auto; + font-size: 0.7rem; + font-weight: 600; + color: rgba(70, 67, 49, 0.9); + white-space: nowrap; +} +.fvtt-te-deum .sheet-tabs { + flex: 0; + font-family: "MailartRubberstamp"; + font-size: 2.2rem; +} +.fvtt-te-deum .tox .tox-editor-container { + background: #fff; +} +.fvtt-te-deum .tox .tox-edit-area { + padding: 0 8px; +} +.fvtt-te-deum .resource-label { + font-weight: bold; + text-transform: uppercase; +} +.fvtt-te-deum .tabs { + height: 40px; + border-top: 1px solid rgba(139, 115, 85, 0.4); + border-bottom: 1px solid rgba(139, 115, 85, 0.4); + background: linear-gradient(180deg, rgba(226, 226, 222, 0.5) 0%, rgba(240, 235, 225, 0.3) 100%); + color: #000000; + font-family: "GreatPrimer"; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} +.fvtt-te-deum .tabs .item { + line-height: 40px; + font-weight: bold; + padding: 0 1rem; + transition: all 0.2s ease; +} +.fvtt-te-deum .tabs .item:hover { + background: rgba(226, 226, 222, 0.6); + color: rgba(70, 67, 49, 0.9); +} +.fvtt-te-deum .tabs .item.active { + text-decoration: underline; + text-shadow: none; + background: rgba(196, 186, 166, 0.4); + border-bottom: 3px solid rgba(139, 115, 85, 0.8); +} +.fvtt-te-deum .items-list { + list-style: none; + margin: 1px 0; + padding: 0; + overflow-y: auto; +} +.fvtt-te-deum .items-list .item-header { + font-weight: bold; +} +.fvtt-te-deum .items-list .item { + height: 30px; + line-height: 24px; + padding: 1px 0; + border-bottom: 1px solid #bbb; +} +.fvtt-te-deum .items-list .item .item-image { + flex: 0 0 24px; + margin-right: 5px; +} +.fvtt-te-deum .items-list .item img { + display: block; +} +.fvtt-te-deum .items-list .item-name { + margin: 0; +} +.fvtt-te-deum .items-list .item-controls { + flex: 0 0 86px; + text-align: right; +} +.profile-img-container { + margin-right: 0.2rem; + max-width: 140px; + width: 140px; +} +.button-img { + vertical-align: baseline; + width: 8%; + height: 8%; + max-height: 48px; + border-width: 0px; + border: 1px solid rgba(0, 0, 0, 0); +} +.button-img:hover { + color: rgba(255, 255, 128, 0.7); + border: 1px solid rgba(255, 128, 0, 0.8); + cursor: pointer; +} +.button-effect-img { + vertical-align: baseline; + width: 16px; + max-height: 16px; + height: 16; + border-width: 0; +} +.small-button-container { + height: 16px; + width: 16px; + border: 0; + vertical-align: bottom; +} +.fvtt-te-deum .sheet-body { + flex: 1 1 0; + min-height: 0; + overflow: hidden; + font-size: 0.8rem; + font-family: "GreatPrimer"; +} +.fvtt-te-deum .sheet-body .tab { + height: 100%; + overflow-y: auto; + font-size: 0.8rem; + font-family: "GreatPrimer"; +} +.fvtt-te-deum .sheet-body .tab .editor { + height: 100%; + font-size: 0.8rem; + font-family: "GreatPrimer"; +} diff --git a/styles/tedeum.css b/styles/tedeum.css index a81d92a..0d02fc6 100644 --- a/styles/tedeum.css +++ b/styles/tedeum.css @@ -4,33 +4,39 @@ font-family: "GreatPrimer"; src: url("../fonts/IM_FELL_Great_Primer_Roman.woff") format("woff"); } -.window-app { +.fvtt-te-deum.window-app, +.fvtt-te-deum.application { text-align: justify; font-size: 16px; letter-spacing: 1px; } -.window-app.sheet .window-content { +.fvtt-te-deum.window-app.sheet .window-content, +.fvtt-te-deum.application.sheet .window-content { margin: 0; padding: 0; font-family: "GreatPrimer"; } -.window-app.sheet .window-content .sheet-header { +.fvtt-te-deum.window-app.sheet .window-content .sheet-header, +.fvtt-te-deum.application.sheet .window-content .sheet-header { color: rgba(19, 18, 18, 0.95); background: rgba(226, 226, 222, 0.95); } -.window-app.sheet .window-content .tooltip:hover .tooltiptext { +.fvtt-te-deum.window-app.sheet .window-content .tooltip:hover .tooltiptext, +.fvtt-te-deum.application.sheet .window-content .tooltip:hover .tooltiptext { top: 2rem; left: 2rem; margin: 0; padding: 0.25rem; } -.sheet header.sheet-header h1 input, +.fvtt-te-deum.sheet header.sheet-header h1 input, .window-app .window-header, +.application .window-header, #actors .directory-list, #navigation #scene-list .scene.nav-item { font-size: 1rem; } -.sheet nav.sheet-tabs { +.fvtt-te-deum.sheet nav.sheet-tabs, +.fvtt-te-deum.sheet nav.tabs { font-size: 0.8rem; font-size: 1.2rem; font-weight: bold; @@ -47,7 +53,7 @@ background-size: 100% 100%; z-index: 1; } -.sheet header.sheet-header .profile-img { +.fvtt-te-deum.sheet header.sheet-header .profile-img { -o-object-fit: cover; object-fit: cover; -o-object-position: 50% 0; @@ -55,25 +61,26 @@ margin: 0.5rem 0 0.5rem 0.5rem; padding: 0; } -.sheet header.sheet-header .flex-compteurs { +.fvtt-te-deum.sheet header.sheet-header .flex-compteurs { text-align: right; } -.sheet header.sheet-header .resource-content { +.fvtt-te-deum.sheet header.sheet-header .resource-content { width: 2rem; } -.sheet .tab[data-tab] { +.fvtt-te-deum.sheet .tab[data-tab] { padding: 0; } -.sheet li { +.fvtt-te-deum.sheet li { margin: 0.2rem; padding: 0.15rem; } -.window-app input, +.fvtt-te-deum.window-app input, +.fvtt-te-deum.application input, .fvtt-te-deum .item-form, -.sheet header.sheet-header .flex-group-center.flex-compteurs, -.sheet header.sheet-header .flex-group-center.flex-fatigue, -select, -button, +.fvtt-te-deum.sheet header.sheet-header .flex-group-center.flex-compteurs, +.fvtt-te-deum.sheet header.sheet-header .flex-group-center.flex-fatigue, +.fvtt-te-deum select, +.fvtt-te-deum button, .item-checkbox, #sidebar, #players, @@ -86,9 +93,9 @@ button, .strong-text { font-weight: bold; } -.tabs .item.active, -.blessures-list li ul li:first-child:hover, -a:hover { +.fvtt-te-deum .tabs .item.active, +.fvtt-te-deum .blessures-list li ul li:first-child:hover, +.fvtt-te-deum a:hover { text-shadow: 1px 0px 0px #ff6600; } .rollable:hover, @@ -97,24 +104,10 @@ a:hover { text-shadow: 0 0 10px red; cursor: pointer; } -input:hover { - border-width: 4px; - border-color: rgba(37, 124, 37, 0.7); -} -input:disabled { - color: #1c2058; -} -select { - background: white; - color: #494e6b; -} -select:disabled { - color: #1c2058; -} li.folder > .folder-header h3 { color: #aaa; } -table { +.fvtt-te-deum table { border: 1px solid #7a7971; } .grid, @@ -197,8 +190,27 @@ table { .flex-shrink { flex: "flex-shrink"; } +.fvtt-te-deum.window-app.sheet .window-content, +.fvtt-te-deum.application.sheet .window-content { + overflow: hidden; + display: flex; + flex-direction: column; +} +.application.fvtt-te-deum.sheet .window-content > [data-application-part], +.application.fvtt-te-deum.sheet .window-content > [data-application-part] > section { + flex: 1 1 0; + min-height: 0; + display: flex; + flex-direction: column; + overflow: hidden; +} +.fvtt-te-deum { + display: flex; + flex-direction: column; + overflow: hidden; +} .fvtt-te-deum .sheet-header { - flex: 0 0 210px; + flex: 0 0 auto; overflow: hidden; display: flex; flex-direction: row; @@ -206,7 +218,7 @@ table { justify-content: flex-start; margin-bottom: 10px; background: linear-gradient(135deg, rgba(226, 226, 222, 0.95) 0%, rgba(240, 235, 225, 0.9) 100%); - padding: 0.8rem; + padding: 0.3rem 0.8rem; border-radius: 8px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15); border: 1px solid rgba(139, 115, 85, 0.3); @@ -236,12 +248,24 @@ table { margin: 5px 0; border-bottom: 0; } -.fvtt-te-deum .sheet-header h1.charname input { - font-family: "MailartRubberstamp"; - font-size: 3rem; - width: 100%; - height: 100%; - margin: 0; +.fvtt-te-deum .sheet-header .header-identity-fields { + flex-wrap: nowrap; + align-items: center; + gap: 0.3rem; + margin-top: 0.2rem; +} +.fvtt-te-deum .sheet-header .header-identity-fields input, +.fvtt-te-deum .sheet-header .header-identity-fields select { + flex: 1 1 auto; + font-size: 0.75rem; + height: 1.6rem; +} +.fvtt-te-deum .sheet-header .header-identity-label { + flex: 0 0 auto; + font-size: 0.7rem; + font-weight: 600; + color: rgba(70, 67, 49, 0.9); + white-space: nowrap; } .fvtt-te-deum .sheet-tabs { flex: 0; @@ -343,8 +367,19 @@ table { border: 0; vertical-align: bottom; } -.fvtt-te-deum .sheet-body, -.fvtt-te-deum .sheet-body .tab, +.fvtt-te-deum .sheet-body { + flex: 1 1 0; + min-height: 0; + overflow: hidden; + font-size: 0.8rem; + font-family: "GreatPrimer"; +} +.fvtt-te-deum .sheet-body .tab { + height: 100%; + overflow-y: auto; + font-size: 0.8rem; + font-family: "GreatPrimer"; +} .fvtt-te-deum .sheet-body .tab .editor { height: 100%; font-size: 0.8rem; @@ -358,13 +393,33 @@ table { .medium-editor { border: 2; height: 240px; + max-height: 240px; + overflow-y: auto; + overflow-x: hidden; padding: 0 3px; } +.medium-editor prose-mirror, +.medium-editor .editor, +.medium-editor .editor-content, +.medium-editor .ProseMirror { + overflow: hidden; + height: auto; +} .small-editor { border: 2; height: 120px; + max-height: 120px; + overflow-y: auto; + overflow-x: hidden; padding: 0 3px; } +.small-editor prose-mirror, +.small-editor .editor, +.small-editor .editor-content, +.small-editor .ProseMirror { + overflow: hidden; + height: auto; +} .questionnaire-reponse { max-width: 42rem; margin-left: 1rem; @@ -372,39 +427,52 @@ table { .questionnaire-element { margin-top: 0.5rem; } -input[type="text"], -select[type="text"] { - background: white; - color: #494e6b; -} -.window-app.sheet .window-content .sheet-header select[type="text"], -.window-app.sheet .window-content .sheet-header input[type="text"], -.window-app.sheet .window-content .sheet-header input[type="number"], -.window-app.sheet .window-content .sheet-body input[type="text"], -.window-app.sheet .window-content .sheet-body input[type="number"], -.window-app.sheet .window-content .sheet-body select[type="text"], -textarea { +.fvtt-te-deum input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]), +.fvtt-te-deum select { + background: rgba(248, 245, 238, 0.95); color: rgba(19, 18, 18, 0.95); + border: 1px solid rgba(139, 115, 85, 0.35); + border-radius: 3px; + padding: 0.15rem 0.3rem; + transition: border-color 0.2s ease, box-shadow 0.2s ease; } -.window-app.sheet .window-content .sheet-header input[type="password"], -.window-app.sheet .window-content .sheet-header input[type="date"], -.window-app.sheet .window-content .sheet-header input[type="time"] { +.fvtt-te-deum input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]):hover, +.fvtt-te-deum select:hover { + border-color: rgba(139, 115, 85, 0.65); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); +} +.fvtt-te-deum input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]):focus, +.fvtt-te-deum select:focus { + outline: none; + border-color: rgba(139, 115, 85, 0.85); + box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); +} +.fvtt-te-deum input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="submit"]):not([type="image"]):not([type="file"]):disabled, +.fvtt-te-deum select:disabled { + color: rgba(19, 18, 18, 0.4); + background: rgba(220, 216, 205, 0.6); + border-color: rgba(139, 115, 85, 0.15); +} +.fvtt-te-deum textarea { + background: rgba(248, 245, 238, 0.95); color: rgba(19, 18, 18, 0.95); - background: rgba(226, 226, 222, 0.95); - border: 1 none; - margin-bottom: 0.25rem; - margin-left: 2px; + border: 1px solid rgba(139, 115, 85, 0.35); + border-radius: 3px; + padding: 0.2rem 0.4rem; + transition: border-color 0.2s ease, box-shadow 0.2s ease; } -.window-app.sheet .window-content .sheet-body select, -.window-app.sheet .window-content .sheet-header select { - color: rgba(19, 18, 18, 0.95); - background: #fff; - border: 1 none; - margin-bottom: 0.25rem; - margin-left: 2px; +.fvtt-te-deum textarea:hover { + border-color: rgba(139, 115, 85, 0.65); } -.window-app .window-content, -.window-app.sheet .window-content .sheet-body { +.fvtt-te-deum textarea:focus { + outline: none; + border-color: rgba(139, 115, 85, 0.85); + box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); +} +.fvtt-te-deum.window-app .window-content, +.fvtt-te-deum.application .window-content, +.fvtt-te-deum.window-app.sheet .window-content .sheet-body, +.fvtt-te-deum.application.sheet .window-content .sheet-body { font-size: 0.8rem; background: rgba(226, 226, 222, 0.95); color: rgba(19, 18, 18, 0.95); @@ -417,16 +485,6 @@ textarea { border: 1px solid rgba(139, 115, 85, 0.3); margin-bottom: 0.5rem; } -.item-form .sheet-header h1.charname input { - background: transparent; - border: none; - border-bottom: 2px solid rgba(139, 115, 85, 0.3); - transition: border-color 0.2s ease; -} -.item-form .sheet-header h1.charname input:focus { - border-bottom-color: rgba(139, 115, 85, 0.7); - outline: none; -} .item-form .sheet-body ul { list-style: none; padding: 0; @@ -456,48 +514,56 @@ textarea { font-size: 1.1rem; color: #3d3a2e; } -.item-form .sheet-body input[type="text"], -.item-form .sheet-body input[type="number"], -.item-form .sheet-body select { - background: rgba(255, 255, 255, 0.9); - border: 1px solid rgba(139, 115, 85, 0.3); - border-radius: 3px; - padding: 0.25rem 0.4rem; - transition: all 0.2s ease; -} -.item-form .sheet-body input[type="text"]:hover, -.item-form .sheet-body input[type="number"]:hover, -.item-form .sheet-body select:hover { - border-color: rgba(139, 115, 85, 0.5); -} -.item-form .sheet-body input[type="text"]:focus, -.item-form .sheet-body input[type="number"]:focus, -.item-form .sheet-body select:focus { - outline: none; - border-color: rgba(139, 115, 85, 0.8); - box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); -} .item-form .sheet-body input[type="checkbox"] { width: 18px; height: 18px; cursor: pointer; } -section.sheet-body { +.fvtt-te-deum.application .window-content .sheet-header h1.charname input[name="name"], +.fvtt-te-deum.window-app .window-content .sheet-header h1.charname input[name="name"] { + font-family: "GreatPrimer"; + font-size: 3rem; + background: transparent; + border: none; + border-bottom: 2px solid rgba(139, 115, 85, 0.4); + color: rgba(50, 35, 15, 0.95); + width: 100%; + height: 100%; + margin: 0; + letter-spacing: 0.05em; + transition: border-color 0.2s ease; +} +.fvtt-te-deum.application .window-content .sheet-header h1.charname input[name="name"]:hover, +.fvtt-te-deum.window-app .window-content .sheet-header h1.charname input[name="name"]:hover { + border-width: 2px; + border-color: rgba(139, 115, 85, 0.7); +} +.fvtt-te-deum.application .window-content .sheet-header h1.charname input[name="name"]:focus, +.fvtt-te-deum.window-app .window-content .sheet-header h1.charname input[name="name"]:focus { + border-bottom-color: rgba(139, 115, 85, 0.9); + outline: none; +} +.fvtt-te-deum.application .window-content .item-form .sheet-header h1.charname input[name="name"], +.fvtt-te-deum.window-app .window-content .item-form .sheet-header h1.charname input[name="name"] { + font-size: 1.6rem; + height: auto; +} +.fvtt-te-deum .sheet-body { padding: 0.25rem 0.5rem; } -section.sheet-body:after { +.fvtt-te-deum .sheet-body:after { content: ""; display: block; clear: both; } -nav.sheet-tabs .item { +.fvtt-te-deum nav.tabs .item { z-index: 2; position: relative; opacity: 1; color: rgba(29, 28, 31); padding: 0 0.25rem; } -nav.sheet-tabs .item:after { +.fvtt-te-deum nav.tabs .item:after { content: ""; position: absolute; top: 0; @@ -510,25 +576,36 @@ nav.sheet-tabs .item:after { text-align: left; width: 50px; } -.window-app.sheet .window-content .carac-value, -.window-app.sheet .window-content .competence-xp { +.fvtt-te-deum.window-app.sheet .window-content .carac-value, +.fvtt-te-deum.application.sheet .window-content .carac-value, +.fvtt-te-deum.window-app.sheet .window-content .competence-xp, +.fvtt-te-deum.application.sheet .window-content .competence-xp { margin: 0.05rem; flex-basis: 3rem; text-align: center; } -h1, -h2, -h3, -h4 { +.fvtt-te-deum h1, +.fvtt-te-deum h2, +.fvtt-te-deum h3, +.fvtt-te-deum h4 { + font-weight: bold; + color: rgba(19, 18, 18, 0.95); +} +.fvtt-te-deum .malus-sante { + font-size: 0.88rem; + font-weight: normal; +} +.fvtt-te-deum .malus-sante-active { + color: rgba(200, 80, 10, 0.95); font-weight: bold; } -ul, -ol { +.fvtt-te-deum ul, +.fvtt-te-deum ol { margin: 0; padding: 0; } -ul, -li { +.fvtt-te-deum ul, +.fvtt-te-deum li { list-style-type: none; } .header-fields li { @@ -685,6 +762,22 @@ li { .padd-left { margin-left: 8px; } +.fortune-row { + flex-wrap: nowrap; + align-items: center; + gap: 0.4rem; + padding: 0.3rem 0.5rem; + margin-bottom: 0.5rem; +} +.fortune-row label { + flex: 0 0 auto; + min-width: unset; + font-weight: 600; + color: rgba(70, 67, 49, 0.9); +} +.fortune-row input { + flex: 0 0 auto; +} .stack-left { align-items: center; flex-shrink: 1; @@ -695,11 +788,11 @@ li { flex-grow: 0; } .input-numeric-short { - width: 40px; - max-width: 40px; + width: 52px; + max-width: 52px; flex-grow: 0; flex-shrink: 0; - flex-basis: 40px; + flex-basis: 52px; margin-right: 0.15rem; margin-left: 0.15rem; } @@ -800,6 +893,193 @@ li { background: rgba(0, 0, 0, 0.05); cursor: pointer; } +.status-small-label { + font-size: 0.65rem; +} +.no-grow { + flex-grow: 1; + max-width: 32px; +} +.status-col-name { + max-width: 72px; +} +.img-no-border { + max-width: 48px; + max-height: 48px; + border: 0px; +} +.items-title-bg { + margin-top: 6px; + color: rgba(19, 18, 18, 0.95); + background: linear-gradient(135deg, rgba(196, 186, 166, 0.6) 0%, rgba(226, 226, 222, 0.5) 100%); + border-radius: 4px; + padding: 0.3rem 0.5rem; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-left: 4px solid rgba(139, 115, 85, 0.6); +} +.items-title-bg h3 { + margin: 0; + padding: 0; + font-size: 1.15rem; + font-weight: 600; + color: rgba(19, 18, 18, 0.95); +} +.item-name-label-header-long2 { + flex-grow: 1; + max-width: 14rem; + min-width: 14rem; +} +.impact-box { + border-width: 2px; + border-color: #000000; + border-radius: 6px; + border: 2px ridge #443307; + margin: 4px; + padding: 4px; +} +.impact-title { + font-size: bold; + display: flex; + align-items: center; + justify-content: center; + margin-left: auto; + margin-right: auto; + text-align: center; +} +.items-title-text { + text-align: center; + font-family: MailartRubberstamp; + margin-left: 4px; +} +.lock-icon { + width: 16px; + height: 16px; +} +.item-sheet-img { + width: 64px; + height: 64px; + border: 2px solid rgba(139, 115, 85, 0.4); + border-radius: 8px; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); + -o-object-fit: cover; + object-fit: cover; +} +.item-name-img { + flex-grow: 1; + max-width: 2rem; + min-width: 2rem; +} +.item-field { + margin-top: 4px; +} +.item-field-xp { + margin-top: 4px; + min-width: 8rem; + max-width: 8rem; +} +.item-field-label-short { + flex-grow: 1; + max-width: 4rem; + min-width: 4rem; +} +.item-field-label-medium { + flex-grow: 1; + max-width: 6rem; + min-width: 6rem; +} +.item-field-label-long, +.item-name-label-long { + font-weight: 600; + color: rgba(70, 67, 49, 0.9); + min-width: 160px; +} +.item-field-skill { + flex-grow: 1; + max-width: 6.8rem; + min-width: 6.8rem; +} +.item-field-label-long { + flex-grow: 1; + max-width: 10rem; + min-width: 10rem; +} +.item-field-title-long { + flex-grow: 1; + max-width: 12rem; + min-width: 12rem; +} +.item-field-label-long14 { + flex-grow: 1; + max-width: 14rem; + min-width: 14rem; + color: rgba(70, 67, 49, 0.9); + font-size: 1rem; + font-weight: 600; +} +.carac-box { + background: linear-gradient(135deg, rgba(226, 226, 222, 0.4) 0%, rgba(240, 235, 225, 0.3) 100%); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0.45rem; + padding: 0.3rem 0.5rem; + border: 1px solid rgba(139, 115, 85, 0.2); + transition: all 0.2s ease; +} +.carac-box:hover { + border-color: rgba(139, 115, 85, 0.4); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); +} +.comp-box { + max-width: 16rem; + min-width: 16rem; + width: 16rem; + min-height: 1.6rem; + background: linear-gradient(135deg, rgba(250, 245, 235, 0.5) 0%, rgba(255, 255, 255, 0.3) 100%); + padding: 0.25rem 0.4rem; + margin: 0.15rem; + border-radius: 3px; + border-left: 2px solid rgba(139, 115, 85, 0.3); + transition: all 0.2s ease; +} +.comp-box:hover { + background: rgba(226, 226, 222, 0.4); + border-left-color: rgba(139, 115, 85, 0.6); + transform: translateX(2px); +} +.item-control-end { + align-self: flex-end; +} +.alternate-list { + margin-top: 4px; + flex-wrap: nowrap; +} +.item-filler { + flex-grow: 6; + flex-shrink: 7; +} +.item-controls-fixed { + min-width: 2rem; + max-width: 2rem; +} +.item-controls-fixed-full { + min-width: 3rem; + max-width: 3rem; +} +.item-left-pad { + margin-left: 4px; +} +.attribute-label { + font-weight: bold; +} +.flexrow-no-expand { + flex-grow: 0; +} +.item-input-small { + max-width: 16px; + max-height: 12px; +} +.character-summary-rollable { + text-decoration: underline; +} .chat-message-header { background: linear-gradient(135deg, rgba(226, 226, 222, 0.95) 0%, rgba(196, 186, 166, 0.9) 100%); font-size: 0.9rem; @@ -818,19 +1098,35 @@ li { .chat-message .message-header .whisper-to { font-size: 0.9rem; } -.chat-result-text, +.chat-result-text { + font-weight: bold; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + padding: 0 0 0.1rem 0; + line-height: 1.3; + border-bottom: 1px solid rgba(139, 115, 85, 0.4); + display: block; + margin-bottom: 0.2rem; + letter-spacing: 0.03em; +} .chat-actor-name { font-weight: bold; - font-family: MailartRubberstamp; - font-size: 0.9rem; - padding: 0px; - line-height: 1.2; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + line-height: 1; + letter-spacing: 0.03em; + margin: 0; + padding: 0; } .chat-actor-name-opposition { font-weight: bold; - font-family: MailartRubberstamp; - font-size: 0.9rem; - padding: 4px; + font-family: GreatPrimer; + font-size: 1.1rem; + color: rgba(80, 50, 15, 0.95); + padding: 0.1rem 0.3rem; + letter-spacing: 0.03em; } .chat-result-success { color: #2d5016; @@ -893,21 +1189,21 @@ li { box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); } .roll-dialog-header .dialog-roll-title { - font-family: MailartRubberstamp; + font-family: GreatPrimer; font-size: 1.1rem; margin: 0; color: #3d3a2e; text-shadow: 1px 1px 1px rgba(255, 255, 255, 0.5); } .actor-icon { - float: left; width: 28px; height: 28px; padding: 1px; border-radius: 50%; border: 2px solid rgba(139, 115, 85, 0.5); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); - margin-right: 0.3rem; + flex-shrink: 0; + margin-right: 0.4rem; } .padding-dice { padding-top: 0.2rem; @@ -1144,365 +1440,6 @@ li { height: 54px; position: relative; } -.status-small-label { - font-size: 0.65rem; -} -.no-grow { - flex-grow: 1; - max-width: 32px; -} -.status-col-name { - max-width: 72px; -} -.img-no-border { - max-width: 48px; - max-height: 48px; - border: 0px; -} -.items-title-bg { - margin-top: 6px; - color: rgba(19, 18, 18, 0.95); - background: linear-gradient(135deg, rgba(196, 186, 166, 0.6) 0%, rgba(226, 226, 222, 0.5) 100%); - border-radius: 4px; - padding: 0.3rem 0.5rem; - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - border-left: 4px solid rgba(139, 115, 85, 0.6); -} -.items-title-bg h3 { - margin: 0; - padding: 0; -} -.impact-box { - border-width: 2px; - border-color: #000000; - border-radius: 6px; - border: 2px ridge #443307; - margin: 4px; - padding: 4px; -} -.impact-title { - font-size: bold; - display: flex; - align-items: center; - justify-content: center; - margin-left: auto; - margin-right: auto; - text-align: center; -} -.items-title-text { - text-align: center; - font-family: MailartRubberstamp; - margin-left: 4px; -} -.lock-icon { - width: 16px; - height: 16px; -} -.item-sheet-img { - width: 64px; - height: 64px; - border: 2px solid rgba(139, 115, 85, 0.4); - border-radius: 8px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); - -o-object-fit: cover; - object-fit: cover; -} -.item-name-img { - flex-grow: 1; - max-width: 2rem; - min-width: 2rem; -} -.item-field { - margin-top: 4px; -} -.item-field-xp { - margin-top: 4px; - min-width: 8rem; - max-width: 8rem; -} -.item-field-label-short { - flex-grow: 1; - max-width: 4rem; - min-width: 4rem; -} -.item-field-label-medium { - flex-grow: 1; - max-width: 6rem; - min-width: 6rem; -} -.item-field-label-long, -.item-name-label-long { - font-weight: 600; - color: rgba(70, 67, 49, 0.9); - min-width: 160px; -} -.item-field-skill { - flex-grow: 1; - max-width: 6.8rem; - min-width: 6.8rem; -} -.item-field-label-long { - flex-grow: 1; - max-width: 10rem; - min-width: 10rem; -} -.item-field-title-long { - flex-grow: 1; - max-width: 12rem; - min-width: 12rem; -} -.item-field-label-long14 { - flex-grow: 1; - max-width: 14rem; - min-width: 14rem; -} -.carac-box { - background: linear-gradient(135deg, rgba(226, 226, 222, 0.4) 0%, rgba(240, 235, 225, 0.3) 100%); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); - border-radius: 0.45rem; - padding: 0.3rem 0.5rem; - border: 1px solid rgba(139, 115, 85, 0.2); - transition: all 0.2s ease; -} -.carac-box:hover { - border-color: rgba(139, 115, 85, 0.4); - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); -} -.comp-box { - max-width: 16rem; - min-width: 16rem; - width: 16rem; - min-height: 1.6rem; - background: linear-gradient(135deg, rgba(250, 245, 235, 0.5) 0%, rgba(255, 255, 255, 0.3) 100%); - padding: 0.25rem 0.4rem; - margin: 0.15rem; - border-radius: 3px; - border-left: 2px solid rgba(139, 115, 85, 0.3); - transition: all 0.2s ease; -} -.comp-box:hover { - background: rgba(226, 226, 222, 0.4); - border-left-color: rgba(139, 115, 85, 0.6); - transform: translateX(2px); -} -.item-control-end { - align-self: flex-end; -} -.alternate-list { - margin-top: 4px; - flex-wrap: nowrap; -} -.item-filler { - flex-grow: 6; - flex-shrink: 7; -} -.item-controls-fixed { - min-width: 2rem; - max-width: 2rem; -} -.item-controls-fixed-full { - min-width: 3rem; - max-width: 3rem; -} -.item-left-pad { - margin-left: 4px; -} -.attribute-label { - font-weight: bold; -} -.flexrow-no-expand { - flex-grow: 0; -} -.item-input-small { - max-width: 16px; - max-height: 12px; -} -.character-summary-rollable { - text-decoration: underline; -} -.te-deum-roll-dialog .window-header { - border-radius: 10px 10px 0% 0%; -} -.te-deum-roll-dialog .window-content { - border-radius: 0% 0% 10px 10px; -} -.skill-roll-dialog { - background: linear-gradient(135deg, rgba(240, 235, 225, 0.98) 0%, rgba(250, 245, 235, 0.95) 100%); - border-radius: 8px; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); - border: 1px solid rgba(139, 115, 85, 0.3); - overflow: hidden; -} -.skill-roll-dialog .flexcol { - padding: 0.6rem 0.8rem; - gap: 0.4rem; -} -.skill-roll-dialog .flexrow { - margin: 0.3rem 0; - padding: 0.4rem 0.5rem; - background: rgba(255, 255, 255, 0.4); - border-radius: 4px; - border-left: 3px solid rgba(139, 115, 85, 0.3); - align-items: center; - gap: 0.5rem; - transition: all 0.2s ease; -} -.skill-roll-dialog .flexrow:hover { - background: rgba(255, 255, 255, 0.6); - border-left-color: rgba(139, 115, 85, 0.6); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} -.skill-roll-dialog .roll-dialog-label { - font-family: GreatPrimer; - font-size: 0.85rem; - font-weight: 600; - color: #3d3a2e; - min-width: 140px; -} -.skill-roll-dialog .roll-dialog-label:first-child { - color: rgba(70, 67, 49, 0.9); - font-weight: 700; -} -.skill-roll-dialog select, -.skill-roll-dialog input[type="checkbox"] { - background: rgba(255, 255, 255, 0.9); - border: 1px solid rgba(139, 115, 85, 0.4); - border-radius: 3px; - padding: 0.2rem 0.4rem; - color: #3d3a2e; - transition: all 0.2s ease; -} -.skill-roll-dialog select:hover, -.skill-roll-dialog input[type="checkbox"]:hover { - border-color: rgba(139, 115, 85, 0.7); - box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -} -.skill-roll-dialog select:focus, -.skill-roll-dialog input[type="checkbox"]:focus { - outline: none; - border-color: rgba(139, 115, 85, 0.9); - box-shadow: 0 0 0 2px rgba(139, 115, 85, 0.2); -} -.skill-roll-dialog input[type="checkbox"] { - width: 18px; - height: 18px; - cursor: pointer; -} -.skill-roll-dialog div { - margin-top: 4px; - margin-bottom: 4px; -} -.confront-dice { - border-width: 0px; -} -.bonus-spec { - max-width: 48px; -} -.confront-bonus-container { - position: relative; - flex-grow: 1; - text-align: center; - color: black; -} -.pool-list { - align-items: center; - justify-content: center; -} -.corps-combat-block { - position: relative; - width: 600px; - height: 600px; -} -.silhouette-combat-picture { - width: 250px; - max-width: 250px; - border: 0; -} -.silhouette-combat-block { - position: absolute; - background: white; - border-color: darkgray; - border-style: ridge; - border: 1; - width: 180px; - height: 84px; - margin: 0 auto; - font-size: 0.8rem; - align-self: center; -} -.silhouette-combat-space { - width: 60px; - min-width: 60px; -} -.center-content { - display: flex; - justify-content: center; - align-items: center; -} -.chat-message .message { - font-family: "GreatPrimer"; - font-size: 0.9rem; -} -.fvtt-te-deum-character-creator { - /*background: rgba(226, 226, 222, 0.95);*/ - font-family: "GreatPrimer"; - font-size: 0.9rem; -} -.fvtt-te-deum-character-creator .field-title { - font-weight: bold; -} -.fvtt-te-deum-character-creator .status-section { - display: block; - max-width: 34rem; -} -.fvtt-te-deum-character-creator .creator-finished-section { - display: block; - max-width: 34rem; - text-align: center; - margin-bottom: 1rem; -} -.fvtt-te-deum-character-creator .stage-main-details { - text-align: center; - margin-top: 1rem; -} -.grace-texte { - margin-top: 1rem; -} -.chat-welcome { - text-align: center; -} -.item-name-label { - min-width: 12rem; -} -.compendium-sidebar .directory-item.compendium.locked .compendium-name { - background: rgba(0, 0, 0, 0.1); -} -.compendium-sidebar .directory-item.compendium .compendium-name { - background: rgba(0, 0, 0, 0.1); -} -.compendium-sidebar .directory-item.compendium:hover .compendium-name { - text-shadow: 0 0 8px var(--color-shadow-primary); - background: rgba(0, 0, 0, 0.9); -} -.compendium-sidebar .directory-item.compendium .compendium-footer .source { - display: inline-block; - font-size: var(--font-size-12); - padding: 1px 0.5rem 0 0.25rem; - border-radius: 0 3px 0 0; - background: rgba(0, 0, 0, 0.1); -} -.tedeum-create-character { - align-self: anchor-center; -} -.message-chat-center { - text-align: center; -} -.welcome-message-h3 { - font-size: 1.2rem; - text-align: center; - margin-bottom: 0.5rem; - color: darkred; -} .chat-roll-details { background: rgba(255, 255, 255, 0.4); border-radius: 4px; @@ -1609,3 +1546,194 @@ li { margin: 0.15rem 0; box-shadow: 0 1px 3px rgba(178, 34, 34, 0.2); } +.te-deum-roll-dialog .window-header { + border-radius: 10px 10px 0% 0%; +} +.te-deum-roll-dialog .window-content { + border-radius: 0% 0% 10px 10px; +} +.skill-roll-dialog { + background: linear-gradient(135deg, rgba(240, 235, 225, 0.98) 0%, rgba(250, 245, 235, 0.95) 100%); + border-radius: 8px; + box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2); + border: 1px solid rgba(139, 115, 85, 0.3); + overflow: hidden; +} +.skill-roll-dialog .flexcol { + padding: 0.6rem 0.8rem; + gap: 0.4rem; +} +.skill-roll-dialog .flexrow { + margin: 0.3rem 0; + padding: 0.4rem 0.5rem; + background: rgba(255, 255, 255, 0.4); + border-radius: 4px; + border-left: 3px solid rgba(139, 115, 85, 0.3); + align-items: center; + gap: 0.5rem; + transition: all 0.2s ease; +} +.skill-roll-dialog .flexrow:hover { + background: rgba(255, 255, 255, 0.6); + border-left-color: rgba(139, 115, 85, 0.6); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} +.skill-roll-dialog .roll-dialog-label { + font-family: GreatPrimer; + font-size: 0.85rem; + font-weight: 600; + color: #3d3a2e; + min-width: 140px; +} +.skill-roll-dialog .roll-dialog-label:first-child { + color: rgba(70, 67, 49, 0.9); + font-weight: 700; +} +.skill-roll-dialog input[type="checkbox"] { + width: 18px; + height: 18px; + cursor: pointer; +} +.skill-roll-dialog div { + margin-top: 4px; + margin-bottom: 4px; +} +.skill-roll-dialog .sheet-footer { + padding: 0.5rem 0.8rem; + gap: 0.5rem; + border-top: 1px solid rgba(139, 115, 85, 0.3); + margin-top: 0.5rem; +} +.skill-roll-dialog .sheet-footer button { + flex: 1; + padding: 0.4rem 0.8rem; + border-radius: 4px; + font-family: "GreatPrimer"; + font-size: 0.9rem; + cursor: pointer; + border: 1px solid rgba(139, 115, 85, 0.5); + background: linear-gradient(135deg, rgba(196, 186, 166, 0.8) 0%, rgba(226, 226, 222, 0.9) 100%); + color: rgba(50, 35, 15, 0.95); + transition: all 0.2s ease; +} +.skill-roll-dialog .sheet-footer button:hover { + background: linear-gradient(135deg, #c4baa6 0%, #d2cdc3 100%); + border-color: rgba(139, 115, 85, 0.8); + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.15); +} +.confront-dice { + border-width: 0px; +} +.bonus-spec { + max-width: 48px; +} +.confront-bonus-container { + position: relative; + flex-grow: 1; + text-align: center; + color: black; +} +.pool-list { + align-items: center; + justify-content: center; +} +.corps-combat-block { + position: relative; + width: 600px; + height: 600px; +} +.silhouette-combat-picture { + width: 250px; + max-width: 250px; + border: 0; +} +.silhouette-combat-block { + position: absolute; + background: white; + border-color: darkgray; + border-style: ridge; + border: 1; + width: 180px; + min-height: 84px; + height: auto; + margin: 0 auto; + font-size: 0.8rem; + align-self: center; + overflow: visible; +} +.silhouette-combat-space { + width: 60px; + min-width: 60px; +} +.center-content { + display: flex; + justify-content: center; + align-items: center; +} +.chat-message .message { + font-family: "GreatPrimer"; + font-size: 0.9rem; +} +.fvtt-te-deum-character-creator { + /*background: rgba(226, 226, 222, 0.95);*/ + font-family: "GreatPrimer"; + font-size: 0.9rem; +} +.fvtt-te-deum-character-creator .field-title { + font-weight: bold; +} +.fvtt-te-deum-character-creator .form-group label { + color: rgba(30, 25, 15, 0.9); +} +.fvtt-te-deum-character-creator .status-section { + display: block; + max-width: 34rem; +} +.fvtt-te-deum-character-creator .creator-finished-section { + display: block; + max-width: 34rem; + text-align: center; + margin-bottom: 1rem; +} +.fvtt-te-deum-character-creator .stage-main-details { + text-align: center; + margin-top: 1rem; +} +.grace-texte { + margin-top: 1rem; +} +.chat-welcome { + text-align: center; +} +.item-name-label { + min-width: 12rem; +} +.compendium-sidebar .directory-item.compendium.locked .compendium-name { + background: rgba(0, 0, 0, 0.1); +} +.compendium-sidebar .directory-item.compendium .compendium-name { + background: rgba(0, 0, 0, 0.1); +} +.compendium-sidebar .directory-item.compendium:hover .compendium-name { + text-shadow: 0 0 8px var(--color-shadow-primary); + background: rgba(0, 0, 0, 0.9); +} +.compendium-sidebar .directory-item.compendium .compendium-footer .source { + display: inline-block; + font-size: var(--font-size-12); + padding: 1px 0.5rem 0 0.25rem; + border-radius: 0 3px 0 0; + background: rgba(0, 0, 0, 0.1); +} +.tedeum-create-character { + align-self: anchor-center; +} +.message-chat-center { + text-align: center; +} +.welcome-message-h3 { + font-size: 1.2rem; + text-align: center; + margin-bottom: 0.5rem; + color: darkred; +} diff --git a/styles/variables.css b/styles/variables.css new file mode 100644 index 0000000..bc9961f --- /dev/null +++ b/styles/variables.css @@ -0,0 +1,6 @@ +@font-face { + font-family: "MailartRubberstamp"; + src: url("../fonts/MailartRubberstamp-Regular.woff") format("woff"); + font-family: "GreatPrimer"; + src: url("../fonts/IM_FELL_Great_Primer_Roman.woff") format("woff"); +} diff --git a/system.json b/system.json index 99f5cec..701364b 100644 --- a/system.json +++ b/system.json @@ -151,6 +151,48 @@ "version": "13.0.2", "download": "https://www.uberwald.me/gitea/public/fvtt-te-deum/releases/download/13.0.1/fvtt-te-deum-13.0.2.zip", "background": "systems/fvtt-te-deum/images/ui/tdeum_welcome_page_01.webp", + "documentTypes": { + "Actor": { + "pj": { + "htmlFields": ["description", "notes", "connaissances", "histoire", "vetements", "equipmentfree"] + }, + "pnj": { + "htmlFields": ["description", "notes", "connaissances", "histoire", "vetements", "equipmentfree"] + } + }, + "Item": { + "arme": { + "htmlFields": ["description"] + }, + "competence": { + "htmlFields": ["description"] + }, + "armure": { + "htmlFields": ["description"] + }, + "equipement": { + "htmlFields": ["description"] + }, + "origine": { + "htmlFields": ["description"] + }, + "education": { + "htmlFields": ["description"] + }, + "grace": { + "htmlFields": ["description"] + }, + "blessure": { + "htmlFields": ["description"] + }, + "maladie": { + "htmlFields": ["transmission", "symptomes", "complications", "description"] + }, + "simple": { + "htmlFields": ["vertus", "toxicite", "description"] + } + } + }, "flags": { "hotReload": { "extensions": [ diff --git a/template.json.BACKUP b/template.json.BACKUP new file mode 100644 index 0000000..290dadf --- /dev/null +++ b/template.json.BACKUP @@ -0,0 +1,22 @@ +{ + "Actor": { + "types": ["pj", "pnj"], + "htmlFields": ["description", "equipmentfree", "histoire"], + "pj": {}, + "pnj": {} + }, + "Item": { + "types": ["arme", "competence", "armure", "grace", "equipement", "origine", "education", "blessure", "maladie", "simple"], + "htmlFields": ["description", "transmission", "symptomes", "vertus", "toxicité"], + "blessure": {}, + "maladie": {}, + "arme": {}, + "competence": {}, + "armure": {}, + "equipement": {}, + "origine": {}, + "education": {}, + "grace": {}, + "debouche": {} + } +} \ No newline at end of file diff --git a/templates/actors/actor-sheet.hbs b/templates/actors/actor-sheet.hbs index 98db183..d45d3d9 100644 --- a/templates/actors/actor-sheet.hbs +++ b/templates/actors/actor-sheet.hbs @@ -1,4 +1,4 @@ -

+
{{!-- Sheet Header --}}
@@ -6,24 +6,31 @@
- +

-
+
+ + + + + +
-
{{!-- Sheet Tab Navigation --}} -
- \ No newline at end of file + \ No newline at end of file diff --git a/templates/dialogs/roll-dialog-generic.hbs b/templates/dialogs/roll-dialog-generic.hbs index 5705dec..6087099 100644 --- a/templates/dialogs/roll-dialog-generic.hbs +++ b/templates/dialogs/roll-dialog-generic.hbs @@ -1,4 +1,4 @@ -
+
{{#if img}} @@ -175,4 +175,9 @@ - \ No newline at end of file +
+ + +
+ +
\ No newline at end of file diff --git a/templates/items/item-arme-sheet.hbs b/templates/items/item-arme-sheet.hbs index 8ea9c0c..73dbee2 100644 --- a/templates/items/item-arme-sheet.hbs +++ b/templates/items/item-arme-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -136,4 +136,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-armure-sheet.hbs b/templates/items/item-armure-sheet.hbs index 291d661..40d06f4 100644 --- a/templates/items/item-armure-sheet.hbs +++ b/templates/items/item-armure-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -75,4 +75,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-blessure-sheet.hbs b/templates/items/item-blessure-sheet.hbs index 3fb5f84..6c8099a 100644 --- a/templates/items/item-blessure-sheet.hbs +++ b/templates/items/item-blessure-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -35,4 +35,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-competence-sheet.hbs b/templates/items/item-competence-sheet.hbs index 25a9d93..bb82f70 100644 --- a/templates/items/item-competence-sheet.hbs +++ b/templates/items/item-competence-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -41,4 +41,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-education-sheet.hbs b/templates/items/item-education-sheet.hbs index 18e2de6..39cb280 100644 --- a/templates/items/item-education-sheet.hbs +++ b/templates/items/item-education-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -167,4 +167,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-equipement-sheet.hbs b/templates/items/item-equipement-sheet.hbs index d3d78b6..5643ce1 100644 --- a/templates/items/item-equipement-sheet.hbs +++ b/templates/items/item-equipement-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -34,4 +34,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-grace-sheet.hbs b/templates/items/item-grace-sheet.hbs index 5379091..9d74419 100644 --- a/templates/items/item-grace-sheet.hbs +++ b/templates/items/item-grace-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -19,7 +19,9 @@ Effet : {{system.effet}}
- {{editor description target="system.description" button=true owner=owner editable=editable}} +
+ {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +
@@ -39,4 +41,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-maladie-sheet.hbs b/templates/items/item-maladie-sheet.hbs index a0ac4aa..1c5f67e 100644 --- a/templates/items/item-maladie-sheet.hbs +++ b/templates/items/item-maladie-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -23,25 +23,27 @@ Complications : {{system.complications}}
- {{editor description target="system.description" button=true owner=owner editable=editable}} +
+ {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +

Transmission

- +
+ {{formInput systemFields.transmission enriched=enrichedTransmission value=system.transmission name="system.transmission" toggled=true}} +

Symptômes

- +
+ {{formInput systemFields.symptomes enriched=enrichedSymptomes value=system.symptomes name="system.symptomes" toggled=true}} +

Complications

- +
+ {{formInput systemFields.complications enriched=enrichedComplications value=system.complications name="system.complications" toggled=true}} +
  • @@ -73,4 +75,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-origine-sheet.hbs b/templates/items/item-origine-sheet.hbs index 02c7ce1..0535112 100644 --- a/templates/items/item-origine-sheet.hbs +++ b/templates/items/item-origine-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -46,4 +46,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/item-sheet.hbs b/templates/items/item-sheet.hbs new file mode 100644 index 0000000..6c7d261 --- /dev/null +++ b/templates/items/item-sheet.hbs @@ -0,0 +1,2 @@ +{{!-- Wrapper dynamique : inclut le partial du bon type d'item --}} +{{> (lookup . 'itemPartialName')}} diff --git a/templates/items/item-simple-sheet.hbs b/templates/items/item-simple-sheet.hbs index a5a1d71..4939334 100644 --- a/templates/items/item-simple-sheet.hbs +++ b/templates/items/item-simple-sheet.hbs @@ -1,6 +1,6 @@ -
+
- +

@@ -20,20 +20,22 @@ Toxicité : {{system.toxicite}}
- {{editor description target="system.description" button=true owner=owner editable=editable}} +
+ {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +

🌿 Vertus médicinales

- +
+ {{formInput systemFields.vertus enriched=enrichedVertus value=system.vertus name="system.vertus" toggled=true}} +

☠️ Toxicité

- +
+ {{formInput systemFields.toxicite enriched=enrichedToxicite value=system.toxicite name="system.toxicite" toggled=true}} +
  • @@ -68,4 +70,4 @@
-
\ No newline at end of file + \ No newline at end of file diff --git a/templates/items/partial-item-description.hbs b/templates/items/partial-item-description.hbs index fafd2b5..23ada52 100644 --- a/templates/items/partial-item-description.hbs +++ b/templates/items/partial-item-description.hbs @@ -1,3 +1,5 @@
- {{editor description target="system.description" button=true owner=owner editable=editable}} +
+ {{formInput systemFields.description enriched=enrichedDescription value=system.description name="system.description" toggled=true}} +