:root{
  --bg:#06131a;--panel:#0d2530;--panel2:#113541;--line:#245263;--text:#f2f7f8;--muted:#9cb5bd;
  --sea:#0a6681;--safe:#168761;--danger:#96383d;--gold:#e9b84a;--accent:#45c6df;
}
*{box-sizing:border-box}html,body{margin:0;background:radial-gradient(circle at 50% 0,#123442,#06131a 52%);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif;height:100%;overflow:hidden}
button{font:inherit;color:inherit}#app{height:100%;display:flex;flex-direction:column}.topbar{height:72px;display:flex;align-items:center;justify-content:space-between;padding:10px 18px;border-bottom:1px solid #183b47;background:#071923e8;backdrop-filter:blur(12px);z-index:5}.brand{display:flex;align-items:center;gap:10px}.logo{width:46px;height:46px;border-radius:14px;background:linear-gradient(145deg,#48c8de,#0f6077);display:grid;place-items:center;font-size:27px;font-weight:900;box-shadow:inset 0 0 0 1px #79e4f255}.title{font-weight:900;font-size:19px}.subtitle{font-size:12px;color:var(--muted)}.currencies{display:flex;gap:10px}.currency{min-width:106px;padding:7px 10px;border:1px solid #295161;border-radius:12px;background:#102c37;display:grid;grid-template-columns:26px 1fr;grid-template-rows:auto auto;column-gap:6px}.currency .icon{grid-row:1/3;font-size:23px;align-self:center}.currency b{font-size:15px}.currency small{color:var(--muted);font-size:10px}.whip{transform:rotate(-10deg)}.hide{color:#d39d62}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:12px;padding:12px;height:calc(100% - 72px)}.game-wrap{position:relative;min-height:0;border:1px solid #1c4b5b;border-radius:18px;overflow:hidden;background:#083a4a;box-shadow:0 18px 50px #0008}#game{width:100%;height:100%;display:block;touch-action:none}.side{display:flex;flex-direction:column;gap:10px;overflow:auto;padding-right:2px}.panel{background:linear-gradient(180deg,#102c37ee,#0b222bee);border:1px solid #244958;border-radius:14px;padding:12px;box-shadow:0 8px 26px #0004}.panel-title{font-size:13px;font-weight:900;text-transform:uppercase;letter-spacing:.08em;color:#b6d5de;margin-bottom:10px}.compact{width:245px}.row{display:flex;justify-content:space-between;font-size:12px;margin:3px 0}.bar,.progress{height:8px;background:#06171d;border-radius:999px;overflow:hidden;border:1px solid #214653}.bar i,.progress i{display:block;height:100%;width:100%;background:#70d789}.bar.secondary i{background:#d8a847}.hud-left{position:absolute;left:14px;bottom:16px}.hud-right{position:absolute;right:14px;top:14px}.koasyak-panel{width:180px}.koasyak-panel .label{font-weight:900;margin-bottom:6px}.joints{display:flex;gap:7px;font-size:24px}.joint{opacity:.14;filter:grayscale(1)}.joint.active{opacity:1;filter:none;text-shadow:0 0 13px #b7f0d2}.koasyak-panel small{color:var(--muted)}.sector-badge{position:absolute;left:50%;top:14px;transform:translateX(-50%);background:#06171ddb;border:1px solid #367080;padding:7px 13px;border-radius:999px;font-weight:900;font-size:12px}.toast{position:absolute;left:50%;bottom:90px;transform:translateX(-50%) translateY(10px);background:#071b23e8;border:1px solid #377180;border-radius:12px;padding:10px 14px;opacity:0;transition:.18s;pointer-events:none;white-space:nowrap}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.koasyak-overlay{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%) rotate(-4deg) scale(.7);font-weight:1000;font-size:74px;letter-spacing:.05em;color:#fff;text-shadow:0 6px 0 #671d25,0 10px 30px #000;opacity:0;pointer-events:none}.koasyak-overlay.pop{animation:koasyak .85s ease}@keyframes koasyak{0%{opacity:0;transform:translate(-50%,-50%) rotate(-4deg) scale(.4)}25%{opacity:1;transform:translate(-50%,-50%) rotate(2deg) scale(1.15)}65%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) rotate(-2deg) scale(.95)}}
.map-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.sector{min-height:74px;border:1px solid #3d5661;background:#1a333c;border-radius:12px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:9px;cursor:pointer}.sector span{font-size:20px;font-weight:1000}.sector small{color:#c7d7dc;text-align:left}.sector.safe{background:linear-gradient(145deg,#11704e,#19493d)}.sector.s2{background:linear-gradient(145deg,#7f5127,#403323)}.sector.s3{background:linear-gradient(145deg,#8a3f34,#432927)}.sector.s4{background:linear-gradient(145deg,#702f5c,#33243a)}.sector.active{outline:2px solid #dffaff;box-shadow:0 0 0 4px #44bdd53b}.tip{font-size:11px;color:var(--muted);margin:8px 0 0}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.action-grid button,.rewarded{border:1px solid #2b6070;background:#153945;border-radius:10px;padding:10px;cursor:pointer}.action-grid .accent{background:#16677b;border-color:#45c6df}.rewarded{width:100%;margin-top:8px;font-size:11px;background:#173337}.mission-title{font-weight:900;margin-bottom:4px}.mission-text{font-size:12px;color:#bcd0d6;line-height:1.35}.progress{margin-top:10px}.progress i{width:62.5%;background:#e3b64f}.mission-progress{text-align:right;font-size:11px;color:#9db7bf;margin-top:5px}.log{font-size:11px;line-height:1.35;max-height:135px;overflow:auto;color:#b7ccd2}.log div{padding:4px 0;border-bottom:1px solid #1d3b45}.log b{color:#fff}
dialog{width:min(520px,92vw);border:1px solid #315b69;border-radius:18px;background:#0b222b;color:#fff;padding:0;box-shadow:0 30px 80px #000c}dialog::backdrop{background:#0009;backdrop-filter:blur(4px)}dialog form{padding:20px;position:relative}.close{position:absolute;right:10px;top:10px;border:0;background:#173844;border-radius:50%;width:34px;height:34px;cursor:pointer;font-size:20px}.modal-title{font-size:22px;font-weight:1000;margin:4px 40px 12px 0}.modal-sub{color:#9fb9c1;font-size:12px;margin-bottom:15px}.cards{display:grid;grid-template-columns:1fr 1fr;gap:9px}.card{border:1px solid #2c5361;background:#102e39;border-radius:12px;padding:12px}.card b{display:block}.card small{color:#a9c0c7}.card button{width:100%;margin-top:8px;border:1px solid #397184;border-radius:9px;background:#17485a;padding:8px;cursor:pointer}.clanflag{width:80px;height:80px;border-radius:15px;background:linear-gradient(135deg,#2d7790,#5d294a);display:grid;place-items:center;font-size:38px;font-weight:1000;margin-bottom:10px}.sharebox{background:#071a21;border:1px dashed #3f7585;border-radius:12px;padding:12px;font-size:12px;word-break:break-all}.mobile-only{display:none}
@media (max-width:900px), (pointer:coarse){html,body{overflow:auto}.topbar{height:auto;min-height:68px;padding:8px 10px}.subtitle{display:none}.currency{min-width:86px}.layout{display:block;height:auto;padding:8px}.game-wrap{height:68vh;min-height:480px}.side{padding:8px 0;overflow:visible}.hud-left{bottom:90px}.hud-right{top:52px}.mobile-only{display:flex;position:absolute;inset:auto 12px 12px 12px;justify-content:space-between;align-items:end;pointer-events:none}.dpad,.fire{pointer-events:auto}.dpad button,.fire{border:1px solid #ffffff55;background:#071a21bb;border-radius:12px;width:58px;height:48px;font-weight:900}.dpad>div{display:flex}.fire{width:76px;height:76px;border-radius:50%;background:#7d2630cc}.koasyak-overlay{font-size:48px}.compact{width:210px}}
/* V2 controls + cleaner game HUD */
.game-wrap{cursor:crosshair;background:#06384d}
.weapon-strip{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);min-width:min(760px,78%);padding:8px 10px;border:1px solid #315a67;border-radius:14px;background:#071a21d9;backdrop-filter:blur(10px);box-shadow:0 10px 28px #0006}
.weapon-label{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:#9fb8bf;margin:0 2px 6px}.weapon-label b{color:#fff;font-size:12px}
.weapon-slots{display:grid;grid-template-columns:repeat(10,1fr);gap:5px}.weapon-slot{height:38px;position:relative;border:1px solid #294e5a;background:#0d2932;border-radius:8px;cursor:pointer;color:#dcebee;display:grid;place-items:center}.weapon-slot span{font-size:14px;line-height:1}.weapon-slot kbd{position:absolute;left:4px;top:2px;font:700 9px Segoe UI;color:#819da5}.weapon-slot.active{border-color:#8cefff;background:#155267;box-shadow:inset 0 0 0 1px #8cefff55,0 0 14px #4fcde43a}.weapon-slot.active kbd{color:#d8fbff}
.control-hint{position:absolute;left:50%;bottom:86px;transform:translateX(-50%);font-size:10px;color:#a9c2c8;background:#06171da8;border:1px solid #2d5360;border-radius:999px;padding:5px 10px;pointer-events:none}.control-hint b{color:#e9f6f7}
.hud-left{bottom:18px}.hud-right{top:52px}.sector-badge{top:12px;background:#06171dcf}.koasyak-panel{width:154px;padding:9px}.koasyak-panel .label{font-size:11px}.joints{font-size:19px}
@media(max-width:900px), (pointer:coarse){.weapon-strip{bottom:84px;min-width:calc(100% - 24px)}.weapon-slots{grid-template-columns:repeat(5,1fr)}.weapon-slot{height:34px}.control-hint{display:none}.hud-left{bottom:168px}.hud-right{top:52px}}

.build-badge{position:fixed;right:10px;bottom:10px;z-index:9999;padding:6px 9px;border-radius:8px;background:#091a23dd;border:1px solid #53d5e7;color:#9cecf5;font:700 11px/1.1 system-ui,sans-serif;letter-spacing:.06em;pointer-events:none}/* BUILD V5 */
.action-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.action-grid button.disabled{opacity:.45;filter:grayscale(.4)}
.weapon-slot.locked{opacity:.35;filter:grayscale(1)}
.ship-card{background:linear-gradient(180deg,#143541,#0e2933)}
dialog h3{margin:18px 0 8px;color:#d8f5fa;font-size:14px;text-transform:uppercase;letter-spacing:.08em}
.build-badge{border-color:#f0c36e;color:#ffe2a7}

/* V8 dock/base */
.dock-panel{position:absolute;left:50%;bottom:94px;transform:translate(-50%,18px);display:flex;align-items:center;gap:9px;padding:10px 12px;border:1px solid #70dce7;background:#071a20ed;border-radius:14px;box-shadow:0 12px 34px #0009;opacity:0;pointer-events:none;transition:.18s;z-index:7}.dock-panel.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}.dock-panel>div{display:flex;flex-direction:column;min-width:145px}.dock-panel b{font-size:13px;letter-spacing:.08em}.dock-panel small{font-size:11px;color:#9ec0c8}.dock-panel button{border:1px solid #356473;background:#123742;border-radius:9px;padding:8px 11px;cursor:pointer}.dock-panel button:first-of-type{background:#16758a;border-color:#47b5ca;font-weight:900}.base-hub{display:grid;grid-template-columns:repeat(2,minmax(150px,1fr));gap:10px;margin-top:14px}.base-hub button{min-height:78px;text-align:left;border-radius:12px;border:1px solid #315966;background:#102f39;padding:12px;font-size:15px;font-weight:900;cursor:pointer}.base-hub button small{display:block;margin-top:5px;color:#9fb9c0;font-weight:500}.base-hub button:hover{background:#164352}

#minimap{position:absolute;left:10px;top:10px;width:168px;height:190px;border:1px solid #689aa5;border-radius:10px;pointer-events:none}.sector-badge{left:188px;max-width:calc(100% - 198px);font-size:11px}@media(max-width:600px){#minimap{width:118px;height:134px}.sector-badge{left:136px;max-width:calc(100% - 146px);font-size:9px}}

.escape-btn{position:absolute;right:12px;top:110px;padding:10px;border:1px solid #ffdf85;border-radius:10px;background:#654519;color:white;cursor:pointer}#sellAllGoods{padding:12px;margin-top:15px;background:#185c65;border:1px solid #73ff9b;border-radius:8px}

#game,.dpad button,.fire{touch-action:none;-webkit-user-select:none;user-select:none}

.special-ammo{display:flex;gap:6px;margin:5px 0}.special-ammo button{font-size:12px;min-height:36px;touch-action:manipulation}.special-ammo button:disabled{opacity:.45}

.home-btn{position:absolute;left:10px;top:204px;width:168px;min-height:38px;z-index:5;font-weight:bold}@media(max-width:600px){.home-btn{top:148px;width:118px;font-size:12px}}

#weaponSubtitle{display:block;color:#ffe2a3;margin-top:3px;font-size:12px}#weaponName{font-size:20px}

.hud-left,.hud-right,.sector-badge{pointer-events:none}.weapon-label{display:grid;grid-template-columns:auto 1fr;column-gap:12px}.weapon-label b{text-align:right}#weaponSubtitle{grid-column:1 / -1;text-align:right}

.combat-status{position:absolute;left:50%;top:45px;transform:translateX(-50%);color:#fff4ad;background:#071923dd;padding:5px 8px;font-size:11px;pointer-events:none;max-width:65%}

/* Stack the status and escape action in normal flow at every viewport. */
.hud-right{display:flex;flex-direction:column;gap:8px;right:12px;top:76px;width:154px;pointer-events:none;z-index:6}
.hud-right .koasyak-panel{width:100%}.hud-right .escape-btn{position:static;width:100%;pointer-events:auto;font-size:11px;margin:0}
#koasyakReason{display:block;font-size:10px;line-height:1.3;margin-top:5px;overflow-wrap:anywhere}#koasyakHelp{pointer-events:auto;margin-top:6px;padding:4px 9px;border:1px solid #507484;border-radius:6px;background:#173844;font-size:11px}
@media(max-width:600px){.hud-right{width:126px;top:80px}.hud-right .koasyak-panel{padding:7px}.hud-right .escape-btn{padding:8px 4px}.joints{font-size:16px}}

#pirateCaption{position:fixed;bottom:100px;left:50%;transform:translateX(-50%);max-width:85vw;background:#17202be8;color:#ffe3a0;padding:10px 16px;border-radius:10px;pointer-events:none;z-index:100;text-align:center;font-size:18px;}#pirateCaption:empty{display:none}

/* All ship indicators share one reserved row above the playfield. */
.unified-topbar{height:auto;flex:0 0 auto;display:block;padding:8px 12px;z-index:10}
.status-strip{display:grid;grid-template-columns:1.1fr 1fr 1.1fr .75fr 1.15fr 1.7fr 1fr;gap:8px;align-items:stretch}
.status-cell{min-width:0;padding:7px 10px;background:#102c37;border:1px solid #295161;border-radius:9px;display:flex;flex-direction:column;justify-content:center;gap:4px;font-variant-numeric:tabular-nums}
.status-label{font-size:11px;color:#b9cdd3}.status-cell>b{font-size:17px;overflow-wrap:anywhere}.status-cell .bar{height:5px}
.status-cell .weapon-label{display:flex;flex-direction:column;align-items:flex-start;margin:0;gap:2px;font-size:11px}
.status-cell #weaponName{font-size:16px;text-align:left}.status-cell #weaponSubtitle{font-size:11px;text-align:left;margin:0;overflow-wrap:anywhere}
.koasyak-status .koasyak-panel{background:none;border:0;box-shadow:none;width:auto;padding:0;position:relative}
.koasyak-status .label{font-size:11px;color:#b9cdd3;margin:0}.koasyak-status .joints{font-size:16px;line-height:18px;gap:5px}
.koasyak-status #koasyakHint{display:block;font-size:10px}.koasyak-status #koasyakReason{display:none}
.koasyak-status #koasyakHelp{position:absolute;right:0;top:0;margin:0;min-height:25px;padding:3px 5px;font-size:10px}
.layout{flex:1;min-height:0;height:auto}.hud-right{top:76px;width:154px}
@media(max-width:1100px){.status-strip{grid-template-columns:repeat(4,minmax(0,1fr))}.weapon-status{grid-column:span 2}.status-cell{padding:6px 8px}}
@media(max-width:900px), (pointer:coarse){.unified-topbar{position:sticky;top:0}.layout{flex:none;min-height:auto}.game-wrap{height:65vh;min-height:440px}}
@media(max-width:600px){.unified-topbar{padding:5px 6px}.status-strip{grid-template-columns:repeat(3,minmax(0,1fr));gap:4px}.status-cell{padding:5px 6px;gap:2px}.status-cell>b{font-size:14px}.status-label{font-size:10px}.weapon-status{grid-column:span 2}.status-cell #weaponName{font-size:14px}.koasyak-status{grid-column:3;grid-row:2 / span 2}.status-cell #weaponSubtitle{font-size:10px}.hud-right{width:126px}.koasyak-status #koasyakHelp{position:static;margin-top:4px;min-height:32px}.game-wrap{min-height:400px}}

.ammo-current{border:2px solid #6adddf;background:#123e4b}.ammo-for{font-size:14px;line-height:1.4;color:#effaff;margin:8px 0}.card button:disabled{opacity:.5}

.ship-color-chip{display:inline-block;width:16px;height:16px;border:1px solid #ffffff88;border-radius:4px;margin-right:7px;vertical-align:middle}

/* Compact, aligned commerce cards; preserve readable touch targets. */
dialog:not(:has(.skill-screen)){width:min(650px,94vw);max-height:90dvh;overflow:auto}
dialog:not(:has(.skill-screen)) form{padding:14px}
dialog:not(:has(.skill-screen)) .modal-title{font-size:19px;margin-bottom:8px}
dialog:not(:has(.skill-screen)) .modal-sub{font-size:12px;margin-bottom:10px}
dialog .cards{gap:8px;align-items:stretch}
dialog .card{padding:9px;display:flex;flex-direction:column;gap:6px;min-width:0;border-radius:9px}
dialog .card b{font-size:14px;line-height:1.3}
dialog .card small{font-size:12px;line-height:1.4}
dialog .card button{margin-top:auto;min-height:40px;padding:7px 8px;font-size:12px;line-height:1.3}
dialog .card button:disabled{opacity:.5;cursor:default}
dialog .ammo-for{font-size:12px;margin:0;line-height:1.4}
.ownership{font-size:11px;line-height:1.4}.ownership.owned{color:#a3e7ac}.ownership.missing{color:#d5bd9a}
dialog .base-hub{gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}
dialog .base-hub button{min-height:52px;padding:9px;font-size:13px}
dialog #sellAllGoods{min-height:40px;padding:8px 12px;font-size:13px}
@media(max-width:420px){dialog .cards{gap:6px}dialog .card{padding:8px}dialog .card button{min-height:44px}dialog .base-hub button{min-height:48px}}

dialog:has(.skill-screen){width:min(940px,96vw);max-height:92dvh;overflow:auto}
.skill-summary{display:flex;gap:14px;flex-wrap:wrap;background:#123542;padding:12px;border-radius:10px}.skill-summary b{color:#ffe398}
.skill-help{font-size:13px;line-height:1.5;color:#b8d0d8}
.skill-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:16px 0}
.skill-tabs button{padding:11px 6px;border:1px solid #346071;background:#102e39;border-radius:9px;cursor:pointer;min-width:0}.skill-tabs small{display:block;color:#bbced5;margin-top:4px}.skill-tabs button[aria-pressed=true]{background:#1b6475;border-color:#93e6f4}
.skill-role{display:flex;justify-content:space-between;align-items:center;gap:12px}.skill-role p{margin:4px 0;color:#b8d0d8;font-size:13px}.skill-role button,.skill-detail button,.skill-reset button{border:1px solid #59bdc8;background:#195767;padding:10px 14px;border-radius:8px;cursor:pointer}.skill-screen button:disabled{opacity:.5;cursor:default}
.skill-detail{background:#153d49;border:1px solid #6dc7d0;border-radius:12px;padding:15px;margin:14px 0}.skill-detail>span{font-size:11px;color:#a7d7df;letter-spacing:.06em}.skill-detail h3{margin:7px 0;font-size:19px;text-transform:none}.skill-detail p{margin:8px 0;line-height:1.5}.skill-buy-row{display:flex;justify-content:space-between;align-items:center;gap:12px}.skill-buy-row span{font-size:12px;line-height:1.6}.skill-buy-row button{font-weight:700;flex-shrink:0}
.skill-legend{font-size:12px;color:#b6cdd4;margin:16px 0}.skill-tier{border-left:2px solid #365763;padding-left:12px;margin:18px 0}.skill-tier h3{font-size:13px;margin:0 0 9px;color:#aac7d0}.skill-nodes{display:grid;grid-template-columns:1fr 1fr;gap:9px}.skill-node{text-align:left;display:flex;flex-direction:column;gap:7px;border:1px solid #4b7785;background:#13313d;border-radius:10px;padding:13px;cursor:pointer;min-height:110px}.skill-node small{color:#bdd0d6;line-height:1.4}.skill-node span{font-size:11px;color:#bad6dc}.skill-node.learned{background:#173f35;border-color:#65b48b}.skill-node.available{border-color:#d8bb65}.skill-node.locked,.skill-node.no-points{background:#182a32;border-color:#3b535d}.skill-node[aria-pressed=true]{outline:2px solid #b4eff9;outline-offset:2px}.skill-reset{border-top:1px solid #355360;padding-top:14px;margin-top:22px}.skill-reset summary{cursor:pointer;color:#b6cbd1}.skill-reset p{font-size:13px;line-height:1.5}
@media(max-width:600px){.skill-tabs{grid-template-columns:repeat(2,minmax(0,1fr))}.skill-tabs button:last-child{grid-column:span 2}.skill-role,.skill-buy-row{align-items:stretch;flex-direction:column}.skill-nodes{grid-template-columns:1fr}.skill-summary{gap:9px;font-size:13px}dialog:has(.skill-screen) form{padding:14px}.skill-node{min-height:92px}}

.skill-nodes{align-items:stretch}.skill-node small{flex:1}.skill-node span{margin-top:auto}.skill-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.skill-summary span{display:flex;flex-direction:column;gap:5px}.skill-summary b{font-size:19px}@media(max-width:600px){.skill-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}

.skill-positive{color:#b9efbb;font-size:13px;margin:3px 0}.skill-negative{color:#ffb0a1;font-size:13px;margin:3px 0}.skill-node{cursor:default}.skill-node button{margin-top:auto;min-height:42px;background:#185064;color:#fff;border:1px solid #5ca8bb;border-radius:8px;padding:8px;cursor:pointer}.skill-node button:disabled{opacity:.5;cursor:default}.ammo-damage{font-size:12px;line-height:1.5;color:#ffe2a1;margin:0}.bar.mana i{background:#78baff}.status-strip{grid-template-columns:repeat(8,minmax(0,1fr))}.weapon-slots{grid-template-columns:repeat(7,minmax(0,1fr))}.weapon-strip{max-width:calc(100% - 24px)}.weapon-slot span{font-size:11px}.skill-node small{flex:0}.weapon-label{min-width:0}@media(max-width:1100px){.status-strip{grid-template-columns:repeat(4,minmax(0,1fr))}.weapon-status{grid-column:span 1}}@media(max-width:600px){.status-strip{grid-template-columns:repeat(3,minmax(0,1fr))}.koasyak-status{grid-column:auto;grid-row:auto}.weapon-status{grid-column:span 2}.weapon-slots{grid-template-columns:repeat(7,minmax(0,1fr))}.weapon-slot{min-width:0}.weapon-slot span{font-size:9px}}

@media(max-width:600px){.weapon-slots{grid-template-columns:repeat(5,minmax(0,1fr))}.weapon-slot span{font-size:11px}}

/* V29: one readable weapon row, no overlay instructions */
.weapon-strip{width:calc(100% - 24px);min-width:0;padding:6px 8px;cursor:default}
.weapon-slots{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:6px;padding:2px 1px 6px;overscroll-behavior-x:contain;touch-action:pan-x;scrollbar-width:thin;scrollbar-color:#6ba6b5 #0b222b}
.weapon-slot{flex:0 0 116px;min-width:116px;height:48px;padding:6px 7px 6px 22px;white-space:normal}
.weapon-slot span{font-size:12px;line-height:1.2}.weapon-slot kbd{font-size:11px;color:#c5dce4;top:5px;left:6px}
.weapon-slot.locked{opacity:1;background:#17262d;color:#acbec6;border-style:dashed}.weapon-slot.active{background:#155267;color:#fff;border:2px solid #8cefff}
.special-ammo{margin:0 0 4px;gap:6px}.special-ammo button{flex:1;min-width:0;min-height:36px;padding:5px 8px;background:#183c4a;color:#fff;border:1px solid #73a7b8;border-radius:7px;font-size:12px;line-height:1.3;cursor:pointer}.special-ammo button:disabled{opacity:1;background:#162a34;color:#b9cbd3;border-color:#435e6a;cursor:default}
.controls-help summary{cursor:pointer;color:#e6f4f8;font-weight:700;font-size:13px}.controls-help p{font-size:12px;line-height:1.5;color:#c2d6df}.control-hint{display:none}.toast{bottom:135px;max-width:calc(100% - 24px);white-space:normal;z-index:4}
@media(max-width:900px), (pointer:coarse){.weapon-strip{bottom:122px;min-width:0}.toast{bottom:240px}}

.quest-contacts{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:10px 0}.quest-contacts button,#questsBtn{background:#174455;color:white;border:1px solid #608e9e;border-radius:8px;padding:9px;cursor:pointer;min-height:42px}.quest-contacts small{display:block;font-size:11px;margin-top:4px;color:#c8dce3}.quest-list{display:grid;gap:10px}.quest-list p{font-size:13px;line-height:1.45}.quest-list button:disabled{opacity:.55;cursor:default}.quest-state{color:#ffe296}.quest-list button:hover:not(:disabled),.quest-contacts button:hover,#questsBtn:hover{background:#28677c}#questSummary{white-space:pre-line;font-size:12px;line-height:1.5;color:#d0e4ea}#questsBtn{width:100%}

#islandsBtn{width:100%;padding:10px;border-radius:8px;border:1px solid #608e9e;background:#174455;color:#fff;cursor:pointer}#islandsBtn:hover{background:#28677c}

/* Compact quest acceptance and left-side progress. */
.quest-buttons{display:flex;gap:8px}.quest-buttons button{flex:1;min-height:42px}.quest-simple p{margin:6px 0}.quest-primary{background:#174455;color:white;border:1px solid #608e9e;border-radius:8px;padding:10px}
.quest-tracker{position:absolute;left:10px;top:250px;width:190px;max-height:calc(100% - 380px);overflow:auto;overscroll-behavior:contain;z-index:3;cursor:default;scrollbar-width:thin}.quest-tracker[hidden]{display:none}.tracked-quest{padding:7px;margin-bottom:5px;background:#08232edb;border:1px solid #3e6a7a;border-radius:7px;color:#f4fafb}.tracked-quest>div{display:flex;gap:6px;justify-content:space-between;align-items:start}.tracked-quest b{font-size:12px;line-height:1.3}.tracked-quest strong{font-size:13px;color:#ffe2a2;white-space:nowrap}.tracked-quest small{display:block;margin-top:4px;font-size:11px;line-height:1.3;color:#c6e0e9}.tracked-quest button{margin-top:5px;padding:5px 7px;min-height:28px;border:1px solid #4e879a;border-radius:5px;background:#154355;color:#e6f8ff;font-size:11px;cursor:pointer}.tracked-quest button:hover{background:#28677c}
@media(max-width:900px), (pointer:coarse){.game-wrap{min-height:600px}.quest-tracker{max-height:calc(100% - 490px)}}
@media(max-width:600px){.quest-tracker{top:194px;width:160px;max-height:calc(100% - 434px)}.tracked-quest button{min-height:34px}}

.home-btn{background:#123c48;color:#fff;border:1px solid #55c6cb;}

/* V42: phone playfield, four compact menus. */
.mobile-nav,.mobile-weapon,.mobile-goal{display:none}
.mobile-menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.mobile-menu-grid button{min-height:48px;padding:10px;background:#164456;border:1px solid #56899a;border-radius:10px;color:#fff;cursor:pointer}
.mobile-menu-grid button:disabled{opacity:.45}.mobile-stats{line-height:1.8;color:#d0e8ee;font-size:14px}
@media(max-width:900px), (pointer:coarse){
 html,body{height:100%;overflow:hidden}#app{height:100dvh;overflow:hidden}
 .unified-topbar{padding:5px 8px;position:static;min-height:0}
 .status-strip{display:block}.status-cell{display:none}.status-cell:first-child{display:flex;flex-direction:row;align-items:center;gap:10px;padding:3px 8px;border:0;background:none;height:30px}
 .status-cell:first-child .bar{flex:1}.status-cell:first-child>b{font-size:14px;white-space:nowrap}
 .layout{display:block;flex:1;min-height:0;padding:0;position:relative}
 .game-wrap{height:100%;min-height:0;border:0;border-radius:0}
 .side,.weapon-strip,.hud-right,.sector-badge,.combat-status,.home-btn,.quest-tracker,.build-badge{display:none!important}
 #minimap{left:8px;top:8px;width:80px;height:90px;border-radius:8px}
 .mobile-goal{display:block;position:absolute;top:10px;left:98px;right:10px;z-index:2;font-size:12px;line-height:1.5;color:#e0fff8;text-shadow:0 1px 3px #000;pointer-events:none}
 .mobile-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;position:absolute;left:8px;right:8px;bottom:calc(8px + env(safe-area-inset-bottom));z-index:8}
 .mobile-nav button{height:44px;border:1px solid #477987;border-radius:10px;background:#103742ed;font-size:12px;font-weight:700;touch-action:manipulation}
 .mobile-weapon{display:block;position:absolute;bottom:calc(60px + env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:210px;max-width:70%;height:42px;z-index:7;border:1px solid #6fc9c1;background:#103c48ed;border-radius:10px;font-size:14px}
 .controls.mobile-only{bottom:calc(112px + env(safe-area-inset-bottom));left:8px;right:8px}
 .dpad button{width:44px;height:44px;border-radius:10px;background:#0a2c388c}.fire{width:64px;height:64px;font-size:12px;background:#853c40d9}
 #pirateCaption{bottom:calc(214px + env(safe-area-inset-bottom));font-size:13px;max-width:88vw;padding:6px 10px}
 .toast{bottom:calc(215px + env(safe-area-inset-bottom));font-size:12px}
 dialog{max-height:88dvh!important}dialog form{padding:12px!important}
}
@media (orientation:landscape) and (pointer:coarse), (max-width:900px) and (max-height:500px){
 #minimap{width:64px;height:72px}.mobile-goal{left:82px;max-width:55%}
 .controls.mobile-only{bottom:64px}.mobile-weapon{bottom:64px;width:180px}
 #pirateCaption,.toast{bottom:115px}.dpad button{height:40px;width:40px}
}

.weapon-slot span small{display:block;font-size:10px;line-height:1.2;margin-top:3px;color:#c3dbe2}.mobile-menu-grid button small{display:block;font-size:11px;line-height:1.35;margin-top:4px;color:#c3dbe2}.mobile-weapon{white-space:pre-line;font-size:12px;line-height:1.35;}

#joystick{width:108px;height:108px;border-radius:50%;background:#0b2d398c;border:2px solid #82c7ce80;display:grid;place-items:center;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:inset 0 0 20px #0004}#joystickKnob{width:44px;height:44px;border-radius:50%;background:#65c8c4cc;border:2px solid #d4fff4;pointer-events:none;will-change:transform}@media (orientation:landscape) and (pointer:coarse), (max-width:900px) and (max-height:500px){#joystick{width:88px;height:88px}#joystickKnob{width:38px;height:38px}}

.menu-icon{display:none}
@media(max-width:900px), (pointer:coarse){
 #app{height:100dvh;max-height:100dvh}.layout{flex:1 1 0;min-height:0;overflow:hidden}
 .game-wrap{position:absolute;inset:0;width:100%;height:100%;min-height:0}
 #game{position:absolute;inset:0;width:100%;height:100%}
}
@media (orientation:landscape) and (pointer:coarse), (max-width:900px) and (max-height:500px){
 .mobile-nav{top:8px;bottom:auto;left:auto;right:max(10px,env(safe-area-inset-right));display:flex;gap:7px}
 .mobile-nav button{width:42px;height:42px;min-width:42px;padding:0;border-radius:50%;display:grid;place-items:center;background:#103742d9}
 .mobile-nav .menu-name{display:none}.mobile-nav .menu-icon{display:block;font-size:23px;line-height:1}
 .mobile-goal{top:10px;left:82px;right:210px;max-width:none;font-size:11px}
 .controls.mobile-only{bottom:max(12px,env(safe-area-inset-bottom))}
 .mobile-weapon{bottom:max(12px,env(safe-area-inset-bottom));width:180px}
 #pirateCaption,.toast{bottom:65px;max-width:55vw}
}

.dock-menu-btn{position:absolute;left:10px;top:246px;z-index:6;border:1px solid #e8c981;border-radius:22px;background:#123943ed;color:#ffe8ac;min-height:42px;padding:8px 14px;cursor:pointer}.dock-menu-btn[hidden]{display:none}.combat-buttons{display:flex;flex-direction:column;align-items:center;gap:7px;pointer-events:auto}#leadBtn{min-height:42px;border:1px solid #77bdbb;border-radius:22px;padding:7px 12px;background:#103b47ed;font-size:11px;touch-action:manipulation}#leadBtn[aria-pressed=true]{background:#216d58;border-color:#9ff8cc}@media(max-width:900px),(pointer:coarse){.dock-menu-btn{top:104px;left:8px;min-height:40px;font-size:12px;padding:6px 10px}}@media(orientation:landscape) and (pointer:coarse),(max-width:900px) and (max-height:500px){.dock-menu-btn{top:88px}.combat-buttons{flex-direction:row;align-items:end}#leadBtn{max-width:90px}}

#fishingPanel{position:absolute;right:12px;top:155px;width:190px;z-index:9;padding:14px 12px 12px;border:1px solid #78c4c2;border-radius:14px;background:#0c303dee;cursor:default}#fishingPanel[hidden]{display:none}#fishingStatus{display:block;font-size:13px;margin-right:18px;margin-bottom:10px}#fishingAction{width:100%;min-height:46px;border:1px solid #8bd1c7;border-radius:9px;background:#22685c;font-weight:bold}#fishingAction:disabled{opacity:.5}#fishingAction.bite-ready{background:#98631b;border-color:#ffe39a}#fishingClose{position:absolute;right:4px;top:3px;width:30px;height:30px;border:0;background:none;font-size:22px}@media(orientation:landscape) and (pointer:coarse),(max-width:900px) and (max-height:500px){#fishingPanel{top:62px;right:10px;width:170px;padding:10px}#fishingAction{min-height:42px}}

.joints{display:flex;gap:9px;align-items:end;min-height:38px;padding-top:12px}.joint{position:relative;display:inline-block;width:30px;height:20px;opacity:.22;filter:grayscale(1);text-shadow:none}.roll-paper{position:absolute;left:0;bottom:3px;width:28px;height:8px;border-radius:3px 1px 1px 3px;border:1px solid #9b8768;background:repeating-linear-gradient(95deg,#e9d9ad 0 6px,#cbb889 7px,#eee0b9 8px);transform:rotate(-14deg)}.roll-paper:after{content:'';position:absolute;right:-2px;top:-1px;width:5px;height:8px;background:#69554b;border-radius:1px 3px 3px 1px}.joint.active{opacity:1;filter:none;text-shadow:none}.joint.active .roll-paper:after{background:#ff8548;box-shadow:0 0 5px #ff603f}.roll-smoke,.roll-smoke:after{position:absolute;width:9px;height:15px;border-left:2px solid #d9e7e7;border-radius:50%;right:0;bottom:13px;opacity:0}.roll-smoke:after{content:'';right:2px;bottom:3px}.joint.active .roll-smoke{animation:rollSmoke 2.4s ease-out infinite}.joint.active .roll-smoke:after{animation:rollSmoke 2.4s .8s ease-out infinite}.joint:nth-child(2) .roll-smoke{animation-delay:.5s}.joint:nth-child(3) .roll-smoke{animation-delay:1s}@keyframes rollSmoke{0%{opacity:0;transform:translate(0,3px) scale(.7)}35%{opacity:.65}100%{opacity:0;transform:translate(4px,-10px) scale(1.3)}}@media(prefers-reduced-motion:reduce){.joint.active .roll-smoke,.joint.active .roll-smoke:after{animation:none;opacity:.5}}

.mobile-stats-hud{display:none}
@media(max-width:900px),(pointer:coarse){
 .unified-topbar{display:none!important}
 .mobile-stats-hud{display:block;position:absolute;left:max(8px,env(safe-area-inset-left));right:8px;top:max(6px,env(safe-area-inset-top));z-index:5;font-size:11px;line-height:1.5;color:#fff;text-shadow:0 1px 3px #00131f,1px 0 2px #00131f;pointer-events:none}
 .mobile-stats-hud>div{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.hp-heart{color:#ff787e;font-size:15px}.compact-ammo{gap:3px 9px!important;font-size:10px;max-height:45px;overflow:hidden}
 #minimap{top:88px}.mobile-goal{top:90px}.dock-menu-btn{top:184px}
 .combat-buttons{flex-direction:column!important;align-items:center;gap:8px}
 #leadBtn{width:64px;height:64px;min-height:64px;max-width:64px;border-radius:50%;padding:5px;font-size:23px;line-height:1.1}
 #leadBtn small{display:block;font-size:10px;margin-top:4px}
}
@media(orientation:landscape) and (pointer:coarse),(max-width:900px) and (max-height:500px){
 .mobile-stats-hud{right:210px}.compact-ammo{max-height:32px}
 #minimap{top:66px}.mobile-goal{top:68px}.dock-menu-btn{top:146px}
 .combat-buttons .fire,#leadBtn{width:54px;height:54px;min-height:54px;max-width:54px}
}

.dock-menu-btn{transform:translate(-50%,-100%);white-space:nowrap;}

.dock-options{grid-template-columns:1fr!important}.dock-options button{text-align:left;min-height:54px}.dock-back{margin:0 0 8px;padding:8px 12px;border:1px solid #56899a;border-radius:8px;background:#164456;min-height:40px}#minimap{pointer-events:auto;cursor:pointer}#closeMap{position:absolute;right:12px;top:12px;z-index:32;border-radius:50%;width:44px;height:44px;border:1px solid #7bbfc9;background:#123743;color:#fff;font-size:25px}#closeMap[hidden]{display:none}#minimap.expanded-map{position:absolute;left:50%!important;top:50%!important;right:auto!important;transform:translate(-50%,-50%);width:min(75vw,336px)!important;height:auto!important;max-height:80%;aspect-ratio:168/190;z-index:30;background:#092733;box-shadow:0 0 0 100vmax #001019bb}
@media(max-width:900px),(pointer:coarse){
 #minimap{left:auto;right:max(8px,env(safe-area-inset-right));top:8px;width:58px;height:66px}
 .mobile-nav{top:10px;bottom:auto;left:auto;right:76px;display:flex;gap:7px}
 .mobile-nav button{width:40px;height:40px;min-width:40px;border-radius:50%;padding:0;font-size:24px;display:grid;place-items:center}
 .mobile-stats-hud{right:170px}.compact-ammo{max-height:60px;overflow:auto;pointer-events:auto}
 .mobile-goal{left:8px;right:8px;top:90px;font-size:11px}
 .controls.mobile-only{bottom:max(12px,env(safe-area-inset-bottom))}
 .mobile-weapon{bottom:max(12px,env(safe-area-inset-bottom));width:160px;max-width:43%;font-size:11px}
}

#coopBar{position:absolute;top:40px;left:8px;right:8px;z-index:15;display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12px;color:#e0ffff;text-shadow:0 1px 2px #002330}#coopBar[hidden]{display:none}#coopBar small{font-size:11px}#coopBar button{min-height:36px;border:1px solid #5f9ca5;border-radius:8px;background:#103845;color:#fff;padding:5px 8px}#coopNick,#coopCode{display:block;width:100%;margin:6px 0 12px;min-height:44px;border:1px solid #57919e;border-radius:8px;background:#123643;color:white;padding:8px}#coopError{color:#ffdc9c}.coop-playing .unified-topbar,.coop-playing .side,.coop-playing #minimap,.coop-playing #mobileGoal,.coop-playing .mobile-nav,.coop-playing #mobileWeapon,.coop-playing .weapon-strip,.coop-playing #questTracker,.coop-playing #dockMenuBtn,.coop-playing .home-btn,.coop-playing .hud-right,.coop-playing #combatStatus,.coop-playing #sectorBadge{display:none!important}.coop-playing .layout{display:block;position:relative;padding:0;flex:1;min-height:0}.coop-playing .game-wrap{position:absolute;inset:0;height:100%;min-height:0}.coop-playing #mobileStats{display:block;position:absolute;left:8px;right:8px;top:8px;z-index:10;font-size:13px;color:#fff}.coop-playing .mobile-only{display:flex;position:absolute;left:10px;right:10px;bottom:12px;justify-content:space-between;align-items:end;pointer-events:none}.coop-playing #joystick,.coop-playing .combat-buttons{pointer-events:auto}

/* Attack is separate from selecting a target, in either orientation. */
.combat-buttons{position:relative;align-items:flex-end!important;flex-direction:column!important;gap:6px!important;pointer-events:none!important}.combat-buttons button{pointer-events:auto}.combat-buttons #fireBtn,.combat-buttons #leadBtn{width:48px;height:48px;min-height:48px;max-width:48px;border-radius:50%;margin-right:17px;padding:3px;font-size:11px}.combat-buttons #leadBtn{font-size:21px}.combat-buttons #leadBtn small{font-size:8px;display:block}.attack-row{display:flex;align-items:flex-end;gap:8px}.quick-abilities{position:relative;display:grid;grid-template-columns:44px 44px;gap:5px;padding-top:18px}.quick-abilities button{width:44px;height:44px;min-height:44px;padding:2px;border-radius:50%;background:#103d4bea;border:1px solid #8dd5d4;color:#e8ffff;font-size:20px}.quick-abilities button:disabled{opacity:.45}.quick-abilities small{display:block;font-size:8px}.quick-abilities #quickMana{position:absolute;top:0;left:0;font-size:11px;color:#9de3ff;text-shadow:0 1px 2px #000}#attackBtn{position:relative;width:82px;height:82px;min-height:82px;border-radius:50%;background:#863d2eed;border:2px solid #ffc080;color:#fff3d3;font-size:13px;font-weight:900;touch-action:none;user-select:none}#attackBtn.firing{background:#bd4932;box-shadow:0 0 15px #ffb45788}#attackArrow{position:absolute;left:21px;top:-15px;font-size:35px;transform-origin:20px 55px;pointer-events:none}#attackArrow[hidden]{display:none}@media(max-width:360px){.quick-abilities{grid-template-columns:38px 38px}.quick-abilities button{width:38px;height:38px;min-height:38px}#attackBtn{width:72px;height:72px;min-height:72px}.combat-buttons #fireBtn,.combat-buttons #leadBtn{margin-right:12px}}

.quick-abilities #quickMana{pointer-events:auto;cursor:pointer;min-height:24px;top:-6px;padding:3px 6px;border:1px solid #65adbc;border-radius:8px;background:#093342}/* Section navigation is a vertical list; product grids retain their columns. */
.base-hub{display:flex!important;flex-direction:column!important;gap:10px}.base-hub>button{width:100%;text-align:left;min-height:48px}

#crossSectorBtn{position:absolute;z-index:12;left:50%;bottom:130px;transform:translateX(-50%);max-width:70%;min-height:44px;border:1px solid #a8d6ce;border-radius:18px;background:#124550e8;color:#fff1b9;padding:8px 15px;font-size:12px}#crossSectorBtn[hidden]{display:none}
