﻿:root{--display:'Jua','Noto Sans KR',sans-serif;--gold:#ffe5a0;--aqua:#8ee8de;--white:#fff8e6}html,body{width:100%;height:100%;overflow:hidden}body{background:#082c3c;color:var(--white)}button{color:inherit}#game{position:relative;width:100%;height:100dvh;min-height:360px;overflow:hidden;isolation:isolate}.ocean-bg,.ocean-shade,#particles{position:absolute;inset:0;pointer-events:none;z-index:-3}.ocean-bg{background:url('../assets/images/lobby.png') center 57%/cover;transition:background .5s}.ocean-shade{z-index:-2;background:linear-gradient(90deg,#042f47b8,transparent 70%),linear-gradient(0deg,#031c32ed,transparent 34%,transparent 72%,#05283c91)}#particles{z-index:-1;overflow:hidden}#particles i{position:absolute;bottom:-25px;width:5px;height:5px;background:#c9fff3;border-radius:50%;box-shadow:0 0 12px #aefff5;animation:float-up 15s linear infinite;opacity:.45}@keyframes float-up{to{transform:translate(45px,-110vh);opacity:0}}.glass{background:linear-gradient(130deg,#123c51df,#092c3dc9);border:1px solid #badeda40;box-shadow:0 4px 14px #001a2c30;backdrop-filter:blur(14px)}.game-top{height:104px;position:absolute;top:0;left:0;right:0;padding:23px 34px;display:flex;justify-content:space-between;align-items:center;z-index:5}.player{border-radius:15px;display:flex;align-items:center;text-align:left;padding:4px 18px 4px 5px;gap:10px}.sprite{display:block;background-image:url('../assets/images/rangers.png');background-size:400% 300%;background-position:calc(var(--col)*100%/3) calc(var(--row)*50%);background-repeat:no-repeat;aspect-ratio:3/4;filter:drop-shadow(0 5px 3px #03233450)}.player-art{width:50px;height:60px}.player small{display:block;font-size:9px;letter-spacing:1px;color:#a6c8ca}.player b{display:block;font-size:13px;margin:4px 0 7px}.xp-line{display:block;height:3px;background:#ffffff20;width:115px;border-radius:5px}.xp-line i{display:block;width:35%;height:100%;background:var(--aqua)}.top-right{display:flex;align-items:center;gap:10px}.resource{position:relative;display:flex;align-items:center;gap:10px;min-width:128px;padding:11px 17px 15px;border-radius:25px}.resource b{font-size:13px}.resource small{position:absolute;bottom:3px;left:48px;font-size:6px;letter-spacing:1.6px;color:#9eb6bd}.resource-icon{font-size:23px;line-height:20px}.gold{color:var(--gold)}.aqua{color:var(--aqua)}.square{width:40px;height:40px;border-radius:12px;font-size:20px}.game-top .square:last-child{font-size:15px}main#content{position:absolute;inset:104px 0 94px;padding:0;max-width:none;margin:0}.game-nav{position:absolute;bottom:0;left:0;right:0;height:86px;background:linear-gradient(180deg,#092c3ded,#071f30);border-top:1px solid #a4dbd444;display:flex;gap:0;padding:0 34px;z-index:5}.game-nav button{position:relative;display:grid;grid-template-columns:36px 1fr;align-content:center;column-gap:10px;width:180px;border:0;border-right:1px solid #ffffff0c;background:transparent;text-align:left;color:#a3bfc4}.game-nav button>span{grid-row:span 2;align-self:center;font-size:29px;text-align:center}.game-nav button b{font-size:13px}.game-nav button small{font-size:7px;letter-spacing:1.8px;margin-top:5px}.game-nav button.active{color:var(--gold);background:linear-gradient(#c5dfce14,transparent)}.game-nav button.active:before{content:'';position:absolute;top:-1px;left:15%;right:15%;height:3px;background:var(--gold);box-shadow:0 0 17px #ffeaaa99}.nav-caption{margin:auto 0 auto auto;text-align:right;font-size:10px;color:#afc8c5}.nav-caption small{display:block;font-size:7px;letter-spacing:1.5px;margin-top:7px;opacity:.5}.nav-caption i{display:inline-block;width:5px;height:5px;background:#a2eed0;border-radius:50%;margin-right:7px}.home-screen{height:100%;position:relative;padding:5vh 5.2vw}.home-copy{max-width:500px}.chapter-label{display:inline-flex;align-items:center;gap:10px;font-size:9px;letter-spacing:2.4px;color:#d3eee2}.chapter-label:before{content:'';width:25px;height:1px;background:#d3eee2}.game-logo{font-size:clamp(44px,5.7vw,85px);font-weight:900;line-height:.95;letter-spacing:-3px;margin:23px 0 10px;text-shadow:0 4px 0 #0d4257,0 10px 35px #00263c55}.game-logo span{display:block;font-size:.57em;letter-spacing:.2em;margin-top:10px;color:var(--gold)}.logo-ko{font-family:var(--display);font-size:17px;letter-spacing:5px;color:#e8f1df;margin:22px 0 30px}.home-copy h2{font-family:var(--display);font-weight:400;font-size:24px;margin:0 0 10px}.home-copy p{font-size:12px;line-height:1.9;color:#b6d6d8;margin:0}.home-copy p em{font-style:normal;color:#f7e4af}.home-world-label{position:absolute;right:4%;top:7%;font-size:9px;letter-spacing:2px;text-align:right;color:#dfefdf;text-shadow:0 2px 8px #01202d}.home-world-label b{display:block;font-family:var(--display);font-size:23px;letter-spacing:0;margin-top:8px}.home-team{position:absolute;left:47%;right:12%;bottom:15%;height:45%;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.home-team .sprite{height:68%;min-width:0;flex:1;animation:idle 3.8s ease-in-out infinite;filter:drop-shadow(0 15px 9px #001b3690)}.home-team .sprite:nth-child(2){height:95%;margin:0 -3%;z-index:1;animation-delay:-1s}.home-team .sprite:last-child{animation-delay:-2s}.speech{position:absolute;top:-7%;left:30%;padding:11px 20px;background:#fff9e8;color:#315653;font-family:var(--display);border-radius:16px 16px 16px 0;transform:rotate(-4deg);font-size:13px;box-shadow:0 4px 0 #123c5740}@keyframes idle{50%{transform:translateY(-9px) rotate(2deg)}}.home-bottom-hud{position:absolute;bottom:24px;left:5.2vw;right:4%;display:flex;gap:14px;align-items:flex-end;justify-content:space-between}.mission-card{padding:16px 20px;border-radius:12px;min-width:270px;border-left:3px solid var(--aqua)}.mission-card small{font-size:8px;letter-spacing:2px;color:#8eddcf}.mission-card h3{font-size:13px;margin:8px 0}.mission-card p{font-size:10px;color:#b7cfcf;margin:0}.mission-card button{background:transparent;border:0;font-size:10px;color:var(--gold);padding:10px 0 0}.launch{background:linear-gradient(135deg,#fff0bc,#eebc63);border:1px solid #fff3cb;border-radius:13px;color:#28484b;box-shadow:0 5px 0 #987743,0 12px 30px #011f3860;min-width:265px;padding:16px 23px;text-align:left;position:relative}.launch small{font-size:8px;letter-spacing:2px;display:block;opacity:.65;margin-bottom:6px}.launch b{font-family:var(--display);font-size:27px;font-weight:400}.launch>span{float:right;font-size:30px;margin-left:40px}.launch-caption{text-align:center;font-size:9px;color:#c3dace;margin-top:12px}.side-actions{position:absolute;right:32px;top:23%;display:grid;gap:15px}.side-actions button{border-radius:13px;width:64px;height:70px;font-size:24px}.side-actions small{display:block;font-size:9px;margin-top:4px}.screen-panel{margin:10px 34px 0;height:calc(100% - 15px);border:1px solid #9ccac33b;border-radius:20px;background:#082e43e8;backdrop-filter:blur(18px);padding:25px 30px;display:flex;flex-direction:column;box-shadow:0 20px 60px #001c3550}.screen-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.screen-title small{color:#83c3c6;font-size:8px;letter-spacing:2px}.screen-title h1{font-family:var(--display);font-weight:400;font-size:30px;margin:5px 0}.screen-title p{font-size:11px;color:#9cbec5;margin:0}.screen-title .count{color:var(--gold);font-size:24px}.screen-title .count small{font-size:11px;color:#aac5c7;letter-spacing:0}.filter-bar{display:flex;gap:8px;margin-bottom:18px}.filter-bar button,.pill{border:1px solid #a0cac338;border-radius:8px;background:#ffffff06;padding:9px 15px;font-size:11px}.filter-bar button.active{background:#bce3d9;color:#204a4f;border-color:#bce3d9}.filter-bar input{margin-left:auto;width:210px;min-width:90px;background:#041d3099;border:1px solid #a0cac338;color:#fff8e6;border-radius:8px;padding:9px 12px;font-size:11px}.roster-grid{overflow-y:auto;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;padding:3px 3px 12px;align-content:start;scrollbar-width:thin;scrollbar-color:#638a8d transparent}.unit-card{position:relative;min-width:0;border:1px solid #a9d1c753;border-radius:12px;overflow:hidden;background:linear-gradient(145deg,#345b68,#16394e);text-align:left;padding:0}.unit-card .portrait{position:relative;height:clamp(95px,17vh,190px);background:radial-gradient(ellipse at 50% 90%,#bde9d32e,transparent 65%);display:flex;justify-content:center;overflow:hidden}.unit-card .sprite{height:95%;max-width:95%;align-self:flex-end;transition:transform .2s}.unit-card:hover .sprite{transform:translateY(-4px) rotate(-3deg)}.unit-card .rarity{position:absolute;top:10px;left:10px;font-size:10px;color:var(--gold);z-index:2;font-weight:900;letter-spacing:1px}.unit-card .unit-role{position:absolute;right:8px;top:9px;font-size:8px;background:#052a3dab;border-radius:8px;padding:3px 6px;color:#c6dbd8;z-index:2}.unit-info{padding:11px 12px;background:#072c3c55;border-top:1px solid #b5d7c91c}.unit-info b{display:block;font-size:12px}.unit-info small{display:block;font-size:9px;color:#a0c1c5;margin-top:6px}.unit-info .equipped{float:right;color:#92e8ce;font-size:8px}.unit-card.locked{filter:saturate(.3);opacity:.65}.stars-line{color:#f2d391;font-size:9px;letter-spacing:2px;margin-bottom:5px}.squad-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;max-width:760px;width:100%;margin:0 auto 18px}.squad-strip .unit-card{outline:1px solid #e4c98066}.squad-strip .portrait{height:100px}.squad-strip .selected-slot{outline:3px solid var(--gold)}.squad-note{font-size:11px;color:#bcd2cd;text-align:center;margin:0 0 15px}.squad-screen .roster-grid{grid-template-columns:repeat(7,1fr)}.squad-screen .roster-grid .portrait{height:100px}.map-screen{height:100%;position:relative;margin:0 34px}.map-header{display:flex;justify-content:space-between;align-items:center;padding:20px 20px 0}.map-header h1{font-family:var(--display);font-weight:400;font-size:32px;margin:6px 0}.map-header p{font-size:11px;color:#b5d4d6;margin:0}.map-header small{font-size:9px;letter-spacing:3px;color:var(--aqua)}.world-select{display:flex;gap:8px}.world-select button{padding:12px 18px;border-radius:10px;font-size:11px}.world-select button.active{color:var(--gold);border-color:#e7c97a}.island-route{position:absolute;inset:110px 4% 140px}.island-route svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.map-node{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:70px;height:70px;border-radius:50%;border:4px solid #bfdacb;background:linear-gradient(#4d8e8d,#285664);box-shadow:0 6px 0 #082c43,0 0 0 9px #09374966;font-family:var(--display);font-size:25px}.map-node:hover{transform:translate(-50%,-55%)}.map-node.selected{background:linear-gradient(#fff0b0,#deb36a);border-color:#fff5d4;color:#345254;box-shadow:0 6px 0 #84714e,0 0 0 10px #f7e2aa20,0 0 50px #f1d78a40}.map-node.locked{background:#1d4356;border-color:#627e87;color:#94a8ab}.map-node small{position:absolute;left:50%;top:76px;transform:translateX(-50%);white-space:nowrap;font:10px 'Noto Sans KR',sans-serif;background:#042b42bb;padding:5px 10px;border-radius:6px;color:#e8eee0}.map-node .node-stars{position:absolute;top:-28px;left:50%;transform:translateX(-50%);white-space:nowrap;color:var(--gold);font-size:15px;letter-spacing:3px}.map-node .boss-label{font-size:8px;position:absolute;top:-22px;left:15px;color:#ffc1b7;font-family:sans-serif;letter-spacing:2px}.map-summary{position:absolute;bottom:17px;left:0;right:0;border-radius:14px;padding:17px 24px;display:flex;align-items:center;gap:25px}.map-summary h2{font-family:var(--display);font-size:23px;font-weight:400;margin:6px 0}.map-summary small{font-size:9px;color:var(--aqua);letter-spacing:1px}.map-summary p{font-size:10px;color:#b6c9c9;margin:0}.map-summary .reward-list{margin-left:auto;display:flex;gap:10px}.reward-token{padding:12px;border:1px solid #ffffff24;border-radius:9px;font-size:11px;color:var(--gold);background:#ffffff05}.map-summary .launch{min-width:180px;padding:12px 20px}.map-summary .launch b{font-size:23px}.map-summary .launch span{margin-left:20px}.battle-mode .game-top,.battle-mode .game-nav{display:none}.battle-mode main#content{inset:0}.battle-mode .ocean-bg{background-image:url('../assets/images/stage.png');background-position:center 58%}.battle-mode .ocean-shade{background:linear-gradient(#04263b77,transparent 30%,transparent 70%,#031d32cc)}.battle-wrap{height:100%;position:relative}.battle-canvas{position:absolute;inset:0;width:100%;height:100%}.combat-top{position:absolute;top:23px;left:30px;right:30px;display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.base-meter{width:26%;max-width:330px;border-radius:12px;padding:14px 18px}.base-meter>div:first-child{display:flex;justify-content:space-between;font-size:11px}.hp-track{height:10px;border:1px solid #e5f4de66;border-radius:7px;background:#061f3299;overflow:hidden;margin:10px 0 6px}.hp-track i{display:block;height:100%;background:linear-gradient(90deg,#39bfa8,#b8f0bd)}.enemy-meter .hp-track i{background:linear-gradient(90deg,#b74369,#ffad8e)}.base-meter small{font-size:9px;color:#d9e8dd}.combat-title{text-align:center}.combat-title small{font-size:8px;letter-spacing:2px;color:#b6d4d7}.combat-title h1{font-family:var(--display);font-weight:400;font-size:24px;margin:5px 0}.combat-title b{font-size:13px;color:var(--gold);font-variant-numeric:tabular-nums}.combat-options{position:absolute;top:130px;right:30px;display:flex;gap:7px}.combat-options button{border-radius:8px;padding:9px 13px;font-size:10px}.combat-options button.on{color:var(--gold);border-color:var(--gold)}.combat-dock{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);width:min(850px,92%);border-radius:18px;padding:13px 18px 16px;background:linear-gradient(#103b50e8,#06283bf2);border:1px solid #c4e3d966;box-shadow:0 10px 40px #001b3c77}.energy-hud{display:flex;align-items:center;gap:12px;font-size:11px;margin-bottom:10px;color:#caf0e4}.energy-hud .hp-track{flex:1;margin:0;max-width:260px;height:7px}.energy-hud .hp-track i{background:#8de9dc}.energy-hud small{margin-left:auto;font-size:8px;color:#a4c4c8}.combat-hand{display:grid;grid-template-columns:repeat(5,1fr) 1.05fr;gap:9px}.deploy{position:relative;background:linear-gradient(#456e72,#194658);border:1px solid #9dccc6;border-radius:10px;overflow:hidden;padding:4px 3px 8px;min-width:0}.deploy .sprite{height:70px;margin:auto}.deploy b{display:block;font-size:10px}.deploy small{display:block;font-size:9px;color:#a0f1dc;margin-top:4px}.deploy .hotkey{position:absolute;top:6px;left:7px;font-size:9px;color:#cfdfd6;background:#103b50aa;border-radius:3px;padding:1px 4px}.deploy:disabled{opacity:.48}.deploy.support{background:linear-gradient(#b98653,#695745);border-color:#e8c28b}.support-icon{display:block;font-size:37px;height:70px;padding-top:9px;color:#ffdda0}.battle-banner{position:absolute;top:30%;left:50%;transform:translateX(-50%);text-align:center;color:#fff4c6;text-shadow:0 4px 20px #052742;font-family:var(--display);font-size:36px;pointer-events:none;width:90%}.battle-banner small{display:block;font:11px 'Noto Sans KR',sans-serif;color:#daeee8;margin-top:12px}.battle-legend{position:absolute;bottom:22px;left:25px;font-size:9px;color:#b8cccf;writing-mode:vertical-rl;letter-spacing:2px}dialog{background:linear-gradient(140deg,#19475a,#092b40);color:#fff3d8;border-color:#86aaa680;box-shadow:0 20px 100px #001522aa}dialog::backdrop{background:#031928b8}.modal-close{background:#ffffff14;color:#e5eee3}.detail-art{height:220px;display:flex;justify-content:center;background:radial-gradient(ellipse,#a4e5d333,transparent 65%)}.detail-art .sprite{height:100%}.detail-heading{display:flex;align-items:center;justify-content:space-between}.detail-heading h2{font-family:var(--display);font-size:30px;font-weight:400;margin:8px 0}.detail-heading small{color:var(--gold);font-size:12px}.detail-copy{font-size:12px;color:#b9d3d4;line-height:1.9}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:18px 0}.stats-grid div{background:#ffffff09;border-radius:9px;padding:13px;text-align:center;font-size:10px;color:#a8c9cb}.stats-grid b{display:block;font-size:19px;color:#f8e5b0;margin-top:5px}.ability{padding:15px;border:1px solid #a3d0c438;border-radius:10px;font-size:12px}.ability p{color:#b4cccb;font-size:11px;line-height:1.8;margin-bottom:0}.action-row{display:flex;gap:10px;margin-top:20px}.action-row button{flex:1;padding:12px;border:1px solid #bdcbbb66;background:#cce6d8;color:#204751;border-radius:9px;font-size:11px}.action-row .gold-button{background:#f8dfa0}.result h2{margin:12px 0;color:var(--gold)}.result p{color:#b9d5d5}.result-stars{font-size:42px;color:var(--gold);letter-spacing:8px}.result-reward{display:flex;justify-content:center;gap:10px;margin:20px 0}.help-copy{color:#bcd4d4}.empty{color:#bfd7d5}.pill{color:var(--gold)}#toast{left:50%;bottom:110px;background:#f5e4b8;color:#244852;font-weight:600;border:1px solid #fff1d2;z-index:1000}.rotate-note{display:none}@media(min-width:1700px){.home-copy{padding-top:3vh}.home-team{bottom:13%;height:53%}.home-bottom-hud{bottom:35px}.game-nav{height:100px}.game-nav button{width:215px}.game-top{padding:25px 45px}main#content{bottom:110px}.home-copy h2{font-size:29px}.home-copy p{font-size:14px}.mission-card{padding:22px 25px}.launch{min-width:300px;padding:20px 27px}.combat-dock{width:960px}.deploy .sprite{height:90px}.deploy b{font-size:12px}}@media(max-height:700px){.game-top{height:80px;padding:12px 25px}.player-art{height:45px;width:38px}.game-nav{height:70px}main#content{top:80px;bottom:76px}.home-screen{padding-top:2vh}.game-logo{font-size:55px;margin-top:16px}.logo-ko{margin:15px 0 18px;font-size:13px}.home-copy h2{font-size:21px}.home-copy p{font-size:10px}.home-bottom-hud{bottom:12px}.mission-card{padding:11px 15px}.home-team{height:47%;bottom:22%}.screen-panel{padding:17px 23px}.screen-title{margin-bottom:10px}.screen-title h1{font-size:25px}.filter-bar{margin-bottom:10px}.unit-card .portrait{height:115px}.island-route{inset:90px 4% 130px}.map-header{padding-top:8px}.map-node{width:55px;height:55px;font-size:21px}.map-node small{top:60px}.deploy .sprite{height:51px}.combat-dock{bottom:10px;padding:10px 13px}.combat-top{top:15px}.base-meter{padding:10px 14px}.combat-options{top:110px}.detail-art{height:170px}}@media(max-width:1050px){.game-top{padding-left:20px;padding-right:20px}.game-nav{padding:0 15px}.game-nav button{width:160px}.nav-caption{display:none}.home-copy{max-width:380px}.home-team{left:43%;right:9%;bottom:22%;height:42%}.side-actions{right:20px}.side-actions button{width:52px;height:57px;font-size:21px}.home-world-label{right:20px}.mission-card{min-width:230px}.roster-grid{grid-template-columns:repeat(4,1fr)}.squad-screen .roster-grid{grid-template-columns:repeat(5,1fr)}.world-select button{padding:10px;font-size:9px}.map-summary{gap:12px;padding:15px}.map-summary .reward-list{gap:5px}.reward-token{padding:9px;font-size:9px}.map-summary .launch{min-width:150px}.map-summary .launch b{font-size:21px}.screen-panel{margin-left:20px;margin-right:20px}.map-screen{margin:0 20px}.resource{min-width:106px;padding-left:12px;padding-right:12px}.resource small{left:42px}}@media(max-width:700px){.top-right{gap:5px}.resource{min-width:80px;gap:6px;padding:8px 10px 12px}.resource b{font-size:10px}.resource small{left:33px}.resource-icon{font-size:18px}.square{width:30px;height:33px;font-size:17px}.player{padding-right:10px;gap:3px}.player b{font-size:10px}.player small{font-size:7px;letter-spacing:0}.xp-line{width:78px}.game-top{padding:10px;height:75px}.game-nav button{width:25%;grid-template-columns:1fr;text-align:center;gap:2px;padding:3px}.game-nav button>span{font-size:23px;grid-row:auto}.game-nav button b{font-size:10px}.game-nav button small{display:none}.game-nav{height:64px;padding:0 6px}main#content{top:75px;bottom:68px}.home-copy{max-width:75%}.home-screen{padding:3vh 6vw}.game-logo{font-size:52px}.chapter-label{font-size:7px;letter-spacing:1px}.logo-ko{font-size:12px;letter-spacing:3px}.home-copy h2{font-size:20px}.home-copy p{font-size:10px}.home-team{left:16%;right:13%;bottom:25%;height:30%}.home-world-label{top:5%;right:16px}.home-world-label small{display:none}.home-world-label b{font-size:15px}.side-actions{right:13px;top:21%}.side-actions button{width:46px;height:53px;font-size:19px}.side-actions small{font-size:8px}.home-bottom-hud{left:6%;right:6%;bottom:14px;gap:10px}.mission-card{display:none}.home-bottom-hud>div:last-child{width:100%}.launch{width:100%;min-width:0;padding:14px 20px}.launch b{font-size:24px}.launch-caption{font-size:8px}.speech{font-size:11px;padding:8px 12px}.screen-panel{margin:0 10px;height:100%;padding:17px 13px;border-radius:14px}.screen-title h1{font-size:24px}.screen-title p{font-size:9px}.screen-title .count{font-size:18px}.filter-bar{flex-wrap:wrap;gap:5px}.filter-bar button{font-size:9px;padding:7px 10px}.filter-bar input{width:100%;margin-left:0}.roster-grid{grid-template-columns:repeat(3,1fr);gap:8px}.unit-card .portrait{height:105px}.unit-info{padding:8px}.unit-info b{font-size:10px}.unit-info small{font-size:8px}.unit-card .rarity{font-size:8px;left:6px;top:7px}.unit-card .unit-role{font-size:7px;right:4px;top:5px;padding:3px}.squad-strip{gap:5px}.squad-strip .portrait{height:65px}.squad-strip .unit-info{padding:6px 3px}.squad-strip .unit-info b{font-size:8px}.squad-strip .unit-role,.squad-strip .equipped{display:none}.squad-note{font-size:9px;line-height:1.6}.squad-screen .roster-grid{grid-template-columns:repeat(3,1fr)}.map-screen{margin:0 13px}.map-header{display:block;padding:10px}.map-header h1{font-size:27px}.world-select{margin-top:14px}.world-select button{flex:1;padding:10px 7px;font-size:8px}.island-route{inset:170px 2% 160px}.map-node{width:43px;height:43px;font-size:17px;border-width:3px}.map-node small{top:48px;font-size:7px;padding:4px}.map-node .node-stars{font-size:11px;top:-24px}.map-summary{flex-wrap:wrap;gap:12px;bottom:10px;padding:13px}.map-summary h2{font-size:20px}.map-summary p{font-size:8px}.map-summary .reward-list{margin-left:auto}.map-summary .launch{width:100%;padding:9px 14px}.map-summary .launch small{display:none}.map-summary .launch b{font-size:20px}.map-summary .launch span{font-size:21px}.combat-top{left:10px;right:10px;gap:8px}.base-meter{width:29%;padding:9px}.base-meter>div:first-child{font-size:8px}.base-meter small{font-size:7px}.combat-title h1{font-size:16px}.combat-title small{font-size:6px}.combat-title b{font-size:11px}.combat-options{right:10px;top:105px;gap:5px}.combat-options button{font-size:9px;padding:8px}.combat-dock{width:96%;padding:9px;bottom:8px}.combat-hand{gap:5px}.deploy .sprite{height:51px}.deploy b{font-size:8px}.deploy small{font-size:8px}.deploy .hotkey{font-size:7px;left:3px;top:3px}.support-icon{height:51px;font-size:27px}.energy-hud{font-size:9px;gap:8px}.energy-hud small{display:none}.battle-banner{font-size:26px}.battle-banner small{font-size:9px}.battle-legend{display:none}}@media(max-height:480px) and (orientation:landscape){.game-top{height:58px;padding:6px 16px}.player-art{height:37px;width:29px}.player b{margin:2px 0 4px;font-size:10px}.game-nav{height:51px}.game-nav button{grid-template-columns:30px 1fr}.game-nav button b{font-size:10px}.game-nav button small{font-size:6px}.game-nav button>span{font-size:21px}main#content{top:58px;bottom:54px}.home-screen{padding:10px 5vw}.game-logo{font-size:40px;margin:10px 0}.logo-ko{margin:10px 0;font-size:10px}.home-copy h2{font-size:17px}.home-copy p{font-size:9px}.chapter-label{font-size:7px}.home-team{height:65%;bottom:16%;left:47%;right:15%}.home-bottom-hud{bottom:8px}.mission-card{display:none}.home-bottom-hud>div:last-child{margin-left:auto}.launch{min-width:220px;padding:9px 16px}.launch small{font-size:6px;margin-bottom:3px}.launch b{font-size:21px}.launch-caption{display:none}.side-actions{top:13%;right:20px;gap:8px}.side-actions button{height:47px;width:48px;font-size:18px}.home-world-label{top:0}.home-world-label b{font-size:16px}.screen-panel{padding:10px 18px}.screen-title{margin-bottom:6px}.screen-title h1{font-size:21px;margin:2px 0}.screen-title p{font-size:9px}.filter-bar{margin-bottom:8px}.filter-bar button,.filter-bar input{padding:6px 10px;font-size:9px}.roster-grid{grid-template-columns:repeat(6,1fr)}.unit-card .portrait{height:90px}.map-header h1{font-size:23px}.map-header p{font-size:9px}.map-header small{font-size:7px}.map-summary{padding:9px 15px;bottom:5px}.map-summary h2{font-size:18px;margin:3px 0}.map-summary .launch{padding:8px 13px}.island-route{inset:70px 5% 90px}.map-node{width:40px;height:40px;font-size:16px}.map-node small{top:44px;font-size:7px}.combat-top{top:10px}.base-meter{padding:8px 12px}.combat-title h1{font-size:18px}.combat-options{top:91px}.combat-dock{width:680px;max-width:88%;padding:7px 10px;bottom:7px}.deploy .sprite{height:37px}.deploy b{font-size:8px}.deploy small{font-size:8px;margin-top:2px}.deploy{padding:2px 2px 5px}.energy-hud{font-size:9px;margin-bottom:5px}.support-icon{height:37px;font-size:26px;padding:0}.battle-banner{font-size:25px;top:29%}.squad-strip{margin-bottom:8px;max-width:550px}.squad-strip .portrait{height:48px}.squad-strip .unit-info{padding:5px 8px}.squad-note{margin-bottom:8px;font-size:9px}}
/* Keep the battlefield stretched across the viewport. */
.battle-screen{position:relative;width:100%;height:100%;overflow:hidden}
.home-team .sprite{flex:0 0 auto;width:auto}
.sprite{background-image:none;overflow:visible}
.trash-trigger{display:grid!important;place-items:center;padding:7px!important}.trash-icon{position:relative;display:block;width:23px;height:25px;border:2px solid #9ce8dc;border-top:0;border-radius:2px 2px 6px 6px;transform:perspective(30px) rotateX(-5deg);box-shadow:inset 6px 0 #9ce8dc22}.trash-icon:before{content:'';position:absolute;left:-4px;right:-4px;top:-5px;height:3px;border-radius:3px;background:#9ce8dc;box-shadow:8px -3px 0 -1px #9ce8dc}.trash-icon:after{content:'';position:absolute;top:4px;bottom:3px;left:6px;width:2px;background:#9ce8dc;box-shadow:6px 0 #9ce8dc}.trash-trigger small{margin-top:3px}
.trash-dialog header{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 24px 17px 0}.trash-dialog header small{font-size:9px;letter-spacing:2px;color:#8ee8de}.trash-dialog h2{font-family:var(--display);font-size:30px;font-weight:400;margin:7px 0}.trash-dialog header p{margin:0;color:#b6d3d5;font-size:11px;line-height:1.7}.trash-can-illustration{position:relative;flex:none;width:68px;height:76px;border:3px solid #a7eee1;border-top:0;border-radius:6px 6px 14px 14px;background:linear-gradient(90deg,#69beb8,#3b777d);box-shadow:inset 10px 0 #d2fff52b,0 9px 20px #00172655}.trash-can-illustration:before{content:'';position:absolute;left:-9px;right:-9px;top:-9px;height:7px;border-radius:5px;background:#b7f3e7;box-shadow:21px -7px 0 -3px #b7f3e7}.trash-can-illustration i,.trash-can-illustration b{position:absolute;top:13px;bottom:8px;width:4px;border-radius:4px;background:#d2fff2a8}.trash-can-illustration i{left:23px}.trash-can-illustration b{right:23px}.cleanup-progress{margin:0 0 17px;padding:12px 14px;border:1px solid #a2ddd844;border-radius:11px;background:#ffffff09;font-size:11px;color:#c8e5df}.cleanup-progress span{display:flex;justify-content:space-between}.cleanup-progress b{color:var(--gold)}.cleanup-progress>i{display:block;height:6px;border-radius:6px;overflow:hidden;background:#021c2a99;margin-top:9px}.cleanup-progress>i>b{display:block;height:100%;background:linear-gradient(90deg,#72d8c9,#ffe6a0);box-shadow:0 0 10px #9eeade}.trash-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.trash-item{min-height:132px;padding:15px 11px;border:1px solid #9bd7d052;border-radius:13px;background:linear-gradient(145deg,#315d6d,#123549);text-align:center}.trash-item>span{display:grid;place-items:center;width:42px;height:42px;margin:0 auto 9px;border-radius:50%;background:#a2e4d11c;color:#b6f6e5;font-size:25px;font-weight:700}.trash-item b,.trash-item small{display:block}.trash-item b{font-size:12px}.trash-item small{margin-top:5px;font-size:9px;color:#b4ced1}.trash-item.collected{background:linear-gradient(145deg,#294d58,#193a49);border-color:#e6d28a77}.trash-item.collected>span{background:#f6dda630;color:#ffe9a6}.trash-reward{text-align:center;color:#ffe2a0;font-size:11px;margin:18px 0 0}
.deploy .sprite{height:var(--deploy-height,70px);width:calc(var(--deploy-height,70px)*.75)}
@media(min-width:1700px){.combat-dock{--deploy-height:90px}}
@media(max-height:700px),(max-width:700px){.combat-dock{--deploy-height:51px}}
@media(max-height:480px) and (orientation:landscape){.combat-dock{--deploy-height:37px}}
#battle-canvas{display:block;width:100%;height:100%}
.roster-grid{min-height:0}
.screen-title,.filter-bar,.squad-strip,.squad-note{flex-shrink:0}
@media(max-width:440px){.game-top .player{padding-right:5px}.game-top .player>span:last-child{display:none}.game-top .resource{min-width:74px}.game-top .top-right{gap:4px}.home-world-label{display:none}}
@media(max-width:700px){.trash-dialog header{margin-right:18px}.trash-dialog h2{font-size:25px}.trash-dialog header p{font-size:10px}.trash-can-illustration{width:52px;height:59px}.trash-grid{gap:7px}.trash-item{min-height:112px;padding:10px 6px}.trash-item>span{width:35px;height:35px;font-size:20px;margin-bottom:6px}.trash-item b{font-size:10px}.trash-item small{font-size:8px}.trash-reward{font-size:10px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Phone layout: pages scroll inside the app frame instead of clipping at the nav. */
@media(max-width:700px){
  .game-top{height:calc(75px + env(safe-area-inset-top));padding-top:max(10px,env(safe-area-inset-top));padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right))}
  main#content{top:calc(75px + env(safe-area-inset-top));bottom:calc(68px + env(safe-area-inset-bottom));overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
  .game-nav{height:calc(64px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);padding-left:max(6px,env(safe-area-inset-left));padding-right:max(6px,env(safe-area-inset-right))}
  .screen-panel,.map-screen{height:auto;min-height:100%;box-sizing:border-box}
  .map-screen{padding-bottom:14px}
  .map-header{padding:12px 5px 0}
  .world-select{overflow-x:auto;overscroll-behavior-x:contain;padding-bottom:3px}
  .world-select button{flex:0 0 auto;min-width:92px}
  .island-route{position:relative;inset:auto;height:270px;margin:20px 2% 24px}
  .map-summary{position:relative;bottom:auto;left:auto;right:auto;margin:0 2%;align-items:flex-start}
  .map-summary .reward-list{margin-left:0;flex-wrap:wrap}
  .map-summary .launch{margin-left:0}
  .battle-mode main#content{inset:0;overflow:hidden}
}

/* Currency stays readable on narrow phones; secondary chrome is removed rather
   than letting the help control fall off the right edge. */
@media(max-width:440px){
  #sound-button,#fullscreen-button{display:none}
  .game-top .top-right{gap:4px}
}

/* A short landscape phone has very little vertical room. Keep the route and all
   action controls in normal document flow so no page is trapped behind the dock. */
@media(max-width:950px) and (max-height:600px) and (orientation:landscape){
  .game-top{height:calc(58px + env(safe-area-inset-top));padding-top:max(6px,env(safe-area-inset-top));padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
  main#content{top:calc(58px + env(safe-area-inset-top));bottom:calc(55px + env(safe-area-inset-bottom));overflow-y:auto}
  .game-nav{height:calc(51px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}
  .map-screen{min-height:480px;margin:0 14px}
  .map-header{display:flex;align-items:flex-start;gap:12px;padding:9px 2px 0}
  .map-header h1{font-size:22px}
  .map-header p{font-size:8px}
  .world-select{margin-left:auto;max-width:48%;gap:5px}
  .world-select button{min-width:78px;padding:7px 8px;font-size:8px}
  .island-route{height:205px;margin:13px 4% 18px}
  .map-summary{padding:10px 12px;gap:9px}
  .map-summary h2{font-size:18px}
  .map-summary .launch{width:auto;min-width:142px}
}
