/* =============================================================================
   REQUEST TO JOIN — the application page.
   The valley system's third page: shares tokens, nav, button, pill, aura and
   footer with the lander + about page. All design decisions here are the FORM
   itself; everything else is lifted verbatim.

   NO BACKEND (2026-10-23 Dylan): the form submits to nothing. On submit the JS
   intercepts, shows the thank-you state, and the fields clear. Wire a real
   endpoint by swapping the form's action= and dropping the preventDefault.
   ============================================================================= */
@font-face{font-family:'Greed';font-weight:700;font-style:normal;src:url("fonts/greed-Bold.woff2") format("woff2");font-display:block}
@font-face{font-family:'Greed';font-weight:600;font-style:normal;src:url("fonts/greed-SemiBold.woff2") format("woff2");font-display:block}
@font-face{font-family:'Saans';font-weight:100 900;font-style:normal;src:url("fonts/saans-VF.woff2") format("woff2");font-display:block}

/* ---- tokens: verbatim from the lander ---- */
:root{
  --bg:#0B0E09; --bg-deep:#070906;
  --ink:#F2F2E9; --ink-2:#B7BCAC; --ink-3:#7E8476;
  --accent:#AAF988; --accent-hover:#BDFBA0; --accent-ink:#15200E;
  --p-pink:#F895C5; --p-purple:#B495F8; --p-cyan:#98EDFE; --p-green:#CEFC97;
  --line:rgba(244,243,236,.12); --line-soft:rgba(244,243,236,.07);
  --display:'Greed',ui-sans-serif,system-ui,sans-serif;
  --body:'Saans',ui-sans-serif,system-ui,sans-serif;
  --container:1280px; --pad:clamp(20px,4vw,48px);
  --ease:cubic-bezier(.2,.6,.2,1);
}
*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-weight:400;
  font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
::selection{background:rgba(170,249,136,.25)}
img{max-width:100%}
a{color:inherit}

.grain{position:fixed;inset:0;pointer-events:none;z-index:60;opacity:.055;
  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='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}

/* ---- nav: verbatim, canonical component across all three pages ---- */
nav{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:50;
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;
  width:min(720px,calc(100% - 40px));padding:7px 10px;border-radius:999px;
  background:linear-gradient(155deg,rgba(244,243,236,.09),rgba(244,243,236,.03) 42%,rgba(244,243,236,.012));
  backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);
  border:1px solid rgba(244,243,236,.15);
  box-shadow:0 24px 48px -32px rgba(0,0,0,.55),inset 0 1px 0 rgba(244,243,236,.14)}
.nav-left{justify-self:start;display:inline-flex;align-items:center;gap:14px}
.nav-wordmark{display:inline-flex;align-items:center;gap:9px;
  font-family:var(--display);font-weight:600;font-size:17px;letter-spacing:-.01em;
  color:inherit;text-decoration:none}
.nav-right{justify-self:end;display:inline-flex;align-items:center;gap:2px}
.nav-mascot{height:26px;width:auto;display:block}
.foot-mascot{height:36px;width:auto;display:block}
.nav-link{font-size:14px;color:var(--ink-2);text-decoration:none;padding:8px 12px;border-radius:999px;transition:color .2s;white-space:nowrap}
.nav-link:hover{color:var(--ink)}
/* .nav-cta base — Aura body + ring styles join below under the shared block */
.nav-cta{font-size:14px;font-weight:500;text-decoration:none;padding:9px 18px;border-radius:999px}

/* ---- shared type + button + pill + aura: verbatim ---- */
.container{max-width:var(--container);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}
h1,h2,h3{text-wrap:balance}
/* R1 site-wide: sentence case Greed 600 (2026-10-23) */
.h1{font-family:var(--display); font-weight:600; text-transform:none;
  font-size:clamp(36px,min(3.95vw,6.4svh),68px); line-height:1.06; letter-spacing:-.02em;
  text-wrap:balance; max-width:14ch; margin:0 auto}
