:root { --ink:#17221c; --paper:#f3f3eb; --orange:#ef5b2a; --lime:#c6f06f; --line:#c8ccc0; --muted:#6e756e; }
* { box-sizing:border-box; }
body { margin:0; background:var(--paper); color:var(--ink); font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
button,input { font:inherit; }
button { color:inherit; }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0,0,0,0); }
:focus-visible,.preferences label:has(input:focus-visible) { outline:2px solid var(--orange); outline-offset:2px; }
.masthead { min-height:74px; display:grid; grid-template-columns:1fr auto; align-items:center; padding:0 4vw; border-bottom:1px solid var(--line); }
.brand { display:inline-flex; align-items:center; gap:10px; width:max-content; color:var(--ink); text-decoration:none; font-weight:950; letter-spacing:-1.5px; font-size:23px; }
.brand span { color:var(--orange); }
.brand img { display:block; width:40px; height:40px; border-radius:10px; }
.masthead>p { margin:0; font-family:Georgia,serif; font-style:italic; color:var(--muted); }
.hero { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(420px,.95fr); min-height:610px; border-bottom:1px solid var(--line); }
.intro { padding:76px 5vw 60px; border-right:1px solid var(--line); background:radial-gradient(circle at 15% 85%,rgba(198,240,111,.42),transparent 33%); }
.eyebrow { font-size:11px; font-weight:900; letter-spacing:.18em; color:var(--orange); }
h1 { font-size:clamp(58px,6.8vw,108px); line-height:.84; letter-spacing:-.075em; margin:55px 0 36px; max-width:800px; }
h1 em { font-family:Georgia,serif; font-weight:400; color:var(--orange); }
.lede { max-width:590px; font-size:17px; line-height:1.65; color:#4e5850; }
.planner { padding:46px 4.5vw; background:#fafaf5; }
.step { display:flex; gap:13px; align-items:center; margin:0 0 13px; }
.step span { font-size:10px; color:var(--orange); font-weight:900; }
.step p { margin:0; font-size:12px; font-weight:900; text-transform:uppercase; letter-spacing:.12em; }
.location-row { display:grid; grid-template-columns:1fr 52px; gap:8px; position:relative; }
.search-wrap { position:relative; }
input { width:100%; border:1px solid var(--line); background:white; min-height:52px; padding:0 15px; outline:none; }
input:focus { border-color:var(--orange); box-shadow:0 0 0 2px rgba(239,91,42,.12); }
.locate { border:1px solid var(--ink); background:var(--ink); color:white; font-size:22px; cursor:pointer; }
.locate:disabled { opacity:.58; cursor:wait; }
.map-hint { font-size:12px; color:var(--muted); margin:8px 0 28px; }
.search-results { position:absolute; z-index:1001; left:0; right:0; top:54px; background:white; border:1px solid var(--line); box-shadow:0 15px 30px rgba(23,34,28,.12); }
.search-results button { display:block; width:100%; border:0; border-bottom:1px solid #e7e9e2; background:white; padding:12px; text-align:left; font-size:13px; cursor:pointer; }
.search-results button:hover,.search-results button:focus-visible { background:#f1f6e4; }
.search-empty { margin:0; padding:12px; font-size:13px; color:var(--muted); }
.distance-options { display:grid; grid-template-columns:repeat(3,1fr) 1.35fr; gap:7px; margin-bottom:30px; }
.distance-options button,.distance-options label { min-height:47px; border:1px solid var(--line); background:white; display:flex; align-items:center; justify-content:center; cursor:pointer; font-weight:850; }
.distance-options button.active { background:var(--orange); border-color:var(--orange); color:white; }
.distance-options label { padding:0 9px; }
.distance-options label input { border:0; min-height:40px; min-width:0; padding:0; }
.distance-options label span { font-size:12px; color:var(--muted); }
.preferences { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin:4px 0 10px; }
.preference-presets { display:grid; grid-template-columns:repeat(4,1fr); gap:7px; margin:0 0 9px; }
.preference-presets button { min-height:44px; border:1px solid var(--line); background:white; cursor:pointer; font-size:14px; font-weight:800; padding:0 8px; }
.preference-presets button.active { background:var(--orange); border-color:var(--orange); color:white; }
.preset-hint { min-height:20px; margin:4px 0 6px; font-size:13px; color:var(--muted); }
.customise { margin:0 0 24px; border:0; }
.customise summary { display:inline-flex; padding:6px 0; font-size:13px; font-weight:800; color:var(--ink); text-decoration:underline; text-underline-offset:3px; }
.preferences label { min-height:92px; padding:12px; border:1px solid var(--line); background:white; cursor:pointer; position:relative; display:flex; flex-direction:column; justify-content:flex-end; }
.preferences input { position:absolute; opacity:0; }
.preferences .check { position:absolute; top:10px; right:10px; width:20px; height:20px; border:1px solid var(--line); display:grid; place-items:center; font-size:11px; color:transparent; }
.preferences input:checked+.check { background:var(--orange); border-color:var(--orange); color:white; }
.preferences strong { display:block; font-size:13px; }
.preferences small { color:var(--muted); font-size:11px; line-height:1.35; margin-top:3px; }
.generate { width:100%; min-height:61px; border:0; background:var(--ink); color:white; display:flex; justify-content:space-between; align-items:center; padding:0 22px; cursor:pointer; text-transform:uppercase; letter-spacing:.13em; font-weight:900; font-size:12px; }
.generate b { color:var(--lime); font-size:25px; }
.generate[disabled] { opacity:.62; cursor:wait; }
.form-error { min-height:18px; color:#a22f19; font-size:12px; margin:9px 0 0; overflow-wrap:anywhere; }
.safety-note { margin:0; color:var(--muted); font-size:11px; line-height:1.45; }
.safety-note + .safety-note { margin-top:6px; }
.map-section { height:640px; position:relative; background:#d9ddcf; border-bottom:1px solid var(--line); }
#map { height:100%; width:100%; z-index:1; position:relative; overflow:hidden; background:#dfe3d6; cursor:grab; touch-action:pan-x pan-y; }
#map.dragging { cursor:grabbing; }
#map.placing-start { cursor:crosshair; }
.map-layer { position:absolute; inset:0; transform-origin:0 0; }
.map-tiles,.route-svg { position:absolute; inset:0; width:100%; height:100%; }
.map-tiles img { position:absolute; width:256px; height:256px; user-select:none; pointer-events:none; }
.route-svg { pointer-events:none; overflow:visible; }
.route-svg path { fill:none; stroke:var(--orange); stroke-width:6; stroke-linecap:round; stroke-linejoin:round; filter:drop-shadow(0 2px 2px #17221c33); }
.map-start { position:absolute; z-index:4; width:20px; height:20px; margin:-10px 0 0 -10px; background:var(--orange); border:4px solid white; border-radius:50%; box-shadow:0 2px 8px #0005; pointer-events:none; }
.map-controls { position:absolute; z-index:505; left:18px; top:18px; display:grid; border:1px solid var(--ink); box-shadow:0 8px 22px rgba(23,34,28,.14); }
.map-controls button { width:38px; height:38px; border:0; border-bottom:1px solid var(--line); background:#fafaf5; cursor:pointer; font-size:22px; font-weight:900; line-height:1; }
.map-controls button:last-child { border-bottom:0; }
.map-controls button:hover { background:var(--lime); }
.map-pin-control { position:absolute; z-index:505; right:18px; top:18px; min-height:40px; border:1px solid var(--ink); background:#fafaf5; color:var(--ink); padding:0 13px; display:flex; align-items:center; gap:7px; cursor:pointer; font-size:10px; text-transform:uppercase; letter-spacing:.08em; box-shadow:0 8px 22px rgba(23,34,28,.14); }
.map-pin-control span { font-size:18px; line-height:1; }
.map-pin-control.active { background:var(--lime); }
.map-interaction-hint { position:absolute; z-index:504; left:50%; bottom:34px; transform:translate(-50%,8px); max-width:calc(100% - 40px); padding:9px 13px; border:1px solid var(--line); border-radius:99px; background:rgba(250,250,245,.96); color:var(--ink); font-size:10px; font-weight:800; text-align:center; pointer-events:none; opacity:0; transition:opacity .16s,transform .16s; box-shadow:0 8px 22px rgba(23,34,28,.12); }
.map-interaction-hint.visible { opacity:1; transform:translate(-50%,0); }
.map-overlay { position:absolute; z-index:500; background:rgba(250,250,245,.94); backdrop-filter:blur(8px); border:1px solid var(--line); box-shadow:0 9px 30px rgba(23,34,28,.1); }
.map-overlay.top { top:22px; left:50%; transform:translateX(-50%); border-radius:99px; padding:10px 17px; font-size:11px; font-weight:800; }
.map-attribution { position:absolute; z-index:500; right:0; bottom:0; margin:0; padding:3px 7px; background:rgba(250,250,245,.85); font-size:11px; color:var(--ink); }
.map-attribution a { color:inherit; }
.pulse { display:inline-block; width:7px; height:7px; background:var(--orange); border-radius:50%; margin-right:7px; }
.results-section { padding:34px 4vw 42px; background:#fafaf5; border-bottom:1px solid var(--line); }
.results-head { display:flex; justify-content:space-between; gap:24px; align-items:flex-end; margin-bottom:18px; }
.results-head h2 { margin:6px 0 0; font-size:clamp(32px,4vw,54px); line-height:.95; letter-spacing:-.055em; }
.route-cards { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; }
.route-card { background:#fafaf5; border:1px solid var(--ink); padding:18px; cursor:pointer; transition:transform .2s; }
.route-card:hover,.route-card.active { transform:translateY(-4px); }
.route-card.active { background:var(--ink); color:white; }
.route-card .tag { font-size:9px; font-weight:900; color:var(--orange); letter-spacing:.13em; text-transform:uppercase; }
.route-card h3 { margin:8px 0 12px; font-size:19px; }
.route-stats { display:grid; gap:5px; font-size:12px; color:var(--muted); }
.route-card.active .route-stats { color:#bdc5be; }
.route-flag { color:#9b4a24; }
.route-card.active .route-flag { color:#f0a77a; }
.route-actions { display:grid; grid-template-columns:1fr; gap:7px; margin-top:14px; }
.route-actions button { border:1px solid var(--line); background:white; color:var(--ink); min-height:35px; padding:0 8px; cursor:pointer; font-size:10px; font-weight:900; text-transform:uppercase; letter-spacing:.07em; }
.route-actions button:first-child { background:var(--lime); border-color:var(--ink); }
.route-card.active .route-actions button { border-color:#3e4a42; }
.route-feedback { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:9px; }
.route-feedback button { min-height:30px; border:1px solid var(--line); background:white; color:var(--ink); cursor:pointer; font-size:10px; font-weight:900; text-transform:uppercase; letter-spacing:.05em; padding:0 5px; }
.feedback-note { margin:14px 0 0; color:var(--muted); font-size:11px; overflow-wrap:anywhere; }
.alternative-route { border:1px solid var(--ink); background:var(--lime); min-height:42px; padding:0 16px; cursor:pointer; font-size:11px; font-weight:950; text-transform:uppercase; letter-spacing:.09em; box-shadow:0 8px 22px rgba(23,34,28,.08); white-space:nowrap; }
.alternative-route[disabled] { opacity:.62; cursor:wait; }
.keep-searching { margin-top:10px; }
.keep-searching[hidden] { display:none; }
.paywall { position:fixed; inset:0; z-index:3000; display:grid; place-items:center; padding:24px; background:rgba(23,34,28,.48); backdrop-filter:blur(8px); }
.paywall-card { position:relative; width:min(470px,100%); background:#fafaf5; border:1px solid var(--ink); box-shadow:0 28px 70px rgba(23,34,28,.32); padding:34px; }
.paywall-card h2 { margin:12px 0 12px; font-size:clamp(34px,5vw,54px); line-height:.92; letter-spacing:-.055em; }
.paywall-card p:not(.eyebrow) { color:#4e5850; line-height:1.6; }
.paywall-close { position:absolute; top:12px; right:12px; width:34px; height:34px; border:1px solid var(--line); background:white; cursor:pointer; font-size:22px; line-height:1; }
.paywall-actions { display:grid; gap:9px; margin-top:24px; }
.paywall .generate { min-height:54px; }
.beta-input { display:block; margin:18px 0 12px; }
.beta-input input { border-color:var(--ink); font-weight:850; letter-spacing:.08em; text-transform:uppercase; }
.secondary { min-height:46px; border:1px solid var(--line); background:white; cursor:pointer; font-size:12px; font-weight:900; text-transform:uppercase; letter-spacing:.1em; }
.checks { padding:72px 5vw; display:grid; grid-template-columns:.65fr 1.35fr; gap:6vw; }
.checks h2 { font-size:clamp(38px,5vw,68px); letter-spacing:-.055em; line-height:.95; margin:25px 0; }
.check-grid { display:grid; grid-template-columns:1fr 1fr; border-top:1px solid var(--line); border-left:1px solid var(--line); }
.check-grid article { min-height:180px; padding:24px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.check-grid b { color:var(--orange); font-size:10px; }
.check-grid h3 { font-size:18px; margin:28px 0 8px; }
.check-grid p { font-size:12px; line-height:1.6; color:var(--muted); max-width:230px; }
details { grid-column:2; margin-top:22px; border-top:1px solid var(--line); }
summary { padding:18px 0; cursor:pointer; font-weight:800; font-size:12px; display:flex; justify-content:space-between; }
summary span { color:var(--orange); }
.diagnostic-row { display:grid; grid-template-columns:60px 90px 1fr; gap:12px; padding:9px 0; border-top:1px solid #dddeda; font-size:11px; }
.diagnostic-row .pass { color:#337135; }.diagnostic-row .fail { color:#a22f19; }
@media (max-width:850px) {
  .masthead>p { display:none; }
  .hero { grid-template-columns:1fr; }.intro { border-right:0; padding:55px 6vw 40px; }.planner { padding:35px 6vw; }
  h1 { margin:35px 0 25px; }.intro { padding:36px 6vw 28px; }.preferences { grid-template-columns:1fr 1fr 1fr; }.preference-presets { grid-template-columns:1fr 1fr; }
  .map-section { height:650px; }
  .results-head { display:grid; gap:14px; align-items:start; }
  .alternative-route { width:max-content; max-width:100%; }
  .route-cards { grid-template-columns:1fr 1fr; }
  .checks { grid-template-columns:1fr; }.check-grid,details { grid-column:1; }
}
@media (max-width:520px) {
  .distance-options { grid-template-columns:repeat(3,1fr); }
  .distance-options label { grid-column:1/-1; }
  .preference-presets { grid-template-columns:1fr 1fr; }
  h1 { font-size:52px; margin:22px 0 18px; }.lede { font-size:15px; margin-bottom:0; }
  .preferences { grid-template-columns:1fr; }
  .preferences label { min-height:72px; }
  .map-section { height:560px; overflow:hidden; }
  .map-controls { left:14px; top:14px; }
  .map-pin-control { right:14px; top:70px; }
  .map-overlay.top { top:22px; width:calc(100% - 120px); max-width:330px; text-align:center; padding:9px 12px; }
  .results-section { padding:28px 14px 34px; }
  .results-head h2 { font-size:34px; }
  .alternative-route { width:100%; min-height:44px; font-size:10px; }
  .route-cards { grid-template-columns:1fr; gap:9px; }
  .route-card { width:100%; min-width:0; padding:15px; }
  .route-card:hover,.route-card.active { transform:none; }
  .route-card h3 { font-size:22px; margin:7px 0 8px; }
  .route-stats { gap:12px; }
  .route-actions { gap:8px; margin-top:12px; }
  .route-actions button { min-height:40px; font-size:9px; letter-spacing:.06em; padding:0 6px; }
  .route-feedback { grid-template-columns:1fr; }
  .check-grid { grid-template-columns:1fr; }
}
