.half-mile-app{--half-mile-surface:color-mix(in srgb, var(--color-card) 78%, transparent);--half-mile-soft:color-mix(in srgb, var(--color-foreground) 4%, transparent);--half-mile-line:color-mix(in srgb, var(--color-border) 78%, transparent);--mode-accent-drive:#60a5fa;--mode-accent-map:var(--color-brand);--mode-accent-rule:#fbbf24;gap:.75rem}.half-mile-page__hero{border-bottom:1px solid color-mix(in srgb, var(--color-border) 78%, transparent);margin-bottom:1.5rem;padding-bottom:1.25rem}.half-mile-page__threshold{border:1px solid color-mix(in srgb, var(--color-border) 78%, transparent);border-radius:var(--radius-lg);background:color-mix(in srgb, var(--color-foreground) 3%, transparent);text-align:right;padding:.4rem .75rem}.half-mile-app__intro{color:var(--color-muted-foreground);font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:1rem;padding-inline:.25rem;font-size:.65rem;display:flex}.half-mile-app__kicker{color:var(--color-brand-ink)}.half-mile-app .tool-panel__heading{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.half-mile-app .tool-panel__title-row{align-items:center;gap:.65rem;display:flex}.half-mile-app .tool-panel__icon{border-radius:var(--radius-md);background:color-mix(in srgb, var(--mode-accent,var(--color-brand)) 16%, transparent);width:2.1rem;height:2.1rem;color:var(--mode-accent,var(--color-brand));flex-shrink:0;justify-content:center;align-items:center;display:flex}.half-mile-app .tool-panel__icon svg{width:1.05rem;height:1.05rem}.half-mile-app .tool-panel__eyebrow,.half-mile-app .verdict-label{color:var(--color-muted-foreground);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;margin-bottom:.35rem;font-size:.62rem;display:block}.half-mile-app .tool-status{min-height:1.6rem;color:var(--color-muted-foreground);background:var(--half-mile-soft);border:1px solid var(--half-mile-line);font-family:var(--font-mono);letter-spacing:.04em;white-space:nowrap;border-radius:999px;align-items:center;padding:.25rem .55rem;font-size:.62rem;display:inline-flex}.half-mile-app .tool-status--tracking{color:var(--color-brand-ink);border-color:color-mix(in srgb, var(--color-brand) 45%, var(--color-border))}.half-mile-app .tool-status--done{color:var(--color-foreground)}.half-mile-app .mode-navigation{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-bottom:.25rem;display:grid}.half-mile-app .mode-navigation__item{width:100%;min-height:74px;color:var(--color-muted-foreground);background:var(--half-mile-soft);border:1px solid var(--half-mile-line);border-radius:var(--radius-lg);font:inherit;cursor:pointer;flex-direction:column;align-items:center;gap:.3rem;padding:.7rem .5rem;transition:color .15s,border-color .15s,background-color .15s;display:flex}.half-mile-app .mode-navigation__item[data-mode=drive]{--mode-accent:var(--mode-accent-drive)}.half-mile-app .mode-navigation__item[data-mode=map]{--mode-accent:var(--mode-accent-map)}.half-mile-app .mode-navigation__item[data-mode=rule]{--mode-accent:var(--mode-accent-rule)}.half-mile-app .mode-navigation__icon{width:1.3rem;height:1.3rem;color:var(--mode-accent,var(--color-brand));opacity:.65;transition:opacity .15s}.half-mile-app .mode-navigation__text{flex-direction:column;align-items:center;gap:.1rem;display:flex}.half-mile-app .mode-navigation__label{color:var(--color-foreground);font-family:var(--font-mono);letter-spacing:.02em;font-size:.72rem;font-weight:500}.half-mile-app .mode-navigation__hint{color:var(--color-muted-foreground);letter-spacing:.01em;font-size:.6rem}.half-mile-app .mode-navigation__item:hover{border-color:color-mix(in srgb, var(--mode-accent,var(--color-brand)) 45%, var(--half-mile-line))}.half-mile-app .mode-navigation__item:hover .mode-navigation__icon{opacity:.9}.half-mile-app .mode-navigation__item.is-active{background:color-mix(in srgb, var(--mode-accent,var(--color-brand)) 12%, var(--half-mile-surface));border-color:color-mix(in srgb, var(--mode-accent,var(--color-brand)) 55%, var(--half-mile-line));box-shadow:0 1px 3px color-mix(in srgb, var(--color-foreground) 14%, transparent)}.half-mile-app .mode-navigation__item.is-active .mode-navigation__icon{opacity:1}.half-mile-app__panel{min-width:0}.half-mile-app__swipe-dots{justify-content:center;gap:.4rem;padding-top:.15rem;display:none}.half-mile-app__swipe-dots span{background:var(--half-mile-line);border-radius:50%;width:.35rem;height:.35rem;transition:background-color .15s}.half-mile-app__swipe-dots span.is-active{background:var(--color-brand)}.half-mile-app .tool-panel{background:var(--half-mile-surface);border:1px solid var(--half-mile-line);border-left:3px solid var(--mode-accent,var(--half-mile-line));border-radius:var(--radius-xl);min-width:0;box-shadow:0 12px 30px color-mix(in srgb, var(--color-foreground) 8%, transparent);gap:1rem;padding:clamp(1rem,3vw,1.5rem);display:grid}.half-mile-app .tool-panel--drive{--mode-accent:var(--mode-accent-drive)}.half-mile-app .tool-panel--map{--mode-accent:var(--mode-accent-map)}.half-mile-app .tool-panel--rule{--mode-accent:var(--mode-accent-rule)}.half-mile-app .tool-panel h2{color:var(--color-foreground);font-size:.8rem;font-weight:500;font-family:var(--font-mono);letter-spacing:.04em;text-transform:lowercase;margin:0}.half-mile-app .muted{color:var(--color-muted-foreground);font-size:.8rem;line-height:1.5}.half-mile-app button{width:100%;min-height:44px;color:var(--color-foreground);font:inherit;background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;justify-content:center;align-items:center;gap:.5rem;padding:.55rem 1rem;font-size:.8rem;font-weight:500;transition:opacity .15s;display:inline-flex}.half-mile-app button:hover:not(:disabled){opacity:.8}.half-mile-app button:disabled{cursor:not-allowed;opacity:.35}.half-mile-app button:focus-visible{outline:2px solid var(--color-ring);outline-offset:2px}.half-mile-app .tool-panel [role=alert]{color:var(--color-destructive)}.half-mile-app .primary-action{color:var(--color-brand-foreground);background:var(--color-brand);border-color:var(--color-brand)}.half-mile-app .track-action{border-radius:var(--radius-lg);min-height:64px;font-size:1rem}.half-mile-app .drive-action-bar{width:100%}.half-mile-app .drive-action-bar-spacer{display:none}.half-mile-app .verdict{text-align:center;background:var(--half-mile-soft);border:1px solid var(--half-mile-line);border-radius:var(--radius-lg);gap:.55rem;padding:1rem;display:grid}.half-mile-app .verdict-label{margin-bottom:-.1rem}.half-mile-app .verdict-miles{color:var(--color-foreground);font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin:0;font-size:2.5rem;font-weight:600;line-height:1.1}.half-mile-app .verdict-basis{color:var(--color-muted-foreground);font-family:var(--font-mono);letter-spacing:.04em;margin:0;font-size:.7rem}.half-mile-app .verdict-within,.half-mile-app .verdict-beyond{font-family:var(--font-mono);margin:.25rem 0 0;font-size:.9rem;font-weight:600}.half-mile-app .verdict-within{color:var(--color-brand-ink)}.half-mile-app .verdict-beyond{color:var(--color-warn-ink)}.half-mile-app .verdict-close{border:1px solid var(--color-border);border-radius:var(--radius-md);background:color-mix(in srgb, var(--color-foreground) 3%, transparent);color:var(--color-muted-foreground);text-align:left;margin:0;padding:.6rem .75rem;font-size:.75rem;line-height:1.55}.half-mile-app .drive-readout{text-align:center;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;margin:0;display:grid}.half-mile-app .drive-readout div{border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.6rem .25rem}.half-mile-app .drive-readout>div:last-child:nth-child(odd){grid-column:1/-1}.half-mile-app .drive-readout dt{color:var(--color-muted-foreground);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;font-size:.65rem}.half-mile-app .drive-readout dd{color:var(--color-foreground);font-family:var(--font-mono);font-variant-numeric:tabular-nums;margin:.15rem 0 0;font-size:1.1rem}.half-mile-app .rule-explainer h3{color:var(--color-foreground);margin:.5rem 0 0;font-size:.85rem;font-weight:600}.half-mile-app .rule-explainer blockquote{border-left:2px solid var(--color-brand);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--color-foreground) 3%, transparent);color:var(--color-foreground);margin:0;padding:.75rem .9rem;font-size:.85rem;line-height:1.6}.half-mile-app .rule-explainer cite{color:var(--color-muted-foreground);font-family:var(--font-mono);letter-spacing:.04em;margin-top:.5rem;font-size:.7rem;font-style:normal;display:block}.half-mile-app .rule-aside{color:var(--color-muted-foreground);opacity:.8;margin:-.35rem 0 0;font-size:.72rem;font-style:italic;line-height:1.5}.half-mile-app .rule-quick-facts{color:var(--color-muted-foreground);margin:0;padding-left:1.1rem;font-size:.8rem;line-height:1.6;list-style:outside}.half-mile-app .rule-quick-facts li{margin:.15rem 0}.half-mile-app .route-example{border:1px solid var(--half-mile-line);border-radius:var(--radius-lg);background:var(--half-mile-soft,color-mix(in srgb, var(--color-foreground) 4%, transparent));margin:0;padding:1rem .75rem .25rem}.half-mile-app .route-example svg{width:100%;max-width:22rem;height:auto;margin:0 auto;display:block}.half-mile-app .route-example figcaption{color:var(--color-muted-foreground);margin-top:.5rem;font-size:.78rem;line-height:1.55}.half-mile-app .example-road{stroke:var(--half-mile-line);stroke-width:2px;stroke-dasharray:4 4}.half-mile-app .example-loop-outline{fill:none;stroke:var(--half-mile-line);stroke-width:2px;stroke-dasharray:3 5}.half-mile-app .example-route{fill:none;stroke:#60a5fa;stroke-width:4px;stroke-linecap:round}.half-mile-app .example-measured{fill:none;stroke:#34d399;stroke-width:4px;stroke-linecap:round}.half-mile-app .example-marker line{stroke-width:3px;stroke-linecap:round}.half-mile-app .example-marker--mailbox line{stroke:var(--color-destructive)}.half-mile-app .example-marker--door line{stroke:#34d399}.half-mile-app .example-icon--mailbox{fill:var(--color-destructive);stroke:var(--color-destructive)}.half-mile-app .example-icon--mailbox line{stroke-width:3px;stroke-linecap:round}.half-mile-app .example-icon-flag{fill:var(--color-background)}.half-mile-app .example-icon--house{fill:#fbbf24;stroke:#fbbf24}.half-mile-app .example-icon-door{fill:var(--color-background)}.half-mile-app .example-start-dot{fill:var(--color-background);stroke:#34d399;stroke-width:3px}.half-mile-app .example-leader{stroke:var(--color-muted-foreground);stroke-width:1px;stroke-dasharray:2 3}.half-mile-app .example-label{fill:var(--color-muted-foreground);font-family:var(--font-mono);font-size:10px}.half-mile-app .example-label--callout{fill:var(--color-foreground);font-weight:600}.half-mile-app .map-canvas{border:1px solid var(--color-border);border-radius:var(--radius-lg);isolation:isolate;z-index:0;touch-action:none;width:100%;height:55vh;min-height:280px;overflow:hidden}.half-mile-app .leaflet-control-attribution{background:var(--color-card)!important;color:var(--color-muted-foreground)!important;font-size:.65rem!important}.half-mile-app .leaflet-control-attribution a{color:var(--color-muted-foreground)!important}.half-mile-app .leaflet-bar{background:var(--color-card)!important;border:1px solid var(--color-border)!important;box-shadow:0 2px 8px #00000040!important}.half-mile-app .leaflet-control-zoom a{background:var(--color-card)!important;color:var(--color-foreground)!important;border-color:var(--color-border)!important}.half-mile-app .leaflet-control-zoom a:hover{background:var(--color-secondary)!important}.half-mile-app .map-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.half-mile-app .half-mile-point-marker{cursor:grab;background:#34d399;border:2px solid #fff;border-radius:50%;width:14px;height:14px;box-shadow:0 0 0 1px #00000059}.half-mile-app .half-mile-point-marker:active{cursor:grabbing}.half-mile-app .map-search{gap:.5rem;display:flex;position:relative}.half-mile-app .map-search input{min-width:0;min-height:44px;color:var(--color-foreground);font:inherit;background:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);flex:1;padding:.55rem .875rem;font-size:max(.875rem,16px);transition:border-color .15s}.half-mile-app .map-search input:focus-visible{border-color:var(--color-brand);box-shadow:0 0 0 3px color-mix(in oklch, var(--color-brand) 15%, transparent);outline:none}.half-mile-app .map-search button{width:auto;min-width:4.5rem}.half-mile-app .map-search-suggestions{z-index:1;background:var(--color-card);border:1px solid var(--color-border);border-radius:var(--radius-md);max-height:14rem;margin:0;padding:.25rem;list-style:none;position:absolute;top:calc(100% + .35rem);left:0;right:0;overflow-y:auto;box-shadow:0 8px 24px #00000040}.half-mile-app .map-search-suggestions li{border-radius:var(--radius-sm);color:var(--color-foreground);cursor:pointer;padding:.55rem .65rem;font-size:.82rem;line-height:1.4}.half-mile-app .map-search-suggestions li.is-active,.half-mile-app .map-search-suggestions li:hover{background:var(--color-secondary)}.half-mile-app .map-route-panel{border:1px solid var(--color-border);border-radius:var(--radius-md);background:color-mix(in srgb, var(--color-foreground) 3%, transparent);gap:.5rem;padding:.75rem .9rem;display:grid}.half-mile-app .map-route-actions,.half-mile-app .map-view-toggle{grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem;display:grid}.half-mile-app .map-view-toggle button.is-active{color:var(--color-brand-foreground);background:var(--color-brand);border-color:var(--color-brand)}.half-mile-app .tool-panel [role=alert]{background:color-mix(in srgb, var(--color-destructive) 9%, transparent);border:1px solid color-mix(in srgb, var(--color-destructive) 30%, transparent);border-radius:var(--radius-md);margin:0;padding:.75rem .85rem;line-height:1.5}.half-mile-app .rule-explainer{gap:1.25rem}.half-mile-app .rule-explainer h3{border-top:1px solid var(--half-mile-line);padding-top:.25rem}.half-mile-app .map-route-panel{background:var(--half-mile-soft)}@media (max-width:480px){.half-mile-app__intro{flex-direction:column;align-items:flex-start;gap:.25rem}.half-mile-app .mode-navigation__item{min-height:58px;padding:.5rem .35rem}.half-mile-app .mode-navigation__hint{display:none}.half-mile-app .drive-readout{gap:.35rem}.half-mile-app .drive-readout div{padding-inline:.1rem}.half-mile-app .map-search{flex-direction:column}.half-mile-app .map-search button{width:100%}.half-mile-app .map-canvas{height:52vh;min-height:250px}}@media (max-width:640px){.half-mile-app .drive-action-bar{z-index:40;padding:.75rem 1rem calc(.75rem + env(safe-area-inset-bottom,0px));background:color-mix(in srgb, var(--color-background) 92%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--half-mile-line);position:fixed;bottom:0;left:0;right:0}.half-mile-app .drive-action-bar-spacer{height:5.5rem;display:block}.half-mile-app__swipe-dots{display:flex}}@media (orientation:landscape) and (max-height:500px){.half-mile-page__eyebrow{margin-bottom:0}.half-mile-page__eyebrow+div h1{margin-top:.35rem;font-size:1.35rem}.half-mile-page__eyebrow+div p{display:none}.half-mile-page__threshold{display:none!important}.half-mile-app{gap:.5rem}.half-mile-app__intro,.half-mile-app__swipe-dots,.half-mile-app .tool-panel__eyebrow,.half-mile-app>.half-mile-app__panel .muted{display:none}.half-mile-app .mode-navigation{margin-bottom:0}.half-mile-app .mode-navigation__item{flex-direction:row;justify-content:center;min-height:32px;padding:.35rem}.half-mile-app .mode-navigation__hint{display:none}.half-mile-app .mode-navigation__icon{width:1rem;height:1rem}.half-mile-app .mode-navigation__label{font-size:.68rem}.half-mile-app .tool-panel{gap:.5rem;padding:.65rem .85rem}.half-mile-app .drive-readout dd{font-size:1.35rem}.half-mile-app .verdict{padding:.65rem}.half-mile-app .verdict-miles{font-size:1.9rem}.half-mile-app .drive-action-bar{background:0 0;border-top:none;padding:0;position:static}.half-mile-app .drive-action-bar-spacer{display:none}.half-mile-app .track-action{min-height:46px}}@media (prefers-reduced-motion:reduce){.half-mile-app *,.half-mile-app :before,.half-mile-app :after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
