/* Platinum Paving d2 "Lot Plan". One idea: the lot draws itself, dimensions and tick marks are the visual vocabulary.
   Light = paper plan. Dark = blueprint night. */
@font-face{font-family:"Space Grotesk";font-weight:300 700;font-style:normal;font-display:swap;src:url(../assets/fonts/sg.woff2) format("woff2")}
@font-face{font-family:"IBM Plex Mono";font-weight:500;font-style:normal;font-display:swap;src:url(../assets/fonts/pm500.woff2) format("woff2")}

:root{
  --paper:#E6E1D6; --paper-2:#DCD6C9; --card:#F2EEE5; --ink:#14161A; --ink-2:#3A3E46;
  --blue:#025FB5; --blue-ink:#014A92; --yellow:#FFC20E; --on-yellow:#14161A; --red:#D7262B; --red-ink:#A3151B;
  --line:rgba(20,22,26,.26); --line-2:rgba(20,22,26,.55); --grid:rgba(2,95,181,.10); --grid2:rgba(2,95,181,.20);
  --banner-bg:#14161A; --banner-fg:#E6E1D6;
  --pl-slab:#4B4E55; --pl-line:#F6F3EC; --pl-perim:#14161A; --pl-dim:#014A92; --pl-ada:#025FB5; --pl-text:#14161A;
  --focus:#014A92; --meta-theme:#E6E1D6; --shadow:rgba(20,22,26,.18);
  --thm-bg:transparent; --thm-fg:var(--ink); --thm-bd:var(--ink); --thm-pop-bg:var(--card); --thm-pop-fg:var(--ink); --thm-pop-bd:var(--ink); --thm-on-bg:var(--ink); --thm-on-fg:var(--paper); --thm-mute:var(--ink-2); --thm-font:var(--f-d);
  --f-d:"Space Grotesk","Arial Narrow",system-ui,sans-serif; --f-m:"IBM Plex Mono",ui-monospace,Consolas,monospace;
  /* scale 12 14 16 20 28 40 64 96 */
  --s-12:.75rem; --s-14:.875rem; --s-16:1rem; --s-20:1.25rem; --s-28:1.75rem; --s-40:clamp(1.75rem,4.6vw,2.5rem); --s-64:clamp(2.4rem,5.6vw,4rem); --s-96:clamp(2.5rem,6.2vw,5.4rem);
  --ease:cubic-bezier(.22,1,.36,1); --ease-t:cubic-bezier(.65,0,.35,1);
  --gut:clamp(16px,4vw,40px); --sec:clamp(64px,9vw,136px);
}
html[data-theme=dark]{
  --paper:#0A1020; --paper-2:#0E1730; --card:#101B36; --ink:#EAF1FF; --ink-2:#A9B8D6;
  --blue:#4C9AFF; --blue-ink:#8DBBFF; --yellow:#FFC20E; --red:#FF4B50; --red-ink:#FF8185;
  --line:rgba(125,180,255,.30); --line-2:rgba(141,187,255,.62); --grid:rgba(76,154,255,.10); --grid2:rgba(76,154,255,.20);
  --banner-bg:#050812; --banner-fg:#EAF1FF;
  --pl-slab:#1C2A4A; --pl-line:#E4EFFF; --pl-perim:#5FA6FF; --pl-dim:#8DBBFF; --pl-ada:#2F7BFF; --pl-text:#EAF1FF;
  --focus:#FFC20E; --meta-theme:#0A1020; --shadow:rgba(0,0,0,.5);
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:16px}
body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--s-16)/1.6 var(--f-d);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.has-sbar{padding-bottom:calc(76px + env(safe-area-inset-bottom))}
[hidden]{display:none!important}
img,svg,canvas{display:block;max-width:100%}
h1,h2,h3,p,dl,dd,ol,ul,figure{margin:0}
ol,ul{padding:0;list-style:none}
h1,h2,h3{font-weight:700;letter-spacing:-.025em;line-height:1.02}
p{margin:0 0 1em}
a{color:inherit}
button,input,select{font:inherit;color:inherit}
.mono{font-family:var(--f-m);font-weight:500;letter-spacing:.02em}
.muted{color:var(--ink-2)}
.dim{color:var(--ink-2)}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:-1px}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.wrap{width:100%;max-width:1360px;margin-inline:auto;padding-inline:var(--gut)}
.skip{position:absolute;left:12px;top:-80px;z-index:200;background:var(--yellow);color:var(--on-yellow);padding:12px 16px;font-weight:700;text-decoration:none}
.skip:focus{top:12px}

