/* ============================================================
   Dallas Wallpaper Installation Team - Design System
   Texas-modern editorial palette: cream, ink, terracotta, bronze
   ============================================================ */

:root{
  /* Palette */
  --cream:#f6f1ea;
  --cream-2:#efe6d6;
  --ink:#15110d;
  --ink-2:#2a2520;
  --ink-3:#4a423a;
  --muted:#8a7d6e;
  --line:#dccfb8;
  --paper:#fbf8f2;
  --terracotta:#b6593a;
  --terracotta-deep:#8d3f25;
  --bronze:#8a6a4a;
  --sage:#7d8c6c;
  --gold:#c8a16a;

  /* Tokens */
  --shadow-1: 0 1px 2px rgba(21,17,13,.04), 0 4px 14px rgba(21,17,13,.06);
  --shadow-2: 0 8px 30px rgba(21,17,13,.10);
  --shadow-3: 0 24px 60px rgba(21,17,13,.18);
  --r-sm:6px; --r-md:12px; --r-lg:20px; --r-xl:28px;

  /* Type */
  --serif: "Fraunces","Libre Baskerville", Georgia, serif;
  --sans: "Inter","Manrope", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  /* Layout */
  --container: 1240px;
  --gutter: clamp(20px, 4vw, 48px);
}

/* ===== Reset ===== */
*,*::before,*::after{box-sizing:border-box}
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
body{
  margin:0; font-family:var(--sans);
  font-size:16px; line-height:1.65; color:var(--ink-2);
  background:var(--cream); -webkit-font-smoothing:antialiased;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit; text-decoration:none}
button{font-family:inherit; cursor:pointer}
ul{margin:0; padding-left:20px}
h1,h2,h3,h4{font-family:var(--serif); font-weight:500; color:var(--ink); letter-spacing:-.01em; margin:0 0 .6em}
h1{font-size:clamp(36px,5.4vw,68px); line-height:1.05; letter-spacing:-.02em; font-weight:400}
h2{font-size:clamp(28px,3.8vw,46px); line-height:1.12; font-weight:400}
h3{font-size:clamp(20px,2vw,24px); line-height:1.25; font-weight:500}
h4{font-size:18px; line-height:1.35}
p{margin:0 0 1em}

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

/* ===== Top Bar ===== */
.top-bar{
  background:var(--ink); color:var(--cream); font-size:13px; letter-spacing:.04em;
  border-bottom:1px solid rgba(255,255,255,.06);
}
.top-bar .container{ padding-top:10px; padding-bottom:10px; }
.top-bar-left{ display:flex; flex-wrap:wrap; gap:10px 28px; align-items:center }
.top-bar a{ color:var(--cream); opacity:.9; transition:opacity .2s }
.top-bar a:hover{ opacity:1; color:var(--gold) }
.top-bar span{ opacity:.7 }

/* ===== Header ===== */
.site-header{
  position:sticky; top:0; z-index:50; background:rgba(251,248,242,.92);
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);
}
.header-inner{
  display:flex; align-items:center; justify-content:space-between;
  padding-top:18px; padding-bottom:18px; gap:24px;
}
.logo{ display:flex; align-items:center; gap:12px; min-width:0 }
.logo img{ width:40px; height:40px; border-radius:8px; object-fit:cover }
.logo div{
  font-family:var(--serif); font-size:17px; line-height:1.15; color:var(--ink);
  letter-spacing:-.01em; max-width:240px;
}
.nav-links{ display:flex; align-items:center; gap:30px }
.nav-links a{ font-size:14.5px; color:var(--ink-2); transition:color .2s; position:relative }
.nav-links a:not(.btn):hover{ color:var(--terracotta) }
.nav-links a:not(.btn)::after{
  content:""; position:absolute; left:0; right:0; bottom:-6px; height:1px;
  background:var(--terracotta); transform:scaleX(0); transform-origin:right; transition:transform .35s ease;
}
.nav-links a:not(.btn):hover::after{ transform:scaleX(1); transform-origin:left }
.hamburger{ display:none; background:transparent; border:0; padding:8px; gap:5px; flex-direction:column }
.hamburger span{ display:block; width:24px; height:2px; background:var(--ink); transition:all .25s }

