/* ==========================================================================
   Epic Floors NZ - design tokens
   Palette grounded in the trade: deep signage blue (from the existing logo),
   warm oak/plank tones (the material itself), ink + paper for legibility.
   ========================================================================== */

:root{
  --ink:        #1B1D22;
  --ink-soft:   #4B4E55;
  --paper:      #F7F4EE;
  --paper-alt:  #EFE8DA;
  --paper-dk:   #E4DBC7;

  --blue-deep:  #173A59;
  --blue:       #5899D3;
  --blue-bright:#66A1D7;

  --oak:        #B87F45;
  --oak-light:  #D9AD78;
  --oak-pale:   #EADFC7;

  --line:       rgba(27,29,34,.14);
  --line-soft:  rgba(27,29,34,.08);

  --ok:         #3D7A4F;

  --font-display: 'Fraunces', Georgia, serif;
  --font-body:    'Inter', -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --font-mono:    'IBM Plex Mono', ui-monospace, SFMono-Regular, monospace;

  --radius: 3px;
  --shadow-card: 0 1px 2px rgba(27,29,34,.06), 0 8px 24px -12px rgba(27,29,34,.18);

  --maxw: 1160px;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; scroll-behavior:auto !important; }
}

body{
  margin:0;
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--paper);
  font-size: 16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3,h4{
  font-family: var(--font-display);
  font-weight: 600;
  line-height:1.08;
  margin:0 0 .5em;
  color: var(--blue-deep);
  letter-spacing:-.01em;
}
h1{ font-size: clamp(2.4rem, 5vw, 3.8rem); font-weight:560; }
h2{ font-size: clamp(1.7rem, 3.2vw, 2.4rem); }
h3{ font-size: 1.25rem; }

p{ margin:0 0 1em; color: var(--ink-soft); }
a{ color: var(--blue); text-decoration:none; }
a:hover{ color: var(--blue-bright); }

img{ max-width:100%; display:block; }

.container{ max-width: var(--maxw); margin:0 auto; padding: 0 24px; }

.eyebrow{
  font-family: var(--font-mono);
  font-size: .74rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--oak);
  display:flex; align-items:center; gap:.6em;
  margin-bottom: .9em;
}
.eyebrow::before{
  content:"";
  width: 22px; height: 2px;
  background: var(--oak);
  display:inline-block;
}

