/* ============================================================
   Overtime Roofing & Truss — site styles
   Palette from official logo: navy #122A54 / teal #35A3C4
   Type: Alfa Slab One (display) · Pacifico (script accent,
   echoing the logo wordmark) · Source Sans 3 (body)
   ============================================================ */
:root{
  --navy:#122A54; --navy-deep:#0C1D3D; --teal:#35A3C4; --teal-deep:#2A8CA9;
  --teal-soft:#D9EDF4; --sky:#EAF4F8; --white:#FFFFFF;
  --gold:#F5B82E; --gold-deep:#DFA112;
  --slate:#3D4A5C; --muted:#66788C; --line:#D6E4EC;
  --slab:'Alfa Slab One',Georgia,serif;
  --script:'Pacifico',cursive;
  --body:'Source Sans 3','Segoe UI',sans-serif;
  --max:1200px; --rad:12px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:110px}
body{font-family:var(--body);color:var(--slate);background:var(--white);font-size:17.5px;line-height:1.68;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--teal-deep);text-decoration:none}
.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
h1,h2{font-family:var(--slab);font-weight:400;color:var(--navy);line-height:1.12;letter-spacing:.2px}
h1{font-size:clamp(38px,5.4vw,64px)}
h2{font-size:clamp(30px,4vw,44px)}
h3{font-family:var(--body);font-weight:700;font-size:23px;color:var(--navy)}
h1 .hl,h2 .hl{color:var(--teal)}
.script{font-family:var(--script);font-weight:400;color:var(--teal);font-size:clamp(22px,2.6vw,30px);display:block;margin-bottom:6px;transform:rotate(-1.5deg)}
.script.gold{color:var(--gold)}
.lead{font-size:19px;max-width:64ch}
section{padding:86px 0}
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* ---------- Buttons ---------- */
.btn{display:inline-block;font-family:var(--body);font-weight:700;font-size:17px;letter-spacing:.4px;padding:15px 30px;border-radius:8px;border:2.5px solid transparent;cursor:pointer;transition:transform .15s,box-shadow .15s,background .2s;text-align:center}
.btn:active{transform:translateY(1px)}
.btn-gold{background:var(--gold);color:var(--navy);box-shadow:0 6px 18px rgba(223,161,18,.4)}
.btn-gold:hover{background:var(--gold-deep);color:var(--navy)}
.btn-ghost{border-color:var(--navy);color:var(--navy);background:transparent}
.btn-ghost:hover{background:var(--navy);color:#fff}
.btn-teal{background:var(--teal);color:#fff}
.btn-teal:hover{background:var(--teal-deep);color:#fff}
.btn-white{background:#fff;color:var(--navy)}
.btn-white:hover{background:var(--sky)}

/* ---------- Header (large logo) ---------- */
header{position:sticky;top:0;z-index:80;background:var(--white);transition:box-shadow .25s}
header.scrolled{box-shadow:0 5px 26px rgba(18,42,84,.12)}
.nav{display:flex;align-items:center;justify-content:space-between;height:104px;gap:20px}
.brand img{height:76px;width:auto;transition:height .25s}
header.scrolled .brand img{height:60px}
header.scrolled .nav{height:84px}
.nav-links{display:flex;align-items:center;gap:24px;list-style:none}
.nav-links a{font-weight:700;font-size:16px;letter-spacing:.3px;color:var(--navy);padding:8px 2px;border-bottom:3px solid transparent;transition:border-color .2s,color .2s}
.nav-links a:hover{border-color:var(--teal);color:var(--teal-deep)}
.nav-links a.active{border-color:var(--gold)}
.nav-cta{white-space:nowrap}
.burger{display:none;background:none;border:0;cursor:pointer;padding:8px}
.burger span{display:block;width:28px;height:3.5px;background:var(--navy);margin:5px 0;border-radius:2px;transition:.25s}
.burger.open span:nth-child(1){transform:translateY(9px) rotate(45deg)}
.burger.open span:nth-child(2){opacity:0}
.burger.open span:nth-child(3){transform:translateY(-9px) rotate(-45deg)}

/* ---------- Google review badge ---------- */
.gbadge{display:inline-flex;align-items:center;gap:10px;background:#fff;border:1.5px solid var(--line);border-radius:40px;padding:9px 18px;box-shadow:0 4px 16px rgba(18,42,84,.10);font-weight:700;color:var(--navy)}
.gbadge .stars{color:var(--gold);letter-spacing:2px;font-size:18px}
.gbadge small{font-weight:600;color:var(--muted)}

/* ---------- Hero (home) ---------- */
.hero{position:relative;padding:0;background:var(--navy)}
.hero-bg{position:absolute;inset:0;overflow:hidden}
.hero-bg img{width:100%;height:100%;object-fit:cover;object-position:52% 32%}
.hero-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,rgba(234,244,248,.97) 0%,rgba(234,244,248,.93) 34%,rgba(234,244,248,.55) 55%,rgba(18,42,84,.18) 100%)}
.hero-grid{position:relative;display:grid;grid-template-columns:1.1fr .9fr;gap:48px;align-items:center;padding:96px 0 104px}
.hero h1{margin:14px 0 18px}
.hero .lead{margin-bottom:26px}
.hero-ctas{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:8px}
.ticks{list-style:none;margin:18px 0 26px}
.ticks li{padding:6px 0 6px 34px;position:relative;font-weight:600;color:var(--navy)}
.ticks li::before{content:"";position:absolute;left:0;top:12px;width:18px;height:10px;border-left:4px solid var(--teal);border-bottom:4px solid var(--teal);transform:rotate(-48deg)}
.hero-form{background:#fff;border-radius:14px;padding:34px 30px;box-shadow:0 26px 64px rgba(12,29,61,.34);border-top:6px solid var(--gold)}
.hero-form h3{margin-bottom:4px}
.hero-form p{font-size:15px;color:var(--muted);margin-bottom:18px}

/* ---------- Gusset process rail ---------- */
.rail-band{background:var(--navy);padding:44px 0}
.rail{display:flex;justify-content:space-between;position:relative;max-width:1000px;margin:0 auto;list-style:none}
.rail::before{content:"";position:absolute;left:4%;right:4%;top:17px;height:3px;background:var(--teal);opacity:.55}
.rail li{text-align:center;position:relative;flex:1}
.rail .plate{width:36px;height:36px;margin:0 auto 12px;background:var(--teal);border-radius:4px;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 5px var(--navy)}
.rail .plate::before{content:"";width:14px;height:14px;background:radial-gradient(circle 1.6px,var(--navy) 1.6px,transparent 1.7px) 0 0/7px 7px}
.rail b{display:block;font-weight:700;font-size:16px;letter-spacing:.6px;text-transform:uppercase;color:#fff}
.rail small{color:#9FB6D6;font-size:13.5px}

/* ---------- Reviews (front & centre) ---------- */
.reviews{background:linear-gradient(180deg,var(--sky),#fff);text-align:center}
.score{display:flex;align-items:center;justify-content:center;gap:18px;margin:26px 0 8px;flex-wrap:wrap}
.score .num{font-family:var(--slab);font-size:76px;color:var(--navy);line-height:1}
.score .stars{color:var(--gold);font-size:34px;letter-spacing:4px;text-shadow:0 2px 0 rgba(18,42,84,.12)}
.score .g{width:44px;height:44px}
.review-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:44px;text-align:left}
.rev{background:#fff;border:1.5px solid var(--line);border-radius:var(--rad);padding:28px;position:relative;box-shadow:0 10px 28px rgba(18,42,84,.08)}
.rev::before{content:"\201C";font-family:var(--slab);font-size:64px;color:var(--teal);position:absolute;top:-6px;left:18px;opacity:.35}
.rev .stars{color:var(--gold);font-size:17px;letter-spacing:2px;margin-bottom:10px}
.rev p{font-size:16.5px}
.rev b{display:block;margin-top:14px;color:var(--navy)}
.rev small{color:var(--muted)}

/* ---------- Cards / services grid ---------- */
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:42px}
.card{background:#fff;border:1.5px solid var(--line);border-top:6px solid var(--teal);border-radius:var(--rad);padding:30px 28px;transition:transform .2s,box-shadow .2s;display:flex;flex-direction:column}
.card:hover{transform:translateY(-6px);box-shadow:0 18px 38px rgba(18,42,84,.14)}
.card h3{margin-bottom:10px}
.card p{font-size:16px;flex:1}
.card .more{margin-top:16px;font-weight:700;color:var(--teal-deep)}
.card .more::after{content:" \2192"}
.card:hover .more{color:var(--gold-deep)}

/* ---------- Split sections ---------- */
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.split.flip .media{order:2}
.media{position:relative}
.media img{border-radius:var(--rad);box-shadow:0 20px 46px rgba(18,42,84,.18)}
.media .corner{position:absolute;width:70px;height:70px;border:5px solid var(--gold);border-right:0;border-bottom:0;top:-16px;left:-16px;border-radius:8px 0 0 0}
.media figcaption{margin-top:12px;font-size:14px;color:var(--muted)}
.alt{background:var(--sky)}

/* ---------- Numbered standard ---------- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:42px}
.step{background:#fff;border-radius:var(--rad);padding:30px;border:1.5px solid var(--line)}
.step .n{font-family:var(--slab);font-size:44px;color:var(--teal);opacity:.85}
.step h3{margin:8px 0 8px}

/* ---------- Islands ---------- */
.island-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:38px}
.island{background:#fff;border:1.5px solid var(--line);border-radius:8px;padding:18px 20px;font-weight:700;font-size:18px;color:var(--navy);display:flex;align-items:center;justify-content:space-between;gap:10px}
.badge{font-size:11.5px;letter-spacing:1px;background:var(--gold);color:var(--navy);border-radius:20px;padding:3px 10px;font-weight:700;text-transform:uppercase}
.chip-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.chip{background:#fff;border:1.5px solid var(--line);border-left:4px solid var(--teal);border-radius:6px;padding:8px 14px;font-weight:600;color:var(--navy);font-size:15px}

/* ---------- FAQ ---------- */
.faq{max-width:860px;margin:40px auto 0}
.faq details{background:#fff;border:1.5px solid var(--line);border-radius:10px;margin-bottom:12px;overflow:hidden}
.faq summary{cursor:pointer;padding:18px 22px;font-weight:700;color:var(--navy);list-style:none;position:relative;padding-right:52px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--slab);position:absolute;right:20px;top:50%;transform:translateY(-50%);color:var(--teal);font-size:24px;transition:transform .2s}
.faq details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.faq details p{padding:0 22px 18px;font-size:16px}

/* ---------- Page banner (inner pages) ---------- */
.banner{background:linear-gradient(115deg,var(--sky) 55%,var(--teal-soft));padding:76px 0 64px;border-bottom:1.5px solid var(--line)}
.crumb{font-size:14.5px;color:var(--muted);margin-bottom:14px;font-weight:600}
.crumb a{color:var(--teal-deep)}
.banner .lead{margin-top:16px}

/* ---------- CTA band ---------- */
.cta-band{background:var(--navy);position:relative;overflow:hidden}
.cta-band::before{content:"";position:absolute;inset:auto -2% -14px -2%;height:120px;background:
 linear-gradient(to top right,transparent 48%,rgba(53,163,196,.28) 49%,rgba(53,163,196,.28) 51%,transparent 52%) 0 0/160px 120px repeat-x,
 linear-gradient(to bottom right,transparent 48%,rgba(53,163,196,.28) 49%,rgba(53,163,196,.28) 51%,transparent 52%) 0 0/160px 120px repeat-x}
.cta-inner{position:relative;text-align:center;padding:84px 0}
.cta-band h2{color:#fff;margin-bottom:14px}
.cta-band p{color:#B9CBE2;max-width:56ch;margin:0 auto 30px}
.cta-band .phone{display:block;margin-top:18px;color:#fff;font-weight:700;font-size:19px}
.cta-band .phone a{color:var(--gold)}

/* ---------- Forms ---------- */
.form-shell{background:#fff;border-radius:14px;padding:44px;box-shadow:0 24px 60px rgba(12,29,61,.28);border-top:6px solid var(--gold)}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.field{display:flex;flex-direction:column;gap:7px}
.field.full{grid-column:1/-1}
label{font-weight:700;font-size:15px;color:var(--navy)}
input,select,textarea{font-family:var(--body);font-size:16.5px;color:var(--slate);border:1.5px solid var(--line);border-radius:8px;padding:13px 14px;background:#FBFDFE;transition:border-color .2s;width:100%}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(53,163,196,.18)}
textarea{min-height:110px;resize:vertical}
.upload{border:2px dashed var(--teal);background:#F3FAFC;border-radius:10px;padding:24px;text-align:center;cursor:pointer;transition:background .2s}
.upload:hover{background:var(--teal-soft)}
.upload b{color:var(--navy)}
.upload small{display:block;color:var(--muted);margin-top:4px}
.form-msg{display:none;margin-top:18px;padding:14px 18px;border-radius:8px;font-size:16px}
.form-msg.ok{display:block;background:#E7F6EC;border:1.5px solid #35A46B;color:#1D6B43}
.form-msg.err{display:block;background:#FBECEC;border:1.5px solid #C4463B;color:#8C2B23}
.confirm{display:inline-block;border:1.8px dashed var(--teal);color:#22758d;background:#F3FAFC;border-radius:6px;padding:1px 10px;font-size:14.5px;font-style:normal}

/* ---------- Equipment mosaic ---------- */
.equip-grid{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:1fr 1fr;gap:18px;margin-top:42px}
.equip-grid figure{margin:0;position:relative;border-radius:var(--rad);overflow:hidden;box-shadow:0 12px 30px rgba(18,42,84,.14)}
.equip-grid figure:first-child{grid-row:1/3}
.equip-grid img{width:100%;height:100%;object-fit:cover}
.equip-grid figcaption{position:absolute;left:0;bottom:0;background:rgba(18,42,84,.88);color:#fff;font-weight:700;font-size:13.5px;letter-spacing:.8px;text-transform:uppercase;padding:8px 14px;border-radius:0 8px 0 0}

/* ---------- Map ---------- */
.map-frame{border:0;width:100%;height:380px;border-radius:var(--rad);box-shadow:0 14px 34px rgba(18,42,84,.14)}

/* ---------- Footer ---------- */
footer{background:var(--navy);color:#C6D5E8;padding:68px 0 30px}
.fgrid-foot{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:44px}
footer .flogo{height:88px;background:#fff;border-radius:10px;padding:10px 16px;width:auto}
footer h4{font-weight:700;font-size:16px;letter-spacing:1.4px;text-transform:uppercase;color:#fff;margin-bottom:14px}
footer ul{list-style:none}
footer li{margin:8px 0;font-size:15.5px}
footer a{color:#C6D5E8}
footer a:hover{color:var(--gold)}
.wa{display:inline-flex;align-items:center;gap:8px;margin-top:14px;background:#25D366;color:#08331A;font-weight:700;padding:11px 18px;border-radius:8px}
.wa:hover{color:#08331A;filter:brightness(1.06)}
.legal{border-top:1px solid rgba(255,255,255,.14);margin-top:46px;padding-top:22px;font-size:14px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* ---------- Responsive ---------- */
@media(max-width:1020px){
  .hero-grid{grid-template-columns:1fr;padding:64px 0 72px}
  .split,.fgrid-foot{grid-template-columns:1fr}
  .cards,.review-cards,.steps{grid-template-columns:1fr}
  .island-grid{grid-template-columns:repeat(2,1fr)}
  .fgrid{grid-template-columns:1fr}
  .equip-grid{grid-template-columns:1fr;grid-template-rows:auto}
  .equip-grid figure:first-child{grid-row:auto}
  .rail{flex-wrap:wrap;gap:22px}
  .rail::before{display:none}
  .rail li{flex:1 1 40%}
  .nav{height:88px}
  .brand img{height:58px}
  header.scrolled .brand img{height:52px}
  .nav-links{position:fixed;inset:88px 0 auto 0;background:#fff;flex-direction:column;padding:24px;gap:16px;box-shadow:0 18px 30px rgba(18,42,84,.16);transform:translateY(-140%);transition:transform .3s;z-index:70}
  .nav-links.open{transform:none}
  .burger{display:block}
  .nav-cta{display:none}
  section{padding:62px 0}
  .form-shell{padding:28px 20px}
  .score .num{font-size:56px}
}
