@font-face{font-family:Montserrat;src:url('/fonts/montserrat-400.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Montserrat;src:url('/fonts/montserrat-500.ttf') format('truetype');font-weight:500;font-style:normal;font-display:swap}
:root{--paper:#f5f7fb;--card:#fff;--surface:#edf1f8;--ink:#101b30;--muted:#536176;--blue:#245cfa;--line:#dfe5ef;--focus:#245cfa;--tint:#e7eeff;--diagram:#dce9f0;--notice:#7a4a00;--on-blue:#fff;--teal:#006d73;--energy:#885b00;color-scheme:light}
:root[data-theme=night]{--paper:#080000;--card:#150404;--surface:#210808;--ink:#f77979;--muted:#da7777;--blue:#f16b6b;--line:#582626;--focus:#ff9999;--tint:#300c0c;--diagram:#110202;--notice:#ef8585;--on-blue:#100202;--teal:#f77979;--energy:#f77979;color-scheme:dark}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:var(--diagram);color:var(--ink);font:14px/1.5 Montserrat,'Helvetica Neue',Arial,sans-serif;-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{opacity:.45;cursor:default}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:500;line-height:1.25;letter-spacing:-.035em}.icon{width:22px;height:22px;flex-shrink:0}.icon-button{width:44px;min-width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:var(--ink);display:grid;place-items:center}.icon-button:hover{background:var(--surface)}.icon-button[aria-pressed=true]{color:var(--blue)}
.guest-tracker{position:fixed;inset:0;height:100dvh}.geographic-map{position:absolute;inset:0;width:100%;height:100%;background:var(--diagram);z-index:0}.guest-header{position:absolute;top:max(12px,var(--np2k-safe-top,env(safe-area-inset-top)));left:12px;right:12px;z-index:500;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 10px 12px 16px;background:var(--card);border:1px solid var(--line);border-radius:20px}.guest-heading{min-width:0}.guest-wordmark{display:block;font-weight:500;font-size:12px;letter-spacing:-.03em;color:var(--muted);margin-bottom:5px}.guest-wordmark>span{font-weight:400;margin-left:3px;letter-spacing:0}.guest-name{display:flex;align-items:center;gap:7px;min-width:0}.guest-name h1{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.025em}.guest-name>#guest-flag{font-family:system-ui,sans-serif;font-size:20px;line-height:1}.demo-label{font-size:11px;color:var(--notice);padding:3px 6px;border:1px solid currentColor;border-radius:6px;flex-shrink:0}.guest-actions{display:flex;flex-shrink:0;gap:2px}.guest-bottom{position:absolute;left:12px;right:12px;bottom:calc(28px + var(--np2k-safe-bottom,env(safe-area-inset-bottom)));z-index:500;pointer-events:none;display:grid;gap:8px}.guest-bottom>*{pointer-events:auto}#guest-state{font-size:12px;color:var(--muted);background:var(--card);padding:10px 14px;border:1px solid var(--line);border-radius:12px;width:fit-content;max-width:100%}#guest-state[data-stale=true]{color:var(--notice)}.guest-dock{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:14px 16px 12px}.guest-stats{display:grid;grid-template-columns:1fr 1fr;gap:16px}.guest-stats>div{display:flex;align-items:baseline;gap:10px}.guest-stats span{font-size:11px;color:var(--muted)}.guest-stats strong{font-size:24px;line-height:1.3;font-weight:500;letter-spacing:-.04em;white-space:nowrap;font-variant-numeric:tabular-nums}.guest-track-caption{display:flex;justify-content:space-between;flex-wrap:wrap;gap:4px 12px;border-top:1px solid var(--line);padding-top:9px;margin-top:10px;font-size:11px;color:var(--muted)}.guest-audience{display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 12px;width:fit-content;max-width:100%;font-size:11px;color:var(--muted)}.guest-audience .icon{width:16px;height:16px;display:block}#guest-viewer-flags{display:flex;flex-wrap:wrap;gap:6px;margin-left:3px}.viewer-country{font-family:system-ui,sans-serif;font-size:13px;white-space:nowrap}
.leaflet-container{font-family:inherit;background:var(--diagram)}.leaflet-control-attribution{background:var(--card)!important;color:var(--muted)!important;font-size:10px!important;padding:3px 6px!important}.leaflet-control-attribution a{color:var(--blue)!important}.leaflet-tooltip{background:var(--card);color:var(--ink);border:1px solid var(--line);box-shadow:none;font-family:inherit}.leaflet-top.leaflet-right{top:calc(max(12px,var(--np2k-safe-top,env(safe-area-inset-top))) + 100px);right:12px}.leaflet-control{margin:0!important}.leaflet-bottom.leaflet-right{bottom:3px;right:6px;max-width:calc(100% - 12px)}.map-controls{display:flex;flex-direction:column;gap:8px}.map-controls button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:var(--card);color:var(--ink);display:grid;place-items:center;padding:10px}.map-controls button[aria-pressed=true]{background:var(--blue);color:var(--on-blue);border-color:var(--blue)}.map-controls svg{width:21px;height:21px}.map-controls button:disabled{opacity:.45}.map-state{position:absolute;left:12px;top:calc(max(12px,var(--np2k-safe-top,env(safe-area-inset-top))) + 102px);max-width:calc(100% - 80px);z-index:450;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:8px 12px;color:var(--muted);font-size:11px;pointer-events:none}.vessel-marker{background:none;border:0}.vessel-marker>svg{width:100%;height:100%}
#guest-details{position:fixed;inset:0;width:100vw;max-width:none;height:100dvh;max-height:none;margin:0;border:0;border-radius:0;padding:0;background:var(--paper);color:var(--ink);overscroll-behavior:contain}#guest-details::backdrop{background:var(--paper)}.details-header{position:sticky;top:0;z-index:1;background:var(--paper);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:calc(16px + var(--np2k-safe-top,env(safe-area-inset-top))) 20px 16px;border-bottom:1px solid var(--line)}.details-header h2{font-size:24px}.details-header .icon-button{background:var(--card)}.details-body{max-width:680px;margin:auto;padding:24px 20px calc(36px + var(--np2k-safe-bottom,env(safe-area-inset-bottom)))}.guest-photo-wrap{margin-bottom:24px;aspect-ratio:4/3;background:var(--surface);border-radius:18px;overflow:hidden}.guest-photo-wrap img{width:100%;height:100%;object-fit:contain;display:block}.details-body h3{font-size:30px;overflow-wrap:anywhere}.profile-fields{margin:24px 0 0;display:grid;grid-template-columns:minmax(90px,.7fr) minmax(0,1.3fr)}.profile-fields dt,.profile-fields dd{padding:14px 0;margin:0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.profile-fields dt{color:var(--muted);font-size:12px}.profile-fields dd{font-weight:500}.subtle,.details-note{color:var(--muted);font-size:12px;line-height:1.8}.subtle{margin-top:20px}.details-note{padding-top:24px}.details-note p+p{margin-top:12px}
@media(min-width:700px){.guest-header{left:20px;right:auto;width:420px;top:max(20px,var(--np2k-safe-top,env(safe-area-inset-top)))}.guest-bottom{left:20px;right:auto;width:420px;bottom:24px}.leaflet-top.leaflet-right{top:24px;right:20px}.map-state{left:20px;top:128px;max-width:360px}.guest-track-caption{font-size:11px}}
@media(max-width:370px){.guest-header{padding-left:12px;gap:6px}.guest-actions{gap:0}.guest-name h1{font-size:15px}.guest-stats strong{font-size:21px}.guest-stats>div{gap:7px}.guest-track-caption{font-size:11px}}
@media(max-height:500px) and (orientation:landscape){.guest-header{right:auto;width:340px}.guest-bottom{left:auto;right:72px;width:320px;bottom:24px}.leaflet-top.leaflet-right{top:16px}.guest-stats strong{font-size:21px}.guest-bottom{gap:5px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}

:root[data-theme=night] .vessel-marker svg [fill="#fff"],:root[data-theme=night] .vessel-marker svg [fill="#dbe7ff"]{fill:var(--tint)}
:root[data-theme=night] .vessel-marker svg [stroke="#fff"]{stroke:var(--ink)}
:root[data-theme=night] .vessel-marker svg g{stroke:var(--muted)}

.guest-wordmark{display:flex;align-items:center;gap:6px}.guest-wordmark>img{width:20px;height:20px;border-radius:5px}:root[data-theme=night] .guest-wordmark>img{filter:grayscale(1) sepia(1) saturate(6) hue-rotate(320deg) brightness(.65)}
