:root{
  --bg:#FFFFFF;
  --ink:#0A0A0A;
  --ink-soft: rgba(10,10,10,0.62);
  --ink-faint: rgba(10,10,10,0.32);
  --line: rgba(10,10,10,0.14);
  --line-strong: rgba(10,10,10,0.85);
  --invert-bg:#0A0A0A;
  --invert-ink:#FFFFFF;
  --accent:#B5532C;
  --accent-soft: rgba(181,83,44,0.22);
  --bg-fade: rgba(255,255,255,0);
  --display:'Fraunces', serif;
  --body:'Archivo', sans-serif;
  --mono:'JetBrains Mono', monospace;
}

[data-theme="dark"]{
  --bg:#0A0A0A;
  --ink:#FAFAF8;
  --ink-soft: rgba(250,250,248,0.64);
  --ink-faint: rgba(250,250,248,0.34);
  --line: rgba(250,250,248,0.16);
  --line-strong: rgba(250,250,248,0.85);
  --invert-bg:#FAFAF8;
  --invert-ink:#0A0A0A;
  --accent:#E08A4F;
  --accent-soft: rgba(224,138,79,0.24);
  --bg-fade: rgba(10,10,10,0);
}

*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}

body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--body);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  transition:background .4s ease, color .4s ease;
}

@media (prefers-reduced-motion: reduce){
  *{animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important; scroll-behavior:auto !important;}
}

a{color:inherit; text-decoration:none;}
:focus-visible{outline:2px solid var(--ink); outline-offset:3px;}

/* grain texture — the one print-like touch */
.grain{
  position:fixed; inset:0; z-index:2000; pointer-events:none;
  opacity:0.035; mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
[data-theme="dark"] .grain{opacity:0.05; mix-blend-mode:overlay;}

.wrap{max-width:1180px; margin:0 auto; padding:0 32px;}

/* ---------- NAV — single-row, full-width fixed ---------- */
nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  background:var(--bg);
  border-bottom:1px solid transparent;
  transition:border-color .35s ease, background .4s ease;
  height:66px;
}
nav.scrolled{ border-bottom-color:var(--line); }

.nav-inner{
  display:flex; align-items:center; justify-content:space-between;
  height:66px; padding:0 44px; position:relative;
}

.nav-logo{ z-index:2; flex-shrink:0; }
.nav-logo a{
  font-family:'League Spartan', sans-serif; font-weight:700;
  font-size:1.38rem; letter-spacing:0.01em;
  color:var(--ink); text-decoration:none; display:block;
  transition:opacity .25s ease;
}
.nav-logo a:hover{ opacity:.65; }

.nav-links{
  position:absolute; left:50%; transform:translateX(-50%);
  display:flex; align-items:center; gap:0; font-family:var(--mono);
}
.nav-links a{
  position:relative; display:flex; align-items:center; gap:7px;
  padding:8px 15px; color:var(--ink-faint); font-size:0.74rem; letter-spacing:0.025em;
  transition:color .22s ease;
}
.nav-links a .nl-num{ font-size:0.63rem; opacity:0.55; transition:opacity .22s ease, color .22s ease; }
.nav-links a .nl-label{ transition:color .22s ease; }
.nav-links a:hover{ color:var(--ink); }
.nav-links a:hover .nl-num{ opacity:1; color:var(--accent); }
.nav-links a.current{ color:var(--ink); }
.nav-links a.current .nl-num{ opacity:1; color:var(--accent); }
.nav-links a.current::after{
  content:''; position:absolute; bottom:-2px; left:15px; right:15px;
  height:1px; background:var(--accent); border-radius:1px;
}

.nav-right{ display:flex; align-items:center; gap:20px; z-index:2; flex-shrink:0; }

.nav-cta{
  font-family:var(--mono); font-size:0.74rem; letter-spacing:0.025em;
  color:var(--ink-soft); padding:7px 14px; border:1px solid var(--line);
  border-radius:2px; transition:color .22s ease, border-color .22s ease, background .22s ease;
}
.nav-cta:hover{ color:var(--ink); border-color:var(--line-strong); background:var(--ink); color:var(--bg); }

/* ---------- Services dropdown ---------- */
.nav-dd{ position:relative; }
.nav-dd-arrow{
  font-size:0.55rem; opacity:0.5; margin-left:1px;
  transition:transform .28s cubic-bezier(.2,.8,.2,1), opacity .22s ease;
  display:inline-block;
}
.nav-dd:hover .nav-dd-arrow, .nav-dd:focus-within .nav-dd-arrow{ transform:rotate(180deg); opacity:1; }
.nav-dd-panel{
  position:absolute; top:calc(100% + 8px); left:50%;
  transform:translateX(-50%) translateY(-6px);
  min-width:288px; background:var(--bg);
  border:1px solid var(--line); border-radius:4px;
  box-shadow:0 12px 40px rgba(0,0,0,.1), 0 2px 8px rgba(0,0,0,.05);
  opacity:0; visibility:hidden;
  transition:opacity .24s ease, transform .24s cubic-bezier(.2,.8,.2,1), visibility .24s ease;
  z-index:200; padding:6px 0; pointer-events:none;
}
/* Invisible bridge fills the gap so hover is not lost when moving from trigger to panel */
.nav-dd-panel::before{
  content:''; position:absolute; top:-8px; left:0; right:0; height:8px;
  pointer-events:none;
}
[data-theme="dark"] .nav-dd-panel{
  box-shadow:0 12px 40px rgba(0,0,0,.5), 0 2px 8px rgba(0,0,0,.25);
}
.nav-dd:hover .nav-dd-panel, .nav-dd:focus-within .nav-dd-panel{
  opacity:1; visibility:visible;
  transform:translateX(-50%) translateY(0);
  pointer-events:auto;
}
.nav-dd-panel a{
  display:flex; align-items:baseline; gap:10px; padding:11px 20px;
  font-family:var(--mono); font-size:0.72rem; letter-spacing:0.02em;
  color:var(--ink-soft); width:100%;
  transition:background .16s ease, color .16s ease, padding-left .2s ease;
}
.nav-dd-panel a:hover{ background:var(--ink); color:var(--bg); padding-left:26px; }
.nav-dd-panel a .dd-num{ font-size:0.62rem; opacity:0.45; flex-shrink:0; }
.nav-dd-panel a:hover .dd-num{ opacity:0.65; }
.nav-dd-sep{ height:1px; background:var(--line); margin:5px 0; }

/* Eclipse toggle — half-circle that rotates 180° on theme change */
.theme-toggle{
  width:28px; height:28px; border-radius:50%; border:none;
  background:none; cursor:pointer; padding:0; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
}
.eclipse{
  width:24px; height:24px; border-radius:50%;
  border:1.5px solid var(--line-strong);
  position:relative; overflow:hidden;
  transition:transform .65s cubic-bezier(.34,1.42,.5,1), border-color .4s ease;
  pointer-events:none;
}
.eclipse::before{
  content:''; position:absolute; top:0; left:0;
  width:50%; height:100%; background:var(--ink);
  transition:background .4s ease;
}
[data-theme="dark"] .eclipse{ transform:rotate(180deg); }

.nav-toggle{ display:none; flex-direction:column; gap:5px; cursor:pointer; background:none; border:none; padding:6px; }
.nav-toggle span{ width:20px; height:1.5px; background:var(--ink); display:block; transition:transform .3s ease, opacity .3s ease, background .4s ease; }
.nav-toggle.open span:nth-child(1){ transform:translateY(6.5px) rotate(45deg); }
.nav-toggle.open span:nth-child(2){ opacity:0; transform:scaleX(0); }
.nav-toggle.open span:nth-child(3){ transform:translateY(-6.5px) rotate(-45deg); }

.nav-overlay{ display:none; position:fixed; top:66px; left:0; right:0; bottom:0; background:rgba(0,0,0,0.38); z-index:99; }
.nav-overlay.show{ display:block; }
.nav-book-btn{ display:none; }

@media (max-width:980px){
  .nav-links{
    position:fixed; top:66px; right:0; left:auto; height:calc(100vh - 66px); width:min(82vw,320px);
    background:var(--bg); flex-direction:column; padding:12px 0 36px;
    transform:translateX(100%); transition:transform .38s cubic-bezier(.2,.8,.2,1);
    border-left:1px solid var(--line); border-top:1px solid var(--line); z-index:120;
    overflow-y:auto;
  }
  .nav-links a, .nav-dd > a{ padding:13px 28px; width:100%; font-size:0.88rem; border-bottom:1px solid var(--line); }
  .nav-links a.current::after{ left:0; right:auto; top:0; bottom:auto; width:3px; height:100%; border-radius:0; }
  .nav-links.open{ transform:translateX(0); }
  /* Lift the entire nav-right above the sidebar so both theme toggle + hamburger are tappable */
  .nav-right{
    position:fixed; top:0; right:0; height:66px;
    display:flex; align-items:center; gap:0; padding:0 8px 0 0;
    z-index:200; background:var(--bg);
  }
  .nav-toggle{
    display:flex; position:static;
    padding:12px; margin:0;
  }
  .nav-cta{ display:none; }
  .nav-inner{ padding:0 20px; }
  .nav-dd-panel{
    position:static; opacity:1; visibility:visible;
    transform:none; box-shadow:none; border:none; border-radius:0;
    padding:0; border-top:none; pointer-events:none;
    max-height:0; overflow:hidden;
    transition:max-height .35s cubic-bezier(.2,.8,.2,1);
  }
  .nav-dd.expanded .nav-dd-panel{
    max-height:560px; pointer-events:auto;
    border-top:1px solid var(--line);
  }
  .nav-dd-panel a{ padding:9px 40px; font-size:0.78rem; border-bottom:1px solid var(--line); }
  .nav-dd-panel a:last-child{ border-bottom:none; }
  .nav-dd-panel a:hover{ padding-left:46px; }
  /* Kill desktop hover-bridge on mobile — it floats out of place and blocks taps */
  .nav-dd-panel::before{ display:none; }
  /* Book CTA — sticky at bottom of sidebar */
  .nav-book-btn{
    display:flex !important; pointer-events:auto !important; cursor:pointer;
    align-items:center; justify-content:center;
    position:sticky; bottom:0;
    margin:auto 0 0 !important; padding:15px 20px !important;
    width:100% !important; flex-shrink:0;
    background:var(--ink); color:var(--bg) !important;
    font-family:var(--mono); font-size:0.75rem; letter-spacing:0.06em;
    border:none !important; border-top:1px solid var(--line) !important;
    border-radius:0; -webkit-tap-highlight-color:rgba(0,0,0,0.08);
  }
  .nav-book-btn::after{ display:none !important; }
  /* Guarantee every nav link is tappable */
  .nav-links a{ pointer-events:auto !important; cursor:pointer; -webkit-tap-highlight-color:rgba(0,0,0,0.08); }
  /* Rotate the caret when expanded */
  .nav-dd > a .nav-dd-arrow{ transition:transform .28s ease, opacity .22s ease; }
  .nav-dd.expanded > a .nav-dd-arrow{ transform:rotate(180deg); opacity:1; }
}
@media (max-width:600px){
  nav{ top:0; width:100%; border-radius:0; }
}

