:root{
  --navy:#071923;--navy2:#0d2733;--paper:#e8ece9;--ink:#102735;--muted:#5d7078;
  --line:#bfcac7;--laden:#19a875;--part:#4e9ab2;--ballast:#e4a23a;--danger:#e75a3c;
  --white:#f7faf8;--mono:"IBM Plex Mono",monospace;--display:"Barlow Condensed",sans-serif;
  --body:"Noto Sans SC",sans-serif
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body)}
body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.16;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.24'/%3E%3C/svg%3E")}
.shell{max-width:1500px;margin:auto;padding:0 28px 50px}
.masthead{min-height:148px;margin:0 -28px;padding:28px 40px 24px;background:var(--navy);color:var(--white);display:flex;justify-content:space-between;align-items:flex-end;border-bottom:5px solid var(--laden)}
.back-link{display:inline-block;margin:0 0 12px;color:#c7dce0;text-decoration:none;font:600 11px var(--mono);letter-spacing:.08em}
.back-link:hover{color:var(--white)}
.eyebrow{font:600 10px var(--mono);letter-spacing:.22em;color:#7fb0bb;margin:0 0 5px;text-transform:uppercase}
h1,h2{font-family:var(--display);text-transform:uppercase;margin:0;line-height:.95}
h1{font-size:clamp(44px,6vw,78px);letter-spacing:.02em} h2{font-size:30px}
.subtitle{font-size:13px;color:#a6bcc2;margin:9px 0 0}
.stamp{text-align:right;font-family:var(--mono);border-left:1px solid #35505b;padding-left:25px}
.stamp span,.stamp small{display:block;color:#86a0a9;font-size:10px}.stamp strong{display:block;font-size:14px;margin:5px 0}
.scoreboard{display:grid;grid-template-columns:1.35fr 1.35fr repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin:22px 0}
.scoreboard article{position:relative;background:#f5f7f5;padding:15px 18px;min-height:102px}
.scoreboard p{font:500 11px var(--mono);margin:0;color:var(--muted)}
.scoreboard strong{font:700 38px var(--display);line-height:1;display:block;margin-top:7px}
.scoreboard small{font-size:10px;color:var(--muted)}
.dot{width:7px;height:7px;border-radius:50%;position:absolute;right:14px;top:14px}.laden{background:var(--laden)}.part{background:var(--part)}.ballast{background:var(--ballast)}.stale{background:var(--danger)}
.hero-score{background:var(--navy)!important;color:white}.hero-score p{color:#8fb1ba}.hero-score>div:first-child{display:flex;align-items:flex-end;justify-content:space-between}.hero-score strong{color:#67d1aa}.score-gauge{height:4px;background:#29434c;margin:8px 0}.score-gauge i{display:block;height:100%;background:var(--laden);width:0;transition:width .8s ease}
.revenue-score{background:#0d2733!important}.revenue-score strong{color:#f2b24d}.revenue-score .score-gauge i{background:var(--ballast)}
.workspace{display:grid;grid-template-columns:minmax(0,3fr) minmax(285px,1fr);gap:18px}
.map-panel{background:var(--navy);border:1px solid #38505a;position:relative;min-width:0}
.map-toolbar{height:52px;padding:9px 12px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #29434c}
.filters{display:flex;gap:5px;flex-wrap:wrap}.filters button{border:1px solid #36505b;background:transparent;color:#91aab3;padding:6px 10px;font:500 10px var(--mono);cursor:pointer}.filters button.active{background:var(--white);color:var(--navy);border-color:var(--white)}
.route-toggle{display:flex;gap:7px;align-items:center;color:#9bb0b7;font:10px var(--mono)}
#map{height:610px;background:#0b222c}.leaflet-container{font-family:var(--body)}
.leaflet-tile-pane{filter:saturate(.45) brightness(.72) contrast(1.2) hue-rotate(145deg)}
.leaflet-control-attribution{font-size:8px!important;background:#071923cc!important;color:#78909a!important}.leaflet-control-attribution a{color:#91abb4!important}
.ship-marker{border:1px solid #06161d;border-radius:50%;box-shadow:0 0 0 2px #ffffff8c,0 0 12px currentColor}
.ship-marker.stale-marker:after{content:"";position:absolute;inset:-5px;border:1px dashed var(--danger);border-radius:50%}
.map-note{position:absolute;z-index:500;left:14px;bottom:14px;max-width:410px;background:#071923e8;border-left:3px solid var(--ballast);color:#9fb3ba;padding:8px 11px;font-size:10px;line-height:1.55}.map-note b{color:white;margin-right:7px}
.intel-panel{background:#f5f7f5;border-top:5px solid var(--ink);padding:20px;display:flex;flex-direction:column;gap:18px}
.panel-head{padding-bottom:14px;border-bottom:1px solid var(--line)}
.diagnosis{display:grid;gap:8px}.diagnostic{border-left:3px solid var(--line);padding:8px 10px;background:white}.diagnostic.good{border-color:var(--laden)}.diagnostic.warn{border-color:var(--ballast)}.diagnostic.risk{border-color:var(--danger)}
.diagnostic b{font:600 12px var(--mono)}.diagnostic p{font-size:11px;line-height:1.6;color:var(--muted);margin:4px 0 0}
.section-label{font:600 10px var(--mono);letter-spacing:.15em;color:var(--muted);margin-bottom:10px}
.region-row{display:grid;grid-template-columns:110px 1fr 24px;gap:7px;align-items:center;margin:7px 0;font-size:10px}.bar{height:5px;background:#d7dfdc}.bar i{height:100%;display:block;background:var(--part)}
.ship-card{margin-top:auto;background:var(--navy);color:white;padding:16px;min-height:155px}.ship-card .hint{color:#78939d;font-size:11px}.ship-card h3{font:700 25px var(--display);margin:0}.ship-card .imo{font:10px var(--mono);color:#7fa2ad}.ship-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:13px}.ship-grid span{font-size:9px;color:#78939d;display:block}.ship-grid b{font-size:11px;font-weight:500}.route-call{margin-top:12px;padding-top:10px;border-top:1px solid #29434c;color:#b8c8cd;font-size:10px;line-height:1.5}
.trend-panel{margin-top:18px;background:#f5f7f5;border:1px solid var(--line);border-top:5px solid var(--ink);padding:20px}
.trend-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;padding-bottom:16px;border-bottom:1px solid var(--line)}
.trend-verdict{max-width:520px;font-size:12px;line-height:1.7;color:var(--muted);text-align:right}.trend-verdict b{color:var(--ink)}
.trend-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:24px;padding-top:18px}
.trend-chart{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.trend-card{background:white;border:1px solid #d3dcda;padding:14px}.trend-card h3{font:700 21px var(--display);margin:0}.trend-card .coverage{font:9px var(--mono);color:var(--muted)}
.stack{display:flex;height:130px;align-items:flex-end;gap:5px;margin:14px 0 9px;border-bottom:1px solid var(--line)}
.stack i{display:block;min-width:16px;flex:1;position:relative}.stack i:after{content:attr(data-value);position:absolute;top:-15px;left:50%;transform:translateX(-50%);font:9px var(--mono);color:var(--muted)}
.trend-metrics{display:flex;justify-content:space-between;font:9px var(--mono);color:var(--muted)}.trend-metrics b{display:block;font:700 25px var(--display);color:var(--ink)}
.trend-notes{display:flex;flex-direction:column;gap:9px}.trend-note{background:#eef2f0;border-left:3px solid var(--part);padding:10px 12px;font-size:11px;line-height:1.65;color:var(--muted)}.trend-note.warn{border-color:var(--ballast)}.trend-note.risk{border-color:var(--danger)}.trend-note b{color:var(--ink)}
.market-panel{margin-top:18px;background:var(--navy);color:white;border:1px solid #38505a;padding:20px}.market-panel .trend-head{border-color:#29434c}.market-panel .trend-verdict{color:#8fa7af}.market-panel h2{color:white}
.signal-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin:18px 0}.signal-card{border:1px solid #29434c;background:#0b222c;padding:12px;min-height:112px}.signal-card .signal-top{display:flex;justify-content:space-between;gap:6px;font:9px var(--mono);color:#78939d}.signal-card strong{display:block;font:700 27px var(--display);margin:12px 0 4px}.signal-card p{font-size:10px;line-height:1.5;color:#9eb2b9;margin:0}.signal-card.good strong{color:var(--laden)}.signal-card.warn strong{color:var(--ballast)}.signal-card.risk strong{color:var(--danger)}
.freight-board{margin:4px 0 20px;padding:16px;border:1px solid #29434c;background:#091f29}.freight-board-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-end}.freight-board h3{margin:0;font:700 25px var(--display);text-transform:uppercase}.freight-freshness{text-align:right;font:10px var(--mono);color:#8fa7af}.freight-freshness b{display:block;color:white}.freight-freshness a{color:#9dc6cf}.freight-freshness.stale b{color:var(--ballast)}
.freight-route-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}.freight-route{border:1px solid #29434c;background:#0b222c;padding:13px}.freight-route-head{display:flex;justify-content:space-between;gap:10px;font:10px var(--mono);color:#8fa7af}.freight-route-head b{color:white;font-size:12px}.freight-route .route-tce{font:700 31px var(--display);margin:12px 0 2px}.freight-route .route-change{font:10px var(--mono)}.freight-route .route-change.up{color:var(--laden)}.freight-route .route-change.down{color:var(--danger)}.freight-route dl{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:13px 0 0;padding-top:11px;border-top:1px solid #29434c}.freight-route dt{font:9px var(--mono);color:#78939d}.freight-route dd{margin:2px 0 0;font-size:12px}.freight-route p{min-height:32px;margin:10px 0 0;color:#8fa7af;font-size:9px;line-height:1.55}.trade-tag{padding:3px 5px;border:1px solid var(--laden);color:var(--laden)}.trade-tag.theoretical{border-color:var(--ballast);color:var(--ballast)}
.freight-linkage{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:10px;background:#29434c;border:1px solid #29434c}.linkage-metric{background:#0b222c;padding:11px 13px}.linkage-metric span{display:block;font:9px var(--mono);color:#78939d}.linkage-metric b{display:block;margin-top:5px;font:700 23px var(--display)}.linkage-metric small{color:#8fa7af;font-size:9px;line-height:1.45}
.profit-grid{display:grid;grid-template-columns:1.7fr 1fr;gap:20px;padding-top:16px;border-top:1px solid #29434c}.market-panel .section-label{color:#78939d}
.scenario-table{width:100%;border-collapse:collapse}.scenario-table th{position:static;background:#0b222c}.scenario-table td{border-color:#29434c}.scenario-table tr.base td{background:#12313b}.scenario-profit{font:700 24px var(--display)}.model-note{background:#0b222c;border-left:3px solid var(--part);padding:14px;font-size:10px;line-height:1.7;color:#9eb2b9}.model-note b{color:white}
.fleet-table{margin-top:18px;background:#f5f7f5;border:1px solid var(--line)}
.table-head{padding:18px 20px;display:flex;justify-content:space-between;align-items:end;border-bottom:2px solid var(--ink)}
.table-head input{width:260px;border:1px solid var(--line);background:white;padding:9px 11px;font:11px var(--mono);outline:none}.table-head input:focus{border-color:var(--part)}
.table-scroll{max-height:420px;overflow:auto}table{width:100%;border-collapse:collapse;font-size:11px}th{position:sticky;top:0;background:var(--navy);color:#91aab3;text-align:left;padding:9px 12px;font:500 9px var(--mono);letter-spacing:.08em}td{padding:9px 12px;border-top:1px solid #d7dfdc}tbody tr{cursor:pointer}tbody tr:hover{background:#e6efec}.load-pill{font:600 9px var(--mono);padding:3px 6px;border:1px solid currentColor}.freshness{font-family:var(--mono);font-size:9px}.freshness.old{color:var(--danger)}
@media(max-width:980px){.scoreboard{grid-template-columns:1fr 1fr}.hero-score{grid-column:span 1}.workspace{grid-template-columns:1fr}.intel-panel{min-height:unset}.masthead{align-items:flex-start;gap:20px}.stamp{display:none}.trend-grid,.profit-grid{grid-template-columns:1fr}.signal-grid{grid-template-columns:repeat(2,1fr)}.freight-route-grid{grid-template-columns:1fr}.freight-linkage{grid-template-columns:1fr}}
@media(max-width:700px){.trend-chart{grid-template-columns:1fr}.trend-head{align-items:flex-start;flex-direction:column}.trend-verdict{text-align:left}}
@media(max-width:520px){.signal-grid{grid-template-columns:1fr}}
@media(max-width:620px){.shell{padding:0 12px 30px}.masthead{margin:0 -12px;padding:24px 20px}.scoreboard{grid-template-columns:1fr 1fr}.map-toolbar{height:auto;align-items:flex-start;gap:9px}.route-toggle{white-space:nowrap}#map{height:500px}.table-head{align-items:flex-start;gap:12px;flex-direction:column}.table-head input{width:100%}}
.site-disclaimer{margin-top:18px;padding:16px 18px;border:1px solid var(--line);background:var(--paper);color:var(--muted);font-size:12px;line-height:1.7}
.site-disclaimer b{color:var(--ink);margin-right:8px}
