*{box-sizing:border-box}body{margin:0;background:#080e15;color:#ecede0;font-family:system-ui,sans-serif;background-image:radial-gradient(ellipse at 50% 20%,#20323e,transparent 65%)}main{width:100%;max-width:490px;margin:auto;padding:14px 12px max(24px,env(safe-area-inset-bottom))}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}h1{font-family:Georgia,serif;font-weight:400;font-size:22px;letter-spacing:2px;margin:0;color:#e9d5a7}small{font-size:12px;color:#9db0b8}header small{letter-spacing:1px}.hud{padding:12px 14px 10px;border:1px solid #6d6b59;border-bottom:0;background:linear-gradient(135deg,#17222b,#0d131b);box-shadow:inset 0 1px #ffffff15}.status{display:flex;justify-content:space-between;gap:8px;font-size:14px}.status #clock{color:#e9d5a7;font-variant-numeric:tabular-nums}.timer{height:6px;background:#070b10;margin:9px 0 10px;border:1px solid #625a42;border-radius:5px;overflow:hidden}.timer div{height:100%;width:100%;background:linear-gradient(90deg,#79988d,#e9d5a7);box-shadow:0 0 7px #d5e6b0}.battle-counts{display:flex;justify-content:space-between;font-size:12px;letter-spacing:1.5px;color:#a4bbba}#board{display:grid;grid-template-columns:repeat(6,1fr);grid-template-rows:repeat(8,1fr);aspect-ratio:6/8;width:100%;gap:0;background:linear-gradient(#0b13252e,#030d184d),url('assets/forest.png') center/cover;border:1px solid #949784;box-shadow:0 16px 40px #0006;touch-action:none;user-select:none;-webkit-user-select:none;outline:none}.cell{background:transparent;border-right:1px solid #bcc5bf55;border-bottom:1px solid #bcc5bf55;display:flex;align-items:center;justify-content:center;position:relative;min-width:0;min-height:0}.cell:nth-child(6n){border-right:0}.cell:nth-child(n+43){border-bottom:0}.token,.portrait{background-image:url('assets/portraits.png');background-size:300% 200%;background-repeat:no-repeat}.token{width:94%;height:94%;border-radius:9px;border:2px solid #cad8c0;position:relative;box-shadow:0 0 7px #99eec276,0 3px 6px #000b;color:white;cursor:grab;overflow:hidden}.enemy{border-color:#ac7863;box-shadow:0 0 6px #ff9b3a30,0 3px 6px #000b;cursor:default}.unit-label{position:absolute;top:1px;left:2px;background:#081a22db;border:1px solid #b5b5a780;border-radius:4px;min-width:19px;min-height:19px;text-align:center;font-size:14px;font-weight:800;line-height:18px;color:#e7edda}.enemy .unit-label{background:#411e16e6}.hp{position:absolute;bottom:8px;right:3px;font-size:12px;font-weight:800;text-shadow:0 1px 3px #000,0 0 4px #000;background:#061018a8;border-radius:3px;padding:0 2px}.health-track{position:absolute;bottom:2px;left:3px;right:3px;height:6px;border-radius:4px;border:1px solid #05090b;background:#070c12;box-shadow:0 0 0 1px #e6ddaa55;overflow:hidden}.health-track span{display:block;height:100%;background:linear-gradient(#b8f0e1,#428f99)}.enemy .health-track span{background:linear-gradient(#f0ac72,#b23e26)}.selected{border-color:#f1ffe0;box-shadow:0 0 14px #baffd5,0 0 24px #9de6ca9c;z-index:2}.target{background:#e7c36a25;box-shadow:inset 0 0 0 2px #e7c36a,inset 0 0 22px #e7c36a70}.target .enemy{border-color:#ffe599}.focus{outline:2px solid white;outline-offset:-3px}#message{min-height:42px;font-size:14px;line-height:1.45;margin:12px 2px;color:#b8cbc9}button{font:inherit;font-size:14px;color:#e5e5d5;border:1px solid #697365;background:linear-gradient(#253b43,#15262e);border-radius:6px;padding:12px;cursor:pointer}button:hover{border-color:#ded9b3}button:focus-visible{outline:2px solid #c7f6d6;outline-offset:3px}.controls{display:flex;gap:8px}.controls button{flex:1;min-height:44px}#preview{font-size:14px;line-height:1.45;padding:10px 12px;border:1px solid #526762;border-left:3px solid #a2c5b5;background:#14232b;margin:8px 0 12px;min-height:60px;border-radius:4px}.legend{display:flex;gap:16px;font-size:13px;color:#a0b7b5;margin-top:14px}.legend span:before{content:'';display:inline-block;width:9px;height:9px;margin-right:6px;background:#a3d9c1;border-radius:2px}.legend span:last-child:before{background:#dd9973}.help{font-size:14px;line-height:1.55;color:#95abae;margin:12px 0}#unit-info{position:fixed;z-index:20;width:238px;max-width:calc(100vw - 16px);padding:12px;background:#14252bf5;border:1px solid #b4bda0;border-radius:8px;box-shadow:0 5px 20px #0008;color:#edf0df;pointer-events:none}#unit-info[hidden]{display:none}.info-heading{display:flex;align-items:center;gap:9px}#info-title{font:18px Georgia,serif;color:#e9d5a7}#info-stats{font-size:14px;color:#b9ddc7;margin-top:3px}#unit-info p{font-size:14px;line-height:1.4;margin:9px 0 0}#unit-info small{display:block;font-size:12px;color:#a8bab9;margin-top:8px}#info-portrait{width:40px;height:46px;flex-shrink:0;border:1px solid #b6c6aa;border-radius:4px}@media(min-width:700px){main{padding-top:24px;max-width:470px}}@media(max-width:350px){main{padding-left:8px;padding-right:8px}h1{font-size:18px}header small{font-size:12px;letter-spacing:0}.hp{font-size:12px}}
/* Run states and spatial enemy attacks */
#level-title{font-size:14px;letter-spacing:1px;color:#d8d3af;margin:0 0 10px}#run-upgrades{font-size:14px;color:#a6c6ba;margin:12px 0;line-height:1.4}.role-badge{position:absolute;right:2px;top:2px;background:#06151dde;font-size:12px;font-weight:800;padding:1px 3px;border-radius:3px}.danger{background:#d9463344;box-shadow:inset 0 0 12px #ff55352a}.danger:after{content:'';position:absolute;inset:3px;border:1px dashed #ef8c7466;pointer-events:none}.token{z-index:2}.token.boss{position:absolute;left:3%;top:3%;width:194%;height:194%;z-index:3;border-color:#d5a073;border-radius:12px;background-size:300% 200%}.boss .health-track{height:8px}.boss .hp{font-size:16px;bottom:13px}.boss .unit-label{font-size:20px;min-width:26px;padding:3px}.boss .role-badge{font-size:12px}#run-panel{margin:12px 0;padding:16px;background:linear-gradient(#223941,#12242e);border:1px solid #c3b684;border-radius:8px}#run-panel[hidden]{display:none}#run-panel h2{font:24px Georgia,serif;color:#ecd9ae;margin:0 0 8px}#run-panel p{font-size:16px;line-height:1.4;margin:0 0 12px}#reward-options{display:grid;gap:8px}#reward-options button{text-align:left;display:grid;gap:4px;min-height:66px}#reward-options strong{font-size:16px;color:#ecd9ae}#reward-options span{font-size:14px;line-height:1.4}#panel-restart{width:100%}#panel-restart[hidden]{display:none}button:disabled{opacity:.45;cursor:default}
/* Character selection */
#team-select[hidden]{display:none}#team-select h2{font:26px Georgia,serif;color:#e9d5a7;margin:14px 0 8px}#encounter-info{font-size:16px;color:#cbd6cb;line-height:1.4}.selection-hint{font-size:14px;color:#a9bfbd;line-height:1.5}#character-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.character-card{padding:8px;display:flex;flex-direction:column;gap:7px;text-align:left;position:relative;background:linear-gradient(#24333c,#101d27);border-color:#65706c}.character-card.picked{border-color:#cbdba9;box-shadow:0 0 0 1px #cbdba966}.character-art{width:100%;aspect-ratio:1;display:block;border-radius:4px;border:1px solid #a0aa96}.character-heading{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px}.character-heading strong{font:20px Georgia,serif;color:#e9d5a7}.character-heading>span{font-size:14px;color:#b6d9c9}.character-stats{font-size:12px;color:#a9bbb9}.character-skill{font-size:14px;line-height:1.4;flex:1}.selection-label{align-self:flex-start;font-size:12px;letter-spacing:1px;text-transform:uppercase;color:#b4c5bd;padding:3px 6px;border:1px solid #586c64;border-radius:3px}.picked .selection-label{color:#182820;background:#c3d8ad;border-color:#c3d8ad}#team-count{font-size:16px;color:#c8daba}#begin-battle{width:100%;min-height:48px;font-size:16px}main.selecting .hud,main.selecting #board,main.selecting #message,main.selecting #preview,main.selecting .controls,main.selecting .legend,main.selecting .help,main.selecting #bench,main.selecting #run-upgrades{display:none}#bench{font-size:14px;color:#9fb7bb;margin:12px 0;line-height:1.5}.supporting{border-color:#a3e9ff;box-shadow:0 0 12px #85dfff8a}
/* Live formation preview */
#board{position:relative}.formation-overlay{position:absolute;inset:0;z-index:4;pointer-events:none}.formation-overlay svg{width:100%;height:100%;display:block}.pincer-line{stroke:#ffe3a2;stroke-width:4;stroke-linecap:round;opacity:.85;filter:drop-shadow(0 0 3px #7c491a)}.support-line{stroke:#93e0ff;stroke-width:3;stroke-dasharray:7 7;opacity:.9}.pincer-endpoint{border-color:#ffe3a2;box-shadow:0 0 9px #e7c36a66}.impact-label,.heal-label{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);white-space:nowrap;font-size:14px;font-weight:850;padding:2px 4px;border-radius:4px;z-index:6;line-height:1.1;box-shadow:0 1px 4px #0009}.impact-label{color:#ffe6c5;background:#622619ed;border:1px solid #efb479}.heal-label{color:#d4ffe1;background:#173f2fed;border:1px solid #80cc9e}.boss .impact-label{bottom:24px;font-size:16px}.token:has(.impact-label),.token:has(.heal-label){z-index:5}.token.boss:has(.impact-label){z-index:5}

.splash-zone{outline:1px solid #d2a268;outline-offset:-4px;background-color:#bd793324}.splash-zone.danger{background-color:#d9463344}

#enemy-preview{font-size:14px;line-height:1.45;padding:10px 12px;border:1px solid #895b53;background:#291e21;margin:8px 0 12px;border-radius:4px;color:#e3bdb2}main.selecting #enemy-preview{display:none}.enemy-destination{outline:2px dashed #ff9e88;outline-offset:-5px}.destination-label{position:absolute;left:5px;bottom:4px;font-size:12px;color:#ffd6c8;background:#5e2925;padding:1px 3px;z-index:7;border-radius:3px}.enemy-overlay{position:absolute;inset:0;z-index:7;pointer-events:none}.enemy-overlay svg{display:block;width:100%;height:100%}.enemy-move-line{stroke:#ff9e88;stroke-width:3.5;stroke-linecap:round;opacity:.95}.enemy-attack-line{stroke:#ff937f;stroke-width:2;stroke-dasharray:4 7;opacity:.6}.push-line{stroke:#e9a9f5;stroke-width:3;stroke-dasharray:7 4;opacity:.9}.incoming-label{position:absolute;left:50%;top:24px;transform:translateX(-50%);font-size:12px;font-weight:800;white-space:nowrap;padding:2px 3px;background:#4a1a21ed;color:#ffb9ac;border-radius:3px;z-index:8;line-height:1.1}

.spell-zone{box-shadow:inset 0 0 0 2px #b890d3,inset 0 0 18px #9a53c35c}.enemy.archer{border-color:#edc789}.enemy.pusher{border-color:#df8d76}.enemy.guardian{border-color:#a5b6cd}.enemy.mage{border-color:#cba3e0}
/* Branching run map */
#run-map[hidden],#map-event[hidden],#resolution-banner[hidden]{display:none}#run-map h2{font:28px Georgia,serif;color:#e9d5a7;margin:16px 0 8px}#map-status{font-size:14px;line-height:1.4;color:#b3c9bf}#map-rows{position:relative;display:grid;gap:30px;padding:10px 0}.map-row{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.map-row:after{content:'';position:absolute;left:25%;right:25%;height:24px;top:calc(100% + 3px);border-left:1px dashed #778b72;border-right:1px dashed #778b72;border-bottom:1px dashed #778b72;pointer-events:none;opacity:.5}.map-row:last-child:after{display:none}.map-row:last-child{grid-template-columns:1fr;padding:0 18%}.map-node{min-height:132px;display:flex;flex-direction:column;text-align:left;gap:7px;border-color:#506163}.map-node small{font-size:12px;letter-spacing:1px;color:#a8bab3}.map-node strong{font:19px Georgia,serif;color:#e9d5a7}.map-node>span{font-size:14px;line-height:1.4;color:#b8c8c2}.map-node:disabled{opacity:.45}.map-node.visited{opacity:.8;border-color:#91b895}.map-row.available .map-node{border-color:#d8cb94;box-shadow:0 0 15px #d8cb9415}.map-row.available .elite{border-color:#da987e}.map-row.available .rest{border-color:#9bc7ac}.map-row.available .event{border-color:#b29bcd}#map-event{padding:16px;border:1px solid #b29bcd;background:#252435;border-radius:8px;margin:12px 0}#map-event h3{font:22px Georgia,serif;margin:0 0 8px;color:#e9d5a7}#map-event p{font-size:16px;line-height:1.4}#event-options{display:grid;gap:8px}#event-options button{min-height:48px}main.mapping .hud,main.mapping #board,main.mapping #message,main.mapping #preview,main.mapping .controls,main.mapping .legend,main.mapping .help,main.mapping #bench,main.mapping #run-upgrades,main.mapping #enemy-preview{display:none}#resolution-banner{font:18px Georgia,serif;color:#e9d5a7;padding:10px 12px;border:1px solid #a59667;border-radius:5px;background:#172d32;margin:10px 0}.acting{box-shadow:0 0 16px #f9e7a1!important;animation:attack-pulse .44s ease-in-out}.effect-pincer{animation:hit-shake .26s ease-in-out}.effect-arrow{outline:2px solid #9fe4ff;animation:hit-shake .26s ease-in-out}.effect-magic{box-shadow:0 0 20px #dcb4ff!important;animation:hit-shake .26s ease-in-out}.effect-heal{box-shadow:0 0 22px #9fffd0!important}.floating-effect{position:absolute;left:50%;top:40%;transform:translateX(-50%);color:#ffe9b5;background:#6a251cdd;font-size:18px;font-weight:850;border-radius:4px;padding:2px 4px;z-index:10;animation:float-hit .3s ease-out}.floating-effect.positive{color:#c8ffda;background:#19472ddd}.health-track span{transition:width .2s ease-out}@keyframes attack-pulse{50%{transform:scale(1.06)}}@keyframes hit-shake{25%{translate:-2px 0}75%{translate:2px 0}}@keyframes float-hit{from{opacity:.4;translate:0 6px}to{opacity:1;translate:0 -3px}}@media(prefers-reduced-motion:reduce){.acting,.effect-pincer,.effect-arrow,.effect-magic,.floating-effect{animation:none}.health-track span{transition:none}}

#map-health{font-size:14px;line-height:1.5;color:#91bfa7;background:#11252a;padding:10px;border:1px solid #3a5952;border-radius:5px}#map-restart{width:100%;margin:12px 0}

.element-rule{font-size:14px;line-height:1.4;color:#b7c8c1;margin:8px 0 12px}.element-tag{font-size:14px;padding:3px 7px;border-radius:4px;align-self:flex-start}.element-tag.fire,.element-badge.fire{background:#662f22;color:#ffd0a1}.element-tag.nature,.element-badge.nature{background:#254a35;color:#c1eac2}.element-tag.water,.element-badge.water{background:#1d405e;color:#bee7ff}.element-badge{position:absolute;left:2px;top:24px;font-size:12px;font-weight:850;line-height:16px;padding:0 3px;border-radius:3px;border:1px solid #c5cfb780;z-index:3}.incoming-label{top:24px;left:auto;right:2px;transform:none}.character-build{font-size:14px;color:#dccb95;line-height:1.4}

#push-control[hidden],#push-confirm[hidden],#push-cancel[hidden]{display:none}#push-control{padding:10px;border:1px solid #688b85;background:#142e32;border-radius:6px;margin:10px 0}.push-actions{display:flex;flex-wrap:wrap;gap:6px}.push-actions button{flex:1;padding:10px 8px;min-height:44px;font-size:14px}#push-hint{font-size:14px;line-height:1.4;color:#b9d1c7;margin:8px 0 0}.push-candidate{box-shadow:inset 0 0 0 3px #9af1e0!important}.push-destination{background:#64c59a44!important;outline:3px solid #a0efd0;outline-offset:-5px}main.mapping #push-control,main.selecting #push-control{display:none}

.element-badge{font-size:15px;line-height:20px;min-width:22px;text-align:center;padding:0 2px;border-radius:5px;box-shadow:0 1px 4px #0009}

/* Airy science-fantasy comic direction */
body{background:#bdced6;background-image:radial-gradient(ellipse at top,#e8e5d7,transparent 70%);color:#233c4b}h1{color:#263f50}header small,small{color:#4c6575}
.hud{background:#dce6e7;border-color:#516f80;box-shadow:inset 0 1px #fff9}.status #clock{color:#294f66}.battle-counts{color:#365a6a}.timer{background:#b4c9ce;border-color:#6e8f9a}.timer div{background:linear-gradient(90deg,#48808b,#89b9c3);box-shadow:none}
#board{background:url('assets/arena-comic.png') center/cover;border-color:#49697a;box-shadow:0 10px 28px #2e52632b}.cell{border-color:#3b607a55}.token,.portrait{background-image:url('assets/atlas-comic.png');background-size:400% 300%}.token{border-radius:5px;border-color:#376d82;box-shadow:0 2px 4px #17384d55}.enemy{border-color:#914d3f;box-shadow:0 2px 4px #54352c55}.token.boss{background-size:400% 300%;border-color:#914d3f}.selected{border-color:#eafcff;box-shadow:0 0 0 2px #245e79,0 0 12px #94dcf1}.focus{outline-color:#163e5e}.danger{background:#bd3f344d;box-shadow:inset 0 0 0 1px #ab352f99}.danger:after{border-color:#912f2e}.enemy-destination{outline-color:#963b31}.enemy-move-line{stroke:#ac4535}.enemy-attack-line{stroke:#9e362f;opacity:.85}.support-line{stroke:#236880}.pincer-line{stroke:#8a501b;filter:drop-shadow(0 0 2px #fff4c5)}.pincer-endpoint{border-color:#fff0b9;box-shadow:0 0 0 2px #885421}.target{background:#f4c46655;box-shadow:inset 0 0 0 2px #a97028}.spell-zone{box-shadow:inset 0 0 0 2px #775291,inset 0 0 18px #77529144}.push-candidate{box-shadow:inset 0 0 0 3px #207d84!important}.push-destination{outline-color:#207d84}
button{background:#dce7e8;color:#213f51;border-color:#648594;box-shadow:inset 0 1px #fff8}button:hover{border-color:#254d65;background:#e9f0ec}button:focus-visible{outline-color:#254d65}
#preview,#run-panel,#map-health,#push-control,#resolution-banner{background:#e4ebe7;color:#254553;border-color:#7897a0}#enemy-preview{background:#f0ddd1;color:#743c33;border-color:#ba8b7d}#unit-info{background:#edf0e6fa;color:#243e4d;border-color:#627f8c;box-shadow:0 5px 20px #254a6044}#info-title,#info-stats,#unit-info small{color:#365767}
#message,#level-title,#run-upgrades,#bench,.legend,.help,.element-rule,#map-status,#map-health,#push-hint,.selection-hint,#encounter-info{color:#3c5867}
#team-select h2,#run-map h2,#run-panel h2,#reward-options strong,#map-event h3{color:#284b61}.character-card{background:#dae5e6;border-color:#849ca7}.character-card.picked{border-color:#2c657a;box-shadow:0 0 0 1px #2c657a}.character-heading strong,.character-heading>span,.character-stats,.character-build{color:#2d5265}.selection-label{color:#3c5966;border-color:#849ca7}.picked .selection-label{background:#345f73;color:#f2f1de;border-color:#345f73}#team-count{color:#305d71}.map-node small,.map-node strong,.map-node>span{color:#2f5162}.map-row.available .map-node{border-color:#376e88;box-shadow:0 0 0 1px #376e8833}.map-row:after{border-color:#577b8d}#map-event{background:#e2deeb;color:#344956;border-color:#8f85a0}
.legend span:before{background:#376d82}.legend span:last-child:before{background:#914d3f}

#synergy-panel{margin:12px 0;padding:12px;border:1px solid #7897a0;border-radius:6px;background:#e4ebe7;color:#254553;font-size:14px;line-height:1.45}#synergy-panel strong{font-size:12px;letter-spacing:1px}#synergy-panel p{margin:8px 0 0}.synergy-status{position:absolute;left:2px;bottom:16px;z-index:6;background:#60447d;color:#fff3d9;font-size:10px;font-weight:800;padding:2px 3px;border-radius:3px}
/* Compact mobile HUD — direction C */
body{background:#152830;color:#f0e9da}main{padding:12px;max-width:490px}header{display:flex;align-items:center;justify-content:space-between;margin:0 0 6px;border-bottom:1px solid #aa86534d;padding:0 0 6px}header h1{font-size:15px;letter-spacing:2px;color:#eee4ce;margin:0}.header-actions{display:flex;gap:5px}.header-actions button{width:44px;height:44px;padding:0;font-size:22px}button{border:1px solid #a9885659;background:#203943;color:#f5ead4;border-radius:9px;min-height:44px}button:hover{background:#31505b}button:focus-visible{outline:2px solid #77d8de;outline-offset:2px}#level-title{font-size:10px;letter-spacing:1.1px;color:#c6b38e;margin:4px 0 8px}.hud{background:#20343d;border:1px solid #a9885640;border-radius:9px;padding:7px 10px;margin:0 0 8px}.status{font-size:12px;color:#f2ebd9}.timer{height:3px;margin:5px 0}.battle-counts{font-size:9px;margin:0;color:#a8c0c5}#board{border:1px solid #b49868;border-radius:9px;box-shadow:0 8px 24px #0004;overflow:hidden;margin:0 auto}main.battling{width:min(100%,calc((100svh - 322px - env(safe-area-inset-top) - env(safe-area-inset-bottom))*0.75 + 24px));padding-top:max(8px,env(safe-area-inset-top));padding-bottom:max(8px,env(safe-area-inset-bottom));margin:auto}main.battling #board{width:100%;aspect-ratio:6/8}#preview,#enemy-preview,#bench,#run-upgrades{display:none}#message{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}#resolution-banner{position:fixed;top:20%;left:50%;transform:translateX(-50%);z-index:8;max-width:90%;pointer-events:none;background:#162dede8;color:#fff1c4;border:1px solid #b69c64;border-radius:10px}#battle-summary{display:block;width:100%;margin:8px 0 6px;padding:8px 12px;text-align:left;min-height:44px;font-size:12px;color:#bde4e4}.controls{margin:6px 0;display:flex;gap:6px}.controls #pass{width:100%;background:#be9053;color:#14242a;font-weight:700}#push-control{margin:6px 0 0;padding:0;border:0;background:transparent}.push-actions{display:flex;gap:5px}.push-actions button{flex:1;font-size:11px;padding:6px}#push-hint{font-size:10px;margin:3px 0;color:#b8ced0}#push-control:not(:has(#push-confirm:not([hidden]))) #push-hint{display:none}#team-dock{display:flex;gap:5px;margin:7px 0 0}.dock-character{display:flex;align-items:center;gap:5px;flex:1;min-width:0;padding:4px;font-size:8px;text-align:left;min-height:47px}.dock-character .portrait{width:30px;height:36px;flex-shrink:0;border-radius:5px}.dock-character small{display:block;font-size:9px;color:#bcd0d0;margin-top:3px}.dock-character.fallen{opacity:.4}main.mapping #team-dock,main.mapping #battle-summary,main.selecting #team-dock,main.selecting #battle-summary{display:none}dialog{color:#f1e8d8;background:#19313a;border:1px solid #aa8758;border-radius:18px 18px 0 0;width:min(490px,100%);max-height:80svh;box-sizing:border-box;padding:20px;margin:auto auto 0;box-shadow:0 -10px 50px #0006}dialog::backdrop{background:#08151cab;backdrop-filter:blur(3px)}dialog h2{font-size:20px;color:#f3e3bd}dialog p{font-size:14px;line-height:1.6}dialog .sheet-close{float:right;font-size:12px;padding:6px 12px;margin:0 0 12px 12px}dialog .help,dialog .element-rule,dialog .legend{display:block;color:#c6d6d7;font-size:13px}dialog #synergy-panel{display:block;border:0;padding:0;background:transparent;color:#f0e6d2}dialog #synergy-panel p{color:#c3d3d5}#run-map,#team-select,#run-panel{color:#e9dfcd;background:#1c343d;border-color:#ab8b5855}.map-node,.character-card{background:#263e47;color:#ecdfc4}.character-card.picked{background:#31515a;border-color:#8bcacc}.selection-hint,#encounter-info,#map-status,#map-health,#team-count{color:#bfd0d2}.character-card .character-stats,.character-card .character-skill{color:#d3e1df}#reward-options button{background:#263e47;color:#eee4cf}#unit-info{background:#172e39;color:#e9e5d7;border-color:#a98957}#unit-info p,#unit-info small{color:#ccdadc}@media(max-width:360px){.dock-character{flex-direction:column;text-align:center}.dock-character .portrait{height:27px}.dock-character small{margin:0}main.battling{width:min(100%,calc((100svh - 338px)*.75 + 24px))}}@media(max-height:550px){main.battling{width:340px;max-width:100%}}
/* Reference composition: illustrated arena, cut bronze frames, circular party. */
:root{--ink:#071c27;--gold:#b98b4d;--paper:#efe4ce;--cyan:#42d4d1}body{background:radial-gradient(ellipse at top,#183947,#04121b 80%);color:var(--paper)}main.battling{width:min(100%,56svh,520px);max-width:520px;height:100svh;min-height:620px;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);display:flex;flex-direction:column;position:relative;background:#071c27;box-shadow:0 0 100px #0008;overflow:hidden}main.battling header{height:46px;flex:0 0 46px;padding:0 12px;margin:0;border:0;position:relative;background:linear-gradient(100deg,#0c2834,#061923)}main.battling header h1{display:none}#journey-dots{display:none;gap:12px;position:relative;align-items:center}#journey-dots:before{content:'';position:absolute;left:0;right:0;height:1px;background:#b28a4e}#journey-dots span{width:10px;height:10px;border-radius:50%;background:#071b26;border:1px solid #c6ad81;z-index:1}#journey-dots .complete,#journey-dots .current{background:#edc574;border-color:#edc574}#journey-dots .current{box-shadow:0 0 8px #f0c36f44}main.battling #journey-dots{display:flex}main.battling #level-title{position:absolute;top:15px;left:0;right:0;pointer-events:none;text-align:center;margin:0;font:17px Georgia,serif;letter-spacing:2px;color:var(--paper)}.header-actions{z-index:2}#menu-open{border:1px solid #d6aa64;border-radius:50%;background:#061b26;width:38px;height:38px;min-height:38px;font:27px Georgia,serif;color:#f6eee1}main.battling .hud{height:26px;flex:0 0 26px;border:0;border-bottom:1px solid #b98b4d;border-radius:0;padding:0 15px 7px;margin:0;position:relative;background:#071c27;box-shadow:none}main.battling .status{position:absolute;right:12px;bottom:7px}main.battling #turn,main.battling .battle-counts{display:none}main.battling #clock{font:15px Georgia,serif;color:#eee4d3}main.battling .timer{margin:0;width:calc(100% - 42px);height:9px;border:1px solid #c0a078;background:#061722;border-radius:3px}main.battling #bar{background:linear-gradient(180deg,#55e3db,#22b9bc);box-shadow:0 0 8px #35d5d077}.arena-stage{position:relative;display:flex;align-items:center;justify-content:center;background:url('assets/arena-reference.webp') center/cover;padding:55px 7% 15px;flex:1;min-height:0;overflow:hidden}.arena-stage:before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 85%,#06172266);pointer-events:none}main.battling #board{width:min(100%,calc((100svh - 332px - env(safe-area-inset-top) - env(safe-area-inset-bottom))*.75));aspect-ratio:6/8;flex:none;border:1px solid #76654b90;border-radius:0;background:linear-gradient(#f2ddb34a,#f2ddb32a);box-shadow:0 0 0 1px #eddbb349;overflow:visible;z-index:1;margin:0}#board .cell{border-color:#6e685b75;box-shadow:inset 0 0 0 1px #f9e8b72b;background-color:#e9d2aa14}.token{border-radius:4px;border:1px solid #b39558;box-shadow:inset 0 0 0 1px #ddbf8066,0 2px 5px #0008;width:92%;height:92%}.token.enemy{border-color:#e26851;box-shadow:0 0 6px #e14a3a66,inset 0 0 0 1px #ff946e}.token.selected,.token.pincer-endpoint{border-color:#76ffff;box-shadow:0 0 3px 2px #51e9e7,0 0 14px #2ef2e6aa}.token .role-badge{display:none}.token .unit-label{top:2px;right:3px;left:auto;border:0;background:#061923b3;color:#e8d8b7;font-size:10px;min-width:12px;min-height:12px;line-height:12px}.token .element-badge{left:0;right:auto;top:0;width:20px;height:20px;min-width:20px;border-radius:50%;background:#031824;border:1px solid currentColor;font-size:13px;display:grid;place-items:center;padding:1px}.element-badge.fire{color:#eb6456}.element-badge.nature{color:#40d393}.element-badge.water{color:#529ce8}.element-badge svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8}.token .hp{font-size:9px;bottom:7px;right:3px;background:#06202cb3}.token .health-track{height:5px;bottom:2px;left:2px;right:2px}.token .health-track span{background:#35d4b3}.token.enemy .health-track span{background:#ee5749}.destination-label{font-size:9px}.enemy-destination{background:#e3665030!important}.incoming-label{font-size:9px}.impact-label{font-size:11px}main.battling .battle-footer{position:relative;flex:0 0 auto;padding:0 12px 15px;margin:0;background:radial-gradient(ellipse at 45% 30%,#173541,#061924 80%);border-top:1px solid var(--gold)}.battle-footer:before{content:'';position:absolute;inset:6px;pointer-events:none;border:1px solid #b98b4d99;clip-path:polygon(20px 0,calc(100% - 20px) 0,100% 20px,100% calc(100% - 20px),calc(100% - 20px) 100%,20px 100%,0 calc(100% - 20px),0 20px)}main.battling #battle-summary{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:transparent;border:0;border-radius:0;margin:0;padding:12px 4px 10px;min-height:66px;color:#eddfc8;text-align:center}#battle-summary strong{font:18px Georgia,serif;letter-spacing:1.5px;color:#f1debb}#battle-summary span{font:15px Georgia,serif;color:#d6c9b7}.battle-actions{display:flex;gap:8px;align-items:stretch}main.battling #push-control{flex:1;margin:0}.push-actions{height:100%;display:flex;flex-wrap:wrap}.push-actions button,main.battling #pass{font:15px Georgia,serif;letter-spacing:1px;border:1px solid #bd985c;border-radius:0;clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px),0 8px);min-height:46px;padding:8px;color:#f0e8dc}.push-actions #push-toggle{background:radial-gradient(ellipse,#267384,#073441);box-shadow:inset 0 0 8px #36d9e7;font-weight:700}.push-actions #push-confirm,.push-actions #push-cancel{flex-basis:40%;min-height:36px;font-size:12px}.battle-actions .controls{flex:1;margin:0;min-width:0}main.battling #pass{background:linear-gradient(135deg,#102d38,#061924);font-weight:400}#push-hint{position:absolute;bottom:0;left:12px;right:12px;background:#071c27;z-index:3;padding:5px;margin:0}main.battling .portrait-row{display:flex;gap:10px;align-items:center;margin:11px 5px 0}main.battling #team-dock{display:flex;justify-content:space-between;gap:10px;flex:1;margin:0}.dock-character{width:clamp(42px,14vw,70px);height:clamp(42px,14vw,70px);min-height:44px;aspect-ratio:1;flex:none;position:relative;display:block;border:0;background:conic-gradient(from -90deg,#56d9b7 var(--health),#2c4852 0);border-radius:50%;padding:3px;overflow:visible;box-shadow:0 0 0 1px #d2a768}.dock-character .portrait{width:100%;height:100%;border-radius:50%;display:block;border:2px solid #0c202c}.dock-class{position:absolute;left:50%;bottom:-7px;transform:translateX(-50%);width:24px;height:24px;border:1px solid #d6af65;border-radius:50%;background:#031824;color:#e9ba66;font-size:17px;line-height:21px;text-align:center}.dock-hp{position:absolute;right:-2px;top:-3px;background:#08232ee8;border:1px solid #537079;border-radius:4px;color:#d6eee4;font-size:10px;line-height:13px;padding:0 2px}.dock-character.nature .dock-class{color:#51d6a6;border-color:#51d6a6}.dock-character.water .dock-class{color:#61a8ec;border-color:#61a8ec}#synergy-slot{flex:0 0 47px}#synergy-slot #synergy-open{width:47px;height:47px;min-height:44px;border:1px solid #d8ae67;background:#061923;border-radius:50%;padding:8px;color:#d8ae67}#synergy-open svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.3}main:not(.battling) .arena-stage{display:none}main:not(.battling) .battle-footer{display:none}main.mapping .arena-stage,main.selecting .arena-stage,main.mapping .battle-footer,main.selecting .battle-footer{display:none}main:not(.battling) #journey-dots{display:none}#run-panel{z-index:5;position:relative}button:disabled{opacity:.55}button.dock-character:disabled{opacity:.7}@media(min-width:600px){.dock-character{width:70px;height:70px}}@media(max-height:700px){main.battling{min-height:0}.arena-stage{padding-top:35px;padding-bottom:10px}main.battling #board{width:min(100%,calc((100svh - 305px)*.75))}.dock-character{width:46px;height:46px}.portrait-row{margin-top:8px!important}#battle-summary strong{font-size:16px}#battle-summary span{font-size:13px}main.battling #battle-summary{min-height:55px;padding:8px 0}.battle-footer{padding-bottom:13px!important}}@media(max-height:500px){main.battling{height:auto;min-height:640px}main.battling #board{width:260px}.arena-stage{min-height:390px}}
/* Reduce token noise; reveal precise forecast through inspection. */
.token .unit-label,.token .hp,.token .role-badge,.token .incoming-label,.destination-label,.dock-hp{display:none}.token .element-badge{width:19px;height:19px;min-width:19px}.token .health-track{height:5px}main:not(.aiming) .token .impact-label,main:not(.aiming) .token .heal-label{display:none}.synergy-status{font-size:9px;max-width:100%;padding:1px 3px}.enemy-attack-line{stroke:#d9513e;stroke-width:3;stroke-dasharray:8 6;opacity:.75;animation:attack-flow 1.6s linear infinite}.enemy-move-line{stroke:#bd7350;stroke-width:2;stroke-dasharray:3 8;opacity:.7}.pincer-line{stroke:#efd28a;stroke-width:5;filter:drop-shadow(0 0 3px #e4bd60);animation:pincer-breathe 2s ease-in-out infinite}.attack-caption{display:none;pointer-events:none}.attack-caption rect{fill:#172e38;stroke:#e89176;stroke-width:1}.attack-caption text{fill:#ffe8d0;font:19px Georgia,serif}.threat-connection.highlighted .attack-caption{display:block}.threat-connection.highlighted .enemy-attack-line{stroke:#ed6a50;stroke-width:5;opacity:1;filter:drop-shadow(0 0 2px #cf5d48)}.threat-inspecting .threat-connection:not(.highlighted){opacity:.2}@keyframes attack-flow{to{stroke-dashoffset:-28}}@keyframes pincer-breathe{50%{opacity:.65;stroke-width:4}}@media(prefers-reduced-motion:reduce){.enemy-attack-line,.pincer-line{animation:none}}
#wave-label{position:absolute;top:9px;left:50%;transform:translateX(-50%);z-index:2;border:1px solid #c3a16999;color:#f5e2bd;background:#08232be0;padding:4px 12px;font:12px Georgia,serif;letter-spacing:1.5px;white-space:nowrap}#resolution-banner{background:#0a2530ed;color:#f4ddb0;border:1px solid #b9995f;padding:15px 24px;font:18px Georgia,serif;letter-spacing:1px;top:35%}
/* Journey, preparation, and results share the arena's visual language. */
main.mapping,main.selecting,main.resulting{max-width:520px;padding:12px 14px 20px}#run-map,#team-select,#run-panel{border:0;border-radius:0;margin:0;padding:0;background:transparent;box-shadow:none}#run-map h2{font:26px Georgia,serif;color:#eddbb7;margin:12px 0 4px}#map-status{font-size:13px;margin:0 0 12px;color:#a6c0c6}#map-rows{position:relative;height:clamp(390px,62svh,660px);background:url('assets/journey-map.webp') center/cover;border:1px solid #b49361;overflow:hidden;border-radius:2px;box-shadow:0 10px 40px #0005;margin:0}#map-rows:before{content:'';position:absolute;inset:0;background:linear-gradient(#06192344,transparent 45%,#06192322);pointer-events:none}.route-lines{position:absolute;inset:0;pointer-events:none}.route-lines svg{width:100%;height:100%}.route-lines line{stroke:#e9d5a6;stroke-width:.35;stroke-dasharray:1 1;opacity:.5}.route-lines .traveled{stroke:#f8d07c;stroke-width:.7;stroke-dasharray:none;opacity:1}.route-lines .reachable{stroke:#f8da96;stroke-width:.6;opacity:.9}#map-rows .map-row{position:absolute;top:calc((4 - var(--step))*20% + 1%);left:0;width:100%;height:18%;display:flex;justify-content:space-around;align-items:center;gap:0;padding:0;margin:0;background:none;border:0;opacity:1}#map-rows .map-node{background:transparent;border:0;box-shadow:none;min-height:64px;padding:0;display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;width:44%;color:#f2e7d1;text-align:center;opacity:.6;cursor:default}#map-rows .map-node:disabled{opacity:.48}#map-rows .map-row.available .map-node{opacity:1;cursor:pointer}#map-rows .map-symbol{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;font-size:21px;border:1px solid #c9a570;background:#08232df0;box-shadow:0 2px 8px #0006}#map-rows .available .map-symbol{background:#123944;border:2px solid #ebcf84;box-shadow:0 0 0 4px #f7d88433,0 0 20px #ffe0a14d}#map-rows .visited .map-symbol{color:#081d26;background:#c9a569}#map-rows .map-node.visited{opacity:.85}#map-rows .elite .map-symbol{color:#f0a891;border-color:#df9c78}#map-rows .boss .map-symbol{width:43px;height:43px;color:#f2c878;border-color:#d3a14f}#map-rows .map-node strong{font:14px Georgia,serif;background:#071c27e6;border-radius:3px;padding:2px 6px}#map-rows .map-node small{font-size:9px;letter-spacing:1px;color:#e8d4b4;background:#071c27ba;padding:1px 4px}#map-health{font-size:10px;letter-spacing:2px;color:#b59c76;margin:12px 0 7px}#map-party{display:flex;gap:7px;justify-content:space-between}.map-companion{width:15%;min-width:0;padding:3px;border:0;background:transparent;display:flex;flex-direction:column;align-items:center;gap:3px}.map-companion .portrait{width:42px;height:42px;border:1px solid #b18c53;border-radius:50%}.map-companion small{font-size:11px;color:#dce4dd}.party-hp{font-size:10px;color:#74d5c0}#map-restart{display:block;margin:12px auto 0;font-size:12px;background:transparent;border:0;color:#a3b9bd}#map-event{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(520px,100%);max-height:70svh;overflow:auto;background:#0d2a35f5;border:1px solid #ba955b;padding:24px;z-index:20;box-shadow:0 -20px 80px #000b}#map-event h3{font:25px Georgia,serif;color:#e5c58e}#map-event p{font-size:15px;line-height:1.5}#event-options button{width:100%;margin:6px 0;padding:12px;font-size:14px}.prep-hero{background:linear-gradient(0deg,#081e2ae8,#081e2a22),url('assets/arena-reference.webp') center 20%/cover;padding:24px 16px 18px;border:1px solid #9f865e;margin:10px 0 8px}.prep-hero>small{font-size:10px;letter-spacing:2px;color:#cfe0dc}.prep-hero h2{font:28px Georgia,serif;margin:8px 0;color:#f1debb}#prep-threat{font-size:13px;color:#dbdfd0}.encounter-details{font-size:13px;color:#c8d9d9;border-bottom:1px solid #b98b4d44;padding:8px 0}.encounter-details summary{cursor:pointer;min-height:30px;line-height:30px}#encounter-info{font-size:14px;line-height:1.5;margin:8px 0}.selection-hint{font-size:13px;margin:12px 0}#character-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.character-choice{position:relative;min-width:0}.character-card{width:100%;height:100%;display:flex;flex-direction:column;gap:5px;padding:6px;border:1px solid #50626b;background:#142d39;border-radius:4px;box-shadow:none;text-align:left}.character-card.picked{background:#1a3c48;border:1px solid #8bd8c7;box-shadow:inset 0 0 0 1px #74ceba22}.character-card .character-art{width:100%;aspect-ratio:1.25;border:0;border-radius:2px}.character-heading{display:flex;flex-direction:column;gap:1px}.character-heading strong{font:17px Georgia,serif;color:#efddbc}.character-heading>span{font-size:10px;color:#adc7ca}.character-stats{font-size:11px!important;color:#d6e3db!important}.character-card .element-tag{font-size:10px;padding:0;background:transparent;border:0}.character-card .selection-label{font-size:10px;padding:2px 5px;margin-top:auto}.character-details{position:absolute;top:4px;right:4px;min-height:32px;height:32px;width:32px;border-radius:50%;border:1px solid #b59358;background:#081d2ae8;color:#ecd6a7;padding:0;font-size:19px;z-index:1}#prep-synergy{margin:12px 0 8px;background:#17333e;border-left:2px solid #b79760;padding:9px 11px;font-size:12px;line-height:1.5;color:#d0dad5}#team-count{font-size:13px;text-align:center;margin:10px 0}#begin-battle,#continue-run{width:100%;background:linear-gradient(135deg,#247b82,#124650);color:#ecf1df;border:1px solid #72c8c6;border-radius:2px;min-height:48px;font:17px Georgia,serif;letter-spacing:1px}main.resulting .hud,main.resulting #level-title{display:none}main.resulting #run-panel{margin-top:16px}#panel-title{font:30px Georgia,serif;letter-spacing:1px;color:#efdaae;text-align:center;margin:18px 0 8px}#panel-text{font-size:14px;line-height:1.5;color:#bdcdd0;text-align:center;margin:8px 0 14px}#result-stats{font-size:12px;line-height:1.6;color:#d8ba86;text-align:center;padding:9px 8px;border-top:1px solid #ab875444;border-bottom:1px solid #ab875444}#result-party{display:flex;gap:7px;justify-content:center;margin:18px 0}.result-character{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;padding:7px 3px;border:0;background:transparent}.result-character .portrait{width:57px;height:57px;border:1px solid #b7965b;border-radius:50%}.result-character strong{font:16px Georgia,serif}.result-character small{font-size:10px;color:#a9c9c8}.result-character>span:last-child{font-size:10px;color:#ddc48e;line-height:1.4}#reward-options{display:flex;flex-direction:column;gap:8px}#reward-options button{position:relative;width:100%;text-align:left;padding:12px;border:1px solid #9b7d4c;background:linear-gradient(110deg,#1a3944,#0b2530);border-radius:3px;display:block}#reward-options button strong{display:block;font:17px Georgia,serif;color:#ebd4a6;padding-right:65px;margin-bottom:6px}#reward-options button>span:last-child{display:block;font-size:13px;line-height:1.5;color:#bdcfd0}.reward-portraits{position:absolute;right:10px;top:10px;display:flex;gap:4px}.reward-portraits .portrait{display:block;width:27px;height:27px;border-radius:50%;border:1px solid #b79861}#chosen-reward{padding:16px;border:1px solid #85cbbb;background:#193f46;color:#d4efdc;font-size:15px;line-height:1.5;text-align:center;margin:18px 0}#panel-restart{width:100%;margin-top:15px}.arena-stage{perspective:850px}main.battling #board{transform:rotateX(10deg);transform-origin:center bottom;transform-style:flat}.cell{backface-visibility:hidden}@media(max-width:360px){.character-card{padding:4px}.character-card .character-art{aspect-ratio:1.45}.prep-hero{padding:15px}.result-character .portrait{width:48px;height:48px}}@media(max-height:720px){#map-rows{height:400px}.prep-hero{padding:14px}.character-card .character-art{aspect-ratio:1.5}.character-card{gap:3px}.selection-hint{margin:8px 0}#prep-synergy{margin:8px 0;padding:6px 9px}}
#map-health{background:transparent;border:0;padding:0;color:#baa177}#map-rows .map-node strong{color:#f3e4c9}#map-rows .map-symbol{color:#f3d79f}#map-rows .map-symbol svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}#map-rows .map-node:disabled{opacity:.7}.prep-hero #team-title{color:#f1debb;text-shadow:0 2px 8px #0008}#run-panel #panel-title{color:#efdaae}.character-card .element-tag{display:flex;align-items:center;gap:3px}.character-card .element-tag svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.7}.character-details{font:italic 20px Georgia,serif;color:#eadabf;min-height:36px;width:36px;height:36px}#character-cards .character-card .character-art{aspect-ratio:1.5}.prep-hero{padding:17px 16px 14px}.selection-hint{margin:9px 0}
#map-rows{height:clamp(340px,58svh,660px)}.prep-hero{padding:14px 16px 10px}.reward-recipients{display:flex;justify-content:center;gap:9px;margin-bottom:10px}.reward-recipients .portrait{width:42px;height:42px;border-radius:50%;border:1px solid #dab57a;display:block}#chosen-reward strong{font:18px Georgia,serif}#chosen-reward p{font-size:14px;margin:9px 0;color:#d7e7dc}#chosen-reward small{font-size:12px;color:#a5cec3}@media(max-height:720px){#map-rows{height:360px}}
#mode-choice{display:flex;gap:8px;margin:8px 0}#mode-choice button{flex:1;padding:10px;font-size:12px}#mode-choice button[aria-pressed=true]{border-color:#d5ac68;background:#34474a}#map-party{display:flex;gap:3px}.map-companion{min-width:0;flex:1;width:auto!important}.map-companion .portrait{width:30px!important;height:30px!important}.map-companion small{font-size:9px}.character-art{aspect-ratio:1.4!important}.debuff-badge{position:absolute;right:3px;top:4px;display:flex;gap:2px;z-index:6}.debuff-badge i{width:7px;height:7px;border-radius:50%;border:1px solid #fff9;box-shadow:0 0 4px #000}.debuff-badge .burn{background:#f77935}.debuff-badge .poison{background:#93c74d}.debuff-badge .chill{background:#69cce3}.debuff-badge.pending{animation:status-pulse 1s ease-in-out infinite}@keyframes status-pulse{50%{opacity:.4}}@media(prefers-reduced-motion:reduce){.debuff-badge.pending{animation:none}}
/* A readable combat sequence: focus, impact, then status, then follow-up. */
.arena-stage #resolution-banner{position:absolute;top:39px;bottom:auto;left:50%;transform:translateX(-50%);width:max-content;max-width:90%;box-sizing:border-box;margin:0;padding:6px 10px;font:11px/1.35 system-ui,sans-serif;letter-spacing:0;border-radius:5px;pointer-events:none;box-shadow:0 2px 8px #0005;z-index:12}
.resolving-board .token{filter:brightness(.7);transition:filter .16s}.resolving-board .token.acting,.resolving-board .token[class*='effect-'],.resolving-board .token.status-flash{filter:brightness(1.15)}.combat-overlay{position:absolute;inset:0;pointer-events:none;z-index:7}.combat-overlay svg{width:100%;height:100%;overflow:visible}.combat-trace{stroke:var(--combat-color);stroke-width:4;stroke-linecap:round;stroke-dasharray:12 7;animation:combat-travel .6s linear;filter:drop-shadow(0 0 3px var(--combat-color))}.combat-spark{fill:var(--combat-color);filter:drop-shadow(0 0 5px var(--combat-color))}.combat-overlay.impact .combat-trace{opacity:.35}.combat-overlay.status .combat-trace{stroke-width:2;opacity:.55}.status-flash{--status-color:#e5d49c;box-shadow:inset 0 0 12px var(--status-color),0 0 18px var(--status-color)!important;animation:status-arrives .65s ease-out}.status-burn{--status-color:#ff9748}.status-poison{--status-color:#b5e76b}.status-chill{--status-color:#8ddff3}.status-flash:after{content:'';position:absolute;inset:2px;border:2px solid var(--status-color);border-radius:inherit;pointer-events:none;animation:status-ring .65s ease-out}.floating-status{position:absolute;left:50%;bottom:8%;transform:translateX(-50%);width:max-content;max-width:160%;padding:4px 6px;border-radius:4px;background:#102b30f2;border:1px solid var(--status-color,#d7c795);color:#fff7de;font:700 10px/1.2 system-ui,sans-serif;text-align:center;z-index:11;pointer-events:none;animation:status-label .65s ease-out}.floating-effect{animation:float-hit .48s ease-out;top:24%}.effect-spear{outline:2px solid #8ddff3;animation:hit-shake .3s ease-in-out}.effect-enemy{animation:hit-shake .3s ease-in-out;box-shadow:inset 0 0 15px #f58773!important}.effect-dot{animation:status-arrives .65s ease-out}.effect-push{outline:2px solid #c0edf2}.token.effect-status{animation:none}.resolving-board .token.pincer-endpoint:not(.acting){box-shadow:none!important}
@keyframes combat-travel{from{stroke-dashoffset:30}to{stroke-dashoffset:0}}@keyframes status-arrives{0%,55%{filter:brightness(1.7)}100%{filter:brightness(1.1)}}@keyframes status-ring{from{opacity:1;scale:.65}to{opacity:0;scale:1.5}}@keyframes status-label{from{opacity:0;translate:0 5px}25%,100%{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:reduce){.combat-trace,.combat-spark,.status-flash,.status-flash:after,.floating-status,.effect-enemy,.effect-spear,.effect-dot{animation:none}.combat-spark{display:none}.resolving-board .token{transition:none}}
.combat-overlay.move .combat-trace{stroke-dasharray:4 5;stroke-width:3;opacity:.8}.effect-move{z-index:8!important;border-color:#fba38c!important;box-shadow:0 0 16px #ffad8e!important;animation:enemy-step .42s ease-out}.effect-status{outline:2px solid var(--status-color,#e5d49c);box-shadow:inset 0 0 12px var(--status-color,#e5d49c),0 0 16px var(--status-color,#e5d49c)!important}@keyframes enemy-step{from{filter:brightness(1.5);scale:1.07}to{filter:brightness(1);scale:1}}
.arena-stage{position:relative}
.debuff-badge{right:2px;top:2px;display:flex;flex-direction:column;gap:1px;max-width:30px}.debuff-chip{display:flex;align-items:center;justify-content:center;gap:1px;padding:1px 2px;border:1px solid currentColor;border-radius:3px;background:#10242eef;min-height:12px;line-height:1;box-shadow:0 1px 2px #0008}.debuff-chip svg{width:9px;height:10px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.debuff-chip b{font:700 9px/1 system-ui,sans-serif;letter-spacing:-.3px}.debuff-chip.burn{color:#ffb275}.debuff-chip.poison{color:#b5e76b}.debuff-chip.chill{color:#a5e8fc}.debuff-chip.pending{border-style:dashed;animation:status-pulse 1s ease-in-out infinite}#info-debuffs{margin-top:8px;border-top:1px solid #78909766;padding-top:2px}#info-debuffs[hidden]{display:none}#unit-info .debuff-detail{font-size:12px;line-height:1.4;margin:6px 0;padding-left:7px;border-left:2px solid #a5e8fc}#unit-info .debuff-detail.poison{border-color:#b5e76b}#unit-info .debuff-detail.burn{border-color:#ffb275}#unit-info{max-height:calc(100svh - 16px)}@media(prefers-reduced-motion:reduce){.debuff-chip.pending{animation:none}}
#info-title{color:#f2dfb7}#info-stats{color:#c2d8dc}#info-rule[hidden]{display:none}
#restart-confirm{width:min(390px,calc(100% - 32px));margin:auto;border:1px solid #bd985d;border-radius:14px;padding:22px;background:#172f38;color:#eee5d2;box-shadow:0 18px 60px #0009}#restart-confirm::backdrop{background:#050d14c9;backdrop-filter:blur(4px)}#restart-confirm h2{margin:0 0 8px;color:#f0ddb4;font:24px Georgia,serif}#restart-confirm p{margin:0 0 20px;color:#c3d1d1;font-size:14px;line-height:1.45}.restart-confirm-actions{display:flex;gap:8px}.restart-confirm-actions button{flex:1;padding:10px 8px;font-size:13px}#restart-confirm-cancel{border-color:#80c6c2}#restart-confirm-accept{border-color:#d18472;background:linear-gradient(#773e37,#512b29);color:#ffe7dc}
/* Refuge hub: the pre-run room where the player chooses a mode and party. */
main.at-hub{width:min(100%,560px);max-width:560px;min-height:100svh;padding:env(safe-area-inset-top) 14px 24px;background:#07151de8;box-shadow:0 0 100px #0008;overflow:hidden}main.at-hub header{margin:0 -14px 12px;padding:8px 14px;border-bottom:1px solid #b98b4d66;background:#0a202bd9}main.at-hub header h1{font:18px Georgia,serif;letter-spacing:2px;color:#f0ddb4}main.at-hub #level-title,main.at-hub .hud,main.at-hub .arena-stage,main.at-hub .battle-footer,main.at-hub #message,main.at-hub #bench,main.at-hub #run-upgrades{display:none}#hub[hidden]{display:none}#hub{position:relative;isolation:isolate;min-height:calc(100svh - 95px);display:flex;align-items:flex-end;padding:clamp(170px,34svh,310px) 0 0}#hub:before{content:'';position:absolute;inset:0 0 auto;height:clamp(300px,56svh,490px);z-index:-1;background:linear-gradient(180deg,#06151b08 48%,#06151be8 100%),url('assets/refuge-hub.webp') center 55%/cover no-repeat;border:1px solid #b98b4d77;box-shadow:0 10px 30px #0007}#hub:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,transparent 8%,#07151d 52%);pointer-events:none}.hub-scene{width:100%}.hub-copy{position:absolute;top:14px;left:14px;right:14px;max-width:350px;text-shadow:0 2px 8px #000}.hub-copy>small{font-size:10px;letter-spacing:2px;color:#dfc18b}.hub-copy h2{margin:6px 0;font:30px Georgia,serif;letter-spacing:2px;color:#f3e2c2}.hub-copy p{max-width:290px;margin:0;color:#d0dbd4;font-size:13px;line-height:1.4}.hub-controls{border:1px solid #b98b4d88;background:linear-gradient(145deg,#102932f5,#091b23f7);padding:13px;box-shadow:0 10px 28px #0007}.hub-section-head{display:flex;align-items:center;justify-content:space-between;margin:3px 0 7px}.hub-section-head h3{margin:0;font:17px Georgia,serif;color:#eedbb8}.hub-section-head>span{font-size:9px;letter-spacing:1.5px;color:#b39b75}.hub-section-head .text-button{min-height:30px;padding:4px 9px;border:0;background:transparent;color:#8cdbca;font-size:10px;letter-spacing:1px}#mode-choice{display:flex;gap:8px;margin:0 0 14px}#mode-choice button{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;min-height:67px;padding:9px;border:1px solid #52666a;background:#142b32}#mode-choice button strong{font:15px Georgia,serif;color:#f0dfbf}#mode-choice button small{font-size:10px;line-height:1.3;color:#b8c9c5}#mode-choice button[aria-pressed=true]{border-color:#e0ba75;background:linear-gradient(145deg,#24454a,#19323a);box-shadow:inset 0 0 0 1px #d6aa5555,0 0 13px #e8bd6030}#hub-party{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:6px 0}#hub-party .hub-companion{display:flex;min-width:0;flex-direction:column;align-items:center;gap:3px;padding:5px 2px;border:1px solid #987a4d;background:#1a353c;text-align:center}#hub-party .portrait{width:clamp(42px,12vw,58px);height:clamp(42px,12vw,58px);border:1px solid #c5a466;border-radius:50%}#hub-party strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#eee0c4;font:14px Georgia,serif}#hub-party small{font-size:9px;color:#a9c6c5}#hub-party-note{margin:4px 0 12px;text-align:center;color:#a9c3c4;font-size:11px;line-height:1.4}#hub-start-run{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:49px;padding:10px 15px;border:1px solid #8dd7c3;border-radius:2px;background:linear-gradient(120deg,#347f77,#15515a);color:#f5ead1;font:18px Georgia,serif;letter-spacing:.5px;box-shadow:0 4px 15px #0005}#hub-start-run span{font-size:24px;color:#f1cf88}main.at-hub .header-actions{display:flex}main.at-hub #menu-open{min-height:36px;width:36px;height:36px}main.at-hub #synergy-open{width:36px;height:36px;min-height:36px;padding:7px;border:1px solid #bd985d;border-radius:50%;background:#061b26;color:#d8ae67}main.at-hub #synergy-open svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.3}
/* Lift active characters so the selected four are easy to scan. */
.character-card{position:relative;z-index:0;transform:translateY(0);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease,background-color .22s ease}.character-card.picked{z-index:2;transform:translateY(-5px);box-shadow:0 8px 13px #0007,0 0 0 1px #8bd8c766,inset 0 0 0 1px #74ceba22}.character-card:not(:disabled):hover{transform:translateY(-3px)}.character-card.picked:not(:disabled):hover{transform:translateY(-7px)}.character-card:focus-visible{z-index:3;outline-offset:2px}@media(prefers-reduced-motion:reduce){.character-card{transition:none}}
@media(max-height:720px){#hub{padding-top:clamp(145px,31svh,240px)}#hub:before{height:clamp(270px,49svh,380px)}.hub-controls{padding:10px}.hub-copy h2{font-size:26px}}
.character-details{z-index:4}
/* The portrait atlas has square cells; keep each character crop square. */
#character-cards .character-card .character-art{width:100%;aspect-ratio:1!important;height:auto;flex:none}
/* Three biome looks: the second and third deepen the existing descent. */
main.biome-2 .arena-stage{background-image:linear-gradient(180deg,#071b2410,#06172235),url('assets/biome-bastion.webp');background-position:center;background-size:cover}
main.biome-2 #board{background-image:linear-gradient(#06192335,#06192365),url('assets/biome-bastion.webp');background-position:center;background-size:cover}
main.biome-3 .arena-stage{background-image:linear-gradient(180deg,#02091018,#02091055),url('assets/biome-black-halls.webp');background-position:center;background-size:cover}
main.biome-3 #board{background-image:linear-gradient(#02091025,#02091048),url('assets/biome-black-halls.webp');background-position:center;background-size:cover}
/* Rootwork surfaces echo the forest without adding more icons to the HUD. */
#character-cards .character-card{border-radius:12px 5px 13px 6px;border-color:#667b5b;background:linear-gradient(145deg,#203b38,#102b35);overflow:visible}
#character-cards .character-card.picked{border-color:#b6c78b;background:linear-gradient(145deg,#315147,#16343d);box-shadow:0 9px 15px #0008,0 0 0 1px #bad58a66,inset 0 0 0 1px #e8d08735}
#character-cards .character-card .character-art{border-radius:9px 3px 10px 4px}
#character-cards .character-card .selection-label{border-radius:2px 7px 2px 7px;border-color:#73865d}
#prep-synergy{border-left-color:#8ca66b;border-radius:2px 10px 2px 10px;background:linear-gradient(120deg,#1b3939,#16333d)}
#begin-battle,#hub-start-run{border-radius:10px 3px 10px 3px;border-color:#91b67a;background:linear-gradient(115deg,#31564b,#17505a)}
main.selecting .prep-hero{border-color:#8c9a64;border-radius:12px 4px 13px 5px}
main[data-biome="2"] .prep-hero{background-image:linear-gradient(0deg,#071e2aeb,#071e2a38),url('assets/biome-bastion.webp');background-position:center 48%;background-size:cover}
main[data-biome="3"] .prep-hero{background-image:linear-gradient(0deg,#07121bea,#07121b28),url('assets/biome-black-halls.webp');background-position:center 47%;background-size:cover}
@keyframes biome-arrive{from{filter:brightness(.65)}to{filter:brightness(1)}}
main.biome-2 .arena-stage,main.biome-3 .arena-stage{animation:biome-arrive .45s ease-out}
@media(prefers-reduced-motion:reduce){main.biome-2 .arena-stage,main.biome-3 .arena-stage{animation:none}}
/* During a run the party is a compact, read-only briefing, never a second draft. */
#character-cards.locked-party{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
#character-cards .party-member{cursor:default}
#character-cards .party-member:hover{transform:none}
main[data-biome="2"] .prep-hero{background-image:linear-gradient(0deg,#071e2ac2,#071e2a30),url('assets/biome-bastion.webp')}
main[data-biome="3"] .prep-hero{background-image:linear-gradient(0deg,#07121bc4,#07121b24),url('assets/biome-black-halls.webp')}
/* Refuge / Painterly Root & Bronze: restrained materials and clear button hierarchy. */
main.at-hub{max-width:490px;background:radial-gradient(ellipse at 50% 20%,#20312e,#0b1b20 65%);padding-bottom:max(22px,env(safe-area-inset-bottom))}
main.at-hub header{background:#101b1cc9;border-color:#967a4b4d}
main.at-hub header h1{font-size:15px;letter-spacing:1.6px;color:#d1c1a0}
#hub{display:block;min-height:0;padding-top:clamp(185px,28svh,260px)}
#hub:before{inset:0 -14px auto;height:clamp(310px,48svh,420px);border:0;background-image:linear-gradient(180deg,#0b191d0a 40%,#0b1b20 100%),url('assets/refuge-painterly.webp');background-position:center,center 52%;box-shadow:none}
#hub:after{background:linear-gradient(180deg,transparent 25%,#0b1b2044 52%)}
.hub-copy{position:relative;inset:auto;max-width:none;margin:0 auto 14px;text-align:center;text-shadow:0 2px 8px #000}
.hub-copy>small{font-size:11px;color:#c5a974;letter-spacing:2px}
.hub-copy h2{font-size:30px;margin:4px 0 0;padding:10px 8px 12px;color:#eee1c4;letter-spacing:1.5px;background:linear-gradient(100deg,#12232333,#101d21db,#12232333);border:14px solid transparent;border-image:url('assets/root-bronze-frame.png') 200 / 14px / 0 stretch}
.hub-copy p{display:none}
.hub-controls{position:relative;border:0;border-top:1px solid #a8875055;padding:14px 4px 4px;background:linear-gradient(180deg,#0e2223b0,#0e1d20);box-shadow:0 12px 30px #0003}
.hub-section-head{margin:0 2px 9px;justify-content:center}
.hub-section-head h3{font-size:16px;letter-spacing:.5px;color:#dccaa5}
.hub-section-head>span{display:none}
#mode-choice{gap:12px;margin:0 0 17px}
#mode-choice button{position:relative;isolation:isolate;overflow:hidden;align-items:center;justify-content:flex-end;gap:3px;min-width:0;min-height:114px;padding:9px 7px;border:1px solid #8c754f;border-radius:8px 3px 8px 3px;text-align:center;background:#12272b;box-shadow:inset 0 0 0 3px #071319aa,0 4px 10px #0006}
#mode-choice button:before{content:'';position:absolute;inset:3px;z-index:-1;background:linear-gradient(180deg,#07131910,#071319d9 76%),url('assets/arena-comic.png') center 28%/cover;opacity:.55}
#mode-choice button[data-mode=endless]:before{background-image:linear-gradient(180deg,#07131910,#071319ef 76%),url('assets/biome-black-halls.webp');background-position:center 24%}
#mode-choice button strong{font-size:19px;font-weight:400;color:#e7d8b8;text-shadow:0 2px 5px #000}
#mode-choice button small{font-size:12px;line-height:1.3;color:#b9c5c0;text-shadow:0 1px 5px #000;max-width:135px}
#mode-choice button[aria-pressed=true]{border-color:#c49e60;background:#6a5134;box-shadow:inset 0 0 0 2px #c8a77455,0 0 13px #d6a85922,0 4px 12px #0006}
#mode-choice button[aria-pressed=true]:before{opacity:1;background-image:linear-gradient(180deg,#6c47101a,#362b23cc 80%),url('assets/arena-comic.png')}
#mode-choice button[data-mode=endless][aria-pressed=true]:before{background-image:linear-gradient(180deg,#2f493523,#243c35d9 80%),url('assets/biome-black-halls.webp')}
#mode-choice button[aria-pressed=true] strong{color:#f4e6c7}
#mode-choice button[aria-pressed=true] small{color:#e1cfb1}
#hub-party{gap:8px;margin:0 0 9px}
#hub-party .hub-companion{padding:3px 3px 6px;gap:3px;border:1px solid #9d8055;border-radius:5px 2px 5px 2px;background:linear-gradient(#25312d,#112326);box-shadow:inset 0 0 0 2px #07131966,0 4px 10px #0003}
#hub-party .portrait{width:100%;height:auto;aspect-ratio:1;border:0;border-radius:3px 1px 3px 1px;filter:saturate(.8)}
#hub-party strong{font-size:14px;color:#e2d3b0;font-weight:400}
#hub-party small{font-size:11px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#9fb4ac}
#hub-party-note{font-size:12px;line-height:1.4;margin:8px 6px 10px;color:#afbbb1}
#hub-edit-party{display:block;width:100%;min-height:44px;margin:0 0 16px;padding:9px;border:1px solid #94784f;border-radius:5px 2px 5px 2px;background:linear-gradient(145deg,#21312d,#112023);color:#d9c5a0;font:17px Georgia,serif;box-shadow:inset 0 0 0 3px #081a1b88,0 3px 8px #0003}
#hub-start-run{position:relative;justify-content:center;min-height:73px;padding:11px 20px;border:18px solid transparent;border-image:url('assets/root-bronze-frame.png') 200 / 18px / 3px stretch;border-radius:3px;background:radial-gradient(ellipse at 50% 90%,#31716f55,transparent 60%),linear-gradient(135deg,#244c48,#153438);background-clip:padding-box;color:#eee2c5;font:24px Georgia,serif;letter-spacing:.5px;text-shadow:0 2px 6px #0008;box-shadow:0 8px 16px #0005,inset 0 0 20px #759d6930}
#hub button{transition:transform .16s ease,filter .16s ease,box-shadow .16s ease}
#hub button:hover{filter:brightness(1.1)}
#hub button:active{transform:translateY(2px) scale(.99);filter:brightness(.92)}
#hub button:focus-visible{outline:2px solid #dac390;outline-offset:4px}
@media(max-height:720px){#hub{padding-top:140px}#hub:before{height:290px}.hub-copy{margin-bottom:9px}.hub-copy h2{font-size:26px;padding-top:6px;padding-bottom:7px}.hub-controls{padding-top:10px}#mode-choice button{min-height:99px}#mode-choice{margin-bottom:13px}#hub-edit-party{margin-bottom:12px}}
@media(prefers-reduced-motion:reduce){#hub button{transition:none}}
/* Keep all hub actions together in a phone viewport. */
#hub{padding-top:clamp(145px,18svh,185px)}
.hub-controls>.hub-section-head:first-child{display:none}
.hub-copy h2{border-image-width:22px}
#hub-start-run{border-image-width:26px}
@media(max-height:720px){#hub{padding-top:115px}}
/* Build progression stays in the synergy sheet, leaving the arena clear. */
#synergy-panel h3{margin:18px 0 10px;font:20px Georgia,serif;color:#e8d4a9}
.build-roadmap{--build-accent:#b5e76b;margin:10px 0;border:1px solid #6a806333;border-left:3px solid var(--build-accent);border-radius:4px 10px 4px 10px;background:#10242bc9;overflow:hidden}
.build-roadmap.ember{--build-accent:#ffac70}.build-roadmap.frost{--build-accent:#9cddf2}
.build-roadmap summary{display:grid;grid-template-columns:1fr auto;gap:5px;padding:13px 12px;cursor:pointer;list-style:none;color:#e7dcc0}
.build-roadmap summary::-webkit-details-marker{display:none}.build-roadmap summary strong{font:18px Georgia,serif}.build-roadmap summary span{color:var(--build-accent);font-size:14px}.build-roadmap summary small{grid-column:1/-1;font-size:13px;color:#b4c7c3}
.build-roadmap ol{list-style:none;margin:0;padding:0 12px;display:grid;gap:8px}
.build-roadmap li{display:grid;grid-template-columns:26px 1fr;gap:3px 8px;align-items:center;padding:7px;background:#091a2144;border-radius:4px}
.build-roadmap li b{grid-row:span 2;display:grid;place-items:center;width:25px;height:25px;border:1px solid #5d7573;border-radius:50%;font:14px Georgia,serif;color:#a2b6af}
.build-roadmap li strong{font-size:14px;font-weight:600;color:#a6b7af}.build-roadmap li small{font-size:12px;color:#9aada6}
.build-roadmap li.unlocked b,.build-roadmap li.unlocked strong{color:var(--build-accent);border-color:var(--build-accent)}
.build-roadmap li.next{box-shadow:inset 0 0 0 1px #b7cba033}.build-roadmap li.next strong{color:#ebdfbd}
#synergy-panel .build-roadmap p{padding:0 12px;margin:12px 0;color:#c1d0c7;font-size:14px;line-height:1.45}
.build-next{display:block;margin:0 12px 13px;color:var(--build-accent);font-size:13px;line-height:1.4}
.reward-category{display:block;font-size:12px;letter-spacing:1px;color:#cab47b;margin-bottom:4px}
.effect-ember,.effect-firewave{outline:2px solid #ffac70;box-shadow:inset 0 0 16px #ff974860,0 0 12px #ff974860!important;animation:status-arrives .48s ease-out}
.effect-frost{outline:2px solid #9cddf2;box-shadow:inset 0 0 16px #8ddff360,0 0 12px #8ddff360!important;animation:status-arrives .48s ease-out}
.effect-toxin{outline:2px solid #b5e76b;box-shadow:inset 0 0 14px #b5e76b50!important}
@media(prefers-reduced-motion:reduce){.effect-ember,.effect-firewave,.effect-frost{animation:none}}
/* Windschritt keeps targeting separate from the normal timed drag. */
#wind-control{margin:0 0 6px;padding:4px 0}.wind-actions{display:flex;gap:5px}.wind-actions button{flex:1;min-width:0;min-height:44px;padding:7px 5px;font:14px Georgia,serif;border:1px solid #b7ad78;background:linear-gradient(140deg,#284d46,#0c242b);color:#eee6ce;border-radius:5px}#wind-hint{font-size:13px;line-height:1.3;margin:6px 0;color:#cfe7d7}.cell.wind-candidate .token{outline:2px solid #b9eac8;box-shadow:0 0 12px #8de5b2}.cell.wind-destination{background:#85deb066!important;box-shadow:inset 0 0 0 2px #a5e1bd!important}.cell.wind-chosen{background:#a4f4c4aa!important;box-shadow:inset 0 0 0 3px #f0e6b2!important}.cell.wind-origin{outline:2px dashed #e6ddb7;outline-offset:-4px}.effect-wind{animation:wind-lift .4s ease-out!important}@keyframes wind-lift{from{transform:translateY(-12px) scale(1.08);filter:brightness(1.5)}to{transform:translateY(0) scale(1);filter:brightness(1)}}@media(prefers-reduced-motion:reduce){.effect-wind{animation:none!important}}
/* Gem loadouts stay in a dedicated sheet, leaving the arena clear. */
#gem-sheet{width:min(94vw,560px);max-height:88svh;padding:24px 18px;overflow-y:auto}#gem-title{padding-right:65px;font:25px Georgia,serif;color:#e8d2a0}#gem-instruction{font-size:15px;line-height:1.5;color:#c7d7d5}.gem-hero{padding:15px 12px;margin:14px 0;border:1px solid #6e806d;border-radius:10px;background:linear-gradient(125deg,#213c3f,#11282e)}.gem-hero h3{margin:0 0 12px;color:#ead9b6;font:19px Georgia,serif}.gem-hero label{display:block;font-size:14px;color:#c4d6d0;margin-top:10px}.gem-hero select{display:block;width:100%;min-height:44px;margin-top:5px;padding:8px;background:#0a2027;color:#f0e5ce;border:1px solid #af986b;border-radius:5px;font:15px system-ui;box-sizing:border-box}.gem-rule{border-left:3px solid;padding-left:10px;font-size:14px;line-height:1.5;color:#d4e0dc;margin-bottom:16px}.gem-link{font-size:15px;line-height:1.5;padding:12px;background:#365546;border-radius:7px;color:#e2eed6}.gem-catalog{font-size:14px;line-height:1.5}.gem-catalog summary{font-size:16px;color:#dbc69d;cursor:pointer}.gem-catalog p{border-bottom:1px solid #536559;padding-bottom:12px}[data-open-gems]{margin:10px 0;background:#234442;border:1px solid #b49f70;color:#efe0bd;min-height:44px}.audio-settings{border-block:1px solid #697765;padding:12px 0;margin:20px 0}.audio-settings label{display:flex;align-items:center;justify-content:space-between;gap:14px;font-size:16px;margin:12px 0}.audio-settings input[type=range]{width:65%;min-height:44px;accent-color:#c6b07f}.audio-settings p,.audio-settings details{font-size:14px;line-height:1.5;color:#ccd9d6}.audio-settings input[type=file]{max-width:100%;font-size:14px;margin:12px 0}.audio-settings button{min-height:44px;margin:6px 0}.audio-settings summary{cursor:pointer;padding:10px 0}.effect-gem{outline:2px solid #c4a0ec}
.gem-reward-icon{display:block;font-size:38px;line-height:1.2;text-shadow:0 0 18px currentColor;margin:6px 0}.reward-portraits:empty{display:none}
.movement-help{display:block;width:100%;min-height:44px;margin:0 0 12px;border:1px solid #8d997c;background:#152e2c;color:#ded2ae;font:16px Georgia,serif}#movement-lesson{width:min(94vw,480px);max-height:94svh;box-sizing:border-box;padding:23px 18px;overflow-y:auto}#lesson-progress{display:block;color:#bead80;letter-spacing:1px;font-size:12px;margin-bottom:10px;padding-right:100px}#lesson-title{font:24px Georgia,serif;margin:10px 0;max-width:85%;color:#eddbb2}#lesson-copy,#lesson-feedback,#lesson-extra{font-size:15px;line-height:1.45;color:#d7e2dc}#lesson-board{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;width:min(100%,300px);margin:15px auto;touch-action:none;user-select:none}#lesson-board .lesson-cell{margin:0;padding:0;min-height:0;aspect-ratio:1;position:relative;border:1px solid #738675;border-radius:5px;background:#27403c;overflow:hidden;color:#f5ecd7;clip-path:none;touch-action:none}#lesson-board .lesson-cell:disabled{opacity:1}#lesson-board .lesson-cell:focus-visible{outline:3px solid #f6de83;outline-offset:1px}.lesson-art{position:absolute;inset:0;opacity:.85;background-repeat:no-repeat}.lesson-cell strong{position:absolute;bottom:18px;left:0;right:0;padding:1px;background:#071b24dc;font:14px Georgia,serif}.lesson-cell small{position:absolute;bottom:0;left:0;right:0;display:block;background:#10262a;font-size:10px;line-height:18px;color:#c4e2d7}#lesson-board .lesson-active{border:2px solid #e8c16c}#lesson-board .lesson-target{outline:2px dashed #f4d47e;outline-offset:-5px;background:#645b34}#lesson-board .lesson-pincer{border:2px solid #f3d27e;box-shadow:0 0 8px #e5c06877}#lesson-board .lesson-acting{animation:lesson-hit .55s ease-in-out;z-index:1}.lesson-target-label{font-size:13px;color:#f5da93}#lesson-feedback{min-height:64px;padding:10px;border-left:3px solid #b3cd94;background:#17322f}.lesson-actions{display:flex;gap:10px}.lesson-actions button{min-height:44px;flex:1;padding:8px;font-size:15px}#lesson-next{background:#385543;border-color:#c3b17a}.lesson-footnote{display:block;margin-top:12px;color:#aebdb5;font-size:12px;line-height:1.4}@keyframes lesson-hit{50%{transform:scale(1.08);filter:brightness(1.5)}}@media(prefers-reduced-motion:reduce){#lesson-board .lesson-acting{animation:none;outline:3px solid #fff0b7}}@media(max-height:700px){#lesson-board{width:min(100%,240px)}#movement-lesson{padding:18px 14px}#lesson-copy,#lesson-feedback{font-size:14px}}
/* Spawn confirmation and distinct specialist intentions. */
#spawn-confirm{padding:8px 0;text-align:center}#spawn-copy{font-size:14px;line-height:1.35;color:#e0cfac;margin:2px 0 8px}#spawn-start{min-height:44px;width:100%;border:1px solid #c6b076;background:#345246;color:#f3e7c9;font:17px Georgia,serif}.cell.spawn-preview{background:#69bba444!important;box-shadow:inset 0 0 0 2px #a0dfc7!important}.spawn-label{position:absolute;inset:0;display:grid;place-items:center;font-size:10px;background:#132c34c9;color:#dce9ce;overflow-wrap:anywhere;padding:1px;text-align:center}.cell.charge-zone{background:#e66d3b40!important;box-shadow:inset 0 0 0 2px #e9986488!important}.enemy-heal-line{stroke:#82d7ac;stroke-width:4;stroke-dasharray:7 5}.enemy-heal-caption{fill:#d3ffdc;font:bold 20px system-ui;paint-order:stroke;stroke:#14282b;stroke-width:4}.token.charger{outline:1px solid #e2b36b}.token.shaman{outline:1px solid #9acd92}.token.charger:after,.token.shaman:after{position:absolute;right:1px;top:1px;background:#12252a;color:#f0d4a5;font:bold 9px system-ui;padding:1px 3px}.token.charger:after{content:'ST'}.token.shaman:after{content:'SH';color:#aff0b9}.seed-choice{margin:6px 0 12px;color:#d5c39e;font-size:14px}.seed-choice input{display:block;box-sizing:border-box;width:100%;min-height:44px;background:#11292b;color:#efdfc2;border:1px solid #8c805e;padding:8px;font-size:16px}.seed-choice label{display:block;margin-top:10px}#enemy-catalog p{font-size:14px;line-height:1.5;padding-bottom:10px;border-bottom:1px solid #496156}#encounter-budget-note{font-size:14px;color:#d5c49b}
main.spawning .battle-actions{display:none}main.spawning #battle-summary{min-height:48px;padding:8px 0}main.spawning #board{width:min(100%,calc((100svh - 370px)*.75))}@media(max-height:700px){main.spawning #board{width:min(100%,calc((100svh - 335px)*.75))}}.token.charger .unit-label,.token.shaman .unit-label{display:none}
@media(max-width:480px){main.battling #journey-dots{display:none}main.battling #level-title{left:12px;right:54px;font-size:15px;letter-spacing:.7px}}

/* Installed web app and browser fullscreen controls. */
html{min-height:100%;background:#10181e}.webapp-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.webapp-actions button{flex:1;min-height:44px;font-size:13px}#webapp-sheet{max-width:min(420px,calc(100vw - 24px))}#webapp-sheet p{line-height:1.6}html:fullscreen{overflow:auto}html:fullscreen main{min-height:100dvh}@media(display-mode:standalone),(display-mode:fullscreen){main{padding-top:max(14px,env(safe-area-inset-top))}}
/* Shared choice surfaces: dark stone, bronze edges, restrained light. */
#map-event{position:fixed;inset:0;transform:none;margin:auto;width:min(500px,calc(100vw - 32px));height:fit-content;max-height:calc(100dvh - 48px - env(safe-area-inset-top) - env(safe-area-inset-bottom));overflow:auto;padding:28px;border:1px solid #a68c5e;border-radius:16px 5px 16px 5px;background:radial-gradient(ellipse at 50% 0,#31504b66,transparent 65%),linear-gradient(145deg,#1b3033,#0d1c23);color:#e4e4d6;box-shadow:inset 0 0 0 4px #091519, inset 0 0 0 5px #a68c5e22,0 24px 90px #000b;z-index:30;text-align:center}
#map-event::backdrop{background:#030a10cc;backdrop-filter:blur(6px)}
#map-event .event-eyebrow{display:block;font-size:12px;letter-spacing:2px;color:#aeae8e;margin:0 0 14px}
#map-event h3{font:32px Georgia,serif;color:#eedbb2;margin:0 0 14px}
#map-event #event-text{font-size:16px;line-height:1.55;color:#bfcfc9;margin:0 0 24px}
#event-options{display:grid;gap:12px}
#event-options .event-choice{margin:0;padding:18px;text-align:left;display:grid;gap:8px;border:1px solid #7c947e80;border-radius:9px 3px 9px 3px;background:linear-gradient(120deg,#25403b,#12282b);box-shadow:inset 0 1px #ffffff0c;transition:transform .16s,border-color .16s,background .16s}
#event-options .event-choice.risky{border-color:#ad865d90;background:linear-gradient(120deg,#3b3430,#222729)}
.event-choice small{font-size:12px;letter-spacing:1.2px;color:#b3c0a5}
#event-options .event-choice strong{font:21px Georgia,serif;color:#f0dfb9}
.event-choice .choice-benefit{font-size:16px;color:#b5e0c5;line-height:1.4}
.event-choice .choice-cost{font-size:14px;color:#b6c1bc;line-height:1.4}
.event-choice.risky .choice-cost{color:#e0aa91}
#map-event .event-footnote{display:block;margin-top:20px;font-size:12px;line-height:1.5;color:#9eafa9}
#event-options .event-choice:focus-visible,#reward-options button:focus-visible{outline:2px solid #e9d8a6;outline-offset:4px}
@media(hover:hover){#event-options .event-choice:hover,#reward-options button:hover{transform:translateY(-2px);border-color:#dbc08b;filter:brightness(1.1)}}
#reward-options{gap:12px;margin:20px 0}
#reward-options button{padding:18px;border:1px solid #a68c5e88;border-radius:10px 3px 10px 3px;background:linear-gradient(135deg,#203b3c,#11232c);box-shadow:inset 0 1px #ffffff0c,0 5px 16px #0003;transition:transform .16s,border-color .16s}
#reward-options button strong{font-size:21px;line-height:1.25;margin:8px 0;padding-right:65px}
#reward-options button>span:last-child{font-size:15px;line-height:1.5;color:#cad6ce}
#reward-options .reward-category{font-size:12px;letter-spacing:1px;color:#c2bd9e}
#run-panel #panel-title{font-size:30px;margin-top:22px}
#run-panel #panel-text{color:#c5d1c9;line-height:1.55}
@media(max-width:400px){#map-event{padding:22px 18px;width:calc(100vw - 24px)}#map-event h3{font-size:28px}#event-options .event-choice{padding:15px}#reward-options button{padding:16px}}
@media(prefers-reduced-motion:reduce){#event-options .event-choice,#reward-options button{transition:none}}
#combo-banner{position:absolute;top:8px;right:9px;z-index:13;max-width:calc(100% - 92px);pointer-events:none;padding:6px 10px;border:1px solid #dcb66d;border-radius:7px 2px;background:linear-gradient(110deg,#342e1bf5,#112730f5);color:#ffe8b6;box-shadow:0 3px 16px #0007;text-align:right;line-height:1.35}
#combo-banner[hidden]{display:none}
#combo-banner strong{display:block;font-size:12px;letter-spacing:.5px}
#combo-banner span{display:block;font-size:12px;color:#edd3a1}
.has-combo #wave-label{left:9px;transform:none;padding:4px 6px;letter-spacing:0;font-size:11px}
.combo-pop{animation:combo-pop .3s ease-out}
.formation-overlay .combo-link{stroke:#ffe59e;stroke-width:8;stroke-dasharray:12 7;filter:drop-shadow(0 0 5px #ffce70);animation:combo-flow 1s linear infinite}
@keyframes combo-pop{from{transform:scale(.93);filter:brightness(1.6)}to{transform:scale(1);filter:brightness(1)}}
@keyframes combo-flow{to{stroke-dashoffset:-38}}
@media(prefers-reduced-motion:reduce){.combo-pop,.formation-overlay .combo-link{animation:none}}
/* Each map now belongs to one complete biome. */
main.biome-2 #map-rows{background-image:linear-gradient(#061b2a66,#061b2a22),url('assets/biome-bastion.webp')}
main.biome-3 #map-rows{background-image:linear-gradient(#05091355,#05091311),url('assets/biome-black-halls.webp')}
/* Keep uninvolved units visually steady during sequential resolution. */
.resolving-board .token{filter:none;transition:none}
.resolving-board .token.acting,.resolving-board .token[class*='effect-'],.resolving-board .token.status-flash{filter:none}
/* Title and refuge share one painterly, full-screen presentation. */
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
#title-screen{position:relative;isolation:isolate;display:grid;place-items:center;min-height:100dvh;background:#061016;overflow:hidden}
#title-screen:before{content:'';position:absolute;inset:-25px;z-index:-1;background:linear-gradient(#06101655,#06101688),url('assets/title-pincer.webp') center/cover;filter:blur(16px)}
.title-art{position:relative;height:100dvh;width:min(100vw,56.25dvh);background:url('assets/title-pincer.webp') center/100% 100% no-repeat}
.title-entry{position:absolute;left:12%;right:12%;bottom:max(5.8%,env(safe-area-inset-bottom));display:flex;justify-content:center}
#title-enter{width:100%;min-height:62px;padding:10px 18px;border:15px solid transparent;border-image:url('assets/root-bronze-frame.png') 200 / 24px / 2px stretch;background:linear-gradient(125deg,#182b2bed,#0c171bf0);background-clip:padding-box;font:clamp(17px,3dvh,30px) Georgia,serif;color:#f4e2b6;letter-spacing:1.5px;text-transform:uppercase;box-shadow:0 8px 32px #0008;transition:filter .2s,transform .2s}
#title-enter:hover{filter:brightness(1.18)}#title-enter:active{transform:translateY(2px)}#title-enter:focus-visible{outline:2px solid #f0d79d;outline-offset:8px}
main.at-hub{position:relative;isolation:isolate;max-width:none;width:100%;min-height:100dvh;padding:0;background:none;box-shadow:none;overflow:visible}
main.at-hub header{position:absolute;top:env(safe-area-inset-top);right:max(20px,env(safe-area-inset-right));left:20px;z-index:5;margin:0;padding:16px 0;background:none;border:0;justify-content:flex-end}
main.at-hub header h1,main.at-hub #journey-dots{display:none}
main.at-hub .header-actions{gap:10px}
main.at-hub #menu-open,main.at-hub #synergy-open{width:44px;height:44px;min-height:44px;border-radius:50%;background:#102021c9;border:1px solid #bfa46b88;color:#ecdbac;box-shadow:0 3px 12px #0006}
#hub{display:flex;align-items:stretch;min-height:100dvh;padding:0;margin:0}
#hub:before{position:fixed;inset:0;height:auto;background:url('assets/refuge-painterly.webp') center 45%/cover no-repeat;border:0;box-shadow:none;z-index:-2}
#hub:after{position:fixed;inset:0;background:linear-gradient(90deg,#04101305 30%,#04101366),linear-gradient(180deg,#04101330,transparent 30%,#04101355 65%,#041013c9);z-index:-1}
.hub-scene{width:100%;min-height:100dvh;display:flex;flex-direction:column;justify-content:space-between;padding:calc(76px + env(safe-area-inset-top)) max(22px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom))}
.hub-copy{position:static;max-width:480px;width:100%;margin:12px auto auto;text-align:center}
.hub-copy>small{font-size:12px;letter-spacing:3px;color:#dcc399}
.hub-copy h2{font:clamp(32px,5vw,52px) Georgia,serif;letter-spacing:3px;border:0;border-image:none;background:none;margin:8px 0;padding:0;text-shadow:0 3px 15px #000,0 0 40px #041014}
.hub-controls{width:min(100%,430px);margin:clamp(100px,19dvh,220px) auto 0;padding:0;border:0;background:none;box-shadow:none}
#mode-choice{gap:0;margin:0 20px 24px;border-bottom:1px solid #bca16f55}
#mode-choice button{min-height:60px;padding:8px 14px 12px;border:0;border-radius:0;border-bottom:2px solid transparent;background:none!important;box-shadow:none!important;overflow:visible;justify-content:center;gap:4px}
#mode-choice button:before{display:none}
#mode-choice button[aria-pressed=true]{border-bottom-color:#dfc187}
#mode-choice button strong{font-size:21px;color:#b4bcb0}
#mode-choice button[aria-pressed=true] strong{color:#f7e5bd}
#mode-choice button small{font-size:12px;color:#c0c9c0;max-width:none}
.hub-section-head{margin:0 0 10px}.hub-section-head h3{font-size:15px;letter-spacing:1px;color:#e0d1b3;text-shadow:0 2px 5px #000}
#hub-party{display:flex;justify-content:center;gap:18px;margin:0}
#hub-party .hub-companion{width:64px;flex:none;padding:0;border:0;border-radius:0;background:none;box-shadow:none;gap:5px}
#hub-party .portrait{width:60px;height:60px;aspect-ratio:1;border-radius:50%;border:1px solid #c6a86d;box-shadow:0 3px 12px #0008;filter:none}
#hub-party strong{font-size:15px;text-shadow:0 2px 5px #000}
#hub-party small{display:none}
#hub-party-note{font-size:12px;margin:10px 0 4px;color:#c0ccbc;text-shadow:0 2px 5px #000}
#hub-edit-party{width:auto;min-height:44px;margin:0 auto 12px;padding:6px 18px;border:0;border-bottom:1px solid #c8b47b66;border-radius:0;background:none;box-shadow:none;font:16px Georgia,serif;color:#efdbad;text-shadow:0 2px 5px #000}
#hub-start-run{min-height:74px;margin:0;background:linear-gradient(130deg,#29463ee6,#101f22ed);background-clip:padding-box;border-image-width:24px;font-size:25px;box-shadow:0 10px 26px #0007}
.hub-extras{margin:0 auto 14px;text-align:center;color:#bdc7bd}
.hub-extras>summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;font:14px Georgia,serif;padding:6px 12px;text-shadow:0 2px 5px #000}
.hub-extras[open]{padding:12px 16px;background:#0a1a1ce8;border:1px solid #99815466;border-radius:10px}
.hub-extras .movement-help{margin:6px 0}.hub-extras .seed-choice{text-align:left}
#hub .webapp-actions{margin-bottom:0}
@media(min-width:900px){.hub-scene{padding:110px 8vw 6vh;align-items:flex-end;justify-content:center}.hub-copy,.hub-controls{margin-left:0;margin-right:0}.hub-copy{width:430px;max-width:none;margin-top:0;margin-bottom:0}.hub-controls{margin-top:36px}#hub:after{background:linear-gradient(90deg,#03101208 35%,#031012b8 75%,#031012dc)}#hub:before{background-position:center 42%}}
@media(max-height:740px) and (max-width:899px){.hub-scene{padding-top:68px}.hub-copy{margin-top:0}.hub-copy h2{font-size:30px}.hub-controls{margin-top:65px}#mode-choice{margin-bottom:15px}#hub-party .portrait{width:48px;height:48px}#hub-party .hub-companion{width:54px}#hub-party{gap:14px}#hub-start-run{min-height:65px}.hub-extras{margin-bottom:4px}}
@media(prefers-reduced-motion:reduce){#title-enter{transition:none}}
.title-art{background-size:cover}
#title-enter{white-space:nowrap;font-size:clamp(16px,2.5dvh,26px);padding-left:6px;padding-right:6px}
/* Refuge choices sit clearly above the scene without obscuring it. */
#hub #mode-choice{gap:10px;border:0;margin-left:0;margin-right:0}
#hub #mode-choice button{border:1px solid #b69a636b;border-radius:9px 3px 9px 3px;background:linear-gradient(135deg,#21332dc9,#0c1b21df)!important;box-shadow:inset 0 1px #e6d9b317,0 4px 14px #0004!important;padding:10px 12px;min-height:72px}
#hub #mode-choice button[aria-pressed=true]{border-color:#dcc18b;background:linear-gradient(135deg,#5c5032dc,#20382edc)!important;box-shadow:inset 0 0 0 2px #d7bd7922,0 0 16px #d2ad5d1c,0 4px 14px #0005!important}
#hub #mode-choice button strong{color:#eadfc6}
#hub #hub-edit-party{width:100%;margin-top:10px;border:1px solid #b69a6380;border-radius:8px 3px 8px 3px;background:linear-gradient(125deg,#24372ed9,#102128e0);box-shadow:inset 0 1px #e6d9b314,0 4px 12px #0004;padding:10px 16px}
#hub .hub-extras>summary{display:flex;justify-content:center;width:100%;border:1px solid #a98f5a66;border-radius:7px 3px;background:linear-gradient(125deg,#1f3028b8,#0b1c22d1);box-shadow:inset 0 1px #e6d9b30d,0 3px 10px #0003;color:#ded4bb;min-height:44px}
#hub .hub-extras{width:100%}
#hub .hub-extras[open]>summary{margin-bottom:12px;border-color:#d4b77e99}
#hub .seed-choice>summary{min-height:44px;display:flex;align-items:center;justify-content:center;border:1px solid #a98f5a66;border-radius:6px;background:linear-gradient(125deg,#23372bd4,#102128dd);padding:8px 12px;color:#dfd6bd}
#hub .movement-help,#hub .webapp-actions button{border-color:#b69a637a;background:linear-gradient(125deg,#253a30dc,#10222ae6);box-shadow:inset 0 1px #e6d9b311,0 3px 10px #0003;color:#e6dcc2}
#hub .seed-choice input{border:1px solid #b69a6388;border-radius:5px;background:linear-gradient(#07151ee8,#172a2ce8);color:#efe0bf;min-height:44px;padding:8px 10px}
#hub button:focus-visible,#hub summary:focus-visible,#hub input:focus-visible{outline:2px solid #f0d79d;outline-offset:3px}
@media(hover:hover){#hub #mode-choice button:hover,#hub #hub-edit-party:hover,#hub summary:hover{border-color:#e0c28c;filter:brightness(1.12)}}
.artifact-entry{padding:14px 16px;margin:12px 0;border:1px solid #b89a6477;border-radius:9px 3px;background:linear-gradient(135deg,#334035,#13262c);box-shadow:inset 0 1px #e6d8ae14}
.artifact-entry h3{font:20px Georgia,serif;margin:0 0 7px;color:#efd6a6}.artifact-entry p{font-size:15px;line-height:1.5;margin:0;color:#cad9ce}
.artifact-reward-icon{position:absolute;top:16px;right:20px;color:#e6c17b;font-size:32px;text-shadow:0 0 12px #dba55066}
#artifact-sheet{margin:auto;border-radius:14px 4px;max-height:85dvh}
[data-open-artifacts]{min-height:44px}
.spawn-ghost{position:absolute;inset:3%;z-index:4;border:1px dashed #d1b78e;border-radius:7px;opacity:.48;background-repeat:no-repeat;box-shadow:0 0 8px #d1b78e33;pointer-events:none}
.spawn-ghost.boss{inset:3% auto auto 3%;width:194%;height:194%;border-radius:10px;z-index:5}
.spawn-ghost .element-badge{position:absolute;bottom:4px;left:4px;width:19px;height:19px;min-width:19px;opacity:1}
.cell.spawn-preview{background:transparent!important;box-shadow:inset 0 0 0 1px #d7bd784d!important}

/* Full-body attack stack, variant B. The board keeps its scale and position. */
#attack-stage{position:absolute;inset:0;z-index:24;pointer-events:none;overflow:hidden;isolation:isolate}
.attack-figures{position:absolute;left:-3%;bottom:10%;width:43%;height:64%;max-width:270px;filter:drop-shadow(0 8px 7px #0009)}
.attack-figure{position:absolute;left:calc(var(--slot)*9%);bottom:calc(var(--slot)*7%);height:calc(85% - var(--slot)*4%);width:95%;z-index:calc(8 - var(--slot));animation:attack-arrive var(--combat-entry,900ms) cubic-bezier(.16,.8,.22,1) var(--delay) both;transition:filter 150ms,scale 180ms,translate 180ms;transform-origin:50% 85%;filter:brightness(.75) saturate(.8)}
.attack-figure img{height:100%;width:100%;object-fit:contain;object-position:bottom;user-select:none}
.attack-figure.current{z-index:12;filter:brightness(1.1) saturate(1.1) drop-shadow(0 0 5px #ffd57b);scale:1.06;translate:8% 0}
.attack-figure.strike img{animation:attack-strike var(--combat-strike,540ms) ease-out}
.attack-stack-caption{position:absolute;left:3%;bottom:2%;max-width:90%;padding:9px 16px;border-left:2px solid #e3ba73;background:linear-gradient(90deg,#061b26f5,#061b26df 75%,#061b2600);color:#f0d9ae;text-shadow:0 1px 3px #000;animation:attack-stack-caption-in 300ms ease-out both}
.attack-stack-caption strong{display:block;font:clamp(14px,2.8vw,20px) Georgia,serif;line-height:1.3}.attack-stack-caption span{display:block;margin-top:4px;font-size:12px;color:#bad2d0}
#attack-stage.leaving{animation:attack-leave var(--combat-exit,468ms) ease-in forwards}
@keyframes attack-arrive{0%{transform:translateX(var(--entry)) skewX(-7deg);opacity:0;filter:blur(7px)}60%{opacity:1;filter:blur(2px)}100%{transform:translateX(0) skewX(0);opacity:1;filter:blur(0)}}
@keyframes attack-strike{0%{transform:translateX(-3%)}45%{transform:translateX(7%) rotate(-1deg)}100%{transform:translateX(0)}}
@keyframes attack-stack-caption-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes attack-leave{to{opacity:0;transform:translateX(-12%)}}
@media(prefers-reduced-motion:reduce){.attack-figure,.attack-figure.strike img,.attack-stack-caption,#attack-stage.leaving{animation:none;transition:none}#attack-stage.leaving{opacity:0}}

#combat-frame{position:absolute;inset:7px;z-index:26;border:1px solid #d5b675;border-radius:8px;box-shadow:inset 0 0 0 3px #071c2780,inset 0 0 28px #071c2766,0 0 15px #0004;pointer-events:none}
#combat-frame[hidden]{display:none}.combat-frame-head{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px;background:linear-gradient(90deg,#061b26f5,#173944f0);border-bottom:1px solid #ae8b50;border-radius:7px 7px 0 0}.combat-frame-head strong{font:13px Georgia,serif;letter-spacing:.8px;color:#f0d9ae}.combat-speed-controls{display:flex;gap:4px;pointer-events:auto}.combat-speed-controls button{min-height:32px;min-width:32px;padding:4px 6px;border:1px solid #7c7359;border-radius:4px;background:#061b26;color:#cbd7d4;font:14px Georgia,serif}.combat-speed-controls button[aria-pressed=true]{background:#67542d;border-color:#f1d294;color:#fff0c7;box-shadow:0 0 6px #e0ba7444}.combat-frame-phase{position:absolute;bottom:8px;right:8px;font-size:12px;color:#efdfbd;background:#071c27df;padding:5px 8px;border-radius:3px}.playback-settings{margin:16px 0;padding:12px;border:1px solid #ae8b5066;background:#102c35}.playback-settings h3{margin-top:0}.playback-settings p{font-size:14px;line-height:1.5}.playback-settings button{min-height:44px;flex:1}
#attack-stage .attack-stack-caption{bottom:7%;max-width:85%}
@media(max-width:360px){.combat-frame-head strong{font-size:11px;letter-spacing:0}.combat-speed-controls button{min-width:28px;padding:4px}}
.arena-stage:has(#combat-frame:not([hidden])) #combo-banner{top:58px;max-width:calc(100% - 32px)}
/* Each target gets its own impact number; status follows the hit as a separate step. */
#attack-stage{background:linear-gradient(180deg,transparent 20%,#071c2733 40%,#071c2799 85%)}
#attack-stage .attack-figures{width:37%;height:59%;bottom:18%;left:-3%}
.attack-results{position:absolute;right:4%;top:27%;bottom:19%;width:61%;display:flex;flex-direction:column;justify-content:center;gap:8px}
.attack-result-row{display:grid;grid-template-columns:minmax(0,1fr) 42%;gap:6px;align-items:center;min-height:0;flex:0 1 auto;animation:result-in var(--combat-strike,540ms) ease-out both}
.attack-result-value{padding:8px 3px;text-align:center;color:#ffe0a0;text-shadow:0 2px 4px #000;background:radial-gradient(ellipse,#061b26ed,#061b2670 65%,transparent 85%)}
.attack-result-value>strong{display:block;font:bold clamp(24px,7vw,40px) Georgia,serif;line-height:1.05}.attack-result-value>span{display:block;font-size:12px;margin-top:5px;color:#e7dac3;line-height:1.35}
.attack-result-value.healing{color:#8febbb}.attack-result-value .status-result{font:bold 15px Georgia,serif;line-height:1.4;overflow-wrap:anywhere}.status-result.burn{color:#ffa16e}.status-result.poison{color:#b7e77c}.status-result.chill{color:#a0e4fa}
.attack-result-target{min-width:0;text-align:center;padding:6px;background:linear-gradient(145deg,#102d38f2,#071c27e6);border:1px solid #c97661;border-radius:6px;box-shadow:0 3px 12px #0006}.attack-result-target.ally{border-color:#77cbb6}
.attack-target-art{width:100%;aspect-ratio:1;max-height:105px;background-repeat:no-repeat;border-radius:3px}.attack-result-target>strong{display:block;font:12px Georgia,serif;color:#f1dfbf;margin-top:5px;overflow-wrap:anywhere}.attack-result-target>span{display:block;font-size:11px;color:#c4d3d0;margin-top:3px}.defeated .attack-target-art{filter:grayscale(.65)}.defeated .attack-result-target>span{color:#ffc38e}
.attack-results:has(.attack-result-row:nth-child(4)){gap:3px;top:20%;bottom:16%}.attack-results:has(.attack-result-row:nth-child(4)) .attack-target-art{width:28px;height:28px;float:left;margin-right:4px}.attack-results:has(.attack-result-row:nth-child(4)) .attack-result-value>strong{font-size:22px}
@keyframes result-in{from{opacity:0;transform:translateX(15px)}to{opacity:1;transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.attack-result-row{animation:none}}
main.resulting{width:min(100%,560px);background:linear-gradient(#071c2744,#071c2780),url('assets/arena-reference.webp') center/cover fixed;padding:12px;min-height:100svh}
main.resulting #run-panel{position:relative;margin:0;padding:22px 14px;background:#08232de8;border:1px solid #987b4d;border-radius:16px;box-shadow:0 12px 35px #0008;color:#e9dfc7;isolation:isolate}
main.resulting #panel-title{font:clamp(23px,6vw,34px) Georgia,serif;text-align:center;color:#e9d6ac;letter-spacing:1px;margin:8px 0 12px}main.resulting #panel-text{font-size:14px;line-height:1.5;text-align:center}#result-stats{font-size:12px;line-height:1.4;text-align:center;margin-bottom:14px;color:#a9c3c3}
#result-party{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}#result-party .result-character{display:flex;min-width:0;flex-direction:column;align-items:center;padding:6px 3px;gap:5px;background:linear-gradient(160deg,#25404b,#071c27);border:1px solid #a48b5c;border-radius:8px 12px 7px 10px;color:#eadbbf;min-height:0}#result-party .portrait{width:100%;height:auto;aspect-ratio:1;border-radius:5px;flex:none}#result-party strong{font:15px Georgia,serif}#result-party small{font-size:11px;line-height:1.3}#result-party .reward-affected{border-color:#75cbb5;box-shadow:0 0 9px #5bb5b52b}.reward-health{position:relative;height:6px;width:94%;background:#173541;border:1px solid #8d9a83;border-radius:2px;overflow:hidden}.reward-health i{position:absolute;height:100%;left:0;background:#dd9a76}.reward-health .reward-health-preview{background:#9adca1}.reward-hp-preview{font-size:11px;color:#a6e3af}.reward-change{font-size:11px;color:#bdd8d0}
.reward-choice-heading{font:22px Georgia,serif;text-align:center;color:#e9d6ac;margin:20px 0 12px}#reward-options{display:flex;flex-direction:column;gap:10px}#reward-options>button{position:relative;display:block;width:100%;text-align:left;padding:14px 16px;border:1px solid #ad9564;border-radius:9px 15px 10px 6px;background:linear-gradient(120deg,#1c3943,#08222d);color:#ebdfc8;box-shadow:inset 0 0 15px #0003}#reward-options>button[aria-pressed=true]{border-color:#90dbcb;background:linear-gradient(120deg,#24534e,#0b333c);box-shadow:0 0 9px #6ec8ba44}#reward-options strong{display:block;font:20px Georgia,serif;margin:4px 0 7px}#reward-options>button>span:last-child{font-size:14px;line-height:1.45}.reward-category{font-size:11px;color:#b9c9bc}.reward-portraits .portrait{width:32px;height:32px}#reward-preview-copy{font-size:13px;line-height:1.5;color:#b7d7ce}#reward-confirm{width:100%;min-height:48px;border:1px solid #baa171;border-radius:15px 8px;background:linear-gradient(#1d535a,#0b2e3b);color:#ecdab7;font:21px Georgia,serif}
#combat-frame{border:0;border-radius:0;box-shadow:none;background:url('assets/vine-frame.webp') center/100% 100% no-repeat}#combat-frame .combat-frame-head{margin:8px;background:linear-gradient(90deg,#092b34f5,#123d43e8);border:1px solid #b5a278;border-radius:12px 6px 15px 8px}.attack-result-target{border-radius:10px 5px 13px 7px;border-color:#ab9a71}.attack-stack-caption{border-radius:8px 16px 5px 10px}
#run-panel:before{content:'';position:absolute;inset:-6px;z-index:-1;pointer-events:none;background:url('assets/vine-frame.webp') center/100% 100% no-repeat}
main.resulting .arena-stage,main.resulting .battle-footer,main.resulting .hud{display:none}main.resulting #run-panel{margin-top:12px}main.resulting header{background:#08232de8;border-radius:10px}
/* Ornament behind the attack stage; controls above it without a full-screen foreground layer. */
#combat-frame{z-index:auto;background:none;isolation:auto}
#combat-frame:before{content:'';position:absolute;inset:0;z-index:20;pointer-events:none;background:url('assets/vine-frame.webp') center/100% 100% no-repeat}
#combat-frame .combat-frame-head{position:relative;z-index:30}
#combat-frame .combat-frame-phase{z-index:30}
/* Formation: composed party above, independently scrolling cards below. */
main.party-forming{width:min(100%,580px);max-width:580px;height:100dvh;min-height:0;padding:0;overflow:hidden;background:#081e29;display:flex;flex-direction:column}main.party-forming>header{display:none}main.party-forming .arena-stage,main.party-forming .hud,main.party-forming .battle-footer,main.party-forming #message,main.party-forming #bench,main.party-forming #run-upgrades{display:none}
main.party-forming #team-select{position:relative;display:flex;flex-direction:column;flex:1;min-height:0;padding:0;margin:0;background:#081e29;border:0}
main.party-forming .prep-hero{position:relative;height:42%;flex:0 0 42%;min-height:0;padding:0;background:linear-gradient(0deg,#081e29 0%,#081e2900 45%),url('assets/refuge-painterly.webp') center 42%/cover;overflow:hidden;border-bottom:1px solid #a98c5c}
main.party-forming .prep-hero small,main.party-forming #prep-threat{display:none}main.party-forming #team-title{position:absolute;top:env(safe-area-inset-top,0px);left:0;right:0;z-index:8;margin:0;padding:12px;font:clamp(22px,5vw,30px) Georgia,serif;background:linear-gradient(90deg,#08232de8,#08232d66);color:#eddfbf;text-align:center}
#formation-scene{position:absolute;inset:52px 6px 6px}main:not(.party-forming) #formation-scene{display:none}.formation-figure{position:absolute;height:100%;width:47%;object-fit:contain;object-position:bottom;bottom:0;left:calc(50% - 23.5% + (var(--slot) - (var(--total) - 1)/2)*18%);filter:drop-shadow(0 5px 5px #0008);animation:formation-enter 350ms ease-out both;transition:left 250ms ease-out}
main.party-forming .selection-hint{flex:0 0 auto;text-align:center;padding:9px 8px;margin:0;color:#d5d8c8;font-size:13px;background:#0d2a34}
main.party-forming #character-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:8px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:10px 10px 18px;scrollbar-width:thin;background:linear-gradient(#0d2933de,#071c27ee),url('assets/arena-reference.webp') center/cover}
main.party-forming .character-choice{position:relative;min-width:0}main.party-forming .character-card{display:grid;grid-template-columns:58px minmax(0,1fr);grid-template-rows:auto auto auto;min-height:105px;height:auto;width:100%;text-align:left;gap:4px 6px;padding:7px;border:1px solid #8b7956;border-radius:7px 11px 6px 9px;background:linear-gradient(135deg,#23414b,#0a222e);color:#e7ddc4;overflow:hidden}main.party-forming .character-card.picked{border-color:#71d2c5;box-shadow:inset 0 0 0 1px #6ed0c44d,0 0 8px #6ed0c422}main.party-forming .character-art{grid-column:1;grid-row:1/4;width:58px;height:84px;aspect-ratio:auto;background-size:inherit;border-radius:4px;margin:0;position:static}
main.party-forming .character-heading{grid-column:2;grid-row:1;display:flex;flex-direction:column;min-width:0;padding-right:14px}main.party-forming .character-heading strong{font:15px Georgia,serif}main.party-forming .character-heading>span{font-size:11px;color:#b7cac8}main.party-forming .character-stats{grid-column:2;grid-row:3;font-size:11px;line-height:1.4;white-space:normal}main.party-forming .element-tag{grid-column:2;grid-row:2;font-size:11px;display:flex;align-items:center;gap:3px;padding:0;background:none;border:0}main.party-forming .element-tag svg{width:12px;height:12px}main.party-forming .selection-label{position:absolute;right:5px;top:6px;font-size:0;padding:0;background:none}main.party-forming .picked .selection-label:after{content:'✓';font-size:13px;color:#e7c989}main.party-forming .character-details{position:absolute;right:5px;bottom:5px;width:23px;height:23px;min-height:23px;min-width:23px;border:1px solid #8c957b;border-radius:50%;font:13px Georgia,serif;padding:0;background:#08232d;color:#cdd7c0}
main.party-forming #prep-synergy,main.party-forming #team-select>[data-open-gems],main.party-forming #team-select>[data-open-artifacts]{display:none}
main.party-forming .formation-confirm{order:10;display:flex;align-items:center;gap:8px;padding:10px 10px calc(10px + env(safe-area-inset-bottom));flex:0 0 auto;background:linear-gradient(#163740,#08232d);border-top:1px solid #b19a6d}main.party-forming #team-count{margin:0;flex:0 0 31%;font-size:13px;line-height:1.3;color:#e1d2b0}main.party-forming #begin-battle{flex:1;min-height:48px;padding:8px;border:1px solid #bea16b;border-radius:12px 6px;background:linear-gradient(#23545a,#0b2e3b);font:17px Georgia,serif;color:#eddfbd}main.party-forming #begin-battle:disabled{opacity:.45}
@keyframes formation-enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.formation-figure{animation:none;transition:none}}@media(max-width:360px){main.party-forming .character-card{grid-template-columns:46px minmax(0,1fr)}main.party-forming .character-art{width:46px}main.party-forming #begin-battle{font-size:15px}}
/* One illustrated refuge surface, with the formation UI resting inside it. */
main.party-forming{width:100%;max-width:none;background:none;isolation:isolate}
main.party-forming:before{content:'';position:fixed;inset:0;z-index:-2;background:url('assets/refuge-painterly.webp') center/cover}
main.party-forming:after{content:'';position:fixed;inset:0;z-index:-1;background:linear-gradient(180deg,#061b2610 25%,#061b26aa 53%,#061b26ed 100%);pointer-events:none}
main.party-forming #team-select{width:min(100%,820px);margin:0 auto!important;background:none!important;box-shadow:none;border:0}
main.party-forming .prep-hero{background:none!important;border:0!important;border-radius:0!important;box-shadow:none!important;margin:0!important;height:44%;flex-basis:44%;overflow:visible}
main.party-forming #team-title{background:linear-gradient(90deg,transparent,#08232da8 20%,#08232da8 80%,transparent);font-size:clamp(24px,4vw,34px);text-shadow:0 2px 4px #000;border:0}
main.party-forming #formation-scene{inset:52px 0 -10px}
main.party-forming .formation-figure{filter:drop-shadow(0 8px 6px #0009)}
main.party-forming .selection-hint{background:none;padding:15px 8px 10px;text-shadow:0 2px 4px #000;color:#eadfc5;font:15px Georgia,serif}
main.party-forming #character-cards{background:none!important;padding:8px 14px 20px;gap:10px;mask-image:linear-gradient(transparent,#000 8px,#000 calc(100% - 12px),transparent)}
main.party-forming .character-card{border:1px solid #a48d5d;background:linear-gradient(120deg,#193942df,#08222dd9)!important;border-radius:4px!important;box-shadow:inset 0 0 18px #0005,0 3px 9px #0004}
main.party-forming .character-card.picked{border-color:#a3d9cc;box-shadow:inset 0 0 0 1px #65d3c580,0 0 8px #58c3b444}
main.party-forming .character-choice:after{content:'';position:absolute;inset:0;pointer-events:none;opacity:.35;background:url('assets/vine-frame.webp') center/100% 100% no-repeat}
main.party-forming .formation-confirm{background:linear-gradient(90deg,#071c2766,#15333bd9,#071c2766);border:0;position:relative;box-shadow:0 -8px 18px #071c2744}
main.party-forming .formation-confirm:before{content:'';position:absolute;top:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent,#b49c68,transparent)}
main.party-forming #begin-battle{border:0;border-radius:0;background:linear-gradient(110deg,#133c43,#20606b,#12303d);border-image:url('assets/root-bronze-frame.png') 90 fill / 16px / 0 stretch;padding:14px 24px;min-height:58px;text-shadow:0 2px 4px #000}
/* Refuge destinations share the same painted bronze and root treatment. */
#hub #hub-edit-party,#hub .hub-extras>summary,#hub #mode-choice button{position:relative;border:0;border-radius:0;background:linear-gradient(120deg,#123039ed,#183e3be8,#0a202bee);border-image:url('assets/root-bronze-frame.png') 90 fill / 13px / 0 stretch;box-shadow:0 4px 13px #0005;color:#ede0c4;text-shadow:0 1px 3px #000;padding:14px 18px}
#hub #mode-choice button{min-height:84px;text-align:center;align-items:center}#hub #mode-choice button strong{font:19px Georgia,serif}#hub #mode-choice button small{font-size:12px;line-height:1.35;color:#c1d1c9}
#hub #mode-choice button[aria-pressed=true]{background:linear-gradient(120deg,#255154,#173c45);filter:brightness(1.12);box-shadow:0 0 12px #86c9b92b}
#hub #hub-edit-party{font:19px Georgia,serif;min-height:56px;margin:12px 0 8px}#hub .hub-extras>summary{min-height:48px;font:15px Georgia,serif;padding:12px 22px}
#hub #hub-start-run{border-image:url('assets/root-bronze-frame.png') 90 fill / 21px / 0 stretch;background:linear-gradient(120deg,#184450,#235652,#092632);border-radius:0;color:#f1dfb5;text-shadow:0 2px 5px #000}
@media(min-width:900px){main.party-forming .prep-hero{height:48%;flex-basis:48%}main.party-forming #character-cards{grid-template-columns:repeat(3,minmax(0,1fr))}main.party-forming .formation-figure{width:35%;left:calc(50% - 17.5% + (var(--slot) - (var(--total) - 1)/2)*16%)}}
/* The painted asset includes transparent outer margins: inset the fill independently. */
#hub #mode-choice button,#hub #hub-edit-party,#hub .hub-extras>summary,#hub #hub-start-run,main.party-forming #begin-battle{isolation:isolate;position:relative;border:0!important;border-image:none!important;background:none!important;box-shadow:none!important}
#hub #mode-choice button:before,#hub #hub-edit-party:before,#hub .hub-extras>summary:before,#hub #hub-start-run:before,main.party-forming #begin-battle:before{content:'';position:absolute;inset:16% 5%;z-index:-2;background:linear-gradient(120deg,#14363aee,#092632f2);clip-path:polygon(4% 0,96% 0,100% 18%,100% 82%,96% 100%,4% 100%,0 82%,0 18%);pointer-events:none}
#hub #mode-choice button:after,#hub #hub-edit-party:after,#hub .hub-extras>summary:after,#hub #hub-start-run:after,main.party-forming #begin-battle:after{content:'';position:absolute;inset:0;z-index:-1;background:url('assets/root-bronze-frame.png') center/100% 100% no-repeat;pointer-events:none}
#hub #mode-choice button[aria-pressed=true]:before{background:linear-gradient(120deg,#32605aee,#153d48f5)}
#hub #mode-choice button{padding:18px 20px}#hub #hub-edit-party,#hub .hub-extras>summary{padding:18px 22px}
#detail-sheet{position:fixed;inset:0;margin:auto;width:min(92vw,460px);max-height:86dvh;height:fit-content;overflow-y:auto;padding:24px 28px;background:linear-gradient(145deg,#173943f5,#081f2cf7);color:#e8ddc6;border:1px solid #a08b5b;border-radius:15px 8px 18px 9px;box-shadow:0 15px 60px #0009}
#detail-sheet:before{content:'';position:absolute;inset:5px;pointer-events:none;background:url('assets/vine-frame.webp') center/100% 100% no-repeat;opacity:.65}#detail-sheet::backdrop{background:#020f19b3;backdrop-filter:blur(4px)}
#detail-sheet .detail-character-portrait{width:138px;height:138px;aspect-ratio:1;margin:18px auto 12px;background-repeat:no-repeat;border:1px solid #bca371;border-radius:12px 5px 14px 8px;box-shadow:0 6px 15px #0005}#detail-sheet .detail-character-portrait[hidden]{display:none}#detail-sheet #detail-title{text-align:center;font:25px Georgia,serif;color:#ecdbb4;margin:10px 0 18px}#detail-content p{font-size:14px;line-height:1.55;color:#d1dfd8;padding-bottom:10px;border-bottom:1px solid #a28b5133}#detail-sheet .sheet-close{background:none;border:0;font:14px Georgia,serif;color:#d5c9ac}
main.party-forming .character-card{border:6px solid transparent!important;background-clip:padding-box!important;border-radius:12px 5px 14px 7px!important;box-shadow:none!important;padding:5px}main.party-forming .character-choice:after{inset:0;opacity:.85;background-size:100% 100%}main.party-forming .character-card.picked{box-shadow:inset 0 0 0 1px #93d9cc!important;background:linear-gradient(120deg,#29514fe8,#0d333de8)!important;background-clip:padding-box!important}main.party-forming .picked .selection-label{right:10px;top:10px}main.party-forming .character-details{right:9px;bottom:8px}
/* Selected and expanded states use the same inset surface as resting buttons. */
#hub #mode-choice button[aria-pressed=true],#hub #mode-choice button[aria-pressed=false],#hub #mode-choice button:hover{background:none!important;border:0!important;box-shadow:none!important}
#hub #mode-choice button:before,#hub #mode-choice button[data-mode=endless]:before,#hub #mode-choice button[aria-pressed=true]:before,#hub #mode-choice button[data-mode=endless][aria-pressed=true]:before{opacity:1;inset:16% 5%;background:linear-gradient(120deg,#14363aee,#092632f2)!important;background-image:linear-gradient(120deg,#14363aee,#092632f2)!important}
#hub #mode-choice button[aria-pressed=true]:before,#hub #mode-choice button[data-mode=endless][aria-pressed=true]:before{background:linear-gradient(120deg,#32605aee,#153d48f5)!important}
#hub .hub-extras[open]{padding:0;background:none!important;border:0!important;border-radius:0;box-shadow:none}
#hub .hub-extras[open]>summary{margin-bottom:8px}
#hub .hub-extras button,#hub .hub-extras .seed-choice>summary{position:relative;isolation:isolate;background:none!important;border:0!important;border-image:none!important;border-radius:0;box-shadow:none!important;padding:17px 20px;color:#e9dcc2;font:15px Georgia,serif;min-height:54px}
#hub .hub-extras button:before,#hub .hub-extras .seed-choice>summary:before{content:'';position:absolute;inset:16% 5%;z-index:-2;pointer-events:none;background:linear-gradient(120deg,#14363aee,#092632f2);clip-path:polygon(4% 0,96% 0,100% 18%,100% 82%,96% 100%,4% 100%,0 82%,0 18%)}
#hub .hub-extras button:after,#hub .hub-extras .seed-choice>summary:after{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:url('assets/root-bronze-frame.png') center/100% 100% no-repeat}
#hub .hub-extras .seed-choice[open]{background:#08232dbd;border:0;padding-bottom:10px}#hub .hub-extras .webapp-actions{gap:8px}
/* Route selection occupies the screen; route symbols float directly over the landscape. */
main.mapping{position:relative;width:100%;max-width:none!important;height:100dvh;min-height:0;padding:0!important;overflow:hidden;background:none}
main.mapping>header{position:absolute;top:max(10px,env(safe-area-inset-top));right:12px;left:auto;z-index:12;border:0;margin:0;background:none;padding:0}main.mapping header h1,main.mapping #level-title,main.mapping .arena-stage,main.mapping .battle-footer{display:none}
main.mapping #run-map{position:absolute;inset:0;border:0;margin:0;padding:0;background:linear-gradient(180deg,#06192344,transparent 45%,#06192355),url('assets/journey-map.webp') center/cover;overflow:hidden}
main.mapping.biome-2 #run-map{background-image:linear-gradient(180deg,#06192344,transparent 45%,#06192355),url('assets/biome-bastion.webp')}main.mapping.biome-3 #run-map{background-image:linear-gradient(180deg,#06192344,transparent 45%,#06192355),url('assets/biome-black-halls.webp')}
main.mapping #map-title{position:absolute;top:max(14px,env(safe-area-inset-top));left:20px;margin:0;z-index:5;font:clamp(23px,4vw,32px) Georgia,serif;color:#efdfbd;text-shadow:0 2px 5px #000}
main.mapping #map-status,main.mapping #map-party,main.mapping #map-health{display:none!important}
main.mapping #map-rows{position:absolute;top:70px;bottom:92px;left:0;right:0;width:min(100%,940px);margin:0 auto;height:auto!important;border:0;border-radius:0;box-shadow:none;background:none!important;overflow:visible;padding:0}main.mapping #map-rows:before{display:none}main.mapping .map-row:after{display:none}
main.mapping #map-rows .map-node strong{font-size:clamp(14px,2.7vw,18px);padding:4px 8px;background:#08232dbc}main.mapping #map-rows .map-node small{font-size:11px}main.mapping #map-rows .map-symbol{width:46px;height:46px}main.mapping #map-rows .boss .map-symbol{width:54px;height:54px}
.map-tools{position:absolute;bottom:env(safe-area-inset-bottom,0px);left:0;right:0;display:flex;justify-content:center;align-items:center;gap:8px;padding:15px 10px;background:linear-gradient(transparent,#061b26cc);z-index:6}.map-tools button{min-height:44px;padding:8px 14px;background:#092a33dd;border:1px solid #b09a68;border-radius:8px 4px;color:#e9d9b8;font:14px Georgia,serif}.map-tools #map-restart{display:block;width:auto;margin:0;font-size:12px;opacity:.8}
@media(max-width:400px){main.mapping #map-title{font-size:21px;top:18px;left:12px}.map-tools{gap:5px}.map-tools button{padding:8px;font-size:12px}main.mapping #map-rows{top:70px;bottom:85px}}

/* The party assembles in the refuge armory. */
main.party-forming:before{background-image:url('assets/party-armory.webp');background-position:center 38%}

#expedition-complete{padding:20px 14px;margin:18px 0;background:linear-gradient(120deg,#163b3ed9,#092630e8);border:1px solid #a18b5b;border-radius:18px 5px 20px 8px;text-align:center}#expedition-complete p{line-height:1.6;color:#e6dbbf}#expedition-complete button{display:block;width:100%;margin-top:12px;min-height:50px}#enter-endless{background:linear-gradient(120deg,#32605a,#153d48);color:#f2e5c4;border-color:#bea16b}
/* Compact mobile combat dock: details expand only during targeting. */
@media(max-width:600px){
main.battling{width:100%;max-width:520px;height:100dvh;min-height:0;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
main.battling header{height:40px;flex-basis:40px;justify-content:flex-end;padding:0 10px}main.battling #level-title{top:calc(env(safe-area-inset-top,0px) + 10px);left:12px;right:55px;font-size:14px;letter-spacing:.3px;text-align:left}main.battling #journey-dots{display:none}main.battling #menu-open{width:32px;height:32px;min-height:32px;font-size:22px}
main.battling .hud{height:18px;flex-basis:18px;padding:0 12px 5px}main.battling .timer{height:5px;width:calc(100% - 45px)}main.battling #clock{font-size:12px}main.battling .status{bottom:5px}
main.battling .arena-stage{padding:32px 6% 8px}main.battling #board{width:min(100%,calc((100dvh - 215px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))*.75))}main.battling #wave-label{top:5px;font-size:11px;padding:3px 10px}
main.battling .battle-footer{display:grid;grid-template-columns:minmax(0,1fr) auto auto 78px;gap:5px;align-items:center;padding:0 10px 12px!important;min-height:94px}main.battling .battle-footer:before{inset:3px;border-color:#b98b4d55}
main.battling #battle-summary{grid-column:1/-1;grid-row:1;min-height:30px;padding:4px 38px 4px 2px;flex-direction:row;justify-content:flex-start;gap:6px;text-align:left;overflow:hidden}main.battling #battle-summary strong{font-size:12px;letter-spacing:0;white-space:nowrap}main.battling #battle-summary span{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
main.battling .portrait-row,main.battling .battle-actions,main.battling .controls{display:contents}main.battling #team-dock{grid-row:2;grid-column:1;gap:5px;justify-content:flex-start}main.battling .dock-character{width:clamp(32px,10vw,43px);height:clamp(32px,10vw,43px);min-height:32px;padding:2px}main.battling .dock-class{width:16px;height:16px;font-size:11px;line-height:14px;bottom:-4px}
main.battling #synergy-slot{position:absolute;right:10px;top:2px}main.battling #synergy-slot #synergy-open{width:28px;height:28px;min-height:28px;padding:4px}
main.battling #wind-control{grid-column:2;grid-row:2;margin:0;padding:0;width:40px}main.battling #push-control{grid-column:3;grid-row:2;width:40px;margin:0}main.battling #wind-toggle,main.battling #push-toggle{width:40px;height:40px;min-height:40px;padding:0;border-radius:50%;font-size:0;letter-spacing:0}main.battling #wind-toggle:after{content:'≋';font-size:25px;color:#75e1c6}main.battling #push-toggle:after{content:'↠';font-size:24px;color:#e7c17d}
main.battling #wind-hint,main.battling #push-hint{display:none}main.battling #pass{grid-row:2;grid-column:4;min-height:44px;height:44px;width:78px;font-size:12px;letter-spacing:0;padding:4px}
main.battling #wind-control:has(#wind-confirm:not([hidden])){grid-row:3;grid-column:1/-1;width:auto}main.battling #push-control:has(#push-confirm:not([hidden])){grid-row:4;grid-column:1/-1;width:auto}main.battling #wind-control:has(#wind-confirm:not([hidden])) #wind-hint,main.battling #push-control:has(#push-confirm:not([hidden])) #push-hint{display:block;position:static;font-size:11px;margin:4px 0;padding:0;background:none}main.battling .wind-actions button,main.battling .push-actions button{min-height:40px;font-size:12px}
main.battling #spawn-confirm{grid-column:1/-1;grid-row:2}main.battling.spawning #team-dock,main.battling.spawning #wind-control,main.battling.spawning #push-control,main.battling.spawning #pass{display:none}main.battling.spawning #board{width:min(100%,calc((100dvh - 225px)*.75))}
}
@media(max-width:360px){main.battling #team-dock{gap:3px}main.battling .dock-character{width:28px;height:28px;min-height:28px}main.battling #battle-summary strong{font-size:11px}main.battling #battle-summary span{font-size:10px}}

/* A single compact label accompanies resolution; controls return for the next turn. */
main.combat-playing .battle-footer{display:none!important}
#combat-frame .combat-frame-head{display:flex;align-items:center;justify-content:center;gap:8px;width:fit-content;max-width:calc(100% - 24px);margin:8px auto;padding:7px 12px;border-radius:12px 5px 14px 6px;background:linear-gradient(110deg,#082732ed,#153b3cde)}
#combat-frame .combat-frame-head strong{font:13px Georgia,serif;letter-spacing:0;line-height:1.3}
#combat-frame .combat-frame-phase{position:static;flex-shrink:0;padding:0;background:none;font-size:11px;color:#c5d6cf}
#attack-stage .attack-stack-caption{display:none}
main.combat-playing #wave-label{visibility:hidden}
main.combat-playing .arena-stage{flex:1}
/* Collectible character cards: the same painted figures as formation and combat. */
#collection-sheet{width:min(1020px,94vw);max-width:1020px;max-height:92dvh;padding:28px 22px;background:linear-gradient(145deg,#0b252cfa,#102024fa);border:1px solid #aa905a;border-radius:32px 9px 34px 12px;box-shadow:0 0 0 5px #1b3333,0 25px 100px #000b;color:#ece5cb}
#collection-sheet::backdrop{background:#06151bd9;backdrop-filter:blur(7px)}
.collection-eyebrow,.collection-rarity{color:#cfb879;letter-spacing:.12em;font-size:10px}
#collection-title{font:28px Georgia,serif;margin:14px 0 8px}#collection-copy{color:#bdccc8;max-width:700px;font-size:14px}
#collection-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:16px;margin-top:22px}
.collection-card{position:relative;overflow:hidden;border:1px solid #7e754c;border-radius:24px 6px 25px 7px;padding:14px;background:radial-gradient(ellipse at 50% 18%,#34585988,transparent 65%),linear-gradient(150deg,#213a3c,#102329);box-shadow:inset 0 0 30px #09191a}
.collection-figure{height:230px;display:flex;justify-content:center;align-items:center;background:radial-gradient(ellipse at bottom,#c7b77825,transparent 70%)}
.collection-figure img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 8px 7px #0007)}
.collection-card h3{font:23px Georgia,serif;color:#f0deb0;margin:12px 0 4px}.collection-card p{font-size:12px;line-height:1.5;margin:7px 0;color:#c5d2cc}.collection-tags{display:flex;gap:5px;flex-wrap:wrap}.collection-tags span{padding:3px 7px;border:1px solid #758c7d66;border-radius:8px;color:#abd5c4;font-size:10px}.collection-stats{color:#ecdfb8!important}.collection-skill{min-height:75px}.collection-unlock{display:block;margin-top:14px;color:#ddc887;font-size:11px}.collection-card.unowned .collection-figure img{filter:brightness(.23) saturate(.2);opacity:.7}.collection-card.unowned{border-color:#45605b}.collection-card button{width:100%;margin-top:10px;background:linear-gradient(140deg,#71805b,#334e42);border:1px solid #ccb478;border-radius:15px 4px;color:#fff0c9;padding:12px}.collection-card.recruited{animation:recruit-reveal .8s ease-out}.collection-card.recruited .collection-figure{height:320px}#collection-claim-status{color:#c9dfb7}#collection-note{font-size:11px;color:#b9ceca}#recruit-open{border-color:#d9bc70;color:#f9df9f}#recruit-status{color:#c6d6b8;font-size:13px}
@keyframes recruit-reveal{from{opacity:0;transform:translateY(20px);filter:brightness(1.8)}to{opacity:1;transform:none;filter:none}}
@media(max-width:600px){#collection-sheet{padding:22px 14px;max-height:94dvh}#collection-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.collection-figure{height:175px}.collection-card{padding:10px}.collection-card h3{font-size:20px}.collection-skill{min-height:0}.collection-card button{font-size:12px;padding:10px 5px}}
@media(prefers-reduced-motion:reduce){.collection-card.recruited{animation:none}}
#hub-collection strong,#hub-collection small{display:block}#hub-collection small{font-size:11px;margin-top:5px;color:#ced2ad}
#collection-sheet.wegwarte{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;padding:calc(24px + env(safe-area-inset-top)) max(20px,calc((100vw - 1080px)/2)) calc(24px + env(safe-area-inset-bottom));box-sizing:border-box;border:0;border-radius:0;background:linear-gradient(180deg,#07191ee0,#102025e8 40%,#0c191df5),url('assets/refuge-hub.webp') center/cover;box-shadow:none}
.wegwarte-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:22px 0;padding:15px;border:1px solid #927e5080;border-radius:20px 6px;background:linear-gradient(120deg,#173837,#13252bec)}#wegwarte-credit{color:#efd397;font:18px Georgia,serif;margin-right:auto}.wegwarte-actions button{border:1px solid #b49b5e;padding:12px 16px;border-radius:16px 5px;background:linear-gradient(130deg,#4e6450,#203f3b);color:#f2e1b5}.wegwarte-actions button:disabled{opacity:.45}
.wegwarte-welcome{grid-column:1/-1;max-width:620px;justify-self:center;text-align:center;padding:50px 25px;background:radial-gradient(ellipse,#43624940,transparent 70%)}.wegwarte-welcome>span{font-size:48px;color:#ddbd75;text-shadow:0 0 28px #dcb95777}.wegwarte-welcome h3{font:26px Georgia,serif;color:#ecdbb2}.wegwarte-welcome p{color:#c5d2c8;line-height:1.7}.wegwarte-welcome small{color:#9fafab}
@media(max-width:600px){#collection-sheet.wegwarte{padding-left:16px;padding-right:16px}.wegwarte-actions{gap:8px;padding:12px}#wegwarte-credit{flex-basis:100%;font-size:16px}.wegwarte-actions button{flex:1;font-size:12px;padding:10px}.wegwarte-welcome{padding:30px 10px}.wegwarte-welcome h3{font-size:22px}}
.wegzeichen-slot{display:flex;align-items:center;gap:12px;text-align:left;padding:9px 16px;margin:0 14px 8px;border:1px solid #99845188;border-radius:20px 6px;background:linear-gradient(115deg,#1e3c39dd,#0b282fdd);color:#e8d8af;min-height:52px}.wegzeichen-slot svg{width:30px;height:30px;fill:none;stroke:#e2c179;stroke-width:1.5}.wegzeichen-slot>span:nth-child(2){flex:1}.wegzeichen-slot small{display:block;font-size:9px;letter-spacing:.08em;color:#a6bcb2}.wegzeichen-slot strong{font:15px Georgia,serif}main.party-forming #wegzeichen-slot{order:9;flex:0 0 auto}main:not(.party-forming) #wegzeichen-slot{display:none}
#wegzeichen-sheet{width:min(950px,94vw);max-width:950px;max-height:92dvh;padding:26px 20px;border:1px solid #b29960;border-radius:30px 8px;background:radial-gradient(ellipse at top,#304e4233,transparent),#10272cf5;color:#e9dec4;box-shadow:0 0 0 4px #203b35,0 20px 80px #000a}#wegzeichen-sheet::backdrop{background:#03161bcf;backdrop-filter:blur(6px)}#wegzeichen-title{font:29px Georgia,serif}#wegzeichen-copy,.wegzeichen-footnote{color:#b9cbc2;font-size:13px;line-height:1.5}#wegzeichen-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:20px 0}.wegzeichen-card{padding:18px;border:1px solid #82774e;border-radius:25px 6px;background:linear-gradient(145deg,#25433b,#102831)}.wegzeichen-card.picked{border-color:#e0c485;box-shadow:inset 0 0 0 1px #d8c38c55}.wegzeichen-card.locked{opacity:.65}.wegzeichen-emblem{height:72px;display:flex;justify-content:center;align-items:center;background:radial-gradient(ellipse,#cab16c26,transparent 70%)}.wegzeichen-emblem svg{width:52px;height:52px;fill:none;stroke:#e6c47b;stroke-width:1.3;filter:drop-shadow(0 0 7px #bfac6055)}.wegzeichen-card h3{font:22px Georgia,serif;color:#eddbac}.wegzeichen-card p{font-size:13px;line-height:1.6;min-height:112px}.wegzeichen-card small{display:block;color:#bdcabb;font-size:11px;line-height:1.4}.wegzeichen-progress{height:5px;background:#061b24;border-radius:5px;margin:12px 0 8px;overflow:hidden}.wegzeichen-progress i{display:block;height:100%;background:linear-gradient(90deg,#77b69d,#d9c47d)}.wegzeichen-card button,#wegzeichen-clear{width:100%;padding:11px;margin-top:15px;border:1px solid #b3a06b;border-radius:15px 5px;background:linear-gradient(140deg,#365b49,#183937);color:#f0dfb5}.wegzeichen-card button:disabled{opacity:.5}#wegzeichen-clear{width:auto}.wegzeichen-footnote{font-size:11px;margin-top:18px}#wegzeichen-toast{position:absolute;left:50%;top:48px;transform:translateX(-50%);z-index:35;padding:10px 16px;border:1px solid #cfb471;border-radius:17px 4px;background:#123431ef;color:#f1dfb4;font:14px Georgia,serif;pointer-events:none;white-space:nowrap;box-shadow:0 0 25px #5cb09b44}.weg-shield{position:absolute;bottom:8px;right:2px;font-size:9px;color:#e7d398;background:#123d3eea;border-radius:4px;padding:1px 3px}#wegzeichen-result{color:#ddca8c;font-size:13px}
@media(max-width:600px){#wegzeichen-options{grid-template-columns:1fr;gap:10px}.wegzeichen-card{padding:14px;display:grid;grid-template-columns:64px 1fr;column-gap:12px}.wegzeichen-emblem{grid-column:1;grid-row:1/4}.wegzeichen-card>small,.wegzeichen-card h3,.wegzeichen-card p{grid-column:2}.wegzeichen-card h3{margin:5px 0}.wegzeichen-card p{min-height:0;margin:6px 0}.wegzeichen-card>strong,.wegzeichen-progress,.wegzeichen-card button,.wegzeichen-card>small:last-of-type{grid-column:1/-1}#wegzeichen-sheet{padding:22px 14px}.wegzeichen-slot{min-height:46px;margin-bottom:5px;padding:7px 12px}}
/* Shared room navigation and the approved illustrated refuge home. */
.refuge-nav{position:fixed;z-index:60;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,960px);display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:7px 8px calc(8px + env(safe-area-inset-bottom));box-sizing:border-box;background:linear-gradient(180deg,#123031f5,#071b24fa);border-top:1px solid #bba16c;box-shadow:0 -10px 28px #03141b66;backdrop-filter:blur(12px)}.refuge-nav:before{content:'';position:absolute;top:-3px;left:8%;right:8%;height:3px;background:linear-gradient(90deg,transparent,#ba9a5b88,transparent);pointer-events:none}
.refuge-nav button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-width:0;min-height:64px;margin:0;padding:5px 2px;border:0;border-radius:0;background:none;box-shadow:none;color:#93b9b8;font:12px Georgia,serif;line-height:1.2;transition:color .18s}.refuge-nav button.active{color:#f0cd85;background:radial-gradient(ellipse at 50% 25%,#bd985d24,transparent 70%)}.refuge-nav button.active:after{content:'';position:absolute;bottom:0;left:28%;right:28%;height:2px;background:#e0bd75;box-shadow:0 0 8px #dfc78388}.refuge-nav button:focus-visible{outline:2px solid #d9c78c;outline-offset:-2px}.refuge-nav button:disabled{opacity:.45}.refuge-nav-icon{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:1px solid transparent;border-radius:50%}.refuge-nav button.active .refuge-nav-icon{border-color:#d7b56f;box-shadow:0 0 10px #dab76644}.refuge-nav svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
main.at-hub{height:100dvh;min-height:100dvh;overflow:hidden}main.at-hub>header{display:none}#hub{height:100dvh;min-height:100dvh}#hub:before{background-image:url('assets/refuge-home-v2.webp');background-position:center;background-size:cover}#hub:after{background:linear-gradient(180deg,#02121830,transparent 30%,transparent 62%,#03171c30)}
.hub-scene{height:100dvh;min-height:100dvh;box-sizing:border-box;padding:calc(62px + env(safe-area-inset-top)) max(20px,env(safe-area-inset-right)) calc(102px + env(safe-area-inset-bottom));align-items:center;justify-content:space-between}
.hub-copy{position:static;margin:0 auto auto;max-width:750px;width:100%;text-align:center}.hub-copy>small{display:none}.hub-copy h2{font:clamp(38px,9vw,68px) Georgia,serif;letter-spacing:0;margin:0 0 12px;color:#efd8a6;text-shadow:0 3px 15px #0009}.hub-copy h2:after{content:'';display:block;width:62%;max-width:330px;height:1px;margin:14px auto 0;background:linear-gradient(90deg,transparent,#bd9c67,transparent)}.hub-copy p{max-width:none;text-align:center;font:clamp(12px,3.3vw,18px) Georgia,serif;color:#e7d4ad;margin:0 auto;text-shadow:0 2px 6px #000}
#hub-credit{position:absolute;top:calc(14px + env(safe-area-inset-top));right:18px;z-index:8;min-width:90px;padding:7px 12px;border:1px solid #baa06a;border-radius:10px 3px;background:#10262bcc;color:#e4ca92;font:14px Georgia,serif}
.hub-controls{width:min(100%,560px);padding:0;border:0;background:none;box-shadow:none;margin:auto auto 0;text-align:center}.hub-controls>.hub-section-head,#hub #hub-edit-party,#hub #hub-collection{display:none!important}#hub-party{gap:14px;margin:0 auto 8px}#hub-party .portrait{width:48px;height:48px}#hub-party .hub-companion{width:58px}#hub-party strong{font-size:12px}#hub-party-note{font-size:11px;margin:4px 0 9px}#hub #hub-start-run{width:100%;min-height:92px;padding:20px 22px;font-size:22px;margin:0}#hub-start-run strong,#hub-start-run small{display:block}#hub-start-run strong{font:clamp(19px,5.3vw,31px) Georgia,serif}#hub-start-run small{font:13px Georgia,serif;color:#aecbc4;margin-top:5px}#hub #hub-start-run:before{inset:16% 4%;background:linear-gradient(110deg,#102e30ee,#204443eb,#10272fed)}#hub #hub-start-run:disabled{opacity:.65}#collection-note{margin:5px auto;font-size:11px;color:#d5c8a5}#collection-retry{margin:4px auto}
main.party-forming #team-select{padding-bottom:calc(84px + env(safe-area-inset-bottom))}#collection-sheet.wegwarte{padding-bottom:calc(106px + env(safe-area-inset-bottom))}#collection-sheet.wegwarte #wegwarte-collection{display:none}.refuge-options{padding:12px 0;margin:15px 0 0;border-top:1px solid #88764466;text-align:left}.refuge-options summary{cursor:pointer;min-height:40px;display:flex;align-items:center;color:#dec58d}.refuge-options button{width:100%;margin:6px 0}.refuge-options input{width:100%;min-height:44px}.refuge-options .webapp-actions{display:flex;gap:8px}
@media(min-width:900px){#hub:before{background-image:url('assets/refuge-hub.webp')}.hub-scene{align-items:center;padding-top:72px}.hub-copy,.hub-controls{margin-left:auto;margin-right:auto}.hub-controls{margin-top:auto}.hub-copy{margin-top:0}.hub-copy h2{font-size:58px}}
@media(max-height:680px){.hub-scene{padding-top:calc(52px + env(safe-area-inset-top));padding-bottom:calc(88px + env(safe-area-inset-bottom))}.hub-copy h2{font-size:32px}.hub-copy p{font-size:12px}#hub #hub-start-run{min-height:72px;padding:16px}#hub-party .portrait{width:38px;height:38px}#hub-party .hub-companion{width:44px}.refuge-nav button{min-height:57px}}
@media(max-width:360px){.refuge-nav button{font-size:10px}.refuge-nav{padding-left:4px;padding-right:4px}.refuge-nav-icon{width:30px;height:30px}.refuge-nav svg{width:22px;height:22px}}
@media(prefers-reduced-motion:reduce){.refuge-nav button{transition:none}}
/* New class controls stay within the compact footer; details open on demand. */
#hero-movement-open{position:absolute;right:48px;top:2px;width:28px;min-height:28px;height:28px;padding:0;color:#c8decf;border:1px solid #ad915b;border-radius:50%;background:linear-gradient(140deg,#344940,#0c242b);font-size:22px}
main.battling .battle-footer:has(#hero-movement-open:not([hidden])) #battle-summary{padding-right:78px}
#hero-movement-sheet{margin:auto;max-width:420px;width:calc(100% - 32px);box-sizing:border-box;max-height:80dvh;overflow:auto;background:radial-gradient(ellipse at top,#34493b,#101f24 75%);border:2px solid #ab8d51;border-radius:28px 12px 28px 12px;padding:24px;color:#eadcba;box-shadow:0 0 0 4px #405345,0 12px 60px #000b}
#hero-movement-sheet::backdrop{background:#07161bc2;backdrop-filter:blur(3px)}
#hero-movement-options{display:grid;gap:10px}#hero-movement-options button{display:grid;text-align:left;gap:6px;min-height:54px;padding:12px;border:1px solid #7a7854;border-radius:14px;background:linear-gradient(125deg,#33493d,#15282a);color:#f0dfb6}#hero-movement-options button[aria-pressed=true]{border-color:#e9c479;box-shadow:inset 0 0 16px #b9954038}#hero-movement-options span,#hero-movement-preview{font-size:13px;line-height:1.45}.corner-link{fill:none;stroke:#c1e799!important}.debuff-chip.root{color:#b8d595}.status-root{--combat-color:#b8d595}
/* Save actions use the same bronze-and-root surfaces as the refuge. */
#title-resume{background:linear-gradient(135deg,#426553,#173734);border:1px solid #d2b575;color:#f4e6c1;min-height:48px;margin-bottom:12px;font:20px Georgia,serif;border-radius:18px 5px 18px 5px;padding:12px 30px;box-shadow:0 6px 24px #0009}
#hub-resume{padding:12px 20px;border:1px solid #c6ac70;border-radius:18px 6px;background:linear-gradient(130deg,#345a48,#142d2c);color:#efe4c4;font:18px Georgia,serif}#save-controls{border-top:1px solid #aa8e5555;margin-top:20px;padding-top:12px}#save-controls button{display:block;width:100%;margin:8px 0;padding:12px;border:1px solid #8d815d;background:linear-gradient(130deg,#30483c,#13282c);border-radius:12px;color:#eddfbc}#save-status{font-size:14px;line-height:1.4;color:#b9d7c6}#save-new-confirm,#save-import-confirm{margin:auto;max-width:400px;width:calc(100% - 36px);box-sizing:border-box;padding:24px;background:radial-gradient(ellipse at top,#344d3e,#10232a);color:#f0e1ba;border:2px solid #aa8d55;border-radius:28px 10px;box-shadow:0 0 0 4px #405345,0 15px 60px #000b}#save-new-confirm::backdrop,#save-import-confirm::backdrop{background:#08191ac9;backdrop-filter:blur(3px)}#save-new-confirm button,#save-import-confirm button{padding:12px;margin:6px 3px;border:1px solid #b59757;border-radius:10px;background:#254237;color:#f3e7c7}

/* Skip combat presentation without removing selection and intent previews. */
.combat-animations-off #attack-stage,.combat-animations-off #combat-frame,.combat-animations-off .combat-overlay{display:none!important}
.combat-animations-off .token.acting,.combat-animations-off .token[class*="effect-"],.combat-animations-off .token.status-flash{animation:none!important;transition:none!important}

/* Arena mechanics: persistent obstacles versus traversable hazards. */
.boss-terrain{position:absolute;inset:7%;display:grid;place-items:center;pointer-events:none;border:2px solid #b9bd76;border-radius:18% 30%;color:#f0ddb3;font:700 clamp(22px,5vw,40px) Georgia,serif;background:linear-gradient(#213d27dc,#0b251bea),url(assets/root-bronze-frame.png) center/cover;box-shadow:inset 0 0 12px #b7c48144,0 4px 5px #0008;z-index:2}
.boss-terrain.rifts{color:#e3bdff;border-color:#b485dd;background:radial-gradient(ellipse,#331455e6,#120f29b8);box-shadow:inset 0 0 14px #b276d4}
.boss-terrain.announced{opacity:.45;border-style:dashed;box-shadow:none}
.terrain-duration{position:absolute;right:10%;bottom:7%;z-index:3;padding:1px 4px;background:#0c2326e8;color:#eee0b9;border-radius:3px;font:12px system-ui;pointer-events:none}
#boss-intent-cue{position:absolute;top:38px;left:8px;right:8px;z-index:5;margin:0;padding:5px 8px;background:#09222aeb;border:1px solid #af976777;border-radius:6px;color:#edd9af;font:13px/1.35 system-ui;pointer-events:none;text-align:center}
#boss-intent-cue[hidden]{display:none}

.boss-terrain.rifts{z-index:1}.boss-terrain.announced{z-index:1}
main.battling .arena-stage.boss-arena{padding-top:68px}
#boss-intent-cue{top:28px;font-size:12px;padding:4px 6px}

/* Enemy role labels supplement element colours; colour alone never carries identity. */
.enemy-type-badge{position:absolute;bottom:7px;right:2px;background:#102a2cef;color:#f1e6c6;padding:1px 3px;border:1px solid #ac9869;font:700 10px/1.2 system-ui;border-radius:3px;z-index:4}
.enemy-reload{position:absolute;top:45%;left:0;right:0;background:#112631e8;color:#bce9ee;text-align:center;font:700 10px/1.4 system-ui;z-index:4}
.cell.sniper-lane{box-shadow:inset 0 0 0 2px #edb56399;background-color:#dc983628}
.token.prowler,.token.spitter{border-color:#a3bb69}.token.lancer,.token.sniper{border-color:#94c6d3}.token.binder,.token.oracle{border-color:#b69cd6}

/* Wegwarte: opening, deliberate choice, permanent arrival. */
#collection-grid.draft-stage{display:block;max-width:960px;margin:20px auto}
.draft-scene{position:relative;min-height:380px;text-align:center;padding:12px 0 25px;background:radial-gradient(ellipse at 50% 42%,#a3894b24,transparent 67%)}
.draft-seal-panel{display:none;color:#c8cfbe}.sealed .draft-seal-panel{display:block;padding:20px 8px}.draft-kicker{letter-spacing:3px;font-size:12px;color:#d4bd82}
.draft-seal{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;margin:25px auto;width:min(260px,65vw);min-height:260px;border:25px solid transparent;border-image:url(assets/root-bronze-frame.png) 100 stretch;background:radial-gradient(ellipse,#71603b88,#102d2c 72%);color:#f3deac;cursor:pointer;box-shadow:0 0 80px #bfa25b22}
.draft-seal>span{font:70px Georgia,serif;text-shadow:0 0 25px #e9cc7e}.draft-seal strong{font:22px Georgia,serif}.draft-seal small{font-size:13px}
.draft-offers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:stretch}.sealed .draft-offers{display:none}
.draft-pick{--rarity:#bda377;position:relative;display:block;min-width:0;padding:12px 10px 18px;color:#e9dfc2;border:1px solid var(--rarity);border-radius:28px 8px;background:linear-gradient(160deg,#203e38ed,#091c23f5);overflow:hidden;cursor:pointer;transition:transform .25s,box-shadow .25s,border-color .25s;isolation:isolate}
.draft-pick.mythic{--rarity:#c29fe2;background:linear-gradient(150deg,#3d3651ed,#0c2026f5)}
.draft-pick[aria-pressed=true]{transform:translateY(-8px);box-shadow:0 0 0 2px #f2dfab,0 0 35px #dcc17f55}.draft-pick:focus-visible,.draft-seal:focus-visible{outline:3px solid #f8e3ac;outline-offset:4px}
.draft-card-face{display:flex;flex-direction:column;align-items:center;gap:8px;opacity:0;visibility:hidden}.draft-card-face>small{font:12px system-ui;letter-spacing:2px;color:var(--rarity)}
.draft-card-face>strong{font:clamp(20px,3vw,30px) Georgia,serif}.draft-role{font-size:13px;color:#c8d7ca}.draft-pitch{font:14px/1.45 system-ui;color:#ded7be;text-wrap:pretty}
.draft-portrait{display:block;width:100%;height:280px;background:radial-gradient(ellipse at 50% 70%,#c8b57b25,transparent 67%)}.draft-portrait img{height:100%;width:100%;object-fit:contain;filter:drop-shadow(0 10px 10px #0008)}
.draft-card-back{position:absolute;inset:15px;display:grid;place-items:center;border:1px solid #ab936866;border-radius:20px 5px;background:url(assets/root-bronze-frame.png) center/100% 100%;font:60px Georgia,serif;color:#d2b774}
.draft-pick.revealed .draft-card-face{opacity:1;visibility:visible}.draft-pick.revealed .draft-card-back{display:none}.revealing .draft-pick.revealed{animation:draft-arrives .65s ease-out both}
.draft-reveal-status{min-height:22px;font-size:14px;color:#d7c18d;margin:18px 0 8px}.draft-skip,.arrival-back{padding:12px 20px;border:1px solid #9c8b63;border-radius:14px 4px;background:#173431;color:#e8d7ae;min-height:44px}
.draft-detail{text-align:left;margin:18px auto 0;max-width:660px;padding:22px;border:1px solid #b19b66;border-radius:24px 6px;background:linear-gradient(120deg,#28433ce8,#0a2028f2)}.draft-detail h3{font:24px Georgia,serif;color:#f0dba5;margin:8px 0}.draft-detail p{font:15px/1.55 system-ui;color:#d8dfd4}.draft-detail>small{display:block;font-size:12px;line-height:1.5;color:#b5c9bc}.draft-detail .draft-values{color:#e7ca8b}.draft-build-hint{color:#a9cbb1!important}
#draft-confirm{display:block;width:100%;margin:16px 0 10px;padding:14px;border:1px solid #dbc18c;border-radius:18px 5px;background:linear-gradient(120deg,#627758,#294a3c);color:#fff0c4;font:20px Georgia,serif;min-height:48px}#draft-confirm:disabled{opacity:.5}
.recruit-arrival{max-width:580px;margin:auto;text-align:center;background:radial-gradient(ellipse at 50% 40%,#c8ad5b33,transparent 72%)}.arrival-welcome{font:24px Georgia,serif;color:#e3cc90}.recruit-arrival .collection-card{border:0;background:transparent;box-shadow:none}.recruit-arrival .collection-figure{height:min(44dvh,440px)!important}.recruit-arrival .collection-skill{min-height:0;font-size:15px}.recruit-arrival .collection-tags{justify-content:center}.recruit-arrival.animate{animation:draft-arrives .7s ease-out}.recruit-arrival:not(.animate) .recruited{animation:none}
@keyframes draft-arrives{from{opacity:0;transform:translateY(20px) scale(.94);filter:brightness(1.8)}to{opacity:1;transform:translateY(0) scale(1);filter:brightness(1)}}
@media(max-width:600px){.draft-offers{gap:7px}.draft-pick{padding:10px 5px 12px;border-radius:17px 5px}.draft-portrait{height:180px}.draft-pitch{font-size:12px;line-height:1.4}.draft-role{font-size:11px}.draft-card-face>small{font-size:10px;letter-spacing:1px}.draft-detail{padding:16px}.draft-card-back{inset:7px;font-size:38px}.draft-seal-panel p{font-size:14px}.draft-scene{min-height:300px}}
@media(prefers-reduced-motion:reduce){.draft-pick,.draft-card-face{transition:none}.revealing .draft-pick.revealed,.recruit-arrival.animate{animation:none}}
.combat-animations-off .draft-pick,.combat-animations-off .draft-card-face{transition:none}.combat-animations-off .revealing .draft-pick.revealed{animation:none}

.draft-pick:disabled{opacity:1;cursor:default}.draft-pitch{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.draft-scene button[hidden]{display:none}
.revealing::before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,#f3dca288,transparent 65%);animation:draft-seal-flash .65s ease-out both;z-index:3}
@keyframes draft-seal-flash{from{opacity:1;transform:scale(.6)}to{opacity:0;transform:scale(1.15)}}
@media(prefers-reduced-motion:reduce){.revealing::before{display:none}}
.combat-animations-off .revealing::before{display:none}

/* Three connected lanes keep rewards legible before committing to a route. */
main.mapping #map-rows .map-node{width:30%;max-width:230px}main.mapping #map-rows .map-node:disabled{opacity:.38;cursor:default}main.mapping #map-rows .map-node.visited{opacity:.9}
main.mapping #map-rows .map-node strong{font-size:clamp(12px,2.6vw,17px);max-width:100%;padding:3px 4px}.map-benefit{font:12px/1.3 system-ui;color:#dfc994;background:#071d26df;padding:2px 4px;border-radius:3px}
#route-choice{width:min(94vw,540px);max-height:88dvh;padding:26px 22px;border:1px solid #b49b6b;border-radius:24px 6px;background:linear-gradient(135deg,#294139,#0c2028);color:#e8dfc7;margin:auto}#route-choice::backdrop{background:#020c13bf}#route-choice h2{font:28px Georgia,serif;color:#ebd3a1;margin:12px 0}#route-choice p{font:16px/1.6 system-ui}#route-choice>small{font:12px system-ui;letter-spacing:2px;color:#c4ad7c}.route-team{display:grid;grid-template-columns:1fr 1fr;gap:8px}.route-team span{padding:9px;background:#061b2680;border:1px solid #78978444;font-size:13px}.route-team strong{display:block;color:#ead4a6}.route-choice-actions{display:flex;gap:10px;margin-top:20px}.route-choice-actions button{flex:1;min-height:48px;border:1px solid #b39b6a;background:#20423b;color:#eeddba;border-radius:12px 4px;font-size:15px}.route-choice-actions [data-route-go]{background:#526d4d}.route-next{color:#b6cbbd;font-size:14px!important}
@media(max-height:650px){main.mapping #map-rows .map-symbol{width:32px;height:32px}main.mapping #map-rows .map-node strong{font-size:12px}.map-benefit{font-size:10px}}

/* Training / field guide share the refuge's dark enamel and warm bronze. */
#training-sheet,#compendium-sheet{position:fixed;inset:0;margin:auto;width:min(94vw,840px);max-height:90dvh;overflow:auto;padding:24px;color:#ede3c9;background:linear-gradient(135deg,#173432,#0b1c23 75%);border:1px solid #af9360;border-radius:28px 10px 30px 12px;box-shadow:inset 0 0 0 5px #0a1b20,0 18px 80px #000b;font-size:16px;}
#training-sheet::backdrop,#compendium-sheet::backdrop{background:#031216da;backdrop-filter:blur(5px)}
#training-team{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:18px 0}.training-hero{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 5px;min-width:0}.training-hero .portrait{width:54px;height:54px;flex:none}.training-hero small{font-size:13px}.training-hero[aria-pressed=true],.training-offer[aria-pressed=true]{border-color:#e9c47d;background:linear-gradient(140deg,#3e4b39,#182f32);box-shadow:inset 0 0 0 1px #d7b674}
#training-offers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.training-offer{display:flex;flex-direction:column;gap:12px;text-align:left;padding:18px 14px;white-space:normal;line-height:1.45;background:linear-gradient(155deg,#28403a,#11272c);border:1px solid #8a7958;border-radius:16px 5px 19px 6px}.training-offer strong{font-family:Georgia,serif;font-size:21px;color:#ecd399}.training-offer small{font-size:12px;letter-spacing:.07em;color:#c4b68d}.training-offer span{font-size:15px}#training-details p{font-size:14px;line-height:1.5;color:#c8cdbb}#training-confirm{width:100%;padding:14px;margin:8px 0 16px}#training-preview{line-height:1.5;color:#eed39c}
#compendium-sheet label{display:block;margin:12px 0}#compendium-sheet input,#compendium-sheet select{display:block;box-sizing:border-box;width:100%;margin-top:6px;padding:12px;background:#091e25;color:#eee2c5;border:1px solid #8a7958;border-radius:8px;font:inherit}#compendium-entries{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.compendium-entry{padding:18px;border:1px solid #6d7051;background:#10282bc9;border-radius:16px 5px;line-height:1.5}.compendium-entry h3{color:#e4c993;margin:6px 0;font-family:Georgia,serif;font-size:21px}.compendium-entry small{font-size:14px;color:#bac6b4}.compendium-entry .portrait{float:right;width:52px;height:52px;margin-left:8px}.compendium-entry p{font-size:16px}#run-panel>[data-training-open]{margin:14px auto}.map-tools{flex-wrap:wrap}
@media(max-width:540px){#training-sheet,#compendium-sheet{padding:18px 12px;max-height:94dvh}#training-offers,#compendium-entries{grid-template-columns:1fr}.training-offer{gap:6px;padding:14px}.training-hero .portrait{width:42px;height:42px}.training-hero small{font-size:12px}.training-hero{font-size:14px}#training-team{gap:4px}}
@media(max-width:760px){main.mapping #map-rows{bottom:130px}.map-tools{padding-bottom:calc(12px + env(safe-area-inset-bottom,0px))}}

/* Archive: portrait-first, matching the illustrated compendium concept. */
#compendium-sheet.archive{box-sizing:border-box;position:fixed;inset:0;margin:auto;width:min(100%,580px);height:100dvh;max-width:100vw;max-height:100dvh;padding:0;border:0;border-radius:0;background:#0a2529 url('assets/refuge-hub.webp') center/cover fixed;color:#eee1bd;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;box-shadow:0 0 80px #000c;font:16px/1.5 Georgia,serif;}
#compendium-sheet.archive::backdrop{background:#031316e8;backdrop-filter:blur(8px)}
.archive-shell{position:relative;min-height:100%;box-sizing:border-box;padding:calc(18px + env(safe-area-inset-top,0px)) 22px calc(22px + env(safe-area-inset-bottom,0px));background:linear-gradient(#082328f7,#0c2a2cf5 65%,#082329f7);isolation:isolate}
.archive-shell:after{content:'';position:absolute;inset:6px;z-index:-1;pointer-events:none;background:url('assets/vine-frame.webp') center/100% 100% no-repeat;opacity:.75}
.archive-header{display:flex;align-items:center;gap:8px;position:relative;text-align:center;margin-bottom:20px}.archive-header>div{flex:1;min-width:0}.archive-header small{font-size:12px;letter-spacing:.18em;color:#c5b385}#compendium-sheet #compendium-title{font:clamp(24px,6.5vw,36px)/1.14 Georgia,serif;color:#efdbad;margin:5px 0;overflow-wrap:anywhere}.archive-header button{flex:0 0 44px;width:44px;height:44px;min-height:44px;padding:0;border:0;background:transparent;color:#efd6a0;font-size:30px;box-shadow:none}.archive-header button:hover{background:#dfc38917}.archive-header #compendium-close{position:absolute;right:-10px;top:-12px;width:36px;height:36px;font-size:24px}.archive-header #archive-back{margin-left:-10px}
#compendium-sheet .archive-search{margin:0 0 12px}#compendium-sheet .archive-search input{box-sizing:border-box;border:1px solid #b59a60;border-radius:28px;background:#082328a8;color:#f0e4c5;font:16px Georgia,serif;padding:12px 18px;width:100%;min-height:46px;margin:0}.archive-search input::placeholder{color:#cdbd9a}.archive-tabs{display:flex;overflow-x:auto;gap:0;border:1px solid #8f7d53;border-radius:10px;padding:0;scrollbar-width:thin;scrollbar-color:#b59a60 #09252b}.archive-tabs button{flex:0 0 auto;min-height:48px;white-space:nowrap;background:transparent;border:0;border-right:1px solid #6b674a;border-radius:0;padding:10px 15px;color:#d7c6a1;font:15px Georgia,serif;box-shadow:none}.archive-tabs button[aria-pressed=true]{color:#fff1cb;background:linear-gradient(130deg,#94764355,#21423a);box-shadow:inset 0 0 0 1px #dabb77;border-radius:8px}
.archive-filters{display:flex;gap:10px;align-items:center;margin-top:12px}.archive-filters>button{flex:0 1 45%;min-height:44px;padding:8px 12px;border:1px solid #b29b64;border-radius:24px;background:#09262c;color:#dec99f;font:14px Georgia,serif}.archive-filters>button[aria-pressed=true]{background:#46583c;color:#fff1c3}.archive-filters>label{flex:1;min-width:0;margin:0!important}#compendium-sheet .archive-filters select{box-sizing:border-box;width:100%;padding:10px;background:#09262c;border:1px solid #7d7654;border-radius:20px;margin:0;color:#dfd0af;font:14px Georgia,serif;min-height:44px}#compendium-count{font:13px Georgia,serif;color:#b9b89f;margin:12px 0}
#compendium-sheet #compendium-entries{display:grid;grid-template-columns:1fr;gap:14px}#compendium-sheet #compendium-entries.archive-portraits{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#compendium-sheet .archive-card{position:relative;display:block;min-width:0;width:100%;box-sizing:border-box;padding:17px;text-align:left;background:linear-gradient(140deg,#133437,#092327);border:1px solid #b29963;border-radius:13px 6px 12px 7px;color:#e9dcba;overflow:hidden;box-shadow:inset 0 0 0 3px #173332,0 3px 12px #0004;white-space:normal;line-height:1.45;cursor:pointer}#compendium-sheet .archive-card:after{content:'';position:absolute;inset:0;background:url('assets/vine-frame.webp') center/100% 100% no-repeat;opacity:.7;pointer-events:none}.archive-card:focus-visible,.archive-tabs button:focus-visible,.archive-requirement:focus-visible{outline:3px solid #f3d996;outline-offset:2px}#compendium-sheet .archive-portraits .archive-card{padding:0}.archive-card-art{position:relative;aspect-ratio:4/4.5;background:linear-gradient(0deg,#082628,transparent 30%),url('assets/refuge-hub.webp') 55% 50%/auto 160%;overflow:hidden}.archive-card-art:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 68%,#09272bd9)}.archive-card-art img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 5%;filter:drop-shadow(0 5px 6px #0007)}.archive-badge{position:absolute;top:9px;left:9px;z-index:1;background:#12392de8;color:#f5e5be;border:1px solid #c2a76a;border-radius:15px;padding:3px 9px;font:12px Georgia,serif}.archive-card-caption{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:center;gap:3px 6px;min-height:48px;padding:9px 7px;box-sizing:border-box;background:#09282d;border-top:1px solid #917e51}.archive-card-caption strong{font:19px Georgia,serif;color:#f5e3b3}.archive-card-caption>span{font:14px Georgia,serif;color:#d2c5a1}.archive-category{display:block;color:#b6bc9c;font:12px/1.4 Georgia,serif;letter-spacing:.1em;text-transform:uppercase}.archive-entry-title{display:block;font:23px/1.15 Georgia,serif;color:#eed6a3;margin:7px 0}.archive-snippet{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;font:15px/1.5 Georgia,serif;color:#d4d4ba}.archive-learned{display:block;margin-top:10px;font-size:14px;color:#ddc475}.archive-duo-mini{position:relative;height:150px;overflow:hidden;background:#14352d;margin:-17px -17px 14px}.archive-duo-mini img{position:absolute;top:0;width:65%;height:270px;object-fit:contain;object-position:top}.archive-duo-mini img:first-child{left:-3%}.archive-duo-mini img:last-child{right:-3%}.archive-card>.portrait{float:right;width:54px;height:54px;margin:0 0 10px 10px}
.archive-detail-art{position:relative;height:clamp(270px,43dvh,430px);overflow:hidden;border:1px solid #8f8055;border-radius:12px 6px 0 0;background:radial-gradient(ellipse at 50% 50%,#8a986037,transparent 70%),linear-gradient(#0a292a88,#092429a8),url('assets/refuge-hub.webp') center/cover}.archive-detail-art>img{height:140%;width:100%;object-fit:contain;object-position:center top;filter:drop-shadow(0 7px 10px #0009)}.archive-duo-art>img{position:absolute;top:10px;width:70%;height:140%;object-fit:contain;object-position:top}.archive-duo-art>img:first-child{left:-9%;transform:rotate(-3deg)}.archive-duo-art>img:nth-child(2){right:-9%;transform:rotate(3deg)}.archive-detail-art:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(transparent 72%,#09272b)}.archive-art-caption{position:absolute;z-index:1;bottom:0;left:0;right:0;text-align:center;padding:14px 8px;color:#f0deb5;font:22px Georgia,serif}.archive-paper{padding:8px 18px;margin:0 0 20px;border:1px solid #b59a60;border-radius:0 0 15px 7px;background:linear-gradient(135deg,#e0ceb0,#cfbb97 55%,#e1ccaa);box-shadow:inset 0 0 18px #785b3d25;color:#233333}.archive-rule{padding:13px 0}.archive-rule+.archive-rule{border-top:1px solid #8b785a60}.archive-rule h3{margin:0 0 5px;color:#32423a;font:13px/1.3 Georgia,serif;letter-spacing:.08em;text-transform:uppercase}.archive-rule p{margin:0;font:16px/1.55 Georgia,serif;overflow-wrap:anywhere}.archive-requirements>h3{font:21px Georgia,serif;text-align:center;color:#edd8a7;margin:14px 0}.archive-requirement,.archive-related{display:flex;align-items:center;gap:10px;box-sizing:border-box;width:100%;padding:10px 12px;margin:9px 0;min-height:54px;border:1px solid #9f8b58;border-radius:17px 6px;background:#09272bcc;color:#d5c9a9;font:16px/1.4 Georgia,serif;text-align:left;white-space:normal}.archive-requirement.fulfilled{color:#efdfb1;border-color:#c7ac6e;background:linear-gradient(100deg,#263f31,#09272b)}.archive-requirement .portrait{width:38px;height:38px;flex:0 0 38px}.archive-duo-status{font:14px/1.6 Georgia,serif;text-align:center;color:#c7c9ac;padding:4px 10px}.archive-footer{margin-top:22px;text-align:center}.archive-footer button{width:100%;min-height:52px;background:linear-gradient(120deg,#24392f,#0a2529);color:#f0dfb7;border:1px solid #b3985d;border-radius:28px 8px;font:20px Georgia,serif;padding:12px}.archive-empty{font:16px/1.5 Georgia,serif}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(min-width:620px){#compendium-sheet.archive{height:96dvh;max-height:96dvh;border:1px solid #af965e;border-radius:12px}.archive-shell{padding-left:28px;padding-right:28px}}
@media(max-width:360px){.archive-shell{padding-left:14px;padding-right:14px}.archive-tabs button{padding:10px 12px}.archive-card-caption strong{font-size:17px}.archive-card-caption>span{font-size:13px}.archive-filters{gap:6px}}
@media(prefers-reduced-motion:reduce){.archive *{scroll-behavior:auto}}

/* Character knowledge stays inside one compact card, including skill selection. */
.archive-character-sheet{overflow:hidden;border:1px solid #b39a63;border-radius:17px 6px 18px 8px;background:linear-gradient(135deg,#173c39,#0b282d);box-shadow:inset 0 0 0 4px #09272b,0 10px 25px #0004}
.archive-character-head{position:relative;display:grid;grid-template-columns:minmax(90px,38%) minmax(0,1fr);gap:10px;min-height:170px;margin:0;padding:0 16px 0 0;border-bottom:1px solid #8e7d53;background:linear-gradient(90deg,#133b32,#09262cdc),url('assets/refuge-hub.webp') center/cover;align-items:center}
.archive-character-portrait{height:190px;overflow:hidden;align-self:stretch}.archive-character-portrait img{display:block;width:100%;height:280px;object-fit:cover;object-position:center top;filter:drop-shadow(0 6px 8px #0008)}.archive-character-identity{padding:14px 0;min-width:0}.archive-character-identity>small{font:14px/1.5 Georgia,serif;color:#c9c8a9;letter-spacing:0}.archive-character-identity h3{font:32px/1.1 Georgia,serif;color:#f0dcad;margin:4px 0 9px}.archive-character-state{display:block;font-size:13px;color:#cebd91}.archive-character-stats{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:13px}.archive-character-stats>span{display:flex;flex-direction:column}.archive-character-stats strong{font:18px/1.2 Georgia,serif;color:#f2e3c1}.archive-character-stats small{font-size:13px;color:#b5c6b4}
.archive-character-tabs{display:flex;border-bottom:1px solid #a58a59;background:#08272b}.archive-character-tabs button{flex:1;min-height:46px;border:0;border-radius:0;background:transparent;color:#d3c5a0;font:16px Georgia,serif;padding:9px 4px}.archive-character-tabs button[aria-pressed=true]{color:#f4e4b9;background:linear-gradient(#38524388,#183731);box-shadow:inset 0 -3px #dfbe7a}
.archive-character-body{padding:16px}.archive-skill-picker{display:flex;flex-wrap:wrap;gap:7px;margin:0 0 12px}.archive-skill-picker:empty{display:none}.archive-skill-chip{padding:8px 10px;min-height:44px;font:14px/1.3 Georgia,serif;border:1px solid #8c8157;border-radius:14px 4px;background:#09292d;color:#dcd1ad;white-space:normal;max-width:100%;overflow-wrap:anywhere}.archive-skill-chip[aria-pressed=true]{border-color:#dfbd73;background:#415440;color:#fff0c1}.archive-skill-content{padding:15px 14px;min-height:110px;border:1px solid #a58d61;border-radius:12px 4px;background:linear-gradient(120deg,#dfceb0,#d0bd9a);color:#233b37}.archive-skill-content h4{margin:0 0 8px;font:21px/1.2 Georgia,serif;color:#223c35}.archive-skill-content p{margin:0;font:16px/1.55 Georgia,serif;overflow-wrap:anywhere}.archive-skill-note{display:block;margin-top:12px;font:14px/1.5 Georgia,serif;color:#4d5d4c}.archive-skill-content .archive-learned{color:#445c3f;font-size:14px}.archive-card-duo-needs{display:flex;flex-direction:column;gap:6px;margin-top:14px;font:14px/1.5 Georgia,serif;color:#665d48}.archive-card-duo-needs .fulfilled{color:#255a3e}
@media(max-width:360px){.archive-character-head{padding-right:12px;gap:6px}.archive-character-portrait{height:165px}.archive-character-identity h3{font-size:28px}.archive-character-stats{gap:9px}.archive-character-body{padding:12px}.archive-skill-content{padding:12px}}

/* Shared refuge materials across secondary surfaces and settings. */
:root{--surface-deep:#08282c;--surface-petrol:#153b39;--surface-bronze:#b49b66;--surface-ivory:#eee0bb;--surface-muted:#bdcbb8}
dialog.pincer-surface{position:fixed;inset:0;margin:auto;width:min(94vw,560px);max-width:calc(100vw - 20px);max-height:90dvh;height:fit-content;overflow:auto;padding:26px 24px;background:radial-gradient(ellipse at 30% 0,#3d60463b,transparent 65%),linear-gradient(135deg,var(--surface-petrol),#09262c 80%);color:var(--surface-ivory);border:1px solid var(--surface-bronze);border-radius:19px 6px 21px 8px;box-shadow:inset 0 0 0 4px #09272b,0 16px 70px #0009;font-size:16px;isolation:isolate}
dialog.pincer-surface::before{content:'';position:absolute;inset:5px;background:url('assets/vine-frame.webp') center/100% 100% no-repeat;pointer-events:none;opacity:.65;z-index:-1}dialog.pincer-surface::backdrop{background:#031518d9;backdrop-filter:blur(6px)}dialog.pincer-surface h2,dialog.pincer-surface h3{font-family:Georgia,serif;color:#eed8aa}dialog.pincer-surface h2{font-size:27px;line-height:1.2;margin:9px 0 18px}dialog.pincer-surface h3{font-size:21px;line-height:1.3}dialog.pincer-surface p{font-size:16px;line-height:1.55;color:#d2dbc4}dialog.pincer-surface small{font-size:14px;line-height:1.45;color:var(--surface-muted)}dialog.pincer-surface button{min-height:44px;padding:10px 14px;border:1px solid #a28c5d;border-radius:14px 5px;background:linear-gradient(130deg,#24463c,#0c2a2f);color:#eadbb8;font-size:15px;white-space:normal}dialog.pincer-surface button:hover{background:#365342}dialog.pincer-surface button:disabled{opacity:.5}dialog.pincer-surface button[aria-pressed=true]{border-color:#dfbf7d;box-shadow:inset 0 0 0 1px #d8b974;background:linear-gradient(135deg,#4c5b3c,#234536);color:#fff0c2}dialog.pincer-surface .sheet-close{float:right;margin:0 0 10px 8px;background:transparent;border:0;color:#ddcba6;min-height:44px;font:15px Georgia,serif}dialog.pincer-surface details{border-top:1px solid #9b87594d;padding:10px 0;line-height:1.55}dialog.pincer-surface summary{cursor:pointer;min-height:44px;display:flex;align-items:center;color:#e0c997;font-size:16px}dialog.pincer-surface input:not([type=range]):not([type=file]),dialog.pincer-surface select{box-sizing:border-box;max-width:100%;min-height:44px;padding:10px;background:#08262c;color:#e9dfbd;border:1px solid #a38e60;border-radius:10px 4px;font-size:16px}dialog.pincer-surface input[type=file]{max-width:100%;font-size:14px}dialog.pincer-surface input[type=range]{accent-color:#d5bb7d;min-height:44px}
#gem-sheet .gem-hero,.artifact-card,.wegzeichen-card,#synergy-sheet #synergy-panel>div{border-color:#9b895d;background:linear-gradient(125deg,#21463d,#102f32);border-radius:16px 5px;color:#e3d9b9}#gem-sheet .gem-hero{padding:16px}.gem-hero select{width:100%}.gem-link{border:1px solid #8e9b65;background:#314c38;color:#e1dfb8}.gem-rule{color:#d4dec9;font-size:16px}#artifact-list{display:grid;gap:12px}#artifact-list>article{padding:16px;border:1px solid #8f8058;border-radius:16px 5px;background:#12342f}#artifact-list p{font-size:16px}#detail-content p{font-size:16px;border-bottom-color:#a28b514d}#detail-sheet #detail-title{font-size:27px}#training-sheet.pincer-surface{width:min(94vw,620px)}#training-team .training-hero{padding:10px 5px}#training-offers .training-offer{border-radius:15px 5px;padding:15px}#map-event.pincer-surface{text-align:center}#map-event #event-text{font-size:16px}#route-choice.pincer-surface button{width:100%;margin:5px 0}#restart-confirm-accept,#save-new-confirm [data-save-accept]{border-color:#bc8362;background:linear-gradient(130deg,#5b3f32,#322a25)}

/* One mobile menu page at a time; primary run destinations remain close at hand. */
#menu-sheet.run-menu{width:min(100%,560px);max-width:100vw;height:100dvh;max-height:100dvh;border-radius:0;border-width:0;padding:calc(20px + env(safe-area-inset-top,0px)) 22px calc(20px + env(safe-area-inset-bottom,0px));background:linear-gradient(145deg,#143a37f5,#08262cf9),url('assets/refuge-hub.webp') center/cover}#menu-sheet.run-menu::before{inset:7px}#menu-sheet .run-menu-head{display:flex;align-items:center;justify-content:space-between;border:0;padding:0;margin:0 0 18px;gap:10px}#menu-sheet .run-menu-head h2{font-size:32px;margin:4px 0 0}#menu-sheet .run-menu-head small{font:12px Georgia,serif;letter-spacing:.18em;color:#c6b387}#menu-sheet .run-menu-head .sheet-close{float:none;flex:0 0 44px;width:44px;height:44px;margin:0;padding:0;font-size:28px}.run-menu-tabs{display:flex;gap:0;border:1px solid #9c8658;border-radius:12px 5px;overflow:hidden;margin-bottom:20px}.run-menu-tabs button{flex:1;min-width:0!important;font:14px Georgia,serif!important;padding:10px 4px!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important}.run-menu-tabs button[aria-pressed=true]{background:linear-gradient(135deg,#64704b80,#26483c)!important;box-shadow:inset 0 -3px #d8b974!important;color:#fff0c2!important}.run-menu-panel{min-width:0}#menu-sheet .run-menu-progress{font:22px/1.35 Georgia,serif;color:#e8d5a8;margin:0 0 8px}#menu-sheet .run-menu-build-summary{font-size:14px;color:#bbcdb9;margin:0 0 16px}.run-menu-party{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin:16px 0 22px}.run-menu-party button{display:flex;flex-direction:column;align-items:center;gap:5px;padding:10px 4px!important;min-width:0}.run-menu-party .portrait{width:48px;height:48px;border:1px solid #c7ac71;border-radius:50%;flex:none}.run-menu-party strong{font:16px Georgia,serif;color:#edddb5}.run-menu-party small{font-size:12px!important;white-space:nowrap}.run-menu-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.run-menu-actions>button{margin:0!important;min-height:66px!important;font:17px/1.35 Georgia,serif!important;padding:14px 10px!important;text-align:center}#menu-sheet .run-menu-panel>p{font-size:14px;color:#bbc9b6;overflow-wrap:anywhere}#menu-sheet .run-menu-bottom{border-top:1px solid #a68f5a55;margin-top:24px;padding-top:16px;text-align:center}#menu-sheet .run-menu-danger{width:100%;background:transparent;color:#d6aa8c;border-color:#a979594d}#menu-sheet .playback-settings,#menu-sheet .audio-settings{padding:17px 15px;border:1px solid #7c7d55;border-radius:16px 5px;background:#14382f;margin:14px 0}#menu-sheet .playback-settings h3,#menu-sheet .audio-settings h3{margin:0 0 10px}#menu-sheet .combat-speed-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}#menu-sheet .combat-speed-controls button{font-size:16px}.audio-settings label{flex-wrap:wrap}.audio-settings input[type=range]{flex:1;min-width:130px}#menu-sheet .webapp-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:16px 0}#menu-sheet .refuge-options{margin:14px 0;border:1px solid #7d7853;border-radius:12px;padding:10px 14px;background:#12322e}#menu-sheet #save-controls{padding:16px;border:1px solid #978558;border-radius:16px 5px;background:#14372f}#menu-sheet #save-controls h3{margin-top:0}#menu-sheet #save-controls>button{width:100%;margin:7px 0}#menu-sheet #save-status{font-size:14px;color:#c5d4bc}.run-menu-panel .help{font-size:16px!important;line-height:1.6}#menu-sheet .element-rule{padding:14px;border:1px solid #8a8056;border-radius:12px;background:#143930;font-size:15px}#menu-sheet #enemy-catalog p{font-size:15px}

/* Consistent choice cards and readable supporting copy outside dialogs. */
#reward-options>button,.event-choice{border-radius:17px 5px;border-color:#ad9564;background:linear-gradient(135deg,#25463b,#0b292e);box-shadow:inset 0 0 0 3px #0b2b2d55}.reward-category{color:#c4b383;font-size:13px}#reward-options>button strong{font-family:Georgia,serif;color:#efd9a7;font-size:23px}#reward-options>button>span:not(.reward-portraits){font-size:16px;line-height:1.5}#reward-options>button[aria-pressed=true]{border-color:#edcc80;background:linear-gradient(135deg,#4a5b3c,#1c3d35);box-shadow:inset 0 0 0 1px #d8b87a}.result-character{border-radius:14px 5px;background:linear-gradient(130deg,#1d4038,#0c2b2e);border-color:#9a8759}.event-choice strong{font-family:Georgia,serif}.character-details{min-width:44px;min-height:44px}.webapp-actions button{min-height:44px}
@media(min-width:620px){#menu-sheet.run-menu{height:94dvh;max-height:94dvh;border:1px solid #a58c5c;border-radius:19px 6px}}@media(max-width:360px){dialog.pincer-surface{padding:20px 16px}#menu-sheet.run-menu{padding-left:14px;padding-right:14px}.run-menu-party{gap:4px}.run-menu-party .portrait{width:40px;height:40px}.run-menu-party small{font-size:11px!important}.run-menu-actions>button{font-size:16px!important}.run-menu-tabs button{font-size:13px!important}}
/* Long runs remain readable: totals first, collected rewards on demand. */
#synergy-sheet.pincer-surface{width:min(94vw,560px);max-height:90dvh;overflow-y:auto;overscroll-behavior:contain}
#build-details{clear:both;margin:0 0 24px;font-size:16px;text-align:left}
#build-details h2{font:27px Georgia,serif;margin:6px 0 18px;color:#eee0bb}
.build-totals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.build-totals>div{padding:14px 6px;text-align:center;border:1px solid #a68e5b66;border-radius:14px 5px;background:#143b33}
.build-totals strong{display:block;font:23px Georgia,serif;color:#efd7a0;overflow-wrap:anywhere}
.build-totals small{display:block;font:12px/1.4 system-ui;color:#bdcebb;margin-top:6px}
#build-details .build-summary-note{font:14px/1.5 system-ui;color:#bdcebb}
#build-details details{border:1px solid #a68e5b66;border-radius:12px 5px;margin-top:12px;padding:0 12px;background:#0c2e2f}
#build-details summary{font:16px/1.4 Georgia,serif;padding:12px 0;min-height:44px}
.build-upgrade-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-top:1px solid #a68e5b33;font:16px/1.45 system-ui}
.build-upgrade-list>div strong{flex:none;font:16px Georgia,serif;color:#ead39f;background:#244739;padding:5px 9px;border-radius:6px}
.build-history ol{max-height:35dvh;overflow-y:auto;padding-left:28px;font:14px/1.7 system-ui;margin:0 0 14px;color:#bdcebb}
#run-report,.abandon-run-report{padding:18px 14px;margin:18px 0;border:1px solid #aa905a99;border-radius:18px 5px;background:linear-gradient(135deg,#153d35,#092830);text-align:left;color:#e8dfbf}
#run-report h3,.abandon-run-report h3{font:24px Georgia,serif;margin:0 0 12px;color:#efd8a6}
#run-report .run-report-summary,.abandon-run-report .run-report-summary{font:14px/1.5 system-ui;color:#bed0bb}
.run-report-hero{display:flex;align-items:center;gap:12px;padding:14px 0;border-top:1px solid #a98c5744}
.run-report-hero .portrait{width:48px;height:48px;flex:none;border-radius:50%;border:1px solid #b59c66}
.run-report-hero>div{flex:1;min-width:0}.run-report-hero strong{font:19px Georgia,serif;color:#efd8a6}
#run-report .run-report-hero p,.abandon-run-report .run-report-hero p{font:14px/1.6 system-ui;margin:4px 0 9px;color:#e0dfcb;overflow-wrap:anywhere}
.run-report-bar{height:5px;background:#031c23;border-radius:4px;overflow:hidden}.run-report-bar i{display:block;height:100%;background:linear-gradient(90deg,#5d9a80,#dcc387)}
#run-report>small,.abandon-run-report section>small{display:block;font:13px/1.5 system-ui;color:#bccdb7;margin-top:12px}
@media(max-width:360px){.build-totals{gap:5px}.build-totals strong{font-size:20px}.build-totals small{font-size:12px}.run-report-hero{gap:8px}.run-report-hero .portrait{width:40px;height:40px}}

/* Reward cards float above the completed battle rather than replace its arena. */
main.rewarding{width:100%;max-width:520px;height:100dvh;min-height:0;padding:env(safe-area-inset-top,0px) 0 env(safe-area-inset-bottom,0px);display:flex;flex-direction:column;overflow:hidden;background:#071c27}
main.rewarding .arena-stage{display:flex;flex:1;min-height:0}main.rewarding .hud{display:block}main.rewarding .battle-footer{display:grid;visibility:hidden;pointer-events:none}main.rewarding #board{pointer-events:none}
#reward-dialog{position:fixed;inset:0;margin:auto;width:min(96vw,920px);max-width:96vw;max-height:94dvh;overflow:auto;padding:14px;border:0;border-radius:0;background:transparent;box-shadow:none;color:#ede0bc;overscroll-behavior:contain}
#reward-dialog::backdrop{background:#020c15bd;backdrop-filter:blur(1.5px)}
main.rewarding #run-panel{display:flex;flex-direction:column;gap:10px;width:100%;box-sizing:border-box;position:relative;margin:0;padding:20px 18px;border:0;background:transparent;box-shadow:none;border-radius:0;isolation:isolate}
main.rewarding #run-panel:before{display:none}
main.rewarding #panel-title{order:0;font:28px Georgia,serif;margin:0;text-shadow:0 2px 12px #000;color:#f2dfb1}
main.rewarding #panel-text{order:1;font:14px/1.5 system-ui;margin:0;color:#d0d9c7;text-shadow:0 2px 6px #000}
main.rewarding #result-stats{display:none}main.rewarding .reward-choice-heading{order:2;font:22px Georgia,serif;margin:5px 0;color:#f2dfb1}
main.rewarding #reward-options{order:3;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
main.rewarding #reward-options>button{display:flex;flex-direction:column;gap:10px;margin:0;padding:24px 18px;min-height:250px;border:1px solid #b79a63;border-radius:22px 6px;background:radial-gradient(ellipse at top,#375347,#0b2c30 75%);box-shadow:inset 0 0 0 4px #07272b55,0 12px 24px #0006;color:#e7e2cd;transition:transform .18s ease,border-color .18s ease;animation:reward-card-arrive .4s ease-out both}
main.rewarding #reward-options>button:nth-child(2){animation-delay:.1s}main.rewarding #reward-options>button:nth-child(3){animation-delay:.2s}
main.rewarding #reward-options>button[aria-pressed=true]{border-color:#edcf82;background:radial-gradient(ellipse at top,#5b6844,#163d35 80%);box-shadow:inset 0 0 0 2px #e1bc7066,0 0 24px #d9bf6244;transform:translateY(-4px)}
main.rewarding #reward-options strong{font:24px/1.2 Georgia,serif;color:#f1ddb0;margin:0}
main.rewarding #reward-options>button>span:not(.reward-portraits){font:16px/1.5 system-ui}main.rewarding .reward-category{font:12px/1.4 system-ui;letter-spacing:.08em;color:#d1bf92}main.rewarding .reward-portraits:empty{display:none}
main.rewarding #result-party{order:4;gap:7px;margin-top:6px}main.rewarding #result-party .result-character{display:grid;grid-template-columns:36px 1fr;gap:4px;padding:8px;background:#0a2c30ed;border:1px solid #9d885c88;border-radius:13px 4px;text-align:left;align-items:center}
main.rewarding #result-party .portrait{grid-row:span 3;width:36px;height:42px;aspect-ratio:auto;object-fit:cover}
main.rewarding #result-party strong{font:15px Georgia,serif}main.rewarding #result-party small{font:12px system-ui}main.rewarding #result-party small:nth-of-type(1),main.rewarding #result-party small:nth-of-type(3),main.rewarding .reward-change{display:none}
main.rewarding .reward-health{width:100%;height:4px}main.rewarding .reward-hp-preview{grid-column:2;font-size:12px}
main.rewarding #reward-preview-copy{order:5;margin:0;font:14px/1.5 system-ui;color:#d4e4cb;text-shadow:0 2px 6px #000}
main.rewarding #reward-confirm{order:6;position:sticky;bottom:0;flex:none;margin:0;border-radius:16px 5px;background:linear-gradient(135deg,#60734b,#224b3b);color:#fff0c7;border-color:#d5b87b;box-shadow:0 -5px 18px #02181bbb}
main.rewarding #chosen-reward{order:3;background:#0d3034ed;border:1px solid #c5a971;padding:22px;border-radius:20px 5px;color:#eee0bd}main.rewarding #chosen-reward strong{font:24px Georgia,serif}
main.rewarding #continue-run{order:8;min-height:48px;background:#2b5441;border-color:#ccb077;font:20px Georgia,serif}main.rewarding #reward-gems,main.rewarding #recruit-open,main.rewarding #victory-retry,main.rewarding [data-training-open]{order:7}main.rewarding #recruit-status{order:8}
@keyframes reward-card-arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:600px){#reward-dialog{width:100vw;max-width:100vw;padding:8px;max-height:96dvh}main.rewarding #run-panel{padding:16px 10px;gap:8px}main.rewarding #panel-title{font-size:25px}main.rewarding #reward-options{grid-template-columns:1fr;gap:9px}main.rewarding #reward-options>button{min-height:0;padding:15px 16px;gap:6px;border-radius:17px 5px}main.rewarding #reward-options strong{font-size:21px}main.rewarding .reward-portraits{position:absolute;right:12px;top:12px}main.rewarding .reward-portraits .portrait{width:26px;height:26px}main.rewarding .reward-category{padding-right:62px}main.rewarding #result-party .result-character{display:flex;flex-direction:column;text-align:center;gap:3px;padding:7px 3px}main.rewarding #result-party .portrait{width:30px;height:30px}main.rewarding #result-party strong{font-size:14px}main.rewarding #result-party small{font-size:12px}}
@media(prefers-reduced-motion:reduce){main.rewarding #reward-options>button{animation:none;transition:none}}
.combat-animations-off main.rewarding #reward-options>button,main.combat-animations-off.rewarding #reward-options>button{animation:none;transition:none}

/* Varying node counts share the same centers as the drawn route connections. */
main.mapping.woven-map #map-rows .map-row{display:flex;justify-content:space-around;gap:0;padding:0}
main.mapping.woven-map #map-rows .map-node{width:calc(100% / var(--node-count) - 8px);max-width:190px;min-width:0;align-items:center;min-height:72px;padding:4px 2px;gap:3px}
main.mapping.woven-map #map-rows .map-node strong{font:14px/1.25 Georgia,serif;text-align:center;white-space:normal;overflow-wrap:anywhere;padding:3px 4px;border-radius:5px;color:#efdfb9}
main.mapping.woven-map #map-rows .map-symbol{width:40px;height:40px}
main.mapping.woven-map .map-benefit{font:12px/1.25 system-ui;text-align:center;border-radius:4px;padding:2px 3px}
main.mapping.woven-map #map-rows .map-node:disabled{opacity:.36}main.mapping.woven-map #map-rows .map-node.visited{opacity:.85}
main.mapping.woven-map #map-rows .map-row.available .map-node:not(:disabled) .map-symbol{border-color:#e2c784;box-shadow:0 0 16px #e2bd6555}
#route-choice .route-region{color:#d6c48e;font:16px/1.5 Georgia,serif;margin:8px 0 16px}
@media(max-height:650px){main.mapping.woven-map #map-rows{top:65px;bottom:70px}main.mapping.woven-map #map-rows .map-node{gap:1px;min-height:58px}main.mapping.woven-map #map-rows .map-symbol{width:30px;height:30px}main.mapping.woven-map #map-rows .map-node strong{font-size:13px}}

/* Keep the route inside its own viewport, between safe header and two-row menu. */
main.mapping{--map-safe-top:env(safe-area-inset-top,0px);--map-safe-bottom:env(safe-area-inset-bottom,0px);--map-header:64px;--map-footer:112px}
.ios-installed main.mapping{--map-safe-top:max(44px,env(safe-area-inset-top,0px));--map-safe-bottom:max(20px,env(safe-area-inset-bottom,0px))}
main.mapping>header{top:calc(var(--map-safe-top) + 12px);right:12px;left:auto;height:40px;display:flex;align-items:center}
main.mapping .header-actions{display:flex;gap:6px;margin:0}
main.mapping .header-actions button{width:38px;height:38px;min-height:38px;padding:4px;flex:none}
main.mapping #map-title{top:calc(var(--map-safe-top) + 19px);left:14px;max-width:calc(100% - 112px);font:22px/1.2 Georgia,serif}
main.mapping #map-rows,main.mapping.woven-map #map-rows{top:calc(var(--map-safe-top) + var(--map-header));bottom:calc(var(--map-safe-bottom) + var(--map-footer));overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:0;isolation:isolate}
.map-route-canvas{position:relative;width:100%;height:100%;min-height:540px}
main.mapping .map-tools{bottom:0;padding:8px 12px calc(8px + var(--map-safe-bottom));height:calc(var(--map-footer) + var(--map-safe-bottom));box-sizing:border-box;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:44px 44px;gap:8px;background:linear-gradient(#071d29e8,#071d29);border-top:1px solid #b6a47566}
main.mapping .map-tools button,main.mapping .map-tools #map-restart{width:100%;min-width:0;min-height:44px;height:44px;margin:0;padding:5px 8px;font:14px/1.2 Georgia,serif;opacity:1;overflow-wrap:normal}
main.mapping #map-rows .map-node,main.mapping.woven-map #map-rows .map-node{min-height:0;gap:2px;padding:2px;box-sizing:border-box}
main.mapping #map-rows .map-symbol,main.mapping.woven-map #map-rows .map-symbol{width:34px;height:34px;flex:none}
main.mapping #map-rows .map-node strong,main.mapping.woven-map #map-rows .map-node strong{font:13px/1.2 Georgia,serif;overflow-wrap:normal;hyphens:auto;max-width:100%;padding:2px;white-space:normal}
main.mapping #map-rows .map-node small{font-size:9px;line-height:1.1}
main.mapping #map-rows .map-benefit{font:11px/1.2 system-ui;padding:2px;max-width:100%}
main.mapping #map-rows .map-node:disabled{opacity:.55}
main.mapping .route-lines{z-index:-1}.mapping .route-lines .future{opacity:.7;stroke:#dfc99a}
@media(min-width:700px){main.mapping{--map-footer:68px}main.mapping .map-tools{grid-template-columns:repeat(4,minmax(0,180px));grid-template-rows:44px;justify-content:center}.map-route-canvas{min-height:540px}}
@media(max-width:360px){main.mapping #map-title{font-size:20px}main.mapping #map-rows .map-node strong{font-size:12px}main.mapping .map-tools button{font-size:13px}}
main.mapping #map-rows{display:block}
.boss-threat-badge{position:absolute;right:3px;top:3px;z-index:3;width:17px;height:17px;border-radius:50%;background:#112d23;border:1px solid #d3c093;color:#dfcb92;pointer-events:none}
.boss-threat-badge.poison{color:#bbdd7c;border-color:#9bc95f}.boss-threat-badge svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}

/* Trading cards in the refuge: original figures, root/bronze borders, quiet stats. */
#collection-sheet.collection-gallery{position:fixed;inset:0;margin:0;width:100%;max-width:100%;height:100dvh;max-height:100dvh;display:flex;flex-direction:column;gap:0;padding:calc(18px + env(safe-area-inset-top)) max(14px,calc((100vw - 850px)/2)) calc(100px + env(safe-area-inset-bottom));background:linear-gradient(180deg,#07191e77,#07191ea3),url('assets/refuge-home-v2.webp') center/cover;overflow:hidden}
#collection-sheet.collection-gallery:not([open]){display:none}
.collection-gallery>.collection-eyebrow,.collection-gallery>.wegwarte-actions,.collection-gallery>#collection-claim-status{display:none}
#collection-sheet.collection-gallery #collection-close{position:absolute;right:max(14px,calc((100vw - 850px)/2));top:calc(12px + env(safe-area-inset-top));float:none;margin:0;padding:6px 10px;z-index:2;background:#10292dcc;border-color:#9c835f;color:#e5d4ad;font-size:14px}
#collection-sheet.collection-gallery #collection-title{font:clamp(28px,6vw,42px)/1.1 Georgia,serif;text-align:center;margin:12px 76px 6px;color:#f1e2bf;text-shadow:0 3px 8px #000}
#collection-count{text-align:center;margin:0 0 8px;color:#d7c8a7;font-size:14px;text-shadow:0 2px 5px #000}
#collection-sheet.collection-gallery #collection-copy{font-size:14px;text-align:center;margin:0 0 12px;max-width:none;color:#d1d8c8;text-shadow:0 2px 5px #000}
#collection-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;flex:none;margin-bottom:14px}
#collection-filters[hidden],#collection-count[hidden]{display:none}
#collection-filters button{min-width:0;min-height:44px;padding:8px 4px;color:#dccca8;background:#102b2dda;border:1px solid #92764d;border-radius:12px 4px;font:16px Georgia,serif}
#collection-filters button[aria-pressed=true]{background:linear-gradient(130deg,#42534c,#183a3c);box-shadow:inset 0 -3px #cbb078;border-color:#d2b982;color:#fff1d0}
#collection-sheet.collection-gallery #collection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;align-content:start;grid-auto-rows:max-content;gap:22px 16px;margin:0;padding:3px 3px 16px;overflow-y:auto;overscroll-behavior:contain;min-height:0;flex:1;scrollbar-width:thin}
#collection-sheet .collector-card{display:flex;position:relative;flex-direction:column;min-width:0;width:100%;padding:18px 14px 20px;isolation:isolate;overflow:hidden;height:auto;align-self:start;cursor:pointer;text-align:center;background:radial-gradient(ellipse at 50% 35%,#31504cdd,#10282bf2 65%);border:0;border-radius:10px;box-shadow:0 8px 20px #0008;color:#ead9b5;transition:filter .18s,transform .18s}
#collection-sheet .collector-card:after{content:'';position:absolute;inset:0;pointer-events:none;border:16px solid transparent;border-image:url('assets/root-bronze-frame.png') 100 110 / 16px stretch;z-index:2}
#collection-sheet .collector-card:hover{filter:brightness(1.1);transform:translateY(-2px)}
#collection-sheet .collector-card:focus-visible{outline:3px solid #e6c78d;outline-offset:0}
.collector-rarity{font-size:12px;letter-spacing:.1em;color:#c5ac76;position:relative;z-index:1;min-height:18px}
.collector-art{display:flex;flex-shrink:0;justify-content:center;align-items:end;width:100%;height:clamp(195px,36vw,330px);margin:2px 0 0}
.collector-art img{width:100%;height:100%;object-fit:contain;object-position:center bottom;filter:drop-shadow(0 7px 7px #0008)}
.collector-caption{display:flex;flex-shrink:0;align-items:center;flex-direction:column;width:100%;padding-top:6px;background:linear-gradient(180deg,#0a252900,#0a2529c0 30%);position:relative;gap:4px}
.collector-element{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid #c4a66c;background:#142c30;border-radius:50%;box-shadow:0 3px 6px #0008;margin-top:0}
.collector-element svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5}
.collector-element.fire{color:#e88b62}.collector-element.water{color:#8cc6dc}.collector-element.nature{color:#9cc68d}
.collector-caption strong{font:clamp(22px,5vw,30px)/1.15 Georgia,serif;color:#f1dfb8;overflow-wrap:anywhere}
.collector-role{font:14px/1.35 Georgia,serif;color:#d3d5c0;overflow-wrap:anywhere}
.collector-team{font-size:12px;color:#d8c38b;letter-spacing:.04em;padding:2px 7px;border-bottom:1px solid #a18a5155}
.collector-stats{font:14px/1.4 Georgia,serif;padding-top:4px;color:#eedebc;display:flex;gap:5px;justify-content:center;flex-wrap:wrap}
.collector-card.unowned .collector-art img{filter:brightness(.22) saturate(.25);opacity:.75}
.collector-card.unowned .collector-team{color:#aebdb2}
@media(min-width:760px){#collection-sheet.collection-gallery #collection-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.collector-art{height:280px}}
@media(max-width:360px){#collection-sheet.collection-gallery{padding-left:9px;padding-right:9px}#collection-sheet.collection-gallery #collection-grid{gap:18px 10px}#collection-sheet .collector-card{padding-left:12px;padding-right:12px}.collector-art{height:190px}.collector-stats{font-size:13px}#collection-filters{gap:5px}}
@media(prefers-reduced-motion:reduce){#collection-sheet .collector-card{transition:none}#collection-sheet .collector-card:hover{transform:none}}

/* Delayed class effects remain distinguishable from immediate orange AoE. */
#board .cell.delayed-zone{outline:2px dashed rgba(166,214,153,.78);outline-offset:-4px;background-image:repeating-linear-gradient(135deg,transparent 0 10px,rgba(97,167,125,.14) 10px 13px)}
#board .cell.delayed-zone[data-zone="damage"]{outline-color:rgba(225,163,98,.8)}
#post-step-sheet{max-width:420px;width:calc(100% - 32px);max-height:80dvh;overflow:auto;padding:24px;background:#103137;color:#eee4cb;border:2px solid #8b805b;border-radius:24px}
#post-step-sheet button{display:block;width:100%;margin:8px 0;padding:12px;min-height:44px}
#save-code-dialog,#save-unlock-confirm{margin:auto;width:min(440px,calc(100% - 32px));max-height:85dvh;overflow:auto;box-sizing:border-box;padding:24px;background:radial-gradient(ellipse at top,#344d3e,#10232a);color:#f0e1ba;border:2px solid #aa8d55;border-radius:28px 10px;box-shadow:0 0 0 4px #405345,0 15px 60px #000b}#save-code-dialog::backdrop,#save-unlock-confirm::backdrop{background:#08191ac9;backdrop-filter:blur(3px)}#save-code-dialog button,#save-unlock-confirm button{padding:12px;margin:6px 3px;border:1px solid #b59757;border-radius:10px;background:#254237;color:#f3e7c7;font-size:16px}#save-code-dialog label{display:block;margin-bottom:10px}#save-code-input{width:100%;box-sizing:border-box;padding:12px;font-size:16px;border:1px solid #b59757;border-radius:10px;background:#0e2428;color:#f3e7c7}#save-unlock-confirm p{font-size:16px;line-height:1.5}
#tutorial-welcome,#movement-lesson{margin:auto;width:min(94vw,500px);max-height:calc(100dvh - 40px);box-sizing:border-box;overflow:auto;padding:28px 22px;border:2px solid #a89159;border-radius:28px 8px;background:radial-gradient(ellipse at top,#2d5040,#102b2f 70%);color:#eee1bc;box-shadow:0 0 0 4px #405345,0 20px 80px #000b}#tutorial-welcome::backdrop,#movement-lesson::backdrop{background:#061b2499;backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px)}#tutorial-welcome h2{font:30px/1.15 Georgia,serif;color:#f1dfb3}#tutorial-welcome p{font-size:17px;line-height:1.55}#tutorial-welcome>small{display:block;font-size:13px;line-height:1.5;color:#bbcdbb}#tutorial-welcome button{display:block;width:100%;min-height:48px;margin:12px 0;padding:13px;border:1px solid #b39a64;border-radius:16px 5px;color:#f2e3be;background:linear-gradient(120deg,#3d5b3e,#203f35);font:18px Georgia,serif}#tutorial-welcome #tutorial-skip{background:transparent;font-size:16px;color:#d0d8c4}.tutorial-pillars{display:flex;flex-wrap:wrap;gap:7px;margin:20px 0}.tutorial-pillars span{padding:8px 10px;background:#112f30;border:1px solid #8a8258;border-radius:10px 3px;font-size:14px}#lesson-notes{display:grid;gap:10px;margin:18px 0}#lesson-notes[hidden],#lesson-board[hidden]{display:none}#lesson-notes article{padding:12px 14px;border:1px solid #8a8258;border-radius:14px 4px;background:#13342f}#lesson-notes strong{color:#ead6a6;font:18px Georgia,serif}#lesson-notes p{font-size:16px;line-height:1.45;margin:8px 0 0}#movement-lesson #lesson-close{position:static;display:block;margin:0 0 15px auto;padding:8px;background:transparent;color:#d4d9c6;font-size:14px}#lesson-title{max-width:100%}#lesson-copy,#lesson-feedback,#lesson-extra{font-size:16px}#hub .tutorial-hub-entry{margin:8px auto 0;max-width:320px;min-height:44px;border-radius:14px 4px;background:#15372ed9;color:#e2d6b4;border:1px solid #978558;font-size:16px}
#tutorial-arena-preview{position:relative;isolation:isolate;aspect-ratio:6/4;margin:18px -6px 20px;overflow:hidden;border:1px solid #bb9b5a;border-radius:20px 5px;box-shadow:0 8px 26px #0006}#tutorial-arena-preview>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 40%;z-index:-1}#tutorial-preview-grid{position:absolute;inset:8% 6% 16%;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:repeat(4,minmax(0,1fr))}.tutorial-preview-cell{position:relative;display:flex;align-items:center;justify-content:center;border-right:1px solid #655f4940;border-bottom:1px solid #655f4940}.tutorial-preview-token{display:block;width:87%;aspect-ratio:1;max-height:95%;background-repeat:no-repeat;border:2px solid #619e91;border-radius:7px;box-shadow:0 3px 7px #0008}.tutorial-preview-token.enemy{border-color:#c87655}.tutorial-preview-pincer{background:#f6d88744;border-top:2px solid #ffde8b;border-bottom:2px solid #ffde8b;animation:tutorial-preview-glow 2.8s ease-in-out infinite}.tutorial-preview-pincer .tutorial-preview-token{border-color:#f3d078}#tutorial-arena-preview figcaption{position:absolute;bottom:0;left:0;right:0;padding:10px;background:linear-gradient(transparent,#0b292fee 30%);text-align:center;color:#f7e2b6;font:15px Georgia,serif}#tutorial-welcome h2{font-size:27px;margin:14px 0}#tutorial-welcome .tutorial-pillars{margin:14px 0}#tutorial-welcome>p{font-size:16px;margin:12px 0}@keyframes tutorial-preview-glow{50%{box-shadow:inset 0 0 18px #ffe2a077}}@media(prefers-reduced-motion:reduce){.tutorial-preview-pincer{animation:none}}@media(max-height:750px){#tutorial-arena-preview{aspect-ratio:1.9;margin-top:12px;margin-bottom:14px}#tutorial-welcome{padding:20px 16px}#tutorial-welcome h2{font-size:24px}}
/* The refuge has one primary action; its rooms live in the bottom navigation. */
#hub .hub-controls>:not(#hub-start-run){display:none!important}#hub-credit{display:none!important}#hub .hub-copy>small,#hub .hub-copy>p{display:none}#hub #hub-start-run{font:26px Georgia,serif;min-height:88px;width:min(100%,440px);margin:auto}#hub-resume{display:none!important}.refuge-nav button[data-refuge-tab=zuflucht]{font-size:14px;color:#e4c58b;transform:translateY(-5px)}.refuge-nav button[data-refuge-tab=zuflucht] .refuge-nav-icon{width:43px;height:43px;border:1px solid #aa8e5d;background:radial-gradient(circle,#3b5340,#132e30);box-shadow:0 0 0 3px #193a36,0 5px 15px #0005}.refuge-nav button[data-refuge-tab=zuflucht] svg{width:30px;height:30px}.refuge-nav button{font-size:clamp(11px,2.7vw,14px)}.refuge-nav button[data-refuge-tab=kompendium]{font-size:clamp(10px,2.4vw,13px)}@media(max-height:680px){#hub #hub-start-run{min-height:70px;font-size:23px}}
.title-entry{left:6%;right:6%;bottom:max(4%,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:stretch;gap:10px;max-height:75dvh;overflow:auto;padding:4px}#playtest-notice{order:0;padding:18px 20px;background:linear-gradient(135deg,#17372ef5,#0c242cf5);border:1px solid #aa9463;border-radius:20px 5px;box-shadow:0 8px 30px #0008;color:#e8dfc6;text-align:left}#playtest-notice>small{display:block;font-size:12px;letter-spacing:.7px;color:#c7b78b}#playtest-notice h2{font:23px/1.2 Georgia,serif;color:#f0dfb4;margin:10px 0 12px}#playtest-notice p{font-size:16px;line-height:1.4;margin:10px 0}#playtest-notice .playtest-analytics-state{font-size:14px;color:#bacebf;border-top:1px solid #a2916155;padding-top:10px}.title-entry>#title-resume{order:1}.title-entry>#title-enter{order:2;width:100%;flex:none;min-height:50px}@media(max-height:750px){#playtest-notice{padding:14px 16px}#playtest-notice h2{font-size:21px}#playtest-notice p{margin:8px 0}} 
.analytics-choice{display:flex;align-items:flex-start;gap:10px;font-size:16px;line-height:1.4;margin:14px 0;cursor:pointer}.analytics-choice input{width:22px;height:22px;flex:none;accent-color:#c6ae75}.analytics-settings{padding:16px;border:1px solid #948259;border-radius:16px 5px;background:#14372f;margin:16px 0}.analytics-settings p{font-size:14px;line-height:1.5;color:#c3d1bc}
/* Full character illustration and compact reading panels, shared by roster and run info. */
#detail-sheet.character-trading-card{width:min(94vw,440px);max-height:calc(100dvh - 28px);padding:16px 22px 24px;border:2px solid #b29a62;border-radius:26px 7px;background:radial-gradient(ellipse at 50% 25%,#355449,#103038 68%);box-shadow:0 0 0 4px #132f32,0 0 0 5px #8b794d,0 20px 70px #000b}#detail-sheet.character-trading-card::before{inset:4px;background-image:url('assets/root-bronze-frame.png');opacity:.7}#detail-sheet.character-trading-card[data-element=fire]{background:radial-gradient(ellipse at 50% 25%,#59493a,#143139 68%)}#detail-sheet.character-trading-card[data-element=nature]{background:radial-gradient(ellipse at 50% 25%,#40563c,#12322f 68%)}#detail-sheet.character-trading-card .sheet-close{float:none;display:block;margin:0 0 2px auto;padding:4px 8px;min-height:40px}#detail-sheet .detail-card-kicker{display:flex;justify-content:space-between;gap:12px;color:#dcc58e;font:14px Georgia,serif;margin:0 6px 4px}#detail-sheet.character-trading-card .detail-character-portrait{width:100%;height:clamp(220px,34dvh,330px);aspect-ratio:auto;margin:0;background:none!important;border:0;border-radius:0;box-shadow:none;position:relative}#detail-sheet .detail-character-portrait img{display:block;width:100%;height:100%;object-fit:contain;object-position:center;filter:drop-shadow(0 8px 10px #0008)}#detail-sheet.character-trading-card #detail-title{font:34px/1.1 Georgia,serif;margin:8px 0 16px;letter-spacing:.3px}#detail-sheet .detail-card-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:12px 4px;border-top:1px solid #b29a6277;border-bottom:1px solid #b29a6277;background:#08272b99;border-radius:12px 4px;text-align:center}#detail-sheet .detail-card-stats>div{min-width:0;border-right:1px solid #a48b5940}#detail-sheet .detail-card-stats>div:last-child{border:0}#detail-sheet .detail-card-stats strong{display:block;font:clamp(14px,3.6vw,18px) Georgia,serif;color:#f4e0b3;white-space:nowrap}#detail-sheet .detail-card-stats small{display:block;font-size:12px;color:#baccbb;margin-top:5px}#detail-sheet .detail-card-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:16px 0 12px}#detail-sheet .detail-card-tabs button{min-height:44px;padding:8px 4px;font-size:15px}#detail-sheet.character-trading-card #detail-content{padding:12px 14px;background:#09252b9c;border:1px solid #9e8a5555;border-radius:14px 4px}#detail-sheet.character-trading-card #detail-content p{font-size:16px;line-height:1.55;margin:0 0 14px;padding-bottom:14px}#detail-sheet.character-trading-card #detail-content p:last-child{margin:0;padding:0;border:0}@media(max-height:700px){#detail-sheet.character-trading-card .detail-character-portrait{height:220px}#detail-sheet.character-trading-card{padding:12px 16px 20px}}
#detail-sheet .detail-card-context{display:block;text-align:center;margin:9px 0 0;font-size:13px;color:#b9cbb9}
/* Scale frame corners and edges separately; the horizontal source must not stretch over the whole card. */
#detail-sheet.character-trading-card{padding:24px 32px 32px}#detail-sheet.character-trading-card::before{inset:0;background:none;opacity:.88;border:30px solid transparent;border-image-source:url('assets/root-bronze-frame.png');border-image-slice:235 250 210 250;border-image-width:1;border-image-repeat:round;box-sizing:border-box;pointer-events:none}#detail-sheet.character-trading-card .sheet-close{margin-top:0}@media(max-width:420px){#detail-sheet.character-trading-card{padding:22px 26px 28px}#detail-sheet.character-trading-card::before{border-width:25px}}