/* ---------- HERO ---------- */
.hero{
  min-height:100vh; display:flex; flex-direction:column; justify-content:center;
  padding-top:100px; position:relative; overflow:hidden;
}
.hero-depth{
  position:absolute; inset:0; z-index:2; pointer-events:none;
  background:var(--bg); opacity:0;
}
/* Parallax via CSS translate (separate layer from entrance transform) */
.hero .eyebrow{ translate:0 var(--py,0px); }
.hero h1{ translate:0 var(--py,0px); }
.hero p.sub{ translate:0 var(--py,0px); }
.hero-cta{ translate:0 var(--py,0px); }
[data-parallax]{ translate:0 var(--py,0px); will-change:translate; }
.hero-canvas{
  position:absolute; inset:0; width:100%; height:100%; z-index:0; display:block;
}
.hero-scrim{
  position:absolute; inset:0; z-index:1; pointer-events:none;
  background:
    linear-gradient(102deg, var(--bg) 0%, var(--bg) 26%, var(--bg-fade) 66%),
    linear-gradient(180deg, var(--bg) 0%, var(--bg-fade) 16%, var(--bg-fade) 52%, var(--bg) 100%);
  transition:background .4s ease;
}
.hero-inner{position:relative; z-index:2;}
.hero .scroll-cue{ z-index:2; }

.hero .eyebrow, .hero h1, .hero p.sub, .hero-cta, .hero .scroll-cue{
  opacity:0; transform:translateY(20px);
  transition:opacity .9s cubic-bezier(.2,.8,.2,1), transform .9s cubic-bezier(.2,.8,.2,1);
}
body.loaded .hero .eyebrow, body.loaded .hero h1, body.loaded .hero p.sub,
body.loaded .hero-cta, body.loaded .hero .scroll-cue{
  opacity:1; transform:translateY(0);
}

/* ---- Custom cursor ---- */
.cursor-dot{
  position:fixed; width:7px; height:7px; border-radius:50%;
  background:var(--ink); pointer-events:none; z-index:9999;
  transform:translate(-50%,-50%); opacity:0;
  transition:opacity .3s ease, background .3s ease;
  will-change:left,top;
}
.cursor-ring{
  position:fixed; width:30px; height:30px; border-radius:50%;
  border:1px solid var(--ink); pointer-events:none; z-index:9998;
  transform:translate(-50%,-50%); opacity:0;
  transition:opacity .3s ease, width .32s cubic-bezier(.2,.8,.2,1), height .32s cubic-bezier(.2,.8,.2,1), border-color .3s ease;
  will-change:left,top;
}
.cursor-ring.expanded{ width:48px; height:48px; opacity:0.2; }
.has-cursor *{ cursor:none !important; }
.hero .eyebrow{ transition-delay:.08s; }
.hero h1{ transition-delay:.2s; }
.hero p.sub{ transition-delay:.36s; }
.hero-cta{ transition-delay:.5s; }
.hero .scroll-cue{ transition-delay:.8s; }

.eyebrow{
  font-family:var(--mono); font-size:0.76rem; letter-spacing:0.12em; text-transform:uppercase;
  color:var(--ink-soft); margin-bottom:32px;
}

.hero h1{
  font-family:var(--display); font-weight:500;
  font-size:clamp(3rem, 9vw, 7.2rem);
  line-height:0.96; letter-spacing:-0.02em;
}
.hero h1 em{
  font-style:italic; font-weight:400;
}
.hero h1 .dot-orbit{
  display:inline-block; position:relative; width:0.18em;
}
.hero h1 .dot-orbit .orb{
  position:absolute; bottom:0.14em; left:0; width:0.14em; height:0.14em;
  background:var(--accent); border-radius:50%;
  animation:orbitDot 5s linear infinite;
  transform-origin:center;
}
@keyframes orbitDot{
  0%{transform:translate(0,0) scale(1);}
  25%{transform:translate(0.05em,-0.22em) scale(0.85);}
  50%{transform:translate(0,-0.05em) scale(1.1);}
  75%{transform:translate(-0.05em,-0.22em) scale(0.85);}
  100%{transform:translate(0,0) scale(1);}
}

.hero p.sub{
  margin-top:34px; max-width:480px;
  font-size:1.08rem; color:var(--ink-soft); line-height:1.65;
}
.hero-cta{
  margin-top:44px; display:flex; gap:18px; flex-wrap:wrap; align-items:center;
}
.btn{
  font-family:var(--mono); font-weight:500; font-size:0.82rem; letter-spacing:0.03em;
  padding:15px 28px; border-radius:2px;
  display:inline-flex; align-items:center; gap:10px;
  transition:transform .28s cubic-bezier(.2,.8,.2,1), background .22s ease, color .22s ease, box-shadow .28s ease;
  border:1px solid var(--line-strong);
}
.btn-primary{ background:var(--ink); color:var(--bg); }
.btn-primary:hover{ transform:translateY(-3px); box-shadow:0 8px 24px -6px rgba(0,0,0,.22); }
.btn-ghost{ color:var(--ink); }
.btn-ghost:hover{ background:var(--ink); color:var(--bg); transform:translateY(-3px); }

@keyframes riseIn{ from{opacity:0; transform:translateY(20px);} to{opacity:1; transform:translateY(0);} }

.scroll-cue{
  position:absolute; bottom:40px; left:40px;
  font-family:var(--mono); font-size:0.7rem; color:var(--ink-faint); letter-spacing:0.08em;
  display:flex; align-items:center; gap:12px;
}
.scroll-cue .stem{width:1px; height:30px; background:var(--line-strong); position:relative; overflow:hidden;}
.scroll-cue .stem::after{
  content:''; position:absolute; left:0; top:-100%; width:100%; height:40%;
  background:var(--ink); animation:dropStem 2.4s ease-in-out infinite;
}
@keyframes dropStem{0%{top:-40%;}60%{top:100%;}100%{top:100%;}}
@media (max-width:840px){ .scroll-cue{display:none;} }

/* ---------- SECTION SHELL ---------- */
section{position:relative; padding:150px 0;}
.rule{border-top:1px solid var(--line);}

.section-head{margin-bottom:70px; display:flex; justify-content:space-between; align-items:flex-end; gap:40px; flex-wrap:wrap;}
.section-eyebrow{
  font-family:var(--mono); font-size:0.74rem; letter-spacing:0.12em; text-transform:uppercase;
  color:var(--ink-soft); display:block; margin-bottom:20px;
}
.section-head h2{
  font-family:var(--display); font-weight:500; font-size:clamp(2rem, 4vw, 3.1rem);
  letter-spacing:-0.015em; line-height:1.08; max-width:640px;
}
.section-head .head-note{
  font-family:var(--mono); font-size:0.82rem; color:var(--ink-faint); max-width:260px; text-align:right; line-height:1.6;
}
@media (max-width:760px){ .section-head .head-note{text-align:left;} }

.reveal{opacity:0; transform:translateY(26px); transition:opacity .8s ease, transform .8s ease;}
.reveal.in{opacity:1; transform:translateY(0);}

/* ---------- ABOUT ---------- */
.about-grid{display:grid; grid-template-columns:1.15fr 0.85fr; gap:70px; align-items:start;}
.about-copy p{color:var(--ink-soft); font-size:1.08rem; line-height:1.85; margin-bottom:20px; max-width:560px;}
.about-copy p:first-of-type{font-family:var(--display); font-size:1.4rem; color:var(--ink); line-height:1.5; font-weight:400;}
.about-copy strong{color:var(--ink); font-weight:600;}

.stat-stack{border-top:1px solid var(--line);}
.stat-row{
  display:flex; justify-content:space-between; align-items:baseline;
  padding:26px 0; border-bottom:1px solid var(--line);
  position:relative; overflow:hidden;
}
.stat-row::after{
  content:''; position:absolute; left:0; bottom:-1px; height:1px; width:0;
  background:var(--ink); transition:width .8s cubic-bezier(.2,.8,.2,1);
}
.stat-row.in::after{ width:100%; }
.stat-row .num{font-family:var(--display); font-size:2.4rem; font-weight:500;}
.stat-row .label{font-family:var(--mono); font-size:0.78rem; color:var(--ink-soft); max-width:200px; text-align:right; line-height:1.5;}

@media (max-width:900px){ .about-grid{grid-template-columns:1fr;} .stat-row .label{text-align:left;} }

/* ---------- VISION / MISSION — separated editorial ---------- */
.vm-split{ border-top:1px solid var(--line); }
.vm-item{
  display:grid; grid-template-columns:150px 1fr 1.5fr;
  border-bottom:1px solid var(--line); align-items:start;
}
.vm-col{ padding:52px 0; }
.vm-col.vm-tag-col{ padding-right:28px; border-right:1px solid var(--line); }
.vm-col.vm-head-col{ padding:52px 40px; border-right:1px solid var(--line); }
.vm-col.vm-text-col{ padding:52px 0 52px 40px; }
.vm-item .vm-tag-label{
  font-family:var(--mono); font-size:0.74rem; letter-spacing:0.12em;
  text-transform:uppercase; color:var(--ink-faint);
}
.vm-item h3{
  font-family:var(--display); font-size:clamp(1.9rem,3.4vw,2.8rem);
  font-weight:500; letter-spacing:-0.02em; line-height:1.06;
}
.vm-item p{ font-size:1.03rem; color:var(--ink-soft); line-height:1.82; }
.vm-item p+p{ margin-top:14px; }
@media (max-width:860px){
  .vm-item{ grid-template-columns:1fr; }
  .vm-col.vm-tag-col,.vm-col.vm-head-col,.vm-col.vm-text-col{
    padding:28px 0; border:none; border-bottom:1px solid var(--line);
  }
  .vm-col.vm-text-col{ border-bottom:none; }
}

/* ---------- SERVICES — editorial ledger + live preview ---------- */
.services .section-head{margin-bottom:30px;}

.services-track{
  position:relative;
  height:calc(8 * 65vh);
}
.services-stage{
  position:sticky; top:96px;
  padding-top:8px;
}
@media (max-width:980px){
  .services-track{ height:auto; }
}

.services-layout{
  display:grid; grid-template-columns:1.1fr 0.9fr; gap:64px; align-items:start;
}

