:root { color-scheme: dark; --paper: #efe4c9; --paper-2: #e7d7b7; --paper-3: #f7eed9; --edge: #d3bd92; --ink: #271a0e; --ink-soft: #5d4528; --ink-faint: #8a714c; --rule: rgba(73, 49, 22, 0.22); --rule-soft: rgba(73, 49, 22, 0.12); --oxblood: #9a2b22; --oxblood-2: #74201b; --gold: #b07d12; --gold-2: #d8a226; --gold-glow: rgba(216, 162, 38, 0.38); --leaf: #2f6b41; --leaf-2: #3f8453; --night: #14130d; --night-2: #202012; --serif: Georgia, "Times New Roman", serif; --label: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; } * { box-sizing: border-box; } [hidden] { display: none !important; } html, body { min-height: 100%; margin: 0; } body { color: var(--ink); background: linear-gradient(180deg, rgba(65, 68, 41, 0.22), transparent 22%), linear-gradient(115deg, #202012 0%, #14130d 48%, #0c0b07 100%); font-family: var(--serif); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } button, input, textarea { font: inherit; color: inherit; } button { cursor: pointer; } button:disabled, input:disabled, textarea:disabled { cursor: wait; } .icon-sprite { display: none; } .icon { width: 14px; height: 14px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } .desk-glow { position: fixed; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(0, 0, 0, 0.22), transparent 22%, transparent 78%, rgba(0, 0, 0, 0.28)), linear-gradient(180deg, rgba(216, 162, 38, 0.08), transparent 34%); } .atlas-shell { position: relative; z-index: 1; width: min(1480px, 100%); min-height: 100vh; margin: 0 auto; padding: 32px; color: var(--ink); font-family: var(--serif); } .atlas-stage { position: relative; display: grid; grid-template-rows: auto minmax(0, 1fr); height: calc(100vh - 64px); min-height: calc(100vh - 64px); overflow: hidden; color: var(--ink); background: linear-gradient(180deg, var(--paper-3), var(--paper) 16%, var(--paper) 84%, var(--paper-2)), var(--paper); border: 1px solid var(--edge); border-radius: 4px; box-shadow: 0 40px 90px -30px rgba(0, 0, 0, 0.72), 0 4px 14px rgba(0, 0, 0, 0.35); } .atlas-stage::before { content: ""; position: absolute; inset: 0; pointer-events: none; background-image: linear-gradient(rgba(73, 49, 22, 0.018) 1px, transparent 1px), linear-gradient(90deg, rgba(73, 49, 22, 0.014) 1px, transparent 1px); background-size: 34px 34px; mix-blend-mode: multiply; } .atlas-stage::after { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 0 120px rgba(99, 58, 20, 0.2), inset 0 0 0 1px rgba(255, 247, 224, 0.26); } .atlas-stage > * { position: relative; z-index: 2; } .atlas-topbar { display: grid; grid-template-columns: minmax(155px, auto) minmax(260px, 540px) minmax(300px, 1fr); align-items: flex-end; gap: 20px; padding: 30px 42px 18px; border-bottom: 1px solid var(--rule); } .atlas-title-block { min-width: 0; } .atlas-kicker { margin: 0 0 7px; color: var(--ink-faint); font-family: var(--label); font-size: 0.64rem; font-weight: 800; line-height: 1.4; letter-spacing: 0.18em; text-transform: uppercase; } .atlas-topbar h1 { margin: 0; color: var(--ink); font-family: var(--serif); font-size: 2.5rem; font-weight: 700; line-height: 0.98; letter-spacing: 0; } .atlas-search { display: flex; min-width: 0; align-items: center; gap: 9px; height: 42px; padding: 0 12px; color: var(--ink-soft); background: rgba(255, 247, 224, 0.4); border: 1px solid var(--rule); border-radius: 8px; box-shadow: inset 0 1px 0 rgba(255, 247, 224, 0.42); } .atlas-search:focus-within { border-color: rgba(154, 43, 34, 0.48); box-shadow: inset 0 1px 0 rgba(255, 247, 224, 0.42), 0 0 0 3px rgba(176, 125, 18, 0.12); } .atlas-search input { min-width: 0; width: 100%; height: 100%; padding: 0; color: var(--ink); background: transparent; border: 0; outline: 0; font-family: var(--label); font-size: 0.86rem; font-weight: 760; } .atlas-search input::placeholder { color: var(--ink-faint); opacity: 0.82; } .atlas-search input::-webkit-search-cancel-button { display: none; } .atlas-search-clear { display: inline-grid; width: 26px; height: 26px; flex: 0 0 auto; place-items: center; padding: 0; color: var(--ink-faint); background: transparent; border: 0; border-radius: 50%; } .atlas-search-clear:hover { color: var(--ink); background: rgba(73, 49, 22, 0.08); } .atlas-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 9px; } .atlas-status { min-width: min(360px, 100%); color: var(--ink-faint); font-family: var(--label); font-size: 0.68rem; font-weight: 750; line-height: 1.55; letter-spacing: 0.03em; text-align: right; } .atlas-search-summary { margin: 0 0 9px; color: var(--ink-faint); font-family: var(--label); font-size: 0.72rem; font-weight: 760; line-height: 1.4; } .atlas-search-result { display: grid; width: 100%; gap: 6px; padding: 10px 11px; color: var(--ink); background: rgba(255, 247, 224, 0.38); border: 1px solid var(--rule-soft); border-left: 3px solid var(--leaf); border-radius: 7px; text-align: left; } .atlas-search-result:hover, .atlas-search-result.active { background: rgba(47, 107, 65, 0.1); border-color: rgba(47, 107, 65, 0.35); } .atlas-search-result.active { border-left-color: var(--oxblood); } .atlas-search-result strong { color: var(--ink); font-family: var(--serif); font-size: 0.88rem; line-height: 1.2; } .atlas-search-meta, .atlas-search-snippet { color: var(--ink-faint); font-family: var(--label); font-size: 0.68rem; font-weight: 760; line-height: 1.35; } .atlas-search-score { display: block; height: 5px; overflow: hidden; background: rgba(73, 49, 22, 0.14); border-radius: 999px; } .atlas-search-score i { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--leaf) 0%, var(--gold) 72%, var(--oxblood) 100%); border-radius: inherit; } .atlas-layout { display: grid; grid-template-columns: 300px minmax(0, 1fr) 330px; min-height: 0; overflow: hidden; } .atlas-panel { min-width: 0; overflow: auto; padding: 20px; background: linear-gradient(180deg, rgba(255, 247, 224, 0.2), rgba(73, 49, 22, 0.045)); } .atlas-left { border-right: 1px solid var(--rule); } .atlas-right { border-left: 1px solid var(--rule); } .atlas-section + .atlas-section { margin-top: 24px; } .atlas-stat-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 24px; } .atlas-stat { min-height: 72px; padding: 12px; background: rgba(255, 247, 224, 0.38); border: 1px solid var(--rule); border-radius: 8px; } .atlas-stat strong { display: block; color: var(--ink); font-family: var(--serif); font-size: 1.55rem; line-height: 1; font-variant-numeric: tabular-nums; } .atlas-stat span { display: block; margin-top: 7px; color: var(--ink-faint); font-family: var(--label); font-size: 0.66rem; font-weight: 820; letter-spacing: 0.1em; text-transform: uppercase; } .atlas-list { display: grid; gap: 8px; } .atlas-filter { display: grid; width: 100%; gap: 4px; padding: 10px 11px; color: var(--ink); background: rgba(255, 247, 224, 0.34); border: 1px solid var(--rule-soft); border-left: 3px solid var(--gold); border-radius: 7px; font-family: var(--label); font-size: 0.78rem; font-weight: 750; text-align: left; transition: background 0.2s, border-color 0.2s, padding-left 0.2s; } .atlas-filter:hover, .atlas-filter.active { padding-left: 14px; background: rgba(216, 162, 38, 0.1); border-color: rgba(176, 125, 18, 0.45); } .atlas-filter.active { border-left-color: var(--oxblood); } .atlas-filter strong { color: var(--ink); font-family: var(--serif); font-size: 0.88rem; font-weight: 700; line-height: 1.25; } .atlas-filter span { color: var(--ink-faint); font-size: 0.72rem; font-weight: 750; line-height: 1.35; } .atlas-map-wrap { position: relative; min-height: 0; background: linear-gradient(rgba(73, 49, 22, 0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(73, 49, 22, 0.08) 1px, transparent 1px), radial-gradient(circle at center, rgba(255, 247, 224, 0.5), transparent 62%), rgba(255, 245, 222, 0.42); background-size: 30px 30px, 30px 30px, 100% 100%, 100% 100%; box-shadow: inset 0 0 90px rgba(99, 58, 20, 0.1); } .atlas-svg { display: block; width: 100%; height: 100%; min-height: 0; } .atlas-link { stroke: rgba(73, 49, 22, 0.22); stroke-width: 0.12; } .atlas-dot { cursor: pointer; opacity: 0.9; stroke: rgba(39, 26, 14, 0.72); stroke-width: 0.25; transition: opacity 0.18s, r 0.18s, stroke-width 0.18s; } .atlas-dot:hover, .atlas-dot.selected { opacity: 1; r: 1.35; stroke: #fff0b5; stroke-width: 0.42; } .atlas-dot.search-match { opacity: 1; stroke: #fff0b5; stroke-width: 0.45; } .atlas-search-ring { pointer-events: none; fill: none; stroke: rgba(176, 125, 18, 0.55); stroke-width: 0.35; } .atlas-dot.dim, .atlas-link.dim, .atlas-search-ring.dim { opacity: 0.08; } .atlas-label { fill: var(--ink-soft); font-size: 1.6px; font-weight: 800; paint-order: stroke; stroke: rgba(247, 238, 217, 0.78); stroke-width: 0.5; } .atlas-refresh-progress { position: absolute; right: 18px; bottom: 18px; max-width: 360px; padding: 12px 14px; color: var(--ink); background: rgba(247, 238, 217, 0.94); border: 1px solid var(--edge); border-radius: 8px; box-shadow: 0 14px 30px -20px rgba(0, 0, 0, 0.56); font-family: var(--label); font-size: 0.76rem; font-weight: 780; line-height: 1.4; } .atlas-detail, .atlas-report { color: var(--ink-soft); font-size: 0.82rem; line-height: 1.48; } .atlas-detail h2, .atlas-report h2 { margin: 0 0 8px; color: var(--ink); font-family: var(--serif); font-size: 1.38rem; line-height: 1.08; } .atlas-detail p, .atlas-report p { margin: 7px 0 0; } .atlas-detail a, .atlas-report a { color: var(--oxblood); font-weight: 780; text-decoration: none; } .atlas-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; } .atlas-tags span { padding: 4px 7px; color: var(--ink-soft); background: rgba(73, 49, 22, 0.08); border: 1px solid var(--rule-soft); border-radius: 999px; font-family: var(--label); font-size: 0.66rem; font-weight: 800; } .advisor-shell[hidden], .atlas-shell[hidden] { display: none; } .almanac { position: relative; z-index: 1; width: min(1320px, 100%); min-height: 100vh; margin: 0 auto; padding: 32px; } .sheet { position: relative; min-height: calc(100vh - 64px); overflow: hidden; color: var(--ink); background: linear-gradient(180deg, var(--paper-3), var(--paper) 16%, var(--paper) 84%, var(--paper-2)), var(--paper); border: 1px solid var(--edge); border-radius: 4px; box-shadow: 0 40px 90px -30px rgba(0, 0, 0, 0.72), 0 4px 14px rgba(0, 0, 0, 0.35); } .sheet::before { content: ""; position: absolute; inset: 0; pointer-events: none; background-image: linear-gradient(rgba(73, 49, 22, 0.018) 1px, transparent 1px), linear-gradient(90deg, rgba(73, 49, 22, 0.014) 1px, transparent 1px); background-size: 34px 34px; mix-blend-mode: multiply; } .sheet::after { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: inset 0 0 120px rgba(99, 58, 20, 0.2), inset 0 0 0 1px rgba(255, 247, 224, 0.26); } .masthead { position: relative; z-index: 2; display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; padding: 30px 42px 18px; border-bottom: 1px solid var(--rule); } .masthead-l { display: flex; min-width: 0; align-items: center; gap: 18px; } .crest { width: 52px; height: 52px; flex: 0 0 auto; color: var(--ink); } .masthead h1 { margin: 0; font-family: var(--serif); font-size: 2.5rem; line-height: 0.98; font-weight: 700; letter-spacing: 0; } .masthead .sub { margin-top: 7px; color: var(--ink-faint); font-family: var(--label); font-size: 0.64rem; font-weight: 800; line-height: 1.4; letter-spacing: 0.18em; text-transform: uppercase; } .provenance { max-width: 420px; color: var(--ink-faint); font-family: var(--label); font-size: 0.68rem; font-weight: 750; line-height: 1.55; letter-spacing: 0.03em; text-align: right; } .masthead-r { display: flex; align-items: center; justify-content: flex-end; gap: 12px; } .spread { position: relative; z-index: 2; display: grid; grid-template-columns: 270px minmax(0, 1fr) 350px; } .col { min-width: 0; padding: 30px; } .col-margin, .col-proof { background: linear-gradient(180deg, rgba(255, 247, 224, 0.2), rgba(73, 49, 22, 0.045)); } .col-margin, .col-page { border-right: 1px solid var(--rule); } .eyebrow { display: flex; align-items: center; gap: 9px; margin: 0 0 14px; color: var(--ink-faint); font-family: var(--label); font-size: 0.66rem; font-weight: 850; letter-spacing: 0.16em; text-transform: uppercase; } .eyebrow::after { content: ""; flex: 1; height: 1px; background: var(--rule); } .eyebrow .count { padding: 1px 8px; color: var(--ink-soft); background: rgba(73, 49, 22, 0.1); border-radius: 999px; font-size: 0.6rem; letter-spacing: 0.04em; font-variant-numeric: tabular-nums; } .section + .section { margin-top: 30px; } .composer { margin: 0 0 18px; } .prompt { display: block; width: 100%; min-height: 72px; padding: 4px 0 12px; color: var(--ink); background: transparent; border: 0; outline: 0; resize: vertical; font-family: var(--serif); font-size: 1.32rem; line-height: 1.42; } .prompt::placeholder { color: var(--ink-faint); font-style: italic; } .underline { width: 100%; height: 2px; background: linear-gradient(90deg, var(--ink-soft), transparent); opacity: 0.55; transition: opacity 0.2s, background 0.2s; } .composer:focus-within .underline { background: linear-gradient(90deg, var(--ink), var(--ink-soft) 60%, transparent); opacity: 1; } .toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 16px; } .toolbar .spacer { flex: 1 1 20px; } .voice-row { margin-top: 10px; } .btn { display: inline-flex; min-height: 36px; align-items: center; justify-content: center; gap: 7px; padding: 8px 13px; color: var(--ink); background: var(--paper-3); border: 1px solid var(--edge); border-radius: 7px; font-family: var(--label); font-size: 0.78rem; font-weight: 800; line-height: 1; letter-spacing: 0.03em; white-space: nowrap; transition: transform 0.12s, background 0.2s, border-color 0.2s, opacity 0.2s; } .btn:hover:not(:disabled) { background: #fff6e2; border-color: var(--ink-faint); transform: translateY(-1px); } .btn:active:not(:disabled) { transform: translateY(0); } .btn:disabled { opacity: 0.42; cursor: wait; } .btn-ink { padding-inline: 18px; color: #f6ecd2; background: var(--ink); border-color: var(--ink); } .btn-ink:hover:not(:disabled) { background: #38260f; border-color: #38260f; } .btn-voice { color: #f6ecd2; background: var(--leaf); border-color: var(--leaf); } .btn-voice:hover:not(:disabled) { background: #265935; border-color: #265935; } .btn-voice.recording { background: var(--oxblood); border-color: var(--oxblood); } .btn-voice.recording:hover:not(:disabled) { background: var(--oxblood-2); border-color: var(--oxblood-2); } .btn-ghost { color: var(--ink-soft); background: transparent; border-color: transparent; } .btn-ghost:hover:not(:disabled) { background: rgba(73, 49, 22, 0.08); border-color: transparent; } .btn-icon { width: 36px; padding: 8px; } .marginalia { min-height: 22px; margin: 8px 0 22px; color: var(--leaf); font-family: var(--label); font-size: 0.74rem; font-weight: 750; line-height: 1.4; letter-spacing: 0.02em; } .marginalia.warn { color: var(--oxblood); } .fate { position: relative; min-height: 245px; } .verdict-stamp { display: inline-flex; align-items: center; gap: 10px; padding: 7px 14px 7px 12px; margin-bottom: 18px; border: 1.5px solid currentColor; border-radius: 999px; color: var(--ink-faint); background: rgba(73, 49, 22, 0.06); font-family: var(--label); font-size: 0.72rem; font-weight: 850; letter-spacing: 0.12em; text-transform: uppercase; } .verdict-stamp .seal-dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; } .verdict-unwritten { color: var(--gold); background: rgba(216, 162, 38, 0.1); } .verdict-echo { color: var(--oxblood); background: rgba(154, 43, 34, 0.09); } .verdict-ready { color: var(--ink-faint); } .prophecy { min-height: 150px; margin: 0; color: var(--ink); font-family: var(--serif); font-size: 1.55rem; line-height: 1.52; font-weight: 400; text-wrap: pretty; } .prophecy::first-letter { float: left; padding: 7px 12px 0 0; color: var(--ink); font-size: 4.1em; line-height: 0.76; font-weight: 700; } .prophecy.bleed { color: var(--oxblood-2); } .prophecy.bleed::first-letter { color: var(--oxblood); } .prophecy.gold { color: #6a4a08; } .prophecy.gold::first-letter { color: var(--gold); text-shadow: 0 0 22px var(--gold-glow); } .prophecy.thinking { color: var(--ink-faint); font-style: italic; animation: breathe 1.7s ease-in-out infinite; } @keyframes breathe { 0%, 100% { opacity: 0.58; } 50% { opacity: 1; } } .plan-list { display: grid; gap: 2px; min-height: 42px; margin: 0; padding: 0; list-style: none; counter-reset: step; } .plan-list li { position: relative; counter-increment: step; padding: 12px 4px 12px 44px; color: var(--ink); border-bottom: 1px solid var(--rule-soft); font-size: 1rem; line-height: 1.45; text-wrap: pretty; } .plan-list li:last-child { border-bottom: 0; } .plan-list li::before { content: counter(step); position: absolute; top: 11px; left: 0; display: grid; width: 28px; height: 28px; place-items: center; color: var(--gold); background: rgba(216, 162, 38, 0.08); border: 1.5px solid var(--gold); border-radius: 50%; font-family: var(--label); font-size: 0.82rem; font-weight: 850; font-variant-numeric: tabular-nums; } .plan-list li.empty { padding-left: 0; color: var(--ink-faint); font-style: italic; border-bottom: 0; } .plan-list li.empty::before { display: none; } .seal-wrap { display: flex; align-items: center; gap: 18px; margin-bottom: 6px; } .seal { position: relative; display: grid; width: 124px; height: 124px; flex: 0 0 auto; place-items: center; align-content: center; gap: 1px; color: #f6ecd2; background: linear-gradient(145deg, rgba(255, 247, 224, 0.24), transparent 34%), linear-gradient(180deg, #7c6849, #4d3924); border-radius: 50%; box-shadow: 0 12px 26px rgba(91, 62, 35, 0.32), inset 0 0 22px rgba(43, 25, 11, 0.42); transform: rotate(-5deg); } .seal.unwritten { color: #4a3404; background: linear-gradient(145deg, rgba(255, 240, 190, 0.82), transparent 32%), linear-gradient(180deg, var(--gold-2), var(--gold)); box-shadow: 0 12px 26px rgba(176, 125, 18, 0.36), inset 0 0 22px rgba(120, 80, 8, 0.4), 0 0 34px var(--gold-glow); } .seal.echo { color: #ffe9a8; background: linear-gradient(145deg, rgba(255, 228, 150, 0.55), transparent 30%), linear-gradient(180deg, var(--oxblood), var(--oxblood-2)); box-shadow: 0 12px 26px rgba(91, 22, 16, 0.4), inset 0 0 22px rgba(53, 11, 7, 0.5); } .seal .seal-overall { font-family: var(--serif); font-size: 2.5rem; font-weight: 700; line-height: 1; font-variant-numeric: tabular-nums; } .seal .seal-of { font-family: var(--label); font-size: 0.54rem; font-weight: 800; letter-spacing: 0.16em; text-transform: uppercase; opacity: 0.86; } .seal-meta { min-width: 0; } .seal-meta .v { color: var(--ink-faint); font-family: var(--label); font-size: 0.82rem; font-weight: 850; line-height: 1.25; letter-spacing: 0.08em; text-transform: uppercase; } .seal-meta .v.unwritten { color: var(--gold); } .seal-meta .v.echo { color: var(--oxblood); } .seal-meta .t { margin-top: 4px; color: var(--ink-soft); font-size: 0.92rem; font-style: italic; line-height: 1.35; text-wrap: pretty; } .quadrants { display: grid; gap: 9px; margin-top: 18px; } .quad { display: grid; grid-template-columns: 76px minmax(0, 1fr) 24px; align-items: center; gap: 10px; } .quad .ql { color: var(--ink-soft); font-family: var(--label); font-size: 0.68rem; font-weight: 800; line-height: 1.15; letter-spacing: 0.04em; text-transform: uppercase; } .quad .qbar { display: block; height: 9px; overflow: hidden; background: rgba(73, 49, 22, 0.16); border-radius: 999px; } .quad .qfill { display: block; width: 0; height: 100%; background: linear-gradient(90deg, var(--oxblood) 0%, var(--gold) 55%, var(--leaf-2) 100%); border-radius: 999px; transition: width 0.8s cubic-bezier(0.2, 0.8, 0.2, 1); } .quad .qv { color: var(--ink); font-family: var(--label); font-size: 0.76rem; font-weight: 850; text-align: right; font-variant-numeric: tabular-nums; } .wood-map { display: grid; gap: 10px; } .wood, .wood-map-field { position: relative; height: 188px; overflow: hidden; background: linear-gradient(rgba(73, 49, 22, 0.08) 1px, transparent 1px), linear-gradient(90deg, rgba(73, 49, 22, 0.08) 1px, transparent 1px), rgba(255, 245, 222, 0.42); background-size: 26px 26px; border: 1px solid var(--rule); border-radius: 8px; } .wood-empty { position: absolute; inset: 0; display: grid; place-items: center; padding: 20px; text-align: center; } .wood-dot { position: absolute; display: block; border-radius: 50%; transform: translate(-50%, -50%); transition: opacity 0.5s; } .wood-dot.wood-inked { background: rgba(73, 49, 22, 0.34); } .wood-dot.wood-echo { background: var(--oxblood); box-shadow: 0 0 0 2px rgba(255, 240, 181, 0.5); animation: echo-pulse 2.4s ease-in-out infinite; } .wood-dot.wood-idea { z-index: 2; border-radius: 50%; background: var(--leaf); box-shadow: 0 0 0 3px #fff0b5, 0 0 20px rgba(47, 107, 65, 0.6); } @keyframes echo-pulse { 0%, 100% { opacity: 0.82; } 50% { opacity: 1; } } .wood-cap, .wood-map-caption { margin: 0 2px; color: var(--ink-faint); font-family: var(--label); font-size: 0.68rem; font-weight: 750; line-height: 1.45; letter-spacing: 0.02em; } .wood-legend { display: flex; flex-wrap: wrap; gap: 14px; } .wood-legend span { display: inline-flex; align-items: center; gap: 5px; color: var(--ink-soft); font-family: var(--label); font-size: 0.62rem; font-weight: 850; letter-spacing: 0.04em; text-transform: uppercase; } .wood-legend i { width: 8px; height: 8px; border-radius: 50%; } .project-list, .whitespace-list, .idea-list, .goal-list, .profile-grid { display: grid; gap: 9px; } .project, .echo-item, .gap, .gap-item { display: block; width: 100%; padding: 9px 0 9px 13px; color: inherit; background: transparent; border: 0; border-left: 2px solid var(--rule); font: inherit; text-align: left; text-decoration: none; transition: background 0.2s, border-color 0.2s, padding-left 0.2s; } .project, .echo-item { border-left-color: rgba(154, 43, 34, 0.45); } .gap, .gap-item { border-left-color: rgba(176, 125, 18, 0.5); } .project:hover, .echo-item:hover, .gap-item:hover { padding-left: 16px; background: rgba(255, 247, 224, 0.58); } .project strong, .echo-item strong, .gap strong, .gap-item strong { display: block; color: var(--ink); font-family: var(--serif); font-size: 0.98rem; font-weight: 700; line-height: 1.22; } .project p, .echo-item p, .gap p, .gap-item p { margin: 4px 0 0; color: var(--ink-soft); font-family: var(--label); font-size: 0.8rem; line-height: 1.4; } .project span, .echo-item .matched { display: inline-block; margin-top: 6px; color: var(--ink-faint); font-family: var(--label); font-size: 0.64rem; font-weight: 800; line-height: 1.3; letter-spacing: 0.02em; } .gap-item .use { display: block; margin-top: 6px; color: var(--gold); font-family: var(--label); font-size: 0.62rem; font-weight: 850; letter-spacing: 0.08em; text-transform: uppercase; opacity: 0; transition: opacity 0.2s; } .gap-item:hover .use { opacity: 1; } .idea-card, .idea { display: block; width: 100%; padding: 12px 13px; color: inherit; background: var(--paper-3); border: 1px solid var(--edge); border-left: 3px solid var(--edge); border-radius: 0 7px 7px 0; font: inherit; text-align: left; cursor: pointer; transition: border-color 0.2s, transform 0.12s, box-shadow 0.2s, opacity 0.2s; } .idea-card:hover:not(:disabled), .idea:hover:not(:disabled) { box-shadow: 0 4px 14px -8px rgba(0, 0, 0, 0.42); transform: translateX(2px); } .idea-card.current, .idea.current { background: #fff7e3; border-left-color: var(--leaf); } .idea.current.bleed { border-left-color: var(--oxblood); } .idea:disabled, .gap-item:disabled, .goal-toggle:has(input:disabled), .profile-field:has(input:disabled) { opacity: 0.64; } .idea:focus-visible, .gap-item:focus-visible, .goal-toggle:focus-within, .profile-field input:focus-visible, .btn:focus-visible, .prompt:focus-visible { outline: 2px solid rgba(47, 107, 65, 0.55); outline-offset: 2px; } .idea .ihead { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; } .idea strong { color: var(--ink); font-family: var(--serif); font-size: 0.98rem; font-weight: 700; line-height: 1.22; } .idea .iscore { flex: 0 0 auto; color: var(--ink-soft); font-family: var(--label); font-size: 0.82rem; font-weight: 850; font-variant-numeric: tabular-nums; } .idea p { margin: 5px 0 0; color: var(--ink-soft); font-family: var(--label); font-size: 0.76rem; line-height: 1.4; } .idea .iverdict { display: inline-block; margin-top: 8px; color: var(--ink-faint); font-family: var(--label); font-size: 0.6rem; font-weight: 850; letter-spacing: 0.09em; text-transform: uppercase; } .idea .iverdict.unwritten { color: var(--gold); } .idea .iverdict.echo { color: var(--oxblood); } .idea small { display: block; margin-top: 5px; color: var(--leaf); font-family: var(--label); font-size: 0.7rem; font-weight: 800; line-height: 1.3; } .profile-field { display: grid; gap: 5px; } .profile-field span { color: var(--ink-faint); font-family: var(--label); font-size: 0.64rem; font-weight: 800; letter-spacing: 0.08em; text-transform: uppercase; } .profile-field input { width: 100%; min-height: 36px; padding: 8px 10px; color: var(--ink); background: rgba(255, 247, 224, 0.52); border: 1px solid var(--rule); border-radius: 6px; outline: 0; font-family: var(--label); font-size: 0.84rem; transition: border-color 0.2s, background 0.2s; } .profile-field input:focus { background: #fff8e6; border-color: var(--leaf-2); box-shadow: 0 0 0 3px rgba(47, 107, 65, 0.12); } .goal-toggle { position: relative; display: flex; align-items: flex-start; gap: 10px; padding: 9px 10px; background: transparent; border: 1px solid transparent; border-radius: 7px; cursor: pointer; transition: background 0.2s, border-color 0.2s, opacity 0.2s; } .goal-toggle:hover { background: rgba(255, 247, 224, 0.52); } .goal-toggle.on { background: rgba(47, 107, 65, 0.07); border-color: rgba(47, 107, 65, 0.4); } .goal-toggle input { position: absolute; opacity: 0; pointer-events: none; } .goal-toggle .check { display: grid; width: 18px; height: 18px; flex: 0 0 auto; place-items: center; margin-top: 1px; color: transparent; border: 1.5px solid var(--ink-faint); border-radius: 5px; transition: background 0.2s, border-color 0.2s, color 0.2s; } .goal-toggle.on .check { color: #f6ecd2; background: var(--leaf); border-color: var(--leaf); } .goal-toggle .check .icon { width: 11px; height: 11px; stroke-width: 2.4; } .goal-copy { display: grid; min-width: 0; gap: 3px; } .goal-copy strong { color: var(--ink); font-family: var(--label); font-size: 0.8rem; font-weight: 850; line-height: 1.2; } .goal-copy small { color: var(--ink-faint); font-family: var(--label); font-size: 0.7rem; font-weight: 750; line-height: 1.35; } .empty { color: var(--ink-faint); font-size: 0.95rem; font-style: italic; line-height: 1.45; } .mobile-nav { display: none; } @media (max-width: 1080px) { .atlas-topbar { grid-template-columns: 1fr minmax(260px, 1.2fr); } .atlas-actions { grid-column: 1 / -1; } .atlas-layout { grid-template-columns: 260px minmax(0, 1fr); } .atlas-right { grid-column: 1 / -1; border-top: 1px solid var(--rule); border-left: 0; } .atlas-svg { min-height: 620px; } .almanac { padding: 20px; } .spread { grid-template-columns: 250px minmax(0, 1fr); } .col-proof { grid-column: 1 / -1; border-top: 1px solid var(--rule); } .col-page { border-right: 0; } } @media (max-width: 760px) { .atlas-shell { padding: 0; } .atlas-stage { height: auto; min-height: 100vh; border-right: 0; border-left: 0; border-radius: 0; } .atlas-topbar { align-items: flex-start; grid-template-columns: 1fr; padding: 18px; } .atlas-topbar h1 { font-size: 2.5rem; } .atlas-actions { justify-content: flex-start; width: 100%; } .atlas-search { width: 100%; } .atlas-status { min-width: 100%; text-align: left; } .atlas-layout { grid-template-columns: 1fr; overflow: visible; } .atlas-left, .atlas-right { border: 0; border-top: 1px solid var(--rule); } .atlas-map-wrap { order: -1; } .atlas-svg { height: auto; min-height: 520px; } .atlas-panel { max-height: none; } .almanac { width: 100%; padding: 0; } .sheet { min-height: 100vh; border-right: 0; border-left: 0; border-radius: 0; } .masthead { padding: 18px 18px 14px; } .masthead h1 { font-size: 1.58rem; line-height: 1.05; } .masthead .sub { max-width: 290px; font-size: 0.58rem; letter-spacing: 0.12em; } .crest { width: 44px; height: 44px; } .provenance { display: none; } .masthead-r { align-self: flex-start; } .mobile-nav { position: sticky; top: 0; z-index: 20; display: flex; gap: 4px; padding: 6px; background: var(--paper-2); border-bottom: 1px solid var(--rule); } .mobile-nav button { flex: 1; padding: 9px 4px; color: var(--ink-faint); background: transparent; border: 0; border-radius: 6px; font-family: var(--label); font-size: 0.68rem; font-weight: 850; letter-spacing: 0.05em; text-transform: uppercase; } .mobile-nav button.active { color: var(--paper); background: var(--ink); } .spread { grid-template-columns: 1fr; } .col { padding: 20px 18px 28px; border-right: 0; } .col-page { order: 1; } .col-proof { order: 2; border-top: 1px solid var(--rule); } .col-margin { order: 3; border-top: 1px solid var(--rule); } .spread[data-tab="page"] .col-proof, .spread[data-tab="page"] .col-margin, .spread[data-tab="proof"] .col-page, .spread[data-tab="proof"] .col-margin, .spread[data-tab="almanac"] .col-page, .spread[data-tab="almanac"] .col-proof { display: none; } .prompt { min-height: 88px; font-size: 1.12rem; } .prophecy { min-height: 170px; font-size: 1.2rem; } .prophecy::first-letter { font-size: 3.2em; } .toolbar .spacer { display: none; } .btn { min-height: 38px; } .seal { width: 104px; height: 104px; } .seal .seal-overall { font-size: 2.1rem; } .wood, .wood-map-field { height: 170px; } } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.001ms !important; transition-duration: 0.001ms !important; } } /* Live turn progress (stage + token count + tool chips) */ .turn-progress { display: flex; flex-direction: column; gap: 0.4rem; margin: 0.2rem 0 0.4rem; padding: 0.5rem 0.7rem; border: 1px solid var(--rule-soft); border-left: 3px solid var(--gold); border-radius: 8px; background: rgba(216, 162, 38, 0.06); } .turn-stage { display: flex; align-items: center; gap: 0.45rem; font-family: var(--label); font-size: 0.78rem; color: var(--ink-soft); } .turn-stage .ts-icon { font-size: 0.95rem; line-height: 1; animation: ts-pulse 1.6s ease-in-out infinite; } .turn-stage .ts-text { font-weight: 600; color: var(--ink); } .turn-stage .ts-tokens { color: var(--ink-faint); font-variant-numeric: tabular-nums; } .turn-stage .ts-eta { margin-left: auto; color: var(--ink-faint); font-variant-numeric: tabular-nums; } .turn-bar { height: 5px; border-radius: 999px; background: var(--rule-soft); overflow: hidden; } .turn-bar-fill { height: 100%; width: 0%; border-radius: 999px; background: linear-gradient(90deg, var(--gold), var(--gold-2)); transition: width 0.3s ease; } @keyframes ts-pulse { 0%, 100% { opacity: 0.55; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-1px); } } .tool-chips { display: flex; flex-wrap: wrap; gap: 0.35rem; } .tool-chips:empty { display: none; } .tool-chip { display: inline-flex; align-items: center; gap: 0.3rem; font-family: var(--label); font-size: 0.68rem; font-weight: 600; color: var(--leaf); background: rgba(47, 107, 65, 0.1); border: 1px solid rgba(47, 107, 65, 0.28); border-radius: 999px; padding: 0.12rem 0.55rem; animation: chip-in 0.22s ease; } .tool-chip .tc-check { font-size: 0.66rem; } @keyframes chip-in { from { opacity: 0; transform: translateY(2px); } to { opacity: 1; transform: translateY(0); } } /* Action / overflow menus (consolidate secondary buttons) */ .menu { position: relative; display: inline-flex; } .menu-trigger .caret { margin-left: 4px; font-size: 0.72em; } .menu-trigger[aria-expanded="true"] { border-color: var(--ink-faint); } .caret-dots { font-size: 1.05rem; line-height: 1; letter-spacing: 1px; } .menu-list { position: absolute; top: calc(100% + 6px); left: 0; z-index: 30; min-width: 210px; display: flex; flex-direction: column; gap: 2px; padding: 5px; background: var(--paper-3); border: 1px solid var(--edge); border-radius: 9px; box-shadow: 0 12px 30px -12px rgba(0, 0, 0, 0.45); } .menu-list[hidden] { display: none; } .menu-list-right { left: auto; right: 0; } .menu-item { display: flex; align-items: center; gap: 9px; width: 100%; padding: 8px 10px; border: 0; border-radius: 6px; background: transparent; color: var(--ink); font: inherit; text-align: left; cursor: pointer; transition: background 0.15s ease; } .menu-item:hover:not(:disabled), .menu-item:focus-visible:not(:disabled) { background: rgba(73, 49, 22, 0.09); outline: none; } .menu-item:disabled { opacity: 0.42; cursor: default; } .menu-item .icon { flex: 0 0 auto; color: var(--ink-soft); } .menu-item .mi-text { display: flex; flex-direction: column; line-height: 1.25; } .menu-item .mi-text small { color: var(--ink-faint); font-size: 0.72em; } .menu-item-danger:hover:not(:disabled) { background: rgba(154, 43, 34, 0.1); color: var(--oxblood); }