/* =========================================================
   Ace21 Industries — theme stylesheet
   ========================================================= */

:root{
  --navy:#0B1F3B;
  --navy-light:#15315C;
  --navy-tint:#EEF1F6;
  --orange:#FF6B4A;
  --orange-dark:#E5502F;
  --white:#FFFFFF;
  --ink:#0B1F3B;
  --muted:#5B6472;
  --border:#DFE3EA;
  --radius-sm:6px;
  --radius-md:10px;
  --radius-lg:20px;
  --ease:cubic-bezier(.4,0,.2,1);
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:'Inter',sans-serif;
  color:var(--ink);
  background:var(--white);
  -webkit-font-smoothing:antialiased;
  line-height:1.5;
  overflow-x:hidden;
}
body.nav-open{overflow:hidden;}
h1,h2,h3,h4,.font-display{
  font-family:'Space Grotesk',sans-serif;
  letter-spacing:-0.02em;
  line-height:1.05;
  font-weight:700;
}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
ul{list-style:none;}
button{font:inherit;}
.container{max-width:1200px;margin:0 auto;padding:0 24px;}

.eyebrow{
  display:inline-flex;align-items:center;gap:8px;
  font-family:'Space Grotesk',sans-serif;
  font-size:12.5px;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;
  color:var(--orange-dark);
}
.eyebrow::before{content:"";width:8px;height:8px;background:var(--orange);border-radius:2px;flex-shrink:0;}

/* ---- Buttons ---- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:15px;
  padding:14px 26px;border-radius:999px;cursor:pointer;
  transition:transform 220ms var(--ease), background 220ms var(--ease), box-shadow 220ms var(--ease), color 220ms var(--ease), border-color 220ms var(--ease);
  border:2px solid transparent;white-space:nowrap;
}
.btn:focus-visible{outline:3px solid var(--orange);outline-offset:2px;}
.btn-primary{background:var(--orange);color:var(--white);}
.btn-primary:hover{background:var(--orange-dark);transform:translateY(-2px);box-shadow:0 10px 24px rgba(255,107,74,.35);}
.btn-dark{background:var(--navy);color:var(--white);}
.btn-dark:hover{background:var(--navy-light);transform:translateY(-2px);box-shadow:0 10px 24px rgba(11,31,59,.28);}
.btn-outline{background:transparent;color:var(--navy);border-color:var(--border);}
.btn-outline:hover{border-color:var(--navy);transform:translateY(-2px);}
.btn-outline-light{background:transparent;color:var(--white);border-color:rgba(255,255,255,.35);}
.btn-outline-light:hover{border-color:var(--white);transform:translateY(-2px);}
.btn-block{width:100%;}
.btn[disabled]{opacity:.6;cursor:not-allowed;transform:none !important;}

/* =========================================================
   TOP BAR
   ========================================================= */
.topbar{
  position:fixed;top:0;left:0;right:0;z-index:60;
  background:rgba(255,255,255,.88);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--border);
}
.topbar-inner{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;}
.logo-mark{height:32px;width:auto;position:relative;z-index:2;}
.topbar-actions{display:flex;align-items:center;gap:14px;}

.menu-btn{
  display:inline-flex;align-items:center;gap:10px;
  background:none;border:none;cursor:pointer;
  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14.5px;
  color:var(--navy);padding:8px 4px;
}
.menu-btn .bars{display:flex;flex-direction:column;gap:4px;width:22px;}
.menu-btn .bars span{display:block;height:2px;width:100%;background:var(--navy);transition:transform 260ms var(--ease), opacity 200ms var(--ease);}
body.nav-open .menu-btn .bars span:nth-child(1){transform:translateY(6px) rotate(45deg);}
body.nav-open .menu-btn .bars span:nth-child(2){opacity:0;}
body.nav-open .menu-btn .bars span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}
body.nav-open .menu-btn .menu-label{opacity:0;}
.menu-btn .menu-label{transition:opacity 150ms var(--ease);}

.page-shell{padding-top:74px;}

@media (max-width:480px){
  .topbar-actions .btn{display:none;}
}

/* =========================================================
   FULL-SCREEN OVERLAY NAV
   ========================================================= */