.mobile-nav{
  position:fixed; inset:0; background:var(--ink); color:var(--cream);
  z-index:100; display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:24px; transform:translateX(100%); transition:transform .35s ease;
}
.mobile-nav.open{ transform:translateX(0) }
.mobile-nav a{ font-family:var(--serif); font-size:28px; color:var(--cream) }
.mobile-nav a:hover{ color:var(--gold) }
.close-nav{ position:absolute; top:24px; right:24px; background:transparent; border:0; color:var(--cream); font-size:32px }

/* ===== Buttons ===== */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  padding:16px 28px; border-radius:999px; font-weight:500; font-size:14.5px;
  letter-spacing:.04em; border:1px solid transparent; transition:all .25s ease;
  white-space:nowrap;
}
.btn-sm{ padding:11px 18px; font-size:13.5px }
.btn-primary{ background:var(--terracotta); color:#fff }
.btn-primary:hover{ background:var(--terracotta-deep); transform:translateY(-1px); box-shadow:var(--shadow-2) }
.btn-white{ background:var(--terracotta); color:#fff; border-color:var(--terracotta) }
.btn-white:hover{ background:var(--terracotta-deep); border-color:var(--terracotta-deep); transform:translateY(-1px); box-shadow:var(--shadow-2) }
.btn-outline-white{ background:var(--paper); color:var(--terracotta); border-color:var(--line) }
.btn-outline-white:hover{ background:var(--cream); border-color:var(--terracotta); transform:translateY(-1px) }
.btn-dark{ background:var(--terracotta); color:#fff; border-color:var(--terracotta) }
.btn-dark:hover{ background:var(--terracotta-deep); border-color:var(--terracotta-deep); color:#fff }
.btn:active{ transform:scale(.98) }
.btn-secondary{ background:transparent; color:var(--ink); border-color:var(--ink) }
.btn-secondary:hover{ background:var(--ink); color:var(--cream) }
.btn-tertiary{ background:transparent; color:var(--cream); border-color:rgba(255,255,255,.4) }
.btn-tertiary:hover{ border-color:var(--cream); background:rgba(255,255,255,.08) }
.btn-ghost{ background:transparent; color:var(--terracotta); border-color:var(--terracotta) }
.btn-ghost:hover{ background:var(--terracotta); color:#fff }

/* ===== Hero ===== */
.hero{
  position:relative; min-height:88vh; display:flex; align-items:center;
  padding:140px 0 110px; overflow:hidden; background:var(--ink);
}
.hero-bg{
  position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
  opacity:.85; filter:saturate(1.05);
}
.hero-overlay{
  position:absolute; inset:0;
  background:
    linear-gradient(120deg, rgba(21,17,13,.74) 0%, rgba(21,17,13,.40) 55%, rgba(21,17,13,.20) 100%),
    radial-gradient(80% 60% at 0% 100%, rgba(182,89,58,.30), transparent 60%);
}
.hero .container{ position:relative; z-index:2; color:var(--cream); max-width:980px }
.hero h1{ color:#fff; font-weight:400; max-width:18ch }
.hero-text{ font-size:clamp(17px,1.4vw,20px); color:rgba(246,241,234,.86); max-width:62ch; margin:18px 0 36px }
.hero-ctas{ display:flex; flex-wrap:wrap; gap:14px }
.hero .btn-secondary{ background:transparent; color:#fff; border-color:rgba(255,255,255,.6) }
.hero .btn-secondary:hover{ background:#fff; color:var(--ink); border-color:#fff }

/* eyebrow on hero */
.hero-eyebrow{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--sans); font-size:12px; letter-spacing:.22em; text-transform:uppercase;
  color:var(--gold); margin-bottom:18px;
}
.hero-eyebrow::before{ content:""; width:32px; height:1px; background:var(--gold) }

/* breadcrumb */
.breadcrumb{
  display:flex; flex-wrap:wrap; align-items:center; gap:10px; font-size:13px; letter-spacing:.06em;
  text-transform:uppercase; color:rgba(246,241,234,.7); margin-bottom:18px;
}
.breadcrumb a{ color:rgba(246,241,234,.85) }
.breadcrumb a:hover{ color:#fff }
.breadcrumb span{ opacity:.5 }

/* ===== Sections ===== */
.section{ padding:clamp(72px,9vw,128px) 0; position:relative }
.section-light{ background:var(--cream) }
.section-paper{ background:var(--paper) }
.section-cream-2{ background:var(--cream-2) }
.section-dark{ background:var(--ink); color:var(--cream) }
.section-dark h1,.section-dark h2,.section-dark h3,.section-dark h4{ color:#fff }
.section-darker{ background:#0a0806; color:var(--cream) }
.section-darker h2,.section-darker h3{ color:#fff }
.section-white{ background:#fff }
.section-label{
  display:inline-flex; align-items:center; gap:10px;
  font-size:12px; letter-spacing:.24em; text-transform:uppercase;
  color:var(--terracotta); margin:0 0 18px; font-weight:500;
}
.section-label::before{ content:""; width:28px; height:1px; background:var(--terracotta) }
.section-dark .section-label,
.section-darker .section-label{ color:var(--gold) }
.section-dark .section-label::before,
.section-darker .section-label::before{ background:var(--gold) }
.section-title{ max-width:24ch; margin-left:auto; margin-right:auto }
.text-center{ text-align:center }
.text-center .section-label{ justify-content:center }
.section-subtitle{ max-width:64ch; margin:0 auto; color:var(--ink-3); font-size:17px }
.section-dark .section-subtitle,
.section-darker .section-subtitle{ color:rgba(246,241,234,.75) }

/* fade-in */
.fade-in{ opacity:0; transform:translateY(24px); transition:opacity .9s ease, transform .9s ease }
.fade-in.visible{ opacity:1; transform:none }
@media (prefers-reduced-motion: reduce){ .fade-in{ opacity:1; transform:none } }
.no-js .fade-in{ opacity:1; transform:none }

/* ===== Split layouts ===== */
.split{ display:grid; grid-template-columns:1.1fr 1fr; gap:clamp(40px,5vw,80px); align-items:center }
.split-reverse .split-content{ order:2 }
.split-content h2{ margin-bottom:.4em }
.split-content ul{ list-style:none; padding:0; margin-top:18px }
.split-content ul li{
  position:relative; padding:10px 0 10px 28px; border-bottom:1px solid var(--line); font-size:15.5px;
}
.split-content ul li::before{
  content:""; position:absolute; left:0; top:18px; width:14px; height:1px; background:var(--terracotta)
}
.section-dark .split-content ul li{ border-color:rgba(255,255,255,.08) }
.section-dark .split-content ul li::before{ background:var(--gold) }
.split-image{ position:relative }
.split-image img{ width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--r-md) }
.split-image::after{
  content:""; position:absolute; left:-18px; bottom:-18px; width:90px; height:90px;
  border:1px solid var(--terracotta); border-radius:var(--r-sm); z-index:-1;
}

/* ===== Cards ===== */
.cards-grid{ display:grid; gap:24px }
.cards-grid-2{ grid-template-columns:repeat(2,1fr) }
.cards-grid-3{ grid-template-columns:repeat(3,1fr) }
.cards-grid-4{ grid-template-columns:repeat(4,1fr) }
.card{
  background:var(--paper); border:1px solid var(--line); border-radius:var(--r-md);
  padding:32px 28px; transition:transform .3s ease, box-shadow .3s ease, border-color .3s;
}
.card:hover{ transform:translateY(-4px); box-shadow:var(--shadow-2); border-color:var(--terracotta) }
.card-icon{
  width:56px; height:56px; border-radius:14px; background:var(--cream);
  border:1px solid var(--line);
  display:flex; align-items:center; justify-content:center; margin-bottom:18px;
}
.card-icon svg{ width:26px; height:26px; stroke:var(--terracotta); fill:none; stroke-width:1.5 }
.card h3{ margin-bottom:8px }
.card p{ color:var(--ink-3); font-size:15px; margin:0 }
.card .card-link{
  display:inline-block; margin-top:14px; font-size:13px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--terracotta); font-weight:500;
}
.card-dark{ background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10); color:var(--cream) }
.card-dark p{ color:rgba(246,241,234,.72) }
.card-dark .card-icon{ background:rgba(255,255,255,.04); border-color:rgba(255,255,255,.10) }
.card-dark .card-icon svg{ stroke:var(--gold) }
.card-dark:hover{ border-color:var(--gold) }
.card-dark .card-link{ color:var(--gold) }

.card-num{
  font-family:var(--serif); font-size:38px; color:var(--terracotta); line-height:1; margin-bottom:18px;
}
.card-dark .card-num{ color:var(--gold) }

/* ===== Stats / KPI ===== */
.stats-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:30px }
.stat .num{
  font-family:var(--serif); font-size:clamp(36px,4vw,56px); line-height:1; color:var(--ink); display:block;
}
.section-dark .stat .num,
.section-darker .stat .num{ color:#fff }
.stat .label{ color:var(--ink-3); font-size:14px; letter-spacing:.06em; margin-top:10px; display:block }
.section-dark .stat .label,
.section-darker .stat .label{ color:rgba(246,241,234,.7) }

/* ===== Gallery ===== */
.gallery-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px }
.gallery-grid.gallery-2{ grid-template-columns:repeat(2,1fr) }
.gallery-grid.gallery-3{ grid-template-columns:repeat(3,1fr) }
.gallery-item{ position:relative; overflow:hidden; border-radius:var(--r-md); aspect-ratio:4/3 }
.gallery-item img{ width:100%; height:100%; object-fit:cover; transition:transform .9s ease }
.gallery-item:hover img{ transform:scale(1.06) }
.gallery-caption{
  position:absolute; left:0; right:0; bottom:0; padding:18px 18px 14px;
  background:linear-gradient(transparent, rgba(21,17,13,.7));
  color:#fff; font-size:13px; letter-spacing:.1em; text-transform:uppercase;
}

/* ===== Process ribbon ===== */
.process-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:30px; counter-reset:proc }
.process-step{ counter-increment:proc; position:relative; padding-top:70px }
.process-step::before{
  content:counter(proc,decimal-leading-zero);
  position:absolute; top:0; left:0;
  font-family:var(--serif); font-size:50px; color:var(--terracotta); line-height:1;
}
.section-dark .process-step::before{ color:var(--gold) }
.process-step h3{ margin-bottom:8px; font-size:20px }
.process-step p{ color:var(--ink-3); font-size:15px; margin:0 }
.section-dark .process-step p{ color:rgba(246,241,234,.7) }

/* ===== Logo strip ===== */
.logo-strip{
  display:grid; grid-template-columns:repeat(6,1fr); gap:20px; align-items:center;
  padding:36px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line);
}
.logo-strip img{ width:100%; max-width:130px; opacity:.55; filter:grayscale(1); transition:opacity .25s; margin:0 auto }
.logo-strip img:hover{ opacity:1; filter:none }

/* ===== Reviews / testimonials ===== */
.reviews-header{
  display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between;
  gap:18px; margin-bottom:36px; padding-bottom:22px; border-bottom:1px solid var(--line);
}
.reviews-header-left{ display:flex; align-items:center; gap:16px; flex-wrap:wrap }
.reviews-score{
  font-family:var(--serif); font-size:44px; line-height:1; color:var(--ink); font-weight:500;
}
.reviews-meta{ font-size:14px; color:var(--ink-3) }
.reviews-meta strong{ color:var(--ink); font-weight:500 }
.reviews-stars-lg{ display:inline-flex; gap:3px; color:#e5a340 }
.reviews-stars-lg svg{ width:20px; height:20px; fill:currentColor }
.reviews-source-tag{
  display:inline-flex; align-items:center; gap:8px; padding:8px 14px;
  border:1px solid var(--line); border-radius:999px; background:var(--paper);
  font-size:12.5px; letter-spacing:.08em; color:var(--ink-3);
}
.reviews-source-tag::before{ content:""; width:8px; height:8px; border-radius:50%; background:#34a853 }

.review-card{
  background:#fff; border:1px solid var(--line); border-radius:var(--r-md);
  padding:28px 26px 24px; position:relative; display:flex; flex-direction:column; gap:14px;
  box-shadow:var(--shadow-1); transition:transform .3s ease, box-shadow .3s ease;
}
.review-card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-2) }
.review-top{ display:flex; align-items:center; gap:14px }
.review-avatar{
  width:48px; height:48px; border-radius:50%; flex:0 0 auto;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:18px; font-weight:500; color:#fff;
  background:var(--terracotta); text-transform:uppercase; letter-spacing:.02em;
}
.review-avatar.av-bronze{ background:var(--bronze) }
.review-avatar.av-sage{ background:var(--sage) }
.review-avatar.av-gold{ background:var(--gold) }
.review-avatar.av-ink{ background:var(--ink-2) }
.review-author{ display:flex; flex-direction:column; gap:2px; min-width:0 }
.review-author-name{ font-size:15px; font-weight:600; color:var(--ink); letter-spacing:.005em }
.review-author-meta{ font-size:12.5px; color:var(--ink-3); display:flex; flex-wrap:wrap; align-items:center; gap:8px }
.review-author-meta::before{ display:none }
.review-stars{ display:inline-flex; gap:2px; color:#e5a340 }
.review-stars svg{ width:16px; height:16px; fill:currentColor }
.review-body{ font-size:15px; line-height:1.65; color:var(--ink-2); margin:0 }
.review-meta-row{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding-top:12px; border-top:1px solid var(--line); font-size:12px; color:var(--ink-3);
  letter-spacing:.04em; flex-wrap:wrap;
}
.review-source{ display:inline-flex; align-items:center; gap:7px; font-weight:500; color:var(--ink-2) }
.review-source-icon{
  width:18px; height:18px; border-radius:4px; flex:0 0 auto;
  display:inline-flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; color:#fff;
}
.review-source-icon.src-google{ background:#fff; border:1px solid var(--line); color:#4285f4 }
.review-source-icon.src-yelp{ background:#d32323 }
.review-source-icon.src-houzz{ background:#7ac142 }
.review-source-icon.src-thumbtack{ background:#009fd9 }
.review-source-icon.src-direct{ background:var(--terracotta) }
.review-verified{ display:inline-flex; align-items:center; gap:6px; color:#34a853; font-weight:500 }
.review-verified svg{ width:13px; height:13px; fill:currentColor }

.cards-grid.reviews-grid{ gap:22px }

@media (max-width:768px){
  .reviews-header{ flex-direction:column; align-items:flex-start }
  .review-card{ padding:24px 22px 20px }
}

/* ===== FAQ ===== */
.faq-list{ max-width:880px; margin:0 auto }
.faq-item{ border-bottom:1px solid var(--line); padding:18px 0 }
.faq-q{
  display:flex; justify-content:space-between; align-items:flex-start; gap:18px;
  background:transparent; border:0; padding:8px 0; width:100%; text-align:left;
  font-family:var(--serif); font-size:21px; color:var(--ink);
}
.faq-q svg{ flex:0 0 auto; transition:transform .3s }
.faq-item.open .faq-q svg{ transform:rotate(45deg) }
.faq-a{ max-height:0; overflow:hidden; transition:max-height .35s ease; color:var(--ink-3); font-size:15.5px }
.faq-item.open .faq-a{ max-height:600px; padding:8px 0 12px }

/* ===== RFP form ===== */
.rfp-section{ background:var(--ink); color:var(--cream); padding:clamp(80px,10vw,140px) 0; position:relative; overflow:hidden }
.rfp-section::before{
  content:""; position:absolute; inset:0;
  background:radial-gradient(60% 70% at 90% 0%, rgba(182,89,58,.18), transparent 60%);
  pointer-events:none;
}
.rfp-section .container{ position:relative; z-index:1 }
.rfp-section .section-title{ color:#fff }
.rfp-section .section-subtitle{ color:rgba(246,241,234,.78) }
.rfp-form{
  max-width:780px; margin:48px auto 0; background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.10); border-radius:var(--r-lg); padding:40px;
  backdrop-filter:blur(6px);
}
.form-row{ display:grid; grid-template-columns:1fr 1fr; gap:20px }
.form-group{ margin-bottom:20px }
.form-group label{
  display:block; font-size:12.5px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--gold); margin-bottom:8px;
}
.form-group input,.form-group select,.form-group textarea{
  width:100%; background:transparent; border:0; border-bottom:1px solid rgba(255,255,255,.18);
  color:#fff; padding:12px 0; font-family:inherit; font-size:16px; transition:border-color .2s;
}
.form-group select{ background:transparent; appearance:none; -webkit-appearance:none; padding-right:30px }
.form-group select option{ background:var(--ink); color:#fff }
.form-group textarea{ min-height:120px; resize:vertical }
.form-group input::placeholder,.form-group textarea::placeholder{ color:rgba(246,241,234,.4) }
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{
  outline:none; border-bottom-color:var(--terracotta);
}
.file-upload-area{
  border:1px dashed rgba(255,255,255,.22); border-radius:var(--r-md); padding:28px; text-align:center;
  position:relative; transition:border-color .2s;
}
.file-upload-area:hover{ border-color:var(--terracotta) }
.file-upload-area input[type=file]{
  position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer;
}
.file-upload-area p{ color:rgba(246,241,234,.7); font-size:13.5px; margin:6px 0 }
.file-list{ margin-top:10px; font-size:13px; color:var(--gold) }
.consent-group{ display:flex; gap:12px; align-items:flex-start; font-size:13px; color:rgba(246,241,234,.75) }
.consent-group input{ width:auto; margin-top:4px }
.consent-group a{ color:var(--gold); text-decoration:underline }
.form-success{ display:none; text-align:center; padding:40px 20px }
.form-success.show{ display:block }

/* ===== Footer ===== */
.site-footer{ background:#0a0806; color:rgba(246,241,234,.78); padding:80px 0 40px }
.footer-grid{ display:grid; grid-template-columns:1.4fr repeat(3,1fr); gap:48px }
.footer-col h3{ color:var(--cream); font-family:var(--sans); font-size:13px; font-weight:600; letter-spacing:.18em; text-transform:uppercase; margin-bottom:18px }
.footer-col p{ font-size:14.5px; line-height:1.65 }
.footer-col a{ display:block; padding:6px 0; font-size:14.5px; color:rgba(246,241,234,.7); transition:color .2s }
.footer-col a:hover{ color:var(--gold) }
.footer-bottom{
  margin-top:60px; padding-top:24px; border-top:1px solid rgba(255,255,255,.08);
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:14px; font-size:13px; color:rgba(246,241,234,.55);
}

/* ===== Modals ===== */
.sticky-cta{
  position:fixed; right:18px; bottom:18px; z-index:80;
  display:flex; align-items:center; gap:10px;
  padding:8px; background:rgba(251,248,242,.92);
  border:1px solid rgba(220,207,184,.86); border-radius:999px;
  box-shadow:0 18px 44px rgba(21,17,13,.18);
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
}
.sticky-cta .btn{ cursor:pointer; min-height:42px }
.sticky-cta .sticky-call{ box-shadow:none }
.modal-overlay{
  position:fixed; inset:0; background:rgba(21,17,13,.78); backdrop-filter:blur(10px);
  display:none; align-items:center; justify-content:center; padding:20px; z-index:200;
}
.modal-overlay.open{ display:flex }
.modal-content{
  background:linear-gradient(180deg, var(--ink-2), var(--ink)); color:var(--cream);
  border:1px solid rgba(200,161,106,.24);
  border-radius:var(--r-lg); padding:42px; max-width:760px; width:100%;
  max-height:92vh; overflow-y:auto; position:relative;
  box-shadow:0 34px 90px rgba(10,8,6,.42);
}
.modal-content h2{ color:#fff; font-size:clamp(28px,3vw,38px); margin-bottom:8px }
.modal-content > p{ color:rgba(246,241,234,.75); margin-bottom:22px }
.modal-close{
  position:absolute; top:16px; right:16px; width:38px; height:38px;
  display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.10);
  border-radius:50%; color:var(--cream); font-size:26px; line-height:1;
  transition:background .2s ease, border-color .2s ease, transform .2s ease;
}
.modal-close:hover{ background:rgba(255,255,255,.10); border-color:rgba(200,161,106,.5) }
.modal-close:active{ transform:scale(.96) }
.newsletter-modal .modal-content{ max-width:500px }
.newsletter-intro{ color:rgba(246,241,234,.75); font-size:14.5px; margin-bottom:22px }

/* ===== Cookie banner ===== */
.cookie-banner{
  position:fixed; left:18px; bottom:18px; z-index:90;
  background:rgba(251,248,242,.96); color:var(--ink-2); border:1px solid var(--line);
  border-radius:var(--r-md); padding:18px 20px; max-width:420px; display:none; box-shadow:var(--shadow-3);
  backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
}
.cookie-banner.show{ display:block }
.cookie-banner p{ font-size:13.5px; color:var(--ink-3); margin:0 0 12px }
.cookie-banner a{ color:var(--terracotta); text-decoration:underline }
.cookie-actions{ display:flex; gap:10px; flex-wrap:wrap }
.cookie-actions .btn{ min-width:92px }

/* ===== Marquee tagline ===== */
.tagline-row{
  display:flex; gap:48px; align-items:center; padding:24px 0; border-block:1px solid var(--line);
  background:var(--paper); overflow:hidden;
}
.tagline-row .container{
  display:flex; gap:48px; align-items:center; justify-content:space-between; flex-wrap:nowrap;
}
.tagline-row .item{
  display:inline-flex; align-items:center; gap:14px; flex:0 0 auto;
  font-family:var(--serif); font-size:clamp(18px,2vw,22px); color:var(--ink); white-space:nowrap;
}
.tagline-row .dot{ width:6px; height:6px; border-radius:50%; background:var(--terracotta) }

/* ===== Two-column body content (privacy etc) ===== */
.prose h2{ font-size:24px; margin-top:1.6em }
.prose ul{ padding-left:22px; margin-bottom:1em }
.prose li{ margin-bottom:6px }

/* ===== Responsive ===== */
@media (max-width:1024px){
  .footer-grid{ grid-template-columns:1fr 1fr }
  .stats-grid{ grid-template-columns:repeat(2,1fr) }
  .process-grid{ grid-template-columns:repeat(2,1fr) }
  .gallery-grid{ grid-template-columns:repeat(3,1fr) }
  .logo-strip{ grid-template-columns:repeat(3,1fr) }
}
@media (max-width:768px){
  .top-bar{ display:none }
  .nav-links{ display:none }
  .hamburger{ display:flex }
  .split, .split-reverse{ grid-template-columns:1fr }
  .split-reverse .split-content{ order:0 }
  .cards-grid-3,.cards-grid-4,.cards-grid-2{ grid-template-columns:1fr }
  .form-row{ grid-template-columns:1fr }
  .footer-grid{ grid-template-columns:1fr }
  .gallery-grid{ grid-template-columns:repeat(2,1fr) }
  .process-grid{ grid-template-columns:1fr }
  .hero{ min-height:auto; padding:110px 0 90px }
  .top-bar-left{ font-size:12px; gap:8px 18px }
  .rfp-form{ padding:26px 22px }
  .sticky-cta{ left:14px; right:14px; bottom:14px }
  .sticky-cta .btn{ flex:1; padding-left:14px; padding-right:14px }
  .cookie-banner{ left:14px; right:14px; bottom:76px; max-width:none }
  .tagline-row{ padding:18px 0 }
  .tagline-row .container{
    justify-content:center; gap:12px 24px; flex-wrap:wrap; overflow:visible;
  }
  .tagline-row .item{ gap:10px; font-size:17px }
}
@media (max-width:480px){
  .stats-grid{ grid-template-columns:1fr }
  .logo-strip{ grid-template-columns:repeat(2,1fr) }
  .gallery-grid{ grid-template-columns:1fr }
  .modal-content{ padding:28px 22px }
  .tagline-row .container{ gap:10px 18px }
  .tagline-row .item{ font-size:16px }
}

/* JS-driven helpers */
.no-scroll{ overflow:hidden !important }
.error-message{ color:#ff8b6b; font-size:12.5px; margin-top:6px; letter-spacing:.04em }
.has-error label{ color:#ff8b6b }
