@property --mx { syntax: '<percentage>'; inherits: true; initial-value: 50%; }
@property --my { syntax: '<percentage>'; inherits: true; initial-value: 42%; }

:root{
  --bg:#08080A;
  --ink:#F2F2F6;
  --ink-2:#9C9CAC;
  --ink-3:#5E5E70;
  --iris:#8B7BFF;
  --orchid:#D89CFF;
  --mint:#7FE9DC;
  --hair:rgba(255,255,255,.09);
  --pad:clamp(20px,4.6vw,68px);
  --ease:cubic-bezier(.2,.75,.2,1);
}

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}

body{
  min-height:100svh;
  background:var(--bg);
  color:var(--ink);
  font-family:'Funnel Sans',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow:hidden;
}

/* ---------- ambient field ---------- */
.field{position:fixed;inset:-20%;z-index:0;pointer-events:none;filter:blur(90px);opacity:.62}
.blob{position:absolute;border-radius:50%;will-change:transform}
.b1{width:46vmax;height:46vmax;left:2%;top:6%;background:radial-gradient(circle,#5B3FE8 0%,transparent 68%);animation:f1 34s var(--ease) infinite}
.b2{width:40vmax;height:40vmax;right:0%;top:24%;background:radial-gradient(circle,#B14BF4 0%,transparent 66%);animation:f2 41s var(--ease) infinite}
.b3{width:34vmax;height:34vmax;left:34%;bottom:0%;background:radial-gradient(circle,#1E8F86 0%,transparent 66%);animation:f3 47s var(--ease) infinite}
@keyframes f1{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(12vw,8vh,0) scale(1.18)}}
@keyframes f2{0%,100%{transform:translate3d(0,0,0) scale(1.06)}50%{transform:translate3d(-14vw,10vh,0) scale(.9)}}
@keyframes f3{0%,100%{transform:translate3d(0,0,0) scale(.95)}50%{transform:translate3d(10vw,-12vh,0) scale(1.2)}}

.veil{position:fixed;inset:0;z-index:1;pointer-events:none;
  background:radial-gradient(120% 80% at 50% 0%, transparent 20%, rgba(8,8,10,.72) 100%)}

.grain{position:fixed;inset:0;z-index:2;pointer-events:none;opacity:.055;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---------- shell ---------- */
.shell{position:relative;z-index:3;min-height:100svh;padding:var(--pad);
  display:grid;grid-template-rows:1fr auto;gap:clamp(36px,6vh,64px)}


main{align-self:center;width:100%;max-width:1300px}

/* entrance */
.in{opacity:0;transform:translateY(18px);filter:blur(10px);
  animation:in 1.1s var(--ease) forwards;animation-delay:var(--d,0s)}
@keyframes in{to{opacity:1;transform:none;filter:none}}

.eyebrow{font-family:'Martian Mono',ui-monospace,monospace;font-weight:300;
  font-size:clamp(9px,1.1vw,11.5px);letter-spacing:.12em;text-transform:uppercase;
  color:var(--ink-2);margin-bottom:clamp(20px,3.4vh,34px)}

/* ---------- headline with light ---------- */
.hero{position:relative;display:inline-block;
  font-family:'Funnel Display','Funnel Sans',sans-serif;font-weight:800;
  font-size:clamp(52px,11.4vw,178px);line-height:.87;letter-spacing:-.055em}
.hero .base{display:block;color:#3A3A46}
.hero .lit{
  position:absolute;inset:0;display:block;
  background:linear-gradient(96deg,var(--iris) 0%,var(--orchid) 42%,var(--mint) 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  -webkit-mask-image:radial-gradient(circle 24vmin at var(--mx) var(--my),#000 0%,rgba(0,0,0,.55) 42%,transparent 72%);
  mask-image:radial-gradient(circle 24vmin at var(--mx) var(--my),#000 0%,rgba(0,0,0,.55) 42%,transparent 72%);
  animation:sweep 16s ease-in-out infinite}
@keyframes sweep{
  0%,100%{--mx:14%;--my:64%}
  35%{--mx:78%;--my:28%}
  70%{--mx:42%;--my:82%}
}
body.tracking .hero .lit{animation:none}

/* ---------- proof ---------- */
.proof{display:flex;flex-wrap:wrap;gap:clamp(22px,3.4vw,52px);
  margin-top:clamp(26px,4vh,42px);padding-top:clamp(20px,3vh,28px);
  border-top:1px solid var(--hair)}
.proof div{display:flex;flex-direction:column;gap:6px}
.proof b{font-family:'Funnel Display','Funnel Sans',sans-serif;font-weight:600;
  font-size:clamp(24px,3.4vw,40px);letter-spacing:-.04em;line-height:1;
  background:linear-gradient(96deg,var(--iris),var(--orchid));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.proof span{font-family:'Martian Mono',ui-monospace,monospace;font-weight:300;
  font-size:clamp(9px,1.05vw,10.5px);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-3)}

.recent{margin-top:clamp(22px,3.2vh,32px);
  font-family:'Martian Mono',ui-monospace,monospace;font-weight:300;
  font-size:clamp(9px,1.05vw,11px);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.recent a{color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--hair);padding-bottom:2px;
  transition:color .35s var(--ease),border-color .35s var(--ease)}
.recent a:hover{color:var(--ink);border-color:var(--iris)}

.lede{margin-top:clamp(24px,4vh,40px);max-width:40ch;
  font-size:clamp(15px,1.65vw,19px);line-height:1.62;font-weight:300;color:var(--ink-2);text-wrap:pretty}

/* ---------- cta ---------- */
.cta{position:relative;display:inline-flex;align-items:center;gap:14px;overflow:hidden;
  margin-top:clamp(28px,4.4vh,44px);padding:15px 26px;border-radius:999px;
  border:1px solid var(--hair);background:rgba(255,255,255,.035);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  color:var(--ink);text-decoration:none;font-size:clamp(14px,1.5vw,16px);font-weight:400;
  transition:color .45s var(--ease),border-color .45s var(--ease)}
.cta::before{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(96deg,var(--iris),var(--orchid));
  transform:translateX(-101%);transition:transform .5s var(--ease)}
.cta span{position:relative}
.cta .arrow{transition:transform .45s var(--ease)}
.cta:hover,.cta:focus-visible{color:#0B0B10;border-color:transparent}
.cta:hover::before,.cta:focus-visible::before{transform:translateX(0)}
.cta:hover .arrow,.cta:focus-visible .arrow{transform:translateX(6px)}
.cta:focus-visible{outline:2px solid var(--orchid);outline-offset:5px}

/* ---------- footer ---------- */
footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px 24px;
  font-family:'Martian Mono',ui-monospace,monospace;font-weight:300;
  font-size:clamp(9px,1.05vw,11px);letter-spacing:.02em;text-transform:uppercase;color:var(--ink-3)}


/* ---------- contact panel ---------- */
.panel{display:none;max-width:min(480px,100%);margin-top:clamp(22px,3.4vh,32px)}
.panel.open{display:block;animation:liftPanel .6s var(--ease) both}
.panel form{display:grid;gap:10px}
.panel .row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.panel .row>div{display:grid;gap:10px}
@media (max-width:460px){.panel .row{grid-template-columns:1fr}}
.panel label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.panel input,.panel textarea{
  width:100%;padding:14px 16px;border-radius:14px;
  border:1px solid var(--hair);background:rgba(255,255,255,.04);color:var(--ink);
  font-family:'Funnel Sans',system-ui,sans-serif;font-size:15px;font-weight:300;line-height:1.5;
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  transition:border-color .35s var(--ease),background .35s var(--ease)}
.panel input::placeholder,.panel textarea::placeholder{color:var(--ink-3)}
.panel input:focus,.panel textarea:focus{outline:none;border-color:var(--iris);background:rgba(255,255,255,.06)}
.panel textarea{resize:vertical;min-height:104px}
.panel .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.panel button{
  justify-self:start;margin-top:2px;padding:14px 26px;border-radius:999px;cursor:pointer;
  border:1px solid var(--hair);background:linear-gradient(96deg,var(--iris),var(--orchid));
  color:#0B0B10;font-family:'Funnel Sans',sans-serif;font-size:15px;font-weight:500;
  transition:opacity .35s var(--ease),transform .35s var(--ease)}
.panel button:hover{transform:translateY(-1px)}
.panel button[disabled]{opacity:.5;cursor:progress;transform:none}
@keyframes liftPanel{from{opacity:0;transform:translateY(12px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}
.status{margin-top:12px;font-family:'Martian Mono',ui-monospace,monospace;font-weight:300;
  font-size:clamp(9px,1.05vw,11px);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3)}
.status.ok{color:var(--mint)}
.status.bad{color:#FF8A9B}

.heart{font-style:normal;color:var(--orchid);font-size:1.05em;line-height:1;
  display:inline-block;vertical-align:-1px;animation:beat 3.2s var(--ease) infinite}
@keyframes beat{0%,100%{transform:scale(1)}12%{transform:scale(1.22)}24%{transform:scale(1)}36%{transform:scale(1.14)}48%{transform:scale(1)}}

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

@media (max-width:640px){
  .field{filter:blur(60px);opacity:.55}
  .b3{display:none}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  .in{opacity:1;transform:none;filter:none}
  .hero .lit{--mx:38%;--my:46%}
}

/* ---------- contact page ---------- */
.hero.small{font-size:clamp(42px,8vw,116px)}
.back{color:inherit;text-decoration:none;border-bottom:1px solid transparent;padding-bottom:2px;
  transition:color .35s var(--ease),border-color .35s var(--ease)}
.back:hover{color:var(--ink);border-color:var(--iris)}
main:has(.panel) .lede{margin-top:clamp(18px,3vh,30px)}