.hero-sub{margin:26px auto 0;max-width:34em;color:var(--ink-2);font-size:clamp(16px,1.9vw,19px);line-height:1.55}
/* ============================================================================
   BUTTON — AURA variant (same as the lander, E6)
   Dark glass pill ringed by the brand's travelling light, lime arrow tracking
   right on hover. .btn + .nav-cta share the recipe so the submit button and the
   nav CTA land identical.
   ============================================================================ */
.btn{display:inline-flex; align-items:center; gap:.55em;
  font-family:var(--body); font-weight:500; font-size:16px; color:#EEF8E6;
  border:none; border-radius:999px; padding:15px 30px; text-decoration:none; cursor:pointer}
.btn:active{transform:translateY(1px)}

@property --btn-a{syntax:'<angle>'; inherits:false; initial-value:0deg}
@keyframes btn-spin{to{--btn-a:360deg}}

.btn,.nav-cta{position:relative; isolation:isolate;
  background:linear-gradient(180deg,rgba(36,42,32,.92),rgba(16,19,14,.92));
  color:#EEF8E6;
  box-shadow:inset 0 1px 0 rgba(244,243,236,.12), 0 12px 32px -14px rgba(170,249,136,.45);
  transition:background .2s, box-shadow .2s, color .2s, transform .1s}
.btn:hover,.nav-cta:hover{color:#FFFFFF;
  background:linear-gradient(180deg,rgba(42,49,37,.95),rgba(18,22,16,.95));
  box-shadow:inset 0 1px 0 rgba(244,243,236,.16), 0 14px 36px -12px rgba(170,249,136,.6)}
.btn::before,.nav-cta::before{content:""; position:absolute; inset:-1px;
  border-radius:inherit; padding:1.5px; z-index:-1; pointer-events:none;
  background:conic-gradient(from var(--btn-a),
    rgba(170,249,136,.25) 0turn, #CEFC97 .12turn, #98EDFE .25turn, #B495F8 .38turn,
    rgba(170,249,136,.25) .55turn, rgba(170,249,136,.25) 1turn);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite:exclude;
  animation:btn-spin 5s linear infinite}
.btn:hover::before,.nav-cta:hover::before{animation-duration:1.8s}
.btn::after,.nav-cta::after{content:""; width:1em; height:1em; flex:none; background:#AAF988;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9.2M8.6 4.4 12.2 8l-3.6 3.6' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8h9.2M8.6 4.4 12.2 8l-3.6 3.6' fill='none' stroke='black' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / contain no-repeat;
  transition:transform .3s cubic-bezier(.2,.7,.2,1)}
.btn:hover::after,.nav-cta:hover::after{transform:translateX(3px)}

@media (prefers-reduced-motion:reduce){
  .btn::before,.nav-cta::before{animation:none; --btn-a:212deg}
  .btn:hover::after,.nav-cta:hover::after{transform:none}
}

.btn:focus-visible,.nav-cta:focus-visible,a:focus-visible,.form-field input:focus-visible,.form-field textarea:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

.pill{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:999px;
  background:rgba(244,243,236,.03);border:1px solid var(--line);
  font-family:var(--body);font-size:11px;font-weight:500;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-2)}
@property --aura{syntax:'<angle>';inherits:false;initial-value:0deg}
@keyframes aura-spin{to{--aura:360deg}}
.aura{position:relative}
.aura::before,.aura::after{content:"";position:absolute;inset:0;border-radius:inherit;
  pointer-events:none;padding:var(--aura-w,1px);
  background:conic-gradient(from var(--aura) at 50% 50%,
    transparent 0turn,transparent calc(1turn - var(--aura-beam,.34turn)),
    rgba(248,149,197,0) calc(1turn - var(--aura-beam,.34turn)),
    var(--p-pink) calc(1turn - var(--aura-beam,.34turn) * .72),
    var(--p-purple) calc(1turn - var(--aura-beam,.34turn) * .50),
    var(--p-cyan) calc(1turn - var(--aura-beam,.34turn) * .28),
    var(--p-green) calc(1turn - var(--aura-beam,.34turn) * .10),
    rgba(206,252,151,0) 1turn);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);mask-composite:exclude;
  opacity:var(--aura-op,.85);
  animation:aura-spin var(--aura-dur,7.5s) linear infinite var(--aura-delay,0s)}