.nav-overlay{
  position:fixed;inset:0;z-index:55;
  background:var(--navy);
  transform:translateY(-100%);
  display:flex;flex-direction:column;
  overflow:hidden;
  transition:transform 480ms var(--ease);
}
.nav-overlay.open{transform:translateY(0);}
.nav-overlay a,
.nav-close{visibility:hidden;pointer-events:none;}
.nav-overlay.open a,
.nav-overlay.open .nav-close{visibility:visible;pointer-events:auto;}
.nav-overlay-glow{
  position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(680px 480px at 88% 12%, rgba(255,107,74,.22), transparent 60%);
}
.nav-overlay-inner{
  position:relative;z-index:1;flex:1;
  display:flex;flex-direction:column;justify-content:space-between;
  padding:110px 24px 48px;
  max-width:1200px;margin:0 auto;width:100%;
}
.nav-main-links{display:flex;flex-direction:column;gap:6px;}
.nav-main-links li{overflow:hidden;}
.nav-main-links a{
  display:inline-flex;align-items:baseline;gap:18px;
  font-family:'Space Grotesk',sans-serif;font-weight:700;
  font-size:clamp(2.4rem,7vw,5.2rem);
  color:#fff;letter-spacing:-0.03em;
  opacity:.35;
  transition:opacity 220ms var(--ease), color 220ms var(--ease);
  padding:4px 0;
}
.nav-main-links a:hover,
.nav-main-links a:focus-visible,
.nav-main-links a.current{opacity:1;color:var(--orange);}
/* Staggered entrance — pure CSS, driven only by the `.open` class, so
   it can't stall the way a JS-timed animation can. Each link fades
   and rises in with an increasing delay via nth-child. */
