/* ---------- tokens ---------- */
:root{
  --bg:#FFFFFF; --bg2:#FAF9F6; --bg3:#F3F1EC;
  --ink:#12141A; --ink2:#4B5361; --muted:#8B929E;
  --line:#E9E5DE; --line2:#DFDAD1;
  --accent:#E3651F; --accent2:#F0913F; --accent-soft:#FDF2E9;
  --glow:rgba(227,101,31,.22);
  --sh1:0 1px 2px rgba(18,20,26,.04),0 6px 16px rgba(18,20,26,.05);
  --sh2:0 2px 6px rgba(18,20,26,.05),0 18px 44px rgba(18,20,26,.09);
  --r:16px; --maxw:1120px;
  --font:"Plus Jakarta Sans","Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);
  line-height:1.62;font-size:17px;-webkit-font-smoothing:antialiased;overflow-x:hidden;
}
img{max-width:100%;display:block}
a{color:inherit}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px;position:relative;z-index:2}

/* ---------- ambient blobs ---------- */
.amb{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.blob{position:absolute;border-radius:50%;filter:blur(90px);opacity:.5}
.b1{width:520px;height:520px;background:radial-gradient(circle,rgba(227,101,31,.20),transparent 70%);top:-140px;right:-120px;animation:float1 22s ease-in-out infinite}
.b2{width:460px;height:460px;background:radial-gradient(circle,rgba(240,145,63,.16),transparent 70%);top:48%;left:-160px;animation:float2 28s ease-in-out infinite}
.b3{width:400px;height:400px;background:radial-gradient(circle,rgba(227,101,31,.12),transparent 70%);bottom:-120px;right:8%;animation:float1 26s ease-in-out infinite reverse}
@keyframes float1{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-50px,60px) scale(1.12)}}
@keyframes float2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(70px,-50px) scale(1.08)}}

/* ---------- scroll progress ---------- */
#prog{position:fixed;top:0;left:0;height:2.5px;width:0;z-index:99;
  background:linear-gradient(90deg,var(--accent),var(--accent2));transition:width .08s linear}

/* ---------- animated logo ---------- */
.mark{display:block;flex:none}
.mark .ring{transform-origin:32px 32px;animation:spin 14s linear infinite}
.mark:hover .ring,.brand:hover .mark .ring{animation-duration:2.4s}
.mark .core{transform-origin:32px 32px;animation:pulse 3.4s ease-in-out infinite}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(.88)}}

/* ---------- nav ---------- */
header.nav{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.82);
  backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid transparent;transition:.3s}
header.nav.stuck{border-bottom-color:var(--line);box-shadow:0 1px 20px rgba(18,20,26,.05)}
.nav-in{max-width:var(--maxw);margin:0 auto;padding:13px 20px;display:flex;align-items:center;gap:16px}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;font-weight:800;letter-spacing:-.03em;font-size:18.5px}
.brand small{display:block;font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);line-height:1;margin-top:3px}
.nav-links{margin-left:auto;display:flex;gap:4px;align-items:center}
.nav-links a{text-decoration:none;font-size:15px;color:var(--ink2);font-weight:600;padding:8px 14px;border-radius:99px;transition:.2s;position:relative}
.nav-links a:hover{color:var(--ink);background:var(--bg3)}
.nav-links a.on{color:var(--accent)}
.nav-cta{background:var(--ink)!important;color:#fff!important;padding:10px 20px!important;margin-left:8px;
  box-shadow:0 6px 18px rgba(18,20,26,.18);transition:.25s!important}
.nav-cta:hover{background:var(--accent)!important;transform:translateY(-1px);box-shadow:0 10px 26px var(--glow)}
.burger{display:none;margin-left:auto;background:none;border:1px solid var(--line);border-radius:11px;padding:8px 11px;font-size:16px;cursor:pointer}
@media(max-width:860px){
  .nav-links{display:none;position:absolute;top:100%;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);flex-direction:column;gap:0;padding:10px 20px 18px}
  .nav-links.open{display:flex}
  .nav-links a{padding:12px 4px;width:100%;border-radius:0}
  .nav-cta{margin:10px 0 0;text-align:center}
  .burger{display:block}
}