.ledger{
  border-top:1px solid var(--line-strong);
  max-height:calc(100vh - 96px - 40px);
  overflow-y:auto;
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.ledger::-webkit-scrollbar{ display:none; }
.ledger-row{
  display:grid; grid-template-columns:48px 1fr 24px; align-items:center; gap:20px;
  padding:26px 4px; border-bottom:1px solid var(--line);
  cursor:pointer; position:relative; overflow:hidden;
  scroll-margin:12px;
}
.ledger-row .ln{
  font-family:var(--mono); font-size:0.82rem; color:var(--ink-faint);
  transition:color .35s ease;
}
.ledger-row .title-wrap{ overflow:hidden; }
.ledger-row h3{
  font-family:var(--display); font-weight:500;
  font-size:clamp(1.1rem, 2.2vw, 1.55rem);
  letter-spacing:-0.01em; transition:transform .45s cubic-bezier(.2,.8,.2,1), color .35s ease;
}
.ledger-row .micro{
  font-family:var(--mono); font-size:0.68rem; color:var(--ink-faint); letter-spacing:0.04em;
  text-transform:uppercase; margin-top:4px; display:block; opacity:0.85;
  transition:color .35s ease;
}
.ledger-row .arrow{
  font-family:var(--mono); font-size:0.9rem; color:var(--ink-faint);
  transform:rotate(0deg) translateX(0); transition:transform .35s ease, color .35s ease;
}
.ledger-row::before{
  content:''; position:absolute; left:0; top:0; bottom:0; width:0;
  background:var(--ink); z-index:0; transition:width .45s cubic-bezier(.2,.8,.2,1);
}
.ledger-row > *{position:relative; z-index:1;}

.ledger-row:hover::before, .ledger-row.active::before{ width:100%; }
.ledger-row:hover .ln, .ledger-row.active .ln{ color:var(--bg); opacity:0.55; }
.ledger-row:hover h3, .ledger-row.active h3{ color:var(--bg); transform:translateX(12px); }
.ledger-row:hover .micro, .ledger-row.active .micro{ color:var(--bg); opacity:0.6; }
.ledger-row:hover .arrow, .ledger-row.active .arrow{ color:var(--accent); transform:rotate(45deg) translateX(4px); }

/* sticky live preview */
.service-preview{
  border:1px solid var(--line-strong);
  padding:40px 36px;
  min-height:440px;
  display:flex; flex-direction:column;
}
.sp-index{ font-family:var(--mono); font-size:0.78rem; color:var(--ink-faint); margin-bottom:28px; letter-spacing:0.04em; }
.sp-stage{
  width:100%; height:170px; margin-bottom:32px; position:relative;
}
.sp-stage svg{ width:100%; height:100%; overflow:visible; }
.sp-stage svg path, .sp-stage svg circle, .sp-stage svg rect, .sp-stage svg line{
  stroke:var(--ink); fill:none; stroke-width:1.1; vector-effect:non-scaling-stroke;
}
.sp-stage svg .fill{ fill:var(--ink); stroke:none; }
.sp-stage svg .dim{ opacity:0.3; }
.sp-stage svg .accent{ stroke:var(--accent); }
.sp-stage svg .accent-fill{ fill:var(--accent); stroke:none; }
.sp-stage svg .accent-soft{ fill:var(--accent-soft); stroke:var(--accent); stroke-width:1.1; opacity:1; }
.sp-stage .diagram{
  opacity:0; transform:translateY(8px); transition:opacity .5s ease, transform .5s ease;
  position:absolute; inset:0;
}
.sp-stage .diagram.active{ opacity:1; transform:translateY(0); }

.sp-title{ font-family:var(--display); font-size:1.5rem; font-weight:500; margin-bottom:14px; min-height:2.4em; }
.sp-desc{ font-family:var(--body); font-size:0.96rem; color:var(--ink-soft); line-height:1.75; flex:1; }
.sp-foot{
  margin-top:28px; padding-top:20px; border-top:1px solid var(--line);
  display:flex; justify-content:space-between; align-items:center; font-family:var(--mono); font-size:0.7rem;
  color:var(--ink-faint); letter-spacing:0.04em; text-transform:uppercase;
}
.sp-foot .sp-link{ color:var(--accent); display:inline-flex; align-items:center; gap:7px; transition:gap .25s ease; }
.sp-foot .sp-link:hover{ gap:12px; }

.services-progress{
  display:flex; gap:6px; margin-top:24px;
}
.services-progress .dot{
  flex:1; height:2px; background:var(--line-strong); border-radius:2px;
  position:relative; overflow:hidden;
}
.services-progress .dot::after{
  content:''; position:absolute; inset:0; background:var(--accent);
  transform:scaleX(0); transform-origin:left; transition:transform .25s ease;
}
.services-progress .dot.done::after{ transform:scaleX(1); }

@media (max-width:980px){
  .services-stage{ position:relative; top:auto; }
  .services-layout{grid-template-columns:1fr;}
  .service-preview{ order:-1; min-height:auto; }
  .ledger{ max-height:none; overflow-y:visible; }
}
@media (max-width:640px){
  .ledger-row{grid-template-columns:32px 1fr 20px; gap:14px; padding:22px 2px;}
  .ledger-row h3{font-size:1.05rem;}
  .service-preview{ padding:30px 24px; }
}

/* ---------- PROJECTS ---------- */
.projects-grid{
  display:grid; grid-template-columns:repeat(3, 1fr);
  border-top:1px solid var(--line); border-left:1px solid var(--line);
}
.project-card{
  border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  display:flex; flex-direction:column; background:var(--bg);
  transition:background .35s ease;
}
.project-card:hover .project-media image-slot{ transform:scale(1.04); }
.project-media{
  aspect-ratio:4 / 3; border-bottom:1px solid var(--line);
  position:relative; overflow:hidden;
}
.project-media image-slot{ transition:transform .55s cubic-bezier(.2,.8,.2,1); }
.project-media image-slot{ display:block; width:100%; height:100%; }
.project-body{ padding:28px 30px 32px; display:flex; flex-direction:column; gap:10px; flex:1; }
.project-cat{
  font-family:var(--mono); font-size:0.68rem; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--ink-faint); display:flex; justify-content:space-between;
}
.project-card h3{ font-family:var(--display); font-weight:500; font-size:1.32rem; letter-spacing:-0.01em; line-height:1.2; }
.project-result{ font-size:0.95rem; color:var(--ink-soft); line-height:1.6; margin-top:2px; }
.project-tags{ margin-top:auto; padding-top:18px; font-family:var(--mono); font-size:0.7rem; color:var(--ink-faint); display:flex; gap:8px; flex-wrap:wrap; }
.project-tags span{ border:1px solid var(--line); border-radius:20px; padding:4px 10px; }
@media (max-width:900px){ .projects-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:560px){ .projects-grid{grid-template-columns:1fr;} }

/* ---------- TEAM ---------- */
.team-grid{display:grid; grid-template-columns:repeat(4, 1fr); border-top:1px solid var(--line); border-left:1px solid var(--line);}
.team-card{
  border-right:1px solid var(--line); border-bottom:1px solid var(--line);
  padding:34px 28px; transition:background .38s cubic-bezier(.2,.8,.2,1), color .38s ease;
}
.team-card:hover{ background:var(--ink); color:var(--bg); }
.avatar-ring{
  width:64px; height:64px; border-radius:50%;
  border:1px dashed var(--line-strong);
  display:flex; align-items:center; justify-content:center;
  margin-bottom:24px; position:relative; transition:border-color .3s ease;
}
.team-card:hover .avatar-ring{ border-color:var(--bg); }
.avatar-ring svg{width:24px; height:24px; stroke:currentColor; fill:none; stroke-width:1.4; opacity:0.5;}
.avatar-ring .add-tag{
  position:absolute; bottom:-8px; right:-10px;
  font-family:var(--mono); font-size:0.58rem; letter-spacing:0.02em;
  border:1px solid var(--line-strong); padding:2px 6px; border-radius:20px;
  background:var(--bg); color:var(--ink); transition:all .3s ease;
}
.team-card:hover .add-tag{ background:var(--ink); color:var(--bg); border-color:var(--bg); }
.team-card h3{font-family:var(--display); font-size:1.2rem; font-weight:500; margin-bottom:4px;}
.team-card .role{font-family:var(--mono); font-size:0.72rem; letter-spacing:0.04em; text-transform:uppercase; opacity:0.5;}

@media (max-width:900px){ .team-grid{grid-template-columns:repeat(2,1fr);} }
@media (max-width:540px){ .team-grid{grid-template-columns:1fr;} }

/* ========== CONTACT V2 ========== */
.contact-v2 { position:relative; overflow:hidden; }

.contact-bg-num {
  position:absolute; top:50%; right:-60px;
  transform:translateY(-50%);
  font-family:var(--display); font-size:clamp(14rem,30vw,34rem);
  font-weight:500; letter-spacing:-0.06em; line-height:1;
  color:var(--ink); opacity:0.025;
  pointer-events:none; user-select:none; z-index:0;
}
[data-theme="dark"] .contact-bg-num { opacity:0.038; }
.contact-v2 .wrap { position:relative; z-index:1; }

.contact-inner {
  display:grid; grid-template-columns:1fr 1.15fr;
  gap:100px; align-items:start;
}

/* Left side */
.contact-left { display:flex; flex-direction:column; gap:28px; }
.contact-headline {
  font-family:var(--display); font-weight:500;
  font-size:clamp(2.6rem,4.8vw,4.2rem);
  letter-spacing:-0.025em; line-height:1;
}
.contact-sub {
  font-size:1.05rem; color:var(--ink-soft); line-height:1.8; max-width:420px;
}

/* Detail rows */
.contact-details { display:flex; flex-direction:column; border-top:1px solid var(--line); padding-top:28px; }
.cd-row {
  display:flex; justify-content:space-between; align-items:baseline;
  gap:24px; padding:14px 0; border-bottom:1px solid var(--line);
}
.cd-label {
  font-family:var(--mono); font-size:0.68rem; letter-spacing:0.09em;
  text-transform:uppercase; color:var(--ink-faint); flex-shrink:0;
}
.cd-val { font-size:0.95rem; color:var(--ink-soft); text-align:right; }
.cd-placeholder { font-style:italic; color:var(--ink-faint); }

/* Form */
.contact-form-wrap {
  background:var(--ink); padding:52px 48px;
}
[data-theme="dark"] .contact-form-wrap { background:rgba(250,250,248,0.06); border:1px solid var(--line-strong); }
.contact-form { display:flex; flex-direction:column; gap:28px; }

.cf-field { display:flex; flex-direction:column; gap:8px; }
.cf-label {
  font-family:var(--mono); font-size:0.67rem; letter-spacing:0.09em;
  text-transform:uppercase; color:rgba(250,250,248,0.45);
}
[data-theme="dark"] .cf-label { color:var(--ink-faint); }