.nav-main-links a,
.nav-overlay-foot .col{
  opacity:0;transform:translateY(28px);
  transition:opacity 420ms var(--ease), transform 420ms var(--ease), color 220ms var(--ease);
}
.nav-overlay.open .nav-main-links a,
.nav-overlay.open .nav-overlay-foot .col{opacity:1;transform:translateY(0);}
.nav-overlay.open .nav-main-links a:not(:hover):not(:focus-visible):not(.current){opacity:.35;}
.nav-main-links li:nth-child(1) a{transition-delay:80ms;}
.nav-main-links li:nth-child(2) a{transition-delay:130ms;}
.nav-main-links li:nth-child(3) a{transition-delay:180ms;}
.nav-main-links li:nth-child(4) a{transition-delay:230ms;}
.nav-main-links li:nth-child(5) a{transition-delay:280ms;}
.nav-overlay-foot .col:nth-child(1){transition-delay:220ms;}
.nav-overlay-foot .col:nth-child(2){transition-delay:260ms;}
.nav-overlay-foot .col:nth-child(3){transition-delay:300ms;}
.nav-main-links a .idx{
  font-family:'Space Grotesk',sans-serif;font-size:15px;font-weight:600;
  color:var(--orange);opacity:.9;align-self:flex-start;margin-top:14px;
}
.nav-overlay-foot{
  display:flex;flex-wrap:wrap;gap:32px;justify-content:space-between;
  border-top:1px solid rgba(255,255,255,.14);padding-top:28px;margin-top:40px;
}
.nav-overlay-foot .col h4{
  font-family:'Space Grotesk',sans-serif;color:rgba(255,255,255,.5);
  font-size:12px;letter-spacing:.12em;text-transform:uppercase;margin-bottom:12px;
}
.nav-overlay-foot .col a,
.nav-overlay-foot .col p{
  display:block;color:#fff;font-size:15px;margin-bottom:6px;
}
.nav-overlay-foot .col a{transition:color 180ms var(--ease);}
.nav-overlay-foot .col a:hover{color:var(--orange);}
.nav-close{
  position:absolute;top:26px;right:24px;z-index:2;
  width:44px;height:44px;border-radius:50%;
  border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.06);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:border-color 180ms var(--ease), background 180ms var(--ease), transform 180ms var(--ease);
}
.nav-close:hover{border-color:var(--orange);background:rgba(255,107,74,.14);transform:rotate(90deg);}
.nav-close svg{width:18px;height:18px;color:#fff;}

@media (max-width:720px){
  .nav-overlay-inner{padding:96px 20px 32px;}
  .nav-main-links a{font-size:clamp(2rem,10vw,3rem);gap:12px;}
  .nav-overlay-foot{flex-direction:column;gap:24px;}
}

/* =========================================================
   SECTION HEADERS / SHARED LAYOUT
   ========================================================= */
.section{padding:104px 0;}
.section-head{max-width:640px;margin-bottom:56px;}
.section-head h2{font-size:clamp(2rem,3.4vw,2.8rem);margin-top:16px;}
.section-head p{color:var(--muted);font-size:16.5px;margin-top:16px;}
.section-head.center{margin-left:auto;margin-right:auto;text-align:center;}

.page-hero{
  padding:72px 0 64px;
  background:radial-gradient(720px 420px at 88% -10%, rgba(255,107,74,.14), transparent 60%), var(--white);
}
.page-hero h1{font-size:clamp(2.4rem,4.4vw,3.6rem);margin:18px 0 18px;max-width:820px;}
.page-hero p.lead{font-size:17.5px;color:var(--muted);max-width:620px;}
.page-hero .accent{color:var(--orange);}

/* =========================================================
   MARQUEE
   ========================================================= */
.marquee-wrap{
  border-top:1px solid var(--border);border-bottom:1px solid var(--border);
  background:var(--navy-tint);overflow:hidden;padding:18px 0;
}
.marquee{display:flex;width:max-content;animation:marquee-scroll 30s linear infinite;}
.marquee span{
  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:15px;
  color:var(--navy);opacity:.55;white-space:nowrap;padding:0 28px;
  display:flex;align-items:center;gap:28px;text-transform:uppercase;letter-spacing:.06em;
}
.marquee span::after{content:"•";color:var(--orange);opacity:1;}
@keyframes marquee-scroll{from{transform:translateX(0);}to{transform:translateX(-50%);}}
@media (prefers-reduced-motion: reduce){
  .marquee{animation:none;}
  [data-reveal], [data-reveal-group] > *{opacity:1 !important;transform:none !important;}
  .nav-main-links a, .nav-overlay-foot .col, .nav-overlay{transition-duration:1ms !important;transition-delay:0ms !important;}
}

/* =========================================================
   HERO
   ========================================================= */
.hero{padding:64px 0 72px;position:relative;overflow:hidden;}
.hero-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:56px;align-items:center;}
.hero h1{font-size:clamp(2.6rem,4.6vw,4.4rem);margin:20px 0 22px;}
.hero h1 .accent{color:var(--orange);}
.hero p.lead{font-size:18px;color:var(--muted);max-width:520px;margin-bottom:34px;}
.hero-actions{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:52px;}
.hero-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-top:1px solid var(--border);padding-top:28px;max-width:560px;}
.hero-stats .stat{padding-right:16px;}
.hero-stats .stat + .stat{border-left:1px solid var(--border);padding-left:16px;}
.stat .num{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(1.5rem,2.4vw,2rem);color:var(--navy);}
.stat .label{font-size:12.5px;color:var(--muted);margin-top:4px;letter-spacing:.02em;}