/* banner + header */
.banner{background:var(--banner-bg);color:var(--banner-fg);font-size:var(--s-14);line-height:1.4;padding:10px var(--gut);text-align:left}
.banner a{color:inherit;text-underline-offset:3px}
.top{position:relative;z-index:30;border-bottom:1px solid var(--line)}
.top__in{display:flex;align-items:center;gap:16px;min-height:68px}
.brand{display:block;flex:none;line-height:0}
.brand img{height:44px;width:auto}
.nav{display:none;margin-left:auto;gap:28px}
.nav a{font-size:var(--s-14);font-weight:600;text-decoration:none;padding:12px 2px;position:relative}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:6px;height:2px;background:var(--ink);transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease)}
.nav a:hover::after,.nav a:focus-visible::after{transform:scaleX(1)}
.top__act{display:flex;align-items:center;gap:10px;margin-left:auto}
.top .top__call{display:none}
@media(min-width:900px){.nav{display:flex}.top__act{margin-left:24px}.top .top__call{display:inline-flex}}

/* buttons */
.btn{--mx:0px;--my:0px;display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:10px 20px;font-weight:700;font-size:var(--s-16);line-height:1.1;text-decoration:none;cursor:pointer;border:2px solid var(--ink);background:transparent;color:var(--ink);translate:var(--mx) var(--my);transition:translate .35s var(--ease),box-shadow .2s var(--ease),background-color .2s,color .2s}
.btn .ic{width:20px;height:20px;flex:none}
.btn:hover{box-shadow:4px 4px 0 var(--ink)}
.btn:active{box-shadow:none;transform:translate(1px,1px)}
.btn--y{background:var(--yellow);color:var(--on-yellow);border-color:var(--ink)}
html[data-theme=dark] .btn{border-color:var(--ink)}
html[data-theme=dark] .btn--y{border-color:var(--yellow)}
html[data-theme=dark] .btn:hover{box-shadow:4px 4px 0 var(--blue)}
.btn--line:hover{background:var(--ink);color:var(--paper)}
.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
.ulink{font-weight:700;text-underline-offset:5px;text-decoration-thickness:2px}
.ulink:hover{text-decoration-color:var(--blue)}

