:root{
 --font-body:'Switzer',Arial,sans-serif;--font-display:'Switzer',Arial,sans-serif;
 --text-xs:clamp(.75rem,.72rem + .12vw,.82rem);--text-sm:clamp(.875rem,.83rem + .15vw,.95rem);--text-base:clamp(1rem,.98rem + .1vw,1.05rem);--text-lg:clamp(1.125rem,1rem + .3vw,1.3rem);--text-xl:clamp(1.5rem,1.25rem + .6vw,1.85rem);
 --space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;
 --color-bg:#f4f2ec;--color-surface:#fffef9;--color-surface-2:#eae8df;--color-text:#242d29;--color-text-muted:#59625c;--color-border:#242d2925;--color-primary:#465c3e;--color-primary-hover:#30432a;--color-warning:#8b3e24;--shadow:0 8px 32px #29362c18;--radius-sm:4px;--radius-md:8px;--transition-interactive:180ms ease;
}
[data-theme=dark]{--color-bg:#18221d;--color-surface:#222e26;--color-surface-2:#304036;--color-text:#f1f0e7;--color-text-muted:#bac3b8;--color-border:#f1f0e730;--color-primary:#c4d1b1;--color-primary-hover:#e0e9d2;--color-warning:#f2a181;--shadow:0 8px 32px #0004}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;scroll-behavior:smooth}body{min-height:100dvh;font-family:var(--font-body);font-size:var(--text-base);line-height:1.5;color:var(--color-text);background:var(--color-bg)}
input,button,select{font:inherit;color:inherit}button{cursor:pointer;background:none;border:0;min-height:44px}a{color:var(--color-primary)}h1,h2,h3{line-height:1.2;text-wrap:balance}h1{font-size:var(--text-xl);font-weight:600}h2{font-size:var(--text-lg)}h3{font-size:var(--text-base)}:focus-visible{outline:3px solid var(--color-primary);outline-offset:3px}button,a,input,select{transition:color var(--transition-interactive),background var(--transition-interactive),box-shadow var(--transition-interactive)}button:hover{background:var(--color-surface-2)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.skip{position:absolute;top:-100px;left:var(--space-4);z-index:100;padding:var(--space-3);background:var(--color-surface)}.skip:focus{top:var(--space-2)}
.topbar{height:88px;display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border);background:var(--color-surface)}.identity{display:flex;gap:var(--space-4);align-items:center}.brand{width:36px;height:36px;color:var(--color-primary)}.eyebrow{font-size:var(--text-xs);letter-spacing:.13em;font-weight:600}.identity .eyebrow{color:var(--color-text-muted)}.header-meta{display:flex;gap:var(--space-6);align-items:center;font-size:var(--text-sm)}#theme{border:1px solid var(--color-border);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm)}
.shell{display:grid;grid-template-columns:370px minmax(0,1fr);height:calc(100dvh - 88px);min-height:560px}.panel{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--color-border);background:var(--color-surface);z-index:3}.tabs{display:grid;grid-template-columns:1fr 1.3fr .8fr;padding:var(--space-2) var(--space-4);gap:var(--space-1);border-bottom:1px solid var(--color-border)}.tabs button{font-size:var(--text-sm);color:var(--color-text-muted);border-radius:var(--radius-sm)}.tabs button.active{background:var(--color-surface-2);color:var(--color-text);font-weight:600}.tabs span{font-size:var(--text-xs);margin-left:var(--space-1);font-variant-numeric:tabular-nums}
.tab-pane{overflow-y:auto;min-height:0;flex:1}.filter-section{padding:var(--space-4);border-bottom:1px solid var(--color-border);position:sticky;top:0;z-index:2;background:var(--color-surface)}input[type=search],select{width:100%;border:1px solid var(--color-border);background:var(--color-bg);border-radius:var(--radius-sm);min-height:44px;padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}input[type=search]{padding:var(--space-3);margin-bottom:var(--space-3)}.select-row{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--space-2)}.field{display:block;font-size:var(--text-xs);color:var(--color-text-muted);font-weight:500}.field select{display:block;margin-top:var(--space-1);color:var(--color-text)}.list-meta{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-2);font-size:var(--text-xs);color:var(--color-text-muted)}.list-meta button{min-height:36px;font-size:var(--text-xs);text-decoration:underline;padding:var(--space-1) var(--space-2)}.site-row{display:flex;width:100%;align-items:flex-start;gap:var(--space-3);padding:var(--space-4);text-align:left;border-bottom:1px solid var(--color-border);min-height:84px}.site-row.selected{background:var(--color-surface-2)}.site-number{flex:0 0 28px;height:28px;display:flex;align-items:center;justify-content:center;background:var(--region);color:white;border-radius:50%;font-size:var(--text-xs);font-variant-numeric:tabular-nums;margin-top:var(--space-1)}.site-title{display:block;font-weight:600;font-size:var(--text-base)}.site-meta{display:block;color:var(--color-text-muted);font-size:var(--text-xs);margin-top:var(--space-1)}.site-status{display:block;font-size:var(--text-xs);color:var(--color-warning);margin-top:var(--space-1)}.panel-footer{display:flex;gap:var(--space-4);justify-content:space-between;align-items:center;font-size:var(--text-xs);padding:var(--space-3) var(--space-4);border-top:1px solid var(--color-border)}.panel-footer a{min-height:30px;display:flex;align-items:center}.panel-footer span{color:var(--color-text-muted)}
.map-section{position:relative;min-height:0;overflow:hidden;background:#e7ebdf}#map{position:absolute;inset:0}.map-actions{position:absolute;top:var(--space-4);left:var(--space-4);display:flex;gap:var(--space-2);z-index:2}.map-actions button{background:var(--color-surface);box-shadow:var(--shadow);padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-sm)}.map-actions button:hover{background:var(--color-surface-2)}.legend{position:absolute;left:var(--space-4);top:76px;max-width:calc(100% - 88px);display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-3);background:var(--color-surface);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);box-shadow:var(--shadow);font-size:var(--text-xs);pointer-events:none}.legend span{display:flex;align-items:center;gap:var(--space-1)}.legend b{width:8px;height:8px;border-radius:50%;background:var(--dot);display:inline-block}
.route-ribbon{position:absolute;bottom:var(--space-8);left:var(--space-4);right:var(--space-4);max-width:650px;z-index:2;background:var(--color-surface);box-shadow:var(--shadow);padding:var(--space-4) var(--space-5);text-align:left;border-radius:var(--radius-md);display:flex;flex-direction:column;gap:var(--space-1);border:1px solid var(--color-border)}.route-ribbon .eyebrow{color:var(--color-text-muted)}.route-ribbon strong{font-size:var(--text-base);font-weight:600}.route-ribbon>span:last-child{font-size:var(--text-sm);color:var(--color-text-muted)}
.detail{position:absolute;right:var(--space-4);top:var(--space-4);width:min(360px,calc(100% - 32px));max-height:calc(100% - 160px);overflow:auto;z-index:4;background:var(--color-surface);box-shadow:var(--shadow);border-radius:var(--radius-md);padding:var(--space-5)}.detail-head{display:flex;justify-content:space-between;gap:var(--space-3);align-items:flex-start}.detail-head h2{margin-top:var(--space-2)}.detail-close{min-width:44px;border:1px solid var(--color-border);border-radius:var(--radius-sm)}.detail p{font-size:var(--text-sm);margin-top:var(--space-4)}.detail .muted{font-size:var(--text-xs)}.detail-status{color:var(--color-warning)}.detail-actions{display:flex;gap:var(--space-2);margin-top:var(--space-4)}.detail-actions button{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);flex:1}.detail-sources{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-3)}.detail-sources a{font-size:var(--text-xs);min-height:34px;display:flex;align-items:center;padding:var(--space-1) var(--space-2);background:var(--color-bg);border-radius:var(--radius-sm)}
.section-intro{padding:var(--space-5) var(--space-4) var(--space-4)}.section-intro p{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-2)}.distance-form{padding:0 var(--space-4) var(--space-4);display:flex;flex-direction:column;gap:var(--space-2)}.swap{align-self:flex-end;min-height:34px;font-size:var(--text-xs);text-decoration:underline;padding:var(--space-1) var(--space-2)}.primary{background:var(--color-primary);color:var(--color-surface);font-weight:600;border-radius:var(--radius-sm);padding:var(--space-3) var(--space-4);margin-top:var(--space-2)}.primary:hover{background:var(--color-primary-hover)}.distance-card{margin:0 var(--space-4);padding:var(--space-4);background:var(--color-bg);border-radius:var(--radius-md)}.distance-card h3{font-size:var(--text-sm);font-weight:600;margin-bottom:var(--space-3)}.distance-metrics{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.metric strong{display:block;font-size:var(--text-xl);font-weight:600;font-variant-numeric:tabular-nums}.metric span{font-size:var(--text-xs);color:var(--color-text-muted)}.drive-time{font-size:var(--text-base);margin-top:var(--space-3)}.small{font-size:var(--text-xs)}.muted{color:var(--color-text-muted)}.distance-card .small{margin-top:var(--space-2)}.nearby-section{padding:var(--space-5) var(--space-4)}.nearby-section p{margin-top:var(--space-1);margin-bottom:var(--space-3)}.nearby-row{width:100%;text-align:left;display:flex;justify-content:space-between;gap:var(--space-3);border-bottom:1px solid var(--color-border);padding:var(--space-3) 0;font-size:var(--text-sm)}.nearby-row strong{white-space:nowrap;font-size:var(--text-sm)}.route-select{margin:0 var(--space-4) var(--space-4)}.route-stats{margin:0 var(--space-4) var(--space-4);background:var(--color-bg);padding:var(--space-4);border-radius:var(--radius-md)}.route-stats strong{font-size:var(--text-xl);display:block;font-variant-numeric:tabular-nums}.route-stats p{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-2)}.route-step{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.route-stop{display:flex;gap:var(--space-3);align-items:center;width:100%;text-align:left;font-size:var(--text-sm)}.step-index{font-size:var(--text-xs);width:24px;height:24px;border:1px solid var(--color-border);border-radius:50%;display:grid;place-items:center}.route-leg{font-size:var(--text-xs);color:var(--color-text-muted);padding-left:var(--space-10);margin-top:var(--space-1)}.route-leg strong{color:var(--color-text)}.empty{padding:var(--space-8) var(--space-4);text-align:left}.empty p{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-2)}.empty button{color:var(--color-primary);text-decoration:underline;margin-top:var(--space-4)}
.distance-map-note{position:absolute;bottom:var(--space-8);left:var(--space-4);max-width:calc(100% - 32px);padding:var(--space-3) var(--space-4);background:var(--color-surface);border-radius:var(--radius-sm);box-shadow:var(--shadow);font-size:var(--text-xs);z-index:2}.map-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-8);text-align:center;background:var(--color-bg);z-index:1}.map-loading p{font-size:var(--text-sm);color:var(--color-text-muted);margin-top:var(--space-2)}dialog{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);width:min(620px,calc(100% - 32px));max-height:85dvh;overflow:auto;padding:var(--space-6);margin:auto;box-shadow:var(--shadow)}dialog::backdrop{background:#18221d99}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.modal-head button{border:1px solid var(--color-border);padding:var(--space-2) var(--space-3);font-size:var(--text-sm);border-radius:var(--radius-sm)}dialog p{font-size:var(--text-sm);margin-top:var(--space-4)}.method-sources{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-5);font-size:var(--text-sm)}.method-sources a{min-height:44px}
.maplibregl-ctrl-attrib{font-size:12px!important}.maplibregl-ctrl-group button{min-height:29px}.maplibregl-popup-content{font-family:var(--font-body);font-size:var(--text-sm);background:var(--color-surface);color:var(--color-text)}
@media(max-width:1050px){.shell{grid-template-columns:330px minmax(0,1fr)}.topbar{padding:var(--space-4)}.date{display:none}.detail{width:300px}.legend{max-width:calc(100% - 80px)}}
@media(max-width:720px){.topbar{height:80px;padding:var(--space-3) var(--space-4)}.brand{width:28px;height:28px}.identity{gap:var(--space-3)}.identity .eyebrow{font-size:var(--text-xs);letter-spacing:.05em}h1{font-size:var(--text-lg)}.header-meta{gap:var(--space-2)}#theme{padding:var(--space-2);font-size:var(--text-xs)}.shell{height:auto;min-height:0;display:flex;flex-direction:column}.map-section{height:52dvh;min-height:350px;order:0}.panel{order:1;border-right:none;border-top:1px solid var(--color-border);min-height:460px;max-height:80dvh}.map-actions{top:var(--space-3);left:var(--space-3);gap:var(--space-1);max-width:calc(100% - 60px)}.map-actions button{padding:var(--space-2) var(--space-3);font-size:var(--text-xs)}.legend{top:68px;left:var(--space-3);right:60px;max-width:none;font-size:var(--text-xs);gap:var(--space-1) var(--space-2)}.legend span:nth-child(n+5){display:none}.route-ribbon{bottom:var(--space-8);left:var(--space-3);right:var(--space-3);padding:var(--space-3);gap:var(--space-1)}.route-ribbon strong{font-size:var(--text-sm)}.route-ribbon .eyebrow{font-size:var(--text-xs);letter-spacing:.05em}.route-ribbon>span:last-child{font-size:var(--text-xs)}.detail{left:var(--space-3);right:var(--space-3);top:var(--space-3);width:auto;max-height:calc(100% - 36px);padding:var(--space-4)}.detail p{margin-top:var(--space-3)}.detail h2{font-size:var(--text-base)}.panel-footer{font-size:var(--text-xs)}.distance-map-note{bottom:var(--space-8);left:var(--space-3);padding:var(--space-2) var(--space-3)}dialog{padding:var(--space-4)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
