:root{--bg: #06121c;--bg2: #0b1b28;--panel: #0f2130;--panel2: #142a3c;--line: #1f3a50;--text: #e9f3fa;--dim: #8aa4b8;--faint: #56708a;--accent: #4fd8ff;--firing: #ff3d81;--working: #22d39a;--marginal: #e8b23a;--off: #3a4a59;--bad: #ff5a4f;--radius: 14px;--safe-b: env(safe-area-inset-bottom, 0px);--safe-t: env(safe-area-inset-top, 0px);color-scheme:dark}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;background:var(--bg);color:var(--text)}body{font:15px/1.35 -apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Roboto,system-ui,sans-serif;font-variant-numeric:tabular-nums;overscroll-behavior-y:none;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}input,select{font:inherit;color:var(--text);background:var(--bg2);border:1px solid var(--line);border-radius:10px;padding:8px 10px}a{color:var(--accent)}.app{max-width:620px;margin:0 auto;min-height:100dvh;padding-bottom:calc(76px + var(--safe-b))}.top{position:sticky;top:0;z-index:20;background:linear-gradient(var(--bg) 70%,rgba(6,18,28,.85));-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:calc(10px + var(--safe-t)) 16px 6px}.topRow{display:flex;align-items:center;gap:6px}.topRow .brand{margin-right:4px}.brand{font-weight:800;letter-spacing:.04em;font-size:20px;display:flex;align-items:center;gap:8px}.brand svg{display:block}.loc{color:var(--dim);font-size:12px;line-height:1.2}.spacer{flex:1}.badge{font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:3px 7px;border-radius:99px;border:1px solid var(--line);color:var(--dim);white-space:nowrap}.badge.warn{color:#ffd27a;border-color:#6a5420;background:#2a2210}.badge.ok{color:var(--working);border-color:#155f49}.iconBtn{width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:var(--panel);border:1px solid var(--line)}.iconBtn:active{transform:scale(.94)}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.err{margin:6px 0 0;font-size:12px;color:#ffb4a8}.when{display:flex;align-items:baseline;gap:10px;margin-top:8px}.whenDay{font-size:26px;font-weight:800;letter-spacing:-.01em}.whenTime{font-size:26px;font-weight:300;color:var(--accent)}.conf{margin-left:auto;font-size:11px;color:var(--dim);display:flex;align-items:center;gap:5px}.confDots{display:inline-flex;gap:2px}.confDots i{width:6px;height:6px;border-radius:2px;background:var(--line)}.confDots i.on{background:var(--accent)}.tl{position:relative;margin:8px 0 0;user-select:none;-webkit-user-select:none;touch-action:pan-y}.scrub{position:relative;height:196px;overflow:hidden;background:var(--bg2);border-top:1px solid var(--line);border-bottom:1px solid var(--line);cursor:grab;touch-action:pan-y}.scrub:active{cursor:grabbing}.scrubInner{position:absolute;top:0;left:0;height:100%;will-change:transform}.playhead{position:absolute;top:0;bottom:0;left:50%;width:2px;margin-left:-1px;background:var(--accent);box-shadow:0 0 12px var(--accent);pointer-events:none;z-index:3}.playhead:before,.playhead:after{content:"";position:absolute;left:-6px;width:14px;height:8px;background:var(--accent)}.playhead:before{top:0;clip-path:polygon(0 0,100% 0,50% 100%)}.playhead:after{bottom:0;clip-path:polygon(50% 0,100% 100%,0 100%)}.edgeFade{position:absolute;top:0;bottom:0;width:28px;z-index:2;pointer-events:none}.edgeFade.l{left:0;background:linear-gradient(90deg,var(--bg2),transparent)}.edgeFade.r{right:0;background:linear-gradient(-90deg,var(--bg2),transparent)}.scrubHint{position:absolute;right:8px;bottom:6px;z-index:4;font-size:10px;color:var(--faint);pointer-events:none}.tlLabel{font-size:10px;fill:var(--dim)}.tlLabelStrong{font-size:11px;font-weight:700;fill:var(--text)}.overview{position:relative;height:54px;margin:10px 16px 0;touch-action:none;cursor:pointer}.ovBand{position:absolute;left:0;right:0;top:16px;height:22px;border-radius:6px;overflow:hidden;background:#0d1a26}.ovBand canvas{width:100%;height:100%;display:block}.ovDay{position:absolute;top:0;font-size:10px;color:var(--dim);transform:translate(3px);white-space:nowrap;pointer-events:none}.ovTick{position:absolute;top:14px;height:26px;width:1px;background:#e9f3fa2e;pointer-events:none}.ovOutlook{position:absolute;top:16px;height:22px;right:0;border-radius:0 6px 6px 0;pointer-events:none;background:repeating-linear-gradient(135deg,rgba(6,18,28,.55) 0 4px,transparent 4px 8px)}.ovOutlookLbl{position:absolute;top:41px;font-size:9px;color:var(--faint);letter-spacing:.08em;text-transform:uppercase;pointer-events:none}.ovNow{position:absolute;top:12px;height:30px;width:2px;background:#fff;opacity:.55;pointer-events:none}.ovThumb{position:absolute;top:9px;height:36px;width:22px;margin-left:-11px;pointer-events:none;display:flex;justify-content:center}.ovThumb:before{content:"";width:4px;height:100%;border-radius:3px;background:var(--accent);box-shadow:0 0 0 3px #4fd8ff40,0 0 14px var(--accent)}.readout{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;padding:12px 16px 0}.tile{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:8px 9px;min-width:0}.tileK{font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.08em;display:flex;align-items:center;gap:4px}.tileV{font-size:17px;font-weight:700;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tileS{font-size:11px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:380px){.readout{grid-template-columns:repeat(2,1fr)}}.secHead{display:flex;align-items:center;gap:8px;padding:16px 16px 6px;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.secHead .count{color:var(--faint);font-weight:600}.secHead .spacer{flex:1}.arrowBtn{width:32px;height:28px;border-radius:9px;background:var(--panel);border:1px solid var(--line);color:var(--text);font-size:18px;line-height:1;display:grid;place-items:center;letter-spacing:0}.arrowBtn:disabled{opacity:.3;cursor:default}.arrowBtn:not(:disabled):active{transform:scale(.94)}.sessWrap{position:relative}.sessWrap:before,.sessWrap:after{content:"";position:absolute;top:0;bottom:4px;width:36px;z-index:2;pointer-events:none;opacity:0;transition:opacity .2s}.sessWrap:before{left:0;background:linear-gradient(90deg,var(--bg),transparent)}.sessWrap:after{right:0;background:linear-gradient(-90deg,var(--bg),transparent)}.sessWrap.fadeL:before,.sessWrap.fadeR:after{opacity:1}.sessions{display:flex;align-items:stretch;gap:8px;overflow-x:auto;padding:0 16px 4px;scroll-padding:0 16px;scroll-snap-type:x proximity;scrollbar-width:none;overscroll-behavior-x:contain;cursor:grab}.sessions.dragging{cursor:grabbing;scroll-snap-type:none;-webkit-user-select:none;user-select:none}.sessions.dragging .sess{pointer-events:none}.sessions::-webkit-scrollbar{display:none}.sess{flex:0 0 156px;width:156px;scroll-snap-align:start;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:8px 10px 8px 12px;position:relative;overflow:hidden;display:flex;flex-direction:column;gap:1px}.sess.newDay{margin-left:12px}.sess.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset}.sess:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--c)}.sessWhen{font-size:11px;color:var(--dim);white-space:nowrap}.sessWhen b{color:var(--text);font-weight:700}.sessSpot{font-weight:700;font-size:14px;line-height:1.2;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.4em}.sessScore{font-size:12px;color:var(--c);font-weight:700;margin-top:auto}.group{padding:0 12px}.groupHead{display:flex;align-items:center;gap:8px;padding:14px 4px 6px;font-weight:800;letter-spacing:.1em;font-size:12px}.groupHead .n{font-weight:600;color:var(--dim)}.empty{margin:12px 16px;padding:18px;border:1px dashed var(--line);border-radius:var(--radius);color:var(--dim);text-align:center;font-size:14px}.empty b{color:var(--text)}.row{display:block;width:100%;text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;margin-bottom:8px;position:relative;overflow:hidden;transition:border-color .2s}.row:active{transform:scale(.99)}.row.FIRING{border-color:#ff3d818c;background:linear-gradient(135deg,rgba(255,61,129,.12),var(--panel) 55%)}.rowTop{display:flex;align-items:center;gap:10px}.stIcon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;font-size:14px;flex:0 0 auto;color:#06121c;font-weight:900}.rowName{font-weight:700;font-size:15.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rowMeta{font-size:11.5px;color:var(--dim);display:flex;gap:8px;align-items:center;white-space:nowrap;overflow:hidden}.rowMeta .hv{letter-spacing:-1px;color:#ffb38a}.rowMeta .bb{color:var(--accent)}.rowMain{min-width:0;flex:1}.scoreNum{font-size:22px;font-weight:800;min-width:38px;text-align:right}.trend{font-size:11px;color:var(--dim);text-align:right}.bar{height:5px;background:#0a1621;border-radius:3px;margin:8px 0 7px;overflow:hidden}.bar>i{display:block;height:100%;border-radius:3px;transition:width .18s ease-out,background-color .18s}.chips{display:flex;flex-wrap:wrap;gap:4px}.chip{font-size:11px;padding:2px 7px;border-radius:99px;background:#0b1924;border:1px solid var(--line);color:var(--dim);white-space:nowrap}.chip.y{color:#9cf0d0;border-color:#145643}.chip.n{color:#ffb4a8;border-color:#5c2a26}.chip.g{color:#ffd27a;border-color:#6a5420}.chip.b{color:#ff9ecb;border-color:#6a2447}.reason{font-size:12.5px;color:#ffcf9e;margin-top:6px}.reason.good{color:#9cf0d0}.spark{display:block;margin-top:6px;width:100%;height:22px}.toggleOff{margin:4px 16px 0;width:calc(100% - 32px);padding:12px;border-radius:12px;border:1px dashed var(--line);color:var(--dim)}.dock{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;justify-content:center;padding:8px 12px calc(8px + var(--safe-b));background:linear-gradient(rgba(6,18,28,0),var(--bg) 35%);pointer-events:none}.dockInner{pointer-events:auto;display:flex;gap:6px;background:#0f2130eb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:18px;padding:6px;box-shadow:0 10px 30px #00000073}.dockBtn{min-width:54px;height:46px;border-radius:13px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10.5px;color:var(--dim)}.dockBtn.on{color:var(--text);background:var(--panel2)}.dockBtn.now{color:#06121c;background:var(--accent);font-weight:800}.dockBtn:active{transform:scale(.95)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#0000008c;animation:fade .18s}@keyframes fade{0%{opacity:0}}.sheet{position:fixed;z-index:41;left:0;right:0;bottom:0;max-width:620px;margin:0 auto;max-height:92dvh;overflow-y:auto;background:var(--bg2);border:1px solid var(--line);border-bottom:0;border-radius:22px 22px 0 0;padding:8px 16px calc(24px + var(--safe-b));animation:up .24s cubic-bezier(.2,.9,.3,1);overscroll-behavior:contain}.sheet.full{top:0;max-height:none;border-radius:0;padding-top:calc(8px + var(--safe-t))}@keyframes up{0%{transform:translateY(40px);opacity:0}}.grab{width:40px;height:5px;border-radius:3px;background:var(--line);margin:4px auto 10px}.sheetHead{display:flex;align-items:center;gap:10px;margin-bottom:8px}.sheetHead h2{margin:0;font-size:20px;flex:1}.field{padding:12px 0;border-bottom:1px solid var(--line)}.field label,.fieldK{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:14px}.fieldHelp{font-size:12px;color:var(--dim);margin-top:4px}.seg{display:inline-flex;background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:2px}.seg button{padding:6px 12px;border-radius:8px;font-size:13px;color:var(--dim)}.seg button.on{background:var(--panel2);color:var(--text)}.chipsSel{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.chipSel{padding:7px 12px;border-radius:99px;border:1px solid var(--line);color:var(--dim);font-size:13px}.chipSel.on{border-color:var(--accent);color:var(--text);background:#4fd8ff1a}input[type=range]{width:100%;accent-color:var(--accent);padding:0;border:0;background:none}.switch{width:46px;height:28px;border-radius:99px;background:var(--line);position:relative;flex:0 0 auto;transition:background .2s}.switch:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .2s}.switch.on{background:var(--working)}.switch.on:after{transform:translate(18px)}.btn{padding:10px 14px;border-radius:12px;background:var(--panel2);border:1px solid var(--line);font-weight:600}.btn.primary{background:var(--accent);color:#06121c;border-color:var(--accent)}.dHero{display:flex;gap:12px;align-items:center;margin:4px 0 12px}.dScore{width:64px;height:64px;border-radius:18px;display:grid;place-items:center;font-weight:900;font-size:26px;color:#06121c;flex:0 0 auto}.dName{font-size:21px;font-weight:800;line-height:1.15}.dSub{color:var(--dim);font-size:13px}.dBadges{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 4px}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px;margin:10px 0}.card h3{margin:0 0 8px;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.checks{display:grid;gap:6px}.check{display:grid;grid-template-columns:22px 78px 1fr;gap:6px;font-size:13px;align-items:baseline}.check .k{color:var(--dim)}.ruleGrid{display:grid;grid-template-columns:150px 1fr;gap:12px;align-items:center}@media(max-width:400px){.ruleGrid{grid-template-columns:1fr;justify-items:center}}.rules{font-size:13px;display:grid;gap:4px;width:100%}.rules b{color:var(--text);font-weight:600}.rules div{color:var(--dim)}.tideBar{position:relative;height:26px;background:#0a1621;border-radius:8px;margin:6px 0 2px}.tideBar .ok{position:absolute;top:0;bottom:0;background:#22d39a2e;border-radius:8px}.tideBar .best{position:absolute;top:5px;bottom:5px;background:#22d39a8c;border-radius:5px}.tideBar .mk{position:absolute;top:-3px;bottom:-3px;width:3px;margin-left:-1.5px;background:var(--accent);border-radius:2px;box-shadow:0 0 8px var(--accent)}.tideAxis{display:flex;justify-content:space-between;font-size:10px;color:var(--faint)}.list{margin:0;padding-left:18px;font-size:13.5px;color:#cfe0ec}.list li{margin:3px 0}.para{font-size:14px;color:#cfe0ec;margin:0}textarea{width:100%;min-height:70px;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:8px}.fb{font-size:12px;color:var(--dim);border-top:1px solid var(--line);padding-top:6px;margin-top:6px}.mapWrap{padding:4px 12px}.mapWrap svg{width:100%;height:auto;display:block}.mapLbl{font-size:10.5px;fill:var(--text);paint-order:stroke;stroke:var(--bg);stroke-width:3px}.mapLbl.dim{fill:var(--faint)}.mapDot{cursor:pointer;transition:r .15s}.loading{padding:60px 20px;text-align:center;color:var(--dim)}.wave{width:80px;height:40px;margin:0 auto 10px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.realMapWrap{position:relative;isolation:isolate;z-index:0;margin:0 12px;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line)}.realMap{height:max(380px,calc(100dvh - 330px));background:#0b1620}.realMap .leaflet-control-zoom a{background:var(--panel);color:var(--text);border-color:var(--line)}.realMap .leaflet-control-attribution{background:#06121cbf;color:var(--faint);font-size:9px}.realMap .leaflet-control-attribution a{color:var(--dim)}.mapBtns{position:absolute;top:10px;left:10px;z-index:500;display:flex;gap:6px;flex-wrap:wrap;max-width:calc(100% - 70px)}.mapBtns .btn{padding:6px 10px;font-size:12px;background:#0f2130eb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.mapLegend{position:absolute;left:8px;bottom:22px;z-index:500;display:flex;flex-wrap:wrap;gap:4px 10px;max-width:70%;font-size:10.5px;font-weight:600;background:#06121ccc;padding:5px 8px;border-radius:8px;pointer-events:none}.pinIcon{background:none;border:0}.pin{width:34px;height:34px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--c);border:2px solid #06121c;box-shadow:0 2px 8px #0009;display:grid;place-items:center;cursor:pointer;transition:background-color .15s}.pin span{transform:rotate(45deg);font-weight:800;font-size:12.5px;color:#06121c}.pin.OFF span,.pin.NIGHT span{color:#9fb2c2}.pin.FIRING{box-shadow:0 0 0 4px #ff3d8140,0 0 16px #ff3d81b3}.pin.NIGHT,.pin.hidden{width:18px;height:18px;margin:8px;opacity:.6}.pin.hidden span{display:none}.leaflet-tooltip.pinLbl{background:#06121cd1;border:0;box-shadow:none;color:var(--text);font-size:11px;font-weight:600;padding:1px 6px;border-radius:6px}.leaflet-tooltip.pinLbl:before{display:none}.leaflet-tooltip.pinLbl.dim{color:var(--faint)}.realMap.lowZoom .pinLbl.dim,.realMap.tinyZoom .pinLbl:not(.home){display:none}.realMap.lowZoom .pin.OFF:not(.isHome),.realMap.lowZoom .pin.NIGHT:not(.isHome){width:14px;height:14px;margin:10px}.realMap.lowZoom .pin.OFF:not(.isHome) span{display:none}.arrIcon{background:none;border:0;pointer-events:none}.arr{display:flex;flex-direction:column;align-items:center;gap:1px}.arr svg{width:26px;height:26px;transition:transform .2s;filter:drop-shadow(0 1px 2px #000)}.arr b{font-size:10.5px;white-space:nowrap;background:#06121ccc;padding:0 5px;border-radius:5px}.arrIcon.swell path{fill:#7fe3ff}.arrIcon.swell b{color:#b9e9ff}.arrIcon.wind path{fill:var(--wc, #9fb6c8)}.arrIcon.wind b{color:var(--wc, #9fb6c8)}.realMap.tinyZoom .pin{width:24px;height:24px;border-width:1.5px}.realMap.tinyZoom .pin span{font-size:10px}.realMap.tinyZoom .pin.OFF:not(.isHome),.realMap.tinyZoom .pin.NIGHT:not(.isHome),.realMap.tinyZoom .pin.hidden{width:10px;height:10px;margin:7px}.realMap.tinyZoom .arr b{display:none}.realMap .leaflet-control-layers{background:var(--panel);color:var(--text);border:1px solid var(--line)!important;border-radius:10px}.realMap .leaflet-control-layers-toggle{filter:invert(.9)}.realMap .leaflet-control-layers-expanded{padding:8px 10px;font-size:13px}.toast{position:fixed;left:50%;top:calc(70px + var(--safe-t));transform:translate(-50%);z-index:60;background:var(--accent);color:#06121c;font-weight:700;font-size:13px;padding:8px 14px;border-radius:99px;box-shadow:0 8px 20px #0006;animation:fade .2s}.kindRow{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:8px}.kindBtn{padding:10px;border-radius:12px;border:1px solid var(--line);background:var(--bg);text-align:left;font-size:14px}.kindBtn.on{border-color:var(--accent);background:#4fd8ff1a}.kindBtn small{display:block;color:var(--dim);font-size:11.5px;margin-top:1px}.ctxBox{margin-top:8px;font-size:12px;color:var(--dim);background:var(--bg);border:1px dashed var(--line);border-radius:10px;padding:8px 10px}.sentOk{text-align:center;padding:26px 10px}.sentOk b{display:block;font-size:20px;margin-bottom:6px}@media(max-width:380px){.loc{display:none}}.pin.OFF span{font-size:10px;letter-spacing:.02em}.menuScrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70}.spotMenu{position:fixed;z-index:71;min-width:210px;background:var(--panel2);border:1px solid var(--line);border-radius:14px;padding:6px;box-shadow:0 16px 40px #0000008c;animation:fade .12s}.spotMenuHead{font-size:12px;font-weight:700;color:var(--dim);padding:6px 10px 4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.spotMenu button{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:10px;border-radius:9px;font-size:14.5px}.spotMenu button span{width:18px;text-align:center;color:var(--accent);font-weight:700}.spotMenu button:hover:not(:disabled),.spotMenu button:focus-visible{background:#4fd8ff1a}.spotMenu button:disabled{color:var(--dim)}.homeTag{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;background:#fff;color:#06121c;font-size:12px;font-weight:900;margin-right:6px;vertical-align:1px}.row{-webkit-touch-callout:none}.pin{position:relative}.homeIcon{background:none;border:0;pointer-events:none}.homeFlag{display:flex;align-items:center;justify-content:center;gap:4px;height:22px;border-radius:11px;background:#fff;color:#06121c;font-size:11.5px;font-weight:800;letter-spacing:.02em;box-shadow:0 2px 8px #0009;white-space:nowrap}.homeFlag span{font-size:14px;line-height:1}.pin.isHome{border-color:#fff;box-shadow:0 0 0 2px #fff,0 2px 10px #000000b3}.leaflet-tooltip.pinLbl.home{color:#fff;font-weight:800}