/* theme toggle */
.thm{position:relative;flex:none;line-height:1}
.thm-btn{width:44px;height:44px;min-width:44px;padding:0;display:grid;place-items:center;cursor:pointer;background:var(--thm-bg);color:var(--thm-fg);border:2px solid var(--thm-bd);transition:transform .25s var(--ease)}
.thm-btn:active{transform:scale(.94)}
.thm-btn svg{width:22px;height:22px}
.thm-btn .i-sun,.thm-btn .i-moon,.thm-btn .i-auto{display:none}
html[data-theme-mode=auto] .thm-btn .i-auto,html[data-theme-mode=light] .thm-btn .i-sun,html[data-theme-mode=dark] .thm-btn .i-moon{display:block}
.thm-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:90;width:max-content;min-width:236px;max-width:min(300px,calc(100vw - 24px));padding:6px;background:var(--thm-pop-bg);color:var(--thm-pop-fg);border:2px solid var(--thm-pop-bd);box-shadow:6px 6px 0 var(--shadow);text-align:left}
.thm-menu[hidden]{display:none}
.thm-menu button{display:flex;align-items:center;gap:12px;width:100%;min-height:48px;padding:6px 12px;background:transparent;color:inherit;border:0;cursor:pointer;text-align:left;font-family:var(--thm-font,inherit);transition:background-color .2s}
.thm-menu button:hover{background:rgba(127,127,127,.18)}
.thm-menu button[aria-pressed=true]{background:var(--thm-on-bg);color:var(--thm-on-fg)}
.thm-menu button[aria-pressed=true] small{color:inherit}
.thm-menu b{display:block;font-size:1rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.thm-menu small{display:block;font-size:.8125rem;color:var(--thm-mute);letter-spacing:.02em;text-transform:none;font-weight:500}
.thm-ic svg{width:22px;height:22px;display:block}
.thm-ic .i-sun,.thm-ic .i-moon,.thm-ic .i-auto{display:block}
html.theme-anim,html.theme-anim *,html.theme-anim *::before,html.theme-anim *::after{transition:background-color .3s ease,color .3s ease,border-color .3s ease,fill .3s ease,stroke .3s ease,opacity .3s ease!important}
[data-theme-slot]{display:block;width:44px;height:44px;flex:none}

/* section heads: measuring-line vocabulary */
.sh{display:flex;align-items:center;gap:12px;margin-bottom:clamp(28px,4vw,56px);font-size:var(--s-12);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}
.sh__n{flex:none}
.sh__t{flex:none;color:var(--ink)}
.sh__line{flex:1;height:14px;min-width:20px;position:relative}
.sh__line::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:var(--line-2)}
.sh__line::after{content:"";position:absolute;left:0;right:0;top:0;bottom:0;background:linear-gradient(var(--line-2),var(--line-2)) left/1px 100% no-repeat,linear-gradient(var(--line-2),var(--line-2)) right/1px 100% no-repeat}
.sec{padding-block:var(--sec)}
.sec--tight{padding-block:calc(var(--sec) * .7)}
.sec--grid{background:linear-gradient(var(--grid) 1px,transparent 1px) 0 0/24px 24px,linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0/24px 24px,linear-gradient(var(--grid2) 1px,transparent 1px) 0 0/120px 120px,linear-gradient(90deg,var(--grid2) 1px,transparent 1px) 0 0/120px 120px,var(--paper-2);border-block:1px solid var(--line)}
h2{font-size:var(--s-40)}
.fine{font-size:var(--s-12);line-height:1.5;color:var(--ink-2);letter-spacing:.03em;margin:0}
.eyebrow{font-size:var(--s-12);text-transform:uppercase;letter-spacing:.1em;color:var(--blue-ink)}

