/* =========================================================
   Horizon Designs — style.css
   Editorial / architectural residential landing page
   ========================================================= */

:root{
  /* Colour */
  --color-gold:      #BBA45E;   /* brand */
  --color-gold-deep: #8E7734;   /* accessible gold for text on light */
  --color-gold-soft: #EFE7D2;

  --color-bg:        #FAF8F4;   /* warm off-white */
  --color-surface:   #FFFFFF;
  --color-ivory:     #F2EEE6;
  --color-ink:       #1C1B18;   /* near-black, warm */
  --color-charcoal:  #33322D;
  --color-muted:     #6C685E;
  --color-border:    #E3DDD1;

  /* Type */
  --font: "Manrope", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;
  --h1: clamp(2.5rem, 6.2vw, 4.75rem);
  --h2: clamp(1.9rem, 3.6vw, 3rem);
  --h3: clamp(1.3rem, 2vw, 1.75rem);
  --body: clamp(1rem, 1.05vw, 1.125rem);

  /* Layout */
  --container: 1280px;
  --gutter: clamp(1.25rem, 4vw, 3rem);
  --section-y: clamp(4.5rem, 9vw, 8.5rem);
  --radius: 4px;
  --radius-lg: 6px;

  /* Motion */
  --ease: cubic-bezier(.22,.61,.36,1);
  --t-fast: 220ms var(--ease);
  --t-mid: 420ms var(--ease);
  --t-slow: 760ms var(--ease);

  color-scheme: light;
}

/* ---------- Base ---------- */
*,*::before,*::after{ box-sizing:border-box; }

html{ scroll-behavior:smooth; scroll-padding-top:90px; -webkit-text-size-adjust:100%; }

body{
  margin:0;
  background:var(--color-bg);
  color:var(--color-ink);
  font-family:var(--font);
  font-size:var(--body);
  font-weight:400;
  line-height:1.65;
  letter-spacing:-0.005em;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{ display:block; max-width:100%; height:auto; background:var(--color-ivory); }

h1,h2,h3{ margin:0; font-weight:600; letter-spacing:-0.025em; line-height:1.08; }
h1{ font-size:var(--h1); }
h2{ font-size:var(--h2); line-height:1.12; }
h3{ font-size:var(--h3); line-height:1.2; }
p{ margin:0 0 1.1em; max-width:66ch; }

a{ color:inherit; }

ul,ol{ margin:0; padding:0; list-style:none; }

.container{ width:100%; max-width:var(--container); margin-inline:auto; padding-inline:var(--gutter); }
.section{ padding-block:var(--section-y); }

.sr-only{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0;
}

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--color-ink); color:#fff; padding:.75rem 1.25rem; text-decoration:none;
}
.skip-link:focus{ left:0; }

