/* Contact flow: form, tap targets, sticky bar. Uses the site's CSS variables so it follows any restyle. */
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}

/* big tap targets */
.contact-taps{padding-bottom:0}
.taps-head{color:var(--muted);margin-bottom:var(--g-stack);font-size:var(--fs-lead)}
.reach-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.tap{display:flex;align-items:center;gap:16px;min-height:76px;padding:16px 20px;border-radius:var(--r);border:1px solid var(--border);background:var(--surface);color:var(--text);transition:transform .15s ease,border-color .15s ease,background .15s ease}
.tap:hover{border-color:var(--mint);transform:translateY(-1px)}
.tap.primary{background:var(--mint);border-color:var(--mint);color:#0b0b0d}
.tap.primary:hover{background:var(--mint-l)}
.tap-ic{flex:none;width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:var(--mint-bg);color:var(--mint)}
.tap.primary .tap-ic{background:rgba(11,11,13,.12);color:#0b0b0d}
.tap-ic svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tap-t{display:grid;gap:2px;min-width:0}
.tap-t b{font-size:18px;line-height:1.2;overflow-wrap:anywhere}
.tap-t small{font-size:13.5px;line-height:1.35;color:var(--muted)}
.tap.primary .tap-t small{color:rgba(11,11,13,.74)}
.lf-head{font-size:var(--fs-h2s);margin:0 0 2px}
.form-head{font-size:var(--fs-h2s);margin-bottom:var(--g-act)}

/* form */
.lf [hidden],.lf-success[hidden]{display:none!important}
.lf-form,.lf-compact{display:grid;gap:18px}
.lf-compact{gap:12px}
.lf-intro{color:var(--muted);font-size:var(--fs-sm)}
.lf .field{display:grid;gap:6px;min-width:0}
.lf label:not(.tchip):not(.tcard),.lf legend{font-family:var(--font);font-size:15px;font-weight:700;text-transform:none;letter-spacing:0;color:var(--text);display:block}
.lf label.vh{position:absolute}
.lf .opt,.lf .hint{font-weight:500;color:var(--dim)}
.lf .hint{font-size:13.5px;line-height:1.4}
.lf input[type=text],.lf select,.lf textarea{min-height:52px;font-size:16px}
.lf textarea{min-height:76px}
.lf input[aria-invalid="true"],.lf select[aria-invalid="true"]{border-color:#f07864;box-shadow:0 0 0 3px rgba(240,120,100,.2)}
.ferr{color:#ffb4a6;font-size:14.5px;font-weight:600;line-height:1.4}
.ferr:empty{display:none}
.btn-lg{width:100%;justify-content:center;min-height:56px;font-size:17px}
.btn[disabled]{opacity:.7;cursor:progress;transform:none}
.lf .fine{text-align:left;line-height:1.5}
.lf .fine a{color:var(--mint);text-decoration:underline;text-underline-offset:3px}
.lf .fine .ph{margin-left:4px}

/* lead type selector: three big radio cards (native radios, so keyboard + screen readers work, and no JS is needed) */
.typesel{border:0;padding:0;min-width:0}
.typesel legend{padding:0;margin-bottom:10px}
.tcards{display:grid;gap:10px}
.lf label.tcard{position:relative;display:block;cursor:pointer;font-family:var(--font);font-size:16px;font-weight:700;text-transform:none;letter-spacing:0;color:var(--text)}
.lf .tcard input{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;min-height:0;opacity:0;cursor:pointer}
.tc-b{display:grid;align-content:center;gap:2px;min-height:64px;padding:12px 48px 12px 18px;position:relative;border:1px solid #3a3a42;border-radius:14px;background:#0f0f12;transition:background .15s,border-color .15s}
.tc-b b{font-size:16px;line-height:1.25;color:var(--text)}
.tc-b small{font-size:13.5px;line-height:1.3;color:var(--muted);font-weight:500}
.tc-b::after{content:"";position:absolute;right:16px;top:50%;width:18px;height:18px;margin-top:-9px;border-radius:50%;border:2px solid #5a5a64;transition:border-color .15s,background .15s,box-shadow .15s}
.tcard:hover .tc-b{border-color:var(--mint)}
.tcard input:checked + .tc-b{background:var(--mint-bg);border-color:var(--mint)}
.tcard input:checked + .tc-b::after{border-color:var(--mint);background:var(--mint);box-shadow:inset 0 0 0 3px #0f0f12}
.tcard input:focus-visible + .tc-b{outline:3px solid var(--mint);outline-offset:2px}

/* type groups: only the chosen type's fields show (pure CSS via :has, so it works without JS; browsers without :has show every group) */
/* the chosen type's own fields start under a hairline, so the intro line reads as the start of that group, not as stray copy between fields */
.tg{border:0;padding:0;min-width:0;display:grid;gap:18px}
.lf-multi .tg{border-top:var(--hair);padding-top:var(--g-stack);margin-top:4px}
@supports selector(:has(*)){
  .lf-multi:not(:has(#t-walk:checked)) .g-walk,.lf-multi:not(:has(#t-quote:checked)) .g-quote,.lf-multi:not(:has(#t-vendor:checked)) .g-vendor{display:none}
}
.lf-multi .g-quote .hint a{color:var(--mint);text-decoration:underline;text-underline-offset:3px}

/* thanks page: one panel per lead type, picked by the URL fragment (#ok-quote / #ok-vendor), walk by default; no JS */
.thx .okp{display:none}
.thx .okp:target,.thx #ok-walk{display:block}
.thx #ok-quote:target ~ #ok-walk,.thx #ok-vendor:target ~ #ok-walk{display:none}
.okp .btn{margin-top:2px}
.lf-success .ok-note a{color:var(--mint);text-decoration:underline;text-underline-offset:3px}

/* best-time chips */
.tchips{border:0;padding:0;min-width:0}
.tchips legend{padding:0;margin-bottom:8px}
.tchip-row{display:flex;gap:8px;flex-wrap:wrap}
.lf label.tchip{position:relative;display:block;flex:1 1 0;min-width:96px;cursor:pointer}
.lf .tchip input{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;min-height:0;opacity:0;cursor:pointer}
.tchip span{font-family:var(--font);text-transform:none;letter-spacing:0;display:flex;align-items:center;justify-content:center;min-height:50px;padding:0 14px;border:1px solid #3a3a42;border-radius:12px;background:#0f0f12;font-weight:700;font-size:15px;color:var(--muted);transition:background .15s,border-color .15s}
.tchip:hover span{border-color:var(--mint)}
.tchip input:checked + span{background:var(--mint-bg);border-color:var(--mint);color:var(--text)}
.tchip input:focus-visible + span{outline:3px solid var(--mint);outline-offset:2px}

/* optional details drawer */
.more{border:1px solid var(--border);border-radius:12px;background:rgba(255,255,255,.02)}
.more summary{list-style:none;cursor:pointer;min-height:52px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 16px;font-weight:700;font-size:15.5px;border-radius:12px}
.more summary::-webkit-details-marker{display:none}
.more summary::after{content:"+";font-size:24px;line-height:1;color:var(--mint);font-weight:500}
.more[open] summary::after{content:"\2212"}
.more .more-body{padding:6px 16px 18px;display:grid;gap:14px}

/* success */
.lf-success{border:1px solid var(--mint);border-radius:var(--r);padding:28px 24px;background:linear-gradient(180deg,rgba(144,204,199,.1),var(--surface) 55%)}
.lf-success[hidden]{display:none}
.lf-success:focus{outline:none}
.lf-success:focus-visible{outline:3px solid var(--mint)}
.lf-success .check{width:48px;height:48px;border-radius:50%;background:var(--mint);color:#0b0b0d;display:grid;place-items:center;margin-bottom:14px}
.lf-success h3{font-size:26px}
.lf-success .ok-lead{margin-top:10px;color:var(--muted)}
.steps{list-style:none;counter-reset:s;display:grid;gap:12px;margin:16px 0 18px}
.steps li{counter-increment:s;display:flex;gap:12px;align-items:flex-start;color:var(--muted);font-size:15.5px}
.steps li::before{content:counter(s);flex:none;width:28px;height:28px;border-radius:50%;border:1px solid var(--mint);color:var(--mint);display:grid;place-items:center;font-family:var(--mono);font-size:13px;margin-top:-2px}
.steps b{color:var(--text)}
.lf-success .ok-note{font-size:14.5px;color:var(--dim);margin-bottom:18px}
/* block, not flex: the text and the no-wrap phone number stay one centred line that wraps naturally (flex split them into two columns) */
.lf-success .btn{display:block;width:100%;min-height:var(--btn-h);padding:13px 20px;white-space:normal;text-align:center;line-height:1.4}
.lf-success .ctas{margin-top:12px}
.lf-success.static{padding:32px 28px}
.lf-success.static .steps{margin-top:0}

/* compact form in the CTA band */
.lf-card{border:1px solid var(--border);border-radius:var(--r);padding:var(--pad-card);background:rgba(15,15,18,.6);display:grid;gap:16px}
.lf-compact h3{font-size:22px}
.lf-compact .fine{font-size:var(--fs-fine)}
.tap-row{display:flex;gap:10px}
.tap-row a{flex:1 1 0;min-height:50px;display:flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border);border-radius:999px;font-weight:700;font-size:15px;color:var(--text);background:rgba(255,255,255,.03)}
.tap-row a:hover{border-color:var(--mint)}
.tap-row svg{width:18px;height:18px;fill:none;stroke:var(--mint);stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.lf-card .lf-success{padding:22px 20px}


/* mobile sticky bar */
.sticky-cta{display:none}
.sticky-cta.is-hidden{transform:translateY(110%)}
@media (max-width:960px){.reach-grid{grid-template-columns:1fr}.tap{min-height:68px}}
@media (max-width:760px){
  .sticky-cta{display:flex;align-items:center;gap:10px;position:fixed;left:0;right:0;bottom:0;z-index:120;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:rgba(11,11,13,.95);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border);transition:transform .2s ease}
  .sticky-cta a{min-height:48px}
  .sc-call{flex:none;display:flex;align-items:center;gap:8px;padding:0 18px;border:1px solid var(--mint);border-radius:999px;color:var(--mint);font-weight:700;font-size:15px}
  .sc-call svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
  .sc-walk{flex:1;justify-content:center;padding:12px 16px}
  footer{padding-bottom:calc(92px + env(safe-area-inset-bottom))}
  body:has([data-no-sticky]) .sticky-cta{display:none}
  body:has([data-no-sticky]) footer{padding-bottom:76px}
  .lf-success{padding:22px 18px}
  .tap-row a span{font-size:14.5px}
}
@media (prefers-reduced-motion:reduce){.sticky-cta{transition:none}}
