*{margin:0;padding:0;box-sizing:border-box}:root{--bg:#0a0a0a;--bg2:#141414;--bg3:#1d1d1d;--upload-fill:#0e0e0e;--border:#2a2a2a;--border-subtle:#1f1f1f;--text:#f0f0f0;--text2:#999;--text3:#777;--text4:#666;--text5:#555;--accent:#22c55e;--accent2:#16a34a;--accent-ink:#0a0a0a;--accent-dim:#199a45;--chip-done-bg:#1d1d1d;--disabled-bg:#161616;--disabled-text:#555;--danger:#ef4444;--danger-ink:#fff;--blue:#3b82f6;--r-card:14px;--r-zone:18px;--r-pill:99px;--home-in-ms:250ms;--home-in-ease:ease-out;--home-out-ms:180ms;--home-out-ease:ease-in;--cockpit-map-h-full:380px;--cockpit-map-h-focus:336px;--cockpit-strip-h:58px;--cockpit-scroll-gap:12px;scroll-padding-top:calc(env(safe-area-inset-top, 0px) + var(--cockpit-map-h-full) + var(--cockpit-strip-h) + var(--cockpit-scroll-gap))}html:has(.container.cockpit-focused){scroll-padding-top:calc(env(safe-area-inset-top, 0px) + var(--cockpit-map-h-focus) + var(--cockpit-strip-h) + var(--cockpit-scroll-gap))}html:has(.container.cockpit-off){scroll-padding-top:0}html.scroll-locked{overflow:hidden;overscroll-behavior:none}body{font-family:var(--font-inter-tight),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);display:flex;justify-content:center;min-height:100dvh;-webkit-font-smoothing:antialiased}button{cursor:pointer;border:none;background:none;color:inherit;font-family:inherit}.container{--cockpit-map-h:var(--cockpit-map-h-full);width:100%;max-width:480px;background:var(--bg);padding:20px 16px calc(28px + env(safe-area-inset-bottom));min-height:100dvh;position:relative;overflow-x:hidden;overflow-x:clip;border:none!important;box-shadow:none!important;outline:none!important}@media (min-width:481px){.container{border-left:1px solid #111!important;border-right:1px solid #111!important}}.container.with-bottom-bar{padding-bottom:calc(160px + env(safe-area-inset-bottom))}.container.shell-noselect{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.container.shell-noselect input,.container.shell-noselect textarea{-webkit-touch-callout:default;-webkit-user-select:text;-moz-user-select:text;user-select:text}.container.cockpit-focused{--cockpit-map-h:var(--cockpit-map-h-focus)}.container.cockpit-focused .map-toggle{display:none}.container.cockpit-off .route-map-wrap{margin:16px 0 4px;padding-top:0;background:none;position:relative;top:auto}.container.cockpit-off .stops-header{margin:22px 0 12px;padding:0;position:static;top:auto;background:none;box-shadow:none}.topbar{display:flex;align-items:center;gap:10px;padding:2px 0 18px}.account-prompt{display:flex;align-items:stretch;gap:8px;margin:0 0 14px;border-radius:var(--r-card);background:var(--accent);color:var(--accent-ink);overflow:hidden}.account-prompt-body{flex:1 1 auto;display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:none;background:none;color:inherit;font-family:inherit;text-align:left;cursor:pointer}.account-prompt-title{font-size:14px;font-weight:600;line-height:1.3}.account-prompt-cta{font-size:13px;font-weight:500;text-decoration:underline;text-underline-offset:2px;opacity:.9}.account-prompt-body:active{opacity:.9}.account-prompt-dismiss{flex:none;width:40px;align-self:stretch;border:none;background:none;color:var(--accent-ink);font-size:20px;line-height:1;cursor:pointer;opacity:.7}.account-prompt-dismiss:active{opacity:1}.brand{display:flex;align-items:center;gap:10px}.logo-ring{width:32px;height:32px;flex-shrink:0;display:flex}.logo-ring img{width:100%;height:100%;border-radius:7px;display:block}.brand-name{font-size:16px;font-weight:600;letter-spacing:-.02em;color:var(--text)}.screen-label{margin-left:auto;font-size:12px;font-weight:500;letter-spacing:.08em;color:var(--text4);text-transform:uppercase}.page-title{font-size:26px;font-weight:700;letter-spacing:-.03em;margin-bottom:6px}.page-subtitle{font-size:15px;line-height:1.45;color:var(--text2);margin-bottom:20px}.upload-zone{position:relative;border:2px dashed var(--border);border-radius:var(--r-zone);background:var(--upload-fill);padding:34px 20px;display:flex;flex-direction:column;align-items:center;gap:14px;cursor:pointer;transition:border-color .18s,background .18s}.upload-zone:active,.upload-zone:hover{border-color:var(--accent);background:#101510}.upload-zone input{display:none}.upload-icon{width:56px;height:56px;border-radius:16px;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:center}.upload-zone-text{text-align:center}.upload-zone-title{font-size:16px;font-weight:600;color:var(--text)}.upload-zone-hint{font-size:13px;color:var(--text3);margin-top:3px}.howto{margin-top:14px}.howto-trigger{width:100%;display:flex;align-items:center;gap:8px;padding:12px 14px;background:var(--bg2);border:none;border-radius:var(--r-card);color:var(--text2);font-size:14px;font-family:inherit;cursor:pointer;transition:background .18s}.howto-trigger:active,.howto-trigger:hover{background:var(--bg3)}.howto-info{flex:none;color:var(--text3)}.howto-label{flex:1 1;text-align:left}.howto-chevron{flex:none;color:var(--text3);transition:transform .18s}.howto-chevron.open{transform:rotate(180deg)}.howto-panel{padding:12px 14px 4px}.howto-text{font-size:14px;line-height:1.5;color:var(--text2);margin-top:14px}.howto-img{display:block;width:100%;max-width:320px;height:auto;margin:0 auto;border-radius:var(--r-card)}.files{margin-top:20px}.files-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.files-count{font-size:13px;font-weight:500;color:var(--text2)}.link-btn{font-size:13px;font-weight:600;color:var(--accent);padding:4px;margin:-4px}.link-btn:active{opacity:.6}.thumb-strip{display:flex;gap:12px;overflow-x:auto;padding-bottom:4px}.thumb{position:relative;flex:none;width:84px;height:132px;border-radius:12px;overflow:hidden;background:var(--bg2);border:1px solid var(--border-subtle);animation:fadeUp .25s ease both}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb-tag{bottom:6px;left:6px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:9px;color:#e6e6e6;background:hsla(0,0%,4%,.6);padding:2px 4px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.thumb-remove,.thumb-tag{position:absolute;right:6px}.thumb-remove{top:6px;width:22px;height:22px;border-radius:50%;background:hsla(0,0%,4%,.85);color:var(--danger);font-size:15px;line-height:1;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.thumb-remove:active{background:hsla(0,0%,4%,.95)}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.error-text{color:var(--danger)}.error-text,.notice-text{font-size:14px;text-align:center;margin-top:16px}.notice-text{color:#f59e0b}.bottom-bar{position:fixed;left:0;right:0;bottom:0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));background:linear-gradient(to top,var(--bg) 65%,hsla(0,0%,4%,0))}.bottom-bar-inner{max-width:480px;margin:0 auto}.disclaimer{color:#555}.app-footer,.disclaimer{font-size:11px;text-align:center;padding:16px 20px}.app-footer{color:#333}.btn-primary{width:100%;padding:17px;border-radius:var(--r-card);font-size:16px;font-weight:600;background:var(--accent);color:var(--accent-ink);transition:transform .1s,opacity .2s,background .2s}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{background:var(--disabled-bg);color:var(--disabled-text);cursor:default}.btn-secondary{width:100%;padding:15px;border-radius:var(--r-card);font-size:15px;font-weight:500;background:var(--bg2);color:var(--text2);border:1px solid var(--border-subtle);margin-top:24px}.btn-secondary:active{background:var(--bg3)}.processing{min-height:64vh;flex-direction:column;gap:20px;padding:24px 10px}.proc-icon,.proc-steps,.processing{display:flex;align-items:center;justify-content:center}.proc-icon{position:relative;width:32px;height:32px;border-radius:8px;background:#141414;color:#555;transition:background .25s,color .25s,opacity .25s}.proc-icon.active{background:rgba(34,197,94,.12);color:#22c55e}.proc-icon.done{background:#141414;color:#22c55e;opacity:.5}.proc-ring{position:absolute;inset:-4px;border-radius:11px;border:2px solid #22c55e;pointer-events:none;animation:procPulse 1.5s ease-out infinite}@keyframes procPulse{0%{transform:scale(.92);opacity:.7}70%,to{transform:scale(1.3);opacity:0}}.proc-line{width:24px;height:2px;background:#1d1d1d;transition:background .25s,opacity .25s}.proc-line.active,.proc-line.done{background:#22c55e}.proc-line.done{opacity:.3}.proc-text{display:flex;flex-direction:column;align-items:center;gap:6px}.proc-status{font-size:15px;font-weight:500;color:#aaa;text-align:center;margin:0}.proc-sub-wrap{min-height:18px}.proc-sub{font-size:13px;font-weight:400;color:#777;text-align:center;margin:0}.proc-sub:not(.proc-sub-static){animation:procSubCycle 2.5s ease-in-out both}@keyframes procSubCycle{0%{opacity:0;transform:translateY(3px)}14%,82%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-3px)}}@media (prefers-reduced-motion:reduce){.proc-ring{opacity:.4}.proc-ring,.proc-sub:not(.proc-sub-static){animation:none}}.modal-overlay{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,.7);display:flex;align-items:center;justify-content:center;padding:24px;animation:modalFade .15s ease}.modal-card{width:100%;max-width:340px;background:#141414;border:none;border-radius:14px;padding:24px;animation:modalPop .18s cubic-bezier(.2,.8,.2,1)}.modal-title{font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--text)}.modal-text{margin-top:6px;font-size:14px;line-height:1.45;color:var(--text2)}.modal-actions{display:flex;gap:10px;margin-top:20px}.modal-btn{flex:1 1;padding:13px;border-radius:12px;font-size:15px;font-weight:600}.modal-btn.cancel{background:var(--bg3);color:var(--text2)}.modal-btn.confirm{background:var(--accent);color:var(--accent-ink)}@keyframes modalFade{0%{opacity:0}to{opacity:1}}@keyframes modalPop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}.celebrate{min-height:64vh;display:flex;align-items:center;justify-content:center;padding:24px 10px;position:relative}.celebrate-steps{position:absolute;top:50%;left:50%;animation:stepFadeUp .3s ease forwards}@keyframes stepFadeUp{0%{opacity:1;transform:translate(-50%,-50%)}to{opacity:0;transform:translate(-50%,calc(-50% - 8px))}}.celebrate-savings{display:flex;flex-direction:column;align-items:center;text-align:center}.celebrate-pct{font-size:36px;font-weight:700;color:#22c55e;letter-spacing:-.02em;opacity:0;animation:celebratePop .5s cubic-bezier(.175,.885,.32,1.275) .2s forwards}@keyframes celebratePop{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.celebrate-miles{margin-top:8px;font-size:13px;color:#666;opacity:0;animation:celebrateFade .4s ease .5s forwards}@keyframes celebrateFade{0%{opacity:0}to{opacity:1}}.completion{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px 20px;gap:10px}.completion-label{font-size:14px;color:#666;text-transform:uppercase;letter-spacing:.05em;animation:completionFade .4s ease .1s both}.completion-big{font-size:42px;font-weight:700;color:#22c55e;letter-spacing:-.02em;animation:completionSpring .5s cubic-bezier(.175,.885,.32,1.275) .3s both}.completion-sub{font-size:15px;color:#aaa;animation:completionFade .4s ease .7s both}.completion-time{font-size:13px;color:#555;animation:completionFade .4s ease 1s both}.completion-share{margin-top:14px;font-size:14px;color:#aaa;background:transparent;border:1px solid #333;border-radius:12px;padding:12px 24px;animation:completionFade .4s ease 1.2s both}.completion-share:active{background:hsla(0,0%,100%,.04)}.completion-newroute{margin-top:4px;font-weight:500;padding:10px 16px;animation:completionFade .4s ease 1.35s both}.completion-back,.completion-newroute{font-size:13px;color:#555;background:transparent}.completion-back{border:none;padding:6px 16px;animation:completionFade .4s ease 1.45s both}@keyframes completionFade{0%{opacity:0}to{opacity:1}}@keyframes completionSpring{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.spinner{width:64px;height:64px;border-radius:50%;border:3px solid #1a1a1a;border-top:3px solid var(--accent);animation:spin .9s linear infinite}.progress-wrap{width:100%;max-width:300px}.progress-bar{height:8px;background:var(--disabled-bg);border-radius:var(--r-pill);overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:var(--r-pill);background-image:linear-gradient(90deg,hsla(0,0%,100%,.18) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.18) 0,hsla(0,0%,100%,.18) 75%,transparent 0);background-size:20px 20px;animation:barShimmer .6s linear infinite;transition:width .35s ease}.progress-meta{display:flex;justify-content:space-between;margin-top:12px}.progress-status{font-size:15px;font-weight:500;color:var(--text)}.progress-pct{font-size:15px;font-weight:600;color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@keyframes spin{to{transform:rotate(1turn)}}@keyframes barShimmer{0%{background-position:0 0}to{background-position:20px 0}}.stats-grid{display:flex;gap:10px;margin:8px 0 4px}.stat-card{flex:1 1;min-width:0;background:transparent;border:none;border-radius:var(--r-card);padding:14px 12px;text-align:center}.stat-label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--text2);margin-bottom:8px}.stat-value{font-size:22px;font-weight:700;letter-spacing:-.02em}.stat-value .unit{font-size:13px;font-weight:500;color:#199a45}.stat-value.green{color:var(--accent)}.stat-value.green .unit{color:var(--accent-dim)}.time-saved{color:var(--text3);margin-top:10px}.share-cta,.time-saved{font-size:13px;text-align:center}.share-cta{color:#666;margin:12px 0 4px}.home-prompt{margin:6px 0 14px;font-size:13px;color:#666}.home-line{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.home-sep{color:#444}.home-link{font-size:13px;font-weight:600;color:#22c55e;background:transparent;padding:2px 0}.home-link:active{opacity:.7}.home-current{flex:1 1 auto;min-width:0;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-overlay-scrim{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.72);touch-action:none;opacity:0;transition:opacity var(--home-out-ms) var(--home-out-ease)}.home-overlay-scrim.is-open{opacity:1;transition:opacity var(--home-in-ms) var(--home-in-ease)}.home-overlay{position:fixed;top:0;left:0;right:0;z-index:61;background:var(--bg2);border-bottom:1px solid var(--border-subtle);border-radius:0 0 16px 16px;padding:max(env(safe-area-inset-top,0px),12px) 16px 16px;box-shadow:0 10px 30px rgba(0,0,0,.55);--home-y:-12px;transform:translateY(calc(var(--home-vv, 0px) + var(--home-y)));opacity:0;transition:transform var(--home-out-ms) var(--home-out-ease),opacity var(--home-out-ms) var(--home-out-ease)}.home-overlay.is-open{--home-y:0px;opacity:1;transition:transform var(--home-in-ms) var(--home-in-ease),opacity var(--home-in-ms) var(--home-in-ease)}.home-overlay-inner{width:100%;max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.home-overlay-input{width:100%;padding:13px 14px;border-radius:12px;background:var(--bg);border:1px solid var(--border);color:var(--text);font-size:16px;line-height:1.3;font-family:inherit}.home-overlay-input::placeholder{color:var(--text5)}.home-overlay-input:focus{outline:none;border-color:var(--accent)}@media (prefers-reduced-motion:reduce){.home-overlay,.home-overlay.is-open{--home-y:0px;transition:opacity 90ms linear}.home-overlay-scrim,.home-overlay-scrim.is-open{transition:opacity 90ms linear}}.home-overlay-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;grid-gap:8px;gap:8px;margin-top:14px}.home-overlay-title{font-size:15px;font-weight:600;color:var(--text);text-align:center;white-space:nowrap;cursor:default}.home-overlay-cancel,.home-overlay-save{background:transparent;border:0;font-family:inherit;font-size:15px;padding:6px 2px;min-height:32px}.home-overlay-cancel{justify-self:start;font-weight:400;color:var(--text2)}.home-overlay-save{justify-self:end;font-weight:600;color:var(--accent)}.home-overlay-cancel:active,.home-overlay-save:active{opacity:.6}.home-overlay-save:disabled{color:var(--text5);font-weight:600}.home-overlay-was{font-size:13px;color:var(--text3);text-decoration:line-through;word-break:break-word}.home-clear{align-self:flex-start;font-size:13px;color:var(--danger);background:transparent;padding:8px 4px;margin-left:-4px}.home-clear:active{opacity:.7}.home-error{font-size:12px;color:var(--danger)}.route-map-wrap{margin:0 0 4px;padding-top:16px;background:var(--bg);position:-webkit-sticky;position:sticky;top:env(safe-area-inset-top,0);z-index:24;will-change:transform}.map-watermark{position:absolute;bottom:4px;left:8px;z-index:1000;font-size:11px;font-weight:600;color:hsla(0,0%,100%,.3);pointer-events:none}.map-toggle{display:flex;gap:6px;margin-bottom:8px}.map-toggle-btn{flex:1 1;padding:9px;border-radius:10px;font-size:13px;font-weight:600;background:var(--bg2);border:1px solid var(--border-subtle);color:var(--text2);transition:background .15s,border-color .15s,color .15s}.map-toggle-btn.active{background:var(--bg3);border-color:#444;color:var(--text)}.map-toggle-btn.red.active{background:rgba(239,68,68,.2);border-color:var(--danger);color:#fca5a5}.map-toggle-btn.green.active{background:rgba(34,197,94,.2);border-color:var(--accent);color:#86efac}.route-map{height:320px;width:100%;border-radius:var(--r-card);overflow:hidden;border:1px solid var(--border-subtle);background:var(--bg2);z-index:0}html[data-route-restoring] .container{visibility:hidden}.route-map-loading{height:320px;display:flex;align-items:center;justify-content:center;color:var(--text2);font-size:13px;background:var(--bg2);border:1px solid var(--border-subtle);border-radius:var(--r-card);margin:16px 0 4px}.leaflet-container{background:var(--bg2);font-family:inherit}.leaflet-div-icon{background:transparent;border:none}.leaflet-control-attribution{background:transparent!important;color:hsla(0,0%,100%,.3)!important;font-size:10px!important;margin-bottom:4px!important}.leaflet-control-attribution a{color:hsla(0,0%,100%,.3)!important;text-decoration:none!important}.route-pin{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;border:2px solid hsla(0,0%,100%,.92);box-shadow:0 2px 6px rgba(0,0,0,.6),0 0 0 1px rgba(0,0,0,.35)}.route-pin.pickup{width:26px;height:26px;background:var(--blue);border-radius:7px}.route-pin.home{width:28px;height:28px;background:#3b82f6;border:3px solid #fff;border-radius:50%}.route-pin.remaining{background:var(--accent)}.route-pin.done{background:#555;color:hsla(0,0%,100%,.7);border-color:hsla(0,0%,100%,.35);opacity:.6}.route-pin.next{background:var(--accent);border-color:#fff;animation:pin-pulse 1.4s ease-out infinite}.route-pin.blind{width:14px;height:14px;background:var(--accent);border-width:2px;box-shadow:0 1px 4px rgba(0,0,0,.6),0 0 0 1px rgba(0,0,0,.35);font-size:0;cursor:default}@keyframes pin-pulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.7)}70%{box-shadow:0 0 0 12px rgba(34,197,94,0)}to{box-shadow:0 0 0 0 rgba(34,197,94,0)}}.pickup-banner{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:14px;margin-bottom:12px;background:rgba(59,130,246,.12);border-radius:var(--r-card);color:var(--text);border:none!important;box-shadow:none!important}.pickup-banner:active{background:var(--bg3)}.pickup-pin{flex-shrink:0;width:28px;height:28px;border-radius:8px;background:var(--blue);color:#fff;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center}.pickup-text{display:flex;flex-direction:column;min-width:0}.pickup-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text2)}.pickup-address{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stops-header{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0;padding:18px 0;position:-webkit-sticky;position:sticky;top:calc(env(safe-area-inset-top, 0px) + var(--cockpit-map-h));z-index:23;background:var(--bg);box-shadow:0 4px 12px rgba(0,0,0,.5)}.stops-remaining{font-size:17px;font-weight:600;letter-spacing:-.02em;color:var(--text)}.stops-hint{font-size:12px;font-weight:500;color:var(--text4)}.stop-list{display:flex;flex-direction:column;gap:6px}.stop-locked-rest-wrap{position:relative}.stop-locked-rest{display:flex;flex-direction:column;gap:6px;filter:blur(5px);opacity:.55;pointer-events:none;-moz-user-select:none;user-select:none;-webkit-user-select:none}.stop-skel{height:12px;border-radius:6px;background:var(--bg3)}.stop-skel-street{width:72%}.stop-skel-city{width:45%;margin-top:8px;opacity:.7}.stop-locked-pill{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:8px 16px;border-radius:var(--r-pill);background:hsla(0,0%,4%,.85);border:1px solid var(--border);color:var(--text);font-size:13px;font-weight:600;white-space:nowrap;pointer-events:none}.stop-list-locked+.gate-card{margin-top:12px}.gate-card{background:var(--bg2);padding:20px 18px;text-align:center}.gate-banner,.gate-card{border-radius:var(--r-card)}.gate-banner{margin-bottom:14px;padding:10px 12px;border:1px solid var(--border);background:transparent;font-size:13px;font-weight:500;line-height:1.4;color:var(--text2)}.gate-headline{font-size:19px;font-weight:700;letter-spacing:-.02em;color:var(--text);line-height:1.25}.gate-sub{margin-top:8px;font-size:14px;color:var(--text2);line-height:1.4}.gate-unlock{width:100%;margin-top:16px;padding:17px;border-radius:var(--r-card);font-size:16px;font-weight:600;font-family:inherit;border:none;background:var(--accent);color:var(--accent-ink);cursor:pointer;transition:transform .1s,opacity .2s,background .2s}.gate-unlock:active{transform:scale(.98)}.gate-unlock:disabled{opacity:.6;cursor:default}.gate-unlock:disabled:active{transform:none}.gate-notice{margin-top:12px;font-size:13px;line-height:1.4;color:#f59e0b}.gate-proof{margin-top:14px;font-size:12px;color:var(--text4);letter-spacing:.01em}.gate-proof+.gate-unlock{margin-top:8px}.gate-fineprint{margin-top:10px;font-size:12px;color:var(--text4)}.gate-pack{display:block;width:100%;margin-top:12px;padding:12px 14px;border-radius:var(--r-card);border:1px solid var(--border);background:transparent;color:var(--text2);font-family:inherit;font-size:13px;font-weight:500;line-height:1.35;text-align:center;cursor:pointer;transition:transform .1s,opacity .2s,border-color .2s}.gate-pack:active{transform:scale(.99);border-color:var(--text4)}.gate-pack:disabled{opacity:.5;cursor:default}.gate-pack:disabled:active{transform:none;border-color:var(--border)}.credit-pill{display:inline-block;margin:-4px 0 14px;padding:4px 11px;border-radius:var(--r-pill);border:1px solid var(--border);background:var(--bg2);color:var(--text2);font-size:12px;font-weight:600;letter-spacing:.01em}.credit-toast{position:fixed;top:66px;left:16px;right:16px;margin-inline:auto;width:-moz-fit-content;width:fit-content;z-index:50;max-width:min(calc(100vw - 32px),21rem);padding:10px 22px;border-radius:var(--r-pill);background:var(--accent);color:var(--accent-ink);font-size:13px;font-weight:600;line-height:1.35;text-align:center;box-shadow:0 3px 12px rgba(0,0,0,.35);pointer-events:none;animation:credit-toast-in .18s ease-out}.credit-toast.is-info{background:var(--bg3);color:var(--text);border:1px solid var(--border)}@keyframes credit-toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.credit-toast{animation:none}}.gate-restore-link{display:block;width:100%;margin-top:14px;padding:6px 0 0;background:none;border:none;font-family:inherit;font-size:12px;color:var(--text4);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.gate-restore-scrim{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.72);touch-action:none}.gate-restore-overlay{position:fixed;top:0;left:0;right:0;z-index:61;background:var(--bg2);border-bottom:1px solid var(--border-subtle);border-radius:0 0 16px 16px;padding:max(env(safe-area-inset-top,0px),12px) 16px 16px;box-shadow:0 10px 30px rgba(0,0,0,.55);transform:translateY(var(--gate-restore-vv,0))}.gate-restore-overlay-inner{width:100%;max-width:480px;margin:0 auto;display:flex;flex-direction:column;gap:10px;text-align:left}.gate-restore-input{width:100%;padding:13px 14px;border-radius:12px;background:var(--bg);border:1px solid var(--border);color:var(--text);font-size:16px;line-height:1.3;font-family:inherit}.gate-restore-input::placeholder{color:var(--text5)}.gate-restore-input:focus{outline:none;border-color:var(--accent)}.gate-restore-input:disabled{opacity:.6}.gate-restore-actions{display:flex;gap:10px}.gate-restore-cancel,.gate-restore-submit{flex:1 1;padding:12px;border-radius:12px;font-size:15px;font-weight:600;font-family:inherit;border:none;cursor:pointer;transition:transform .1s,opacity .2s}.gate-restore-cancel{background:var(--bg);color:var(--text2);border:1px solid var(--border)}.gate-restore-submit{background:var(--accent);color:var(--accent-ink)}.gate-restore-cancel:active,.gate-restore-submit:active{transform:scale(.98)}.gate-restore-cancel:disabled,.gate-restore-submit:disabled{opacity:.5;cursor:default;transform:none}.gate-restore-notice{font-size:13px;line-height:1.4;color:var(--text2)}.stop-row{position:relative;overflow:hidden;border-radius:var(--r-card)}.stop-swipe-bg{position:absolute;inset:0;background:var(--accent);color:var(--accent-ink);display:flex;align-items:center;justify-content:flex-end;padding-right:24px;transition:opacity .2s ease}.stop-item{flex-direction:column;align-items:stretch;gap:0;padding:14px;background:var(--bg2);color:var(--text);border:none!important;box-shadow:none!important;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-moz-user-select:none;user-select:none;-webkit-user-select:none;touch-action:pan-y;will-change:transform;transition:opacity .2s,background .18s}.stop-item,.stop-main{position:relative;display:flex}.stop-main{z-index:1;align-items:center;gap:14px}.stop-item.snapping{transition:transform .25s cubic-bezier(.2,.8,.2,1)}.stop-item.pressing,.stop-press-fill{transition:transform .14s ease-out}.stop-press-fill{position:absolute;inset:0;z-index:0;background:var(--accent);opacity:.14;transform:scaleX(0);transform-origin:left center;pointer-events:none}.stop-press-fill.on{transform:scaleX(1);transition:transform .5s linear}.stop-edit-pill{position:absolute;left:6px;top:12px;bottom:12px;width:3px;border-radius:2px;background:var(--accent);pointer-events:none;z-index:1}.stop-edited-tag{color:var(--accent);font-weight:600}.stop-undo{flex:0 0 auto;margin-left:4px;padding:5px 11px;border-radius:var(--r-pill);border:1px solid var(--accent);background:transparent;font-weight:700;font-family:inherit;line-height:1;cursor:pointer}.stop-notice,.stop-undo{color:var(--accent);font-size:12px}.stop-notice{margin-top:8px;padding-left:48px;line-height:1.3}.stop-edit,.stop-notice{position:relative;z-index:1}.stop-edit{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-subtle);display:flex;flex-direction:column;gap:8px;-moz-user-select:text;user-select:text;-webkit-user-select:text}.stop-edit-restore{align-self:flex-start;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:7px 12px;border-radius:var(--r-pill);border:1px solid var(--accent);background:transparent;color:var(--accent);font-size:12px;font-weight:600;font-family:inherit;line-height:1.2;cursor:pointer}.stop-edit-was{font-size:13px;color:var(--text3);text-decoration:line-through;word-break:break-word}.stop-edit-input{width:100%;box-sizing:border-box;padding:10px 12px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:15px;font-family:inherit}.stop-edit-input:focus{outline:none;border-color:var(--accent)}.stop-edit-actions{display:flex;gap:8px}.stop-edit-verify{padding:8px 16px;border-radius:10px;border:none;background:var(--accent);color:var(--accent-ink);font-size:13px;font-weight:700;font-family:inherit;cursor:pointer}.stop-edit-verify:disabled{background:var(--disabled-bg);color:var(--disabled-text);cursor:default}.stop-edit-cancel{padding:8px 16px;background:transparent;color:var(--text2);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer}.stop-edit-cancel,.stop-edit-suggest{border-radius:10px;border:1px solid var(--border)}.stop-edit-suggest{display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.stop-edit-suggest-row{width:100%;min-height:44px;padding:10px 12px;border:none;border-top:1px solid var(--border-subtle);background:transparent;font-family:inherit;text-align:left;display:flex;flex-direction:column;gap:2px;cursor:pointer}.stop-edit-suggest-row:first-child{border-top:none}.stop-edit-suggest-row:disabled{opacity:.6;cursor:wait}.stop-edit-suggest-primary{color:var(--text);font-size:15px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}.stop-edit-suggest-secondary{color:var(--text2);font-size:12px;line-height:1.3;overflow-wrap:anywhere}.stop-edit-hint{font-size:12px;line-height:1.4;color:var(--text2)}.stop-edit-hint-refusal{color:#fbbf24}.stop-edit-confirm{display:flex;flex-direction:column;gap:6px;padding:10px 12px;border:1px solid #f59e0b;border-radius:10px;background:rgba(245,158,11,.1)}.stop-edit-confirm-dist{color:#fbbf24;font-size:13px;font-weight:600;line-height:1.35}.stop-edit-confirm-addr{color:var(--text);font-size:15px;font-weight:600;line-height:1.35;overflow-wrap:anywhere}.stop-edit-confirm-apply{padding:8px 16px;border-radius:10px;border:none;background:#f59e0b;color:#1a1a1a;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer}.stop-edit-error{font-size:13px;line-height:1.4;color:var(--danger)}.verify-stage{display:flex;justify-content:center;padding:10px 0}.verify-check,.verify-ring-arc,.verify-ring-track{fill:none;stroke-width:3;stroke-linecap:round}.verify-ring-track{stroke:hsla(0,0%,100%,.1)}.verify-ring-arc{stroke:var(--text2);stroke-dasharray:30 119.38;transform-origin:22px 22px}.verify-ring.verifying .verify-ring-arc{animation:verify-spin .9s linear infinite}.verify-ring.passed .verify-ring-arc{stroke:var(--accent);stroke-dasharray:119.38;animation:verify-close .3s ease-out forwards}.verify-ring.passed .verify-check{stroke:var(--accent);stroke-linejoin:round;stroke-dasharray:26;stroke-dashoffset:26;animation:verify-draw .35s ease-out .28s forwards}.verify-ring.error .verify-ring-arc,.verify-ring.failing .verify-ring-arc{stroke:var(--danger);stroke-dasharray:119.38;animation:none}@keyframes verify-spin{to{transform:rotate(1turn)}}@keyframes verify-close{0%{stroke-dashoffset:119.38}to{stroke-dashoffset:0}}@keyframes verify-draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion:reduce){.verify-ring.verifying .verify-ring-arc{animation-duration:2.4s}.verify-ring.passed .verify-check,.verify-ring.passed .verify-ring-arc{animation-duration:.01s;animation-delay:0s}.stop-press-fill,.stop-press-fill.on{transition:none}}.stop-item.next,.stop-item:active{background:var(--bg3)}.stop-item.next{box-shadow:inset 3px 0 0 var(--accent)}.stop-item.completed{opacity:.38;background:var(--bg2);box-shadow:none}.stop-item.completed .stop-num{background:var(--chip-done-bg);color:var(--accent)}.stop-item.completed .stop-street{text-decoration:line-through}.stop-num{width:34px;height:34px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:14px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .18s,color .18s}.stop-address{flex:1 1;min-width:0}.stop-street{font-size:15px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stop-city{font-size:13px;color:var(--text3);margin-top:2px}.stop-nav{flex:none;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--text5)}.landing-cta{display:block;width:100%;text-align:center;background:#22c55e;color:#0a0a0a;font-size:17px;font-weight:600;padding:18px;border-radius:14px;transition:transform .1s,background .15s}.landing-cta:hover{background:#2dd368}.landing-cta:active{transform:scale(.985)}.auth-entry{position:relative;display:flex;align-items:center;flex-shrink:0}.auth-entry-btn{padding:7px 13px;border-radius:var(--r-pill);background:var(--bg2);border:1px solid var(--border);color:var(--text);font-size:13px;font-weight:600;line-height:1;white-space:nowrap;transition:transform .1s,background .2s}.auth-entry-btn:active{transform:scale(.97);background:var(--bg3)}.auth-avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-size:14px;font-weight:700;line-height:1;display:flex;align-items:center;justify-content:center;transition:transform .1s}.auth-avatar:active{transform:scale(.95)}.auth-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:55;min-width:200px;max-width:min(320px,calc(100vw - 32px));background:var(--bg2);border:1px solid var(--border);border-radius:var(--r-card);box-shadow:0 10px 30px rgba(0,0,0,.55);padding:6px;animation:modalFade .12s ease}.auth-menu-email{padding:10px 12px 8px;font-size:13px;color:var(--text2);overflow-wrap:anywhere;border-bottom:1px solid var(--border-subtle)}.auth-menu-signout{display:block;width:100%;text-align:left;padding:12px;border-radius:10px;font-size:15px;font-weight:600;color:var(--text)}.auth-menu-signout:active{background:var(--bg3)}.delete-account-page{max-width:480px;margin:0 auto;padding:48px 20px;text-align:center}.delete-account-title{font-size:22px;font-weight:700;margin-bottom:10px}.delete-account-line{font-size:15px;color:var(--text2);margin-bottom:20px}.delete-account-entry{display:flex;justify-content:center}.auth-menu-delete{display:block;width:100%;text-align:left;padding:12px;border-radius:10px;font-size:15px;font-weight:600;color:var(--danger)}.auth-menu-delete:active{background:var(--bg3)}.auth-confirm-scrim{position:fixed;inset:0;z-index:110;background:rgba(0,0,0,.6);animation:modalFade .15s ease}.auth-confirm-sheet{position:fixed;left:0;right:0;bottom:0;z-index:111;margin:0 auto;max-width:480px;background:var(--bg2);border-radius:20px 20px 0 0;padding:22px 20px calc(20px + env(safe-area-inset-bottom, 0px));box-shadow:0 -4px 16px rgba(0,0,0,.4);animation:modalPop .18s cubic-bezier(.2,.8,.2,1)}.auth-confirm-title{font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--text)}.auth-confirm-sub{margin-top:6px;font-size:14px;line-height:1.45;color:var(--text2)}.auth-confirm-actions{display:flex;gap:10px;margin-top:20px}.auth-confirm-cancel,.auth-confirm-primary,.auth-delete-primary{flex:1 1;padding:13px;border-radius:12px;font-size:15px;font-weight:600;transition:transform .1s,opacity .2s}.auth-delete-primary{background:var(--danger);color:var(--danger-ink)}.auth-confirm-primary{background:var(--accent);color:var(--accent-ink)}.auth-confirm-cancel{background:var(--bg3);color:var(--text2)}.auth-confirm-cancel:active,.auth-confirm-primary:active,.auth-delete-primary:active{transform:scale(.98)}.auth-confirm-cancel:disabled,.auth-confirm-primary:disabled,.auth-delete-primary:disabled{opacity:.5;cursor:default;transform:none}.auth-banner{position:fixed;top:66px;left:16px;right:16px;margin-inline:auto;width:-moz-fit-content;width:fit-content;z-index:50;max-width:min(calc(100vw - 32px),21rem);padding:10px 22px;border-radius:16px;background:var(--accent);color:var(--accent-ink);text-align:center;box-shadow:0 3px 12px rgba(0,0,0,.35);pointer-events:none;animation:credit-toast-in .18s ease-out}.auth-banner-title{font-size:13px;font-weight:600;line-height:1.35}.auth-banner-email{font-size:12px;font-weight:500;line-height:1.35;opacity:.85;overflow-wrap:anywhere}.auth-scrim{z-index:100}.auth-panel,.auth-scrim{position:fixed;inset:0;background:var(--bg)}.auth-panel{z-index:101;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:max(env(safe-area-inset-top,0px),12px) 16px calc(28px + env(safe-area-inset-bottom, 0px));animation:modalFade .15s ease}.auth-panel-inner{position:relative;width:100%;max-width:480px;margin:0 auto;padding-top:44px}.auth-panel-close{position:absolute;top:0;right:-6px;width:40px;height:40px;border-radius:50%;font-size:26px;line-height:1;color:var(--text3);display:flex;align-items:center;justify-content:center}.auth-panel-close:active{background:var(--bg3);color:var(--text)}.auth-title{font-size:26px;font-weight:700;letter-spacing:-.03em;color:var(--text);margin-bottom:6px}.auth-sub{font-size:15px;line-height:1.45;color:var(--text2);margin-bottom:20px;overflow-wrap:anywhere}.auth-input{width:100%;padding:14px;border-radius:12px;background:var(--bg2);border:1px solid var(--border);color:var(--text);font-size:16px;line-height:1.3;font-family:inherit}.auth-input::placeholder{color:var(--text5)}.auth-input:focus{outline:none;border-color:var(--accent)}.auth-input:disabled{opacity:.6}.auth-submit{margin-top:14px}.auth-helper{font-size:13px;line-height:1.4;color:var(--text3)}.auth-error,.auth-helper{margin-top:12px;text-align:center}.auth-error-title{font-size:14px;font-weight:600;color:var(--danger);line-height:1.4}.auth-error.is-quiet .auth-error-title{color:var(--text)}.auth-error-sub{margin-top:2px;font-size:13px;line-height:1.4;color:var(--text2)}.auth-code-row{display:flex;gap:8px;justify-content:space-between}.auth-code-box{flex:1 1;min-width:0;height:56px;border-radius:12px;background:var(--bg2);border:1px solid var(--border);color:var(--text);font-size:24px;font-weight:600;font-family:inherit;text-align:center;caret-color:var(--accent)}.auth-code-box:focus{outline:none;border-color:var(--accent)}.auth-code-box:disabled{opacity:.6}.auth-code-row.is-error .auth-code-box{border-color:var(--danger)}.auth-link{display:block;width:100%;margin-top:16px;padding:8px 0;font-size:14px;color:var(--text2);text-decoration:underline;text-underline-offset:3px;text-align:center}.auth-link:disabled{color:var(--text4);text-decoration:none;cursor:default}@media (prefers-reduced-motion:reduce){.auth-banner,.auth-confirm-scrim,.auth-confirm-sheet,.auth-menu,.auth-panel{animation:none}}.auth-menu-item{display:block;width:100%;text-align:left;padding:12px;border-radius:10px;font-size:15px;font-weight:600;color:var(--text)}.auth-menu-item:active{background:var(--bg3)}.auth-pro{margin-top:16px}.auth-pro-brand{font-size:20px;font-weight:700;letter-spacing:-.02em;color:var(--text)}.auth-pro-status{margin-top:4px;font-size:13px;font-weight:600;letter-spacing:.01em;color:var(--text2)}.auth-pro-status.is-active{color:var(--accent)}.auth-pro-status.is-issue{color:var(--danger)}.auth-pro-benefit{margin-top:8px;font-size:15px;line-height:1.5;color:var(--text2)}.auth-pro-price{margin-top:16px;font-size:17px;font-weight:700;color:var(--text)}.auth-pro-renews{margin-top:4px;font-size:14px;color:var(--text2)}.auth-pro-cta{width:100%;margin-top:18px;padding:15px;border-radius:var(--r-card);font-size:16px;font-weight:600;font-family:inherit;border:none;background:var(--accent);color:var(--accent-ink);cursor:pointer;transition:transform .1s,opacity .2s}.auth-pro-cta:active{transform:scale(.98)}.auth-pro-cta:disabled{opacity:.6;cursor:default}.auth-pro-cta:disabled:active{transform:none}.auth-pro-note{margin-top:12px;font-size:13px;line-height:1.5;color:var(--text2)}.auth-pro-delete{display:block;width:100%;margin-top:56px;padding:14px;border-radius:var(--r-card);text-align:center;font-size:16px;font-weight:600;color:var(--danger)}.auth-pro-delete:active{background:var(--bg3)}.auth-back{position:absolute;top:0;left:0;display:inline-flex;align-items:center;height:40px;padding:0 16px 0 12px;border:1px solid var(--border);border-radius:var(--r-pill);font-size:15px;font-weight:400;color:var(--text2)}[data-auth=routes-screen] .auth-panel-inner{padding-top:72px}[data-auth=route-screen] .auth-panel-inner{padding-top:96px}[data-auth=route-screen] .auth-title,[data-auth=routes-screen] .auth-title{font-size:34px;line-height:1.15;margin-bottom:4px}.auth-back:active{color:var(--text)}.auth-empty{margin-top:28px;text-align:center}.auth-empty-line{font-size:15px;line-height:1.5;color:var(--text2)}.auth-empty-line+.auth-empty-line{margin-top:6px}.auth-month{margin-top:28px}.auth-month-title{font-size:13px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--text3)}.auth-month-summary{margin-top:8px;font-size:17px;line-height:1.3;color:var(--text2)}.auth-month-earned{font-weight:700;color:var(--text)}.auth-month-saved{font-weight:400;color:var(--text2)}.auth-month-sub{margin-top:2px;font-size:15px;color:var(--text2)}.auth-routes-list{margin-top:18px;border-top:1px solid var(--border-subtle)}.auth-route-row{display:block;width:100%;text-align:left;padding:18px 0;border:0;border-bottom:1px solid var(--border-subtle);border-radius:0;background:transparent;color:var(--text)}.auth-route-row:last-child{border-bottom:0}.auth-route-row:active{opacity:.7}.auth-route-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.auth-route-area,.auth-route-date{min-width:0;font-size:17px;font-weight:700;color:var(--text)}.auth-route-pay{flex-shrink:0;font-size:17px;font-weight:700;color:var(--text)}.auth-route-add{flex-shrink:0;text-decoration:underline;text-underline-offset:3px}.auth-route-add,.auth-route-meta{font-size:15px;color:var(--text2)}.auth-route-meta{margin-top:5px}.auth-route-saved{margin-top:5px;font-size:15px;font-weight:600;color:var(--accent)}.auth-hero{margin:26px 0 20px}.auth-hero-value{font-size:50px;font-weight:700;letter-spacing:-.02em;word-spacing:.15em;line-height:1;color:var(--accent)}.auth-hero-label{margin-top:6px;font-size:17px;color:var(--text2)}.auth-detail-rows{margin:0 0 30px;border-radius:var(--r-card);background:var(--bg2);border:1px solid var(--border)}.auth-detail-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:20px 16px}.auth-detail-row+.auth-detail-row{border-top:1px solid var(--border-subtle)}.auth-stat-label{font-size:16px;color:var(--text2)}.auth-stat-value{font-size:17px;font-weight:700;color:var(--text)}.auth-stat-value.is-struck{font-weight:500;color:var(--text3);text-decoration:line-through}.auth-stat-value.is-green{color:var(--accent)}.auth-stat-value.is-prompt{padding:0;margin:0;font-weight:400;color:var(--text2);text-decoration:underline;text-underline-offset:3px}.auth-link-edit{margin-top:4px}.auth-pay-label{display:block;font-size:15px;font-weight:600;color:var(--text);margin-bottom:8px}.auth-pay-field{position:relative}.auth-pay-prefix{position:absolute;left:14px;top:50%;transform:translateY(-50%);font-size:16px;color:var(--text2);pointer-events:none}.auth-pay-input{padding-left:28px}.auth-pay-note{margin-top:14px;font-size:13px;line-height:1.4;color:var(--text3);text-align:center}.auth-detail-sub{margin:0;font-size:16px;color:var(--text2)}.auth-link-danger{margin-top:28px;text-align:center;color:var(--danger)}.auth-link-danger:active{opacity:.7}@media (max-width:480px){.footer-sep-wide{display:none}}