:root{--surface: #131313;--surface-dim: #0e0e0e;--surface-low: #1c1b1b;--surface-container: #20201f;--surface-high: #2a2a2a;--surface-highest: #353535;--on-surface: #e5e2e1;--on-surface-dim: #d0c5af;--outline: #99907c;--outline-dim: #4d4635;--gold: #f2ca50;--gold-dim: #d4af37;--gold-on: #3c2f00;--gold-rgb: 242, 202, 80;--surface-tint: rgba(255, 255, 255, .04);--error: #ffb4ab;--error-rgb: 255, 180, 171;--font-serif: "Noto Serif", "Iowan Old Style", Georgia, serif;--font-sans: "Manrope", "Inter", ui-sans-serif, system-ui, sans-serif;--ease-border: border-color .16s ease;--ease-bg: background .16s ease}[data-theme=light]{--surface: #f3f0ea;--surface-dim: #e9e5de;--surface-low: #e4e0d8;--surface-container: #efece6;--surface-high: #dcd7cc;--surface-highest: #d1cbc0;--on-surface: #1c1b1a;--on-surface-dim: #4a4537;--outline: #6e6659;--outline-dim: #c2bbb0;--gold: #a68200;--gold-dim: #caa520;--gold-on: #fffcef;--gold-rgb: 166, 130, 0;--surface-tint: rgba(0, 0, 0, .04);--error: #c62828;--error-rgb: 198, 40, 40}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{font-family:var(--font-sans);font-size:16px;line-height:1.6;font-weight:400;color:var(--on-surface);background:var(--surface);-webkit-font-smoothing:antialiased}body{min-width:0;min-height:100vh;overflow-x:clip;background:var(--surface-dim)}#root{min-height:100vh}button,input{font:inherit;color:inherit}h1{font-family:var(--font-serif);font-size:clamp(2rem,6vw,3rem);font-weight:400;line-height:1.2;letter-spacing:-.02em;color:var(--on-surface);margin:0 0 16px}h2{font-family:var(--font-serif);font-size:clamp(1.5rem,4vw,2rem);font-weight:400;line-height:1.3;letter-spacing:-.01em;color:var(--on-surface);margin:0 0 12px}h3{font-family:var(--font-serif);font-size:1.25rem;font-weight:400;line-height:1.4;color:var(--on-surface);margin:0 0 8px}p{margin:0}.eyebrow{font-family:var(--font-sans);font-size:11px;font-weight:600;line-height:1;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin:0 0 10px}.body-copy{font-family:var(--font-sans);font-size:.9375rem;line-height:1.65;color:var(--on-surface-dim);margin:0}.app-shell{min-height:100vh;display:grid;align-content:start;justify-items:center;gap:0;background:var(--surface-dim)}.app-header,.view-shell,.panel-card,.nav-card{width:min(560px,100%)}.app-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--outline-dim)}.app-wordmark{font-family:var(--font-sans);font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);text-decoration:none}.header-actions{display:flex;align-items:center;gap:12px}.app-date{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--outline)}.theme-toggle{appearance:none;background:transparent;border:1px solid var(--outline-dim);border-radius:0;width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;color:var(--outline);font-size:14px;cursor:pointer;line-height:1;padding:0 0 1px;transition:color .16s ease,border-color .16s ease}.theme-toggle:hover{color:var(--gold);border-color:var(--gold-dim)}.intro-backdrop{position:fixed;inset:0;background:#000000ad;display:flex;align-items:center;justify-content:center;z-index:100;padding:24px}.intro-pane{position:relative;background:var(--surface);border:1px solid var(--outline-dim);max-width:520px;width:100%;padding:40px 36px 32px;display:grid;gap:14px;box-shadow:0 24px 60px #00000080}.intro-title{font-family:var(--font-serif, var(--font-sans));font-weight:400;font-size:28px;letter-spacing:.04em;color:var(--gold, var(--outline));margin:0 0 4px}.intro-body{font-family:var(--font-sans);font-size:14px;line-height:1.55;color:var(--outline);margin:0}.intro-body em{color:var(--gold, var(--outline));font-style:italic}.intro-footnote{font-size:12px;color:var(--outline-dim);margin-top:4px}.intro-close{position:absolute;top:8px;right:12px;background:transparent;border:0;color:var(--outline-dim);font-size:22px;line-height:1;cursor:pointer;padding:4px 8px}.intro-close:hover{color:var(--gold)}.intro-cta{margin-top:12px;justify-self:start}.view-shell{padding:0 24px 48px;display:grid;gap:0}.nav-card{padding:0;border-bottom:1px solid var(--outline-dim)}.nav-row{display:flex;gap:0;overflow-x:auto;scrollbar-width:none}.nav-row::-webkit-scrollbar{display:none}.button-row{display:flex;gap:12px;margin-top:16px;flex-wrap:wrap}.button-row.wrap{flex-wrap:wrap}.primary-button,.secondary-button{appearance:none;border-radius:0;padding:12px 20px;font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:var(--ease-border),var(--ease-bg),color .16s ease;white-space:nowrap}.primary-button{border:1px solid var(--gold);background:transparent;color:var(--gold)}.primary-button:hover{background:rgba(var(--gold-rgb),.08)}.primary-button:active,.primary-button.active{background:rgba(var(--gold-rgb),.14);color:var(--gold)}.secondary-button{border:1px solid var(--outline-dim);background:transparent;color:var(--on-surface-dim)}.secondary-button:hover{border-color:var(--outline);color:var(--on-surface)}.secondary-button:active{border-color:var(--gold-dim)}.primary-button:disabled,.secondary-button:disabled{opacity:.35;cursor:not-allowed}button:focus-visible,input:focus-visible{outline:1px solid var(--gold);outline-offset:2px}.slot-input:focus-visible{outline:none}.nav-button{border:0;border-bottom:2px solid transparent;border-radius:0;padding:8px 24px 10px;background:transparent;color:var(--on-surface-dim);font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:color .16s,border-color .16s;white-space:nowrap;flex-shrink:0}.nav-button:hover{color:var(--on-surface)}.nav-button.active,.primary-button.nav-button.active{border:0;border-bottom:2px solid var(--gold);background:transparent;color:var(--gold)}.panel-card{padding:40px 0;border:0;border-bottom:1px solid var(--outline-dim);background:transparent;border-radius:0;box-shadow:none;display:grid;gap:0}.panel-meta{display:grid;gap:6px;margin-bottom:16px}.meta-inline{display:flex;flex-wrap:wrap;gap:12px;color:var(--outline);font-size:.8125rem;letter-spacing:.04em}.meta-inline span+span:before{content:"·";margin-right:12px;color:var(--outline-dim)}.hero-card{display:grid;gap:0}.hero-dek{margin-top:8px;max-width:52ch}.hero-note{margin-top:10px;font-size:.8125rem;color:var(--outline)}.hero-badges{display:flex;flex-wrap:wrap;gap:20px;margin-top:20px}.hero-badge{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-dim)}.hero-badge+.hero-badge:before{content:"·";margin-right:20px;color:var(--outline-dim)}.hero-continue,.daily-continue{margin-top:20px;width:fit-content}.daily-card{gap:0}.daily-copy{max-width:52ch;margin-top:4px}.daily-status{margin-top:14px;font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--outline)}.chain-view{display:grid;gap:0;margin-top:20px;position:relative;max-width:100%}.chain-slot{position:relative;z-index:1;display:flex;align-items:center;gap:14px;border:1px solid var(--outline-dim);padding:18px 20px;background:var(--surface-container);transition:var(--ease-border);margin:4px 0}.chain-slot.revealed{border-color:var(--surface-high);color:var(--on-surface)}.chain-slot.active{border-color:var(--gold);color:var(--gold)}.chain-slot.empty{border-color:var(--outline-dim);border-style:dashed;color:var(--on-surface-dim);background:var(--surface-low)}.chain-slot.filled{border-color:var(--surface-high);color:var(--on-surface)}.slot-index{display:inline-grid;place-items:center;width:22px;height:22px;border:1px solid var(--outline-dim);border-radius:0;background:transparent;color:var(--outline);font-size:10px;font-weight:600;letter-spacing:.04em;flex-shrink:0}.chain-slot:after{content:"";width:22px;flex-shrink:0}.chain-slot.active .slot-index{border-color:var(--gold-dim);color:var(--gold)}.slot-value{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:inherit;flex:1;text-align:center}.slot-clue{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--outline)}.slot-input{flex:1;background:transparent;border:none;border-bottom:1px solid var(--gold-dim);border-radius:0;padding:2px 0;font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;text-align:center;color:var(--gold);caret-color:var(--gold);outline:none;min-width:0}.slot-input::placeholder{color:var(--gold-dim);text-transform:uppercase;letter-spacing:.12em;font-weight:600}@keyframes slot-shake{0%,to{transform:translate(0)}15%{transform:translate(-7px)}35%{transform:translate(7px)}55%{transform:translate(-4px)}75%{transform:translate(4px)}}.chain-slot.active.feedback-incorrect{border-color:var(--error);color:var(--error);background-color:rgba(var(--error-rgb),.08);animation:slot-shake .45s ease-in-out}.chain-slot.active.feedback-incorrect .slot-input{color:var(--error);caret-color:var(--error);border-bottom-color:var(--error)}.chain-slot.empty{cursor:pointer}.chain-slot.empty:hover{border-color:var(--outline)}.chain-link-row{position:relative;z-index:1;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 8px;padding:6px clamp(12px,4vw,28px);min-width:0;max-width:100%;overflow:visible}.chain-link-row:before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--outline-dim);transform:translate(-50%);z-index:-1}.chain-link-clue{font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--outline);background:var(--surface-dim);padding:2px 10px}.chain-link-topic,.chain-link-hint,.chain-link-role-hint{font-family:var(--font-sans);font-size:10px;font-weight:400;letter-spacing:.18em;text-transform:none;font-style:normal;color:var(--on-surface-dim);background:var(--surface);padding:0 8px;border:0;white-space:normal;overflow-wrap:anywhere;text-align:center;line-height:1.45;max-width:100%;min-width:0;position:relative;z-index:1}.play-header{gap:0;padding-top:28px}.play-header-row{display:flex;align-items:center;justify-content:space-between}.play-header-row .eyebrow{margin-bottom:0}.play-reset-inline{appearance:none;background:transparent;border:none;padding:0;font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--outline);cursor:pointer;transition:color .16s ease}.play-reset-inline:hover{color:var(--on-surface)}.play-status-row{display:flex;align-items:center;gap:12px;margin-top:12px;min-height:0}.play-next,.play-reset{margin-left:auto}.play-note{margin-top:8px;color:var(--outline);font-size:.8125rem}.prototype-copy{margin-top:4px;margin-bottom:0}.play-hint{margin-top:16px;padding:14px 0;border-top:1px solid var(--outline-dim);border-bottom:0;background:transparent;display:grid;gap:4px;color:var(--on-surface-dim);font-size:.875rem}.play-hint strong{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--outline)}.play-assist-row{display:flex;justify-content:center;margin-top:18px}.secondary-button{appearance:none;background:var(--surface-container);border:1px solid var(--outline-dim);color:var(--on-surface-dim);cursor:pointer;font-family:var(--font-sans);font-size:10px;font-weight:700;letter-spacing:.12em;padding:8px 14px;text-transform:uppercase;transition:color .16s ease,border-color .16s ease,background .16s ease}.secondary-button:hover{background:var(--surface-high);border-color:var(--gold-dim);color:var(--gold)}.word-selector-row{gap:8px;margin-top:16px}.word-chip{padding:9px 16px;font-size:10px}.suggestion-chip{padding:9px 14px;font-size:10px}.search-field{display:grid;gap:6px;margin-top:20px;cursor:text}.search-label{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--outline)}.search-field input{width:100%;border:0;border-bottom:1px solid var(--outline-dim);border-radius:0;padding:12px 0;background:transparent;color:var(--on-surface);font-family:var(--font-sans);transition:border-color .16s}.search-field input::placeholder{color:var(--outline)}.search-field input:focus{outline:none;border-bottom-color:var(--gold)}.answer-submit-row{margin-top:14px}.feedback-note{margin-top:12px;font-size:.8125rem;color:var(--outline);font-family:var(--font-sans)}.feedback-note.correct{color:var(--gold)}.feedback-note.incorrect{color:var(--error)}.suggestion-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.explanation-list{display:grid;gap:0;margin-top:8px}.explanation-item{border:0;border-left:1px solid var(--gold-dim);border-radius:0;padding:10px 0 10px 18px;margin-bottom:16px;background:transparent}.explanation-step{margin:0 0 6px;font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-dim)}.explanation-copy{margin:0 0 4px;color:var(--on-surface-dim);font-size:.875rem;line-height:1.6}.explanation-copy:last-child{margin-bottom:0}.explanation-copy strong{color:var(--on-surface);font-weight:600}.result-card{background:transparent}.result-card h2{font-size:clamp(2rem,6vw,3.5rem);letter-spacing:-.02em}.share-block{margin-top:20px}.share-label{font-size:.65rem;font-family:var(--font-sans);letter-spacing:.12em;text-transform:uppercase;color:var(--gold-dim);margin-bottom:6px}.share-text{font-size:.875rem;color:var(--text-secondary);font-family:var(--font-sans);letter-spacing:.01em;line-height:1.5;white-space:pre-line;background:var(--surface-tint);border:1px solid var(--outline);border-radius:6px;padding:10px 14px}.solved-panel{background:transparent}.solved-panel h2{margin-bottom:8px}.solved-panel .body-copy{max-width:48ch}.library-filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.library-filters label{display:grid;gap:6px;min-width:0}.library-filters span{font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--outline)}.library-filters select{appearance:none;-webkit-appearance:none;width:100%;min-width:0;border:1px solid var(--outline-dim);border-radius:0;background:var(--surface-high);color:var(--on-surface);color-scheme:dark;font:inherit;font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:9px 32px 9px 10px;cursor:pointer;outline:none;background-image:linear-gradient(45deg,transparent 50%,var(--gold) 50%),linear-gradient(135deg,var(--gold) 50%,transparent 50%);background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;transition:color .16s ease,border-color .16s ease,background .16s ease}.library-filters select:focus{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold-dim)}.library-filters option{background:var(--surface-high);color:var(--on-surface)}[data-theme=light] .library-filters select{color-scheme:light}.library-log{margin-top:20px;display:grid;gap:0}.library-row{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--outline-dim);width:100%;min-width:0;overflow:hidden;background:transparent;border-radius:0;text-align:left}.library-row:last-child{border-bottom:0}button.library-row{appearance:none;-webkit-appearance:none;border-left:none;border-right:none;border-top:none;background:transparent;cursor:pointer;color:inherit;transition:var(--ease-border)}button.library-row:hover .library-words{color:var(--gold)}.library-date{font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.1em;color:var(--outline);flex-shrink:0;width:52px}.library-words{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--on-surface);flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.library-locked-words{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--outline-dim);flex:1}.library-chip{display:inline-flex;align-items:center;border:1px solid var(--outline-dim);border-radius:0;padding:4px 10px;background:transparent;color:var(--outline);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;flex-shrink:0}.library-empty{color:var(--on-surface-dim);font-size:.875rem;padding:20px 0}.library-list{display:grid;gap:0}.top-spaced{margin-top:20px}.card-accent{gap:6px}.progress-stats{display:flex;gap:32px;padding:20px 0 24px;border-bottom:1px solid var(--outline-dim)}.progress-stat{display:flex;align-items:baseline;gap:10px}.progress-count{font-family:var(--font-sans);font-size:2.5rem;font-weight:700;letter-spacing:-.02em;color:var(--gold);line-height:1}.progress-count-label{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--on-surface-dim)}.progress-footnote{font-family:var(--font-sans);font-size:11px;color:var(--outline);letter-spacing:.04em;margin-top:24px}.progress-section-label{font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-dim);margin-top:24px;margin-bottom:12px}.activity-grid{display:flex;flex-wrap:wrap;gap:4px}.activity-day{width:14px;height:14px;background:var(--surface-container);border:1px solid var(--outline-dim);border-radius:2px;flex-shrink:0}.activity-day.solved{background:var(--gold);border-color:var(--gold)}.activity-day.revealed{background:var(--card-muted);border-color:var(--gold-dim)}.activity-day.today:not(.solved){border-color:var(--gold-dim);border-style:dashed}.diff-stats{display:flex;flex-direction:column;gap:10px}.diff-row{display:flex;align-items:center;gap:12px}.diff-label{font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--on-surface-dim);width:52px;flex-shrink:0}.diff-bar{flex:1;height:6px;background:var(--surface-high);border-radius:3px;overflow:hidden}.diff-bar-fill{height:100%;background:var(--gold);border-radius:3px;transition:width .4s ease}.diff-fraction{font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.06em;color:var(--outline);width:28px;text-align:right;flex-shrink:0}.progress-reset-area{margin-top:32px;padding-top:20px;border-top:1px solid var(--outline-dim)}.progress-reset-trigger{background:transparent;border:none;padding:0;font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--outline);cursor:pointer;transition:var(--ease-border)}.progress-reset-trigger:hover{color:var(--error, #c0392b)}.progress-confirm{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.progress-confirm-label{font-family:var(--font-sans);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--on-surface-dim);flex:1}.status-pill{display:inline-flex;margin-top:14px;align-items:center;border:1px solid var(--outline-dim);border-radius:0;background:transparent;color:var(--outline);padding:6px 12px;font-family:var(--font-sans);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.state-message{border-bottom:1px solid var(--outline-dim)}.state-message.warning{border-color:transparent;background:transparent}.state-message.warning .eyebrow{color:var(--error)}.panel-card:has(.chain-view):before{display:none}@media(max-width:640px){.app-hero{padding:24px 16px 16px}.app-header{padding:14px 16px 12px}.app-hero,.view-shell,.panel-card,.nav-card{width:100%}.view-shell{padding:0 16px 24px}.nav-card{padding:0}.nav-button{flex:1;min-width:0;text-align:center;padding:8px 4px 10px;letter-spacing:.06em}.progress-stats{flex-wrap:wrap;gap:16px}.progress-grid{grid-template-columns:1fr}.button-row:not(.wrap){flex-direction:column}.primary-button,.secondary-button,.hero-continue,.daily-continue,.library-action{width:100%;text-align:center}}@media(max-width:400px){.view-shell{padding:0 12px 20px}.chain-slot{padding:14px 12px;gap:10px}.chain-slot:after{width:18px}.slot-index{width:18px;height:18px;font-size:9px}.nav-button{font-size:9px;letter-spacing:.04em}.library-chip{display:none}.play-status-row{flex-wrap:wrap;gap:8px}}
