@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-sans-latin-700-normal-Bxkt5Cjx.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-700-normal-Bth3BMcD.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/ibm-plex-mono-latin-700-normal-7sUh57Bg.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-700-normal-CNHXzs6v.woff)format("woff")}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-synthesis:none;text-rendering:optimizelegibility;margin:0}#root{min-height:100svh}:root{--bg:#0a0b0d;--panel:#0f1012;--raised:#17191d;--input-bg:#0c0d0f;--border:#232529;--border-hi:#30343a;--border-interactive:#6b7177;--text:#e6e9ec;--text-muted:#9aa3ad;--text-faint:#2a2e34;--placeholder:#8b939d;--accent:#3f9aa0;--accent-hi:#6fc6cb;--accent-glow:#3f9aa038;--accent-muted:#3f9aa01a;--beam:#e9eef0;--beam-edge:#c2cace;--green:#34d399;--green-bg:#34d39914;--green-ring:#34d39933;--amber:#fbbf24;--amber-bg:#fbbf2414;--amber-ring:#fbbf2433;--red:#f87171;--red-bg:#f8717114;--red-ring:#f8717133;--r-sm:6px;--r:10px;--r-lg:14px;--shadow:0 8px 40px #0009;--shadow-sm:0 2px 12px #0006;--font-sans:"IBM Plex Sans", system-ui, -apple-system, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace}*,:before,:after{box-sizing:border-box}body{font-family:var(--font-sans);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-size:.875rem;line-height:1.5}.plan-page{background:var(--panel);flex-direction:column;min-height:100svh;display:flex}.layout-body{flex-direction:column;flex:1;min-height:0;display:flex}.content-pane{flex-direction:column;display:flex}.app-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.header-actions{align-items:center;gap:12px;display:flex}@media (width<=560px){.header-repo-link{display:none}.app-title{letter-spacing:.06em;white-space:normal;text-overflow:clip;font-size:.6875rem;overflow:visible}}.brand{flex-direction:column;gap:1px;min-width:0;display:flex}.wordmark{font-family:var(--font-mono);letter-spacing:.01em;color:var(--beam);align-items:center;gap:9px;font-size:1.375rem;font-weight:700;line-height:1;display:inline-flex}.wordmark:before{content:"";background:var(--accent-hi);width:9px;height:9px;box-shadow:0 0 0 3px var(--accent-muted);border-radius:1px;flex-shrink:0}.app-title{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;margin:0;padding-left:18px;font-size:.75rem;font-weight:500;overflow:hidden}.app-footer{border-top:1px solid var(--border);justify-content:center;padding:13px 16px;display:flex}.app-footer a,.header-repo-link{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);align-items:center;min-height:24px;padding:0 4px;font-size:.6875rem;font-weight:500;text-decoration:none;display:inline-flex}.app-footer a:hover,.header-repo-link:hover{color:var(--text)}.app-footer a:focus-visible,.header-repo-link:focus-visible{outline:2px solid var(--accent-hi);outline-offset:2px;border-radius:var(--r-sm)}.language-switcher{flex-direction:column;align-items:center;gap:3px;display:inline-flex}.language-switcher__label{color:var(--text-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem;line-height:1.2}.language-switcher select{appearance:none;background:var(--raised);border:1px solid var(--border-interactive);color:var(--text-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;border-radius:var(--r-sm);cursor:pointer;outline:none;padding:5px 9px;font-size:.6875rem}.language-switcher select:focus{border-color:var(--accent-hi);box-shadow:0 0 0 2px var(--accent-hi)}.map-container{background:var(--bg);flex-shrink:0;height:46svh;min-height:280px}.map-loading{background:var(--bg);width:100%;height:100%}@media (width>=900px){.plan-page{height:100svh;min-height:0}.layout-body{grid-template-columns:1fr min(420px,38%);min-height:0;display:grid}.map-container{min-width:0;height:100%;min-height:0}.content-pane{min-width:0;overflow-y:auto}}.route-panel{border-bottom:1px solid var(--border);--suggest-h:9rem;flex-direction:column;gap:10px;padding:16px;display:flex}.input-group{flex-direction:column;gap:5px;display:flex;position:relative}.route-panel label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);font-size:.625rem;font-weight:500}.input-wrap{align-items:center;display:flex;position:relative}.route-panel input[inputmode=search]{width:100%;font-size:.875rem;font-family:var(--font-sans);color:var(--text);background:var(--input-bg);border:1px solid var(--border-interactive);border-radius:var(--r);outline:none;padding:10px 40px 10px 12px;transition:border-color .15s,box-shadow .15s}.route-panel input[inputmode=search]::placeholder{color:var(--placeholder)}.route-panel input[inputmode=search]:focus{border-color:var(--accent-hi);box-shadow:0 0 0 2px var(--accent-hi)}.geo-btn{border-radius:var(--r-sm);width:26px;height:26px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:flex;position:absolute;right:8px}.geo-btn:hover{color:var(--accent-hi);background:var(--accent-muted)}.geo-btn:disabled{opacity:.3;cursor:not-allowed}.suggestions{background:var(--raised);border:1px solid var(--border-interactive);border-radius:var(--r);box-shadow:var(--shadow);z-index:200;max-height:var(--suggest-h);margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 6px);left:0;right:0;overflow-y:auto}.suggestions li button{text-align:left;width:100%;color:var(--text);font-size:.8125rem;font-family:var(--font-sans);cursor:pointer;border-radius:var(--r-sm);background:0 0;border:none;padding:9px 11px;line-height:1.35;transition:background .1s}.suggestions li button:hover,.suggestions li button:focus{background:var(--accent-muted);outline:none}.suggestions li button[aria-selected=true]{background:var(--accent-muted);outline:2px solid var(--accent-hi);outline-offset:-2px}.suggestion-status{color:var(--text-muted);padding:9px 11px;font-size:.8125rem;line-height:1.35}.suggestion-status.error{color:var(--red)}.field-error{color:var(--red);margin:2px 0 0;font-size:.75rem}.preference,.avoidance-control{border:none;flex-direction:column;gap:6px;min-width:0;margin:0;padding:0;display:flex}.preference legend,.avoidance-control legend{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);float:none;width:100%;margin-bottom:0;padding:0;font-size:.625rem;font-weight:500}.route-panel button[type=submit]{font-size:.875rem;font-weight:600;font-family:var(--font-sans);color:var(--bg);background:var(--beam);border-radius:var(--r);cursor:pointer;letter-spacing:.02em;border:none;margin-top:2px;padding:12px;transition:background .15s,box-shadow .15s}.route-panel button[type=submit]:hover:not(:disabled){box-shadow:0 0 0 3px var(--accent-glow);background:#fff}.route-panel button[type=submit]:focus-visible{outline:2px solid var(--accent-hi);outline-offset:2px}.route-panel button[type=submit]:disabled{background:var(--border-hi);color:var(--text-muted);cursor:not-allowed}.result-section{flex-direction:column;flex:1;display:flex}.camera-summary{background:var(--raised);border-bottom:1px solid var(--border);color:var(--text-muted);align-items:center;gap:8px;padding:10px 16px;font-size:.8125rem;display:flex}.camera-summary .avoided-badge{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--green);background:var(--green-bg);border:1px solid var(--green-ring);border-radius:100px;align-items:center;gap:5px;padding:3px 10px;font-size:.6875rem;font-weight:500;display:inline-flex}.camera-summary .exposed{color:var(--amber);font-size:.75rem}.camera-summary details{font-size:.75rem}.camera-summary summary{cursor:pointer;color:var(--amber)}.camera-summary ul{color:var(--text-muted);margin:4px 0 0;padding-left:16px}.route-result{flex-direction:column;gap:16px;padding:16px;display:flex}.status{font-family:var(--font-sans);color:var(--text);background:var(--panel);border:1px solid var(--border);border-radius:var(--r);border-left-width:3px;align-self:stretch;align-items:flex-start;gap:12px;padding:13px 15px 13px 13px;font-size:.875rem;font-weight:600;line-height:1.45;display:flex}.status:before{content:"";border-radius:2px;flex-shrink:0;width:9px;height:9px;margin-top:5px}.status.clean{background:var(--green-bg);border-color:var(--green-ring);border-left-color:var(--green)}.status.clean:before{background:var(--green);box-shadow:0 0 0 3px var(--green-bg)}.status.exposed{background:var(--amber-bg);border-color:var(--amber-ring);border-left-color:var(--amber)}.status.exposed:before{background:var(--amber);box-shadow:0 0 0 3px var(--amber-bg)}.stats{font-family:var(--font-mono);flex-wrap:wrap;gap:6px;margin:0;padding:0;font-size:.6875rem;list-style:none;display:flex}.stats li{background:var(--raised);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding:5px 9px}.stats li:first-child,.stats li:nth-child(2){color:var(--text);border-color:var(--border-hi)}.stats li.fastest-exposes{color:var(--amber)}.comparison-toggle{background:var(--raised);border:1px solid var(--border-hi);border-radius:var(--r);color:var(--text-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;align-self:flex-start;margin-top:8px;padding:6px 12px;font-size:.6875rem;transition:color .15s,border-color .15s}.comparison-toggle:before{content:"";vertical-align:middle;border-top:2px dashed #9ca3af;width:16px;height:0;margin-right:7px;display:inline-block}.comparison-toggle:hover,.comparison-toggle:focus-visible{color:var(--text);border-color:var(--accent)}.route-result h3{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.09em;color:var(--text-muted);margin:0;font-size:.625rem;font-weight:500}.directions{counter-reset:step;flex-direction:column;gap:2px;margin:0;padding:0;font-size:.8125rem;list-style:none;display:flex}.directions li{border-radius:var(--r-sm);color:var(--text);counter-increment:step;align-items:baseline;gap:12px;padding:9px 10px;line-height:1.5;display:flex}.directions li:before{content:counter(step, decimal-leading-zero);font-family:var(--font-mono);letter-spacing:.02em;color:var(--accent-hi);text-align:right;flex-shrink:0;min-width:20px;padding-top:1px;font-size:.625rem;font-weight:600}.directions li:hover{background:var(--raised)}.export-warning{border:1px solid var(--amber-ring);background:var(--amber-bg);border-radius:var(--r);color:var(--amber);flex-direction:column;gap:8px;padding:14px;font-size:.8125rem;display:flex}.export-warning p{margin:0}.export-warning .export-risk{font-weight:500}.export-warning .export-howto{color:var(--text-muted)}.export-warning .export-confirm{background:var(--raised);border:1px solid var(--border-hi);border-radius:var(--r-sm);color:var(--text);font-size:.8125rem;font-weight:500;font-family:var(--font-sans);cursor:pointer;padding:9px 12px;transition:border-color .15s}.export-warning .export-confirm:hover{border-color:var(--accent)}.export-warning button{border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-muted);font-size:.8125rem;font-family:var(--font-sans);cursor:pointer;background:0 0;padding:8px;transition:color .15s,border-color .15s}.export-warning button:hover{color:var(--text);border-color:var(--border-hi)}.export-gpx-btn{background:var(--raised);border:1px solid var(--border-hi);border-radius:var(--r);color:var(--text-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;cursor:pointer;align-self:flex-start;padding:9px 14px;font-size:.6875rem;transition:color .15s,border-color .15s}.export-gpx-btn:hover{color:var(--text);border-color:var(--accent)}.coverage-warning{color:var(--amber);margin:0;font-size:.75rem}.error{color:var(--red);background:var(--red-bg);border-top:1px solid var(--red-ring);border-bottom:1px solid var(--red-ring);margin:0;padding:12px 16px;font-size:.8125rem}.camera-popup-shell .maplibregl-popup-content{background:var(--panel);color:var(--text);border:1px solid var(--border-hi);border-radius:var(--r);box-shadow:var(--shadow);padding:12px 14px;font-size:.8125rem}.camera-popup-shell.maplibregl-popup-anchor-top .maplibregl-popup-tip,.camera-popup-shell.maplibregl-popup-anchor-top-left .maplibregl-popup-tip,.camera-popup-shell.maplibregl-popup-anchor-top-right .maplibregl-popup-tip{border-bottom-color:var(--panel)}.camera-popup-shell.maplibregl-popup-anchor-bottom .maplibregl-popup-tip,.camera-popup-shell.maplibregl-popup-anchor-bottom-left .maplibregl-popup-tip,.camera-popup-shell.maplibregl-popup-anchor-bottom-right .maplibregl-popup-tip{border-top-color:var(--panel)}.camera-popup-shell.maplibregl-popup-anchor-left .maplibregl-popup-tip{border-right-color:var(--panel)}.camera-popup-shell.maplibregl-popup-anchor-right .maplibregl-popup-tip{border-left-color:var(--panel)}.camera-popup-shell .maplibregl-popup-close-button{color:var(--text-muted);min-width:24px;min-height:24px;padding:2px 8px;font-size:1.125rem}.camera-popup-shell .maplibregl-popup-close-button:hover{color:var(--text);background:0 0}.camera-popup__title{color:var(--text);margin-bottom:8px;padding-right:12px;font-weight:600}.camera-popup__row{justify-content:space-between;gap:16px;line-height:1.7;display:flex}.camera-popup__k{color:var(--text-muted)}.camera-popup__v{color:var(--text)}.route-notice{color:var(--text);background:var(--amber-bg);border-top:1px solid var(--amber-ring);border-bottom:1px solid var(--amber-ring);border-left:3px solid var(--amber);align-items:flex-start;gap:12px;margin:0;padding:13px 16px;font-size:.875rem;font-weight:600;line-height:1.5;display:flex}.route-notice:before{content:"";background:var(--amber);width:9px;height:9px;box-shadow:0 0 0 3px var(--amber-bg);border-radius:2px;flex-shrink:0;margin-top:6px}@media (prefers-reduced-motion:no-preference){.status,.route-notice{animation:.28s cubic-bezier(.2,.7,.2,1) both verdict-in}@keyframes verdict-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}}.visually-hidden{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.directions-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.print-btn{border-radius:var(--r-sm);width:26px;height:26px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,background .15s;display:inline-flex}.print-btn:hover,.print-btn:focus-visible{color:var(--accent-hi);background:var(--accent-muted)}.printable-directions{display:none}@media print{.app-header,.app-footer,.map-container,.route-panel,.route-notice,.camera-summary,.route-result .status,.route-result .stats,.comparison-toggle,.coverage-warning,.export-gpx-btn,.export-warning,.route-result h3,.directions,.print-btn{display:none!important}html,body,.plan-page,.layout-body,.content-pane,.result-section,.route-result{color:#000!important;box-shadow:none!important;background:#fff!important}.directions-header{display:block}.printable-directions{color:#000;background:#fff;font-size:14pt;display:block}.printable-directions .print-heading{margin:0 0 12pt;font-size:20pt}.printable-directions .print-trip{flex-direction:column;gap:2pt;margin:0 0 6pt;font-size:13pt;display:flex}.printable-directions .print-totals{margin:0 0 16pt;font-size:12pt}.printable-directions .print-steps{margin:0 0 16pt;padding-left:1.6em;list-style:decimal}.printable-directions .print-steps li{break-inside:avoid;page-break-inside:avoid;margin-bottom:10pt;font-size:14pt;line-height:1.5}.printable-directions .print-notice{border-top:1px solid #000;margin:16pt 0 0;padding-top:8pt;font-size:10pt}}