.aura::after{inset:-1px;padding:calc(var(--aura-w,1px) + 2px);filter:blur(6px);opacity:calc(var(--aura-op,.85) * .6)}
@media (prefers-reduced-motion:reduce){.aura::before,.aura::after{animation:none;--aura:212deg}}

/* ---- reveals: verbatim ---- */
.rv{opacity:1;transform:none}
.motion-ready .rv{opacity:0;transform:translateY(16px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.motion-ready .rv.in{opacity:1;transform:none}

/* ============ APPLY HERO ============
   Same horizon treatment as the About page's hero: sky + ridge, no stars, quiet.
   The valley reads as the backdrop; the form sits in it. */
/* ============ APPLY HERO — black-into-ink bookend (2026-10-23) ============
   Same aesthetic as the lander's split fold + Dawn CTA bookend: rich black at the
   top grading into the site's ink, two colourless drift fields on .sky, grain
   copy on ::after. No dusk purple/lime, no ridge SVG — the whole valley sky
   treatment went with E2/R2. The accent-green horizon arc crosses the hero at
   ~22% from the top, same visual grammar as the Direction C callout cards. */
.apply-hero{position:relative; overflow:hidden; z-index:61; min-height:100svh;
  background:linear-gradient(180deg,#000 0%,#000 38%,#030403 62%,var(--bg) 100%);
  padding:clamp(130px,16vh,170px) 0 clamp(60px,8vh,100px);
  --glow-x:50%}
.apply-hero .container{position:relative; z-index:3}

/* ===== SPLIT FOLD (2026-10-23) — copy left, form right. Mirrors the hero's
   .hero-split so the apply page reads as the lander's cousin. ===== */
.apply-split{position:relative; z-index:3;
  display:grid; grid-template-columns:1fr 1fr; gap:clamp(40px,5vw,80px); align-items:center;
  max-width:1280px; margin:0 auto;
  padding:0 clamp(32px,5vw,64px)}
.apply-content{display:flex; flex-direction:column; align-items:flex-start; gap:22px; text-align:left; min-width:0}
.apply-content .pill{align-self:flex-start}
.apply-content .h1{text-align:left; margin:0; max-width:12ch}
.apply-content .hero-sub{text-align:left; margin:0; max-width:34em}
.apply-form-slot{position:relative; min-width:0}

@media (max-width:920px){
  .apply-split{grid-template-columns:1fr; gap:36px; padding:0 var(--pad)}
  .apply-content{text-align:center; align-items:center}
  .apply-content .h1{text-align:center; margin:0 auto; max-width:14ch}
  .apply-content .hero-sub{text-align:center; margin:0 auto}
  .apply-hero{min-height:0}
}

.apply-hero .sky{position:absolute; inset:0; z-index:1; overflow:hidden; background:none; pointer-events:none;
  -webkit-mask:linear-gradient(180deg,transparent 0%,#000 34%,#000 55%,transparent 90%);
  mask:linear-gradient(180deg,transparent 0%,#000 34%,#000 55%,transparent 90%)}
.apply-hero .sky::before,.apply-hero .sky::after{content:""; position:absolute; border-radius:50%;
  pointer-events:none; will-change:transform}
.apply-hero .sky::before{width:72vmax; height:72vmax; left:calc(var(--glow-x) - 36vmax); top:calc(52% - 36vmax);
  background:radial-gradient(closest-side,rgba(255,255,255,.050) 0%,rgba(255,255,255,.020) 42%,transparent 100%);
  animation:apply-drift-a 26s ease-in-out infinite alternate}
.apply-hero .sky::after{width:54vmax; height:54vmax; left:calc(var(--glow-x) - 44vmax); top:calc(62% - 27vmax);
  background:radial-gradient(closest-side,rgba(255,255,255,.032) 0%,rgba(255,255,255,.012) 48%,transparent 100%);
  animation:apply-drift-b 34s ease-in-out infinite alternate}
@keyframes apply-drift-a{0%{transform:translate(-8vw,-5vh) scale(1)} 50%{transform:translate(5vw,6vh) scale(1.1)} 100%{transform:translate(9vw,-6vh) scale(.92)}}
@keyframes apply-drift-b{0%{transform:translate(2vw,4vh) scale(1)} 50%{transform:translate(-12vw,-8vh) scale(1.16)} 100%{transform:translate(6vw,2vh) scale(.94)}}
@media (prefers-reduced-motion:reduce){.apply-hero .sky::before,.apply-hero .sky::after{animation:none}}

/* grain copy on hero, masked clear at top + full at foot — meets the form wrap seamlessly */
.apply-hero::after{content:""; position:absolute; inset:0; z-index:2; pointer-events:none; opacity:.055;
  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='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
  -webkit-mask:linear-gradient(180deg,transparent 0%,transparent 40%,#000 100%);
  mask:linear-gradient(180deg,transparent 0%,transparent 40%,#000 100%)}

/* horizon arc, same recipe as the Dawn bookend */
.apply-horizon{position:absolute; left:50%; top:22%; transform:translateX(-50%);
  width:min(220%,2400px); height:70%; z-index:2; pointer-events:none;
  border-radius:50%; border-top:1.5px solid rgba(170,249,136,.4);
  box-shadow:0 -12px 48px rgba(170,249,136,.22), 0 -1px 0 rgba(170,249,136,.5)}
@media (max-width:920px){.apply-horizon{top:17%; width:min(260%,1800px); height:60%}}

/* lift nav above hero's grain copy, same as the lander */
nav{z-index:70}

/* FORM lives in the right column of .apply-split — no separate section. */
.apply-form{display:flex; flex-direction:column; gap:16px}
.form-field{display:flex;flex-direction:column;gap:8px}
.form-field label{font-family:var(--body);font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-2);font-weight:500}
.form-field label .req{color:var(--p-cyan);margin-left:4px;opacity:.8}
.form-field input,.form-field textarea{font-family:var(--body);font-size:16px;color:var(--ink);
  background:rgba(244,243,236,.03);border:1px solid var(--line);border-radius:12px;
  padding:14px 16px;transition:border-color .2s,background .2s;width:100%;
  -webkit-appearance:none;appearance:none}
.form-field input::placeholder,.form-field textarea::placeholder{color:var(--ink-3);opacity:.7}
.form-field input:hover,.form-field textarea:hover{border-color:rgba(244,243,236,.22)}
.form-field input:focus,.form-field textarea:focus{outline:none;border-color:var(--accent);background:rgba(244,243,236,.05)}
.form-field input:invalid:not(:placeholder-shown),.form-field textarea:invalid:not(:placeholder-shown){border-color:rgba(248,149,197,.45)}
.form-field textarea{min-height:140px;resize:vertical;line-height:1.5;font-family:var(--body)}
.form-help{font-family:var(--body);font-size:13px;color:var(--ink-3);line-height:1.5;margin-top:2px}

/* honeypot: hidden to humans, filled by bots. If it has a value on submit, drop silently. */
.form-honey{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}

.form-submit{margin-top:12px;display:flex;flex-direction:column;align-items:flex-start;gap:14px}
.form-submit .btn{min-width:200px;padding:16px 32px;font-size:16px}
@media (max-width:920px){
  .form-submit{align-items:center}
}

/* thanks state: hidden by default, revealed when the form submits */
.apply-thanks{display:none;text-align:center}
.apply-form[data-submitted="true"]{display:none}
.apply-form[data-submitted="true"]+.apply-thanks{display:block}
.apply-thanks .thanks-pill{margin-bottom:18px}
/* R1: sentence case Greed 600 — the thanks headline matches site-wide type rule */
.apply-thanks h2{font-family:var(--display); font-weight:600; text-transform:none;
  font-size:clamp(28px,3.2vw,42px); line-height:1.1; letter-spacing:-.02em; margin-bottom:18px}
.apply-thanks p{color:var(--ink-2);font-size:17px;line-height:1.55;max-width:34em;margin:0 auto}

/* ---- footer: verbatim ---- */
footer{background:var(--bg-deep);padding:56px 0 44px}
.foot-row{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.foot-links{display:flex;gap:26px}
.foot-links a{font-size:14px;color:var(--ink-3);text-decoration:none}
.foot-links a:hover{color:var(--ink)}
.foot-tag{margin-top:34px;display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  font-family:var(--body);font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3)}
.foot-social{display:flex;align-items:center;gap:6px}
.foot-social a{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;
  border-radius:999px;color:var(--ink-3);transition:color .2s,background .2s}
.foot-social a:hover{color:var(--ink);background:rgba(244,243,236,.06)}
.foot-social svg{width:18px;height:18px;display:block}

@media (max-width:920px){
  .nav-link{display:none}
  .apply-hero{padding-top:clamp(128px,18vh,170px);padding-bottom:60px}
}
@media (max-width:540px){
  nav{width:calc(100% - 20px);padding:6px 8px;gap:2px;grid-template-columns:auto 1fr auto}
  .nav-wordmark{font-size:15px;gap:6px}
  .nav-cta{font-size:13px;padding:9px 13px}
  .nav-mascot{height:22px}
}
@media (prefers-reduced-motion:reduce){
  .motion-ready .rv{opacity:1;transform:none;transition:none}
}

/* ============ APPLY, SLICKER (2026-10-29, Cian) ================================
   Black like Dawn, no arc. Heading pinned level with the top of the form; the form
   sits in the nav's glass, short fields paired so it fits one screen. A hairline
   fills across the panel top as required fields come good; each valid field gets a
   quiet tick; focus is a soft accent ring. Every word and field unchanged. */
.apply-hero{background:#000}
.apply-horizon,.apply-hero .sky{display:none}
@media (min-width:921px){
  .apply-split{align-items:start}
  .apply-content{position:sticky; top:clamp(150px,20vh,200px); padding-top:clamp(28px,4vh,44px)}
  .apply-content .h1{font-size:clamp(44px,4.6vw,68px)}
}
.apply-content .hero-sub{color:var(--ink); font-size:clamp(18px,1.45vw,21px); line-height:1.4; letter-spacing:-.018em; max-width:26em}
.apply-content .hero-sub b{font-weight:500}
.apply-content .hero-sub .mu{opacity:.56}

.apply-form{position:relative; gap:18px; padding:clamp(24px,3vw,40px); border-radius:28px; overflow:hidden;
  background:linear-gradient(155deg,rgba(244,243,236,.07),rgba(244,243,236,.025) 42%,rgba(244,243,236,.01));
  border:1px solid rgba(244,243,236,.12);
  box-shadow:0 40px 80px -48px rgba(0,0,0,.9),inset 0 1px 0 rgba(244,243,236,.1)}
.form-row{display:grid; grid-template-columns:1fr 1fr; gap:18px}
@media (max-width:640px){.form-row{grid-template-columns:1fr}}

/* progress hairline across the panel top (apply.js sets --p, 0→1) */
.form-progress{position:absolute; left:0; right:0; top:0; height:2px; background:rgba(244,243,236,.06)}
.form-progress i{position:absolute; inset:0; transform-origin:0 50%; transform:scaleX(var(--p,0));
  background:linear-gradient(90deg,#CEFC97,#98EDFE 55%,#B495F8);
  box-shadow:0 0 14px rgba(170,249,136,.45); transition:transform .7s cubic-bezier(.2,.6,.2,1)}

.form-field{position:relative; gap:9px}
.form-field label{color:var(--ink-2)}
.form-field input,.form-field textarea{font-size:16px; border-radius:14px; padding:15px 44px 15px 16px;
  background:rgba(0,0,0,.35); border-color:rgba(244,243,236,.1);
  transition:border-color .35s cubic-bezier(.2,.6,.2,1),background .35s cubic-bezier(.2,.6,.2,1),box-shadow .35s cubic-bezier(.2,.6,.2,1)}
.form-field textarea{min-height:80px; padding-right:16px} /* 2 lines: 2x24 + 30 padding + 2 border (Dylan, 6 Nov) */
.form-field input:focus,.form-field textarea:focus{border-color:rgba(170,249,136,.7); background:rgba(0,0,0,.5);
  box-shadow:0 0 0 4px rgba(170,249,136,.12)}
.form-field input:focus-visible,.form-field textarea:focus-visible{outline:none}
/* valid tick: fades and settles in at the field's right edge */
.form-field::after{content:""; position:absolute; right:16px; bottom:18px; width:16px; height:16px; pointer-events:none;
  background:#AAF988; opacity:0; transform:scale(.6);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4 6.6 11.4 12.6 4.8' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.4 6.6 11.4 12.6 4.8' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:opacity .4s cubic-bezier(.2,.6,.2,1),transform .5s cubic-bezier(.3,1.6,.4,1)}
.form-field:has(input:valid:not(:placeholder-shown))::after{opacity:1; transform:none}
.form-field:has(textarea)::after{display:none}
.form-submit{margin-top:6px}
@media (prefers-reduced-motion:reduce){.form-progress i,.form-field::after{transition:none}}
/* sticky heading needs a non-scrolling clip on the hero (overflow:hidden would
   make the hero the scroll container and pin nothing) */
.apply-hero{overflow:clip}
/* never a hard seam: the black form band fades into the footer's green-black */
.apply-hero{background:linear-gradient(180deg,#000 0%,#000 62%,#030403 82%,var(--bg-deep) 100%)}

/* ============ APPLY, PLAYFUL (2026-10-29, Cian) ===================================
   Small, input-led touches. The mascot waits behind the top edge of the form panel
   and rises as fields come good (--fill 0→1 from apply.js); when everything is valid
   he hops and the submit button's ring quickens. A hello by first name fades in under
   the intro as it's typed. The focused field's label tints green. */
.apply-form-slot{--fill:0}
.peek{position:absolute;right:44px;bottom:calc(100% - 1px);width:64px;height:58px;overflow:hidden;pointer-events:none;z-index:0}
.peek img{position:absolute;left:0;bottom:0;width:64px;height:auto;display:block;transform-origin:50% 100%;
  transform:translateY(calc((1 - var(--fill)) * 72% + 8%));transition:transform .7s cubic-bezier(.3,1.4,.4,1)}
.apply-form-slot:has(.apply-form.is-ready) .peek img{transform:translateY(0)}
.peek.hop img{animation:peek-hop .7s cubic-bezier(.3,.7,.3,1)}
@keyframes peek-hop{0%{transform:translateY(0)}20%{transform:translateY(4%) scale(1.06,.92)}50%{transform:translateY(-14%) rotate(-6deg)}75%{transform:translateY(0) rotate(2deg) scale(1.04,.96)}100%{transform:translateY(0)}}
.apply-form-slot:has([data-submitted="true"]) .peek{display:none}
.hello{margin:0;min-height:1.4em;font-size:clamp(17px,1.35vw,20px);font-weight:500;color:#CEFC97;
  opacity:0;filter:blur(6px);transform:translateY(6px);transition:opacity .6s cubic-bezier(.2,.6,.2,1),filter .6s cubic-bezier(.2,.6,.2,1),transform .6s cubic-bezier(.2,.6,.2,1)}
.hello.on{opacity:1;filter:none;transform:none}
.form-field label{transition:color .35s cubic-bezier(.2,.6,.2,1)}
.form-field:focus-within label{color:#CEFC97}
.apply-form.is-ready .btn::before{animation-duration:2.2s}
.apply-form.is-ready .btn{box-shadow:inset 0 1px 0 rgba(244,243,236,.16),0 12px 30px -14px rgba(170,249,136,.4)}
@media (max-width:920px){ .peek{right:24px;width:52px;height:46px} .peek img{width:52px} }
@media (prefers-reduced-motion:reduce){ .peek img{transition:none} .peek.hop img{animation:none} .hello{transition:none;filter:none;transform:none} }

/* ============ SUBMIT STATES (2026-11-06, HubSpot wiring) ===========================
   .form-error shows under the button when HubSpot doesn't confirm the submission;
   the button dims while the request is in flight. */
.form-submit .form-error{margin:0;font-family:var(--body);font-size:14px;line-height:1.45;color:#F895C5;max-width:36em}
.form-submit .form-error[hidden]{display:none}
.apply-form .btn[aria-busy="true"]{opacity:.6;cursor:progress}
@media (max-width:920px){ .form-submit .form-error{text-align:center} }
