:root{--sea:#0a202a;--mint:#9cdec5;--brass:#dfc285;--ink:#d7e6df;--line:#adc9bd36}
/* Fusion results live above the workspace without taking pointer or keyboard input. */
.fusion-announcement{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.fusion-feedback{--fusion-color:#ffe0a0;position:fixed;inset:0;z-index:40;pointer-events:none;color:var(--fusion-color);animation:fusion-feedback-exit 2.4s both}
.fusion-failure{--fusion-color:#ffa083}
.fusion-impact{position:absolute;left:var(--fusion-x);top:var(--fusion-y);width:0;height:0}
.fusion-core{position:absolute;left:-44px;top:-44px;width:88px;height:88px;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle,#ffe4ac99,transparent 70%);animation:fusion-core-rise 1.1s both;filter:drop-shadow(0 0 10px var(--fusion-color))}
.fusion-core svg{width:76px;height:68px}
.fusion-ring{position:absolute;left:-52px;top:-52px;width:104px;height:104px;box-sizing:border-box;border:2px solid var(--fusion-color);border-radius:50%;box-shadow:0 0 20px #f5cf7866,inset 0 0 16px #f5cf7844;animation:fusion-ring-burst 900ms ease-out both}
.fusion-ring-echo{animation-delay:140ms;border-width:1px}
.fusion-sparks i{position:absolute;left:-2px;top:-2px;width:4px;height:9px;border-radius:2px;background:var(--fusion-color);box-shadow:0 0 8px var(--fusion-color);animation:fusion-spark 950ms var(--delay) ease-out both}
.fusion-level{position:absolute;left:-85px;top:38px;width:170px;text-align:center;font-size:24px;letter-spacing:2px;text-shadow:0 2px 6px #06171d,0 0 18px #e5b967;animation:fusion-level-rise 1.8s both}
.fusion-result{position:absolute;left:var(--fusion-banner-x);top:var(--fusion-banner-y);transform:translateX(-50%);width:var(--fusion-banner-width);box-sizing:border-box;display:flex;align-items:center;gap:16px;padding:15px 20px;border:1px solid var(--fusion-color);border-radius:5px;background:linear-gradient(115deg,#31463af5,#0a232cf5);box-shadow:0 10px 35px #0009,inset 3px 0 var(--fusion-color);animation:fusion-result-enter 280ms ease-out both}
.fusion-result-symbol{font-size:36px;line-height:1;text-shadow:0 0 22px currentColor}
.fusion-result strong{display:block;font-size:22px;letter-spacing:4px;line-height:1.4}
.fusion-result b{display:block;color:#e1e8d8;font-size:13px;font-weight:normal;margin-top:3px}
.fusion-result div>span{display:block;color:#c8d6cb;font-size:12px;margin-top:4px}
.fusion-failure .fusion-result{background:linear-gradient(115deg,#4a302af5,#15272df5)}
.fusion-failure .fusion-core{background:radial-gradient(circle,#d9755555,transparent 70%);animation:fusion-core-fail 650ms both}
.fusion-failure .fusion-ring{border-style:dashed;box-shadow:none;animation:fusion-ring-break 650ms ease-out both}
.fusion-failure .fusion-ring-echo{animation-delay:90ms}
.fusion-failure .fusion-level{font-size:18px;text-shadow:0 2px 6px #06171d}
@keyframes fusion-ring-burst{0%{opacity:0;transform:scale(.3)}20%{opacity:1}100%{opacity:0;transform:scale(1.9)}}
@keyframes fusion-ring-break{0%{opacity:0;transform:scale(.6) rotate(-15deg)}25%{opacity:.9}100%{opacity:0;transform:translateY(24px) scale(1.3) rotate(20deg)}}
@keyframes fusion-core-rise{0%{opacity:0;transform:scale(.7)}18%{opacity:1;transform:scale(1.18)}45%{opacity:1;transform:scale(1)}100%{opacity:0;transform:translateY(-12px) scale(1)}}
@keyframes fusion-core-fail{0%{opacity:0;transform:translateX(0)}15%,45%{opacity:1;transform:translateX(-6px)}30%,60%{opacity:1;transform:translateX(6px)}75%{opacity:.8;transform:translateX(0)}100%{opacity:0;transform:translateY(10px)}}
@keyframes fusion-spark{0%{opacity:0;transform:translate(0,0) scale(.4)}18%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.2)}}
@keyframes fusion-level-rise{0%{opacity:0;transform:translateY(12px)}18%,75%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-18px)}}
@keyframes fusion-result-enter{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}
@keyframes fusion-feedback-exit{0%,82%{opacity:1}100%{opacity:0}}
.fusion-feedback[data-reduced-motion=true],.fusion-feedback[data-reduced-motion=true] *{animation:none!important}
.fusion-feedback[data-reduced-motion=true] .fusion-impact{display:none}
@media(prefers-reduced-motion:reduce){.fusion-feedback,.fusion-feedback *{animation:none!important}.fusion-feedback .fusion-impact{display:none}}
#voyage{position:fixed;inset:0;z-index:30;color:var(--ink);background:var(--sea);font-family:"Microsoft YaHei",sans-serif}#voyage[hidden]{display:none}#worldMap{position:absolute;width:100%;height:100%;inset:0}#voyage header{position:absolute;left:28px;right:28px;top:22px;display:flex;align-items:center;gap:24px;padding:16px 22px;background:#0a202adc;border:1px solid var(--line)}#voyage h1{font-size:22px;margin:0;color:var(--brass)}#voyage header small{letter-spacing:3px;font-size:10px;display:block;color:#8ba69f;margin-top:6px}#voyage nav{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap}.voyage-button,#voyage button,#dock button{padding:10px 16px;color:var(--ink);background:#18363d;border:1px solid #8bafa760;cursor:pointer;font:inherit;border-radius:3px}#voyage button:hover,#dock button:hover,.voyage-button:hover{border-color:var(--brass);background:#27433f}#dock button:disabled{opacity:.4;cursor:not-allowed}#worldNote{position:absolute;left:32px;bottom:28px;max-width:600px;line-height:1.8;background:#092029de;padding:18px 24px;border-left:2px solid var(--mint)}#worldLegend{position:absolute;right:32px;bottom:32px;font-size:13px;line-height:2;color:#a4beb5}#voyageWallet{color:var(--brass);white-space:nowrap}
#dock{width:min(1240px,94vw);max-height:90vh;padding:0;color:var(--ink);background:#0c2530;border:1px solid #6b8c7d;font:14px/1.6 "Microsoft YaHei",sans-serif;box-shadow:0 18px 80px #0009}#dock::backdrop{background:#031017b8;backdrop-filter:blur(3px)}#dockHeader{position:sticky;top:0;z-index:2;background:#0c2530;display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid var(--line)}#dockHeader h2{margin:0;color:var(--brass);font-size:22px}#dockBody{padding:22px}#dock h3{color:var(--brass);font-weight:normal;margin:6px 0 14px}#dock p{margin:8px 0}#dock select,#dock input{background:#16343f;color:var(--ink);border:1px solid #739b8e;padding:8px;max-width:100%}.dock-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.part-card{position:relative;border:1px solid var(--line);padding:15px;background:#102e36}.part-card.selected{border-color:var(--brass);box-shadow:inset 0 0 0 1px var(--brass)}.part-card b{display:block;color:#e5d4a7}.part-card small{display:block;color:#9ab3a8}.part-card svg{width:90px;height:65px;float:right}.part-card button{margin-top:10px;margin-right:6px}.dock-columns{display:grid;grid-template-columns:minmax(0,2fr) minmax(270px,1fr);gap:24px}.deck-view{width:100%;height:min(53vh,530px);background:#0a2026;border:1px solid var(--line);touch-action:none}.deck-view polygon{cursor:pointer;stroke-width:1}.deck-view text{pointer-events:none;user-select:none;font-size:9px;fill:#e1e5c5;text-anchor:middle}.deck-toolbar{display:flex;gap:8px;flex-wrap:wrap;padding:10px 0}.dock-inventory{max-height:58vh;overflow:auto;display:grid;gap:8px}.dock-inventory .part-card{padding:10px}.dock-alert{color:#f2b48c;border:1px solid #93624a;padding:10px;margin:12px 0}.dock-muted{color:#9eb7ae;font-size:12px}.fusion-slots{display:grid;grid-template-columns:1fr 50px 1fr;align-items:center;gap:20px}.fusion-slots>div{padding:25px;border:1px solid var(--line);min-height:130px}.dock-actions{margin-top:18px;display:flex;gap:10px;flex-wrap:wrap}.expedition-hud{position:fixed;z-index:5;right:26px;top:340px;width:220px;color:#c9dfd4;font-size:12px;max-height:calc(100vh - 570px);overflow:auto}.expedition-hud button{font-size:12px;margin:5px 0;padding:8px}.ep-status{color:#77b2e1;margin-left:8px}.expedition-extra{display:flex;gap:8px;flex-wrap:wrap}.expedition-extra button{padding:9px 14px}.expedition-extra small{display:block}.intent-row{padding:7px 0;border-bottom:1px solid var(--line);color:#dcb680}.expedition-float{position:fixed;z-index:6;left:190px;top:116px;padding:6px 12px;background:#0a202acc;color:#cfe0ce;font-size:12px}.command-deck .weapons{overflow-x:auto}.command-deck .weapon{min-width:125px}
@media(max-width:850px){#voyage header{left:10px;right:10px;top:10px;gap:8px;flex-wrap:wrap;padding:12px}#voyage nav{margin-left:0}#voyage nav button{padding:8px}#worldNote{left:12px;right:12px;bottom:12px;font-size:12px}#worldLegend{display:none}.dock-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dock-columns{grid-template-columns:1fr}.dock-inventory{max-height:250px;grid-template-columns:repeat(2,minmax(0,1fr))}.deck-view{height:330px}.expedition-hud{right:10px;width:150px}.fusion-slots{grid-template-columns:1fr;gap:6px}.fusion-slots>span{text-align:center}#dockBody{padding:12px}}

/* Enemy intelligence is separate from ship status, contextual actions and the menu. */
.expedition-battle .mission{top:108px;right:26px;width:300px}
.expedition-battle .mission .kicker{display:none}
.expedition-battle .mission h2{margin:0 0 6px;font-size:18px}
.expedition-battle .mission p{margin:0;font-size:12px;line-height:1.6}
.expedition-battle .mission .log{display:none}
.expedition-battle .mission .enemy-count{margin-top:10px;padding-top:8px}
.expedition-battle .expedition-hud{top:232px;right:26px;width:300px;bottom:calc(100vh - var(--battle-deck-top,70vh) + 14px);max-height:none;padding:10px;background:#0a222bec;border:1px solid var(--line);border-radius:6px;scrollbar-width:thin}
.expedition-battle .expedition-hud button{display:block;width:100%;min-height:44px;margin:0 0 8px;font-size:12px;text-align:left}
.expedition-battle .intent-row{min-height:44px;cursor:pointer;line-height:1.6}
.expedition-battle .expedition-float{left:186px;top:153px;max-width:calc(100vw - 540px);padding:8px 12px;border:1px solid var(--line);border-radius:5px;pointer-events:none;line-height:1.5}
#battleReportToggle{display:none}
@media(max-width:960px){
 .expedition-battle .expedition-float{left:24px;right:148px;top:137px;max-width:none;min-height:40px;display:flex;align-items:center;font-size:11px;padding:6px 10px}
 #battleReportToggle:not([hidden]){display:block;position:fixed;z-index:7;right:24px;top:137px;min-height:40px;width:114px;font-size:12px}
 .expedition-battle .expedition-hud{display:none;z-index:8;top:185px;right:24px;width:280px;bottom:calc(100vh - var(--battle-deck-top,70vh) + 12px);box-shadow:0 10px 30px #0008}
 .expedition-battle.battle-hud-open .expedition-hud{display:block}
}
@media(max-width:620px){
 .expedition-battle .expedition-float{left:12px;right:126px;top:130px;font-size:10px;padding:6px 8px;min-height:44px}
 #battleReportToggle:not([hidden]){right:12px;top:130px;min-height:44px;width:104px;font-size:11px}
 .expedition-battle .expedition-hud{top:182px;right:12px;width:calc(100vw - 24px)}
}
#worldChartTitle{position:absolute;left:40px;top:145px;color:#b9c7ae;pointer-events:none}#worldChartTitle span{display:block;font-size:27px;letter-spacing:6px}#worldChartTitle small{display:block;margin-top:12px;font-size:11px;letter-spacing:2px;color:#799d92}#worldDestination{position:absolute;right:28px;bottom:115px;width:248px;box-sizing:border-box;border:1px solid #96af8b55;background:linear-gradient(135deg,#16373ef2,#0b242fed);padding:22px;box-shadow:0 12px 40px #00101944}#worldDestination strong{font-size:18px;color:var(--brass)}#worldDestination p{font-size:12px;color:#9db4a7;line-height:1.8}#worldDestination button{display:block;width:100%;margin-top:9px;padding:10px 8px;text-align:left;font-size:12px}#worldDestination button:disabled{opacity:.5;cursor:default}#worldNote{max-width:min(640px,calc(100vw - 400px));font-size:13px;padding:12px 18px}#worldLegend{font-size:11px;bottom:30px;right:28px;color:#8fa99e}
#voyageConfirm{width:min(440px,calc(100vw - 64px));box-sizing:border-box;padding:28px;color:var(--ink);background:#102d36;border:1px solid #9bb19a;font:14px/1.8 "Microsoft YaHei",sans-serif;box-shadow:0 25px 90px #000b}#voyageConfirm::backdrop{background:#020f17a6;backdrop-filter:blur(2px)}#voyageConfirm h2{font-size:20px;color:var(--brass);margin-top:0}#voyageConfirm button{padding:9px 22px;background:#23423f;border:1px solid #91af97;color:var(--ink);font:inherit;cursor:pointer}#voyageConfirm .dock-actions{justify-content:flex-end}#voyageConfirm button:last-child{color:#09252b;background:#c6d0ad}#voyageConfirm button:disabled{opacity:.4}
.shop-summary{display:flex;gap:20px;align-items:center;padding:0 0 20px;color:#809f91}.shop-summary b{margin-left:auto;color:var(--brass);font-size:18px}.shop-summary small{color:#adc3af}.shop-tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin-bottom:18px}#dock .shop-tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;background:none;color:#9fb5a7;padding:12px 5px}#dock .shop-tabs button[aria-selected=true]{color:var(--brass);border-bottom-color:var(--brass)}#shopNotice{min-height:27px;color:var(--mint);font-size:13px}.shop-price{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);margin-top:20px;padding-top:12px}.shop-price strong{font-size:24px;font-weight:500;color:var(--brass)}.shop-price strong small{display:inline;font-size:11px;color:#9eae96}.shop-price>span{font-size:11px;color:#a5baac}#shopParts .part-card{padding:22px;min-height:175px;background:linear-gradient(145deg,#19353b,#0d2932)}#shopParts .part-card button{width:100%;margin:12px 0 0}#shopParts .part-card.sold-out{opacity:.48}.shop-footer{display:flex;align-items:center;justify-content:space-between;margin-top:24px;padding-top:18px;border-top:1px solid var(--line);font-size:12px;color:#94aa9b}.shop-empty{padding:55px;text-align:center;color:#9bb0a3}
@media(max-width:700px){#worldChartTitle{top:155px;left:22px}#worldChartTitle span{font-size:20px}#worldChartTitle small{margin-top:4px}#worldDestination{bottom:85px;right:14px;left:14px;width:auto;padding:14px}#worldDestination strong{font-size:15px}#worldDestination p{margin:5px 0}#worldDestination button{width:auto;display:inline-block;margin-right:5px;padding:8px;font-size:11px}#worldNote{max-width:none;bottom:10px;padding:8px 12px;line-height:1.5;max-height:55px;overflow:auto}.shop-summary{flex-wrap:wrap;gap:8px}.shop-summary>span{display:none}.shop-summary b{margin-left:0}.shop-tabs{gap:16px}.shop-footer{align-items:flex-start;gap:10px}#shopParts .part-card{padding:12px}#shopParts .part-card svg{width:60px;height:50px;float:none}.shop-price{flex-wrap:wrap}.shop-price strong{font-size:20px}}

.native-loadout{padding:14px 18px;margin-bottom:18px;border:1px solid #8da58455;background:#1a3639}.native-loadout b{color:var(--brass)}.native-loadout p{color:#cad5bd;line-height:1.9}.native-loadout small{color:#94ad9f}
#gm{z-index:60;width:350px;max-height:calc(100vh - 110px);overflow:auto}#gm .gm-voyage{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}#gm h3{color:var(--brass);font-size:13px;margin:0 0 8px}#gm .gm-row{display:flex;align-items:stretch;gap:7px;margin:8px 0}#gm .gm-row button{flex:1;white-space:normal;margin:0;font-size:11px;padding:8px}#gm input[type=number],#gm select{min-width:0;width:54%;color:var(--ink);background:#17343b;border:1px solid #8ca89466;padding:7px;font:inherit}#gm .gm-voyage label{font-size:11px;display:block;color:#a7baac;margin-top:12px}#gmFeedback{font-size:11px;color:var(--mint);line-height:1.7}#gmWallet{color:var(--brass);font-size:12px}.assembly-hull-art{pointer-events:none}#assemblyDeck{background:radial-gradient(ellipse,#234148,#102a33 70%)}#assemblyDeck .assembly-part-label{font-size:10px;fill:#fff2ce;paint-order:stroke;stroke:#182b24;stroke-width:3px;stroke-linejoin:round}#assemblyDeck .assembly-side-label{font-size:10px;fill:#bcbf98;letter-spacing:1px}#assemblyDeck g:hover polygon{stroke:#ecdda9;stroke-width:1.8}#assemblyDeck g polygon{transition:fill .12s}
@media(max-width:600px){#gm{right:10px;left:10px;bottom:65px;width:auto;max-height:calc(100vh - 90px)}#voyage nav{gap:5px}#voyage nav button{padding:7px}}

.native-loadout summary{cursor:pointer;color:var(--brass);font-weight:600}.native-loadout:not([open]){padding:10px 16px;margin-bottom:12px}

/* Keep the action beside its subject and reserve space for persistent controls. */
#voyage button,#dock button,#voyageConfirm button{min-height:44px;font-size:14px;line-height:1.35;touch-action:manipulation}
#voyage button:focus-visible,#dock button:focus-visible,#voyageConfirm button:focus-visible,.part-card:focus-visible{outline:2px solid var(--mint);outline-offset:3px}
#dock[open]{display:flex;flex-direction:column;overflow:hidden;max-height:94dvh}
#dockHeader{position:relative;flex:none;padding:14px 20px}
#dockHeader h2{font-size:21px}
#dockClose{min-width:84px}
#dockBody{overflow:auto;min-height:0;overscroll-behavior:contain;padding:18px 20px}
#dock[data-view=assembly]{height:min(920px,94dvh);width:min(1320px,96vw)}
#dock[data-view=assembly] #dockBody{display:flex;flex-direction:column;overflow:hidden;flex:1;gap:8px;padding:12px 20px 0}
#dock[data-view=assembly] #dockBody>p{flex:none;margin:0;font-size:13px}
#dock[data-view=assembly] .native-loadout{padding:8px 12px;margin:0;background:#18343b}
#dock[data-view=assembly] .dock-columns{flex:1;min-height:0;grid-template-columns:minmax(0,1.8fr) minmax(290px,1fr);gap:18px}
.assembly-workspace{display:grid;grid-template-rows:minmax(160px,1fr) auto auto;min-height:0;overflow:hidden}
#dock[data-view=assembly] .deck-view{height:100%;min-height:0;box-sizing:border-box;border-radius:6px}
#dock[data-view=assembly] .deck-toolbar{padding:8px 0 0;gap:6px;align-items:center}
#dock[data-view=assembly] .deck-toolbar button{padding:8px 12px}
#dock[data-view=assembly] .deck-toolbar select{min-height:44px;font-size:13px}
#dock[data-view=assembly] #placementHint{padding:8px 10px;margin:0;min-height:40px;box-sizing:border-box;color:#d4e3cc;background:#17343a;border-radius:4px}
.assembly-cargo{display:flex;flex-direction:column;min-height:0}
#dock .assembly-cargo h3{font-size:16px;margin:0 0 9px}
.assembly-cargo h3 small{display:block;color:#94b1a3;font-size:12px;margin-top:3px}
#dock[data-view=assembly] .dock-inventory{max-height:none;min-height:0;flex:1;align-content:start;padding:3px 6px 3px 3px;scrollbar-gutter:stable}
.part-card[role=button]{cursor:pointer;transition:border-color .15s,background .15s}
.part-card[role=button]:hover{background:#1b3b40;border-color:#adc9bd88}
.part-location{display:inline-block;margin-top:8px;padding:2px 8px;border:1px solid #adc9bd36;border-radius:3px;font-size:11px;color:#bdd4c7}
.part-card.selected .part-location{color:var(--brass);border-color:#dfc28566}
#assemblyActions{flex:none;align-items:center;gap:8px;margin:0 -20px;padding:12px 20px;background:#102b32;border-top:1px solid #91af9755;box-shadow:0 -8px 24px #07191d33}
#assemblyActions>button{min-width:130px}
.assembly-summary{font-size:12px;color:#afc4b6;margin-left:auto}
#dock .primary-action,#voyage .primary-action{background:#c8c594;color:#172c2a;border-color:#ead6a0;font-weight:700}
#dock .primary-action:hover,#voyage .primary-action:hover{background:#e0d4a3}
#cargoTools{position:sticky;top:-18px;z-index:1;background:#0c2530;padding:10px 0;margin:0 0 12px}
#cargoList .part-card{display:flex;flex-direction:column;align-items:stretch}
#cargoList .part-card>svg{float:none;align-self:center;width:110px;height:76px}
#cargoList .part-card>button{margin:12px 0 0;width:100%}
.fusion-slots>div{padding:18px;min-width:0}
.fusion-slots select{width:100%;min-height:44px;font-size:14px}
.fusion-part-preview{margin-top:12px}
.fusion-part-preview:empty{display:none}
.fusion-part-preview .part-card{min-height:112px}
.fusion-part-preview .part-card svg{width:110px;height:76px}
#fusionActions{position:sticky;bottom:-18px;background:#0c2530;padding:12px 0}
#fusionActions button{min-width:130px}
#shopParts .part-card,#shopHulls .part-card,#purifyList .part-card{display:flex;flex-direction:column;align-items:stretch;gap:3px}
#shopParts .part-card>svg,#purifyList .part-card>svg{float:none;align-self:center;width:110px;height:76px;margin-bottom:5px}
#shopParts .part-card>button,#shopHulls .part-card>button,#purifyList .part-card>button{margin:10px 0 0;width:100%;min-height:46px}
.shop-price{margin-top:auto;padding-top:12px}
#shopParts .part-card .shop-price{margin-top:auto;padding-top:16px}
.shop-tabs{position:sticky;top:-18px;background:#0c2530;z-index:1;margin:0 -2px 12px;padding-top:3px;gap:12px}
#dock .shop-tabs button{min-height:48px;padding:12px 16px}
.shop-footer{position:sticky;bottom:-18px;background:#0c2530;z-index:1;margin:18px -2px -18px;padding:12px 0;border-top:1px solid #91af9755;gap:12px}
#shopActions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
#shopNotice:empty{min-height:0}
#voyageConfirm{position:fixed;max-height:calc(100dvh - 32px);overflow:auto;border-radius:8px}
#voyageConfirm .dock-actions{gap:12px}
#voyageConfirm .dock-actions button{min-width:108px;min-height:48px}
#worldDestination{width:280px;padding:18px;max-height:min(460px,calc(100dvh - 310px));overflow:auto;border-radius:8px}
#worldDestination button{min-height:46px;padding:10px 14px;font-size:14px;line-height:1.4}
#worldDestination.at-destination{border-color:#b6c89a;box-shadow:0 15px 45px #00101988}
#worldDestination.at-destination p{font-size:13px}
#worldDestination.at-destination button.primary-action{text-align:center}
@media(max-width:850px){
 #dock[data-view=assembly]{height:96dvh;max-height:96dvh;width:98vw}
 #dockHeader{padding:10px 14px}
 #dock[data-view=assembly] #dockBody{padding:8px 12px 0;gap:6px}
 #dock[data-view=assembly] .dock-columns{grid-template-columns:1fr;grid-template-rows:minmax(190px,1.2fr) minmax(110px,.7fr);gap:8px}
 #dock[data-view=assembly] .native-loadout{font-size:11px;line-height:1.45;padding:6px 9px}
 #dock[data-view=assembly] #dockBody>p:not(.native-loadout){font-size:11px}
 .assembly-workspace{grid-template-rows:minmax(110px,1fr) auto auto}
 #dock[data-view=assembly] .deck-toolbar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));padding:5px 0}
 #dock[data-view=assembly] .deck-toolbar button,#dock[data-view=assembly] .deck-toolbar select{min-width:0;white-space:nowrap;min-height:44px;font-size:12px;padding:7px 5px}
 #dock[data-view=assembly] .deck-toolbar select{grid-column:1/-1;width:100%}
 #dock[data-view=assembly] #placementHint{font-size:11px;min-height:32px;padding:6px 8px}
 #dock .assembly-cargo h3{font-size:13px;margin:0 0 5px}
 .assembly-cargo h3 small{display:inline;margin-left:8px;font-size:10px}
 #dock[data-view=assembly] .dock-inventory{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
 #assemblyInventory .part-card{font-size:11px;padding:7px}
 #assemblyInventory .part-card svg{width:54px;height:44px;float:right}
 #assemblyInventory .part-card .part-location{margin-top:3px;font-size:10px}
 #assemblyInventory details{font-size:10px}
 #assemblyActions{margin:0 -12px;padding:8px 12px;gap:7px}
 #assemblyActions>button{min-width:0;flex:1;min-height:44px;font-size:13px}
 .assembly-summary{flex-basis:100%;margin-left:0;font-size:10px;text-align:center}
 .shop-tabs{top:-18px;gap:4px;justify-content:space-between}
 #dock .shop-tabs button{font-size:13px;padding:9px 10px;flex:1}
 .shop-footer{align-items:center;flex-wrap:wrap;font-size:11px}
 #shopActions{width:100%;justify-content:stretch}
 #shopActions button{flex:1}
}
@media(max-width:700px){
 #voyage header{gap:8px;padding:10px 12px}
 #voyage nav{width:100%;gap:6px}
 #voyage nav button{min-height:44px;padding:8px 10px;font-size:12px}
 #voyage h1{font-size:18px}
 #voyage header small{display:none}
 #voyageWallet{font-size:12px}
 #worldChartTitle{top:155px}
 #worldDestination{left:12px;right:12px;width:auto;bottom:82px;max-height:32dvh;padding:12px}
 #worldDestination button{min-height:44px;font-size:13px;padding:9px 12px}
 #worldDestination:not(.at-destination) button{width:calc(50% - 8px);margin:6px 4px 0 0;vertical-align:top}
 #worldDestination.at-destination button{width:100%;margin-right:0}
 #worldDestination.at-destination button:not(.primary-action){min-height:44px;font-size:12px}
 #worldNote{font-size:11px;max-height:52px}
 #voyageConfirm{width:calc(100vw - 32px);padding:20px}
 #shopParts .part-card>svg,#purifyList .part-card>svg{width:90px;height:65px}
 #dockBody{padding:12px}
}
/* Unified ship workshop: loose inventory only; installed items are inspected on deck. */
#dock[data-view=assembly] #assemblyInventory{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;outline:none;border:1px dashed #91af9740;border-radius:6px;padding:8px;min-height:70px}
#assemblyInventory .part-card{display:flex;flex-direction:column;align-items:center;text-align:center;padding:10px;gap:5px;min-width:0;user-select:none;touch-action:pan-y}
#assemblyInventory .part-card svg{float:none;width:100px;height:70px;flex:none;touch-action:none}
#assemblyInventory .part-card b{font-size:13px;line-height:1.5}
#assemblyInventory .part-card small{font-size:11px}
#assemblyInventory .part-card small:last-child{display:none}
#assemblyInventory .cargo-empty{grid-column:1/-1;align-self:center;text-align:center;color:#9eb7ae;padding:30px 12px;pointer-events:none}
#assemblyDeck [data-part-id]{cursor:grab;touch-action:none}
#assemblyDeck [data-part-id]:focus{outline:none}
#assemblyDeck [data-part-id]:focus polygon{stroke:#ffe5a0;stroke-width:2}
#assemblyTip{position:fixed;z-index:100;width:min(330px,calc(100vw - 24px));max-height:calc(100dvh - 24px);box-sizing:border-box;overflow:hidden;padding:12px;color:#d5e5d8;background:#09232af5;border:1px solid #d2bd83;border-radius:7px;box-shadow:0 12px 36px #0009;pointer-events:none;font-size:12px;line-height:1.6}
#assemblyTip .part-card{padding:0;background:none;border:0}
#assemblyTip .part-card svg{width:78px;height:58px}
#assemblyTip details summary{display:none}
#assemblyTip p{margin:8px 0 0;color:#aac8b7;font-size:12px}
#assemblyTip strong{color:#ebd492;font-size:15px}
#assemblyTip .fusion-drag-art{display:flex;gap:12px;justify-content:center;margin:8px 0}
#assemblyTip .fusion-drag-art svg{width:90px;height:64px}
#assemblyDragGhost{position:fixed;z-index:101;pointer-events:none;width:76px;height:60px;opacity:.85;filter:drop-shadow(0 4px 5px #0009)}
#assemblyDragGhost>svg{width:100%;height:100%}
#assemblyInventory .drop-valid{border-color:#a1e5b3;box-shadow:inset 0 0 0 2px #a1e5b3}
#assemblyInventory .drop-invalid{border-color:#f3917e;box-shadow:inset 0 0 0 2px #f3917e}
#assemblyDeck .drop-valid polygon{stroke:#a1e5b3;stroke-width:3;fill:#9cdec533}
#assemblyDeck .drop-invalid polygon{stroke:#f3917e;stroke-width:3;fill:#f3917e33}
@media(max-width:850px){
 #dock[data-view=assembly] .deck-toolbar{grid-template-columns:repeat(5,minmax(0,1fr))}
 #dock[data-view=assembly] #assemblyInventory{gap:6px;padding:4px}
 #assemblyInventory .part-card{padding:6px;gap:2px}
 #assemblyInventory .part-card svg{width:65px;height:45px}
 #assemblyInventory .part-card b{font-size:11px}
 #assemblyInventory .part-card small{font-size:10px}
}
 .assembly-cargo{border:1px solid transparent;border-radius:6px;padding:5px;transition:background .12s,border-color .12s}
.assembly-cargo.unload-ready{border-color:#8abfa088;background:#254b401f}
.assembly-cargo.drop-valid{background:#254b4055;border-color:#a1e5b3;box-shadow:inset 0 0 0 1px #a1e5b3}
.cargo-unload-hint{display:none;font-size:12px;color:#b8efc9;margin-top:6px;font-weight:400}
.unload-ready .cargo-unload-hint{display:block}


/* Battle information hierarchy: own ship / enemy forecast / resource action / session menu. */
#playerPartsBtn{min-height:44px;white-space:nowrap;font-size:13px;border-color:#7caba370}
#enemyIntel header h3{margin:2px 0 6px;font-size:15px;color:var(--brass)}
#enemyIntel header p{margin:0 0 12px;color:#9db5b0;font-size:11px;line-height:1.6}
#enemyIntel .intel-entry{border-top:1px solid var(--line)}
#enemyIntel .intel-contact{display:flex;align-items:center;gap:10px;background:transparent;border:0;border-radius:0;margin:0;min-height:58px;padding:10px 5px;text-align:left}
#enemyIntel .intel-number{display:grid;place-items:center;flex:none;width:26px;height:26px;border:1px solid #b8946c80;color:#e7c399}
#enemyIntel .intel-contact b{font-size:13px;color:#dedac2}
#enemyIntel .intel-contact small{display:block;font-size:12px;margin-top:4px;color:#cfa875}
#enemyIntel .selected{background:#243936;border-left:2px solid var(--brass)}
#enemyIntel .intel-detail{padding:0 10px 10px 13px;font-size:12px;line-height:1.75;color:#c9dbd0}
#enemyIntel .intel-detail strong{font-size:11px;color:#9fc8ba;font-weight:400}
#enemyIntel ol{padding-left:20px;margin:7px 0}#enemyIntel li+li{margin-top:6px}
#enemyIntel .intel-legend{color:#90a9a1;font-size:10px;margin:8px 0 0;border-top:1px solid var(--line);padding-top:7px}
#salvageContext{position:fixed;z-index:7;width:248px;max-width:calc(100vw - 24px);background:#102c32f5;border:1px solid #bcaa72;border-radius:6px;padding:12px;box-shadow:0 8px 25px #0007;color:#dce7d7}
#salvageContext header{display:flex;align-items:center;justify-content:space-between;color:var(--brass);font-size:14px;margin-bottom:7px}
#salvageContext .salvage-close{min-width:44px;min-height:44px;margin:-7px -7px -3px 8px;font-size:20px;background:none;border:0}
#salvageContext .salvage-info{font-size:14px}#salvageContext select{width:100%;min-height:44px;background:#18383d;color:var(--ink);border:1px solid var(--line);padding:8px;font:inherit}
#salvageContext .salvage-detail{font-size:12px;line-height:1.65;margin:8px 0;color:#aabfb3}
#salvageExecute{min-height:44px;width:100%;font-size:14px;background:#495840;border-color:#a6b087;color:#edf1d4}
#dock[data-view=battle-menu]{width:min(430px,94vw)}#dock[data-view=battle-menu] #dockBody>button{display:block;width:100%;margin-bottom:12px}
.battle-menu-exit{border-top:1px solid var(--line);margin-top:24px;padding-top:14px}.battle-menu-exit p{font-size:12px;color:#acaea1;line-height:1.8}.battle-menu-exit button{width:100%;color:#e8a58f;border-color:#ad776366}
@media(max-width:960px){.expedition-battle .vessel-status{gap:12px}.expedition-battle .identity{display:none}.expedition-battle .vessel-status{width:100%;justify-content:space-between}}
@media(max-width:620px){#playerPartsBtn{padding:8px;font-size:12px}.expedition-battle .health{width:105px}.expedition-battle .action-points{min-width:104px}.expedition-battle .vessel-status{gap:8px}}

@media(max-width:620px){.expedition-battle .health{width:90px;min-width:90px;grid-template-columns:1fr;gap:3px}.expedition-battle .health>span{white-space:nowrap}.expedition-battle .health-track{grid-column:1}.expedition-battle .health b{font-size:12px}}

#assemblyDeck [data-preview]{stroke-width:2;pointer-events:none}

/* The trash is a distinct destructive destination, outside the cargo drop surface. */
.assembly-cargo-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex:none}
.assembly-cargo-heading h3{flex:1;min-width:0}
#dock #assemblyTrash{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:none;width:56px;min-height:56px;padding:4px;gap:2px;color:#caaf8a;background:#172e34;border-color:#9d816055}
#assemblyTrash svg{width:26px;height:26px;pointer-events:none}#assemblyTrash span{font-size:11px;line-height:1.1;pointer-events:none}
#dock #assemblyTrash:hover,#dock #assemblyTrash.drop-discard{color:#ffd6ba;background:#63352e;border-color:#f4a07d;box-shadow:0 0 0 2px #f4a07d44}
@media(max-width:850px){#dock #assemblyTrash{width:48px;min-height:48px}#assemblyTrash svg{width:22px;height:22px}}

/* Persistent occupancy: dark teal cells, bright component perimeter, and clear empty deck. */
#assemblyDeck .deck-occupied>polygon{stroke-width:1.25}
#assemblyDeck .assembly-installed-art,#assemblyDeck .assembly-part-outline{pointer-events:none}
#assemblyDeck .assembly-part-outline{stroke-width:2}
.deck-legend{display:inline-flex;align-items:center;gap:5px;margin-left:14px;color:#bcd4c7;font-size:11px}
.deck-legend i{display:inline-block;width:12px;height:12px;border:1px solid #c4d4b955;border-radius:2px}
.deck-legend .occupied{background:#153e48;border-color:#b4ead5}.deck-legend .empty{background:transparent;margin-left:8px}
#dock #assemblyActions{display:grid;grid-template-columns:auto auto minmax(0,1fr) 56px;align-items:center}
#dock #assemblyActions .assembly-summary{justify-self:end;min-width:0;text-align:right}
#dock #assemblyActions #assemblyTrash{min-width:0;justify-self:end;align-self:end;margin-left:10px}
@media(max-width:850px){
 #dock #assemblyActions{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 48px;gap:6px}
 #dock #assemblyActions>button:not(#assemblyTrash){width:100%;min-width:0;padding:7px 5px}
 #dock #assemblyActions .assembly-summary{grid-column:1/3;grid-row:2;font-size:10px;text-align:left;justify-self:start;margin:0}
 #dock #assemblyActions #assemblyTrash{grid-column:3;grid-row:1/3;margin-left:0}
 .deck-legend{margin-left:6px;font-size:10px;gap:3px}
}
/* One stable shop workspace: services on the left, the same cargo on the right. */
#dock.shop-workshop #dockBody>.native-loadout{display:none}
#dock.shop-workshop .shop-tabs{position:static;flex:none;margin:0;padding:0;min-height:48px}
#dock.shop-workshop #shopNotice{flex:none;height:36px;min-height:36px;overflow:auto;font-size:12px;line-height:18px}
#dock.shop-workshop .shop-main{display:grid;grid-template:minmax(0,1fr) / minmax(0,1fr);min-height:0;min-width:0}
#dock.shop-workshop .shop-main>.assembly-workspace,#dock.shop-workshop #shopPanel{grid-area:1/1;min-height:0;min-width:0}
#dock.shop-workshop .ship-deck-summary{margin:0;font-size:13px}
#dock.shop-workshop #shopPanel{overflow:auto;scrollbar-gutter:stable;padding:0 8px 8px 0;overscroll-behavior:contain}
#dock.shop-workshop #shopPanel[hidden],#dock.shop-workshop #shopActions[hidden]{display:none}
#dock.shop-workshop .dock-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
#dock.shop-workshop #shopParts .part-card{padding:14px;min-height:0}
#dock.shop-workshop #assemblyActions>#shopActions{grid-column:1/3;grid-row:1;justify-content:flex-start;flex-wrap:nowrap}
#dock.shop-workshop #assemblyActions>button:nth-child(2){grid-column:1;grid-row:1}
#dock.shop-workshop #assemblyActions>button:nth-child(3){grid-column:2;grid-row:1}
#dock.shop-workshop #assemblyActions>.assembly-summary{grid-column:3;grid-row:1}
#dock.shop-workshop #assemblyActions>#assemblyTrash{grid-column:4;grid-row:1}
@media(max-width:850px){
 #dock.shop-workshop .shop-tabs{gap:0}
 #dock.shop-workshop .shop-tabs button{padding:6px 3px;white-space:nowrap;font-size:12px;min-height:44px}
 #dock.shop-workshop #dockBody>p{font-size:10px}
 #dock.shop-workshop .ship-deck-summary{font-size:10px}
 #dock.shop-workshop #assemblyActions>.assembly-summary{grid-column:1/3;grid-row:2}
 #dock.shop-workshop #assemblyActions>#assemblyTrash{grid-column:3;grid-row:1/3}
 #dock.shop-workshop #shopParts .part-card{padding:8px;font-size:11px}
 #dock.shop-workshop #shopParts .part-card>svg{width:70px;height:50px}
 #dock.shop-workshop .dock-grid{gap:6px}
}
#dock.shop-workshop #assemblyActions{height:82px;box-sizing:border-box;grid-template-columns:140px 140px minmax(0,1fr) 56px}
#dock.shop-workshop #assemblyActions .assembly-summary{max-height:38px;overflow:auto}
@media(max-width:850px){#dock.shop-workshop #assemblyActions{height:92px;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 48px}#dock.shop-workshop #assemblyActions .assembly-summary{max-height:28px}}
#shopParts .part-card{cursor:grab;user-select:none}#shopParts .part-card>svg{touch-action:none}
#shopParts .part-card:active{cursor:grabbing}
.purify-workspace{display:flex;flex-direction:column;min-height:100%;box-sizing:border-box;padding:12px}
#dock #purifyZone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;flex:1;min-height:220px;width:100%;margin-top:12px;padding:20px;border:2px dashed #80b8a5;border-radius:8px;background:radial-gradient(ellipse,#234740,#102d35 75%);text-align:center}
#purifyZone svg{width:110px;height:110px;fill:none;stroke:#b7d9b4;stroke-width:2;pointer-events:none}
#purifyZone strong{color:var(--brass);font-size:20px}#purifyZone span,#purifyZone small{color:#b2cdbd}
#dock #purifyZone.drop-valid{border-color:#b8f3cc;background:#274e43;box-shadow:inset 0 0 30px #99dbb333}
#dock #purifyZone.drop-invalid{border-color:#e3957f;background:#4c302f}
.trade-affordable{color:#b7e9b4}.trade-unaffordable{color:#ffb298}
@media(max-width:850px){.purify-workspace{padding:0}#dock #purifyZone{min-height:180px;gap:8px;padding:12px;margin-top:4px}#purifyZone svg{width:64px;height:64px}#purifyZone strong{font-size:15px}#purifyZone span,#purifyZone small{font-size:11px}}

#voyageSaveWarning{position:fixed;z-index:150;left:12px;right:12px;top:8px;padding:10px 14px;border:1px solid #e5ae77;border-radius:6px;background:#442b20;color:#ffe6c6;font-size:13px;pointer-events:none}

/* Ship choices belong to the bottom of the deck, with shortcuts beside the preview. */
#dock[data-view=assembly] .deck-toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px}
.assembly-shortcuts{display:flex;gap:16px;align-items:center;flex-wrap:wrap;color:#a8c3b4;font-size:12px}
.assembly-shortcuts kbd{padding:2px 6px;border:1px solid #8aaa8b66;border-radius:3px;color:#e7d7a4;font:inherit;background:#19383c}
.assembly-shortcuts .unavailable{opacity:.4}
#dock.shop-workshop .assembly-workspace{grid-template-rows:auto minmax(160px,1fr) auto auto 116px}
.ship-hull-bar{display:flex;gap:8px;overflow-x:auto;overflow-y:hidden;min-width:0;padding:8px 2px 6px;border-top:1px solid #8ca79155;scrollbar-width:thin;overscroll-behavior:contain;scroll-snap-type:x proximity}
#dock .ship-hull-bar button{flex:0 0 176px;display:grid;grid-template-columns:62px minmax(0,1fr);grid-template-rows:auto auto auto;align-content:center;gap:2px 8px;padding:8px;text-align:left;scroll-snap-align:start;border-color:#809b7755;background:#132e34}
.ship-hull-bar img{grid-column:1;grid-row:1/4;width:62px;height:58px;object-fit:contain;pointer-events:none}
.ship-hull-bar strong{font-size:14px;color:#ded0a0}.ship-hull-bar small{font-size:10px;color:#a0b7a8}.ship-hull-bar span{font-size:11px;color:#bad6bc}
#dock .ship-hull-bar button[aria-pressed=true]{border-color:#e2cb8c;background:#30443a;box-shadow:inset 0 0 0 1px #e2cb8c55}
@media(max-width:850px){#dock.shop-workshop .assembly-workspace{grid-template-rows:auto minmax(90px,1fr) auto auto 88px}.assembly-shortcuts{gap:8px;font-size:10px}#dock[data-view=assembly] .deck-toolbar button{font-size:11px}.ship-hull-bar{gap:6px;padding-top:5px}#dock .ship-hull-bar button{flex-basis:155px;grid-template-columns:48px minmax(0,1fr);padding:5px}.ship-hull-bar img{width:48px;height:48px}.ship-hull-bar strong{font-size:12px}.ship-hull-bar small{font-size:9px}.ship-hull-bar span{font-size:10px}}
