:root{color-scheme:dark;--bg:#0b1412;--panel:#12211dee;--ink:#f1f1dc;--muted:#a5b7a6;--acid:#d5e9a1;--gold:#dfbc79;--line:#c2d6b42c;--danger:#ff8d78;font-family:Inter,'Noto Sans KR',system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);overflow-x:hidden}body.playing{overflow:hidden}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:1px solid var(--line);background:#1e3027;border-radius:10px;transition:background .15s,border-color .15s,transform .15s}button:hover{border-color:#d5e9a199;background:#304732}button:disabled{cursor:default;opacity:.42}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--acid);outline-offset:4px}[hidden]{display:none!important}a{color:inherit}input,select{color:var(--ink);background:#08150fd9;border:1px solid var(--line);border-radius:9px;padding:12px;width:100%;min-width:0}input::placeholder{color:#849781}input[type=checkbox]{width:auto;accent-color:var(--acid)}h1,h2,p{margin-top:0}small{line-height:1.5}.eyebrow{font:10px monospace;letter-spacing:2px;color:var(--acid);text-transform:uppercase}.muted{color:var(--muted);font-size:12px;line-height:1.7}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
#world{position:fixed;inset:0;width:100%;height:100%;z-index:0}.shade{position:fixed;inset:0;background:linear-gradient(100deg,#07130eee 0%,#07150dbb 45%,#0b181484 100%);z-index:1;pointer-events:none}.playing .shade{display:none}.topbar{position:relative;z-index:15;display:flex;align-items:center;justify-content:space-between;height:82px;padding:0 5%;border-bottom:1px solid var(--line);background:#0a17118c}.brand{display:flex;align-items:center;gap:13px;text-decoration:none}.seal{display:grid;place-items:center;width:36px;height:40px;border:1px solid var(--acid);color:var(--acid);font:28px serif}.brand strong{font-size:28px;letter-spacing:2px}.brand-sub{font:8px monospace;letter-spacing:1.7px;line-height:1.7;color:var(--muted)}.edition{font:10px monospace;color:#bcc8ac}.edition span{margin-left:18px;color:#83947d}.header-actions{display:flex;gap:8px}.header-actions button{padding:9px 12px;background:#0f2118b3;font-size:10px}.header-actions span{color:var(--acid)}.playing .topbar{position:fixed;top:0;left:0;right:0;height:57px;padding:0 22px;background:#0b1712ad}.playing .brand strong{font-size:21px}.playing .seal{width:26px;height:29px;font-size:21px}.playing .brand-sub,.playing .edition{display:none}
.menu{position:relative;z-index:3;max-width:1280px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:76px;padding:56px 40px 48px;align-items:start;min-height:calc(100vh - 140px)}.intro{padding-top:12px}.intro h1{font-size:clamp(42px,4.6vw,65px);line-height:1.19;letter-spacing:-3px;margin:24px 0}.intro h1 em{font-style:normal;color:var(--acid)}.intro-copy{font-size:14px;line-height:1.95;color:#b9c9b4}.mission-tags{display:flex;gap:8px;flex-wrap:wrap;margin:23px 0}.mission-tags span{font-size:10px;border:1px solid var(--line);padding:7px 11px;border-radius:30px;background:#b7c78c0a}.hero-display{position:relative;height:245px;overflow:hidden;border:1px solid #c6d6ae3a;border-radius:16px;background:radial-gradient(ellipse at 80% 30%,#526849,#11271c)}.hero-display>img{position:absolute;right:0;top:-10%;width:54%;height:125%;object-fit:cover;object-position:center 35%;mask-image:linear-gradient(90deg,transparent,#000 18%)}.hero-caption{position:absolute;left:24px;bottom:26px;width:56%;z-index:1;text-shadow:0 2px 10px #07130e}.hero-caption h2{font-size:28px;margin:13px 0 8px;letter-spacing:-1px}.hero-caption p{font-size:11px;line-height:1.8;color:#c2d2b8}.hero-stats{display:flex;flex-wrap:wrap;gap:8px 14px;font-size:10px;color:#b7caa8}.hero-stats b{color:var(--ink);font-size:12px;margin-left:4px}.hero-stats>span:last-child{width:100%;color:var(--gold)}
.panel{border:1px solid #bccfae38;background:linear-gradient(135deg,#23392bdc,#101e19f2);border-radius:18px;box-shadow:0 20px 70px #0004;backdrop-filter:blur(18px);padding:30px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-heading .eyebrow{margin:0}.small-number{font-size:9px;color:var(--muted)}.setup h2{font-size:23px;margin:17px 0 23px;letter-spacing:-1px}.role-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.role{overflow:hidden;padding:0 0 12px;background:#0e2118;text-align:left;position:relative;border-radius:11px}.role .portrait{width:100%;height:108px;object-fit:cover;object-position:center 29%;display:block;filter:saturate(.65);border-bottom:1px solid var(--line)}.role strong{display:block;margin:11px 9px 3px;font-size:11px}.role small{font-size:9px;color:var(--muted);margin:0 9px}.role.selected{border-color:var(--acid);background:#d5e9a111;box-shadow:0 0 0 1px #d5e9a130}.role.selected:after{content:'✓';position:absolute;top:7px;right:7px;background:var(--acid);color:#122519;border-radius:50%;width:20px;height:20px;text-align:center;font-size:13px}.role.selected .portrait{filter:none}.input-label{display:flex;justify-content:space-between;margin:23px 0 8px;font-size:11px}.input-label span{font-size:9px;color:var(--muted)}.mode-tabs{display:flex;padding:4px;background:#07130d88;border:1px solid var(--line);border-radius:10px;margin-top:22px;gap:4px}.mode-tabs button{width:50%;padding:11px;border:0;background:transparent;font-size:12px;color:var(--muted)}.mode-tabs .active{background:#d5e9a11d;color:var(--ink);box-shadow:inset 0 0 0 1px #bcd59144}.mode-tabs span{font:9px monospace;color:var(--acid);margin-left:4px}.mode-copy{color:var(--muted);font-size:12px;line-height:1.8;margin:22px 0}.primary,.secondary{width:100%;display:flex;justify-content:space-between;align-items:center;padding:15px 18px;font-size:14px;font-weight:650;border-radius:10px}.primary{background:var(--acid);color:#162719;border-color:var(--acid)}.primary:hover{background:#e4f4bb;color:#112014}.primary span{font-size:19px}.secondary{background:#263c2b}.online-divider,.room-list-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:19px 0 13px}.online-divider>span:last-child{font-size:9px;color:var(--muted)}.online-divider .eyebrow{letter-spacing:1px}.room-list-heading strong{font-size:12px}.small-button{padding:6px 9px;font-size:10px;background:transparent}.public-rooms{max-height:200px;overflow:auto;display:grid;gap:7px;scrollbar-width:thin}.rooms-empty{margin:0;padding:23px 14px;text-align:center;border:1px dashed var(--line);border-radius:10px;font-size:11px;color:var(--muted);line-height:1.8}.public-room{display:flex;justify-content:space-between;align-items:center;width:100%;text-align:left;padding:12px;background:#10241acc}.public-room strong{font-size:12px;display:block;margin-bottom:4px}.public-room small{font-size:10px;color:var(--muted)}.public-room>b{color:var(--acid);font-size:11px;white-space:nowrap}.public-option{display:flex;gap:8px;align-items:center;font-size:11px;margin:18px 0 12px}.public-option small{margin-left:auto;font-size:9px;color:var(--muted)}.public-option input{margin:0}.code-join{border-top:1px solid var(--line);margin-top:18px;padding-top:15px}.code-join summary{cursor:pointer;font-size:11px;color:var(--muted)}.join-row{display:flex;gap:8px;margin-top:12px}.join-row input{text-transform:uppercase;letter-spacing:2px}.join-row button{flex:none;padding:0 15px;font-size:11px}.connection-note{font-size:10px;color:var(--muted);line-height:1.7;margin:15px 0 0}#menu-footer{position:relative;z-index:3;display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);margin:0 5%;padding:18px 0;font-size:9px;color:#91a388}#menu-footer b{color:var(--acid)}#menu-footer i{font-style:normal;margin:0 9px}
.dialog-wrap{position:fixed;inset:82px 0 0;z-index:10;display:grid;place-items:center;padding:32px;background:#06110ba8;overflow:auto}.lobby-panel{width:min(880px,100%)}.lobby-panel h2{font-size:28px;margin:23px 0 9px;letter-spacing:-1px}.visibility-badge{color:var(--acid);border:1px solid var(--line);border-radius:30px;padding:5px 10px;font-size:10px}.lobby-players{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:25px 0}.lobby-member{border:1px solid var(--line);border-radius:12px;background:#0b1913;overflow:hidden;min-height:220px;text-align:center}.lobby-member img{display:block;width:100%;height:165px;object-fit:cover;object-position:center 30%}.lobby-member strong{display:block;font-size:13px;margin:13px 6px 4px}.lobby-member small{display:block;font-size:10px;color:var(--muted)}.ready-label{display:inline-block;border-radius:20px;background:#637c372a;color:var(--acid);padding:5px 10px;font-size:10px;margin:11px}.lobby-member.waiting{display:flex;flex-direction:column;align-items:center;justify-content:center;border-style:dashed;background:#16281a77}.lobby-member.waiting>b{font-size:36px;color:#758b69;font-weight:300;margin-bottom:16px}.lobby-controls{display:flex;justify-content:space-between;gap:22px;align-items:end}.lobby-controls>label{font-size:11px;flex:1}.lobby-controls select{display:block;margin-top:8px}.room-display{padding:10px 15px;text-align:left;display:grid;grid-template-columns:auto auto;gap:4px 15px;background:#102419}.room-display span{font-size:9px;color:var(--muted)}.room-display strong{grid-row:2;letter-spacing:4px;font:19px monospace}.room-display small{font-size:9px;grid-column:2;grid-row:2;align-self:center}.lobby-panel>.primary{margin-top:15px}.text-button{display:block;border:0;background:transparent;color:var(--muted);padding:14px 0 0;font-size:11px;margin:auto}.result-panel{width:min(480px,100%);text-align:center}.result-panel h2{font-size:27px}.result-stats{display:flex;justify-content:space-around;border-block:1px solid var(--line);padding:24px 0;margin:25px 0}.result-stats strong{font:30px monospace;display:block;color:var(--acid)}.result-stats span{font-size:11px;color:var(--muted)}#result-team p{display:flex;justify-content:space-between;font-size:11px}.result-panel .primary{margin-top:23px}
#hud{position:relative;z-index:4;pointer-events:none}.health-panel,#tower-hud{position:fixed;top:77px;border:1px solid #bfd6b755;border-radius:12px;background:#0b1b14ee;box-shadow:0 5px 22px #0004;padding:13px}.health-panel{left:22px;width:260px;display:flex;gap:12px;align-items:center}.health-panel>img{width:48px;height:54px;object-fit:cover;object-position:center 30%;border:1px solid var(--line);border-radius:8px}.health-main{flex:1;min-width:0}.health-heading,.tower-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:9px}.health-heading strong,.tower-heading strong{font-size:12px;color:#e5f1cc}.health-heading span{font:bold 13px monospace}.bar{height:4px;background:#a6b79725;border-radius:3px;overflow:hidden}.bar i{display:block;height:100%;background:var(--acid);width:0;transition:width .12s}.health-bar{height:12px;background:#030c0899;border:1px solid #c2d6ae22}.health-panel small{display:block;font-size:10px;color:var(--muted);margin-top:7px}#tower-hud{left:50%;transform:translateX(-50%);width:300px}#tower-percent{font:bold 20px monospace;color:var(--acid)}#tower-health{font:11px monospace;display:inline-block;color:#dae6c8;margin-top:6px}#tower-status{float:right;font-size:9px;color:var(--muted);margin-top:8px}.health-panel.critical,#tower-hud.critical{border-color:#ff9476;background:#321c18ef}.critical .health-bar i{background:var(--danger)}.health-panel.critical small,#tower-hud.critical #tower-status,#tower-hud.critical #tower-percent{color:#ffb39e}.round-top{position:fixed;right:22px;top:81px;display:flex;gap:24px;text-align:right;align-items:start}.objective{display:none}.timer small,.kill-counter small{font-size:9px;display:block;color:var(--muted)}.timer strong{font:32px monospace;display:block;margin:5px 0}.timer>span{font:9px monospace;color:var(--muted)}.kill-counter strong{display:block;font:25px monospace;margin:5px 0}.kill-counter>span{font:9px monospace;color:var(--acid)}#enemy-count{font:9px monospace;margin-top:7px}.xp{position:fixed;top:176px;left:50%;transform:translateX(-50%);width:300px;display:flex;align-items:center;gap:9px;font:11px monospace}.xp .bar{flex:1;height:5px}.xp small{font-size:9px;color:var(--muted)}.team{position:fixed;top:179px;left:22px;width:190px}.team-member{border:1px solid var(--line);border-radius:8px;background:#0b1b14c9;padding:10px;margin-bottom:7px}.member-heading{display:flex;justify-content:space-between;font-size:10px;gap:7px;margin-bottom:7px}.member-heading small{font-size:8px;color:var(--muted)}.health-text{font:9px monospace;color:var(--muted);display:block;margin-top:5px}#boss-hud{position:fixed;left:50%;transform:translateX(-50%);top:207px;width:310px;text-align:center}#boss-name{color:#ffb29a;font-size:11px;display:block;margin-bottom:7px}#boss-hud .bar{height:7px}#boss-fill{background:#f29a74}.wave-banner{position:fixed;left:50%;top:32%;transform:translateX(-50%);font-size:13px;color:#ecf4c9;text-shadow:0 2px 12px #000;white-space:nowrap}.bottom-hud{position:fixed;bottom:22px;left:22px;right:22px;display:flex;align-items:flex-end;justify-content:space-between}.bottom-hud .eyebrow{font-size:9px;display:block;margin-bottom:8px}#loadout{display:flex;flex-wrap:wrap;gap:5px;max-width:min(360px,calc(50vw - 110px));max-height:115px;overflow:auto;pointer-events:auto;scrollbar-width:thin}.weapon-slot{width:49px;height:52px;border:1px solid #aec88b55;background:#0c2018e8;border-radius:6px;display:flex;align-items:center;flex-direction:column;justify-content:center;position:relative;flex:none}.weapon-slot small{font-size:7px;color:#d7e2c7;line-height:14px}.weapon-slot b{position:absolute;right:4px;top:3px;font:8px monospace;color:#eeefd4}.weapon-slot.passive{border-color:#84b6bd55}.skill-art{display:block;flex:none;background-image:url('/assets/web/art-skills.1e3bf71c00291966.webp');background-size:600% 300%;background-position:var(--icon-x) var(--icon-y);background-repeat:no-repeat;filter:drop-shadow(0 2px 3px #0008)}.weapon-slot>.skill-art{width:34px;height:34px}.dash-status{position:absolute;left:50%;transform:translateX(-50%);width:130px;pointer-events:auto}#dash-button{padding:12px 9px;width:100%;background:#183522e8;font-size:12px}.dash-status .bar{margin-top:5px}.exit-button{padding:10px 14px;background:#101f18d9;font-size:10px;pointer-events:auto}kbd{font:9px monospace;padding:3px;border:1px solid var(--line);border-radius:3px;margin-left:5px;color:#daebc3}.down-notice{position:fixed;left:50%;top:auto;bottom:calc(140px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);width:max-content;max-width:calc(100vw - 32px);padding:11px 18px;background:#251d17d9;border:1px solid #d9ad7699;border-radius:10px;text-align:center;font-size:16px;color:#f1bc81;pointer-events:none}.down-notice span{display:block;margin-top:5px;font-size:11px;color:#d0c2ab}#joystick{display:none;position:fixed;left:25px;bottom:142px;width:108px;height:108px;border:1px solid #d0e2a655;border-radius:50%;background:#13261966;touch-action:none;pointer-events:auto}#joystick>div{position:absolute;left:34px;top:34px;width:38px;height:38px;border-radius:50%;background:#c1dba24d;border:1px solid #d7e8ac88;pointer-events:none}
.upgrade-wrap{position:fixed;z-index:8;top:235px;right:22px;width:260px;pointer-events:none;max-height:calc(100dvh - 350px);overflow:auto;scrollbar-width:thin}.upgrade-heading{background:#0c1c15e8;border:1px solid var(--line);border-radius:10px 10px 0 0;padding:12px}.upgrade-heading .eyebrow{font-size:8px;letter-spacing:1.5px}.upgrade-heading h2{font-size:17px;margin:8px 0}.upgrade-heading p{font-size:9px;color:var(--muted);margin-bottom:0;line-height:1.6}#upgrade-cards{display:grid;gap:7px;margin-top:7px;pointer-events:auto}.upgrade-card{position:relative;text-align:left;padding:12px 12px 10px 67px;min-height:110px;background:#10251df5;border:1px solid #d2df9c77;border-radius:10px;touch-action:manipulation}.upgrade-card:hover{background:#2a4028}.upgrade-card>.skill-art{position:absolute;left:9px;top:32px;width:50px;height:50px}.skill-kind{display:block;color:#b4c6a6;font-size:8px;margin:0 22px 6px 0}.upgrade-card strong{display:block;font-size:12px;margin-bottom:5px}.upgrade-card small{font-size:10px;color:#b6c9af;display:block;line-height:1.5}.upgrade-card em{font:8px monospace;color:var(--acid);display:block;margin-top:7px}.upgrade-card kbd{position:absolute;right:9px;top:10px}.close-button{float:right;background:transparent;border:0;font-size:27px;color:var(--muted)}dialog{background:#112419;color:var(--ink);border:1px solid #a7c58466;border-radius:15px;width:min(500px,92vw);padding:26px;max-height:85dvh}dialog::backdrop{background:#06110bc9}dialog h2{font-size:23px}dialog>p{font-size:12px;line-height:1.8}dl{font-size:12px;line-height:1.8}dt{color:var(--acid);margin-top:13px}dd{margin:4px 0;color:#b7c7ae}#toast{position:fixed;bottom:110px;left:50%;transform:translate(-50%,15px);opacity:0;z-index:30;pointer-events:none;border:1px solid #d5e9a1;background:#d5e9a1;color:#162619;border-radius:10px;padding:12px 20px;max-width:90vw;text-align:center;font-size:12px;transition:opacity .15s,transform .15s}#toast.visible{opacity:1;transform:translate(-50%,0)}
@media(max-width:1050px){.edition{display:none}.menu{gap:35px;padding-inline:28px}.intro h1{font-size:48px}.panel{padding:24px}.hero-caption{left:18px}.hero-caption h2{font-size:24px}.hero-caption p{font-size:10px}.health-panel{width:230px}.round-top{gap:13px}#tower-hud{width:270px}.xp{width:270px}.upgrade-wrap{width:235px}.upgrade-card{padding-left:59px}.upgrade-card>.skill-art{width:44px;height:44px}.upgrade-card small{font-size:9px}}
@media(max-width:760px){.topbar{height:65px;padding:0 18px}.brand strong{font-size:23px}.brand-sub{display:none}.header-actions{gap:5px}.header-actions button{padding:8px;font-size:9px}.menu{display:flex;flex-direction:column;gap:26px;padding:28px 18px;min-height:auto}.intro{width:100%;padding:0}.intro h1{font-size:39px;line-height:1.2;margin:17px 0;letter-spacing:-2px}.intro-copy{font-size:12px;line-height:1.8;margin-bottom:12px}.mission-tags{margin:16px 0}.hero-display{height:170px}.hero-display>img{width:46%;top:-25%;height:150%}.hero-caption{left:18px;bottom:18px}.hero-caption h2{font-size:23px;margin:8px 0 4px}.hero-caption p{margin-bottom:7px}.hero-stats{font-size:9px;gap:5px 12px}.hero-stats>span:last-child{display:none}.setup{width:100%;padding:20px}.setup h2{font-size:22px;margin:14px 0 19px}.small-number{font-size:8px}.role .portrait{height:105px}.role strong{font-size:10px}.role small{font-size:9px}.role-picker{gap:8px}.public-option small{font-size:8px}.online-divider .eyebrow{font-size:8px}.public-rooms{max-height:190px}#menu-footer{font-size:8px;margin:0 18px}#menu-footer>span:not(:first-child){display:none}.dialog-wrap{inset:65px 0 0;padding:18px}.lobby-panel{padding:20px}.lobby-panel h2{font-size:21px}.lobby-players{gap:8px;margin:20px 0}.lobby-member{min-height:180px}.lobby-member img{height:110px}.lobby-member strong{font-size:10px;overflow-wrap:anywhere}.lobby-member small{font-size:8px}.ready-label{font-size:9px;margin:8px 0;padding:4px 7px}.lobby-controls{flex-direction:column;align-items:stretch;gap:12px}.room-display{display:flex;align-items:center;justify-content:space-between;padding:10px}.room-display strong{font-size:17px}.lobby-panel>.muted{font-size:10px}.playing .topbar{height:52px;padding:0 14px}.health-panel,#tower-hud{top:66px;padding:10px;border-radius:10px;width:calc(50% - 20px)}.health-panel{left:14px;gap:7px}.health-panel>img{width:32px;height:43px}.health-heading,.tower-heading{gap:3px;margin-bottom:7px;flex-wrap:wrap}.health-heading strong,.tower-heading strong{font-size:10px}.health-heading span{font-size:11px}.health-panel small{font-size:8px;margin-top:5px}.health-bar{height:10px}#tower-hud{right:14px;left:auto;transform:none;min-height:91px}#tower-percent{font-size:15px}#tower-health{font-size:9px;margin-top:5px}#tower-status{float:none;display:block;font-size:8px;margin-top:4px;line-height:1.3}.xp{top:171px;left:14px;transform:none;width:56%;font-size:9px;gap:6px}.xp small{font-size:8px}.round-top{top:164px;right:14px;gap:10px}.timer strong{font-size:19px;margin:0}.timer small,.timer>span,.kill-counter small,#enemy-count{display:none}.kill-counter strong{font-size:19px;margin:0}.kill-counter>span{font-size:7px}.team{left:14px;top:199px;width:113px}.team-member{padding:7px}.member-heading{font-size:8px;display:block;margin-bottom:5px}.member-heading small{font-size:7px;display:none}.health-text{font-size:8px}#boss-hud{top:201px;left:auto;right:14px;transform:none;width:53%}#boss-name{font-size:9px;margin-bottom:5px}.wave-banner{top:39%;font-size:11px;max-width:80vw;white-space:normal;text-align:center}.bottom-hud{bottom:16px;left:14px;right:14px}#loadout{max-width:65vw;max-height:105px;gap:4px}.weapon-slot{width:40px;height:48px}.weapon-slot>.skill-art{width:30px;height:30px}.weapon-slot small{font-size:6px}.bottom-hud .eyebrow{font-size:8px}.dash-status{left:auto;right:0;bottom:135px;transform:none;width:76px}#dash-button{height:76px;border-radius:50%;font-size:13px}#dash-button kbd{display:none}.exit-button{font-size:9px;padding:9px}#joystick{display:block;left:18px;bottom:140px}.upgrade-wrap{top:245px;left:14px;right:14px;width:auto;max-height:175px;overflow:visible}.upgrade-heading{padding:6px 9px;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:4px}.upgrade-heading .eyebrow{display:none}.upgrade-heading h2{font-size:11px;margin:0;white-space:nowrap}.upgrade-heading p{font-size:8px;margin:0}#upgrade-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-top:5px}.upgrade-card{padding:7px;min-height:128px}.upgrade-card>.skill-art{position:static;width:34px;height:34px;margin:0 auto 4px}.skill-kind{font-size:7px;margin:0 16px 3px 0;white-space:nowrap}.upgrade-card strong{font-size:10px;margin-bottom:4px}.upgrade-card small{font-size:8px;line-height:1.4}.upgrade-card em{font-size:7px;margin-top:4px}.upgrade-card kbd{right:5px;top:5px;font-size:7px;padding:2px}.down-notice{width:max-content;max-width:calc(100vw - 32px);font-size:15px}.down-notice span{font-size:10px}.result-panel{padding:24px}}
@media(max-height:750px) and (min-width:761px){.topbar{height:65px}.menu{padding-top:28px;gap:45px}.intro h1{font-size:48px}.hero-display{height:200px}.dialog-wrap{inset:65px 0 0}.lobby-member img{height:130px}.lobby-member{min-height:190px}.lobby-players{margin:17px 0}.lobby-panel h2{margin-top:15px}.upgrade-wrap{top:203px;max-height:calc(100dvh - 275px)}.upgrade-heading{padding:9px}.upgrade-card{min-height:93px}}
@media(max-width:760px) and (max-height:740px){.upgrade-wrap{top:230px}.upgrade-card small{font-size:7px}.upgrade-card{min-height:115px}.upgrade-card>.skill-art{width:28px;height:28px}.upgrade-heading p{font-size:7px}}
@media(pointer:coarse){#joystick{display:block}.dash-status{left:auto;right:0;bottom:142px;transform:none}.dash-status kbd{display:none}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

@media(max-width:760px){.playing.choosing .team,.playing.choosing .wave-banner{display:none}}
@media(max-width:760px) and (orientation:landscape){.upgrade-wrap{top:185px;left:auto;right:12px;width:210px;max-height:calc(100dvh - 205px);overflow:auto}.upgrade-heading{display:block}.upgrade-heading h2{margin-bottom:4px}#upgrade-cards{grid-template-columns:1fr}.upgrade-card{min-height:93px;padding:9px 9px 9px 54px}.upgrade-card>.skill-art{position:absolute;left:8px;top:28px;width:39px;height:39px}.playing.choosing #boss-hud{left:14px;right:auto;width:42%}}


/* Official game landing page. Gameplay stays in the world canvas after deployment. */
html{scroll-behavior:smooth;scroll-padding-top:80px}body.menu-active{background:#090f10}.menu-active .shade{display:none}.menu-active .topbar{position:absolute;inset:0 0 auto;height:86px;padding:0 5%;border-color:#d4d8bd24;background:linear-gradient(#071010d9,#07101022)}
.landing-nav{display:none;gap:38px;align-items:center;font-size:11px;letter-spacing:1px}.menu-active .landing-nav{display:flex}.landing-nav a{text-decoration:none;color:#d2d9cb}.landing-nav a:hover{color:#f4d7a3}.landing-nav .nav-play{border-bottom:1px solid #cdae71;padding:10px 0;color:#eed5a5}
.menu{display:block;max-width:none;margin:0;padding:0;min-height:0}.landing-hero{min-height:800px;height:100svh;max-height:1100px;position:relative;overflow:hidden;display:flex;align-items:center;background:#101e21}.landing-keyart{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:65% center}.landing-atmosphere{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#061013bb 0%,#07101355 35%,#07101300 65%),linear-gradient(0deg,#090f10 0%,#090f1011 30%,#090f1000 70%,#07101344 100%)}
.hero-content{position:relative;z-index:1;padding:100px 7% 110px;width:100%;max-width:1600px;margin:auto}.hero-content>.eyebrow{color:#d1bb8e;font-size:10px;letter-spacing:4px;margin-bottom:25px}.hero-content h1{font-family:'Noto Serif KR','Nanum Myeongjo',serif;font-size:clamp(105px,11vw,166px);font-weight:800;letter-spacing:16px;line-height:1.08;margin:0 0 32px;color:#eee9d4;text-shadow:0 4px 30px #06101080}.hero-content h1>span{display:block;font-family:system-ui,sans-serif;font-size:15px;letter-spacing:10px;font-weight:400;margin-top:17px;margin-left:6px;color:#d4c8a8}.hero-tagline{font-size:25px;letter-spacing:-.8px;margin-bottom:16px;color:#f0e9d7}.hero-description{font-size:13px;line-height:2;color:#b7c7c5;margin-bottom:30px;text-shadow:0 2px 12px #061013}.hero-actions{display:flex;gap:12px}.hero-actions a{display:flex;align-items:center;justify-content:space-between;gap:42px;min-width:188px;padding:17px 23px;text-decoration:none;font-size:13px;transition:background .2s,transform .2s;border:1px solid #bdac7e}.landing-primary{background:#d8c397;color:#172020;font-weight:700}.landing-primary:hover{background:#f0ddb4;transform:translateY(-2px)}.landing-secondary{background:#111c20aa;color:#e4d8bc}.landing-secondary:hover{background:#384641aa;transform:translateY(-2px)}.hero-actions span{font-size:18px}.hero-platform{font-size:10px;color:#9eafad;margin:17px 0 0;letter-spacing:.5px}.hero-platform>span{margin:0 8px}.hero-bottom{position:absolute;left:5%;right:5%;bottom:30px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #d2c6a62b;padding-top:20px;color:#b3b8a8;font:9px monospace;letter-spacing:1.4px}.hero-bottom i{font-style:normal;color:#736e59;margin:0 10px}.hero-bottom>a{text-decoration:none;color:#c3c9b5;font-family:system-ui;font-size:10px}.hero-bottom b{display:inline-block;margin-left:15px;color:#dfc590}
.story-section{padding:105px 7% 95px;max-width:1500px;margin:auto}.story-heading{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:48px}.story-heading .eyebrow,.deployment-heading .eyebrow{color:#c5ab76;letter-spacing:3px}.story-heading h2{font-size:32px;line-height:1.6;font-weight:500;letter-spacing:-1.2px;margin-bottom:0}.story-heading h2 em{font-style:normal;color:#a6b5ae}.story-heading>p{font-size:12px;line-height:2.1;color:#8faaa5;margin:0}.feature-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:35px}.feature{position:relative;border-top:1px solid #9aab963e;padding-top:20px}.feature-number{font:9px monospace;letter-spacing:2px;color:#a69571}.feature-art{height:200px;position:relative;display:flex;align-items:center;justify-content:center;margin:8px 0 22px;overflow:hidden;background:radial-gradient(ellipse,#36564733,transparent 70%)}.tower-feature img{height:200px;filter:drop-shadow(0 4px 28px #99dabf22)}.feature h3{font-size:18px;font-weight:500;letter-spacing:-.5px;margin:0 0 13px}.feature>p{font-size:11px;line-height:1.9;color:#8fa59d;margin:0}.skills-feature{gap:12px}.skills-feature .skill-art{width:80px;height:80px;transform:rotate(-10deg);filter:drop-shadow(0 6px 12px #0005)}.skills-feature .skill-art:nth-child(2){width:110px;height:110px;transform:translateY(-8px);z-index:1}.skills-feature .skill-art:nth-child(3){transform:rotate(10deg)}.squad-feature{gap:0;padding-top:10px}.squad-feature img{height:151px;width:29%;object-fit:cover;object-position:center 30%;border:1px solid #9cad9144;filter:saturate(.75);mask-image:linear-gradient(#000 65%,transparent)}.squad-feature img:nth-child(2){height:185px;width:34%;z-index:1;filter:none}
.deployment-section{padding:80px 7% 100px;background:radial-gradient(ellipse at 20% 60%,#22383377,transparent 65%),#0d1717;border-block:1px solid #b9b99420;scroll-margin-top:0}.deployment-heading{max-width:1290px;margin:0 auto 43px}.deployment-heading h2{font-size:31px;font-weight:500;letter-spacing:-1px;margin:20px 0 15px}.deployment-heading>p{font-size:12px;color:#98ada5}.deployment-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(350px,440px);gap:70px;max-width:1290px;margin:auto;align-items:start}.survivor-showcase{min-width:0}.hero-display{height:545px;position:relative;border:0;border-bottom:1px solid #b1cba44d;border-radius:0;background:radial-gradient(ellipse at 60% 40%,#3e5144,#0c1817 75%);overflow:hidden}.hero-display>img{position:absolute;width:100%;height:100%;top:0;left:0;object-fit:cover;object-position:center 25%;mask-image:linear-gradient(#000 45%,#0005 78%,transparent)}.hero-caption{position:absolute;left:26px;bottom:27px;width:85%;text-shadow:0 2px 12px #041410}.hero-caption .eyebrow{font-size:9px;color:#d2b783}.hero-caption h2{font-size:35px;letter-spacing:-1px;margin:13px 0 12px}.hero-caption p{font-size:12px;color:#c5d1c0}.hero-stats{gap:10px 22px;font-size:11px;color:#afc1ac}.hero-stats b{font-size:14px}.hero-stats>span:last-child{width:auto;color:#dac195}.setup{padding:27px;background:#0d1c19cc;border:1px solid #adbdaa3d;border-radius:3px;backdrop-filter:none;box-shadow:none}.setup h2{font-size:22px;margin:19px 0 24px}.setup .panel-heading .eyebrow{color:#cdb583;letter-spacing:1.5px}.role{border-radius:2px;transition:transform .2s,border-color .2s}.role:hover{transform:translateY(-4px)}.role.selected{border-color:#d3bc87;background:#c4b57d12;box-shadow:none}.role.selected:after{background:#d3bc87}.role .portrait{height:110px}.setup .primary{background:#d3bf91;border-color:#d3bf91;border-radius:3px;color:#10231d}.setup .primary:hover{background:#e4d3af}.setup .mode-tabs,.setup input,.setup .mode-tabs button{border-radius:3px}#menu-footer{margin:0;padding:30px 5%;background:#090f10;border:0;font-size:9px;color:#82988f}
@media(min-width:761px) and (max-height:800px){.landing-hero{min-height:740px}.hero-content{padding-top:115px;padding-bottom:110px}.hero-content h1{font-size:120px}.hero-tagline{font-size:22px}}
@media(max-width:1050px){.landing-nav{gap:22px}.hero-content{padding-inline:6%}.hero-content h1{font-size:116px}.story-section{padding:80px 6%}.story-heading{gap:25px}.story-heading h2{font-size:27px}.story-heading>p{font-size:10px}.feature-grid{gap:23px}.feature-art{height:170px}.feature h3{font-size:16px}.feature>p{font-size:10px}.skills-feature{gap:4px}.skills-feature .skill-art{width:60px;height:60px}.skills-feature .skill-art:nth-child(2){width:84px;height:84px}.deployment-section{padding:70px 6%}.deployment-grid{gap:30px;grid-template-columns:minmax(0,1fr) 360px}.hero-display{height:520px}.hero-caption h2{font-size:29px}.setup{padding:22px}}
@media(max-width:760px){html{scroll-padding-top:20px}.menu-active .topbar{height:68px;padding:0 20px}.menu-active .landing-nav{display:none}.menu{padding:0;gap:0}.landing-hero{height:100svh;min-height:720px;max-height:1000px}.landing-keyart{object-position:64% center;opacity:.8}.landing-atmosphere{background:linear-gradient(90deg,#071013b3,#07101320),linear-gradient(0deg,#090f10 0%,#090f1033 65%,#090f1055 100%)}.hero-content{padding:110px 25px 105px}.hero-content>.eyebrow{font-size:8px;letter-spacing:3px;margin-bottom:24px}.hero-content h1{font-size:100px;letter-spacing:8px;margin-bottom:29px}.hero-content h1>span{font-size:12px;letter-spacing:7px;margin-left:4px;margin-top:13px}.hero-tagline{font-size:21px;margin-bottom:15px}.hero-description{font-size:11px;line-height:2;margin-bottom:28px}.hero-actions{gap:8px}.hero-actions a{padding:14px;min-width:0;font-size:11px;gap:20px}.hero-actions span{font-size:16px}.hero-platform{font-size:9px}.hero-bottom{left:25px;right:25px;bottom:24px;padding-top:18px;font-size:8px}.hero-bottom>span:last-child{display:none}.hero-bottom>a{font-size:9px}.story-section{padding:65px 25px}.story-heading{display:block;margin-bottom:32px}.story-heading h2{font-size:25px}.story-heading>p{font-size:11px;margin-top:22px}.feature-grid{grid-template-columns:1fr;gap:34px}.feature{display:grid;grid-template-columns:1fr 120px;column-gap:10px;padding-top:19px}.feature-number{grid-column:1;align-self:start}.feature-art{grid-column:2;grid-row:1 / 4;height:140px;margin:0}.tower-feature img{height:138px}.feature h3{font-size:17px;margin:15px 0 9px}.feature>p{font-size:10px;grid-column:1;line-height:1.8}.skills-feature{gap:0;overflow:visible}.skills-feature .skill-art{width:40px;height:40px;flex-shrink:0}.skills-feature .skill-art:nth-child(2){width:52px;height:52px}.squad-feature img{height:100px;width:33%}.squad-feature img:nth-child(2){height:120px;width:38%}.deployment-section{padding:55px 22px 60px}.deployment-heading{margin-bottom:28px}.deployment-heading h2{font-size:25px;line-height:1.5;margin:15px 0 12px}.deployment-heading>p{font-size:11px}.deployment-grid{grid-template-columns:1fr;gap:24px}.hero-display{height:340px}.hero-display>img{object-position:center 28%;height:125%;top:-20%}.hero-caption{left:22px;bottom:22px}.hero-caption h2{font-size:29px}.hero-caption p{font-size:11px}.hero-stats{font-size:10px}.hero-stats b{font-size:12px}.setup{padding:20px}.setup h2{font-size:21px}.role .portrait{height:108px}#menu-footer{padding:24px}.hero-stats>span:last-child{display:none}}
@media(max-width:370px){.hero-content{padding-inline:20px}.hero-content h1{font-size:90px}.hero-actions a{font-size:10px;gap:12px;padding:13px}.feature{grid-template-columns:1fr 90px}.feature h3{font-size:15px}.feature>p{font-size:9px}.feature-art{width:90px}.skills-feature .skill-art{width:30px;height:30px}.skills-feature .skill-art:nth-child(2){width:42px;height:42px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.landing-primary:hover,.landing-secondary:hover,.role:hover{transform:none}}
/* Guided deployment: one decision per screen, one primary next action. */
.deploy-wizard{min-height:700px}.deploy-wizard>div,.deploy-wizard>ol{max-width:1050px;margin-inline:auto}.deploy-top{display:flex;justify-content:space-between;align-items:start;gap:20px}.deploy-top h2{font-size:36px;letter-spacing:-1px;margin:15px 0}.deploy-top p:not(.eyebrow){color:#9ab2a8;font-size:13px;line-height:1.8}.deploy-steps{list-style:none;display:flex;padding:0;border-bottom:1px solid #afc5ac33;margin-block:30px!important;gap:40px}.deploy-steps li{padding:17px 0;font-size:12px;color:#778b83;border-bottom:2px solid transparent}.deploy-steps b{font:11px monospace;margin-right:10px}.deploy-steps [aria-current="step"]{color:#eed4a0;border-color:#d3bf91}.mode-cards{display:grid;grid-template-columns:1fr 1fr;gap:24px}.mode-card{position:relative;overflow:hidden;text-align:left;padding:28px 30px 0;border:1px solid #9eb79e40;border-radius:6px;background:linear-gradient(145deg,#21382e,#111f1b);transition:border-color .2s,transform .2s}.mode-card:hover{border-color:#d3bf91;transform:translateY(-3px)}.mode-card-number{font:11px monospace;letter-spacing:2px;color:#d6bd88}.mode-art{height:185px;display:flex;justify-content:center;overflow:hidden;margin:5px 0 18px;mask-image:linear-gradient(#000 55%,transparent)}.mode-art img{height:210px;width:160px;object-fit:cover;object-position:center 25%}.mode-squad img{width:31%;height:180px;margin-top:20px}.mode-squad img:nth-child(2){height:210px;margin-top:0;z-index:1}.mode-card>strong{font-size:28px;letter-spacing:-1px}.mode-card>p{font-size:12px;color:#a9bcb0;line-height:1.9;margin:14px 0 28px}.mode-card-next{display:flex;justify-content:space-between;border-top:1px solid #bbcca52c;padding:19px 0;color:#e8d7b1;font-size:13px}.selection-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:12px}.selection-toolbar .text-button{width:auto;margin:0;padding:8px 0;font-size:12px}.deploy-wizard .role-picker{gap:20px}.deploy-wizard .role{border-radius:5px;padding-bottom:20px}.deploy-wizard .role .portrait{height:230px;object-position:center 25%}.deploy-wizard .role strong{font-size:21px;margin:10px 20px 6px}.deploy-wizard .role small{font-size:12px;color:#e0c892;margin-inline:20px}.deploy-wizard .role p{margin:12px 20px 0;font-size:12px;line-height:1.7;color:#9cb0a4}.role-tag{display:block;color:#c8bc96;font-size:10px;margin:16px 20px 0}.selection-detail{display:flex;align-items:center;gap:20px;padding:20px 24px;margin:24px 0;border:1px solid #a5bc9e33;background:#b9cf9b08;border-radius:5px}.selection-detail>img{width:66px;height:78px;object-fit:cover;object-position:center 25%;border-radius:3px}.selection-detail h3{margin:8px 0 5px;font-size:20px}.selection-detail p{font-size:11px;color:#9caf9f;margin:0}.selection-detail .eyebrow{font-size:9px}.selection-detail .hero-stats{margin-left:auto;display:flex;gap:24px;flex-wrap:wrap;justify-content:end}.selection-detail .hero-stats span{display:flex;flex-direction:column;gap:5px;font-size:10px}.selection-detail .hero-stats b{font:23px monospace;color:#e3d2ab}.selection-detail .hero-stats>span:last-child{display:none}.deploy-bottom{display:grid;grid-template-columns:1fr 1fr;gap:40px;align-items:end}.nickname-field .input-label{margin:0 0 9px;font-size:12px}.nickname-field input{height:51px}.deploy-action .primary,.coop-browser .primary{background:#dcc79a;color:#16261f;border-color:#dcc79a;border-radius:4px;min-height:51px}.deploy-action>p{font-size:10px;color:#93aa9e;margin:10px 0 0}.nickname-field{padding-bottom:23px}.room-browser-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:30px}.room-directory,.room-create{padding:25px;background:#10211b;border:1px solid #a3bd9c33;border-radius:5px}.room-browser-grid h3{font-size:22px;margin:12px 0}.room-browser-grid p:not(.eyebrow){font-size:11px;line-height:1.9;color:#a3b4a9}.room-list-heading{margin:0 0 20px;align-items:start}.coop-browser .public-rooms{max-height:340px;min-height:120px}.coop-browser .public-room{padding:17px 12px}.coop-browser .rooms-empty{padding:40px 12px}.coop-browser .public-option{margin:28px 0 16px;font-size:12px}.connection-footer{display:flex;align-items:center;gap:18px;margin-top:22px;font-size:11px;color:#baccb1}.connection-footer p{margin:0}.deploy-wizard button:focus-visible{outline:2px solid #ffe4a9;outline-offset:5px}#deployment-title:focus{outline:none}
@media(max-width:760px){.deploy-wizard{min-height:620px;padding:36px 18px 45px}.deploy-top h2{font-size:25px}.deploy-top p:not(.eyebrow){font-size:11px}.deploy-steps{gap:0;justify-content:space-between;margin-block:22px!important}.deploy-steps li{font-size:10px}.deploy-steps b{font-size:10px;margin-right:5px}.mode-cards{gap:12px}.mode-card{padding:18px 15px 0}.mode-art{height:135px;margin-bottom:10px}.mode-art img{height:160px;width:120px}.mode-squad img{height:130px;width:36%;margin-top:15px}.mode-squad img:nth-child(2){height:155px}.mode-card-number{font-size:9px;letter-spacing:1px}.mode-card>strong{font-size:20px}.mode-card>p{font-size:10px;line-height:1.8;margin:13px 0 19px}.mode-card-next{font-size:11px;padding-block:16px}.selection-toolbar{margin-bottom:18px}.selection-toolbar .text-button{font-size:10px}.selection-toolbar .visibility-badge{font-size:9px}.deploy-wizard .role-picker{gap:8px}.deploy-wizard .role .portrait{height:140px}.deploy-wizard .role{padding-bottom:12px}.deploy-wizard .role strong{font-size:13px;margin:8px 9px 5px}.deploy-wizard .role small{font-size:10px;margin-inline:9px}.deploy-wizard .role p{font-size:9px;margin:10px 9px 0}.role-tag{font-size:8px;margin:10px 9px 0;min-height:22px}.selection-detail{padding:14px 12px;gap:10px;margin-block:18px}.selection-detail>img{display:none}.selection-detail h3{font-size:17px}.selection-detail p{font-size:10px;max-width:190px}.selection-detail .hero-stats{gap:12px;flex-wrap:nowrap}.selection-detail .hero-stats b{font-size:20px}.selection-detail .hero-stats span{font-size:8px}.deploy-bottom{grid-template-columns:1fr;gap:18px}.nickname-field{padding:0}.room-browser-grid{grid-template-columns:1fr;gap:16px}.room-directory,.room-create{padding:18px}.room-browser-grid h3{font-size:20px}.connection-footer{display:block}.connection-footer p{margin-top:8px}}
@media(max-width:390px){.mode-cards{grid-template-columns:1fr}.mode-card{padding:20px}.mode-art{float:right;width:120px;height:120px;margin:0 -8px 0 8px}.mode-card-number{display:block;margin-bottom:12px}.mode-card>p{margin-bottom:12px}.mode-card-next{clear:both;padding-bottom:0}.deploy-wizard .role .portrait{height:112px}.deploy-wizard .role strong{font-size:12px}.deploy-wizard .role p{font-size:8px}.selection-detail .hero-stats{gap:8px}}

/* Tactical decisions and readable upgrade choices. */
.tactical-hud{position:fixed;left:22px;top:285px;width:255px;padding:12px 14px;background:#0c201be8;border:1px solid #a6c1a23d;border-radius:8px;font-size:11px;line-height:1.6;pointer-events:none}
.tactical-hud strong{color:#e9d09b}.tactical-hud p{margin:6px 0;color:#e4ebd5}.tactical-hud small{color:#a6bba9;font-size:10px}.tactical-hud #elite-status{color:#ffba92;margin-top:6px}
.ability-status{position:absolute;left:calc(50% - 155px);bottom:0;transform:translateX(-50%);width:145px;pointer-events:auto}.ability-status button{width:100%;padding:9px 8px;min-height:48px;background:#182e28;border-color:#b8d49b80}.ability-status small{display:block;font-size:10px;color:#bed1b0;margin-top:3px}.ability-status .bar{margin-top:5px}.ability-status button:disabled{opacity:.65}.ability-status #ability-fill{background:#93d9d7}
.build-guide{position:fixed;bottom:130px;left:22px;width:290px;max-height:40dvh;overflow:auto;pointer-events:auto;background:#0d211af5;border:1px solid #b1c69a55;border-radius:8px;font-size:11px;z-index:6}.build-guide summary{padding:11px 13px;cursor:pointer;color:#dce6c8}.evolution-item{padding:12px;border-top:1px solid #a6c1a22c}.evolution-item strong{color:#ead7ab}.evolution-item p{margin:7px 0;font-size:10px}.evolution-item small{font-size:10px;line-height:1.6;color:#adc0ad}.evolution-item.unlocked{background:#9dc79118}.evolution-item.unlocked strong{color:#c6efa1}
.upgrade-wrap{width:300px;max-height:calc(100dvh - 345px);pointer-events:auto}.choice-protection{font-size:10px;line-height:1.5;color:#c0d1b4;margin:6px 0}.reroll-button{width:100%;font-size:11px;padding:9px;margin:4px 0 10px;background:#1d3429;border-color:#c4d0a766}.choice-evolution{font-size:10px;line-height:1.7;color:#e4c897;padding:9px;background:#10251ded;border-radius:6px}.upgrade-card{min-height:120px}.upgrade-card small{font-size:11px;line-height:1.6;overflow-wrap:anywhere}.upgrade-heading h2{font-size:19px}
.result-panel{width:min(640px,100%)}#result-team>p{align-items:start;gap:12px;text-align:left}#result-team>p>span:last-child{text-align:right}#result-team small{font-size:11px;line-height:1.8;color:#b7cbb1}.result-threat{font-size:13px;line-height:1.8;color:#ebcca0}.weapon-report{text-align:left;border:1px solid #b8cd9c33;border-radius:7px;padding:12px;margin-top:10px}.weapon-report summary{cursor:pointer;color:#dce6c8;font-size:12px}.weapon-report>div{display:flex;justify-content:space-between;gap:10px;font-size:12px;margin-top:10px}.weapon-report p,.weapon-report small{font-size:11px;color:#adbfab;line-height:1.7}.result-tip{font-size:12px;line-height:1.8;color:#d5e3c3}.result-records{font-size:11px;line-height:1.8;border-top:1px solid #b8cd9c33;padding-top:12px;color:#c8d4b8}.selected-ability{color:#d8c598!important;font-size:11px!important;line-height:1.7;max-width:430px}
@media(max-width:1100px) and (min-width:761px){.tactical-hud{width:205px}.upgrade-wrap{width:265px}.build-guide{width:245px}.ability-status{left:calc(50% - 140px);width:125px}}
@media(max-width:760px){
 .tactical-hud{left:14px;top:235px;width:min(300px,calc(100vw - 28px));padding:8px 10px;font-size:10px}.tactical-hud small{font-size:9px}.tactical-hud p{margin:3px 0}.playing.choosing .tactical-hud{display:none}
 .ability-status{left:auto;right:0;bottom:205px;transform:none;width:88px}.ability-status button{padding:8px 3px;font-size:10px;min-height:52px}.ability-status kbd{display:none}.ability-status small{font-size:9px}
 .build-guide{left:14px;bottom:100px;width:170px;max-height:45dvh}.build-guide[open]{width:min(300px,calc(100vw - 28px));bottom:270px}.build-guide summary{padding:8px 10px;font-size:10px}.playing.choosing .build-guide{display:none}
 .upgrade-wrap{top:230px;left:14px;right:14px;width:auto;max-height:calc(100dvh - 480px);min-height:175px;overflow:auto;background:#0a1c17f5;padding:10px;border:1px solid #b6c8a655;border-radius:9px}.upgrade-heading h2{font-size:15px}.choice-protection{font-size:9px}.reroll-button{padding:7px;font-size:10px}.upgrade-card{padding:8px;min-height:146px}.upgrade-card small{font-size:10px;line-height:1.5}.upgrade-card strong{font-size:11px}.choice-evolution{font-size:9px}.upgrade-card>.skill-art{width:30px;height:30px}.selected-ability{font-size:9px!important;max-width:230px}
}
@media(max-width:760px) and (orientation:landscape){
 .tactical-hud{top:110px;width:210px}.ability-status{right:90px;bottom:100px}.dash-status{bottom:100px}.build-guide{bottom:80px}.build-guide[open]{bottom:80px}.upgrade-wrap{top:82px;left:auto;right:12px;width:260px;max-height:calc(100dvh - 105px);min-height:0}.upgrade-card{padding:10px 9px 10px 51px;min-height:90px}.upgrade-card>.skill-art{position:absolute;left:7px;top:28px;width:35px;height:35px}.playing.choosing .ability-status{right:285px}.playing.choosing .dash-status{right:285px;bottom:35px}
}
@media(pointer:coarse) and (min-width:761px){.ability-status{left:auto;right:0;bottom:225px;transform:none;width:130px}.ability-status kbd{display:none}}
/* Keep tactical panels clear of teammate cards and touch controls. */
@media(min-width:761px){.squad-play .tactical-hud{top:350px}.build-guide{bottom:170px}}
@media(max-width:760px) and (orientation:portrait){
 .squad-play .tactical-hud{left:auto;right:14px;top:240px;width:calc(100vw - 155px);max-width:260px}
 .ability-status{right:90px;bottom:135px}
 .build-guide{bottom:280px}.build-guide[open]{bottom:280px}
 .upgrade-heading{align-items:flex-start;flex-direction:column}.upgrade-heading p{font-size:10px}.upgrade-heading h2{font-size:14px}
}
#result{align-items:start}.result-panel{margin:auto}
/* The pale trailing bar briefly shows how much health the last hit removed. */
#player-hud .health-bar{position:relative}#player-fill{position:relative}
#player-hud .health-loss{position:absolute;left:0;top:0;background:#ffdbb8;opacity:.75;transition:width .2s ease-out}
#player-hud.critical{box-shadow:0 0 25px #a22c253b,inset 0 0 15px #b13a211a}
#player-hud.danger{border-color:#ffad98;background:#391820f2}#player-hud.danger #player-health{color:#ffccbd}#player-hud.danger #player-status{color:#ffcab7;font-weight:600}
/* Field instruments: readable hierarchy, an amber supply channel, and restrained contrast. */
.tactical-hud{width:268px;top:245px;padding:14px;background:linear-gradient(145deg,#10271cf2,#0a1c18ed);border:1px solid #b4c7a14d;box-shadow:0 10px 35px #0003,inset 0 1px #e4eccc0a;font-size:12px;line-height:1.55}
.tactical-heading{display:flex;align-items:center;justify-content:space-between;padding-bottom:9px;margin-bottom:9px;border-bottom:1px solid #bdd2a826;color:#dbe5c9;font-size:11px;letter-spacing:1px}.tactical-heading b{font:8px monospace;letter-spacing:2px;color:#92bf95}.tactical-heading b:before{content:'●';margin-right:5px}
#assault-status{display:block;font-size:13px;font-weight:600;color:#e2eacb}#tactical-map{display:block;width:100%;height:112px;margin:12px 0;border:1px solid #b4c7a124;border-radius:4px;opacity:.9}
.supply-heading{display:flex;gap:8px;justify-content:space-between;align-items:center;color:#dfbf83;font-size:11px}.supply-heading strong{font-size:10px;font-weight:500;color:#aec1a9}#supply-region{font-weight:600;font-size:12px;margin:5px 0 9px;color:#e8d8af}.tactical-hud #mission-status{font-size:11px;margin:5px 0;color:#b2c2ad}.tactical-hud #mission-reward{font-size:10px;color:#93aa98}.tactical-hud.supply-active{border-color:#d7b57888;box-shadow:0 8px 30px #0003,inset 3px 0 #e6c37a}.supply-active .supply-heading strong{color:#ffe0a0}
.supply-reward{position:fixed;left:50%;bottom:110px;transform:translateX(-50%);max-width:calc(100vw - 32px);padding:13px 22px;background:#193326f5;border:1px solid #edd08d99;border-radius:8px;color:#fff0c7;font-size:14px;font-weight:600;text-align:center;box-shadow:0 6px 35px #0005;pointer-events:none}
.health-panel small{font-size:11px}#tower-status{font-size:11px}.upgrade-card{box-shadow:0 4px 16px #0003;border-color:#d8ddb95c}.upgrade-card:hover{border-color:#e6d394;background:#263e2c}.upgrade-card:focus-visible{outline:2px solid #f4de9a;outline-offset:2px}.upgrade-heading{border-color:#b2c59a44}.ability-status button{border-color:#a6d4bd88}.ability-status button:not(:disabled){box-shadow:inset 0 1px #e5ffd21a,0 0 18px #8ec89912}
@media(min-width:761px){.squad-play .tactical-hud{top:355px}.tactical-hud{max-height:calc(100dvh - 440px);overflow:hidden}.squad-play #tactical-map{height:85px}}
@media(max-width:760px){
 .tactical-hud{top:232px;width:calc(100vw - 28px);padding:9px 11px;font-size:11px;max-width:310px}#tactical-map,.tactical-heading{display:none}#assault-status{font-size:11px;margin-bottom:6px}.supply-heading{font-size:10px}.supply-heading strong{font-size:9px}#supply-region{font-size:11px;margin:2px 0 5px}.tactical-hud #mission-status{font-size:9px}.tactical-hud #mission-reward{display:none}.tactical-hud #elite-status{font-size:10px}.squad-play .tactical-hud{top:235px}.supply-reward{bottom:135px;font-size:12px;padding:10px 14px}.health-panel small,#tower-status{font-size:9px}
}
@media(max-height:760px) and (min-width:761px){#tactical-map{display:none}.tactical-hud{max-height:none;top:215px}.squad-play .tactical-hud{top:340px}.tactical-heading{display:none}}
@media(max-width:760px) and (orientation:landscape){.tactical-hud{top:205px;max-width:220px;padding:7px 10px}.tactical-hud #mission-status{display:none}.supply-reward{bottom:70px}.squad-play .tactical-hud{top:225px}}
/* Keep the parachute visible above the player while retaining the next threat forecast. */
@media(max-width:760px) and (orientation:portrait){
 .tactical-hud.supply-descending{top:205px;display:grid;grid-template-columns:1fr auto;gap:1px 8px;padding:7px 10px}
 .supply-descending .supply-heading{grid-column:2;grid-row:1}.supply-descending .supply-heading>span{display:none}
 .supply-descending #supply-region{grid-column:1;grid-row:1;margin:0}.supply-descending #assault-status{grid-column:1 / -1;grid-row:2;margin:0;font-size:9px}
 .supply-descending #mission-status{display:none}.supply-descending #elite-status{grid-column:1 / -1;font-size:9px}.supply-descending #elite-status:empty{display:none}
}
/* Short landscape screens include phones wider than the portrait breakpoint. */
@media(max-height:540px) and (max-width:1100px) and (orientation:landscape){
 .topbar{height:43px;padding:0 14px}.topbar .brand strong{font-size:20px}.header-actions button{padding:6px;font-size:9px}.brand-sub{display:none}
 .health-panel,#tower-hud{top:49px;padding:8px;border-radius:8px}.health-panel{left:12px;width:190px;gap:7px}.health-panel>img{width:30px;height:36px}.health-panel small,#tower-status{font-size:8px;margin-top:3px}.health-heading{font-size:10px}.health-panel .health-main{min-width:0}#tower-hud{left:46%;right:auto;transform:translateX(-50%);width:200px;min-height:0}#tower-health{font-size:10px}
 .round-top{top:49px;right:12px;gap:12px}.round-top .objective{display:none}.timer strong{font-size:30px}.kill-counter strong{font-size:24px}.xp{top:139px;left:46%;transform:translateX(-50%);width:200px;font-size:9px}#boss-hud{top:160px;left:46%;right:auto;transform:translateX(-50%);width:210px;font-size:10px}.team{left:12px;top:130px;width:125px}.team-member{padding:6px;font-size:9px}.team-member .health-text{font-size:9px}
 .tactical-hud,.squad-play .tactical-hud{left:auto;right:12px;top:145px;width:235px;padding:9px 11px;max-height:155px;font-size:10px}.tactical-heading,#tactical-map,.tactical-hud #mission-reward{display:none}.tactical-hud #mission-status{font-size:9px}#assault-status{font-size:11px}.tactical-hud #supply-region{font-size:11px}
 .bottom-hud{left:12px;right:12px;bottom:12px}#loadout{max-width:210px;max-height:54px;gap:4px}.weapon-slot{width:38px;height:46px}.weapon-slot>.skill-art{width:28px;height:28px}.weapon-slot small{font-size:6px}.bottom-hud .eyebrow{font-size:8px;margin-bottom:4px}
 .dash-status{left:auto;right:0;bottom:70px;transform:none;width:76px}.ability-status{left:auto;right:90px;bottom:70px;transform:none;width:95px}.ability-status button{font-size:11px;padding:7px;min-height:45px}.ability-status small{font-size:9px}.ability-status kbd{display:none}.build-guide,.build-guide[open]{left:12px;bottom:80px;width:180px;max-height:180px}.build-guide summary{padding:7px 10px;font-size:10px}#joystick{left:16px;bottom:78px;width:92px;height:92px}#joystick>div{left:26px;top:26px}
 .wave-banner{top:115px;font-size:11px}.supply-reward{bottom:80px;font-size:11px;padding:8px 12px}
 .playing.choosing .tactical-hud,.playing.choosing .team,.playing.choosing .build-guide,.playing.choosing .wave-banner{display:none}.playing.choosing .dash-status{right:300px;bottom:15px}.playing.choosing .ability-status{right:300px;bottom:85px}.playing.choosing #boss-hud{left:46%;width:190px}
 .upgrade-wrap{top:50px;left:auto;right:10px;width:278px;max-height:calc(100dvh - 65px);min-height:0;padding:8px;overflow:auto;background:#0b2119f5;border:1px solid #c9d5a655;border-radius:8px}.upgrade-heading{display:block;padding:6px 8px}.upgrade-heading h2{font-size:14px;margin:3px 0}.upgrade-heading .eyebrow{display:none}.upgrade-heading p{font-size:9px;margin:0}.choice-protection{font-size:9px;margin:5px 0}.reroll-button{font-size:10px;padding:6px;margin:2px 0 5px}#upgrade-cards{grid-template-columns:1fr;gap:5px}.upgrade-card{min-height:82px;padding:8px 8px 8px 52px}.upgrade-card>.skill-art{position:absolute;top:28px;left:8px;width:34px;height:34px}.upgrade-card strong{font-size:11px}.upgrade-card small{font-size:10px;line-height:1.4}.upgrade-card em{font-size:7px;margin-top:4px}.choice-evolution{font-size:9px;padding:6px}
}

/* Landing page and deployment modal */
/* Landing and deployment share the same quiet forest / warm brass palette. */
.menu-active{--landing-ink:#e9e7d5;--landing-muted:#a2b3a9;--landing-gold:#dec798}
.menu-active .topbar{height:82px;padding-inline:5%;z-index:12}
.landing-nav{gap:26px;letter-spacing:0;font-size:12px}
.landing-nav .nav-play{padding:10px 17px;border:1px solid #dac59170;border-radius:3px;color:#f0dfb8;background:#13231a70;font-size:12px}
.landing-hero{min-height:760px;max-height:1000px}
.landing-atmosphere{background:linear-gradient(90deg,#071013dd 0%,#07101370 38%,#07101308 72%),linear-gradient(0deg,#090f10,transparent 45%)}
.hero-content{padding-block:130px 110px}
.hero-content h1{font-size:clamp(110px,11vw,160px)}
.hero-description{font-size:14px;line-height:2;color:#c0cbc6}
.hero-content>.eyebrow{display:flex;align-items:center;gap:10px;letter-spacing:3px;font-size:10px}
.live-spark{width:5px;height:5px;background:#e5ce92;box-shadow:0 0 15px #e5ce92;border-radius:50%}
.hero-actions button,.boss-content>.landing-primary,.final-call>.landing-primary{display:flex;align-items:center;justify-content:space-between;gap:35px;min-width:195px;min-height:54px;padding:15px 23px;border-radius:3px;font-size:14px;border:1px solid #d8c397;transition:background .2s,transform .2s}
.hero-platform{font-size:11px;margin-top:21px}
.hero-bottom{bottom:28px}
.landing-facts{display:grid;grid-template-columns:repeat(4,1fr);max-width:1160px;margin:auto;padding:38px 0;border-bottom:1px solid #d1c7a72a;gap:24px}
.landing-facts>div{display:flex;align-items:center;justify-content:center;gap:17px;border-right:1px solid #d1c7a72a}
.landing-facts>div:last-child{border:0}.landing-facts strong{font:30px ui-monospace,monospace;letter-spacing:-1px;color:#d9cda9}.landing-facts>div:last-child strong{font:19px system-ui}
.landing-facts span{font-size:11px;line-height:1.6;color:#a1b0a4;max-width:65px}
.story-section,.landing-section{max-width:1300px;margin:auto;padding:105px 65px}
.story-heading{margin-bottom:50px}.story-heading h2,.section-intro h2,.faq-section h2{font-size:38px;line-height:1.4;letter-spacing:-1.4px;font-weight:500;margin:16px 0 0;color:#e5e9da}
.story-heading>p,.section-intro>p{font-size:13px;line-height:2;color:#a1b3a7}
.feature-grid{gap:30px}.feature{padding-top:22px}.feature-number{font-size:10px}.feature-art{height:200px}
.feature h3{font-size:21px;line-height:1.5}.feature>p{font-size:13px;line-height:1.9}
.section-intro{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-bottom:48px}
.section-intro .eyebrow,.faq-section .eyebrow{font-size:10px;letter-spacing:2.6px;color:#cbb583}
.section-intro h2 em,.faq-section h2 em{font-style:normal;color:#93a99d}
.section-intro>p{margin:0}.survivors-section{border-top:1px solid #d1c7a723}
.survivor-roster{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.survivor-profile{min-width:0;background:#101e19;border:1px solid #b1c39b2c;border-radius:4px;overflow:hidden}
.profile-portrait{height:300px;position:relative;overflow:hidden;background:radial-gradient(ellipse at center,#465244,#10201b 80%)}
.profile-portrait:after{content:'';position:absolute;inset:0;background:linear-gradient(0deg,#101e19 0%,transparent 50%)}
.profile-portrait>img{width:100%;height:122%;object-fit:cover;object-position:center 20%;transition:transform .5s}
.survivor-profile:hover .profile-portrait>img{transform:scale(1.035)}
.profile-no{position:absolute;top:20px;left:22px;font:10px monospace;letter-spacing:1.5px;z-index:1;color:#d8caa4}
.profile-label{position:absolute;bottom:13px;left:24px;z-index:1;color:#e0c995;font-size:10px;border-left:2px solid #dac492;padding-left:8px}
.profile-copy{padding:17px 24px 0}.profile-copy>.eyebrow{font-size:9px;letter-spacing:.5px;color:#a0b59e}
.profile-copy h3{font-size:28px;letter-spacing:-1px;margin:11px 0 17px;font-weight:500}
.profile-copy>p:not(.eyebrow){font-size:12px;line-height:1.9;color:#9fb1a6;min-height:46px}
.profile-ability{display:flex;align-items:center;gap:12px;margin:23px 0;color:#98aea3;font-size:11px}
.profile-ability kbd{margin:0;width:33px;height:35px;display:grid;place-items:center;font-size:14px;background:#c0caa90a;border-color:#b5c3a13d;border-radius:4px;color:#d5c798}
.profile-ability b{display:block;margin-bottom:5px;font-size:12px;font-weight:500;color:#d5deca}
.profile-play{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;min-height:57px;padding:15px 0;border:0;border-top:1px solid #a5bc9733;border-radius:0;background:none;color:#e3d3ac;font-size:12px}
.profile-play:hover{color:#fff0c4;background:#adc78a08}
.arsenal-section{border-block:1px solid #d1c7a723;background:radial-gradient(ellipse at 50% 45%,#21362b65,transparent 75%),#0d1715}
.evolution-showcase{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.evolution-card{padding:22px 26px 0;border:1px solid #a8bbc039;border-radius:5px;overflow:hidden;background:#101e22}
.storm-build{background:#191e2a;border-color:#afa5ce39}.guardian-build{background:#1c251d;border-color:#b6c39b39}
.recipe-art{height:170px;display:flex;align-items:center;justify-content:center;gap:12px;background:radial-gradient(ellipse,#92ddea20,transparent 72%)}
.storm-build .recipe-art{background:radial-gradient(ellipse,#bfa3ff20,transparent 72%)}.guardian-build .recipe-art{background:radial-gradient(ellipse,#e0de9020,transparent 72%)}
.recipe-art .skill-art{width:90px;height:90px;filter:drop-shadow(0 7px 20px #0008)}.recipe-art b{font-size:18px;font-weight:300;color:#d9e5d46b}
.recipe-tag{font:9px monospace;letter-spacing:1.6px;color:#96cbd0}.storm-build .recipe-tag{color:#c4adea}.guardian-build .recipe-tag{color:#cccd9b}
.evolution-card h3{font-size:25px;font-weight:500;letter-spacing:-.7px;margin:12px 0}
.evolution-card>p{font-size:12px;line-height:1.9;color:#a4b7ae;margin-bottom:25px}
.recipe-line{margin-inline:-26px;padding:17px 18px;background:#010c092b;border-top:1px solid #c9d8ce19;font-size:10px;text-align:center;color:#d2dec9}.recipe-line>span{padding:0 7px;color:#879d8b}
.section-tail{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:30px}.section-tail p{font-size:11px;color:#8fa497}
.text-cta{padding:12px 0;border:0;background:none;color:#d8c49b;font-size:12px}.text-cta span{margin-left:25px}
.night-timeline{list-style:none;display:grid;grid-template-columns:repeat(4,1fr);padding:15px 0 0;gap:0;margin:0}
.night-timeline>li{position:relative;padding-right:26px}.timeline-time{display:block;font:25px monospace;letter-spacing:-1px;color:#d5c49b;margin-bottom:22px}
.timeline-dot{position:relative;display:block;height:1px;background:#c8c1a742;margin-bottom:28px}.timeline-dot:before{content:'';position:absolute;width:7px;height:7px;top:-3px;left:0;transform:rotate(45deg);background:#cabc8c;box-shadow:0 0 17px #e3c98644}
.night-timeline h3{font-size:17px;font-weight:500;line-height:1.5;margin:0 0 12px}.night-timeline p{font-size:12px;color:#92a99a;line-height:1.9;margin:0}
.field-notes{display:grid;grid-template-columns:1fr 1fr;gap:65px;padding:37px 42px;background:#13231c;border:1px solid #b9cda22b;margin-top:60px;border-radius:4px}
.field-notes>div>span{font:9px monospace;letter-spacing:2px;color:#b5c594}.field-notes h3{font-size:27px;font-weight:500;line-height:1.45;letter-spacing:-.7px;margin:14px 0}
.field-notes>div>p:not(.eyebrow){font-size:12px;line-height:1.9;color:#9eb19f;max-width:400px}
.control-guide .eyebrow{font-size:11px;color:#d5d9ba;letter-spacing:0}.control-guide dl{display:grid;grid-template-columns:1fr 1fr;gap:20px 18px;margin:24px 0}
.control-guide dl>div{display:flex;flex-direction:column;gap:12px}.control-guide dt{height:24px}.control-guide kbd{margin:0;padding:7px 9px;border-radius:3px;color:#dbcea7;background:#b9cba008}
.control-guide dd{margin:0;color:#a9bda5;font-size:11px}.control-guide>small{font-size:10px;color:#879d8b}
.boss-section{position:relative;min-height:590px;overflow:hidden;display:flex;align-items:center;background:#19231e}
.boss-section>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:75% 35%;filter:saturate(.65)}
.boss-veil{position:absolute;inset:0;background:linear-gradient(90deg,#0a1716ed 5%,#0a1716a1 45%,#0a171608),linear-gradient(0deg,#091210b0,transparent 40%,#09121055)}
.boss-content{position:relative;max-width:1300px;width:100%;margin:auto;padding:80px 65px}.boss-content>.eyebrow{color:#e1b791;letter-spacing:3px;font-size:10px}
.boss-content h2{font:500 46px/1.35 system-ui;letter-spacing:-1.8px;margin:23px 0;color:#f3e8cd}.boss-content>p:not(.eyebrow){font-size:14px;line-height:2;color:#b7c5b8}
.boss-patterns{display:flex;gap:8px;flex-wrap:wrap;margin:24px 0 35px}.boss-patterns span{border:1px solid #d0c5a344;border-radius:2px;padding:7px 10px;font-size:10px;color:#d1c5a8;background:#0c1b1670}
.faq-section{display:grid;grid-template-columns:.75fr 1.25fr;gap:70px}.faq-section>div>p:not(.eyebrow){font-size:13px;line-height:1.9;color:#97ac9d;margin-top:24px}
.faq-list{border-top:1px solid #bbc5a738}.faq-list details{border-bottom:1px solid #bbc5a72d}.faq-list summary{display:flex;justify-content:space-between;align-items:center;list-style:none;cursor:pointer;padding:25px 0;font-size:15px;color:#dce3cc;gap:15px}
.faq-list summary::-webkit-details-marker{display:none}.faq-list summary>span{color:#c7b58d;font-size:19px;font-weight:300}.faq-list details[open] summary>span{transform:rotate(45deg)}
.faq-list details>p{font-size:13px;line-height:1.95;color:#a2b7a5;max-width:540px;padding:0 30px 22px 0;margin:0}
.final-call{position:relative;isolation:isolate;overflow:hidden;text-align:center;padding:85px 25px 90px;background:radial-gradient(ellipse at 50% 100%,#36533c70,transparent 65%),#111e18;border-top:1px solid #b5c2992d}
.final-seal{position:absolute;z-index:-1;top:20px;left:50%;transform:translateX(-50%);font:300px/1.2 serif;letter-spacing:30px;color:#ced8a406;white-space:nowrap}
.final-call>.eyebrow{font-size:10px;letter-spacing:3px;color:#cab785}.final-call h2{font-size:47px;line-height:1.35;letter-spacing:-1.7px;font-weight:500;margin:22px 0 17px}
.final-call>p:not(.eyebrow){font-size:13px;color:#b3c1aa}.final-call>.landing-primary{margin:29px auto 18px;min-width:245px}.final-call>small{font-size:10px;color:#849e8a}
#menu-footer{display:flex;gap:25px;flex-wrap:wrap;justify-content:space-between;padding:29px 5%;line-height:1.8}#menu-footer nav{display:flex;gap:22px}#menu-footer nav a{color:#9eb2a1;text-decoration:none;font-size:10px}
.menu button:focus-visible,.menu a:focus-visible,.faq-list summary:focus-visible,.landing-nav button:focus-visible{outline:2px solid #f5d99c;outline-offset:5px}

/* Native dialog handles keyboard focus and makes the landing behind it inert. */
body.deployment-open{overflow:hidden}
#deployment-modal{width:min(930px,calc(100vw - 48px));max-width:none;max-height:calc(100dvh - 48px);padding:0;border:1px solid #c3be9559;border-radius:12px;background:#102019;color:#e1e7cd;box-shadow:0 30px 100px #0009;overflow:hidden}
#deployment-modal[open]{display:flex;flex-direction:column}
#deployment-modal::backdrop{background:#030b0bd6;backdrop-filter:blur(9px)}
.modal-topline{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;min-height:58px;padding:0 28px;border-bottom:1px solid #b7c8a321;background:#12231c}
.modal-brand{color:#dcc69c;text-decoration:none;font-family:serif;font-size:22px;letter-spacing:2px}.modal-brand span{font:9px monospace;color:#8da393;letter-spacing:2px;margin-left:14px}
.modal-close{display:flex;align-items:center;gap:12px;font-size:11px;color:#c0c9b4;border:0;padding:9px 0 9px 13px;background:none}.modal-close>span{font-size:23px;font-weight:300}
.modal-close:focus-visible{outline:2px solid #efd3a1;outline-offset:4px}
.deployment-scroll{overflow:auto;overscroll-behavior:contain;min-height:0;scrollbar-width:thin;scrollbar-color:#758665 #14231c}
#deployment-modal .deployment-section{padding:27px 32px 30px;border:0;background:radial-gradient(ellipse at 15% 20%,#314c3438,transparent 60%),#102019;min-height:0}
#deployment-modal .deploy-top h2{font-size:27px;margin:9px 0 8px;letter-spacing:-1px}
#deployment-modal .deploy-top .eyebrow{font-size:9px;letter-spacing:2px;color:#bea875}
#deployment-modal .deploy-top p:not(.eyebrow){font-size:12px;margin:0}
#deployment-modal .deploy-steps{gap:30px;margin-block:16px 22px!important}#deployment-modal .deploy-steps li{padding:12px 0;font-size:11px}
#deployment-modal .mode-card{padding:22px 24px 0;border-radius:6px;background:linear-gradient(145deg,#294133,#15261e)}
#deployment-modal .mode-art{height:145px;margin:0 0 10px}#deployment-modal .mode-art img{height:185px;width:145px}#deployment-modal .mode-squad img{height:150px;width:31%;margin-top:20px}#deployment-modal .mode-squad img:nth-child(2){height:180px;margin-top:0}
#deployment-modal .mode-card>strong{font-size:25px}#deployment-modal .mode-card>p{font-size:12px;line-height:1.8;margin:11px 0 18px}#deployment-modal .mode-card-next{padding:15px 0;font-size:12px}
#deployment-modal .selection-toolbar{margin-bottom:15px}#deployment-modal .role-picker{gap:12px}#deployment-modal .role{padding-bottom:13px}
#deployment-modal .role .portrait{height:150px}#deployment-modal .role strong{font-size:19px;margin:8px 15px 4px}#deployment-modal .role small{font-size:11px;margin-inline:15px}#deployment-modal .role p{font-size:11px;margin:8px 15px 0}
#deployment-modal .role-tag{font-size:9px;margin:11px 15px 0}#deployment-modal .selection-detail{margin:17px 0;padding:13px 17px;gap:15px}#deployment-modal .selection-detail>img{width:45px;height:57px}
#deployment-modal .selection-detail h3{font-size:18px;margin:6px 0}#deployment-modal .selected-ability{font-size:10px!important;max-width:430px}
#deployment-modal .selection-detail .hero-stats b{font-size:20px}#deployment-modal .selection-detail .hero-stats{gap:16px}#deployment-modal .deploy-bottom{gap:24px}#deployment-modal .nickname-field{padding-bottom:22px}
#deployment-modal .room-browser-grid{gap:18px}#deployment-modal .room-directory,#deployment-modal .room-create{padding:19px;background:#091b13}
#deployment-modal .room-browser-grid h3{font-size:20px}#deployment-modal .connection-footer{margin-top:16px;font-size:10px}
#deployment-modal #lobby{position:static;display:block;inset:auto;padding:0;min-height:0;background:transparent}
#deployment-modal #lobby[hidden]{display:none}
#deployment-modal .lobby-panel{width:auto;margin:0;border:0;border-radius:0;padding:30px 32px;background:#102019;box-shadow:none;backdrop-filter:none}
#deployment-modal .lobby-panel h2{font-size:27px;margin:15px 0}#deployment-modal .lobby-players{margin:24px 0;gap:15px}#deployment-modal .lobby-member{min-height:205px}#deployment-modal .lobby-member img{height:135px}
#deployment-modal .lobby-controls{gap:20px}#deployment-modal .lobby-panel>.primary{margin-top:18px;background:#ddc79a;color:#14241b;border-color:#ddc79a}
.deployment-error{margin:0;padding:12px 28px;border-top:1px solid #da997445;background:#47241f;color:#ffdac3;font-size:12px;line-height:1.7;flex-shrink:0}
@media(min-width:761px) and (max-height:760px){#deployment-modal{max-height:calc(100dvh - 28px)}#deployment-modal .role .portrait{height:115px}#deployment-modal .mode-art{height:100px}#deployment-modal .mode-art img{height:140px}#deployment-modal .mode-squad img{height:120px;margin-top:10px}#deployment-modal .mode-squad img:nth-child(2){height:140px}#deployment-modal .deploy-top h2{font-size:25px}}
@media(max-width:1100px){.landing-nav{gap:18px}.story-section,.landing-section{padding:80px 5%}.landing-facts{margin-inline:5%}.landing-facts>div{gap:12px}.landing-facts strong{font-size:25px}.landing-facts>div:last-child strong{font-size:15px}.section-intro h2,.story-heading h2,.faq-section h2{font-size:32px}.section-intro>p{font-size:12px}.profile-portrait{height:260px}.profile-copy{padding-inline:19px}.profile-copy h3{font-size:25px}.recipe-art .skill-art{width:70px;height:70px}.evolution-card{padding-inline:20px}.recipe-line{margin-inline:-20px;font-size:9px}.night-timeline h3{font-size:15px}.field-notes{gap:30px;padding:30px}.boss-content{padding:75px 5%}.faq-section{gap:40px}}
@media(max-width:760px){
 .menu-active .topbar{height:65px;padding-inline:20px;gap:10px}.menu-active .brand-sub{display:none}.menu-active .landing-nav{display:flex;margin-left:auto}.landing-nav>a{display:none}.landing-nav .nav-play{font-size:10px;padding:8px 10px}.menu-active .header-actions #sound{display:none}.menu-active .header-actions{gap:0}.menu-active .header-actions button{padding:7px 9px}
 .landing-hero{min-height:710px;max-height:900px}.hero-content{padding:120px 25px 100px}.hero-content h1{font-size:108px}.hero-content>.eyebrow{font-size:8px;letter-spacing:2px}.hero-description{font-size:12px}.hero-tagline{font-size:21px}.hero-actions button{min-width:0;min-height:51px;font-size:12px;gap:20px;padding:13px 16px}.hero-platform{font-size:10px}
 .landing-facts{grid-template-columns:1fr 1fr;padding:25px 0;gap:25px 10px;margin-inline:25px}.landing-facts>div{justify-content:start;gap:14px;padding-left:5px}.landing-facts>div:nth-child(2){border:0}.landing-facts span{font-size:10px;max-width:62px}.landing-facts strong{font-size:25px}.landing-facts>div:last-child strong{font-size:16px}
 .story-section,.landing-section{padding:64px 25px}.story-heading h2,.section-intro h2,.faq-section h2{font-size:29px;line-height:1.45}.story-heading>p,.section-intro>p{font-size:12px;line-height:1.9;margin-top:23px}.section-intro{display:block;margin-bottom:32px}.section-intro .eyebrow,.faq-section .eyebrow{font-size:9px;letter-spacing:2px}
 .feature-grid{gap:28px}.feature h3{font-size:18px}.feature>p{font-size:11px}.feature-art{height:135px}.feature-number{font-size:9px}
 .survivor-roster{grid-template-columns:1fr;gap:20px}.survivor-profile{display:grid;grid-template-columns:40% 60%}.profile-portrait{height:100%;min-height:302px}.profile-portrait>img{height:100%;width:155%;max-width:none;position:absolute;left:-30%;object-position:center 15%}.profile-portrait:after{background:linear-gradient(90deg,transparent,#101e1933),linear-gradient(0deg,#101e19,transparent 45%)}.profile-no{font-size:8px;left:12px;top:16px;letter-spacing:.5px}.profile-label{font-size:8px;left:12px;bottom:19px;max-width:90%;line-height:1.6}.profile-copy{padding:20px 17px 0 12px}.profile-copy>.eyebrow{font-size:8px;line-height:1.7}.profile-copy h3{font-size:24px;margin-block:10px 12px}.profile-copy>p:not(.eyebrow){font-size:11px;line-height:1.9}.profile-copy>p br{display:none}.profile-ability{gap:8px;margin:18px 0;font-size:9px}.profile-ability b{font-size:11px}.profile-ability kbd{width:26px;height:29px;font-size:12px;flex-shrink:0}.profile-play{font-size:11px;min-height:50px}
 .evolution-showcase{grid-template-columns:1fr;gap:17px}.evolution-card{display:grid;grid-template-columns:1fr 100px;padding:24px 22px 0;column-gap:12px}.recipe-art{grid-column:2;grid-row:1 / 4;height:130px;align-self:center;gap:0}.recipe-art .skill-art{width:50px;height:50px}.recipe-art b{font-size:11px}.recipe-tag{font-size:8px;letter-spacing:1px}.evolution-card h3{font-size:23px;margin:10px 0}.evolution-card>p{font-size:11px;margin:0 0 20px}.recipe-line{grid-column:1 / -1;font-size:10px;margin-inline:-22px;padding:14px 10px}.section-tail{display:block;margin-top:21px}.section-tail p{font-size:10px}.text-cta{font-size:12px}
 .night-timeline{grid-template-columns:1fr;padding-top:0}.night-timeline>li{display:grid;grid-template-columns:76px 1fr;column-gap:22px;padding:0 0 30px 0}.timeline-time{grid-column:1;grid-row:1;font-size:20px;margin:0;line-height:1.6}.timeline-dot{grid-column:1;grid-row:2;position:absolute;left:9px;top:45px;bottom:4px;height:auto;width:1px;margin:0}.timeline-dot:before{left:-3px;top:0}.night-timeline>li:last-child .timeline-dot{display:none}.night-timeline h3{grid-column:2;margin:4px 0 10px;font-size:17px}.night-timeline p{grid-column:2;font-size:12px}.night-timeline p br{display:none}
 .field-notes{grid-template-columns:1fr;gap:27px;margin-top:8px;padding:25px}.field-notes h3{font-size:25px}.control-guide{border-top:1px solid #c1d0a527;padding-top:23px}.control-guide dl{gap:22px 12px}.control-guide>small{font-size:9px}
 .boss-section{min-height:560px}.boss-section>img{object-position:70% center}.boss-veil{background:linear-gradient(90deg,#081616db,#08161662),linear-gradient(0deg,#091210ba,transparent)}.boss-content{padding:65px 25px}.boss-content h2{font-size:35px;letter-spacing:-1px}.boss-content>p:not(.eyebrow){font-size:12px}.boss-content>.eyebrow{font-size:8px;letter-spacing:2px}.boss-content>.landing-primary{min-height:50px;font-size:12px;min-width:190px}
 .faq-section{grid-template-columns:1fr;gap:30px}.faq-section>div>p:not(.eyebrow){font-size:12px}.faq-list summary{font-size:13px;padding:22px 0}.faq-list details>p{font-size:12px;padding-right:5px}
 .final-call{padding:70px 25px}.final-call h2{font-size:37px}.final-call>.landing-primary{min-width:225px;font-size:13px}.final-seal{font-size:200px;letter-spacing:10px;top:60px}#menu-footer{padding:25px;gap:20px}#menu-footer>span:nth-child(2){display:none}#menu-footer nav{gap:17px;width:100%}
 #deployment-modal{width:calc(100vw - 20px);max-height:calc(100dvh - 20px);border-radius:12px}.modal-topline{padding:0 18px;min-height:52px}.modal-brand{font-size:19px}.modal-brand span{font-size:8px}.modal-close{font-size:10px}
 #deployment-modal .deployment-section{padding:22px 18px 25px}#deployment-modal .deploy-top h2{font-size:23px;line-height:1.45}#deployment-modal .deploy-top p:not(.eyebrow){font-size:11px}#deployment-modal .deploy-steps{gap:0;justify-content:space-between;margin-block:14px 19px!important}#deployment-modal .deploy-steps li{font-size:9px;padding-block:11px}#deployment-modal .deploy-steps b{font-size:9px;margin-right:5px}
 #deployment-modal .mode-cards{grid-template-columns:1fr;gap:13px}#deployment-modal .mode-card{padding:18px 18px 0;min-height:0}#deployment-modal .mode-art{float:right;width:100px;height:100px;margin:0 -5px 0 10px}#deployment-modal .mode-art img{height:130px;width:100px}#deployment-modal .mode-squad img{height:105px;width:34%;margin-top:8px}#deployment-modal .mode-squad img:nth-child(2){height:125px;margin-top:0}#deployment-modal .mode-card-number{font-size:9px;display:block;margin-bottom:10px}#deployment-modal .mode-card>strong{font-size:22px}#deployment-modal .mode-card>p{font-size:10px;margin-block:9px 15px}#deployment-modal .mode-card-next{clear:both;padding:12px 0;font-size:11px}
 #deployment-modal .role-picker{gap:7px}#deployment-modal .role .portrait{height:106px}#deployment-modal .role strong{font-size:13px;margin:7px 8px 5px}#deployment-modal .role small{font-size:9px;margin-inline:8px}#deployment-modal .role p{display:none}#deployment-modal .role-tag{font-size:8px;min-height:26px;line-height:1.5;margin:9px 8px 0}#deployment-modal .role{padding-bottom:10px}
 #deployment-modal .selection-toolbar .visibility-badge{font-size:9px}#deployment-modal .selection-detail{padding:13px 12px;gap:12px}#deployment-modal .selection-detail>img{display:none}#deployment-modal .selection-detail h3{font-size:17px}#deployment-modal .selection-detail .hero-stats{gap:9px}#deployment-modal .selection-detail .hero-stats b{font-size:18px}#deployment-modal .selected-ability{font-size:10px!important;max-width:210px}#deployment-modal .selection-detail #selected-detail{display:none}#deployment-modal .nickname-field{padding:0}#deployment-modal .deploy-bottom{gap:17px}#deployment-modal .deploy-action>p{font-size:9px}
 #deployment-modal .room-browser-grid{grid-template-columns:1fr}#deployment-modal .room-directory,#deployment-modal .room-create{padding:17px}#deployment-modal .public-rooms{max-height:200px}#deployment-modal .connection-footer p{font-size:10px}#deployment-modal .lobby-panel{padding:23px 18px}#deployment-modal .lobby-panel h2{font-size:23px;line-height:1.5}#deployment-modal .lobby-players{gap:7px}#deployment-modal .lobby-member{min-height:170px}#deployment-modal .lobby-member img{height:100px}#deployment-modal .lobby-controls{gap:15px}.deployment-error{padding:11px 18px;font-size:11px}
}
@media(max-width:370px){.menu-active .topbar{padding-inline:14px}.hero-content{padding-inline:20px}.hero-actions{gap:7px}.hero-actions button{font-size:11px;padding-inline:12px;gap:13px}.story-section,.landing-section{padding-inline:20px}.survivor-profile{grid-template-columns:36% 64%}.profile-copy{padding-right:12px}.recipe-art .skill-art{width:45px;height:45px}.evolution-card{grid-template-columns:1fr 83px}.hero-content h1{font-size:94px}#deployment-modal .selection-detail .hero-stats{display:none}}
@media(prefers-reduced-motion:reduce){.profile-portrait>img,.hero-actions button,.boss-content>.landing-primary,.final-call>.landing-primary{transition:none}.survivor-profile:hover .profile-portrait>img{transform:none}}

/* Recovery choices stay inside the tactical panel and leave movement controls available. */
.relief-panel{pointer-events:auto;margin:9px 0 6px;border:1px solid #b1d7be45;border-radius:6px;background:#112c25}
.relief-panel summary{padding:9px 8px;cursor:pointer;font-size:11px;color:#d4e9ce;min-height:38px}
.relief-panel.available{border-color:#a7ecc4;box-shadow:0 0 12px #80d6b022}.relief-panel.available summary{color:#bdffdb}
.relief-options{padding:0 8px 9px;display:grid;gap:6px}.relief-options p{font-size:10px}.relief-options button{text-align:left;padding:9px 8px;min-height:49px;background:#203b30}.relief-options button b{display:block;font-size:12px}.relief-options button small{display:block;font-size:10px;margin-top:3px}.recovery-status{display:block;font-size:9px!important;line-height:1.6;margin:5px 0;color:#b2cabb!important}
.tactical-hud:has(.relief-panel[open]){pointer-events:auto;max-height:calc(100dvh - 410px);overflow-y:auto;overscroll-behavior:contain;z-index:7}
.tactical-hud:has(.relief-panel[open]) #tactical-map,.tactical-hud:has(.relief-panel[open]) .supply-heading,.tactical-hud:has(.relief-panel[open]) #supply-region,.tactical-hud:has(.relief-panel[open]) #mission-status,.tactical-hud:has(.relief-panel[open]) #mission-reward,.tactical-hud:has(.relief-panel[open]) #elite-status{display:none}
@media(max-width:760px){.relief-panel summary{font-size:10px;min-height:38px;padding:8px}.relief-options button{min-height:48px}.tactical-hud:has(.relief-panel[open]){max-height:calc(100dvh - 420px);min-height:120px}}
@media(max-height:600px){.tactical-hud:has(.relief-panel[open]){max-height:calc(100dvh - 190px)}}
@media(orientation:landscape) and (max-height:600px){
 .playing:has(#relief-panel[open]) .dash-status{left:auto;right:260px;bottom:15px;transform:none}
 .playing:has(#relief-panel[open]) .ability-status{left:auto;right:260px;bottom:85px;transform:none}
 .tactical-hud:not(:has(.relief-panel[open])) .recovery-status{display:none}
 .tactical-hud:not(:has(.relief-panel[open])){max-height:94px;overflow:hidden}
 .tactical-hud:not(:has(.relief-panel[open])) .relief-panel{margin-block:3px}
 .tactical-hud:not(:has(.relief-panel[open])) .relief-panel summary{min-height:32px;padding-block:6px}
}

/* Announce the outcome immediately; the score follows after the short scene. */
body.ending{overflow:hidden}.ending .shade{display:none}.ending .topbar{opacity:0;pointer-events:none;transition:opacity .3s}.ending #hud{opacity:0;transition:opacity .3s}.ending #hud *{pointer-events:none!important}
.end-cinematic{--end-accent:#ff9a89;position:fixed;inset:0;z-index:18;display:grid;place-items:center;overflow:hidden;color:#fff0eb;isolation:isolate;background:#1a090c}
.end-backdrop{position:absolute;inset:0;z-index:-3;width:100%;height:100%;object-fit:cover;filter:saturate(.55)}
.end-cinematic::before{content:'';position:absolute;inset:0;z-index:-2;background:radial-gradient(ellipse at 50% 45%,#27090c88,#1b050bbb 65%,#100307ee)}
.end-cinematic::after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,#8d25264d,transparent 65%);pointer-events:none}
.end-copy{text-align:center;padding:24px;width:min(800px,96vw);animation:ending-copy .35s ease-out both;text-shadow:0 2px 20px #000b}
.end-emblem{display:grid;place-items:center;width:88px;height:88px;margin:0 auto 24px;border:1px solid currentColor;border-radius:50%;color:var(--end-accent);background:#240c0ac9;box-shadow:0 0 0 8px #f88b7610,0 0 50px #ee533324}
.end-emblem .ui-icon{width:48px;height:48px}
.end-kicker{font:600 13px monospace;letter-spacing:7px;color:var(--end-accent);margin:0 0 14px}.end-copy h2{font-size:clamp(42px,7vw,80px);font-weight:800;letter-spacing:-2px;margin:0;line-height:1.2;word-break:keep-all}
.end-reason{display:inline-block;margin:22px 0;padding:8px 16px;border:1px solid #ffac9755;background:#1c0c0bb3;border-radius:4px;font-size:15px;font-weight:600;color:var(--end-accent);line-height:1.6}
.end-rule{display:block;width:72px;height:2px;margin:0 auto 20px;background:var(--end-accent);opacity:.6}#end-subtitle{font-size:14px;line-height:1.9;color:#efded7;word-break:keep-all;margin:0}
.end-skip{position:absolute;right:max(24px,env(safe-area-inset-right));bottom:max(25px,env(safe-area-inset-bottom));background:#0b1012cc;border:1px solid #c6b4a466;border-radius:5px;color:#eee3d4;font-size:12px;padding:12px 16px;min-height:44px}.end-skip span{margin-left:22px}
.end-cinematic[data-kind=dawn]{--end-accent:#ffdf88;background:#263329;color:#fff6d9}
.end-cinematic[data-kind=dawn] .end-backdrop{filter:saturate(1.1)}
.end-cinematic[data-kind=dawn]::before{background:radial-gradient(ellipse at 50% 42%,#183023a6,#10251c77 60%,#071a1bd4)}
.end-cinematic[data-kind=dawn]::after{background:linear-gradient(135deg,#ffe39835,transparent 55%);animation:ending-dawn 2.4s ease-out both}
.end-cinematic[data-kind=dawn] .end-copy{animation:ending-victory .65s ease-out both}
.end-cinematic[data-kind=dawn] .end-emblem{background:#173b2bcc;box-shadow:0 0 0 8px #ffe39812,0 0 65px #ffd57255}
.end-cinematic[data-kind=dawn] .end-reason{background:#123123cc;border-color:#ffe39866}
.end-cinematic[data-kind=dawn] #end-subtitle{color:#fff5d9}
.end-cinematic[data-kind=interrupted]{--end-accent:#b8d3e5;background:#101c27}
.end-cinematic[data-kind=interrupted]::before{background:radial-gradient(ellipse,#24425277,#0c1724cc)}
.end-cinematic[data-kind=interrupted]::after{display:none}
.end-cinematic[data-kind=interrupted] .end-emblem,.end-cinematic[data-kind=interrupted] .end-reason{background:#112433;box-shadow:none;border-color:#b8d3e555}
.end-cinematic[data-kind=tower]{--end-accent:#f3c27f;background:#22190e}
.end-cinematic[data-kind=tower]::before{background:radial-gradient(ellipse at 50% 42%,#352511a6,#1e160bd9 70%)}
.end-cinematic[data-kind=tower]::after{background:linear-gradient(0deg,#bd7d2833,transparent 65%)}
.end-cinematic[data-kind=tower] .end-backdrop{object-fit:contain;opacity:.16;filter:grayscale(1)}
.end-cinematic[data-kind=tower] .end-emblem{width:112px;height:112px;border-radius:12px;background:#2d2117;box-shadow:0 0 50px #eab66b22;animation:ending-tower .65s ease-out both}
.end-cinematic[data-kind=tower] .end-reason{border-color:#f3c27f66;background:#251b0bcc}
.end-cinematic[data-kind=squad] .end-emblem{animation:ending-heart .65s ease-out both}
.end-emblem,.result-emblem{position:relative}
.verdict-tower{display:block;width:100%;height:100%;object-fit:contain;filter:saturate(.6)}
.verdict-cross{position:absolute;right:-7px;bottom:-5px;display:grid;place-items:center;width:30px;height:30px;border:2px solid currentColor;border-radius:50%;background:#211917;color:inherit}
.verdict-cross .ui-icon,.end-emblem .verdict-cross .ui-icon{width:20px;height:20px}
@keyframes ending-tower{from{opacity:.3;transform:translateY(-12px) rotate(-7deg)}to{opacity:1;transform:none}}
@keyframes ending-heart{from{opacity:.3;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}
.ending-lite .end-emblem{animation:none!important}
@media(max-height:500px){.end-cinematic[data-kind=tower] .end-emblem{width:58px;height:58px}}
@media(prefers-reduced-motion:reduce){.end-emblem{animation:none!important}}
.ending-ready .end-cinematic{pointer-events:none}.ending-ready #result{z-index:20;inset:0;background:transparent;padding:32px 20px;animation:ending-result .4s ease-out both}
@keyframes ending-veil{from{opacity:0}to{opacity:1}}
@keyframes ending-copy{from{opacity:.65}to{opacity:1}}
@keyframes ending-victory{from{opacity:.65;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
@keyframes ending-dawn{from{opacity:.2;transform:translateY(20px)}to{opacity:1;transform:none}}
@keyframes ending-result{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.ending-lite .end-cinematic .end-copy,.ending-lite .end-cinematic::after,.ending-lite.ending-ready #result{animation:none}
@media(max-width:540px){.end-emblem{width:68px;height:68px;margin-bottom:20px}.end-emblem .ui-icon{width:38px;height:38px}.end-reason{font-size:13px}#end-subtitle{font-size:12px}.end-skip{bottom:max(18px,env(safe-area-inset-bottom));right:18px}}
@media(max-height:500px){.end-copy{padding:14px}.end-emblem{width:46px;height:46px;margin-bottom:12px}.end-emblem .ui-icon{width:28px;height:28px}.end-kicker{font-size:10px;margin-bottom:8px}.end-copy h2{font-size:40px}.end-reason{margin:12px 0;font-size:12px;padding:4px 12px}.end-rule{margin-bottom:10px}#end-subtitle{font-size:12px}.ending-ready #result{padding:18px}.end-skip{bottom:12px;right:12px}}
@media(prefers-reduced-motion:reduce){.end-copy,.end-cinematic::after,.ending-ready #result{animation:none!important;transform:none}}


/* Combat information stays compact until deliberately expanded. */
#tactical-hud.tactical-hud{display:block;top:205px;width:268px;padding:0;max-height:calc(100dvh - 340px);overflow:auto;pointer-events:auto;background:#0b201aeb;border:1px solid #adcfb344;border-radius:10px;box-shadow:0 8px 24px #0003;font-size:12px}
#tactical-hud.urgent{border-color:#f28d7899}#tactical-hud.supply-active{border-color:#d6b97480;box-shadow:inset 2px 0 #d6b974,0 8px 24px #0003}
#tactical-hud .tactical-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:64px;padding:12px;cursor:pointer;list-style:none}
.tactical-summary::-webkit-details-marker{display:none}.tactical-summary-copy{display:grid;gap:5px;min-width:0}.tactical-toggle{flex-shrink:0;font-size:10px;color:#c8d8bb}.tactical-toggle>span{display:inline-block;transition:transform .15s}#tactical-details[open] .tactical-toggle>span{transform:rotate(45deg)}
#tactical-hud #assault-status{font-size:12px;margin:0;color:#e5eed8;line-height:1.4}#tactical-hud.urgent #assault-status{color:#ffb7a7}#tactical-brief{display:block;font-size:10px;color:#b7c5ad;line-height:1.5;overflow-wrap:anywhere}#tactical-hud.supply-active #tactical-brief{color:#efcf8c}
#tactical-content{padding:0 12px 12px;border-top:1px solid #accba42b}#tactical-content .tactical-heading{display:flex;margin-top:12px}#tactical-content #tactical-map{display:block;height:100px;margin:10px 0}#tactical-content #mission-status,#tactical-content #mission-reward,#tactical-content #supply-region,#tactical-content #elite-status,#tactical-content .supply-heading,#tactical-content .recovery-status{display:block}#tactical-content #elite-status:empty{display:none}
#tactical-hud .relief-panel{display:none;margin:0 8px 8px}#tactical-hud.support-ready .relief-panel,#tactical-hud:has(#tactical-details[open]) .relief-panel{display:block}#tactical-hud.support-near .relief-panel summary{color:#bcffdf}#tactical-hud:has(.relief-panel[open]){max-height:calc(100dvh - 340px)}#tactical-hud:has(.relief-panel[open]) #tactical-content{display:none}
@media(min-width:761px){.squad-play #tactical-hud.tactical-hud{top:355px;max-height:calc(100dvh - 485px)}}
@media(max-width:760px) and (orientation:portrait){
 #tactical-hud.tactical-hud,.squad-play #tactical-hud.tactical-hud{top:205px;left:14px;width:calc(100vw - 28px);max-width:none;max-height:calc(100dvh - 425px)}
 #tactical-hud .tactical-summary{min-height:58px;padding:9px 11px}#tactical-hud #assault-status{font-size:11px}#tactical-brief{font-size:10px}
 #tactical-hud .relief-panel summary{min-height:38px}#tactical-hud:has(.relief-panel[open]){min-height:0}
 .playing:has(#tactical-details[open]) .build-guide{display:none}
}
@media(orientation:landscape) and (max-height:600px){
 #tactical-hud.tactical-hud,.squad-play #tactical-hud.tactical-hud{left:auto;right:12px;top:145px;width:235px;max-height:calc(100dvh - 160px)}
 #tactical-hud .tactical-summary{min-height:58px;padding:9px 11px}#tactical-content #tactical-map{height:75px}
 .playing:has(#tactical-details[open]) .dash-status,.playing:has(#relief-panel[open]) .dash-status{left:auto;right:260px;bottom:15px;transform:none}
 .playing:has(#tactical-details[open]) .ability-status,.playing:has(#relief-panel[open]) .ability-status{left:auto;right:260px;bottom:85px;transform:none}
 #tactical-hud .relief-panel summary{min-height:38px}#tactical-hud:has(.relief-panel[open]){max-height:calc(100dvh - 160px)}
}
.weapon-slot.evolved{border-color:#d8c1ff;box-shadow:inset 0 0 12px #b7a0f326}.weapon-slot.evolved::after{content:'✦';position:absolute;left:3px;top:1px;color:#ead6ff;font-size:11px}
@media(max-width:760px) and (orientation:portrait){
 #tactical-hud.tactical-hud,#tactical-hud:has(.relief-panel[open]){max-height:min(340px,calc(100dvh - 430px))}
 .playing:has(#relief-panel[open]) .build-guide{display:none}
}
/* Mobile team bars fit beneath own health; boss patterns reserve a separate row. */
@media(max-width:760px) and (orientation:portrait){
 .team{top:141px;left:14px;width:calc(50% - 20px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
 .team-member{min-width:0;margin:0;padding:4px;border-radius:4px;background:#0b1b14eb}.member-heading{display:block;margin-bottom:3px;font-size:8px;line-height:11px}.member-heading>span{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.team-member .bar{height:3px}.team-member .health-text{display:none}
 #boss-hud{top:198px;left:14px;right:14px;transform:none;width:auto;padding:5px 8px;background:#201c1cf2;border:1px solid #cc897252;border-radius:5px}#boss-name{display:block;font-size:10px;margin-bottom:4px}#boss-hud .bar{height:5px}
 .playing:has(#boss-hud:not([hidden])) #tactical-hud.tactical-hud{top:246px;max-height:min(300px,calc(100dvh - 470px))}
 .playing.choosing #boss-hud{top:198px;left:14px;right:14px;width:auto}
}
 
/* After-action screen and season records: brass, charcoal and field portraits. */
#result.result-wrap{inset:0;z-index:45;padding:28px;place-items:center;background:#050a08b8;backdrop-filter:blur(12px);overflow:auto}
#result .result-panel{--result-accent:#e4c98e;width:min(1000px,100%);max-height:calc(100dvh - 56px);overflow:auto;padding:0;border:1px solid #c4a76b77;border-radius:8px;background:#101b17;text-align:left;box-shadow:0 28px 100px #000b,0 0 0 5px #050b0955;backdrop-filter:none;scrollbar-width:thin}
#result[data-outcome=lost] .result-panel{--result-accent:#d9957d;border-color:#b77b5c77}
.result-hero{position:relative;display:grid;grid-template-columns:1fr auto;align-items:center;gap:24px;padding:32px 34px;border-bottom:1px solid #dcc38c38;background:linear-gradient(100deg,#253d30ef,#101c17f2),url("/assets/web/art-landing-keyart.a0e37d57a0139e4f.webp") center 44%/cover}
#result[data-outcome=lost] .result-hero{background:linear-gradient(100deg,#422e27ed,#171b17f2),url("/assets/web/art-landing-keyart.a0e37d57a0139e4f.webp") center 44%/cover}
.result-verdict{display:flex;align-items:center;gap:24px;min-width:0}
.result-emblem{display:grid;place-items:center;flex:none;width:76px;height:88px;border:1px solid var(--result-accent);outline:1px solid #e4c98e22;outline-offset:6px;color:var(--result-accent);font:48px Georgia,serif;clip-path:polygon(0 0,100% 0,100% 84%,50% 100%,0 84%);background:#ddc4830b}
#result .eyebrow{color:var(--result-accent);font:10px monospace;letter-spacing:3px;margin:0 0 12px}
#result .result-panel h2{font-size:clamp(23px,3vw,32px);letter-spacing:-1.2px;color:#f2eee1;margin:0;line-height:1.4}
#result-title:focus{outline:none}
#result-copy{font-size:12px;line-height:1.8;color:#b6b9a9;max-width:390px;margin:12px 0 0}
.result-score-main{text-align:right;border-left:1px solid #d4c49d30;padding-left:28px;min-width:190px}
.result-score-main>span{display:block;font:9px monospace;letter-spacing:2px;color:#bdb391}
.result-score-main>strong{display:block;color:var(--result-accent);font:500 clamp(30px,4vw,46px) monospace;margin:8px 0;letter-spacing:-2px}
.result-score-main>small{display:block;max-width:220px;line-height:1.7;color:#cac8b4;font-size:11px}
#result .result-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin:0;padding:22px 30px;background:#0b1411;border:0;border-bottom:1px solid #d2bc8430}
#result .result-stats>div{padding:0 20px;border-right:1px solid #b9bd9b25;text-align:center}
#result .result-stats>div:last-child{border:0}
#result .result-stats span{display:block;color:#859889;font-size:10px;margin-bottom:8px}
#result .result-stats strong{color:#e5e6d8;font:23px monospace}
.result-body{padding:24px 30px 20px}
.result-section-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 0 18px}
.result-section-heading span{font:9px monospace;letter-spacing:1.5px;color:#8b9b8d}
.result-section-heading h3{margin:6px 0 0;font-size:17px;font-weight:500;color:#e2dfcd;overflow-wrap:anywhere}
#result-team{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
#result-team .result-member-data p{display:block;font-size:10px}
.result-member{display:flex;overflow:hidden;min-width:0;border:1px solid #b3be932b;border-radius:4px;background:linear-gradient(135deg,#283c2e55,#0c1713)}
.result-member-portrait{position:relative;width:83px;flex:none;overflow:hidden;background:#263629}
.result-member-portrait img{width:100%;height:100%;min-height:156px;object-fit:cover;object-position:50% 25%;filter:saturate(.65)}
.result-member-portrait>span{position:absolute;bottom:0;left:0;right:0;padding:15px 2px 8px;background:linear-gradient(transparent,#07110f);text-align:center;font-size:8px;color:#d2d6c2}
.result-member-data{padding:15px 12px;min-width:0;flex:1}
.result-member-data h4{margin:0 0 12px;color:#ede7d6;font-size:13px;font-weight:500;overflow-wrap:anywhere}
.result-member-data h4 small{display:inline-block;margin-left:6px;color:#d8c28e;border:1px solid #d8c28e55;padding:1px 4px;font-size:8px}
.result-damage strong{font:21px monospace;color:var(--result-accent);display:block}
.result-damage span{font-size:9px;color:#849c87;display:block;margin:4px 0 8px}
.result-damage-bar{height:3px;background:#c6cdaa15}.result-damage-bar i{display:block;height:100%;background:var(--result-accent)}
.result-member-data p{font-size:10px;line-height:1.9;margin:10px 0 0;color:#a8b3a0}
.result-analysis{border-block:1px solid #c6c5a525;margin-top:20px}
.result-analysis>summary{display:flex;justify-content:space-between;cursor:pointer;padding:15px 0;color:#b8bdab;font-size:11px;list-style:none}.result-analysis>summary::-webkit-details-marker{display:none}.result-analysis[open]>summary span{transform:rotate(45deg)}
#result-breakdown{padding-bottom:18px}
#result .weapon-report{background:#0a1511;border-radius:3px}
.result-relics{margin-top:14px;padding-top:10px;border-top:1px solid #b899d333}.result-relics h4{font-size:12px;color:#e0c9f4;margin:0 0 6px}.result-relic{display:flex;gap:8px;align-items:center;padding:7px 0}.result-relic img{object-fit:contain;flex:none}.result-relic strong{display:block;font-size:12px;color:#e8daee}.result-relic span{display:block;font-size:11px;line-height:1.6;color:#c5d3ce}.result-relic small{display:block}
#result .result-threat{font-size:11px;margin-top:0;color:#c8b698}
#result .result-tip{font-size:11px;line-height:1.8;color:#adba9e;margin:15px 0 6px}
#result .result-records{border:0;padding:0;font-size:10px;color:#758975}
.result-actions{position:sticky;bottom:0;display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:18px 30px;background:#111e19f5;border-top:1px solid #c6b07e3d;z-index:1}
#result .result-actions button{width:auto;margin:0;font-size:12px;border-radius:3px;min-height:44px;padding:12px 20px}
#result .result-actions .text-button{margin-right:auto;color:#8f9e90}
#result .result-actions .primary{min-width:190px;background:var(--result-accent);border-color:var(--result-accent);color:#1f271b;gap:20px}
#result .result-actions .secondary{background:#26362b;border:1px solid #adbc8540;color:#ced5b8}
.team-name-field{display:block;margin:18px 0}.team-name-field>span{display:flex;justify-content:space-between;font-size:11px;margin-bottom:8px;color:#d4d7be}.team-name-field small{color:#86937c;font-size:10px}
.ranking-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:26px}.ranking-heading h2{font-size:36px;line-height:1.4;font-weight:500;margin:12px 0 0;letter-spacing:-1px}.ranking-heading h2 em{font-style:normal;color:#a9b59d}.ranking-heading .eyebrow{color:#c9b382}
.ranking-tabs{display:flex;gap:5px}.ranking-tabs button{font-size:12px;padding:12px 16px;background:#17271d;border-color:#a5b38a30;border-radius:3px;color:#899b85}.ranking-tabs button.active{color:#ead19d;border-color:#d4bd8277;background:#d4bd8212}
.ranking-board{border:1px solid #b0ad833f;background:#101b15;border-radius:5px;overflow:hidden}
.ranking-board-head{display:flex;justify-content:space-between;gap:12px;padding:17px 23px;background:#223124;border-bottom:1px solid #b0ad832d}.ranking-board-head>span{font:11px monospace;letter-spacing:2px;color:#dac38c}.ranking-board-head small{font-size:10px;color:#8b9d82}
.ranking-row{display:flex;align-items:center;gap:23px;padding:20px 24px;border-bottom:1px solid #a1af8920}.ranking-row:last-child{border:0}.ranking-place{font:24px monospace;color:#809078;width:38px;flex:none}.ranking-row:nth-child(-n+3) .ranking-place{color:#e0c484}.ranking-row:first-child{background:linear-gradient(90deg,#bdb06410,transparent)}
.ranking-squad{flex:1;min-width:0}.ranking-squad h3{font-size:15px;margin:0 0 6px;color:#dddcca;font-weight:500;overflow-wrap:anywhere}.ranking-squad p{font-size:10px;color:#81937d;margin:0;overflow-wrap:anywhere}
.ranking-points{text-align:right;flex:none}.ranking-points strong{font:23px monospace;color:#d9c895}.ranking-points small{display:block;margin-top:5px;font-size:10px;color:#91a186}
.ranking-empty{padding:40px 18px;text-align:center;font-size:12px;color:#8fa086;line-height:2}
.ranking-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.ranking-note,.ranking-rules{color:#81947b;font-size:10px;line-height:1.9}.ranking-rules summary{cursor:pointer;color:#bcb997}.ranking-rules p{max-width:760px}
@media(max-width:760px){
 #result.result-wrap{padding:10px}#result .result-panel{max-height:calc(100dvh - 20px)}
 .result-hero{grid-template-columns:1fr;padding:24px 20px;gap:20px}.result-verdict{gap:18px}.result-emblem{width:49px;height:62px;font-size:32px}#result .result-panel h2{font-size:23px}#result .eyebrow{font-size:8px;letter-spacing:2px}#result-copy{font-size:11px}
 .result-score-main{border-left:0;border-top:1px solid #cbbc9633;padding:14px 0 0;text-align:left;display:grid;grid-template-columns:1fr auto;align-items:center;min-width:0}.result-score-main>strong{grid-column:2;grid-row:1/3;margin:0;font-size:38px}.result-score-main>small{font-size:10px;max-width:190px}
 #result .result-stats{padding:18px 5px}#result .result-stats>div{padding:0 3px}#result .result-stats strong{font-size:18px}#result .result-stats span{font-size:9px}
 .result-body{padding:20px 16px}#result-team{grid-template-columns:1fr}.result-member-portrait{width:85px}.result-member-portrait img{min-height:133px}.result-member-data{padding:12px 16px}.result-member-data h4{margin-bottom:7px}.result-member-data p{margin-top:7px}.result-damage strong{font-size:22px}
 .result-actions{padding:12px;gap:7px;flex-wrap:wrap}#result .result-actions button{padding:10px;font-size:11px}#result .result-actions .primary{min-width:145px;flex:1}.result-section-heading span{font-size:8px}
 .ranking-heading{display:block}.ranking-heading h2{font-size:29px}.ranking-tabs{margin-top:20px}.ranking-tabs button{flex:1;padding:11px 8px;font-size:11px}.ranking-board-head{padding:14px 12px}.ranking-board-head>span{font-size:9px;letter-spacing:1px}.ranking-board-head small{font-size:8px}
 .ranking-row{gap:10px;padding:17px 12px}.ranking-place{font-size:21px;width:25px}.ranking-squad h3{font-size:13px}.ranking-points strong{font-size:19px}.ranking-points small{font-size:9px}.ranking-toolbar{align-items:start}.ranking-toolbar button{white-space:nowrap}
}
@media(prefers-reduced-motion:reduce){#result *{animation:none!important;transition:none!important}}

/* Player identity is the first, high-contrast step in character preparation. */
#deployment-modal .nickname-field{padding:20px 22px;margin:0 0 22px;border:1px solid #cbb179;border-left:4px solid #e8cd91;border-radius:6px;background:linear-gradient(110deg,#354235,#202e27)}
.nickname-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.nickname-heading label{color:#fff0ce;font-size:19px;font-weight:800}.nickname-heading span{color:#d3dacd;font-size:11px}
.nickname-controls{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:9px;align-items:center}
#deployment-modal #nickname{width:100%;min-width:0;height:52px;margin:0;padding:0 15px;background:#101d17;border:1px solid #aeb79e;border-radius:4px;color:#fff6df;font-size:20px;font-weight:700;letter-spacing:.5px}
#deployment-modal #nickname:focus{outline:2px solid #ffe2a0;outline-offset:3px;border-color:#ffe2a0}
.nickname-controls button{width:auto;min-height:48px;margin:0;padding:10px 15px;border:1px solid #c9b98e;border-radius:4px;white-space:nowrap;font-size:13px;background:#26392e;color:#f8e8c5}
.nickname-controls #nickname-save{background:#e6c990;color:#17271f;font-weight:800}
#deployment-modal .nickname-field p{font-size:11px;line-height:1.6;margin:10px 0 0;color:#d1d8ca}#deployment-modal .nickname-field #nickname-status{color:#edcf92;margin-top:4px;min-height:18px}
#deployment-modal .deploy-bottom{grid-template-columns:1fr}.deploy-bottom .deploy-action{width:100%}
@media(max-width:600px){#deployment-modal .nickname-field{padding:16px 14px;margin-bottom:18px}.nickname-heading{display:block}.nickname-heading label{display:block;font-size:18px}.nickname-heading span{display:block;margin-top:5px;font-size:10px}.nickname-controls{grid-template-columns:1fr 1fr}#deployment-modal #nickname{grid-column:1/-1;font-size:19px}.nickname-controls button{width:100%;min-height:44px}.nickname-field p{overflow-wrap:anywhere}}

/* Field HUD: compact instruments, painted action medallions, open battlefield. */
.mobile-tool,.action-art,.upgrade-tap-hint{display:none}
#dash-time{display:block;font-size:10px;margin-top:4px;color:#d5e9a1}
#dash-button,#ability-button{touch-action:none;user-select:none;-webkit-user-select:none}
.playing #world{touch-action:none}
.choice-evolution:empty{display:none}
.upgrade-heading .reroll-button{margin:8px 0 0}.upgrade-heading .choice-unit{font-size:10px}
#combat-menu{width:min(360px,calc(100vw - 32px));padding:24px;border:1px solid #bba7746e;border-radius:16px;background:linear-gradient(145deg,#26322bee,#101c19fa);box-shadow:0 24px 100px #0009}
.combat-menu-heading{display:flex;align-items:center;justify-content:space-between}.combat-menu-heading .eyebrow{margin:0 0 8px;color:#cbb684}.combat-menu-heading h2{margin:0;font-size:24px}.combat-menu-heading button{width:44px;height:44px;background:transparent;font-size:28px}
#combat-menu>p{font-size:12px;color:#aeb9a8;line-height:1.8;margin:18px 0}#combat-menu>button{width:100%;min-height:46px;margin-top:8px;font-size:13px;border-radius:8px}#combat-menu #combat-exit{color:#dca28a;background:#36272288;margin-top:18px}
@media(max-width:1024px),(any-pointer:coarse),(orientation:landscape) and (max-height:600px){
 body.playing{--edge-left:max(10px,env(safe-area-inset-left));--edge-right:max(10px,env(safe-area-inset-right));--edge-top:max(10px,env(safe-area-inset-top));--edge-bottom:max(16px,env(safe-area-inset-bottom));overscroll-behavior:none}
 .playing #game-header{display:none}
 .playing #hud::before{content:'';position:fixed;inset:0 0 auto;height:100px;background:linear-gradient(#07110fde,#07110f70 50%,transparent);pointer-events:none}
 .playing #player-hud{left:var(--edge-left);top:var(--edge-top);width:calc(40% - 18px);height:40px;min-height:0;max-height:none;padding:0;gap:7px;border:0;border-radius:0;box-shadow:none;background:transparent}
 .playing #player-portrait{width:32px;height:36px;border:1px solid #c8b6809c;border-radius:7px;object-position:50% 25%}
 .playing .health-heading{margin:0 0 5px;display:block;line-height:1}.playing .health-heading strong,.playing #player-status{display:none}.playing #player-health{font:700 10px monospace;white-space:nowrap;color:#f2edda;text-shadow:0 2px 3px #000}
 .playing #player-hud .health-bar{height:6px;border:0;border-radius:2px;background:#18251ae6;box-shadow:0 1px 0 #d5e9a126}.playing #player-fill{background:linear-gradient(90deg,#8da973,#d9eab5)}
 .playing #player-hud.critical #player-fill{background:#ef957d}.playing #player-hud.danger #player-portrait{border-color:#f6987d;box-shadow:0 0 12px #ee5e5055}
 .playing #tower-hud{top:calc(var(--edge-top) + 3px);left:42%;right:auto;transform:none;width:calc(24% - 12px);height:32px;min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
 .playing .tower-heading{display:flex;align-items:center;justify-content:space-between;margin:0 0 5px;gap:4px;flex-wrap:nowrap}.playing .tower-heading strong{font-size:0}.playing .tower-heading strong::after{content:'⌂';font-size:16px;color:#dec698;line-height:12px}
 .playing #tower-percent{font:700 11px monospace;color:#e1cea4}.playing #tower-hud .health-bar{height:4px;border:0;border-radius:2px;background:#d5b98325}.playing #tower-fill{background:#d9bd7a}.playing #tower-health,.playing #tower-status{display:none}.playing #tower-hud.critical #tower-fill{background:#f78b72}.playing #tower-hud.critical #tower-percent{color:#fba68d}
 .playing .round-top{top:calc(var(--edge-top) + 1px);right:calc(var(--edge-right) + 45px);display:block;text-align:right}
 .playing .timer strong{font:600 16px monospace;letter-spacing:-.8px;margin:0;color:#f3eedc;text-shadow:0 2px 4px #000}.playing .timer small,.playing .timer>span,.playing .kill-counter>span,.playing .kill-counter small,.playing #enemy-count{display:none}
 .playing .kill-counter strong{font:9px monospace;margin:3px 0 0;color:#c2ba9f}.playing .kill-counter strong::before{content:'⚔ ';color:#dec494}
 .playing .xp{top:calc(var(--edge-top) + 45px);left:var(--edge-left);right:var(--edge-right);width:auto;transform:none;gap:7px;font:8px monospace;color:#e1cf9a}.playing .xp .bar{height:2px;background:#d5d8b522}.playing #xp-fill{background:#c8b27a}.playing #xp-label{display:none}
 .playing .mobile-tool{display:grid;place-items:center;position:fixed;width:38px;height:38px;padding:0;pointer-events:auto;border:1px solid #c2b98d48;border-radius:10px;background:linear-gradient(135deg,#26352ad9,#101e1bc9);color:#dcc99b;box-shadow:inset 0 1px #e4d6ac18,0 3px 12px #0003;font-size:20px;touch-action:manipulation}
 .playing #combat-menu-button{right:var(--edge-right);top:var(--edge-top)}
 .menu-glyph span,.menu-glyph span::before,.menu-glyph span::after{width:14px;height:2px;background:#dcc99b;border-radius:1px;display:block;content:'';position:relative}.menu-glyph span::before{position:absolute;top:-5px}.menu-glyph span::after{position:absolute;top:5px;width:10px}
 .playing #gear-toggle{left:var(--edge-left);bottom:calc(var(--edge-bottom) + 164px);font-size:18px}.gear-glyph::before{content:'▣';font-size:22px;transform:rotate(-8deg)}.playing.gear-open #gear-toggle{border-color:#ead49b;background:#334536}
 .playing .bottom-hud{position:fixed;inset:auto var(--edge-right) var(--edge-bottom) var(--edge-left);height:110px;pointer-events:none}
 .playing .bottom-hud>div>.eyebrow,.playing .exit-button{display:none}
 .playing #loadout{display:none;position:fixed;left:calc(var(--edge-left) + 46px);bottom:calc(var(--edge-bottom) + 160px);max-width:calc(100vw - var(--edge-left) - var(--edge-right) - 46px);max-height:120px;padding:7px;gap:5px;border:1px solid #c9b87b55;background:#10221bed;border-radius:10px;touch-action:pan-y}
 .playing.gear-open #loadout{display:flex}.playing .weapon-slot{width:40px;height:44px;border-radius:5px}.playing .weapon-slot>.skill-art{width:32px;height:32px}.playing .weapon-slot small{display:none}
 .playing #joystick{display:block;left:calc(var(--edge-left) + 4px);bottom:calc(var(--edge-bottom) + 2px);width:100px;height:100px;border:1px solid #c6cfaa4d;border-radius:50%;background:radial-gradient(circle,#a6b89208 46%,#a6b89220 48%,transparent 50%),radial-gradient(circle,#10201a22 66%,#c4c99b22 68%,#07181133 70%);box-shadow:inset 0 0 20px #07120b55;opacity:.7;touch-action:none;user-select:none;-webkit-user-select:none}
 .playing #joystick:active{opacity:1}.playing #joystick>div{left:32px;top:32px;width:34px;height:34px;background:radial-gradient(circle at 35% 25%,#b4b79c,#526454 55%,#24392e);border:1px solid #d1c7989c;box-shadow:0 3px 8px #0005,inset 0 1px #f2e3b85c;border-radius:50%}.playing #joystick::after{content:'';position:absolute;inset:9px;border:1px dashed #c7caaa2b;border-radius:50%;pointer-events:none}
 .playing #hud .bottom-hud .dash-status{position:fixed;left:auto;right:var(--edge-right);bottom:var(--edge-bottom);width:88px;transform:none;z-index:10}
 .playing #hud .bottom-hud .ability-status{position:fixed;left:auto;right:calc(var(--edge-right) + 84px);bottom:calc(var(--edge-bottom) + 49px);width:68px;transform:none;z-index:10}
 .playing #dash-button,.playing #ability-button{position:relative;isolation:isolate;width:100%;height:88px;min-height:0;border:0;border-radius:50%;padding:0;background:transparent;box-shadow:none;color:#f5e7c0;overflow:visible;touch-action:none;transition:filter .12s,transform .12s}
 .playing #ability-button{height:68px}.playing #dash-button:hover,.playing #ability-button:hover{background:transparent}.playing #dash-button:active:not(:disabled),.playing #ability-button:active:not(:disabled){transform:scale(.93);filter:brightness(1.3)}
 .playing .action-art{display:block;position:absolute;inset:-7px;background-image:url('/assets/web/art-combat-controls.056bb2274523665d.webp');background-size:200% 200%;background-position:0 0;filter:drop-shadow(0 4px 5px #0008);z-index:-2;pointer-events:none}
 .playing #dash-button::after,.playing #ability-button::after{content:'';position:absolute;inset:8px;border-radius:50%;background:conic-gradient(#071411c4 var(--cooldown,0deg),transparent 0);z-index:-1;pointer-events:none}
 .playing #dash-button:disabled,.playing #ability-button:disabled{opacity:1}.playing #dash-button:disabled .action-art,.playing #ability-button:disabled .action-art{filter:saturate(.45) brightness(.65)}
 .playing .action-name,.playing #ability-name{position:absolute;top:calc(100% - 7px);left:50%;transform:translateX(-50%);font-size:10px;font-weight:600;white-space:nowrap;letter-spacing:.5px;text-shadow:0 1px 4px #000,0 1px 2px #000;background:#081812b0;padding:2px 6px;border-radius:3px}
 .playing #ability-name{font-size:9px;letter-spacing:0}.playing #dash-time,.playing #ability-time{position:absolute;left:0;top:50%;transform:translateY(-50%);width:100%;margin:0;font:700 20px monospace;color:#fff4d6;text-shadow:0 2px 6px #000}
 .playing #ability-time{font-size:17px}.playing #dash-button:not(:disabled) #dash-time,.playing #ability-button:not(:disabled) #ability-time{display:none}.playing .ability-status kbd,.playing .dash-status kbd,.playing .ability-status>.bar,.playing .dash-status>.bar{display:none}
 .playing #tactical-hud.tactical-hud,.playing.squad-play #tactical-hud.tactical-hud,.playing:has(#boss-hud:not([hidden])) #tactical-hud.tactical-hud{position:fixed;top:calc(var(--edge-top) + 66px);left:var(--edge-left);right:auto;width:min(248px,calc(100vw - 90px));max-width:none;min-height:0;max-height:calc(100dvh - 240px);padding:0;border:0;border-radius:8px;background:transparent;box-shadow:none;overflow:visible;pointer-events:none}
 .playing #tactical-hud .tactical-summary{min-height:32px;padding:0;gap:8px;justify-content:flex-start;pointer-events:auto;list-style:none}
 .playing .tactical-summary::before{content:'⌖';display:grid;place-items:center;flex:none;width:32px;height:32px;border:1px solid #b6bd8c55;border-radius:9px;background:#15271dbb;font-size:23px;color:#d5c595}
 .playing #tactical-hud #assault-status{font-size:10px;line-height:1.3;color:#e1dcc3;text-shadow:0 2px 3px #000;max-width:185px}
 .playing #tactical-brief,.playing .tactical-toggle,.playing #tactical-hud .relief-panel{display:none}
 .playing #tactical-hud.support-ready .tactical-summary::before{border-color:#e6c881;color:#f5d99d;box-shadow:0 0 12px #eac16b33}
 .playing #tactical-hud:has(#tactical-details[open]),.playing #tactical-hud:has(#relief-panel[open]){background:#10231cf5;border:1px solid #b7bc8959;max-height:calc(100dvh - 240px);overflow:auto;pointer-events:auto;box-shadow:0 10px 35px #0007}
 .playing #tactical-details[open] .tactical-summary{padding:8px}.playing #tactical-details[open] .tactical-summary::before{content:'×'}
 .playing #tactical-details[open] #tactical-brief{display:block;font-size:10px}
 .playing #tactical-hud:has(#tactical-details[open]) .relief-panel{display:block;pointer-events:auto}.playing #tactical-hud .relief-panel summary{min-height:40px;font-size:11px}
 .playing #tactical-content #tactical-map{height:85px}
 .playing .build-guide,.playing .build-guide[open]{left:var(--edge-left);bottom:calc(var(--edge-bottom) + 118px);width:38px;max-height:none;border:1px solid #c2b98d48;border-radius:10px;background:#14271dc9;overflow:visible;z-index:6}
 .playing .build-guide summary{height:38px;min-height:38px;padding:0;list-style:none;display:grid;place-items:center;font-size:0;color:#dcc99b}.playing .build-guide summary::-webkit-details-marker{display:none}.playing .build-guide summary::after{content:'✦';font-size:22px}
 .playing .build-guide[open] summary::after{content:'×'}.playing #evolution-guide{position:absolute;bottom:0;left:45px;width:min(265px,calc(100vw - 80px));max-height:calc(100dvh - 260px);overflow:auto;background:#10231cf5;border:1px solid #b7bc8959;border-radius:10px;box-shadow:0 8px 25px #0007;overscroll-behavior:contain}
 .playing .team{top:calc(var(--edge-top) + 68px);right:var(--edge-right);left:auto;width:78px;display:grid;grid-template-columns:1fr;gap:5px}.playing .team-member{margin:0;padding:4px 5px;border:0;border-radius:4px;background:#0a181790;min-width:0}.playing .member-heading{display:block;font-size:8px;margin:0 0 3px}.playing .member-heading>span{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.playing .member-heading small,.playing .team-member .health-text{display:none}.playing .team-member .bar{height:2px}
 .playing #boss-hud,.playing.choosing #boss-hud{top:calc(var(--edge-top) + 109px);left:22%;right:22%;width:auto;transform:none;background:transparent;border:0;padding:0}.playing #boss-name{font-size:10px;margin:0 0 4px;text-shadow:0 1px 4px #000}.playing #boss-hud .bar{height:4px}.playing #boss-fill{background:#d99174}
 .playing .wave-banner{top:27%;font-size:12px;white-space:normal;text-align:center}
 .playing #toast,.playing .supply-reward{bottom:calc(var(--edge-bottom) + 130px);padding:8px 12px;font-size:11px;max-width:75vw}
 .playing.choosing #tactical-hud,.playing.choosing .team,.playing.choosing .wave-banner{display:none}
 /* Three visible choices, detail on deliberate selection, no full-screen veil. */
 .playing #upgrade{position:fixed;top:calc(var(--edge-top) + 65px);bottom:auto;left:var(--edge-left);right:var(--edge-right);width:auto;max-width:500px;min-height:0;max-height:none;margin:0 auto;padding:0;overflow:hidden;border:1px solid #c5b17970;border-radius:12px;background:linear-gradient(135deg,#1c2b22ed,#0d1c19ef);box-shadow:0 8px 25px #0005;pointer-events:auto}
 #upgrade .upgrade-heading{height:37px;min-height:37px;display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:8px;padding:0 9px;border:0;border-bottom:1px solid #c5b17926;border-radius:0;background:transparent}
 #upgrade .upgrade-heading h2{font-size:12px;margin:0;color:#efdcac;letter-spacing:.4px;white-space:nowrap}.playing #choice-time{font:700 13px monospace;color:#e8cf95}.playing .choice-unit{font-size:9px;color:#b1b99e}
 #upgrade .upgrade-heading p{margin:0;font-size:10px;color:#b6bfa8;white-space:nowrap}.playing #upgrade .upgrade-shortcuts,#upgrade .eyebrow,#upgrade .choice-protection,#upgrade .choice-evolution{display:none}
 #upgrade .reroll-button{margin:0 0 0 auto;width:auto;height:32px;min-width:44px;min-height:32px;padding:0 6px;border:0;border-radius:6px;background:transparent;font:13px monospace;color:#d8c99d}
 .playing #upgrade-toggle{display:grid;position:static;width:32px;height:32px;border:0;box-shadow:none;background:transparent;border-radius:6px;flex:none;font-size:20px}
 #upgrade .upgrade-scroll{padding:7px 7px 0;overflow:visible;min-height:0;touch-action:pan-y}
 #upgrade-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:0}
 #upgrade .upgrade-card{min-width:0;min-height:90px;padding:6px 4px;border:1px solid #a9b38842;border-radius:7px;background:linear-gradient(150deg,#35452d60,#0e211b);box-shadow:inset 0 1px #e2d3a312;text-align:center;touch-action:manipulation;overflow:hidden}
 #upgrade .upgrade-card>.skill-art{position:static;width:37px;height:37px;margin:0 auto 3px;filter:drop-shadow(0 3px 3px #0009)}
 #upgrade .skill-kind{font-size:8px;line-height:1;margin:0 0 4px;white-space:nowrap;color:#9fb19a}.playing #upgrade .upgrade-card strong{font-size:11px;line-height:1.3;margin:0;word-break:keep-all;color:#e9e6ce}
 #upgrade .upgrade-card small{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;width:100%;font-size:10px;line-height:1.4;margin-top:5px}#upgrade .upgrade-card kbd{display:none}.playing #upgrade .upgrade-card em{font:8px monospace;color:#c4b17d;margin:3px 0 0}
 #upgrade .upgrade-card:active{border-color:#ead195;background:linear-gradient(150deg,#685a344d,#233a27);box-shadow:inset 0 0 0 1px #e9cb8c44,0 0 12px #d4b97e12}
 #upgrade .upgrade-tap-hint{display:block;margin:0;padding:5px 8px 7px;text-align:center;font-size:10px;line-height:1.4;color:#d4dcc3}
 .playing.upgrade-minimized #upgrade{width:205px;right:auto;left:var(--edge-left);border-radius:9px}.playing.upgrade-minimized #upgrade .upgrade-scroll,.playing.upgrade-minimized #upgrade .upgrade-tap-hint{display:none}.playing.upgrade-minimized #upgrade-toggle{transform:rotate(180deg)}
 .playing.choosing #boss-hud{top:calc(var(--edge-top) + 265px)}
 .playing.upgrade-minimized #boss-hud{top:calc(var(--edge-top) + 109px)}
 .playing.choosing .build-guide,.playing.choosing #gear-toggle{display:none}
}
@media(orientation:landscape) and (max-height:600px){
 .playing #player-hud{width:136px}.playing #tower-hud{left:calc(var(--edge-left) + 156px);width:88px}.playing .xp{right:calc(var(--edge-right) + 130px);left:var(--edge-left)}
 .playing .round-top{display:flex;gap:15px;align-items:center}.playing .kill-counter strong{font-size:11px;margin-top:3px}
 .playing #tactical-hud.tactical-hud,.playing.squad-play #tactical-hud.tactical-hud,.playing:has(#boss-hud:not([hidden])) #tactical-hud.tactical-hud{top:calc(var(--edge-top) + 64px);width:210px;max-height:calc(100dvh - 190px)}
 .playing #tactical-hud:has(#tactical-details[open]){max-height:calc(100dvh - 190px)}
 .playing #gear-toggle{left:auto;right:calc(var(--edge-right) + 44px);top:calc(var(--edge-top) + 51px);bottom:auto}.playing .build-guide,.playing .build-guide[open]{left:auto;right:var(--edge-right);top:calc(var(--edge-top) + 51px);bottom:auto}
 .playing #evolution-guide{left:auto;right:0;bottom:auto;top:44px;max-height:calc(100dvh - 210px)}
 .playing #loadout{left:auto;right:calc(var(--edge-right) + 44px);top:calc(var(--edge-top) + 94px);bottom:auto;width:240px;max-height:calc(100dvh - 235px)}
 .playing #upgrade{top:auto;bottom:calc(var(--edge-bottom) - 4px);left:calc(var(--edge-left) + 116px);right:calc(var(--edge-right) + 170px);max-width:440px}
 #upgrade .upgrade-heading{height:32px;min-height:32px}#upgrade .upgrade-card{min-height:76px;padding:5px 3px}#upgrade .upgrade-card>.skill-art{width:28px;height:28px}#upgrade .upgrade-card small{-webkit-line-clamp:2;font-size:9px}#upgrade .upgrade-tap-hint{padding:4px 7px;font-size:9px}#upgrade .skill-kind{font-size:7px}#upgrade .upgrade-card strong{font-size:10px}
 .playing #boss-hud,.playing.choosing #boss-hud{top:calc(var(--edge-top) + 65px);left:35%;right:25%}
 .playing.upgrade-minimized #upgrade{left:calc(var(--edge-left) + 116px);width:205px;bottom:var(--edge-bottom)}
 .playing #joystick{width:92px;height:92px}.playing #joystick>div{left:28px;top:28px}
 .playing .team{right:var(--edge-right);top:calc(var(--edge-top) + 100px)}
}

/* Desktop field instruments share the mobile action artwork and cooldown language. */
#hud button:focus-visible,#hud summary:focus-visible{outline:2px solid #f5dda4;outline-offset:4px}
#player-health,#tower-health,#tower-percent,#timer,#kills,#ability-time,#dash-time{font-variant-numeric:tabular-nums}
@media(min-width:1025px) and (min-height:601px) and (not (any-pointer:coarse)){
 .playing{--hud-edge:22px;--hud-gold:#dfc38b;--hud-glass:linear-gradient(145deg,#1c2a23ed,#0b1916ed)}
 .playing #hud::before{content:'';position:fixed;inset:auto 0 0;height:155px;background:linear-gradient(transparent,#08120b80);pointer-events:none}
 .playing #player-hud,.playing #tower-hud,.playing .round-top{top:76px;background:var(--hud-glass);border:1px solid #cfbf8d40;border-radius:12px;box-shadow:0 8px 24px #0003,inset 0 1px #f5e9c40a}
 .playing #player-hud{width:240px;padding:11px;gap:10px}
 .playing #player-portrait{width:42px;height:50px;border-color:#dac28a66}
 .playing .health-heading strong,.playing .tower-heading strong{color:#e7e5cf;font-size:11px;letter-spacing:.3px}
 .playing #player-health{font-size:13px;color:#f7efdc}
 .playing #player-status{font-size:10px;color:#b7c5b0}
 .playing #hud .health-bar{height:8px;border-radius:3px;background:#050f0c99}
 .playing #player-fill{background:linear-gradient(90deg,#789f78,#d3e8af)}
 .playing #tower-hud{width:280px;padding:11px 13px}
 .playing #tower-percent{font-size:21px;color:#e4ce97}
 .playing #tower-fill{background:linear-gradient(90deg,#b39964,#e7d59d)}
 .playing #tower-health,.playing #tower-status{font-size:10px}
 .playing #player-hud.critical,.playing #player-hud.danger,.playing #tower-hud.critical{border-color:#f49b7b99;background:linear-gradient(145deg,#492821f5,#241616ed)}
 .playing #player-hud.critical #player-fill,.playing #tower-hud.critical #tower-fill{background:linear-gradient(90deg,#d06b55,#ffb58b)}
 .playing #tower-hud.critical #tower-percent{color:#ffb58b}
 .playing .round-top{padding:10px 14px;gap:18px;align-items:center;min-width:190px}
 .playing .timer{text-align:left;padding-right:18px;border-right:1px solid #cfbf8d26}
 .playing .timer strong{font-size:28px;letter-spacing:-1px;margin:4px 0;color:#fff0cb}
 .playing .timer small,.playing .kill-counter small{font-size:9px;letter-spacing:.5px}
 .playing .kill-counter strong{font-size:23px;margin:4px 0;color:#e4e8d6}
 .playing #enemy-count{font-size:8px;letter-spacing:0;margin-top:4px}
 .playing .xp{top:168px;width:280px;gap:8px;font-size:10px;color:#e6cc93}
 .playing .xp .bar{height:4px;background:#d5c59322}.playing #xp-fill{background:linear-gradient(90deg,#ba985c,#f0d7a1)}
 .playing #xp-label{font-size:9px;color:#d3d8c7}
 .playing #boss-hud{top:196px;padding:10px 14px;background:#211918dc;border:1px solid #e0a07c55;border-radius:10px}
 .playing #tactical-hud.tactical-hud{background:var(--hud-glass);border-color:#cfbf8d40;border-radius:12px}
 .playing #tactical-hud.urgent{border-color:#f28d7899}.playing #tactical-hud.supply-active{border-color:#dfbd7980}
 .playing #tactical-hud .tactical-summary{min-height:58px}
 .playing .tactical-toggle{border:1px solid #cab98933;border-radius:5px;padding:5px 7px;color:#e0c995}
 .playing .team-member{background:var(--hud-glass);border-color:#cfbf8d30}
 .playing .bottom-hud{bottom:24px;min-height:112px;pointer-events:none}
 .playing .bottom-hud>div:first-child{max-width:calc(50vw - 172px);padding:10px 12px;border:1px solid #cfbf8d38;border-radius:12px;background:var(--hud-glass);box-shadow:0 6px 25px #0003}
 .playing .bottom-hud .eyebrow{font-size:9px;letter-spacing:1.4px;color:#c6b68e;margin-bottom:8px}
 .playing #loadout{max-width:100%;max-height:108px;gap:5px;scrollbar-color:#bdad7c55 transparent}
 .playing .weapon-slot{width:46px;height:48px;border-radius:7px;background:#091812b3;border-color:#c5b37e42}
 .playing .weapon-slot:hover{border-color:#efd395;background:#29392af2}
 .playing .weapon-slot.passive{border-color:#95bab64d}.playing .weapon-slot.evolved{border-color:#d8c1ff}
 .playing .weapon-slot b{right:2px;top:2px;min-width:13px;text-align:center;padding:2px;border-radius:3px;background:#17231cf0;color:#f3d99d;font-size:9px;line-height:1}
 .playing .weapon-slot small{font-size:7px;color:#c6cebd}
 .playing .build-guide,.playing .build-guide[open]{bottom:168px;border-color:#cfbf8d40;border-radius:9px;background:var(--hud-glass)}
 .playing .build-guide summary{color:#dcc995;font-size:11px}
 .playing #hud .bottom-hud .ability-status,.playing #hud .bottom-hud .dash-status{position:absolute;left:calc(50% - 56px);right:auto;bottom:25px;width:84px;transform:translateX(-50%);pointer-events:auto}
 .playing #hud .bottom-hud .dash-status{left:calc(50% + 56px)}
 .playing #ability-button,.playing #dash-button{position:relative;isolation:isolate;width:84px;height:84px;min-height:0;padding:0;border:0;border-radius:50%;background:transparent;box-shadow:none;overflow:visible;color:#fff0cd;transition:filter .15s,transform .15s}
 .playing #ability-button .action-art,.playing #dash-button .action-art{display:block;position:absolute;inset:-7px;background-image:url('/assets/web/art-combat-controls.056bb2274523665d.webp');background-size:200% 200%;background-position:0 0;filter:drop-shadow(0 5px 8px #0009);z-index:-2;pointer-events:none}
 .playing #ability-button::after,.playing #dash-button::after{content:'';position:absolute;inset:8px;border-radius:50%;background:conic-gradient(#071411cf var(--cooldown,0deg),transparent 0);z-index:-1;pointer-events:none}
 .playing #ability-button:disabled,.playing #dash-button:disabled{opacity:1}
 .playing #ability-button:disabled .action-art,.playing #dash-button:disabled .action-art{filter:saturate(.4) brightness(.65) drop-shadow(0 4px 6px #0008)}
 .playing #ability-button:hover:not(:disabled),.playing #dash-button:hover:not(:disabled){background:transparent;filter:brightness(1.17);transform:translateY(-3px)}
 .playing #ability-button:active:not(:disabled),.playing #dash-button:active:not(:disabled){transform:scale(.94)}
 .playing #ability-name,.playing .action-name{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);font-size:11px;font-weight:600;letter-spacing:.3px;white-space:nowrap;color:#f4e6c5;text-shadow:0 2px 4px #000;background:#0b1914c9;border:1px solid #c9b77c26;border-radius:5px;padding:4px 9px}
 .playing #ability-time,.playing #dash-time{position:absolute;inset:50% 0 auto;transform:translateY(-50%);margin:0;width:100%;font:700 22px monospace;color:#fff3d9;text-shadow:0 2px 6px #000}
 .playing #ability-button:not(:disabled) #ability-time,.playing #dash-button:not(:disabled) #dash-time{display:none}
 .playing .ability-status kbd,.playing .dash-status kbd{display:block;position:absolute;right:-3px;bottom:0;min-width:23px;margin:0;padding:4px 6px;background:linear-gradient(#344034,#17241d);border:1px solid #d8c28e99;border-bottom-width:3px;border-radius:5px;color:#fff0c7;font:700 10px monospace;box-shadow:0 2px 5px #0006}
 .playing .ability-status>.bar,.playing .dash-status>.bar,.playing .exit-button{display:none}
 .playing #combat-menu-button{display:flex;align-items:center;justify-content:center;gap:10px;position:fixed;right:var(--hud-edge);bottom:27px;width:auto;min-width:116px;height:44px;padding:0 14px;pointer-events:auto;border:1px solid #cfbf8d50;border-radius:9px;background:var(--hud-glass);color:#e2d2ad;box-shadow:0 5px 18px #0003}
 .playing #combat-menu-button::after{content:'전투 메뉴';font-size:11px;letter-spacing:.4px}
 .playing .menu-glyph span,.playing .menu-glyph span::before,.playing .menu-glyph span::after{content:'';position:relative;display:block;width:13px;height:2px;border-radius:1px;background:#dcc99b}
 .playing .menu-glyph span::before{position:absolute;top:-5px}.playing .menu-glyph span::after{position:absolute;top:5px;width:9px}
 .playing .upgrade-heading{background:var(--hud-glass);border-color:#cfbf8d55}
 .playing .upgrade-card{background:linear-gradient(135deg,#223329f5,#0e211bf5);border-color:#d1c49055;border-radius:10px}
 .playing .upgrade-card:hover{background:#2c4030;border-color:#f0d39a}.playing .upgrade-card strong{color:#f5e8c7}.playing .upgrade-card small{color:#c4d0bc}
 .playing #toast,.playing .supply-reward{bottom:158px}
}
@media(min-width:1025px) and (max-width:1200px) and (min-height:601px) and (not (any-pointer:coarse)){
 .playing #player-hud{width:205px}.playing #tower-hud,.playing .xp{width:238px}.playing .round-top{min-width:166px;gap:10px;padding:10px}.playing .timer{padding-right:10px}.playing #tower-status{font-size:8px}
 .playing .bottom-hud>div:first-child{padding:8px}.playing .weapon-slot{width:40px;height:44px}.playing #combat-menu-button{min-width:100px}
}
@media(prefers-reduced-motion:reduce){#hud button{transition:none!important}}
@media(min-width:1025px) and (min-height:601px) and (max-height:800px) and (not (any-pointer:coarse)){
 .playing .upgrade-wrap{top:196px;max-height:calc(100dvh - 286px)}
 .playing .upgrade-heading{display:grid;grid-template-columns:1fr auto;gap:5px;padding:10px;border-radius:10px}
 .playing .upgrade-heading>.eyebrow{display:none}.playing .upgrade-heading h2{font-size:15px;margin:0}.playing .upgrade-heading p{margin:0;font-size:10px}
 .playing .upgrade-heading .reroll-button{grid-column:1/-1;min-height:30px;margin-top:3px;padding:6px}
 .playing .upgrade-card{min-height:86px;padding:9px 10px 9px 57px}.playing .upgrade-card>.skill-art{width:38px;height:38px;left:9px;top:25px}
 .playing .upgrade-card .skill-kind{margin-bottom:4px}.playing .upgrade-card strong{font-size:11px}.playing .upgrade-card small{font-size:9px;line-height:1.4}.playing .upgrade-card em{margin-top:4px;font-size:8px}
}

/* World-anchored support: readable icons beside the object being controlled. */
#relief-panel.tower-actions{position:fixed;z-index:8;width:220px;transform:translate(-50%,-100%);pointer-events:auto;padding:10px 12px 9px;border:1px solid #a9cebf70;border-radius:14px;background:linear-gradient(145deg,#19372cf5,#0a1b18f5);box-shadow:0 8px 24px #0006,inset 0 1px #e1ffe811;text-align:center;touch-action:manipulation}
#relief-panel.tower-actions[hidden]{display:none}
.tower-actions::after{content:'';position:absolute;left:calc(50% - 5px);bottom:-6px;width:10px;height:10px;background:#0a1b18;transform:rotate(45deg);border-right:1px solid #a9cebf70;border-bottom:1px solid #a9cebf70;pointer-events:none}
#relief-label{display:block;font-size:11px;line-height:1.4;letter-spacing:.3px;color:#d7f5df}
.tower-action-icons{display:flex;justify-content:center;gap:8px;margin:8px 0 6px}
.tower-action-icons button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:54px;height:56px;padding:5px;border-radius:11px;border:1px solid #c8ddae70;background:linear-gradient(#35533e,#233b30);color:#d9f9d9;box-shadow:inset 0 1px #edffde17;transition:background .15s,transform .15s}
.tower-action-icons #relief-repair{color:#ffe0a4;border-color:#d6bc7666;background:linear-gradient(#54472d,#352f22)}
.tower-action-icons #relief-barrier{color:#bceeff;border-color:#80c2d377;background:linear-gradient(#294650,#1c323b)}
.tower-action-icons button svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}
.tower-action-icons button span{font-size:10px;font-weight:700;line-height:1.2;pointer-events:none}
.tower-action-icons button{position:relative}
.tower-action-icons button kbd{position:absolute;top:-6px;right:-4px;display:grid;place-items:center;width:20px;height:20px;margin:0;padding:0;border:1px solid currentColor;border-bottom-width:2px;border-radius:5px;background:#0a1b18;color:#fff0bd;font:700 12px monospace;line-height:1;box-shadow:0 2px 5px #0006;pointer-events:none}
.tower-action-icons button:enabled:hover{filter:brightness(1.22);transform:translateY(-2px)}
.tower-action-icons button:enabled:active{transform:translateY(1px);filter:brightness(1.4)}
.tower-action-icons button:disabled{opacity:.38;filter:saturate(.3);cursor:default}
#relief-hint{display:block;color:#b5cbbd;font-size:9px;line-height:1.4;margin:0}
.tower-actions.available{box-shadow:0 8px 24px #0006,0 0 18px #8fdfb315!important}
@media(max-height:600px){#relief-panel.tower-actions{padding:6px 10px;width:208px}.tower-action-icons{margin:5px 0}.tower-action-icons button{height:48px;width:52px}.tower-action-icons button svg{width:21px;height:21px}}

@media(max-height:600px) and (orientation:landscape){#relief-panel.tower-actions #relief-hint{display:none}.tower-action-icons{margin:3px 0 0}#relief-label{font-size:10px}.tower-action-icons button span{font-size:9px}}

#relief-panel.tower-actions.empty{width:auto;min-width:156px;max-width:220px;padding:8px 12px;border-color:#a9cebf38;background:#10241ee8}
.tower-actions.empty .tower-action-icons{display:none}
.tower-actions.empty #relief-hint{margin-top:3px}

#boss-tip{display:block;margin-top:5px;font-size:10px;line-height:1.4;color:#ffe0b9;text-shadow:0 1px 3px #000,0 0 6px #000}#boss-tip.opening{color:#bdeedc}

/* Prevent accidental page selection while retaining normal text editing. */
body{-webkit-user-select:none;user-select:none}
input,textarea,[contenteditable="true"]{-webkit-user-select:text;user-select:text}

@media(max-height:500px) and (orientation:landscape){.down-notice{bottom:max(12px,env(safe-area-inset-bottom));padding:8px 14px;font-size:14px}.down-notice span{margin-top:3px;font-size:10px}}

/* Session chat stays compact until explicitly opened. */
#combat-chat{position:fixed;left:50%;bottom:max(12px,env(safe-area-inset-bottom));transform:translateX(-50%);z-index:18;pointer-events:auto}
#chat-toggle{padding:6px 12px;font-size:11px;background:#12221ce6;border-color:#c7c69a66}
#chat-toggle kbd{margin-left:5px;font-size:9px;opacity:.65}
#chat-form{position:absolute;left:50%;bottom:36px;transform:translateX(-50%);display:flex;gap:5px;width:min(390px,calc(100vw - 24px));padding:8px;background:#10221bf5;border:1px solid #c7c69a88;border-radius:10px}
#chat-input{flex:1;min-width:0;width:0;padding:9px;font-size:16px}
#chat-form button{flex:none;padding:7px 10px;font-size:12px}
@media(max-width:760px){#chat-toggle kbd{display:none}}
@media(min-width:1025px) and (min-height:601px) and (not (any-pointer:coarse)){#combat-chat{left:calc(50% + 175px);bottom:24px}#chat-form{left:auto;right:0;transform:none}}

#game-settings{width:min(470px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:26px;border:1px solid #cdb47d88;border-radius:14px;background:#10221b;color:#ecebd7;overflow:auto}
#game-settings::backdrop{background:#020b09bf;backdrop-filter:blur(5px)}
#game-settings h2{font-size:24px;margin-bottom:10px}#game-settings fieldset{border:1px solid #b7c8a333;border-radius:8px;padding:14px;margin:18px 0 0}
#game-settings legend{padding:0 7px;font-size:12px;color:#dbc48e}#game-settings fieldset>label{display:block;font-size:12px;margin:10px 0 16px;line-height:1.6}
#game-settings .volume-setting{display:grid;grid-template-columns:1fr auto;gap:5px 12px}#game-settings output{font:12px monospace;color:#ddcc9e}
#game-settings input[type=range]{grid-column:1/-1;width:100%;padding:0;height:22px;accent-color:#d7c28e;cursor:pointer}
#game-settings button:not(.close-button){padding:9px 12px;font-size:12px}#game-settings .close-button{position:absolute;right:16px;top:14px}

#upgrade .upgrade-synergy{display:block;padding:5px 7px;border-left:2px solid #91c5b5;background:#94d2bc12;color:#b7e7d5;font-size:10px;line-height:1.5}#upgrade .upgrade-synergy.ready{border-color:#edce8c;background:#e9c5811c;color:#ffe0a0}

/* Upgrade cards expose their evolution recipes as compact icon equations. */
#upgrade .upgrade-evolution-recipes{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:wrap;width:100%;min-height:44px;margin:7px 0 0;padding:5px;border:1px solid #9d86b73d;border-radius:7px;background:linear-gradient(135deg,#34274487,#15162573)}
#upgrade .upgrade-evolution-item{position:relative;display:grid;place-items:center;width:34px;height:34px;padding:3px;border:1px solid #b29bcf82;border-radius:7px;background:#30263f;box-shadow:inset 0 1px #e2d4ff1f,0 2px 5px #0004;opacity:.88}
#upgrade .upgrade-evolution-item.owned{border-color:#cab7df;opacity:1}#upgrade .upgrade-evolution-item.met{border-color:#bfe6a5;background:#263b2d;opacity:1;box-shadow:0 0 8px #a6db8547}
#upgrade .upgrade-evolution-item.ready{border-color:#f2d18e;background:#62502b;box-shadow:0 0 11px #efc66857,inset 0 1px #fff1bd2e;opacity:1}
#upgrade .upgrade-evolution-item>.skill-art{display:block;position:static;width:27px;height:27px;margin:0;filter:drop-shadow(0 2px 3px #0009)}
#upgrade .upgrade-evolution-item.met::after{content:'✓';position:absolute;right:-4px;bottom:-4px;display:grid;place-items:center;width:11px;height:11px;border:1px solid #1b3120;border-radius:50%;background:#bddf91;color:#17301d;font:800 8px sans-serif}
#upgrade .upgrade-card:has(.upgrade-evolution-recipes) .upgrade-synergy{display:none}
@media(orientation:landscape) and (max-height:600px){
 #upgrade .upgrade-evolution-recipes{min-height:32px;margin-top:3px;padding:3px;gap:5px}
 #upgrade .upgrade-evolution-item{width:27px;height:27px;padding:2px}
 #upgrade .upgrade-evolution-item>.skill-art{width:22px;height:22px}
}
@media(min-width:600px) and (min-height:600px) and (max-width:1024px),(min-width:600px) and (min-height:600px) and (any-pointer:coarse){
 #upgrade .upgrade-evolution-recipes{min-height:48px;margin-top:5px;gap:8px}
 #upgrade .upgrade-evolution-item{width:38px;height:38px}
 #upgrade .upgrade-evolution-item>.skill-art{width:31px;height:31px}
}

#deployment-modal .selected-mastery{font-size:10px;line-height:1.6;margin:6px 0 0;color:#e5cd95}

/* Recipes remain readable with six evolutions, including on touch screens. */
.playing .build-guide,.playing .build-guide[open]{width:auto;max-height:none;overflow:visible}
.playing .build-guide summary{display:flex;align-items:center;gap:8px;height:38px;min-height:38px;padding:0 12px;font-size:11px;list-style:none}
.playing .build-guide summary::before{content:'✦';color:#dbbeff}.playing .build-guide summary::after{content:'+';font-size:16px}.playing .build-guide[open] summary::after{content:'×'}
.playing #evolution-guide{position:absolute;bottom:46px;left:0;width:min(380px,calc(100vw - 32px));max-height:min(510px,calc(100dvh - 255px));overflow:auto;overscroll-behavior:contain;background:#10231cf7;border:1px solid #b7bc8977;border-radius:10px;box-shadow:0 8px 25px #0007}
.recipe-intro{padding:12px;margin:0;font-size:11px;color:#c3d0bc;line-height:1.6}.evolution-item header{display:flex;gap:8px;align-items:center}.evolution-item header>.skill-art{width:30px;height:30px;flex:none}.evolution-item header>strong{font-size:12px;flex:1}.evolution-item header>span{font-size:10px;color:#a9b9aa}.evolution-item.unlocked header>span{color:#d4ecac}.evolution-item.in-progress{border-left:2px solid #a394c9}
.evolution-recipe{display:flex;gap:7px;align-items:center;margin:10px 0}.recipe-part{display:flex;gap:6px;align-items:center;flex:1;min-width:0;padding:7px 5px;background:#07171088;border:1px solid #82998344;border-radius:6px}.recipe-part.met{border-color:#abcba17a;background:#29453477}.recipe-part>.skill-art{width:28px;height:28px;flex:none}.recipe-part>span{font-size:10px;line-height:1.5}.recipe-part b{display:block;color:#cdb3ee;font:11px monospace}.recipe-part.met b{color:#cceea9}.recipe-plus{color:#c2b089}
#active-evolutions{position:fixed;left:22px;bottom:177px;display:flex;gap:5px;max-width:300px;flex-wrap:wrap;pointer-events:none}.active-evolution{display:flex;align-items:center;gap:4px;padding:4px 6px;border:1px solid #c5a0ed77;border-radius:6px;background:#1c2631e8;font-size:9px;color:#e7d8ff}.active-evolution>.skill-art{width:22px;height:22px}
#evolution-alert{position:fixed;right:22px;top:185px;display:flex;gap:12px;align-items:center;width:min(320px,calc(100vw - 28px));padding:14px;background:#18242ff2;border:1px solid #cfb5ff;border-radius:12px;box-shadow:0 8px 25px #0006;pointer-events:none;z-index:12}
#evolution-alert>.skill-art{width:48px;height:48px;flex:none}#evolution-alert small{display:block;color:#d3b8f1;font-size:10px}#evolution-alert strong{display:block;margin:4px 0;color:#fff0ce;font-size:17px}#evolution-alert p{font-size:11px;line-height:1.6;margin:0;color:#d7e1d4}
/* Touch feedback uses the existing recipe button; full descriptions remain inside its guide. */
@media(max-width:1024px),(max-height:600px),(any-pointer:coarse){
 .playing #active-evolutions,.playing #evolution-alert{display:none}
 .playing .build-guide{--evolution-control-height:44px;max-width:min(280px,calc(100vw - var(--edge-left) - var(--edge-right)))}
 .playing .build-guide.evolution-complete{width:max-content;border-color:#e8d294;background:#344a2cf2;box-shadow:0 0 0 1px #e8d29433}
 .playing .build-guide.evolution-complete summary{display:block;max-width:100%;height:var(--evolution-control-height);min-height:var(--evolution-control-height);padding:0 12px;line-height:var(--evolution-control-height);color:#fff0bf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
 .playing .build-guide.evolution-complete summary::before{content:'✓';display:inline-block;width:16px;height:auto;margin-right:6px;font-size:14px;mask:none;background:none;color:#c8f5af}
 .playing .build-guide.evolution-complete summary::after{content:none}
}
@media(orientation:landscape) and (max-height:600px){
 .playing .build-guide,.playing .build-guide[open],.playing .build-guide.evolution-complete{width:44px;min-width:44px;max-width:44px}
 .playing .build-guide summary,.playing .build-guide.evolution-complete summary{display:block;height:44px;min-height:44px;line-height:44px;padding:0;font-size:0;text-align:center;overflow:hidden}
 .playing .build-guide summary::before{content:'✦';font-size:22px;margin:0}
 .playing .build-guide[open] summary::before{content:'×'}
 .playing .build-guide.evolution-complete summary::before{width:22px;margin:0;font-size:22px}
 body.playing .build-guide[open] summary::before{mask-image:var(--ui-x-mark)}
 .playing .build-guide summary::after{content:none}
}
@media(min-width:1025px) and (min-height:601px) and (not (any-pointer:coarse)){#active-evolutions{bottom:220px}}
.playing:has(#build-guide[open]) #active-evolutions{visibility:hidden}

.playing .build-guide[open]{z-index:25}

/* Evolution routes keep base, final and three-part recipes independently scannable. */
.playing #evolution-guide .recipe-group>summary{display:flex;justify-content:space-between;gap:8px;padding:12px;color:#d5e7b2;font-size:11px;border-bottom:1px solid #9cad7840;cursor:pointer}
.playing #evolution-guide .recipe-group>summary::after{content:none}
.playing #evolution-guide .recipe-group>summary b{font-size:10px;color:#a7b799}
.playing .evolution-item[data-tier=final]{border-left:3px solid #f2d493}
.playing .evolution-item[data-tier=triple]{border-left:3px solid #c5a6ed}
.playing .evolution-item[data-tier=triple] .evolution-recipe{flex-wrap:wrap;gap:5px}
.playing .active-evolution[data-tier=final]{border-color:#f2d493;color:#ffe8ac}
.playing .active-evolution[data-tier=triple]{border-color:#b79bdc;color:#dec7ff}

/* Keyboard navigation keeps focus visible inside clipped panels. */
#upgrade .upgrade-card:disabled{opacity:.6}#upgrade-cards[aria-busy=true] .upgrade-card{cursor:progress}
#upgrade :focus-visible{outline:3px solid #ffe1a0;outline-offset:-3px}
#loadout:focus-visible,#evolution-guide:focus-visible{outline:2px solid #ffe1a0;outline-offset:2px}
#world:focus{outline:none}
.playing .skip-to-content{display:none}
.playing.upgrade-minimized #upgrade .upgrade-scroll,.playing.upgrade-minimized #upgrade .upgrade-tap-hint{display:none}
.playing.upgrade-minimized #upgrade-toggle{transform:rotate(180deg)}
@media(min-width:1025px) and (min-height:601px) and (not (any-pointer:coarse)){
 .playing #upgrade-toggle{display:inline-grid;place-items:center;width:44px;height:44px;pointer-events:auto;float:right;margin-top:-44px}
 .playing #upgrade .reroll-button{max-width:calc(100% - 48px)}
 .playing #combat-menu-button::after{content:'전투 메뉴 · Esc'}
 .playing.gear-open #loadout{outline:1px solid #ead49b}
}
/* Multitouch actions must not become a browser pan/zoom gesture. Detail text can scroll. */
#upgrade-cards,.upgrade-card,#upgrade-toggle,#reroll-button,.tower-action-icons button{touch-action:none}
@media(max-width:1024px),(any-pointer:coarse),(orientation:landscape) and (max-height:600px){
 .playing .mobile-tool{width:44px;height:44px}
 .playing .round-top{right:calc(var(--edge-right) + 52px)}
 .playing #upgrade .upgrade-heading{height:auto;min-height:44px}
 .playing #upgrade .reroll-button,.playing #upgrade-toggle{min-width:44px;min-height:44px;height:44px;touch-action:none}
 .playing #upgrade .upgrade-card{touch-action:none}
 .playing #tactical-hud .tactical-summary{min-height:44px}
 .playing #chat-toggle{min-height:44px;min-width:64px}
 .playing #chat-form{bottom:52px}
 .playing #chat-form button{min-width:44px;min-height:44px}
 .playing.choosing #combat-chat{bottom:calc(var(--edge-bottom) + 126px)}
 .playing #upgrade .upgrade-synergy{font-size:10px;padding:3px;line-height:1.35}
}
/* Tablets reserve separate thumb zones; a keyboard or mouse can remain connected. */
@media(orientation:landscape) and (max-height:600px){
 .playing.choosing #combat-chat{left:auto;right:var(--edge-right);bottom:calc(var(--edge-bottom) + 150px);transform:none}
}
@media(min-width:600px) and (min-height:600px) and (max-width:1024px),(min-width:600px) and (min-height:600px) and (any-pointer:coarse){
 body.playing{--edge-left:max(28px,env(safe-area-inset-left));--edge-right:max(28px,env(safe-area-inset-right));--edge-top:max(20px,env(safe-area-inset-top));--edge-bottom:max(28px,env(safe-area-inset-bottom))}
 .playing #player-hud{height:52px;width:calc(36% - 28px);gap:12px}
 .playing #player-portrait{width:44px;height:50px}
 .playing #player-health{font-size:15px}
 .playing #player-hud .health-bar{height:9px}
 .playing #tower-hud{left:39%;width:25%;top:calc(var(--edge-top) + 6px)}
 .playing #tower-percent{font-size:16px}
 .playing #tower-hud .health-bar{height:7px}
 .playing .round-top{right:calc(var(--edge-right) + 64px)}
 .playing .timer strong{font-size:24px}
 .playing .kill-counter strong{font-size:12px}
 .playing .xp{top:calc(var(--edge-top) + 62px);font-size:11px}
 .playing .xp .bar{height:4px}
 .playing .mobile-tool{width:52px;height:52px;border-radius:13px}
 .playing #joystick{left:var(--edge-left);bottom:var(--edge-bottom);width:160px;height:160px;opacity:.9;border-width:2px;box-shadow:inset 0 0 28px #07120b70,0 4px 18px #0003}
 .playing #joystick>div{left:calc(50% - 28px);top:calc(50% - 28px);width:56px;height:56px}
 .playing #hud .bottom-hud .dash-status{width:120px;bottom:var(--edge-bottom);right:var(--edge-right)}
 .playing #hud .bottom-hud .ability-status{width:100px;right:calc(var(--edge-right) + 140px);bottom:calc(var(--edge-bottom) + 55px)}
 .playing #dash-button{height:120px}
 .playing #ability-button{height:100px}
 .playing .action-name,.playing #ability-name{font-size:13px;padding:4px 8px}
 .playing #dash-time,.playing #ability-time{font-size:25px}
 .playing #gear-toggle{top:auto;left:var(--edge-left);right:auto;bottom:calc(var(--edge-bottom) + 242px)}
 .playing .build-guide,.playing .build-guide[open]{top:auto;left:var(--edge-left);right:auto;bottom:calc(var(--edge-bottom) + 178px)}
 .playing .build-guide summary{min-height:52px;height:52px;font-size:13px;padding:0 14px}
 .playing #loadout{top:auto;left:calc(var(--edge-left) + 64px);right:auto;bottom:calc(var(--edge-bottom) + 242px);max-width:calc(100vw - 150px);max-height:170px;padding:10px}
 .playing .weapon-slot{width:60px;height:66px}
 .playing .weapon-slot>.skill-art{width:42px;height:42px}
 .playing .weapon-slot small{display:block;font-size:9px}
 .playing #evolution-guide{left:0;right:auto;top:auto;bottom:62px;width:min(420px,calc(100vw - 72px));max-height:calc(100dvh - 340px)}
 .playing .build-guide{--evolution-control-height:52px}
 .playing #tactical-hud.tactical-hud,.playing.squad-play #tactical-hud.tactical-hud,.playing:has(#boss-hud:not([hidden])) #tactical-hud.tactical-hud{top:calc(var(--edge-top) + 86px);width:290px}
 .playing #tactical-hud .tactical-summary{min-height:52px;gap:12px}
 .playing .tactical-summary::before{width:48px;height:48px}
 .playing #tactical-hud #assault-status{font-size:13px;max-width:225px}
 .playing .team{top:calc(var(--edge-top) + 90px);width:114px}
 .playing .member-heading{font-size:11px}
 .playing #boss-hud{top:calc(var(--edge-top) + 146px)}
 .playing #upgrade{top:calc(var(--edge-top) + 92px);left:var(--edge-left);right:var(--edge-right);bottom:auto;max-width:680px;border-radius:16px}
 .playing #upgrade .upgrade-heading{min-height:58px;gap:12px;padding:0 14px}
 .playing #upgrade .upgrade-heading h2{font-size:17px}
 .playing #choice-time{font-size:19px}
 .playing #upgrade .choice-unit{font-size:13px}
 .playing #upgrade .reroll-button,.playing #upgrade-toggle{min-width:48px;min-height:48px;height:48px;font-size:17px}
 .playing #upgrade .upgrade-scroll{padding:10px 10px 0}
 .playing #upgrade-cards{gap:10px}
 .playing #upgrade .upgrade-card{min-height:134px;padding:10px 6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px}
 .playing #upgrade .upgrade-card>.skill-art{width:52px;height:52px;margin:0 auto}
 .playing #upgrade .skill-kind{font-size:11px;margin:0}
 .playing #upgrade .upgrade-card strong{font-size:15px;line-height:1.4}
 .playing #upgrade .upgrade-card em{font-size:10px;margin:0}
 .playing #upgrade .upgrade-synergy{font-size:11px;line-height:1.4}
 .playing #upgrade .upgrade-card small{font-size:12px;line-height:1.45;-webkit-line-clamp:3}
 .playing #upgrade .upgrade-tap-hint{font-size:12px;padding:7px 12px 9px}
 .playing.upgrade-minimized #upgrade{width:280px}
 .playing.choosing #boss-hud{top:calc(var(--edge-top) + 424px)}
 .playing.upgrade-minimized #boss-hud{top:calc(var(--edge-top) + 158px)}
 .playing #combat-chat,.playing.choosing #combat-chat{bottom:var(--edge-bottom);left:50%;transform:translateX(-50%)}
 .playing #chat-toggle{font-size:14px;min-height:48px;min-width:80px}
 .playing #chat-form{width:min(480px,calc(100vw - 56px));bottom:60px}
 #game-settings input[type=range]{height:44px}
 #game-settings fieldset>label{min-height:44px;font-size:14px;display:flex;align-items:center;gap:10px}
 #game-settings .volume-setting{display:grid}
 #game-settings input[type=checkbox]{width:24px;height:24px;flex:none}
 #game-settings button,.sanya-site #deployment-modal button,dialog .close-button{min-height:48px;min-width:48px}
 #combat-menu{width:min(420px,calc(100vw - 56px))}
 #combat-menu>button{min-height:54px;font-size:16px}
}
@media(min-width:900px) and (min-height:600px) and (max-width:1024px) and (orientation:landscape),(min-width:900px) and (min-height:600px) and (any-pointer:coarse) and (orientation:landscape){
 .playing #upgrade{top:auto;bottom:var(--edge-bottom);left:calc(var(--edge-left) + 180px);right:calc(var(--edge-right) + 260px);max-width:680px}
 .playing #upgrade .upgrade-heading{gap:7px;padding-inline:10px}
 .playing #upgrade .upgrade-heading h2{font-size:15px}
 .playing #upgrade .upgrade-card strong{font-size:13px}
 .playing #upgrade .upgrade-card>.skill-art{width:44px;height:44px}
 .playing #upgrade .upgrade-synergy{font-size:10px}
 .playing #upgrade .upgrade-card{min-height:122px}
 .playing #upgrade .upgrade-card small{font-size:11px;-webkit-line-clamp:2}
 .playing.upgrade-minimized #upgrade{left:calc(var(--edge-left) + 180px)}
 .playing #boss-hud,.playing.choosing #boss-hud{top:calc(var(--edge-top) + 95px);left:35%;right:26%}
 .playing.choosing #combat-chat{left:auto;right:var(--edge-right);bottom:calc(var(--edge-bottom) + 182px);transform:none}
}

/* Role ability atlas cells are shared with selection in ui-icons.css. */
.skill-art.skill-water{background-image:url("/assets/web/art-water-controls.3f963c5302cbed43.webp");background-size:200% 100%;background-position:0 0}

/* Short, non-interactive cues stay next to Q in every control layout. */
.ability-status{position:relative}
#primary-link-status{position:absolute;bottom:calc(100% + 7px);right:0;width:max-content;max-width:190px;padding:6px 9px;border:1px solid #9edbc3;border-radius:7px;background:#10291ff5;color:#e0fff2;font-size:11px;line-height:1.4;pointer-events:none;text-align:center;box-shadow:0 2px 8px #0005}
.playing .evolution-item.role-locked{border-left:3px solid #737e78;background:#18241ff0}
.playing .evolution-item.role-locked header>span{color:#d2c9b7}
.playing .evolution-item .recipe-owner{margin:7px 0 0;font-size:10px;line-height:1.5;color:#e4c995}
#game-recovery{box-sizing:border-box;width:min(460px,calc(100vw - 32px));max-height:calc(100dvh - 32px);padding:28px;border:1px solid #cdb47d88;border-radius:16px;background:linear-gradient(145deg,#23352d,#10221b);color:#ecebd7;box-shadow:0 24px 100px #0009;overflow:auto;overscroll-behavior:contain}
#game-recovery::backdrop{background:#020b09c9;backdrop-filter:blur(5px)}
#game-recovery .recovery-symbol{display:grid;place-items:center;width:48px;height:48px;margin-bottom:20px;border:1px solid #dbc48e55;border-radius:14px;background:#dbc48e12;color:#edcf92}
#game-recovery .recovery-symbol svg{width:26px;height:26px}
#game-recovery .eyebrow{margin:0 0 9px;color:#dbc48e;font-size:11px;letter-spacing:1px}
#game-recovery h2{margin:0 0 16px;font-size:23px;line-height:1.45;word-break:keep-all}
#game-recovery p{font-size:14px;line-height:1.8;word-break:keep-all;overflow-wrap:anywhere}
#game-recovery .recovery-hint{padding:14px;margin:18px 0 22px;border:1px solid #b7c8a32b;border-radius:8px;background:#06191066;color:#b8c5b6;font-size:12px}
#game-recovery .recovery-actions{display:grid;gap:9px}
#game-recovery button{width:100%;min-height:48px;border-radius:8px;font-size:14px;justify-content:center;align-items:center;text-align:center}
#game-recovery .recovery-leave{color:#dca28a;background:transparent;border-color:transparent}
#game-recovery button:focus-visible{outline:2px solid #ffe2a0;outline-offset:3px}
@media(max-width:400px){#game-recovery{padding:22px}#game-recovery h2{font-size:21px}}

/* Support contributions stay visible beside damage in the main result cards. */
#result-team{grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr))}
.result-support{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:13px 0 0;padding:10px 0;border-block:1px solid #a5c4a92b}
.result-support dt{font-size:10px;color:#b3c5b4;white-space:nowrap}
.result-support dd{margin:5px 0 0;font:17px monospace;color:#e0edcd;overflow-wrap:anywhere}
.result-support dd small{font:10px Pretendard,sans-serif;margin-left:2px;color:#a6bca7}
#result-team .result-cause{padding-top:9px;border-top:1px solid #ce9c7630;line-height:1.6;color:#c8b9a1}
.result-cause span,.result-cause b,.result-cause small{display:block;overflow-wrap:anywhere}
.result-cause b{font-size:11px;color:#e1c5aa;font-weight:500;margin:3px 0}
.result-cause small{font-size:10px;color:#a69c8c}
#result .result-support-note{font-size:10px;line-height:1.7;color:#a0b49f}
@media(max-width:600px){.result-member-portrait{width:64px}.result-member-data{padding:12px}.result-support{gap:5px}.result-support dd{font-size:16px}}

/* Rescue copy follows the actual proximity state; only active rescue counts down. */
.down-notice strong{font-weight:600}.down-notice> b{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.down-notice .bar{width:min(220px,100%);height:4px;margin:9px auto 0;background:#edb78530}.down-notice .bar i{background:#edb785;transition:width .1s linear}
.down-notice[data-status=active]{border-color:#a9edbd99;background:#10291fea;color:#c4f3d1}.down-notice[data-status=active] .bar i{background:#a9edbd}
.down-notice[data-status=interrupted]{border-color:#eda87599}.down-notice[data-status=interrupted] .bar i{background:#eda875}
@media(prefers-reduced-motion:reduce){.down-notice .bar i{transition:none}}
@media(max-width:1024px) and (orientation:portrait),(any-pointer:coarse) and (orientation:portrait){
 .playing .down-notice{left:auto;right:var(--edge-right,12px);transform:none;bottom:calc(var(--edge-bottom,12px) + 145px);max-width:calc(100vw - 165px)}
 .playing .down-notice span{line-height:1.5}
}
@media(max-height:600px) and (orientation:landscape){
 .playing .down-notice{bottom:calc(var(--edge-bottom,12px) + 65px);background:#16251af5}
}

.voice-language-setting{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:16px 0}.voice-language-setting select{font:inherit;color:inherit;background:#12241b;border:1px solid #54715c;border-radius:6px;padding:8px 12px;max-width:60%}

#game-settings .sound-setting{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 16px;font-size:12px}
#game-settings .sound-setting button{min-height:44px;min-width:96px}