.cf-input {
  background:transparent; border:none; border-bottom:1px solid rgba(250,250,248,0.2);
  color:rgba(250,250,248,0.92); font-family:var(--display); font-size:1.05rem;
  padding:10px 0; outline:none; width:100%; appearance:none; -webkit-appearance:none;
  transition:border-color .25s ease;
}
[data-theme="dark"] .cf-input {
  color:var(--ink); border-bottom-color:rgba(10,10,10,0.25);
}
.cf-input::placeholder { color:rgba(250,250,248,0.25); }
[data-theme="dark"] .cf-input::placeholder { color:var(--ink-faint); }
.cf-input:focus { border-bottom-color:var(--accent); }

.cf-select { cursor:pointer; }
.cf-select option { background:#111; color:#f5f5f5; }
.cf-textarea { resize:none; line-height:1.7; font-family:var(--body); font-size:0.97rem; }

/* Submit button */
.cf-submit {
  margin-top:8px; padding:18px 32px;
  background:transparent; border:1px solid rgba(250,250,248,0.25);
  color:rgba(250,250,248,0.9); font-family:var(--display); font-size:1rem;
  letter-spacing:-0.01em; cursor:pointer;
  display:flex; align-items:center; justify-content:space-between;
  gap:16px; position:relative; overflow:hidden;
  transition:border-color .28s ease;
}
[data-theme="dark"] .cf-submit {
  border-color:rgba(10,10,10,0.3); color:var(--ink);
}
.cf-submit::before {
  content:''; position:absolute; inset:0;
  background:var(--accent);
  transform:translateX(-101%);
  transition:transform .46s cubic-bezier(.16,.84,.44,1); z-index:0;
}
.cf-submit:hover::before { transform:translateX(0); }
.cf-submit:hover { border-color:var(--accent); color:var(--bg); }
.cfs-text, .cfs-arrow, .cfs-sent { position:relative; z-index:1; }
.cfs-arrow { transition:transform .3s ease; }
.cf-submit:hover .cfs-arrow { transform:translateX(5px); }
.cfs-sent { position:absolute; right:32px; top:50%; transform:translateY(-50%) translateX(30px); opacity:0; z-index:2;
  font-family:var(--mono); font-size:0.8rem; letter-spacing:0.06em; color:var(--bg);
  transition:opacity .35s ease, transform .35s ease;
}
.contact-form.sent .cfs-sent { opacity:1; transform:translateY(-50%) translateX(0); }
.contact-form.sent .cfs-text, .contact-form.sent .cfs-arrow { opacity:0; }

/* ── Form validation ── */
@keyframes field-shake {
  0%,100% { transform:translateX(0); }
  20%      { transform:translateX(-6px); }
  40%      { transform:translateX(6px); }
  60%      { transform:translateX(-4px); }
  80%      { transform:translateX(4px); }
}
.cf-field.error .cf-input,
.bf-field.error .bf-input  { border-bottom-color:#d94040 !important; }
.cf-field.error,
.bf-field.error             { animation:field-shake .38s ease; }
.cf-error-msg,
.bf-error-msg {
  font-family:var(--mono); font-size:0.65rem; letter-spacing:0.05em;
  color:#d94040; opacity:0; max-height:0; overflow:hidden;
  transition:opacity .22s ease, max-height .22s ease;
}
.cf-field.error .cf-error-msg,
.bf-field.error .bf-error-msg { opacity:1; max-height:2em; }

@media (max-width:960px) {
  .contact-inner { grid-template-columns:1fr; gap:56px; }
  .contact-headline { font-size:2.8rem; }
  .contact-form-wrap { padding:40px 36px; }
}
@media (max-width:560px) {
  .contact-form-wrap { padding:32px 24px; }
  .contact-headline { font-size:2.2rem; }
}

/* ---------- SERVICE DETAIL PAGE ---------- */
.svc-hero{ padding:170px 0 70px; }
.svc-back{ font-family:var(--mono); font-size:0.74rem; letter-spacing:0.04em; color:var(--ink-faint); display:inline-flex; gap:8px; margin-bottom:46px; transition:gap .25s ease, color .25s ease; }
.svc-back:hover{ gap:13px; color:var(--ink); }
.svc-hero .svc-num{ font-family:var(--mono); font-size:0.78rem; letter-spacing:0.1em; color:var(--accent); text-transform:uppercase; display:block; margin-bottom:22px; }
.svc-hero h1{ font-family:var(--display); font-weight:500; font-size:clamp(2.4rem, 6vw, 4.8rem); line-height:1.0; letter-spacing:-0.02em; max-width:900px; }
.svc-lead{ margin-top:30px; max-width:640px; font-size:1.18rem; line-height:1.7; color:var(--ink-soft); }

.svc-overview{ display:grid; grid-template-columns:1fr 1fr; gap:0; border-top:1px solid var(--line); border-left:1px solid var(--line); }
.svc-overview .ov-text{ border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:50px; }
.svc-overview .ov-text p{ color:var(--ink-soft); font-size:1.05rem; line-height:1.85; margin-bottom:18px; }
.svc-overview .ov-text p:first-child{ font-family:var(--display); font-size:1.3rem; color:var(--ink); line-height:1.5; }
.svc-overview .ov-diagram{ border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:50px; display:flex; align-items:center; justify-content:center; }
.svc-overview .ov-diagram .dframe{ width:100%; max-width:340px; }
.svc-overview .ov-diagram svg{ width:100%; height:220px; overflow:visible; }
.svc-overview .ov-diagram svg path, .svc-overview .ov-diagram svg circle, .svc-overview .ov-diagram svg rect, .svc-overview .ov-diagram svg line{ stroke:var(--ink); fill:none; stroke-width:1.1; vector-effect:non-scaling-stroke; }
.svc-overview .ov-diagram svg .fill{ fill:var(--ink); stroke:none; }
.svc-overview .ov-diagram svg .dim{ opacity:0.3; }
.svc-overview .ov-diagram svg .accent-fill{ fill:var(--accent); stroke:none; }
.svc-overview .ov-diagram svg .accent-soft{ fill:var(--accent-soft); stroke:var(--accent); stroke-width:1.1; }
@media (max-width:840px){ .svc-overview{grid-template-columns:1fr;} .svc-overview .ov-diagram{order:-1;} .svc-overview .ov-text{padding:38px;} .svc-overview .ov-diagram{padding:44px 38px;} }

.svc-cols{ display:grid; grid-template-columns:1fr 1fr; gap:64px; }
@media (max-width:840px){ .svc-cols{grid-template-columns:1fr; gap:56px;} }

.block-eyebrow{ font-family:var(--mono); font-size:0.74rem; letter-spacing:0.12em; text-transform:uppercase; color:var(--ink-soft); display:block; margin-bottom:32px; }

.incl-list{ border-top:1px solid var(--line); }
.incl-list li{ list-style:none; display:grid; grid-template-columns:30px 1fr; gap:14px; padding:20px 0; border-bottom:1px solid var(--line); align-items:baseline; }
.incl-list li .ic{ font-family:var(--mono); font-size:0.78rem; color:var(--accent); }
.incl-list li .it{ font-size:1.02rem; line-height:1.55; }
.incl-list li .it small{ display:block; font-family:var(--body); color:var(--ink-soft); font-size:0.9rem; margin-top:5px; line-height:1.6; }

.process-list{ border-top:1px solid var(--line); }
.process-list .step{ padding:24px 0; border-bottom:1px solid var(--line); display:grid; grid-template-columns:54px 1fr; gap:16px; }
.process-list .step .sn{ font-family:var(--display); font-size:1.7rem; font-weight:500; color:var(--ink-faint); line-height:1; }
.process-list .step h4{ font-family:var(--display); font-weight:500; font-size:1.2rem; margin-bottom:7px; }
.process-list .step p{ color:var(--ink-soft); font-size:0.95rem; line-height:1.65; }

/* pricing */
.pricing-head{ display:flex; justify-content:space-between; align-items:flex-end; gap:30px; flex-wrap:wrap; margin-bottom:46px; }
.pricing-head .note{ font-family:var(--mono); font-size:0.74rem; color:var(--ink-faint); max-width:280px; line-height:1.6; text-align:right; }
@media (max-width:760px){ .pricing-head .note{text-align:left;} }
.pricing-grid{ display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--line); border-left:1px solid var(--line); }
.price-card{ border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:40px 34px; display:flex; flex-direction:column; transition:background .3s ease, color .3s ease; }
.price-card .pc-name{ font-family:var(--mono); font-size:0.74rem; letter-spacing:0.1em; text-transform:uppercase; color:var(--ink-soft); margin-bottom:20px; }
.price-card .pc-amount{ font-family:var(--display); font-weight:500; font-size:2.6rem; line-height:1; letter-spacing:-0.02em; }
.price-card .pc-period{ font-family:var(--mono); font-size:0.74rem; color:var(--ink-faint); margin-top:8px; }
.price-card .pc-desc{ font-size:0.95rem; color:var(--ink-soft); line-height:1.65; margin:22px 0; padding-bottom:22px; border-bottom:1px solid var(--line); }
.price-card .pc-feat{ list-style:none; display:flex; flex-direction:column; gap:13px; flex:1; }
.price-card .pc-feat li{ font-size:0.92rem; line-height:1.5; display:grid; grid-template-columns:16px 1fr; gap:10px; color:var(--ink-soft); }
.price-card .pc-feat li::before{ content:'—'; color:var(--accent); }
.price-card .pc-cta{ margin-top:30px; font-family:var(--mono); font-size:0.8rem; padding:14px 22px; border:1px solid var(--line-strong); border-radius:2px; text-align:center; transition:background .25s ease, color .25s ease, transform .25s ease; }
.price-card .pc-cta:hover{ transform:translateY(-3px); background:var(--ink); color:var(--bg); box-shadow:0 6px 18px -4px rgba(0,0,0,.18); }
.price-card.featured{ background:var(--ink); color:var(--bg); }
.price-card.featured .pc-name{ color:var(--accent); }
.price-card.featured .pc-desc{ color:rgba(255,255,255,0.62); border-color:rgba(255,255,255,0.18); }
[data-theme="dark"] .price-card.featured .pc-desc{ color:rgba(10,10,10,0.6); }
.price-card.featured .pc-feat li{ color:rgba(255,255,255,0.72); }
[data-theme="dark"] .price-card.featured .pc-feat li{ color:rgba(10,10,10,0.7); }
.price-card.featured .pc-period{ color:rgba(255,255,255,0.5); }
.price-card.featured .pc-cta{ border-color:currentColor; }
.price-card.featured .pc-cta:hover{ background:var(--bg); color:var(--ink); }
@media (max-width:840px){ .pricing-grid{grid-template-columns:1fr;} }

/* service cta band */
.svc-cta{ border-top:1px solid var(--line); }
.svc-cta-inner{ display:flex; justify-content:space-between; align-items:center; gap:40px; flex-wrap:wrap; }
.svc-cta h2{ font-family:var(--display); font-weight:500; font-size:clamp(1.8rem,3.6vw,2.8rem); line-height:1.1; letter-spacing:-0.015em; max-width:560px; }

/* other-services strip */
.more-svc{ border-top:1px solid var(--line); }
.more-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:0; border-left:1px solid var(--line); border-top:1px solid var(--line); }
.more-grid a{ border-right:1px solid var(--line); border-bottom:1px solid var(--line); padding:26px 24px; display:flex; flex-direction:column; gap:8px; transition:background .3s ease, color .3s ease; }
.more-grid a:hover{ background:var(--ink); color:var(--bg); }
.more-grid a .mn{ font-family:var(--mono); font-size:0.72rem; color:var(--ink-faint); }
.more-grid a:hover .mn{ color:var(--accent); }
.more-grid a h4{ font-family:var(--display); font-weight:500; font-size:1.1rem; letter-spacing:-0.01em; }
@media (max-width:760px){ .more-grid{grid-template-columns:1fr;} }

