:root{--bg: #0d0a08;--bg-raised: #17110d;--panel: #1d1610;--panel-edge: #33261a;--ink: #e8dcc8;--ink-dim: #a08d72;--ink-faint: #6b5c47;--amber: #e0a458;--amber-bright: #f5c97b;--ember: #c9572a;--water: #4a7d8c;--moss: #6a7d4a;--danger: #b5442c;--shadow: rgba(0, 0, 0, .55);--font-display: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);overflow:hidden;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}h1,h2,h3{font-family:var(--font-display);font-weight:600;letter-spacing:.02em}.btn{display:inline-block;padding:.6rem 1.4rem;border:1px solid var(--panel-edge);border-radius:4px;background:linear-gradient(180deg,var(--panel),var(--bg-raised));color:var(--ink);font-family:var(--font-display);font-size:1rem;letter-spacing:.06em;transition:border-color .2s,color .2s,box-shadow .2s}.btn:hover,.btn:focus-visible{border-color:var(--amber);color:var(--amber-bright);box-shadow:0 0 12px #e0a45840;outline:none}.btn:disabled{opacity:.4;cursor:default;box-shadow:none}.btn--primary{border-color:var(--amber);color:var(--amber-bright)}.panel{background:var(--panel);border:1px solid var(--panel-edge);border-radius:6px;box-shadow:0 8px 32px var(--shadow)}*{scrollbar-width:thin;scrollbar-color:var(--panel-edge) transparent}:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.hotspot{fill:transparent;stroke:transparent;cursor:pointer}.hotspot:hover,.hotspot:focus-visible{fill:#f5c97b14;stroke:#f5c97b80;stroke-width:2;outline:none}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes flicker{0%,to{opacity:1}7%{opacity:.86}13%{opacity:.97}21%{opacity:.8}34%{opacity:.95}47%{opacity:.88}58%{opacity:1}71%{opacity:.83}84%{opacity:.94}}@keyframes fogDrift{0%{transform:translate(-60px)}to{transform:translate(60px)}}@keyframes ripple{0%,to{transform:scaleY(1);opacity:.5}50%{transform:scaleY(.92);opacity:.7}}@keyframes rumble{0%,to{transform:translate(0)}10%{transform:translate(-4px,2px)}20%{transform:translate(4px,-2px)}30%{transform:translate(-3px,-3px)}40%{transform:translate(3px,3px)}50%{transform:translate(-4px,1px)}60%{transform:translate(4px,2px)}70%{transform:translate(-2px,-2px)}80%{transform:translate(2px,1px)}90%{transform:translate(-1px,2px)}}.rumbling{animation:rumble .35s linear infinite}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes toastIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-8px)}40%{transform:translate(8px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}.shake{animation:shake .4s ease}@keyframes glintPulse{0%,to{opacity:.25;transform:scale(1)}50%{opacity:.9;transform:scale(1.25)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-12px)}}@keyframes map-rotate{0%{transform:rotate(-90deg)}to{transform:rotate(0)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes titleGlow{0%,to{text-shadow:0 0 24px rgba(224,164,88,.35)}50%{text-shadow:0 0 40px rgba(224,164,88,.6)}}.title-screen{position:relative;height:100%;display:grid;place-items:center;overflow:hidden}.title-backdrop{position:absolute;inset:0;width:100%;height:100%}.title-content{position:relative;text-align:center;animation:fadeIn 1.4s ease;padding:2rem}.title-kicker{font-family:var(--font-display);font-size:clamp(1rem,2vw,1.4rem);letter-spacing:.5em;text-transform:uppercase;color:var(--ink-dim)}.title-name{font-size:clamp(2.6rem,7vw,5rem);color:var(--amber-bright);animation:titleGlow 5s ease-in-out infinite;margin:.2em 0 .4em}.title-tag{color:var(--ink-dim);font-style:italic;margin-bottom:2.4rem}.title-enter{font-size:1.25rem;padding:.9rem 3rem}.world-select{height:100%;overflow-y:auto;padding:clamp(1.5rem,4vw,3.5rem);text-align:center}.world-select h1{color:var(--amber);margin-bottom:2rem;font-size:clamp(1.6rem,3.5vw,2.6rem)}.world-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1.4rem;max-width:1200px;margin:0 auto}.world-card{overflow:hidden;border-top:3px solid var(--accent, var(--panel-edge));transition:transform .25s ease,box-shadow .25s ease}.world-card:not(.world-card--locked):hover{transform:translateY(-4px);box-shadow:0 14px 40px var(--shadow)}.world-card--locked{opacity:.45;filter:saturate(.4)}.world-card-face{display:block;width:100%;padding:1.6rem 1.4rem;text-align:left}.world-card-face h2{color:var(--ink);font-size:1.35rem;margin-bottom:.5rem}.world-card-face p{color:var(--ink-dim);font-size:.95rem;line-height:1.45}.world-seal{display:inline-block;margin-top:.9rem;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);border:1px solid var(--ink-faint);border-radius:3px;padding:.2rem .6rem}.world-best{display:block;margin-top:.8rem;color:var(--amber);font-size:.85rem}.world-card-actions{display:flex;flex-direction:column;gap:.6rem;padding:0 1.4rem 1.4rem;animation:fadeIn .3s ease}.game-screen{height:100%;display:flex;flex-direction:column}.game-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.55rem 1rem;background:var(--bg-raised);border-bottom:1px solid var(--panel-edge);z-index:5}.game-world-title{font-family:var(--font-display);color:var(--amber);letter-spacing:.08em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.game-header-right{display:flex;align-items:center;gap:.6rem}.game-header-right .btn{padding:.4rem .9rem;font-size:.9rem}.game-main{flex:1;min-height:0;position:relative}.scene-view{position:relative;width:100%;height:100%;animation:fadeIn .3s ease}.scene-room-name{position:absolute;top:1rem;left:50%;transform:translate(-50%);font-family:var(--font-display);font-size:1.15rem;letter-spacing:.14em;color:#e8dcc8d9;text-shadow:0 2px 8px #000;pointer-events:none;animation:fadeIn .8s ease}.timer{font-variant-numeric:tabular-nums;font-size:1.05rem;color:var(--ink-dim);padding:.2rem .6rem;border:1px solid var(--panel-edge);border-radius:4px}.timer--urgent{color:var(--danger);border-color:var(--danger);animation:flicker 1.2s infinite}.inventory-bar{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;padding:.55rem 1rem;background:var(--bg-raised);border-top:1px solid var(--panel-edge);min-height:3.1rem;z-index:5}.inventory-empty{color:var(--ink-faint);font-style:italic;font-size:.9rem}.inv-item{padding:.35rem .9rem;border:1px solid var(--panel-edge);border-radius:999px;background:var(--panel);color:var(--ink);font-size:.9rem;transition:border-color .2s,box-shadow .2s}.inv-item:hover,.inv-item:focus-visible{border-color:var(--amber)}.inv-item--selected{border-color:var(--amber);color:var(--amber-bright);box-shadow:0 0 10px #e0a45859}.inventory-hint{color:var(--amber);font-size:.85rem;font-style:italic;margin-left:.5rem}.toasts{position:fixed;bottom:4.4rem;left:1rem;display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;z-index:40;pointer-events:none;width:min(46vw,440px)}.toast{pointer-events:auto;display:flex;align-items:baseline;gap:.5rem;background:#17110df0;border:1px solid var(--panel-edge);border-radius:6px;padding:.7rem 1.2rem;font-family:var(--font-display);font-size:1rem;line-height:1.45;color:var(--ink);box-shadow:0 6px 24px var(--shadow);animation:toastIn .35s ease;text-align:left;cursor:pointer;transition:border-color .15s}.toast:hover,.toast:focus-visible{border-color:var(--amber)}.toast--achievement{border-color:var(--amber);color:var(--amber-bright)}.toast-star{margin-right:.5rem}.overlay-backdrop{position:fixed;inset:0;background:#050302b8;display:grid;place-items:center;z-index:30;animation:fadeIn .25s ease;padding:1rem}.overlay-panel{position:relative;width:min(94vw,640px);max-height:86vh;overflow-y:auto;padding:2rem 2.2rem}.overlay-panel h2{color:var(--amber);margin-bottom:.9rem;padding-right:2rem}.overlay-close{position:absolute;top:.9rem;right:1rem;font-size:1.1rem;color:var(--ink-dim);padding:.3rem .5rem}.overlay-close:hover{color:var(--amber-bright)}.puzzle-prompt{color:var(--ink-dim);line-height:1.55;margin-bottom:1.3rem;font-style:italic}.puzzle-solved{color:var(--amber-bright);font-family:var(--font-display);font-size:1.3rem;text-align:center;padding:1.5rem 0;animation:fadeIn .4s ease}.puzzle-attempts{color:var(--ink-faint);font-size:.82rem;margin-top:.8rem}.puzzle-body{display:flex;flex-direction:column;align-items:center;gap:1.1rem}.combo-dials{display:flex;gap:.8rem}.combo-dial{display:flex;flex-direction:column;align-items:center;gap:.3rem}.combo-arrow{color:var(--ink-dim);font-size:.85rem;padding:.25rem .7rem}.combo-arrow:hover{color:var(--amber-bright)}.combo-symbol{width:3.4rem;height:3.4rem;display:grid;place-items:center;font-size:1.7rem;font-family:var(--font-display);color:var(--amber-bright);background:var(--bg-raised);border:1px solid var(--panel-edge);border-radius:6px}.cipher-input{width:100%;max-width:24rem;padding:.7rem 1rem;font-size:1.1rem;font-family:var(--font-display);letter-spacing:.06em;color:var(--ink);background:var(--bg-raised);border:1px solid var(--panel-edge);border-radius:6px;text-align:center}.cipher-input:focus{border-color:var(--amber);outline:none}.seq-progress{display:flex;gap:.5rem}.seq-dot{width:.8rem;height:.8rem;border-radius:50%;border:1px solid var(--panel-edge);background:var(--bg-raised);transition:background .2s,box-shadow .2s}.seq-dot--lit{background:var(--amber);box-shadow:0 0 8px #e0a45899}.seq-elements{display:flex;flex-wrap:wrap;justify-content:center;gap:.7rem}.seq-el{padding:.8rem 1.2rem;border:1px solid var(--panel-edge);border-radius:6px;background:var(--panel);font-family:var(--font-display);font-size:1.05rem;transition:border-color .15s,transform .1s}.seq-el:hover{border-color:var(--amber)}.seq-el:active{transform:scale(.96)}.seq-el--pressed{border-color:var(--amber);color:var(--amber-bright)}.rotary-svg{width:min(72vw,340px);height:auto}.sockets{display:flex;flex-wrap:wrap;justify-content:center;gap:.9rem}.socket{display:flex;flex-direction:column;align-items:center;gap:.4rem;padding:.9rem 1.1rem;min-width:7.5rem;border:1px dashed var(--ink-faint);border-radius:8px;color:var(--ink-dim);transition:border-color .2s}.socket:hover{border-color:var(--amber)}.socket--filled{border-style:solid;border-color:var(--amber);color:var(--amber-bright)}.socket-label{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase}.socket-content{font-family:var(--font-display);font-size:1.05rem}.placement-inventory{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.placement-empty{color:var(--ink-faint);font-style:italic;font-size:.9rem}.hint-panel{width:100%;margin-top:1.4rem;border-top:1px solid var(--panel-edge);padding-top:.9rem}.hint-panel summary{cursor:pointer;color:var(--ink-dim);font-style:italic}.hint-panel summary:hover{color:var(--amber)}.hint-tiers{display:flex;flex-direction:column;gap:.7rem;padding-top:.9rem}.hint-text{color:var(--ink);line-height:1.5;background:var(--bg-raised);border-left:3px solid var(--amber);padding:.6rem .9rem;border-radius:0 6px 6px 0}.hint-confirm{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;color:var(--ink-dim);font-size:.92rem}.hint-confirm .btn,.hint-reveal{padding:.35rem .9rem;font-size:.88rem}.journal-panel{width:min(94vw,760px)}.journal-empty{color:var(--ink-faint);font-style:italic}.journal-columns{display:flex;flex-direction:column;gap:1.3rem}.journal-section h3{color:var(--ink-dim);font-size:.95rem;letter-spacing:.12em;text-transform:uppercase;margin-bottom:.5rem}.journal-section ul{list-style:none}.journal-entry{color:var(--ink);font-family:var(--font-display);font-size:1.05rem;padding:.35rem 0}.journal-entry:hover,.journal-entry--open{color:var(--amber-bright)}.journal-body{color:var(--ink-dim);line-height:1.6;padding:.4rem 0 .8rem 1rem;border-left:2px solid var(--panel-edge);margin-bottom:.5rem;white-space:pre-line}.menu-row{display:flex;align-items:center;gap:.9rem;margin-bottom:1.4rem}.menu-row label{color:var(--ink-dim);min-width:3.5rem}.menu-row input[type=range]{flex:1;accent-color:var(--amber)}.menu-actions{display:flex;flex-direction:column;gap:.7rem;margin-top:.5rem}.menu-confirm{display:flex;flex-direction:column;gap:.6rem;color:var(--danger)}.menu-note{margin-top:1.2rem;color:var(--ink-faint);font-size:.85rem;font-style:italic}.won-veil{position:fixed;inset:0;display:grid;place-items:center;background:radial-gradient(circle,#ff7b3838,#050302e6);z-index:50;animation:fadeIn 2s ease}.won-veil p{font-family:var(--font-display);font-size:clamp(1.4rem,4vw,2.4rem);color:var(--amber-bright);text-shadow:0 0 30px rgba(224,164,88,.7)}.victory-screen{height:100%;overflow-y:auto;padding:clamp(1.5rem,4vw,3rem);max-width:860px;margin:0 auto;animation:fadeIn 1s ease}.victory-screen h1{color:var(--amber-bright);text-align:center;font-size:clamp(2rem,5vw,3.2rem);margin-bottom:1.6rem;animation:titleGlow 5s ease-in-out infinite}.victory-epilogue{padding:1.6rem 1.9rem;line-height:1.7;color:var(--ink);font-family:var(--font-display);font-size:1.08rem;margin-bottom:1.8rem}.victory-lore{margin-top:1rem;color:var(--amber);font-style:italic}.victory-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.9rem;margin-bottom:2rem}.victory-stats div{background:var(--panel);border:1px solid var(--panel-edge);border-radius:6px;padding:.9rem;text-align:center}.victory-stats dt{color:var(--ink-faint);font-size:.8rem;letter-spacing:.1em;text-transform:uppercase;margin-bottom:.4rem}.victory-stats dd{color:var(--amber-bright);font-size:1.4rem;font-family:var(--font-display);font-variant-numeric:tabular-nums}.victory-achievements h2{color:var(--ink-dim);font-size:1.1rem;margin-bottom:.8rem}.victory-achievements ul{list-style:none;display:flex;flex-direction:column;gap:.5rem;margin-bottom:2rem}.ach{display:flex;align-items:baseline;gap:.7rem;color:var(--ink-faint);padding:.45rem .8rem;border:1px solid transparent;border-radius:6px}.ach--earned{color:var(--ink);background:var(--panel);border-color:var(--panel-edge)}.ach--earned .ach-mark{color:var(--amber)}.ach--hidden{font-style:italic}.ach-title{font-family:var(--font-display);min-width:11rem}.ach-desc{font-size:.88rem;color:var(--ink-dim)}@media(max-width:720px){.game-world-title{display:none}.overlay-panel{padding:1.4rem 1.1rem}.ach-title{min-width:0}}
