/* Commercial Laser Solutions - shared stylesheet */
:root{
  --bg:#1a1816;
  --surface:#232019;
  --surface-2:#2c2820;
  --border:#3d3729;
  --field-border:#7a6f5b;      /* 3.6:1 against bg - WCAG 1.4.11 */
  --text:#f3ede2;
  --text-dim:#b3a996;          /* 7.6:1 */
  --placeholder:#9a907e;       /* 5.6:1 */
  --accent:#f47006;            /* 6.0:1 */
  --accent-2:#ffb066;
  --accent-soft:rgba(244,112,6,.14);
  --error:#ff8a73;             /* 7.4:1 */
  --radius:3px;
  --wrap:1180px;
  --header-h:64px;
  --ease:cubic-bezier(.2,.7,.2,1);
  color-scheme:dark;
}

*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; scroll-padding-top:calc(var(--header-h) + 16px); }
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:'IBM Plex Sans', ui-sans-serif, system-ui, -apple-system, sans-serif;
  font-size:16px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
}
h1,h2,h3,h4{
  font-family:'Rajdhani','IBM Plex Sans',sans-serif;
  font-weight:700;
  line-height:1.05;
  text-transform:uppercase;
  letter-spacing:.01em;
  text-wrap:balance;
  margin:0;
  color:var(--text);
}
p{ margin:0; color:var(--text-dim); }
a{ color:inherit; }
img{ max-width:100%; display:block; }
.mono{ font-family:'IBM Plex Mono', ui-monospace, monospace; letter-spacing:.06em; }
.wrap{ max-width:var(--wrap); margin:0 auto; padding:0 28px; }
@media (max-width:560px){ .wrap{ padding:0 18px; } }
section{ padding:96px 0; position:relative; }
@media (max-width:700px){ section{ padding:68px 0; } }
.sr-only{ position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.skip-link{ position:absolute; left:12px; top:-60px; z-index:200; background:var(--accent); color:#1a1210; padding:10px 14px; text-decoration:none; font-weight:600; border-radius:var(--radius); }
.skip-link:focus{ top:12px; }

.eyebrow{
  font-family:'IBM Plex Mono', monospace;
  font-size:12.5px; letter-spacing:.16em; text-transform:uppercase;
  color:var(--accent);
  display:flex; align-items:center; gap:10px;
  margin-bottom:18px;
}
.eyebrow::before{ content:""; width:22px; height:1px; background:var(--accent); display:inline-block; transform-origin:left; }

/* ---------- Buttons ---------- */
.btn{
  position:relative; overflow:hidden;
  display:inline-flex; align-items:center; gap:9px;
  font-family:'IBM Plex Mono', monospace;
  font-size:13.5px; letter-spacing:.05em; text-transform:uppercase; text-decoration:none;
  padding:14px 24px;
  border-radius:var(--radius);
  border:1px solid transparent;
  cursor:pointer;
  transition:background .2s ease, border-color .2s ease, color .2s ease, box-shadow .25s ease;
  white-space:nowrap;
  will-change:transform;
}
.btn-primary{ background:var(--accent); color:#1a1210; border-color:var(--accent); font-weight:500; }
.btn-primary:hover{ background:var(--accent-2); border-color:var(--accent-2); box-shadow:0 8px 28px -8px rgba(244,112,6,.6); }
/* shine sweep on hover */
.btn-primary::after{
  content:""; position:absolute; top:0; bottom:0; left:-60%; width:40%;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.45), transparent);
  transform:skewX(-20deg); transition:left .6s var(--ease); pointer-events:none;
}
.btn-primary:hover::after{ left:130%; }
.btn-ghost{ background:transparent; color:var(--text); border-color:var(--field-border); }
.btn-ghost:hover{ border-color:var(--accent); color:var(--accent-2); }
.btn:active{ scale:.97; }
.btn[disabled]{ opacity:.7; cursor:progress; }
.btn:focus-visible, a:focus-visible, button:focus-visible, summary:focus-visible{ outline:2px solid var(--accent); outline-offset:3px; }

/* ---------- Scroll progress ---------- */
.scroll-progress{
  position:fixed; top:0; left:0; right:0; height:3px; z-index:120;
  background:linear-gradient(90deg, var(--accent), var(--accent-2));
  transform-origin:0 50%; transform:scaleX(0);
  box-shadow:0 0 12px rgba(244,112,6,.7);
  pointer-events:none;
}

/* ---------- Header / animated nav ---------- */
header.site-header{
  position:sticky; top:0; z-index:60;
  background:rgba(26,24,22,.72);
  backdrop-filter:blur(10px); -webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid transparent;
  transition:transform .35s var(--ease), background .3s ease, border-color .3s ease;
}
header.site-header.scrolled{ background:rgba(26,24,22,.94); border-bottom-color:var(--border); }
header.site-header.hide{ transform:translateY(-100%); }
nav.wrap{
  display:flex; align-items:center; justify-content:space-between; gap:24px;
  padding-top:16px; padding-bottom:16px;
  transition:padding .3s ease;
}
.scrolled nav.wrap{ padding-top:10px; padding-bottom:10px; }
.logo-link{ display:block; }
.logo-mark{ height:30px; width:auto; }
.nav-links{
  display:flex; gap:28px; list-style:none; margin:0; padding:0;
  font-family:'IBM Plex Mono', monospace; font-size:12.5px; letter-spacing:.06em; text-transform:uppercase;
}
.nav-links a{ position:relative; text-decoration:none; color:var(--text-dim); transition:color .2s ease; padding:6px 0; white-space:nowrap; }
.nav-links a::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:1px; background:var(--accent);
  transform:scaleX(0); transform-origin:right; transition:transform .35s var(--ease);
}
.nav-links a:hover, .nav-links a.active{ color:var(--text); }
.nav-links a:hover::after, .nav-links a.active::after{ transform:scaleX(1); transform-origin:left; }
.nav-right{ display:flex; align-items:center; gap:20px; }
.nav-phone{ font-family:'IBM Plex Mono', monospace; font-size:13.5px; text-decoration:none; color:var(--text); display:none; }
.nav-phone:hover{ color:var(--accent-2); }
@media (min-width:1180px){ .nav-phone{ display:inline; } }
/* seven tabs: tighten the menu on laptop widths so it stays on one line */
@media (min-width:900px) and (max-width:1179px){
  nav.wrap{ gap:18px; }
  .nav-links{ gap:18px; font-size:11.5px; letter-spacing:.04em; }
}

