/*
Theme Name: Red Dog Services
Author: Red Dog Services
Description: Premium minimal theme for Red Dog Services. Home, About, Services, Gallery, and Contact templates.
Version: 1.0
License: GNU General Public License v2 or later
Text Domain: red-dog-services
*/
:root{
  --black:#111213;--ink:#1c1d1f;--text:#2b2c2e;--muted:#77787c;
  --line:#e7e5e1;--bg:#ffffff;--bg-soft:#f7f6f4;
  --bronze:#b4321a;--bronze-d:#8c2113;--maxw:1140px;
  color-scheme:light;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:'Outfit',system-ui,sans-serif;background:var(--bg);color:var(--text);line-height:1.7;font-size:16.5px;font-weight:300}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
h1,h2,h3,h4{color:var(--black);font-weight:500;line-height:1.18;letter-spacing:-.01em}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 22px}
section{padding:88px 0}
.label{display:block;font-size:.72rem;font-weight:600;letter-spacing:.28em;text-transform:uppercase;color:var(--bronze);margin-bottom:18px}
.h2{font-size:clamp(1.75rem,4.2vw,2.6rem)}
.sub{color:var(--muted);max-width:44em}
:focus-visible{outline:2px solid var(--bronze);outline-offset:3px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:16px 34px;font-weight:500;font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;transition:all .25s ease;cursor:pointer;border:1px solid transparent}
.btn.solid{background:var(--black);color:#fff}
.btn.solid:hover{background:var(--bronze)}
.btn.bronze{background:var(--bronze);color:#fff}
.btn.bronze:hover{background:var(--bronze-d)}
.btn.line{border-color:rgba(255,255,255,.4);color:#fff;background:transparent}
.btn.line:hover{border-color:#fff;background:rgba(255,255,255,.08)}
.btn.dark-line{border-color:var(--black);color:var(--black);background:transparent}
.btn.dark-line:hover{background:var(--black);color:#fff}

/* top bar */
.topbar{background:var(--black);color:#c9c9c9;font-size:.78rem;font-weight:400}
.topbar .wrap{display:flex;justify-content:center;gap:26px;min-height:38px;align-items:center;flex-wrap:wrap}
.topbar a{color:#fff;letter-spacing:.05em}
.topbar a b{color:var(--bronze);font-weight:600}

/* header */
header.site{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;min-height:72px;gap:18px}
.logo{display:flex;flex-direction:column;line-height:1.05}
.logo b{font-size:1.15rem;font-weight:600;letter-spacing:.16em;color:var(--black);text-transform:uppercase}
.logo span{font-size:.6rem;font-weight:500;letter-spacing:.42em;text-transform:uppercase;color:var(--bronze)}
nav.links{display:flex;gap:34px;font-size:.85rem;font-weight:400;letter-spacing:.04em}
nav.links a{padding:6px 0;border-bottom:1px solid transparent;transition:all .2s}
nav.links a:hover,nav.links a.active{color:var(--black);border-color:var(--bronze)}
.nav>.btn{padding:12px 24px;font-size:.72rem}
.burger{display:none;flex-direction:column;gap:5px;background:none;border:0;cursor:pointer;padding:8px}
.burger span{width:24px;height:1.5px;background:var(--black)}

/* hero (home) */
.hero{
  position:relative;color:#fff;padding:120px 0 130px;overflow:hidden;
  /* poster sits under the video so the hero is never bare while it loads */
  background:
    linear-gradient(rgba(10,10,12,.58),rgba(10,10,12,.80)),
    url(images/hero-poster.jpg) center center/cover no-repeat,
    radial-gradient(circle at 25% 20%,#3a3d43 0%,#191a1d 55%,#0d0e10 100%);
}
.hero-vid{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;z-index:0;pointer-events:none;
}
/* scrim over the footage, so the headline stays readable whatever frame
   is showing */
/* the film: a flat colour sheet laid over the footage, warm near-black
   with a faint brand tint, plus a vignette to settle the edges */
.hero::after{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(ellipse at 50% 45%,rgba(10,10,12,0) 28%,rgba(8,8,10,.58) 100%),
    linear-gradient(rgba(180,50,26,.10),rgba(180,50,26,.05)),
    linear-gradient(rgba(24,17,14,.70),rgba(11,10,10,.88));
}
/* grain and the measuring grid, above the scrim */
.hero::before{
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;opacity:.22;
  background-image:
    linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px);
  background-size:120px 120px,120px 120px;
}
@media (prefers-reduced-motion: reduce){
  .hero-vid{display:none}
}
.hero .wrap{position:relative;z-index:3;text-align:center;max-width:860px}
.hero .label{margin-bottom:24px}
.hero h1{color:#fff;font-size:clamp(2.2rem,6vw,3.9rem);font-weight:500;letter-spacing:.01em;margin-bottom:26px}
.hero p{color:rgba(255,255,255,.72);max-width:36em;margin:0 auto 42px;font-size:1.05rem}
.hero-cta{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}

/* page hero (inner) */
.page-hero{background:linear-gradient(rgba(10,10,12,.6),rgba(10,10,12,.8)),radial-gradient(circle at 70% 15%,#3a3d43 0%,#17181b 60%,#0d0e10 100%);color:#fff;padding:88px 0;text-align:center}
.page-hero h1{color:#fff;font-size:clamp(2rem,5vw,3rem);font-weight:500}
.page-hero p{color:rgba(255,255,255,.66);max-width:40em;margin:18px auto 0}

/* intro split */
.intro .wrap{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}
.intro .visual{aspect-ratio:4/5;background:linear-gradient(rgba(15,15,17,.15),rgba(15,15,17,.35)),radial-gradient(circle at 70% 25%,#8b8f97 0%,#4a4d53 60%,#26282c 100%)}
.intro p{margin:20px 0 30px;color:var(--muted)}

/* standard numbered grid */
.standard{background:var(--bg-soft)}
.std-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:52px}
.std{background:var(--bg);padding:38px 28px}
.std .num{font-size:.8rem;color:var(--bronze);font-weight:600;letter-spacing:.2em;margin-bottom:70px;display:block}
.std h3{font-size:.92rem;letter-spacing:.18em;text-transform:uppercase;font-weight:600;margin-bottom:14px}
.std p{font-size:.9rem;color:var(--muted)}
.std-grid.three{grid-template-columns:repeat(3,1fr)}
.std-grid.three .std .num{margin-bottom:34px}

/* services grid (home) */
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:52px}
.svc{position:relative;aspect-ratio:4/3.4;display:flex;align-items:flex-end;padding:26px;color:#fff;overflow:hidden;background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 65% 30%,#7d8189 0%,#3c3f45 60%,#1c1e21 100%);transition:transform .25s ease}
.svc:hover{transform:translateY(-4px)}
.svc:nth-child(2){background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 30% 25%,#96907f 0%,#4a463c 60%,#211f1a 100%)}
.svc:nth-child(3){background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 60% 20%,#7f8a96 0%,#3b434d 60%,#181d23 100%)}
.svc:nth-child(4){background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 40% 30%,#8f8377 0%,#4d443a 60%,#241f19 100%)}
.svc:nth-child(5){background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 70% 25%,#848d85 0%,#3f463f 60%,#1b201b 100%)}
.svc:nth-child(6){background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 35% 20%,#9a8f9a 0%,#4c414c 60%,#221b22 100%)}
.svc:nth-child(7){background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 60% 30%,#8a939c 0%,#42474d 60%,#1d2023 100%)}
.svc:nth-child(8){background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 30% 25%,#97897a 0%,#4b4238 60%,#221d17 100%)}
.svc:nth-child(9){background:linear-gradient(rgba(12,12,14,.28) 30%,rgba(12,12,14,.82)),radial-gradient(circle at 65% 20%,#8c8c94 0%,#434347 60%,#1e1e20 100%)}
.svc h3{color:#fff;font-size:1rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600}
.svc span{display:block;font-size:.82rem;color:rgba(255,255,255,.65);margin-top:6px;font-weight:300}
.svc::after{content:"";position:absolute;left:26px;bottom:78px;width:34px;height:1px;background:var(--bronze)}

/* process dark band */
.process{background:var(--black);color:#fff}
.process .h2,.process h3{color:#fff}
.process .sub{color:rgba(255,255,255,.6)}
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:44px;margin-top:60px}
.step .num{font-size:.78rem;letter-spacing:.24em;color:var(--bronze);font-weight:600;display:block;margin-bottom:16px}
.step h3{font-size:.95rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;margin-bottom:12px;padding-top:18px;border-top:1px solid rgba(255,255,255,.18)}
.step p{font-size:.88rem;color:rgba(255,255,255,.6)}

/* testimonials */
.t-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:52px}
.tcard{border:1px solid var(--line);background:var(--bg);padding:34px 30px;display:flex;flex-direction:column;gap:18px}
.stars{color:var(--bronze);letter-spacing:4px;font-size:.9rem}
.tcard p{font-size:.93rem;color:var(--text)}
.tcard footer{margin-top:auto;padding-top:18px;border-top:1px solid var(--line)}
.tcard footer b{display:block;font-weight:600;font-size:.9rem;color:var(--black)}
.tcard footer span{font-size:.78rem;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}

/* quote / contact */
.quote{background:var(--bg-soft)}
.quote .wrap{display:grid;grid-template-columns:.85fr 1.15fr;gap:70px;align-items:start}
.q-info{display:flex;flex-direction:column;gap:26px;margin-top:26px}
.q-item small{display:block;font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:var(--bronze);font-weight:600;margin-bottom:5px}
.q-item a,.q-item span{font-size:1.05rem;color:var(--black);font-weight:400}
form.enq{background:var(--bg);border:1px solid var(--line);padding:44px 40px}
.field{margin-bottom:24px}
.field label{display:block;font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:8px}
.field input,.field select,.field textarea{width:100%;border:0;border-bottom:1px solid var(--line);padding:10px 2px;font-family:inherit;font-size:.98rem;font-weight:300;background:transparent;color:var(--black);transition:border-color .2s}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--bronze)}
.field textarea{min-height:90px;resize:vertical}
.two{display:grid;grid-template-columns:1fr 1fr;gap:26px}
form.enq .btn{width:100%;margin-top:8px}

/* service rows */
.x-row{display:grid;grid-template-columns:auto 1fr auto;gap:34px;align-items:center;border:1px solid var(--line);background:var(--bg);padding:36px;margin-bottom:22px;transition:border-color .25s}
.x-row:hover{border-color:var(--bronze)}
.x-row .num{font-size:.8rem;color:var(--bronze);font-weight:600;letter-spacing:.2em;align-self:start}
.x-row h3{font-size:1.05rem;letter-spacing:.2em;text-transform:uppercase;font-weight:600;margin-bottom:10px}
.x-row p{font-size:.93rem;color:var(--muted);max-width:56em}
.x-row .tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.x-row .tag{border:1px solid var(--line);padding:5px 14px;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500}
.x-row .btn{white-space:nowrap}

/* cta band */
.cta-band{background:var(--black);color:#fff;text-align:center;padding:80px 22px}
.cta-band h2{color:#fff;font-size:clamp(1.6rem,3.6vw,2.3rem);margin-bottom:14px}
.cta-band p{color:rgba(255,255,255,.6);margin-bottom:34px}
.cta-band .row{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}

/* footer */
footer.site-foot{background:var(--black);color:#9b9b9e;padding:70px 0 30px;font-size:.9rem;font-weight:300}
.f-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:46px;margin-bottom:54px}
.f-grid h4{color:#fff;font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;font-weight:600;margin-bottom:20px}
.f-grid ul{list-style:none;display:flex;flex-direction:column;gap:12px}
.f-grid a:hover{color:var(--bronze)}
.f-logo b{font-size:1.05rem;font-weight:600;letter-spacing:.16em;color:#fff;text-transform:uppercase}
.f-logo span{display:block;font-size:.56rem;letter-spacing:.42em;text-transform:uppercase;color:var(--bronze);margin-top:3px}
.f-bottom{border-top:1px solid rgba(255,255,255,.12);padding-top:26px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:.76rem;letter-spacing:.06em;color:#6d6d70}

/* responsive */
@media (max-width:960px){
  .intro .wrap,.quote .wrap{grid-template-columns:1fr}
  .std-grid,.std-grid.three{grid-template-columns:1fr 1fr}
  .svc-grid{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr 1fr;gap:36px}
  .t-grid{grid-template-columns:1fr}
  .f-grid{grid-template-columns:1fr 1fr}
  .x-row{grid-template-columns:auto 1fr}
  .x-row .btn{grid-column:2;justify-self:start}
}
@media (max-width:640px){
  section{padding:64px 0}
  nav.links{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 20px 40px rgba(0,0,0,.08);flex-direction:column;padding:24px 22px;gap:20px}
  nav.links.open{display:flex}
  .nav>.btn{display:none}
  .burger{display:flex}
  .hero{padding:84px 0 92px}
  .hero p{font-size:.98rem}
  .hero-cta .btn{width:100%}
  .page-hero{padding:64px 0}
  .std-grid,.std-grid.three{grid-template-columns:1fr}
  .std .num{margin-bottom:34px}
  .svc-grid{grid-template-columns:1fr;gap:16px}
  .svc{aspect-ratio:16/9.5}
  .steps{grid-template-columns:1fr}
  .intro .visual{aspect-ratio:4/3}
  form.enq{padding:32px 24px}
  .two{grid-template-columns:1fr;gap:0}
  .x-row{grid-template-columns:1fr;padding:28px 22px;gap:14px}
  .x-row .btn{grid-column:1;width:100%}
  .f-grid{grid-template-columns:1fr;gap:34px}
  .f-bottom{justify-content:center;text-align:center}
}

/* logo images (v2.1) */
.logo img{height:46px;width:auto;display:block}
.f-logo-img{height:52px;width:auto;opacity:.95}
@media (max-width:640px){
  .logo img{height:36px}
  .f-logo-img{height:42px}
}

/* trade card photos (v2.2) */
.svc.has-photo{background-size:cover!important;background-position:center!important}

/* trade card photos batch 2 (v2.3) */

/* masonry photo (v2.4) — completes the set */


/* homepage intro without brand-mark panel (v2.6) */
.intro.intro-solo .wrap{
  grid-template-columns:1fr!important;
  max-width:820px;
  gap:0;
  text-align:left;
}

/* ---------------------------------------------------------------
   Red Dog service cards (v1.0)
   Outdoor cards use generated material textures, interior cards use
   photography. Same dark gradient over both so the grid reads evenly.
   --------------------------------------------------------------- */
.svc.svc-pavers{background-image:linear-gradient(rgba(12,12,14,.28) 25%,rgba(12,12,14,.84)),url(images/svc-pavers.jpg)!important}
.svc.svc-walls{background-image:linear-gradient(rgba(12,12,14,.28) 25%,rgba(12,12,14,.84)),url(images/svc-walls.jpg)!important}
.svc.svc-sod{background-image:linear-gradient(rgba(12,12,14,.28) 25%,rgba(12,12,14,.84)),url(images/svc-sod.jpg)!important}
.svc.svc-grading{background-image:linear-gradient(rgba(12,12,14,.28) 25%,rgba(12,12,14,.84)),url(images/svc-grading.jpg)!important}
.svc.svc-backyard{background-image:linear-gradient(rgba(12,12,14,.28) 25%,rgba(12,12,14,.84)),url(images/svc-backyard.jpg)!important}
.svc.svc-kitchen{background-image:linear-gradient(rgba(12,12,14,.30) 25%,rgba(12,12,14,.85)),url(images/svc-kitchen.jpg)!important}
.svc.svc-bath{background-image:linear-gradient(rgba(12,12,14,.30) 25%,rgba(12,12,14,.85)),url(images/svc-bath.jpg)!important}
.svc.svc-basement{background-image:linear-gradient(rgba(12,12,14,.30) 25%,rgba(12,12,14,.85)),url(images/svc-basement.jpg)!important}
.svc.svc-flooring{background-image:linear-gradient(rgba(12,12,14,.30) 25%,rgba(12,12,14,.85)),url(images/svc-flooring.jpg)!important}
.svc.svc-drywall{background-image:linear-gradient(rgba(12,12,14,.30) 25%,rgba(12,12,14,.85)),url(images/svc-drywall.jpg)!important}

/* intro panel carries the stacked mark */
.intro .visual{
  background-image:url(images/logo-stacked.png),radial-gradient(circle at 70% 25%,#ffffff 0%,#f4f2ef 60%,#e9e6e1 100%)!important;
  background-repeat:no-repeat,no-repeat!important;
  background-position:center,center!important;
  background-size:66% auto,cover!important;
}

/* gallery grid */
.gal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:52px}
.gal-shot{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--bg-soft)}
.gal-shot img{width:100%;height:100%;object-fit:cover;display:block}
.gal-shot figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:16px 18px;color:#fff;
  font-size:.78rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  background:linear-gradient(transparent,rgba(12,12,14,.84));
}
@media(max-width:900px){.gal-grid{grid-template-columns:1fr 1fr;gap:16px}}
@media(max-width:600px){.gal-grid{grid-template-columns:1fr}}

/* ---------------------------------------------------------------
   Estimate section (v1.0)
   A deliberately different shape from the two-column quote block:
   centred heading, a horizontal band of contact details, then a
   single-column form beneath. Light on the Contact page, dark on
   the home page.
   --------------------------------------------------------------- */
.est{background:var(--bg-soft)}
.est .wrap{display:block}
.est-head{text-align:center;max-width:36em;margin:0 auto}
.est-head .label{margin-left:auto;margin-right:auto}
.est-head p{color:var(--muted);margin-top:16px}

.est-band{
  display:grid;grid-template-columns:.8fr 1.45fr .8fr 1fr;
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  margin:52px 0 0;
}
.est-band div{padding:26px 24px}
.est-band div + div{border-left:1px solid var(--line)}
.est-band small{
  display:block;font-size:.68rem;font-weight:600;letter-spacing:.22em;
  text-transform:uppercase;color:var(--bronze);margin-bottom:9px;
}
.est-band a,.est-band span{
  color:var(--black);font-weight:500;font-size:.98rem;line-height:1.45;
  overflow-wrap:break-word;
}
.est-band a:hover{color:var(--bronze)}

.est-form{max-width:720px;margin:54px auto 0}
.est-form .two{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.est-form .btn{width:100%;margin-top:8px}

/* dark variant, used on the home page. The form card has to go dark too,
   or the white labels land on the default white panel. */
.est.est-dark{background:var(--black)}
.est.est-dark .est-head h2,.est.est-dark .est-band a,.est.est-dark .est-band span{color:#fff}
.est.est-dark .est-head p{color:rgba(255,255,255,.62)}
.est.est-dark .est-band{border-color:rgba(255,255,255,.16)}
.est.est-dark .est-band div + div{border-left-color:rgba(255,255,255,.16)}
.est.est-dark form.enq{
  background:rgba(255,255,255,.04);
  border-color:rgba(255,255,255,.16);
}
.est.est-dark .field label{color:rgba(255,255,255,.60)}
.est.est-dark .field input,.est.est-dark .field select,.est.est-dark .field textarea{
  background:transparent;border-bottom-color:rgba(255,255,255,.26);color:#fff;
}
.est.est-dark .field input:focus,.est.est-dark .field select:focus,
.est.est-dark .field textarea:focus{border-bottom-color:var(--bronze)}
.est.est-dark .field input::placeholder,.est.est-dark .field textarea::placeholder{
  color:rgba(255,255,255,.34);
}
.est.est-dark .field select option{color:var(--black);background:#fff}

@media(max-width:900px){
  .est-band{grid-template-columns:1fr 1fr}
  .est-band div:nth-child(3){border-left:0}
  .est-band div:nth-child(n+3){border-top:1px solid var(--line)}
  .est.est-dark .est-band div:nth-child(n+3){border-top-color:rgba(255,255,255,.16)}
}
@media(max-width:600px){
  .est-band{grid-template-columns:1fr}
  .est-band div + div{border-left:0;border-top:1px solid var(--line)}
  .est.est-dark .est-band div + div{border-top-color:rgba(255,255,255,.16)}
  .est-form .two{grid-template-columns:1fr}
}

/* forced dark mode: pin the light estimate block */
@media (prefers-color-scheme: dark){
  .est{background:var(--bg-soft)!important}
  .est .est-head h2,.est .est-band a,.est .est-band span{color:var(--black)!important}
  .est.est-dark{background:var(--black)!important}
  .est.est-dark .est-head h2,.est.est-dark .est-band a,.est.est-dark .est-band span{color:#fff!important}
}