/* ========== VISION V2 — 3-card layout ========== */
.vision-v2 { position:relative; overflow:hidden; }

/* Cursor spotlight */
.vision-spotlight {
  position:absolute; inset:0; pointer-events:none; z-index:1;
  background:radial-gradient(circle 600px at var(--vx,-20%) var(--vy,-20%),
    rgba(181,83,44,0.09) 0%, rgba(181,83,44,0.03) 50%, transparent 72%);
  opacity:0; transition:opacity .5s ease;
}
[data-theme="dark"] .vision-spotlight {
  background:radial-gradient(circle 600px at var(--vx,-20%) var(--vy,-20%),
    rgba(224,138,79,0.13) 0%, rgba(224,138,79,0.04) 50%, transparent 72%);
}

/* Background numeral */
.vision-bg-num {
  position:absolute; top:15%; right:-30px;
  font-family:var(--display); font-size:clamp(14rem, 34vw, 38rem);
  font-weight:500; letter-spacing:-0.06em; line-height:1;
  color:var(--ink); opacity:0.025;
  pointer-events:none; user-select:none; z-index:0;
}
[data-theme="dark"] .vision-bg-num { opacity:0.038; }
.vision-v2 .wrap { position:relative; z-index:2; }

/* ── 3-card grid ── */
.vm-cards {
  display:grid; grid-template-columns:1fr 1fr 1fr;
  border:1px solid var(--line-strong);
}
.vm-card {
  padding:52px 44px;
  display:flex; flex-direction:column; gap:26px;
  border-right:1px solid var(--line-strong);
  position:relative; overflow:hidden; cursor:default;
}
.vm-card:last-child { border-right:none; }

/* Tag */
.vmc-tag {
  font-family:var(--mono); font-size:0.72rem; letter-spacing:0.1em;
  text-transform:uppercase; color:var(--accent); transition:color .3s ease;
}

/* Heading */
.vm-card h3 {
  font-family:var(--display); font-weight:500;
  font-size:clamp(1.55rem, 2.4vw, 2.05rem);
  letter-spacing:-0.015em; line-height:1.1;
  will-change:transform; transition:color .3s ease;
}

/* Body */
.vmc-body {
  font-size:0.96rem; color:var(--ink-soft); line-height:1.8; flex:1;
  transition:color .3s ease;
}

/* Values list */
.vmc-values { display:flex; flex-direction:column; flex:1; }
.vmc-value {
  display:flex; align-items:baseline; gap:14px;
  padding:13px 0; border-bottom:1px solid var(--line);
  transition:border-color .3s ease;
}
.vmc-value:first-child { padding-top:0; }
.vmc-value:last-child { border-bottom:none; padding-bottom:0; }
.vv-num {
  font-family:var(--mono); font-size:0.64rem; color:var(--accent);
  letter-spacing:0.06em; flex-shrink:0; padding-top:3px;
}
.vv-body { display:flex; flex-direction:column; gap:2px; }
.vv-name {
  font-family:var(--display); font-weight:500; font-size:1.02rem;
  letter-spacing:-0.01em; line-height:1.2; transition:color .3s ease;
}
.vv-desc {
  font-size:0.82rem; color:var(--ink-soft); line-height:1.55;
  transition:color .3s ease;
}

/* ── Ink-fill sweep ── */
.vm-card::before {
  content:''; position:absolute; inset:0;
  background:var(--ink);
  transform:translateX(-101%);
  transition:transform .52s cubic-bezier(.16,.84,.44,1);
  z-index:0;
}
.vm-card.vm-hover::before { transform:translateX(0); }
.vm-card > * { position:relative; z-index:1; }

/* Border softens on hover */
.vm-card.vm-hover { border-color:rgba(250,250,248,0.13); }
[data-theme="dark"] .vm-card.vm-hover { border-color:rgba(10,10,10,0.14); }

/* Content colour transitions */
.vm-card.vm-hover h3         { color:var(--bg); }
.vm-card.vm-hover .vmc-body  { color:rgba(250,250,248,0.64); }
.vm-card.vm-hover .vmc-value { border-color:rgba(250,250,248,0.13); }
.vm-card.vm-hover .vv-name   { color:var(--bg); }
.vm-card.vm-hover .vv-desc   { color:rgba(250,250,248,0.6); }
[data-theme="dark"] .vm-card.vm-hover h3        { color:var(--invert-ink); }
[data-theme="dark"] .vm-card.vm-hover .vmc-body { color:rgba(10,10,10,0.65); }
[data-theme="dark"] .vm-card.vm-hover .vmc-value{ border-color:rgba(10,10,10,0.14); }
[data-theme="dark"] .vm-card.vm-hover .vv-name  { color:var(--invert-ink); }
[data-theme="dark"] .vm-card.vm-hover .vv-desc  { color:rgba(10,10,10,0.6); }

/* Accent sweep line at card bottom */
.vm-row-line {
  position:absolute; bottom:0; left:0; right:0; height:1px; z-index:3; overflow:hidden;
}
.vm-row-line::after {
  content:''; position:absolute; inset:0; width:0;
  background:var(--accent);
  transition:width .7s cubic-bezier(.2,.8,.2,1) .06s;
}
.vm-card.vm-hover .vm-row-line::after { width:100%; }

/* Responsive */
@media (max-width:900px) {
  .vm-cards { grid-template-columns:1fr; }
  .vm-card { border-right:none; border-bottom:1px solid var(--line-strong); padding:40px 32px; }
  .vm-card:last-child { border-bottom:none; }
}
@media (max-width:580px) {
  .vm-card { padding:36px 24px; }
}

/* ========== ABOUT V2 REDESIGN ========== */
.about-v2 { position:relative; overflow:hidden; }

/* Giant atmospheric background word */
.about-bg-eco {
  position:absolute; top:42%; left:50%;
  transform:translateX(-50%);
  font-family:var(--display); font-size:clamp(8rem, 20vw, 22rem);
  font-weight:500; letter-spacing:-0.04em; color:var(--ink);
  opacity:0.03; white-space:nowrap; pointer-events:none; user-select:none;
  z-index:0;
}
[data-theme="dark"] .about-bg-eco { opacity:0.045; }
.about-v2 .wrap { position:relative; z-index:1; }

/* Opener — mega heading left, intro right */
.about-opener {
  display:grid; grid-template-columns:1fr 1fr;
  gap:80px; align-items:start; margin-bottom:80px;
}
.about-display {
  font-family:var(--display); font-weight:500;
  font-size:clamp(2.8rem, 5.5vw, 4.8rem);
  letter-spacing:-0.025em; line-height:0.97;
}
.about-display em { font-style:italic; font-weight:400; }
.about-opener-right { padding-top:94px; }
.about-lead-p {
  font-size:1.07rem; color:var(--ink-soft); line-height:1.85; margin-bottom:18px;
}

/* Division cards */
.about-div-grid {
  display:grid; grid-template-columns:1fr 1fr;
  border:1px solid var(--line-strong); margin-bottom:100px;
}
.about-div-card {
  padding:60px 52px; display:flex; flex-direction:column; gap:28px;
}
.about-div-card:first-child { border-right:1px solid var(--line-strong); }
.about-div-card--alt { background:var(--ink); color:var(--bg); }

.adc-top { display:flex; align-items:baseline; gap:22px; }
.adc-roman {
  font-family:var(--display); font-size:5rem; font-weight:500;
  line-height:1; letter-spacing:-0.04em;
  color:var(--ink); opacity:0.07; flex-shrink:0;
}
.adc-roman--alt { color:var(--bg); opacity:0.1; }
.adc-tag {
  font-family:var(--mono); font-size:0.72rem; letter-spacing:0.1em;
  text-transform:uppercase; color:var(--accent);
}
.adc-title {
  font-family:var(--display); font-weight:500;
  font-size:clamp(1.5rem, 2.5vw, 2rem);
  line-height:1.12; letter-spacing:-0.015em;
}
.adc-body {
  font-size:0.98rem; line-height:1.8; color:var(--ink-soft); flex:1;
}
.about-div-card--alt .adc-body { color:rgba(250,250,248,0.62); }
[data-theme="dark"] .about-div-card--alt .adc-body { color:rgba(10,10,10,0.62); }

.adc-services {
  display:flex; flex-wrap:wrap; gap:7px;
  padding-top:22px; border-top:1px solid var(--line);
}
.about-div-card--alt .adc-services { border-color:rgba(250,250,248,0.16); }
[data-theme="dark"] .about-div-card--alt .adc-services { border-color:rgba(10,10,10,0.16); }
.adc-services span {
  font-family:var(--mono); font-size:0.65rem; letter-spacing:0.03em;
  border:1px solid var(--line); padding:5px 12px; border-radius:40px;
  color:var(--ink-soft); white-space:nowrap;
}
.about-div-card--alt .adc-services span {
  border-color:rgba(250,250,248,0.2); color:rgba(250,250,248,0.72);
}
[data-theme="dark"] .about-div-card--alt .adc-services span {
  border-color:rgba(10,10,10,0.2); color:rgba(10,10,10,0.72);
}

/* Future paragraph */
.about-future-p {
  margin-top:22px; padding-top:22px; border-top:1px solid var(--line);
  font-size:0.9rem; color:var(--ink-faint); line-height:1.85;
  font-family:var(--mono); letter-spacing:0.01em;
}

