.ftp-map-shell{position:relative;border-radius:14px;overflow:hidden;background:#071b2c;box-shadow:0 10px 30px rgba(0,0,0,.18);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.ftp-fleet-map{width:100%;min-height:420px}
.ftp-map-sidebar{position:absolute;z-index:4;left:14px;top:14px;bottom:54px;width:310px;display:flex;flex-direction:column;background:rgba(4,18,31,.94);color:#fff;border:1px solid rgba(255,255,255,.13);border-radius:18px;backdrop-filter:blur(16px);transition:transform .22s ease,opacity .22s ease}
.ftp-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px 15px;border-bottom:1px solid rgba(255,255,255,.1)}
.ftp-sidebar-header strong{display:block;font-size:18px;line-height:1.2;letter-spacing:-.01em}
.ftp-fleet-count{display:block;margin-top:3px;color:#a9c5d7;font-size:12px}
.ftp-sidebar-toggle{width:36px;height:36px;border:0;border-radius:10px;background:rgba(255,255,255,.11);color:#fff;font-size:18px;cursor:pointer}
.ftp-sidebar-body{min-height:0;display:flex;flex:1;flex-direction:column;padding:12px}
.ftp-status-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.ftp-status-summary>div{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:7px;align-items:center;padding:9px 8px;border:1px solid rgba(255,255,255,.09);border-radius:12px;background:rgba(255,255,255,.055)}
.ftp-status-summary strong{font-size:16px;line-height:1}
.ftp-status-summary small{grid-column:2;color:#a9c5d7;font-size:10px;margin-top:3px}
.ftp-summary-dot{grid-row:1/3;width:9px;height:9px;border-radius:50%}
.ftp-search-label{display:block;margin-bottom:10px}
.ftp-vessel-search{box-sizing:border-box;width:100%;border:1px solid rgba(255,255,255,.16);border-radius:11px;background:rgba(255,255,255,.09);color:#fff;padding:11px 12px;font-size:14px;outline:none}
.ftp-vessel-search::placeholder{color:#a9c5d7}
.ftp-vessel-search:focus{border-color:#57b9ea}
.ftp-vessel-list{min-height:0;overflow:auto}
.ftp-vessel-row{width:100%;display:flex;align-items:center;gap:10px;border:0;border-bottom:1px solid rgba(255,255,255,.08);border-radius:10px;background:transparent;color:#fff;padding:10px 7px;text-align:left;cursor:pointer}
.ftp-vessel-row:hover,.ftp-vessel-row:focus{background:rgba(255,255,255,.08)}
.ftp-vessel-row.is-selected{background:rgba(78,182,230,.16);box-shadow:inset 3px 0 0 #57b9ea}
.ftp-vessel-row-main{min-width:0;flex:1}
.ftp-vessel-row-main strong,.ftp-vessel-row-main small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ftp-vessel-row-main strong{font-size:14px}
.ftp-vessel-row-main small{margin-top:2px;color:#a9c5d7;font-size:12px}
.ftp-row-arrow{font-size:22px;color:#8cb7cf}
.ftp-state-dot{width:9px;height:9px;flex:0 0 9px;border-radius:50%;background:#78909c;box-shadow:0 0 0 3px rgba(120,144,156,.15)}
.ftp-state-live{background:#35d07f!important}.ftp-state-delayed{background:#f2b84b!important}.ftp-state-offline{background:#ee6574!important}.ftp-state-unknown{background:#78909c!important}
.ftp-sidebar-collapsed .ftp-map-sidebar{transform:translateX(calc(-100% - 18px));opacity:0;pointer-events:none}
.ftp-map-status{position:absolute;left:14px;bottom:12px;z-index:3;max-width:calc(100% - 28px);background:rgba(4,18,31,.88);color:#fff;padding:8px 12px;border-radius:999px;font-size:12px;line-height:1.3;box-sizing:border-box;backdrop-filter:blur(8px)}











.ftp-ship-marker[data-moving="yes"] 
100%{transform:scale(1.45);opacity:0}}
.mapboxgl-popup-content{min-width:250px;border-radius:14px;padding:15px;font:14px/1.45 system-ui,sans-serif;color:#102a3b}
.ftp-popup-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.ftp-popup-title{font-size:17px;font-weight:750}
.ftp-popup-subtitle{margin-top:2px;color:#6b8190;font-size:12px}
.ftp-popup-state{display:inline-block;padding:4px 9px;border-radius:999px;color:#092238;font-size:11px;font-weight:750;white-space:nowrap}
.ftp-popup-metrics{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:13px 0}
.ftp-popup-metrics>div{padding:9px 10px;border-radius:10px;background:#edf5f8}
.ftp-popup-metrics small,.ftp-popup-metrics strong{display:block}
.ftp-popup-metrics small{color:#6b8190;font-size:10px;text-transform:uppercase;letter-spacing:.04em}
.ftp-popup-metrics strong{margin-top:3px;font-size:14px}
.ftp-popup dl{display:grid;grid-template-columns:76px 1fr;gap:5px 8px;margin:0}
.ftp-popup dt{color:#62798a}.ftp-popup dd{margin:0;font-weight:600;word-break:break-word}
.ftp-map-fullscreen{position:fixed;inset:0;width:100vw;height:100vh;border-radius:0;box-shadow:none;z-index:999999}
.ftp-map-fullscreen .ftp-fleet-map{width:100%;height:100vh!important;min-height:100vh}
body.fleet-tracker-fullscreen-page{margin:0!important;padding:0!important;overflow:hidden!important}
.screen-reader-text{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:700px){
  .ftp-map-sidebar{left:10px;right:10px;top:10px;bottom:auto;width:auto;max-height:58vh}
  .ftp-sidebar-body{max-height:46vh}
  .ftp-map-status{left:10px;bottom:10px;max-width:calc(100% - 20px)}
  .ftp-map-shell:not(.ftp-sidebar-collapsed) .mapboxgl-ctrl-top-right{opacity:.35}
  .ftp-status-summary{gap:6px}
}
@supports(height:100dvh){.ftp-map-fullscreen,.ftp-map-fullscreen .ftp-fleet-map{height:100dvh!important;min-height:100dvh}}

.wims-map-credit{
position:absolute;
right:14px;
bottom:12px;
z-index:3;
max-width:calc(100% - 28px);
padding:7px 11px;
border:1px solid rgba(255,255,255,.12);
border-radius:999px;
background:rgba(4,18,31,.78);
color:rgba(255,255,255,.82);
font-size:11px;
line-height:1.2;
letter-spacing:.01em;
backdrop-filter:blur(8px);
pointer-events:none
}
@media(max-width:700px){
.wims-map-credit{right:10px;bottom:49px;font-size:10px}
}

.wims-loading-overlay{position:absolute;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;background:linear-gradient(180deg,#04121f,#0a2338);color:#fff;transition:opacity .6s ease}
.wims-loading-overlay.is-hidden{opacity:0;pointer-events:none}
.wims-loading-card{text-align:center}
.wims-loading-title{font-size:34px;font-weight:700;letter-spacing:.08em;margin-bottom:18px}
.wims-loading-line{font-size:15px;color:#b8d4e6;min-height:22px}
.wims-loading-dot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#49c3ff;margin-right:8px;animation:wimspulse 1s infinite alternate}
@keyframes wimspulse{from{opacity:.4;transform:scale(.9)}to{opacity:1;transform:scale(1.2)}}

.wims-loading-overlay{
position:absolute;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;
background:radial-gradient(circle at center,#0d3351 0,#071b2c 45%,#03101c 100%);
color:#fff;transition:opacity .7s ease,visibility .7s ease;overflow:hidden
}
.wims-loading-overlay.is-hidden{opacity:0;visibility:hidden;pointer-events:none}
.wims-radar-grid{
position:absolute;inset:-10%;
background-image:
linear-gradient(rgba(104,185,230,.08) 1px,transparent 1px),
linear-gradient(90deg,rgba(104,185,230,.08) 1px,transparent 1px);
background-size:44px 44px;
mask-image:radial-gradient(circle at center,#000 35%,transparent 78%);
animation:wimsgrid 18s linear infinite
}
.wims-radar-grid:after{
content:"";position:absolute;left:50%;top:50%;width:52vmin;height:52vmin;transform:translate(-50%,-50%);
border-radius:50%;border:1px solid rgba(87,185,234,.18);
box-shadow:0 0 0 8vmin rgba(87,185,234,.03),0 0 0 16vmin rgba(87,185,234,.02)
}
.wims-radar-grid:before{
content:"";position:absolute;left:50%;top:50%;width:26vmin;height:26vmin;transform-origin:0 0;
background:conic-gradient(from 0deg,rgba(87,185,234,.32),rgba(87,185,234,0) 20%);
animation:wimsradar 4s linear infinite
}
@keyframes wimsgrid{from{transform:translate3d(0,0,0)}to{transform:translate3d(44px,44px,0)}}
@keyframes wimsradar{to{transform:rotate(360deg)}}
.wims-loading-card{
position:relative;z-index:2;width:min(560px,calc(100% - 36px));padding:30px;border:1px solid rgba(255,255,255,.12);
border-radius:22px;background:rgba(4,18,31,.82);backdrop-filter:blur(18px);box-shadow:0 24px 60px rgba(0,0,0,.35)
}
.wims-loading-title{font-size:34px;font-weight:750;letter-spacing:.11em;text-align:center}
.wims-loading-subtitle{text-align:center;margin-top:6px;color:#a9c5d7;font-size:14px}
.wims-health-list{margin-top:26px;display:grid;gap:10px}
.wims-health-row{display:flex;align-items:center;gap:11px;color:#a9c5d7;font-size:14px;transition:color .25s ease}
.wims-health-icon{width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;
background:rgba(255,255,255,.08);color:#7ba7bf;font-size:18px;line-height:1}
.wims-health-row.is-active{color:#fff}
.wims-health-row.is-active .wims-health-icon{background:rgba(87,185,234,.18);color:#57b9ea;animation:wimspulse 1s infinite alternate}
.wims-health-row.is-done{color:#fff}
.wims-health-row.is-done .wims-health-icon{background:#35d07f;color:#062219;font-size:0}
.wims-health-row.is-done .wims-health-icon:after{content:"✓";font-size:13px;font-weight:800}
.wims-health-row.is-error .wims-health-icon{background:#ee6574;color:#fff}
.wims-startup-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:24px}
.wims-startup-summary>div{padding:12px;border-radius:13px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.08)}
.wims-startup-summary small,.wims-startup-summary strong{display:block}
.wims-startup-summary small{color:#8fb2c6;font-size:10px;text-transform:uppercase;letter-spacing:.06em}
.wims-startup-summary strong{margin-top:4px;font-size:14px}
.wims-loading-credit{text-align:center;margin-top:22px;color:#8fb2c6;font-size:11px}
.wims-live-clocks{
position:absolute;right:14px;top:14px;z-index:3;display:flex;gap:8px;flex-wrap:wrap
}
.wims-live-clocks span{
padding:8px 11px;border-radius:999px;background:rgba(4,18,31,.82);border:1px solid rgba(255,255,255,.12);
color:#a9c5d7;font-size:11px;backdrop-filter:blur(8px)
}
.wims-live-clocks strong{margin-left:5px;color:#fff;font-variant-numeric:tabular-nums}
@media(max-width:700px){
.wims-loading-card{padding:22px}
.wims-loading-title{font-size:25px}
.wims-startup-summary{grid-template-columns:1fr}
.wims-live-clocks{right:10px;top:68px;flex-direction:column;align-items:flex-end}
}





.wims-fleet-heading{position:sticky;top:0;z-index:1;padding:8px 6px 6px;margin-top:4px;background:rgba(4,18,31,.97);color:#7fb9d8;font-size:10px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}

.wims-fleet-filter-label{display:block;margin-bottom:10px}
.wims-fleet-filter-label>span{display:block;margin:0 0 5px 2px;color:#8fb2c6;font-size:10px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}
.wims-fleet-filter{box-sizing:border-box;width:100%;min-height:40px;border:1px solid rgba(255,255,255,.16);border-radius:11px;background:#0a263b;color:#fff;padding:8px 34px 8px 11px;font-size:14px;cursor:pointer}
.wims-fleet-filter:focus{outline:2px solid #57b9ea;outline-offset:2px}

/* v1.4.6-rc1 Vessel Center drawer — frontend only */
.wims-vessel-drawer{
position:absolute;
z-index:6;
top:14px;
right:14px;
bottom:54px;
width:340px;
box-sizing:border-box;
padding:20px;
overflow:auto;
color:#fff;
background:rgba(4,18,31,.96);
border:1px solid rgba(255,255,255,.13);
border-radius:18px;
backdrop-filter:blur(16px);
transform:translateX(calc(100% + 28px));
opacity:0;
pointer-events:none;
transition:transform .25s ease,opacity .25s ease
}
.wims-vessel-drawer.is-open{
transform:translateX(0);
opacity:1;
pointer-events:auto
}
.wims-vessel-drawer-close{
position:absolute;
top:12px;
right:12px;
width:36px;
height:36px;
border:0;
border-radius:10px;
background:rgba(255,255,255,.1);
color:#fff;
font-size:23px;
cursor:pointer
}
.wims-vessel-drawer-body{padding-top:34px}
.wims-drawer-eyebrow{
color:#79b8d8;
font-size:11px;
font-weight:700;
letter-spacing:.08em;
text-transform:uppercase
}
.wims-vessel-drawer h2{
margin:7px 44px 10px 0;
font-size:25px;
line-height:1.15
}
.wims-drawer-status{
display:inline-block;
padding:5px 10px;
border-radius:999px;
color:#062238;
font-size:11px;
font-weight:700
}
.wims-drawer-metrics{
display:grid;
grid-template-columns:1fr 1fr;
gap:10px;
margin:18px 0
}
.wims-drawer-metrics>div{
padding:13px;
border:1px solid rgba(255,255,255,.08);
border-radius:12px;
background:rgba(255,255,255,.07)
}
.wims-drawer-metrics small,.wims-drawer-metrics strong{display:block}
.wims-drawer-metrics small{
color:#8fb2c6;
font-size:10px;
text-transform:uppercase
}
.wims-drawer-metrics strong{margin-top:4px;font-size:16px}
.wims-vessel-drawer dl{
display:grid;
grid-template-columns:92px 1fr;
gap:8px;
margin:0 0 18px
}
.wims-vessel-drawer dt{color:#8fb2c6;font-size:12px}
.wims-vessel-drawer dd{margin:0;font-size:12px;font-weight:650}
.wims-drawer-center,.wims-drawer-history{
width:100%;
margin-top:9px;
padding:11px 13px;
border-radius:11px;
font-size:13px;
cursor:pointer
}
.wims-drawer-center{
border:0;
background:#57b9ea;
color:#062238;
font-weight:700
}
.wims-drawer-history{
border:1px solid rgba(255,255,255,.12);
background:rgba(255,255,255,.05);
color:#8fb2c6;
cursor:not-allowed
}
@media(max-width:900px){
.wims-vessel-drawer{
left:10px;
right:10px;
top:auto;
bottom:10px;
width:auto;
max-height:58vh;
transform:translateY(calc(100% + 24px))
}
.wims-vessel-drawer.is-open{transform:translateY(0)}
}

@media(max-width:900px){
.wims-vessel-drawer{
left:10px!important;
right:10px!important;
top:auto!important;
bottom:10px!important;
width:auto!important;
height:auto!important;
max-height:42vh!important;
padding:16px 18px 18px!important;
overflow:auto!important;
background:rgba(4,18,31,.58)!important;
border:1px solid rgba(255,255,255,.18)!important;
border-radius:20px!important;
backdrop-filter:blur(16px) saturate(130%)!important;
-webkit-backdrop-filter:blur(16px) saturate(130%)!important;
box-shadow:0 18px 42px rgba(0,0,0,.32)!important;
transform:translateY(calc(100% + 24px))!important
}
.wims-vessel-drawer.is-open{transform:translateY(0)!important}
.wims-vessel-drawer-body{padding-top:28px!important}
.wims-vessel-drawer h2{font-size:21px!important;margin-right:38px!important}
.wims-drawer-metrics{margin:14px 0!important}
.wims-vessel-drawer dl{margin-bottom:12px!important}
.wims-vessel-drawer-close{top:9px!important;right:9px!important;width:32px!important;height:32px!important}
}
@media(max-width:600px){
.wims-vessel-drawer{max-height:38vh!important}
.wims-drawer-metrics{grid-template-columns:1fr 1fr!important;gap:8px!important}
.wims-drawer-metrics>div{padding:10px!important}
.wims-vessel-drawer dl{grid-template-columns:84px 1fr!important;gap:6px!important}
}

.wims-drawer-schedule{margin:18px 0;padding:15px;border:1px solid rgba(79,195,247,.22);border-radius:14px;background:rgba(17,61,85,.46)}
.wims-schedule-title{color:#8fd8f8;font-size:10px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}
.wims-drawer-schedule h3{margin:5px 0 12px;font-size:20px}
.wims-schedule-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.wims-schedule-grid>div,.wims-schedule-note{padding:9px;border-radius:10px;background:rgba(255,255,255,.055)}
.wims-schedule-grid small,.wims-schedule-grid strong,.wims-schedule-note small,.wims-schedule-note strong{display:block}
.wims-schedule-grid small,.wims-schedule-note small{color:#8fb2c6;font-size:9px;text-transform:uppercase}
.wims-schedule-grid strong,.wims-schedule-note strong{margin-top:3px;font-size:12px}
.wims-schedule-note{margin-top:9px}
.wims-upcoming-calls{margin-top:12px}
.wims-upcoming-calls>small{color:#8fb2c6;font-size:9px;text-transform:uppercase}
.wims-upcoming-calls>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid rgba(255,255,255,.08);font-size:11px}
.wims-upcoming-calls span{color:#8fb2c6}
.wims-schedule-updated{margin-top:10px;color:#7899ad;font-size:10px}
@media(max-width:600px){.wims-schedule-grid{grid-template-columns:1fr 1fr}.wims-drawer-schedule{padding:12px}.wims-drawer-schedule h3{font-size:18px}}

.wims-river-ops{margin-top:16px;padding-top:14px;border-top:1px solid rgba(255,255,255,.10)}
.wims-river-ops h3{margin:0 0 10px;color:#8fc6e3;font-size:11px;font-weight:750;letter-spacing:.08em;text-transform:uppercase}
.wims-river-ops dl{display:grid;grid-template-columns:104px 1fr;gap:8px;margin:0}
.wims-river-ops dt{color:#8fb2c6;font-size:12px}
.wims-river-ops dd{margin:0;font-size:12px;font-weight:650;word-break:break-word}

.wims-op-no{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:999px;background:rgba(255,77,79,.14);color:#ff6b6d;font-weight:800;line-height:1}
.wims-op-yes{display:inline-flex;align-items:center;min-height:20px;padding:0 7px;border-radius:999px;background:rgba(53,208,127,.14);color:#6ce3a4;font-weight:750}

/* RC8.4.3 vessel visibility */
