:root{
  --bg:#f7f5f2;
  --paper:#ffffff;
  --ink:#111827;
  --muted:#667085;
  --line:#e6e1d8;
  --blue:#2563eb;
  --blue-2:#60a5fa;
  --soft-blue:#eff6ff;
  --shadow:0 18px 55px rgba(17,24,39,.10);
  --radius:22px;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:'Inter',system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  background:
    radial-gradient(circle at 12% 12%,rgba(37,99,235,.10),transparent 34%),
    radial-gradient(circle at 88% 20%,rgba(96,165,250,.12),transparent 32%),
    linear-gradient(180deg,#fbfaf8 0%,var(--bg) 42%,#f1eee8 100%);
  color:var(--ink);
  cursor:none;
  overflow-x:hidden;
  min-height:100vh;
}

/* subtle grain */
body::before{
  content:'';
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
  opacity:.28;
  background-image:
    linear-gradient(rgba(17,24,39,.025) 1px,transparent 1px),
    linear-gradient(90deg,rgba(17,24,39,.025) 1px,transparent 1px);
  background-size:34px 34px;
  mask-image:linear-gradient(to bottom,black,transparent 92%);
}

::selection{background:rgba(37,99,235,.18);color:var(--ink)}

/* CURSOR */
#c{
  position:fixed;
  width:8px;
  height:8px;
  background:var(--blue);
  border-radius:50%;
  pointer-events:none;
  z-index:9999;
  transform:translate(-50%,-50%);
  transition:width .16s,height .16s,background .16s,opacity .16s;
  mix-blend-mode:multiply;
}
#cr{
  position:fixed;
  width:34px;
  height:34px;
  border:1.5px solid rgba(37,99,235,.75);
  border-radius:50%;
  pointer-events:none;
  z-index:9998;
  transform:translate(-50%,-50%);
  transition:width .22s,height .22s,border-color .22s,background .22s,opacity .22s;
  opacity:.52;
}
.cursor-grow #c{width:6px;height:6px;background:#111827}
.cursor-grow #cr{
  width:62px;
  height:62px;
  opacity:.9;
  border-color:var(--blue);
  background:rgba(37,99,235,.07);
}
.cursor-text #cr{
  width:86px;
  height:86px;
  background:rgba(37,99,235,.10);
  opacity:1;
}
.cursor-down #cr{width:44px;height:44px;opacity:1}
.cursor-hidden #c,.cursor-hidden #cr{opacity:0}

/* GLOW BLOB */
#blob{
  position:fixed;
  width:520px;
  height:520px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(37,99,235,.15) 0%,rgba(96,165,250,.09) 38%,transparent 70%);
  pointer-events:none;
  z-index:0;
  transform:translate(-50%,-50%);
  filter:blur(4px);
}

#trail{
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:2;
}

.spark{
  position:fixed;
  width:7px;
  height:7px;
  border-radius:50%;
  background:var(--blue);
  pointer-events:none;
  z-index:9997;
  transform:translate(-50%,-50%);
  animation:spark .55s ease-out forwards;
}
@keyframes spark{
  to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.25)}
}

/* NAV */
nav{
  position:sticky;
  top:0;
  z-index:100;
  background:rgba(247,245,242,.72);
  backdrop-filter:blur(18px);
  border-bottom:1px solid rgba(230,225,216,.82);
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:1rem 2.5rem;
}
.logo{
  font-weight:800;
  font-size:1.06rem;
  letter-spacing:-.035em;
  text-decoration:none;
  color:var(--ink);
}
.logo span{color:var(--blue)}
.nav-r{display:flex;align-items:center;gap:2rem}
nav ul{list-style:none;display:flex;gap:2rem}
nav a{
  position:relative;
  font-size:.83rem;
  color:#667085;
  text-decoration:none;
  font-weight:500;
  transition:color .18s ease;
}
nav ul a::after{
  content:'';
  position:absolute;
  left:0;
  bottom:-8px;
  width:100%;
  height:2px;
  border-radius:999px;
  background:var(--blue);
  transform:scaleX(0);
  transform-origin:right;
  transition:transform .22s ease;
}
nav ul a:hover{color:var(--ink)}
nav ul a:hover::after{transform:scaleX(1);transform-origin:left}

