:root{--bg-0: #0E1116;--bg-1: #171C23;--bg-2: #212934;--line: #2C3540;--text-1: #F4F6F8;--text-2: #B4BFCB;--text-3: #8A96A3;--amber: #FFB020;--amber-press: #E09A16;--on-amber: #14100A;--go: #4ADE80;--go-press: #34C96A;--on-go: #06130C;--warn: #F5B84A;--danger: #FF6B6B;--danger-fill: #C62B31;--teal: #5FD3D6;--crowd-1: #3A4756;--crowd-2: #4F7F93;--crowd-3: #5FD3D6;--crowd-4: #FFB020;--font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;--t-display: 56px;--lh-display: 60px;--t-hero: 36px;--lh-hero: 40px;--t-title: 24px;--lh-title: 30px;--t-heading: 20px;--lh-heading: 26px;--t-body: 17px;--lh-body: 24px;--t-small: 15px;--lh-small: 20px;--r-ctl: 12px;--r-card: 20px;--r-sheet: 24px;--tap: 56px;--tap-primary: 64px;--tap-trip: 72px;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px);--dur-micro: .12s;--dur-sheet: .22s}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg-0);color:var(--text-1);font-family:var(--font);font-size:var(--t-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;overscroll-behavior:none}h1,h2,h3,p{margin:0}a{color:var(--amber)}button{font-family:inherit;font-size:inherit;line-height:inherit;color:inherit;border:none;background:none;cursor:pointer;border-radius:var(--r-ctl);min-height:var(--tap);padding:0 16px;transition:background-color var(--dur-micro) ease-out,transform var(--dur-micro) ease-out}button:active{transform:scale(.985)}button:focus-visible,input:focus-visible,a:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.num{font-variant-numeric:tabular-nums}.muted{color:var(--text-3)}.small{font-size:var(--t-small);line-height:var(--lh-small)}.app{max-width:560px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;padding:calc(8px + var(--safe-top)) 16px calc(24px + var(--safe-bottom));gap:12px}.screen{display:flex;flex-direction:column;gap:12px;flex:1}.section-gap{height:12px}.hdr{display:flex;align-items:center;gap:10px;min-height:56px}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:var(--t-heading)}.mark{width:28px;height:28px;border-radius:8px;background:var(--amber);color:var(--on-amber);display:inline-flex;align-items:center;justify-content:center;flex:none}.hdr-spacer{flex:1}.where-chip{display:inline-flex;align-items:center;gap:8px;background:var(--bg-1);border:1px solid var(--line);border-radius:999px;min-height:44px;padding:0 12px 0 10px;font-size:var(--t-small);line-height:var(--lh-small);max-width:58%;color:var(--text-1)}.where-chip .label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.where-chip.warn{border-color:var(--warn)}.icon-btn{width:48px;min-height:48px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--text-2);background:var(--bg-1);border:1px solid var(--line);border-radius:999px}.greeting{color:var(--text-2)}.greeting b{color:var(--text-1);font-weight:600}.rule{height:1px;background:var(--line)}.status{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 4px;font-size:var(--t-small);line-height:var(--lh-small);color:var(--text-2)}.status.warn{color:var(--warn)}.status .grow{flex:1}.status button{min-height:40px;padding:0 12px;font-size:var(--t-small);border:1px solid var(--line);border-radius:999px;color:var(--text-1);background:var(--bg-1)}.card{background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-card);padding:20px;display:flex;flex-direction:column;gap:8px}.card.next{border-color:#3a3421}.card.trip{border-left:4px solid var(--go)}.overline{display:inline-flex;align-items:center;gap:6px;font-size:var(--t-small);font-weight:600}.overline.amber{color:var(--amber)}.overline.go{color:var(--go)}.card .label{color:var(--text-2);font-size:var(--t-small);line-height:var(--lh-small)}.display{font-size:var(--t-display);line-height:var(--lh-display);font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.display.soon,.display.now{color:var(--amber)}.display.passed{color:var(--warn)}.hero-num{font-size:var(--t-hero);line-height:var(--lh-hero);font-weight:700;font-variant-numeric:tabular-nums}.title{font-size:var(--t-title);line-height:var(--lh-title);font-weight:600}.heading{font-size:var(--t-heading);line-height:var(--lh-heading);font-weight:600}.sub{color:var(--text-2)}.meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;color:var(--text-2);font-size:var(--t-body)}.meta>span{white-space:nowrap}.meta>span.wrap,.meta .wrap{white-space:normal}.meta .pair{display:inline-flex;align-items:flex-start;gap:8px}.meta .pair>svg{flex:none;margin-top:3px}.meta svg{color:var(--text-3);flex:none}.meta.small{font-size:var(--t-small);line-height:var(--lh-small)}.inset{background:var(--bg-2);border-radius:var(--r-ctl);padding:12px 14px;color:var(--text-2);display:flex;gap:10px;align-items:flex-start}.inset b{color:var(--text-1);font-weight:600}.inset svg{flex:none;color:var(--text-3);margin-top:2px}.card-actions{display:flex;flex-direction:column;gap:8px;margin-top:8px}.inline-note{color:var(--text-2);font-size:var(--t-small);line-height:var(--lh-small)}.inline-note.warn{color:var(--warn)}.inline-note.danger{color:var(--danger)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;font-weight:600}.btn.primary{background:var(--amber);color:var(--on-amber);min-height:var(--tap-primary);font-size:18px}.btn.primary:active{background:var(--amber-press)}.btn.go{background:var(--go);color:var(--on-go);min-height:var(--tap-trip);font-size:19px}.btn.go:active{background:var(--go-press)}.btn.secondary{background:var(--bg-1);border:1px solid var(--line);color:var(--text-1)}.btn.text{color:var(--text-2)}.btn.text.quiet{color:var(--text-3)}.btn.danger{color:var(--danger);border:1px solid var(--line);background:transparent}.btn.danger-fill{background:var(--danger-fill);color:#fff}.btn.busy{opacity:.7;cursor:progress}.btn-row{display:flex;gap:10px}.btn-row>*{flex:1}.btn-row .end{flex:0 0 auto;width:auto}.chips{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:0 16px;background:var(--bg-1);border:1px solid var(--line);color:var(--text-1);font-size:var(--t-body);border-radius:999px}.chip[aria-pressed=true],.chip.selected{border-color:var(--amber);color:var(--amber)}.chip.grow{flex:1 1 auto}.chip:disabled{opacity:.4;cursor:default}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:var(--t-small);line-height:var(--lh-small);color:var(--text-2)}.field .input-wrap{position:relative}.field input{width:100%;min-height:var(--tap);padding:0 16px;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-ctl);color:var(--text-1);font-size:20px;font-family:inherit}.field input.has-trailing{padding-right:56px}.field .trailing{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:48px;min-height:48px;padding:0;display:inline-flex;align-items:center;justify-content:center;color:var(--text-2)}.check{display:flex;align-items:center;gap:12px;min-height:var(--tap);color:var(--text-2)}.check input{width:24px;height:24px;accent-color:var(--amber)}.rail-head{display:flex;align-items:center;justify-content:space-between;min-height:44px}.rail{display:flex;flex-direction:column;gap:8px}.row{display:grid;grid-template-columns:92px 1fr auto;gap:0 12px;align-items:center;width:100%;text-align:left;padding:12px 14px 12px 0;background:var(--bg-1);border:1px solid var(--line);border-radius:16px;color:var(--text-1);min-height:72px}.row .when{font-variant-numeric:tabular-nums;font-weight:600;text-align:center;padding-left:8px;border-right:1px solid var(--line);align-self:stretch;display:flex;flex-direction:column;justify-content:center}.row .when .day{color:var(--text-3);font-size:var(--t-small);font-weight:500}.row .when .num{white-space:nowrap;font-size:var(--t-small)}.row .main{min-width:0;display:flex;flex-direction:column;gap:2px}.row .venue{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .what{color:var(--text-2);font-size:var(--t-small);line-height:var(--lh-small);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .leave{color:var(--teal);font-size:var(--t-small);line-height:var(--lh-small);font-variant-numeric:tabular-nums}.row .leave.cant{color:var(--text-3)}.row svg.chev{color:var(--text-3)}.row.muted{opacity:.55}.row.selected{border-color:var(--amber)}.rail-foot{color:var(--text-3);font-size:var(--t-small);line-height:var(--lh-small);padding:8px 4px}.rail-group{display:flex;flex-direction:column;gap:8px}.rail-sub{margin-top:10px}.map-toggle{width:auto;min-height:44px;padding:0 14px;font-size:var(--t-small);border-radius:999px}.empty{text-align:center;padding:40px 16px;display:flex;flex-direction:column;align-items:center;gap:10px}.empty svg{color:var(--text-3)}.empty .title{margin-top:6px}.empty .sub{max-width:32ch}.empty .btn-row{width:100%;margin-top:12px}.skeleton{background:linear-gradient(90deg,var(--bg-1) 25%,var(--bg-2) 50%,var(--bg-1) 75%);background-size:200% 100%;animation:shimmer 1.4s linear infinite;border-radius:12px}.skeleton.card{height:280px;border:none;border-radius:var(--r-card)}.skeleton.row{height:72px;border-radius:16px}@keyframes shimmer{to{background-position:-200% 0}}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:20;display:flex;align-items:flex-end;justify-content:center;animation:fade var(--dur-sheet) ease-out}.sheet{background:var(--bg-2);border-radius:var(--r-sheet) var(--r-sheet) 0 0;padding:10px 16px calc(20px + var(--safe-bottom));width:100%;max-width:560px;max-height:88vh;overflow-y:auto;display:flex;flex-direction:column;gap:10px;animation:rise var(--dur-sheet) ease-out}.sheet .grab{width:40px;height:4px;border-radius:2px;background:var(--line);margin:2px auto 6px}.sheet h2{font-size:var(--t-heading);line-height:var(--lh-heading);font-weight:600}.sheet .option{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 14px;min-height:var(--tap);color:var(--text-1)}.sheet .option.selected{border-color:var(--amber)}.sheet .option svg{flex:none;color:var(--text-2)}.sheet .option .main{min-width:0;flex:1;display:flex;flex-direction:column}.sheet .option .l1{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet .option .l2{color:var(--text-3);font-size:var(--t-small);line-height:var(--lh-small);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sheet .option .check{color:var(--amber)}.sheet .pair{display:flex;gap:8px}.sheet .pair .option{flex:1}.sheet .star{flex:none;width:var(--tap);padding:0;background:var(--bg-1);border:1px solid var(--line);color:var(--text-3)}.sheet .star.on{color:var(--amber);border-color:var(--amber)}.sheet .search{position:relative}.sheet .search svg{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--text-3)}.sheet .search input{width:100%;min-height:var(--tap);padding:0 16px 0 46px;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-ctl);color:var(--text-1);font-size:18px;font-family:inherit}.sheet .section{color:var(--text-2);font-size:var(--t-small);line-height:var(--lh-small);margin-top:6px}.radius{display:flex;gap:8px}.radius button{flex:1;min-height:var(--tap);background:var(--bg-1);border:1px solid var(--line);font-weight:600;font-variant-numeric:tabular-nums;padding:0}.radius button[aria-checked=true]{border-color:var(--amber);color:var(--amber)}.sheet .attrib{color:var(--text-3);font-size:var(--t-small);line-height:var(--lh-small)}@keyframes rise{0%{transform:translateY(24px);opacity:.6}to{transform:none;opacity:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}.map-wrap{position:relative;border-radius:var(--r-card);overflow:hidden;border:1px solid var(--line)}.map{height:55vh;min-height:280px;max-height:520px;background:var(--bg-1)}.map-loading{height:55vh;min-height:280px;display:flex;align-items:center;justify-content:center;color:var(--text-3)}.map-legend{position:absolute;left:8px;bottom:8px;display:flex;gap:10px;flex-wrap:wrap;background:#0e1116d9;border-radius:8px;padding:6px 10px;font-size:var(--t-small);color:var(--text-2)}.map-legend span{display:inline-flex;align-items:center;gap:5px}.map-legend i{width:10px;height:10px;border-radius:50%;display:inline-block}.map-card{position:absolute;left:8px;right:8px;bottom:44px}.map-card .row{background:var(--bg-2)}.maplibregl-ctrl-attrib{font-size:12px}.welcome{display:flex;flex-direction:column;gap:16px;padding-top:6vh;flex:1}.welcome .tagline{font-size:var(--t-hero);line-height:var(--lh-hero);font-weight:700;letter-spacing:-.01em}.welcome .sample{gap:0;padding:0;overflow:hidden}.welcome .sample .lead{padding:18px 20px 14px;display:flex;flex-direction:column;gap:4px;border-bottom:1px solid var(--line)}.welcome .sample .line{display:flex;justify-content:space-between;gap:12px;padding:12px 20px;border-bottom:1px solid var(--line);color:var(--text-2)}.welcome .sample .line:last-child{border-bottom:none}.welcome .sample .line b{color:var(--text-1);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.welcome .sample .line span{white-space:nowrap;font-variant-numeric:tabular-nums}.welcome .promise{color:var(--text-2)}.welcome .foot{color:var(--text-3);font-size:var(--t-small);text-align:center;margin-top:auto}.auth{display:flex;flex-direction:column;gap:14px;padding-top:2vh}.auth .title{margin-bottom:4px}.back{display:inline-flex;align-items:center;gap:4px;padding:0 12px 0 6px;color:var(--text-2);min-width:56px}.why{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.why li{display:flex;gap:10px;color:var(--text-2)}.why li svg{color:var(--teal);flex:none;margin-top:2px}.zone{display:flex;flex-direction:column;gap:6px}.zone .disclaimer{color:var(--text-3);font-size:var(--t-small);line-height:var(--lh-small)}.sticky-cta{position:sticky;bottom:calc(8px + var(--safe-bottom));margin-top:auto;padding-top:8px;background:linear-gradient(transparent,var(--bg-0) 30%)}.settings-group{display:flex;flex-direction:column;gap:10px}.settings-group h3{font-size:var(--t-small);line-height:var(--lh-small);color:var(--text-2);font-weight:500}.settings-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:var(--bg-1);border:1px solid var(--line);border-radius:var(--r-ctl);padding:0 14px;min-height:var(--tap)}.settings-row .main{flex:1;min-width:0;display:flex;flex-direction:column}.settings-row .l2{color:var(--text-3);font-size:var(--t-small);line-height:var(--lh-small)}.settings-row svg{color:var(--text-3);flex:none}.settings-row.danger{color:var(--danger)}.settings-row.danger svg{color:var(--danger)}@media(orientation:landscape)and (min-width:720px){.app{max-width:960px}.two-col{display:grid;grid-template-columns:55% 1fr;gap:16px;align-items:start}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.visually-hidden{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden;white-space:nowrap}
