@font-face{font-family:'Barlow Condensed';font-style:normal;font-weight:500 800;font-display:swap;src:url('/vendor/barlow-condensed.ttf') format('truetype')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url('/vendor/dm-sans.ttf') format('truetype')}
:root{color-scheme:dark;--bg:#080f16;--panel:#0e1821;--line:#23313c;--muted:#8c9fae;--text:#edf5f8;--mint:#9cf3d3;--purple:#bb91fc;font-family:'DM Sans',Arial,sans-serif;color:var(--text);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:1px solid var(--line);background:transparent;border-radius:8px;transition:background .2s,border-color .2s,transform .2s}button:hover{background:#1c303c;border-color:#607d8a}button:focus-visible,a:focus-visible{outline:2px solid var(--mint);outline-offset:4px}button:disabled{opacity:.5;cursor:wait}a{color:var(--mint)}.hidden{display:none!important}.topbar{height:94px;display:flex;align-items:center;justify-content:space-between;padding:0 40px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--text);font-size:20px;letter-spacing:-.7px;font-weight:700}.brandmark{height:42px;width:42px;display:grid;place-items:center;border:1px solid #72988f;border-radius:12px;color:var(--mint);font-size:30px;background:#18342f}.brand .light{font-weight:400}.brand small{display:block;font-size:10px;letter-spacing:3px;color:var(--muted);margin-top:5px}.topcenter{font-size:11px;letter-spacing:1.8px;display:flex;align-items:center;gap:10px;color:var(--muted)}.live-dot{width:6px;height:6px;display:inline-block;border-radius:50%;background:var(--mint);box-shadow:0 0 12px #97edcf50}.topactions{display:flex;gap:16px}.iconbutton{border:0;font-size:20px;min-width:40px;min-height:40px;padding:6px}.iconbutton span{font-size:13px;margin-left:6px}main{display:grid;grid-template-columns:390px 1fr;min-height:calc(100svh - 154px)}.mission-panel{padding:33px 30px 20px 40px;border-right:1px solid var(--line);background:linear-gradient(140deg,#111e27,#0b141c)}.eyebrow{font-size:10px;font-weight:600;letter-spacing:1.8px;color:var(--muted)}.tinycross{color:var(--mint);margin-right:7px}h1{font-family:'Barlow Condensed','Arial Narrow',sans-serif;font-size:45px;line-height:1.03;letter-spacing:-.5px;margin:18px 0 14px;font-weight:600}h1 em{font-style:normal;color:var(--mint)}.intro{font-size:14px;line-height:1.65;color:#9db0bc;margin:0}.mode-meta{display:flex;align-items:center;gap:13px;margin:22px 0 27px;color:#aab8c0;font-size:10px;letter-spacing:1px}.mode-meta i{width:3px;height:3px;background:#617583;border-radius:50%}.section-label{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.section-label h2{font-size:14px;font-weight:500;margin:0}.section-label>span{font-size:10px;color:var(--muted);letter-spacing:1px}.medic-list{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.medic{position:relative;height:72px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border-radius:8px;background:#17222c;color:#9bb0bd}.medic .medic-symbol{font-size:24px;line-height:1}.medic small{font-size:9px;text-transform:uppercase;letter-spacing:.5px}.medic.active{border-color:var(--mint);color:var(--mint);background:#18382f}.medic.active:after{content:'';position:absolute;top:5px;right:5px;width:4px;height:4px;background:var(--mint);border-radius:50%}.medic-detail{display:flex;align-items:center;gap:11px;padding:13px 0 17px;border-bottom:1px solid var(--line)}.medic-detail>span{font-size:25px;color:var(--mint)}.medic-detail strong{font-size:12px;font-weight:500}.medic-detail p{font-size:11px;color:var(--muted);line-height:1.5;margin:3px 0 0;max-width:240px}.medic-detail kbd{margin-left:auto}kbd{font-family:inherit;font-size:10px;border:1px solid #42515c;padding:2px 5px;border-radius:4px;color:#aab9c3}.stage-label{margin-top:21px}.stage-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.stage-grid button{height:33px;border-radius:5px;font-size:12px;font-weight:500;color:#9aaebb;background:#121f29}.stage-grid button.active{color:var(--bg);border-color:var(--mint);background:var(--mint)}.stage-grid button.completed:after{content:'·';margin-left:3px;color:#53ac92}.stage-description{display:flex;justify-content:space-between;font-size:11px;color:#99aebb;margin-top:10px}.stage-description span:last-child{color:var(--mint);font-size:9px;letter-spacing:1.2px}.primary{background:var(--mint);color:#10251f;border-color:var(--mint);font-weight:700}.primary:hover{background:#c2ffe9;color:#10251f;border-color:#c2ffe9}.launch{display:flex;justify-content:space-between;align-items:center;width:100%;height:49px;margin-top:24px;padding:0 18px;font-size:14px}.launch>span{font-size:23px;font-weight:400}.squad-buttons{display:flex;gap:8px;margin-top:9px}.squad-buttons button{flex:1;font-size:12px;height:39px;background:#12212a}.no-pressure{text-align:center;font-size:10px;color:#7f949f;margin:15px 0 0}.arena{position:relative;min-width:0;overflow:hidden;background:radial-gradient(ellipse at 48% 55%,#15303a,#07121c 70%);min-height:680px}.arena canvas{position:absolute;width:100%;height:100%;inset:0;touch-action:none;outline:none}.arena-vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 100px #030e1880}.arena-top{position:absolute;top:28px;left:30px;right:30px;display:flex;justify-content:space-between;pointer-events:none}.mission-badge{display:flex;align-items:center;gap:8px;font-size:10px;letter-spacing:1.3px;color:#9db5c1}.stage-badge{font-size:10px;letter-spacing:1.3px;color:#718d9e}.preview-info{position:absolute;top:100px;left:36px;pointer-events:none}.boss-tag{font-size:10px;letter-spacing:1.7px;color:#7894a4}.boss-tag span{color:var(--mint);margin:0 8px}.preview-info p{font-size:17px;color:#c4d8e1;line-height:1.6;font-weight:400;letter-spacing:-.2px}.orbit-label{position:absolute;right:35px;top:53%;font-size:9px;letter-spacing:2px;color:#83aaa9;writing-mode:vertical-rl;display:flex;align-items:center;gap:12px;pointer-events:none}.orbit-label span{display:inline-block;width:1px;height:50px;background:var(--mint)}.arena-bottom{position:absolute;bottom:32px;left:35px;right:35px;border-top:1px solid #42617055;padding-top:19px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.arena-bottom p{font-size:14px;color:#b6cbd4;margin:6px 0 0}.round-icon{width:40px;height:40px;border:1px solid #49726977;border-radius:50%;display:grid;place-items:center;color:var(--mint)}footer{min-height:60px;padding:12px 40px;display:flex;align-items:center;justify-content:space-between;gap:15px;border-top:1px solid var(--line);font-size:11px;color:#78909f}footer button{border:0;font-size:11px;color:#94a8b4;padding:8px}.footer-cross{color:var(--mint);margin-right:9px}.footnote{font-size:10px}.loading,.canvas-error{position:absolute;inset:0;display:grid;place-items:center;background:#0b1721;color:var(--mint);text-align:center;padding:30px}.hud{position:absolute;inset:0;pointer-events:none}.hud button{pointer-events:auto;background:#102632e8}.raid-top{position:absolute;top:65px;left:32px;right:32px;display:flex;align-items:center;gap:22px}.boss-health{flex:1;max-width:520px}.boss-health>div:first-child{display:flex;justify-content:space-between;font-size:11px;letter-spacing:1px;margin-bottom:9px}.bar{height:6px;border-radius:6px;background:#29414c;overflow:hidden}.bar i{display:block;height:100%;width:100%;background:var(--mint);transition:width .2s}.bar.purple i{background:#b897fc}.timer{font-variant-numeric:tabular-nums;font-size:26px;font-weight:500}.raid-bottom{position:absolute;bottom:35px;left:32px;right:32px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.player-card{width:230px;padding:15px;border-radius:10px;background:#0b1d29df;border:1px solid #3d596a66}.health-line{display:flex;justify-content:space-between;font-size:12px;margin-bottom:9px}.health-line>span:first-child{color:var(--mint)}.weapon-line{display:flex;justify-content:space-between;font-size:10px;letter-spacing:.6px;margin-top:12px}.combat-buttons{display:flex;gap:8px}.combat-buttons button{padding:11px 12px;font-size:10px;min-height:46px}.combat-buttons button.active{border-color:#8cdeb7;color:var(--mint)}.combat-buttons kbd{display:block;margin-top:5px}.combat-buttons button>span{display:block;margin-top:5px}.cheer{position:absolute;top:130px;left:15%;right:15%;text-align:center;font-size:14px;color:var(--mint);text-shadow:0 2px 8px #000;transition:opacity .5s}.danger{position:absolute;top:180px;left:20%;right:20%;text-align:center;color:#ffc58d;font-size:12px;letter-spacing:1px}.touchpad{display:none;position:absolute;bottom:140px;left:22px;grid-template-columns:repeat(3,42px);grid-template-rows:repeat(2,42px);gap:3px;pointer-events:auto}.touchpad button:first-child{grid-column:2}.touchpad button:nth-child(2){grid-column:1;grid-row:2}.touchpad button:nth-child(3){grid-column:2;grid-row:2}.touchpad button:nth-child(4){grid-column:3;grid-row:2}.playing main{grid-template-columns:1fr}.playing .mission-panel{display:none}.playing .arena{min-height:calc(100svh - 154px)}.playing .arena-top{top:22px}.toast{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);z-index:40;background:#19382ff2;border:1px solid #79b59d;border-radius:10px;padding:16px 24px;max-width:90vw;width:max-content;font-size:14px;color:#d1ffed;box-shadow:0 10px 40px #0005}dialog{background:#101e29;color:var(--text);border:1px solid #37505f;border-radius:18px;width:min(560px,92vw);max-height:88svh;padding:35px;box-shadow:0 20px 100px #0008}dialog::backdrop{background:#020911cc;backdrop-filter:blur(8px)}.close-modal{position:absolute;right:15px;top:12px;border:0;font-size:26px;padding:0 8px}dialog h2{font-family:'Barlow Condensed',sans-serif;font-size:36px;font-weight:600;margin:5px 0 12px}dialog p{color:#a7bdca;font-size:14px;line-height:1.65}dialog .eyebrow{color:var(--mint)}dialog label{display:block;font-size:14px;margin:20px 0 8px}dialog input,dialog select{width:100%;padding:13px 15px;border:1px solid #3c5665;border-radius:8px;color:var(--text);background:#0a1620}dialog .primary{padding:14px 20px;width:100%;margin-top:20px}dialog .secondary{padding:12px 20px;width:100%;margin-top:10px}dialog .hint{font-size:12px;color:#86a0b1}dialog .error{color:#ffbb9e;font-size:13px}.roomcode{font-size:40px;letter-spacing:8px;color:var(--mint);text-align:center;padding:18px;border:1px dashed #578677;border-radius:10px;margin:20px 0}.squad-member{padding:10px 0;border-bottom:1px solid var(--line);font-size:14px;display:flex;justify-content:space-between}.squad-member small{color:var(--muted)}.journal-item{padding:16px 0;border-top:1px solid var(--line)}.journal-item p{margin:0 0 8px}.journal-item a{font-size:12px}.journal-item small{display:block;color:#7e98a8;font-size:11px;margin-top:8px}.score-big{font-size:60px;letter-spacing:-2px;font-family:'Barlow Condensed',sans-serif;color:var(--mint)}.result-stats{display:flex;gap:30px;margin:18px 0}.result-stats div{font-size:12px;color:#8fa9b7}.result-stats strong{display:block;color:#e1f1f8;font-size:23px;margin-bottom:5px}.setting{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding:15px 0}.setting label{margin:0}.setting input{width:20px;height:20px;accent-color:var(--mint)}.setting select{width:auto}.instruction-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:13px;color:#a8bfce;margin:24px 0}.instruction-grid kbd{margin-right:8px}
@media(min-width:1500px){main{grid-template-columns:450px 1fr}.mission-panel{padding:44px 42px}.arena{min-height:780px}h1{font-size:54px}.medic{height:83px}.stage-grid button{height:38px}.stage-label{margin-top:28px}.launch{margin-top:30px}.topbar{height:100px}}
@media(max-width:1000px){.topcenter{display:none}.topbar{padding:0 24px;height:78px}main{grid-template-columns:330px 1fr}.mission-panel{padding:27px 22px}h1{font-size:40px}.preview-info{left:24px}.preview-info p{font-size:14px}.arena-top{left:24px;right:20px}.stage-badge{display:none}.arena-bottom{left:24px;right:24px}footer{padding:12px 24px}.footnote{display:none}.combat-buttons button{padding:9px}.playing .arena{min-height:calc(100svh - 138px)}}
@media(max-width:680px){.topbar{height:70px;padding:0 18px}.brand{font-size:16px}.brandmark{width:34px;height:34px;font-size:24px}.brand small{font-size:8px}.topactions{gap:5px}.topactions span{display:none}main{display:flex;flex-direction:column}.arena{order:-1;min-height:320px;height:40svh}.arena-top{top:20px;left:20px}.preview-info{top:52px;left:20px}.preview-info p{font-size:12px;line-height:1.5}.boss-tag{font-size:8px}.orbit-label{display:none}.arena-bottom{bottom:18px;padding-top:10px}.arena-bottom .eyebrow{font-size:8px}.arena-bottom p{font-size:11px}.round-icon{width:28px;height:28px}.mission-panel{padding:24px;border-right:0;border-top:1px solid var(--line)}h1{font-size:40px;margin:12px 0}.intro{display:none}.mode-meta{margin:15px 0 22px}.medic{height:69px}.medic small{font-size:10px}.medic-detail p{font-size:12px}.stage-grid{grid-template-columns:repeat(10,1fr);gap:4px}.stage-grid button{font-size:10px;height:31px}.launch{margin-top:19px}.no-pressure{font-size:11px}footer{padding:14px 18px;flex-wrap:wrap;font-size:10px;gap:8px}footer button{padding:0;font-size:10px}.playing .arena{height:calc(100svh - 112px);min-height:500px}.playing footer>span:first-child{display:none}.playing footer{justify-content:center;min-height:42px}.raid-top{left:18px;right:18px;gap:12px;top:56px}.timer{font-size:24px}.boss-health>div:first-child{font-size:9px}.raid-bottom{left:15px;right:15px;bottom:20px;gap:8px}.player-card{width:165px;padding:12px}.combat-buttons{gap:4px}.combat-buttons button{padding:9px 7px;font-size:9px}.combat-buttons kbd{font-size:8px}.touchpad{display:grid}.cheer{top:116px;left:12px;right:12px;font-size:12px}.danger{top:155px;left:10%;right:10%;font-size:10px}dialog{padding:28px 22px}.toast{bottom:60px;font-size:12px;padding:12px 18px}.setting label{font-size:13px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* Keep controls and guidance readable at comfortable browser text sizes. */
.eyebrow,.mode-meta,.section-label>span,.topcenter,.mission-badge,.stage-badge,.boss-tag{font-size:12px}
.intro,.arena-bottom p{font-size:16px}
.medic small{font-size:12px;letter-spacing:0}
.medic-detail strong,.medic-detail p,.stage-description,.stage-grid button,.squad-buttons button{font-size:14px}
.medic-detail p{line-height:1.4}.stage-grid button{min-height:38px}.stage-description span:last-child{font-size:12px}
.launch{font-size:16px}.no-pressure,footer,footer button,.footnote{font-size:12px}
.weapon-line,.combat-buttons button,.journal-item small,dialog .hint{font-size:12px}.health-line,.journal-item a{font-size:14px}
@media(max-width:1000px){.boss-tag,.mission-badge{font-size:10px}.topcenter{display:none}.medic small{font-size:11px}.medic-detail p{font-size:13px}.squad-buttons button{font-size:13px}}
@media(max-width:680px){.stage-grid{grid-template-columns:repeat(5,1fr);gap:7px}.stage-grid button{font-size:14px;min-height:40px}.medic small{font-size:12px}.medic-detail p{font-size:14px}.combat-buttons button{font-size:10px}.weapon-line{font-size:10px}.intro{display:none}.eyebrow{font-size:10px}.arena-bottom p{font-size:13px}.topactions{gap:1px}.boss-tag{font-size:9px}.stage-label>span{font-size:10px}.touchpad{grid-template-columns:repeat(3,46px);grid-template-rows:repeat(2,46px)}}
/* Second art direction: human guardians over vascular tissue. */
:root{--mint:#c9ef86;--bg:#0d1119;--panel:#172622}.topbar{height:82px}.brandmark{color:#d2f7a9;background:#243b30;border-color:#638575}.brand small{letter-spacing:2px}.topcenter{color:#d1dcbf;letter-spacing:2px}main{grid-template-columns:420px 1fr;align-items:stretch}.mission-panel{background:linear-gradient(145deg,#254735,#182b25 60%,#182820);padding:28px 28px 22px;border-color:#385046}.mission-panel h1{font-family:'DM Sans',sans-serif;font-size:29px;font-weight:700;letter-spacing:-1px;margin:17px 0 8px}.mission-panel .intro{font-size:14px;margin-bottom:19px}.ready-count{float:right;color:#9bb6a1}.field-label{display:block;color:#cbdcca;font-size:14px;margin:14px 0 8px}.home-input{width:100%;height:46px;background:#10201e;border:1px solid #405a4c;border-radius:8px;padding:0 14px;color:#effae9;font:inherit;font-size:15px;outline:none}.home-input:focus{border-color:#d2fa90;box-shadow:0 0 0 2px #c8f48755}.home-input::placeholder{color:#89a394}.mission-panel .section-label{margin-top:20px}.medic-list{gap:6px}.medic{height:125px;position:relative;overflow:hidden;gap:2px;padding:0 2px 7px;background:#20372e;border-color:#4d6653}.medic img{display:block;width:100%;height:85px;object-fit:contain;filter:drop-shadow(0 5px 8px #050d0a88)}.medic.active{border-color:#d1fb90;background:#3b5540;box-shadow:inset 0 -3px #d1fb90}.medic small{font-size:11px;color:#e8f4dc}.medic-role{font-size:9px;color:#b6cba9;text-transform:uppercase;letter-spacing:.3px}.medic-showroom{display:flex;align-items:center;gap:9px;margin-top:12px;padding:0 9px;border:1px solid #4d654633;border-radius:10px;background:radial-gradient(ellipse at 28% 55%,#3e5148,#182a24 80%);height:179px;overflow:hidden}.medic-showroom>img{width:126px;height:176px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 12px 12px #080f0dbb)}.medic-showroom h3{font-size:22px;margin:5px 0}.medic-showroom .eyebrow{font-size:9px}.medic-showroom p{font-size:12px;color:#a7c0ad;line-height:1.4;margin:4px 0 9px}.medic-showroom strong{font-size:13px;color:#deefbd}.stage-grid button{background:#1b3028;border-color:#4b604c}.stage-grid button.active{background:#d0f38e;color:#243027}.stage-description{font-size:12px}.stage-description span:last-child{font-size:10px}.launch{margin-top:21px;background:#f3e4bc;border-color:#f3e4bc;color:#203927;height:46px}.launch:hover{background:#fff0ca;border-color:#fff0ca}.create-squad{display:block;width:100%;height:48px;background:#d1ff61;color:#193c27;border-color:#d1ff61;font-weight:700;margin-top:11px;padding:0 15px;text-align:left;font-size:15px}.create-squad:hover{background:#e0ff96;border-color:#e0ff96;color:#203829}.invite-label{margin-top:20px;font-size:12px;color:#adc6b7}.room-input{text-transform:uppercase;letter-spacing:2px}.join-squad{width:100%;height:41px;margin-top:7px;font-size:14px;border-color:#5e7865;background:#294535}.no-pressure{color:#aac1b0;font-size:11px;text-align:left;margin:18px 0 0}.error{color:#ffd0a7;font-size:13px;line-height:1.4}.error:empty{display:none}.arena{background:radial-gradient(ellipse at 48% 55%,#342139,#180f1d 72%);min-height:850px}.arena canvas{position:sticky;top:0;height:min(100svh,1050px);min-height:700px}.arena-vignette{box-shadow:inset 0 0 90px #09060d77}.preview-info{top:84px;left:30px}.preview-info p{color:#d9c9de;font-size:15px}.arena-bottom{background:linear-gradient(transparent,#140c19aa);border-color:#937b8d66}.target-marker{position:absolute;transform:translate(-50%,35px);display:flex;flex-direction:column;align-items:center;text-align:center;pointer-events:none;z-index:3;white-space:nowrap;filter:drop-shadow(0 3px 9px #000)}.target-marker:before{content:'';height:28px;width:1px;background:#ffd487;margin-bottom:5px}.target-marker b{color:#ffdc93;letter-spacing:1px;font-size:12px;padding:6px 11px;background:#281a1be8;border:1px solid #e4bd6977;border-radius:3px}.target-marker span{font-size:10px;color:#e9d8bc;background:#1b111acb;padding:4px 7px}.orbit-label{color:#c5a6b9}.playing .arena{min-height:calc(100svh - 142px)}.playing .arena canvas{position:absolute;height:100%;min-height:0}.playing .target-marker{transform:translate(-50%,28px)}.hope-letter{display:grid;grid-template-columns:1fr 1.1fr;gap:80px;padding:80px max(40px,7vw);background:#101d19;border-top:1px solid #395142}.hope-heading h2{font-family:'Barlow Condensed',sans-serif;font-size:clamp(65px,7vw,112px);line-height:1.0;letter-spacing:-1.5px;margin:24px 0}.hope-heading em{color:#d0f598;font-style:normal}.hope-copy h3{font-size:24px;line-height:1.4;color:#edf4e8;margin:0 0 23px;font-weight:500}.hope-copy p{font-size:16px;line-height:1.8;color:#afc2b3;margin:16px 0}.hope-copy .blessing{border-top:1px solid #3b5343;padding-top:23px;color:#d6dfc7;font-style:italic}.playing .hope-letter{display:none}
@media(min-width:1500px){main{grid-template-columns:440px 1fr}.mission-panel{padding:30px 32px}.arena{min-height:1020px}}
@media(max-width:1000px){main{grid-template-columns:370px 1fr}.mission-panel{padding:25px 22px}.medic-showroom>img{width:112px}.preview-info{left:22px}.target-marker b{font-size:10px}.target-marker span{font-size:8px}.hope-letter{padding:55px 32px;gap:35px}}
@media(max-width:680px){.topbar{height:70px}.arena{min-height:380px;height:48svh}.arena canvas{position:absolute;min-height:0;height:100%}.mission-panel{padding:26px 24px}.mission-panel h1{font-size:30px}.mission-panel .intro{display:block;font-size:14px}.medic{height:124px}.medic small{font-size:10px}.medic-showroom{height:178px}.medic-showroom>img{width:136px;height:180px}.preview-info{top:53px;left:20px}.preview-info p{font-size:12px}.preview-info .boss-tag{font-size:9px}.target-marker b{font-size:9px}.target-marker span{font-size:8px}.target-marker{transform:translate(-50%,20px)}.target-marker:before{height:16px}.arena-bottom{bottom:14px}.arena-bottom p{font-size:10px}.arena-top{top:15px}.playing .arena{min-height:500px;height:calc(100svh - 112px)}.hope-letter{grid-template-columns:1fr;gap:20px;padding:42px 25px}.hope-heading h2{font-size:69px;margin:17px 0}.hope-copy h3{font-size:21px}.hope-copy p{font-size:15px}}

.arena canvas{position:absolute;inset:0;height:100%;min-height:0}

.guardian-name{position:absolute;transform:translate(-50%,-100%);pointer-events:none;z-index:5;padding:4px 9px;border:1px solid #9aa8bd55;border-radius:5px;background:#091521d9;color:#d5e3f0;font-size:11px;line-height:1.2;white-space:nowrap;max-width:170px;overflow:hidden;text-overflow:ellipsis;text-shadow:0 1px 3px #000}.guardian-name.own{color:#efffd6;border-color:#d4efa49c;font-size:12px}.guardian-name[hidden]{display:none}.hud .hud-text-button{pointer-events:auto;padding:10px 12px;min-height:39px;white-space:nowrap;font-size:11px;border:1px solid #668076;border-radius:6px;color:#d8e9db}.hud #exitButton{color:#ffd9b4;border-color:#ba856e66}.raid-top{gap:14px}.raid-top .boss-health{min-width:100px}.damage-notice{position:absolute;top:34%;left:50%;transform:translateX(-50%);color:#ff9c7c;font-size:30px;font-weight:700;text-shadow:0 2px 10px #410a10;pointer-events:none}.preview-info{max-width:360px}.preview-info p{font-size:14px;line-height:1.5}.stage-description{gap:12px;align-items:center}.stage-description #stageName{line-height:1.4}.medic-showroom>div{min-width:0}.medic-showroom p{font-size:12px}.boss-tag b{font-weight:600;color:#f1c4dc}
@media(max-width:680px){.raid-top{flex-wrap:wrap;gap:9px;top:54px}.raid-top .boss-health{flex:1 1 65%;max-width:none}.raid-top .timer{margin-left:auto}.hud .hud-text-button{padding:7px 11px;min-height:34px;font-size:10px}.raid-top #pauseButton{margin-left:auto}.cheer{top:153px}.danger{top:187px}.guardian-name{font-size:10px;padding:3px 6px}.guardian-name.own{font-size:11px}.preview-info{max-width:255px}.preview-info p{font-size:11px}.damage-notice{font-size:26px}.stage-description{font-size:11px}.medic-showroom p{font-size:11px}.medic-showroom h3{font-size:21px}}

.growth-badge{padding:8px 9px;margin:-5px -5px 11px;border:1px solid #d7a0fa;border-radius:6px;color:#f1d3ff;background:#553066b8;font-size:11px;font-weight:700;letter-spacing:.2px;text-align:center;white-space:nowrap}@media(max-width:680px){.growth-badge{font-size:9px;padding:6px 3px;letter-spacing:0}}

.canvas-error{z-index:30;pointer-events:auto;background:#18262eef;padding:24px;border:1px solid #e4b988;border-radius:12px}.canvas-error strong{display:block}.canvas-error p{overflow-wrap:anywhere;font-size:14px}.canvas-error button{padding:10px 18px;margin-top:8px}

dialog:has(.item-guide){width:min(860px,94vw)}.item-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:24px 0}.item-card{border:1px solid color-mix(in srgb,var(--item-color) 35%,#20333e);border-radius:16px;background:radial-gradient(ellipse at 50% 10%,color-mix(in srgb,var(--item-color) 12%,#101e29),#0b1721 70%);padding:16px;text-align:center}.item-card img{display:block;width:min(160px,100%);height:auto;margin:0 auto 12px}.item-card h3{font-size:15px;margin:10px 0}.item-card p{font-size:13px;line-height:1.6;min-height:84px;margin:8px 0 16px}.item-stat{font-size:11px;font-weight:700;color:var(--item-color);letter-spacing:.6px}.item-duration{display:inline-block;color:var(--item-color);font-size:11px;border:1px solid #47606e;border-radius:20px;padding:6px 12px}.item-basics{padding:16px 20px;background:#152a34;border-radius:12px}.item-basics h3{margin-top:0}.item-basics p{font-size:13px}@media(max-width:680px){.item-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.item-card{padding:12px}.item-card p{min-height:0}.topactions #arsenalButton span{display:inline;margin-left:2px;font-size:11px}}

.squad-capacity{font-size:10px;color:var(--mint);letter-spacing:1px;margin:12px 0}.help-start{width:100%;padding:11px;margin-top:18px;font-size:12px;color:var(--mint);border-style:dashed}.help-tabs{display:flex;gap:8px;margin:20px 0}.help-tabs button{flex:1;padding:12px 8px;font-size:12px}.help-tabs button[aria-pressed=true]{background:#224139;border-color:var(--mint);color:var(--mint)}.help-goal{background:#172d37;border-radius:10px;padding:15px}.help-goal b{color:#dab4ff}.help-rows article{display:grid;grid-template-columns:120px 1fr;gap:16px;border-top:1px solid var(--line);padding:15px 0;align-items:start}.help-rows kbd{padding:10px 6px;text-align:center;color:var(--mint);line-height:1.7;font-size:12px;background:#142e37}.help-rows strong{font-size:14px}.help-rows p{font-size:13px;margin:5px 0 0}.hud [data-tip]{position:relative}.hud [data-tip]:is(:hover,:focus-visible)::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%);width:170px;white-space:normal;padding:10px;border:1px solid #699a8d;border-radius:8px;background:#10231f;color:#d4fff0;line-height:1.5;z-index:30;pointer-events:none}.raid-top [data-tip]:is(:hover,:focus-visible)::after{bottom:auto;top:calc(100% + 8px)}@media(max-width:1000px){.topcenter{display:none}.topactions{gap:4px}.topactions span{font-size:11px}}@media(pointer:coarse){.touchpad{display:grid}.hud [data-tip]:hover::after{display:none}}@media(max-width:680px){.topbar{padding:0 10px}.brandmark{display:none}.topactions .iconbutton{min-width:30px;padding:5px}.topactions #helpButton span{display:block;font-size:8px;margin:0}.help-rows article{grid-template-columns:95px 1fr;gap:12px}}

.team-boost-badge{padding:8px;margin-bottom:10px;border:1px solid #bca1f4;background:#35294b;border-radius:6px;color:#e6d7ff;font-size:10px;line-height:1.5;font-weight:700}

.guardian-speech{position:absolute;z-index:6;transform:translate(-50%,-100%);width:224px;padding:13px 16px;border:1px solid #c5e6db;border-radius:16px 16px 16px 5px;background:#eefaf4f5;color:#20463c;font-size:14px;font-weight:500;line-height:1.5;text-align:center;box-shadow:0 4px 16px #00190f33;pointer-events:none}.guardian-speech::after{content:'';position:absolute;bottom:-8px;left:calc(50% - 8px);width:14px;height:14px;transform:rotate(45deg);background:#eefaf4;border-right:1px solid #c5e6db;border-bottom:1px solid #c5e6db}.guardian-speech[hidden]{display:none}@media(max-width:680px){.guardian-speech{font-size:12px;width:210px;padding:10px 13px}}

.topactions .help-top{padding:6px 10px;border:1px solid #54786e;border-radius:8px;color:var(--mint)}.topactions .help-top span{display:block;margin:0;font-size:11px;white-space:nowrap}.help-top small{display:block;font-size:8px;letter-spacing:1px;margin-top:3px;color:#9eb7ba}@media(max-width:680px){.topactions #helpButton span{font-size:9px}.topactions .help-top{padding:5px 7px}.help-top small{font-size:7px}}

.hope-heading h2{font-family:Georgia,'Times New Roman',serif;font-weight:400;line-height:1.1;letter-spacing:-2px}.hope-heading em{font-style:italic;color:#e6e7bd}

.playing #world{touch-action:none}.drag-stick{position:absolute;width:94px;height:94px;border:1px solid #d8f79b99;border-radius:50%;background:#12262844;transform:translate(-50%,-50%);pointer-events:none;z-index:12}.drag-stick[hidden]{display:none}.drag-stick i{position:absolute;left:31px;top:31px;width:30px;height:30px;border-radius:50%;background:#d8f79baa;transform:translate(var(--drag-x,0),var(--drag-y,0))}.invite-welcome{padding:12px;border:1px solid #82b496;border-radius:8px;font-size:13px;line-height:1.5;color:var(--mint)}#nicknameError:empty{display:none}#nickname[aria-invalid=true]{border-color:#ffb59e}.error{color:#ffb59e}@media(max-width:680px),(pointer:coarse){.touchpad{grid-template-columns:repeat(3,36px);grid-template-rows:repeat(2,36px);gap:2px;left:12px;bottom:124px;opacity:.75}.touchpad button{font-size:14px;padding:0;touch-action:none}.combat-buttons kbd{display:none}.raid-top .hud-text-button{font-size:9px;padding:8px 6px}}

.network-notice{position:absolute;left:50%;top:110px;transform:translateX(-50%);max-width:90%;padding:12px 18px;background:#14382fee;border:1px solid #d8f79b;border-radius:10px;color:#edffd2;font-size:13px;text-align:center;z-index:25}.network-notice[hidden]{display:none}

.beta-badge{display:inline-flex;align-items:center;vertical-align:middle;border:1px solid currentColor;border-radius:5px;padding:3px 6px;font:700 9px/1 Arial,sans-serif;letter-spacing:1px;white-space:nowrap;margin-left:5px;color:#d8f79b;background:#193c35}.brand small .beta-badge{font-size:8px;padding:2px 4px;margin-left:6px}

.core-cell-marker{position:absolute;transform:translate(-50%,-130%);pointer-events:none;padding:5px 8px;border:1px solid #ffc86d;border-radius:6px;background:#27142ddd;color:#ffe4ad;font:600 10px/1.4 Arial,sans-serif;z-index:7;white-space:nowrap}.core-cell-marker[hidden]{display:none}.companion-badge{font-size:10px;color:#bfbfff;margin-bottom:6px}.seeker-warning{position:absolute;top:150px;left:50%;transform:translateX(-50%);border:1px solid #ff768e;border-radius:6px;background:#311726e6;color:#ffb6c3;padding:7px 10px;font-size:10px;white-space:nowrap}.seeker-warning[hidden],.companion-badge[hidden]{display:none}@media(max-width:680px){.seeker-warning{top:195px;font-size:9px}.core-cell-marker{font-size:8px;padding:3px 5px}}
/* Mobile-first play surface: controls stay clear of guidance and safe areas. */
[hidden]{display:none!important}html,body{max-width:100%;overflow-x:clip}main>*{min-width:0}.mode-back{padding:8px 12px;margin-bottom:14px}.choosing-mode:not(.playing) #arena{display:none}.choosing-mode:not(.playing) main{display:block;min-height:60svh}.choosing-mode:not(.playing) .mission-panel{max-width:650px;margin:0 auto;border:0;min-height:60svh}#modeChooser{padding:30px 0}#modeChooser .primary{width:100%;margin-top:30px}#modeChooser p{color:var(--muted);font-size:13px}.toast{pointer-events:none}.target-marker,.playing .target-marker{width:38px;height:38px;border:2px solid #cfff96;border-radius:50%;transform:translate(-50%,-50%);background:transparent;filter:none;box-shadow:0 0 0 4px #0a142544}.target-marker::before,.target-marker::after{content:'';position:absolute;background:#cfff96;margin:0}.target-marker::before{width:2px;height:10px;left:16px;top:-6px}.target-marker::after{height:2px;width:10px;left:-6px;top:16px}.target-marker i{position:absolute;width:4px;height:4px;left:15px;top:15px;background:#cfff96;border-radius:50%}.target-marker.blocked{border-color:#f4ac70;border-style:dashed;opacity:.55}.target-marker.blocked i{display:none}.target-marker.blocked::before,.target-marker.blocked::after{background:#f4ac70}
body.immersive{overflow:hidden}body.immersive .topbar,body.immersive footer{display:none}body.immersive main{min-height:0}body.immersive .arena{height:var(--screen-height,100dvh);min-height:0}
@media(max-width:700px),(pointer:coarse){
 .touchpad{display:none!important}.guardian-speech{display:none!important}.playing{overflow:hidden;overscroll-behavior:none}.playing .topbar{height:44px;padding:0 max(8px,env(safe-area-inset-right)) 0 max(8px,env(safe-area-inset-left));gap:5px}.playing .brand{font-size:12px}.playing .brand small{font-size:6px;letter-spacing:1px}.playing .brandmark,.playing #journalButton,.playing #arsenalButton{display:none}.playing .topactions{gap:3px}.playing .topactions .iconbutton{font-size:18px;min-height:32px;min-width:28px}.playing .topactions #helpButton span{font-size:8px}.playing .help-top small{display:none}.playing footer{display:none}.playing main{display:block;min-height:0;height:auto}.playing .arena{width:100%;height:calc(var(--screen-height,100dvh) - 44px);min-height:0;overflow:hidden}.playing .arena canvas{width:100%!important;height:100%!important}.playing .arena-top{top:max(8px,env(safe-area-inset-top));left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right))}.mission-badge{font-size:9px}.raid-top{top:30px;left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));display:flex;flex-wrap:wrap;gap:5px}.raid-top .boss-health{flex:1 1 calc(100% - 65px);min-width:0;max-width:none}.boss-health>div:first-child{font-size:8px}.raid-top .timer{font-size:22px;line-height:1}.hud .hud-text-button{font-size:8px;min-height:30px;padding:5px 7px}.raid-top #pauseButton{font-size:18px;min-height:30px;padding:3px;min-width:28px}.raid-bottom{left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));gap:8px;align-items:flex-end}.player-card{width:130px;min-width:0;padding:8px}.health-line{font-size:12px}.health-line #scoreLabel{font-size:9px}.weapon-line{font-size:8px;gap:3px}.combat-buttons{gap:5px;align-items:flex-end}.combat-buttons button{min-width:48px;min-height:48px;font-size:10px;padding:6px;background:#102b35f0;touch-action:manipulation}.combat-buttons #autoButton{min-width:37px;font-size:8px}.combat-buttons kbd{display:none}.growth-badge,.team-boost-badge,.companion-badge{font-size:8px;white-space:normal;line-height:1.3;padding:3px;margin:0 0 5px}.cheer{display:none}.danger,.seeker-warning{top:102px;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:94%;padding:4px 7px;font-size:9px;pointer-events:none}.seeker-warning{top:126px}.playing .toast{position:fixed;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 112px);max-width:70vw;padding:6px 12px;font-size:11px;line-height:1.3;border-radius:18px;box-shadow:none}.guardian-name,.guardian-name.own{font-size:9px;padding:2px 4px;max-width:100px}.core-cell-marker{padding:0;border:0;background:transparent;font-size:14px;color:#ffdc94;text-shadow:0 1px 3px #000}.target-marker,.playing .target-marker{width:30px;height:30px}.target-marker::before{left:12px}.target-marker::after{top:12px}.target-marker i{left:11px;top:11px}.network-notice{top:100px;font-size:11px;padding:8px;pointer-events:none}.hud [data-tip]::after{display:none!important}dialog{max-height:calc(var(--screen-height,100dvh) - 24px);max-width:calc(100% - 20px);margin:auto;padding:24px 18px}body.immersive .arena{height:var(--screen-height,100dvh)}
}
@media(max-height:500px) and (orientation:landscape){.playing .topbar{display:none}.playing .arena{height:var(--screen-height,100dvh)}.playing .arena-top{display:none}.raid-top{top:max(6px,env(safe-area-inset-top));flex-wrap:nowrap}.raid-top .boss-health{flex:1;max-width:30%}.raid-top .timer{margin:0;font-size:20px}.danger{top:45px}.seeker-warning{top:65px}.player-card{width:155px}.raid-bottom{bottom:max(8px,env(safe-area-inset-bottom))}.playing .toast{bottom:92px}}

.invite-exit-link{display:block;margin:18px 0 4px;font-size:12px;line-height:1.5;color:#a8c1b2;text-underline-offset:3px}.invite-exit-link:hover{color:#e1f8d1}

/* Keep the original guardian/stage selection visible on arrival. */
.choosing-mode:not(.playing) #arena{display:block}.choosing-mode:not(.playing) main{display:grid;grid-template-columns:420px 1fr;min-height:calc(100svh - 154px)}.choosing-mode:not(.playing) .mission-panel{max-width:none;margin:0;border-right:1px solid var(--line);min-height:0}#modeChooser{padding:18px 0 0}#modeChooser .primary{margin-top:12px}#modeChooser p{font-size:11px;line-height:1.5;margin-bottom:0}.quick-guide{font-size:12px;line-height:1.6;color:#b3c7b7;padding:12px;border:1px solid #45644e;border-radius:9px;margin:12px 0}.mission-panel .intro{font-size:13px;line-height:1.6;margin-bottom:12px}@media(max-width:1000px){.choosing-mode:not(.playing) main{grid-template-columns:370px 1fr}}@media(max-width:680px){.choosing-mode:not(.playing) main{display:flex;flex-direction:column}.choosing-mode:not(.playing) .mission-panel{margin:0;border-right:0}.choosing-mode:not(.playing) .arena{height:32svh;min-height:240px}.quick-guide{font-size:12px}.mission-panel .intro{font-size:13px}}

#modeChooser{padding-top:12px}#modeChooser .eyebrow{display:none}#modeChooser .primary{margin-top:0}.copy-invite-prominent{width:100%;min-height:58px;margin:6px 0 12px!important;background:#d1ff61!important;color:#163726!important;border:2px solid #d1ff61!important;font-size:16px!important;font-weight:800;box-shadow:0 4px 18px #b4ef6124}#startSquad.guest-ready{background:#b82e3c!important;border:2px solid #ff8790!important;color:#fff!important;opacity:1;font-weight:700}#startSquad.guest-ready:disabled{background:#792f39!important;color:#ffe8eb!important;cursor:default}.join-code-link{font-size:12px;margin:12px 0 0;padding:5px 0;border:0;color:#b4ccbc;text-decoration:underline;text-underline-offset:3px}.roomcode{text-align:center;letter-spacing:5px}
dialog:has(#copyInvite) .roomcode{font-size:30px;padding:12px;margin:12px 0}dialog:has(#copyInvite) h2{font-size:32px;margin-bottom:12px}dialog:has(#copyInvite) .hint{margin:8px 0;line-height:1.45}dialog:has(#copyInvite) .squad-member{padding:9px 0}dialog:has(#copyInvite) #readySquad,dialog:has(#copyInvite) #startSquad{min-height:44px;margin-top:10px}dialog:has(#copyInvite) #leaveSquad{margin-top:8px;padding:8px;min-height:34px}

/* Active raids always occupy the local viewport, independent of setup path. */
body.playing main{display:block;grid-template-columns:minmax(0,1fr);width:100%;min-width:0}
body.playing #arena{width:100%;max-width:none;min-width:0}

.squad-opening{position:absolute;top:122px;left:50%;transform:translateX(-50%);max-width:calc(100% - 32px);padding:8px 16px;border:1px solid #91d9bc80;border-radius:18px;background:#123b32ed;color:#e5ffe8;font-size:13px;text-align:center;pointer-events:none;z-index:8}.squad-opening[hidden]{display:none}@media(max-width:680px){.squad-opening{top:106px;font-size:11px;padding:6px 11px;max-width:85%}}

#muteButton.sound-toggle{display:grid;place-items:center;flex:0 0 44px;width:44px;min-width:44px;min-height:44px;padding:10px}#muteButton svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.sound-toggle .sound-slash{display:none}.sound-toggle.is-muted .sound-waves{display:none}.sound-toggle.is-muted .sound-slash{display:block}

#exitButton.exit-toggle{display:grid;place-items:center;flex:0 0 44px;width:44px;min-width:44px;min-height:44px;padding:10px}#exitButton svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

/* Compact squad flow, shared visual language with Cell Guidance. */
dialog.squad-dialog{width:min(560px,calc(100vw - 28px));padding:36px;background:linear-gradient(135deg,#153c3e,#203b43);border:1px solid #608784;border-radius:26px;color:#e5fff6;max-height:88dvh;overflow:auto}
.squad-flow h2{font-family:inherit;font-size:clamp(27px,5vw,38px);font-weight:500;line-height:1.15;margin:22px 0}
.squad-flow .eyebrow{color:#87efd5;letter-spacing:.14em}.squad-intro{color:#c0d7d2;margin-bottom:30px;line-height:1.5}
.squad-flow label{display:block;margin:22px 0 10px}.squad-flow input,.squad-flow select{width:100%;min-width:0;box-sizing:border-box;background:#123237;border:1px solid #597f7c;color:#effff8;border-radius:10px;min-height:52px;padding:12px 16px;font:inherit}
.squad-flow .primary{width:100%;margin:16px 0 0;background:#85ecd2;color:#123b3b;min-height:52px;border-radius:11px;font:inherit}.squad-flow button:disabled{opacity:.5;cursor:default}
.squad-join{display:flex;gap:10px;margin-top:16px}.squad-join input{flex:1;width:0}.squad-join button,.squad-code-row button{background:#244449;border:1px solid #608984;border-radius:10px;padding:12px 16px;color:#eefff9;font:inherit;min-height:46px;white-space:nowrap}
.squad-code-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:24px 0}.squad-code-row strong{font-size:24px;letter-spacing:.09em;margin-left:7px}.squad-code-row #copyInvite{border-color:#85ecd2;color:#a7ffe7}
.squad-flow .squad-member{display:flex;justify-content:space-between;gap:16px;padding:14px 0;border-top:1px solid #466365}.squad-member span{overflow-wrap:anywhere}.squad-flow .squad-member small{color:#aed9cc;white-space:nowrap}.squad-flow .hint{color:#c0d7d2;line-height:1.5;margin:20px 0 8px}.squad-text-link{display:block;background:none;border:0;color:#b8d6cc;text-decoration:underline;font:inherit;font-size:13px;padding:12px 0}.squad-flow .guest-ready{background:#c94c56;color:white}.squad-flow [hidden]{display:none!important}
@media(max-width:520px){dialog.squad-dialog{padding:28px 22px}.squad-code-row strong{font-size:21px}.squad-flow .squad-member{font-size:14px}.squad-flow .squad-member small{font-size:12px}}

/* v54: match the Cell Guidance setup composition. */
body:not(.playing) .mission-panel{padding:28px;background:linear-gradient(145deg,#214735,#16332c);color:#eafff5}
.choosing-mode:not(.playing) main{grid-template-columns:520px minmax(0,1fr)}
#setupModeLabel,#roleIndex,#medicEquipment,#skillName{display:none}
.mission-panel h1{font-family:'DM Sans',sans-serif;font-size:34px;line-height:1.14;letter-spacing:-1.2px;margin:0 0 20px;font-weight:600}
.mission-panel .intro{font-size:15px;line-height:1.6;color:#b9cdc2;margin:0 0 24px}
.mission-panel .quick-guide{font-size:14px;line-height:1.55;padding:16px;border-radius:11px;border-color:#3f634c;margin:0 0 18px;color:#c1d5c2}
.mission-panel .squad-capacity{font-size:12px;letter-spacing:1px;margin:0 0 32px;color:#d0f897}
.mission-panel .section-label{margin:0 0 16px}.mission-panel .section-label h2{font-size:13px;font-weight:500}.mission-panel .section-label>span{font-size:11px}
.mission-panel .medic-list{gap:8px}.mission-panel .medic{height:auto;aspect-ratio:.81;min-height:0;display:flex;justify-content:flex-end;gap:0;padding:8px 5px 9px;border:1px solid #4c6e50;border-radius:12px;overflow:hidden;background:#1c3d32;color:#effff6}
.mission-panel .medic.active{background:#34593e;border-color:#d5fb98;box-shadow:inset 0 -3px #d5fb98}.mission-panel .medic.active:after{display:none}
.guardian-card-crop{display:block;position:relative;flex:1;min-height:0;width:100%;overflow:hidden}
.mission-panel .medic img{position:absolute;width:160%;max-width:none;height:auto;left:-30%;top:-5%;object-fit:contain;margin:0}
.mission-panel .medic small{font-size:11px;line-height:1.3;text-transform:none;letter-spacing:0;margin:5px 0 0}
.mission-panel .medic-showroom{height:auto;min-height:148px;display:flex;gap:20px;margin:16px 0 30px;padding:20px;border-radius:15px;border:1px solid #294a38;background:#12322b;overflow:hidden}
.guardian-portrait-crop{width:90px;height:112px;flex:0 0 90px;position:relative;overflow:hidden}.guardian-portrait-crop img{position:absolute;width:165%;height:auto;max-width:none;left:-32.5%;top:-5%;object-fit:contain}
.medic-showroom .eyebrow{font-size:11px;letter-spacing:1.2px}.medic-showroom h3{font-size:24px;margin:8px 0}.medic-showroom #skillDescription{font-size:13px;line-height:1.5;color:#bbd5ca;margin:0}
.mission-panel .stage-grid{gap:8px}.mission-panel .stage-grid button{height:46px;font-size:19px;border-radius:6px;border:1px solid #4b6d52;background:#14352e;color:#abc5c6}.mission-panel .stage-grid button.active{background:#d4fa9c;border-color:#d4fa9c;color:#194238}.stage-grid button.completed:after{display:none}
.mission-panel .stage-description{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin-top:15px;font-size:16px;color:#d9edd9}.mission-panel .stage-description #difficulty{font-size:13px;letter-spacing:0;text-transform:none;color:#c9df99}.stage-detail{font-size:13px;line-height:1.5;color:#b9d1c7;margin:10px 0 22px}
#modeChooser{padding:0}.play-choice-row{display:grid;grid-template-columns:1fr 1fr;gap:9px}#modeChooser .play-choice-row button{display:block;width:100%;height:46px;min-height:46px;padding:8px;margin:0;border-radius:8px;font-size:14px;font-weight:500;text-align:center;line-height:1.3}#modeChooser #chooseSolo{background:#d4fa9c;border-color:#d4fa9c;color:#174334}#modeChooser #chooseSquad{background:transparent;border:1px solid #50736a;color:#e8fff4}#modeChooser #chooseSquad:hover{background:#294d40}#modeChooser .setup-note{font-size:11px;color:#a6c1b1;line-height:1.6;margin:20px 0 0}
@media(max-width:1000px) and (min-width:681px){.choosing-mode:not(.playing) main{grid-template-columns:440px minmax(0,1fr)}}
@media(max-width:680px){.choosing-mode:not(.playing) main{display:flex;flex-direction:column}body:not(.playing) .mission-panel{padding:24px 20px}.mission-panel h1{font-size:30px}.mission-panel .intro{font-size:14px}.mission-panel .medic small{font-size:10px}.mission-panel .medic-showroom{padding:16px;gap:14px}.mission-panel .medic-list{gap:7px}.mission-panel .medic{border-radius:10px}.mission-panel .section-label>span{font-size:10px}.guardian-portrait-crop{width:80px;flex-basis:80px;height:108px}.medic-showroom #skillDescription{font-size:12px}}
.mission-panel .medic img{width:130%;left:-15%;top:0}.mission-panel .medic[data-role="3"] img,.mission-panel .medic[data-role="4"] img{width:115%;left:-7.5%;top:-2%}
.mission-panel .guardian-portrait-crop img{width:125%;left:-12.5%;top:-1%}

/* Cell Guardians uses drag flight, without fixed thumb sticks. */
.hud .camera-toggle{display:grid;place-items:center;min-width:40px;min-height:40px;padding:8px}.camera-toggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round}.camera-toggle[aria-pressed="true"]{color:#d4fa9c;border-color:#d4fa9c}.touchpad{display:none!important}
@media(pointer:coarse),(max-width:700px){.hud .camera-toggle,.hud #exitButton{min-width:40px;min-height:40px}.combat-buttons #bombButton,.combat-buttons #skillButton{min-width:52px;min-height:52px}.raid-bottom{padding-bottom:env(safe-area-inset-bottom,0px)}}
/* Final campaign presentation: the existing 3D arena remains visible. */
dialog.finale-dialog{position:fixed;inset:50% auto auto 3vw;transform:translateY(-50%);margin:0;width:min(440px,38vw);max-height:92dvh;overflow:auto;background:linear-gradient(145deg,#18392ff2,#102b30ee);border-color:#9ccf9a80}
dialog.finale-dialog::backdrop{background:linear-gradient(90deg,#08150a70,#102c2a18);backdrop-filter:none}
dialog.finale-dialog h2{font-size:clamp(30px,3.2vw,46px);color:#e5ffd2}
dialog.finale-dialog .score-big{line-height:1;color:#d6ff98}
dialog.finale-dialog .score-caption{margin:0;color:#a8cfaa;font-size:11px;letter-spacing:.12em}
.final-credits{height:92px;overflow:hidden;position:relative;border-block:1px solid #a7dfc950;margin:10px 0;text-align:center;mask-image:linear-gradient(transparent,#000 18%,#000 82%,transparent)}
.credits-roll{display:flex;flex-direction:column;gap:6px;padding:92px 8px 0;animation:guardiansCredits 19s linear infinite}
.credits-roll span{color:#a9d2ad;font-size:10px;letter-spacing:.15em}.credits-roll strong{color:#f4fff0;font-size:13px;margin-bottom:7px}
@keyframes guardiansCredits{from{transform:translateY(0)}to{transform:translateY(-100%)}}
@media(max-width:680px){dialog.finale-dialog{inset:auto 10px 10px;transform:none;width:calc(100% - 20px);max-height:53dvh;padding:15px 18px}dialog.finale-dialog h2{font-size:25px;margin:3px 0}dialog.finale-dialog p{font-size:12px;line-height:1.4;margin:5px 0}dialog.finale-dialog .score-big{font-size:32px}dialog.finale-dialog .result-stats{margin:4px 0}.final-credits{height:43px;margin:4px 0}.credits-roll{padding-top:43px;gap:3px}.credits-roll span{font-size:8px}.credits-roll strong{font-size:10px;margin-bottom:3px}dialog.finale-dialog .primary,dialog.finale-dialog .secondary{padding:8px;margin-top:5px;font-size:12px}}
@media(prefers-reduced-motion:reduce){.credits-roll{animation:none;padding:8px;max-height:100%;overflow:auto}.final-credits{mask-image:none}}
.finale-playing :is(.hud,.arena-top,.arena-bottom,.target-marker,.guardian-name,.squad-opening,.guardian-speech){visibility:hidden}
