*{box-sizing:border-box}html,body{margin:0;background:#061421;color:#eef6fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}body{min-height:100vh}.rotate{display:none}.app{min-height:100vh;background:radial-gradient(circle at 72% 0,#17384c 0,#071622 42%,#030a10 100%)}header{height:74px;display:flex;align-items:center;padding:10px 22px;border-bottom:1px solid #d8b76a24;background:#04101ae8;backdrop-filter:blur(16px);position:relative;z-index:5}.brand{width:220px}.logo{font-family:Georgia,"Times New Roman",serif;font-size:23px;font-weight:500;letter-spacing:1.5px}.logo span{color:#e2b75f}.brand small{font-size:9px;letter-spacing:3px;color:#8da6b7}.stats{display:flex;gap:10px;flex:1;justify-content:center}.stats div,.finance-top div{min-width:120px;padding:7px 14px;border:1px solid #ffffff16;border-radius:9px;background:#ffffff08}.stats small,.finance-top small,.ship-card small,.status-card small,.modal small{display:block;font-size:8px;letter-spacing:1.7px;color:#88a2b4}.stats b{font-size:15px}.tools{display:flex;gap:6px}.tools input{width:170px;background:#0b2030;border:1px solid #ffffff22;border-radius:7px;color:white;padding:8px}.tools button,button{font:inherit}.tools button{background:#112b3d;color:#dce8ef;border:1px solid #ffffff20;border-radius:7px;padding:8px 10px;font-size:10px}.hero{height:300px;position:relative;overflow:hidden;border-bottom:1px solid #ffffff18;background:#07131d}
.hero-photo{position:absolute;inset:0;background-image:url("cruise-hero.jpg");background-size:cover;background-position:center 53%;transform:scale(1.015)}
.hero-photo:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#03101bcf 0%,#06172488 25%,transparent 51%,#04131d44 74%,#03101ba6 100%)}
.hero-shade{position:absolute;inset:0;background:linear-gradient(0deg,#05131db8 0%,transparent 37%,#03101b31 100%)}
.hero-copy{position:absolute;left:32px;top:34px;width:300px;text-shadow:0 2px 14px #000}
.hero-copy small{display:block;font-size:8px;letter-spacing:2.5px;color:#d7b56c;margin-bottom:7px}
.hero-copy b{display:block;font-family:Georgia,"Times New Roman",serif;font-size:29px;font-weight:500;line-height:1.03;color:#f5eddc}
.hero-copy span{display:block;margin-top:8px;font-size:9px;letter-spacing:.5px;color:#c3d2da}
.ship-wrap{position:absolute;right:22px;top:22px;width:auto;height:auto;filter:none;transition:.3s;z-index:2}
.ship-wrap span{font-size:8px;letter-spacing:1.6px;color:#ffffffba;background:#05172399;border:1px solid #ffffff21;padding:6px 9px;border-radius:6px;backdrop-filter:blur(8px)}
.ship-wrap.sailing{animation:pulse 1.8s ease-in-out infinite}
@keyframes pulse{50%{opacity:.72}}
.ship-card{position:absolute;left:24px;bottom:18px;top:auto;width:285px;padding:14px 16px;border:1px solid #d9bb7755;border-radius:12px;background:linear-gradient(145deg,#071824df,#0a2434c9);backdrop-filter:blur(16px);box-shadow:0 14px 32px #0007}
.ship-card h2{margin:4px 0 9px;font-family:Georgia,"Times New Roman",serif;font-size:18px;font-weight:500}
.ship-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}
.ship-grid span{font-size:9px;color:#91a8b7}
.ship-grid b{display:block;color:white;font-size:12px}
.status-card{position:absolute;right:24px;bottom:18px;width:205px;padding:12px 14px;border:1px solid #d9bb7748;border-radius:10px;background:#061725d9;backdrop-filter:blur(14px);box-shadow:0 14px 32px #0006}
.status-card b,.status-card span{display:block}.status-card b{font-size:12px;margin:3px 0}.status-card span{font-size:10px;color:#e2b75f}nav{height:52px;display:flex;justify-content:center;gap:4px;padding:7px;background:#07131e;border-bottom:1px solid #ffffff14;position:sticky;top:0;z-index:4}nav button{border:0;border-radius:7px;background:transparent;color:#91a7b6;padding:0 22px;font-size:10px;font-weight:800;letter-spacing:.6px}nav button.active{background:#16374b;color:white;box-shadow:inset 0 -2px #d7ad5b}.map-tab em{font-style:normal;font-size:6px;color:#d7ad5b;margin-left:4px}main{max-width:1180px;margin:auto;padding:14px 18px 28px}.content{display:none}.content.active{display:block}.planner{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.fare-panel,.forecast-panel{border:1px solid #ffffff18;border-radius:12px;background:#091b29;padding:12px}.section-title{font-size:11px;font-weight:900;letter-spacing:1.3px;margin:2px 0 10px}.section-title span{font-weight:400;letter-spacing:0;color:#7f98a8;margin-left:7px}.fare-row{display:grid;grid-template-columns:125px 1fr 90px;align-items:center;gap:9px;margin:7px 0}.fare-row label{font-size:10px}.fare-row label b{color:#e2b75f;margin-left:5px}.fare-row small{text-align:right;color:#91a7b6;font-size:9px}.fare-row input{accent-color:#d7ad5b}.forecast-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.forecast-grid span{background:#ffffff08;border-radius:7px;padding:8px;font-size:8px;color:#8ea4b3}.forecast-grid b{display:block;font-size:13px;color:#fff;margin-top:2px}.forecast-grid .profit{grid-column:span 2;border:1px solid #d7ad5b55}.forecast-grid .profit b{color:#e7c77d}.list{display:grid;grid-template-columns:1fr 1fr;gap:9px}.card{min-height:82px;border:1px solid #ffffff18;border-radius:11px;background:linear-gradient(145deg,#0b2131,#081925);padding:12px 12px 11px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;box-shadow:0 10px 24px #0002}.card.selected{border-color:#d7ad5b99}.card.locked{opacity:.48}.card b{font-size:12px}.desc{font-size:9px;color:#839ba9;margin:3px 0 7px}.pills{display:flex;gap:5px;flex-wrap:wrap}.pill{font-size:8px;padding:4px 6px;border-radius:5px;background:#ffffff0c;color:#b7c8d1}.action{border:1px solid #d7ad5b77;background:linear-gradient(#d9b665,#a97d32);color:#07131e;border-radius:7px;min-width:82px;padding:9px 10px;font-size:9px;font-weight:900}.action:disabled{filter:grayscale(1);opacity:.35}.action.buy{background:#173d52;color:#eef6fb;border-color:#2c607a}.finance-top{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:15px}.finance-top div{min-width:0}.finance-top b{display:block;margin-top:3px;font-size:17px}.log-list{display:flex;flex-direction:column;gap:7px}.log-entry{display:grid;grid-template-columns:100px 1fr auto;gap:12px;padding:10px 12px;border:1px solid #ffffff14;border-radius:8px;background:#ffffff06;font-size:9px}.log-entry b{font-size:10px}.log-entry .good{color:#7fd6a2}.log-entry .bad{color:#ef9b8e}.map-preview{height:300px;border:1px solid #ffffff18;border-radius:13px;position:relative;overflow:hidden;background:radial-gradient(ellipse at 30% 40%,#173d4d 0 12%,transparent 13%),radial-gradient(ellipse at 65% 52%,#163d4e 0 18%,transparent 19%),radial-gradient(ellipse at 80% 30%,#173d4d 0 8%,transparent 9%),#071a29}.map-grid{position:absolute;inset:0;background-image:linear-gradient(#ffffff09 1px,transparent 1px),linear-gradient(90deg,#ffffff09 1px,transparent 1px);background-size:50px 50px}.map-copy{position:absolute;left:28px;top:28px;width:330px}.map-copy b{font-size:25px;letter-spacing:2px;color:#e2b75f}.map-copy span,.map-copy small{display:block;margin-top:7px}.map-copy span{font-size:14px}.map-copy small{font-size:10px;color:#89a2b2;line-height:1.5}.map-ship{position:absolute;color:#e2b75f;text-shadow:0 0 12px #e2b75f}.map-ship.one{right:27%;top:47%}.map-ship.two{right:12%;top:27%;opacity:.45}.modal{display:none;position:fixed;inset:0;background:#02070dbd;z-index:20;align-items:center;justify-content:center;backdrop-filter:blur(8px)}.modal.show{display:flex}.modal-box{width:min(480px,90vw);border:1px solid #d7ad5b66;border-radius:14px;background:#091b29;padding:22px;box-shadow:0 30px 80px #000}.modal-box h2{margin:4px 0 14px}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.result-grid span{background:#ffffff08;border-radius:7px;padding:9px;font-size:9px;color:#8da3b2}.result-grid b{display:block;color:white;font-size:14px;margin-top:2px}.event{margin-top:10px;padding:10px;border-left:3px solid #d7ad5b;background:#ffffff07;font-size:10px;line-height:1.4}.modal-box button{width:100%;margin-top:14px;padding:11px;border:0;border-radius:7px;background:#d7ad5b;font-weight:900;color:#08131b}#toast{position:fixed;left:50%;bottom:22px;transform:translate(-50%,20px);opacity:0;z-index:30;background:#e5c476;color:#07131e;padding:9px 16px;border-radius:8px;font-size:10px;font-weight:900;transition:.2s}#toast.show{opacity:1;transform:translate(-50%,0)}@media(max-width:820px){header{height:62px;padding:7px 10px}.brand{width:160px}.logo{font-size:16px}.stats div{min-width:88px;padding:5px 8px}.tools input{display:none}.hero{height:220px}.ship-wrap{left:38%;transform:scale(.8);transform-origin:left center}.ship-card{left:10px;top:16px;width:235px}.status-card{right:10px}.planner{grid-template-columns:1fr}.list{grid-template-columns:1fr 1fr}nav button{padding:0 12px}.finance-top{grid-template-columns:1fr 1fr}}@media(orientation:portrait) and (max-width:700px){.app{display:none}.rotate{display:flex;height:100vh;align-items:center;justify-content:center;text-align:center;padding:30px;font-weight:800;color:#e2b75f}}
.logo em{font-family:Inter,ui-sans-serif,system-ui;font-style:normal;font-size:6px;letter-spacing:1px;margin-left:7px;color:#d9b75f;border:1px solid #d9b75f66;border-radius:4px;padding:2px 4px;vertical-align:middle}
.stats div,.finance-top div{background:linear-gradient(145deg,#0b2232a8,#061622b8)!important;border-color:#ffffff16!important;box-shadow:inset 0 1px #ffffff09}
nav{background:#04111be8!important;backdrop-filter:blur(16px)}
nav button.active{background:linear-gradient(#173a50,#102b3d)!important;box-shadow:inset 0 -2px #d7ad5b,0 8px 20px #0003!important}
.fare-panel,.forecast-panel,.card{background:linear-gradient(145deg,#0b2130e8,#061722f0)!important;border-color:#ffffff17!important}
.card:hover{border-color:#d7ad5b66!important}
.action{box-shadow:inset 0 1px #fff7,0 5px 14px #0004}
main{background:linear-gradient(180deg,#07172500,#030b12 70%)}

.command-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding:10px 14px;border:1px solid #d7ad5b33;border-radius:9px;background:#071a28}
.command-bar small{display:block;color:#d7ad5b;font-size:8px;letter-spacing:2px}.command-bar b{font-family:Georgia,serif;font-size:18px;font-weight:500}.command-bar span{font-size:9px;color:#8da5b4}
.world-map{height:430px;position:relative;overflow:hidden;border:1px solid #ffffff1c;border-radius:13px;background:radial-gradient(circle at 48% 44%,#15445b 0,#0b2e43 38%,#061b2b 100%);box-shadow:inset 0 0 80px #0007}
.world-map:before{content:"";position:absolute;inset:0;background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);background-size:50px 43px}
.land{position:absolute;background:linear-gradient(145deg,#183f3c,#102e31);box-shadow:inset 0 0 20px #77a07812,0 0 12px #0005;opacity:.95}
.florida{left:26%;top:-8%;width:16%;height:31%;clip-path:polygon(15% 0,65% 0,73% 18%,85% 32%,72% 48%,72% 72%,58% 100%,47% 76%,38% 52%,16% 38%,0 18%)}
.cuba{left:29%;top:34%;width:27%;height:9%;clip-path:polygon(0 44%,13% 10%,42% 15%,68% 0,100% 28%,89% 70%,57% 68%,30% 100%,8% 75%)}
.yucatan{left:10%;top:45%;width:16%;height:26%;clip-path:polygon(0 0,100% 10%,85% 100%,22% 88%)}
.central{left:4%;bottom:-8%;width:38%;height:27%;clip-path:polygon(0 22%,20% 0,43% 26%,64% 31%,100% 70%,86% 100%,30% 75%)}
.southamerica{right:-8%;bottom:-20%;width:50%;height:42%;clip-path:polygon(10% 24%,35% 0,65% 9%,100% 34%,90% 100%,0 100%)}
.hispaniola{left:61%;top:45%;width:17%;height:7%;clip-path:polygon(0 30%,35% 0,100% 35%,78% 90%,25% 100%)}
.ocean-label{position:absolute;color:#7da0b2;font-family:Georgia,serif;font-size:11px;letter-spacing:3px;opacity:.45}.gulf{left:8%;top:20%}.carib{left:42%;top:70%}
.route-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.sea-route{fill:none;stroke:#d7ad5b55;stroke-width:2;stroke-dasharray:7 8}
.port{position:absolute;transform:translate(-50%,-50%);z-index:3;border:0;background:transparent;color:#e5eef2;text-shadow:0 2px 5px #000;padding:0;font-size:7px;text-align:center;min-width:72px}.port i{display:block;margin:auto;width:8px;height:8px;border:2px solid #8cc5df;background:#0a2638;border-radius:50%;box-shadow:0 0 12px #65b9df}.port b{display:block;margin-top:4px;font-size:8px;letter-spacing:.5px}.port small{font-size:5px;color:#d7ad5b}.port.home i{border-color:#e1bd6a;box-shadow:0 0 14px #e1bd6a}
.map-vessel{position:absolute;z-index:5;transform:translate(-50%,-50%);border:1px solid #e0bb65aa;border-radius:7px;background:#061622e8;color:#fff;padding:5px 7px;box-shadow:0 4px 16px #0008;cursor:pointer;transition:left 1s linear,top 1s linear}.map-vessel i{color:#e0bb65;font-style:normal;margin-right:4px}.map-vessel b{font-size:7px}.map-vessel small{display:block;color:#8fa7b6;font-size:6px;margin-top:2px}
.map-legend{position:absolute;left:12px;bottom:10px;display:flex;gap:14px;background:#04121dc9;border:1px solid #ffffff16;border-radius:6px;padding:6px 9px;font-size:7px;color:#91a8b7}.map-legend i{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px}.gold-dot{background:#d7ad5b}.blue-dot{background:#78bddd}
.map-inspector{margin-top:9px;min-height:58px;display:grid;grid-template-columns:120px 220px 1fr;align-items:center;padding:10px 14px;border:1px solid #ffffff18;border-radius:9px;background:linear-gradient(145deg,#0b2130,#061722)}.map-inspector small{color:#d7ad5b;font-size:7px;letter-spacing:1.5px}.map-inspector b{font-family:Georgia,serif;font-size:15px;font-weight:500}.map-inspector span{font-size:9px;color:#8ea5b4}
@media(max-width:820px){.world-map{height:310px}.command-bar span{display:none}.map-inspector{grid-template-columns:90px 160px 1fr}.port b{font-size:7px}}

/* V2.2.1 mobile interaction hotfix */
.world-map:before,.land,.route-layer,.ocean-label,.map-legend{pointer-events:none}
.port{pointer-events:auto!important;cursor:pointer;touch-action:manipulation;min-width:92px;min-height:48px;padding:8px!important;-webkit-tap-highlight-color:transparent}
.port i{width:12px!important;height:12px!important}
.port:active i,.port.selected i{transform:scale(1.35);box-shadow:0 0 22px #e1bd6a}
#mapShips{position:absolute;inset:0;pointer-events:none;z-index:6}
.map-vessel{pointer-events:auto!important;touch-action:manipulation;min-width:112px;min-height:42px;-webkit-tap-highlight-color:transparent}
.map-vessel:active,.map-vessel.selected{border-color:#f2ce79;background:#102d3e}
.map-inspector{position:relative;z-index:8}

/* V2.2.2 Fleet Command selection + detail panel */
.port.selected{z-index:9}
.port.selected i{background:#e3bd68;border-color:#fff1bd;box-shadow:0 0 24px #e3bd68}
.port.selected b{color:#f2d58b}
.map-vessel.selected{z-index:10;border-color:#f2ce79;background:#102d3e;box-shadow:0 0 24px #d7ad5b55,0 5px 18px #0009}
.map-inspector{display:flex;justify-content:space-between;gap:14px;align-items:center}
.inspect-head{display:grid;grid-template-columns:120px 240px 1fr;align-items:center;gap:8px;flex:1}
.inspect-head small{color:#d7ad5b;font-size:7px;letter-spacing:1.5px}
.inspect-head b{font-family:Georgia,serif;font-size:15px;font-weight:500}
.inspect-head span{font-size:9px;color:#8ea5b4}
.inspect-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
.inspect-btn{border:1px solid #d7ad5b55;background:#0c2637;color:#e8eef1;border-radius:6px;padding:7px 10px;font-size:8px;letter-spacing:.2px;touch-action:manipulation}
.inspect-btn.primary{background:linear-gradient(180deg,#cfa653,#a77c2e);color:#07131b;border-color:#e5c67d;font-weight:700}
.inspect-btn:disabled{opacity:.45}
.port-pulse{animation:portPulse .6s ease}
@keyframes portPulse{0%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-50%) scale(1.15)}100%{transform:translate(-50%,-50%) scale(1)}}
@media(max-width:820px){
 .map-inspector{align-items:flex-start;flex-direction:column}
 .inspect-head{grid-template-columns:85px 1fr;gap:5px;width:100%}
 .inspect-head span{grid-column:1/-1}
 .inspect-actions{width:100%;justify-content:flex-start}
}

/* V2.3 contextual hero */
.hero{position:relative}
.hero-photo{transition:background-image .35s ease,filter .35s ease}
.context-hero{position:absolute;left:28px;bottom:22px;z-index:5;pointer-events:none;text-shadow:0 3px 12px #000;max-width:46%}
.context-hero small{display:block;color:#e2bd68;font-size:7px;letter-spacing:2px;margin-bottom:3px}
.context-hero b{display:block;font:500 22px/1.05 Georgia,serif;color:#fff}
.context-hero span{display:block;color:#d2dce2;font-size:9px;margin-top:5px}
.hero.port-mode .ship-wrap{opacity:0;transform:translateY(12px)}
.ship-wrap{transition:opacity .3s ease,transform .3s ease}

/* Proper action toggle state */
.inspect-btn.active{background:linear-gradient(180deg,#cfa653,#a77c2e)!important;color:#07131b!important;border-color:#f0d18a!important;font-weight:700}
.inspect-btn:not(.active){background:#0c2637;color:#e8eef1}

/* Route Operations */
.ops-modal{position:fixed;inset:0;z-index:100;background:#020910d9;backdrop-filter:blur(7px);display:flex;align-items:center;justify-content:center;padding:18px}
.ops-modal.hidden{display:none}
.ops-card{position:relative;width:min(720px,94vw);max-height:88vh;overflow:auto;border:1px solid #d7ad5b55;border-radius:14px;background:linear-gradient(145deg,#0b2232,#06141f);box-shadow:0 24px 80px #000c;padding:20px}
.ops-card>small{color:#d7ad5b;letter-spacing:2px;font-size:8px}.ops-card h2{font:500 25px Georgia,serif;margin:4px 0;color:#fff}.ops-card p{font-size:9px;color:#8ea6b5;margin:0 0 12px}
.ops-close{position:absolute;right:13px;top:10px;border:0;background:transparent;color:#aebdc6;font-size:25px}
.ops-ship{border:1px solid #ffffff18;border-radius:8px;padding:9px 11px;background:#071925;font-size:9px;margin-bottom:10px}
.ops-routes{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.ops-route{border:1px solid #ffffff18;background:#0a1e2b;border-radius:9px;padding:10px;text-align:left;color:#eaf0f2;touch-action:manipulation}
.ops-route b{display:block;font:500 14px Georgia,serif}.ops-route span{display:block;font-size:8px;color:#91a9b7;margin-top:4px}.ops-route small{display:block;font-size:7px;color:#d6b15d;margin-top:5px}
.ops-route.selected{border-color:#e0bc68;background:#102c3b;box-shadow:inset 0 0 18px #d7ad5b16}
.ops-route.locked{opacity:.4}
.ops-forecast{margin-top:10px;border:1px solid #ffffff16;border-radius:8px;background:#061722;padding:10px;display:grid;grid-template-columns:repeat(4,1fr);gap:7px}
.ops-metric small{display:block;color:#7893a4;font-size:6px;letter-spacing:.5px}.ops-metric b{font-size:11px}
.ops-confirm{width:100%;margin-top:10px;padding:10px;border-radius:7px;border:1px solid #e6c879;background:linear-gradient(#d5ae5c,#aa7e2f);color:#07131b;font-weight:800;font-size:9px}
.ops-confirm:disabled{opacity:.35}
@media(max-width:820px){.context-hero{left:18px;bottom:14px}.context-hero b{font-size:17px}.ops-card{padding:15px}.ops-routes{grid-template-columns:1fr 1fr}.ops-forecast{grid-template-columns:repeat(2,1fr)}}

/* V2.3.1 QA fixes */
.context-hero{left:24px!important;bottom:18px!important;max-width:min(42%,430px)!important;right:auto!important}
.context-hero b{font-size:clamp(15px,2vw,22px)!important;line-height:1.04!important;white-space:normal!important;overflow-wrap:anywhere!important;text-wrap:balance}
.context-hero span{max-width:360px;line-height:1.25}
.hero.port-mode .hero-copy{opacity:.18}
.hero.port-mode .ship-wrap{opacity:0!important}
.hero-photo{background-size:cover!important;background-position:center center!important}
.ops-close{z-index:10;width:42px;height:42px;border-radius:50%!important;background:#071722e8!important;border:1px solid #ffffff35!important;color:#fff!important;display:flex;align-items:center;justify-content:center;line-height:1;touch-action:manipulation}
.ops-route{min-height:78px;position:relative;z-index:2;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.ops-route.selected:after{content:"✓ SELECTED";position:absolute;right:8px;top:8px;color:#f0cf80;font-size:6px;letter-spacing:.6px}
.ops-footer{display:grid;grid-template-columns:120px 1fr;gap:8px;margin-top:10px}
.ops-confirm{margin-top:0!important}
.ops-cancel{padding:10px;border-radius:7px;border:1px solid #ffffff2b;background:#0b2231;color:#dbe5ea;font-weight:700;font-size:9px;touch-action:manipulation}
@media(max-width:820px){
 .context-hero{max-width:38%!important;left:14px!important;bottom:12px!important}
 .context-hero b{font-size:14px!important}
 .context-hero span{font-size:7px!important}
 .ops-close{right:9px!important;top:8px!important}
 .ops-card{padding-top:48px!important}
 .ops-route{min-height:72px}
 .ops-footer{grid-template-columns:95px 1fr}
}

/* V2.3.2 Fleet Command rebuild */
.world-map{background:#061d2d!important}
.map-photo-texture{position:absolute;inset:0;background:url("caribbean-map-texture.jpg") center/cover no-repeat;opacity:.34;filter:saturate(.85) contrast(1.1);pointer-events:none}
.geo-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
.geo-land{fill:#173c39;fill-opacity:.93;stroke:#5b8e82;stroke-opacity:.44;stroke-width:1.1}
.geo-island{fill:#1c4d43;stroke:#78a899;stroke-opacity:.48;stroke-width:.8}
.route-live{fill:none;stroke:#e1bd68;stroke-width:2.4;stroke-dasharray:8 7;stroke-linecap:round;opacity:.78}
.route-idle{fill:none;stroke:#9ac4d6;stroke-width:1.2;stroke-dasharray:5 8;opacity:.20}
.port{z-index:7!important}
#mapShips{z-index:8!important}
.map-vessel{background:transparent!important;border:0!important;box-shadow:none!important;min-width:86px!important;min-height:54px!important;padding:0!important;overflow:visible!important}
.map-vessel .ship-name-tag{display:block;position:absolute;left:50%;bottom:35px;transform:translateX(-50%);white-space:nowrap;background:#03111dda;border:1px solid #e0bb6566;border-radius:5px;padding:3px 6px;font-size:6px;color:#fff;box-shadow:0 3px 10px #0008}
.map-vessel .ship-icon{display:block;width:44px;height:26px;margin:auto;filter:drop-shadow(0 4px 5px #0008);transition:transform .6s ease}
.map-vessel .ship-icon svg{width:100%;height:100%;overflow:visible}
.map-vessel .ship-status-mini{display:block;margin-top:1px;font-size:5px;color:#a6bbc7;text-shadow:0 2px 4px #000}
.map-vessel.selected .ship-name-tag{border-color:#f0cc77;background:#102a39;color:#f5d78c}
.map-vessel.selected .ship-icon{filter:drop-shadow(0 0 8px #e1bd68)}
.track-focus{animation:trackFocus 1s ease 2}
@keyframes trackFocus{50%{filter:drop-shadow(0 0 15px #f3d57d)}}
.ship-manage-card{width:min(620px,94vw)}
.ship-manage-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.ship-manage-actions .inspect-btn{min-height:38px}
@media(max-width:820px){
 .port{min-width:78px!important}
 .map-vessel{min-width:72px!important}
 .map-vessel .ship-name-tag{font-size:5.5px;bottom:32px}
 .map-vessel .ship-icon{width:38px;height:23px}
}

/* V2.3.4 — immersive port-arrival hero treatment */
.hero.port-mode .hero-photo{
  filter:saturate(1.08) contrast(1.05);
  background-position:center center!important;
}
.hero.port-mode .hero-photo:after{
  background:linear-gradient(90deg,#03101be8 0%,#06172488 24%,transparent 54%,#03101b4a 76%,#03101bba 100%)!important;
}
.hero.port-mode .hero-copy{opacity:.08!important}
.hero.port-mode .context-hero{max-width:min(45%,460px)!important}
.hero.port-mode .context-hero b{font-size:clamp(17px,2.2vw,25px)!important}
.hero.port-mode .context-hero span{font-size:9px!important;max-width:390px}
.launch-flash{
  position:fixed;left:50%;top:18%;transform:translateX(-50%);
  z-index:150;min-width:min(520px,90vw);display:flex;align-items:center;gap:13px;
  padding:13px 17px;border-radius:12px;border:1px solid #e0bd6c88;
  background:linear-gradient(145deg,#0c2b3ddf,#061620f2);
  box-shadow:0 18px 55px #000b,0 0 30px #d9ae5540;
  backdrop-filter:blur(12px);pointer-events:none;
  animation:launchIn .35s ease;
}
.launch-flash.hidden{display:none}
.launch-flash .launch-ship{font-size:30px}
.launch-flash small{display:block;color:#e2bd68;font-size:7px;letter-spacing:2px}
.launch-flash b{display:block;font:500 17px Georgia,serif;color:#fff;margin:2px 0}
.launch-flash span{display:block;font-size:8px;color:#a9bdc8}
@keyframes launchIn{from{opacity:0;transform:translate(-50%,-12px)}to{opacity:1;transform:translate(-50%,0)}}

/* V2.3.5 — cleaner destination hero */
.hero.port-mode .ship-card,
.hero.port-mode .status-card,
.hero.port-mode .hero-copy{opacity:0!important;pointer-events:none!important}
.hero.port-mode .context-hero{
 left:18px!important;bottom:18px!important;top:auto!important;right:auto!important;
 width:min(390px,42vw)!important;max-width:min(390px,42vw)!important;
 padding:12px 14px!important;border:1px solid #d9bb7752!important;border-radius:10px!important;
 background:linear-gradient(145deg,#061724e8,#0a2434c9)!important;
 backdrop-filter:blur(12px)!important;box-shadow:0 12px 30px #0007!important;
 text-shadow:0 2px 10px #000!important
}
.hero.port-mode .context-hero small{font-size:6px!important;letter-spacing:1.8px!important;margin-bottom:2px!important}
.hero.port-mode .context-hero b{
 font-size:clamp(15px,1.8vw,21px)!important;line-height:1.05!important;margin:0!important;
 white-space:normal!important;word-break:normal!important;overflow-wrap:break-word!important
}
.hero.port-mode .context-hero span{display:block!important;font-size:8px!important;line-height:1.25!important;margin-top:4px!important;max-width:100%!important}
@media(max-width:820px){
 .hero.port-mode .context-hero{width:34vw!important;max-width:34vw!important;left:10px!important;bottom:10px!important;padding:9px 10px!important}
 .hero.port-mode .context-hero b{font-size:13px!important}
 .hero.port-mode .context-hero span{font-size:6.5px!important}
}
#confirmOpsRoute:not(:disabled){box-shadow:0 0 0 1px #f4d17d66,0 8px 22px #0007,0 0 22px #d9ae5540}

/* V2.3.6 — Aruba / Curaçao touch conflict fix.
   The visible dots remain geographically placed; only the invisible touch zones are adjusted. */
.port[data-port="Aruba"],
.port[data-port="Curaçao"]{
  min-width:62px!important;
  width:62px!important;
  height:42px!important;
  min-height:42px!important;
  padding:0!important;
}
.port[data-port="Aruba"]{transform:translate(-70%,-78%)!important}
.port[data-port="Curaçao"]{transform:translate(-20%,8%)!important}
.port[data-port="Aruba"] i,
.port[data-port="Curaçao"] i{
  position:absolute!important;
  left:50%!important;top:50%!important;
  transform:translate(-50%,-50%)!important;
}
.port[data-port="Aruba"] b,
.port[data-port="Curaçao"] b{
  position:absolute!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  white-space:nowrap!important;
  pointer-events:none!important;
}
.port[data-port="Aruba"] b{bottom:32px!important}
.port[data-port="Curaçao"] b{top:31px!important}

/* V2.3.7 — restore true visible positions for Aruba/Curaçao.
   Never move geographic markers to solve touch conflicts. */
.port[data-port="Aruba"],
.port[data-port="Curaçao"]{
  transform:translate(-50%,-50%)!important;
  width:auto!important;
  min-width:0!important;
  height:auto!important;
  min-height:0!important;
  padding:0!important;
}
.port[data-port="Aruba"] i,
.port[data-port="Curaçao"] i{
  position:relative!important;
  left:auto!important;top:auto!important;
  transform:none!important;
}
.port[data-port="Aruba"] b,
.port[data-port="Curaçao"] b{
  position:relative!important;
  left:auto!important;top:auto!important;bottom:auto!important;
  transform:none!important;
  display:block!important;
  pointer-events:none!important;
}
/* Separate invisible hit zones without changing the visible dot coordinates. */
.port[data-port="Aruba"]::after,
.port[data-port="Curaçao"]::after{
  content:"";position:absolute;top:50%;width:42px;height:42px;transform:translateY(-50%);
}
.port[data-port="Aruba"]::after{right:52%}
.port[data-port="Curaçao"]::after{left:52%}

/* V2.3.11 — hero information collision fix */
/* Ship mode already has the complete selected-ship card; suppress the duplicate
   contextual ship/port title so it can never cover rating/capacity metrics. */
.hero:not(.port-mode) .context-hero{display:none!important}
/* Port mode uses the contextual destination label only; ship/status cards stay out. */
.hero.port-mode .ship-card,.hero.port-mode .status-card,.hero.port-mode .ship-wrap{display:none!important}
.hero.port-mode .context-hero{display:block!important;z-index:6!important}
@media(max-width:820px){
  .ship-card{left:10px!important;top:14px!important;bottom:auto!important;width:min(235px,52vw)!important;z-index:6!important}
  .ship-card h2{font-size:15px!important;margin:3px 0 7px!important}
  .ship-grid{gap:5px!important}
  .ship-grid span{padding:6px!important}
  .ship-grid b{font-size:11px!important}
  .status-card{right:10px!important;bottom:12px!important;z-index:6!important}
}