/* Future horizons animated ticker */
.about-ticker {
  border-top:1px solid var(--line); padding-top:32px;
  margin-top:80px; overflow:hidden;
}
.ticker-eyebrow {
  font-family:var(--mono); font-size:0.7rem; letter-spacing:0.12em;
  text-transform:uppercase; color:var(--ink-faint); display:block; margin-bottom:14px;
}
.ticker-wrap {
  overflow:hidden; width:100%;
  mask-image:linear-gradient(to right, transparent, black 80px, black calc(100% - 80px), transparent);
  -webkit-mask-image:linear-gradient(to right, transparent, black 80px, black calc(100% - 80px), transparent);
}
.ticker-inner {
  display:flex; align-items:center; gap:36px; width:max-content;
  animation:tickerRoll 52s linear infinite;
  font-family:var(--display); font-size:clamp(1.15rem, 2.3vw, 1.75rem);
  font-weight:500; letter-spacing:-0.01em; padding:8px 0;
}
.ticker-inner .td {
  font-family:var(--mono); font-size:0.85rem; color:var(--accent); flex-shrink:0;
}
@keyframes tickerRoll {
  from { transform:translateX(0); }
  to   { transform:translateX(-50%); }
}
@media (prefers-reduced-motion:reduce) { .ticker-inner { animation:none; } }

/* About V2 responsive */
@media (max-width:1020px) {
  .about-opener { grid-template-columns:1fr; gap:32px; }
  .about-opener-right { padding-top:0; }
  .about-div-grid { grid-template-columns:1fr; }
  .about-div-card:first-child { border-right:none; border-bottom:1px solid var(--line-strong); }
  .about-div-card { padding:44px 36px; }
}
@media (max-width:640px) {
  .about-display { font-size:2.6rem; }
  .about-div-card { padding:36px 24px; gap:20px; }
  .adc-roman { font-size:3.5rem; }
  .about-ticker { margin-top:56px; }
}

/* ========== HOW WE WORK — open flow ========== */
.how-we-work { position:relative; overflow:hidden; }

.hww-bg-num {
  position:absolute; top:10%; right:-60px;
  font-family:var(--display); font-size:clamp(14rem,30vw,34rem);
  font-weight:500; letter-spacing:-0.06em; line-height:1;
  color:var(--ink); opacity:0.025;
  pointer-events:none; user-select:none; z-index:0;
}
[data-theme="dark"] .hww-bg-num { opacity:0.038; }
.how-we-work .wrap { position:relative; z-index:1; }

/* Rail + flow grid */
.hww-flow {
  position:relative;
  display:grid; grid-template-columns:repeat(4,1fr);
  gap:0;
  padding-top:48px;
}

/* Connecting rail */
.hww-rail {
  position:absolute; top:0; left:0; right:0; height:48px;
  pointer-events:none;
}
.hww-rail-line {
  position:absolute; top:20px; left:12.5%; right:12.5%;
  height:1px; background:var(--line);
}
.hww-rail-dot {
  position:absolute; top:14px; width:13px; height:13px;
  border-radius:50%; border:1px solid var(--line-strong);
  background:var(--bg); transform:translateX(-50%);
  transition:background .28s ease, border-color .28s ease, transform .35s cubic-bezier(.2,.8,.2,1);
}
.hww-rail-dot::after {
  content:''; position:absolute; top:50%; left:50%;
  transform:translate(-50%,-50%);
  width:5px; height:5px; border-radius:50%; background:var(--accent);
  opacity:0.5;
}

/* Each step */
.hww-fs {
  padding:36px 36px 44px;
  display:flex; flex-direction:column; gap:14px;
  position:relative;
}
.hww-fs:not(:last-child)::after {
  content:''; position:absolute; right:0; top:48px; bottom:0;
  width:1px; background:var(--line);
}

/* Hover — light dot fill + subtle bg */
.hww-fs:hover .hww-rail-dot { background:var(--accent); border-color:var(--accent); }

/* Background giant numeral */
.hww-fs-numwrap { position:relative; height:52px; overflow:hidden; }
.hww-fs-bg {
  position:absolute; top:-18px; left:-8px;
  font-family:var(--display); font-size:5.5rem; font-weight:500;
  letter-spacing:-0.06em; line-height:1;
  color:var(--ink); opacity:0.055; pointer-events:none; user-select:none;
  will-change:transform;
}
[data-theme="dark"] .hww-fs-bg { opacity:0.07; }

/* Icon */
.hww-fs-icon {
  width:40px; height:40px; color:var(--ink);
  will-change:transform;
}
.hww-fs-icon svg { width:100%; height:100%; }

/* Title */
.hww-fs-title {
  font-family:var(--display); font-weight:500;
  font-size:1.5rem; letter-spacing:-0.02em; line-height:1.08;
  will-change:transform;
}

/* Description */
.hww-fs-desc {
  font-size:0.9rem; line-height:1.75; color:var(--ink-soft); flex:1;
}

/* Tags */
.hww-fs-tags {
  display:flex; flex-wrap:wrap; gap:6px; margin-top:4px;
}
.hww-fs-tags span {
  font-family:var(--mono); font-size:0.61rem; letter-spacing:0.04em;
  color:var(--ink-faint); padding:3px 10px;
  border-bottom:1px solid var(--line);
}

/* Promise strip */
.hww-promise {
  border-top:1px solid var(--line); padding:36px 0 0;
  margin-top:48px;
  display:flex; align-items:flex-start; gap:48px; flex-wrap:wrap;
}
.hww-promise-label {
  font-family:var(--mono); font-size:0.67rem; letter-spacing:0.12em;
  text-transform:uppercase; color:var(--ink-faint); flex-shrink:0;
  white-space:nowrap; padding-top:2px;
}
.hww-promise-items {
  display:flex; flex-wrap:wrap; gap:16px 40px; flex:1;
}
.hww-pi {
  display:flex; align-items:center; gap:10px;
  font-size:0.88rem; color:var(--ink-soft);
}
.hww-pi-dot {
  width:4px; height:4px; border-radius:50%;
  background:var(--accent); flex-shrink:0;
}

/* Responsive */
@media (max-width:960px) {
  .hww-flow { grid-template-columns:repeat(2,1fr); }
  .hww-fs:nth-child(3) { grid-column:1; }
  .hww-fs:nth-child(2)::after, .hww-fs:nth-child(4)::after { display:none; }
  .hww-fs:nth-child(2), .hww-fs:nth-child(3) { border-top:1px solid var(--line); }
  .hww-rail { display:none; }
  .hww-flow { padding-top:0; }
}
@media (max-width:600px) {
  .hww-flow { grid-template-columns:1fr; }
  .hww-fs::after { display:none; }
  .hww-fs { border-top:1px solid var(--line); padding:28px 0 32px; }
  .hww-promise { gap:28px; }
}

/* ========== PROJECTS V2 — Ticker + Drawer ========== */

/* Ticker outer wrapper */
.proj-ticker-outer {
  overflow:hidden; padding:44px 0;
  mask-image:linear-gradient(to right, transparent, black 100px, black calc(100% - 100px), transparent);
  -webkit-mask-image:linear-gradient(to right, transparent, black 100px, black calc(100% - 100px), transparent);
}

/* Ticker track */
.proj-ticker {
  display:flex; gap:28px; width:max-content;
  animation:projScroll 36s linear infinite;
}
.proj-ticker:hover { animation-play-state:paused; }
@keyframes projScroll {
  from { transform:translateX(0); }
  to   { transform:translateX(-50%); }
}
@media (prefers-reduced-motion:reduce) { .proj-ticker { animation:none; } }

/* Individual ticker card */
.proj-tick-card {
  width:360px; flex:none; background:var(--bg);
  border:1px solid var(--line); cursor:pointer;
  transition:border-color .3s ease, transform .32s cubic-bezier(.2,.8,.2,1),
             box-shadow .32s cubic-bezier(.2,.8,.2,1);
  overflow:hidden; position:relative;
}
.proj-tick-card:hover {
  border-color:var(--line-strong);
  transform:translateY(-6px);
  box-shadow:0 18px 44px -10px rgba(0,0,0,.16);
}
[data-theme="dark"] .proj-tick-card:hover {
  box-shadow:0 18px 44px -10px rgba(0,0,0,.5);
}

/* Card media */
.ptc-media {
  aspect-ratio:16/9; display:flex; align-items:center; justify-content:center;
  color:var(--ink); overflow:hidden; transition:transform .5s cubic-bezier(.2,.8,.2,1);
}
.proj-tick-card:hover .ptc-media { transform:scale(1.03); }
.ptc-media--1 { background:var(--accent-soft); }
.ptc-media--2 { background:rgba(10,10,10,0.055); }
[data-theme="dark"] .ptc-media--2 { background:rgba(250,250,248,0.07); }
.ptc-media--3 { background:var(--accent-soft); opacity:0.82; }
.ptc-media svg { width:66%; height:66%; opacity:0.55; transition:opacity .3s ease; }
.proj-tick-card:hover .ptc-media svg { opacity:0.8; }

/* Card body */
.ptc-body { padding:22px 24px 26px; display:flex; flex-direction:column; gap:8px; }
.ptc-cat {
  font-family:var(--mono); font-size:0.64rem; letter-spacing:0.08em;
  text-transform:uppercase; color:var(--ink-faint);
  display:flex; justify-content:space-between;
}
.ptc-title {
  font-family:var(--display); font-weight:500; font-size:1.22rem;
  letter-spacing:-0.01em; line-height:1.2;
}
.ptc-result { font-size:0.87rem; color:var(--ink-soft); line-height:1.58; }
.ptc-cue {
  font-family:var(--mono); font-size:0.63rem; letter-spacing:0.07em;
  text-transform:uppercase; color:var(--accent); margin-top:6px;
  opacity:0; transform:translateX(-6px);
  transition:opacity .25s ease, transform .25s ease;
}
.proj-tick-card:hover .ptc-cue { opacity:1; transform:translateX(0); }

/* ── Project detail drawer ── */
.proj-drawer {
  position:fixed; inset:0; z-index:800;
  display:flex; align-items:flex-end;
  opacity:0; visibility:hidden;
  transition:opacity .4s ease, visibility .4s ease;
  background:rgba(10,10,10,0);
}
.proj-drawer.open {
  opacity:1; visibility:visible;
  background:rgba(10,10,10,0.68);
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
}

.pd-inner {
  width:100%; max-height:82vh; overflow-y:auto;
  background:var(--bg); border-top:1px solid var(--line-strong);
  display:grid; grid-template-columns:1fr 1.4fr;
  transform:translateY(100%);
  transition:transform .5s cubic-bezier(.16,.84,.44,1);
  position:relative;
}
.proj-drawer.open .pd-inner { transform:translateY(0); }