.menu-toggle{
  display:none; width:44px; height:44px; background:none; border:1px solid var(--field-border);
  border-radius:var(--radius); cursor:pointer; position:relative; padding:0;
}
.menu-toggle span{
  position:absolute; left:11px; right:11px; height:2px; background:var(--text);
  transition:transform .35s var(--ease), opacity .2s ease, top .35s var(--ease);
}
.menu-toggle span:nth-child(1){ top:15px; }
.menu-toggle span:nth-child(2){ top:21px; }
.menu-toggle span:nth-child(3){ top:27px; }
.menu-open .menu-toggle span:nth-child(1){ top:21px; transform:rotate(45deg); }
.menu-open .menu-toggle span:nth-child(2){ opacity:0; transform:scaleX(0); }
.menu-open .menu-toggle span:nth-child(3){ top:21px; transform:rotate(-45deg); }

@media (max-width:899px){
  .nav-links{ display:none; }
  .menu-toggle{ display:block; }
  .nav-right .btn{ padding:11px 14px; font-size:12px; }
}
@media (max-width:359px){ .nav-right .btn{ display:none; } }
@media (max-width:420px){ .logo-mark{ height:26px; } .nav-right{ gap:10px; } }

.mobile-menu{
  position:fixed; inset:0; z-index:55;
  background:var(--bg);
  display:flex; flex-direction:column; justify-content:center;
  padding:90px 28px 40px;
  clip-path:circle(0 at calc(100% - 44px) 36px);
  visibility:hidden;
  transition:clip-path .6s var(--ease), visibility 0s linear .6s;
}
.menu-open .mobile-menu{ clip-path:circle(150% at calc(100% - 44px) 36px); visibility:visible; transition:clip-path .6s var(--ease); }
.mobile-menu ul{ list-style:none; margin:0; padding:0; }
.mobile-menu li{ overflow:hidden; border-bottom:1px solid var(--border); }
.mobile-menu a{
  display:flex; justify-content:space-between; align-items:center;
  padding:16px 0; text-decoration:none;
  font-family:'Rajdhani', sans-serif; font-weight:700; font-size:34px; text-transform:uppercase; color:var(--text);
  transform:translateY(105%); transition:transform .5s var(--ease), color .2s ease;
}
.mobile-menu a span{ font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--accent); font-weight:400; }
.menu-open .mobile-menu a{ transform:none; }
.menu-open .mobile-menu li:nth-child(1) a{ transition-delay:.12s; }
.menu-open .mobile-menu li:nth-child(2) a{ transition-delay:.17s; }
.menu-open .mobile-menu li:nth-child(3) a{ transition-delay:.22s; }
.menu-open .mobile-menu li:nth-child(4) a{ transition-delay:.27s; }
.menu-open .mobile-menu li:nth-child(5) a{ transition-delay:.32s; }
.menu-open .mobile-menu li:nth-child(6) a{ transition-delay:.37s; }
.menu-open .mobile-menu li:nth-child(7) a{ transition-delay:.42s; }
.mobile-menu .mobile-menu-foot{ margin-top:32px; display:flex; flex-direction:column; gap:12px; opacity:0; transform:translateY(12px); transition:opacity .4s ease .4s, transform .4s var(--ease) .4s; }
.menu-open .mobile-menu .mobile-menu-foot{ opacity:1; transform:none; }
.mobile-menu-foot .btn{ justify-content:center; }
body.menu-open{ overflow:hidden; }

