/* JUNKRIGHT - bold, dark, green. Accent colour is injected from config.json as --accent. */
@font-face{font-family:"Anton";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/anton-400.woff2) format("woff2")}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/inter-var.woff2) format("woff2")}
:root{
  --bg:#0b0d10; --bg2:#10141a; --card:#14181f; --card2:#1a1f27; --line:#262d38;
  --text:#f4f6f8; --muted:#a6afbc; --ink:#0a1205;
  --accent:#78c227; --accent-glow:color-mix(in srgb,var(--accent) 38%,transparent);
  --r:14px; --maxw:1180px;
  --display:"Anton","Impact","Haettenschweiler","Arial Narrow",sans-serif;
  --body:"Inter",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:88px;overflow-x:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.65 var(--body);-webkit-font-smoothing:antialiased}
img,svg{max-width:100%}
a{color:inherit}
h1,h2,h3{font-family:var(--display);text-transform:uppercase;letter-spacing:.02em;line-height:1.06;margin:0 0 .5em;font-weight:400}
h2{font-size:clamp(1.9rem,4.6vw,3rem)}
h3{font-size:1.3rem}
p{margin:0 0 1em}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.narrow{max-width:820px}
.muted{color:var(--muted)}.small{font-size:.88rem}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:-999px;top:8px;background:var(--accent);color:var(--ink);font-weight:700;padding:10px 16px;border-radius:8px;z-index:2000}
.skip:focus{left:8px}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:4px}
[hidden]{display:none!important}
main{display:block}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:var(--ink);font:800 .92rem/1 var(--body);text-transform:uppercase;letter-spacing:.06em;padding:15px 24px;border:2px solid var(--accent);border-radius:6px;text-decoration:none;cursor:pointer;transition:transform .15s,box-shadow .2s,background .2s;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,10px 100%,0 calc(100% - 10px))}
.btn:hover{transform:translateY(-2px);box-shadow:0 10px 30px var(--accent-glow);background:color-mix(in srgb,var(--accent) 88%,#fff)}
.btn-ghost{background:transparent;color:var(--text);border-color:#3b4452}
.btn-ghost:hover{border-color:var(--accent);box-shadow:none;background:rgba(255,255,255,.04)}
.btn-lg{padding:19px 30px;font-size:1rem}
.btn-sm{padding:11px 16px;font-size:.78rem}
.btn-block{display:flex;width:100%;margin-top:10px}
.ico{width:22px;height:22px;flex:none}.ico.sm{width:16px;height:16px}.ico.lg{width:40px;height:40px;color:var(--accent);margin-bottom:10px}
.ico.ok{width:26px;height:26px;color:var(--accent);margin-top:2px}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:1000;background:rgba(11,13,16,.9);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.bar{display:flex;align-items:center;gap:20px;min-height:86px}
.brand{display:block;line-height:0;flex:none}
.brand-logo{display:block;width:215px;height:auto}
.primary-nav{margin-left:auto;display:flex;align-items:center;gap:4px}
.primary-nav>a:not(.btn),.drop-btn{color:var(--text);text-decoration:none;font:700 .82rem/1 var(--body);text-transform:uppercase;letter-spacing:.08em;padding:14px 11px;background:none;border:0;cursor:pointer;display:inline-flex;gap:7px;align-items:center;opacity:.9}
.primary-nav>a:not(.btn):hover,.drop-btn:hover,.has-drop:focus-within .drop-btn{opacity:1;color:var(--accent)}
.nav-call{margin-left:8px}.nav-quote{margin-left:4px}
.has-drop{position:relative}
.mega{position:absolute;left:-40px;top:100%;width:min(660px,92vw);background:var(--card);border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:0 0 var(--r) var(--r);padding:22px;box-shadow:0 30px 60px rgba(0,0,0,.6);opacity:0;visibility:hidden;transform:translateY(8px);transition:.18s}
.has-drop:hover .mega,.has-drop.open .mega,.has-drop:focus-within .mega{opacity:1;visibility:visible;transform:none}
.mega-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px 26px}
.mega-title{display:flex;align-items:center;gap:8px;font:700 .95rem/1.2 var(--body);text-decoration:none;color:var(--text);margin-bottom:6px}
.mega-title:hover{color:var(--accent)}.mega-title .ico{color:var(--accent)}
.mega-cities{display:flex;flex-wrap:wrap;gap:4px 14px;padding-left:24px}
.mega-cities a{font-size:.84rem;color:var(--muted);text-decoration:none}.mega-cities a:hover{color:#fff;text-decoration:underline}
.mega-all{display:inline-block;margin-top:16px;color:var(--accent);font-weight:700;text-decoration:none;font-size:.9rem}
.nav-toggle{display:none;margin-left:auto;width:48px;height:48px;background:none;border:1px solid var(--line);border-radius:8px;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.nav-toggle span{width:22px;height:2px;background:var(--text);transition:.2s}
.nav-toggle[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded=true] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden}
.hero-home{padding:clamp(40px,6vw,84px) 0 0}
.hero-bg{position:absolute;inset:0;pointer-events:none}
.streaks{position:absolute;inset:-20%;background:repeating-linear-gradient(115deg,transparent 0 46px,rgba(255,255,255,.03) 46px 48px,transparent 48px 120px);animation:drift 40s linear infinite}
.glow{position:absolute;right:-12%;top:-18%;width:70vw;height:70vw;max-width:900px;max-height:900px;background:radial-gradient(closest-side,var(--accent-glow),transparent 70%);filter:blur(20px)}
@keyframes drift{to{transform:translateX(120px)}}
.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(24px,4vw,56px);align-items:center}
.kicker{display:inline-flex;align-items:center;gap:10px;font:800 .78rem/1 var(--body);text-transform:uppercase;letter-spacing:.2em;color:var(--accent);margin-bottom:18px}
.kicker::before{content:"";width:34px;height:3px;background:var(--accent);transform:skewX(-30deg)}
.mega-h{font-size:clamp(3.4rem,9.4vw,7.6rem);line-height:.92;letter-spacing:.01em;margin-bottom:24px}
.mega-h .hl{display:block}
.mega-h .hl1{color:var(--accent);text-shadow:0 0 50px var(--accent-glow)}
.h1-sub{display:block;margin-top:18px;font:800 clamp(.82rem,1.6vw,1rem)/1.3 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.lead{font-size:clamp(1.02rem,1.6vw,1.2rem);color:#cbd2dc;max-width:680px}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}
.stats{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:clamp(36px,6vw,70px);border-top:1px solid var(--line)}
.stat{padding:22px 18px;border-right:1px solid var(--line)}.stat:last-child{border-right:0}
.stat b{display:block;font:400 clamp(2rem,4vw,3rem)/1 var(--display);color:var(--accent)}
.stat span{font-size:.82rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.hero-sub{padding:clamp(40px,6vw,76px) 0 clamp(32px,5vw,56px);background:radial-gradient(900px 300px at 85% -20%,var(--accent-glow),transparent 70%),linear-gradient(180deg,#0f1319,var(--bg))}
.hero-sub h1{font-size:clamp(2.1rem,5.6vw,4.2rem);max-width:980px}
.crumbs{font-size:.84rem;color:var(--muted);margin-bottom:18px}.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--accent)}.crumbs span{margin:0 6px;opacity:.6}.crumbs .cur{opacity:1;margin:0;color:var(--text)}

/* ---------- price estimator ---------- */
.card{background:linear-gradient(180deg,var(--card2),var(--card));border:1px solid var(--line);border-radius:var(--r);padding:26px}
.est{border-top:4px solid var(--accent);box-shadow:0 30px 70px rgba(0,0,0,.5),0 0 0 1px var(--accent-glow);padding:26px 26px 22px}
.est .kicker{margin-bottom:10px}
.est-title{font-size:clamp(1.7rem,3.2vw,2.3rem);margin-bottom:6px}
.est-out{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;margin-bottom:8px}
.est-out output{font:400 clamp(3.2rem,7vw,4.6rem)/1 var(--display);color:var(--accent);text-shadow:0 0 40px var(--accent-glow)}
.est-out span{font:700 1rem/1.2 var(--body);color:var(--text)}
.truck{display:block;width:100%;height:auto;margin:6px 0 12px}
.truck-body{fill:none;stroke:#3b4452;stroke-width:3}
.truck-cab{fill:#1f2630;stroke:#3b4452;stroke-width:3}.truck-win{fill:#2c3541}
.wheel{fill:#0b0d10;stroke:#586273;stroke-width:4}
.seg{fill:#202833;transition:fill .18s}.seg.on{fill:var(--accent)}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:10px;border-radius:99px;background:linear-gradient(90deg,var(--accent) 0 var(--fill,0%),#2a323e var(--fill,0%) 100%);border:0;padding:0;cursor:pointer}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:32px;height:32px;border-radius:50%;background:var(--accent);border:4px solid #fff;cursor:grab;box-shadow:0 0 18px var(--accent-glow)}
input[type=range]::-moz-range-thumb{width:26px;height:26px;border-radius:50%;background:var(--accent);border:4px solid #fff;cursor:grab}
input[type=range]:focus-visible{outline:3px solid #fff;outline-offset:6px}
.est-ends{display:flex;justify-content:space-between;gap:12px;margin:12px 0 18px;font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.est-ends b{display:block;color:var(--text);font:400 1.25rem/1.2 var(--display);letter-spacing:.03em}
.est-ends span:last-child{text-align:right}
.est-note{font-size:.82rem;color:var(--muted);margin:12px 0 0}

/* ---------- ticker ---------- */
.ticker{background:var(--accent);transform:skewY(-1.6deg);margin:34px 0 10px;overflow:hidden;border-block:2px solid rgba(0,0,0,.25);position:relative;z-index:2}
.ticker-track{display:flex;width:max-content;animation:tick 30s linear infinite;padding:12px 0}
.ticker span{font:400 1.6rem/1 var(--display);text-transform:uppercase;letter-spacing:.06em;color:var(--ink);white-space:nowrap;padding:0 26px}
.ticker i{width:14px;height:14px;background:var(--ink);transform:rotate(45deg);align-self:center;flex:none}
@keyframes tick{to{transform:translateX(-50%)}}

/* ---------- sections ---------- */
section{position:relative}
.services-section,.why-section,.areas-section,.contact-section{padding:clamp(52px,8vw,100px) 0}
.section-head{max-width:760px;margin-bottom:36px}
.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.svc-card{display:block;text-decoration:none;position:relative;overflow:hidden;transition:transform .2s,border-color .2s,box-shadow .2s}
.svc-card::after{content:"";position:absolute;left:0;top:0;height:3px;width:0;background:var(--accent);transition:width .3s}
.svc-card:hover{transform:translateY(-5px);border-color:var(--accent);box-shadow:0 18px 40px rgba(0,0,0,.5),0 0 0 1px var(--accent-glow)}
.svc-card:hover::after{width:100%}
.svc-card p{color:var(--muted);font-size:.96rem}
.svc-card .more{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:800;font-size:.82rem;text-transform:uppercase;letter-spacing:.08em}
.card-h{font-size:1.5rem}
.stretch{text-decoration:none}.stretch::before{content:"";position:absolute;inset:0;z-index:1}
.svc-card .chips{position:relative;z-index:2}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,64px);align-items:start}
.why-section{background:var(--bg2);clip-path:polygon(0 24px,100% 0,100% calc(100% - 24px),0 100%);margin:20px 0;padding-block:clamp(76px,10vw,124px)}
.why{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.why li{display:grid;grid-template-columns:34px 1fr;gap:12px}
.why h3{margin:0 0 2px;font-size:1.15rem}.why p{margin:0;color:var(--muted);font-size:.96rem}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.steps li{display:grid;grid-template-columns:64px 1fr;column-gap:16px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px}
.steps .num{grid-row:span 2;font:400 2.4rem/1 var(--display);color:var(--accent)}
.steps h3{margin:0 0 4px;font-size:1.1rem}.steps p{margin:0;color:var(--muted);font-size:.95rem}
.area{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:22px}
.area h2,.area h3{color:var(--accent);font-size:1.6rem}
.area p{font-size:.94rem}
.area a{display:block;color:var(--muted);text-decoration:none;padding:7px 0;border-bottom:1px solid var(--line);font-size:.94rem}.area a:hover{color:#fff;padding-left:6px}
.cta-band{background:linear-gradient(100deg,var(--accent),color-mix(in srgb,var(--accent) 60%,#000));color:var(--ink);padding:clamp(38px,6vw,68px) 0;margin-top:30px}
.cta-inner{display:flex;gap:24px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.cta-band h2{margin:0 0 6px;font-size:clamp(1.8rem,4vw,2.8rem)}.cta-band p{margin:0;font-weight:600}
.cta-actions{display:flex;gap:12px;flex-wrap:wrap}
.cta-band .btn{background:var(--ink);color:#fff;border-color:var(--ink)}
.cta-band .btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.prose-wrap-single{padding:10px 0 20px}

/* ---------- service pages ---------- */
.prose-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:clamp(24px,4vw,56px);padding-top:50px;padding-bottom:20px;align-items:start}
.prose-sec{margin-bottom:38px}
.prose-sec h2,.prose-wrap-single h2{font-size:clamp(1.5rem,3vw,2.1rem)}
.prose-sec h2{padding-left:16px;border-left:5px solid var(--accent)}
.prose p,.prose-wrap-single p{color:#d0d6df;font-size:1.04rem}
.prose a,.prose-wrap-single a,.legal a,.lead a,.form-note a,.muted a{color:var(--accent);text-underline-offset:3px}
.ticks{list-style:none;padding:0;margin:0;display:grid;gap:10px}
.ticks li{padding:13px 16px 13px 46px;background:var(--card);border:1px solid var(--line);border-radius:10px;position:relative;color:#dbe0e7}
.ticks li::before{content:"";position:absolute;left:16px;top:50%;width:14px;height:8px;border-left:3px solid var(--accent);border-bottom:3px solid var(--accent);transform:translateY(-70%) rotate(-45deg)}
.faq details{background:var(--card);border:1px solid var(--line);border-radius:10px;margin-bottom:10px}
.faq summary{cursor:pointer;padding:16px 18px;font-weight:700;list-style:none;display:flex;justify-content:space-between;gap:12px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--accent);font-size:1.4rem;line-height:1}
.faq details[open] summary::after{content:"\2013"}
.faq details p{padding:0 18px 16px;margin:0;color:#bcc4cf}
.closing{font-size:1.15rem;font-weight:600;border-top:1px solid var(--line);padding-top:22px}
.side{position:sticky;top:96px;display:grid;gap:16px}
.side-h{font-size:1.15rem;margin-bottom:10px}
.side-link{display:block;margin-top:14px;color:var(--accent);font-weight:700;font-size:.9rem}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{font-size:.84rem;padding:8px 12px;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:var(--muted);background:var(--bg2)}
.chip:hover,.chip.on{border-color:var(--accent);color:#fff}

/* ---------- contact + forms ---------- */
.contact-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:22px;align-items:start}
.info{list-style:none;padding:0;margin:0 0 14px;display:grid;gap:18px}
.info li{display:flex;gap:14px}.info .ico{color:var(--accent);margin-top:3px}.info a{color:var(--accent)}
.quote-form{display:grid;gap:14px}
label,legend{display:grid;gap:6px;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
input,select,textarea{font:500 1rem var(--body);background:#0a0c10;color:var(--text);border:1px solid #333c49;border-radius:8px;padding:13px 14px;width:100%;text-transform:none;letter-spacing:0}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
fieldset.timing{border:0;margin:0;padding:0;display:grid;gap:8px}
.timing legend{padding:0;margin-bottom:6px}
label.radio{display:flex;align-items:center;gap:10px;text-transform:none;letter-spacing:0;font-size:.95rem;font-weight:600;color:var(--text);padding:11px 12px;border:1px solid var(--line);border-radius:10px;background:#0a0c10;cursor:pointer}
label.radio input{width:20px;height:20px;padding:0;accent-color:var(--accent)}
label.radio:has(input:checked){border-color:var(--accent)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form-note{font-size:.84rem;color:var(--muted);line-height:1.55;margin:4px 0 0}
.form-status{margin:0;min-height:1.4em;font-weight:600;font-size:.95rem;color:var(--accent)}
.form-status.err{color:#ff9b9b}.form-status.err a{color:#fff}

/* ---------- footer ---------- */
.site-footer{background:#07090b;border-top:1px solid var(--line);padding:52px 0 24px;margin-top:0}
.foot-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:34px}
.foot-logo{display:inline-block;line-height:0;margin-bottom:12px}.foot-logo-img{width:230px;height:auto}
.site-footer h2{font-size:1.05rem;color:var(--accent)}
.site-footer ul{list-style:none;padding:0;margin:0}.site-footer li{padding:5px 0}
.site-footer a{text-decoration:none;color:#c8cfda}.site-footer a:hover{color:var(--accent)}
.site-footer address{font-style:normal;color:#c8cfda;line-height:1.9}
.foot-bottom{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:34px;padding-top:18px;border-top:1px solid var(--line);font-size:.85rem;color:var(--muted)}
.foot-legal{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;padding:14px 20px 0;font-size:.84rem}
.foot-legal a,.foot-legal button{color:var(--muted);text-decoration:none;background:none;border:0;padding:0;font:inherit;cursor:pointer}
.foot-legal a:hover,.foot-legal button:hover{color:#fff;text-decoration:underline}
.foot-credit{display:flex;align-items:center;justify-content:center;gap:12px;padding:22px 20px 6px;color:var(--muted);font:700 .74rem/1 var(--body);text-transform:uppercase;letter-spacing:.16em}
.foot-credit a{display:inline-flex;transition:transform .2s}.foot-credit a:hover{transform:translateY(-1px)}
.foot-credit img{display:block;height:44px;width:auto;border-radius:10px}
.foot-badge{display:flex;justify-content:center;padding:22px 20px 8px}
.foot-badge a{display:inline-block;line-height:0}
/* Visible but modest: never wider than 260 px or taller than 140 px, whatever shape the (third-party) image turns out to be. */
.foot-badge img{display:block;width:260px;max-width:100%;height:auto;max-height:140px;object-fit:contain}
.mobile-bar{display:none}

/* ---------- legal ---------- */
.legal{max-width:820px;margin:0;padding:46px 0 70px}
.legal h2{font-size:1.5rem;margin-top:1.8em}
.legal p,.legal li{line-height:1.75;color:#d6dae0}
.legal ul{padding-left:1.2em}
.legal table{width:100%;border-collapse:collapse;margin:14px 0;font-size:.92rem}
.legal th,.legal td{border:1px solid var(--line);padding:10px 12px;text-align:left;vertical-align:top}
.legal th{background:var(--card);color:#fff}
.draft-note{border:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent);padding:14px 18px;border-radius:10px;margin-bottom:26px;font-size:.92rem}
mark.review{background:#ffd54a;color:#111;padding:1px 6px;border-radius:4px;font-weight:600}
.consent{position:fixed;left:14px;right:14px;bottom:14px;z-index:1900;max-width:620px;margin:0 auto;background:var(--card2);border:1px solid #38414f;border-radius:14px;padding:18px 20px;box-shadow:0 18px 50px rgba(0,0,0,.6)}
.consent[hidden]{display:none}
.consent p{margin:0 0 14px;font-size:.92rem;line-height:1.55}.consent a{color:#fff}
.consent-btns{display:flex;gap:10px;flex-wrap:wrap}.consent-btns .btn{flex:1 1 140px}

/* ---------- Google reviews band (home) ---------- */
.reviews-section{padding:0 0 clamp(48px,7vw,88px)}
.reviews-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:clamp(20px,4vw,52px);padding:clamp(24px,3.4vw,40px) clamp(22px,3.6vw,48px);border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:var(--r);background:radial-gradient(520px 220px at 0% 50%,var(--accent-glow),transparent 70%),linear-gradient(180deg,var(--card2),var(--card));box-shadow:0 24px 60px rgba(0,0,0,.35)}
.rev-score{text-align:center}
.rev-score b{display:block;font:400 clamp(4.6rem,10vw,7rem)/.85 var(--display);color:var(--accent);text-shadow:0 0 40px var(--accent-glow)}
.rev-score span{display:block;margin-top:10px;font:800 .72rem/1 var(--body);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.rev-body .kicker{margin-bottom:12px}
.rev-body h2{font-size:clamp(1.6rem,3.4vw,2.4rem);margin-bottom:12px}
.rev-line{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 10px}
.stars{position:relative;display:inline-block;width:130px;height:24px;flex:none}
.stars svg{display:block;width:130px;height:24px}
.stars-base path{fill:#2b333f}
.stars-fill{position:absolute;left:0;top:0;height:24px;width:var(--pct);overflow:hidden}
.stars-top{width:130px;max-width:none}
.stars-top path{fill:#fbbc04}
.js .reviews-card .stars-fill{width:0;transition:width 1.2s cubic-bezier(.2,.8,.2,1) .35s}
.js .reviews-card.in .stars-fill{width:var(--pct)}
.rev-count{font:600 1.05rem/1.2 var(--body)}.rev-count b{font-weight:800;color:#fff}
.rev-note{margin:0;font-size:.82rem;color:var(--muted)}
.rev-cta{display:flex;flex-direction:column;gap:12px}
.rev-cta .btn{white-space:nowrap}
@media (max-width:860px){
  .reviews-card{grid-template-columns:auto minmax(0,1fr)}
  .rev-cta{grid-column:1/-1;flex-direction:row;flex-wrap:wrap}.rev-cta .btn{flex:1 1 220px}
}
@media (max-width:560px){
  .reviews-card{grid-template-columns:1fr;gap:16px}
  .rev-score{display:flex;align-items:baseline;gap:12px;text-align:left}.rev-score span{margin:0}
}

/* ---------- welcome animation (home page only) ----------
   The overlay is decorative (aria-hidden), never takes clicks, and ends by itself: pure CSS, no JS needed.
   It is skipped for reduced motion and, via a tiny head script, after the first view in a browser session. */
body{--intro:0s}
html:not(.no-intro) body.home{--intro:2.55s}
html.intro-skipped body.home{--intro:0s}
.intro{position:fixed;inset:0;z-index:3000;display:grid;place-items:center;cursor:pointer;-webkit-tap-highlight-color:transparent;background:radial-gradient(640px 400px at 50% 58%,color-mix(in srgb,var(--accent) 24%,transparent),transparent 70%),repeating-linear-gradient(115deg,transparent 0 46px,rgba(255,255,255,.025) 46px 48px,transparent 48px 120px),#0b0d10;animation:introOut .7s cubic-bezier(.76,0,.24,1) 2.5s both}
html.intro-skipped .intro{animation:introSkip .45s cubic-bezier(.76,0,.24,1) both}
.intro::after{content:"";position:absolute;left:0;right:0;top:100%;height:6px;background:var(--accent);box-shadow:0 0 36px 6px var(--accent-glow)}
.no-intro .intro{display:none}
.intro-inner{display:grid;justify-items:center;gap:24px;padding:0 20px}
.intro-logo{width:min(340px,72vw);height:auto;animation:logoIn 1s cubic-bezier(.2,.8,.2,1) .15s both,logoPulse .8s ease-out 2.05s}
.intro-road{--road:min(380px,72vw);position:relative;width:var(--road);height:46px}
.intro-road::before{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;border-radius:4px;background:#232a34}
.intro-trail{position:absolute;left:0;bottom:0;height:4px;width:80px;border-radius:4px;background:var(--accent);box-shadow:0 0 18px var(--accent-glow);animation:introTrail 1.6s cubic-bezier(.45,0,.2,1) .5s both}
.intro-truck{position:absolute;left:0;bottom:1px;width:80px;height:42px;overflow:visible;animation:introDrive 1.6s cubic-bezier(.45,0,.2,1) .5s both}
.it-box{fill:#12161c;stroke:var(--accent);stroke-width:2.5}
.it-cab{fill:#1f2630;stroke:var(--accent);stroke-width:2.5;stroke-linejoin:round}
.it-win{fill:var(--accent);opacity:.55}
.it-wheel circle{fill:#0b0d10;stroke:#aab4c3;stroke-width:2.2}.it-wheel path{stroke:#aab4c3;stroke-width:1.6;fill:none}
.it-wheel{transform-box:fill-box;transform-origin:center;animation:introSpin .32s linear infinite}
.it-dust{stroke:var(--accent);stroke-width:2;stroke-linecap:round;fill:none;animation:introDust .24s linear infinite}
.intro-tag{margin:0;font:400 clamp(1rem,3.6vw,1.35rem)/1 var(--display);letter-spacing:.28em;text-transform:uppercase;color:var(--muted);animation:rise .8s ease 1s backwards}
.intro-hint{position:absolute;left:0;right:0;bottom:calc(26px + env(safe-area-inset-bottom,0px));margin:0;text-align:center;font:700 .7rem/1 var(--body);letter-spacing:.22em;text-transform:uppercase;color:#6b7482;animation:rise .6s ease 1.4s backwards}
@keyframes introOut{to{transform:translateY(-100%);visibility:hidden}}
@keyframes introSkip{to{transform:translateY(-100%);visibility:hidden}}
@keyframes logoPulse{0%{filter:drop-shadow(0 0 0 transparent)}40%{transform:scale(1.05);filter:drop-shadow(0 0 26px var(--accent))}100%{filter:none}}
@keyframes logoIn{from{opacity:0;transform:scale(.86) translateY(10px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
@keyframes introDrive{to{transform:translateX(calc(var(--road) - 80px))}}
@keyframes introTrail{to{width:var(--road)}}
@keyframes introSpin{to{transform:rotate(360deg)}}
@keyframes introDust{0%,100%{opacity:.15}50%{opacity:.9}}

/* hero entrance: starts as the shutter lifts (--intro), or at once when the intro is skipped. 'backwards' fill means the
   normal styles apply afterwards, so nothing stays transformed, clipped or hidden once the animation is done.
   The big text blocks (headline, lead paragraph, estimator card) only SLIDE: they are never faded or clipped, so they are painted
   from the first frame and Core Web Vitals (LCP) is not held back until the animation ends. Only small items fade. */
@keyframes rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes slideIn{from{transform:translateX(-44px) skewX(-8deg)}to{transform:none}}
@keyframes slideUp{from{transform:translateY(28px)}to{transform:none}}
@keyframes estIn{from{transform:translateX(56px) rotate(1.5deg) scale(.95)}to{transform:none}}
@keyframes pop{from{opacity:0;transform:translateY(16px) scale(.9)}60%{opacity:1;transform:translateY(-3px) scale(1.03)}to{opacity:1;transform:none}}
@keyframes flash{0%{text-shadow:0 0 0 transparent}35%{text-shadow:0 0 90px var(--accent),0 0 28px var(--accent)}100%{text-shadow:0 0 50px var(--accent-glow)}}
@keyframes glowIn{from{opacity:0;transform:scale(.4)}to{opacity:1;transform:none}}
@keyframes dropIn{from{transform:translateY(-100%)}to{transform:none}}
body.home .site-header{animation:dropIn .7s cubic-bezier(.2,.8,.2,1) var(--intro) backwards}
.hero-home .glow{animation:glowIn 1.8s ease-out var(--intro) backwards}
.hero-home .kicker{animation:rise .6s cubic-bezier(.2,.8,.2,1) calc(var(--intro) + .05s) backwards}
.hero-home .hl0{animation:slideIn .75s cubic-bezier(.2,.8,.2,1) calc(var(--intro) + .1s) backwards}
.hero-home .hl1{animation:slideIn .75s cubic-bezier(.2,.8,.2,1) calc(var(--intro) + .3s) backwards,flash 1.2s ease-out calc(var(--intro) + .85s) backwards}
.hero-home .h1-sub{animation:rise .6s cubic-bezier(.2,.8,.2,1) calc(var(--intro) + .75s) backwards}
.hero-home .lead{animation:slideUp .7s cubic-bezier(.2,.8,.2,1) calc(var(--intro) + .6s) backwards}
.hero-home .hero-cta .btn:nth-child(1){animation:pop .6s cubic-bezier(.2,.8,.2,1) calc(var(--intro) + .85s) backwards}
.hero-home .hero-cta .btn:nth-child(2){animation:pop .6s cubic-bezier(.2,.8,.2,1) calc(var(--intro) + .97s) backwards}
.hero-home .est{animation:estIn .9s cubic-bezier(.2,.8,.2,1) calc(var(--intro) + .3s) backwards}
.hero-home .stat{animation:rise .6s cubic-bezier(.2,.8,.2,1) backwards}
.hero-home .stat:nth-child(1){animation-delay:calc(var(--intro) + 1.1s)}.hero-home .stat:nth-child(2){animation-delay:calc(var(--intro) + 1.2s)}
.hero-home .stat:nth-child(3){animation-delay:calc(var(--intro) + 1.3s)}.hero-home .stat:nth-child(4){animation-delay:calc(var(--intro) + 1.4s)}

/* ---------- reveal + motion ---------- */
.js .reveal{opacity:0;transform:translateY(22px);transition:opacity .6s,transform .6s}
.js .reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.js .reveal{opacity:1;transform:none}.intro{display:none!important}.js .reviews-card .stars-fill{width:var(--pct)}}
@media print{.intro{display:none!important}}
@supports (overflow:clip){.hero,main{overflow-x:clip}}

/* ---------- responsive ---------- */
@media (max-width:1100px){
  .grid-4{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:1020px){
  .hero-grid{grid-template-columns:1fr}
  .hero-copy{display:contents}
  .hero-grid .kicker{order:1;margin-bottom:0}.hero-grid .mega-h{order:2;margin-bottom:0}.hero-grid .hero-cta{order:3;margin:0}.hero-grid .est{order:4}.hero-grid .lead{order:5;margin:0}
  .grid-3{grid-template-columns:repeat(2,1fr)}
  .prose-wrap{grid-template-columns:1fr}.side{position:static}
  .two-col,.contact-grid{grid-template-columns:1fr}
  .why-section{clip-path:none}
}
@media (max-width:980px){
  .site-header{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(11,13,16,.98)} /* backdrop-filter would trap the fixed mobile menu inside the header */
  .bar{min-height:70px}.brand-logo{width:150px}
  .nav-toggle{display:flex}
  .primary-nav{position:fixed;inset:70px 0 0 0;background:var(--bg);flex-direction:column;align-items:stretch;gap:0;padding:12px 20px 96px;overflow:auto;transform:translateY(-8px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .2s,transform .2s,visibility .2s;margin:0}
  .primary-nav.open{transform:none;opacity:1;visibility:visible;pointer-events:auto}
  .primary-nav>a:not(.btn),.drop-btn{padding:18px 4px;border-bottom:1px solid var(--line);font-size:1rem;justify-content:space-between;width:100%}
  .nav-call,.nav-quote{margin:14px 0 0;justify-content:center;padding:15px 16px}
  .mega{position:static;width:auto;opacity:1;visibility:visible;transform:none;display:none;border:0;border-radius:0;box-shadow:none;padding:6px 0 10px;background:none}
  .has-drop.open .mega{display:block}.has-drop:hover .mega{display:none}.has-drop.open:hover .mega{display:block}
  .mega-grid{grid-template-columns:1fr}
  .stats{grid-template-columns:repeat(2,1fr)}.stat:nth-child(2){border-right:0}.stat{border-bottom:1px solid var(--line)}
  .foot-grid{grid-template-columns:1fr}
  .mobile-bar{display:grid;grid-template-columns:1fr 1fr;position:fixed;left:0;right:0;bottom:0;z-index:900;background:#0a0c10;border-top:1px solid var(--line)}
  .mobile-bar a{padding:16px;text-align:center;text-decoration:none;font:800 .85rem/1 var(--body);text-transform:uppercase;letter-spacing:.08em;display:flex;gap:8px;justify-content:center;align-items:center;color:var(--text)}
  .mobile-bar a.accent{background:var(--accent);color:var(--ink)}
  body{padding-bottom:54px}
  .consent{bottom:66px}
}
@media (max-width:620px){
  .grid-4,.grid-3,.grid-2{grid-template-columns:1fr}
  .row2{grid-template-columns:1fr}
  .est{padding:22px 18px 18px}
  .est-ends{font-size:.7rem}
  .hero-cta .btn{flex:1 1 100%}
  .hero-home .hero-cta .btn-ghost{display:none}
  .hero-home{padding-top:28px}
  .hero-home .lead{font-size:1rem}
  .hero-home .hero-cta{margin:20px 0 4px}
  .mega-h{margin-bottom:16px}
  .cta-actions{width:100%}.cta-actions .btn{flex:1 1 100%}
}