.btn-nav,.btn-p,.btn-s,.btn-w,.btn-ow{
  position:relative;
  overflow:hidden;
  isolation:isolate;
}
.btn-nav{
  background:#111827;
  color:#fff;
  padding:.55rem 1.25rem;
  border-radius:10px;
  font-size:.82rem;
  font-weight:600;
  text-decoration:none;
  transition:background .2s,transform .2s,box-shadow .2s;
}
.btn-nav:hover{
  background:var(--blue);
  transform:translateY(-2px);
  box-shadow:0 10px 25px rgba(37,99,235,.24);
}

/* HERO */
.hero{
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:3.2rem;
  align-items:center;
  max-width:1080px;
  margin:0 auto;
  padding:5.5rem 2.5rem 4.2rem;
  position:relative;
  z-index:1;
}
.pill{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  background:rgba(255,255,255,.75);
  border:1px solid var(--line);
  border-radius:999px;
  padding:.38rem .95rem;
  font-size:.72rem;
  font-weight:600;
  color:#555;
  margin-bottom:1.5rem;
  box-shadow:0 10px 26px rgba(17,24,39,.05);
}
.pill-dot{
  width:7px;
  height:7px;
  background:#22c55e;
  border-radius:50%;
  box-shadow:0 0 0 6px rgba(34,197,94,.12);
}
h1{
  font-size:clamp(2.6rem,5vw,3.7rem);
  font-weight:800;
  line-height:1.03;
  letter-spacing:-.055em;
  margin-bottom:1.35rem;
}
h1 .blue{
  color:var(--blue);
  text-shadow:0 10px 30px rgba(37,99,235,.16);
}
h1 .outline{
  color:transparent;
  -webkit-text-stroke:1.5px var(--ink);
}
.hero-sub{
  font-size:.95rem;
  color:#667085;
  line-height:1.8;
  margin-bottom:2rem;
  max-width:420px;
}
.hero-btns{display:flex;gap:.75rem;flex-wrap:wrap}
.btn-p{
  background:var(--blue);
  color:#fff;
  padding:.78rem 1.65rem;
  border-radius:11px;
  font-size:.85rem;
  font-weight:700;
  text-decoration:none;
  box-shadow:0 12px 28px rgba(37,99,235,.28);
  transition:transform .2s,box-shadow .2s,background .2s;
  display:inline-block;
}
.btn-p:hover{
  transform:translateY(-3px);
  background:#1d4ed8;
  box-shadow:0 18px 36px rgba(37,99,235,.36);
}
.btn-s{
  background:rgba(255,255,255,.78);
  color:var(--ink);
  padding:.78rem 1.65rem;
  border-radius:11px;
  font-size:.85rem;
  font-weight:600;
  text-decoration:none;
  border:1px solid var(--line);
  transition:transform .2s,border-color .2s,box-shadow .2s;
  display:inline-block;
}
.btn-s:hover{
  transform:translateY(-3px);
  border-color:#c6c0b8;
  box-shadow:0 12px 28px rgba(17,24,39,.08);
}

