:root{--bg:#111;--panel:#1a1a1a;--line:#333;--ink:#f2f2f0;--mute:#b9b9b3;--y:#f5c400;--yink:#111;--red:#ff8a7a;--green:#7ad39a;--blue:#7fb2ff}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Barlow',system-ui,sans-serif;font-size:17px;line-height:1.5}
a{color:inherit}
h1,h2,h3{font-family:'Barlow Condensed',sans-serif;text-transform:uppercase;line-height:1;margin:0 0 .5em;letter-spacing:.5px}
h1{font-size:clamp(40px,6vw,64px);font-weight:800}
h2{font-size:clamp(30px,4vw,44px);font-weight:800}
h3{font-size:24px;font-weight:700}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.narrow{max-width:760px}
.lead{font-size:20px;color:var(--mute);max-width:560px}
.muted,small{color:var(--mute)}
.eyebrow{font-family:'Barlow Condensed',sans-serif;font-weight:700;color:var(--y);letter-spacing:3px;text-transform:uppercase;margin:0 0 10px}
:focus-visible{outline:3px solid var(--blue);outline-offset:2px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 24px;border:2px solid transparent;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:19px;letter-spacing:1px;text-transform:uppercase;text-decoration:none;cursor:pointer;border-radius:0}
.btn-y{background:var(--y);color:var(--yink)}.btn-w{background:#fff;color:#111}.btn-ghost{background:transparent;color:var(--ink);border-color:var(--line)}
.btn:hover{filter:brightness(1.1)}.btn:disabled{opacity:.6;cursor:wait}
/* public header */
.topbar{background:var(--y);color:var(--yink);padding:10px 24px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-weight:600;font-size:15px}
.topbar a{text-decoration:none}
.site-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:16px;padding:20px 24px;max-width:1180px;margin:0 auto}
.brand{font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:30px;letter-spacing:1px;text-transform:uppercase;text-decoration:none}.brand span{color:var(--y)}
.nav{display:flex;gap:24px;align-items:center;flex-wrap:wrap;font-weight:500}.nav a:not(.btn){text-decoration:none;padding:8px 0}.nav a[aria-current]{color:var(--y)}
/* hero */
.hero{display:flex;flex-wrap:wrap;gap:48px;align-items:center;padding-top:40px;padding-bottom:72px}
.hero-copy{flex:1 1 520px;min-width:0}.hero-photo{flex:1 1 400px;min-width:0}
.hero h1{font-size:clamp(56px,9vw,112px);line-height:.9;margin:.1em 0 .25em}.hero h1 span{color:var(--y)}
.ph{width:100%;height:520px;object-fit:cover;display:block;border:1px solid var(--line)}.hero-photo img{width:100%;display:block}
.ph{display:flex;align-items:flex-end;padding:20px;color:var(--mute);background:repeating-linear-gradient(135deg,#1d1d1d 0 18px,#222 18px 36px);font-size:14px}
.regbox,.panel{background:var(--panel);border:1px solid var(--line);padding:20px}
.regbox{max-width:520px;margin-top:28px}.regbox label,label{font-weight:600;display:block;margin-bottom:6px}
.regbox label{font-size:14px;letter-spacing:1px;text-transform:uppercase;color:var(--mute)}
.regrow{display:flex;gap:12px;flex-wrap:wrap}
.plate{flex:1 1 240px;display:flex;align-items:stretch;background:var(--y);border-radius:6px;overflow:hidden;min-height:56px}
.gb{background:#0a3a9c;color:#fff;font-size:12px;font-weight:700;padding:0 10px;display:flex;align-items:center}
.plate input{flex:1;min-width:0;border:0;background:transparent;color:#111;font-family:'Barlow Condensed',sans-serif;font-weight:700;font-size:38px;letter-spacing:3px;padding:4px 14px;text-transform:uppercase;width:100%}
.plate input::placeholder{color:#7a6500}.plate input:focus{outline:none}.plate:focus-within{outline:3px solid var(--blue);outline-offset:2px}
/* sections */
section.wrap{padding-bottom:72px}
.svc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:2px;background:var(--line)}
.svc{background:#181818;padding:28px;min-height:200px}.svc .num{font-family:'Barlow Condensed',sans-serif;color:var(--y);font-size:44px;font-weight:800}.svc p{color:var(--mute);margin:0}
.reviews{background:var(--y);color:var(--yink);padding:56px 0;margin-bottom:72px}.reviews h2{color:var(--yink)}
.rev-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px}.rev{margin:0}.rev blockquote{margin:0 0 8px;font-size:21px;line-height:1.35;font-weight:500}.rev figcaption{font-weight:600}
.visit{display:flex;flex-wrap:wrap;gap:40px;align-items:flex-start;justify-content:space-between}.visit p{margin:0;color:var(--mute)}
.site-foot{border-top:1px solid var(--line);padding:40px 24px;max-width:1180px;margin:0 auto;display:flex;flex-wrap:wrap;gap:32px;justify-content:space-between;color:var(--mute);font-size:15px}
/* forms */
input,select,textarea{width:100%;background:#0e0e0e;color:var(--ink);border:1px solid #555;padding:12px 14px;font:inherit;border-radius:0;min-height:46px}
input[type=checkbox],input[type=radio]{width:auto;min-height:0}
input[aria-invalid=true]{border-color:var(--red)}
.f{margin-bottom:16px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.grid2 .full{grid-column:1/-1}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:400;margin:12px 0}.check input{margin-top:5px}
.panel{margin:0 0 20px}.panel h2{font-size:30px;display:flex;align-items:center;gap:12px}
.n{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;background:var(--y);color:var(--yink);font-size:20px}
.err,.flash.bad{color:var(--red)}.err{margin:10px 0}
.flash{white-space:pre-line;word-break:break-word;padding:12px 16px;margin:16px 0;border:1px solid var(--line)}.flash.ok{color:var(--green);border-color:#2f5b43}.flash.bad{border-color:#6b3a33}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.vehicle{margin-top:14px;padding:14px 16px;border-left:4px solid var(--y);background:#141414}.vname{font-family:'Barlow Condensed',sans-serif;font-size:28px;font-weight:700;text-transform:uppercase}
.opts{display:grid;gap:10px}.opt{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);padding:14px;cursor:pointer;font-weight:400;margin:0}.opt:has(input:checked){border-color:var(--y);background:#201d0a}
.opt small{display:block}.opt input{margin-top:6px}
.days,.slots,.chips{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0}
.chip{border:1px solid #555;background:transparent;color:var(--ink);padding:10px 16px;min-height:44px;font:inherit;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center}.chip.on,.chip[aria-pressed=true]{background:var(--y);color:var(--yink);border-color:var(--y);font-weight:600}
.done{border-color:var(--y)}.prose p{max-width:65ch}
/* portal */
.row-between{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px}
.bk-top{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.inv{list-style:none;padding:0;margin:0}.inv li{padding:6px 0;border-bottom:1px solid var(--line)}
.pill{display:inline-block;padding:3px 12px;font-size:14px;font-weight:600;border:1px solid var(--line);vertical-align:middle;font-family:'Barlow',sans-serif;text-transform:none;letter-spacing:0}
.pill.pending{color:var(--y);border-color:var(--y)}.pill.approved{color:var(--green);border-color:#2f5b43}.pill.declined,.pill.cancelled{color:var(--red);border-color:#6b3a33}
.note{background:#141414;border-left:4px solid var(--y);padding:10px 14px}
/* admin */
.admin-head{display:flex;gap:24px;align-items:center;flex-wrap:wrap;padding:14px 24px;background:#000;border-bottom:1px solid var(--line)}.admin-head b{color:var(--y);font-family:'Barlow Condensed',sans-serif;font-size:22px;text-transform:uppercase}
.admin-head nav{display:flex;gap:18px;flex:1;flex-wrap:wrap}.admin-head a{text-decoration:none;padding:6px 0}.admin-head a[aria-current]{color:var(--y);border-bottom:2px solid var(--y)}
.admin-main{padding-top:24px;padding-bottom:64px}.admin-main h2{margin-top:1.2em}
.stats{display:flex;gap:16px;flex-wrap:wrap}.stat{background:var(--panel);border:1px solid var(--line);padding:16px 24px}.stat b{display:block;font-family:'Barlow Condensed',sans-serif;font-size:48px;color:var(--y);line-height:1}
.tablewrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:13px;letter-spacing:1px;text-transform:uppercase;color:var(--mute)}
.cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px}
.btnrow{display:flex;gap:10px;flex-wrap:wrap}.inline-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}.inline-form .f{margin:0}.inline-form .grow{flex:1 1 200px}.inline-form input,.inline-form select{width:auto;min-width:150px}.inline-form .grow input{width:100%}
form.inline{display:inline}.link{background:none;border:0;color:var(--blue);cursor:pointer;font:inherit;text-decoration:underline;padding:0 0 0 8px}
.cal-head,.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.cal-head div{text-align:center;color:var(--mute);font-size:13px;padding:6px 0}
.cal-cell{min-height:96px;background:var(--panel);border:1px solid var(--line);padding:6px;text-decoration:none;display:flex;flex-direction:column;gap:3px;overflow:hidden}.cal-cell.empty{background:transparent;border:0}
.cal-cell.closed{opacity:.45}.cal-cell.today{border-color:var(--y)}.cal-cell.blocked{background:#2a1512}.cal-cell:not(.empty):hover{border-color:var(--blue)}.dnum{font-weight:700}
.tag{font-size:12px;padding:1px 6px;border:1px solid var(--line);display:inline-block}.tag.ok{color:var(--green)}.tag.off{color:var(--red)}.tag.part{color:#ffb86b}.tag.pend{color:var(--y)}
@media (max-width:700px){.grid2{grid-template-columns:1fr}.cal-cell{min-height:64px;font-size:11px}.tag{font-size:10px;padding:0 3px}.hero-photo img,.ph{height:300px}.plate input{font-size:32px}}
[hidden]{display:none!important}
.cal{margin-bottom:24px}
a.svc{display:block;text-decoration:none;color:inherit}a.svc:hover{background:#202020}.svc .more{display:inline-block;margin-top:14px;color:var(--y);font-weight:600}
.crumbs{font-size:14px;color:var(--mute);margin:24px 0 12px}.crumbs a{color:var(--mute)}
.how{padding-left:22px}.how li{margin:8px 0}
.faq details{border-bottom:1px solid var(--line);padding:14px 0}.faq summary{cursor:pointer;font-weight:600;font-size:18px}.faq p{color:var(--mute);margin:10px 0 0}
.mapwrap{padding-bottom:56px}.mapwrap iframe{width:100%;height:340px;border:1px solid var(--line);filter:grayscale(.4) invert(.92) contrast(.9)}
.narrow h2{margin-top:1.4em}
details.panel summary{cursor:pointer;font-size:20px}details.panel[open] summary{margin-bottom:14px}details.panel form+form{margin-top:14px}

/* logo in the hero: fades into the page so there is no visible box */
.hero-photo img{height:auto;aspect-ratio:1/1;max-height:600px;object-fit:contain;border:0;background:none;mix-blend-mode:lighten;
 -webkit-mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent),linear-gradient(to bottom,transparent,#000 7%,#000 93%,transparent);-webkit-mask-composite:source-in;
 mask-image:linear-gradient(to right,transparent,#000 7%,#000 93%,transparent),linear-gradient(to bottom,transparent,#000 7%,#000 93%,transparent);mask-composite:intersect}
@media (max-width:700px){.hero-photo img{height:auto;max-height:none}}
.rev-head{display:flex;gap:10px;align-items:baseline;flex-wrap:wrap;margin:0 0 16px;font-size:20px}.rev-head .score{font-size:28px;font-weight:700}
.stars{color:var(--y);letter-spacing:2px;font-size:18px}.rev .stars{display:block;margin-bottom:6px}.rev-src{margin:16px 0 0}
.rev-links{display:flex;gap:16px;flex-wrap:wrap;align-items:center;margin-top:28px}.rev-widget{min-width:200px;min-height:40px}
.reviews .stars{color:var(--yink)}.reviews .muted,.reviews .rev-src{color:#2a2a2a}.reviews a{color:var(--yink)}
.reviews .btn-ghost{color:var(--yink);border-color:var(--yink);background:transparent}.reviews .btn-ghost:hover{background:var(--yink);color:var(--y)}
.cm-badge{display:inline-block;line-height:0}.cm-badge img{max-width:100%;height:auto}

/* compact reviews strip */
.reviews{padding:26px 0;margin-bottom:40px}.reviews h2{font-size:30px;margin:0 0 14px}
.rev-marquee{overflow:hidden;margin:0 0 18px;-webkit-mask-image:linear-gradient(to right,transparent,#000 4%,#000 96%,transparent);mask-image:linear-gradient(to right,transparent,#000 4%,#000 96%,transparent)}
.rev-track{display:flex;width:max-content;animation:revscroll 38s linear infinite}.rev-marquee:hover .rev-track,.rev-marquee:focus-within .rev-track{animation-play-state:paused}
.rev-set{display:flex;align-items:center;justify-content:space-around;gap:36px;min-width:100vw;padding:0 18px;flex-shrink:0}
.rev-item{display:flex;align-items:center;gap:8px;flex-shrink:0;background:#fff;color:#111!important;border-radius:10px;padding:8px 16px;min-height:64px;text-decoration:none;font-weight:600}
.rev-item.rev-g .score{font-size:24px;font-weight:700}.rev-item .stars{color:#c98f00!important;font-size:17px}.rev-item .rn{font-weight:400;font-size:14px;color:#444}
.rev-item.rev-write{background:#111;color:var(--y)!important}.rev-item.cm-badge{padding:4px 8px;line-height:0}.rev-item.cm-badge img{height:auto;max-width:200px}
.rev-widget{min-width:190px}.rev-widget a{color:inherit}
@keyframes revscroll{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.rev-track{animation:none;flex-wrap:wrap;width:auto}.rev-set[aria-hidden]{display:none}.rev-set{min-width:0;flex-wrap:wrap}.rev-marquee{-webkit-mask-image:none;mask-image:none}}
.reviews .rev-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.reviews .rev{background:rgba(255,255,255,.35);padding:12px 14px;border-radius:8px}
.reviews .rev blockquote{font-size:15px;line-height:1.4;font-weight:500;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;margin:0 0 6px}.reviews .rev figcaption{font-size:13px}
.reviews .rev-src{font-size:13px;margin:10px 0 0}
.rev-item{white-space:nowrap}.rev-item.cm-badge{white-space:normal}

/* reviews: half the height, everything in one scrolling strip */
.reviews{padding:13px 0;margin-bottom:28px}
.rev-top{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 8px}
.reviews h2{font-size:20px;margin:0}.reviews .rev-src{margin:0;font-size:12px}
.rev-marquee{margin:0}.rev-set{gap:20px;padding:0 10px}.rev-track{animation-duration:70s}
.rev-item{min-height:48px;padding:5px 12px}.rev-item.rev-g .score{font-size:20px}.rev-item .stars{font-size:14px}
.rev-card{display:block;margin:0;width:290px;white-space:normal;font-weight:400;padding:6px 12px}.rev-card .stars{display:inline}
.rev-card blockquote{margin:0;font-size:13px;line-height:1.3;font-weight:500;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rev-card figcaption{font-size:11px;font-weight:600;margin-top:2px}.rev-item.cm-badge img{max-width:130px}
@media (prefers-reduced-motion:reduce){.rev-set{flex-wrap:wrap}}
/* Checkatrade widget: hidden until it has actually drawn itself, and scaled down to fit the strip */
.rev-widget:not(:has(.ct-reviews-score__wrapper)){display:none}
.rev-item.rev-widget{position:relative;width:140px;height:96px;min-height:0;padding:0;background:none;overflow:visible}
.rev-widget .ct-reviews-score__wrapper{position:absolute;left:0;top:0;width:251px;transform:scale(.55);transform-origin:top left}
/* slowly turning 3D sprockets in the empty space either side of the reviews band (never over the content) */
.reviews{position:relative;overflow:hidden}.reviews .rev-top,.reviews .rev-marquee{position:relative;z-index:1}
.gear{position:absolute;top:50%;width:270px;height:270px;margin-top:-135px;pointer-events:none;filter:drop-shadow(7px 10px 8px rgba(0,0,0,.5))}
.gear-l{right:calc(50% + 590px)}.gear-r{left:calc(50% + 590px)}
.g-layer{position:absolute;inset:0;display:block;transform:translate(calc(var(--k) * -.9px),calc(var(--k) * 1.1px))}
.g-spin{display:block;width:100%;height:100%;animation:spinr 30s linear infinite;will-change:transform}.gear-r .g-spin{animation-direction:reverse}
.g-shade{position:absolute;inset:11.5%;border-radius:50%;background:radial-gradient(circle at 28% 24%,rgba(255,255,255,.5),rgba(255,255,255,0) 52%),radial-gradient(circle at 76% 82%,rgba(0,0,0,.5),rgba(0,0,0,0) 58%)}
@keyframes spinr{to{transform:rotate(360deg)}}
@media (max-width:1300px){.gear{display:none}}
@media (prefers-reduced-motion:reduce){.g-spin{animation:none}}
