:root{color-scheme:light;--ink:#253329;--text:#253329;--muted:#66705b;--panel:#fff9df;--line:#827a56;--accent:#eb922f;--mint:#77b956;--danger:#ad4032}*{box-sizing:border-box}body{margin:0;color:var(--ink);font:15px/1.45 'Trebuchet MS',system-ui,sans-serif;background:linear-gradient(#b5d7bbdf,#dbe8afda),url('assets/woodland-map.png') center/cover fixed;min-height:100dvh}button,input,select{font:inherit;color:inherit}button{cursor:pointer;background:#f5eccd;border:2px solid var(--ink);border-radius:4px;padding:9px 14px;box-shadow:0 3px 0 #25332930}button:hover:not(:disabled){background:#fff6d7;border-color:#af621a;transform:translateY(-1px)}button:disabled{cursor:default;opacity:.5}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #d26a16;outline-offset:3px}.primary{background:#f2a33e;font-weight:800}.primary:hover:not(:disabled){background:#ffc567}.ghost{background:transparent;box-shadow:none}.danger{color:var(--danger)}input,select{background:#fffcf0;border:1px solid var(--line);padding:8px;border-radius:3px;max-width:100%}h1,h2,h3,p{margin:0 0 12px}h1,h2,h3{line-height:1.15}h1,h2,.brand,.game-title,.panel>h2{font-family:ui-monospace,'Courier New',monospace;font-weight:900}h1{font-size:36px}h2{font-size:26px}h3{font-size:17px}p{color:var(--muted)}small,.eyebrow{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.eyebrow{font-weight:bold;margin-bottom:9px}.hint{font-size:13px;margin:12px 0}.muted{color:var(--muted)}.topbar{height:56px;display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:#fff5dbeF;border-bottom:3px solid var(--ink);position:relative;z-index:20;gap:12px}.top-left,.hud-actions,.actions{display:flex;align-items:center;gap:8px}.actions{flex-wrap:wrap}.brand{border:0;box-shadow:none;background:none;font-size:17px;padding:0;letter-spacing:-.5px}.brand b{color:#bc611b}.menu-toggle,.hud-button,.money{padding:5px 11px}.hud-location{font-size:12px;font-weight:800;letter-spacing:.08em}.money{background:#fbe19e;font-weight:bold}.game-menu{position:absolute;top:64px;left:20px;width:225px;padding:10px;background:var(--panel);border:3px solid var(--ink);box-shadow:5px 5px #25332950;z-index:40;display:grid;gap:6px}.game-menu button{text-align:left}.title-layout{max-width:1050px;margin:auto;padding:40px 24px 20px}.game-title{text-align:center;margin-bottom:30px}.title-kicker{font-size:12px;letter-spacing:.2em}.game-title h1{font-size:clamp(42px,6vw,75px);letter-spacing:-4px;color:#fff2ca;text-shadow:3px 3px #253329,-2px -2px #253329,2px -2px #253329,-2px 2px #253329;margin:6px 0 14px;line-height:.95}.game-title h1 span{color:#ec8d28;display:block;font-size:1.2em;letter-spacing:4px}.game-title p{font-size:12px;letter-spacing:.1em;color:#344733}.mode-select{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.mode-tile{padding:0;overflow:hidden;border:3px solid var(--ink);box-shadow:5px 5px #25332950;text-align:center;background:var(--panel)}.mode-art{height:195px;display:flex;align-items:flex-end;justify-content:center;background:url('assets/woodland-map.png') 50% 35%/cover;border-bottom:3px solid var(--ink);padding:10px}.mode-tower .mode-art{background-position:15% 85%}.mode-daily .mode-art{background-position:85% 5%}.mode-art .sprite{width:120px;height:120px;filter:drop-shadow(3px 4px 0 #25332944)}.mode-art .sprite+ .sprite{margin-left:-25px}.mode-label{padding:20px 13px}.mode-label h2{font-size:23px}.mode-label p{font-size:14px;min-height:42px}.mode-label strong{font:800 12px ui-monospace,monospace;display:block;background:#f0a348;padding:10px;border:2px solid var(--ink)}.continue-bar{display:flex;justify-content:center;align-items:center;gap:15px;margin:26px 0 0;font-size:13px}.title-progress{display:flex;justify-content:center;gap:35px;font-size:12px;margin:30px 0 20px}.title-progress b{display:block;text-align:center;font:900 22px ui-monospace,monospace}.title-footer{text-align:center;font-size:11px;color:#4d624d}.layout{max-width:1150px;margin:24px auto;padding:26px;background:#fff9e5f5;border:3px solid var(--ink);box-shadow:5px 5px #25332940}.setup-layout{max-width:930px}.setup-heading{display:flex;align-items:center;gap:24px;margin-bottom:20px}.setup-heading h1{font-size:29px;margin:5px 0}.section-title{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:16px}.section-title h2,.section-title p{margin:0}.grid,.choice-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.card{position:relative;background:#fffbe8;border:2px solid #8f8965;border-radius:4px;padding:17px}.starter{width:100%;text-align:center;box-shadow:0 4px #25332926}.starter.selected{border:3px solid #b96c1c;padding:16px;background:#fff0bd;box-shadow:0 0 0 2px #eeb15e}.crest{width:56px;height:56px;display:grid;place-items:center;font:30px serif;margin:0 0 12px;color:#9b501b}.sprite{background-image:url('assets/shinobi-atlas.png');background-size:500% 400%;background-repeat:no-repeat;image-rendering:pixelated;border:0;flex-shrink:0}.starter .sprite{width:120px;height:120px;margin:0 auto 12px}.starter h3{font-size:20px;margin-top:5px}.starter p{font-size:13px;min-height:57px}.mini-stats{display:grid;gap:5px;margin:15px 0}.mini-stats>div{display:flex;align-items:center;gap:8px;font:11px ui-monospace,monospace}.mini-stats span{width:28px}.mini-stats i{background:#ddd8bd;height:7px;flex:1}.mini-stats b{display:block;background:#7ca55a;height:100%}.mini-stats em{font-style:normal;width:26px;text-align:right}.tags{display:flex;flex-wrap:wrap;gap:4px}.tag{border:1px solid #c4b894;background:#f0ecd5;padding:2px 5px;font-size:11px;border-radius:3px}.tag.hot{color:#a74d13}.tag[title]:not([title=""]){cursor:help}.starter .tags{justify-content:center;min-height:48px}.numbers{font-size:11px;display:flex;justify-content:space-between;gap:5px;color:#647053;margin-top:4px}.settings{display:flex;gap:12px;flex-wrap:wrap;align-items:end;margin-top:15px}.settings label{display:flex;flex-direction:column;gap:6px;flex:1;min-width:140px;font-size:13px}.mission-options{padding:15px 0;border-bottom:1px solid #b7ad86;margin-top:20px}summary{cursor:pointer;font-weight:bold}.start-action{display:flex;align-items:center;justify-content:center;gap:15px;margin:22px 0}.start-action .primary{min-width:210px;font-size:18px}.start-action span{font-size:12px}.footnote{font-size:11px;border-top:1px solid #ccc3a4;padding-top:12px;margin:20px 0 0}.game-layout{max-width:1100px;margin:15px auto;padding:0 14px;display:grid;grid-template-columns:156px minmax(0,1fr) 180px;gap:14px;align-items:start}.panel{background:var(--panel);border:3px solid var(--ink);border-radius:5px;box-shadow:4px 4px #25332930;padding:10px}.panel>h2{font-size:14px;display:flex;justify-content:space-between;margin:3px 0 12px}.panel h3{font-size:13px;margin:16px 0 8px}.panel-hint{font-size:11px;text-align:center;margin:10px 0;overflow-wrap:anywhere}.squad{display:grid;gap:7px}.squad-card{position:relative;display:flex;flex-direction:column;align-items:center;width:100%;padding:7px;background:#eee9cd;border:1px solid #aca37c;box-shadow:0 2px #25332920}.squad-card .sprite{width:62px;height:62px;margin:0}.squad-card strong{font-size:13px}.unit-level{font-size:10px;color:#647053}.position-number{position:absolute;top:5px;left:7px;font:800 12px ui-monospace,monospace;color:#7d805f}.bar{height:7px;background:#d2ccaf;border:1px solid #6a765a;overflow:hidden;margin-top:6px;width:100%}.bar>div{height:100%;background:#78b74e;transition:width .2s}.hp.low>div{background:#cd6b4f}.chakra>div{background:#62b3cf}.squad-card .numbers{font-size:9px;width:100%}.empty-slot{border:1px dashed #a5a180;height:90px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;color:#8b8c71}.empty-slot span{font-size:22px;color:#b4b492}.reserve-list{font-size:12px}.panel-tabs{display:flex;gap:3px}.panel-tabs button{padding:5px 4px;flex:1;font-size:11px;border-width:1px;box-shadow:none}.panel-tabs .active{background:#f0b657;font-weight:bold}.bag-items{display:grid;grid-template-columns:1fr 1fr;gap:5px}.bag-item{position:relative;display:grid;place-items:center;padding:6px 3px;border:1px solid #b3a77b}.bag-item>span{font:28px serif;color:#9b562c}.bag-item>b{position:absolute;right:5px;top:3px;font-size:10px}.bag-item small{font-size:9px;text-transform:none;letter-spacing:0}.relic-grid{display:flex;flex-wrap:wrap;gap:5px}.relic{font:24px serif;padding:5px 9px;color:#926222}.region-seals{display:flex;gap:5px}.region-seal{border:2px solid #bab79a;background:#e0ddc2;color:#a6a183;font:bold 14px ui-monospace,monospace;border-radius:50%;width:28px;height:28px;display:grid;place-items:center}.region-seal.earned{background:#f4b64f;color:#65441c;border-color:#98703a}.route-key{border-top:1px solid #cfc4a0;margin-top:16px}.route-key>span{display:flex;align-items:center;gap:10px;font-size:11px;margin:5px 0}.route-key b{width:20px;text-align:center;font:18px serif}.map-heading{display:flex;justify-content:space-between;align-items:center;padding:5px 10px 10px}.map-heading h1{font-size:21px;margin:3px 0 0}.map-heading small{font-size:10px}.map-heading>span{font-size:11px}.route-board{height:min(750px,calc(100dvh - 140px));min-height:590px;position:relative;background:url('assets/woodland-map.png') center/100% 100%;border:3px solid var(--ink);box-shadow:5px 5px #25332940;border-radius:6px;isolation:isolate}.route-board.region-1{filter:sepia(.12)}.route-board.region-2{filter:saturate(.8)}.route-board.region-3{background-color:#667e6e;background-blend-mode:multiply}.route-connections{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.route-connections line{stroke:#3a533dad;stroke-width:2;vector-effect:non-scaling-stroke;stroke-dasharray:4 5}.route-connections .travelled{stroke:#fbe186;stroke-width:4;stroke-dasharray:none}.route-connections .available{stroke:#fff1a2;stroke-width:4}.map-node{position:absolute;transform:translate(-50%,-50%);border:0;background:transparent;box-shadow:none;padding:0;width:90px;display:flex;flex-direction:column;align-items:center;z-index:1}.map-node:hover:not(:disabled){transform:translate(-50%,-50%) scale(1.06);background:transparent}.map-node:disabled{opacity:1}.node-token{width:34px;height:34px;display:grid;place-items:center;background:#f0e8c5;border:2px solid #3b4832;box-shadow:2px 3px #26392960;border-radius:50%;font:22px serif;color:#334232}.map-node strong{font-size:10px;white-space:nowrap;background:#f9f0d5eF;padding:1px 4px;border-radius:2px;margin-top:2px;color:#3c4731;line-height:1.15}.map-node.current{z-index:2}.map-node.current .node-token{background:#ffcc5f;border-color:#794413;outline:4px solid #fff0a9a8;box-shadow:0 0 17px 8px #fff4a777}.map-node em{position:absolute;left:75px;top:10px;background:#fff0bb;border:1px solid #966423;padding:2px 4px;font:800 8px ui-monospace,monospace;font-style:normal}.map-node.visited .node-token{background:#67884c;color:white;border-color:#344b2f}.map-node.visited strong{background:#d9e0b9}.map-node.missed{opacity:.35}.map-node.pending .node-token{background:#e6af68}.node-boss .node-token{width:48px;height:48px;border-radius:5px;background:#c8b18b}.node-boss .sprite{width:51px;height:51px;margin:0}.map-caption{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:10px;color:#eff5c9;text-shadow:1px 1px #25432c}.encounter-layer{position:fixed;inset:56px 0 0;z-index:10;background:#223b286b;backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:18px}.encounter-window{width:min(880px,100%);max-height:calc(100dvh - 96px);overflow:auto;background:#fbf5dc;border:3px solid var(--ink);box-shadow:7px 7px #25332965;border-radius:6px;padding:20px}.encounter-topline{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #b9ad81;padding-bottom:10px;margin-bottom:18px;font-size:11px}.encounter-topline button{padding:4px 10px;font-size:11px}.encounter p{font-size:14px}.choice-grid{margin:18px 0}.choice{display:flex;flex-direction:column;gap:8px;text-align:left}.choice p{font-size:13px;flex:1;margin:0}.choice h3{margin:0}.choice .sprite{width:100px;height:100px;align-self:center;margin:0}.choice .crest:not(.sprite){background:#eee6be;border:2px solid #a99656;border-radius:50%}.choice button{margin-top:7px;width:100%}.return-encounter{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:12}.battle-window{max-width:970px}.battle-brief{text-align:center}.battle-brief h2{font-size:27px}.preview-armies,.arena{display:grid;grid-template-columns:minmax(0,1fr) 65px minmax(0,1fr);gap:14px;align-items:center}.preview-armies{margin:20px 0}.army{display:grid;gap:7px}.preview-fighter{width:100%;display:grid;grid-template-columns:65px 1fr;gap:0 10px;align-items:center;text-align:left;padding:7px;border:1px solid #9c9d73;background:#f3f0d8}.preview-fighter .sprite{width:65px;height:65px;grid-row:1/5;margin:0}.preview-fighter .tags{margin-top:3px}.preview-fighter strong{font-size:13px}.preview-fighter small{font-size:10px;letter-spacing:0}.preview-vs{font:900 25px ui-monospace,monospace;color:#a65b20;text-align:center}.fight-button{min-width:200px;font:900 22px ui-monospace,monospace}.battle-tip{text-align:center}.arena{background:linear-gradient(#d1e7a976,#e8dfa978),url('assets/woodland-map.png') center/cover;padding:12px;border:2px solid #69744d}.battle-side>small{display:block;text-align:center;font-size:10px;color:#2a4230;margin-bottom:6px;font-weight:bold}.combat-team{display:grid;gap:7px}.fighter{padding:7px 8px 7px 73px;min-height:100px;background:#fff9eaeF}.fighter .sprite{position:absolute;left:4px;top:7px;width:65px;height:65px;margin:0}.fighter strong{font-size:12px;display:block}.fighter>small{font-size:9px}.fighter .bar{height:6px;margin-top:3px}.fighter .numbers{font-size:9px;margin:1px 0}.fighter .cast{font-size:10px;color:#995320;min-height:14px;font-weight:bold}.fighter .tag{font-size:9px;padding:0 3px}.fighter.dead{opacity:.45}.battle-divider{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;font:900 23px ui-monospace,monospace}.battle-divider small{font:11px system-ui}.float{position:absolute;top:4px;left:16px;font-size:20px;color:#b22f26;font-weight:bold;text-shadow:1px 1px white;animation:rise .6s ease-out;z-index:3}.float.heal{color:#398142}@keyframes rise{from{transform:translateY(10px)}to{transform:translateY(-8px)}}.combat-controls{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:12px 0}.combat-controls button{padding:6px 12px;font-size:13px}.combat-log{max-height:155px;overflow:auto;background:#e9e6cf;padding:12px;font:12px/1.7 ui-monospace,monospace}.combat-log span{color:#a16a2a;margin-right:10px}.log-drawer{margin-top:12px;font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:22px 0}.stat{padding:14px;border:2px solid #b4aa81}.stat strong{display:block;font:900 28px ui-monospace,monospace;color:#9a5b1d}dialog{color:var(--ink);background:#fff8dd;border:3px solid var(--ink);border-radius:5px;padding:24px;max-width:660px;width:calc(100% - 28px);max-height:90dvh;box-shadow:8px 8px #14291950}dialog::backdrop{background:#2036279c}dialog .inventory-panel{border:0;box-shadow:none}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:12px}.modal-header h2{font-size:25px;margin:0}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.technique{padding:12px;border:1px solid #b9b08b;margin:12px 0}.technique p,.guide p{font-size:14px}.technique button{font-size:12px;padding:4px 8px}.guide h3{color:#9a5b1d;margin-top:20px}.shop-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border:1px solid #c4b78b;margin:10px 0}.shop-row p{font-size:12px;margin:4px 0 0}.shop-row button,.shop-row select{font-size:12px}.journal-row{border-bottom:1px solid #c4b78b;padding:12px 0}.journal-row strong{display:block}.progress-track{display:flex;gap:8px;margin:18px 0}.progress-track span{height:5px;flex:1;background:#d8d3b8}.progress-track .complete{background:#a0b86a}#toast{display:none;position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#fff6d1;border:2px solid var(--ink);box-shadow:4px 4px #25332950;padding:12px 20px;max-width:90vw;z-index:100}input[type=file]{width:100%;font-size:13px;margin-top:10px}
@media(max-width:850px){.game-layout{grid-template-columns:120px minmax(0,1fr) 145px;gap:8px;padding:0 8px}.panel{padding:7px}.hud-location{display:none}.mode-art{height:150px}.mode-art .sprite{width:95px;height:95px}.mode-label h2{font-size:19px}.mode-label{padding:14px 10px}.title-layout{padding:28px 18px}.title-progress{gap:20px}.preview-armies,.arena{gap:7px;grid-template-columns:minmax(0,1fr) 36px minmax(0,1fr)}.battle-divider,.preview-vs{font-size:18px}.encounter-window{padding:14px}.fighter{padding-left:55px}.fighter .sprite{width:48px;height:48px}.preview-fighter{grid-template-columns:48px 1fr}.preview-fighter .sprite{width:48px;height:48px}.preview-fighter .tag{font-size:9px}.layout{margin:15px;padding:20px}}
@media(max-width:620px){.topbar{padding:0 10px;height:52px}.brand{font-size:14px}.hud-button,.money,.menu-toggle{padding:4px 8px;font-size:12px}.title-layout{padding:22px 14px}.game-title{margin-bottom:20px}.game-title h1{font-size:47px}.mode-select{grid-template-columns:1fr;gap:12px}.mode-tile{display:grid;grid-template-columns:115px 1fr;text-align:left}.mode-art{height:132px;border-right:3px solid var(--ink);border-bottom:0;padding:0;align-items:center}.mode-art .sprite{width:86px;height:86px}.mode-art .sprite+ .sprite{display:none}.mode-label{padding:12px}.mode-label h2{font-size:20px;margin-bottom:5px}.mode-label p{font-size:12px;min-height:0;margin-bottom:9px}.mode-label strong{padding:6px;text-align:center;font-size:10px}.title-progress{font-size:10px;gap:16px}.continue-bar{flex-direction:column;gap:7px}.game-layout{grid-template-columns:1fr;max-width:520px;margin:8px auto}.team-panel{grid-row:1;padding:6px}.team-panel>h2{margin:0 0 5px}.team-panel .squad{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.team-panel .sprite{width:43px;height:43px}.team-panel .squad-card{padding:3px}.team-panel .squad-card strong{font-size:11px}.team-panel .unit-level{font-size:8px}.team-panel .numbers{font-size:8px}.team-panel .numbers span+span{display:none}.team-panel .position-number{font-size:9px;left:3px}.team-panel .empty-slot{height:100px;font-size:9px}.team-panel>.panel-hint{display:none}.map-column{grid-row:2}.map-heading{padding:3px 7px 8px}.map-heading h1{font-size:18px}.route-board{height:650px;min-height:650px}.inventory-panel{grid-row:3}.inventory-panel .bag-items{grid-template-columns:repeat(4,1fr)}.inventory-panel .route-key{display:flex;gap:8px;flex-wrap:wrap;padding-top:8px}.route-key h3{width:100%;margin:0}.encounter-layer{inset:52px 0 0;padding:8px}.encounter-window{max-height:calc(100dvh - 70px);padding:12px}.encounter h2{font-size:22px}.encounter p{font-size:13px}.choice-grid{grid-template-columns:1fr;gap:10px}.choice{display:grid;grid-template-columns:65px 1fr;column-gap:12px;padding:12px}.choice .crest{grid-column:1;grid-row:1/5;width:60px;height:60px}.choice>*:not(.crest){grid-column:2}.choice h3{font-size:16px}.choice button{margin:0}.choice .tags{font-size:10px}.grid{grid-template-columns:1fr}.starter{text-align:left;display:grid;grid-template-columns:85px 1fr;gap:3px 12px}.starter .sprite{width:85px;height:85px;grid-row:1/5;margin:0}.starter>*:not(.sprite){grid-column:2}.starter p{min-height:0;margin:0}.starter .mini-stats{margin:5px 0}.starter .tags{min-height:0;justify-content:flex-start}.starter .numbers{grid-column:1/3}.setup-heading{gap:12px}.setup-heading h1{font-size:23px}.setup-layout{margin:12px;padding:15px}.setup-layout .section-title{font-size:12px}.section-title{flex-wrap:wrap}.start-action{flex-direction:column}.preview-armies,.arena{grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);gap:4px}.preview-fighter{display:flex;flex-direction:column;text-align:center;padding:5px}.preview-fighter .tags{justify-content:center}.preview-fighter .sprite{width:60px;height:60px}.preview-fighter small{font-size:8px}.preview-fighter strong{font-size:11px}.preview-vs,.battle-divider{font-size:13px}.battle-divider small{font-size:9px}.arena{padding:5px}.fighter{padding:5px;min-height:142px;text-align:center}.fighter .sprite{position:static;width:47px;height:47px;margin:0 auto}.fighter strong{font-size:10px}.fighter .numbers{font-size:8px}.fighter>small{font-size:8px}.fighter .tags{justify-content:center}.combat-controls{flex-wrap:wrap}.combat-controls .actions{gap:5px}.combat-controls button{font-size:11px;padding:5px 8px}.stats{grid-template-columns:1fr 1fr}.shop-row{flex-wrap:wrap}.detail-grid{grid-template-columns:1fr}.layout{padding:16px}.layout h1{font-size:28px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.preview-fighter{margin:6px 0}.battle-side>h3{font-size:12px;text-align:center;margin:0 0 6px}.battle-divider>span{font-size:14px;overflow-wrap:anywhere}.preview-armies>div>h3{font-size:14px}.preview-fighter .bar{grid-column:2}.preview-fighter .tags{grid-column:2}.preview-fighter .sprite{grid-row:1/5}.battle-brief p{font-size:13px}
.empty-slot{transition:background .15s,border-color .15s}.empty-slot:has(+ *){cursor:copy}.empty-slot.drag-over,.empty-slot:hover{background:#fff0ad;border-color:#b96c1c;border-style:solid;box-shadow:inset 0 0 0 2px #e5a54c}.empty-slot small{font-size:9px;margin-top:3px;color:#a26b2b;letter-spacing:.04em}
.expanded-sprite{background-image:url('assets/expanded-shinobi.png');background-size:600% 600%}.enemy-sprite{background-image:url('assets/enemies.png');background-size:400% 300%}.rarity{display:inline-block;border:1px solid var(--rarity);color:var(--rarity);background:#fff9e9;padding:2px 7px;font:bold 11px ui-monospace,monospace;border-radius:3px;align-self:start;margin-bottom:6px}.starter .rarity{margin:auto auto 6px}.starter-collection{max-height:60vh;overflow:auto;padding:4px}.starter-collection .starter p{min-height:0}.starter-collection .starter{align-content:start}.training-note{font-size:11px!important;color:#8c6025;margin:8px 0!important}.academy-banner{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:22px;font-size:12px}.academy-wallet{padding:15px;background:#f5df9e;border:2px solid #9f8548;display:flex;gap:25px;align-items:center;margin-bottom:15px}.academy-wallet strong{font:900 23px ui-monospace,monospace;white-space:nowrap}.academy-wallet span{font-size:13px}.academy-grid{display:grid;grid-template-columns:260px 1fr;gap:22px;margin:22px 0}.academy-roster{max-height:640px;overflow:auto;display:flex;flex-direction:column;gap:7px}.academy-roster button{display:flex;align-items:center;gap:12px;text-align:left}.academy-roster .sprite{width:48px;height:48px;margin:0}.academy-roster small{display:block}.academy-roster .selected{background:#f4cc82;border-color:#b07827}.academy-character{display:flex;gap:16px;align-items:center}.academy-character .sprite{width:95px;height:95px}.upgrade-meter{display:flex;gap:3px;margin:14px 0}.upgrade-meter i{height:12px;flex:1;border:1px solid #a29462;background:#e1dbc1}.upgrade-meter .filled{background:#e89c35}.upgrade-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px solid #d0c39c}.upgrade-row p{font-size:12px;margin:4px 0}.upgrade-row button{font-size:12px;min-width:115px}.bank-reward{padding:15px;background:#f3e1a8;border:2px solid #b89b50;margin:16px 0}.bank-reward p{margin:8px 0}.map-node em{left:50%;top:-15px;transform:translateX(-50%)}.route-connections line{stroke-width:2.5;stroke:#354e38}.route-connections .travelled{stroke:#fbe186;stroke-width:4}.route-connections .available{stroke:#fff1a2;stroke-width:4}.route-board{min-height:650px}.empty-slot{cursor:copy}@media(max-width:620px){.academy-grid{grid-template-columns:1fr}.academy-roster{display:grid;grid-template-columns:repeat(3,1fr);max-height:190px;gap:5px}.academy-roster button{padding:5px;flex-direction:column;gap:1px;font-size:10px}.academy-roster .sprite{width:40px;height:40px}.academy-wallet{flex-direction:column;gap:7px;align-items:start}.academy-banner{flex-direction:column;gap:7px}.starter-collection{max-height:65vh}.bank-money{font-size:10px}.hud-actions{gap:4px}.brand{font-size:12px}.top-left{gap:4px}.topbar{gap:5px}}
.sprite{position:relative;background-image:none!important;overflow:hidden}.sprite-cell{position:absolute;inset:0;overflow:hidden;clip-path:inset(2% 4% 9% 4%)}.sprite-cell img{position:absolute;left:0;top:0;max-width:none;object-fit:fill;image-rendering:pixelated;pointer-events:none}.silhouette .sprite{filter:brightness(0);opacity:.6}.undiscovered{display:flex;flex-direction:column;align-items:center;text-align:center}.undiscovered .sprite{width:90px;height:90px}.mode-art{position:relative}.mode-tile:disabled{opacity:1}.tower-lock{position:absolute;inset:0;background:#0009;color:white;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;font-weight:800}.tower-lock b{font-size:40px;margin-bottom:10px}.reserve-slots{display:grid;gap:7px}.reserve-list h3{margin:12px 0 6px}.reserve-slots .empty-slot{height:65px}.bond-preview{font-size:13px;border-top:1px solid #c6b889;padding-top:8px}.bond-preview h4{margin:4px 0}.bond-preview p{margin:5px 0;font-size:12px}.team-styles{display:flex;flex-wrap:wrap;gap:4px}.team-styles h3{width:100%}.return-encounter,.return-encounter:hover:not(:disabled){position:sticky;display:block;bottom:12px;left:auto;transform:none;margin:12px auto;width:max-content;max-width:100%;z-index:12}.boon-description{flex:2;font-size:14px;align-self:center}.fighter.acting{outline:2px solid #e99a37}.action-track{height:4px;background:#ded8bf;margin-top:5px}.action-track b{display:block;height:100%;background:#efad45}.tag[title]{position:relative}.tag[title]:hover:after,.tag[title]:focus:after{content:attr(title);position:absolute;left:0;bottom:calc(100% + 6px);z-index:50;width:230px;max-width:80vw;background:#fff8dc;color:#253329;border:2px solid #253329;padding:10px;font-size:13px;line-height:1.4;box-shadow:3px 3px #25332933}.tag[title=""]:after{display:none}@media(max-width:620px){.reserve-slots{grid-template-columns:repeat(2,1fr)}.reserve-slots .squad-card{min-height:105px}.return-encounter{bottom:8px}}
.tags{align-items:flex-start;align-content:flex-start;min-width:0}.tag{flex:0 1 auto;align-self:flex-start;max-width:100%;height:auto;min-height:0;line-height:1.4;overflow-wrap:anywhere;white-space:normal}.starter .tags{min-height:0;margin-top:5px}.tag[data-tooltip]:not([data-tooltip=""]){cursor:help}.tag[title]:hover:after,.tag[title]:focus:after{display:none}.game-tooltip{position:fixed;z-index:1000;width:max-content;max-width:min(320px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;pointer-events:none;padding:10px 12px;background:#fff8dc;color:#253329;border:2px solid #253329;border-radius:4px;box-shadow:3px 3px #25332933;font-size:14px;line-height:1.45;white-space:normal;overflow-wrap:anywhere;letter-spacing:normal;text-transform:none}.live-battle{height:min(800px,calc(100dvh - 96px));scrollbar-gutter:stable}.live-battle .arena{align-items:start}.live-battle .battle-divider{align-self:center}.live-battle .fighter{height:154px;min-height:154px;min-width:0}.live-battle .fighter>strong,.live-battle .fighter>small{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.live-battle .fighter .cast{height:28px;min-height:28px;line-height:14px;overflow:hidden}.live-battle .fighter .tags{height:30px;overflow:auto;gap:2px}.live-battle .combat-log{height:155px;max-height:155px;scrollbar-gutter:stable}@media(max-width:620px){.live-battle{height:calc(100dvh - 70px)}.live-battle .fighter{height:195px;min-height:195px}.live-battle .fighter>strong{font-size:11px}.live-battle .fighter .tags{height:30px}}
.route-outlook{display:flex;flex-wrap:wrap;gap:5px 12px;padding:10px 12px;background:#fff8dc;border:2px solid var(--ink);border-bottom:0;font-size:14px;line-height:1.4}.route-outlook>strong{width:100%;font-family:ui-monospace,monospace}.route-outlook .elite-warning{color:#963829;font-weight:bold}.route-outlook .route-hint{width:100%;font-size:12px}.map-node.reachable{opacity:1}.map-node.reachable .node-token{border-color:#fce3a2}.map-node.node-elite .node-token{border-color:#b84832}.map-node.node-recruit.reachable strong{background:#234b33;color:#fff7df}.action-feedback{grid-column:1/-1;display:grid;grid-template-rows:18px 22px 40px;min-width:0;padding:8px 10px;background:#fff0bf;border:2px solid #b36d22;border-radius:4px;text-align:left}.action-feedback small{font-size:12px;letter-spacing:.02em}.action-feedback strong{font-size:15px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.action-feedback>span{font-size:14px;line-height:20px;overflow:auto;overflow-wrap:anywhere;color:#253329}.live-battle .fighter.acting{outline:3px solid #ae5c0d;background:#fff0b9;box-shadow:0 0 0 5px #ffd77566}.live-battle .fighter.targeted{outline:3px solid #297b8e;background:#e5f4ef}.live-battle .fighter .chakra{height:4px;border-color:#8b9982}.live-battle .fighter .tags .tag{background:#f4f0df;border-color:#d1c8aa;font-size:10px}.live-battle .fighter .action-track{height:3px}.live-battle .arena{row-gap:10px}@media(max-width:620px){.route-outlook{font-size:13px;padding:8px}.action-feedback{grid-template-rows:18px 22px 60px;padding:6px}.action-feedback strong{font-size:14px}}
.live-battle{display:flex;flex-direction:column;overflow:hidden;scrollbar-gutter:auto;padding:12px;position:relative}.live-battle .encounter-topline{flex:none;margin-bottom:8px;padding-bottom:6px}.live-battle .section-title{flex:none;margin-bottom:8px}.live-battle .section-title h2{font-size:22px}.live-battle .arena{flex:1;min-height:0;grid-template-rows:auto minmax(0,1fr);gap:6px;padding:8px}.live-battle .action-feedback{grid-template-rows:16px 20px 32px;padding:5px 8px}.live-battle .action-feedback>span{font-size:12px;line-height:16px}.live-battle .battle-side{height:100%;min-height:0;display:flex;flex-direction:column}.live-battle .battle-side h3{flex:none;font-size:12px;margin:0 0 4px;text-align:center}.live-battle .combat-team{flex:1;min-height:0;grid-auto-rows:minmax(0,1fr);gap:4px}.live-battle .fighter{height:auto;min-height:0;padding:4px 6px 4px 58px;display:flex;flex-direction:column;justify-content:center;text-align:left}.live-battle .fighter .sprite{width:48px;height:48px;left:4px;top:8px}.live-battle .fighter .bar{margin-top:3px;flex:none}.live-battle .fighter .cast{height:14px;min-height:14px;line-height:14px;white-space:nowrap;text-overflow:ellipsis}.live-battle .fighter .tags{height:16px;min-height:16px;flex-wrap:nowrap;overflow:auto}.live-battle .combat-controls{flex:none;margin:6px 0;gap:5px}.live-battle .combat-controls .actions{gap:4px}.live-battle button{font-size:12px;padding:4px 7px}.live-battle>.actions{flex:none;gap:4px;margin-bottom:0!important}.live-battle>.actions:empty{display:none}.live-battle .log-drawer{flex:none;margin-top:4px}.live-battle .log-drawer[open] .combat-log{position:absolute;bottom:38px;left:12px;right:12px;height:155px;z-index:5;background:#fff8dc;border:2px solid var(--ink);box-shadow:0 2px 8px #25332955}@media(max-width:620px){.live-battle{padding:8px}.live-battle .arena{padding:4px;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr)}.live-battle .fighter{padding:3px 4px}.live-battle .fighter .sprite{position:static;width:35px;height:35px;margin:0;align-self:center}.live-battle .fighter>strong{font-size:11px}.live-battle .fighter>small{font-size:8px}.live-battle .fighter .tags .tag{font-size:8px}.live-battle .fighter .numbers{font-size:8px}.live-battle .combat-controls{flex-wrap:wrap}.live-battle .combat-controls>button{margin-left:auto}.live-battle .action-feedback{grid-template-rows:14px 18px 32px}.live-battle .action-feedback strong{font-size:12px}.live-battle .action-feedback small{font-size:10px}}@media(max-width:620px) and (max-height:740px){.live-battle .fighter .sprite{position:absolute;left:2px;top:3px;width:27px;height:27px}.live-battle .fighter>strong,.live-battle .fighter>small{padding-left:27px}.live-battle .fighter .cast{font-size:9px;height:12px;min-height:12px;line-height:12px}.live-battle .fighter .tags{height:12px;min-height:12px}.live-battle .fighter .tags .tag{line-height:10px;padding:0 2px}.live-battle .fighter .bar{margin-top:2px}}
@media(min-width:621px) and (max-height:800px){.live-battle .combat-team{grid-template-columns:repeat(2,minmax(0,1fr))}.live-battle .fighter{padding-left:39px}.live-battle .fighter .sprite{width:32px;height:32px}}
@media(max-width:620px) and (max-height:740px){.live-battle .combat-team{grid-template-columns:repeat(2,minmax(0,1fr))}.live-battle .fighter .sprite{position:static;width:27px;height:27px}.live-battle .fighter>strong,.live-battle .fighter>small{padding-left:0}.live-battle .fighter>strong{font-size:10px}.live-battle .fighter .numbers{font-size:7px}}
@media(max-width:620px){.live-battle .combat-team{grid-template-columns:repeat(2,minmax(0,1fr))}}
.game-tooltip{white-space:pre-line}.bond-preview{margin:4px 0}.bond-preview .tag{background:#e5edce;border-color:#819258;font-size:11px}.mission-money{display:flex;align-items:center;gap:5px;background:#ffcc58;border-color:#98551b;box-shadow:0 0 0 2px #fff0ac,0 3px #25332930;font-size:19px;padding:4px 10px}.mission-money>span{font-size:10px;font-weight:bold;text-transform:uppercase}.topbar .bank-money{background:#eee9d4;font-size:11px;padding:5px 7px}.tower-progress{display:grid;gap:5px;margin-top:14px;padding:10px;background:#263b48;color:#ffdf8d;border:2px solid #d7a653}.tower-progress small{color:#cfdbdc}.tower-progress strong{font:900 22px ui-monospace,monospace}.tower-progress span{font-size:11px}.tower-board{background:repeating-linear-gradient(0deg,#18303be8 0 45px,#38535ae8 46px 48px),url('assets/woodland-map.png') center/cover!important;border-color:#d0aa69!important;filter:none!important}.tower-board .map-node strong{background:#203c47;color:#ffe3a3}.tower-board .node-token{background:#506773;color:#fff2bd;border-color:#e2ba70}.tower-board .map-node.current .node-token{background:#f2bf5a;color:#263b48}.starter .sprite{width:80px;height:80px}.choice .sprite{width:68px;height:68px}.mode-art .sprite{width:88px;height:88px}.archive .sprite{width:48px;height:48px}.sprite img{image-rendering:auto}@media(max-width:620px){.mission-money{font-size:16px;padding:3px 5px}.mission-money>span{font-size:8px;max-width:38px;line-height:1.1}.topbar{gap:4px;padding:0 5px}.topbar .hud-actions{gap:5px}.topbar .bank-money{font-size:9px;padding:3px}.topbar .brand{font-size:12px}.starter .sprite{width:60px;height:60px}.choice .sprite{width:56px;height:56px}}
.squad-card .sprite{width:48px;height:48px}.archive-layout .card>.sprite{width:48px;height:48px}.mode-tower .mode-art{background:repeating-linear-gradient(0deg,#263d49 0 28px,#42565d 29px 31px);border-color:#b59a69}.mode-tower .mode-label{background:#e6e6d6}
.live-battle .battle-side{justify-content:center}.live-battle .combat-team{flex:0;grid-template-columns:minmax(0,1fr);grid-auto-rows:auto;align-content:center}.live-battle .combat-team:has(>.fighter:nth-child(3)){grid-template-columns:repeat(2,minmax(0,1fr))}.live-battle .fighter{height:142px;min-height:142px;justify-content:flex-start;padding:6px 7px 6px 42px}.live-battle .fighter .sprite{width:32px;height:32px;top:6px}.live-battle .fighter>strong,.live-battle .fighter>small{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere;flex:none;line-height:13px}.live-battle .fighter .cast{height:34px;min-height:34px;line-height:11px;font-size:10px;white-space:normal;overflow-wrap:anywhere;text-overflow:clip;flex:none}.live-battle .fighter .tags{flex:none}.live-battle .fighter .numbers{flex:none;line-height:11px;margin:1px 0}.live-battle .fighter .float{top:-12px;left:4px;font-size:14px;pointer-events:none}.live-battle .action-feedback strong{white-space:normal;text-overflow:clip;line-height:16px}.live-battle .action-feedback{grid-template-rows:16px auto 32px;min-height:78px}.live-battle .fighter .cast:empty{height:34px}@media(max-width:620px){.live-battle .fighter{height:132px;min-height:132px;padding:4px}.live-battle .fighter .sprite{position:absolute;left:3px;top:4px;width:24px;height:24px;margin:0}.live-battle .fighter>strong{padding-left:26px;line-height:11px;font-size:10px;min-height:22px}.live-battle .fighter>small{padding-left:0;line-height:10px;font-size:8px}.live-battle .fighter .cast{height:34px;min-height:34px;font-size:9px;line-height:11px}.live-battle .fighter .numbers{font-size:7px;line-height:9px}.live-battle .fighter .numbers span+span{display:inline}.live-battle .fighter .tags{height:13px;min-height:13px}.live-battle .fighter .tags .tag{font-size:8px;line-height:11px;padding:0 2px}.live-battle .fighter .bar{margin-top:2px}.live-battle .section-title h2{font-size:18px}.live-battle .action-feedback{grid-template-rows:14px auto 32px;min-height:72px}}
.cast-hint{display:none}.live-battle .fighter .cast[data-tooltip]:not([data-tooltip=""]){cursor:help}@media(max-width:620px){.live-battle .combat-team:has(>.fighter:nth-child(3)) .cast-name{display:none}.live-battle .combat-team:has(>.fighter:nth-child(3)) .cast-hint{display:inline-block;max-width:100%;padding:1px 3px;border:1px solid #bdb388;background:#f4efd9;border-radius:2px;font-size:9px;overflow-wrap:anywhere}.live-battle .combat-team:has(>.fighter:nth-child(3)) .fighter{height:142px;min-height:142px}.live-battle .combat-team:has(>.fighter:nth-child(3)) .fighter .cast{height:14px;min-height:14px;line-height:12px}.live-battle .fighter .cast .cast-name{overflow-wrap:anywhere}.live-battle .battle-divider>span{font-size:10px;writing-mode:vertical-rl}.live-battle .battle-divider small{font-size:9px}}
@media(max-width:620px) and (max-height:740px){.live-battle .fighter,.live-battle .combat-team:has(>.fighter:nth-child(3)) .fighter{height:122px;min-height:122px}.live-battle .fighter .cast-name{display:none}.live-battle .fighter .cast-hint{display:inline-block;max-width:100%;border:1px solid #bdb388;background:#f4efd9;border-radius:2px;font-size:9px;line-height:12px;padding:0 2px}.live-battle .fighter .cast,.live-battle .combat-team:has(>.fighter:nth-child(3)) .fighter .cast{height:16px;min-height:16px;line-height:14px}}
.live-battle .combat-team:has(>.fighter:nth-child(3)) .fighter .cast:has(.cast-hint){min-height:16px}
.live-battle .fighter .tags:empty{display:none}@media(max-width:620px) and (max-height:740px){.live-battle .fighter>strong{font-size:9px;line-height:10px;min-height:20px;padding-left:21px}.live-battle .fighter .sprite{width:19px;height:19px;left:2px}.live-battle .fighter .numbers{gap:0}}
.live-battle{height:auto;max-height:calc(100dvh - 96px)}.live-battle .arena{flex:none;grid-template-rows:auto auto;align-items:center}.live-battle .battle-side{height:auto}.live-battle .fighter .cast[data-tooltip=""]{visibility:hidden}@media(max-width:620px){.live-battle{height:auto;max-height:calc(100dvh - 70px)}}
@media(max-width:620px) and (max-height:740px){.live-battle{max-height:calc(100dvh - 46px)}}
.music-panel{position:fixed;right:12px;bottom:12px;z-index:100;font-size:12px}.music-panel>button{float:right;box-shadow:2px 2px #25332933}.music-panel section{clear:both;width:240px;padding:12px;background:#fff8dc;border:2px solid #253329;border-radius:4px;box-shadow:3px 3px #25332933}.music-panel section[hidden]{display:none}.music-panel small{display:block;margin:6px 0;line-height:1.4}.music-panel section>div{display:flex;gap:6px}.music-panel label{display:flex;align-items:center;gap:8px;margin-top:10px}.music-panel input{min-width:0;width:100%}.music-panel .music-status{font-size:11px;color:#706345}@media(max-width:620px){.music-panel{right:6px;bottom:6px}.music-panel>button{padding:4px 7px;font-size:11px}}
.music-minimize{float:right;font-size:10px;padding:2px 5px;margin:-4px -4px 4px 6px}
.sprite-cell{clip-path:none}.sprite-cell svg{display:block;width:100%;height:100%;overflow:hidden}.sprite-cell>img{width:100%;height:100%;object-fit:contain}
.node-token:has(.sprite){overflow:hidden}.node-token .sprite{width:28px;height:28px;margin:0}.node-boss .node-token .sprite{width:40px;height:40px}

.live-battle .fighter.acting{outline:2px solid #60c8ec;box-shadow:0 0 0 3px #60c8ec44,0 0 14px #60c8ec88}.live-battle .fighter.targeted{outline:2px solid #d69e34;background:#fff1c9;box-shadow:inset 0 0 12px #ffcf5933}.live-battle .fighter.targeted::after{content:"";position:absolute;top:-9px;right:5px;width:25px;height:25px;background:url('assets/target-crosshair.svg') center/contain no-repeat;filter:drop-shadow(0 1px 1px #241c0a) drop-shadow(0 -1px 1px #241c0a);pointer-events:none;z-index:4}.minor-gauges{display:flex;gap:3px;height:3px;margin-top:2px}.minor-gauges i{flex:1;background:#777}.minor-gauges b{display:block;height:100%;background:#8d72b9}

.fighter.awakened{border-color:#be8529}.awakening-banner{color:#895000;font-weight:bold;font-size:11px}
.live-battle .fighter.target-heal::after{background-image:url('assets/target-heal.svg')}.live-battle .fighter.target-shield::after{background-image:url('assets/target-shield.svg')}.live-battle .fighter.target-debuff::after{background-image:url('assets/target-debuff.svg')}

.beast-sprite{width:42px;height:42px;object-fit:contain;image-rendering:pixelated;float:left}.leaderboard{width:100%;border-collapse:collapse}.leaderboard th,.leaderboard td{padding:8px;text-align:left;border-bottom:1px solid #aaa}.awakening-banner{position:absolute;top:2px;right:10px;z-index:5}

.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter.beast-fighter{grid-column:1/-1;height:56px;min-height:56px;display:block;padding:4px 7px 4px 54px}.live-battle .beast-fighter .beast-sprite{position:absolute;left:4px;top:3px;width:46px;height:46px}.live-battle .beast-fighter>strong,.live-battle .beast-fighter>small{display:block;padding:0;min-height:0;line-height:11px}.live-battle .beast-fighter .bar{height:5px;margin:3px 0}
.tower-board{background:linear-gradient(#182c3655,#182c3677),url('assets/shinobi-war-map.png') center/cover!important;background-repeat:no-repeat!important}.mode-tower .mode-art{background:url('assets/shinobi-war-map.png') center/cover}
@media(max-width:620px) and (max-height:740px){.live-battle:has(.beast-fighter) .combat-team .fighter:not(.beast-fighter){height:96px;min-height:96px}.live-battle:has(.beast-fighter) .fighter>strong{min-height:12px;line-height:10px}.live-battle:has(.beast-fighter) .fighter .numbers{line-height:8px}.live-battle:has(.beast-fighter) .fighter .bar{margin-top:1px}.live-battle:has(.beast-fighter) .fighter .cast{height:14px;min-height:14px;line-height:12px}.live-battle:has(.beast-fighter) .fighter .action-track{margin-top:2px;height:2px}}
/* Training is browsed by recipient and category; only the option list scrolls. */
.encounter-window:has(.training-browser){height:min(760px,calc(100dvh - 96px));display:flex;flex-direction:column;overflow:hidden}
.encounter-window:has(.training-browser) .encounter-topline{flex:none;margin-bottom:12px}
.training-browser{display:flex;flex-direction:column;flex:1;min-height:0;text-align:left}
.training-heading{flex:none}.training-heading h2{font-size:24px;margin-bottom:6px}.training-heading p{font-size:13px;margin-bottom:14px}
.training-layout{display:grid;grid-template-columns:160px minmax(0,1fr);gap:16px;flex:1;min-height:0}
.training-roster{display:flex;flex-direction:column;gap:6px;overflow:auto;padding:2px 4px 6px 2px;border-right:1px solid var(--line)}
.training-roster button{display:flex;align-items:center;gap:7px;text-align:left;padding:6px;box-shadow:none;border:1px solid var(--line);flex:none}
.training-roster .sprite{width:38px;height:42px;flex:none;margin:0}.training-roster strong{font-size:12px;display:block}.training-roster small{display:block;font-size:10px;letter-spacing:0;text-transform:none}
.training-roster .selected,.training-categories .selected{background:color-mix(in srgb,var(--accent) 25%,var(--panel));border-color:var(--accent);box-shadow:inset 3px 0 var(--accent)}
.training-detail{display:flex;flex-direction:column;min-height:0;min-width:0}.training-character{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}.training-character strong{font-size:15px}.training-character small{font-size:10px;letter-spacing:0}
.training-categories{display:flex;gap:4px;flex-wrap:wrap;flex:none;padding-bottom:10px;border-bottom:1px solid var(--line)}
.training-categories button{font-size:11px;padding:6px 8px;box-shadow:none;border:1px solid var(--line)}.training-categories span{font-size:10px;opacity:.8;margin-left:3px}
.training-option-list{flex:1;min-height:0;overflow:auto;padding:12px 5px 6px 2px;scrollbar-gutter:stable}
.training-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;align-items:start}
.training-option{display:flex;flex-direction:column;align-items:stretch;gap:6px;text-align:left;min-width:0;padding:12px;border:1px solid var(--line);box-shadow:none;height:100%;overflow-wrap:anywhere}
.training-option-title{font-size:13px;font-weight:bold;line-height:1.3}.training-option-title small{display:block;font-size:10px;letter-spacing:0;margin-top:3px;color:var(--muted)}
.training-option-desc{font-size:12px;line-height:1.45;color:var(--muted)}.training-option-pick{font-size:11px;font-weight:bold;color:#aa5c12;margin-top:auto;padding-top:4px}
.training-technique{margin-bottom:14px}.training-technique h4{font-size:12px;margin:0 0 7px}.training-empty{padding:20px 8px;font-size:13px!important}
.training-footer{display:flex;justify-content:space-between;align-items:center;gap:8px;flex:none;border-top:1px solid var(--line);padding-top:12px;margin-top:10px}.training-footer>span{font-size:11px;color:var(--muted)}.training-footer>div{display:flex;gap:6px;flex-wrap:wrap}.training-footer button{font-size:12px;padding:7px 10px;box-shadow:none}
@media(max-width:620px){.encounter-window:has(.training-browser){padding:10px;height:calc(100dvh - 84px);max-height:calc(100dvh - 84px)}.training-layout{grid-template-columns:1fr;grid-template-rows:auto minmax(0,1fr);gap:9px}.training-roster{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;border-right:0;padding:0}.training-roster button{gap:3px;padding:4px}.training-roster .sprite{width:28px;height:32px}.training-roster strong{font-size:11px}.training-roster small{font-size:9px}.training-heading h2{font-size:20px}.training-heading p{font-size:11px;margin-bottom:9px}.training-character{margin-bottom:5px}.training-categories{gap:3px;padding-bottom:7px}.training-categories button{padding:5px;font-size:10px}.training-option{padding:9px}.training-option-title{font-size:12px}.training-option-desc{font-size:11px}.training-footer>span{display:none}.training-footer{justify-content:flex-end;padding-top:8px;margin-top:5px}}
@media(max-width:380px){.training-options{grid-template-columns:1fr}.training-roster small{font-size:8px}}
.relic-swap h2{margin-bottom:8px}.relic-incoming{border:2px solid var(--mint);background:color-mix(in srgb,var(--mint) 9%,var(--panel));padding:14px;margin:14px 0}.relic-swap-label{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:6px}.relic-incoming h3{margin-bottom:6px}.relic-incoming p{margin-bottom:6px;font-size:13px}.relic-incoming small{letter-spacing:0;text-transform:none}.relic-owned-heading{font-size:14px;margin:18px 0 8px}.relic-owned-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.relic-owned-list button{display:grid;grid-template-columns:30px minmax(0,1fr);gap:4px 8px;align-items:start;text-align:left;padding:10px;border:1px solid var(--line);background:transparent;box-shadow:none}.relic-owned-symbol{font-size:23px;color:var(--muted);grid-row:1/3}.relic-owned-list strong{font-size:12px;display:block}.relic-owned-list small{display:block;font-size:11px;letter-spacing:0;text-transform:none;margin-top:4px}.relic-owned-status{font-size:10px;grid-column:2;color:var(--muted)}.relic-owned-list .selected{border:2px solid var(--danger);padding:9px;background:color-mix(in srgb,var(--danger) 9%,var(--panel))}.relic-owned-list .selected .relic-owned-status{color:var(--danger);font-weight:bold}.relic-swap-confirm{border-top:1px solid var(--line);margin-top:16px;padding-top:12px;display:flex;flex-wrap:wrap;align-items:center;gap:10px}.relic-swap-confirm p{flex-basis:100%;margin:0;font-size:13px}.relic-confirm-button{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--panel));font-weight:bold}.relic-swap-confirm button{font-size:12px}@media(max-width:620px){.relic-owned-list{grid-template-columns:1fr}.relic-swap-confirm button{width:100%}}
.encounter-window:has(.relic-swap){height:min(820px,calc(100dvh - 96px));display:flex;flex-direction:column;overflow:hidden}.encounter-window:has(.relic-swap) .encounter-topline{flex:none;margin-bottom:12px}.relic-swap{display:flex;flex-direction:column;flex:1;min-height:0}.relic-swap>.eyebrow,.relic-swap>h2,.relic-swap>p,.relic-incoming,.relic-owned-heading,.relic-swap-confirm{flex:none}.relic-swap>p{font-size:12px;margin-bottom:6px}.relic-incoming{margin:6px 0;padding:10px}.relic-owned-heading{margin:10px 0 8px}.relic-owned-list{flex:1;min-height:0;overflow:auto;align-content:start;padding:2px 5px 3px 2px;scrollbar-gutter:stable}.relic-swap-confirm{margin-top:8px;padding-top:8px}.relic-swap-confirm p{font-size:12px}@media(max-width:620px){.relic-swap h2{font-size:20px}.relic-swap-confirm{gap:5px}.relic-swap-confirm button{padding:6px 9px}.relic-incoming p{font-size:12px}}
.overtime-banner{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:4px 12px;padding:5px 8px;border:1px solid #d18335;background:#532e16;color:#ffebbb;font-size:11px;line-height:1.4}.overtime-banner strong{color:#ffbd63}.combat-notice{flex:none;margin:4px 0;padding:6px 8px;border:1px solid #d18335;font-size:12px}

/* 0.5.3: readable status rows and centered navigation. */
.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}.topbar .hud-location{justify-self:center;text-align:center}.topbar .hud-actions{justify-self:end}.title-leaderboard{text-align:center;margin:18px auto 8px}.starter-sort-controls{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.starter-sort-controls label{display:flex;align-items:center;gap:8px;font-size:13px}
.status-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;min-width:0;overflow:visible;align-content:flex-start}.status-badge{display:inline-flex;align-items:center;gap:4px;background:var(--status-color);border:1px solid #1c2419;border-left:3px solid #1c2419;color:#172017;border-radius:2px;padding:1px 4px;font-size:10px;line-height:14px;white-space:nowrap;cursor:help}.status-badge b{font-size:11px;min-width:8px;text-align:center}.status-badges.compact .status-badge{padding:0 3px;gap:3px}.status-badges.compact .status-symbol{font-size:8px;font-weight:bold}.status-badge:focus-visible{outline:2px solid #fff;outline-offset:2px}
.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter{height:auto;min-height:148px;overflow:visible}.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter.beast-fighter{height:auto;min-height:72px}.live-battle .beast-fighter .sprite{position:absolute;left:4px;top:3px;width:46px;height:46px;margin:0}.live-battle .beast-fighter .status-badges{margin-top:4px}.sprite-cell image{image-rendering:pixelated}
@media(max-width:620px){.topbar{display:flex}.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter{height:auto;min-height:128px}.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter.beast-fighter{min-height:72px}.status-badges{gap:3px}.status-badge{font-size:8px;line-height:12px;padding:0 3px}.status-badges.compact .status-symbol{font-size:7px}.starter-sort-controls{gap:8px}.starter-sort-controls label{font-size:12px}}
.recruit-card{position:relative}.recruit-unlock-badge{position:absolute;top:10px;right:10px;display:grid;place-items:center;width:28px;height:28px;border:2px solid #a5bc70;border-radius:50%;background:#29422a;color:#f1dd88;font-size:19px;font-weight:bold;line-height:1;cursor:help}.recruit-unlock-badge:focus-visible{outline:2px solid #f1dd88;outline-offset:3px}
.live-battle .arena{flex:1;overflow:auto;align-items:start;min-height:0}.live-battle .combat-team{grid-auto-rows:auto;align-content:start}.live-battle .fighter .status-badges{flex:none}.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter .cast{height:auto;min-height:18px;line-height:12px}.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter .status-badges{margin-left:-34px}.live-battle .battle-side{justify-content:flex-start}
@media(max-width:620px){.live-battle .combat-team:has(>.fighter:nth-child(n)){grid-template-columns:minmax(0,1fr)}.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter .status-badges{margin-left:0}.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter>strong{min-height:22px}.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter .cast{min-height:14px}.live-battle .arena{align-items:start}}
/* Progress and retry: use native progress semantics and compact reward rows. */
.mastery-progress{display:grid;gap:5px;margin:12px 0;text-align:left;min-width:0}
.mastery-progress progress{width:100%;height:8px;accent-color:var(--accent,#eea348)}
.mastery-progress span{font-size:12px;line-height:1.4;color:var(--muted,#b2b8c4);overflow-wrap:anywhere}
.progress-earned,.defeat-recap{margin:18px 0;padding:20px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.progress-earned h2,.defeat-recap h2{margin-top:0}
.progress-ryo{font-size:20px}
.earned-mastery{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px}
.earned-mastery>div{padding:12px;border:1px solid var(--line);border-radius:8px;min-width:0}
.earned-mastery p{font-size:13px;margin:6px 0}
.retry-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}
@media(max-width:600px){.progress-earned,.defeat-recap{padding:14px}.retry-actions button{width:100%}.title-progress{flex-wrap:wrap}}
/* Kurama needs room for its nine-tail silhouette without enlarging every summon. */
.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter.beast-fighter.kurama-fighter{min-height:104px;padding-left:108px}
.live-battle .combat-team .fighter.kurama-fighter .sprite{width:96px;height:96px;left:4px;top:4px}
.leaderboard-scroll{overflow-x:auto}
.starter .sprite{width:104px;height:104px}
.choice .sprite{width:88px;height:88px}
.archive-layout .card>.sprite,.archive .sprite{width:64px;height:64px}
.squad-card .sprite{width:56px;height:56px}
.live-battle .fighter:not(.beast-fighter){padding-left:60px}
.live-battle .fighter:not(.beast-fighter) .sprite{width:48px;height:48px}
@media(max-width:620px){.starter{grid-template-columns:80px minmax(0,1fr)}.starter .sprite{width:80px;height:80px}.choice{grid-template-columns:72px minmax(0,1fr)}.choice .sprite{width:72px;height:72px}.live-battle .fighter:not(.beast-fighter){padding-left:50px}.live-battle .fighter:not(.beast-fighter) .sprite{width:40px;height:40px;left:3px;top:4px}.live-battle .fighter:not(.beast-fighter)>strong,.live-battle .fighter:not(.beast-fighter)>small{padding-left:0}}
@media(max-width:620px){.live-battle .combat-team:has(>.fighter:nth-child(n)) .fighter.beast-fighter.kurama-fighter{min-height:96px;padding-left:96px}.live-battle .combat-team .fighter.kurama-fighter .sprite{width:84px;height:84px}}
