/* Shared additions for the static build (page styles live in each page's <style>). */
body{font-family:Roboto,sans-serif;color:#EEF1F6}
[hidden]{display:none!important}
html{scroll-behavior:smooth}
img{max-width:100%}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
.set>.setimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.set:hover>.setimg{transform:scale(1.05)}
.cf-err{color:#FFB4A8!important}
.btn[disabled]{opacity:.6;cursor:progress}

/* Scroll reveal for browsers without scroll-driven animations (site.js adds .io) */
html.io .rv{animation:none!important;opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1)}
html.io .rv.vis{opacity:1;transform:none}

/* Small screens */
@media (max-width:640px){
  header nav.nav{gap:14px 18px!important}
  .nav a{font-size:18px!important}
  html,body{overflow-x:clip}
  h1,h2,h3,.h{overflow-wrap:break-word;hyphens:manual}
  [style*="font-size: 80px"]{font-size:54px!important}
  [style*="font-size: 72px"]{font-size:50px!important}
  [style*="font-size: 68px"],[style*="font-size: 64px"]{font-size:46px!important}
  [style*="font-size: 56px"]{font-size:42px!important}
  .recent,#credit-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:24px 14px!important}
  #credit-grid .poster .h{font-size:22px!important}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}html.io .rv{opacity:1;transform:none;transition:none}}
@media (max-width:640px){section[aria-label="By the numbers"] dl{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* Nvisionate logo panel */
.nvlogo{justify-content:center!important;align-items:center!important;padding:0 36px;container-type:inline-size}
@container (max-width:320px){.nvlogo .nvtag{display:none}.nvlogo>img{width:92%}}
.nvlogo>img{position:relative;z-index:1;width:min(82%,520px);height:auto;filter:drop-shadow(0 0 18px rgba(30,120,220,.55)) drop-shadow(0 14px 28px rgba(0,0,0,.65));animation:nvpulse 6s ease-in-out infinite}
.nvlogo .nvglow{position:absolute;left:50%;top:50%;width:90%;height:70%;transform:translate(-50%,-50%);background:radial-gradient(closest-side,rgba(40,130,230,.38),rgba(40,130,230,0));pointer-events:none}
.nvlogo .nvtag{position:relative;z-index:1;margin-top:18px;font:700 11px Barlow,sans-serif;letter-spacing:.32em;text-transform:uppercase;color:#C9D0DC}
@keyframes nvpulse{0%,100%{filter:drop-shadow(0 0 14px rgba(30,120,220,.45)) drop-shadow(0 14px 28px rgba(0,0,0,.65))}50%{filter:drop-shadow(0 0 26px rgba(30,120,220,.75)) drop-shadow(0 14px 28px rgba(0,0,0,.65))}}
@media (prefers-reduced-motion:reduce){.nvlogo>img{animation:none}}

/* Photo boxes (defined here too so every page has them) */
.cover{width:100%;height:100%;object-fit:cover;display:block}
.zoom{overflow:hidden}
.zoom img{transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.zoom:hover img{transform:scale(1.04)}

/* Navigation: gold + underline marks the page you're on */
.nav a.on{color:#D88E1F}

/* Campaign postcard shown as a physical card on the Civic photo grid */
.postcard{position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(closest-side,rgba(58,104,190,.35),transparent),linear-gradient(160deg,#0A2C57,#020E22);border:1px solid rgba(255,255,255,.08)}
.postcard img{height:88%;width:auto;transform:rotate(-4deg);box-shadow:0 24px 40px -10px rgba(0,0,0,.75);transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.postcard:hover img{transform:rotate(0) scale(1.05)}
@media (max-width:640px){.cgrid{grid-template-columns:1fr!important;grid-auto-rows:auto!important}.cgrid>*{grid-row:auto!important;grid-column:auto!important;height:300px}.cgrid>.postcard{height:420px}.cgrid>:first-child{height:640px}}

/* Service badges */
.badge{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:14px;padding:24px 16px;text-align:center}
.badge svg{width:88px;height:88px;filter:drop-shadow(0 10px 18px rgba(0,0,0,.45));transition:transform .4s cubic-bezier(.2,.7,.2,1)}
.badge:hover svg{transform:translateY(-4px) scale(1.04)}
.badge-t{display:flex;flex-direction:column;gap:4px;font-family:Staatliches,sans-serif;text-transform:uppercase;line-height:1}
.badge-a{font-size:24px;color:#D88E1F;letter-spacing:.02em}
.badge-b{font-size:20px;color:#EEF1F6;letter-spacing:.04em}
@media (max-width:640px){.badges{grid-template-columns:repeat(2,minmax(0,1fr))!important}.badge{padding:18px 10px}.badge svg{width:72px;height:72px}.badge-a{font-size:20px}.badge-b{font-size:17px}}

/* Certification list (Service) */
.certs{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px 28px}
.certs li{position:relative;padding-left:26px}
.certs li::before{content:"";position:absolute;left:0;top:.62em;width:10px;height:10px;background:#D88E1F;transform:rotate(45deg)}

/* Header tagline fits on phones */
@media (max-width:640px){header a[aria-label="Nick Somers home"]>span:last-child>span:last-child{font-size:8.5px!important;letter-spacing:.12em!important}}