/* ---------- STORY ---------- */
.story{display:grid;grid-template-columns:minmax(0,1fr);position:relative}
.stage-wrap{position:sticky;top:0;z-index:5;order:-1;height:clamp(250px,38svh,340px);background:var(--paper);padding:8px var(--gut) 0}
.stage{position:relative;height:100%;overflow:hidden;border:1px solid var(--line-2);background:linear-gradient(var(--grid) 1px,transparent 1px) 0 0/20px 20px,linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0/20px 20px,linear-gradient(var(--grid2) 1px,transparent 1px) 0 0/100px 100px,linear-gradient(90deg,var(--grid2) 1px,transparent 1px) 0 0/100px 100px,var(--paper-2)}
.hero-svg,.lot-canvas{position:absolute;inset:0;width:100%;height:100%}
.hero-svg{transition:opacity .9s ease}
.lot-canvas{opacity:0;transition:opacity .9s ease;touch-action:pan-y}
.stage.is3d .lot-canvas{opacity:1}
.stage.is3d .hero-svg{opacity:0!important;visibility:hidden;transition:opacity .9s ease,visibility 0s .9s}
.st-tag,.st-step{position:absolute;top:10px;margin:0;font-size:var(--s-12);line-height:1.2;text-transform:uppercase;letter-spacing:.08em;color:var(--ink);background:var(--paper-2);padding:4px 8px;border:1px solid var(--line-2)}
.st-tag{left:10px}.st-tag span{color:var(--blue-ink)}
.st-step{right:10px}
.mbtn{position:absolute;left:10px;bottom:10px;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px 0 10px;background:var(--paper);color:var(--ink);border:2px solid var(--ink);font:700 var(--s-14)/1 var(--f-d);cursor:pointer;transition:box-shadow .2s var(--ease)}
.mbtn:hover{box-shadow:3px 3px 0 var(--ink)}
.mbtn svg{width:20px;height:20px}
.mbtn .i-play{display:none}.stage.paused .mbtn .i-play{display:block}.stage.paused .mbtn .i-pause{display:none}
.tblock{position:absolute;right:10px;bottom:10px;margin:0;display:none;border:1px solid var(--line-2);background:var(--paper-2);font-size:var(--s-12);text-transform:uppercase;letter-spacing:.05em}
.tblock div{display:flex;justify-content:space-between;gap:18px;padding:3px 8px;border-top:1px solid var(--line)}
.tblock div:first-child{border-top:0}
.tblock dt{color:var(--ink-2)}.tblock dd{margin:0}
.steps{padding-inline:var(--gut)}
.step{min-height:min(60svh,480px);padding-block:clamp(28px,6vw,56px);display:flex;flex-direction:column;justify-content:center;max-width:560px}
.step .step-n span{transition:color .4s}
.step:not(.is-on) .step-n span{color:var(--ink-2)}
.step--hero{min-height:0;justify-content:flex-start;padding-top:clamp(20px,4vw,40px);padding-bottom:clamp(36px,8vw,80px)}
h1{font-size:var(--s-96);line-height:.96;letter-spacing:-.035em;margin:8px 0 18px;text-wrap:balance}
.lede{font-size:var(--s-20);line-height:1.5;max-width:30em;color:var(--ink);margin-bottom:24px}
.book__lab{font-size:var(--s-12);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-2);margin:0 0 10px}
.cta{display:flex;flex-wrap:wrap;gap:12px}
.ai{font-size:var(--s-12);line-height:1.5;margin:14px 0 0;max-width:34em;color:var(--ink-2)}
.ct__ai{margin:-8px 0 22px;max-width:30em}
.lead-links{margin:22px 0 0;display:flex;flex-wrap:wrap;gap:10px 22px;align-items:center}
.lead-links .mono{font-size:var(--s-12);text-transform:uppercase;letter-spacing:.06em}
.step-n{font-size:var(--s-12);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-2);display:flex;align-items:center;gap:12px;margin-bottom:14px}
.step-n span{font-size:var(--s-28);letter-spacing:0;color:var(--blue-ink);line-height:1}
.step h2{margin-bottom:14px;text-wrap:balance}
.step p{max-width:32em}
.price{font-size:var(--s-20);margin:18px 0 6px!important;padding:10px 0;border-block:1px solid var(--line-2);display:block}
.price b{font-size:var(--s-28);letter-spacing:-.02em}
.price i{font-style:normal;color:var(--ink-2);padding:0 6px}
@media(min-width:900px){
  .story{grid-template-columns:minmax(0,5fr) minmax(0,7fr);column-gap:clamp(8px,2vw,32px)}
  .stage-wrap{order:0;grid-column:2;grid-row:1;align-self:start;height:min(100svh,880px);padding:0 var(--gut) 0 0;background:transparent}
  .steps{grid-column:1;grid-row:1;padding-inline:var(--gut) 0;margin-left:max(0px,calc((100vw - 1360px)/2))}
  .stage{height:calc(100% - 16px);margin-top:12px}
  .step{min-height:92svh;max-width:none;padding-right:clamp(0px,2vw,24px)}
  .step--hero{min-height:calc(92svh - 40px);justify-content:center}
  .tblock{display:block}
  .st-tag,.st-step{top:14px}.st-tag{left:14px}.st-step{right:14px}
  .mbtn{left:14px;bottom:14px}.tblock{right:14px;bottom:14px}
}
@media(min-width:1500px){.steps{margin-left:calc((100vw - 1360px)/2)}.stage-wrap{padding-right:max(var(--gut),calc((100vw - 1360px)/2 + var(--gut)))}}

/* hero entrance (Instant Open): content glides in on first paint, no gate */
.hero-in>*{animation:rise .8s var(--ease) both;animation-delay:calc(var(--i,0) * 80ms + 40ms)}
@keyframes rise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

