:root{--ink:#0c4a6e;--ink-strong:#082f49;--muted:#526575;--sky:#0ea5e9;--sky-dark:#0369a1;--orange:#ea580c;--bg:#eaf7fd;--card:#fff;--line:#bae6fd;--shadow:0 14px 35px rgba(8,47,73,.14);--radius:18px;--topbar:68px;--mobile-nav:0px;font-family:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;color:var(--ink-strong);background:var(--bg)}
*{box-sizing:border-box}html,body{height:100%;margin:0;overflow:hidden}body{font-size:16px}.skip-link{position:fixed;left:12px;top:-60px;z-index:9999;background:#fff;padding:12px 16px;border-radius:8px}.skip-link:focus{top:12px}.app-shell{height:100%;background:linear-gradient(120deg,#effaff,#dff5ff)}
button,textarea{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #111;outline-offset:2px}svg{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.topbar{height:var(--topbar);display:flex;align-items:center;justify-content:space-between;padding:0 20px;background:rgba(255,255,255,.93);border-bottom:1px solid var(--line);backdrop-filter:blur(14px);position:relative;z-index:1001}.brand{display:flex;gap:12px;align-items:center}.brand-mark{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;color:#fff;background:linear-gradient(145deg,#075985,#0ea5e9);box-shadow:0 8px 20px rgba(14,165,233,.24)}.brand-mark svg{width:27px;stroke:none;fill:currentColor}.brand-mark svg path+path{fill:#fb923c}.brand h1{font-size:1.05rem;margin:0;font-weight:800;letter-spacing:.02em}.brand p{font-size:.78rem;color:var(--muted);margin:2px 0 0}.top-actions{display:flex;align-items:center;gap:8px}.button{min-height:44px;border:1px solid transparent;border-radius:12px;padding:0 14px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:7px;background:#fff;color:var(--ink-strong)}.button svg{width:19px}.button.subtle{border-color:var(--line);background:#fff}.button.primary{background:var(--sky-dark);color:#fff}.button:hover{filter:brightness(.98);transform:translateY(-1px)}.status-pill{font-size:.84rem;display:flex;gap:7px;align-items:center;background:#ecfdf5;color:#166534;padding:8px 11px;border-radius:999px;font-weight:700}.status-pill>span{width:8px;height:8px;background:#22c55e;border-radius:50%}.status-pill.offline{background:#fff7ed;color:#9a3412}.status-pill.offline>span{background:#f97316}
.workspace{height:calc(100% - var(--topbar));display:grid;grid-template-columns:minmax(340px,420px) 1fr;gap:0}.sidebar{min-width:0;background:rgba(255,255,255,.95);border-right:1px solid var(--line);padding:16px;overflow:auto;z-index:500}.day-tabs{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;padding:4px;background:#e8f4f9;border-radius:14px;position:sticky;top:0;z-index:2}.day-tab{min-height:46px;border:0;background:transparent;border-radius:10px;color:var(--muted);font-size:.78rem;font-weight:800}.day-tab span{display:block;font-size:.67rem;font-weight:600;margin-top:1px}.day-tab.active{background:#fff;color:var(--sky-dark);box-shadow:0 3px 10px rgba(8,47,73,.1)}.day-summary{display:flex;justify-content:space-between;gap:14px;align-items:center;margin:22px 2px 10px}.eyebrow{font-size:.78rem;color:var(--sky-dark);font-weight:800;letter-spacing:.08em}.day-summary h2{font-size:1.4rem;margin:3px 0 5px}.day-summary p{margin:0;color:var(--muted);line-height:1.45}.icon-button{width:46px;height:46px;flex:0 0 auto;border:1px solid var(--line);background:#fff;border-radius:14px;color:var(--sky-dark)}.icon-button svg{width:22px}.route-meta{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:.8rem;padding:8px 2px;border-bottom:1px solid #e8f2f8}.text-button{border:0;background:transparent;color:var(--sky-dark);min-height:36px;font-weight:800}.text-button:disabled{opacity:.4;cursor:not-allowed}.itinerary-list{list-style:none;padding:8px 0 0;margin:0;display:flex;flex-direction:column;gap:8px}.stop-card{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;background:#fff;border:1px solid #d7edf7;border-radius:14px;padding:10px;box-shadow:0 4px 14px rgba(8,47,73,.055)}.stop-index{width:30px;height:30px;border-radius:10px;background:var(--day-color,#0ea5e9);color:#fff;font-weight:800;display:grid;place-items:center;font-size:.83rem}.stop-main{min-width:0}.stop-main button{padding:0;border:0;background:none;text-align:left;color:var(--ink-strong);font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.stop-main p{font-size:.78rem;color:var(--muted);margin:4px 0 0}.stop-actions{display:flex;gap:2px}.stop-actions button{width:40px;height:40px;border:0;border-radius:9px;background:#eff8fc;color:var(--ink);display:grid;place-items:center}.stop-actions button:hover{background:#dff2fa}.stop-actions button:disabled{opacity:.25}.stop-actions svg{width:17px}.trip-note{margin:16px 0 4px;padding:13px;display:flex;gap:10px;background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;color:#9a3412}.trip-note svg{width:19px;flex:0 0 auto}.trip-note p{font-size:.84rem;margin:0;line-height:1.55}
.map-panel{position:relative;min-width:0}.map-panel:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 10%,rgba(56,189,248,.25),transparent 38%),linear-gradient(#d8f2fb,#b9e2ef);z-index:0}.map-panel:after{content:"離線時仍可操作行程與路線；底圖顯示曾瀏覽區域";position:absolute;left:50%;top:48%;transform:translate(-50%,-50%);color:#39738b;font-weight:700;font-size:.85rem;z-index:0}.leaflet-container{font-family:inherit;background:transparent}#map{height:100%;z-index:1}.map-toolbar{position:absolute;z-index:450;left:18px;right:18px;top:16px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;pointer-events:none}.filter-row,.radius-row{pointer-events:auto;display:flex;align-items:center;gap:5px;background:rgba(255,255,255,.94);border:1px solid rgba(186,230,253,.9);box-shadow:var(--shadow);padding:6px;border-radius:14px;backdrop-filter:blur(10px)}.filter-chip,.segmented button{border:0;border-radius:9px;min-height:38px;padding:0 11px;background:transparent;color:var(--muted);font-weight:800;font-size:.83rem}.filter-chip.active,.segmented button.active{background:#075985;color:#fff}.radius-row>span{font-size:.8rem;font-weight:800;margin:0 5px}.segmented{display:flex;background:#eef7fa;border-radius:10px;padding:2px}.segmented button{min-height:34px;padding:0 8px;font-size:.75rem}.switch{font-size:.78rem;font-weight:800;display:flex;align-items:center;gap:7px;padding:0 6px}.switch input{position:absolute;opacity:0}.switch span{width:36px;height:21px;background:#cbd5e1;border-radius:20px;position:relative;transition:.2s}.switch span:after{content:"";position:absolute;width:15px;height:15px;background:#fff;border-radius:50%;left:3px;top:3px;transition:.2s;box-shadow:0 1px 3px #0003}.switch input:checked+span{background:var(--sky-dark)}.switch input:checked+span:after{transform:translateX(15px)}.legend{position:absolute;z-index:450;right:18px;bottom:18px;background:rgba(255,255,255,.94);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:12px;padding:9px 11px;display:flex;gap:13px;font-size:.75rem;font-weight:700}.legend span{display:flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:50%;display:inline-block}.legend-core{background:#075985;border:2px solid white;box-shadow:0 0 0 2px #075985}.legend-backup{background:#fff;border:2px dashed #ea580c}.legend-route{border-radius:0!important;height:3px!important;background:#0ea5e9}.map-fab{position:absolute;z-index:450;right:18px;bottom:66px;width:48px;height:48px;border-radius:16px;border:1px solid var(--line);background:#fff;color:var(--sky-dark);box-shadow:var(--shadow)}.map-fab svg{width:23px}.custom-marker{background:transparent;border:0}.marker-pin{width:34px;height:34px;border-radius:12px 12px 12px 3px;transform:rotate(-45deg);display:grid;place-items:center;box-shadow:0 6px 18px rgba(8,47,73,.26);border:2px solid #fff;background:var(--marker,#075985)}.marker-pin span{transform:rotate(45deg);font-size:15px;color:#fff;font-weight:900}.marker-pin.backup{background:#fff;border:2px dashed #ea580c}.marker-pin.backup span{color:#c2410c}.leaflet-popup-content-wrapper{border-radius:16px;box-shadow:0 16px 38px rgba(8,47,73,.22)}.leaflet-popup-content{margin:15px;width:280px!important}.popup-card h3{margin:0 0 3px;font-size:1rem}.popup-card .jp{font-size:.75rem;color:var(--muted);margin-bottom:10px}.popup-tags{display:flex;gap:6px;margin-bottom:10px}.popup-tags span{font-size:.7rem;background:#e0f2fe;color:#075985;border-radius:999px;padding:4px 7px;font-weight:800}.popup-grid{display:grid;grid-template-columns:68px 1fr;gap:5px 8px;font-size:.78rem;line-height:1.45}.popup-grid b{color:var(--muted)}.popup-note{font-size:.78rem;line-height:1.5;background:#f5fafc;border-radius:10px;padding:9px;margin:10px 0}.popup-actions{display:flex;gap:6px;flex-wrap:wrap}.popup-actions button,.popup-actions select,.popup-card a{min-height:38px;border-radius:9px;border:1px solid var(--line);background:#fff;color:var(--ink);font-weight:800;font-size:.75rem;padding:0 9px;text-decoration:none;display:inline-flex;align-items:center}.popup-actions button.primary{background:#075985;color:#fff;border-color:#075985}.mobile-nav{display:none}
dialog{border:0;padding:0;background:transparent;max-width:min(92vw,480px)}dialog::backdrop{background:rgba(8,47,73,.48);backdrop-filter:blur(3px)}.dialog-card{background:#fff;border-radius:22px;padding:25px;box-shadow:0 30px 70px rgba(8,47,73,.28);position:relative}.dialog-close{position:absolute;right:12px;top:10px;width:44px;height:44px;border:0;background:transparent;font-size:1.7rem;color:var(--muted)}.dialog-icon{width:46px;height:46px;display:grid;place-items:center;border-radius:15px;color:#075985;background:#e0f2fe}.dialog-icon svg{width:24px}.dialog-card h2{font-size:1.25rem;margin:16px 0 8px}.dialog-card p{color:var(--muted);line-height:1.55;margin:0 0 15px}.dialog-card label{font-size:.82rem;font-weight:800}.dialog-card textarea{width:100%;margin-top:7px;padding:10px;border:1px solid var(--line);border-radius:11px;resize:none;color:var(--muted);font-size:.78rem}.dialog-actions{display:flex;gap:8px;margin-top:13px}.dialog-card small{display:block;color:var(--muted);margin-top:12px;line-height:1.45}.toast{position:fixed;z-index:9999;left:50%;bottom:24px;transform:translate(-50%,130%);opacity:0;background:#082f49;color:#fff;border-radius:12px;padding:12px 17px;box-shadow:var(--shadow);transition:.25s;pointer-events:none;font-weight:700;font-size:.86rem}.toast.show{transform:translate(-50%,0);opacity:1}.app-update-prompt{position:fixed;z-index:1100;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translateX(-50%);width:min(560px,calc(100vw - 24px));display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:#fff;border:2px solid #0284c7;border-radius:16px;box-shadow:0 14px 35px rgba(8,47,73,.24)}.app-update-prompt[hidden]{display:none}.app-update-copy{display:grid;gap:3px;flex:1 1 200px;min-width:0}.app-update-copy strong{font-size:1rem;color:#082f49}.app-update-copy span{font-size:.875rem;line-height:1.4;color:#334b5c}.app-update-actions{display:flex;gap:8px;flex:0 0 auto;margin-left:auto}.app-update-actions .button{min-height:48px}.app-update-actions button:disabled{opacity:.6;cursor:wait}@media (max-width:760px),(max-width:1000px) and (max-height:600px){.app-update-prompt{bottom:calc(var(--mobile-nav) + 71px + 12px + env(safe-area-inset-bottom));width:calc(100vw - 20px);gap:10px;padding:12px}.app-update-copy span{font-size:.8125rem}.app-update-actions{gap:6px}.app-update-actions .button{padding-inline:10px;min-height:48px}}@media (max-width:360px){.app-update-prompt{align-items:flex-start;flex-direction:column}.app-update-actions{align-self:flex-end}}
@media(max-width:1050px){.workspace{grid-template-columns:340px 1fr}.map-toolbar{right:auto;max-width:calc(100% - 36px)}.radius-row{order:2}.top-actions .button{font-size:0;width:44px;padding:0}.top-actions .button svg{margin:0}.status-pill{font-size:.72rem;padding:7px 9px}}
@media (max-width: 760px), (max-width: 1000px) and (max-height: 600px){:root{--topbar:62px;--mobile-nav:72px}html,body{overscroll-behavior:none}.topbar{padding:0 13px}.brand-mark{width:38px;height:38px;border-radius:12px}.brand h1{font-size:.98rem}.brand p{font-size:.7rem}.top-actions #shareBtn{display:none}.workspace{height:calc(100% - var(--topbar) - var(--mobile-nav));display:block;position:relative}.sidebar,.map-panel{position:absolute;inset:0;border:0}.sidebar{display:none;padding:12px 12px 26px}.workspace.plan-view .sidebar{display:block}.workspace.plan-view .map-panel{display:none}.day-tabs{top:0}.day-summary{margin-top:16px}.map-toolbar{left:10px;right:10px;top:10px;max-width:none;display:block}.filter-row{overflow-x:auto;justify-content:flex-start;scrollbar-width:none;border-radius:13px}.filter-row::-webkit-scrollbar{display:none}.filter-chip{white-space:nowrap}.radius-row{margin-top:7px;justify-content:space-between;overflow-x:auto}.radius-row>span{display:none}.segmented button{min-width:48px}.switch{white-space:nowrap}.legend{left:10px;right:auto;bottom:12px}.map-fab{right:11px;bottom:58px}.mobile-nav{height:var(--mobile-nav);padding:7px max(12px,env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));display:grid;grid-template-columns:repeat(3,1fr);background:#fff;border-top:1px solid var(--line);position:fixed;bottom:0;left:0;right:0;z-index:1002}.mobile-nav button{border:0;background:transparent;color:var(--muted);border-radius:11px;font-size:.72rem;font-weight:800;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:48px}.mobile-nav button svg{width:22px}.mobile-nav button.active{background:#e0f2fe;color:#075985}.stop-actions button{width:42px;height:42px}.leaflet-control-zoom{display:none}.leaflet-popup-content{width:min(270px,72vw)!important}.toast{bottom:calc(var(--mobile-nav) + 12px);white-space:nowrap;max-width:90vw}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.button[hidden]{display:none!important}
.map-panel:before{display:none}.map-panel:after{content:"底圖需連線；行程與已保存班次可離線查看";top:auto;bottom:8px;left:50%;white-space:nowrap;background:#ffffffd9;border-radius:8px;padding:5px 8px;font-size:.72rem}.route-leg{list-style:none;display:flex;flex-direction:column;gap:7px;margin:0 0 0 17px;padding:4px 0 9px 18px;border-left:2px solid #cbd5e1;position:relative}.leg-connector{position:absolute;left:-6px;top:12px;width:10px;height:10px;border-radius:50%;background:#0ea5e9;border:2px solid white;box-shadow:0 0 0 1px #0ea5e9}.route-leg>label{font-size:.76rem;color:var(--muted);line-height:1.35}.route-leg [data-leg-mode]{width:100%;min-height:44px;border:1px solid var(--line);border-radius:10px;background:#f8fcfe;color:var(--ink-strong);font:inherit;font-size:.88rem;padding:0 10px}.transit-query{background:#f5fafc;border:1px solid #d9eaf1;border-radius:11px;padding:8px 10px}.transit-query summary{min-height:34px;display:flex;align-items:center;color:#075985;font-size:.82rem;font-weight:800;cursor:pointer}.transit-form{display:grid;grid-template-columns:1fr 1fr;gap:8px}.transit-form>label{font-size:.74rem;font-weight:700;color:var(--muted)}.transit-form input{display:block;width:100%;height:42px;margin-top:3px;border:1px solid var(--line);border-radius:8px;padding:0 8px;font:inherit;background:white}.transit-form>[data-transit-query]{grid-column:1/-1;min-height:44px}.transit-form>small,.transit-results,.transit-saved{grid-column:1/-1}.transit-form>small,.transit-results>small,.transit-saved small{font-size:.71rem;color:var(--muted);line-height:1.45}.transit-results p{font-size:.78rem;line-height:1.45;margin:4px 0 8px}.transit-results a{display:inline-flex;min-height:42px;align-items:center;color:#075985;font-size:.8rem;font-weight:800}.transit-results-list{display:grid;gap:6px;margin:7px 0}.transit-option{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:7px;background:#fff;border:1px solid #dbeaf0;border-radius:9px;font-size:.75rem}.transit-option small{display:block;color:var(--muted);margin-top:3px}.transit-option .button{min-height:40px;padding:0 9px;white-space:nowrap;font-size:.72rem}.transit-saved{padding:8px;background:#ecfdf5;border-radius:9px;font-size:.76rem;line-height:1.5}.transit-saved strong{display:block;color:#166534}.transit-saved button{display:block;border:0;background:none;color:#075985;text-decoration:underline;padding:6px 0;min-height:38px;font-weight:700}.leaflet-control-zoom a{width:42px!important;height:42px!important;line-height:42px!important;font-size:24px!important}.leaflet-control-attribution{font-size:10px!important}@media (max-width: 760px), (max-width: 1000px) and (max-height: 600px){.leaflet-control-zoom{display:block!important}.leaflet-top.leaflet-left{top:122px;bottom:auto;left:9px}.map-panel:after{left:50%;bottom:4px;max-width:calc(100% - 120px);overflow:hidden;text-overflow:ellipsis}.route-leg{margin-left:14px}.transit-option{align-items:flex-start}.transit-option .button{padding:0 7px}}
@media (max-width: 760px), (max-width: 1000px) and (max-height: 600px){.map-panel:after{display:none}.status-pill{font-size:.7rem!important;padding:7px 9px!important}.status-pill>span{margin-right:2px!important}}
.transit-route-option{align-items:flex-start;padding:10px;gap:10px}.transit-route-option>div{min-width:0;flex:1}.transit-route-option>div>b{display:block;font-size:.81rem}.transit-route-option>div>small{font-size:.74rem;line-height:1.45}.transit-route-option .button{min-height:44px;flex:0 0 auto}.transit-route-option details{margin-top:7px}.transit-route-option details summary{min-height:40px;display:flex;align-items:center;color:#075985;font-size:.75rem;font-weight:800;cursor:pointer}.transit-route-option ol{padding-left:20px;margin:3px 0 4px;font-size:.72rem;line-height:1.5}.transit-route-option li+li{margin-top:5px}.transit-route-results>p{font-size:.78rem;line-height:1.45;margin:5px 0 8px}.transit-route-results>a{display:flex;min-height:44px;align-items:center;color:#075985;font-size:.8rem;font-weight:800}.transit-route-results>small{display:block;margin:7px 0}.transit-form>[data-transit-route-query]{grid-column:1/-1;min-height:48px}@media (max-width: 760px), (max-width: 1000px) and (max-height: 600px){.transit-route-option{gap:7px;padding:9px}.transit-route-option .button{min-height:46px;padding:0 10px}}

.stop-card{grid-template-columns:34px minmax(0,1fr) 18px;gap:12px;position:relative;cursor:pointer;touch-action:pan-y;user-select:none;transition:background-color .14s ease,box-shadow .14s ease,border-color .14s ease}.stop-card:hover{border-color:#7dd3fc;box-shadow:0 6px 18px rgba(8,47,73,.1)}.stop-card:focus-visible{outline:3px solid #0369a1;outline-offset:2px}.stop-main{display:grid;gap:4px}.stop-name{display:block;min-width:0;color:var(--ink-strong);font-size:.98rem;line-height:1.35;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stop-main p{margin:0;font-size:.79rem;line-height:1.4;color:var(--muted)}.stop-open-indicator{color:#64748b;font-size:1.7rem;line-height:1;font-weight:400;justify-self:center}.stop-card.is-dragging{opacity:.65;border:2px solid #0284c7;box-shadow:0 12px 26px rgba(3,105,161,.2);touch-action:none;user-select:none}.drag-target-before{border-top:4px solid #0284c7!important}.drag-target-after{border-bottom:4px solid #0284c7!important}
/* Disabled buttons look disabled everywhere: muted but readable, with a not-allowed cursor (#7 review D3). */
button:disabled{cursor:not-allowed}.button:disabled,.popup-actions button:disabled,.popup-actions button.primary:disabled{border-color:#cbd5e1;background:#f1f5f9;color:#64748b;box-shadow:none;opacity:1}
/* Desktop only (#7 batch C): the just-added highlight phones already had, a connection pill that keeps its words at
   1050px and below, sticky day tabs with nothing showing through above them, and a sidebar 復原 and a radius row that do
   not squeeze at 761-1050px. Phone rules stay in the shared phone query. */
@media (min-width: 1001px), (min-width: 761px) and (min-height: 601px){.map-fab.is-tracking{color:#2563eb;border-color:#2563eb}.map-fab.is-following{background:#2563eb;color:#fff}
.stop-card.just-added{outline:3px solid #0ea5e9;background:#effaff}
.status-pill{white-space:nowrap}
.sidebar .day-tabs{top:-16px;box-shadow:0 0 0 8px #feffff}
.route-meta{gap:8px}
#undoBtn{flex:0 0 auto;white-space:nowrap}
.radius-row{flex-wrap:wrap}
.radius-row>span,.radius-row .segmented button,.radius-row .switch{white-space:nowrap}
}

/* Each leg (#11): the mode selector and 導航 (Google Maps to this leg's stop) share one row; a walking or driving leg
   shows its routed time and distance under it. Phone and desktop each size these in their own query. */
@media (min-width: 1001px), (min-width: 761px) and (min-height: 601px){
.leg-mode-row{display:flex;align-items:stretch;gap:8px}
.leg-mode-row>[data-leg-mode]{flex:1 1 auto;min-width:0}
.leg-navigate{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:72px;min-height:44px;padding:0 12px;border:1px solid #15803d;border-radius:10px;background:#f0fdf4;color:#14532d;font-size:.88rem;font-weight:800;text-decoration:none;white-space:nowrap}
.leg-navigate:hover{background:#dcfce7}
.leg-navigate:focus-visible{outline:3px solid #15803d;outline-offset:2px}
.leg-navigate svg{width:16px;height:16px;fill:currentColor}
.leg-route-info{margin:0;color:var(--ink-strong);font-size:.84rem;font-weight:700;line-height:1.4}
}
@media (max-width: 760px), (max-width: 1000px) and (max-height: 600px){
.leg-mode-row{display:flex;align-items:stretch;gap:8px}
.leg-mode-row>[data-leg-mode]{flex:1 1 auto;min-width:0;min-height:48px}
.leg-navigate{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:84px;min-height:48px;padding:0 12px;border:1px solid #15803d;border-radius:12px;background:#f0fdf4;color:#14532d;font-size:1rem;font-weight:800;text-decoration:none;white-space:nowrap;touch-action:manipulation}
.leg-navigate:active{background:#dcfce7}
.leg-navigate:focus-visible{outline:3px solid #15803d;outline-offset:2px}
.leg-navigate svg{width:18px;height:18px;fill:currentColor}
.leg-route-info{margin:0;color:var(--ink-strong);font-size:.95rem;font-weight:700;line-height:1.4}
}

/* Estimated times (#13): the day's start time at the top of each day, each stop's 約 arrival–departure and stay, and the
   desktop-only stay buttons (phones only show the stay). */
@media (min-width: 1001px), (min-width: 761px) and (min-height: 601px){
.day-start-time{display:inline-flex;align-items:center;gap:8px;margin-top:8px;color:var(--ink-strong);font-size:.88rem;font-weight:800}
.day-start-time input{min-height:40px;padding:0 8px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink-strong);font:inherit;font-size:.95rem}
.stop-main .stop-time{color:#0f3b57;font-size:.86rem;font-weight:800;font-variant-numeric:tabular-nums}
.stop-stay-edit{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.stop-stay-edit button{min-height:34px;padding:0 10px;border:1px solid #9acfe5;border-radius:9px;background:#fff;color:#075985;font:inherit;font-size:.8rem;font-weight:800;cursor:pointer}
.stop-stay-edit button:hover:not(:disabled){background:#e0f2fe}
.stop-stay-edit button:focus-visible{outline:3px solid #0369a1;outline-offset:2px}
.stop-stay-edit button:disabled{border-color:#cbd5e1;background:#f1f5f9;color:#64748b;cursor:not-allowed}
}
@media (max-width: 760px), (max-width: 1000px) and (max-height: 600px){
.day-start-time{display:flex;align-items:center;gap:10px;margin-top:10px;color:var(--ink-strong);font-size:1rem;font-weight:800}
.day-start-time input{min-height:48px;min-width:132px;padding:0 10px;border:1px solid #9acfe5;border-radius:12px;background:#fff;color:var(--ink-strong);font:inherit}
.stop-main .stop-time{color:#0f3b57;font-size:.95rem;font-weight:800;line-height:1.4;font-variant-numeric:tabular-nums}
.stop-stay-edit{display:none}
}

/* Per-day notes (#10 item 7, owner-approved redesign 2026-10-03): a sticky-note card to read the day's note (修改 opens the
   dialog), a modest ＋ 寫這天的筆記 button when there is none, and #dayNoteDialog, a centred card, to write it. The phone-landscape
   筆記 chip is phone-only. */
@media (min-width: 1001px), (min-width: 761px) and (min-height: 601px){
.day-note{margin:-2px 2px 12px}
.day-note-sticky{padding:10px 12px 12px;border:1px solid #fde68a;border-radius:14px;background:#fffbeb;box-shadow:0 2px 8px rgba(146,64,14,.08)}
.day-note-sticky-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.day-note-sticky-head h3{margin:0;color:#92400e;font-size:.88rem;font-weight:800}
.day-note-edit{min-height:32px;padding:0 12px;border:1px solid #fcd34d;border-radius:9px;background:#fff;color:#92400e;font:inherit;font-size:.82rem;font-weight:800;cursor:pointer}
.day-note-edit:hover{background:#fef3c7}
.day-note-text{margin:0;color:#422006;font-size:15px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}
.day-note-add{min-height:36px;padding:0 12px;border:1px dashed #f59e0b;border-radius:10px;background:#fff;color:#92400e;font:inherit;font-size:.86rem;font-weight:800;cursor:pointer}
.day-note-add:hover{background:#fffbeb}
.day-note :is(.day-note-edit,.day-note-add):focus-visible{outline:3px solid #0369a1;outline-offset:2px}
.day-note-chip{display:none}
.day-note-dialog{width:min(560px,calc(100vw - 48px));max-width:none}
.day-note-dialog-card{display:flex;flex-direction:column;gap:10px;padding:20px 22px;border-radius:20px;background:#fff;box-shadow:0 30px 70px rgba(8,47,73,.28)}
.day-note-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.day-note-dialog-head h2{margin:0;color:var(--ink-strong);font-size:1.2rem}
.day-note-dialog-body{display:flex;flex-direction:column;gap:6px}
.day-note-field-label{color:#475569;font-size:.88rem;font-weight:700}
.day-note-dialog textarea{box-sizing:border-box;width:100%;padding:10px 12px;border:2px solid #fcd34d;border-radius:12px;background:#fffdf5;color:var(--ink-strong);font:inherit;font-size:15px;line-height:1.6;resize:vertical}
.day-note-counter{margin:0;color:#475569;font-size:.86rem;font-weight:700}
.day-note-counter.over{color:#b91c1c}
.day-note-dialog-actions{display:flex;justify-content:flex-end;gap:8px}
.day-note-dialog button{min-height:40px;padding:0 16px;border-radius:11px;font:inherit;font-weight:800;cursor:pointer}
.day-note-cancel,.day-note-keep{border:1px solid #bae6fd;background:#fff;color:#075985}
.day-note-save{border:1px solid #0369a1;background:#0369a1;color:#fff}
.day-note-save:disabled{border-color:#cbd5e1;background:#f1f5f9;color:#64748b;cursor:not-allowed}
.day-note-confirm:not([hidden]){display:flex;flex:1;align-items:center;justify-content:space-between;gap:10px}
.day-note-confirm p{margin:0;color:#7c2d12;font-weight:800}
.day-note-confirm-buttons{display:flex;gap:8px}
.day-note-discard{border:1px solid #b91c1c;background:#b91c1c;color:#fff}
.day-note-dialog :is(button,textarea):focus-visible{outline:3px solid #0369a1;outline-offset:2px}
}