/* ---------- type ---------- */
h1{font-size:clamp(36px,6.4vw,66px);line-height:1.04;letter-spacing:-.045em;margin:0 0 20px;font-weight:800}
h2{font-size:clamp(26px,4vw,42px);line-height:1.12;letter-spacing:-.035em;margin:0 0 16px;font-weight:800}
h3{font-size:19.5px;line-height:1.28;letter-spacing:-.02em;margin:0 0 9px;font-weight:700}
p{margin:0 0 16px;color:var(--ink2)}
.lead{font-size:clamp(17px,2.1vw,20.5px);color:var(--ink2);max-width:60ch;line-height:1.6}
.eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:800;letter-spacing:.16em;
  text-transform:uppercase;color:var(--accent);margin:0 0 16px}
.eyebrow::before{content:"";width:22px;height:1.5px;background:var(--accent);display:block}
.grad{background:linear-gradient(103deg,var(--accent) 10%,var(--accent2) 55%,var(--accent) 95%);
  -webkit-background-clip:text;background-clip:text;color:transparent;background-size:220% auto;animation:shine 6s linear infinite}
@keyframes shine{to{background-position:220% center}}

/* word reveal */
.words span{display:inline-block;opacity:0;transform:translateY(.5em) rotate(2deg);
  animation:word .8s cubic-bezier(.2,.9,.3,1) forwards}
@keyframes word{to{opacity:1;transform:none}}

/* ---------- sections ---------- */
section{padding:92px 0;position:relative}
section.tight{padding:56px 0}
.soft{background:var(--bg2)}
.sec-head{max-width:64ch;margin-bottom:46px}
.center{text-align:center}.center .lead,.center .sec-head{margin-left:auto;margin-right:auto}
.center .eyebrow{justify-content:center}

/* ---------- reveal ---------- */
.js .rv{opacity:0;transform:translateY(26px)}
.rv{transition:opacity .75s cubic-bezier(.2,.8,.3,1),transform .75s cubic-bezier(.2,.8,.3,1)}
.rv.in{opacity:1;transform:none}
.rv.d1{transition-delay:.08s}.rv.d2{transition-delay:.16s}.rv.d3{transition-delay:.24s}.rv.d4{transition-delay:.32s}

/* ---------- hero ---------- */
.hero{padding:76px 0 60px;overflow:hidden}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center}
@media(max-width:940px){.hero-grid{grid-template-columns:1fr;gap:40px}.hero-art{order:-1}}
.pill{display:inline-flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);
  color:var(--ink2);font-size:13.5px;font-weight:600;padding:8px 16px;border-radius:99px;margin-bottom:26px;box-shadow:var(--sh1)}
.pill i{width:7px;height:7px;border-radius:50%;background:var(--accent);display:block;animation:blip 2s ease-in-out infinite}
@keyframes blip{0%,100%{box-shadow:0 0 0 0 var(--glow)}50%{box-shadow:0 0 0 7px transparent}}

/* orbit art */
.hero-art{position:relative;aspect-ratio:1;max-width:460px;margin-inline:auto;width:100%}
.orb-ring{position:absolute;inset:0;border:1.5px dashed var(--line2);border-radius:50%;opacity:.9}
.orb-ring.r2{inset:15%;border-style:solid;border-color:var(--line)}
.orb-ring.r3{inset:26%;border-style:dashed}
.spinner{position:absolute;inset:0;animation:spin 30s linear infinite}
.spinner.s2{inset:15%;animation-duration:24s;animation-delay:-8s}
.spinner.s3{inset:26%;animation-duration:18s;animation-delay:-12s}
.chip{position:absolute;top:0;left:50%;transform:translate(-50%,-50%);
  background:#fff;border:1px solid var(--line);border-radius:99px;padding:7px 15px;font-size:12.5px;font-weight:700;
  white-space:nowrap;box-shadow:var(--sh1);animation:spin 30s linear infinite reverse}