.pd-close {
  position:absolute; top:22px; right:24px; z-index:2;
  background:var(--bg); border:1px solid var(--line-strong); border-radius:50%;
  width:38px; height:38px; cursor:pointer; padding:0;
  display:flex; align-items:center; justify-content:center;
  color:var(--ink); font-size:0.85rem; line-height:1;
  transition:background .22s ease, color .22s ease, border-color .22s ease;
}
.pd-close:hover { background:var(--ink); color:var(--bg); border-color:var(--ink); }

.pd-media {
  border-right:1px solid var(--line-strong); min-height:380px;
  display:flex; flex-direction:column;
}
.pd-media image-slot { flex:1; display:block; width:100%; min-height:380px; }

.pd-body {
  padding:60px 52px 56px;
  display:flex; flex-direction:column; gap:20px;
}
.pd-cat { display:flex; align-items:center; gap:14px; }
.pd-cat-badge {
  font-family:var(--mono); font-size:0.68rem; letter-spacing:0.1em; text-transform:uppercase;
  background:var(--accent-soft); color:var(--accent); padding:4px 12px; border-radius:40px;
}
.pd-year { font-family:var(--mono); font-size:0.7rem; color:var(--ink-faint); }
.pd-title {
  font-family:var(--display); font-weight:500;
  font-size:clamp(1.9rem, 3.2vw, 2.8rem);
  letter-spacing:-0.02em; line-height:1.06;
}
.pd-result { font-size:1.05rem; color:var(--ink-soft); line-height:1.8; max-width:520px; }
.pd-tags {
  display:flex; flex-wrap:wrap; gap:8px;
  padding-top:16px; border-top:1px solid var(--line);
  font-family:var(--mono); font-size:0.7rem; color:var(--ink-faint);
}
.pd-tags span { border:1px solid var(--line); border-radius:20px; padding:4px 12px; }
.pd-cta { align-self:flex-start; margin-top:8px; }

/* Drawer responsive */
@media (max-width:860px) {
  .pd-inner { grid-template-columns:1fr; }
  .pd-media { border-right:none; border-bottom:1px solid var(--line-strong); min-height:220px; }
  .pd-media image-slot { min-height:220px; }
  .pd-body { padding:40px 32px 44px; }
}
@media (max-width:560px) {
  .proj-tick-card { width:280px; }
  .pd-body { padding:36px 24px 40px; }
}

/* ========== SERVICES SECTION ENHANCEMENT ========== */

/* Header wrap — contains overflow for bg number */
.svc-header-wrap { position:relative; overflow:hidden; }
.svc-header-wrap .wrap { position:relative; z-index:1; }

/* Atmospheric bg number */
.svc-bg-num {
  position:absolute; top:-30px; right:-30px;
  font-family:var(--display); font-size:clamp(12rem, 28vw, 32rem);
  font-weight:500; letter-spacing:-0.06em; line-height:1;
  color:var(--ink); opacity:0.025;
  pointer-events:none; user-select:none; z-index:0;
}
[data-theme="dark"] .svc-bg-num { opacity:0.038; }

/* Preview panel cursor spotlight */
.service-preview { overflow:hidden; }
.service-preview::after {
  content:''; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(circle 320px at var(--spx,-50%) var(--spy,-50%),
    rgba(181,83,44,0.08) 0%, transparent 72%);
  opacity:0; transition:opacity .45s ease; z-index:0;
}
[data-theme="dark"] .service-preview::after {
  background:radial-gradient(circle 320px at var(--spx,-50%) var(--spy,-50%),
    rgba(224,138,79,0.11) 0%, transparent 72%);
}
.service-preview[data-spot-active]::after { opacity:1; }
.service-preview > * { position:relative; z-index:1; }

/* Sub-services block */
.sp-subs {
  margin-top:18px; padding-top:18px; border-top:1px solid var(--line);
}
.ss-label {
  font-family:var(--mono); font-size:0.64rem; letter-spacing:0.12em;
  text-transform:uppercase; color:var(--ink-faint);
  display:block; margin-bottom:10px;
}
.ss-list {
  list-style:none;
  display:grid; grid-template-columns:1fr 1fr; gap:5px 20px;
}
.ss-list li {
  font-family:var(--mono); font-size:0.67rem; color:var(--ink-soft);
  letter-spacing:0.02em; display:flex; align-items:center; gap:7px; line-height:1.4;
}
.ss-list li::before { content:'—'; color:var(--accent); flex-shrink:0; }

/* Service tag badge */
.sp-tag-badge {
  background:var(--accent-soft); color:var(--accent);
  border-radius:40px; padding:4px 12px;
  font-family:var(--mono); font-size:0.65rem;
  letter-spacing:0.07em; text-transform:uppercase;
  transition:background .3s ease, color .3s ease;
}

/* SVG diagram element stagger on activation */
@keyframes svgItemIn {
  from { transform:translateY(5px); opacity:0; }
  to   { transform:translateY(0);   opacity:1; }
}
.sp-stage svg.active > *:nth-child(1) { animation:svgItemIn .45s cubic-bezier(.2,.8,.2,1)  30ms both; }
.sp-stage svg.active > *:nth-child(2) { animation:svgItemIn .45s cubic-bezier(.2,.8,.2,1)  80ms both; }
.sp-stage svg.active > *:nth-child(3) { animation:svgItemIn .45s cubic-bezier(.2,.8,.2,1) 130ms both; }
.sp-stage svg.active > *:nth-child(4) { animation:svgItemIn .45s cubic-bezier(.2,.8,.2,1) 180ms both; }
.sp-stage svg.active > *:nth-child(5) { animation:svgItemIn .45s cubic-bezier(.2,.8,.2,1) 230ms both; }
.sp-stage svg.active > *:nth-child(6) { animation:svgItemIn .45s cubic-bezier(.2,.8,.2,1) 280ms both; }
.sp-stage svg.active > *:nth-child(7) { animation:svgItemIn .45s cubic-bezier(.2,.8,.2,1) 330ms both; }
.sp-stage svg.active > *:nth-child(8) { animation:svgItemIn .45s cubic-bezier(.2,.8,.2,1) 380ms both; }
@media (prefers-reduced-motion:reduce) {
  .sp-stage svg.active > * { animation:none; }
}

/* ========== TEAM V2 ========== */
.team-v2 { position:relative; overflow:hidden; }

.team-bg-num {
  position:absolute; top:10%; left:-40px;
  font-family:var(--display); font-size:clamp(14rem, 34vw, 38rem);
  font-weight:500; letter-spacing:-0.06em; line-height:1;
  color:var(--ink); opacity:0.025;
  pointer-events:none; user-select:none; z-index:0;
}
[data-theme="dark"] .team-bg-num { opacity:0.038; }
.team-v2 .wrap { position:relative; z-index:1; }

/* ── Simple minimal 4-col team grid ── */
.team-simple-grid {
  display:grid; grid-template-columns:repeat(4,1fr); gap:32px;
}
.tsm-card { display:flex; flex-direction:column; gap:12px; }
.tsm-photo {
  width:100%; aspect-ratio:1/1; overflow:hidden;
  background:rgba(10,10,10,0.055);
  transition:opacity .3s ease;
}
[data-theme="dark"] .tsm-photo { background:rgba(250,250,248,0.07); }
.tsm-photo image-slot { display:block; width:100%; height:100%; }
.tsm-photo img { display:block; width:100%; height:100%; object-fit:cover; object-position:center top; }
.tsm-card:hover .tsm-photo { opacity:0.85; }
.tsm-name {
  font-family:var(--display); font-weight:500; font-size:1.05rem;
  letter-spacing:-0.01em; margin:0;
}
.tsm-role {
  font-family:var(--mono); font-size:0.65rem; letter-spacing:0.09em;
  text-transform:uppercase; color:var(--ink-faint);
}
@media (max-width:700px) { .team-simple-grid { grid-template-columns:repeat(2,1fr); gap:24px; } }
@media (max-width:400px) { .team-simple-grid { grid-template-columns:1fr 1fr; gap:18px; } }

/* ========== PRE-FOOTER CTA STRIP ========== */
.footer-cta-strip {
  border-top:1px solid var(--line-strong);
  border-bottom:1px solid var(--line-strong);
}
.fcs-inner {
  display:flex; align-items:center; justify-content:space-between;
  gap:32px; padding:40px 0; flex-wrap:wrap;
}
.fcs-label {
  font-family:var(--mono); font-size:0.72rem; letter-spacing:0.1em;
  text-transform:uppercase; color:var(--ink-faint);
}
.fcs-link {
  display:flex; align-items:center; gap:18px;
  font-family:var(--display); font-weight:500;
  font-size:clamp(1.8rem,3.8vw,3.4rem);
  letter-spacing:-0.025em; color:var(--ink); text-decoration:none;
  transition:color .28s ease;
}
.fcs-link:hover { color:var(--accent); }
.fcs-arrow {
  font-size:0.7em; opacity:0.5;
  transition:transform .35s cubic-bezier(.2,.8,.2,1), opacity .28s ease;
}
.fcs-link:hover .fcs-arrow { transform:rotate(45deg) scale(1.2); opacity:1; }

/* ========== SITE FOOTER ========== */
.site-footer {
  background:var(--ink); color:var(--bg);
  padding:72px 0 0;
}
[data-theme="dark"] .site-footer {
  background:rgba(250,250,248,0.05);
  border-top:1px solid var(--line-strong);
  color:var(--ink);
}

/* Top row */
.sf-top {
  display:flex; justify-content:space-between; align-items:flex-start;
  gap:40px; padding-bottom:64px;
  border-bottom:1px solid rgba(250,250,248,0.1);
  flex-wrap:wrap;
}
[data-theme="dark"] .sf-top { border-bottom-color:var(--line); }

.sf-wordmark {
  display:block; font-family:var(--display); font-weight:500;
  font-size:clamp(3.5rem,8vw,7rem); letter-spacing:-0.04em; line-height:0.9;
  color:rgba(250,250,248,0.92);
}
[data-theme="dark"] .sf-wordmark { color:var(--ink); }
.sf-tagline {
  margin-top:20px; font-size:0.97rem; line-height:1.8;
  color:rgba(250,250,248,0.42);
}
[data-theme="dark"] .sf-tagline { color:var(--ink-faint); }

.sf-badges { display:flex; flex-direction:column; gap:10px; align-items:flex-end; padding-top:8px; }
.sf-div-pill {
  font-family:var(--mono); font-size:0.68rem; letter-spacing:0.09em;
  text-transform:uppercase; padding:7px 18px;
  border:1px solid rgba(250,250,248,0.18); border-radius:40px;
  color:rgba(250,250,248,0.55); white-space:nowrap;
}
[data-theme="dark"] .sf-div-pill { border-color:var(--line); color:var(--ink-faint); }

/* Nav grid */
.sf-nav {
  display:grid; grid-template-columns:1.6fr 0.8fr;
  gap:60px; padding:56px 0 64px;
  border-bottom:1px solid rgba(250,250,248,0.1);
}
[data-theme="dark"] .sf-nav { border-bottom-color:var(--line); }

