:root{color-scheme:dark;--bg:#061115;--surface:#0d1d22;--panel:#10282d;--gold:#d5b575;--muted:#9cafae;--text:#ece8da;--line:#304043;--teal:#72c9bd}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button{cursor:pointer;color:inherit}button:disabled{cursor:not-allowed;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--teal);outline-offset:5px}h1,h2,h3,p{margin:0}small{color:var(--muted)}.muted{color:var(--muted)}.gold{color:var(--gold)}.eyebrow{text-transform:uppercase;color:var(--gold)}.app-shell{max-width:1740px;margin:auto;min-height:100vh;display:grid;grid-template-columns:224px 1fr}.sidebar{padding:34px 22px;border-right:1px solid #263639;background:linear-gradient(150deg,#13272b,#081317 70%);position:sticky;top:0;height:100dvh;display:flex;flex-direction:column;gap:40px}.brand{text-align:center;padding:3px 0 24px;border-bottom:1px solid #344043}.brand-emblem{display:inline-grid;place-items:center;width:55px;height:66px;border:1px solid var(--gold);border-radius:6px 6px 23px 23px;color:var(--gold);box-shadow:0 0 25px #9d6e2a18;position:relative}.brand-name{margin-top:13px;color:#e9cf9d}.brand-sub{color:var(--gold);margin-top:4px}.side-nav{display:flex;flex-direction:column;gap:10px}.nav-button{border:1px solid transparent;background:none;padding:14px 12px;text-align:left;display:flex;gap:13px;align-items:center;color:var(--muted);border-radius:4px}.nav-button svg{width:21px;height:21px;stroke:currentColor;fill:none;stroke-width:1.5;flex-shrink:0}.nav-button.active{color:var(--gold);border-color:#c7a26b35;background:linear-gradient(90deg,#ad83451c,transparent)}.nav-button:hover{background:#ffffff08;color:var(--text)}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding-top:20px;color:var(--muted)}.sidebar-foot p{margin-top:10px}.status-dot{display:inline-block;width:6px;height:6px;background:var(--teal);border-radius:50%;margin-right:7px}.main{min-width:0;padding:0 42px 36px}.topbar{height:92px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:12px}.breadcrumb{color:var(--muted)}.resources{display:flex;gap:23px;align-items:center}.resource{display:flex;gap:9px;align-items:center;white-space:nowrap}.resource strong{color:var(--gold)}.resource .heart{color:#d99986}.icon-button{width:39px;height:39px;display:grid;place-items:center;background:none;border:1px solid var(--line);border-radius:50%;color:var(--gold)}.page-heading{display:flex;align-items:center;justify-content:space-between;padding:30px 0 25px;gap:16px}.page-heading .eyebrow{margin-bottom:8px}.page-heading p{color:var(--muted);margin-top:7px}.plain-button{border:0;border-bottom:1px solid #8a7957;background:none;color:var(--gold);padding:5px 0;white-space:nowrap}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 265px;gap:24px;align-items:start}.practice{border:1px solid #66563b80;background:radial-gradient(ellipse at 45% 38%,#173f4150,transparent 75%),#0b191e;position:relative;border-radius:8px;overflow:hidden}.practice:before{content:"";position:absolute;inset:7px;border:1px solid #b7955820;border-radius:4px;pointer-events:none}.practice-top{display:flex;align-items:center;justify-content:space-between;padding:22px 28px;border-bottom:1px solid #60747225;position:relative;z-index:1}.practice-title{color:#e8d3a6}.practice-title small{display:block;color:var(--muted);margin-top:3px}.move-counter{text-align:right;color:var(--muted)}.move-counter strong{display:block;color:var(--gold)}.mode-tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);padding:0 15px}.mode-tab{background:none;border:0;border-bottom:2px solid transparent;padding:15px;color:var(--muted)}.mode-tab.active{color:var(--gold);border-color:var(--gold)}.sort-board{min-height:390px;display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:26px 12px;align-content:center;padding:36px 25px 24px;position:relative}.flask-button{border:0;background:none;position:relative;min-width:0;padding:6px 5px 20px;transition:transform .2s,filter .2s;touch-action:manipulation}.flask-button svg{display:block;width:100%;max-height:215px;filter:drop-shadow(0 6px 7px #0008);overflow:visible}.flask-button:hover{transform:translateY(-4px)}.flask-button.selected{transform:translateY(-15px);filter:drop-shadow(0 3px 7px #6be0d955)}.flask-button.selected:after{content:"";position:absolute;width:55%;height:2px;bottom:7px;left:22.5%;background:var(--teal);box-shadow:0 0 13px var(--teal)}.flask-id{position:absolute;bottom:-2px;left:0;width:100%;text-align:center;color:#a3b0aa}.flask-button.hint{animation:hint 1s ease-in-out infinite}@keyframes hint{50%{filter:drop-shadow(0 0 9px #6be0d9)}}.flask-button.pouring{animation:pour .5s ease}@keyframes pour{50%{transform:translate(15px,-30px) rotate(24deg)}}.instruction{text-align:center;color:#d7d0ba;padding:15px 24px 18px;min-height:65px;display:grid;place-items:center}.tools{display:flex;justify-content:center;gap:10px;padding:20px 17px;border-top:1px solid #60747230;background:#06121665}.tool{background:#10272d;border:1px solid #47605d;border-radius:5px;padding:11px 12px;min-width:80px;display:flex;flex-direction:column;align-items:center;gap:7px;flex:1;max-width:145px;color:#d5dfd5}.tool .tool-symbol{color:var(--gold)}.tool:hover{background:#183c40;border-color:var(--gold)}.side-panel{display:flex;flex-direction:column;gap:19px}.quest-card,.info-card{border:1px solid #334341;border-radius:6px;background:linear-gradient(135deg,#162c2f,#0b191e);padding:24px 22px}.quest-card h3{margin:14px 0;color:#ecdbb9}.quest-card p,.info-card p{color:var(--muted)}.quest-list{list-style:none;padding:0;margin:22px 0;display:flex;flex-direction:column;gap:15px}.quest-list li{display:flex;align-items:start;gap:10px;color:var(--muted)}.quest-list li:before{content:"◇";color:#777c6b}.quest-list li.done{color:#c5dfd6}.quest-list li.done:before{content:"✓";color:var(--teal)}.quest-card button{width:100%;margin-top:7px}.button{padding:12px 20px;border:1px solid #827044;background:#1c302f;color:#e8d5aa;border-radius:4px;transition:background .2s}.button:hover{background:#29453f}.button.primary{background:linear-gradient(120deg,#e0bf80,#ac884c);color:#182320;border-color:#d5b575}.button.secondary{background:transparent;border-color:#425253;color:#bccbc5}.button.danger{border-color:#aa7460;color:#e7b8a2;background:#3b262366}.info-card h3{margin:10px 0}.tiny-line{height:1px;background:linear-gradient(90deg,transparent,#8e7545,transparent);margin:14px 0}.chapter-card{margin-top:20px;display:flex;justify-content:space-between;align-items:center;gap:15px;color:var(--muted)}.chapter-card strong{color:var(--gold)}.progress-track{height:3px;background:#2e3c3b;width:130px;margin-top:7px}.progress-track span{display:block;height:100%;background:var(--gold)}.mobile-brand,.mobile-nav{display:none}.match-board{width:min(100%,490px);display:grid;grid-template-columns:repeat(7,1fr);gap:5px;margin:23px auto;padding:12px}.seal{aspect-ratio:1;border:1px solid #50626088;border-radius:9px;position:relative;text-shadow:0 2px 3px #0009;display:grid;place-items:center;background:linear-gradient(145deg,#263c44,#101e28);color:var(--seal);touch-action:manipulation}.seal:before{content:"";position:absolute;inset:4px;border:1px solid currentColor;opacity:.24;border-radius:6px}.seal.target{background:linear-gradient(145deg,#75623f70,#24382e);border-color:#dab771}.seal.target:after{content:"";position:absolute;bottom:5px;right:5px;width:5px;height:5px;background:var(--gold);border-radius:50%}.seal.selected{outline:2px solid #a2eee0;transform:scale(1.03);z-index:1}.seal.special{box-shadow:inset 0 0 20px #dfc67766;border-color:#e6cfa0}.seal .special-tag{position:absolute;bottom:0;right:3px;color:white}.seal.closed{filter:grayscale(.6)}.seal.flash{animation:flash .55s ease}@keyframes flash{50%{transform:scale(.8);filter:brightness(2)}}.hub-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.room-card{overflow:hidden;border:1px solid #5d543c;border-radius:6px;background:#0e2026;display:flex;flex-direction:column}.room-art{height:270px;background-image:url('assets/academy.jpeg');background-size:520% auto;position:relative}.room-art:after{content:"";position:absolute;inset:0;background:linear-gradient(transparent 35%,#0e2026)}.room-content{padding:25px;margin-top:-28px;position:relative}.room-content p{color:var(--muted);margin:10px 0 22px}.room-content button{width:100%}.hub-bottom{display:grid;grid-template-columns:1.4fr 1fr;gap:20px;margin-top:24px}.hub-bottom .quest-card{min-height:200px}.quest-badge{color:var(--teal);border:1px solid #437268;padding:4px 8px;border-radius:3px;display:inline-block}.merge-layout{display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:24px}.merge-board{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;padding:15px;margin:0 auto;width:min(100%,560px)}.merge-cell{aspect-ratio:1;min-width:0;border:1px solid #334641;background:linear-gradient(135deg,#142a2c,#102022);border-radius:5px;position:relative;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:1px}.merge-cell.has-item{border-color:#8c80534d;background:radial-gradient(#2e4b45,#142c2d)}.merge-cell.selected{outline:2px solid var(--gold);z-index:1}.item-symbol{color:var(--item)}.item-rank{color:#e5cf8f}.generators{display:flex;gap:8px;padding:16px;justify-content:center}.generator{background:#18302e;border:1px solid #566347;border-radius:4px;padding:10px;color:var(--gold);flex:1}.generator small{display:block}.merge-selection{padding:12px 18px;text-align:center;min-height:82px;color:var(--muted)}.order{padding:14px 0;border-bottom:1px solid var(--line)}.order p{margin:8px 0}.order button{width:100%}.archive-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:22px 0}.document{background:linear-gradient(130deg,#25322e,#162423);border:1px solid #746747;padding:25px 23px;border-radius:4px}.document .doc-no{color:#8c8159;margin-bottom:20px}.document h3{color:#e5d6ad}.document p{color:#c0c8bb;margin:16px 0}.document .stamp{color:var(--muted);border-top:1px solid #545d4b;padding-top:12px}.archive-form{padding:27px;border:1px solid #415449;border-radius:5px;background:#102326}.archive-form label{display:flex;align-items:start;gap:12px;padding:12px 0;cursor:pointer}.archive-form input[type=checkbox]{margin-top:5px;accent-color:var(--gold);width:18px;height:18px;flex-shrink:0}.archive-form p{margin:12px 0;color:var(--muted)}.archive-form .button{margin-top:17px}.fact-row{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.fact{padding:5px 10px;border:1px solid #4c635a;border-radius:3px;color:var(--teal)}.fact.unknown{color:var(--muted);border-style:dashed}.choice-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-top:20px}.choice{padding:18px;text-align:left;border:1px solid #59694f;background:#192d2b;border-radius:4px;color:var(--text)}.choice p{color:var(--muted);margin:6px 0 0}.collection-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:20px}.character-card{border:1px solid #706342;border-radius:6px;overflow:hidden;background:#112025;padding:0;text-align:left}.portrait{height:220px;background-image:url('assets/collection.jpeg');background-size:510% auto;background-repeat:no-repeat}.character-card.locked .portrait{filter:grayscale(1) brightness(.5)}.character-identity{padding:15px}.character-identity h3{color:var(--gold)}.character-identity p{color:var(--muted);margin-top:7px}.character-symbol{height:220px;display:grid;place-items:center;background:radial-gradient(#25463e,#0d2025);color:#a89970}.character-card.locked .character-symbol{opacity:.5}.level-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:10px;padding:25px 0}.level-button{aspect-ratio:1;background:#11282b;border:1px solid #48534a;border-radius:50%;color:var(--gold);display:flex;flex-direction:column;justify-content:center;align-items:center}.level-button.current{border-color:var(--teal);box-shadow:0 0 16px #39c6b225}.level-button small{color:var(--gold)}.map-controls{display:flex;align-items:center;justify-content:space-between;gap:16px}.map-controls input{width:95px;background:#142c2d;color:var(--gold);border:1px solid #4c5b4a;padding:9px;border-radius:3px}.map-mode{color:var(--muted)}.dialog-backdrop{position:fixed;inset:0;background:#020a0fdc;backdrop-filter:blur(7px);display:grid;place-items:center;padding:24px;z-index:50}.dialog{width:min(100%,600px);max-height:90dvh;overflow:auto;border:1px solid #9d8754;border-radius:9px;padding:38px;background:radial-gradient(ellipse at top,#203c3d,#0b1c22 65%);box-shadow:0 30px 100px #0008;position:relative}.dialog h2{color:#ebd4a5;margin:15px 0 20px}.dialog p{color:#c4cfc5;margin-bottom:15px}.dialog-actions{display:flex;flex-direction:column;gap:10px;margin-top:25px}.dialog-close{position:absolute;right:15px;top:12px;border:0;background:none;color:var(--muted)}.victory-mark{color:var(--teal);text-align:center}.stars{text-align:center;color:var(--gold);margin:20px 0}.settings-row{display:flex;justify-content:space-between;align-items:center;padding:15px 0;border-bottom:1px solid var(--line)}.switch{padding:6px 12px;border:1px solid #4b6d5c;border-radius:20px;background:#17342f;color:var(--teal);min-width:72px}.storage-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:18px 0}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%) translateY(20px);background:#183b37;color:#f0e7d0;border:1px solid #618778;padding:13px 24px;max-width:min(90vw,680px);border-radius:5px;z-index:100;opacity:0;pointer-events:none;transition:.2s}#toast.show{opacity:1;transform:translateX(-50%)}.loading{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:20px}.empty-state{border:1px dashed #48594a;padding:50px 25px;text-align:center;color:var(--muted)}.empty-state h2{margin-bottom:15px;color:var(--gold)}.task-link{color:var(--gold)}.warning{padding:12px;border:1px solid #a87851;color:#e5c496;background:#36271d}.evidence-note{margin-top:20px;border-left:2px solid var(--gold);padding-left:17px;color:var(--muted)}.seal-guide{display:flex;justify-content:center;gap:12px;color:var(--muted);padding:0 15px 15px}.inventory-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.inventory-actions button{padding:8px 13px}.narrative{color:#dbd7c4!important}.mode-count{color:var(--muted);margin-top:7px}.mobile-nav button{border:0;background:none;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:5px}.mobile-nav svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.4}.mobile-nav button.active{color:var(--gold)}
@media(min-width:1450px){.main{padding:0 55px 40px}.workspace{grid-template-columns:minmax(0,1fr) 300px}.sort-board{padding:42px 45px;min-height:445px}}
@media(max-width:1150px){.app-shell{grid-template-columns:180px 1fr}.sidebar{padding:28px 13px}.main{padding:0 25px 30px}.workspace{grid-template-columns:minmax(0,1fr) 225px;gap:16px}.quest-card,.info-card{padding:20px 16px}.sort-board{gap:16px 5px;padding:30px 12px}.tools{gap:6px;padding:16px 12px}.tool{min-width:0;padding:10px 6px}.hub-grid{gap:12px}.room-content{padding:18px}.collection-grid{grid-template-columns:repeat(3,1fr)}.merge-layout{grid-template-columns:minmax(0,1fr) 230px}}
@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.main{padding:0 24px 100px}.topbar{height:80px}.breadcrumb{display:none}.mobile-brand{display:block;color:var(--gold)}.resources{gap:15px}.mobile-nav{display:flex;justify-content:space-around;position:fixed;bottom:0;left:0;right:0;padding:12px 10px max(13px,env(safe-area-inset-bottom));background:#091a20f2;border-top:1px solid #6d654555;backdrop-filter:blur(15px);z-index:15}.workspace{grid-template-columns:minmax(0,1fr) 235px}.page-heading{padding-top:23px}.flask-button svg{max-height:190px}#toast{bottom:88px}.level-grid{grid-template-columns:repeat(8,1fr)}}
@media(max-width:680px){.main{padding:0 15px 95px}.topbar{height:68px}.mobile-brand{max-width:110px}.resources{gap:12px}.resource{gap:5px}.resource-label{display:none}.page-heading{align-items:end;gap:10px;padding:22px 2px 18px}.workspace,.merge-layout{grid-template-columns:1fr}.side-panel{margin-top:0}.workspace>.side-panel .info-card{display:none}.workspace>.side-panel .quest-card{padding:20px}.quest-list{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.quest-card h3{margin:9px 0}.sort-board{min-height:335px;padding:25px 16px 20px;gap:22px 7px}.flask-button svg{max-height:184px}.practice-top{padding:18px 20px}.mode-tab{padding:12px 11px}.mode-tabs{justify-content:center}.instruction{min-height:65px;padding:12px 19px}.tools{gap:7px;padding:14px 10px}.tool{min-width:0;gap:7px}.hub-grid{grid-template-columns:1fr}.room-card{display:grid;grid-template-columns:34% 1fr}.room-art{height:100%;min-height:240px;background-size:auto 190%;}.room-content{margin-top:0;padding:22px 20px}.hub-bottom{grid-template-columns:1fr}.archive-grid{grid-template-columns:1fr}.document{padding:20px}.document .doc-no{margin-bottom:10px}.choice-grid{grid-template-columns:1fr}.archive-form{padding:20px}.collection-grid{grid-template-columns:repeat(2,1fr);gap:12px}.portrait,.character-symbol{height:220px}.level-grid{grid-template-columns:repeat(5,1fr);gap:12px}.map-controls{flex-wrap:wrap}.dialog{padding:30px 24px}.dialog-backdrop{padding:15px}.merge-board{padding:12px;gap:5px}.generators{padding:12px;gap:5px}.generator{padding:9px 5px}.match-board{padding:11px;margin:13px auto;gap:4px}.seal{border-radius:6px}.progress-track{width:85px}.seal-guide{gap:9px}}
/* Approved location art: quiet central wall, detailed margins. */
body[data-route="play"][data-mode="sort"] .practice{background:linear-gradient(#06131b30,#06131b55),url('assets/locations/academy-lab.png') center/cover}
body[data-route="play"] .practice-top,body[data-route="play"] .mode-tabs{background:#07191ddd}
body[data-route="play"] .instruction{background:#07191de8}
body[data-route="merge"] .practice{background:linear-gradient(#06131b44,#06131b66),url('assets/locations/receiving-warehouse.png') center/cover}
body[data-route="merge"] .merge-cell{background:#102022ed}
body[data-route="archive"] .main,body[data-route="story"] .main{background:linear-gradient(#06131b88,#06131b99),url('assets/locations/academy-archive.png') center top/cover}
body[data-route="archive"] .document,body[data-route="story"] .document{background:#102321f5}
body[data-route="academy"] .room-card:first-child .room-art{background-image:url('assets/locations/academy-lab.png');background-size:cover;background-position:center!important}
body[data-route="academy"] .room-card:nth-child(3) .room-art{background-image:url('assets/locations/receiving-warehouse.png');background-size:cover;background-position:center!important}
.shop-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.shop-grid .quest-card{display:flex;flex-direction:column}.shop-grid .quest-card p{flex:1}.inventory-summary{padding:20px;background:#142b2d;border:1px solid #556957;margin-bottom:24px}.inventory-summary .button{margin-left:12px}.purchase-history{margin-top:24px}.story-list{display:grid;gap:18px;max-width:850px;margin:auto}.story-list h2{margin-top:12px}.mobile-nav button{min-width:0;flex:1}
@media(max-width:680px){.shop-grid{grid-template-columns:1fr}.inventory-summary .button{margin:12px 0 0;display:block}.story-list .document{padding:22px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
.seal-lock{position:absolute;top:1px;left:3px;color:#f4dc9b}.room-content a.button{display:block;text-align:center;text-decoration:none}@media(max-width:680px){}
.target-depth{position:absolute;right:2px;top:2px;min-width:18px;height:18px;display:grid;place-items:center;background:#efd49a;color:#172525;border-radius:50%;box-shadow:0 0 0 1px #483c24}.seal.target{box-shadow:inset 0 0 0 2px #dfba6b}
.companion-panel{margin:12px 16px;padding:14px;border:1px solid #6d8a7c;background:#102e2d;border-radius:6px}.companion-panel p,.companion-panel small{display:block;margin:8px 0}.chapter-store{padding:20px 0}.chapter-store>p{margin:14px 0}
.book-dossiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,290px),1fr));gap:18px}.book-dossiers details{margin-top:16px}.book-dossiers summary{cursor:pointer}.book-dossiers p{margin:12px 0}