/* -------------------------------------------------- buttons -------------------------------------------------- */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.55em;
  font-family: var(--font-body);
  font-weight:600;
  font-size: .96rem;
  padding: .85em 1.5em;
  border-radius: var(--radius);
  border: 1.5px solid transparent;
  cursor:pointer;
  transition: transform .15s ease, background .15s ease, border-color .15s ease, color .15s ease;
  white-space:nowrap;
}
.btn:focus-visible{ outline: 3px solid var(--blue-bright); outline-offset:2px; }
.btn-primary{ background: var(--oak); color:#fff; }
.btn-primary:hover{ background:#a5713b; color:#fff; transform: translateY(-1px); }
.btn-secondary{ background: transparent; border-color: rgba(255,255,255,.55); color:#fff; }
.btn-secondary:hover{ border-color:#fff; background:rgba(255,255,255,.08); color:#fff; }
.btn-outline{ background:transparent; border-color: var(--blue); color: var(--blue); }
.btn-outline:hover{ background: var(--blue); color:#fff; }
.btn-block{ width:100%; }

/* -------------------------------------------------- header -------------------------------------------------- */
.site-header{
  position: sticky; top:0; z-index: 50;
  background: rgba(247,244,238,.92);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--line-soft);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  padding: 14px 24px;
  max-width: var(--maxw); margin:0 auto;
  gap: 20px;
}
.brand{ display:flex; align-items:center; gap:.65em; }
.brand-logo{ height:46px; width:auto; display:block; }
@media (max-width: 860px){ .brand-logo{ height:40px; } }
.brand-mark{
  width:40px; height:40px; flex:none;
  position:relative;
}
.brand-mark svg{ width:100%; height:100%; }
.brand-word{
  font-family: var(--font-display);
  font-weight:650;
  font-size: 1.18rem;
  color: var(--blue-deep);
  line-height:1.05;
}
.brand-word span{
  display:block;
  font-family: var(--font-mono);
  font-weight:500;
  font-size: .58rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color: var(--oak);
}

.main-nav{ display:flex; align-items:center; gap: 30px; }
.main-nav a{
  font-size:.95rem; font-weight:560; color: var(--ink);
}
.main-nav a:hover{ color: var(--blue); }
.main-nav a.is-active{ color: var(--blue); }

.header-actions{ display:flex; align-items:center; gap:14px; }
.tel-link{
  display:flex; align-items:center; gap:.5em;
  font-family: var(--font-mono);
  font-weight:600; font-size:.92rem;
  color: var(--blue-deep);
}
.tel-link svg{ width:16px; height:16px; flex:none; }

.nav-toggle{
  display:none;
  background:none; border:1px solid var(--line); border-radius: var(--radius);
  width:42px; height:42px; align-items:center; justify-content:center; cursor:pointer;
}
.nav-toggle svg{ width:20px; height:20px; }

@media (max-width: 860px){
  .main-nav{
    position:fixed; inset: 66px 0 0 0; height: calc(100vh - 66px);
    background: var(--paper); flex-direction:column; align-items:flex-start;
    padding: 28px 24px; gap: 22px; transform: translateX(100%);
    transition: transform .25s ease; overflow-y:auto;
  }
  .main-nav.is-open{ transform: translateX(0); }
  .main-nav a{ font-size:1.15rem; }
  .nav-toggle{ display:flex; }
  .tel-link span{ display:none; }
}

/* -------------------------------------------------- plank motif -------------------------------------------------- */
.plank-rule{
  display:flex; width:100%; height:6px; overflow:hidden;
}
.plank-rule span{ flex:1; background: var(--oak); }
.plank-rule span:nth-child(2n){ background: var(--oak-light); }
.plank-rule span:nth-child(3n){ background: var(--blue); }

.plank-divider{
  height: 14px;
  width:100%;
  display:flex;
  border-top:1px solid var(--line-soft);
  border-bottom:1px solid var(--line-soft);
}
.plank-divider i{
  flex:1 0 auto; width:64px;
  border-right:1px solid var(--line-soft);
}
.plank-divider i:nth-child(odd){ background: var(--paper-alt); }
.plank-divider i:nth-child(even){ background: var(--paper); }

/* -------------------------------------------------- hero -------------------------------------------------- */
.hero{
  position:relative;
  background: var(--blue-deep);
  color:#fff;
  overflow:hidden;
  padding: 76px 0 0;
}
.hero-inner{
  max-width: var(--maxw); margin:0 auto; padding: 0 24px 64px;
  display:grid; grid-template-columns: 1.05fr .95fr; gap: 48px; align-items:center;
  position:relative; z-index:2;
}
.hero-copy .eyebrow{ color: var(--oak-light); }
.hero-copy .eyebrow::before{ background: var(--oak-light); }
.hero h1{ color:#fff; }
.hero h1 em{ font-style:normal; color: var(--oak-light); }
.hero-copy p{ color: rgba(255,255,255,.82); font-size: 1.08rem; max-width: 46ch; }
.hero-ctas{ display:flex; gap:14px; margin-top: 28px; flex-wrap:wrap; }

.hero-stats{
  display:flex; gap: 28px; margin-top: 40px; flex-wrap:wrap;
  font-family: var(--font-mono);
}
.hero-stats div{ border-left: 2px solid var(--oak-light); padding-left: 12px; }
.hero-stats strong{ display:block; font-size:1rem; color:#fff; font-weight:600; }
.hero-stats span{ font-size:.72rem; text-transform:uppercase; letter-spacing:.08em; color: rgba(255,255,255,.6); }

/* the floor: animated plank build */
.hero-floor{
  position:relative;
  aspect-ratio: 4 / 3.1;
  border-radius: 6px;
  overflow:hidden;
  box-shadow: 0 30px 60px -20px rgba(0,0,0,.5);
  transform: perspective(900px) rotateX(2deg);
  background: var(--blue-deep);
}
.hero-floor .board{
  position:absolute; left:0; right:0; height: 12.5%;
  background: linear-gradient(90deg, var(--oak-light), var(--oak) 55%, #9c6a36);
  border-bottom: 2px solid rgba(0,0,0,.18);
  opacity:0;
  animation: lay-board .6s ease forwards;
}
.hero-floor .board::after{
  content:""; position:absolute; inset:0;
  background: repeating-linear-gradient( 90deg, rgba(0,0,0,.05) 0 2px, transparent 2px 130px );
}
.hero-floor .board:nth-child(1){ top:0%;   transform: translateX(-40px); animation-delay:.05s; }
.hero-floor .board:nth-child(2){ top:12.5%;transform: translateX(40px);  animation-delay:.18s; }
.hero-floor .board:nth-child(3){ top:25%;  transform: translateX(-40px); animation-delay:.31s; }
.hero-floor .board:nth-child(4){ top:37.5%;transform: translateX(40px);  animation-delay:.44s; }
.hero-floor .board:nth-child(5){ top:50%;  transform: translateX(-40px); animation-delay:.57s; }
.hero-floor .board:nth-child(6){ top:62.5%;transform: translateX(40px);  animation-delay:.70s; }
.hero-floor .board:nth-child(7){ top:75%;  transform: translateX(-40px); animation-delay:.83s; }
.hero-floor .board:nth-child(8){ top:87.5%;transform: translateX(40px);  animation-delay:.96s; }
@keyframes lay-board{ to{ opacity:1; transform: translateX(0); } }
@media (prefers-reduced-motion: reduce){
  .hero-floor .board{ animation:none; opacity:1; transform:none; }
}
.hero-floor-badge{
  position:absolute; right:16px; bottom:16px;
  background: rgba(18,51,95,.92);
  color:#fff; font-family: var(--font-mono); font-size:.72rem;
  padding: 8px 12px; border-radius: 3px; letter-spacing:.04em;
  border: 1px solid rgba(255,255,255,.18);
}

.hero-quote-card{
  box-shadow: 0 30px 60px -20px rgba(0,0,0,.45);
}
.hero-quote-card h3{ color: var(--blue-deep); }
.hero-quote-card .form-note{ color: var(--ink-soft); font-size:.88rem; margin-top:0; }
.hero-quote-card .form-success{ font-size:.85rem; }

@media (max-width: 900px){
  .hero-inner{ grid-template-columns: 1fr; padding-bottom: 40px; }
  .hero-quote-card{ order:-1; }
}

/* -------------------------------------------------- trust bar -------------------------------------------------- */
.trust-bar{
  background: var(--paper-alt);
  border-bottom: 1px solid var(--line-soft);
}
.trust-list{
  display:flex; flex-wrap:wrap; gap: 10px 32px;
  padding: 18px 0;
  font-family: var(--font-mono);
  font-size:.8rem; color: var(--ink-soft);
}
.trust-list li{ display:flex; align-items:center; gap:.55em; list-style:none; }
.trust-list svg{ width:15px; height:15px; color: var(--ok); flex:none; }

/* -------------------------------------------------- sections -------------------------------------------------- */
section{ padding: 84px 0; }
.section-head{ max-width: 640px; margin-bottom: 48px; }
.section-head.center{ margin-left:auto; margin-right:auto; text-align:center; }
.bg-alt{ background: var(--paper-alt); }
.bg-deep{ background: var(--blue-deep); color:#fff; }
.bg-deep h2, .bg-deep h3{ color:#fff; }
.bg-deep p{ color: rgba(255,255,255,.78); }

/* services grid */
.service-grid{
  display:grid; grid-template-columns: repeat(4, 1fr); gap: 22px;
}
@media (max-width: 980px){ .service-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 560px){ .service-grid{ grid-template-columns: 1fr; } }

.service-card{
  background:#fff;
  border:1px solid var(--line-soft);
  border-radius: var(--radius);
  padding: 28px 24px 26px;
  box-shadow: var(--shadow-card);
  display:flex; flex-direction:column; gap:12px;
  transition: transform .18s ease, box-shadow .18s ease;
}
.service-card:hover{ transform: translateY(-3px); box-shadow: 0 20px 40px -20px rgba(27,29,34,.25); }
.service-swatch{
  width:100%; height:56px; border-radius:2px; overflow:hidden; display:flex;
  border:1px solid var(--line-soft);
}
.service-swatch i{ flex:1; }
.service-card h3{ margin-bottom:2px; }
.service-card p{ font-size:.94rem; margin-bottom:.4em; }
.service-card .tag-list{ display:flex; flex-wrap:wrap; gap:6px; margin-top:auto; padding-top:10px; }
.tag{
  font-family: var(--font-mono); font-size:.68rem; letter-spacing:.03em;
  background: var(--paper-alt); color: var(--ink-soft);
  border:1px solid var(--line-soft); padding: 3px 8px; border-radius:2px;
}
.service-card a.card-link{ font-size:.9rem; font-weight:600; }

/* process steps */
.process{ display:grid; grid-template-columns: repeat(4,1fr); gap: 0; position:relative; }
@media (max-width: 900px){ .process{ grid-template-columns: 1fr; gap: 28px; } }
.process-step{ position:relative; padding: 0 22px 0 0; }
.process-step .num{
  font-family: var(--font-mono); color: var(--oak); font-size:.78rem; letter-spacing:.08em;
  display:block; margin-bottom:10px;
}
.process-step h3{ font-size:1.05rem; }
.process-step p{ font-size:.92rem; }
.process-step:not(:last-child)::after{
  content:""; position:absolute; top:6px; right:0; bottom:auto;
  width:1px; height: 22px; background: var(--line);
}
@media (max-width: 900px){ .process-step:not(:last-child)::after{ display:none; } }

/* why us / about split */
.split{ display:grid; grid-template-columns: .95fr 1.05fr; gap: 56px; align-items:center; }
@media (max-width: 900px){ .split{ grid-template-columns: 1fr; gap:32px; } }
.split-media{
  background: var(--oak-pale);
  border-radius: var(--radius);
  aspect-ratio: 5/4;
  position:relative; overflow:hidden;
  border: 1px solid var(--line-soft);
}
.photo-frame{
  position:absolute; inset:0;
  display:flex; align-items:center; justify-content:center;
  flex-direction:column; gap:8px;
  color: var(--oak);
  font-family: var(--font-mono); font-size:.72rem; text-align:center; padding: 20px;
  background: repeating-linear-gradient(180deg, var(--oak-pale) 0 34px, #E2D2AE 34px 36px);
}
.photo-frame svg{ width:34px; height:34px; opacity:.55; }

/* checklist */
.check-list{ list-style:none; margin: 20px 0 0; padding:0; display:grid; gap:12px; }
.check-list li{ display:flex; gap:10px; align-items:flex-start; color: var(--ink); font-size:.98rem; }
.check-list svg{ width:18px; height:18px; flex:none; margin-top:2px; color: var(--ok); }

/* testimonial */
.testimonial{
  max-width: 760px; margin: 0 auto; text-align:center;
}
.testimonial blockquote{
  font-family: var(--font-display); font-size: clamp(1.3rem,2.4vw,1.7rem);
  color: #fff; font-weight:500; line-height:1.4; margin: 0 0 20px;
}
.testimonial cite{
  font-style:normal; font-family: var(--font-mono); font-size:.82rem;
  color: rgba(255,255,255,.6); letter-spacing:.03em;
}
.stars{ display:flex; gap:4px; justify-content:center; margin-bottom:18px; }
.stars svg{ width:18px; height:18px; color: var(--oak); }

/* gallery */
.gallery-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:16px; }
@media (max-width: 800px){ .gallery-grid{ grid-template-columns: repeat(2,1fr); } }
@media (max-width: 520px){ .gallery-grid{ grid-template-columns: 1fr; } }
.gallery-item{
  aspect-ratio: 4/3; border-radius: var(--radius); overflow:hidden;
  border:1px solid var(--line-soft); position:relative;
}
.gallery-item .photo-frame{ font-size:.68rem; }

/* CTA band */
.cta-band{
  background: var(--oak);
  color:#fff; text-align:center;
  padding: 64px 24px;
}
.cta-band h2{ color:#fff; }
.cta-band p{ color: rgba(255,255,255,.9); max-width:52ch; margin-inline:auto; }
.cta-band .hero-ctas{ justify-content:center; }
.cta-band .btn-primary{ background: var(--blue-deep); }
.cta-band .btn-primary:hover{ background: #0d2649; }
.cta-band .btn-secondary{ border-color: rgba(255,255,255,.6); }

/* contact */
.contact-grid{ display:grid; grid-template-columns: .95fr 1.05fr; gap: 48px; }
@media (max-width: 900px){ .contact-grid{ grid-template-columns:1fr; } }
.contact-card{
  background:#fff; border:1px solid var(--line-soft); border-radius: var(--radius);
  padding: 30px; box-shadow: var(--shadow-card);
}
.contact-method{
  display:flex; gap:14px; align-items:flex-start; padding: 16px 0; border-bottom:1px solid var(--line-soft);
}
.contact-method:last-child{ border-bottom:none; }
.contact-method svg{ width:20px; height:20px; color: var(--blue); flex:none; margin-top:2px; }
.contact-method strong{ display:block; font-size:.94rem; }
.contact-method span, .contact-method a{ font-size:.92rem; color: var(--ink-soft); }

.form-field{ margin-bottom:18px; }
.form-field label{ display:block; font-size:.86rem; font-weight:600; margin-bottom:6px; }
.form-field input, .form-field select, .form-field textarea{
  width:100%; padding: .78em .9em; border:1.5px solid var(--line);
  border-radius: var(--radius); font-family: var(--font-body); font-size:.96rem;
  background:#fff; color: var(--ink);
}
.form-field input:focus, .form-field select:focus, .form-field textarea:focus{
  outline: 2px solid var(--blue-bright); outline-offset:1px; border-color: var(--blue-bright);
}
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:560px){ .form-row{ grid-template-columns:1fr; } }
.form-note{ font-size:.82rem; color: var(--ink-soft); margin-top:10px; }
.form-success{
  display:none; background: #E9F3EB; border:1px solid #BFDFC6; color:#2A5C38;
  padding:14px 16px; border-radius: var(--radius); font-size:.9rem; margin-bottom:18px;
}
.form-success.is-visible{ display:block; }

/* areas served */
.area-list{ columns: 3; gap: 24px; margin-top: 20px; }
@media (max-width:700px){ .area-list{ columns:2; } }
.area-list li{ break-inside:avoid; margin-bottom:8px; font-size:.94rem; }

/* page hero (interior pages) */
.page-hero{
  background: var(--blue-deep); color:#fff; padding: 56px 0 44px;
}
.page-hero .eyebrow{ color: var(--oak-light); }
.page-hero .eyebrow::before{ background: var(--oak-light); }
.page-hero h1{ color:#fff; margin-bottom:.3em; }
.page-hero p{ color: rgba(255,255,255,.8); max-width:58ch; }
.breadcrumb{
  font-family: var(--font-mono); font-size:.76rem; color: rgba(255,255,255,.55);
  margin-bottom: 16px; letter-spacing:.03em;
}
.breadcrumb a{ color: rgba(255,255,255,.75); }

/* FAQ */
.faq{ max-width: 760px; margin: 0 auto; }
.faq-item{ border-bottom:1px solid var(--line-soft); padding: 18px 0; }
.faq-item summary{
  cursor:pointer; font-weight:600; font-size:1.02rem; color: var(--blue-deep);
  list-style:none; display:flex; justify-content:space-between; align-items:center; gap:16px;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary::after{
  content:"+"; font-family: var(--font-mono); font-size:1.3rem; color: var(--oak); flex:none;
}
.faq-item[open] summary::after{ content:"–"; }
.faq-item p{ margin-top:10px; }

/* -------------------------------------------------- footer -------------------------------------------------- */
.site-footer{ background: var(--ink); color: rgba(255,255,255,.75); padding: 56px 0 28px; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 36px; }
@media (max-width:800px){ .footer-grid{ grid-template-columns: 1fr 1fr; } }
.footer-grid h4{ color:#fff; font-family:var(--font-mono); font-size:.76rem; letter-spacing:.1em; text-transform:uppercase; margin-bottom:16px; }
.footer-brand .brand-word{ color:#fff; }
.footer-brand p{ color: rgba(255,255,255,.6); font-size:.9rem; max-width:32ch; }
.footer-links{ list-style:none; margin:0; padding:0; display:grid; gap:10px; }
.footer-links a{ color: rgba(255,255,255,.72); font-size:.92rem; }
.footer-links a:hover{ color:#fff; }
.footer-social{ display:flex; gap:12px; margin-top:16px; }
.footer-social a{
  width:36px; height:36px; border:1px solid rgba(255,255,255,.25); border-radius:50%;
  display:flex; align-items:center; justify-content:center;
}
.footer-social svg{ width:16px; height:16px; color:#fff; }
.footer-bottom{
  border-top:1px solid rgba(255,255,255,.14); margin-top:44px; padding-top:22px;
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;
  font-size:.8rem; color: rgba(255,255,255,.5);
}

.skip-link{
  position:absolute; left:-999px; top:auto;
  background:var(--blue-deep); color:#fff; padding:10px 16px; z-index:100;
}
.skip-link:focus{ left:12px; top:12px; }

.visually-hidden{ position:absolute; width:1px;height:1px; overflow:hidden; clip:rect(0 0 0 0); }