/* plan svg */
.pl-slab{fill:var(--pl-slab)}
.pl-seal{fill:#000;opacity:0}
.pl-left{color:var(--ink-2)}
.pl-line{fill:none;stroke:var(--pl-line);stroke-width:calc(.8px * var(--sf,1))}
.pl-arrow{fill:var(--pl-line)}
.pl-ada{fill:var(--pl-ada)}
.pl-glyph{fill:none;stroke:#fff;stroke-width:.1px;stroke-linecap:round;stroke-linejoin:round}
.pl-perim{fill:none;stroke:var(--pl-perim);stroke-width:calc(1.1px * var(--sf,1))}
.pl-dim{fill:none;stroke:var(--pl-dim);stroke-width:calc(.34px * var(--sf,1))}
.pl-t{fill:var(--pl-text);font-family:var(--f-m);font-weight:500;paint-order:stroke;stroke:var(--paper-2);stroke-width:calc(1.4px * var(--sf,1));stroke-linejoin:round}
.pl-redtag{fill:#fff;stroke:none;opacity:0}
.pl-red{fill:var(--red);transform-box:fill-box;transform-origin:0 50%;transform:scaleX(.0001)}
.wave{transform-box:fill-box;transform-origin:0 50%}
.pl-head{fill:var(--yellow);opacity:0}
.pl-sheenband{opacity:0}
.go .dl{stroke-dasharray:1;stroke-dashoffset:1;animation:draw var(--dur,.6s) var(--ease) var(--d,0s) forwards}
.go .fd{opacity:0;animation:fade .6s var(--ease) var(--d,0s) forwards}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes fade{to{opacity:1}}
.stage.paused .dl,.stage.paused .fd{animation-play-state:paused}

/* ---------- LEGEND (services) ---------- */
.legend{display:grid;gap:36px}
.legend__head h2{margin-bottom:12px;max-width:12em;text-wrap:balance}
.legend__head p{max-width:26em}
.leg{border-top:2px solid var(--ink)}
.leg__row{display:grid;grid-template-columns:72px minmax(0,1fr);gap:6px 16px;padding:22px 0;border-bottom:1px solid var(--line-2);align-items:start}
.sw{width:72px;height:42px;border:1px solid var(--line-2)}
.sw-bg{fill:#2C2F36}.sw-bg--seal{fill:#0E1014}
html[data-theme=dark] .sw-bg{fill:#1C2A4A}html[data-theme=dark] .sw-bg--seal{fill:#060A15}
.sw-line{stroke:#F6F3EC;stroke-width:3;fill:none}.sw-arrow{stroke:var(--yellow);stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round}
.sw-conc{fill:#B9B3A6}html[data-theme=dark] .sw-conc{fill:#3A4A75}.sw-hatch{stroke:rgba(20,22,26,.4);stroke-width:1.4;fill:none}html[data-theme=dark] .sw-hatch{stroke:rgba(200,220,255,.35)}
.sw-spk{stroke:#6B6F78;stroke-width:3;stroke-linecap:round}
.leg__main h3{font-size:var(--s-28);margin-bottom:6px}
.leg__main p{margin:0;color:var(--ink-2);max-width:30em}
.leg__price{grid-column:2;font-size:var(--s-14);line-height:1.5;margin:6px 0 0}
.leg__price b{font-size:var(--s-20);font-weight:500}
.leg__price span{color:var(--ink-2)}
.leg__fine{grid-column:2;font-size:var(--s-12);color:var(--ink-2);margin:0;line-height:1.4}
@media(min-width:900px){
  .legend{grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:clamp(24px,5vw,80px);align-items:start}
  .legend__head{position:sticky;top:24px}
  .leg__row{grid-template-columns:96px minmax(0,1fr) 190px;gap:8px 24px;padding:28px 0}
  .sw{width:96px;height:56px}
  .leg__price{grid-column:3;grid-row:1;text-align:right;margin:0}
  .leg__fine{grid-column:2 / 4;grid-row:2}
}

/* ---------- PLAN YOUR LOT ---------- */
.lp{display:grid;gap:32px}
.lp__ctl h2{margin-bottom:10px}
.fld{margin:18px 0 0}
.fld label{display:block;font-family:var(--f-m);font-weight:500;font-size:var(--s-12);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px}
.fld__in{display:flex;align-items:center;border:2px solid var(--ink);background:var(--card)}
.fld input[type=text],.step-in input{width:100%;min-height:48px;padding:8px 12px;border:0;background:transparent;font:500 var(--s-20)/1 var(--f-m);-webkit-appearance:none;appearance:none;border-radius:0}
.fld__in span{padding:0 14px;color:var(--ink-2);font-size:var(--s-14)}
.fld__in:focus-within,.step-in:focus-within,.cf input:focus,.cf select:focus{outline:3px solid var(--focus);outline-offset:2px}
.fld input:focus-visible,.step-in input:focus-visible{outline:none}
.fld input[aria-invalid=true],.cf input[aria-invalid=true]{background:rgba(215,38,43,.12)}
.rng{width:100%;margin:10px 0 0;accent-color:var(--blue);height:24px}
.step-in{display:flex;border:2px solid var(--ink);background:var(--card);max-width:240px}
.step-in input{text-align:center;border-inline:2px solid var(--ink);min-width:0}
.stp{width:52px;min-height:48px;display:grid;place-items:center;background:transparent;border:0;cursor:pointer;transition:background-color .2s}
.stp:hover{background:var(--ink);color:var(--paper)}
.stp svg{width:22px;height:22px}
.lnote{margin:14px 0 0;min-height:3em;font-size:var(--s-14);color:var(--ink-2)}
.lnote.bad{color:var(--red-ink);font-weight:600}
.read{margin:8px 0 0;border-top:2px solid var(--ink)}
.read>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line-2)}
.read dt{font-size:var(--s-12);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}
.read dd{text-align:right}
.num{font-family:var(--f-m);font-weight:500;font-size:var(--s-28);letter-spacing:-.02em;line-height:1}
.read small{font-size:var(--s-12);color:var(--ink-2);display:block}
.formula{font-size:var(--s-12);line-height:1.55;color:var(--ink-2);margin:14px 0 20px!important}
.lp__fig{margin:0;min-width:0;order:-1;position:sticky;top:0;z-index:4;background:var(--paper-2);padding:8px 0}
.lp__fig .plan-svg{max-height:32svh}
.plan-stage{border:1px solid var(--line-2);background:var(--paper);padding:6px}
.plan-svg{width:100%;height:auto;max-height:78svh}
.lp__fig figcaption{font-size:var(--s-12);color:var(--ink-2);margin-top:10px;line-height:1.5}
@media(min-width:900px){.lp{grid-template-columns:minmax(0,4.6fr) minmax(0,7.4fr);gap:clamp(24px,5vw,72px);align-items:start}.lp__fig{position:sticky;top:20px;order:0;padding:0;background:transparent}.lp__fig .plan-svg{max-height:78svh}}

/* ---------- PRICES + CALC ---------- */
.pr{display:grid;gap:44px}
.pr__tab h2{margin-bottom:8px}
.rates{width:100%;border-collapse:collapse;margin:22px 0 12px;border-top:2px solid var(--ink)}
.rates th,.rates td{padding:13px 0;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:baseline;font-weight:500}
.rates thead th{font-family:var(--f-m);font-size:var(--s-12);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);padding:8px 0}
.rates tbody th{font-weight:700}
.rates th small{display:block;font-family:var(--f-m);font-weight:500;font-size:var(--s-12);color:var(--ink-2)}
.rates td{text-align:right;font-size:var(--s-14)}.rates td b{font-size:var(--s-20);font-weight:500}
.rates thead th:last-child{text-align:right}
.calc{border:2px solid var(--ink);background:var(--card);padding:clamp(16px,3vw,32px);position:relative;min-width:0}
.calc::before,.calc::after{content:"";position:absolute;width:14px;height:14px;border:2px solid var(--blue)}
.calc::before{left:-8px;top:-8px;border-right:0;border-bottom:0}.calc::after{right:-8px;bottom:-8px;border-left:0;border-top:0}
.calc__head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:18px;padding-bottom:12px;border-bottom:1px solid var(--line-2)}
.calc__head h3{font-size:var(--s-28)}
.calc__head h3:focus{outline:none}
.calc__head span{font-size:var(--s-12);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}
.clines{display:grid;gap:18px}
.cl{display:grid;grid-template-columns:minmax(0,1fr) 44px;gap:10px 10px;padding-bottom:18px;border-bottom:1px dashed var(--line-2)}
.cf{grid-column:1 / -1;min-width:0}
.cf label{display:block;font-family:var(--f-m);font-weight:500;font-size:var(--s-12);text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px}
.cf select,.cf input{width:100%;min-height:48px;padding:8px 12px;border:2px solid var(--ink);background:var(--paper);border-radius:0;font-size:var(--s-16);-webkit-appearance:none;appearance:none}
.cf input{font-family:var(--f-m);font-weight:500;font-size:var(--s-20)}
.cf select{background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 20px) 55%,calc(100% - 14px) 55%;background-size:6px 6px;background-repeat:no-repeat;padding-right:36px;text-overflow:ellipsis}
.camt{grid-column:1;margin:0;display:flex;flex-direction:column;gap:2px;font-size:var(--s-14);color:var(--ink-2)}
.camt b{font-family:var(--f-m);font-weight:500;font-size:var(--s-20);color:var(--ink)}
.crate{font-family:var(--f-m);font-size:var(--s-12)}
.crm{grid-column:2;grid-row:3;align-self:end;width:44px;height:44px;display:grid;place-items:center;background:transparent;border:2px solid var(--ink);cursor:pointer;transition:background-color .2s,color .2s}
.crm:hover{background:var(--red-ink);color:#fff;border-color:var(--red-ink)}
.crm svg{width:20px;height:20px}
.cerr{grid-column:1 / -1;margin:0;font-size:var(--s-14);font-weight:600;color:var(--red-ink);min-height:0}
.cerr:empty{display:none}
.cbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:18px 0 6px;font-size:var(--s-12)}
.ctot{display:grid;gap:6px;margin-top:22px;padding:18px 0 14px;border-top:2px solid var(--ink)}
.ctot__lab{font-size:var(--s-12);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-2);margin:0}
.ctot__num{margin:0;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ctot__num output{font-size:var(--s-64);letter-spacing:-.03em;line-height:1;overflow-wrap:anywhere}
.ctot__num #cprefix{font-size:var(--s-20);color:var(--ink-2)}
.ctot__side{margin:0;font-size:var(--s-12);color:var(--blue-ink);text-transform:uppercase;letter-spacing:.06em}
.ccta{margin-top:22px;padding-top:18px;border-top:1px dashed var(--line-2)}
@media(min-width:700px){
  .cl{grid-template-columns:minmax(0,1.55fr) minmax(0,1fr) minmax(112px,.7fr) 44px;align-items:end;gap:12px}
  .cf{grid-column:auto}.camt{grid-column:3;grid-row:1}.crm{grid-column:4;grid-row:1}.cerr{grid-row:2}
  .camt{align-self:end;padding-bottom:4px;text-align:right}
}
@media(min-width:1000px){.pr{grid-template-columns:minmax(0,4.4fr) minmax(0,7.6fr);gap:clamp(28px,5vw,80px);align-items:start}}

/* ---------- STOPS ---------- */
.hw__h{max-width:14em;margin-bottom:clamp(28px,5vw,56px);text-wrap:balance}
.stops{display:grid;gap:0;position:relative;counter-reset:s}
.stops li{position:relative;padding:0 0 32px 52px;border-left:2px solid var(--ink);margin-left:12px}
.stops li:last-child{border-left-color:transparent;padding-bottom:0}
.stops li::before{content:"";position:absolute;left:-9px;top:6px;width:16px;height:16px;border:2px solid var(--ink);background:var(--yellow)}
.stop__n{display:block;font-size:var(--s-12);text-transform:uppercase;letter-spacing:.1em;color:var(--blue-ink);margin-bottom:6px}
.stops h3{font-size:var(--s-28);margin-bottom:6px}
.stops p{margin:0;color:var(--ink-2);max-width:24em}
@media(min-width:900px){
  .stops{grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
  .stops li{border-left:0;margin:0;padding:34px 24px 0 0;border-top:2px solid var(--ink)}
  .stops li:last-child{border-top-color:var(--ink)}
  .stops li::before{left:0;top:-9px}
  .stops li:nth-child(2){margin-top:28px}.stops li:nth-child(3){margin-top:56px}
}

/* ---------- CONTACT ---------- */
.ct{display:grid;gap:40px}
.ct__main h2{font-size:var(--s-64);margin-bottom:22px}
.owner{margin:18px 0 0}
.facts{margin-top:32px;border-top:2px solid var(--ink)}
.facts>div{display:grid;grid-template-columns:116px minmax(0,1fr);gap:12px;padding:12px 0;border-bottom:1px solid var(--line-2);align-items:baseline}
.facts dt{font-size:var(--s-12);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2)}
.facts dd{margin:0;font-family:var(--f-m);font-weight:500;overflow-wrap:anywhere}
.facts a{text-underline-offset:4px}
.slot{margin:0}
.slot__box{position:relative;aspect-ratio:4/3;border:2px dashed var(--line-2);display:grid;place-items:center;padding:24px;background:linear-gradient(var(--grid) 1px,transparent 1px) 0 0/20px 20px,linear-gradient(90deg,var(--grid) 1px,transparent 1px) 0 0/20px 20px,var(--card)}
.slot__x{position:absolute;inset:0;background:linear-gradient(var(--line-2),var(--line-2)) center/1px 100% no-repeat,linear-gradient(var(--line-2),var(--line-2)) center/100% 1px no-repeat;opacity:.5}
.slot__box p{position:relative;margin:0;background:var(--card);padding:6px 12px;font-size:var(--s-14);text-align:center;border:1px solid var(--line-2)}
.slot figcaption{margin-top:10px;font-size:var(--s-12);color:var(--ink-2);line-height:1.5}
@media(min-width:900px){.ct{grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(32px,6vw,96px);align-items:start}.slot{margin-top:56px}}

/* footer */
.foot{border-top:2px solid var(--ink);padding-block:44px 52px;background:var(--paper-2)}
.foot__in{display:grid;gap:26px}
.foot__name{font-size:var(--s-28);font-weight:700;letter-spacing:-.02em;margin:0 0 4px}
.foot__id .mono{margin:0;font-size:var(--s-14);color:var(--ink-2)}
.foot__facts{display:grid;gap:6px;font-size:var(--s-14)}
.foot__facts div{display:flex;gap:14px}.foot__facts dt{width:60px;color:var(--ink-2);flex:none}.foot__facts dd{margin:0;overflow-wrap:anywhere}
.foot__note{font-size:var(--s-14);color:var(--ink-2);max-width:44em;margin:0}
@media(min-width:900px){.foot__in{grid-template-columns:1.2fr 1fr 1.4fr;align-items:start}}

/* sticky mobile bar */
.sbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;gap:10px;padding:10px var(--gut) calc(10px + env(safe-area-inset-bottom));background:var(--paper);border-top:2px solid var(--ink);transform:translateY(110%);transition:transform .4s var(--ease);visibility:hidden}
.sbar.on{transform:none;visibility:visible}
.sbar .btn{flex:1 1 0;min-height:48px;padding-inline:12px}
.sbar .btn--line{flex:0 0 38%}
@media(min-width:900px){.sbar{display:none}body.has-sbar{padding-bottom:0}}

/* reveals */
.js .rv{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.js .rv.in{opacity:1;transform:none}
.js .leg__row.rv:nth-child(2),.js .stops li.rv:nth-child(2){transition-delay:70ms}
.js .leg__row.rv:nth-child(3),.js .stops li.rv:nth-child(3){transition-delay:140ms}
.js .leg__row.rv:nth-child(4){transition-delay:210ms}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .rv{opacity:1!important;transform:none!important}
  .go .dl{stroke-dashoffset:0}.go .fd{opacity:1}
  .hero-in>*{animation:none}
  .pl-red{transform:scaleX(1)}
  .btn{translate:none}
}
@media print{.sbar,.banner{display:none}}