:focus-visible{
  outline:2px solid var(--color-gold-deep);
  outline-offset:3px;
}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:52px; padding:0 1.85rem;
  font-size:.975rem; font-weight:600; letter-spacing:-0.01em;
  text-decoration:none; border:1px solid transparent; border-radius:var(--radius);
  cursor:pointer; transition:background var(--t-fast), color var(--t-fast), border-color var(--t-fast), transform var(--t-fast);
}
.btn-primary{ background:var(--color-gold); color:#211C0C; }
.btn-primary:hover{ background:#A98F45; transform:translateY(-1px); }
.btn-ghost{ background:transparent; color:#fff; border-color:rgba(255,255,255,.55); }
.btn-ghost:hover{ background:rgba(255,255,255,.12); border-color:#fff; }

.link-arrow{
  display:inline-flex; align-items:center; gap:.55rem;
  font-weight:600; color:var(--color-gold-deep); text-decoration:none;
  padding-bottom:2px; border-bottom:1px solid var(--color-gold);
}
.link-arrow::after{
  content:""; width:18px; height:1px; background:currentColor;
  transition:width var(--t-fast);
}
.link-arrow:hover::after{ width:30px; }

/* ---------- Header ---------- */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:100;
  padding-top:env(safe-area-inset-top, 0px);
  background:transparent;
  transition:background var(--t-mid), box-shadow var(--t-mid), border-color var(--t-mid);
  border-bottom:1px solid transparent;
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  gap:1.5rem; padding-block:1.35rem;
  transition:padding var(--t-mid);
}
.site-header.is-scrolled{
  background:rgba(250,248,244,.92);
  backdrop-filter:saturate(1.2) blur(10px);
  border-bottom-color:var(--color-border);
}
.site-header.is-scrolled .header-inner{ padding-block:.7rem; }

.brand{ display:flex; align-items:center; gap:.7rem; text-decoration:none; }
.brand-mark{ width:auto; height:38px; background:none; transition:height var(--t-mid); }
.site-header.is-scrolled .brand-mark{ height:32px; }
.brand-text{
  font-weight:600; font-size:1.02rem; letter-spacing:-0.015em; color:#fff;
  transition:color var(--t-mid);
}
.site-header.is-scrolled .brand-text{ color:var(--color-ink); }

.nav{ display:flex; align-items:center; gap:2.25rem; }
.nav-list{ display:flex; gap:1.9rem; }
.nav-list a{
  position:relative; text-decoration:none; font-size:.95rem; font-weight:500;
  color:rgba(255,255,255,.88); transition:color var(--t-fast);
}
.nav-list a::after{
  content:""; position:absolute; left:0; bottom:-6px; width:0; height:1px;
  background:var(--color-gold); transition:width var(--t-fast);
}
.nav-list a:hover::after{ width:100%; }
.site-header.is-scrolled .nav-list a{ color:var(--color-charcoal); }
.nav-cta{ min-height:44px; padding:0 1.3rem; font-size:.925rem; }

.nav-toggle{
  display:none; width:48px; height:48px; align-items:center; justify-content:center;
  background:transparent; border:1px solid rgba(255,255,255,.4); border-radius:var(--radius);
  cursor:pointer; transition:border-color var(--t-fast), background var(--t-fast);
}
.site-header.is-scrolled .nav-toggle{ border-color:var(--color-border); }
.nav-toggle-bars{ display:block; width:20px; }
.nav-toggle-bars span{
  display:block; height:1.5px; background:#fff; transition:transform var(--t-fast), opacity var(--t-fast), background var(--t-mid);
}
.nav-toggle-bars span:first-child{ margin-bottom:6px; }
.site-header.is-scrolled .nav-toggle-bars span{ background:var(--color-ink); }
.nav-toggle[aria-expanded="true"] .nav-toggle-bars span{ background:var(--color-ink); }
.nav-toggle[aria-expanded="true"] .nav-toggle-bars span:first-child{ transform:translateY(3.75px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle-bars span:last-child{ transform:translateY(-3.75px) rotate(-45deg); }

.nav-scrim{
  position:fixed; inset:0; z-index:90; background:rgba(28,27,24,.45);
  opacity:0; transition:opacity var(--t-mid);
}
.nav-scrim.is-open{ opacity:1; }

/* ---------- Hero ---------- */
.hero{
  position:relative; isolation:isolate;
  min-height:clamp(560px, 92vh, 880px);
  display:flex; align-items:flex-end;
  padding-block:clamp(7rem,14vh,9rem) clamp(3.5rem,8vh,6rem);
  overflow:hidden;
}
.hero-media{ position:absolute; inset:0; z-index:-2; }
.hero-media img{
  width:100%; height:100%; object-fit:cover; object-position:center 60%;
  transform:scale(1.06); animation:heroScale 1600ms var(--ease) forwards;
}
@keyframes heroScale{ to{ transform:scale(1); } }
.hero::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(180deg, rgba(20,19,16,.62) 0%, rgba(20,19,16,.28) 38%, rgba(20,19,16,.78) 100%);
}
.hero-inner{ color:#fff; }
.hero-area{
  display:flex; align-items:center; gap:.65rem;
  font-size:.925rem; font-weight:500; color:rgba(255,255,255,.85); margin-bottom:1.1rem;
}
.hero-area .dot{ width:7px; height:7px; border-radius:50%; background:var(--color-gold); }
.hero h1{ max-width:16ch; text-wrap:balance; }
.hero-sub{
  margin-top:1.15rem; max-width:44ch;
  font-size:clamp(1.05rem,1.5vw,1.3rem); font-weight:400; color:rgba(255,255,255,.9);
}
.hero-actions{ display:flex; flex-wrap:wrap; gap:.9rem; margin-top:2rem; }
.hero-rule{
  position:absolute; left:0; right:0; bottom:0; height:2px;
  background:linear-gradient(90deg, var(--color-gold) 0%, var(--color-gold) 34%, rgba(187,164,94,0) 100%);
}

/* hero entrance */
.hero-area,.hero h1,.hero-sub,.hero-actions{ opacity:0; transform:translateY(16px); animation:riseIn 900ms var(--ease) forwards; }
.hero h1{ animation-delay:120ms; }
.hero-sub{ animation-delay:240ms; }
.hero-actions{ animation-delay:360ms; }
@keyframes riseIn{ to{ opacity:1; transform:none; } }

/* ---------- Trust strip ---------- */
.trust{ background:var(--color-ink); color:#fff; }
.trust-inner{
  display:flex; flex-wrap:wrap; align-items:center;
  padding-block:1.4rem;
}
.trust-item{
  display:flex; align-items:center; gap:.7rem; margin:0;
  flex:1 1 220px; padding-block:.5rem;
  font-size:.975rem; font-weight:500; color:rgba(255,255,255,.9);
}
.trust-item + .trust-item{
  border-left:1px solid rgba(255,255,255,.14); padding-left:clamp(1rem,3vw,2.5rem);
}
.trust-mark{ width:9px; height:9px; background:var(--color-gold); transform:rotate(45deg); flex:none; }

/* ---------- Intro ---------- */
.intro-grid{
  display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(2rem,6vw,5rem); align-items:center;
}
.intro-copy h2{ max-width:17ch; margin-bottom:1.5rem; text-wrap:balance; }
.intro-copy p{ color:var(--color-muted); max-width:52ch; }
.intro-figure{ margin:0; position:relative; }
.intro-figure img{ width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--radius-lg); }
.intro-figure::before{
  content:""; position:absolute; left:-14px; top:-14px; width:80px; height:80px;
  border-left:2px solid var(--color-gold); border-top:2px solid var(--color-gold);
}

/* ---------- Section head ---------- */
.section-head{ margin-bottom:clamp(2rem,4vw,3.25rem); max-width:60ch; }
.section-head h2{ text-wrap:balance; }
.section-head p{ margin-top:1rem; color:var(--color-muted); }

/* ---------- Work gallery ---------- */
.work{ background:var(--color-ivory); }

/* filters */
.work-filters{
  display:flex; flex-wrap:wrap; gap:.4rem 1.6rem;
  margin-bottom:clamp(1.5rem,3vw,2.25rem);
  padding-bottom:1rem; border-bottom:1px solid var(--color-border);
}
.filter{
  position:relative; background:none; border:0; padding:.35rem 0;
  font:inherit; font-size:.95rem; font-weight:500; color:var(--color-muted);
  cursor:pointer; transition:color var(--t-fast);
}
.filter::after{
  content:""; position:absolute; left:0; right:100%; bottom:0; height:1px;
  background:var(--color-gold); transition:right var(--t-fast);
}
.filter:hover{ color:var(--color-ink); }
.filter.is-active{ color:var(--color-ink); font-weight:600; }
.filter.is-active::after{ right:0; }

/* grid */
.gallery{
  display:grid; gap:clamp(.75rem,1.4vw,1.15rem);
  grid-template-columns:repeat(6,1fr);
  grid-auto-flow:dense;
}
.shot{
  position:relative; display:block; margin:0; padding:0;
  border:0; border-radius:var(--radius-lg); overflow:hidden;
  background:#ddd8cd; cursor:zoom-in; width:100%;
}
.shot[hidden]{ display:none; }
.shot img{ width:100%; height:100%; object-fit:cover; transition:transform 900ms var(--ease); }
.shot.wide{ aspect-ratio:16/10; }
.shot.tall{ aspect-ratio:4/5; }
.span-2{ grid-column:span 2; }
.span-3{ grid-column:span 3; }
.span-4{ grid-column:span 4; }

.shot-label{
  position:absolute; left:0; right:0; bottom:0;
  padding:1.6rem 1.25rem .95rem; text-align:left;
  font-size:.875rem; font-weight:600; color:#fff;
  background:linear-gradient(180deg, rgba(20,19,16,0), rgba(20,19,16,.72));
  opacity:0; transform:translateY(8px); transition:opacity var(--t-mid), transform var(--t-mid);
}
.shot:hover img,.shot:focus-visible img{ transform:scale(1.045); }
.shot:hover .shot-label,.shot:focus-visible .shot-label{ opacity:1; transform:none; }

.gallery-empty{ margin-top:1.5rem; color:var(--color-muted); }
.gallery-more{ margin:clamp(1.75rem,3vw,2.5rem) 0 0; }
.gallery-more[hidden]{ display:none; }
.btn-outline{
  background:transparent; color:var(--color-ink); border-color:var(--color-border);
}
.btn-outline:hover{ border-color:var(--color-gold); background:#fff; transform:translateY(-1px); }

.work-cta{ margin-top:clamp(1.5rem,2.5vw,2rem); }

/* ---------- Lightbox ---------- */
.lightbox{
  position:fixed; inset:0; z-index:150;
  display:flex; align-items:center; justify-content:center;
  padding:clamp(1rem,4vw,3rem);
  padding-top:calc(clamp(1rem,4vw,3rem) + env(safe-area-inset-top,0px));
  padding-bottom:calc(clamp(1rem,4vw,3rem) + env(safe-area-inset-bottom,0px));
  background:rgba(18,17,15,.97);
  opacity:0; transition:opacity var(--t-mid);
}
.lightbox[hidden]{ display:none; }
.lightbox.is-open{ opacity:1; }
.lb-stage{ margin:0; max-width:min(1200px,100%); text-align:center; }
.lb-stage img{
  max-width:100%; max-height:calc(100vh - 9rem); width:auto; height:auto;
  margin-inline:auto; background:none; border-radius:var(--radius-lg);
  transform:scale(.985); opacity:0; transition:opacity var(--t-mid), transform var(--t-mid);
}
.lightbox.is-open .lb-stage img{ opacity:1; transform:none; }
.lb-stage figcaption{
  margin-top:1rem; font-size:.875rem; font-weight:600; color:var(--color-gold);
}
.lb-btn{
  position:absolute; width:52px; height:52px; padding:0;
  background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.22);
  border-radius:var(--radius); cursor:pointer;
  transition:background var(--t-fast), border-color var(--t-fast);
}
.lb-btn:hover{ background:rgba(255,255,255,.16); border-color:rgba(255,255,255,.5); }
.lb-btn::before,.lb-btn::after{
  content:""; position:absolute; left:50%; top:50%; background:#fff;
}
.lb-close{ top:clamp(1rem,3vw,2rem); right:clamp(1rem,3vw,2rem); }
.lb-close::before,.lb-close::after{ width:18px; height:1.5px; margin:-1px 0 0 -9px; }
.lb-close::before{ transform:rotate(45deg); }
.lb-close::after{ transform:rotate(-45deg); }
.lb-prev{ left:clamp(.75rem,3vw,2rem); }
.lb-next{ right:clamp(.75rem,3vw,2rem); }
.lb-prev::before,.lb-next::before{
  width:13px; height:13px; background:none;
  border-left:1.5px solid #fff; border-bottom:1.5px solid #fff; margin:-7px 0 0 -5px;
}
.lb-prev::before{ transform:rotate(45deg); }
.lb-next::before{ transform:rotate(-135deg); margin-left:-9px; }
body.lb-open{ overflow:hidden; }

/* ---------- Services ---------- */
.service-row{
  display:grid; grid-template-columns:minmax(220px,1fr) 1.2fr auto;
  gap:clamp(1rem,4vw,3rem); align-items:baseline;
  padding-block:clamp(1.75rem,3.5vw,2.6rem);
  border-top:1px solid var(--color-border);
  transition:border-color var(--t-mid);
}
.service-row:last-child{ border-bottom:1px solid var(--color-border); }
.service-row:hover{ border-top-color:var(--color-gold); }
.service-list{ display:flex; flex-wrap:wrap; gap:.4rem 1.4rem; color:var(--color-charcoal); }
.service-list li{ position:relative; padding-left:1rem; }
.service-list li::before{
  content:""; position:absolute; left:0; top:.72em; width:5px; height:5px;
  background:var(--color-gold); transform:rotate(45deg);
}
.service-note{ margin:0; color:var(--color-muted); font-size:.95rem; max-width:32ch; }

/* ---------- Process ---------- */
.process{ background:var(--color-ink); color:#fff; }
.process .section-head p{ color:rgba(255,255,255,.72); }
.steps{ display:grid; grid-template-columns:repeat(5,1fr); gap:0; }
.step{
  padding:1.9rem 1.5rem 0 0;
  border-top:1px solid rgba(255,255,255,.18);
  position:relative;
}
.step + .step{ padding-left:1.5rem; }
.step::before{
  content:""; position:absolute; top:-4px; left:0; width:7px; height:7px;
  background:var(--color-gold); transform:rotate(45deg);
}
.step-num{
  display:block; font-size:.85rem; font-weight:600; color:var(--color-gold); margin-bottom:1rem;
}
.step h3{ font-size:1.1rem; margin-bottom:.6rem; }
.step p{ color:rgba(255,255,255,.7); font-size:.95rem; margin:0; }

/* ---------- About ---------- */
.about-grid{
  display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(2rem,6vw,5rem); align-items:center;
}
.about-figure{ margin:0; }
.about-figure img{ width:100%; aspect-ratio:3/4; object-fit:cover; border-radius:var(--radius-lg); }
.about-copy h2{ max-width:16ch; margin-bottom:1.5rem; }
.about-copy p{ color:var(--color-muted); }
.about-sign{
  margin-top:1.8rem; padding-top:1.3rem; border-top:1px solid var(--color-border);
  color:var(--color-charcoal); font-weight:500;
}

/* ---------- Testimonial ---------- */
.testimonial{ background:var(--color-ivory); }
.testimonial-inner{ max-width:52rem; }
.testimonial blockquote{ margin:0; }
.testimonial blockquote p{
  font-size:clamp(1.35rem,2.9vw,2.15rem); font-weight:500; line-height:1.32;
  letter-spacing:-0.02em; max-width:24ch; text-wrap:balance;
}
.testimonial blockquote footer{
  margin-top:1.4rem; padding-left:1.1rem; border-left:2px solid var(--color-gold);
  color:var(--color-muted); font-size:.95rem;
}

/* ---------- Mid CTA ---------- */
.midcta{
  background:var(--color-ink); color:#fff;
  padding-block:clamp(3.5rem,7vw,6rem);
  border-top:2px solid var(--color-gold);
}
.midcta-inner h2{ max-width:18ch; text-wrap:balance; }
.midcta-inner p{ margin-top:1rem; color:rgba(255,255,255,.75); max-width:46ch; }
.midcta-inner .btn{ margin-top:1.9rem; }

/* ---------- Quote form ---------- */
.quote-grid{ display:grid; grid-template-columns:.85fr 1.15fr; gap:clamp(2.25rem,6vw,5rem); align-items:start; }
.quote-intro h2{ max-width:14ch; margin-bottom:1.25rem; }
.quote-intro > p{ color:var(--color-muted); }
.quote-photos{ color:var(--color-charcoal); font-weight:500; }
.quote-contact{ margin-top:2.25rem; border-top:1px solid var(--color-border); }
.quote-contact li{
  display:flex; flex-wrap:wrap; gap:.35rem 1rem; align-items:baseline;
  padding-block:.9rem; border-bottom:1px solid var(--color-border);
}
.quote-contact span{ min-width:110px; color:var(--color-muted); font-size:.9rem; }
.quote-contact a{ text-decoration:none; font-weight:600; border-bottom:1px solid var(--color-gold); }
.quote-contact a:hover{ color:var(--color-gold-deep); }

.quote-form{
  display:grid; grid-template-columns:1fr 1fr; gap:1.25rem 1.5rem;
  background:var(--color-surface); border:1px solid var(--color-border);
  border-radius:var(--radius-lg); padding:clamp(1.5rem,3vw,2.5rem);
}
.field{ display:flex; flex-direction:column; min-width:0; }
.field-wide{ grid-column:1 / -1; }
label,.label-text{
  font-size:.9rem; font-weight:600; margin-bottom:.5rem; color:var(--color-charcoal);
}
.req{ color:var(--color-gold-deep); }
.opt{ font-weight:400; color:var(--color-muted); font-size:.82rem; }

input,select,textarea{
  font:inherit; font-size:1rem; color:var(--color-ink);
  background:var(--color-bg); border:1px solid var(--color-border); border-radius:var(--radius);
  padding:.85rem .95rem; min-height:52px; width:100%;
  transition:border-color var(--t-fast), background var(--t-fast), box-shadow var(--t-fast);
}
textarea{ resize:vertical; min-height:120px; line-height:1.55; }
select{ appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--color-muted) 50%),linear-gradient(135deg,var(--color-muted) 50%,transparent 50%); background-position:calc(100% - 20px) calc(50% + 2px), calc(100% - 15px) calc(50% + 2px); background-size:5px 5px,5px 5px; background-repeat:no-repeat; padding-right:2.75rem; }
input:hover,select:hover,textarea:hover{ border-color:#cfc7b6; }
input:focus,select:focus,textarea:focus{ outline:none; background:#fff; border-color:var(--color-gold); box-shadow:0 0 0 3px rgba(187,164,94,.18); }
input.is-invalid,textarea.is-invalid{ border-color:#A6412F; background:#fdf5f3; }

.error{ margin:.4rem 0 0; font-size:.85rem; color:#A6412F; min-height:1.1em; }

.upload{
  display:flex; flex-direction:column; gap:.3rem; cursor:pointer; margin:0;
  border:1px dashed #cfc7b6; border-radius:var(--radius); padding:1.25rem 1.15rem;
  background:var(--color-bg); transition:border-color var(--t-fast), background var(--t-fast);
}
.upload:hover{ border-color:var(--color-gold); background:#fff; }
.upload-title{ font-weight:600; font-size:.95rem; }
.upload-help{ font-weight:400; font-size:.875rem; color:var(--color-muted); }
.upload-count{ font-size:.875rem; font-weight:600; color:var(--color-gold-deep); }
.upload:focus-within{ border-color:var(--color-gold); box-shadow:0 0 0 3px rgba(187,164,94,.18); }

.form-foot{ display:flex; flex-wrap:wrap; align-items:center; gap:1rem 1.5rem; margin-top:.25rem; }
.form-note{ margin:0; font-size:.875rem; color:var(--color-muted); }
.form-status{
  grid-column:1 / -1; margin:0; font-weight:600; color:var(--color-gold-deep);
  opacity:0; transform:translateY(6px); transition:opacity var(--t-mid), transform var(--t-mid);
}
.form-status.is-visible{ opacity:1; transform:none; }

/* ---------- Footer ---------- */
.site-footer{ background:var(--color-ink); color:rgba(255,255,255,.78); padding-top:clamp(3rem,6vw,4.5rem); }
.footer-grid{
  display:grid; grid-template-columns:1.4fr 1fr 1fr; gap:2.5rem;
  padding-bottom:clamp(2.5rem,5vw,3.5rem);
}
.footer-brand img{ width:200px; max-width:60%; height:auto; background:none; margin-bottom:1.15rem; }
.footer-line{ margin:0; font-size:.925rem; max-width:34ch; }
.footer-nav ul{ display:grid; gap:.6rem; }
.footer-nav a{ text-decoration:none; font-size:.95rem; transition:color var(--t-fast); }
.footer-nav a:hover{ color:var(--color-gold); }
.footer-contact{ display:grid; gap:.6rem; align-content:start; font-size:.95rem; }
.footer-contact a{ text-decoration:none; }
.footer-contact a:hover{ color:var(--color-gold); }
.footer-contact p{ margin:0; }
.footer-base{
  border-top:1px solid rgba(255,255,255,.14); padding-block:1.5rem;
}
.footer-base p{ margin:0; font-size:.85rem; color:rgba(255,255,255,.55); }

/* ---------- Scroll reveal ---------- */
.reveal{ opacity:0; transform:translateY(22px); transition:opacity var(--t-slow), transform var(--t-slow); }
.reveal.is-visible{ opacity:1; transform:none; }
.shot.reveal{ transition-delay:var(--d,0ms); }
.step.reveal{ transition-delay:var(--d,0ms); }
.service-row.reveal{ transition-delay:var(--d,0ms); }

/* =========================================================
   RESPONSIVE
   ========================================================= */

@media (max-width:1080px){
  .intro-grid,.about-grid,.quote-grid{ grid-template-columns:1fr; }
  .about-figure{ max-width:520px; }
  .about-figure img{ aspect-ratio:16/11; }
  .steps{ grid-template-columns:repeat(2,1fr); gap:0 1.5rem; }
  .step + .step{ padding-left:0; }
  .step{ padding-right:1rem; margin-bottom:1.5rem; }
  .service-row{ grid-template-columns:minmax(180px,1fr) 1.2fr; }
  .service-note{ grid-column:2; }
}

@media (max-width:860px){
  .nav-toggle{ display:inline-flex; position:relative; z-index:96; }
  .nav{
    position:fixed; z-index:95; top:0; right:0; bottom:0; width:min(88vw,360px);
    flex-direction:column; align-items:stretch; justify-content:center; gap:2rem;
    background:var(--color-bg);
    padding:calc(2rem + env(safe-area-inset-top,0px)) var(--gutter) calc(2rem + env(safe-area-inset-bottom,0px));
    transform:translateX(100%); transition:transform 380ms var(--ease);
    box-shadow:-20px 0 60px rgba(20,19,16,.16);
  }
  .nav.is-open{ transform:none; }
  .nav-list{ flex-direction:column; gap:.25rem; }
  .nav-list a,
  .site-header.is-scrolled .nav-list a{
    display:block; padding:.85rem 0; font-size:1.25rem; font-weight:600;
    color:var(--color-ink); border-bottom:1px solid var(--color-border);
  }
  .nav-list a::after{ display:none; }
  .nav-cta{ width:100%; min-height:52px; }

  .gallery{ grid-template-columns:repeat(2,1fr); }
  .span-2{ grid-column:span 1; }
  .span-3,.span-4{ grid-column:span 2; }
  .shot.tall{ aspect-ratio:4/5; }
  .shot.wide{ aspect-ratio:4/3; }
  .span-3.wide,.span-4.wide{ aspect-ratio:16/10; }
  .shot-label{ opacity:1; transform:none; }
  .lb-btn{ width:48px; height:48px; }
  .lb-prev{ bottom:clamp(1rem,4vw,2rem); left:calc(50% - 56px); }
  .lb-next{ bottom:clamp(1rem,4vw,2rem); right:calc(50% - 56px); }
  .lb-stage img{ max-height:calc(100vh - 13rem); }

  .quote-form{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr 1fr; }
  .footer-brand{ grid-column:1 / -1; }
}

@media (max-width:620px){
  html{ scroll-padding-top:74px; }
  .hero{ min-height:78svh; align-items:flex-end; }
  .hero-media img{ object-position:center 55%; }
  .hero h1{ font-size:clamp(2.2rem,9.5vw,3rem); }
  .hero-actions .btn{ flex:1 1 100%; }

  .trust-inner{ display:grid; grid-template-columns:1fr; padding-block:.5rem; }
  .trust-item + .trust-item{ border-left:0; border-top:1px solid rgba(255,255,255,.14); padding-left:0; }
  .trust-item{ padding-block:.85rem; }

  .intro-figure::before{ display:none; }
  .gallery{ grid-template-columns:1fr; }
  .span-2,.span-3,.span-4{ grid-column:span 1; }
  .shot.wide,.span-3.wide,.span-4.wide{ aspect-ratio:4/3; }
  .shot.tall{ aspect-ratio:4/5; }
  .work-filters{ gap:.4rem 1.25rem; }

  .service-row{ grid-template-columns:1fr; gap:.85rem; }
  .service-note{ grid-column:1; }
  .steps{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr; gap:2rem; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.01ms !important; animation-iteration-count:1 !important;
    transition-duration:.01ms !important; scroll-behavior:auto !important;
  }
  .reveal{ opacity:1; transform:none; }
  .hero-area,.hero h1,.hero-sub,.hero-actions{ opacity:1; transform:none; }
  .hero-media img{ transform:none; }
  .shot-label{ opacity:1; transform:none; }
  .lightbox,.lb-stage img{ opacity:1; transform:none; }
}
