@import "mixins"; // ─── Character sheet specifics ─────────────────────────────────────────────── .fvtt-celestopol.character { // ── header-stats-row : initiative + attributs sur une seule ligne ────────── .header-stats-row { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 4px; align-items: flex-end; } .header-stat { display: flex; flex-direction: column; align-items: center; background: rgba(0,0,0,0.25); border: 1px solid var(--cel-orange); border-radius: 4px; padding: 3px 8px; min-width: 54px; label { font-size: 0.58em; text-transform: uppercase; letter-spacing: 0.04em; color: var(--cel-orange-light); white-space: nowrap; } .stat-value, .attr-display { color: var(--cel-orange); font-family: var(--cel-font-title); font-size: 1.05em; font-weight: bold; line-height: 1.2; } .attr-sep { color: rgba(196,154,26,0.5); margin: 0 1px; font-size: 0.85em; } input.attr-val, input.attr-max { width: 24px; text-align: center; background: transparent; border: none; border-bottom: 1px solid var(--cel-orange-light); color: var(--cel-orange); font-family: var(--cel-font-title); font-size: 1em; font-weight: bold; } } // Badge malus armure équipée dans le header .armor-malus-badge { border-color: #b84a2e; .armor-malus-value { color: #e06040; font-family: var(--cel-font-title); font-size: 1.05em; font-weight: bold; } label { color: #e06040; opacity: 0.8; } } // Stats × Domaines grid .stats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 8px 0; .stat-block { border: 1px solid var(--cel-border); border-radius: 4px; overflow: hidden; .stat-header { background: var(--cel-green); background-image: url("../assets/ui/fond_cadrille.jpg"); background-blend-mode: soft-light; color: var(--cel-orange); display: flex; justify-content: space-between; align-items: center; padding: 5px 8px; border-bottom: 1px solid rgba(196,154,26,0.4); .stat-name { font-family: var(--cel-font-title); font-weight: bold; font-size: 1em; text-transform: uppercase; letter-spacing: 0.05em; } .stat-res { display: flex; align-items: center; gap: 4px; font-size: 0.8em; label { color: var(--cel-orange-light); } input[type="number"] { width: 30px; .cel-input-std(); } .stat-res-value { font-size: 1.3em; font-weight: bold; min-width: 24px; text-align: center; } } .stat-res-btn { display: inline-flex; align-items: center; gap: 5px; padding: 3px 8px 3px 6px; border: 1px solid var(--cel-orange); border-radius: 4px; background: rgba(224, 123, 0, 0.08); font-size: 0.78em; cursor: default; .res-die-icon { font-size: 1.1em; color: var(--cel-orange); opacity: 0.85; } .res-label { color: var(--cel-orange-light); text-transform: uppercase; letter-spacing: 0.05em; } .res-value { font-size: 1.3em; font-weight: bold; color: var(--cel-orange); min-width: 18px; text-align: center; } &.rollable { cursor: pointer; transition: background 0.15s, border-color 0.15s; &:hover { background: rgba(224, 123, 0, 0.22); border-color: var(--cel-orange-light); } } } } .skills-list { background: var(--cel-cream); .skill-row { display: flex; align-items: center; justify-content: space-between; padding: 3px 8px; border-bottom: 1px solid rgba(122,92,32,0.18); font-size: 0.85em; // Alternating cream-dark rows for legibility &:nth-child(even) { background: var(--cel-cream-dark); } &.rollable { .cel-rollable(); } .skill-name { flex: 1; } .skill-value { font-weight: bold; min-width: 24px; text-align: center; color: var(--cel-orange); } .skill-value-input { width: 36px; .cel-input-std(); text-align: center; } // Points de niveau Art Déco (remplacent les cases à cocher) .skill-checkboxes-container { .skill-checkboxes { display: flex; gap: 3px; align-items: center; } .skill-level-dot { display: inline-block; width: 13px; height: 13px; border: 1px solid var(--cel-border); border-radius: 1px; background: rgba(255,255,255,0.3); vertical-align: middle; position: relative; transition: background 0.1s, border-color 0.1s; &.filled { background: var(--cel-orange); border-color: var(--cel-border); } &.res-threshold { border: 2px solid var(--cel-orange); background: rgba(224, 123, 0, 0.2); // Petit indicateur orange sous le dot &::after { content: ''; position: absolute; bottom: -5px; left: 50%; transform: translateX(-50%); width: 4px; height: 4px; background: var(--cel-orange); border-radius: 50%; } &.filled { background: var(--cel-orange); border: 2px solid #fff; box-shadow: 0 0 0 1.5px var(--cel-orange); &::after { background: var(--cel-orange); } } } &[data-action] { cursor: pointer; } } } } } } } // Items (anomalies, aspects, attributs) .items-section { display: flex; flex-direction: column; gap: 8px; padding: 8px 0; .items-group { .items-header { .cel-section-header(); display: flex; justify-content: space-between; align-items: center; a { color: var(--cel-orange); cursor: pointer; } } .item-row { .cel-item-row(); } } } // Tracks (Blessures, Destin, Spleen) .track-section { border: 1px solid var(--cel-border); border-radius: 4px; margin-bottom: 12px; overflow: hidden; .track-header { background: var(--cel-green); background-image: url("../assets/ui/fond_cadrille.jpg"); background-blend-mode: soft-light; color: var(--cel-orange); display: flex; justify-content: space-between; align-items: center; padding: 5px 8px; border-bottom: 1px solid rgba(196,154,26,0.4); .track-title { font-family: var(--cel-font-title); font-weight: bold; text-transform: uppercase; font-size: 1.1em; letter-spacing: 0.04em; display: flex; align-items: center; gap: 5px; } .track-help { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 14px; border-radius: 50%; border: 1px solid currentColor; font-size: 0.65em; font-family: var(--cel-font-body); font-weight: bold; text-transform: none; letter-spacing: 0; cursor: help; opacity: 0.7; transition: opacity 0.15s; flex-shrink: 0; &:hover { opacity: 1; } } } .track-boxes { display: flex; padding: 8px; gap: 8px; flex-wrap: wrap; background: var(--cel-cream); .track-box { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; width: 22px; min-height: 22px; border: 2px solid var(--cel-border); border-radius: 2px; background: rgba(255,255,255,0.45); transition: background 0.1s, border-color 0.1s; &.filled { background: var(--cel-orange); border-color: var(--cel-orange); } &[data-action] { cursor: pointer; } .box-label { font-size: 0.6em; color: var(--cel-border); line-height: 1; } &.filled .box-label { color: rgba(30,10,0,0.65); } } } .track-level { display: flex; align-items: center; gap: 6px; padding: 4px 8px; background: rgba(139,115,85,0.1); font-size: 0.85em; label { color: var(--cel-border); } input[type="number"] { width: 40px; .cel-input-std(); } } } .factions-layout { display: grid; grid-template-columns: minmax(0, 1fr) 210px; gap: 12px; align-items: start; } .faction-aspect-summary { grid-column: 1 / -1; border: 1px solid rgba(122,92,32,0.35); background: linear-gradient(180deg, rgba(255,248,232,0.95), rgba(240,229,209,0.9)); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.35); padding: 7px 9px; .faction-aspect-summary-header { display: flex; justify-content: space-between; align-items: center; gap: 6px; margin-bottom: 6px; } .faction-aspect-summary-title { color: var(--cel-green); font-family: var(--cel-font-title); font-size: 1em; letter-spacing: 0.04em; text-transform: uppercase; line-height: 1.05; } .faction-aspect-manage { display: inline-flex; align-items: center; gap: 4px; color: var(--cel-orange); cursor: pointer; text-decoration: none; font-size: 0.84em; white-space: nowrap; } .faction-aspect-points { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; margin-bottom: 6px; } .faction-aspect-point { min-width: 0; padding: 4px 6px; border: 1px solid rgba(122,92,32,0.25); background: rgba(255,255,255,0.45); border-radius: 4px; .label { display: block; font-size: 0.66em; text-transform: uppercase; letter-spacing: 0.03em; color: var(--cel-border); line-height: 1.1; } .value { color: var(--cel-orange); font-family: var(--cel-font-title); font-size: 1.02em; line-height: 1; } } .faction-aspect-source-line { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 6px; font-size: 0.8em; line-height: 1.2; color: var(--cel-green); } .faction-aspect-source { padding: 0 6px; border-radius: 9px; background: rgba(12,76,12,0.08); border: 1px solid rgba(12,76,12,0.2); } .faction-aspect-active-title { margin-bottom: 4px; color: var(--cel-border); font-size: 0.68em; text-transform: uppercase; letter-spacing: 0.04em; line-height: 1.1; } .faction-aspect-active-list { display: flex; flex-wrap: wrap; gap: 4px; } .faction-aspect-chip { display: inline-flex; align-items: center; gap: 5px; padding: 2px 6px; border-radius: 999px; border: 1px solid rgba(122,92,32,0.25); background: rgba(255,255,255,0.55); line-height: 1.1; &.is-relevant { border-color: rgba(12,76,12,0.35); background: rgba(12,76,12,0.1); } .name { color: var(--cel-green); font-size: 0.88em; } .value { color: var(--cel-orange); font-family: var(--cel-font-title); font-size: 0.9em; } } .faction-aspect-empty { color: #666; font-style: italic; font-size: 0.84em; } } // Factions table .factions-table { width: 100%; border-collapse: collapse; font-size: 0.9em; thead tr { background: var(--cel-green); background-image: url("../assets/ui/fond_cadrille.jpg"); background-blend-mode: soft-light; color: var(--cel-orange); th { padding: 5px 8px; font-family: var(--cel-font-title); font-size: 1.05em; letter-spacing: 0.06em; text-transform: uppercase; } } .faction-row { &:nth-child(odd) td { background: rgba(122,92,32,0.06); } &:nth-child(even) td { background: var(--cel-cream-dark); } td { padding: 4px 8px; border-bottom: 1px solid rgba(122,92,32,0.2); } &.custom td { font-style: italic; color: #666; } .faction-checkboxes-container { display: flex; align-items: center; gap: 8px; } .faction-checkboxes { display: flex; gap: 3px; align-items: center; } .faction-dot { display: inline-block; width: 12px; height: 12px; border: 1px solid var(--cel-border); border-radius: 1px; background: rgba(255,255,255,0.3); transition: background 0.1s; &[data-action] { cursor: pointer; } &.neutral { border-color: #888; } &.neutral.filled { background: #aaa; border-color: #888; } &.pos.filled { background: var(--cel-orange); border-color: var(--cel-orange); } &.neg.filled { background: #b84a2e; border-color: #b84a2e; } } .faction-count { font-size: 0.85em; font-weight: bold; color: var(--cel-orange); min-width: 16px; text-align: center; } .faction-value input[type="number"] { width: 50px; .cel-input-std(); text-align: center; } } } .factions-legend { border: 1px solid rgba(122,92,32,0.35); background: linear-gradient(180deg, rgba(255,248,232,0.95), rgba(240,229,209,0.9)); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.35); padding: 8px 10px; .factions-legend-title { margin-bottom: 6px; padding-bottom: 4px; border-bottom: 1px solid rgba(122,92,32,0.25); color: var(--cel-green); font-family: var(--cel-font-title); font-size: 1.05em; letter-spacing: 0.05em; text-transform: uppercase; } .factions-legend-list { display: flex; flex-direction: column; gap: 4px; font-size: 0.88em; } .factions-legend-row { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 8px; align-items: baseline; } .factions-legend-value { color: var(--cel-orange); font-weight: bold; text-align: right; } .factions-legend-label { color: var(--cel-green); } } // Biography / Equipment .equipments-section { margin-bottom: 12px; .section-header { .cel-section-header(); display: flex; justify-content: space-between; } .item-row { .cel-item-row(); } .item-qty { font-size: 0.8em; color: var(--cel-border); } } // Onglet Équipement .tab.equipement { .equip-section { margin-bottom: 14px; .section-header { .cel-section-header(); display: flex; align-items: center; gap: 8px; i { opacity: 0.75; } span { flex: 1; } a { color: var(--cel-orange); cursor: pointer; } } .item-row { .cel-item-row(); gap: 10px; &.is-equipped { background: rgba(12, 76, 12, 0.12); border-left: 3px solid var(--cel-green); padding-left: 5px; } .item-tag { font-size: 0.75em; padding: 1px 7px; border-radius: 10px; background: rgba(12,76,12,0.15); border: 1px solid rgba(12,76,12,0.3); color: #3a5a1e; white-space: nowrap; &.malus { background: rgba(192,68,68,0.1); border-color: rgba(192,68,68,0.35); color: #922; } } .equip-toggle { color: var(--cel-border); &.equipped { color: var(--cel-green); } &:hover { color: var(--cel-orange); } } .item-controls { opacity: 1; gap: 10px; flex-shrink: 0; a { display: inline-flex; align-items: center; justify-content: center; min-width: 20px; min-height: 20px; font-size: 1.08rem; line-height: 1; } } } .equip-empty { font-size: 0.85em; font-style: italic; color: var(--cel-border); padding: 4px 8px; } } } .tab.biography { .biography-layout { display: grid; grid-template-columns: minmax(0, 1fr) 230px; gap: 16px; align-items: start; } .biography-main { min-width: 0; } .biography-portrait-panel { display: flex; flex-direction: column; gap: 8px; .section-header { .cel-section-header(); } } .biography-portrait-preview { display: flex; align-items: center; justify-content: center; padding: 8px; min-height: 360px; background: rgba(12,76,12,0.08); border: 1px solid rgba(122,92,32,0.25); border-radius: 6px; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.18); } .biography-portrait-image { display: block; width: 100%; max-height: 520px; aspect-ratio: 2 / 3; object-fit: contain; object-position: top center; } .biography-portrait-empty { padding: 14px; color: var(--cel-border); font-size: 0.82em; font-style: italic; text-align: center; line-height: 1.5; } .biography-portrait-field { display: flex; file-picker { flex: 1; } file-picker input[type="text"] { .cel-input-std(); } } .biography-portrait-actions { display: flex; } .biography-portrait-send { display: inline-flex; align-items: center; width: 100%; justify-content: center; gap: 6px; padding: 6px 10px; border: 1px solid rgba(122,92,32,0.35); border-radius: 4px; background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(233,223,201,0.95)); color: var(--cel-green); font-size: 0.82em; font-weight: bold; cursor: pointer; &:hover { border-color: var(--cel-orange); color: var(--cel-orange); background: linear-gradient(180deg, rgba(255,255,255,0.96), rgba(240,229,209,1)); } &:disabled { opacity: 0.5; cursor: default; color: var(--cel-border); border-color: rgba(122,92,32,0.2); background: rgba(220,210,188,0.45); } } .biography-portrait-hint { margin: 0; font-size: 0.78em; font-style: italic; color: var(--cel-border); } .biography-section, .notes-section { margin-bottom: 12px; .section-header { .cel-section-header(); } .enriched-html { font-size: 0.9em; line-height: 1.6; } } } // ── Section Expérience (onglet Biographie) ────────────────────────────── .xp-section { margin-bottom: 14px; .section-header { .cel-section-header(); } .xp-counters { display: flex; align-items: center; gap: 12px; padding: 6px 0 8px; flex-wrap: wrap; .xp-counter { display: flex; flex-direction: column; align-items: center; background: rgba(0,0,0,0.18); border: 1px solid var(--cel-orange); border-radius: 4px; padding: 4px 12px; min-width: 80px; label { font-size: 0.6em; text-transform: uppercase; letter-spacing: 0.04em; color: var(--cel-border); white-space: nowrap; } input[type="number"] { width: 52px; text-align: center; .cel-input-std(); font-family: var(--cel-font-title); font-size: 1.1em; font-weight: bold; color: var(--cel-green); } } .xp-depense-counter { border-color: rgba(122,92,32,0.4); .xp-depense-value { font-family: var(--cel-font-title); font-size: 1.1em; font-weight: bold; color: var(--cel-border); } } .xp-btn-depenser { background: var(--cel-green); border: 1px solid var(--cel-orange); color: var(--cel-orange); font-size: 0.78em; padding: 5px 12px; cursor: pointer; font-family: var(--cel-font-title); text-transform: uppercase; letter-spacing: 0.04em; border-radius: 2px; transition: background 0.15s; margin-left: auto; &:hover { background: var(--cel-green-light); } i { margin-right: 4px; } } } .xp-log-table { width: 100%; border-collapse: collapse; font-size: 0.82em; margin-bottom: 8px; thead tr { background: rgba(12,76,12,0.35); th { color: var(--cel-orange-light); font-size: 0.75em; text-transform: uppercase; letter-spacing: 0.04em; padding: 3px 6px; text-align: left; border-bottom: 1px solid rgba(196,154,26,0.3); } } tbody tr { border-bottom: 1px solid rgba(196,154,26,0.12); &:nth-child(even) { background: rgba(0,0,0,0.08); } td { padding: 3px 6px; color: var(--cel-text-dark, #3a2a0a); } .xp-date { white-space: nowrap; color: var(--cel-border); font-size: 0.9em; } .xp-montant { font-weight: bold; color: #c04040; white-space: nowrap; } .xp-suppr-cell { text-align: center; .xp-btn-suppr { background: none; border: none; color: rgba(180,60,60,0.6); cursor: pointer; font-size: 0.9em; padding: 1px 4px; &:hover { color: #c04040; } } } } } // Référentiel de coûts (accordéon) .xp-ref { margin-top: 6px; summary { font-size: 0.78em; color: var(--cel-orange-light); cursor: pointer; letter-spacing: 0.03em; text-transform: uppercase; user-select: none; &:hover { color: var(--cel-orange); } } .xp-ref-table { width: 100%; border-collapse: collapse; font-size: 0.82em; margin-top: 6px; thead tr { background: var(--cel-green); background-image: url("../assets/ui/fond_cadrille.jpg"); background-blend-mode: soft-light; color: var(--cel-orange); } th { font-family: var(--cel-font-title); font-size: 0.9em; letter-spacing: 0.05em; text-transform: uppercase; padding: 4px 8px; text-align: left; border-bottom: 2px solid var(--cel-orange); } td { padding: 4px 8px; color: var(--cel-text, #2a1a00); border-bottom: 1px solid rgba(196,154,26,0.25); } tbody tr { &:nth-child(odd) { background: rgba(255,248,230,0.7); } &:nth-child(even) { background: rgba(240,228,195,0.5); } &:last-child td { border-bottom: none; } } td:last-child { font-weight: bold; color: var(--cel-orange); text-align: center; width: 60px; } } } } // ── Bloc Anomalie sur l'onglet Domaines ────────────────────────────────── .anomaly-block { border: 1px solid rgba(196,154,26,0.5); border-radius: 4px; margin-bottom: 12px; overflow: hidden; .anomaly-block-header { background: var(--cel-green); background-image: url("../assets/ui/fond_cadrille.jpg"); background-blend-mode: soft-light; display: flex; justify-content: space-between; align-items: center; padding: 5px 10px; border-bottom: 2px solid var(--cel-orange); .anomaly-block-title { font-family: var(--cel-font-title); font-size: 0.85em; text-transform: uppercase; letter-spacing: 0.07em; color: var(--cel-orange); } a { color: var(--cel-orange-light); &:hover { color: var(--cel-orange); } } } .anomaly-empty { padding: 12px; text-align: center; color: var(--cel-border); font-style: italic; font-size: 0.85em; display: flex; align-items: center; justify-content: center; gap: 6px; i { font-size: 1.1em; } } .anomaly-content { padding: 8px 10px; background: var(--cel-green-dark, #0c4c0c); .anomaly-info-row { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; .anomaly-icon { width: 40px; height: 40px; object-fit: cover; border: 1px solid var(--cel-orange); border-radius: 3px; } .anomaly-details { flex: 1; .anomaly-name { font-family: var(--cel-font-title); font-size: 1em; color: var(--cel-orange); font-weight: bold; } .anomaly-subtype { font-size: 0.75em; color: var(--cel-cream, #f0e8d4); text-transform: uppercase; letter-spacing: 0.05em; opacity: 0.75; } } .anomaly-controls { display: flex; gap: 6px; a { color: rgba(240,232,212,0.5); font-size: 0.9em; &:hover { color: var(--cel-orange); } } } } .anomaly-level-row { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; .anomaly-level-label { font-size: 0.72em; text-transform: uppercase; color: var(--cel-cream, #f0e8d4); opacity: 0.7; white-space: nowrap; } .anomaly-level-dots { display: flex; gap: 4px; .anomaly-level-dot { width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--cel-orange); &.active { background: var(--cel-orange); } &.inactive { background: transparent; border-color: rgba(196,154,26,0.25); } } } } .anomaly-uses-row { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; .anomaly-uses-label { font-size: 0.72em; text-transform: uppercase; color: var(--cel-cream, #f0e8d4); opacity: 0.7; white-space: nowrap; } .anomaly-uses-dots { display: flex; gap: 4px; .anomaly-dot { width: 12px; height: 12px; border-radius: 50%; border: 2px solid var(--cel-orange); &.available { background: var(--cel-orange); } &.spent { background: transparent; } &.inactive { background: transparent; border-color: rgba(196,154,26,0.25); } } } .anomaly-use-btn { background: var(--cel-green); border: 1px solid var(--cel-orange); color: var(--cel-orange); font-size: 0.72em; padding: 2px 8px; cursor: pointer; font-family: var(--cel-font-title); text-transform: uppercase; letter-spacing: 0.04em; border-radius: 2px; transition: background 0.15s; &:hover:not(:disabled) { background: var(--cel-green-light); } &:disabled { opacity: 0.4; cursor: default; } } .anomaly-reset-btn { color: rgba(240,232,212,0.5); font-size: 0.9em; &:hover { color: var(--cel-orange); } } } .anomaly-skills { margin-top: 6px; display: flex; flex-wrap: wrap; gap: 4px; align-items: center; .anomaly-skills-label { font-size: 0.7em; color: var(--cel-cream, #f0e8d4); opacity: 0.6; text-transform: uppercase; } .anomaly-skill-chip { background: rgba(196,154,26,0.18); border: 1px solid rgba(196,154,26,0.45); border-radius: 3px; padding: 1px 5px; font-size: 0.7em; color: var(--cel-cream, #f0e8d4); } } } } }