:root{--paper:#F4EFE6;--paper-deep:#EAE2D3;--ink:#1A1714;--ink-soft:#5B534A;--ink-faint:#948A7D;--line:#D9D1C3;--accent:#C8551E;--accent-ink:#FFF6EE;--moss:#3E5C3A;--moss-soft:#DCE3D6;--danger:#A63A2B;--font-display:var(--next-font-display),"Iowan Old Style",Georgia,serif;--font-body:var(--next-font-body),"Helvetica Neue",Arial,sans-serif;--font-mono:var(--next-font-mono),"SF Mono",Menlo,monospace;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--r-sm:6px;--r-md:10px;--r-lg:16px;--r-pill:999px;--map-h:45vh;--max-w:640px;--fast:120ms;--base:200ms;--ease:cubic-bezier(.2,.7,.2,1);color-scheme:light}*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}html{text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;-webkit-overflow-scrolling:touch;overscroll-behavior-y:none}a{color:inherit;text-decoration:none}button{background:none;border:0;padding:0;cursor:pointer}button,input,textarea{font:inherit;color:inherit}img{display:block;max-width:100%}.display{font-size:2rem;line-height:1.05;letter-spacing:-.02em}.display,.title{font-family:var(--font-display);font-weight:500;margin:0}.title{font-size:1.375rem;line-height:1.15;letter-spacing:-.015em}.label{font-size:.75rem;line-height:1.2;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.label,.mono{font-family:var(--font-mono)}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.soft{color:var(--ink-soft)}.faint{color:var(--ink-faint)}.small{font-size:.875rem;line-height:1.45}.page{min-height:100dvh;display:flex;flex-direction:column}.col{width:100%;max-width:var(--max-w);margin:0 auto;padding:0 var(--s4)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s4);border-bottom:1px solid var(--line);background:var(--paper);position:-webkit-sticky;position:sticky;top:0;z-index:20}.topbar .title{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stack{flex-direction:column}.row,.stack{display:flex;gap:var(--s3)}.row{align-items:center}.spread{justify-content:space-between}.wrap{flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);white-space:nowrap;flex-shrink:0;min-height:44px;padding:0 var(--s4);border-radius:var(--r-md);border:1px solid var(--ink);background:var(--ink);color:var(--paper);font-weight:500;transition:background var(--fast) var(--ease),transform var(--fast) var(--ease)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:default}.btn-accent{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}.btn-ghost:hover{border-color:var(--ink)}.btn-text{min-height:36px;padding:0 var(--s2);border-color:transparent;background:transparent;color:var(--ink-soft)}.btn-text:hover{color:var(--ink)}.btn-danger{color:var(--danger)}.btn-sm{min-height:36px;padding:0 var(--s3);font-size:.875rem}.btn-block{width:100%}.field{display:flex;flex-direction:column;gap:var(--s1)}.field>.label{margin-bottom:2px}.input,.textarea{width:100%;min-height:44px;padding:var(--s3) var(--s3);background:#fff;border:1px solid var(--line);border-radius:var(--r-md);outline:none;transition:border-color var(--fast) var(--ease)}.input:focus,.textarea:focus{border-color:var(--ink)}.textarea{min-height:96px;resize:vertical;line-height:1.45}.hint{font-size:.8125rem;color:var(--ink-faint)}.error{font-size:.875rem;color:var(--danger)}.switch{display:inline-flex;align-items:center;gap:var(--s3);min-height:44px}.switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:44px;height:26px;border-radius:var(--r-pill);background:var(--paper-deep);border:1px solid var(--line);position:relative;margin:0;cursor:pointer;transition:background var(--base) var(--ease)}.switch input:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:#fff;border:1px solid var(--line);transition:transform var(--base) var(--ease)}.switch input:checked{background:var(--moss);border-color:var(--moss)}.switch input:checked:after{transform:translateX(18px);border-color:var(--moss)}.card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper);overflow:hidden}.card-pad{padding:var(--s4)}.divider{height:1px;background:var(--line);border:0;margin:0}@media (min-width:720px){.page.app{max-width:480px;margin:0 auto;border-left:1px solid var(--line);border-right:1px solid var(--line)}}.map-wrap{position:relative;height:var(--map-h);min-height:240px;background:var(--paper-deep)}.map-wrap .leaflet-container{height:100%;width:100%;background:var(--paper-deep);font-family:var(--font-body)}.map-wrap .leaflet-tile-pane{filter:sepia(.32) saturate(.62) brightness(1.03) contrast(.92)}.map-wrap .leaflet-control-attribution{font-size:10px;background:rgba(244,239,230,.85);color:var(--ink-faint)}.map-wrap .leaflet-control-zoom a{background:var(--paper);color:var(--ink);border-color:var(--line)}.map-static{height:320px}.map-empty{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:var(--s5);color:var(--ink-soft)}.pin{width:28px;height:28px;border-radius:50%;background:var(--accent);color:var(--accent-ink);border:2px solid var(--paper);display:grid;place-items:center;font-family:var(--font-mono);font-size:12px;font-weight:600;letter-spacing:0;transition:transform var(--fast) var(--ease),background var(--fast) var(--ease)}.pin.is-active{background:var(--ink);transform:scale(1.25)}.leaflet-marker-icon.pin-icon{background:transparent;border:0}.list{list-style:none;margin:0;padding:0}.stop-row{display:grid;grid-template-columns:36px 1fr auto;grid-gap:var(--s3);gap:var(--s3);align-items:start;width:100%;text-align:left;padding:var(--s4);border-bottom:1px solid var(--line);background:var(--paper);transition:background var(--fast) var(--ease)}.stop-row.is-active,.stop-row:hover{background:var(--paper-deep)}.stop-num{font-family:var(--font-mono);font-size:.875rem;font-weight:600;color:var(--accent);padding-top:2px}.stop-name{font-weight:500;margin:0}.stop-note{margin:2px 0 0;color:var(--ink-soft);font-size:.9375rem;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.stop-dist{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-faint);padding-top:4px;white-space:nowrap}.stop-thumb{width:56px;height:56px;border-radius:var(--r-sm);object-fit:cover;background:var(--paper-deep)}.sheet-backdrop{position:fixed;inset:0;background:rgba(26,23,20,.35);z-index:40;animation:fade var(--base) var(--ease)}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:41;max-height:88dvh;overflow-y:auto;background:var(--paper);border-top:1px solid var(--line);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:var(--s3) var(--s4) calc(var(--s5) + env(safe-area-inset-bottom));animation:rise var(--base) var(--ease)}.sheet-handle{width:36px;height:4px;border-radius:2px;background:var(--line);margin:0 auto var(--s3)}.sheet-cover{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-md);background:var(--paper-deep)}@media (min-width:720px){.sheet{left:50%;right:auto;width:560px;transform:translateX(-50%)}}@keyframes rise{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}@media (min-width:720px){@keyframes rise{0%{transform:translate(-50%,24px);opacity:0}to{transform:translateX(-50%);opacity:1}}}.share-hero{padding:var(--s6) var(--s4) var(--s5)}.share-hero .display{margin-top:var(--s2)}.share-meta{display:flex;gap:var(--s3);margin-top:var(--s3)}.share-stop{display:grid;grid-template-columns:36px 1fr;grid-gap:var(--s3);gap:var(--s3);padding:var(--s5) 0;border-top:1px solid var(--line)}.share-stop-cover{margin-top:var(--s3);border-radius:var(--r-md);aspect-ratio:4/3;object-fit:cover;width:100%;background:var(--paper-deep)}.share-stop-note{margin:var(--s1) 0 0;color:var(--ink-soft);white-space:pre-wrap}.share-link{display:inline-block;margin-top:var(--s3);font-family:var(--font-mono);font-size:.8125rem;color:var(--accent);border-bottom:1px solid}.share-foot{padding:var(--s6) var(--s4);text-align:center;color:var(--ink-faint);font-size:.8125rem}.gate{min-height:100dvh;display:grid;place-items:center;padding:var(--s5)}.gate-card{width:100%;max-width:420px}.gate-map{height:180px;border-radius:var(--r-md) var(--r-md) 0 0;overflow:hidden}.gate-map,.trip-item{border-bottom:1px solid var(--line)}.trip-item{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s4)}.trip-item:hover{background:var(--paper-deep)}.empty{padding:var(--s6) var(--s4);text-align:center;color:var(--ink-soft)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.demo-note{display:flex;align-items:baseline;gap:8px;margin:0;font-size:.8125rem;line-height:1.45;color:var(--ink-soft);overflow-wrap:anywhere}.demo-tag{flex:none;display:inline-block;font-size:.625rem;line-height:1.2;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--accent);border:1px solid;border-radius:var(--r-pill);padding:2px 7px;vertical-align:1px}.demo-tag,.dev-note{font-family:var(--font-mono)}.dev-note{font-size:.75rem;color:var(--ink-faint);margin-top:6px}.dev-note .demo-tag{color:var(--ink-faint);border-style:dashed}.back{display:inline-flex;align-items:center;gap:1px;min-height:44px;min-width:44px;padding:0 12px 0 6px;font:500 .9375rem/1 var(--font-body);color:var(--accent);white-space:nowrap;text-decoration:none;border-radius:var(--r-md);transition:opacity var(--fast) var(--ease),transform var(--fast) var(--ease)}.back .back-i{width:22px;height:22px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;display:block}.back:active{opacity:.6;transform:scale(.98)}.nf{min-height:100dvh;display:grid;align-content:center;grid-gap:12px;gap:12px;max-width:480px;margin:0 auto;padding:24px;background:var(--paper)}.nf h1{margin:0;font:500 2.125rem/1.05 var(--font-display);letter-spacing:-.02em;text-wrap:balance}.nf p{margin:0;color:var(--ink-soft)}.nf .nf-link{justify-self:start;display:inline-flex;align-items:center;min-height:48px;padding:0 18px;margin-top:8px;border-radius:var(--r-pill);background:var(--ink);color:var(--paper);font-weight:500;transition:transform var(--fast) var(--ease),background var(--fast) var(--ease)}.nf .nf-link:active{transform:scale(.98);background:#000}.sk{min-height:100dvh;background:var(--paper);color:var(--ink)}.sk-block{display:block;background:var(--paper-deep);border-radius:var(--r-sm);animation:sk-pulse 1.2s ease-in-out infinite}@keyframes sk-pulse{0%,to{opacity:1}50%{opacity:.55}}@media (prefers-reduced-motion:reduce){.sk-block{animation:none}}.sk-bar{display:flex;align-items:center;gap:12px;height:calc(52px + env(safe-area-inset-top, 0px));padding:env(safe-area-inset-top,0) 16px 0;border-bottom:1px solid var(--line)}.sk-back{width:64px;height:16px}.sk-title{width:120px;height:18px;margin:0 auto}.sk-pill{width:72px;height:36px;border-radius:var(--r-pill)}.sk-large{width:140px;height:34px}.sk-pad{padding:20px 16px;display:grid;grid-gap:12px;gap:12px}.sk-rule{display:block;height:1px;background:var(--ink);margin-bottom:10px}.sk-display{width:70%;height:56px}.sk-dates{width:45%;height:18px}.sk-cover{width:100%;aspect-ratio:4/5;max-height:60svh;border-radius:0}.sk-rows{padding:0 16px}.sk-row{display:grid;grid-template-columns:48px minmax(0,1fr);grid-gap:12px;gap:12px;align-items:center;min-height:60px;padding:10px 0;border-bottom:1px solid var(--line)}.sk-thumb{width:48px;height:48px}.sk-lines{display:grid;grid-gap:8px;gap:8px}.sk-lines .sk-block{height:14px;width:70%}.sk-lines .sk-block.short{width:45%;height:12px}.sk-segs{display:flex;gap:8px;padding:8px 16px;border-bottom:1px solid var(--line)}.sk-seg{width:140px;height:44px;border-radius:var(--r-pill)}.sk-page{margin:20px 16px;aspect-ratio:5/4}.sk-hero{margin:24px 16px 0;aspect-ratio:4/3;border-radius:var(--r-md)}.sk-card{margin:6px 16px;height:150px;border-radius:12px}@media (min-width:720px){.sk.sk-guest{max-width:520px;margin:0 auto}}