@font-face{font-family:"Bebas Neue";src:url("assets/fonts/bebas-neue-latin.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Oswald";src:url("assets/fonts/oswald-latin-var.woff2") format("woff2");font-weight:200 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Sans 3";src:url("assets/fonts/source-sans-3-latin-var.woff2") format("woff2");font-weight:200 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--bg:#0d0f12;--card:#16191f;--line:#242933;--accent:#3fca3f;--red:#e03131;--txt:#eef1f5;--mut:#9aa3b2;--wa:#25d366}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--txt);font:16px/1.65 "Source Sans 3",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif}
a{color:var(--accent);text-decoration:none}
/* WCAG 1.4.1: a link inside a block of text must not be identified by colour
   alone, so in-content links carry an underline. Navigation, buttons and
   badges are excluded - they read as controls, not prose. */
main p a:not(.btn):not(.btn-wa):not(.badge),.prose li a{text-decoration:underline;text-underline-offset:2px}
a,button,label{touch-action:manipulation}
img,svg{max-width:100%}
h1,h2,h3{font-family:"Bebas Neue","Arial Narrow",-apple-system,sans-serif;font-weight:400;letter-spacing:.03em;text-wrap:balance}
.wrap{max-width:1080px;margin:0 auto;padding:0 20px}
header{position:sticky;top:0;background:rgba(13,15,18,.92);backdrop-filter:saturate(140%) blur(8px);-webkit-backdrop-filter:saturate(140%) blur(8px);border-bottom:1px solid var(--line);z-index:100}
header .wrap{display:flex;align-items:center;gap:10px;padding:10px 16px;flex-wrap:wrap}
.brand{font-weight:800;font-size:1.15rem;color:var(--txt);display:flex;align-items:center;margin-right:auto}
.brand span{color:var(--red)}
.brand img{height:42px;width:auto;display:block}
.menu-toggle{display:none}
.menu-btn{display:flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:11px;cursor:pointer;border:1px solid var(--line);border-radius:10px;background:var(--card);order:5}
.menu-btn::before,.menu-btn::after,.menu-btn span{content:"";display:block;height:2px;width:100%;background:var(--txt);border-radius:2px;transition:transform .2s ease,opacity .2s ease}
.menu-toggle:checked ~ .menu-btn::before{transform:translateY(7px) rotate(45deg)}
.menu-toggle:checked ~ .menu-btn span{opacity:0}
.menu-toggle:checked ~ .menu-btn::after{transform:translateY(-7px) rotate(-45deg)}
header .btn{order:4;padding:9px 16px 7px;font-size:1.05rem}
nav{order:6;flex-basis:100%;display:flex;flex-direction:column;gap:0;max-height:0;overflow:hidden;transition:max-height .25s ease}
.menu-toggle:checked ~ nav{max-height:340px}
nav a{font-family:"Oswald","Arial Narrow",sans-serif;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--txt);font-size:1rem;padding:13px 6px;border-top:1px solid var(--line)}
nav a:hover{color:var(--accent)}
.btn{display:inline-block;background:var(--accent);color:#08140a;font-family:"Bebas Neue","Arial Narrow",sans-serif;font-size:1.15rem;letter-spacing:.06em;padding:11px 24px 9px;border-radius:10px}
.btn:hover{filter:brightness(1.08)}
.hero{padding:52px 0 40px;text-align:center}
/* The hero background is the homepage LCP element. Phones get an 800w file
   (46 KB WebP) instead of the 1200w one, and image-set() upgrades to WebP
   where supported, with the JPEG left as the universal fallback. */
.hero-photo{background:linear-gradient(rgba(13,15,18,.72),rgba(13,15,18,.94)),url("assets/work/hero-bg-800.jpg") center/cover no-repeat;border-radius:18px;border:1px solid var(--line);margin-top:16px;padding:72px 20px 52px}
@supports (background-image:image-set(url("a.webp") type("image/webp"))){
.hero-photo{background:linear-gradient(rgba(13,15,18,.72),rgba(13,15,18,.94)),image-set(url("assets/work/hero-bg-800.webp") type("image/webp"),url("assets/work/hero-bg-800.jpg") type("image/jpeg")) center/cover no-repeat}
}
@media(min-width:820px){
.hero-photo{background:linear-gradient(rgba(13,15,18,.72),rgba(13,15,18,.94)),url("assets/work/hero-bg.jpg") center/cover no-repeat}
@supports (background-image:image-set(url("a.webp") type("image/webp"))){
.hero-photo{background:linear-gradient(rgba(13,15,18,.72),rgba(13,15,18,.94)),image-set(url("assets/work/hero-bg.webp") type("image/webp"),url("assets/work/hero-bg.jpg") type("image/jpeg")) center/cover no-repeat}
}
}
.hero-photo p{color:#c9d2de}
.hero h1{font-size:clamp(2.3rem,7vw,3.8rem);line-height:1.08;margin-bottom:14px}
.hero p{color:var(--mut);max-width:640px;margin:0 auto 24px;font-size:1.05rem}
.badge{display:inline-block;margin-top:16px;background:var(--card);border:1px solid var(--line);border-radius:999px;padding:8px 18px;font-size:.9rem;color:var(--txt)}
.badge b{color:var(--accent)}
section{padding:36px 0}
h2{font-size:2rem;margin-bottom:16px}
h3{font-size:1.35rem;margin-bottom:8px;letter-spacing:.04em}
section p{color:var(--mut);margin-bottom:14px}
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(250px,1fr))}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px}
/* Descendant, not child: images sit inside <picture> for the WebP source, so
   a ">" selector misses them entirely and the card image renders squashed. */