.spinner.s2 .chip{animation-duration:24s;animation-delay:-8s}
.spinner.s3 .chip{animation-duration:18s;animation-delay:-12s}
.chip b{color:var(--accent)}
@media(max-width:520px){.chip{font-size:11px;padding:5px 11px}}
.core-badge{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:26%;aspect-ratio:1;border-radius:50%;background:linear-gradient(145deg,#fff,var(--bg3));
  border:1px solid var(--line);box-shadow:var(--sh2);display:grid;place-items:center}
.core-badge::after{content:"";position:absolute;inset:-14px;border-radius:50%;
  background:radial-gradient(circle,var(--glow),transparent 70%);animation:breathe 4s ease-in-out infinite}
@keyframes breathe{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}

/* ---------- buttons ---------- */
.btns{display:flex;gap:12px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:9px;text-decoration:none;font-weight:700;font-size:15.5px;
  padding:14px 28px;border-radius:99px;transition:transform .25s cubic-bezier(.2,.9,.3,1),box-shadow .25s,background .25s;position:relative;overflow:hidden}
.btn-1{background:var(--accent);color:#fff;box-shadow:0 8px 24px var(--glow)}
.btn-1:hover{transform:translateY(-2px);box-shadow:0 14px 34px var(--glow);background:#CF561A}
.btn-1::after{content:"";position:absolute;top:0;left:-120%;width:60%;height:100%;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);transition:left .6s}
.btn-1:hover::after{left:130%}
.btn-2{background:#fff;color:var(--ink);border:1px solid var(--line);box-shadow:var(--sh1)}
.btn-2:hover{transform:translateY(-2px);border-color:var(--ink);box-shadow:var(--sh2)}
.btn .ar{transition:transform .25s}
.btn:hover .ar{transform:translateX(4px)}

/* ---------- cards ---------- */
.grid{display:grid;gap:20px}
.g2{grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}
.g3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.g4{grid-template-columns:repeat(auto-fit,minmax(215px,1fr))}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:28px 26px;
  position:relative;overflow:hidden;transition:transform .35s cubic-bezier(.2,.9,.3,1),box-shadow .35s,border-color .35s}
.card::before{content:"";position:absolute;inset:0;opacity:0;transition:opacity .35s;pointer-events:none;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),rgba(227,101,31,.09),transparent 45%)}
.card:hover{transform:translateY(-5px);box-shadow:var(--sh2);border-color:var(--line2)}
.card:hover::before{opacity:1}
.card p:last-child{margin-bottom:0}
a.card{text-decoration:none;display:block}
.ic{width:44px;height:44px;border-radius:13px;background:linear-gradient(145deg,var(--accent-soft),#fff);
  border:1px solid var(--line);display:grid;place-items:center;margin-bottom:16px;transition:.35s}
.card:hover .ic{transform:scale(1.08) rotate(-5deg);border-color:var(--accent)}
.ic svg{width:21px;height:21px;stroke:var(--accent);fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* ---------- stats ---------- */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh1)}
.stat{background:#fff;padding:28px 22px;transition:background .3s}
.stat:hover{background:var(--bg2)}
.stat b{display:block;font-size:clamp(28px,4vw,38px);font-weight:800;letter-spacing:-.04em;line-height:1;margin-bottom:7px}
.stat > span{font-size:13.5px;color:var(--muted);font-weight:500;display:block}

/* ---------- marquee ---------- */
.mq{overflow:hidden;padding:22px 0;border-block:1px solid var(--line);background:#fff;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.mq-in{display:flex;gap:56px;width:max-content;animation:slide 34s linear infinite}
.mq:hover .mq-in{animation-play-state:paused}
@keyframes slide{to{transform:translateX(-50%)}}
.mq-item{display:flex;align-items:center;gap:11px;font-weight:700;font-size:16.5px;color:var(--ink2);white-space:nowrap}
.mq-item i{width:6px;height:6px;border-radius:50%;background:var(--accent);flex:none}

/* ---------- steps ---------- */
.steps{counter-reset:s;position:relative}
.steps::before{content:"";position:absolute;left:23px;top:34px;bottom:34px;width:1.5px;
  background:linear-gradient(180deg,var(--accent),var(--line) 70%)}
.step{counter-increment:s;display:grid;grid-template-columns:48px 1fr;gap:24px;padding:24px 0;position:relative}
.step::before{content:counter(s,decimal-leading-zero);width:48px;height:48px;border-radius:50%;background:#fff;
  border:1.5px solid var(--line);display:grid;place-items:center;font-size:13.5px;font-weight:800;color:var(--accent);
  position:relative;z-index:2;transition:.35s}
.step:hover::before{border-color:var(--accent);box-shadow:0 0 0 6px var(--accent-soft);transform:scale(1.06)}
.step h3{margin-bottom:6px}.step p{margin:0}

/* ---------- service rows ---------- */
.srv{border-top:1px solid var(--line);padding:38px 0;display:grid;grid-template-columns:1fr 1.3fr;gap:40px;transition:.35s}
.srv:last-of-type{border-bottom:1px solid var(--line)}
.srv:hover{background:linear-gradient(90deg,var(--bg2),transparent)}
.srv h3{font-size:23px;margin-bottom:7px}
.srv .who{font-size:14px;color:var(--muted);margin:0}
.srv ul{margin:0;padding-left:20px;color:var(--ink2)}
.srv li{margin-bottom:8px}.srv li:last-child{margin-bottom:0}
.srv li::marker{color:var(--accent)}
@media(max-width:780px){.srv{grid-template-columns:1fr;gap:16px}}

/* ---------- work cards ---------- */
.work{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}
.w-card{border:1px solid var(--line);border-radius:var(--r);padding:26px;background:#fff;display:flex;flex-direction:column;
  position:relative;overflow:hidden;transition:transform .35s cubic-bezier(.2,.9,.3,1),box-shadow .35s}
.w-card::after{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--accent2));transform:scaleX(0);transform-origin:left;transition:transform .45s cubic-bezier(.2,.9,.3,1)}
.w-card:hover{transform:translateY(-6px);box-shadow:var(--sh2)}
.w-card:hover::after{transform:scaleX(1)}
.w-sector{font-size:11px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
.w-card h3{margin-bottom:9px}
.w-card p{font-size:15px;margin-bottom:18px}
.w-meta{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:8px}
.chp{font-size:12.5px;background:var(--bg2);border:1px solid var(--line);border-radius:99px;padding:5px 12px;color:var(--ink2);text-decoration:none;transition:.25s;font-weight:600}
a.chp:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}