.sf-col-head {
  display:block; font-family:var(--mono); font-size:0.67rem;
  letter-spacing:0.1em; text-transform:uppercase;
  color:rgba(250,250,248,0.35); margin-bottom:18px;
}
[data-theme="dark"] .sf-col-head { color:var(--ink-faint); }

.sf-links { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:0; }
.sf-links li { border-bottom:1px solid rgba(250,250,248,0.07); }
[data-theme="dark"] .sf-links li { border-bottom-color:var(--line); }
.sf-links a {
  display:block; padding:10px 0; font-size:0.9rem;
  color:rgba(250,250,248,0.55); text-decoration:none;
  transition:color .22s ease, padding-left .22s ease;
}
[data-theme="dark"] .sf-links a { color:var(--ink-soft); }
.sf-links a:hover { color:var(--accent); padding-left:6px; }

/* Bottom bar */
.sf-bottom {
  display:flex; align-items:center; justify-content:space-between;
  gap:20px; padding:26px 0; flex-wrap:wrap;
}
.sf-copy {
  font-family:var(--mono); font-size:0.7rem; letter-spacing:0.06em;
  color:rgba(250,250,248,0.28);
}
[data-theme="dark"] .sf-copy { color:var(--ink-faint); }
.sf-bottom-right { display:flex; align-items:center; gap:28px; }
.sf-built {
  font-family:var(--mono); font-size:0.68rem; letter-spacing:0.06em;
  color:rgba(250,250,248,0.22); font-style:italic;
}
[data-theme="dark"] .sf-built { color:var(--ink-faint); }

/* Back to top button */
.sf-top-btn {
  display:flex; align-items:center; gap:10px;
  background:transparent; border:1px solid rgba(250,250,248,0.2); border-radius:40px;
  padding:9px 20px; cursor:pointer; color:rgba(250,250,248,0.6);
  font-family:var(--mono); font-size:0.68rem; letter-spacing:0.07em; text-transform:uppercase;
  transition:background .28s ease, border-color .28s ease, color .28s ease;
  position:relative; overflow:hidden;
}
[data-theme="dark"] .sf-top-btn { border-color:var(--line); color:var(--ink-faint); }
.sf-top-btn::before {
  content:''; position:absolute; inset:0;
  background:var(--accent);
  transform:translateX(-101%);
  transition:transform .4s cubic-bezier(.16,.84,.44,1); z-index:0;
}
.sf-top-btn:hover::before { transform:translateX(0); }
.sf-top-btn:hover { border-color:var(--accent); color:#fff; }
.sf-top-btn span { position:relative; z-index:1; }
.sf-top-arrow { transition:transform .3s ease; }
.sf-top-btn:hover .sf-top-arrow { transform:translateY(-3px); }

/* Footer responsive */
@media (max-width:900px) {
  .sf-nav { grid-template-columns:1fr 1fr; gap:40px; }
  .sf-top { flex-direction:column; gap:28px; }
  .sf-badges { align-items:flex-start; flex-direction:row; flex-wrap:wrap; }
}
@media (max-width:600px) {
  .sf-nav { grid-template-columns:1fr; gap:40px; }
  .sf-bottom { flex-direction:column; align-items:flex-start; gap:16px; }
  .fcs-link { font-size:1.9rem; }
  .sf-wordmark { font-size:3.5rem; }
}

/* Section counter hidden */
#section-counter { display: none !important; }

/* User request: remove custom cursor dot and ring, restore native cursor */
.cursor-dot, .cursor-ring { display: none !important; }
.has-cursor * { cursor: auto !important; }


/* ===== SERVICE PAGE — ENHANCED ===== */

/* Hero */
.svc-hero { position:relative; overflow:hidden; padding:180px 0 100px; }
.svc-hero .wrap { position:relative; z-index:1; }
.svc-hero-bg-num {
  position:absolute; right:-40px; top:50%; transform:translateY(-50%);
  font-family:var(--display); font-size:clamp(14rem,28vw,32rem);
  font-weight:500; letter-spacing:-0.06em; line-height:1;
  color:var(--ink); opacity:0.025; pointer-events:none; user-select:none; z-index:0;
}
[data-theme="dark"] .svc-hero-bg-num { opacity:0.038; }
.svc-hero h1 {
  font-size:clamp(3rem,6.5vw,5.6rem); line-height:0.97;
  letter-spacing:-0.025em; max-width:900px; margin-bottom:28px;
}
.svc-breadcrumb {
  display:flex; align-items:center; justify-content:space-between;
  gap:20px; margin-bottom:64px; flex-wrap:wrap;
}
.svc-dots { display:flex; gap:6px; align-items:center; }
.svc-dot {
  width:6px; height:6px; border-radius:50%;
  background:var(--ink); opacity:0.15; flex-shrink:0;
}
.svc-dot.on { background:var(--accent); opacity:1; }
.svc-hero-actions {
  display:flex; align-items:center; gap:18px; margin-top:44px; flex-wrap:wrap;
}

/* Stats strip */
.svc-stats-strip {
  display:grid; grid-template-columns:repeat(3,1fr);
  border:1px solid var(--line); border-right:none;
}
.svc-stat-cell {
  padding:44px 48px; border-right:1px solid var(--line);
  transition:background .3s ease;
}
.svc-stat-cell:hover { background:color-mix(in srgb, var(--ink) 4%, transparent); }
.svc-stat-val {
  font-family:var(--display); font-weight:500;
  font-size:clamp(2.6rem,5vw,4.2rem); letter-spacing:-0.03em; line-height:1;
  margin-bottom:12px;
}
.svc-stat-val em { font-style:normal; color:var(--accent); }
.svc-stat-lbl {
  font-family:var(--mono); font-size:0.76rem; letter-spacing:0.04em;
  color:var(--ink-soft); line-height:1.55;
}
@media (max-width:760px) {
  .svc-stats-strip { grid-template-columns:1fr 1fr; }
  .svc-stat-cell { padding:30px 28px; }
  .svc-stats-strip .svc-stat-cell:nth-child(3) { grid-column:1/-1; }
}
@media (max-width:480px) {
  .svc-stats-strip { grid-template-columns:1fr; }
  .svc-stats-strip .svc-stat-cell:nth-child(3) { grid-column:auto; }
}

/* FAQ section */
.faq-head { margin-bottom:48px; }
.faq-list { border-top:1px solid var(--line); }
.faq-item {
  border-bottom:1px solid var(--line); padding:32px 0;
  display:grid; grid-template-columns:1fr 1.5fr; gap:48px; align-items:start;
}
.faq-q {
  font-family:var(--display); font-weight:500; font-size:1.1rem;
  letter-spacing:-0.01em; line-height:1.35; color:var(--ink);
}
.faq-a { font-size:0.97rem; color:var(--ink-soft); line-height:1.78; }
@media (max-width:720px) {
  .faq-item { grid-template-columns:1fr; gap:12px; padding:24px 0; }
}

/* Section flush — removes inherited section padding */
.rule-flush { padding:0; }

/* Consistent inner wrap padding for svc-cta and more-svc (replaces inline styles) */
.svc-cta .wrap { padding-top:110px; padding-bottom:110px; }
.more-svc .wrap { padding-top:90px; padding-bottom:120px; }

/* Enhanced CTA inner layout */
.svc-cta-inner { gap:48px; }
.svc-cta-sub { font-size:1rem; color:var(--ink-soft); margin-top:12px; line-height:1.65; }
.svc-cta-btns { display:flex; gap:16px; flex-wrap:wrap; align-items:center; flex-shrink:0; }

/* ========== CROSS-DEVICE RESPONSIVE IMPROVEMENTS ========== */

/* Hero — use small/dynamic viewport height so mobile browser chrome doesn't cut it off */
@supports (min-height: 100svh) {
  .hero { min-height: 100svh; }
}

/* Hero — reduce top padding on smaller screens to give content room */
@media (max-width: 768px) {
  .hero { padding-top: 82px; }
}
@media (max-width: 480px) {
  .hero { padding-top: 72px; }
  .hero h1 { font-size: clamp(2.4rem, 10vw, 7.2rem); }
  .hero p.sub { font-size: 0.95rem; margin-top: 22px; }
  .hero-cta { margin-top: 28px; gap: 12px; }
}

/* Wrap — tighter horizontal gutter on small screens */
@media (max-width: 480px) {
  .wrap { padding: 0 20px; }
}

/* Section vertical rhythm — 150 px is a lot on a 667 px phone screen */
@media (max-width: 768px) {
  section { padding: 110px 0; }
}
@media (max-width: 480px) {
  section { padding: 80px 0; }
}

/* Section head spacing on small screens */
@media (max-width: 480px) {
  .section-head { margin-bottom: 48px; gap: 20px; }
}



/* Buttons — slightly smaller touch targets at very small sizes */
@media (max-width: 400px) {
  .btn { padding: 13px 20px; font-size: 0.77rem; }
}

/* Stat rows — tighter on small screens */
@media (max-width: 480px) {
  .stat-row { padding: 18px 0; }
  .stat-row .num { font-size: 2rem; }
  .stat-row .label { font-size: 0.72rem; }
}

/* About — tighten text and card padding on very small screens */
@media (max-width: 400px) {
  .about-display { font-size: 2rem; }
  .about-lead-p { font-size: 0.97rem; }
  .about-div-card { padding: 28px 20px; }
}

/* Vision cards — tighten padding on very small screens */
@media (max-width: 400px) {
  .vm-card { padding: 28px 20px; }
}

/* Services sub-list — single column on very small screens */
@media (max-width: 400px) {
  .ss-list { grid-template-columns: 1fr; gap: 6px; }
}

/* Contact details — stack label/value vertically on very small screens */
@media (max-width: 400px) {
  .cd-row { flex-direction: column; gap: 4px; align-items: flex-start; }
  .cd-val { text-align: left; }
  .contact-inner { gap: 44px; }
}

/* How We Work — tighten promise strip on very small screens */
@media (max-width: 400px) {
  .hww-promise { gap: 20px; }
  .hww-promise-items { gap: 12px 20px; }
  .hww-pi { font-size: 0.82rem; }
}

/* Footer CTA strip — tighten on very small screens */
@media (max-width: 400px) {
  .fcs-inner { padding: 28px 0; gap: 16px; }
  .fcs-link { font-size: 1.65rem; gap: 12px; }
}

/* Footer — tighten large wordmark and spacing on very small screens */
@media (max-width: 400px) {
  .sf-wordmark { font-size: 2.8rem; }
  .sf-top { padding-bottom: 44px; }
  .sf-nav { padding: 40px 0 48px; }
  .sf-bottom-right { gap: 18px; }
}