.card picture,.gallery picture{display:block}
.card img{width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;object-position:50% 70%;border-radius:10px;border:1px solid var(--line);margin-bottom:14px}
.card picture img{margin-bottom:0}
.card picture{margin-bottom:14px}
.card p{margin:0;font-size:.95rem}
.card a{font-size:.9rem}
ul{list-style:none}
.cols ul li,.tags li{color:var(--mut);font-size:.95rem;padding:3px 0}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tags li{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:6px 12px;color:var(--txt)}
.cta{background:var(--card);border:1px solid var(--line);border-radius:16px;text-align:center;padding:40px 24px;margin:40px 0}
.gallery{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
.gallery a{display:block}
.gallery img{width:100%;height:100%;aspect-ratio:3/4;object-fit:cover;border-radius:12px;border:1px solid var(--line);display:block}
footer{border-top:1px solid var(--line);padding:40px 0 96px;margin-top:40px;font-family:"Oswald","Arial Narrow",sans-serif}
/* four columns now (Services, Areas, Contact, Company) - the 250px floor the
   main grid uses forces the fourth onto its own row */
footer .grid{gap:28px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
footer h2{margin-bottom:10px;font-size:1.05rem;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--txt)}
footer li{padding:4px 0;font-weight:300;letter-spacing:.02em;color:var(--txt)}
footer a{color:var(--txt);font-weight:300;letter-spacing:.02em;font-size:.95rem}
footer a:hover{color:var(--accent)}
footer .fine{color:var(--txt);font-weight:300;font-size:.85rem;margin-top:28px}
/* Fixed mobile action bar: call and WhatsApp share the width 50/50. The two
   actions must not read as one button, so WhatsApp gets the dark treatment -
   its brand green sits too close to --accent to distinguish at a glance. */
.callbar{position:fixed;left:0;right:0;bottom:0;display:flex;z-index:200;
  padding-bottom:env(safe-area-inset-bottom);background:var(--card);
  border-top:1px solid var(--line)}
.callbar a{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;
  font-family:"Bebas Neue","Arial Narrow",sans-serif;font-size:1.2rem;letter-spacing:.06em;
  text-align:center;padding:14px 10px 12px;text-decoration:none}
.callbar .cb-call{background:var(--accent);color:#08140a}
.callbar .cb-wa{background:var(--card);color:var(--txt);border-left:1px solid var(--line)}
.callbar svg{width:20px;height:20px;flex:none}
.callbar .cb-wa svg{fill:var(--wa)}

/* WhatsApp button used in page content */
.btn-wa{display:inline-flex;align-items:center;gap:9px;background:transparent;
  color:var(--txt);border:1px solid var(--line);font-family:"Bebas Neue","Arial Narrow",sans-serif;
  font-size:1.15rem;letter-spacing:.06em;padding:10px 22px 8px;border-radius:10px}
.btn-wa svg{width:19px;height:19px;fill:var(--wa)}
.btn-wa:hover{border-color:var(--wa);background:rgba(37,211,102,.08)}

/* Breadcrumbs */
.crumbs{font-size:.85rem;color:var(--mut);padding:14px 0 0}
.crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.crumbs li:not(:last-child)::after{content:"/";margin-left:6px;color:var(--line)}
.crumbs a{color:var(--mut)}
.crumbs a:hover{color:var(--accent)}
.crumbs [aria-current]{color:var(--txt)}

/* Testimonials */
.quotes{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.quote{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px;
  display:flex;flex-direction:column}
.quote .stars{color:var(--accent);letter-spacing:.14em;font-size:.9rem;margin-bottom:10px}
.quote blockquote{font-size:.95rem;color:var(--txt);margin-bottom:14px;flex:1}
.quote cite{font-style:normal;font-size:.85rem;color:var(--mut)}
.quote cite b{color:var(--txt);font-weight:600;display:block;font-size:.95rem}

/* Legal pages: long-form prose */
.prose h2{font-size:1.5rem;margin:32px 0 10px}
.prose h3{font-size:1.15rem;margin:22px 0 6px}
.prose p,.prose li{color:var(--mut);margin-bottom:12px;font-size:.97rem}
.prose ul{list-style:disc;padding-left:22px;margin-bottom:14px}
.prose li{margin-bottom:6px}
.prose a{text-decoration:underline}
.prose strong{color:var(--txt)}

/* Skip link + visible keyboard focus (the default ring is invisible on
   this dark palette) */
.skip{position:absolute;left:-9999px;top:0;z-index:300;background:var(--accent);
  color:#08140a;padding:12px 20px;border-radius:0 0 10px 0;font-weight:700}
.skip:focus{left:0}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:4px}

@media(prefers-reduced-motion:reduce){
*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;
  transition-duration:.01ms!important;scroll-behavior:auto!important}
}
@media(min-width:820px){
.menu-btn{display:none}
header .btn{order:5}
nav{order:4;flex-basis:auto;flex-direction:row;gap:4px;max-height:none;overflow:visible}
nav a{border-top:0;padding:8px 12px;border-radius:8px;font-size:.95rem}
nav a:hover{background:var(--card);color:var(--accent)}
.brand img{height:48px}
header .wrap{padding:10px 20px}
}
@media(min-width:768px){.callbar{display:none}footer{padding-bottom:40px}}
@media(max-width:480px){
.wrap{padding:0 16px}
.hero{padding:40px 0 32px}
section{padding:28px 0}
h2{font-size:1.75rem}
.gallery{grid-template-columns:repeat(2,1fr);gap:10px}
}
