:root{color-scheme:dark;--bg:#101819;--panel:#172123;--panel2:#1d2b2c;--ink:#e4ddc8;--muted:#96a5a1;--gold:#d1b779;--line:#879b8d30;--green:#8bac95;--red:#b96e62}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC",sans-serif;font-size:14px}body{overscroll-behavior:none;background:radial-gradient(ellipse at 40% -20%,#283c3c66,transparent 65%),#101819}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{min-height:44px;border:1px solid var(--line);background:#243335;color:var(--ink);border-radius:5px;padding:9px 13px;cursor:pointer;transition:background .15s,border .15s;touch-action:manipulation}button:hover{background:#304444;border-color:#d1b77977}button:disabled{opacity:.38;cursor:default}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:3px}a{color:inherit;text-decoration:none}small,.microcopy{font-size:11px;line-height:1.6;color:var(--muted)}h1,h2,h3,h4,p{margin:0}h1,h2,h3{font-family:Georgia,"Songti SC",serif;font-weight:400}h1{font-size:31px;letter-spacing:-.4px}h2{font-size:27px}h3{font-size:19px}p{line-height:1.7}button.primary{background:linear-gradient(135deg,#cbb47e,#9c854f);color:#172122;border-color:#d3bd89;font-weight:650}button.ghost{background:transparent}.app{max-width:1440px;margin:auto;padding:0 36px}.masthead{height:86px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:15px}.brand{display:flex;align-items:center;gap:13px;flex-shrink:0}.brand>span{font:19px Georgia,serif;letter-spacing:2px}.brand b{font-weight:400;color:var(--gold)}.brand small{display:block;font:9px sans-serif;letter-spacing:2.2px;margin-top:5px}.header-end{display:flex;align-items:center;gap:9px;padding-right:0}#save-state{font-size:10px;color:var(--muted);margin-right:62px}.icon-button{width:40px;min-height:40px;padding:8px;background:transparent}.icon-button svg{display:block;width:22px;height:22px}#sound{border-color:var(--line)}.journey-heading{display:flex;justify-content:space-between;align-items:center;margin:25px 0 19px;gap:15px}.eyebrow{display:block;color:var(--gold);font-size:9px;letter-spacing:2.7px;margin-bottom:8px}.record{text-align:right;font-size:11px;color:var(--muted);line-height:1.7}.record strong{font:24px Georgia,serif;color:var(--gold);margin-right:6px}.vitals{display:flex;align-items:center;gap:25px;min-height:50px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:18px}.stat-block{min-width:120px;flex:1;max-width:235px}.stat-label{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-bottom:5px}.track{height:4px;background:#080f10}.track i{display:block;height:100%;background:#b56e60;transition:width .2s}.track.resource i{background:#6e9aa5}.vitals .currency{margin-left:auto;color:var(--gold);font-size:12px}.vitals .hero-label{font-size:11px;min-width:85px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 338px;gap:24px}.play-column{min-width:0}.viewport{position:relative;background:#0b1315;overflow:hidden;border:1px solid #89998c35;box-shadow:0 14px 50px #0004;isolation:isolate;height:clamp(380px,51vw,570px)}canvas{display:block;width:100%;height:100%;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.scene-label{position:absolute;top:17px;left:18px;pointer-events:none;font:italic 12px Georgia,serif;color:#d1bd96cc;text-shadow:0 1px 4px #000;max-width:60%}.scene-tools{position:absolute;bottom:13px;right:13px;display:flex;gap:7px}.scene-tools button{background:#0d171bcc;width:36px;min-height:36px;padding:5px;font-size:21px;color:#c7c4b0}.turn-order{display:flex;gap:7px;align-items:center;min-height:37px;font-size:10px;overflow:auto;color:var(--muted);scrollbar-width:none}.turn-token{border:1px solid var(--line);padding:5px 8px;border-radius:3px;white-space:nowrap}.turn-token.active{color:#e4ce9d;border-color:#bc9b59;background:#3c38294d}.action-bar{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.action-bar button{flex:1;min-width:65px;padding:8px 5px;font-size:11px;min-height:56px}.action-bar small{display:block;font-size:9px;margin-top:4px}.action-bar .selected{border-color:var(--gold);background:#393d30}.target-preview{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;min-height:56px;font-size:11px;color:var(--muted)}.target-preview button{min-width:116px}.explore-actions{display:flex;gap:8px;flex-wrap:wrap}.explore-actions button{flex:1;font-size:12px;min-width:100px}.quick-nav{display:flex;border-top:1px solid var(--line);margin-top:13px;padding-top:10px;gap:6px}.quick-nav button{flex:1;background:transparent;border:0;font-size:11px}.last-log{font-size:11px;line-height:1.6;color:#a6b2a7;min-height:37px;padding:7px 2px}.workbench{background:linear-gradient(150deg,#1a2729,#141e20);border:1px solid var(--line);min-width:0;align-self:start;max-height:850px;overflow:hidden}.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:15px 17px;font:18px Georgia,serif;border-bottom:1px solid var(--line)}#close-panel{display:none}.tabs{display:flex;border-bottom:1px solid var(--line);overflow:auto;scrollbar-width:none}.tabs button{flex:1;padding:10px 6px;background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;font-size:10px;white-space:nowrap}.tabs button.active{border-color:var(--gold);color:var(--gold)}.panel{padding:16px;max-height:694px;overflow:auto;scrollbar-width:thin;overscroll-behavior:contain}.panel section+section{border-top:1px solid var(--line);margin-top:19px;padding-top:17px}.panel p{font-size:12px;color:var(--muted)}.panel h3{margin-bottom:12px}.character-card{display:flex;align-items:center;gap:15px;margin-bottom:18px}.character-card img{height:115px;width:90px;object-fit:contain}.character-card h3{font-size:25px;margin-bottom:5px}.mini-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:9px}.mini-stats>div{padding:9px 10px;background:#b2b8a208;font-size:10px;color:var(--muted)}.mini-stats b{display:block;font:20px Georgia,serif;color:var(--ink);margin-top:4px}.gear-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}.gear-slot{display:flex;align-items:center;gap:9px;text-align:left;min-height:53px;padding:6px 8px;background:#0b151640;overflow:hidden}.gear-slot .sigil{font:24px Georgia,serif;width:23px;text-align:center;flex-shrink:0}.gear-slot .item-label{min-width:0}.gear-slot small{font-size:9px;display:block;line-height:1.3}.gear-slot b{font-size:10px;font-weight:500;display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.inventory-list{display:flex;flex-direction:column;gap:6px}.item-row{display:flex;align-items:center;gap:10px;text-align:left;padding:8px 10px;min-height:54px;background:#101b1c}.item-row .item-label{flex:1;min-width:0}.item-row b{font-size:11px;font-weight:500;display:block}.item-row small{font-size:9px;display:block}.item-row .grade{font-size:9px;color:var(--muted)}.filter-row{display:flex;gap:6px;margin:10px 0}.filter-row select{width:100%;padding:8px;background:#152225;color:var(--ink);border:1px solid var(--line);font-size:11px;min-height:40px}.skill-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.skill-row>div{flex:1}.skill-row h4{font-size:12px;margin-bottom:3px}.skill-row p{font-size:10px}.skill-row button{min-width:50px;font-size:11px}.power-note{border-left:2px solid var(--gold);padding:10px 12px;background:#d0b36a0a;margin:15px 0;color:#ddbd83;font-size:12px;line-height:1.7}.affix-list{list-style:none;padding:0;margin:13px 0}.affix-list li{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);font-size:12px}.affix-list small{color:var(--muted);white-space:nowrap}.item-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:17px}.item-actions button{font-size:11px;flex:1;min-width:115px}.comparison{background:#0c1516;padding:12px;margin:14px 0;font-size:11px;line-height:1.8;color:var(--muted)}.comparison .good{color:#9dc8a6}.comparison .bad{color:#d39584}.tag{display:inline-block;font-size:9px;padding:3px 5px;margin:4px 3px 0 0;border:1px solid var(--line);color:var(--muted)}.welcome{position:absolute;inset:0;padding:26px;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(#09121580,#091215ed);z-index:3}.welcome[hidden]{display:none}.welcome h2{text-align:center;font-size:36px;color:#e1c58a;margin-bottom:8px}.welcome>p{text-align:center;color:#aeb9ae;font-size:12px;max-width:510px;margin:0 auto 25px}.class-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.class-card{padding:12px 8px 15px;background:#142023b3;border:1px solid #d0b16d36;text-align:center}.class-card img{height:140px;width:100%;object-fit:contain;filter:drop-shadow(0 5px 10px #0008)}.class-card b{display:block;font:21px Georgia,"Songti SC",serif;margin:4px 0 6px;color:#d9c28e}.class-card small{font-size:10px}.choice-row{display:flex;gap:7px;flex-wrap:wrap}.choice-row button{flex:1;min-width:75px;font-size:11px}.choice-row button.selected{border-color:var(--gold);color:var(--gold)}.camp-tools{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.camp-tools button{min-height:64px;background:#24302c80;text-align:left;font-size:12px}.camp-tools small{display:block;font-size:9px}.target-list{display:flex;gap:6px;overflow:auto;margin-bottom:8px}.target-list button{flex:1;white-space:nowrap;min-width:85px;font-size:10px}.target-list button.selected{border-color:var(--gold)}footer{display:flex;justify-content:space-between;gap:15px;color:#718880;font-size:10px;padding:23px 0 26px;border-top:1px solid var(--line);margin-top:24px}dialog{border:1px solid #9eaa8855;border-radius:9px;background:linear-gradient(130deg,#213031,#121c1e);color:var(--ink);max-width:620px;width:calc(100% - 28px);max-height:85dvh;padding:26px;box-shadow:0 30px 100px #000b}dialog::backdrop{background:#03090ccd;backdrop-filter:blur(4px)}.dialog-close{position:absolute;right:10px;top:10px;width:34px;min-height:34px;padding:2px;background:transparent;font-size:25px;border:0}dialog h2{padding-right:24px;margin-bottom:6px}dialog h3{margin:19px 0 10px}dialog p{font-size:12px;color:var(--muted)}dialog select,dialog input[type=range]{width:100%;min-height:40px;background:#152225;border:1px solid var(--line);color:var(--ink);padding:5px}.settings-row{display:grid;grid-template-columns:120px 1fr;align-items:center;gap:15px;margin:12px 0;font-size:12px}.log-list{list-style:none;padding:0;margin:0}.log-list li{font-size:11px;padding:8px 0;border-bottom:1px solid var(--line);color:var(--muted)}#toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#31413a;border:1px solid #9ab29066;padding:12px 20px;border-radius:7px;z-index:200;max-width:90vw;text-align:center;font-size:12px;box-shadow:0 10px 40px #0008}.empty{padding:18px 0;text-align:center;color:var(--muted);font-size:12px}.codex-row{padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}.codex-row small{display:block}.game-info{position:absolute!important;top:23px!important;right:105px!important;font-size:11px!important}.game-info-content{font-size:12px!important}.game-info[open]{z-index:100!important}.game-info-content h2,.game-info-content h3{margin:14px 0!important;font-size:19px!important}@media(min-width:1440px){.app{padding:0 46px}.game-layout{grid-template-columns:minmax(0,1fr) 360px}}@media(max-width:1050px){.app{padding:0 22px}.game-layout{grid-template-columns:minmax(0,1fr) 290px;gap:16px}.viewport{height:500px}.brand>span{font-size:17px}}@media(max-width:760px){.app{padding:0 14px}.masthead{height:68px}.brand{gap:8px}.brand img{width:28px;height:28px}.brand>span{font-size:14px;letter-spacing:1.2px}.brand small{font-size:7px;letter-spacing:1.5px}.header-end{gap:5px}#save-state{display:none}.icon-button{width:34px;min-height:36px}.game-info{top:16px!important;right:86px!important}.journey-heading{margin:17px 0 12px}h1{font-size:25px}.eyebrow{font-size:8px;letter-spacing:1.5px;margin-bottom:5px}.record{font-size:9px}.record strong{font-size:22px}.vitals{gap:12px;margin-bottom:12px;min-height:50px}.stat-block{min-width:75px}.vitals .hero-label{min-width:62px;font-size:10px}.vitals .currency{font-size:10px;white-space:nowrap}.game-layout{display:block}.viewport{height:clamp(285px,46dvh,510px)}.workbench{display:none;position:fixed;z-index:80;top:20dvh;bottom:0;left:0;right:0;border-radius:14px 14px 0 0;box-shadow:0 -20px 100px #000d;max-height:80dvh;padding-bottom:env(safe-area-inset-bottom)}.workbench.open{display:block}#close-panel{display:block}.panel-heading{padding:8px 16px}.panel{max-height:calc(80dvh - 105px);padding-bottom:25px}.tabs button{font-size:12px}.gear-grid{grid-template-columns:repeat(2,1fr)}.gear-slot b{font-size:12px}.gear-slot small{font-size:10px}.action-bar{gap:4px}.action-bar button{min-width:48px;font-size:10px;min-height:52px;padding:6px 2px}.action-bar small{font-size:8px}.turn-order{min-height:32px;gap:4px}.turn-token{padding:4px 6px;font-size:9px}.target-preview{font-size:10px;min-height:49px;padding:6px 0}.target-preview button{min-width:91px;min-height:40px;font-size:11px}.quick-nav{margin-top:7px;padding-top:5px}.quick-nav button{font-size:10px;padding:6px 3px}.last-log{font-size:10px;min-height:25px;padding:3px 0}.explore-actions button{font-size:11px;min-height:42px;padding:7px}.welcome{padding:18px 12px}.welcome h2{font-size:28px}.welcome>p{font-size:10px;margin-bottom:17px}.class-grid{gap:7px}.class-card{padding:8px 4px 10px}.class-card img{height:96px}.class-card b{font-size:17px}.class-card small{font-size:8px}footer{font-size:9px;padding:16px 0;margin-top:12px}dialog{padding:23px 18px}.character-card img{height:95px}.scene-label{left:12px;top:12px;font-size:10px}.scene-tools{bottom:9px;right:9px}.scene-tools button{width:32px;min-height:32px;font-size:19px}}@media(max-width:370px){.app{padding:0 9px}.brand>span{font-size:12px}.brand small{letter-spacing:1px;font-size:6px}.brand img{width:25px;height:25px}.header-end{gap:2px}.vitals{gap:8px}.vitals .hero-label{min-width:52px}.stat-label{font-size:9px}.welcome h2{font-size:24px}.class-card img{height:80px}.record{max-width:76px}.action-bar small{font-size:7px}h1{font-size:22px}.game-info{right:78px!important}}@media(max-height:520px)and(min-width:761px){.viewport{height:340px}.masthead{height:60px}.journey-heading{margin:10px 0}.game-info{top:10px!important}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
/* Reserve the gap immediately left of Sound for the shared SEO Info control. */
#settings{margin-right:52px}#save-state{margin-right:0}
.brand{min-width:0;flex-shrink:1}.brand>span{min-width:0}.brand small{white-space:nowrap}@media(max-width:370px){.brand>span{font-size:10px;letter-spacing:.5px}.brand small{font-size:5px;letter-spacing:.7px}.brand{gap:6px}.masthead{gap:6px}}
#settings{margin-right:60px}
/* Exploration and encounters are distinct views, sharing only committed game state. */
canvas[hidden],.encounter-transition[hidden],.reward-feed[hidden]{display:none!important}.viewport.in-battle{border-color:#baa17077;box-shadow:0 14px 50px #0006,inset 0 0 70px #c4a86612}.encounter-transition{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:13px;background:radial-gradient(ellipse,#344039,#0a1419 80%);color:#e6c996;pointer-events:auto}.encounter-transition span{font-size:10px;letter-spacing:4px;color:#aabbb0}.encounter-transition strong{font:28px Georgia,"Songti SC",serif;text-align:center;padding:0 16px;font-weight:400}.encounter-transition i{width:86px;height:1px;background:linear-gradient(90deg,transparent,#d1b779,transparent)}.encounter-transition.playing{animation:encounter-cut .62s ease-in-out both}@keyframes encounter-cut{0%{opacity:0;transform:scale(1.04)}32%,65%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.99)}}.reward-feed{position:absolute;left:15px;bottom:15px;z-index:6;pointer-events:none;display:flex;flex-direction:column;gap:5px;max-width:min(420px,calc(100% - 30px));padding:11px 15px;background:#12201fee;border:1px solid #b7a27766;border-left:3px solid #cfb67a;border-radius:4px;box-shadow:0 5px 22px #0007;font-size:11px;line-height:1.4;overflow-wrap:anywhere}.reward-feed b{font-weight:500;font-size:12px;color:#e6d3a3}.reward-feed small{font-size:10px}.in-battle .scene-label{font-style:normal;letter-spacing:1px;color:#d8c498}@media(max-width:760px){.reward-feed{left:9px;bottom:9px;padding:8px 10px;font-size:10px;max-width:calc(100% - 18px)}.encounter-transition strong{font-size:23px}.viewport.in-battle{height:clamp(330px,48dvh,510px)}}@media(prefers-reduced-motion:reduce){.encounter-transition.playing{animation:none}}
/* Formation battles: no grid, destination picker or confirmation control. */
.in-battle .scene-tools{display:none}.action-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}.turn-order{min-height:32px}.target-preview:empty{display:none}.explore-actions>.target-list{flex:1;min-width:0}.in-battle .reward-feed{max-width:45%;font-size:10px}@media(max-width:760px){.action-bar{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.action-bar button{min-width:0;min-height:51px;font-size:11px}.viewport.in-battle{height:clamp(300px,43dvh,430px)}.in-battle .reward-feed{max-width:52%}}
.action-bar .primary small{color:#3b4937}
