*{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)}}
