:root{color:#07183a;font-synthesis:none;text-rendering:optimizelegibility;--bg:#f3f8fd;--surface:#fff;--text:#07183a;--muted:#5f6c80;--border:#cbd5e2;--border-soft:#dde5ee;--blue:#0866ed;--blue-dark:#0354c8;--blue-pale:#e9f2ff;--amber:#e9a400;--amber-pale:#fff8e6;--danger:#c33434;--radius-control:16px;--radius-panel:18px;--shadow-focus:0 0 0 4px #0866ed24;background:#e9f0f7;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}*{box-sizing:border-box}html{background:#e9f0f7;min-width:0}body{min-width:0;min-height:100vh;margin:0}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}button:disabled{cursor:wait;opacity:.68}button:focus-visible,input:focus-visible{outline-offset:3px;outline:3px solid #0a63df}.app-stage{background:linear-gradient(90deg,#0000 calc(50% - 280px),#fff6 calc(50% - 280px) calc(50% + 280px),#0000 calc(50% + 280px)),#e9f0f7;min-height:100vh}.app-shell{background:var(--bg);width:min(100%,520px);min-height:100vh;margin:0 auto;overflow:hidden;box-shadow:0 0 42px #2a405c1a}.screen{min-height:100vh;padding:max(22px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));position:relative}.planner-screen{isolation:isolate;overflow:hidden}.route-motif{z-index:-1;color:#91bef8;opacity:.46;width:220px;height:620px;position:absolute;top:102px;right:-47px}.route-motif path{fill:none;stroke:currentColor;stroke-width:7px;stroke-linecap:round}.route-motif circle,.route-motif rect{fill:var(--bg);stroke:var(--blue);stroke-width:5px}.app-header,.result-header{justify-content:space-between;align-items:center;min-height:50px;display:flex}.brand-title{letter-spacing:.01em;align-items:center;gap:10px;font-size:21px;font-weight:750;display:flex}.brand-mark{width:42px;height:42px;color:var(--blue);flex:none}.header-action,.back-action{min-height:48px;color:var(--text);cursor:pointer;background:0 0;border:0;align-items:center;gap:7px;padding:0 2px;font-size:16px;font-weight:650;display:inline-flex}.header-status{min-height:34px;color:var(--blue-dark);background:var(--blue-pale);white-space:nowrap;border:1px solid #b9d4fa;border-radius:999px;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:750;display:inline-flex}.header-status svg{width:16px;height:16px}.header-action svg,.back-action svg{stroke-width:1.9px;width:24px;height:24px}.intro-copy{margin:62px 0 43px}.intro-copy h1{letter-spacing:-.045em;margin:0;font-size:clamp(38px,10.2vw,52px);line-height:1.08}.intro-copy p{max-width:370px;color:var(--muted);margin:17px 0 0;font-size:17px;line-height:1.65}.planner-form{z-index:1;position:relative}.origin-section{border:0;margin:0 0 28px;padding:0}.origin-section>legend{margin:0 0 10px 3px;padding:0;font-size:17px;font-weight:750}.origin-mode{border:1px solid var(--border);background:#e8eff7;border-radius:15px;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:10px;padding:4px;display:grid}.origin-mode button{min-height:46px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:11px;justify-content:center;align-items:center;gap:7px;font-size:14px;font-weight:740;display:inline-flex}.origin-mode button.is-active{color:var(--blue-dark);background:#fff;box-shadow:0 2px 8px #1e40691f}.origin-mode svg{width:19px;height:19px}.gps-card{border:1px solid var(--border);border-radius:var(--radius-control);background:#fffffff0;overflow:hidden}.gps-card>button:first-child{width:100%;min-height:76px;color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:auto 1fr;align-items:center;gap:13px;padding:13px 17px;display:grid}.gps-card>button:first-child>svg{width:27px;height:27px;color:var(--blue)}.gps-card strong,.gps-card small{display:block}.gps-card strong{font-size:17px;line-height:1.35}.gps-card small{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.45}.gps-card--ready{box-shadow:var(--shadow-focus);border-color:#76aef4}.gps-card--error{border-color:#e3abab}.inline-switch{border:0;border-top:1px solid var(--border-soft);width:100%;min-height:42px;color:var(--blue-dark);cursor:pointer;background:#f8fbff;font-size:14px;font-weight:720}.place-search{position:relative}.field-group{margin-bottom:28px}.field-label,.control-label{color:var(--text);margin:0 0 9px 3px;font-size:17px;font-weight:750;display:block}.field-label--accent{color:var(--blue)}.location-button,.text-field,.control-surface{border:1px solid var(--border);border-radius:var(--radius-control);background:#fffffff0;width:100%;min-height:64px}.location-button{color:var(--text);text-align:left;cursor:pointer;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:0 18px;font-size:18px;font-weight:620;display:grid}.location-button:disabled{cursor:wait;opacity:.7}.location-button svg:first-child,.text-field>svg,.control-surface>svg{color:var(--blue)}.location-button svg,.text-field svg,.control-surface svg{stroke-width:1.9px;width:24px;height:24px}.text-field{border-color:var(--blue);box-shadow:var(--shadow-focus);align-items:center;gap:12px;padding:0 15px 0 18px;display:flex}.text-field:focus-within{border-width:2px;padding-left:17px;box-shadow:0 0 0 4px #0866ed2b}.text-field--error{border-color:var(--danger);box-shadow:0 0 0 4px #c334341a}.text-field--selected{background:#f8fbff;border-color:#4f9ae9}.text-field--selected>svg:first-child{color:#17865d}.text-field input{min-width:0;color:var(--text);background:0 0;border:0;outline:0;flex:1;font-size:18px;font-weight:580}.text-field input::placeholder{color:#8a94a4;font-weight:500}.clear-input{color:#717d8f;cursor:pointer;background:0 0;border:0;border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.field-end-icon{color:#8a94a4!important}.place-suggestions{z-index:12;background:#fff;border:1px solid #bfd0e4;border-radius:15px;position:absolute;top:calc(100% + 7px);left:0;right:0;overflow:hidden;box-shadow:0 18px 42px #16305238}.place-suggestions>button{border:0;border-bottom:1px solid var(--border-soft);width:100%;min-height:58px;color:var(--text);text-align:left;cursor:pointer;background:#fff;grid-template-columns:auto 1fr;align-items:center;gap:11px;padding:10px 14px;display:grid}.place-suggestions>button.is-active,.place-suggestions>button:hover{background:#edf5ff}.place-suggestions svg{width:20px;height:20px;color:var(--blue)}.place-suggestions strong,.place-suggestions small{display:block}.place-suggestions strong{font-size:14px;line-height:1.35}.place-suggestions small{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:12px;line-height:1.35;overflow:hidden}.google-attribution{color:#5f6368;text-align:right;background:#fff;min-height:31px;padding:8px 13px;font-family:Arial,sans-serif;font-size:12px;font-weight:600}.field-help{color:var(--muted);margin:7px 3px 0;font-size:12px;line-height:1.45}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.demo-fill{min-height:42px;color:var(--blue-dark);cursor:pointer;background:0 0;border:0;margin:7px 1px 0;padding:0;font-size:14px;font-weight:650}.form-error{color:var(--danger);margin:3px 2px 0;font-size:14px;line-height:1.45}.form-error--panel{background:#fff4f4;border:1px solid #e3b0b0;border-radius:12px;margin:-10px 0 14px;padding:11px 13px}.vehicle-section{border:0;margin:35px 0 30px;padding:0}.vehicle-section legend{margin-bottom:17px;padding:0;font-size:19px;font-weight:780}.vehicle-preset{width:100%;color:var(--blue-dark);font:inherit;cursor:pointer;background:#e7f3ffb8;border:1px solid #2370cd3d;border-radius:13px;margin:0 0 12px;padding:10px 14px;font-weight:720}.vehicle-preset:hover{background:#daecffeb}.vehicle-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.control-label{color:var(--muted);font-size:14px;font-weight:650}.control-surface{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:0 14px;display:grid}.control-surface input{width:100%;min-width:0;color:var(--text);background:0 0;border:0;outline:0;font-size:18px;font-weight:680}.control-surface span{color:var(--muted);font-size:13px;font-weight:650}.vehicle-hint{color:var(--muted);margin:10px 2px 0;font-size:13px;line-height:1.5}.policy-strip{color:#23466f;background:#edf5ff;border:1px solid #c9dcf4;border-radius:13px;grid-template-columns:auto 1fr;align-items:start;gap:9px;margin-top:12px;padding:11px 12px;font-size:12px;font-weight:650;line-height:1.5;display:grid}.policy-strip svg{width:19px;height:19px;color:var(--blue)}.primary-button,.secondary-button{border-radius:var(--radius-control);letter-spacing:.01em;cursor:pointer;justify-content:center;align-items:center;gap:10px;width:100%;min-height:62px;font-size:18px;font-weight:760;display:inline-flex}.primary-button{border:1px solid var(--blue);color:#fff;background:var(--blue);box-shadow:0 8px 20px #0866ed2e}.primary-button:hover{background:var(--blue-dark)}.button-spinner{border:3px solid #ffffff73;border-top-color:#fff;border-radius:50%;width:22px;height:22px;animation:.9s linear infinite spin}.primary-button:active{transform:translateY(1px)}.primary-button svg,.secondary-button svg{stroke-width:2px;width:25px;height:25px}.secondary-button{border:1.5px solid var(--blue);color:var(--blue-dark);background:var(--surface)}.safety-notice{color:var(--muted);grid-template-columns:auto 1fr;align-items:start;gap:12px;margin-top:23px;padding:14px 4px 4px;display:grid}.safety-notice--strong{background:var(--amber-pale);border:1px solid #eadcac;border-radius:14px;padding:15px}.safety-notice svg{width:24px;height:24px;color:var(--amber);stroke-width:2px}.safety-notice p{margin:0;font-size:13px;line-height:1.65}.sr-status{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.result-screen{padding-left:14px;padding-right:14px}.result-header{margin:-4px 8px 16px}.result-header h1{letter-spacing:-.02em;white-space:nowrap;margin:0;font-size:23px}.back-action{width:116px;color:var(--blue-dark);justify-content:flex-start}.header-spacer{width:116px}.map-frame{border:1px solid var(--border-soft);border-radius:var(--radius-panel);background:#edf4fb;overflow:hidden}.map-frame svg{width:100%;height:auto;display:block}.google-route-map-shell{min-height:320px;position:relative}.google-route-map{width:100%;height:320px}.map-loading{color:var(--muted);background:linear-gradient(135deg,#edf5fc,#dceaf6);place-items:center;font-size:13px;font-weight:700;display:grid;position:absolute;inset:0}.map-live-label{z-index:2;color:#24405f;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffffe6;border:1px solid #fffc;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:800;position:absolute;top:12px;left:12px;box-shadow:0 4px 16px #15395b24}.preview-grid path{fill:none;stroke:#829ebe21;stroke-width:1px}.route-preview-line{fill:none;stroke:var(--blue);stroke-width:7px;stroke-linecap:round;stroke-linejoin:round}.route-preview-line--halo{stroke:#fff;stroke-width:13px}.risk-dot{fill:var(--amber);stroke:#fff;stroke-width:3px}.stop-dot{fill:var(--blue);stroke:#fff;stroke-width:3px}.origin-dot,.destination-dot{fill:#fff;stroke:var(--blue);stroke-width:3px}.map-river{fill:none;stroke:#d4e9f7;stroke-width:30px}.map-minor-roads path,.map-major-roads path{fill:none;stroke-linecap:round}.map-minor-roads path{stroke:#fff;stroke-width:5px}.map-major-roads path{stroke:#c8d9ed;stroke-width:9px}.route-line{fill:none;stroke-width:8px;stroke-linecap:round;stroke-linejoin:round}.route-line--main{stroke:var(--blue)}.route-line--warning{stroke:var(--amber)}.map-district,.map-road-label,.map-marker-label,.map-demo-label{fill:#435470;font-family:inherit}.map-district{font-size:14px;font-weight:700}.map-road-label{font-size:10px}.map-marker-label{font-size:11px;font-weight:750}.map-marker-number,.map-alert-mark{fill:#fff;text-anchor:middle;font-family:inherit;font-size:14px;font-weight:800}.map-demo-label{font-size:10px;font-weight:750}.summary-panel,.detail-section{border:1px solid var(--border-soft);border-radius:var(--radius-panel);background:var(--surface);margin-top:12px;overflow:hidden}.route-tabs{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:0 0 10px;display:grid}.route-tabs button{border:1px solid var(--border);min-height:50px;color:var(--muted);cursor:pointer;background:#fff;border-radius:12px;padding:6px 8px;font-size:13px;font-weight:750}.route-tabs button.is-active{border-color:var(--blue);color:var(--blue-dark);background:var(--blue-pale);box-shadow:0 0 0 2px #0866ed1a}.route-tabs span{margin-top:2px;font-size:11px;font-weight:600;display:block}.summary-row{grid-template-columns:auto 1fr auto;align-items:center;gap:14px;min-height:79px;padding:13px 18px;display:grid}.summary-row+.summary-row{border-top:1px solid var(--border-soft)}.summary-row>svg:first-child{width:28px;height:28px;color:var(--blue);stroke-width:1.9px}.summary-row>svg:last-child,.reason-list>li>svg,.waypoint-list>li>svg{width:20px;height:20px;color:var(--blue);stroke-width:2.2px}.summary-row div{min-width:0}.summary-row strong,.summary-row span{display:block}.summary-row strong{font-size:17px;line-height:1.45}.summary-row span{color:var(--muted);margin-top:2px;font-size:14px;line-height:1.45}.summary-row--warning{background:#fffcf4}.summary-row--warning>svg:first-child{color:var(--amber)}.summary-row--guard{background:#e6f7f1c2}.summary-row--guard>svg:first-child{color:#14765c}.detail-section{padding:18px 18px 4px}.detail-section h2{margin:0 0 8px;font-size:19px;line-height:1.35}.reason-list,.waypoint-list,.risk-list,.guard-list{margin:0;padding:0;list-style:none}.risk-list li,.guard-list li{border-top:1px solid var(--border-soft);grid-template-columns:auto 1fr;gap:11px;padding:14px 0;display:grid}.risk-list li:first-child,.guard-list li:first-child{border-top:0}.risk-list svg{width:22px;height:22px;color:var(--amber)}.guard-list svg{color:#14765c;width:22px;height:22px}.ai-section{background:linear-gradient(145deg,#eff6ffeb,#f5f1ffd1);border:1px solid #5d7db938;border-radius:18px;margin:14px 14px 0;padding:16px}.ai-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.ai-heading h2{white-space:nowrap;margin:0;font-size:18px}.ai-heading>span{color:var(--blue-dark);align-items:center;gap:5px;font-size:11px;font-weight:720;display:inline-flex}.ai-heading svg,.ai-list svg{width:16px;height:16px}.ai-list strong,.ai-list small{display:block}.ai-list strong{font-size:13px;line-height:1.45}.ai-list small{color:var(--muted);margin-top:3px;font-size:11px;line-height:1.5}.ai-list{margin:12px 0 0;padding:0;list-style:none}.ai-list li{color:var(--text);border-top:1px solid #5d7db924;grid-template-columns:auto 1fr;gap:8px;padding:8px 0;font-size:13px;line-height:1.5;display:grid}.ai-list li:first-child{border-top:0}.ai-list svg{color:#6d50b7;margin-top:2px}.ai-section p,.ai-section>small{color:var(--muted);margin:8px 0 0;font-size:12px;line-height:1.55;display:block}.risk-list strong,.risk-list small,.guard-list strong,.guard-list small{display:block}.risk-list strong,.guard-list strong{font-size:14px;line-height:1.45}.risk-list small,.guard-list small{color:var(--muted);margin-top:4px;font-size:12px;line-height:1.55}.reason-list li,.waypoint-list li{border-top:1px solid var(--border-soft);grid-template-columns:auto 1fr auto;align-items:center;gap:12px;min-height:61px;font-size:15px;line-height:1.45;display:grid}.reason-list li:first-child,.waypoint-list li:first-child{border-top:0}.reason-icon{width:38px;height:38px;color:var(--blue-dark);background:var(--blue-pale);border:1px solid #b9d4fa;border-radius:50%;place-items:center;display:grid}.reason-icon--amber{color:#9c6a00;background:var(--amber-pale);border-color:#efd897}.reason-icon svg{width:20px;height:20px}.waypoint-list{counter-reset:waypoint}.waypoint-marker{color:#fff;background:var(--blue);border-radius:50%;place-items:center;width:32px;height:32px;font-size:14px;font-weight:800;display:grid;position:relative}.waypoint-marker--destination{box-shadow:inset 0 0 0 3px var(--blue);background:#fff;border-radius:7px}.waypoint-marker--destination span{background:var(--blue);border-radius:3px;width:14px;height:14px}.handoff-actions{gap:10px;margin-top:14px;display:grid}.provider-note{color:var(--muted);justify-content:space-between;gap:10px;margin:14px 4px 0;font-size:11px;line-height:1.4;display:flex}.provider-note strong{color:#334b68}.attributions{flex-wrap:wrap;gap:6px 12px;margin:18px 4px 4px;display:flex}.attributions a{color:var(--muted);font-size:10px}.legal-footer{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:7px 15px;margin:19px 0 2px;font-size:11px;display:flex}.legal-footer a{color:var(--blue-dark)}.legal-back{width:auto;margin-top:36px;text-decoration:none}.legal-icon{width:45px;height:45px;color:var(--blue);margin-top:48px}.legal-page h1{letter-spacing:-.04em;margin:16px 0 4px;font-size:38px}.legal-updated{color:var(--muted);margin:0 0 34px;font-size:13px}.legal-content{border:1px solid var(--border-soft);border-radius:var(--radius-panel);background:#fff;padding:20px}.legal-content h2{margin:26px 0 7px;font-size:18px}.legal-content h2:first-child{margin-top:0}.legal-content p{color:#4a5b72;margin:0;font-size:14px;line-height:1.75}.legal-content a{color:var(--blue-dark);align-items:center;display:inline-flex}.legal-content a svg{width:13px;height:13px;margin-left:2px}.secondary-button--large{min-height:60px}.dialog-backdrop{z-index:20;background:#07183a85;place-items:end center;padding:18px;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border-radius:22px;width:min(100%,480px);padding:24px;box-shadow:0 22px 60px #07183a47}.dialog-icon{width:34px;height:34px;color:var(--amber)}.dialog h2{margin:14px 0 8px;font-size:22px}.dialog p{color:var(--muted);margin:0;font-size:15px;line-height:1.7}.dialog-actions{grid-template-columns:1fr 1fr;gap:10px;margin-top:22px;display:grid}.primary-button--compact,.dialog-actions .secondary-button{min-height:54px;font-size:16px}@media (width<=390px){.screen{padding-left:18px;padding-right:18px}.result-screen{padding-left:10px;padding-right:10px}.brand-title{font-size:19px}.intro-copy{margin-top:48px}.header-spacer,.back-action{width:92px}.back-action span{font-size:14px}}@media (width<=350px){.result-header .back-action,.result-header .header-spacer{width:70px}.result-header .back-action{gap:4px}.result-header .back-action span{font-size:12px}}@media (width>=700px){.app-stage{padding:28px 0}.app-shell{border:1px solid #a9bbcf73;border-radius:28px;min-height:calc(100vh - 56px)}.screen{min-height:calc(100vh - 58px)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.primary-button:active{transform:none}}
