/* Shared layout for the home page and the town (area) pages: top bar, hero + video, light grid,
   logo belt, service-area map, closing block and footer with the "Areas we serve" row. */
:root{--ink:#0b0b0b;--ink-2:#141414;--paper:#f4f2ee;--gold:#e2b258;--gold-ink:#8a6a2c;--text:#f2efe9;--muted:#a9a49b;--line:rgba(255,255,255,.1);--display:'Archivo',system-ui,sans-serif;--body:'DM Sans',system-ui,sans-serif}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ink);color:var(--text);font:400 17px/1.65 var(--body)}
a{color:inherit}
img,video,svg{display:block;max-width:100%}
.wrap{max-width:1240px;margin:0 auto;padding:0 20px}
.label{font:700 13px/1 var(--display);letter-spacing:.28em;text-transform:uppercase;color:var(--gold);margin:0 0 18px}
.btn{display:inline-flex;align-items:center;gap:10px;padding:16px 26px;border-radius:8px;font:600 17px/1 var(--display);text-decoration:none;border:1px solid transparent}
.btn--gold{background:var(--gold);color:#16120a}
.btn--gold:hover{background:#ecc479}
.btn--line{border-color:rgba(255,255,255,.35);color:var(--text)}
.btn--line:hover{border-color:var(--text)}
.btns{display:flex;flex-wrap:wrap;gap:16px}

/* top bar */
.top{position:sticky;top:0;z-index:20;background:rgba(11,11,11,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top .wrap{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;height:76px}
.top nav{display:flex;gap:28px}
.top nav a{font:600 16px var(--display);text-decoration:none;color:var(--text)}
.top nav a:hover{color:var(--gold)}
.mark{justify-self:center;display:flex;align-items:baseline;gap:10px;text-decoration:none}
.mark b{font:900 30px/1 var(--display);font-stretch:85%;letter-spacing:-.03em}
.mark b i{display:inline-block;width:.22em;height:.22em;background:var(--gold);margin-left:.04em;font-style:normal}
.mark span{font:700 11px var(--display);letter-spacing:.3em;color:var(--muted)}
.top .right{justify-self:end;display:flex;align-items:center;gap:22px}
.top .tel{font:600 16px var(--display);text-decoration:none}
.top .btn{padding:13px 20px;font-size:16px}
@media (max-width:820px){
  .top .wrap{grid-template-columns:auto 1fr;height:64px}
  .top nav,.top .tel{display:none}
  .mark{justify-self:start}
  .mark b{font-size:26px}
}

/* hero */
.hero{padding:96px 0 56px}
.hero h1{font:900 clamp(36px,7.4vw,92px)/.98 var(--display);font-stretch:92%;letter-spacing:-.02em;text-transform:uppercase;margin:0 0 30px;max-width:15ch}
.hero h1 em{font-style:normal;color:var(--gold)}
.hero p{max-width:640px;color:#d8d4cc;font-size:clamp(17px,1.6vw,20px);margin:0 0 34px}
.film{margin:64px 0 0}
.film video{width:100%;aspect-ratio:16/9;height:auto;border-radius:14px;background:#000 center/cover no-repeat;object-fit:cover}
.film figcaption{color:var(--muted);font-size:15px;margin-top:14px}
@media (max-width:820px){.hero{padding:56px 0 40px}.film{margin-top:44px}}

/* light work grid */
.light{background:var(--paper);color:#151515;padding:110px 0}
.light .label{color:var(--gold-ink)}
h2{font:800 clamp(34px,4.6vw,58px)/1.04 var(--display);letter-spacing:-.025em;margin:0 0 22px}
h2 em{font-style:normal;font-weight:400}
.light h2 em{color:var(--gold-ink)}
.dark h2 em,.area h2 em,.close h2 em{color:var(--gold)}
.lede{max-width:700px;font-size:19px;margin:0 0 56px}
.light .lede{color:#3a3a3a}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin:0;padding:0;list-style:none}
.grid img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border-radius:12px;background:#ddd}
@media (max-width:820px){.light{padding:72px 0}.grid{grid-template-columns:repeat(2,1fr);gap:12px}}

/* trusted by: logos drift sideways, paused for reduced motion */
.trusted{padding:96px 0 40px;text-align:center}
.trusted h2{font-size:clamp(28px,3.4vw,42px)}
.belt{overflow:hidden;margin-top:44px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.belt ul{display:flex;gap:64px;width:max-content;margin:0;padding:0;list-style:none;animation:belt 48s linear infinite}
.belt:hover ul{animation-play-state:paused}
.belt img{height:76px;width:auto;max-width:150px;object-fit:contain;filter:grayscale(1) brightness(1.5) contrast(.9);opacity:.8}
@keyframes belt{to{transform:translateX(-50%)}}

/* where we film: the map */
.area{padding:80px 0 120px}
.area .wrap{display:grid;grid-template-columns:5fr 6fr;gap:64px;align-items:center}
.area .lede{color:#d8d4cc;margin-bottom:34px}
.lines svg{width:100%;height:auto}
.lines .track path{fill:none;stroke:var(--gold);stroke-width:10;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:400;stroke-dashoffset:400}
.lines .road text{font:700 12px var(--display);letter-spacing:3px;fill:#9a9389}
.lines .stop circle{fill:var(--ink);stroke:var(--text);stroke-width:4}
.lines .stop .hub{stroke:var(--gold);stroke-width:5}
.lines .hubtext{font:900 12px var(--display);fill:var(--text);text-anchor:middle}
.lines .name{font:700 15px var(--body);fill:var(--text)}
.lines .name a{fill:var(--text)}
.lines .name a:hover{fill:var(--gold)}
.lines .hubname{font:800 17px var(--display);text-anchor:middle}
.lines .pulse{fill:none;stroke:var(--gold);stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center}
.lines .stop,.lines .name{opacity:0;transform-box:fill-box;transform-origin:center}
/* the lines draw in, stations pop in order, the hub keeps a slow pulse */
.lines.go .track path{animation:draw 1.2s ease forwards var(--d)}
.lines.go .stop{animation:stop .6s cubic-bezier(.2,.8,.2,1) forwards var(--d)}
.lines.go .name{animation:fade .5s ease forwards var(--d)}
.lines.go .pulse{animation:hub 2.4s ease-out infinite 1s}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes stop{0%{opacity:0;transform:scale(.2)}70%{opacity:1;transform:scale(1.25)}100%{opacity:1;transform:scale(1)}}
@keyframes fade{to{opacity:1}}
@keyframes hub{0%{transform:scale(1);opacity:.7}100%{transform:scale(4.3);opacity:0}}
@media (prefers-reduced-motion:reduce){
  .belt ul{animation:none}
  .lines .track path{stroke-dashoffset:0}.lines .stop,.lines .name{opacity:1}
  .lines.go .track path,.lines.go .stop,.lines.go .name,.lines.go .pulse{animation:none}
}
@media (max-width:900px){.area .wrap{grid-template-columns:1fr;gap:40px}.area{padding:56px 0 88px}}

/* closing + footer */
.close{background:var(--ink-2);border-top:1px solid var(--line);padding:96px 0;text-align:center}
.close p{color:#d8d4cc;max-width:560px;margin:0 auto 32px}
.close .btns{justify-content:center}
footer{padding:64px 0 48px;color:var(--muted);font-size:15px}
footer .name{font:800 24px var(--display);color:var(--text);margin:0 0 8px}
footer nav{display:flex;flex-wrap:wrap;gap:8px 24px;margin:26px 0}
footer a{text-decoration:none}
footer a:hover{color:var(--gold)}
.serve{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 26px;border-top:1px solid var(--line);margin-top:30px;padding-top:28px}
.serve .label{margin:0 10px 0 0;font-size:12px}
.serve a{color:var(--text)}

/* town pages: nearby links and FAQ */
.nearby{padding:100px 0;background:var(--ink)}
.nearby .lede{color:#d8d4cc}
.also{color:var(--muted);margin:0}
.also a{color:var(--text)}
.also a:hover{color:var(--gold)}
.faq{background:var(--paper);color:#151515;padding:100px 0}
.faq .label{color:var(--gold-ink)}
.faq h2 em{color:var(--gold-ink)}
.faq-list{max-width:820px;border-top:1px solid rgba(0,0,0,.12)}
.faq details{border-bottom:1px solid rgba(0,0,0,.12);padding:22px 0}
.faq summary{font:700 19px var(--display);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:20px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--gold-ink);font-weight:400}
.faq details[open] summary::after{content:"\2013"}
.faq details p{margin:12px 0 0;color:#3a3a3a;max-width:700px}
.faq a{color:var(--gold-ink)}
@media (max-width:820px){.nearby,.faq{padding:68px 0}}
