/* ===== tokens ===== */
:root{
  --light:#f7f7f7;
  --muted:#adadad;
  --divider:rgba(255,255,255,0.17);
  --card-bg:rgba(23,26,28,0.25);
  --card-border:#525558;
  --accent:#3466c2;
  --ease:cubic-bezier(.22,1,.36,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{background:#fff;scrollbar-width:none;-ms-overflow-style:none}
html::-webkit-scrollbar,body::-webkit-scrollbar{display:none;width:0;height:0}
body{overflow-x:hidden;font-family:"Outfit",sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}

/* hide native cursor while custom cursor active */
html.cc,html.cc *:not(input):not(textarea){cursor:none !important}

/* ===== scaled fixed canvas ===== */
.stage{
  width:1920px;
  height:2160px;
  position:relative;
  transform-origin:top left;
  overflow:hidden;
}

section{
  position:absolute;
  left:0;
  width:1920px;
  height:1080px;
  overflow:hidden;
}
.hero{top:0}
.pricing{top:1080px;background:#0b0d0e}

.bg{
  position:absolute;inset:0;
  width:100%;height:100%;
  object-fit:cover;display:block;
  pointer-events:none;
}
/* gentle hero zoom-in on enter */
.hero .bg{transform:scale(1.06);transition:transform 1.4s var(--ease)}
body.entered .hero .bg{transform:scale(1)}

/* ===== overlay video (screen blend) ===== */
.overlay-video{
  position:absolute;
  top:30.787%;left:5.74623%;
  width:91%;height:36%;
  mix-blend-mode:screen;
  pointer-events:none;
}
.overlay-video video{width:100%;height:100%;object-fit:cover;display:block}

/* ===== NAV (stretched bar) ===== */
.nav-wrap{
  position:absolute;
  top:85%;left:1.27604%;
  width:97%;height:5%;
  display:flex;justify-content:center;
}
.nav{
  position:relative;
  width:1500px;height:60px;
  display:flex;align-items:center;
  background:rgba(20,19,19,0.6);
  border-radius:30px;
  box-shadow:-5px 6px 2px 0 rgba(0,0,0,0.3);
  overflow:hidden;
  --border-color:rgba(122,162,255,0.22);
  --glow-x:0;--glow-y:0;--glow-o:0;
}
/* cursor-driven white glow, masked to the border ring (driven by nav.ts) */
.nav::before{
  content:"";
  position:absolute;inset:0;
  border-radius:inherit;
  padding:2px;                 /* ring thickness */
  background:radial-gradient(210px 210px at calc(var(--glow-x)*1px) calc(var(--glow-y)*1px),
    rgba(110,160,255,0.73) 0%, rgba(110,160,255,0.32) 30%, rgba(110,160,255,0) 62%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
          mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;
  opacity:var(--glow-o);
  filter:blur(1.5px);
  transition:opacity .35s ease;
  pointer-events:none;
  z-index:2;
}
.nav[data-border]::after{
  content:"";position:absolute;inset:0;
  border-radius:inherit;pointer-events:none;
  border-style:solid;border-color:var(--border-color);
  border-width:1px 0.5px 0 0.2px;
}
.nav-links{
  position:absolute;top:50%;left:50%;
  transform:translate(-50%,-50%);
  display:flex;align-items:center;justify-content:center;
  gap:64px;z-index:1;
}
.nav-link{
  font-family:"Oxygen",sans-serif;
  font-size:23px;line-height:2em;
  letter-spacing:-0.2px;
  color:#fff;white-space:pre;
  text-shadow:-2px 4px 7px rgba(0,0,0,0.75),0 2px 4px rgba(0,0,0,0.71);
  transition:color .25s var(--ease);
}
.nav-link:first-child{letter-spacing:-0.01em}
.nav-link a{display:inline-block;color:inherit;text-decoration:none;transition:color .25s var(--ease),transform .3s var(--ease)}
.nav-link a:hover{transform:scale(1.14)}
.nav-link.is-active{color:#7aa2ff}
.nav-link:hover{color:#e7eefc}
.nav-link.is-active:hover{color:#a6c2ff}
.nav-bottomline{
  position:absolute;left:0;right:0;bottom:0;height:1px;
  background:rgba(255,255,255,0.08);z-index:1;
}

/* ===== TAGLINE ===== */
.tagline{
  position:absolute;
  bottom:185px;left:50%;
  transform:translateX(-50%);
  width:auto;
  font-family:"Oxygen",sans-serif;
  font-size:17px;letter-spacing:0.04em;
  text-align:center;color:#000;
  text-shadow:none;
  white-space:nowrap;
}
.tagline .ltr{
  display:inline-block;
  opacity:0.001;
  filter:blur(10px);
  transform:translateY(10px);
}
.tagline.in .ltr{
  animation:letterIn .6s var(--ease) forwards;
}
@keyframes letterIn{
  to{opacity:1;filter:blur(0);transform:translateY(0)}
}

/* ===== SCROLL INDICATOR ===== */
.scroll-indicator{position:absolute;bottom:13px;left:25px}
.mouse{
  width:30px;height:50px;
  border:2px solid #000;border-radius:20px;
  background:#fff;
  display:flex;justify-content:center;
  padding-top:7.5px;
}
.wheel{
  width:6px;height:6px;border-radius:50%;
  background:#000;
  animation:wheel 1.5s ease-in-out infinite;
}
@keyframes wheel{
  0%,100%{transform:translateY(0);opacity:1}
  50%{transform:translateY(6px);opacity:.4}
}

/* ===== PRICING CARDS ===== */
/* desktop: wrapper is transparent so cards keep their absolute layout in .pricing */
.carousel{display:contents}
.carousel-dots{display:none}

.card{
  position:absolute;
  display:flex;flex-direction:column;
  align-items:center;justify-content:flex-start;
  gap:21px;
  background:var(--card-bg);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  border-radius:45px;
  --border-color:var(--card-border);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease);
}
.card[data-border]::after{
  content:"";position:absolute;inset:0;
  border-radius:inherit;pointer-events:none;
  border:3px solid var(--border-color);
  transition:border-color .4s var(--ease);
}
.card--1{left:87px;top:100px;width:413px;height:790px;padding:131px 24px}
.card--3{left:1465px;top:151.5px;width:418px;height:729px;padding:117px 24px}
.card--2{left:583.6px;top:617px;width:804px;height:404px;padding:29px 24px}

/* card hover lift (only once revealed) */
.card.in:hover{transform:translateY(-8px) scale(1.012);box-shadow:0 30px 60px -20px rgba(0,0,0,.55)}
.card.in:hover[data-border]::after{border-color:#7d8488}

.card-head{
  display:flex;flex-direction:column;
  align-items:flex-start;gap:28px;width:100%;
}
.card h3{
  font-family:"Outfit",sans-serif;
  font-weight:400;font-size:20px;line-height:1em;
  color:var(--light);
}
.price-block{
  display:flex;flex-direction:column;
  align-items:flex-start;gap:16px;width:100%;
}
.price{display:flex;align-items:flex-end}
.price-cur,.price-amt{
  font-family:"Outfit",sans-serif;font-weight:400;
  font-size:40px;line-height:0.9em;letter-spacing:-0.02em;
  color:var(--light);
}
.price-suf{
  font-family:"DM Sans",sans-serif;font-size:18px;
  color:var(--muted);align-self:flex-end;
}
.desc{
  font-family:"Outfit",sans-serif;font-weight:300;
  font-size:16px;line-height:1.4em;color:var(--muted);
  text-align:left;text-wrap:balance;
}
.desc--inter{font-family:"Inter",sans-serif;line-height:1.6em;letter-spacing:-0.02em}

.card-content{
  display:flex;flex-direction:column;
  align-items:flex-start;gap:28px;width:100%;
}
.divider{width:100%;height:1px;background:var(--divider);transform-origin:left;transition:transform .6s var(--ease) .15s}
.features{
  list-style:none;display:flex;flex-direction:column;gap:16px;width:100%;
}
.features li{
  position:relative;
  font-family:"DM Sans",sans-serif;font-size:18px;line-height:1.2em;
  color:var(--light);
  padding-left:32px;
}
.features li::before{
  content:"";
  position:absolute;left:0;top:50%;transform:translateY(-50%) scale(1);
  width:20px;height:20px;border-radius:50%;
  background:
    url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"/></svg>') center / 13px no-repeat,
    rgba(255,255,255,0.12);
  border:1px solid rgba(255,255,255,0.25);
  transition:transform .35s var(--ease),background-color .35s var(--ease);
}
.features li:hover::before{background-color:rgba(52,102,194,.5);transform:translateY(-50%) scale(1.12)}

/* ===== FOCAL CARD ===== */
.focal{position:absolute;left:671.6px;top:238px;width:476px;height:326px}
.focal-rect{position:absolute;top:0;left:0;width:476px;height:278px;overflow:visible}
.typewriter{
  position:absolute;top:110px;left:50%;
  transform:translateX(-50%) scale(1.6);
  transform-origin:center;
  display:inline-flex;align-items:center;white-space:pre;
}
.tw-text{
  font-family:"Jim Nightshade",cursive;
  font-size:32px;font-weight:400;
  letter-spacing:-0.01em;line-height:1.2em;color:#fff;
}
.tw-caret{
  display:inline-block;width:1px;height:32px;
  background:#fff;margin:0 2px;border-radius:2px;
  vertical-align:bottom;animation:blink 1s steps(1) infinite;
}
@keyframes blink{50%{opacity:0}}

.btn{
  position:absolute;left:50%;bottom:97px;
  transform:translateX(-50%);
  display:flex;align-items:center;justify-content:center;
  padding:12px 24px;
  background:rgba(247,247,247,0.1);
  border-radius:17px;text-decoration:none;
  font-family:"Outfit",sans-serif;font-weight:600;font-size:18px;line-height:1.4em;
  color:var(--light);white-space:pre;
  --border-color:var(--light);
  transition:background .25s var(--ease),box-shadow .25s var(--ease);
}
.btn[data-border]::after{
  content:"";position:absolute;inset:0;
  border-radius:inherit;pointer-events:none;
  border:1px solid var(--border-color);
}
.btn:hover{background:rgba(247,247,247,0.2);box-shadow:0 8px 24px -6px rgba(0,0,0,.5)}

/* ===== REVEAL ENGINE (Framer-style) ===== */
[data-reveal-enter],[data-reveal-scroll]{
  opacity:0;transform:translateY(28px);
  transition:opacity .8s var(--ease),transform .8s var(--ease),filter .8s var(--ease);
  transition-delay:calc(var(--i,0)*70ms);
}
[data-reveal-enter]:not(.in),[data-reveal-scroll]:not(.in){will-change:opacity,transform}
[data-reveal-enter="blur"]{transform:translateY(10px);filter:blur(10px)}
[data-reveal-enter].in,[data-reveal-scroll].in{opacity:1;transform:none;filter:none}

/* card inner: divider wipe + feature stagger once card is in */
[data-reveal-scroll] .divider{transform:scaleX(0)}
[data-reveal-scroll].in .divider{transform:scaleX(1)}
.features li{opacity:0;transform:translateX(-10px);transition:opacity .5s var(--ease),transform .5s var(--ease);transition-delay:calc(.28s + var(--i,0)*60ms)}
.card.in .features li{opacity:1;transform:none}

/* ===== CUSTOM CURSOR ===== */
#cc{
  position:fixed;left:0;top:0;
  width:34px;height:34px;border-radius:50%;
  background:#fff;mix-blend-mode:difference;
  pointer-events:none;z-index:2147483646;
  transition:width .2s,height .2s;
}
#cc.hv{width:64px;height:64px}

@media (hover:none){
  html.cc,html.cc *{cursor:auto !important}
  #cc{display:none}
}

/* ===== ENTER splash ===== */
#es{position:fixed;inset:0;z-index:99999;background:#0a0a0a;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .8s}
#es.h{opacity:0;pointer-events:none}
#el{display:flex;gap:16px}
#el i{color:#fff;font-size:30px;font-style:normal;animation:p 1.1s linear infinite}
#el i:nth-child(2){animation-delay:.18s}
#el i:nth-child(3){animation-delay:.36s}
@keyframes p{0%{opacity:.25;transform:scale(.8) rotate(0)}50%{opacity:1;transform:scale(1.15) rotate(180deg)}100%{opacity:.25;transform:scale(.8) rotate(360deg)}}
#ew{display:none;gap:8px;cursor:pointer;align-items:center}
#ew.s{display:flex}
#ew span{font-size:clamp(34px,7vw,76px);font-weight:800;color:#fff;opacity:0;transform:translateY(16px);transition:.4s;font-family:"Outfit",sans-serif}
#ew span.i{opacity:1;transform:none}
#ew span.a{color:#3466C2}

/* ===== scroll progress ===== */
#sp{position:fixed;top:0;left:0;height:3px;width:0;background:#3466C2;z-index:99998;transition:width .12s linear}

/* =====================================================================
   MOBILE  (fluid stacked layout — no scaled canvas)
   ===================================================================== */
@media (max-width:860px){
  html,body{background:#0b0d0e}

  .stage{width:100%!important;height:auto!important;transform:none!important;overflow:visible}
  section{position:relative!important;left:auto!important;top:auto!important;width:100%!important;height:auto!important}

  /* ---- HERO ---- */
  .hero{
    min-height:100svh;background:#fff;
    display:flex;flex-direction:column;
    align-items:center;justify-content:flex-end;
    padding:0 18px 150px;
  }
  .hero .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:center 44%}
  body.entered .hero .bg{transform:scale(1)}

  .tagline{
    position:static;width:auto;max-width:92%;
    margin:0;font-size:13px;color:#1a1a1a;text-shadow:none;
    transform:none;white-space:normal;
  }

  /* nav as persistent bottom pill */
  .nav-wrap{position:fixed;top:auto;bottom:14px;left:0;width:100%;height:auto;padding:0 12px;z-index:60}
  .nav{width:100%;max-width:460px;height:auto;border-radius:16px}
  .nav-links{position:static;transform:none;width:100%;padding:10px 14px;gap:6px;justify-content:space-between;flex-wrap:nowrap}
  .nav-link{font-size:13px;line-height:1.2;letter-spacing:-.2px;text-align:center;flex:1 1 auto;text-shadow:0 1px 3px rgba(0,0,0,.6)}

  .scroll-indicator{display:none}

  /* ---- PRICING ---- */
  .pricing{
    display:flex;flex-direction:column;align-items:center;
    gap:22px;padding:72px 16px 110px;background:#0b0d0e;
  }
  .pricing .bg{position:absolute;inset:0;height:100%;object-fit:cover;opacity:.45}
  .overlay-video{display:none}

  /* ---- 3D depth-blur carousel ---- */
  .carousel{
    display:block;position:relative;order:1;
    width:100%;height:540px;
    overflow:visible;touch-action:pan-y;
    -webkit-user-select:none;user-select:none;
  }
  .carousel .card{
    position:absolute!important;top:50%!important;left:50%!important;
    width:min(82vw,300px)!important;height:498px!important;
    margin:0!important;padding:30px 26px!important;
    border-radius:30px;gap:16px!important;
    transform-style:preserve-3d;
    -webkit-backdrop-filter:none;backdrop-filter:none;
    background:rgba(20,23,25,0.94);
    box-shadow:0 18px 40px -12px rgba(0,0,0,.6);
    overflow:hidden;cursor:grab;
    /* transform / opacity / filter / z-index driven by carousel.js */
  }
  .carousel .card:active{cursor:grabbing}
  .carousel .card[data-border]::after{border-width:2px}
  .carousel .card-head{gap:16px}
  .carousel .card-content{gap:18px}
  .carousel .features{gap:12px}
  .carousel .card h3{font-size:18px;line-height:1.18em}
  .carousel .desc{font-size:14px}
  .carousel .features li{font-size:15px;padding-left:30px}
  .carousel .price-cur,.carousel .price-amt{font-size:34px}
  .carousel .card.in:hover{transform:none}

  /* pagination dots */
  .carousel-dots{display:flex;justify-content:center;gap:10px;order:2;margin:-6px 0 4px}
  .cdot{
    width:8px;height:8px;border-radius:50%;border:none;padding:0;
    background:rgba(255,255,255,.28);
    transition:background .25s var(--ease),transform .25s var(--ease);
  }
  .cdot.on{background:#fff;transform:scale(1.35)}

  .focal{
    position:relative!important;left:auto!important;top:auto!important;
    order:4;width:min(94%,440px);height:auto;
    display:flex;flex-direction:column;align-items:center;
    gap:26px;padding:48px 24px;
  }
  .focal-rect{position:absolute;inset:0;width:100%;height:100%}
  .typewriter{position:static;transform:scale(1.25);margin:6px 0}
  .btn{position:static;transform:none}
}

/* very small phones: let nav wrap to two rows */
@media (max-width:430px){
  .nav-links{flex-wrap:wrap;justify-content:center;gap:4px 16px}
  .nav-link{flex:0 0 auto;font-size:13px}
}

/* ===== reduced motion ===== */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  [data-reveal-enter],[data-reveal-scroll],.features li,.tagline .ltr{opacity:1!important;transform:none!important;filter:none!important}
  .divider{transform:none!important}
  .hero .bg{transform:none!important}
  /* keep these subtle, intentional UI cues alive even under reduced motion */
  .wheel{animation-duration:1.5s!important;animation-iteration-count:infinite!important}
  .nav-link a{transition-duration:.3s!important}
}

/* =====================================================================
   INTAKE FORM — "Book a Free Consult" modal (dark / cinematic)
   ===================================================================== */
.consult{
  position:fixed;inset:0;z-index:9000;
  display:flex;align-items:flex-start;justify-content:center;
  padding:max(24px,5vh) 16px;
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .35s var(--ease),visibility .35s var(--ease);
}
.consult.is-open{opacity:1;visibility:visible;pointer-events:auto}
.consult-backdrop{
  position:absolute;inset:0;
  background:rgba(5,6,8,0.72);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
}
.consult-panel{
  position:relative;width:100%;max-width:560px;max-height:90vh;overflow-y:auto;
  background:linear-gradient(180deg,#14181d 0%,#0c0f12 100%);
  border:1px solid rgba(122,162,255,0.18);
  border-radius:22px;
  box-shadow:0 40px 90px -30px rgba(0,0,0,0.9);
  padding:34px clamp(20px,4vw,40px) 38px;
  transform:translateY(18px) scale(.985);
  transition:transform .4s var(--ease);
}
.consult.is-open .consult-panel{transform:none}
.consult-x{
  position:absolute;top:14px;right:16px;
  width:38px;height:38px;border:none;border-radius:50%;
  background:rgba(255,255,255,0.06);color:#cfd6e2;
  font-size:24px;line-height:1;cursor:pointer;
  transition:background .2s var(--ease),color .2s var(--ease);
}
.consult-x:hover{background:rgba(255,255,255,0.12);color:#fff}
.consult-eyebrow{
  font-family:"Jim Nightshade",cursive;font-size:24px;color:var(--accent);
  margin:0 0 2px;letter-spacing:.01em;
}
.consult-title{
  font-family:"Outfit",sans-serif;font-weight:600;font-size:clamp(26px,5vw,34px);
  color:var(--light);margin:0 0 6px;letter-spacing:-0.01em;
}
.consult-sub{font-family:"DM Sans",sans-serif;font-size:14px;color:var(--muted);margin:0 0 22px}

.consult-form{display:flex;flex-direction:column;gap:16px}
.cf-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:520px){.cf-row{grid-template-columns:1fr}}
.cf-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.cf-field label{font-family:"DM Sans",sans-serif;font-size:13px;color:#c4ccd8;letter-spacing:.01em}
.cf-field .req{color:var(--accent)}
.cf-field input,.cf-field select,.cf-field textarea{
  font-family:"Outfit",sans-serif;font-size:15px;color:var(--light);
  background:rgba(255,255,255,0.04);
  border:1px solid rgba(255,255,255,0.14);border-radius:12px;
  padding:11px 13px;width:100%;
  transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background-color .2s var(--ease);
}
.cf-field textarea{resize:vertical;min-height:96px}
.cf-field select{appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:linear-gradient(45deg,transparent 50%,#8a93a3 50%),linear-gradient(135deg,#8a93a3 50%,transparent 50%);
  background-position:calc(100% - 18px) 18px,calc(100% - 13px) 18px;background-size:5px 5px,5px 5px;background-repeat:no-repeat;
}
.cf-field input::placeholder,.cf-field textarea::placeholder{color:#6b7280}
.cf-field input:focus,.cf-field select:focus,.cf-field textarea:focus{
  outline:none;border-color:var(--accent);
  box-shadow:0 0 0 3px rgba(122,162,255,0.18);background:rgba(255,255,255,0.06);
}
.cf-field.has-err input,.cf-field.has-err textarea{border-color:#e0556b;box-shadow:0 0 0 3px rgba(224,85,107,0.16)}
.cf-err{font-family:"DM Sans",sans-serif;font-size:12px;color:#ef7b8c;min-height:0}
.cf-field.has-err .cf-err{min-height:14px}

/* honeypot — kept in the DOM but invisible & off-screen so bots fill it */
.consult-hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden;opacity:0;pointer-events:none}

.cf-turnstile{min-height:0;margin-top:2px}

.consult-submit{
  margin-top:6px;align-self:flex-start;
  font-family:"Outfit",sans-serif;font-weight:600;font-size:16px;color:#0b0d10;
  background:var(--light);border:none;border-radius:14px;
  padding:13px 26px;cursor:pointer;
  transition:transform .2s var(--ease),box-shadow .2s var(--ease),opacity .2s var(--ease);
}
.consult-submit:hover{transform:translateY(-2px);box-shadow:0 12px 28px -10px rgba(122,162,255,0.5)}
.consult-submit:disabled{opacity:.6;cursor:default;transform:none;box-shadow:none}
.consult-status{font-family:"DM Sans",sans-serif;font-size:14px;margin:4px 0 0;min-height:0}
.consult-status.is-ok{color:#67d391}
.consult-status.is-err{color:#ef7b8c}

@media (prefers-reduced-motion:reduce){
  .consult,.consult-panel{transition:none!important}
  .consult-panel{transform:none!important}
}
