:root{
  --bg:#0b0f17; --panel:#131a26; --panel2:#0f1622; --line:#233044;
  --txt:#e6edf6; --mut:#8aa0bd; --acc:#4ea3ff; --acc2:#39d2a0;
  --warn:#ffb454; --bad:#ff6b7d; --chip:#1c2436;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--txt);
  font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
a{color:var(--acc);text-decoration:none} a:hover{text-decoration:underline}
header.nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:18px;
  padding:11px 22px;background:#0d1320cc;backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
header.nav .brand{font-weight:700;letter-spacing:.3px;color:#fff;font-size:15px}
header.nav .brand span{color:var(--acc)}
header.nav nav{display:flex;gap:16px;flex-wrap:wrap}
header.nav nav a{color:var(--mut);font-weight:500}
header.nav nav a.on,header.nav nav a:hover{color:var(--txt)}
header.nav .navsearch{margin-left:auto}
header.nav .navsearch input{background:#0e1521;border:1px solid var(--line);color:var(--txt);
  border-radius:8px;padding:7px 12px;font-size:13px;width:260px}
header.nav .navsearch input:focus{outline:none;border-color:var(--acc);width:300px;transition:width .15s}
.wrap{max-width:1180px;margin:0 auto;padding:22px}
h1{font-size:22px;margin:.2em 0 .1em} h2{font-size:15px;color:var(--mut);font-weight:600;
  text-transform:uppercase;letter-spacing:.6px;margin:26px 0 10px}
.sub{color:var(--mut);margin:.1em 0 1em}
.grid{display:grid;gap:14px} .g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)} .g2{grid-template-columns:repeat(2,1fr)}
@media(max-width:880px){.g4,.g3,.g2{grid-template-columns:1fr 1fr}}
.card{background:linear-gradient(180deg,var(--panel),var(--panel2));border:1px solid var(--line);
  border-radius:12px;padding:16px}
.kpi .n{font-size:26px;font-weight:800;color:#fff} .kpi .l{color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.5px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
th{color:var(--mut);font-weight:600;text-transform:uppercase;font-size:11px;letter-spacing:.5px;cursor:default}
th a{color:var(--mut)} tbody tr:hover{background:#172235}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.chip{display:inline-block;padding:1px 8px;border-radius:20px;background:#16233a;border:1px solid var(--line);
  color:var(--mut);font-size:11px;margin:1px 2px}
.chip.ferry{color:var(--warn);border-color:#4a3a1e;background:#241c0e}
.chip.intl{color:var(--acc2)} .chip.gap{color:var(--bad);border-color:#4a1e26;background:#241016}
.bar{height:7px;border-radius:4px;background:linear-gradient(90deg,var(--acc),var(--acc2))}
.rot{border:1px solid var(--line);border-radius:10px;margin:9px 0;background:var(--panel2)}
.rot .head{display:flex;justify-content:space-between;align-items:center;padding:9px 13px;border-bottom:1px solid var(--line)}
.rot .head .date{font-weight:700;color:#fff}
.legs{padding:6px 13px 11px}
.leg{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px dashed #1b2436}
.leg:last-child{border-bottom:0}
.leg .ap{font-weight:700} .leg .arrw{color:var(--mut)} .leg .meta{color:var(--mut);font-size:12px;margin-left:auto}
.flex{display:flex;gap:14px;align-items:flex-start;flex-wrap:wrap}
.searchbar{display:flex;gap:8px;margin:14px 0}
input[type=text],select{background:#0e1521;border:1px solid var(--line);color:var(--txt);
  border-radius:8px;padding:8px 11px;font-size:13px}
.btn{background:var(--acc);color:#04101f;border:0;border-radius:8px;padding:8px 14px;font-weight:700;cursor:pointer}
.btn.ghost{background:#16233a;color:var(--txt);border:1px solid var(--line)}
.pager{display:flex;gap:8px;align-items:center;margin:14px 0;color:var(--mut)}
#map,.map{height:360px;border-radius:12px;border:1px solid var(--line);margin-top:8px}
.enrich{display:flex;gap:14px;align-items:center}
.enrich img{width:150px;height:100px;object-fit:cover;border-radius:8px;border:1px solid var(--line)}
.muted{color:var(--mut)} .ok{color:var(--acc2)} .warn{color:var(--warn)}
.spark{display:flex;align-items:flex-end;gap:1px;height:54px}
.spark i{flex:1;background:linear-gradient(180deg,var(--acc),#1c3a5e);border-radius:1px 1px 0 0;min-height:2px}
