*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%;overflow:hidden}body{font-family:Inter,-apple-system,system-ui,sans-serif;font-feature-settings:"ss01","cv11";font-size:12px;-webkit-font-smoothing:antialiased}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:24px;color:#b8e4ff;background:linear-gradient(rgba(78,202,255,.05) 1px,transparent 0),linear-gradient(90deg,rgba(78,202,255,.05) 1px,transparent 0),#02060a;background-size:24px 24px}.auth-panel{width:min(100%,380px);display:grid;grid-gap:16px;gap:16px;padding:28px;border:1px solid #2a5a7a;background:#050d13;box-shadow:0 24px 80px rgba(0,0,0,.4),0 0 40px rgba(78,202,255,.08)}.auth-mark{color:#4ecaff}.auth-title{font-family:JetBrains Mono,SF Mono,Menlo,monospace;font-size:20px;font-weight:600;letter-spacing:.08em}.auth-subtitle{margin-top:4px;letter-spacing:.1em}.auth-field,.auth-subtitle{font-family:JetBrains Mono,SF Mono,Menlo,monospace;font-size:10px;color:#5a8fa8}.auth-field{display:grid;grid-gap:7px;gap:7px;letter-spacing:.08em;text-transform:uppercase}.auth-field input{height:42px;border:1px solid #153448;background:#08141c;color:#b8e4ff;padding:0 12px;font:inherit;font-size:12px;letter-spacing:.02em;text-transform:none;outline:none}.auth-field input:focus{border-color:#4ecaff;box-shadow:0 0 0 2px rgba(78,202,255,.16)}.auth-error{min-height:18px;color:#ff3838}.auth-error,.auth-submit{font-family:JetBrains Mono,SF Mono,Menlo,monospace;font-size:11px}.auth-submit{height:42px;border:1px solid #4ecaff;background:rgba(78,202,255,.14);color:#b8e4ff;cursor:pointer;font-weight:600;letter-spacing:.1em}.auth-submit:focus-visible,.auth-submit:hover{background:rgba(78,202,255,.22)}.alert-code,.alert-sev,.alert-time,.big-val,.bol-id,.bol-route,.brand-name,.brand-sub,.btn-sm,.chrome-meta,.chrome-title,.clock-l,.clock-val,.cont-id,.cont-sub,.door-state,.empty-sub,.filter-row .chip,.k,.kpi-l,.kpi-v,.legend,.log-auth,.log-loc,.log-state,.log-time,.mono,.pill,.rail-count,.rail-title,.search-input,.sec-title,.t-sub,.t-val,.tag,.tick-code,.tick-id,.tick-loc,.tick-msg,.tick-time,.tk-foot,.tk-label,.tk-val,.tr-mode,.tr-type,.tw-btn,.tw-label,.unit,.v,.v.mono{font-family:JetBrains Mono,SF Mono,Menlo,monospace;letter-spacing:.02em}.app.theme-dark{--bg:#02060a;--bg-panel:#050d13;--bg-panel-2:#08141c;--bg-hover:#0d1d28;--bg-active:#142e3d;--border:#153448;--border-strong:#2a5a7a;--text:#b8e4ff;--text-dim:#5a8fa8;--text-faint:#2f5468;--accent:#4ecaff;--accent-dim:#2a7a9c;--accent-glow:rgba(78,202,255,.55);--crit:#ff3838;--crit-glow:rgba(255,56,56,.55);--warn:#ffb84d;--warn-glow:rgba(255,184,77,.35);--ok:#3fd47b;--grid:rgba(78,202,255,.05);--hologram-scan:rgba(78,202,255,.08)}.app.theme-light{--bg:#efece5;--bg-panel:#f7f4ec;--bg-panel-2:#fff;--bg-hover:#e8e3d6;--bg-active:#ddd5c2;--border:#cbc4b2;--border-strong:#8a8474;--text:#1a1816;--text-dim:#5a5448;--text-faint:#8a8474;--accent:#c85a2a;--accent-dim:#9a4520;--crit:#c42020;--warn:#b8841c;--ok:#2d8a4a;--grid:rgba(30,28,24,.08)}.app.theme-hybrid{--bg:#0b1114;--bg-panel:#f7f4ec;--bg-panel-2:#fff;--bg-hover:#e8e3d6;--bg-active:#ddd5c2;--border:#cbc4b2;--border-strong:#8a8474;--text:#1a1816;--text-dim:#5a5448;--text-faint:#8a8474;--accent:#c85a2a;--accent-dim:#9a4520;--crit:#c42020;--warn:#b8841c;--ok:#2d8a4a;--grid:rgba(30,28,24,.08);--globe-text:#cfe4ee}.app{height:100vh;width:100vw;display:flex;flex-direction:column;background:var(--bg);color:var(--text)}.app.dens-compact{font-size:11px}.app:before{content:"";position:fixed;inset:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:24px 24px;pointer-events:none;z-index:0}.topbar{height:56px;flex:0 0 56px;display:flex;align-items:stretch;border-bottom:1px solid var(--border-strong);background:var(--bg-panel);position:relative;z-index:10}.brand{display:flex;align-items:center;gap:10px;padding:0 16px;border-right:1px solid var(--border);min-width:240px}.brand-name{font-size:11px;font-weight:600;letter-spacing:.08em}.brand-sub{font-size:9px;color:var(--text-dim);margin-top:2px;letter-spacing:.1em}.kpis{align-items:stretch;border-left:1px solid var(--border)}.kpi,.kpis{display:flex}.kpi{padding:6px 14px;border-right:1px solid var(--border);flex-direction:column;justify-content:center;min-width:64px}.kpi-v{font-size:18px;font-weight:600;line-height:1}.kpi-l{font-size:8.5px;color:var(--text-dim);margin-top:4px;letter-spacing:.1em}.kpi.crit .kpi-v{color:var(--crit)}.kpi.warn .kpi-v{color:var(--warn)}.kpi.ok .kpi-v{color:var(--ok)}.clock{padding:6px 16px;display:flex;flex-direction:column;justify-content:center;background:var(--bg-panel-2)}.clock-val{font-size:11px;color:var(--text)}.clock-l{font-size:8.5px;color:var(--text-dim);margin-top:4px;letter-spacing:.1em}.ticker{flex:1 1;min-width:0;display:flex;align-items:stretch;overflow:hidden;border-left:1px solid var(--border);border-right:1px solid var(--border)}@media (max-width:1280px){.kpi{padding:6px 10px;min-width:54px}.kpi-v{font-size:15px}.clock{padding:6px 12px}.brand{min-width:200px;padding:0 12px}}@media (max-width:1100px){.brand-sub{display:none}.brand{min-width:160px}.clock-l,.kpi.ok{display:none}}.ticker-label{display:flex;align-items:center;gap:8px;padding:0 14px;font-size:10px;font-weight:600;letter-spacing:.08em;border-right:1px solid var(--border);font-family:JetBrains Mono,monospace}.ticker-label.critical{color:var(--crit)}.ticker-label.warning{color:var(--warn)}.dot-pulse,.dot-warn{width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 10px currentColor}.dot-pulse{animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.3;transform:scale(1.4)}}.ticker-scroll{flex:1 1;overflow:hidden;position:relative}.ticker-track{display:flex;align-items:center;gap:32px;white-space:nowrap;animation:tick 90s linear infinite;padding-left:16px;height:100%}@keyframes tick{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.ticker-item{display:inline-flex;align-items:center;gap:10px;font-family:JetBrains Mono,monospace;font-size:10.5px;background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:0}.ticker-item:hover{color:var(--text)}.ticker-item.critical .tick-code{color:var(--crit)}.ticker-item.warning .tick-code{color:var(--warn)}.tick-code{font-weight:600}.tick-id{color:var(--text)}.tick-msg{color:var(--text-dim)}.tick-loc,.tick-time{color:var(--text-faint)}.tick-time{font-size:9.5px}.main{flex:1 1;display:grid;grid-template-columns:340px 1fr 400px;min-height:0;position:relative;z-index:1}.app.dens-compact .main{grid-template-columns:300px 1fr 360px}.rail{background:var(--bg-panel);display:flex;flex-direction:column;min-height:0;overflow:hidden}.rail-left{border-right:1px solid var(--border-strong)}.rail-right{border-left:1px solid var(--border-strong)}.rail-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border);flex:0 0 auto}.view-toggle{display:flex;gap:0;border:1px solid var(--border)}.view-tab{background:transparent;border:none;color:var(--text-dim);font-family:JetBrains Mono,monospace;font-size:9.5px;font-weight:600;letter-spacing:.12em;padding:5px 10px;cursor:pointer;border-right:1px solid var(--border);position:relative}.view-tab:last-child{border-right:none}.view-tab:hover{color:var(--text)}.view-tab.active{background:var(--bg-active);color:var(--accent)}.view-tab.active:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--accent)}.rail-title{font-size:10.5px;font-weight:600;letter-spacing:.14em;display:flex;align-items:center;gap:8px}.rail-count{font-size:10px;color:var(--text-dim);letter-spacing:.1em}.close-btn{background:transparent;border:1px solid var(--border);color:var(--text-dim);width:22px;height:22px;cursor:pointer;font-size:14px;line-height:1}.close-btn:hover{color:var(--text);border-color:var(--border-strong)}.rail-search{display:flex;align-items:center;border-bottom:1px solid var(--border);padding:0 14px;gap:8px;height:34px}.search-icon{color:var(--text-dim);font-size:14px}.search-input{flex:1 1;background:transparent;border:none;outline:none;color:var(--text);font-size:10.5px;letter-spacing:.08em;padding:0}.search-input::placeholder{color:var(--text-faint)}.filter-row{display:flex;gap:0;padding:8px 14px;border-bottom:1px solid var(--border)}.chip{flex:1 1;background:transparent;border:1px solid var(--border);border-right:none;color:var(--text-dim);font-size:9.5px;letter-spacing:.08em;padding:5px 0;cursor:pointer}.chip:last-child{border-right:1px solid var(--border)}.chip.active{background:var(--bg-active);border-color:var(--border-strong)}.chip.active,.chip:hover:not(.active){color:var(--text)}.bol-list{flex:1 1;overflow-y:auto;overflow-x:hidden}.bol-list::-webkit-scrollbar{width:6px}.bol-list::-webkit-scrollbar-thumb{background:var(--border-strong)}.bol{border-bottom:1px solid var(--border)}.bol-head{width:100%;display:flex;align-items:center;gap:10px;background:transparent;border:none;color:var(--text);padding:10px 14px;cursor:pointer;text-align:left}.bol-head:hover,.bol.open .bol-head{background:var(--bg-hover)}.bol-chev{color:var(--text-dim);font-size:10px;width:10px}.bol-meta{flex:1 1;min-width:0}.bol-id{font-size:10.5px;font-weight:600}.bol-route{font-size:9.5px;color:var(--text-dim);margin-top:3px;display:flex;gap:5px;align-items:center}.bol-route .arrow{color:var(--accent)}.bol-route .sep,.muted{color:var(--text-faint)}.bol-stats{display:flex;gap:4px}.pill{padding:2px 6px;font-size:9.5px;font-weight:600;border:1px solid var(--border);border-radius:1px}.pill-total{color:var(--text-dim)}.pill-crit{color:var(--crit);border-color:var(--crit)}.pill-warn{color:var(--warn);border-color:var(--warn)}.voy{border-bottom:1px solid var(--border)}.voy-head{width:100%;display:flex;align-items:flex-start;gap:10px;background:transparent;border:none;color:var(--text);padding:12px 14px;cursor:pointer;text-align:left}.voy-head:hover,.voy.open .voy-head{background:var(--bg-hover)}.voy.sel .voy-head{background:var(--bg-active);box-shadow:inset 2px 0 0 var(--accent)}.voy-meta{flex:1 1;min-width:0}.voy-title{display:flex;align-items:baseline;gap:8px;font-family:JetBrains Mono,monospace}.voy-vessel{font-size:11px;font-weight:600;letter-spacing:.04em}.voy-voyno{font-size:10px;color:var(--accent);letter-spacing:.1em;padding:1px 5px;border:1px solid var(--accent-dim)}.voy-route{font-family:JetBrains Mono,monospace;font-size:9.5px;color:var(--text-dim);margin-top:4px;display:flex;gap:5px;align-items:center}.voy-route .arrow{color:var(--accent)}.voy-route .sep{color:var(--text-faint)}.voy-progress{margin-top:7px;height:4px;background:var(--border);position:relative;overflow:hidden}.voy-progress-bar{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,var(--accent-dim),var(--accent));box-shadow:0 0 6px var(--accent);transition:width .3s ease}.voy-progress-txt{display:block;font-family:JetBrains Mono,monospace;font-size:8.5px;color:var(--text-faint);margin-top:4px;letter-spacing:.08em}.voy-hero{padding:10px 0 12px;margin-bottom:12px;border-bottom:1px solid var(--border)}.voy-hero-name{font-size:18px;font-weight:600;letter-spacing:.04em;color:var(--text)}.voy-hero-name,.voy-hero-sub{font-family:JetBrains Mono,monospace}.voy-hero-sub{font-size:10px;color:var(--text-dim);letter-spacing:.12em;margin-top:4px}.voy-stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px}.voy-stat{border:1px solid var(--border);padding:8px 6px;text-align:center}.voy-stat-v{font-size:18px;font-weight:600;line-height:1;color:var(--text)}.voy-stat-l,.voy-stat-v{font-family:JetBrains Mono,monospace}.voy-stat-l{font-size:8px;color:var(--text-faint);letter-spacing:.12em;margin-top:5px}.voy-stat.crit{border-color:var(--crit)}.voy-stat.crit .voy-stat-v{color:var(--crit)}.voy-stat.warn{border-color:var(--warn)}.voy-stat.warn .voy-stat-v{color:var(--warn)}.voy-bol-list{display:flex;flex-direction:column;gap:4px}.voy-bol-row{border-left:2px solid var(--border-strong);padding:6px 10px;background:var(--bg-panel-2)}.app.theme-dark .voy-bol-row{background:hsla(0,0%,100%,.02)}.voy-bol-id{font-size:10.5px;font-weight:600;color:var(--text)}.voy-bol-id,.voy-bol-meta{font-family:JetBrains Mono,monospace}.voy-bol-meta{font-size:9px;color:var(--text-dim);margin-top:3px;letter-spacing:.04em}.cont-list.flat{background:transparent;border-top:none}.cont-list.flat .cont{padding-left:10px}.route-block{margin-top:12px;padding:10px 12px;border:1px solid var(--border);background:var(--bg-panel-2)}.app.theme-dark .route-block{background:hsla(0,0%,100%,.015)}.route-row{display:grid;grid-template-columns:1fr 14px 1fr;align-items:center;grid-gap:8px;gap:8px;padding:6px 0}.route-row+.route-row{border-top:1px dotted var(--border)}.route-point{min-width:0}.route-label{font-size:8px;color:var(--text-faint);letter-spacing:.14em;margin-bottom:3px}.route-label,.route-val{font-family:JetBrains Mono,monospace}.route-val{font-size:11px;font-weight:600;color:var(--text);word-break:break-word;line-height:1.3}.route-sub{display:block;font-size:9px;font-weight:400;color:var(--text-dim);letter-spacing:.04em;margin-top:2px}.route-arrow{color:var(--accent);font-size:16px;text-align:center;font-family:JetBrains Mono,monospace;line-height:1}.kv-full{grid-column:1/-1}.tag-reefer{display:inline-block;margin-left:6px;font-size:8.5px;padding:1px 5px;border:1px solid var(--accent-dim);color:var(--accent);letter-spacing:.12em;font-weight:500}.v.setpoint{color:var(--ok)}.cont-list{background:var(--bg);border-top:1px solid var(--border)}.cont{width:100%;display:flex;align-items:center;gap:10px;background:transparent;border:none;color:var(--text);padding:8px 14px 8px 28px;cursor:pointer;text-align:left;border-bottom:1px solid var(--border);border-left:2px solid transparent;position:relative}.cont:last-child{border-bottom:none}.cont:hover{background:var(--bg-hover)}.cont.sel{background:var(--bg-active);border-left-color:var(--accent)}.cont.critical{border-left-color:var(--crit)}.cont.warning{border-left-color:var(--warn)}.cont-main{flex:1 1;min-width:0}.cont-id{font-size:10.5px;font-weight:600}.cont-sub{font-size:9px;color:var(--text-dim);margin-top:3px;display:flex;gap:6px;align-items:center}.tag{padding:1px 5px;border:1px solid var(--border);font-size:8.5px;letter-spacing:.05em}.tag.mode{color:var(--accent);border-color:var(--accent-dim)}.cont-right{text-align:right}.t-val{font-size:11px;font-weight:600}.t-sub{font-size:9px;color:var(--text-dim);margin-top:2px}.status-dot{width:7px;height:7px;border-radius:50%;display:inline-block;background:var(--ok)}.status-dot.critical{background:var(--crit);box-shadow:0 0 6px var(--crit);animation:pulse 1.2s ease-in-out infinite}.status-dot.warning{background:var(--warn);box-shadow:0 0 6px var(--warn)}.status-dot.ok{background:var(--ok);box-shadow:0 0 4px var(--ok)}.globe-wrap{position:relative;background:var(--bg);overflow:hidden;min-width:0}.app.theme-hybrid .globe-wrap{background:#0b1114}.app.theme-dark .globe-wrap:before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at center,rgba(78,202,255,.04),transparent 60%);pointer-events:none}.globe-chrome{position:absolute;inset:0;display:flex;flex-direction:column}.chrome-corners span{position:absolute;width:14px;height:14px;border:1px solid var(--accent);opacity:.5}.app.theme-hybrid .chrome-corners span{border-color:#cfe4ee}.chrome-corners span:first-child{top:12px;left:12px;border-right:none;border-bottom:none}.chrome-corners span:nth-child(2){top:12px;right:12px;border-left:none;border-bottom:none}.chrome-corners span:nth-child(3){bottom:12px;left:12px;border-right:none;border-top:none}.chrome-corners span:nth-child(4){bottom:12px;right:12px;border-left:none;border-top:none}.chrome-top{position:absolute;top:16px;left:0;right:0;padding:0 32px;display:flex;justify-content:space-between;align-items:center;gap:16px;z-index:2;pointer-events:none;flex-wrap:wrap}@media (max-width:1200px){.chrome-meta{display:none}}@media (max-width:1100px){.legend{font-size:8.5px;gap:10px;bottom:14px;left:24px}}@media (max-width:1000px){.chrome-top{padding:0 24px}.chrome-title{font-size:9px}}.chrome-title{font-size:10px;font-weight:600;letter-spacing:.2em;color:var(--text)}.app.theme-hybrid .chrome-meta span,.app.theme-hybrid .chrome-title,.app.theme-hybrid .legend{color:#cfe4ee}.chrome-meta{letter-spacing:.08em}.chrome-meta,.legend{display:flex;gap:16px;font-size:9.5px;color:var(--text-dim)}.legend{position:absolute;bottom:20px;left:32px;letter-spacing:.1em;z-index:2}.legend>div{display:flex;align-items:center;gap:6px}.rail-right.empty .empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center;color:var(--text-dim);gap:16px;flex:1 1}.empty-glyph{color:var(--text-faint)}.empty-text{font-size:11px}.empty-sub{font-size:9.5px;color:var(--text-faint);letter-spacing:.08em}.rail-right{overflow-y:auto}.rail-right::-webkit-scrollbar{width:6px}.rail-right::-webkit-scrollbar-thumb{background:var(--border-strong)}.detail-section{padding:14px 16px;border-bottom:1px solid var(--border)}.sec-title{font-size:9.5px;font-weight:600;letter-spacing:.14em;color:var(--text-dim);margin-bottom:10px}.kv-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px 16px;gap:10px 16px}.kv-grid .k,.pos-grid .k{font-size:8.5px;color:var(--text-faint);letter-spacing:.1em;margin-bottom:3px}.kv-grid .v,.pos-grid .v{font-size:11px;color:var(--text);word-break:break-all}.pos-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px 16px;gap:10px 16px}.alert-block{margin:12px 14px 4px;padding:10px 12px;border-left:2px solid var(--crit);background:rgba(255,77,77,.08)}.alert-block.warning{border-left-color:var(--warn);background:rgba(245,182,66,.08)}.alert-head{display:flex;gap:10px;align-items:center;font-size:9.5px;letter-spacing:.1em;margin-bottom:6px}.alert-sev{color:var(--crit);font-weight:600}.alert-block.warning .alert-sev{color:var(--warn)}.alert-code{color:var(--text-dim)}.alert-time{color:var(--text-faint);margin-left:auto}.alert-msg{font-size:12px;margin-bottom:10px}.alert-actions{display:flex;gap:6px}.btn-sm{background:transparent;border:1px solid var(--border-strong);color:var(--text);padding:4px 10px;font-size:9.5px;letter-spacing:.1em;cursor:pointer}.btn-sm:hover{background:var(--bg-hover)}.btn-sm.ghost{color:var(--text-dim);border-color:var(--border)}.tracker-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.tk-card{border:1px solid var(--border);padding:10px;grid-column:span 2;color:var(--text)}.tk-card.small{grid-column:span 1;padding:10px 12px}.tk-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}.tk-label{font-size:8.5px;color:var(--text-faint);letter-spacing:.1em}.tk-val{font-size:15px;font-weight:600}.tk-foot{font-size:8.5px;color:var(--text-faint);margin-top:4px;letter-spacing:.08em}.door-state{font-size:13px;font-weight:600;margin-top:6px;color:var(--ok)}.door-state.open{color:var(--crit);animation:pulse 1.2s infinite}.battery{position:relative;height:18px;border:1px solid var(--border-strong);margin-top:6px;display:flex;align-items:center;justify-content:center}.batt-fill{position:absolute;left:0;top:0;bottom:0;background:var(--ok);opacity:.25}.battery span{position:relative;font-size:10px;font-weight:600}.big-val{font-size:15px;font-weight:600;margin-top:6px}.big-val .unit{font-size:10px;color:var(--text-dim);margin-left:3px;font-weight:400}.log{display:flex;flex-direction:column;gap:2px}.log-row{display:grid;grid-template-columns:10px 55px 55px 1fr 90px;grid-gap:8px;gap:8px;align-items:center;font-size:10px;padding:5px 0;border-bottom:1px dotted var(--border)}.log-row:last-child{border-bottom:none}.log-dot{width:6px;height:6px;border-radius:50%;background:var(--ok)}.log-dot.open{background:var(--crit)}.log-state{font-weight:600}.log-auth,.log-loc{color:var(--text-dim)}.log-auth{font-size:9px}.log-row.unauth .log-auth{color:var(--crit)}.log-time{color:var(--text-faint);font-size:9.5px;text-align:right}.transit{display:flex;flex-direction:column;gap:2px}.leg{display:grid;grid-template-columns:28px 1fr;grid-gap:10px;gap:10px;padding:6px 0 10px}.leg-rail{position:relative}.leg-mode-glyph,.leg-rail{display:flex;justify-content:center}.leg-mode-glyph{width:22px;height:22px;border:1px solid;background:var(--bg-panel);align-items:center;z-index:1;margin-top:2px}.leg-done .leg-mode-glyph{opacity:.45}.leg-planned .leg-mode-glyph{opacity:.6;border-style:dashed}.leg-current .leg-mode-glyph{box-shadow:0 0 10px currentColor}.leg-line{position:absolute;top:26px;bottom:-14px;width:1px;background:var(--border-strong);left:50%}.leg-line.done{background:var(--text-dim)}.leg-line.cur{background:var(--accent);box-shadow:0 0 4px var(--accent)}.leg-body{min-width:0}.leg-top{display:flex;gap:10px;align-items:center;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.08em}.leg-mode{font-weight:600;color:var(--text)}.leg-asset{color:var(--text-dim);flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.leg-status{font-size:8.5px;padding:1px 5px;border:1px solid var(--border-strong);color:var(--text-dim)}.leg-status.current{color:var(--accent);border-color:var(--accent)}.leg-status.done{color:var(--text-faint);border-color:var(--border)}.leg-route{font-family:JetBrains Mono,monospace;font-size:10.5px;margin-top:3px;display:flex;gap:6px;align-items:center;color:var(--text)}.leg-arrow{color:var(--text-dim)}.leg-meta{font-family:JetBrains Mono,monospace;font-size:9px;letter-spacing:.06em;color:var(--text-faint);display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}.leg-endpoint{color:var(--text-dim)}.leg-time{margin-left:auto}.leg-progress{margin-top:6px;height:3px;background:var(--border);position:relative}.leg-progress-fill{position:absolute;left:0;top:0;bottom:0;background:var(--accent);box-shadow:0 0 6px var(--accent)}.leg-swatch{width:14px;height:2px;display:inline-block;vertical-align:middle;margin-right:4px}.leg-swatch.ship{background:var(--accent)}.leg-swatch.truck{background:var(--warn)}.leg-swatch.hold{background:var(--text-dim);border-top:1px dotted var(--text-dim);height:0}.leg-sep{color:var(--text-faint)}.zoom-ctrl{position:absolute;right:20px;top:50px;display:flex;flex-direction:column;border:1px solid var(--border-strong);background:var(--bg-panel);z-index:3}.zoom-ctrl button{background:transparent;border:none;border-bottom:1px solid var(--border);color:var(--text);width:32px;height:32px;font-size:16px;cursor:pointer;font-family:JetBrains Mono,monospace}.zoom-ctrl button:last-child{border-bottom:none}.zoom-ctrl button:hover{background:var(--bg-hover)}.zoom-ctrl .zoom-val{text-align:center;font-family:JetBrains Mono,monospace;font-size:8.5px;padding:4px 0;color:var(--text-dim);border-bottom:1px solid var(--border)}.zoom-ctrl .z-reset{font-size:14px}.playback{position:absolute;left:20px;right:20px;bottom:44px;background:var(--bg-panel);border:1px solid var(--border-strong);padding:10px 14px 14px;z-index:3;font-family:JetBrains Mono,monospace}.pb-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.pb-play{width:26px;height:26px;border:1px solid var(--accent);background:transparent;color:var(--accent);cursor:pointer;font-size:10px}.pb-title{font-size:10px;letter-spacing:.12em;font-weight:600;flex:1 1;color:var(--text)}.pb-time{font-size:9.5px;letter-spacing:.1em}.pb-close,.pb-time{color:var(--text-dim)}.pb-close{background:transparent;border:1px solid var(--border);width:22px;height:22px;cursor:pointer}.pb-track,.pb-track-wrap{position:relative}.pb-track{height:10px;background:var(--border)}.pb-seg{position:absolute;top:0;bottom:0;border-right:1px solid var(--bg-panel)}.pb-track input[type=range]{position:absolute;inset:-8px 0;width:100%;opacity:0;cursor:pointer;z-index:2}.pb-thumb{position:absolute;top:-4px;width:3px;height:18px;background:var(--text);box-shadow:0 0 10px var(--accent);transform:translateX(-1.5px);pointer-events:none}.pb-labels{position:relative;height:14px;margin-top:4px}.pb-label{position:absolute;transform:translateX(-50%);font-size:8.5px;color:var(--text-faint);letter-spacing:.08em}.tweaks-panel{position:fixed;right:16px;bottom:16px;width:260px;background:var(--bg-panel);border:1px solid var(--border-strong);z-index:100;box-shadow:0 4px 24px rgba(0,0,0,.4)}.tweaks-head{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid var(--border);font-size:10.5px;font-weight:600;letter-spacing:.14em}.tweaks-head button{background:transparent;border:1px solid var(--border);color:var(--text-dim);width:22px;height:22px;cursor:pointer;font-size:14px}.tweaks-body{padding:10px 14px}.tw-section{margin-bottom:14px}.tw-label{font-size:9px;color:var(--text-faint);letter-spacing:.14em;margin-bottom:6px}.tw-opts{display:flex;gap:4px;flex-wrap:wrap}.tw-opts.vertical{flex-direction:column}.tw-btn{background:transparent;border:1px solid var(--border);color:var(--text-dim);padding:6px 10px;font-size:9.5px;letter-spacing:.08em;cursor:pointer;flex:1 1;min-width:60px}.tw-btn.active,.tw-btn:hover{color:var(--text)}.tw-btn.active{background:var(--bg-active);border-color:var(--border-strong)}.rail-header.with-close{justify-content:space-between}.app.theme-dark .rail{background:linear-gradient(180deg,rgba(78,202,255,.03) 0,transparent 20%,transparent 80%,rgba(78,202,255,.03) 100%),var(--bg-panel);box-shadow:inset 0 0 40px rgba(78,202,255,.03),inset 1px 0 0 rgba(78,202,255,.12);position:relative}.app.theme-dark .rail-left{box-shadow:inset -1px 0 0 rgba(78,202,255,.12),inset 0 0 40px rgba(78,202,255,.03)}.app.theme-dark .rail:after,.app.theme-dark .rail:before{content:"";position:absolute;width:12px;height:12px;border:1px solid var(--accent);opacity:.55;pointer-events:none}.app.theme-dark .rail:before{top:6px;left:6px;border-right:none;border-bottom:none}.app.theme-dark .rail:after{bottom:6px;right:6px;border-left:none;border-top:none}.app.theme-dark .topbar{background:linear-gradient(180deg,rgba(78,202,255,.04) 0,transparent 100%),var(--bg-panel);box-shadow:inset 0 -1px 0 rgba(78,202,255,.2)}.app.theme-dark .globe-wrap{background:radial-gradient(ellipse at center,rgba(78,202,255,.06) 0,transparent 60%),#02060a}.brand-mark{color:var(--accent);filter:drop-shadow(0 0 6px var(--accent-glow))}.app.theme-dark .brand-name{color:var(--text);text-shadow:0 0 10px rgba(78,202,255,.3)}.demo-toggle{display:flex;align-items:center;gap:6px;padding:0 12px;background:transparent;border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);color:var(--text-dim);font-family:JetBrains Mono,monospace;font-size:10px;font-weight:600;letter-spacing:.14em;cursor:pointer;transition:all .2s;position:relative}.demo-toggle:hover{color:var(--text);background:rgba(78,202,255,.06)}.demo-toggle.on{color:var(--accent);background:rgba(78,202,255,.1);box-shadow:inset 0 0 16px rgba(78,202,255,.2)}.demo-toggle-dot{width:8px;height:8px;border-radius:50%;background:var(--text-faint);transition:all .2s}.demo-toggle.on .demo-toggle-dot{background:var(--accent);box-shadow:0 0 10px var(--accent-glow);animation:pulse 1.5s ease-in-out infinite}.demo-badge{position:fixed;top:70px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;padding:8px 18px;background:var(--bg-panel);border:1px solid var(--accent);box-shadow:0 0 30px rgba(78,202,255,.3),inset 0 0 20px rgba(78,202,255,.08);color:var(--accent);font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;letter-spacing:.2em;z-index:9500;animation:demo-badge-in .35s ease}.demo-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px var(--accent);animation:pulse 1.2s ease-in-out infinite}@keyframes demo-badge-in{0%{opacity:0;transform:translate(-50%,-12px)}to{opacity:1;transform:translate(-50%)}}.rail-flip,.rail-flip-wrap{perspective:1200px;transform-style:preserve-3d;flex:1 1;display:flex;flex-direction:column;min-height:0;overflow:hidden;animation:flip-in-z .5s cubic-bezier(.22,.9,.3,1);will-change:transform,opacity}.rail-flip-wrap{flex:1 1}@keyframes flip-in-z{0%{transform:perspective(1200px) rotateY(-62deg) translateX(-8%) translateZ(-80px);opacity:0;filter:blur(2px) brightness(1.4)}55%{transform:perspective(1200px) rotateY(-8deg) translateX(1%) translateZ(-10px);opacity:.85;filter:blur(.3px) brightness(1.15)}to{transform:perspective(1200px) rotateY(0deg) translateX(0) translateZ(0);opacity:1;filter:blur(0) brightness(1)}}.rail-right .rail-flip-wrap{animation-timing-function:cubic-bezier(.22,.9,.3,1)}.rail-right.empty>.rail-flip-wrap,.rail-right>.rail-flip-wrap{animation-name:flip-in-z-right}@keyframes flip-in-z-right{0%{transform:perspective(1200px) rotateY(62deg) translateX(8%) translateZ(-80px);opacity:0;filter:blur(2px) brightness(1.4)}55%{transform:perspective(1200px) rotateY(8deg) translateX(-1%) translateZ(-10px);opacity:.85;filter:blur(.3px) brightness(1.15)}to{transform:perspective(1200px) rotateY(0deg) translateX(0) translateZ(0);opacity:1;filter:blur(0) brightness(1)}}@media (prefers-reduced-motion:reduce){.rail-flip,.rail-flip-wrap,.rail-right>.rail-flip-wrap{animation:none!important}}.metric-summary{margin:0 14px 14px;padding:10px 0;border:1px solid var(--border-strong);background:linear-gradient(180deg,rgba(78,202,255,.04) 0,transparent 100%),var(--bg-panel-2);position:relative}.app.theme-dark .metric-summary{box-shadow:inset 0 0 24px rgba(78,202,255,.05)}.metric-summary:after,.metric-summary:before{content:"";position:absolute;width:8px;height:8px;border:1px solid var(--accent);opacity:.6}.metric-summary:before{top:-1px;left:-1px;border-right:none;border-bottom:none}.metric-summary:after{bottom:-1px;right:-1px;border-left:none;border-top:none}.metric-row{display:grid;grid-template-columns:18px 74px auto 1fr;align-items:center;grid-gap:10px;gap:10px;padding:6px 14px;font-family:JetBrains Mono,monospace;border-left:2px solid transparent;transition:all .25s}.metric-row+.metric-row{border-top:1px dotted var(--border)}.metric-row:hover{background:rgba(78,202,255,.04)}.metric-ico{color:var(--accent);display:flex;align-items:center;justify-content:center;opacity:.85}.metric-label{font-size:9px;color:var(--text-faint);letter-spacing:.14em;font-weight:600}.metric-val{font-size:11px;color:var(--text);font-weight:600}.metric-aux,.metric-val{letter-spacing:.04em;white-space:nowrap}.metric-aux{font-size:9.5px;color:var(--text-dim);overflow:hidden;text-overflow:ellipsis}.metric-row.alert-critical{border-left-color:var(--crit);background:linear-gradient(90deg,rgba(255,56,56,.12),transparent 50%)}.metric-row.alert-critical .metric-ico,.metric-row.alert-critical .metric-val{color:var(--crit);filter:drop-shadow(0 0 4px var(--crit-glow))}.metric-row.alert-critical .metric-val{animation:crit-pulse 1.2s ease-in-out infinite}.metric-row.alert-warning{border-left-color:var(--warn);background:linear-gradient(90deg,rgba(255,184,77,.08),transparent 50%)}.metric-row.alert-warning .metric-ico,.metric-row.alert-warning .metric-val{color:var(--warn)}@keyframes crit-pulse{0%,to{opacity:1}50%{opacity:.55}}.tk-card{transition:border-color .4s,box-shadow .4s}.tk-card.tk-crit{border-color:var(--crit);box-shadow:0 0 24px rgba(255,56,56,.18),inset 0 0 16px rgba(255,56,56,.05)}.tk-card.tk-crit .tk-val{color:var(--crit)}.tk-card.tk-warn{border-color:var(--warn);box-shadow:0 0 18px rgba(255,184,77,.14)}.tk-card.tk-warn .tk-val{color:var(--warn)}.sig-modal-backdrop{position:fixed;inset:0;background:radial-gradient(ellipse at center,rgba(255,56,56,.15) 0,transparent 50%),rgba(2,6,10,.85);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:10000;animation:modal-backdrop-in .4s ease}@keyframes modal-backdrop-in{0%{opacity:0}to{opacity:1}}.sig-modal{width:640px;max-width:92vw;max-height:90vh;overflow-y:auto;background:var(--bg-panel);border:1px solid var(--crit);position:relative;box-shadow:0 0 80px rgba(255,56,56,.45),inset 0 0 40px rgba(255,56,56,.06);animation:modal-in .55s cubic-bezier(.2,.9,.3,1)}@keyframes modal-in{0%{transform:perspective(1200px) rotateX(-20deg) translateY(40px) scale(.85);opacity:0}60%{transform:perspective(1200px) rotateX(-2deg) translateY(-4px) scale(1.01);opacity:1}to{transform:perspective(1200px) rotateX(0) translateY(0) scale(1);opacity:1}}.sig-modal:after,.sig-modal:before{content:"";position:absolute;width:16px;height:16px;border:1px solid var(--crit);pointer-events:none}.sig-modal:before{top:-1px;left:-1px;border-right:none;border-bottom:none}.sig-modal:after{bottom:-1px;right:-1px;border-left:none;border-top:none}.sig-modal-head{display:flex;align-items:center;gap:14px;padding:14px 18px;border-bottom:1px solid var(--crit);background:linear-gradient(90deg,rgba(255,56,56,.16),rgba(255,56,56,.04));position:relative;overflow:hidden}.sig-modal-head:after{content:"";position:absolute;top:0;bottom:0;left:-100%;width:40%;background:linear-gradient(90deg,transparent,rgba(255,56,56,.35),transparent);animation:sig-scan 3s ease-in-out infinite}@keyframes sig-scan{0%{left:-40%}to{left:140%}}.sig-modal-badge{color:var(--crit);filter:drop-shadow(0 0 8px var(--crit-glow));animation:pulse 1.4s ease-in-out infinite}.sig-modal-title-block{flex:1 1}.sig-modal-priority{font-size:9px;letter-spacing:.24em;color:var(--crit)}.sig-modal-priority,.sig-modal-title{font-family:JetBrains Mono,monospace;font-weight:600}.sig-modal-title{font-size:15px;letter-spacing:.12em;color:var(--text);margin-top:3px;text-shadow:0 0 10px rgba(255,56,56,.3)}.sig-modal-close{background:transparent;border:1px solid var(--border-strong);color:var(--text-dim);width:28px;height:28px;cursor:pointer;font-size:18px;line-height:1}.sig-modal-close:hover{color:var(--crit);border-color:var(--crit)}.sig-modal-body{padding:18px}.sig-summary{font-size:12px;line-height:1.6;color:var(--text);margin-bottom:18px;letter-spacing:.02em}.sig-emp{color:var(--crit);font-family:JetBrains Mono,monospace;font-weight:600;letter-spacing:.06em}.sig-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:14px;gap:14px;margin-bottom:18px}.sig-card{padding:14px;background:var(--bg-panel-2);border:1px solid var(--border-strong);position:relative}.sig-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--crit),transparent)}.sig-card-label{font-size:9px;letter-spacing:.18em;color:var(--text-faint)}.sig-card-compound,.sig-card-label{font-family:JetBrains Mono,monospace;font-weight:600}.sig-card-compound{font-size:12.5px;color:var(--crit);letter-spacing:.08em;margin-top:4px;text-shadow:0 0 6px var(--crit-glow)}.sig-card-stat{display:flex;align-items:baseline;gap:4px;margin-top:10px}.sig-card-val{font-family:JetBrains Mono,monospace;font-size:28px;font-weight:600;color:var(--text);line-height:1}.sig-card-unit{font-size:11px;letter-spacing:.1em}.sig-card-meta,.sig-card-unit{font-family:JetBrains Mono,monospace;color:var(--text-dim)}.sig-card-meta{font-size:9px;letter-spacing:.06em;margin-top:8px}.sig-card-bar{position:relative;height:5px;background:var(--border);margin-top:10px}.sig-card-bar-fill{position:absolute;top:0;bottom:0;left:0;background:var(--crit);box-shadow:0 0 8px var(--crit-glow)}.sig-card-bar-thr{position:absolute;top:-3px;bottom:-3px;width:1px;background:var(--warn)}.sig-card-waveform{margin-top:10px;color:var(--crit);opacity:.85}.sig-ports{padding:10px 14px;border:1px solid var(--border-strong);background:var(--bg-panel-2);margin-bottom:14px}.sig-port-label{font-size:9px;letter-spacing:.18em;color:var(--text-faint);font-weight:600;margin-bottom:6px}.sig-port-label,.sig-port-route{font-family:JetBrains Mono,monospace}.sig-port-route{display:flex;align-items:center;gap:10px}.sig-port-code{font-size:14px;color:var(--crit);font-weight:600;letter-spacing:.1em;padding:4px 8px;border:1px solid var(--crit);background:rgba(255,56,56,.08)}.sig-port-dots{flex:1 1;color:var(--text-faint);letter-spacing:.3em;text-align:center}.sig-rec{padding:10px 14px;border-left:2px solid var(--warn);background:rgba(255,184,77,.06)}.sig-rec-label{font-family:JetBrains Mono,monospace;font-size:9px;letter-spacing:.18em;color:var(--warn);font-weight:600;margin-bottom:4px}.sig-rec-body{font-size:11px;color:var(--text);line-height:1.6}.sig-modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 18px;border-top:1px solid var(--border)}.sig-btn{background:var(--crit);border:1px solid var(--crit);color:#000;padding:8px 20px;font-family:JetBrains Mono,monospace;font-size:10px;font-weight:600;letter-spacing:.16em;cursor:pointer;transition:all .2s}.sig-btn:hover{box-shadow:0 0 20px var(--crit-glow);transform:translateY(-1px)}.sig-btn.ghost{background:transparent;border-color:var(--border-strong);color:var(--text-dim)}.sig-btn.ghost:hover{color:var(--text);border-color:var(--accent);box-shadow:0 0 12px var(--accent-glow)}