/* ---------- band ---------- */
.band{border-radius:24px;padding:62px 48px;text-align:center;position:relative;overflow:hidden;
  background:linear-gradient(145deg,#15181F,#0C0E13);color:#fff;box-shadow:var(--sh2)}
.band::before{content:"";position:absolute;width:620px;height:620px;border-radius:50%;top:-320px;left:50%;transform:translateX(-50%);
  background:radial-gradient(circle,rgba(227,101,31,.42),transparent 62%);animation:breathe 7s ease-in-out infinite}
.band h2{color:#fff;position:relative}
.band p{color:#A9B2C1;max-width:54ch;margin-inline:auto;position:relative}
.band .btns{justify-content:center;margin-top:28px;position:relative}
.band .btn-2{background:transparent;color:#fff;border-color:rgba(255,255,255,.26);box-shadow:none}
.band .btn-2:hover{border-color:#fff;background:rgba(255,255,255,.07)}
@media(max-width:620px){.band{padding:44px 24px}}

/* ---------- contact list ---------- */
.ct-list{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;box-shadow:var(--sh1)}
.ct-row{background:#fff;padding:21px 26px;display:grid;grid-template-columns:135px 1fr;gap:16px;align-items:baseline;transition:background .25s}
.ct-row:hover{background:var(--bg2)}
.ct-row dt{font-size:13px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.07em}
.ct-row dd{margin:0;font-size:16.5px}
.ct-row a{color:var(--accent);text-decoration:none;font-weight:700}
.ct-row a:hover{text-decoration:underline}
@media(max-width:580px){.ct-row{grid-template-columns:1fr;gap:4px}}

.note{background:var(--accent-soft);border:1px solid #F2D9C4;border-left:3px solid var(--accent);
  border-radius:12px;padding:20px 24px;font-size:15px;color:#8A3B10}
.note b{color:#6E2E0B}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--line);padding:56px 0 36px;background:var(--bg2);position:relative;z-index:2}
.f-top{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:38px;margin-bottom:38px}
@media(max-width:720px){.f-top{grid-template-columns:1fr;gap:28px}}
footer h4{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 14px;font-weight:800}
footer ul{list-style:none;margin:0;padding:0}
footer li{margin-bottom:9px}
footer a{color:var(--ink2);text-decoration:none;font-size:15px;transition:.2s}
footer a:hover{color:var(--accent);padding-left:3px}
.f-bot{border-top:1px solid var(--line);padding-top:22px;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;font-size:13.5px;color:var(--muted)}
.social{display:flex;gap:10px;margin-top:18px}
.social a{width:40px;height:40px;border:1px solid var(--line);border-radius:12px;display:grid;place-items:center;background:#fff;transition:.28s}
.social a:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 8px 18px var(--glow)}
.social svg{width:17px;height:17px;fill:var(--ink2);transition:.28s}
.social a:hover svg{fill:var(--accent)}

@media(prefers-reduced-motion:reduce){
  .spinner.s2{transform:rotate(120deg)}
  .spinner.s3{transform:rotate(240deg)}
  .spinner.s2 .chip{transform:translate(-50%,-50%) rotate(-120deg)}
  .spinner.s3 .chip{transform:translate(-50%,-50%) rotate(-240deg)}
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .rv{opacity:1;transform:none}
}