/* ---------- Hero ---------- */
.hero{
  position:relative; isolation:isolate; overflow:hidden;
  padding:76px 0 90px;
  border-bottom:1px solid var(--border);
  background:var(--bg);
}
.hero-bg{
  position:absolute; inset:-12% 0 -12% 0; z-index:-2;
  will-change:transform;
}
/* auto-playing before/after: graffiti -> laser sweep -> clean -> repeat */
@property --hp{ syntax:'<percentage>'; initial-value:0%; inherits:true; }
.hero-before, .hero-after{
  position:absolute; inset:0;
  background:url('../images/hero-graffiti-1400.webp') center 60%/cover no-repeat;
}
.hero-after{
  background-image:url('../images/hero-clean-1400.webp');
  clip-path:inset(0 calc(100% - var(--hp)) 0 0);
}
.hero-bg::after{
  content:""; position:absolute; inset:0; z-index:2;
  background:
    radial-gradient(ellipse 900px 500px at 85% -10%, var(--accent-soft), transparent 60%),
    linear-gradient(100deg, rgba(20,18,16,.93) 0%, rgba(20,18,16,.8) 30%, rgba(20,18,16,.3) 55%, rgba(20,18,16,.35) 75%, rgba(20,18,16,.6) 100%);
}
/* laser beam, sparks, paint flecks and smoke (drawn by js/site.js) sit above the shade */
.hero-laser{ position:absolute; inset:0; z-index:3; width:100%; height:100%; pointer-events:none; }
.hero-bg.resetting .hero-after{ opacity:0; transition:opacity .9s var(--ease); }
.hero-tags{ position:absolute; right:28px; bottom:22px; z-index:4; display:flex; gap:8px; }
.hero-tag{
  font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  padding:5px 9px; border-radius:2px; background:rgba(20,18,16,.8); color:var(--text-dim); border:1px solid var(--border);
  transition:color .3s ease, background .3s ease, border-color .3s ease;
}
.hero-tag.on{ color:#1a1210; background:var(--accent); border-color:var(--accent); }
@media (max-width:800px){
  .hero-before{ background-image:url('../images/hero-graffiti-800.webp'); }
  .hero-after{ background-image:url('../images/hero-clean-800.webp'); }
  .hero-bg::after{ background:
    radial-gradient(ellipse 600px 400px at 85% -10%, var(--accent-soft), transparent 60%),
    linear-gradient(180deg, rgba(20,18,16,.72) 0%, rgba(20,18,16,.8) 30%, rgba(20,18,16,.88) 55%, rgba(20,18,16,.94) 75%); }
  .hero-tags{ display:none; }
}

/* "removed." gets a one-off laser strike-through as the headline lands */
.hero h1 .burn{ position:relative; display:inline-block; }
.hero h1 .burn::after{
  content:""; position:absolute; left:-2%; right:-2%; top:52%; height:4px; pointer-events:none;
  background:linear-gradient(90deg, var(--accent-2), #fff, var(--accent));
  box-shadow:0 0 14px var(--accent), 0 0 32px rgba(244,112,6,.7);
  transform-origin:left; transform:scaleX(0); opacity:0;
}
.hero h1.in .burn::after{ animation:burn 1.1s .45s var(--ease) forwards; }
@keyframes burn{ 0%{ transform:scaleX(0); opacity:1; } 70%{ transform:scaleX(1); opacity:1; } 100%{ transform:scaleX(1); opacity:0; } }
.hero-sub strong{ color:var(--text); font-weight:500; }

/* live removal readout, driven by the hero laser */
.hero-readout{
  margin-top:36px; display:inline-grid; grid-template-columns:auto 1fr; gap:4px 18px; align-items:center;
  padding:14px 18px; min-width:min(100%,420px);
  border:1px solid var(--border); border-radius:var(--radius); background:rgba(26,24,22,.75); backdrop-filter:blur(6px);
}
.ro-live{ grid-row:span 2; display:flex; align-items:center; gap:8px; font-family:'IBM Plex Mono',monospace; font-size:11px; font-weight:500; letter-spacing:.14em; text-transform:uppercase; color:var(--accent-2); }
.ro-live i{ width:8px; height:8px; border-radius:50%; background:var(--accent); box-shadow:0 0 10px var(--accent); animation:blink 1s steps(2) infinite; }
.hero-readout.done .ro-live i{ animation:none; background:#7fd68a; box-shadow:0 0 10px #7fd68a; }
.ro-line{ display:flex; justify-content:space-between; gap:12px; font-family:'IBM Plex Mono',monospace; font-size:13px; color:var(--text-dim); }
.ro-line b{ color:var(--text); font-weight:500; font-variant-numeric:tabular-nums; }
.ro-bar{ grid-column:2; height:3px; background:var(--surface-2); border-radius:2px; overflow:hidden; }
.ro-bar span{ display:block; height:100%; width:var(--p,0%); background:linear-gradient(90deg, var(--accent), var(--accent-2)); }
@keyframes blink{ 50%{ opacity:.25; } }
.hero-facts{ display:flex; flex-wrap:wrap; gap:8px 22px; margin:18px 0 0; padding:0; list-style:none; font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-dim); }
.hero-facts li::before{ content:"✕ "; color:var(--accent); }
/* the hero has its own vertical laser, so drop the horizontal scan line there */
.hero .hero-fx::after{ display:none; }
/* animated background: laser scan line + drifting glow + grid */
.hero-fx{ position:absolute; inset:0; z-index:-1; pointer-events:none; overflow:hidden; }
.hero-fx::before{
  content:""; position:absolute; inset:0;
  background-image:linear-gradient(rgba(243,237,226,.035) 1px, transparent 1px), linear-gradient(90deg, rgba(243,237,226,.035) 1px, transparent 1px);
  background-size:48px 48px;
  mask-image:linear-gradient(180deg, transparent, #000 30%, #000 70%, transparent);
  animation:gridDrift 24s linear infinite;
}
.hero-fx::after{
  content:""; position:absolute; top:0; left:-10%; width:120%; height:100%;
  background:
    linear-gradient(90deg, transparent 10%, rgba(255,176,102,.95) 50%, transparent 90%) top/100% 2px no-repeat,
    radial-gradient(ellipse 50% 12px at 50% 1px, rgba(244,112,6,.45), transparent) top/100% 24px no-repeat;
  animation:scan 7s cubic-bezier(.45,0,.55,1) infinite;
  opacity:.7; will-change:transform;
}
.hero-glow{
  position:absolute; width:520px; height:520px; border-radius:50%; right:-120px; top:-160px;
  background:radial-gradient(circle, rgba(244,112,6,.22), transparent 65%);
  filter:blur(10px); animation:float 14s ease-in-out infinite alternate;
}
@keyframes scan{ 0%,100%{ transform:translateY(-2%); } 50%{ transform:translateY(100%); } }
@keyframes gridDrift{ to{ background-position:48px 48px, 48px 48px; } }
@keyframes float{ 0%{ transform:translate(0,0) scale(1); } 100%{ transform:translate(-140px,120px) scale(1.2); } }

.hero-grid{ display:grid; grid-template-columns:1.05fr .95fr; gap:56px; align-items:center; }
@media (max-width:920px){ .hero-grid{ grid-template-columns:1fr; gap:40px; } }
.hero h1{ font-size:clamp(40px,5.6vw,68px); max-width:11ch; }
.hero h1 em{ font-style:normal; color:var(--accent); }
.hero-sub{ margin-top:22px; max-width:46ch; font-size:17px; color:var(--text-dim); }
.hero-cta{ margin-top:34px; display:flex; flex-wrap:wrap; gap:14px; }

/* ---------- Lead card ---------- */
.lead-card{
  position:relative;
  background:rgba(26,24,22,.88);
  backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  border:1px solid var(--border);
  border-radius:var(--radius);
  padding:28px 26px;
}
/* animated laser border */
.lead-card::before{
  content:""; position:absolute; inset:-1px; border-radius:inherit; padding:1px; pointer-events:none;
  background:conic-gradient(from var(--ang,0deg), transparent 0 70%, var(--accent) 85%, transparent 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  animation:spin 6s linear infinite;
}
@property --ang{ syntax:'<angle>'; initial-value:0deg; inherits:false; }
@keyframes spin{ to{ --ang:360deg; } }
.lead-card-head{ margin-bottom:18px; }
.lead-card-head h2{ font-size:21px; margin-bottom:6px; }
.lead-card-head p{ font-size:13.5px; }
.lead-card .contact-form{ gap:14px; }
.lead-card .btn{ width:100%; justify-content:center; }

/* ---------- Trust strip (marquee) ---------- */
.trust{ border-bottom:1px solid var(--border); background:var(--surface); overflow:hidden; }
.trust-track{ display:flex; width:max-content; animation:marquee 38s linear infinite; }
.trust:hover .trust-track{ animation-play-state:paused; }
.trust-set{ display:flex; gap:48px; padding:24px 24px; }
.trust-item{
  display:flex; align-items:center; gap:10px;
  font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--text-dim); white-space:nowrap;
}
.trust-item .dot{ width:6px; height:6px; border-radius:50%; background:var(--accent); flex:none; box-shadow:0 0 8px var(--accent); }
@keyframes marquee{ to{ transform:translateX(-50%); } }

/* ---------- Before / after scroll wipe ---------- */
.wipe{ padding:88px 0; border-bottom:1px solid var(--border); background:var(--bg); }
.wipe-sticky{ display:flex; flex-direction:column; gap:22px; }
.wipe-sticky > .wrap{ width:100%; }
.wipe-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:16px; flex-wrap:wrap; }
.wipe-head h2{ font-size:clamp(28px,3.4vw,42px); }
.wipe-head .eyebrow{ margin-bottom:12px; }
.wipe-readout{ font-size:13px; color:var(--text-dim); text-transform:uppercase; letter-spacing:.08em; }
.wipe-pct{ display:inline-block; min-width:3ch; text-align:right; font-family:'Rajdhani',sans-serif; font-weight:700; font-size:30px; color:var(--accent); vertical-align:-3px; }
.wipe-frame{
  --p:50%;
  position:relative; width:100%;
  aspect-ratio:16/9; margin:0 auto; overflow:hidden;
  border:1px solid var(--border); border-radius:var(--radius); background:var(--surface);
  box-shadow:0 30px 80px -30px rgba(0,0,0,.8);
}
.js .wipe-frame{ --p:0%; }
.wipe-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.wipe-after{ clip-path:inset(0 calc(100% - var(--p)) 0 0); }
.wipe-laser{
  position:absolute; inset:0; z-index:3; pointer-events:none;
  transform:translateX(var(--p)); opacity:0; transition:opacity .3s ease; will-change:transform;
}
.wipe-laser::before{
  content:""; position:absolute; top:0; bottom:0; left:-1.5px; width:3px;
  background:linear-gradient(180deg, rgba(255,210,160,.2), #fff3e0 20%, #ffd2a0 50%, #fff3e0 80%, rgba(255,210,160,.2));
  box-shadow:0 0 6px 2px rgba(255,176,102,.9), 0 0 24px 8px rgba(244,112,6,.55), 0 0 60px 20px rgba(244,112,6,.25);
}
.wipe-laser .wipe-sparks{ left:0; }
.wipe-frame.active .wipe-laser{ opacity:1; animation:laserFlicker .12s steps(2) infinite; }
@keyframes laserFlicker{ 50%{ filter:brightness(1.25); } }
/* sparks + vapour at the laser edge */
.wipe-sparks{ position:absolute; left:0; top:0; bottom:0; width:60px; pointer-events:none; }
.wipe-sparks::before, .wipe-sparks::after{
  content:""; position:absolute; inset:0 -30px 0 0;
  background-image:
    radial-gradient(circle, #fff 0 1.2px, transparent 2px),
    radial-gradient(circle, #ffb066 0 1.4px, transparent 2.2px),
    radial-gradient(circle, #f47006 0 1px, transparent 1.8px);
  background-size:22px 38px, 30px 54px, 18px 30px;
  animation:sparks .5s linear infinite;
  mask-image:linear-gradient(90deg, #000, transparent);
  -webkit-mask-image:linear-gradient(90deg, #000, transparent);
}
.wipe-sparks::after{ background-size:26px 44px, 20px 36px, 34px 60px; animation-duration:.7s; animation-direction:reverse; opacity:.7; }
@keyframes sparks{ to{ background-position:14px 38px, -10px 54px, 8px -30px; } }
.wipe-frame:not(.active) .wipe-sparks{ display:none; }
.wipe-tag{
  position:absolute; top:16px; z-index:4; font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  padding:6px 10px; border-radius:2px; background:rgba(20,18,16,.8); color:var(--text);
  border:1px solid var(--border); transition:opacity .3s ease;
}
.wipe-tag-before{ right:16px; }
.wipe-tag-after{ left:16px; color:#1a1210; background:var(--accent); border-color:var(--accent); opacity:0; }
.wipe-frame.show-after .wipe-tag-after{ opacity:1; }
.wipe-frame.done .wipe-tag-before{ opacity:0; }
.wipe-note{ margin-top:14px; font-size:14px; max-width:60ch; }
@media (max-width:700px){
  .wipe{ padding:64px 0; }
  .wipe-frame{ aspect-ratio:4/3; }
  .wipe-pct{ font-size:24px; }
  .wipe-note{ font-size:13px; }
}

/* drag handle + invisible range input for comparing */
.wipe-handle{
  position:absolute; top:50%; left:0; z-index:5; width:46px; height:46px; margin:-23px 0 0 -23px;
  border-radius:50%; background:var(--accent); color:#1a1210; display:grid; place-items:center;
  box-shadow:0 0 0 4px rgba(244,112,6,.25), 0 8px 24px rgba(0,0,0,.5);
  opacity:0; transform:scale(.6); transition:opacity .3s ease, transform .3s var(--ease); pointer-events:none;
}
.wipe-handle svg{ width:22px; height:22px; }
.wipe-frame.interactive .wipe-handle{ opacity:1; transform:none; }
.wipe-frame.interactive .wipe-laser{ opacity:1; }
.wipe-frame.interactive .wipe-sparks{ display:none; }
.wipe-range{
  position:absolute; inset:0; z-index:6; width:100%; height:100%; margin:0; opacity:0;
  cursor:ew-resize; touch-action:pan-y; -webkit-appearance:none; appearance:none;
}
.wipe-frame:not(.interactive) .wipe-range{ pointer-events:none; }
.wipe-range:focus-visible + *, .wipe-frame:has(.wipe-range:focus-visible){ outline:2px solid var(--accent); outline-offset:3px; }
.wipe-hint{ color:var(--accent-2); }

/* ---------- Section heads ---------- */
.section-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:48px; flex-wrap:wrap; }
.section-head h2{ font-size:clamp(30px,3.4vw,42px); max-width:16ch; }
.section-head .lede{ max-width:38ch; font-size:15px; }

/* ---------- Services ---------- */
.services-grid{
  display:grid; grid-template-columns:repeat(4,1fr); grid-auto-rows:minmax(200px,auto); gap:1px;
  background:var(--border); border:1px solid var(--border);
}
.services-grid .span2{ grid-column:span 2; }
@media (max-width:920px){ .services-grid{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){
  .services-grid{ grid-template-columns:1fr; grid-auto-rows:auto; }
  .services-grid .span2{ grid-column:span 1; }
}
.service-card{
  background:var(--surface); padding:26px;
  display:flex; flex-direction:column; justify-content:flex-end; gap:10px;
  position:relative; overflow:hidden; isolation:isolate;
  transition:background .2s ease;
  min-height:200px;
}
.service-card > *:not(.card-photo){ position:relative; z-index:2; }
.card-photo{
  position:absolute; inset:-8% 0; width:100%; height:116%; object-fit:cover; z-index:0;
  filter:saturate(.8) contrast(1.05) brightness(.9);
  transition:filter .5s ease, scale .8s var(--ease);
}
.service-card:hover .card-photo{ scale:1.06; filter:saturate(1) contrast(1.05) brightness(.85); }
.service-card.has-photo::after{
  content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, rgba(26,24,22,.1) 0%, rgba(26,24,22,.35) 35%, rgba(26,24,22,.88) 70%, rgba(26,24,22,.97) 100%);
}
/* laser sweep on hover */
.service-card::before{
  content:""; position:absolute; top:0; bottom:0; width:2px; left:-4px; z-index:3;
  background:var(--accent-2); box-shadow:0 0 16px 4px rgba(244,112,6,.7);
  opacity:0; transition:none;
}
.service-card:hover::before{ animation:sweep .9s var(--ease) forwards; }
@keyframes sweep{ 0%{ left:-4px; opacity:1; } 90%{ opacity:1; } 100%{ left:100%; opacity:0; } }
.service-card p{ color:#d3cabb; font-size:14px; }
.service-card.featured{ grid-column:span 2; grid-row:span 2; }
.service-card.featured .service-tag{ position:absolute; top:26px; left:26px; }
@media (max-width:560px){ .service-card.featured{ grid-column:span 1; grid-row:span 1; min-height:300px; } }
.service-num{ font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--accent-2); }
.service-card h3{ font-size:19px; text-transform:none; letter-spacing:0; }
.service-card.featured h3{ font-size:28px; }
.service-cta{ text-decoration:none; background:var(--surface-2); justify-content:space-between; }
.service-cta:hover{ background:var(--surface); }
.service-cta h3{ color:var(--accent-2); }
.service-cta p{ color:var(--text-dim); }
.photo-credit{ margin-top:18px; font-size:11.5px; color:var(--text-dim); letter-spacing:.03em; }
.service-tag{
  align-self:flex-start;
  font-family:'IBM Plex Mono',monospace; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase;
  color:#1a1210; background:var(--accent); padding:4px 9px; border-radius:2px;
}

/* ---------- Process ---------- */
.process{ background:var(--surface); border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
.process-steps{ display:grid; grid-template-columns:repeat(4,1fr); position:relative; }
@media (max-width:820px){ .process-steps{ grid-template-columns:1fr; gap:34px; } }
.process-steps::before{ content:""; position:absolute; top:13px; left:0; right:0; height:1px; background:var(--border); }
.process-steps::after{
  content:""; position:absolute; top:13px; left:0; right:0; height:1px; background:var(--accent);
  box-shadow:0 0 8px var(--accent);
  transform:scaleX(0); transform-origin:left; transition:transform 1.6s var(--ease) .2s;
}
.process-steps.in::after{ transform:scaleX(1); }
@media (max-width:820px){ .process-steps::before, .process-steps::after{ display:none; } }
.step{ padding-right:24px; position:relative; }
.step .step-num{
  width:26px; height:26px; border-radius:50%;
  background:var(--bg); border:1px solid var(--accent); color:var(--accent);
  display:flex; align-items:center; justify-content:center;
  font-family:'IBM Plex Mono',monospace; font-size:12px;
  position:relative; z-index:1; margin-bottom:20px;
  transition:background .3s ease, color .3s ease;
}
.step:hover .step-num{ background:var(--accent); color:#1a1210; }
.step h3{ font-size:17px; text-transform:none; letter-spacing:0; margin-bottom:8px; }
.step p{ font-size:14px; }
.physics-note{
  margin-top:56px; padding:26px 28px;
  border:1px solid var(--border); border-left:3px solid var(--accent); background:var(--bg);
  display:grid; grid-template-columns:1fr 2fr; gap:24px;
}
@media (max-width:700px){ .physics-note{ grid-template-columns:1fr; } }
.physics-note .mono{ font-size:12px; color:var(--accent-2); }
.physics-note p{ font-size:14.5px; }

/* ---------- Table ---------- */
.table-hint{ display:none; align-items:center; gap:6px; font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--accent-2); margin-bottom:10px; }
.table-scroll{ position:relative; }
.table-wrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--border); }
.table-scroll::after{ content:""; position:absolute; top:0; right:0; bottom:0; width:36px; background:linear-gradient(to right, transparent, var(--bg)); pointer-events:none; }
table{ width:100%; border-collapse:collapse; min-width:640px; font-size:14.5px; }
th,td{ text-align:left; padding:16px 20px; border-bottom:1px solid var(--border); }
thead th{ font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-dim); background:var(--surface); font-weight:400; }
thead th.hl{ color:var(--accent); }
tbody th{ font-weight:500; color:var(--text); white-space:nowrap; }
td{ color:var(--text-dim); }
td.good{ color:var(--accent-2); }
tbody tr{ transition:background .2s ease; }
tbody tr:hover{ background:rgba(244,112,6,.06); }
tbody tr:last-child td, tbody tr:last-child th{ border-bottom:none; }
@media (max-width:700px){ .table-hint{ display:flex; } table{ min-width:560px; font-size:13.5px; } th,td{ padding:13px 14px; } }

/* ---------- About ---------- */
.about-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:64px; }
@media (max-width:860px){ .about-grid{ grid-template-columns:1fr; gap:40px; } }
.about-grid p{ font-size:15.5px; margin-bottom:16px; max-width:56ch; }
.about-grid p:last-child{ margin-bottom:0; }
.area-card{ border:1px solid var(--border); padding:28px; background:var(--surface); transition:border-color .3s ease, transform .4s var(--ease); }
.area-card:hover{ border-color:var(--accent); }
.area-card h3{ font-family:'IBM Plex Mono',monospace; font-weight:400; letter-spacing:.06em; color:var(--accent); font-size:12px; margin-bottom:14px; }
.area-list{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:10px 18px; font-size:14px; color:var(--text-dim); }
.area-list li::before{ content:"· "; color:var(--accent); }

/* ---------- FAQ ---------- */
.faq{ background:var(--surface); border-top:1px solid var(--border); }
.faq-grid{ display:grid; grid-template-columns:.8fr 1.2fr; gap:56px; align-items:start; }
@media (max-width:860px){ .faq-grid{ grid-template-columns:1fr; gap:32px; } }
.faq-grid h2{ font-size:clamp(30px,3.4vw,42px); margin-bottom:16px; }
.faq-list{ border-top:1px solid var(--border); }
.faq-item{ border-bottom:1px solid var(--border); }
.faq-item summary{
  list-style:none; cursor:pointer;
  display:flex; justify-content:space-between; align-items:center; gap:18px;
  padding:22px 0; font-weight:500; font-size:16.5px; color:var(--text);
  transition:color .2s ease;
}
.faq-item summary::-webkit-details-marker{ display:none; }
.faq-item summary:hover{ color:var(--accent-2); }
.faq-icon{ flex:none; width:28px; height:28px; border:1px solid var(--field-border); border-radius:50%; position:relative; transition:transform .4s var(--ease), border-color .3s ease, background .3s ease; }
.faq-icon::before, .faq-icon::after{ content:""; position:absolute; left:50%; top:50%; width:11px; height:1.5px; background:var(--accent); translate:-50% -50%; transition:rotate .4s var(--ease); }
.faq-icon::after{ rotate:90deg; }
.faq-item[open] .faq-icon{ transform:rotate(180deg); border-color:var(--accent); background:var(--accent-soft); }
.faq-item[open] .faq-icon::after{ rotate:0deg; }
.faq-body{ overflow:hidden; }
.faq-body p{ padding:0 44px 22px 0; font-size:15px; }

/* ---------- Contact ---------- */
.contact{ background:var(--bg); border-top:1px solid var(--border); overflow:hidden; isolation:isolate; }
.contact::before{
  content:""; position:absolute; inset:-30%; z-index:-1;
  background:
    radial-gradient(circle at 20% 30%, rgba(244,112,6,.16), transparent 35%),
    radial-gradient(circle at 80% 70%, rgba(255,176,102,.08), transparent 35%);
  animation:aurora 18s ease-in-out infinite alternate;
}
@keyframes aurora{ 0%{ transform:translate(0,0) rotate(0deg); } 100%{ transform:translate(6%,-4%) rotate(12deg); } }
.contact-grid{ display:grid; grid-template-columns:1.1fr .9fr; gap:56px; align-items:start; }
.contact-grid > div{ min-width:0; }
@media (max-width:860px){ .contact-grid{ grid-template-columns:1fr; } }
.contact h2{ font-size:clamp(30px,3.6vw,44px); max-width:14ch; margin-bottom:18px; }
.contact-card{ border:1px solid var(--border); background:var(--surface); padding:32px; }
.contact-row{ display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:6px 16px; padding:16px 0; border-bottom:1px solid var(--border); min-width:0; }
.contact-row:first-child{ padding-top:0; }
.contact-row:last-child{ border-bottom:none; padding-bottom:0; }
.contact-row .lbl{ font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-dim); }
.contact-row .val{ text-align:right; color:var(--text); text-decoration:none; font-size:15px; overflow-wrap:anywhere; min-width:0; font-style:normal; }
.contact-row a.val:hover{ color:var(--accent-2); }

/* ---------- Forms ---------- */
.contact-form{ display:flex; flex-direction:column; gap:16px; min-width:0; }
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:16px; min-width:0; }
@media (max-width:480px){ .form-grid{ grid-template-columns:1fr; } }
.field{ display:flex; flex-direction:column; gap:8px; min-width:0; }
.field-lbl{ font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-dim); }
.field-lbl .req{ color:var(--accent-2); }
.field-lbl .opt{ text-transform:none; letter-spacing:0; }
.contact-form input, .contact-form textarea{
  width:100%; min-width:0;
  font-family:'IBM Plex Sans',sans-serif; font-size:16px; /* 16px stops iOS zoom */
  color:var(--text); background:var(--bg);
  border:1px solid var(--field-border); border-radius:var(--radius);
  padding:11px 13px; resize:vertical;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.contact-form input::placeholder, .contact-form textarea::placeholder{ color:var(--placeholder); opacity:1; }
.contact-form input:focus, .contact-form textarea:focus{ outline:none; border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft); }
.contact-form [aria-invalid="true"]{ border-color:var(--error); }
.field-error{ font-size:13px; color:var(--error); min-height:0; }
.field-error:empty{ display:none; }
.form-note{ font-size:12.5px; color:var(--text-dim); }
.form-note a{ color:var(--accent-2); }
.contact-form .btn{ align-self:flex-start; }
.hp-field{ position:absolute!important; left:-10000px; width:1px; height:1px; overflow:hidden; }

/* ---------- Footer ---------- */
footer.site-footer{ border-top:1px solid var(--border); padding:44px 0 34px; }
.footer-grid{ display:flex; justify-content:space-between; align-items:center; gap:20px; flex-wrap:wrap; }
.footer-grid .mono{ font-size:12px; color:var(--text-dim); }
.footer-links{ display:flex; flex-wrap:wrap; gap:10px 22px; list-style:none; margin:0; padding:0; font-family:'IBM Plex Mono',monospace; font-size:12px; text-transform:uppercase; letter-spacing:.05em; }
.footer-links a, .footer-links button{ text-decoration:none; color:var(--text-dim); background:none; border:0; padding:0; font:inherit; letter-spacing:inherit; text-transform:inherit; cursor:pointer; }
.footer-links a:hover, .footer-links button:hover{ color:var(--accent-2); }
.footer-legal{ margin-top:22px; padding-top:18px; border-top:1px solid var(--border); display:flex; justify-content:space-between; gap:12px 24px; flex-wrap:wrap; }

/* ---------- Floating contact buttons ---------- */
.fab{
  position:fixed; right:20px; bottom:20px; z-index:70;
  display:flex; gap:10px; align-items:center;
  transform:translateY(140%); opacity:0;
  transition:transform .5s var(--ease), opacity .3s ease;
  pointer-events:none;
}
.fab.show{ transform:none; opacity:1; pointer-events:auto; }
.fab-call{
  width:52px; height:52px; border-radius:50%;
  display:grid; place-items:center;
  background:var(--surface-2); border:1px solid var(--field-border); color:var(--text);
  box-shadow:0 10px 30px -10px rgba(0,0,0,.8);
  transition:border-color .2s ease, color .2s ease;
}
.fab-call:hover{ border-color:var(--accent); color:var(--accent-2); }
.fab-call svg{ width:22px; height:22px; }
.fab-call::after{ content:""; position:absolute; width:52px; height:52px; border-radius:50%; border:1px solid var(--accent); animation:ping 2.4s var(--ease) infinite; pointer-events:none; }
@keyframes ping{ 0%{ transform:scale(1); opacity:.8; } 80%,100%{ transform:scale(1.6); opacity:0; } }
.fab .btn{ box-shadow:0 10px 30px -10px rgba(244,112,6,.8); border-radius:40px; padding:15px 22px; }
@media (max-width:560px){
  .fab{ left:12px; right:12px; bottom:12px; }
  .fab .btn{ flex:1; justify-content:center; }
}

/* ---------- Cookie banner ---------- */
.cookie-banner{
  position:fixed; left:20px; bottom:20px; z-index:90; max-width:420px;
  background:var(--surface); border:1px solid var(--field-border); border-radius:var(--radius);
  padding:22px; box-shadow:0 20px 50px -12px rgba(0,0,0,.8);
  transform:translateY(30px); opacity:0; transition:transform .5s var(--ease), opacity .4s ease;
}
.cookie-banner.show{ transform:none; opacity:1; }
.cookie-banner[hidden]{ display:none; }
.cookie-banner h2{ font-size:17px; margin-bottom:8px; }
.cookie-banner p{ font-size:14px; margin-bottom:16px; }
.cookie-banner p a{ color:var(--accent-2); }
.cookie-actions{ display:flex; gap:10px; flex-wrap:wrap; }
.cookie-actions .btn{ padding:11px 18px; font-size:12.5px; }
@media (max-width:560px){ .cookie-banner{ left:12px; right:12px; bottom:12px; max-width:none; } }

/* ---------- Loading screen ---------- */
.loader{
  position:fixed; inset:0; z-index:500; background:var(--bg);
  display:grid; place-items:center;
  animation:loaderOut .45s ease .75s forwards;   /* auto-dismisses even without JS */
}
.loader-inner{ width:min(240px,60vw); }
.loader-inner img{ width:100%; height:auto; }
.loader-bar{ margin-top:18px; height:2px; background:var(--border); overflow:hidden; }
.loader-bar::after{ content:""; display:block; height:100%; background:var(--accent); box-shadow:0 0 10px var(--accent); transform-origin:left; animation:load .75s var(--ease) forwards; }
@keyframes load{ from{ transform:scaleX(0); } to{ transform:scaleX(1); } }
@keyframes loaderOut{ to{ opacity:0; visibility:hidden; } }
.no-loader .loader{ display:none; }

/* ---------- Custom cursor (fine pointers only) ---------- */
.cursor-dot, .cursor-ring{ position:fixed; top:0; left:0; z-index:1000; pointer-events:none; border-radius:50%; opacity:0; transition:opacity .3s ease; }
.cursor-dot{ width:6px; height:6px; margin:-3px 0 0 -3px; background:var(--accent); box-shadow:0 0 10px var(--accent); }
.cursor-ring{ width:36px; height:36px; margin:-18px 0 0 -18px; border:1px solid rgba(244,112,6,.7); transition:opacity .3s ease, width .25s var(--ease), height .25s var(--ease), margin .25s var(--ease), background .25s ease, border-color .25s ease; }
.has-cursor .cursor-dot, .has-cursor .cursor-ring{ opacity:1; }
.cursor-ring.hover{ width:64px; height:64px; margin:-32px 0 0 -32px; background:rgba(244,112,6,.1); border-color:var(--accent-2); }
.cursor-ring.down{ width:26px; height:26px; margin:-13px 0 0 -13px; }
@media (pointer:fine){
  .has-cursor, .has-cursor a, .has-cursor button, .has-cursor summary{ cursor:none; }
  .has-cursor input, .has-cursor textarea{ cursor:text; }
}

/* ---------- Scroll reveal & text reveal ---------- */
.js [data-reveal]{ opacity:0; transform:translateY(28px); transition:opacity .8s var(--ease), transform .8s var(--ease); transition-delay:var(--d,0s); }
.js [data-reveal="left"]{ transform:translateX(-32px); }
.js [data-reveal="right"]{ transform:translateX(32px); }
.js [data-reveal="scale"]{ transform:scale(.94); }
.js [data-reveal].in{ opacity:1; transform:none; }
.split-line{ display:block; clip-path:inset(-.05em -100vw -.12em -100vw); }
.split-word{ display:inline-block; transform:translateY(105%); transition:transform .9s var(--ease); transition-delay:var(--d,0s); }
.in .split-word, .split-word.in{ transform:none; }
.js .eyebrow::before{ transform:scaleX(0); transition:transform .8s var(--ease) .2s; }
.js .in .eyebrow::before, .js .eyebrow.in::before{ transform:scaleX(1); }
@media (max-width:700px){
  .js [data-reveal]{ transform:translateY(18px); }
  .js [data-reveal="left"], .js [data-reveal="right"]{ transform:translateY(18px); }
}

/* ---------- Page transitions ---------- */
@view-transition{ navigation:auto; }
::view-transition-old(root){ animation:vtOut .3s ease both; }
::view-transition-new(root){ animation:vtIn .45s var(--ease) both; }
@keyframes vtOut{ to{ opacity:0; transform:translateY(-12px); } }
@keyframes vtIn{ from{ opacity:0; transform:translateY(16px); } }
.page-fade{ animation:pageIn .5s var(--ease) both; }
@keyframes pageIn{ from{ opacity:0; transform:translateY(10px); } }
body.leaving main, body.leaving footer{ opacity:0; transform:translateY(-10px); transition:opacity .25s ease, transform .25s ease; }

/* ---------- Legal / simple pages ---------- */
.page-hero{ padding:80px 0 40px; border-bottom:1px solid var(--border); position:relative; overflow:hidden; isolation:isolate; }
.page-hero h1{ font-size:clamp(36px,5vw,56px); }
.page-hero p{ margin-top:14px; max-width:60ch; }
.prose{ max-width:760px; padding:56px 0 96px; }
.prose h2{ font-size:24px; margin:44px 0 12px; }
.prose h3{ font-size:18px; margin:28px 0 8px; text-transform:none; }
.prose p, .prose li{ font-size:15.5px; color:var(--text-dim); }
.prose p{ margin-bottom:14px; }
.prose ul{ padding-left:20px; margin:0 0 14px; }
.prose li{ margin-bottom:6px; }
.prose a{ color:var(--accent-2); }
.prose strong{ color:var(--text); font-weight:500; }
.center-page{ min-height:calc(100vh - 200px); display:grid; place-items:center; text-align:center; padding:80px 0; position:relative; overflow:hidden; isolation:isolate; }
.center-page .big{ font-family:'Rajdhani',sans-serif; font-weight:700; font-size:clamp(90px,18vw,180px); line-height:1; color:var(--accent); text-shadow:0 0 40px rgba(244,112,6,.35); }
.center-page h1{ font-size:clamp(30px,4vw,44px); margin-top:8px; }
.center-page p{ margin:16px auto 0; max-width:48ch; }
.center-page .hero-cta{ justify-content:center; }
.check{ width:84px; height:84px; margin:0 auto 20px; }
.check circle{ stroke:var(--accent); stroke-width:2; fill:none; stroke-dasharray:252; stroke-dashoffset:252; animation:draw .9s var(--ease) .2s forwards; }
.check path{ stroke:var(--accent-2); stroke-width:3; fill:none; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:60; stroke-dashoffset:60; animation:draw .5s var(--ease) .9s forwards; }
@keyframes draw{ to{ stroke-dashoffset:0; } }
.next-steps{ margin:36px auto 0; max-width:640px; display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--border); border:1px solid var(--border); text-align:left; }
.next-steps div{ background:var(--surface); padding:20px; }
.next-steps .mono{ font-size:11.5px; color:var(--accent-2); }
.next-steps p{ margin:6px 0 0; font-size:14px; max-width:none; }
@media (max-width:620px){ .next-steps{ grid-template-columns:1fr; } }

/* ---------- Capability statement page ---------- */
.cap-hero-cta{ margin-top:28px; display:flex; flex-wrap:wrap; gap:12px; }
.cap-section{ padding:72px 0; border-bottom:1px solid var(--border); }
.cap-section.alt{ background:var(--surface); }
.cap-section h2{ font-size:clamp(26px,3vw,36px); margin-bottom:22px; }
.cap-about{ font-size:18px; max-width:62ch; color:#ddd4c5; }
.cap-about strong{ color:var(--text); font-weight:500; }
.cap-stats{ margin-top:40px; display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--border); border:1px solid var(--border); }
.cap-stat{ background:var(--bg); padding:24px 26px; display:flex; align-items:center; gap:16px; }
.cap-stat b{ font-family:'Rajdhani',sans-serif; font-weight:700; font-size:34px; line-height:1; color:var(--accent); white-space:nowrap; }
.cap-stat span{ font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-dim); line-height:1.4; }
.cap-grid{ display:grid; grid-template-columns:1fr 1fr; gap:56px; }
.cap-services{ list-style:none; margin:0; padding:0; display:grid; gap:8px; }
.cap-services li{ display:flex; align-items:center; gap:16px; padding:14px 16px; background:var(--bg); border:1px solid var(--border); font-size:16px; color:var(--text); transition:border-color .3s ease; }
.cap-services li:hover{ border-color:var(--accent); }
.cap-services .num{ font-family:'IBM Plex Mono',monospace; font-size:12px; color:var(--accent); background:var(--surface-2); padding:4px 7px; }
.cap-why{ display:grid; gap:22px; }
.cap-why div{ border-left:3px solid var(--accent); padding-left:16px; }
.cap-why h3{ font-size:18px; text-transform:none; letter-spacing:0; margin-bottom:4px; }
.cap-why p{ font-size:14.5px; margin:0; }
.cap-chips{ list-style:none; margin:0; padding:0; display:flex; flex-wrap:wrap; gap:10px; }
.cap-chips li{ padding:10px 16px; border:1px solid var(--field-border); font-size:15px; color:var(--text); }
.cap-card{ background:var(--surface); border:1px solid var(--border); border-top:3px solid var(--accent); padding:30px; }
.cap-section.alt .cap-card{ background:var(--bg); }
.cap-card h3{ font-size:21px; text-transform:none; letter-spacing:0; margin-bottom:12px; }
.cap-card p{ font-size:15px; margin:0; }
.cap-checks{ list-style:none; margin:0; padding:0; display:grid; gap:10px; font-size:15px; color:#ddd4c5; }
.cap-checks li{ position:relative; padding-left:28px; }
.cap-checks li::before{ content:""; position:absolute; left:2px; top:5px; width:12px; height:7px; border-left:2px solid var(--accent); border-bottom:2px solid var(--accent); transform:rotate(-45deg); }
.cap-insure{ display:grid; grid-template-columns:repeat(2,1fr); gap:1px; background:var(--border); border:1px solid var(--border); margin-bottom:28px; }
.cap-insure div{ background:var(--bg); padding:24px 26px; }
.cap-insure .lbl{ font-family:'IBM Plex Mono',monospace; font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-dim); }
.cap-insure b{ display:block; font-family:'Rajdhani',sans-serif; font-weight:700; font-size:32px; color:var(--accent); line-height:1.1; margin-top:6px; }
.cap-insure small{ font-size:14px; color:var(--text); }
.cap-cta{ display:flex; justify-content:space-between; align-items:center; gap:24px; flex-wrap:wrap; padding:32px; background:var(--surface); border:1px solid var(--border); border-left:3px solid var(--accent); }
.cap-cta h2{ font-size:28px; margin:0 0 6px; }
.cap-cta p{ margin:0; }
.cap-cta .btns{ display:flex; gap:12px; flex-wrap:wrap; }
@media (max-width:860px){
  .cap-grid{ grid-template-columns:1fr; gap:40px; }
  .cap-stats{ grid-template-columns:1fr; }
  .cap-section{ padding:56px 0; }
}
@media (max-width:520px){
  .cap-insure{ grid-template-columns:1fr; }
  .cap-cta{ padding:24px; }
  .cap-cta .btns, .cap-cta .btn, .cap-hero-cta .btn{ width:100%; }
}

/* ---------- Reduced motion: switch it all off ---------- */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{ animation-duration:.001ms!important; animation-iteration-count:1!important; transition-duration:.001ms!important; transition-delay:0s!important; }
  .loader{ display:none; }
  .js [data-reveal], .split-word{ opacity:1!important; transform:none!important; }
  .hero-fx::after, .trust-track{ animation:none!important; }
  .hero-bg{ --hp:50%; }
  .js .wipe-frame{ --p:50%; }
  .wipe-tag-after{ opacity:1; }
  .wipe-laser{ opacity:1; }
}
