:root{--bg:#f1f4f9;--surface-1:#fff;--surface-2:#e8ecf3;--surface-3:#dee3ec;--surface-muted:var(--surface-2);--text-h:#1f1f1f;--text:#444746;--muted:#5f6368;--border:#c4c7c5;--outline:#747775;--card-outline:transparent;--accent:#0b57d0;--on-accent:#fff;--accent-container:#d3e3fd;--on-accent-container:#041e49;--secondary-container:#c2e7ff;--on-secondary-container:#001d35;--accent-bg:var(--accent-container);--accent-border:#7cacf8;--inverse-surface:#303030;--inverse-on-surface:#f2f2f2;--inverse-primary:#a8c7fa;--danger:#b3261e;--on-danger:#fff;--danger-bg:#f9dedc;--on-danger-bg:#410e0b;--danger-border:#ec928e;--warn-text:#7a5900;--warn-bg:#fef7e0;--warn-border:#f2c94c;--success:#146c2e;--success-bg:#c4eed0;--cat-sightseeing:#0b8043;--cat-meal:#b45309;--cat-lodging:#8e24aa;--cat-hub:#00838f;--cat-other:#5f6368;--on-cat:#fff;--cat-sightseeing-text:#0e713e;--cat-meal-text:#9e4b0c;--cat-lodging-text:var(--cat-lodging);--cat-hub-text:#066f79;--cat-other-text:var(--cat-other);--chart-1:#0b57d0;--chart-2:#0b8043;--chart-3:#f9ab00;--chart-4:#d93025;--chart-5:#8e24aa;--chart-1-text:#0c54c7;--chart-2-text:#0f6d3c;--chart-3-text:#815e11;--chart-4-text:#ab2c24;--chart-5-text:var(--chart-5);--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-6:24px;--sp-8:32px;--shape-xs:4px;--shape-s:8px;--shape-m:12px;--shape-l:16px;--shape-xl:28px;--shape-full:999px;--radius-sm:var(--shape-s);--radius-md:var(--shape-m);--radius-lg:var(--shape-l);--elev-1:0 1px 2px #0000001f, 0 1px 3px 1px #0000000f;--elev-2:0 1px 2px #00000024, 0 2px 6px 2px #00000014;--elev-3:0 1px 3px #00000029, 0 4px 8px 3px #0000001a;--scrim:#00000073;--fs-headline-m:28px;--fs-headline-s:24px;--fs-headline:22px;--fs-title-xl:20px;--fs-title-l:18px;--fs-title-m:15.5px;--fs-title-s:13.5px;--fs-body-l:15px;--fs-body-m:13.5px;--fs-body-s:12.5px;--fs-label-l:13px;--fs-label-m:12px;--fs-label-s:11px;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;font:16px/145% var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0e0e0e;--surface-1:#1e1f20;--surface-2:#2a2c2e;--surface-3:#35373a;--text-h:#e3e3e3;--text:#c4c7c5;--muted:#9aa0a0;--border:#444746;--outline:#8e918f;--card-outline:#303234;--accent:#a8c7fa;--on-accent:#062e6f;--accent-container:#0842a0;--on-accent-container:#d3e3fd;--secondary-container:#004a77;--on-secondary-container:#c2e7ff;--accent-border:#4c7fd0;--inverse-surface:#e3e3e3;--inverse-on-surface:#303030;--inverse-primary:#0b57d0;--danger:#f2b8b5;--on-danger:#601410;--danger-bg:#8c1d18;--on-danger-bg:#f9dedc;--danger-border:#b3564f;--warn-text:#fdd663;--warn-bg:#3a2e05;--warn-border:#6b5400;--success:#81c995;--success-bg:#0a3818;--cat-sightseeing:#5bb974;--cat-meal:#fa903e;--cat-lodging:#c58af9;--cat-hub:#4ecde6;--cat-other:#9aa0a6;--on-cat:#202124;--cat-sightseeing-text:var(--cat-sightseeing);--cat-meal-text:var(--cat-meal);--cat-lodging-text:var(--cat-lodging);--cat-hub-text:var(--cat-hub);--cat-other-text:var(--cat-other);--chart-1:#8ab4f8;--chart-2:#5bb974;--chart-3:#fdd663;--chart-4:#f28b82;--chart-5:#c58af9;--chart-1-text:var(--chart-1);--chart-2-text:var(--chart-2);--chart-3-text:var(--chart-3);--chart-4-text:var(--chart-4);--chart-5-text:#c893f7;--elev-1:0 1px 2px #0006;--elev-2:0 1px 3px #00000080;--elev-3:0 2px 8px #0000008c}*{-webkit-tap-highlight-color:transparent}.mock-icon{flex-shrink:0;display:block}html,body{overscroll-behavior:none;background:var(--bg);height:100dvh;margin:0;padding:0}input,textarea,select{scroll-margin-block:16px 24px}#root{height:100%}h1,h2{font-family:var(--sans);color:var(--text-h);font-weight:500}button,a.app-shell-tab{font-family:var(--sans)}button,.app-shell-tabbar,.update-toast{-webkit-user-select:none;user-select:none}button{-webkit-tap-highlight-color:transparent;transition:transform .1s}button:active{transform:scale(.96)}.update-toast{left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));box-sizing:border-box;background:var(--inverse-surface,#303030);max-width:min(600px,100vw - 32px);color:var(--inverse-on-surface,#f2f2f2);border-radius:var(--shape-xs,4px);box-shadow:var(--elev-3,0 4px 8px 3px #00000026);z-index:1000;font-size:var(--fs-body-m,13.5px);align-items:center;gap:8px;padding:12px 8px 12px 16px;display:flex;position:fixed;transform:translate(-50%)}.update-toast button{color:var(--inverse-primary,#a8c7fa);border-radius:var(--shape-full,999px);font:inherit;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;background:0 0;border:none;padding:8px 12px;font-weight:500;transition:transform .1s,background-color .12s}.update-toast button:active{background:color-mix(in srgb, var(--inverse-primary,#a8c7fa) 14%, transparent);transform:scale(.94)}.install-guide{background:var(--secondary-container);color:var(--on-secondary-container);border-radius:var(--shape-m,12px);font-size:var(--fs-body-m,13.5px);text-align:left;border:none;margin:0 0 16px;padding:14px 16px;line-height:1.6}.install-guide p{margin:4px 0}.backup-token{margin:0 0 12px}.backup-token .mock-token-box{margin:6px 0 10px}.backup-token .mock-btn-row button,.restore-row button{min-height:44px}.backup-remind-badge{border-radius:var(--shape-m);background:var(--accent-container);color:var(--on-accent-container);font-size:var(--fs-body-s);align-items:center;gap:6px;margin:0 0 12px;padding:8px 12px;line-height:1.55;display:flex}.restore-row{border-bottom:1px solid var(--outline);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 0;display:flex}.restore-row-main{flex-direction:column;gap:2px;min-width:0;display:flex}.restore-row-title{font-size:var(--fs-body-m);color:var(--text-h);word-break:break-word}.route-section>h1{font-size:var(--fs-headline);letter-spacing:-.01em;margin:4px 0 18px;font-weight:500}.home-next-trip{box-sizing:border-box;color:var(--on-accent-container);border-radius:var(--shape-xl);background:var(--accent-container);-webkit-tap-highlight-color:transparent;border:none;margin:0 0 16px;padding:20px;text-decoration:none;transition:transform .1s,filter .1s;display:block}.home-next-trip:active{filter:brightness(.97);transform:scale(.985)}.home-next-trip-label{font-size:var(--fs-label-l);color:var(--on-accent-container);opacity:.85;align-items:center;margin:0 0 8px;font-weight:500;display:flex}.home-next-trip h2{font-size:var(--fs-headline);color:var(--on-accent-container);margin:0 0 6px;font-weight:500;line-height:1.25}.home-next-trip-dates{font-size:var(--fs-body-m);color:var(--on-accent-container);opacity:.85;font-variant-numeric:tabular-nums;margin:0}.home-empty-card{box-sizing:border-box;border-radius:var(--shape-l);background:var(--surface-2);color:var(--text);font-size:var(--fs-body-m);border:none;margin:0 0 16px;padding:20px}.home-quick-actions{gap:8px;margin:0 0 24px;display:flex}.home-action-btn{box-sizing:border-box;text-align:center;border-radius:var(--shape-full);background:var(--secondary-container);min-width:0;min-height:40px;color:var(--on-secondary-container);font:inherit;font-size:var(--fs-label-l);cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;flex:1;justify-content:center;align-items:center;gap:8px;padding:10px 14px;font-weight:500;text-decoration:none;transition:transform .1s,filter .1s;display:flex}.home-action-btn:active{filter:brightness(.95);transform:scale(.97)}.home-action-btn.primary{background:var(--accent);color:var(--on-accent)}.home-section-title{font-size:var(--fs-title-s);letter-spacing:.01em;color:var(--muted);margin:24px 0 10px;font-weight:500}.home-status-compact{border-radius:var(--shape-l);flex-direction:column;gap:2px;margin:0 0 8px;display:flex;overflow:hidden}.home-status-compact .status-card{background:var(--surface-1);border-radius:0;margin:0;padding:12px 14px}.home-status-compact .status-card h2{font-size:var(--fs-label-m);color:var(--muted);margin:0 0 4px;font-weight:500}.home-status-compact .status-card p{font-size:var(--fs-body-m);color:var(--text-h);margin:0}.home-demo-link{font-size:var(--fs-body-s);margin:24px 0 0}.home-demo-link a{color:var(--muted)}.app-shell{overscroll-behavior:none;height:100dvh;min-height:100dvh;padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px);box-sizing:border-box;background:var(--bg);flex-direction:column;display:flex}.app-shell-main{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;box-sizing:border-box;flex:1;padding:16px;overflow-y:auto}.route-section{text-align:left;max-width:640px;margin:0 auto;animation:.18s ease-out route-slide-in}@keyframes route-slide-in{0%{opacity:0;transform:translate(12px)}to{opacity:1;transform:translate(0)}}.app-shell-tabbar{padding:10px 8px calc(10px + env(safe-area-inset-bottom,0px));box-sizing:border-box;background:var(--surface-2)}.app-shell-tabbar-inner{gap:4px;max-width:640px;margin:0 auto;display:flex}.app-shell-tab{text-align:center;min-width:0;color:var(--text);font-size:var(--fs-label-m);white-space:nowrap;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;flex-direction:column;flex:1 1 0;justify-content:center;align-items:center;gap:4px;padding:0;font-weight:500;line-height:1.2;text-decoration:none;transition:color .12s;display:flex}.app-shell-tab-indicator{border-radius:var(--shape-full);background:0 0;justify-content:center;align-items:center;width:56px;height:30px;transition:background-color .14s,color .14s;display:flex}.app-shell-tab svg{flex-shrink:0}.app-shell-tab.is-active{color:var(--text-h)}.app-shell-tab.is-active .app-shell-tab-indicator{background:var(--secondary-container);color:var(--on-secondary-container)}.app-shell-tab:active .app-shell-tab-indicator{background:color-mix(in srgb, var(--text-h) 12%, transparent)}.app-shell-tab.is-active:active .app-shell-tab-indicator{background:color-mix(in srgb, var(--on-secondary-container) 12%, var(--secondary-container))}.status-card{border-radius:var(--shape-m);background:var(--surface-1);border:none;margin:0 0 16px;padding:12px 14px}.status-card h2{font-size:var(--fs-title-s);margin:0 0 6px;font-weight:500}.status-card p{font-size:var(--fs-body-m);margin:0}
