/* ─────────────────────────────────────────────
   Liquid Glass — design tokens & shared shells
   ───────────────────────────────────────────── */

:root{
  --bg1:#ececef;
  --bg2:#f5f5f7;
  --bg3:#e9e9ec;

  --ink:#18181d;
  --ink-soft:rgba(24,24,29,.72);
  --ink-faint:rgba(24,24,29,.5);

  --glass:rgba(255,255,255,.40);
  --glass-strong:rgba(255,255,255,.62);
  --glass-hi:rgba(255,255,255,.80);
  --glass-border:rgba(255,255,255,.72);
  --glass-border-soft:rgba(255,255,255,.32);

  --accent:#232329;
  --accent-2:#5a5a63;
  --accent-3:#9a9aa3;

  --shadow:0 24px 70px -18px rgba(10,10,14,.35);
  --shadow-soft:0 10px 34px -12px rgba(10,10,14,.22);

  --radius-xl:32px;
  --radius-lg:24px;
  --radius-md:16px;
  --radius-pill:999px;

  --blur:28px;
  --ease:cubic-bezier(.22,.61,.36,1);

  --font-display:"Space Grotesk",system-ui,sans-serif;
  --font-body:"Inter",system-ui,sans-serif;
}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}

body{
  font-family:var(--font-body);
  color:var(--ink);
  background:linear-gradient(135deg,var(--bg1) 0%,var(--bg2) 46%,var(--bg3) 100%);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
  line-height:1.6;
}

img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;color:inherit;background:none;border:none}
input,textarea,select{font-family:inherit}

::selection{background:rgba(90,90,99,.28)}

/* ── fixed ambient background ─────────────────── */
#bg{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none}
.orb{position:absolute;border-radius:50%;filter:blur(64px);will-change:transform}
.orb.violet{width:52vmax;height:52vmax;left:-14vmax;top:-16vmax;background:radial-gradient(circle at 30% 30%,rgba(95,95,105,.5),rgba(95,95,105,0) 70%);animation:drift-a 22s var(--ease) infinite alternate}
.orb.pink{width:46vmax;height:46vmax;right:-12vmax;top:6vmax;background:radial-gradient(circle at 60% 40%,rgba(175,175,185,.42),rgba(175,175,185,0) 70%);animation:drift-b 26s var(--ease) infinite alternate}
.orb.teal{width:44vmax;height:44vmax;left:6vmax;bottom:-18vmax;background:radial-gradient(circle at 50% 50%,rgba(120,120,130,.4),rgba(120,120,130,0) 70%);animation:drift-c 24s var(--ease) infinite alternate}
.orb.amber{width:30vmax;height:30vmax;right:12vmax;bottom:4vmax;background:radial-gradient(circle at 50% 50%,rgba(205,205,212,.3),rgba(205,205,212,0) 70%);animation:drift-a 20s var(--ease) infinite alternate-reverse}

.bubble{position:absolute;bottom:-12vh;border-radius:50%;
  background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.95),rgba(255,255,255,.18) 55%,rgba(255,255,255,.05) 75%);
  box-shadow:inset 0 0 12px rgba(255,255,255,.8),0 12px 30px -12px rgba(20,20,30,.28);
  opacity:.55;animation:rise linear infinite}

@keyframes rise{
  0%{transform:translateY(0) translateX(0) scale(1)}
  50%{transform:translateY(-55vh) translateX(3vw) scale(1.06)}
  100%{transform:translateY(-115vh) translateX(-2vw) scale(.96)}
}
@keyframes drift-a{from{transform:translate(0,0) scale(1)}to{transform:translate(9vmax,7vmax) scale(1.12)}}
@keyframes drift-b{from{transform:translate(0,0) scale(1)}to{transform:translate(-8vmax,10vmax) scale(1.14)}}
@keyframes drift-c{from{transform:translate(0,0) scale(1)}to{transform:translate(-10vmax,-6vmax) scale(1.08)}}

/* film grain */
#bg::after{
  content:"";position:absolute;inset:0;opacity:.05;pointer-events:none;
  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.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.6'/%3E%3C/svg%3E");
  mix-blend-mode:overlay;
}

/* ── glass shells ─────────────────────────────── */
.glass{
  background:var(--glass);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(180%);
  backdrop-filter:blur(var(--blur)) saturate(180%);
  border:1px solid var(--glass-border);
  box-shadow:var(--shadow-soft),inset 0 1px 0 rgba(255,255,255,.8);
}

.glass-strong{
  background:var(--glass-strong);
  -webkit-backdrop-filter:blur(calc(var(--blur) + 8px)) saturate(200%);
  backdrop-filter:blur(calc(var(--blur) + 8px)) saturate(200%);
  border:1px solid var(--glass-border);
  box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.9);
}

.glass-inset{
  background:linear-gradient(145deg,rgba(255,255,255,.5),rgba(255,255,255,.18));
  border:1px solid var(--glass-border);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),inset 0 -12px 24px rgba(255,255,255,.12),0 2px 8px rgba(20,20,30,.08);
}

/* ── buttons ──────────────────────────────────── */
.btn{
  display:inline-flex;align-items:center;gap:.5rem;
  padding:.8rem 1.7rem;border-radius:var(--radius-pill);
  font-family:var(--font-display);font-size:.95rem;font-weight:600;letter-spacing:.02em;
  border:1px solid var(--glass-border);
  background:var(--glass-strong);
  -webkit-backdrop-filter:blur(20px) saturate(180%);backdrop-filter:blur(20px) saturate(180%);
  box-shadow:var(--shadow-soft),inset 0 1px 0 rgba(255,255,255,.85);
  color:var(--ink);
  transition:transform .4s var(--ease),box-shadow .4s var(--ease),background .4s var(--ease);
  white-space:nowrap;
}
.btn:hover{transform:translateY(-2px);box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,.9);background:var(--glass-hi)}

.btn-solid{
  background:linear-gradient(120deg,var(--accent),var(--accent-2));
  border-color:rgba(255,255,255,.5);
  color:#fff;
  box-shadow:0 16px 40px -12px rgba(20,20,25,.45),inset 0 1px 0 rgba(255,255,255,.4);
}
.btn-solid:hover{box-shadow:0 20px 50px -12px rgba(20,20,25,.5),inset 0 1px 0 rgba(255,255,255,.5)}

.btn-ghost{
  background:transparent;
  background:rgba(255,255,255,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4);
}
.btn-ghost:hover{background:rgba(255,255,255,.32)}

/* ── reveal on scroll ─────────────────────────── */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s var(--ease),transform .9s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal-delay-1{transition-delay:.08s}
.reveal-delay-2{transition-delay:.16s}
.reveal-delay-3{transition-delay:.24s}
.reveal-delay-4{transition-delay:.32s}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s !important;transition-duration:.001s !important;scroll-behavior:auto !important}
  .reveal{opacity:1;transform:none}
}