/* HERO RIGHT */
.hero-visual{
  background:rgba(255,255,255,.78);
  border:1px solid rgba(230,225,216,.9);
  border-radius:24px;
  padding:1.75rem;
  box-shadow:var(--shadow);
  transition:transform .18s ease,box-shadow .18s ease;
  transform-style:preserve-3d;
}
.hero-visual:hover{box-shadow:0 24px 70px rgba(17,24,39,.14)}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:1.1rem}
.stat-box{
  background:#f7f5f2;
  border:1px solid rgba(230,225,216,.8);
  border-radius:16px;
  padding:1.05rem;
  transition:background .2s,transform .2s,border-color .2s;
}
.stat-box:hover{
  background:#eff6ff;
  border-color:#cfe0ff;
  transform:translateY(-3px);
}
.stat-n{font-size:1.65rem;font-weight:800;letter-spacing:-.045em;color:var(--ink)}
.stat-n span{color:var(--blue)}
.stat-l{font-size:.7rem;color:#868686;margin-top:.15rem}
.tags{display:flex;flex-wrap:wrap;gap:.45rem;padding-top:1rem;border-top:1px solid #f0ede8}
.tag{
  background:#f7f5f2;
  border:1px solid var(--line);
  border-radius:8px;
  padding:.3rem .68rem;
  font-size:.68rem;
  font-weight:600;
  color:#667085;
  transition:background .16s,color .16s,transform .16s,border-color .16s;
}
.tag:hover{
  background:var(--blue);
  color:#fff;
  border-color:var(--blue);
  transform:translateY(-2px) rotate(-1deg);
}

/* SECTIONS */
.section{max-width:1080px;margin:0 auto;padding:3.6rem 2.5rem;position:relative;z-index:1}
.sec-eyebrow{
  font-size:.7rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--blue);
  margin-bottom:.55rem;
}
.sec-h{
  font-size:1.95rem;
  font-weight:800;
  letter-spacing:-.04em;
  margin-bottom:2.4rem;
}

.svc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.9rem}
.svc{
  background:rgba(255,255,255,.8);
  border:1px solid rgba(230,225,216,.9);
  border-radius:20px;
  padding:1.55rem;
  position:relative;
  overflow:hidden;
  transition:transform .22s,box-shadow .22s,border-color .22s;
  transform-style:preserve-3d;
}
.svc::before{
  content:'';
  position:absolute;
  inset:0;
  background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(37,99,235,.12) 0%,transparent 56%);
  opacity:0;
  transition:opacity .25s;
}
.svc::after{
  content:'';
  position:absolute;
  inset:-2px;
  background:linear-gradient(120deg,transparent 30%,rgba(255,255,255,.75),transparent 70%);
  transform:translateX(-120%);
  transition:transform .55s ease;
}
.svc:hover{
  transform:translateY(-6px);
  box-shadow:0 18px 52px rgba(17,24,39,.12);
  border-color:#c7d7f9;
}
.svc:hover::before{opacity:1}
.svc:hover::after{transform:translateX(120%)}
.svc-head,.svc h3,.svc p{position:relative;z-index:1}
.svc-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}
.svc-ico{
  width:42px;
  height:42px;
  border-radius:12px;
  background:var(--soft-blue);
  display:flex;
  align-items:center;
  justify-content:center;
  transition:transform .2s,background .2s;
}
.svc:hover .svc-ico{transform:rotate(-4deg) scale(1.06);background:#dbeafe}
.svc-ico svg{width:20px;height:20px;stroke:var(--blue);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.svc-pr{
  font-size:.7rem;
  font-weight:700;
  color:var(--blue);
  background:var(--soft-blue);
  padding:.26rem .68rem;
  border-radius:999px;
}
.svc h3{font-size:.98rem;font-weight:700;margin-bottom:.38rem}
.svc p{font-size:.8rem;color:#737373;line-height:1.68}

/* PROCESS */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:.9rem}
.step{
  background:rgba(255,255,255,.8);
  border:1px solid rgba(230,225,216,.9);
  border-radius:18px;
  padding:1.25rem;
  transition:transform .2s,box-shadow .2s,border-color .2s;
}
.step:hover{
  transform:translateY(-5px);
  box-shadow:0 16px 42px rgba(17,24,39,.10);
  border-color:#d4dfff;
}
.step-num{
  width:34px;
  height:34px;
  border-radius:10px;
  background:#111827;
  color:#fff;
  font-size:.76rem;
  font-weight:800;
  display:flex;
  align-items:center;
  justify-content:center;
  margin-bottom:1rem;
  transition:background .2s,transform .2s;
}
.step:hover .step-num{background:var(--blue);transform:scale(1.08) rotate(-3deg)}
.step h3{font-size:.9rem;font-weight:700;margin-bottom:.32rem}
.step p{font-size:.76rem;color:#737373;line-height:1.62}

/* CONTACT */
.contact-band{
  max-width:1080px;
  margin:0 auto 4rem;
  padding:0 2.5rem;
  position:relative;
  z-index:1;
}
.contact-inner{
  background:#111827;
  border-radius:24px;
  padding:3.1rem;
  display:grid;
  grid-template-columns:1fr auto;
  gap:2.5rem;
  align-items:center;
  position:relative;
  overflow:hidden;
  box-shadow:0 24px 70px rgba(17,24,39,.24);
}
.contact-inner::before{
  content:'';
  position:absolute;
  width:420px;
  height:420px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(37,99,235,.35) 0%,transparent 70%);
  top:-120px;
  right:-110px;
  pointer-events:none;
}
.contact-inner h2{
  font-size:1.9rem;
  font-weight:800;
  color:#fff;
  letter-spacing:-.04em;
  margin-bottom:.55rem;
  position:relative;
}
.contact-inner p{font-size:.86rem;color:#a3a3a3;line-height:1.75;position:relative}
.contact-btns{display:flex;flex-direction:column;gap:.65rem;align-items:flex-end;position:relative}
.btn-w{
  background:#fff;
  color:#111827;
  padding:.78rem 1.65rem;
  border-radius:11px;
  font-size:.83rem;
  font-weight:700;
  text-decoration:none;
  white-space:nowrap;
  transition:transform .2s,background .2s,box-shadow .2s;
  display:inline-block;
}
.btn-w:hover{transform:translateY(-2px);background:#eff6ff;box-shadow:0 12px 28px rgba(255,255,255,.08)}
.btn-ow{
  background:transparent;
  color:#fff;
  padding:.73rem 1.65rem;
  border-radius:11px;
  font-size:.83rem;
  font-weight:600;
  border:1px solid rgba(255,255,255,.22);
  text-decoration:none;
  white-space:nowrap;
  transition:border-color .2s,transform .2s,background .2s;
  display:inline-block;
}
.btn-ow:hover{border-color:rgba(255,255,255,.6);transform:translateY(-2px);background:rgba(255,255,255,.06)}

footer{
  max-width:1080px;
  margin:0 auto;
  padding:1.25rem 2.5rem 2rem;
  display:flex;
  justify-content:space-between;
  border-top:1px solid var(--line);
  font-size:.75rem;
  color:#999;
  position:relative;
  z-index:1;
}

/* reveal */
.reveal{
  opacity:0;
  transform:translateY(28px);
  transition:opacity .55s ease,transform .55s ease;
}
.reveal.show{
  opacity:1;
  transform:translateY(0);
}

/* button ripple */
.ripple{
  position:absolute;
  width:10px;
  height:10px;
  border-radius:50%;
  background:rgba(255,255,255,.55);
  transform:translate(-50%,-50%) scale(0);
  animation:ripple .65s ease-out forwards;
  pointer-events:none;
  z-index:-1;
}
.btn-s .ripple{background:rgba(37,99,235,.16)}
@keyframes ripple{
  to{transform:translate(-50%,-50%) scale(30);opacity:0}
}

@media(max-width:760px){
  body{cursor:auto}
  #c,#cr,#blob{display:none}
  nav{padding:1rem 1.5rem}
  nav ul{display:none}
  .btn-nav{display:none}
  .hero{grid-template-columns:1fr;padding:3rem 1.5rem 2.4rem}
  .hero-visual{display:block}
  .svc-grid,.steps{grid-template-columns:1fr}
  .section{padding:2.5rem 1.5rem}
  .contact-band{padding:0 1.5rem}
  .contact-inner{grid-template-columns:1fr;padding:2rem}
  .contact-btns{align-items:flex-start;flex-direction:row;flex-wrap:wrap}
  footer{padding:1.2rem 1.5rem 2rem;gap:.8rem;flex-direction:column}
}
