/* ------------------------------------------- Fonts ---------------------------------------------*/ @font-face { font-family: "DeliusUnicaseBold"; src: url(../fonts/DeliusUnicase-Bold.ttf); } @font-face { font-family: "DeliusUnicase"; src: url(../fonts/DeliusUnicase-Regular.ttf); } // ============================================================ // Neo-Tokyo Neon Noir — Palette // ============================================================ @cde-bg: #080c14; @cde-surface: #101622; @cde-surface2: #0d1520; @cde-border: #1a2436; @cde-border-hi: #263853; @cde-text: #e2e8f4; @cde-muted: #5b6b88; // Accents néon par type @cde-item: #00d4d4; @cde-kungfu: #ff3d5a; @cde-spell: #4a9eff; @cde-supernatural: #cc44ff; @cde-shadow: 0 8px 32px rgba(0, 0, 0, 0.6); @cde-shadow-sm: 0 2px 12px rgba(0, 0, 0, 0.4); @cde-radius: 8px; @cde-radius-sm: 5px; @cde-gap: 12px; // Glow helpers .glow(@color) { box-shadow: 0 0 0 1px fade(@color, 35%), 0 0 12px fade(@color, 20%); } .glow-text(@color) { text-shadow: 0 0 8px fade(@color, 60%); } // ============================================================ // CSS Variables (for JS access) // ============================================================ .fvtt-chroniques-de-l-etrange { --cde-bg: @cde-bg; --cde-surface: @cde-surface; --cde-border: @cde-border; --cde-text: @cde-text; --cde-muted: @cde-muted; --cde-item: @cde-item; --cde-kungfu: @cde-kungfu; --cde-spell: @cde-spell; --cde-supernatural: @cde-supernatural; color: @cde-text; background: @cde-bg; } // ============================================================ // Base sheet // ============================================================ .cde-sheet { background: @cde-bg; color: @cde-text; font-family: "DeliusUnicase", sans-serif; display: flex; flex-direction: column; width: 100%; height: 100%; overflow: hidden; input, select, textarea { font-family: inherit; color: @cde-text; background: transparent; } } // ============================================================ // Item-sheet Neon Header // ============================================================ .cde-neon-header { position: relative; background: @cde-surface; display: grid; grid-template-columns: 90px 1fr; gap: 14px; padding: 12px 14px 14px; overflow: hidden; // Angular clip on bottom-right corner clip-path: polygon(0 0, 100% 0, 100% calc(100% - 14px), calc(100% - 14px) 100%, 0 100%); // Top accent line — overridden per type &::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: @cde-border-hi; } // Subtle neon scatter in background &::after { content: ""; position: absolute; inset: 0; background: radial-gradient(ellipse at 0% 0%, fade(@cde-border-hi, 30%) 0%, transparent 50%); pointer-events: none; } // Per-type accent colors &.item { &::before { background: @cde-item; box-shadow: 0 0 10px fade(@cde-item, 50%); } } &.kungfu { &::before { background: @cde-kungfu; box-shadow: 0 0 10px fade(@cde-kungfu, 50%); } } &.spell { &::before { background: @cde-spell; box-shadow: 0 0 10px fade(@cde-spell, 50%); } } &.supernatural { &::before { background: @cde-supernatural; box-shadow: 0 0 10px fade(@cde-supernatural, 50%); } } } // Avatar inside neon header — angular clip .cde-avatar { width: 90px; height: 90px; object-fit: cover; clip-path: polygon(0 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%); border: 1px solid @cde-border-hi; background: @cde-surface2; cursor: pointer; position: relative; z-index: 1; } // Header content zone .cde-header-content { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 8px; min-width: 0; } // Item name — flat neon-bottom-border input .cde-item-name { margin: 0; input { width: 100%; border: none; border-bottom: 2px solid @cde-border-hi; background: transparent; color: @cde-text; font-size: 18px; font-family: "DeliusUnicase", sans-serif; font-weight: 700; padding: 4px 0 6px; letter-spacing: 0.04em; text-transform: uppercase; outline: none; transition: border-color 0.15s; &:focus { border-bottom-color: @cde-item; } } } // Type-specific focus color on name input .cde-neon-header.kungfu .cde-item-name input:focus { border-bottom-color: @cde-kungfu; } .cde-neon-header.spell .cde-item-name input:focus { border-bottom-color: @cde-spell; } .cde-neon-header.supernatural .cde-item-name input:focus { border-bottom-color: @cde-supernatural; } // ============================================================ // Stat Grid (terminal style) // ============================================================ .cde-stat-grid { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: flex-end; } .cde-stat-cell { display: flex; flex-direction: column; gap: 3px; min-width: 110px; flex: 1 1 110px; max-width: 200px; } .cde-stat-label { font-size: 10px; font-family: monospace; text-transform: uppercase; letter-spacing: 0.1em; color: @cde-muted; white-space: nowrap; } .cde-stat-value { font-size: 15px; font-weight: 800; color: @cde-text; letter-spacing: 0.02em; } .cde-stat-cell input, .cde-stat-cell select { width: 100%; background: transparent; border: none; border-bottom: 1px solid @cde-border; color: @cde-text; font-size: 14px; padding: 4px 0; outline: none; transition: border-color 0.15s; &:focus { border-bottom-color: @cde-item; } } .cde-neon-header.kungfu .cde-stat-cell input:focus, .cde-neon-header.kungfu .cde-stat-cell select:focus { border-bottom-color: @cde-kungfu; } .cde-neon-header.spell .cde-stat-cell input:focus, .cde-neon-header.spell .cde-stat-cell select:focus { border-bottom-color: @cde-spell; } .cde-neon-header.supernatural .cde-stat-cell input:focus, .cde-neon-header.supernatural .cde-stat-cell select:focus { border-bottom-color: @cde-supernatural; } // ============================================================ // Type Badge — angular clip-path parallelogram // ============================================================ .cde-badge { display: inline-flex; align-items: center; gap: 6px; padding: 3px 14px 3px 10px; clip-path: polygon(6px 0, 100% 0, calc(100% - 6px) 100%, 0 100%); font-size: 11px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: @cde-bg; cursor: default; white-space: nowrap; &.item { background: @cde-item; } &.kungfu { background: @cde-kungfu; } &.spell { background: @cde-spell; } &.supernatural { background: @cde-supernatural; } &.character { background: @cde-item; } &.npc { background: @cde-supernatural; } } // ============================================================ // Neon Tabs // ============================================================ .cde-neon-tabs { display: flex; gap: 0; border-bottom: 1px solid @cde-border; background: transparent; margin-top: 8px; overflow-x: auto; .item { padding: 8px 14px; font-size: 11px; font-family: monospace; text-transform: uppercase; letter-spacing: 0.1em; color: @cde-muted; border-bottom: 2px solid transparent; white-space: nowrap; transition: color 0.15s, border-color 0.15s; cursor: pointer; &:hover { color: @cde-text; } &.active { color: @cde-item; border-bottom-color: @cde-item; } } } // Per-type active tab color .item.kungfu .cde-neon-tabs .item.active, form.kungfu .cde-neon-tabs .item.active { color: @cde-kungfu; border-bottom-color: @cde-kungfu; } form.spell .cde-neon-tabs .item.active { color: @cde-spell; border-bottom-color: @cde-spell; } form.supernatural .cde-neon-tabs .item.active { color: @cde-supernatural; border-bottom-color: @cde-supernatural; } // ============================================================ // Tab body // ============================================================ .cde-tab-body { flex: 1 1 0; min-height: 0; padding: @cde-gap; background: @cde-surface2; border: 1px solid @cde-border; border-top: none; border-radius: 0 0 @cde-radius @cde-radius; overflow-y: auto; .tab { display: none; flex-direction: column; gap: @cde-gap; height: 100%; } .tab.active { display: flex; } } // ============================================================ // Card // ============================================================ .cde-card { background: @cde-surface; border: 1px solid @cde-border; border-radius: @cde-radius; padding: 12px; box-shadow: @cde-shadow-sm; } .cde-card .tab-sous-titre { font-family: monospace; font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase; color: @cde-muted; margin-bottom: 6px; border-bottom: 1px solid @cde-border; padding-bottom: 4px; } // ============================================================ // Notes editor // ============================================================ .cde-notes-editor { flex: 1 1 0; min-height: 0; display: flex; flex-direction: column; .editor { flex: 1 1 0; min-height: 200px; border-radius: @cde-radius; border: 1px solid @cde-border; background: @cde-surface; } } // ============================================================ // Technique card (kungfu) // ============================================================ .cde-technique-card { border-left: 3px solid @cde-kungfu; background: fade(@cde-surface, 80%); } .cde-technique-header { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 10px; margin-bottom: 10px; } .cde-technique-title { display: flex; align-items: center; gap: 8px; flex: 1 1 200px; input { flex: 1; background: transparent; border: none; border-bottom: 1px solid @cde-border; color: @cde-text; font-size: 15px; font-weight: 700; padding: 4px 0; outline: none; &:focus { border-bottom-color: @cde-kungfu; } } } .cde-technique-meta { display: flex; gap: 8px; flex-wrap: wrap; align-items: flex-end; } .cde-technique-body .editor { min-height: 180px; } // Mini technique checkbox row .cde-check-cell { display: flex; flex-direction: column; align-items: center; gap: 4px; min-width: 70px; label { font-size: 10px; font-family: monospace; text-transform: uppercase; letter-spacing: 0.08em; color: @cde-muted; } input[type="checkbox"] { width: 18px; height: 18px; accent-color: @cde-kungfu; cursor: pointer; } } // ============================================================ // Legacy chips (kept for actor sheets) // ============================================================ .cde-chip { background: fade(@cde-surface, 75%); border: 1px solid @cde-border; border-radius: @cde-radius; padding: 8px 10px; display: inline-flex; flex-direction: column; gap: 6px; min-width: 140px; label { font-size: 10px; font-family: monospace; letter-spacing: 0.08em; text-transform: uppercase; color: @cde-muted; margin: 0; } input, select { width: 100%; border: none; border-bottom: 1px solid @cde-border; background: transparent; color: @cde-text; padding: 4px 0; outline: none; &:focus { border-bottom-color: @cde-item; } } input[type="checkbox"] { width: auto; align-self: flex-start; accent-color: @cde-item; } &.mini { min-width: 100px; padding: 6px 8px; } } .cde-meta-row { display: flex; gap: @cde-gap; flex-wrap: wrap; align-items: flex-end; margin-top: 8px; &.compact { gap: 8px; } } // Kept for backward compat with actor templates .cde-pill { display: inline-block; padding: 3px 10px; border-radius: 999px; font-weight: 800; font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; color: @cde-bg; &.item { background: @cde-item; } &.kungfu { background: @cde-kungfu; } &.spell { background: @cde-spell; } &.supernatural { background: @cde-supernatural; } &.character { background: @cde-item; } &.npc { background: @cde-supernatural; } } // ============================================================ // Actor header (kept, updated for new palette) // ============================================================ .cde-header { background: @cde-surface; border: 1px solid @cde-border; border-radius: @cde-radius; padding: 12px; display: grid; grid-template-columns: 120px 1fr; gap: @cde-gap; box-shadow: @cde-shadow; .profile-img { width: 100%; border-radius: @cde-radius; border: 1px solid @cde-border; box-shadow: @cde-shadow; object-fit: cover; } .header-fields h1.charname input { width: 100%; border: none; border-bottom: 2px solid @cde-border-hi; background: transparent; color: @cde-text; font-size: 20px; font-family: "DeliusUnicase", sans-serif; padding: 4px 0 8px; outline: none; &:focus { border-bottom-color: @cde-item; } } } .cde-actor-header { grid-template-columns: 160px 1fr; align-items: start; } .cde-header-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; } .cde-icon-button { border: 1px solid @cde-border; background: fade(@cde-surface, 70%); color: @cde-text; border-radius: 999px; padding: 6px 10px; box-shadow: @cde-shadow-sm; cursor: pointer; &:hover { border-color: @cde-border-hi; } } .cde-quick-meta { display: flex; align-items: center; gap: @cde-gap; flex-wrap: wrap; } .cde-initiative-card { border: 1px solid @cde-border; border-radius: @cde-radius; padding: 10px; background: fade(@cde-surface, 70%); box-shadow: @cde-shadow-sm; display: inline-flex; flex-direction: column; gap: 6px; } .cde-initiative-controls { display: inline-flex; align-items: center; gap: 8px; img { width: 30px; height: 30px; border: 1px solid @cde-border; border-radius: 5px; background: fade(@cde-bg, 90%); cursor: pointer; &:hover { border-color: @cde-spell; box-shadow: 0 0 0 2px fade(@cde-spell, 25%); } } } .cde-initiative-value { min-width: 28px; text-align: center; font-weight: 800; } // ============================================================ // Grid, field, table, section — common // ============================================================ .cde-grid { display: grid; gap: @cde-gap; &.two { grid-template-columns: repeat(2, minmax(0, 1fr)); } &.three { grid-template-columns: repeat(3, minmax(0, 1fr)); } } .cde-field { label { display: block; margin-bottom: 4px; font-size: 10px; font-family: monospace; text-transform: uppercase; letter-spacing: 0.08em; color: @cde-muted; } input, select, textarea { width: 100%; border: none; border-bottom: 1px solid @cde-border; background: transparent; color: @cde-text; padding: 5px 0; outline: none; &:focus { border-bottom-color: @cde-item; } } } .cde-section-title { font-family: monospace; font-size: 10px; font-weight: 800; letter-spacing: 0.1em; text-transform: uppercase; color: @cde-muted; margin-bottom: 8px; border-bottom: 1px solid @cde-border; padding-bottom: 4px; } .cde-tag { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; background: fade(@cde-border, 80%); color: @cde-muted; border: 1px solid @cde-border; } .cde-data-table { table { width: 100%; border-collapse: collapse; color: @cde-text; } td { padding: 7px 8px; border-bottom: 1px solid @cde-border; } tr:nth-child(even) { background: fade(@cde-surface, 50%); } tr:hover { background: fade(@cde-border-hi, 20%); } input, select { width: 100%; border: none; border-bottom: 1px solid @cde-border; background: transparent; color: @cde-text; padding: 4px 0; outline: none; } } .cde-centered-card { display: flex; gap: @cde-gap; align-items: center; justify-content: space-between; flex-wrap: wrap; img { max-height: 280px; border-radius: @cde-radius; border: 1px solid @cde-border; box-shadow: @cde-shadow; } } .loksyu_wrap .schema, .tinji_wrap .schema { display: grid; gap: @cde-gap; align-items: center; } .loksyu-visual, .tinji-visual { max-width: 100%; border-radius: @cde-radius; border: 1px solid @cde-border; box-shadow: @cde-shadow; } // Legacy tabs (actor sheets still use cde-tabs) .cde-tabs { margin-top: @cde-gap; border-bottom: 1px solid @cde-border; .item { color: @cde-muted; padding: 8px 12px; font-size: 11px; font-family: monospace; text-transform: uppercase; letter-spacing: 0.08em; &:hover { color: @cde-text; } &.active { color: @cde-item; background: @cde-surface; border: 1px solid @cde-border; border-bottom: 1px solid @cde-surface; border-radius: @cde-radius @cde-radius 0 0; } } } /* ============================================= Global UI Rules =============================================*/ #logo { content: url("/systems/fvtt-chroniques-de-l-etrange/images/logo_jeu.png"); width: 100px; height: 100px; margin-left: 7px; margin-top: -2px; } #pause > img { content: url("/systems/fvtt-chroniques-de-l-etrange/images/wheel.webp"); height: 192px; width: 192px; top: -45px; left: calc(50% - 96px); } #pause.paused { animation: none; } a.compendium-name, a.entry-name, strong.ellipsis { font-family: "DeliusUnicase"; } /* concerne les pages de journaux */ .journal-header input { font-family: "DeliusUnicase"; } .journal-entry-page h1 { font-family: "DeliusUnicaseBold"; text-align: center; color:hsla(249, 66%, 58%, 0.874); border-bottom: 1px solid orange; border-top: 1px solid orange; border-top: 1px solid orange; } .journal-entry-page h2 { font-family: "DeliusUnicaseBold"; color:orange; border-bottom: 0px; border-top: 1px solid orange; } .journal-entry-page h3, .journal-entry-page h4, .journal-entry-page h5, .journal-entry-page h6 { font-family: "DeliusUnicaseBold"; color:hsla(249, 66%, 58%, 0.874); border-bottom: 0px; } /* concerne le Tchat */ #interface .chat-message .message-header img { max-width: 80px; border-radius: 5px; border: 0.5px solid black; /* max-width: 50px; */ /* max-height: 50px; */ margin-right: 4px; } #interface .chat-message .message-header .message-sender { width: 100px; }