.hero-visual{
  position:relative;background:var(--navy);border-radius:24px;
  aspect-ratio:1/1.05;padding:36px;overflow:hidden;
  display:flex;flex-direction:column;justify-content:space-between;
  transition:transform 300ms var(--ease);
}
.hero-visual:hover{transform:scale(1.015);}
.hero-visual-glow{
  position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(320px 320px at 20% 15%, rgba(255,107,74,.4), transparent 65%);
}
.hero-visual .badge-row{display:flex;flex-wrap:wrap;gap:10px;position:relative;z-index:1;}
.chip{
  display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.14);color:#fff;
  font-family:'Space Grotesk',sans-serif;font-size:13px;font-weight:600;
  padding:9px 14px;border-radius:999px;
}
.chip svg{width:15px;height:15px;color:var(--orange);}
.chip img{width:15px;height:15px;object-fit:contain;}
.hero-visual .big-num{position:relative;z-index:1;}
.hero-visual .big-num .n{font-family:'Space Grotesk',sans-serif;font-weight:700;color:#fff;font-size:clamp(3rem,6.4vw,4.6rem);line-height:.95;}
.hero-visual .big-num .d{color:rgba(255,255,255,.6);font-size:14.5px;margin-top:10px;max-width:280px;}

/* =========================================================
   PILLARS
   ========================================================= */
.pillars-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;}
.pillar-card{
  grid-column:span 1;
  border:1px solid var(--border);border-radius:var(--radius-md);
  padding:32px 26px;background:var(--white);
  transition:border-color 220ms var(--ease), transform 220ms var(--ease), box-shadow 220ms var(--ease);
  display:flex;flex-direction:column;height:100%;
}
.pillar-card:hover{transform:translateY(-8px);box-shadow:0 20px 44px rgba(11,31,59,.12);border-color:var(--navy);}
.pillar-card.featured{background:var(--navy);border-color:var(--navy);color:#fff;}
.pillar-card.featured .pillar-desc,
.pillar-card.featured .tag{color:rgba(255,255,255,.65);}
.pillar-card.featured .tag{background:rgba(255,255,255,.1);color:#fff;}
.pillar-card .icon-wrap{
  width:52px;height:52px;border-radius:12px;background:var(--navy);
  display:flex;align-items:center;justify-content:center;margin-bottom:22px;
  transition:background 220ms var(--ease);
}
.pillar-card.featured .icon-wrap{background:var(--orange);}
.pillar-card:hover .icon-wrap{background:var(--orange);}
.pillar-card .icon-wrap svg{width:24px;height:24px;color:#fff;}
.pillar-card .icon-wrap img{width:24px;height:24px;object-fit:contain;}
.pillar-card h3{font-size:19px;margin-bottom:8px;}
.pillar-card .pillar-desc{color:var(--muted);font-size:14px;margin-bottom:16px;flex-grow:1;}
/* Shared by pillar cards and work cards — previously only scoped to
   .pillar-card, so work-card tags had no flex/gap rule at all and
   just fell back to raw inline-text wrapping (uneven spacing, ragged
   line breaks). */
.tag-row{display:flex;flex-wrap:wrap;gap:8px;}
.pillar-card .tag-row{margin-bottom:16px;}
.tag{
  font-size:11.5px;font-weight:600;color:var(--navy);background:var(--navy-tint);
  padding:5px 10px;border-radius:999px;font-family:'Space Grotesk',sans-serif;
}
.pillar-card .pillar-link{
  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:14px;
  display:inline-flex;align-items:center;gap:6px;color:var(--orange-dark);margin-top:auto;
}
.pillar-card.featured .pillar-link{color:var(--orange);}
.pillar-card .pillar-link svg{width:15px;height:15px;transition:transform 200ms var(--ease);}
.pillar-card:hover .pillar-link svg{transform:translateX(4px);}

@media (max-width:960px){.pillars-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:560px){.pillars-grid{grid-template-columns:1fr;}}

/* =========================================================
   WORK PREVIEW + WORK GRID + FILTER PILL
   ========================================================= */
.work-preview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;}
@media (max-width:900px){.work-preview-grid{grid-template-columns:1fr;}}

.work-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:40px;position:relative;}
.filter-btn{
  position:relative;
  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:13.5px;
  padding:10px 18px;border-radius:999px;border:1px solid var(--border);
  background:var(--white);color:var(--navy);cursor:pointer;
  transition:color 200ms var(--ease), border-color 200ms var(--ease);
}
.filter-btn:hover{border-color:var(--navy);}
.filter-btn.active{color:#fff;border-color:transparent;}
.filter-btn span{position:relative;z-index:1;}
.filter-pill{
  position:absolute;top:0;left:0;width:0;height:0;
  background:var(--navy);border-radius:999px;z-index:1;
  transition:top 380ms var(--ease), left 380ms var(--ease), width 380ms var(--ease), height 380ms var(--ease), opacity 200ms var(--ease);
  pointer-events:none;opacity:0;
}
.filter-pill.is-visible{opacity:1;}

.work-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
@media (max-width:960px){.work-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.work-grid{grid-template-columns:1fr;}}

.work-card{
  border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;
  background:var(--white);transition:transform 220ms var(--ease), box-shadow 220ms var(--ease), border-color 220ms var(--ease), opacity 250ms var(--ease);
  display:flex;flex-direction:column;
}
.work-card:hover{transform:translateY(-8px);box-shadow:0 20px 44px rgba(11,31,59,.12);border-color:var(--navy);}
.work-card.is-hidden{display:none;}
.work-thumb{
  aspect-ratio:4/3;position:relative;overflow:hidden;
  display:flex;align-items:flex-end;padding:18px;
}
.work-thumb .work-mark{
  font-family:'Space Grotesk',sans-serif;font-weight:700;color:rgba(255,255,255,.92);
  font-size:15px;position:relative;z-index:1;
}
.work-thumb-shade{
  position:absolute;inset:0;
  background:linear-gradient(160deg, rgba(11,31,59,.15), rgba(11,31,59,.55));
}
.work-body{padding:22px 22px 24px;display:flex;flex-direction:column;gap:10px;flex-grow:1;}
.work-cat{
  font-family:'Space Grotesk',sans-serif;font-size:11.5px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--orange-dark);
}
.work-card h3{font-size:19px;}
.work-card p{color:var(--muted);font-size:14px;flex-grow:1;}
.work-visit{
  display:inline-flex;align-items:center;gap:6px;
  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:13.5px;
  color:var(--orange-dark);margin-top:2px;transition:gap 180ms var(--ease);
}
.work-visit svg{width:14px;height:14px;}
.work-visit:hover{gap:9px;color:var(--orange);}

.thumb-navy{background:linear-gradient(135deg,#0B1F3B,#15315C);}
.thumb-orange{background:linear-gradient(135deg,#FF6B4A,#E5502F);}
.thumb-teal{background:linear-gradient(135deg,#0E7C7B,#0B1F3B);}
.thumb-plum{background:linear-gradient(135deg,#5B3A7A,#0B1F3B);}
.thumb-slate{background:linear-gradient(135deg,#3A4A63,#0B1F3B);}
.thumb-amber{background:linear-gradient(135deg,#C97A2B,#0B1F3B);}
.thumb-brand{background:linear-gradient(135deg,#FF6B4A,#0B1F3B);}

/* =========================================================
   PROCESS
   ========================================================= */
.process{background:var(--navy-tint);}
.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.process-step{position:relative;padding-top:8px;}
.process-step .index{
  font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:14px;color:var(--orange-dark);
  margin-bottom:16px;display:block;
}
.process-step h3{font-size:19px;margin-bottom:10px;}
.process-step p{color:var(--muted);font-size:14.5px;}
.process-line{height:2px;background:var(--border);margin-bottom:28px;position:relative;}
.process-line::before{content:"";position:absolute;left:0;top:-3px;width:8px;height:8px;border-radius:50%;background:var(--orange);}
@media (max-width:960px){.process-grid{grid-template-columns:repeat(2,1fr);row-gap:40px;}}
@media (max-width:640px){.process-grid{grid-template-columns:1fr;}}

/* =========================================================
   RESULTS / STATS BAND
   ========================================================= */
.results{background:var(--navy);color:#fff;position:relative;overflow:hidden;}
.results-glow{
  position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(600px 400px at 85% 20%, rgba(255,107,74,.18), transparent 60%);
}
.results .section-head p{color:rgba(255,255,255,.65);}
.results .section-head h2{color:#fff;}
.results .eyebrow{color:var(--orange);}
.results-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;position:relative;z-index:1;}
.result-card{
  border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-md);
  padding:30px 24px;background:rgba(255,255,255,.03);
}
.result-card .n{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:clamp(2.1rem,3.6vw,2.9rem);color:#fff;}
.result-card .l{font-size:13.5px;color:rgba(255,255,255,.6);margin-top:10px;}
@media (max-width:960px){.results-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.results-grid{grid-template-columns:1fr;}}

/* =========================================================
   TESTIMONIAL
   ========================================================= */
.testimonial{background:var(--white);}
.testimonial-inner{max-width:820px;margin:0 auto;text-align:center;}
.testimonial blockquote{
  font-family:'Space Grotesk',sans-serif;font-weight:600;
  font-size:clamp(1.4rem,2.6vw,2.1rem);line-height:1.35;color:var(--navy);
  margin-bottom:32px;
}
.testimonial blockquote::before{content:"\201C";color:var(--orange);}
.testimonial blockquote::after{content:"\201D";color:var(--orange);}
.testimonial-author{display:flex;align-items:center;justify-content:center;gap:14px;}
.avatar{width:46px;height:46px;border-radius:50%;background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:center;font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:15px;}
.testimonial-author .name{font-weight:600;font-size:14.5px;}
.testimonial-author .role{font-size:13px;color:var(--muted);}

/* =========================================================
   CTA BAND
   ========================================================= */
.cta-band{
  background:var(--orange);border-radius:28px;margin:0 24px;padding:72px 48px;
  display:flex;align-items:center;justify-content:space-between;gap:40px;flex-wrap:wrap;
}
.cta-band h2{color:#fff;font-size:clamp(1.9rem,3vw,2.6rem);max-width:520px;}
.cta-band p{color:rgba(255,255,255,.85);margin-top:12px;font-size:16px;max-width:480px;}
.cta-band .actions{display:flex;gap:14px;flex-wrap:wrap;}
.cta-band .btn-primary{background:var(--navy);}
.cta-band .btn-primary:hover{background:var(--navy-light);box-shadow:0 10px 24px rgba(11,31,59,.35);}
@media (max-width:720px){
  .cta-band{flex-direction:column;text-align:center;padding:48px 28px;margin:0 12px;}
  .cta-band .actions{justify-content:center;}
}

/* =========================================================
   SERVICES PAGE
   ========================================================= */
.service-block{padding:88px 0;border-bottom:1px solid var(--border);}
.service-block:last-of-type{border-bottom:none;}
.service-block.tint{background:var(--navy-tint);}
.service-block-head{
  display:grid;grid-template-columns:.9fr 1.1fr;gap:48px;align-items:start;margin-bottom:48px;
}
.service-block-head .num{
  font-family:'Space Grotesk',sans-serif;font-weight:700;color:var(--border);
  font-size:clamp(3rem,6vw,5rem);line-height:1;
}
.service-block-head h2{font-size:clamp(1.8rem,3vw,2.4rem);margin-top:10px;}
.service-block-head p{color:var(--muted);font-size:16px;margin-top:14px;max-width:480px;}
@media (max-width:820px){.service-block-head{grid-template-columns:1fr;}}

.subservice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
@media (max-width:900px){.subservice-grid{grid-template-columns:1fr 1fr;}}
@media (max-width:560px){.subservice-grid{grid-template-columns:1fr;}}
.subservice-card{
  background:var(--white);border:1px solid var(--border);border-radius:var(--radius-md);
  padding:26px 24px;transition:transform 220ms var(--ease), box-shadow 220ms var(--ease), border-color 220ms var(--ease);
}
.service-block.tint .subservice-card{background:var(--white);}
.subservice-card:hover{transform:translateY(-6px);box-shadow:0 16px 36px rgba(11,31,59,.1);border-color:var(--navy);}
.subservice-card .icon-wrap{
  width:44px;height:44px;border-radius:10px;background:var(--navy-tint);
  display:flex;align-items:center;justify-content:center;margin-bottom:16px;
}
.subservice-card .icon-wrap svg{width:20px;height:20px;color:var(--navy);}
.subservice-card .icon-wrap img{width:20px;height:20px;object-fit:contain;}
.subservice-card h3{font-size:16.5px;margin-bottom:8px;}
.subservice-card p{color:var(--muted);font-size:13.5px;}

/* =========================================================
   ABOUT PAGE
   ========================================================= */
.values-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;}
@media (max-width:960px){.values-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:560px){.values-grid{grid-template-columns:1fr;}}
.value-card{padding:28px 22px;border-radius:var(--radius-md);border:1px solid var(--border);transition:transform 220ms var(--ease), box-shadow 220ms var(--ease);}
.value-card:hover{transform:translateY(-6px);box-shadow:0 16px 36px rgba(11,31,59,.1);}
.value-card .icon-wrap{
  width:44px;height:44px;border-radius:10px;background:var(--navy);
  display:flex;align-items:center;justify-content:center;margin-bottom:18px;
}
.value-card .icon-wrap svg{width:20px;height:20px;color:#fff;}
.value-card .icon-wrap img{width:20px;height:20px;object-fit:contain;}
.value-card h3{font-size:17px;margin-bottom:8px;}
.value-card p{color:var(--muted);font-size:14px;}

.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
@media (max-width:820px){.team-grid{grid-template-columns:1fr;}}
.team-card{border:1px solid var(--border);border-radius:var(--radius-md);padding:26px;text-align:left;transition:transform 220ms var(--ease), box-shadow 220ms var(--ease);}
.team-card:hover{transform:translateY(-6px);box-shadow:0 16px 36px rgba(11,31,59,.1);}
.team-avatar{
  width:56px;height:56px;border-radius:50%;background:var(--navy);color:#fff;
  display:flex;align-items:center;justify-content:center;font-family:'Space Grotesk',sans-serif;
  font-weight:700;font-size:17px;margin-bottom:18px;
}
.team-card h3{font-size:17px;margin-bottom:4px;}
.team-card .role{font-size:13px;color:var(--orange-dark);font-family:'Space Grotesk',sans-serif;font-weight:600;margin-bottom:12px;}
.team-card p{color:var(--muted);font-size:13.5px;}

.story-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center;}
@media (max-width:900px){.story-grid{grid-template-columns:1fr;}}
.story-copy p{color:var(--muted);font-size:15.5px;margin-bottom:16px;}
.story-copy p:last-child{margin-bottom:0;}
.story-visual{
  background:var(--navy);border-radius:24px;padding:36px;position:relative;overflow:hidden;
  aspect-ratio:1/1;display:flex;flex-direction:column;justify-content:space-between;
}
.story-visual-glow{
  position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(320px 320px at 80% 10%, rgba(255,107,74,.35), transparent 65%);
}
.story-visual .row{position:relative;z-index:1;display:flex;justify-content:space-between;color:#fff;}
.story-visual .row .n{font-family:'Space Grotesk',sans-serif;font-weight:700;font-size:2.4rem;}
.story-visual .row .l{font-size:12.5px;color:rgba(255,255,255,.6);margin-top:6px;}

/* =========================================================
   CONTACT PAGE
   ========================================================= */
.contact-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:start;}
@media (max-width:960px){.contact-grid{grid-template-columns:1fr;}}

.contact-form{
  background:var(--white);border:1px solid var(--border);border-radius:var(--radius-lg);
  padding:40px;
}
/* Honeypot — off-screen but present in the DOM (not display:none, so
   it still reads as a real field to unsophisticated bots), invisible
   and unreachable for real visitors and screen-reader/keyboard users. */
.hp-field{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px;}
@media (max-width:560px){.form-row{grid-template-columns:1fr;}}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:18px;}
.field label{
  font-family:'Space Grotesk',sans-serif;font-weight:600;font-size:13.5px;color:var(--navy);
}
.field .req{color:var(--orange-dark);}
.field .hint{font-size:12.5px;color:var(--muted);}
.field input,
.field select,
.field textarea{
  font-family:'Inter',sans-serif;font-size:15px;color:var(--ink);
  border:1px solid var(--border);border-radius:var(--radius-sm);
  padding:12px 14px;background:var(--white);
  transition:border-color 180ms var(--ease), box-shadow 180ms var(--ease);
  width:100%;
}
.field input:focus,
.field select:focus,
.field textarea:focus{
  outline:none;border-color:var(--navy);box-shadow:0 0 0 3px rgba(11,31,59,.1);
}
.field textarea{resize:vertical;min-height:120px;}
.field.has-error input,
.field.has-error select,
.field.has-error textarea{border-color:#D14343;}
.field .error-msg{font-size:12.5px;color:#D14343;display:none;}
.field.has-error .error-msg{display:block;}
.field.shake{animation:field-shake 400ms var(--ease);}
@keyframes field-shake{
  0%,100%{transform:translateX(0);}
  20%{transform:translateX(-10px);}
  40%{transform:translateX(10px);}
  60%{transform:translateX(-10px);}
  80%{transform:translateX(10px);}
}
.form-status{
  margin-top:16px;padding:14px 16px;border-radius:var(--radius-sm);
  font-size:14px;display:none;
}
.form-status.visible{display:block;}
.form-status.success{background:rgba(14,124,123,.1);color:#0E7C7B;}
.form-status.error{background:rgba(209,67,67,.1);color:#D14343;}

.offices-col{display:flex;flex-direction:column;gap:20px;}
.office-card{
  border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--white);
}
.office-map{
  height:120px;position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.office-map svg{width:28px;height:28px;color:#fff;position:relative;z-index:1;}
.office-body{padding:24px;}
.office-flag{
  font-family:'Space Grotesk',sans-serif;font-size:11.5px;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:var(--orange-dark);margin-bottom:8px;display:block;
}
.office-body h3{font-size:19px;margin-bottom:10px;}
.office-body address{font-style:normal;color:var(--muted);font-size:14.5px;line-height:1.7;margin-bottom:12px;}
.office-body .office-contact{display:flex;flex-direction:column;gap:4px;font-size:14px;}
.office-body .office-contact a{color:var(--navy);font-weight:600;transition:color 180ms var(--ease);}
.office-body .office-contact a:hover{color:var(--orange-dark);}

/* =========================================================
   FOOTER
   ========================================================= */
footer{background:var(--navy);color:rgba(255,255,255,.7);padding:72px 0 32px;margin-top:104px;}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;padding-bottom:56px;border-bottom:1px solid rgba(255,255,255,.12);}
.footer-brand .logo-mark{height:30px;margin-bottom:18px;filter:brightness(0) invert(1);}
.footer-brand p{font-size:14px;max-width:280px;color:rgba(255,255,255,.55);}
.footer-col h4{font-family:'Space Grotesk',sans-serif;color:#fff;font-size:14px;margin-bottom:18px;letter-spacing:.04em;text-transform:uppercase;}
.footer-col ul{display:flex;flex-direction:column;gap:12px;}
.footer-col a{font-size:14.5px;color:rgba(255,255,255,.65);transition:color 180ms var(--ease);}
.footer-col a:hover{color:var(--orange);}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:28px;font-size:13px;flex-wrap:wrap;gap:12px;}
.social-row{display:flex;gap:14px;}
.social-row a{
  width:36px;height:36px;border-radius:50%;border:1px solid rgba(255,255,255,.18);
  display:flex;align-items:center;justify-content:center;transition:border-color 180ms var(--ease), background 180ms var(--ease), transform 180ms var(--ease);
}
.social-row a:hover{border-color:var(--orange);background:rgba(255,107,74,.12);transform:translateY(-3px);}
.social-row svg{width:16px;height:16px;color:#fff;}

@media (max-width:960px){.footer-grid{grid-template-columns:1fr 1fr;row-gap:36px;}}
@media (max-width:640px){
  .footer-grid{grid-template-columns:1fr;}
  .footer-bottom{flex-direction:column;align-items:flex-start;}
  .section{padding:72px 0;}
}

/* =========================================================
   SCROLL-REVEAL (progressive enhancement — native CSS + IntersectionObserver)
   Content is visible by default. `js-reveal` is added to <html> by
   main.js itself — a same-origin file with no CDN/library dependency,
   so it can't be delayed by a slow third party — the instant it runs,
   so nothing is ever hidden from no-JS visitors, crawlers, or if JS
   is blocked entirely. Once
   `js-reveal` is present, main.js's IntersectionObserver adds
   `is-visible` to each element/group as it scrolls into view; the
   end state lives entirely in these two CSS classes, so there's no
   JS animation object that can stall or get stuck mid-tween.
   ========================================================= */
.js-reveal [data-reveal],
.js-reveal [data-reveal-group] > *{
  opacity:0;
  transform:translateY(24px);
  transition:opacity 600ms var(--ease), transform 600ms var(--ease);
}
.js-reveal [data-reveal].is-visible,
.js-reveal [data-reveal-group].is-visible > *{
  opacity:1;
  transform:translateY(0);
}
.js-reveal [data-reveal-group] > *{transition-delay:calc(var(--reveal-i, 0) * 70ms);}
