:root{--bg:#f7f5ef;--panel:#ffffff;--ink:#202124;--muted:#626a73;--line:#d9d5ca;--accent:#28706a;--accent-strong:#174d49;--route:#1a73e8;--route-soft:#e8f0fe;--route-tint:#d2e3fc;--shadow:0 18px 50px rgba(32,33,36,0.12)}*{box-sizing:border-box}body,html{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif}button,input,select,textarea{font:inherit}a{color:inherit}.app-shell{min-height:100vh}.top-nav{align-items:center;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);display:flex;gap:18px;height:64px;justify-content:space-between;padding:0 22px;position:-webkit-sticky;position:sticky;top:0;z-index:10}.brand{color:var(--accent-strong);font-size:19px;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;text-decoration:none;white-space:nowrap}.nav-actions{align-items:center;display:flex;flex:0 0 auto;gap:10px}.refresh-status{align-items:center;color:var(--accent-strong);display:inline-flex;font-size:12px;font-weight:800;gap:7px;min-height:32px;opacity:1;transition:opacity .35s ease;white-space:nowrap}.refresh-status.is-fading{opacity:0}.refresh-status-success{color:var(--accent)}.refresh-check,.refresh-spinner{border-radius:999px;display:inline-block;height:15px;width:15px}.refresh-check{color:currentColor;flex:0 0 auto}.refresh-spinner{animation:refresh-spin .9s linear infinite;border:2px solid #cad8d5;border-top:2px solid var(--accent)}.nav-segment{align-items:center;background:#ece8df;border:1px solid var(--line);border-radius:8px;display:inline-flex;gap:3px;padding:3px}.nav-segment button{background:transparent;border:0;border-radius:6px;color:var(--muted);cursor:pointer;font-size:14px;font-weight:700;min-height:34px;padding:0 14px}.nav-segment button.active{background:var(--panel);box-shadow:0 1px 3px rgba(32,33,36,.14);color:var(--ink)}.map-view{display:grid;grid-template-columns:minmax(320px,390px) minmax(0,1fr);height:calc(100vh - 64px);overflow:hidden}.sidebar{background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0;overflow:hidden;z-index:2}.sidebar-header{border-bottom:1px solid var(--line);padding:24px}.eyebrow{color:var(--accent);font-size:12px;font-weight:700;letter-spacing:.12em;margin:0 0 10px;text-transform:uppercase}.sidebar h1,.sidebar h2{font-size:24px;line-height:1.15;margin:0}.sidebar h1{font-size:32px;line-height:1;margin:0}.sidebar-copy{color:var(--muted);line-height:1.5;margin:12px 0 0}.sidebar-header>.sidebar-copy:first-child{margin-top:0}.stats{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin-top:20px}.sidebar-header>.stats:first-child{margin-top:0}.stat{border:1px solid var(--line);border-radius:8px;padding:10px}.stat-value{display:block;font-size:18px;font-weight:700}.stat-label{color:var(--muted);display:block;font-size:11px;margin-top:4px}.map-layers{display:grid;grid-gap:8px;gap:8px;margin-top:12px}.map-layers-toggle{align-items:center;background:#ece8df;border:1px solid var(--line);border-radius:8px;color:var(--accent-strong);cursor:pointer;display:flex;font-size:13px;font-weight:800;justify-content:space-between;min-height:38px;padding:8px 10px;text-align:left;width:100%}.map-layers-toggle:focus-visible{outline:3px solid rgba(26,115,232,.4);outline-offset:2px}.map-layers-chevron{flex:0 0 auto;transition:transform .16s ease}.map-layers-toggle[aria-expanded=true] .map-layers-chevron{transform:rotate(180deg)}.map-layer-toggles{display:grid;grid-gap:7px;gap:7px}.map-layer-toggle{align-items:center;border:1px solid var(--line);border-radius:8px;color:var(--accent-strong);cursor:pointer;display:grid;font-size:12px;font-weight:800;grid-gap:8px;gap:8px;grid-template-columns:auto auto minmax(0,1fr) auto;line-height:1.2;min-height:36px;padding:8px 10px}.map-layer-toggle input{accent-color:var(--accent);height:16px;margin:0;width:16px}.map-layer-toggle span{min-width:0;overflow-wrap:anywhere}.map-layer-icon{align-items:center;background:var(--layer-color);border:1px solid #ffffff;border-radius:999px;color:#ffffff;display:inline-flex;height:22px;justify-content:center;width:22px}.map-layer-icon svg{display:block;fill:currentColor;height:15px;width:15px}.map-layer-toggle strong{background:#edf5f1;border:1px solid #c7ddd4;border-radius:999px;color:#23553f;font-size:11px;min-width:28px;padding:3px 7px;text-align:center}.loading-stats{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.skeleton-block{animation:skeleton-shimmer 1.3s ease-in-out infinite;background:linear-gradient(100deg,#edf0f3,#f8f9fa 44%,#e4e8ec);background-size:220% 100%;border-radius:8px;display:block;overflow:hidden}.skeleton-stat{border:1px solid #e1e5ea;height:58px}.stop-skeleton-segment{display:grid;grid-gap:8px;gap:8px}.stop-skeleton-segment+.stop-skeleton-segment{margin-top:10px}.stop-card-skeleton{border-color:#e1e5ea;pointer-events:none}.skeleton-date{border-radius:999px;height:24px;width:42px}.skeleton-content{display:grid;grid-gap:9px;gap:9px;min-width:0}.skeleton-title{height:18px;width:min(78%,220px)}.skeleton-address{height:13px;width:92%}.skeleton-meta{height:12px;width:54%}.route-leg-skeleton{pointer-events:none}.route-leg-skeleton span{border:0;padding:0}.skeleton-pill{border-radius:999px;height:24px;width:78px}.skeleton-pill-short{width:62px}@keyframes skeleton-shimmer{0%{background-position:120% 0}to{background-position:-120% 0}}@keyframes refresh-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.refresh-spinner,.skeleton-block{animation:none}}.stop-list{display:grid;flex:1 1;min-height:0;overflow:auto;padding:16px}.stop-segment{display:grid;grid-gap:8px;gap:8px}.stop-segment+.stop-segment{margin-top:10px}.today-marker{align-items:center;display:flex;margin-left:17px;min-height:24px;position:relative}.today-marker:before{background:#d93025;content:"";height:2px;left:0;position:absolute;right:0;top:50%;transform:translateY(-50%)}.today-marker span{background:#d93025;border-radius:999px;color:#ffffff;font-size:11px;font-weight:700;line-height:1;margin-left:28px;padding:5px 8px;position:relative}.stop-card{border:1px solid var(--line);border-radius:8px;display:grid;grid-gap:8px;gap:8px;grid-template-columns:82px minmax(0,1fr);padding:12px;transition:background-color .16s ease,border-color .16s ease,box-shadow .16s ease}.route-leg:focus-visible,.stop-card:focus-visible{outline:3px solid rgba(26,115,232,.4);outline-offset:2px}.stop-card.is-highlighted{background:var(--route-soft);border-color:var(--route);box-shadow:0 8px 20px rgba(32,33,36,.1)}.stop-card.is-highlighted .stop-date{background:var(--route-tint);border-color:var(--route);color:var(--accent-strong)}.stop-date{align-items:center;align-self:start;background:#f7f5ef;border:1px solid #d9d5ca;border-radius:8px;color:var(--muted);display:inline-flex;font-size:10px;font-weight:700;gap:3px;justify-self:start;justify-content:center;line-height:1;min-height:42px;overflow-wrap:anywhere;padding:5px 6px;text-align:center;width:46px}.stop-date-range{width:82px}.stop-date-part{align-items:center;display:grid;grid-gap:2px;gap:2px;justify-items:center;min-width:0}.stop-date-month{color:var(--accent-strong);font-size:10px;line-height:1;text-transform:uppercase}.stop-date-day{color:var(--ink);font-size:16px;line-height:1}.stop-date-separator{align-self:center;color:var(--muted);font-size:12px;line-height:1}.stop-card h2{font-size:16px;line-height:1.25;margin:0}.stop-content{min-width:0}.stop-title-row{align-items:flex-start;display:flex;gap:8px;justify-content:space-between;min-width:0}.calendar-lodging-alert,.lodging-alert{align-items:center;background:#c7352f;border-radius:999px;color:#ffffff;display:inline-flex;flex:0 0 auto;font-size:11px;font-weight:800;height:18px;justify-content:center;line-height:1;width:18px}.address-navigation{align-items:center;display:flex;gap:6px;margin-top:4px;min-width:0}.address-link{color:var(--muted);font-size:13px;line-height:1.35;min-width:0;overflow-wrap:anywhere;text-decoration:none}.address-link:hover{color:var(--accent-strong);text-decoration:underline;text-underline-offset:2px}.stop-meta{display:flex;flex-wrap:wrap;gap:8px}.lodging-row,.stop-meta{color:var(--muted);font-size:12px}.lodging-row{line-height:1.35;margin-top:8px;min-width:0}.lodging-label{color:var(--accent-strong);font-weight:800;margin-right:6px}.lodging-values,.lodging-values a{overflow-wrap:anywhere}.lodging-values a{color:var(--accent-strong);text-underline-offset:2px}.weather-block{background:#ffffff;border:1px solid rgba(221,226,232,.72);border-radius:8px;box-shadow:0 4px 12px rgba(32,33,36,.04);margin-top:8px;padding:9px}.weather-heading{align-items:center;color:var(--accent-strong);display:grid;font-size:9px;font-weight:800;grid-gap:7px;gap:7px;grid-template-columns:28px minmax(0,1fr);line-height:1.2;text-transform:uppercase}.weather-heading>span:last-child{display:grid;grid-gap:2px;gap:2px;min-width:0}.weather-heading strong{color:#344154;font-size:11px;text-transform:none}.weather-icon{color:#6b7a90;height:28px;width:28px}.weather-icon-small{color:#8a98aa;height:28px;width:30px}.weather-days{display:grid;grid-gap:0;gap:0;grid-template-columns:repeat(5,minmax(42px,1fr));margin-top:9px}.weather-day{color:#667085;display:grid;font-size:10px;grid-gap:5px;gap:5px;justify-items:center;min-width:0;padding:1px 2px;text-align:center}.weather-day-name{color:#344154;font-size:12px;font-weight:800}.weather-temps{align-items:baseline;display:inline-flex;gap:4px;overflow-wrap:anywhere}.weather-temps span:first-child{color:#344154;font-size:13px;font-weight:800}.weather-temps span:last-child{color:#98a2b3;font-size:12px;font-weight:800}.weather-precip{align-items:center;color:#465468;display:inline-flex;font-size:10px;font-weight:700;gap:2px}.weather-drop{color:#5aa7ff;height:12px;stroke-width:2;width:12px}.weather-current-line{align-items:center;color:var(--muted);display:inline-flex;font-size:11px;gap:6px;margin-top:8px}.weather-current-line .weather-icon{height:18px;width:20px}.weather-current-line strong{color:#344154;font-size:13px}.navigate-link{align-items:center;background:transparent;border:1px solid #d9d5ca;border-radius:999px;color:var(--accent-strong);flex:0 0 auto;display:inline-flex;justify-content:center;line-height:1;height:24px;text-decoration:none;width:24px}.navigate-link:after,.navigate-link:before{content:"";display:block;position:absolute}.navigate-link{position:relative}.navigate-link:before{border-right:2px solid;border-top:2px solid;height:7px;transform:rotate(45deg);width:7px}.navigate-link:after{background:currentColor;height:2px;transform:translateX(-1px);width:9px}.navigate-link:hover{background:#f3f0e8;border-color:#c5bfb2}.route-leg{align-items:center;color:var(--muted);display:flex;font-size:12px;font-weight:700;gap:10px;margin-left:17px;min-height:28px;padding-left:28px;position:relative;transition:color .16s ease}.route-leg:before{background:var(--line);content:"";height:28px;left:0;position:absolute;top:0;transition:background-color .16s ease,width .16s ease;width:2px}.route-leg span{background:#f3f0e8;border:1px solid var(--line);border-radius:999px;color:var(--accent-strong);padding:5px 8px;transition:background-color .16s ease,border-color .16s ease,color .16s ease}.route-leg.is-highlighted{color:var(--ink)}.route-leg.is-highlighted:before{background:var(--route);width:4px}.route-leg.is-highlighted span{background:var(--route-soft);border-color:var(--route);color:var(--ink)}.time-zone-change{align-items:center;background:#fff7e6;border:1px solid #f4c36a;border-radius:8px;color:#7a4b00;display:inline-flex;font-size:12px;font-weight:800;gap:7px;justify-self:start;margin-left:45px;min-height:28px;padding:6px 9px}.time-zone-change svg{color:#b26a00;flex:0 0 auto}.map-canvas{height:100%;min-height:0}.current-location-marker{background:#1a73e8;border:3px solid #ffffff;border-radius:999px;box-shadow:0 0 0 0 rgba(26,115,232,.42),0 2px 8px rgba(32,33,36,.24);height:18px;pointer-events:none;position:absolute;width:18px}.current-location-marker:after{animation:current-location-pulse 1.8s ease-out infinite;border:2px solid rgba(26,115,232,.58);border-radius:inherit;content:"";inset:-9px;position:absolute}@keyframes current-location-pulse{0%{opacity:.8;transform:scale(.55)}to{opacity:0;transform:scale(1.9)}}.map-popup{color:var(--ink);max-width:240px;padding:2px 0 4px}.map-popup h2{font-size:15px;line-height:1.25;margin:0}.map-popup .address-navigation{margin-top:5px}.map-popup-meta{color:var(--accent-strong);font-size:12px;font-weight:800;margin:7px 0 0}.map-popup-alert,.map-popup-lodging,.map-popup-weather{font-size:12px;line-height:1.35;margin:7px 0 0}.map-popup-lodging,.map-popup-weather{color:var(--muted)}.map-popup-alert{color:#c7352f;font-weight:800}.map-status{align-items:center;display:flex;justify-content:center;min-height:calc(100vh - 64px);padding:24px}.status-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);max-width:520px;padding:24px}.status-panel h1{font-size:24px;margin:0 0 10px}.status-panel p{color:var(--muted);line-height:1.5;margin:0}.doc-page{margin:0 auto;max-width:760px;padding:56px 20px}.doc-page h1{font-size:36px;margin:0 0 18px}.doc-page li,.doc-page p{color:var(--muted);line-height:1.65}.calendar-view{min-height:calc(100vh - 64px)}.nav-segment button:hover{border-color:#b7b1a5;color:var(--accent-strong)}.calendar-layout{display:grid;grid-template-columns:minmax(320px,390px) minmax(0,1fr);min-height:calc(100vh - 64px)}.calendar-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 30px rgba(32,33,36,.08);margin:24px;min-width:0;padding:14px}.calendar-sidebar{align-self:start;height:calc(100vh - 64px);max-height:calc(100vh - 64px);overflow:auto;overscroll-behavior:contain;position:-webkit-sticky;position:sticky;scrollbar-gutter:stable;top:64px}.calendar-sidebar p{color:var(--muted);line-height:1.5;margin:12px 0 0}.calendar-sidebar .eyebrow{color:var(--accent);margin-top:0}.calendar-panel .fc{--fc-border-color:var(--line);--fc-button-bg-color:var(--accent);--fc-button-border-color:var(--accent);--fc-button-hover-bg-color:var(--accent-strong);--fc-button-hover-border-color:var(--accent-strong);--fc-button-active-bg-color:var(--accent-strong);--fc-button-active-border-color:var(--accent-strong);--fc-event-bg-color:var(--route);--fc-event-border-color:var(--route);--fc-event-text-color:#ffffff;color:var(--ink);font-size:14px}.calendar-panel .fc-header-toolbar{align-items:center;gap:14px;margin-bottom:18px}.calendar-panel .fc-toolbar-title{font-size:32px;line-height:1.1}.calendar-panel .fc-button{border-radius:8px;box-shadow:none;font-weight:700;text-transform:none}.calendar-panel .fc-theme-standard td,.calendar-panel .fc-theme-standard th{border-color:var(--line)}.calendar-panel .fc-col-header-cell{background:#f3f0e8;color:var(--muted);font-size:12px;text-transform:uppercase}.calendar-panel .fc-daygrid-day-number{color:var(--ink);font-size:13px;font-weight:700;padding:8px;text-decoration:none}.calendar-panel .fc-day-today{background:rgba(40,112,106,.1)}.calendar-panel .fc-daygrid-event,.calendar-panel .fc-more-link{border-radius:6px;cursor:pointer}.calendar-panel .fc-daygrid-event{margin-top:4px;padding:4px 6px}.calendar-panel .fc-daygrid-event.has-lodging-gap{background:#c7352f;border-color:#c7352f}.calendar-event-title{align-items:center;display:inline-flex;gap:5px;max-width:100%;min-width:0}.calendar-lodging-alert{background:#ffffff;color:#c7352f;height:15px;width:15px}.calendar-alert-copy{color:#c7352f;font-weight:800}.calendar-panel .fc-event-title{overflow-wrap:anywhere}.calendar-panel .fc-daygrid-event-dot{display:none}.calendar-panel .fc-multimonth-title{color:var(--accent-strong);font-size:18px;font-weight:800;padding:12px 8px}@media (max-width:860px){.map-view{grid-template-columns:1fr;grid-template-rows:minmax(0,46vh) minmax(0,1fr)}.sidebar{border-bottom:1px solid var(--line);border-right:0;min-height:auto;max-height:46vh}.sidebar h1{font-size:28px}.map-canvas,.map-status{height:100%;min-height:0}.calendar-layout{grid-template-columns:1fr}.calendar-panel{margin:18px 12px}.calendar-panel .fc-header-toolbar{align-items:stretch;flex-direction:column}.calendar-sidebar{border-bottom:1px solid var(--line);border-right:0;height:auto;max-height:none;min-height:auto;overflow:visible;position:static}}@media (max-width:560px){.top-nav{padding:0 12px}.brand{font-size:17px}.calendar-panel .fc-button,.nav-segment button{padding:0 10px}.calendar-panel .fc-toolbar-title{font-size:26px}.calendar-panel{padding:8px}}