:root{--bg:#04060d;--panel:#101627d6;--panel-solid:#101627;--raised:#ffffff0f;--line:#ffffff17;--text:#eef2ff;--text-2:#b4bedb;--text-3:#8490b2;--accent:#5ad7ff;--live:#ff5a6e;--warn:#fab219;--radius:16px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior:none;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;font:15px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:clip}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:0;padding:0}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}a{color:var(--accent)}.app{position:fixed;inset:0;overflow:clip}.view-host,.view-canvas,.view-map,.view-map-base{width:100%;height:100%;position:absolute;inset:0}.view-canvas{touch-action:none;display:block}.view-map-overlay{pointer-events:none}.maplibregl-ctrl-bottom-right,.maplibregl-ctrl-bottom-left{bottom:calc(var(--bottom-h,120px) + 4px)!important}.view-map .maplibregl-ctrl.maplibregl-ctrl-attrib,.view-map .maplibregl-ctrl.maplibregl-ctrl-attrib.maplibregl-compact{color:var(--text-2);background-color:#101627d9;font-size:10px}.view-map .maplibregl-ctrl.maplibregl-ctrl-attrib a{color:var(--text-2)}.view-map .maplibregl-ctrl-attrib .maplibregl-ctrl-attrib-button{filter:invert();opacity:.7}.top{z-index:10;padding:calc(var(--safe-top) + 8px) calc(var(--safe-right) + 10px) 8px calc(var(--safe-left) + 10px);pointer-events:none;background:linear-gradient(#04060deb 55%,#04060d00);position:absolute;top:0;left:0;right:0}.top>*{pointer-events:auto}.top-row{justify-content:space-between;align-items:center;gap:8px;min-height:36px;display:flex}.place{background:var(--raised);border:1px solid var(--line);min-width:0;color:var(--text);border-radius:999px;align-items:center;gap:5px;padding:7px 10px;font-weight:600;display:inline-flex}.place span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.place svg{color:var(--text-2);flex:none}.clock{flex:none;align-items:center;gap:8px;display:flex}.clock-time{font-variant-numeric:tabular-nums;letter-spacing:.01em;font-size:19px;font-weight:600}.clock-read{flex-direction:column;align-items:flex-end;line-height:1.15;display:flex}.clock-read small{color:#ffd98a;white-space:nowrap;font-size:11px}.clock.shifted .clock-time{color:var(--warn)}.badge{letter-spacing:.04em;color:#ffd98a;white-space:nowrap;background:#fab21929;border:1px solid #fab21980;border-radius:999px;align-items:center;gap:5px;padding:4px 9px;font-size:11px;font-weight:700;display:inline-flex}.badge.live{color:#ffc2ca;text-transform:uppercase;background:#ff5a6e24;border-color:#ff5a6e80}.badge.live:before{content:"";background:var(--live);border-radius:50%;width:7px;height:7px;animation:1.6s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.35}}.tiles{scrollbar-width:none;text-align:left;scroll-snap-type:x proximity;gap:6px;width:100%;margin-top:8px;display:flex;overflow-x:auto}.tiles::-webkit-scrollbar{display:none}.tile{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);scroll-snap-align:start;border-radius:12px;flex-direction:column;flex:1 0 auto;min-width:96px;padding:7px 11px 8px;display:flex}.tile-label{color:var(--text-2);white-space:nowrap;font-size:11px}.tile-value{white-space:nowrap;font-size:21px;font-weight:650;line-height:1.15}.tile-sub{color:var(--text-3);white-space:nowrap;font-size:11px}.rail{z-index:10;right:calc(var(--safe-right) + 10px);top:calc(var(--top-h,130px) + 2px);flex-direction:column;gap:8px;display:flex;position:absolute}.round{background:var(--panel);border:1px solid var(--line);width:42px;height:42px;color:var(--text-2);-webkit-backdrop-filter:blur(12px);border-radius:50%;place-items:center;display:grid}.round.on{color:#04121a;background:var(--accent);border-color:#0000}.bottom{z-index:30;padding:8px calc(var(--safe-right) + 10px) calc(var(--safe-bottom) + 8px) calc(var(--safe-left) + 10px);background:linear-gradient(#04060d00,#04060df5 30%);position:absolute;bottom:0;left:0;right:0}.sheet-open .bottom{background:var(--panel-solid);border-top:1px solid var(--line)}.timeline{align-items:center;gap:6px;display:flex}.tl-btn,.tl-chip{background:var(--raised);border:1px solid var(--line);min-width:38px;height:38px;color:var(--text);border-radius:12px;flex:none;place-items:center;display:grid}.tl-chip{color:var(--text-2);padding:0 9px;font-size:12px;font-weight:650}.tl-track{touch-action:none;cursor:pointer;flex:1;min-width:60px;height:38px;position:relative}.tl-rail{background:#ffffff1f;border-radius:3px;height:6px;position:absolute;top:13px;left:0;right:0;overflow:hidden}.tl-rec{background:#5ad7ff8c;min-width:2px;position:absolute;top:0;bottom:0}.tl-future{background:repeating-linear-gradient(90deg,#fff3 0 3px,#0000 3px 6px);position:absolute;top:0;bottom:0;right:0}.tl-now{background:var(--live);border-radius:1px;width:2px;height:16px;margin-left:-1px;position:absolute;top:8px}.tl-head{background:var(--warn);border:2px solid var(--bg);border-radius:50%;width:18px;height:18px;margin-left:-9px;position:absolute;top:7px;box-shadow:0 0 0 1px #ffffff40}.tl-head.live{background:var(--live)}.tl-edge{color:var(--text-3);pointer-events:none;font-size:9.5px;position:absolute;bottom:-3px}.tl-edge.left{left:0}.tl-edge.now{transform:translate(-50%)}.tabs{gap:6px;margin-top:8px;display:flex}.sheet-open .tabs{display:none}.tabs button{background:var(--raised);border:1px solid var(--line);height:42px;color:var(--text-2);border-radius:12px;flex:1;justify-content:center;align-items:center;gap:7px;font-weight:600;display:flex}.tabs button.on{color:var(--text);background:#5ad7ff29;border-color:#5ad7ff8c}.sheet{z-index:20;left:0;right:0;bottom:var(--bottom-h,56px);background:var(--panel-solid);border:1px solid var(--line);border-radius:var(--radius) var(--radius) 0 0;height:40dvh;transform:translateY(calc(100% + var(--bottom-h,56px) + 20px));visibility:hidden;-webkit-user-select:text;user-select:text;border-bottom:0;flex-direction:column;transition:transform .26s cubic-bezier(.2,.8,.2,1),height .26s cubic-bezier(.2,.8,.2,1),visibility 0s .26s;display:flex;position:absolute;box-shadow:0 -12px 40px #00000080}.sheet.open{visibility:visible;transition:transform .26s cubic-bezier(.2,.8,.2,1),height .26s cubic-bezier(.2,.8,.2,1);transform:none}.sheet.tall{height:calc(100dvh - var(--bottom-h,56px) - var(--safe-top) - 52px)}.sheet-grip{touch-action:none;cursor:grab;flex:none;place-items:center;width:100%;height:20px;display:grid}.sheet-grip span{background:#ffffff47;border-radius:2px;width:40px;height:4px}.sheet-head{flex:none;align-items:flex-start;gap:10px;padding:0 12px 10px 16px;display:flex}.sheet-title{flex:1;min-width:0}.sheet-head h2{overflow-wrap:anywhere;margin:0;font-size:19px;font-weight:700;line-height:1.2}.sheet-head p{color:var(--text-2);margin:2px 0 0;font-size:13px}.sheet-head .swatch{margin-top:4px}.icon-btn{background:var(--raised);width:34px;height:34px;color:var(--text-2);border-radius:50%;flex:none;place-items:center;display:grid}.sheet-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;min-height:0;padding:2px 16px 20px;overflow-y:auto}.sheet-body.flush{padding:0 0 12px}.section{margin-top:18px}.section h3{letter-spacing:.05em;text-transform:uppercase;color:var(--text-2);margin:0 0 8px;font-size:12px;font-weight:700}.section h3 .note{letter-spacing:0;text-transform:none;color:var(--text-3);margin-left:8px;font-weight:500}.hint{color:var(--text-3);margin:8px 0 0;font-size:13px}.hint.pad{padding:0 16px}.alert{background:#d03b3b2e;border:1px solid #ec835a99;border-radius:10px;margin:10px 0 0;padding:8px 10px;font-size:13px}.alert:before{content:"⚠ "}.look{background:#5ad7ff1a;border:1px solid #5ad7ff4d;border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 12px;padding:9px 12px;display:flex}.look.down{background:var(--raised);border-color:var(--line);color:var(--text-2)}.look-main{font-weight:600}.look-sub{color:var(--text-2);font-size:13px}.facts{background:var(--line);border-radius:12px;grid-template-columns:1fr 1fr;gap:1px;margin:12px 0 0;display:grid;overflow:hidden}.fact{background:#151c31;min-width:0;padding:9px 12px 10px}.fact dt{color:var(--text-2);font-size:11.5px}.fact dd{overflow-wrap:anywhere;margin:1px 0 0;font-size:16px;font-weight:600}.fact dd small{color:var(--text-3);font-size:12px;font-weight:400;display:block}.hero{align-items:baseline;gap:12px;margin:4px 0 2px;display:flex}.hero b{letter-spacing:-.02em;font-size:52px;font-weight:700;line-height:1}.hero span{color:var(--text-2)}.photo{background:#151c31;border-radius:12px;margin:12px 0 0;overflow:hidden}.photo img{object-fit:cover;width:100%;max-height:200px;display:block}.photo figcaption{color:var(--text-3);padding:4px 10px 5px;font-size:11px}.photo figcaption a{color:inherit}.route{background:#151c31;border-radius:12px;margin-top:12px;padding:10px 12px 11px}.route.doubt{opacity:.7}.route-ends{justify-content:space-between;align-items:flex-end;gap:8px;display:flex}.route-ends b{font-size:22px;line-height:1.1;display:block}.route-ends span{color:var(--text-2);font-size:12px}.route-ends .right{text-align:right}.route-mid{color:var(--text-3);padding-bottom:3px;font-size:12px}.meter{background:#5ad7ff33;border-radius:3px;height:6px;margin-top:9px;overflow:hidden}.meter span{background:var(--accent);border-radius:3px;height:100%;display:block}.route-legs{color:var(--text-3);justify-content:space-between;margin-top:5px;font-size:12px;display:flex}.pass{border:1px solid var(--line);text-align:left;background:#151c31;border-radius:12px;grid-template-columns:1.15fr .9fr 1.15fr auto;align-items:center;gap:8px;width:100%;margin-top:6px;padding:8px 12px;display:grid}.pass b{font-variant-numeric:tabular-nums;font-size:14px;display:block}.pass span{color:var(--text-3);font-size:11.5px}.pass em{color:var(--accent);white-space:nowrap;font-size:11.5px;font-style:normal}.crew{grid-template-columns:1fr 1fr;gap:8px;margin:0;padding:0;list-style:none;display:grid}.crew li{align-items:center;gap:8px;min-width:0;display:flex}.crew img,.crew .avatar{object-fit:cover;background:#222b47;border-radius:50%;flex:none;width:36px;height:36px}.crew b{font-size:13px;line-height:1.2;display:block}.crew span{color:var(--text-3);font-size:11.5px}.plain{margin:0;padding:0;list-style:none}.plain li{border-top:1px solid var(--line);padding:8px 0}.plain li:first-child{border-top:0;padding-top:0}.plain b{font-size:14px;display:block}.plain span{color:var(--text-2);font-size:12.5px}.link{color:var(--accent);align-items:center;gap:6px;margin-top:12px;font-size:13px;text-decoration:none;display:inline-flex}.inline{color:var(--accent);text-align:left;font-size:12px}.jumps{gap:8px;margin-top:12px;display:flex}.stackbar{gap:2px;height:12px;display:flex}.stackbar span{border-radius:3px;min-width:3px}.legend{border-collapse:collapse;width:100%;margin-top:8px;font-size:13.5px}.legend th{text-align:left;padding:3px 0;font-weight:500}.legend td{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-2);white-space:nowrap;width:1%;padding:3px 0 3px 12px}.legend td:nth-child(2){color:var(--text);font-weight:600}.legend i{border-radius:3px;width:10px;height:10px;margin-right:8px;display:inline-block}.legend.fleets{margin-top:14px}.legend thead th,.legend thead td:nth-child(n){color:var(--text-3);padding-bottom:5px;font-size:11.5px;font-weight:500}.legend.fleets tbody tr{border-top:1px solid var(--line)}.legend th small{color:var(--text-3);margin-left:4px;font-size:12px}.legend .sub th{color:var(--text-3);padding-left:18px;font-size:12.5px}.legend .sub td:nth-child(2){color:var(--text-3);font-weight:400}.chips{flex-wrap:wrap;gap:6px;display:flex}.chips.spaced{margin-top:10px}.sheet>.chips{scrollbar-width:none;flex-wrap:nowrap;flex:none;padding:0 16px 8px;overflow-x:auto}.chip{background:var(--raised);border:1px solid var(--line);color:var(--text-2);white-space:nowrap;border-radius:999px;flex:none;padding:7px 12px;font-size:13px;font-weight:600}.chip.on{color:var(--text);background:#5ad7ff29;border-color:#5ad7ff8c}.sort{color:var(--text-3);flex:none;align-items:center;gap:10px;padding:0 16px 8px;font-size:12.5px;display:flex}.sort button{color:var(--text-2);border-bottom:2px solid #0000;padding:2px 0}.sort button.on{color:var(--text);border-bottom-color:var(--accent)}.rows{margin:0;padding:0;list-style:none}.rows.inset{margin:10px -4px 0}.rows button{text-align:left;border-top:1px solid var(--line);align-items:center;gap:10px;width:100%;padding:9px 16px;display:flex}.rows.inset button{padding:9px 4px}.rows button:active{background:var(--raised)}.row-name{flex:1;min-width:0}.row-name b,.row-name small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.row-name b{font-size:14.5px;font-weight:600}.rows small{color:var(--text-3);font-size:12px}.row-num{text-align:right;font-variant-numeric:tabular-nums;flex:none}.row-num b{font-size:13.5px;font-weight:600;display:block}.swatch{flex:none}.swatch-dot,.swatch-ring{background:var(--c);border-radius:50%;width:12px;height:12px;margin:3px;display:inline-block}.swatch-ring{border:3px solid var(--c);background:0 0}.toggle{border-top:1px solid var(--line);cursor:pointer;align-items:center;gap:10px;padding:9px 0;display:flex}.toggle:first-of-type{border-top:0}.toggle-text{flex:1;min-width:0}.toggle-text b{font-weight:600;display:block}.toggle-text small{color:var(--text-3);font-size:12px}.toggle input{opacity:0;pointer-events:none;position:absolute}.switch{background:#ffffff29;border-radius:13px;flex:none;width:44px;height:26px;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:3px;left:3px}.toggle input:checked+.switch{background:#1c9ec9}.toggle input:checked+.switch:after{transform:translate(18px)}.toggle input:focus-visible+.switch{outline:2px solid var(--accent);outline-offset:2px}.key{color:var(--text-2);grid-template-columns:1fr 1fr;gap:6px 10px;margin:0;padding:0;font-size:13px;list-style:none;display:grid}.key li{align-items:center;gap:6px;display:flex}.primary{background:var(--accent);color:#04121a;border-radius:12px;justify-content:center;align-items:center;gap:8px;width:100%;height:46px;font-weight:700;display:flex}.primary:disabled{opacity:.6}.search{gap:8px;margin-top:10px;display:flex}.search input{border:1px solid var(--line);min-width:0;height:44px;color:var(--text);font:inherit;-webkit-user-select:text;user-select:text;background:#151c31;border-radius:12px;flex:1;padding:0 12px;font-size:16px}.search button{background:var(--raised);border:1px solid var(--line);border-radius:12px;flex:none;padding:0 16px;font-weight:600}.toast{z-index:40;left:50%;bottom:calc(var(--bottom-h,120px) + 12px);border:1px solid var(--line);text-align:center;-webkit-user-select:text;user-select:text;overflow-wrap:anywhere;background:#1b2440;border-radius:12px;width:max-content;max-width:min(92vw,460px);padding:10px 14px;font-size:13.5px;position:absolute;transform:translate(-50%);box-shadow:0 8px 30px #00000080}.toast.warn{border-color:#fab21999}@media (min-width:900px){.top{padding-left:16px;padding-right:16px}.tiles{max-width:760px}.tile{flex:1 1 0}.bottom{background:0 0;width:min(760px,100vw - 32px);padding-bottom:14px;transition:left .26s cubic-bezier(.2,.8,.2,1),width .26s;left:50%;right:auto;transform:translate(-50%)}.sheet-open .bottom{background:0 0;border-top:0;width:min(760px,100vw - 428px);left:calc(50% + 198px)}.sheet-open .tabs{display:flex}.sheet,.sheet.tall{left:16px;right:auto;top:calc(var(--top-h,130px) + 4px);border:1px solid var(--line);border-radius:var(--radius);width:380px;height:auto;bottom:16px;transform:translate(calc(-100% - 32px))}.sheet.open{transform:none}.sheet-grip{display:none}.sheet-head{padding-top:14px}.rail{right:16px}.toast{bottom:140px}}@media (prefers-reduced-motion:reduce){.sheet,.sheet.open,.switch,.switch:after{transition:none}.badge.live:before{animation:none}}
