/* We All Win With Tim — brand tokens from the illustrator style sheet (p.1) */
@font-face{font-family:"Permanent Marker";src:url(/fonts/permanent-marker.woff2) format("woff2");font-display:swap}
@font-face{font-family:"Andika";src:url(/fonts/andika-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Andika";src:url(/fonts/andika-700.woff2) format("woff2");font-weight:700;font-display:swap}
:root{
  /* Tim */ --tim-yellow:#EDCC33;--tim-yellow-light:#EDE674;--tim-fin-aqua:#0FA5BB;
  /* Water & light */ --cerulean:#0189B9;--bright-water:#029AC3;--ray-aqua:#41BDCD;--deep-water:#1E4474;--midnight:#181D2F;--spot-sand:#F7F3E7;--sand-shade:#EEE7D2;
  /* Line & eyes */ --outline-ink:#203343;--pupil-navy:#1F2A53;
  /* Reef */ --kelp-indigo:#1F294A;--kelp-violet:#334F8E;--coral-dot-pink:#F3A392;--crab-orange-light:#E58336;
  /* Type */ --chalk:#ECEDEC;--badge-aqua:#61BBCC;--badge-ink:#032C54;
  --title:"Permanent Marker","Caveat Brush",cursive;
  --body:"Andika",system-ui,-apple-system,"Segoe UI",sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--body);font-size:clamp(17px,1.15vw + 12px,20px);line-height:1.6;color:var(--chalk);background:var(--midnight);overflow-x:hidden}
img{max-width:100%;height:auto;display:block}
.skip{position:absolute;left:-999px;top:8px;z-index:100;background:var(--spot-sand);color:var(--badge-ink);padding:.5em 1em;border-radius:8px}
.skip:focus{left:8px}

/* ── The ocean: one long depth ramp (light source → page edges) ── */
.ocean{position:relative;overflow:hidden;
  background:linear-gradient(180deg,
    var(--spot-sand) 0, #CBE9EC 22vh, var(--ray-aqua) 52vh,
    var(--bright-water) 64vh, var(--cerulean) 140vh,
    #0F6FA3 210vh, var(--deep-water) 290vh, #1B2F55 340vh, var(--midnight) 100%)}
.ocean::after{/* vignette to Midnight Navy at the edges, never black */
  content:"";position:absolute;inset:100vh 0 0 0;pointer-events:none;z-index:1;
  background:radial-gradient(120% 60% at 50% 40%,transparent 55%,rgba(24,29,47,.55) 100%);
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 60vh);mask-image:linear-gradient(180deg,transparent 0,#000 60vh)}

/* ── Surface ── */
.surface{position:relative;min-height:100vh;min-height:100svh;display:grid;place-items:center;padding:12vh 5vw 14vh;text-align:center}
.sky{position:absolute;inset:0 0 auto 0;height:46%;background:radial-gradient(70% 90% at 50% 0,#fffdf6 0,rgba(247,243,231,0) 70%)}
.waterline{position:absolute;left:0;right:0;top:40%;height:70px;z-index:2}
.waterline svg{width:100%;height:100%;display:block}
.surface::after{content:"";position:absolute;left:0;right:0;top:calc(40% + 68px);bottom:0;background:linear-gradient(180deg,var(--bright-water) 0,var(--bright-water) 60%,rgba(2,154,195,0) 100%);z-index:1}
.lockup{position:relative;z-index:4;margin-top:26vh}
.title{font-family:var(--title);font-weight:400;margin:0;line-height:.9;color:var(--chalk);letter-spacing:.02em;text-transform:uppercase;
  text-shadow:0 2px 0 rgba(3,44,84,.25)}
.t-big{display:block;font-size:clamp(3rem,10vw,7.5rem)}
.t-small{display:block;font-size:clamp(1.6rem,4.6vw,3.4rem);margin-top:.15em}
.badge{display:inline-block;margin:1.4rem 0 0;padding:.35em 1.1em;border-radius:999px;background:var(--badge-aqua);color:var(--badge-ink);font-weight:700;font-size:.95rem;letter-spacing:.06em;text-transform:uppercase;box-shadow:inset 0 0 0 2px rgba(3,44,84,.18)}
.scroll-cue{position:absolute;z-index:4;bottom:4vh;left:0;right:0;margin:0;color:var(--chalk);font-size:.95rem;opacity:.9}
.scroll-cue .arrow{display:inline-block;animation:nudge 1.8s ease-in-out infinite}
@keyframes nudge{50%{transform:translateY(6px)}}

/* ── Light rays: soft cones of Light-Ray Aqua widening downwards ── */
.rays{position:absolute;pointer-events:none;z-index:1;left:0;right:0;mix-blend-mode:screen}
.rays i{position:absolute;top:0;width:16vw;height:100%;
  background:linear-gradient(180deg,rgba(65,189,205,.55),rgba(65,189,205,0));
  clip-path:polygon(42% 0,58% 0,100% 100%,0 100%);filter:blur(6px);opacity:.5;animation:shimmer 7s ease-in-out infinite}
.rays i:nth-child(2){animation-delay:-2s;width:10vw}.rays i:nth-child(3){animation-delay:-4s;width:20vw}.rays i:nth-child(4){animation-delay:-1s}.rays i:nth-child(5){animation-delay:-5s;width:12vw}
@keyframes shimmer{50%{opacity:.25}}
.rays--surface{top:calc(40% + 50px);bottom:0}
.rays--surface i:nth-child(1){left:8%;transform:rotate(12deg)}.rays--surface i:nth-child(2){left:30%;transform:rotate(6deg)}.rays--surface i:nth-child(3){left:52%;transform:rotate(-2deg)}.rays--surface i:nth-child(4){left:70%;transform:rotate(-8deg)}.rays--surface i:nth-child(5){left:86%;transform:rotate(-14deg)}
.rays--shallow{top:0;height:80%}
.rays--shallow i{opacity:.32}
.rays--shallow i:nth-child(1){left:4%;transform:rotate(10deg)}.rays--shallow i:nth-child(2){left:36%;transform:rotate(3deg)}.rays--shallow i:nth-child(3){left:60%;transform:rotate(-5deg)}.rays--shallow i:nth-child(4){left:82%;transform:rotate(-11deg)}

/* ── Zones ── */
.zone{position:relative;min-height:110vh;padding:14vh 6vw}
.zone>.life,.zone>.bubbles{z-index:2}
.midwater{min-height:130vh}
.card{position:relative;z-index:6;max-width:30rem;padding:1.6rem 1.8rem;border-radius:22px;
  background:rgba(30,68,116,.45);box-shadow:inset 0 0 0 2px rgba(236,237,236,.12);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.card h2{font-family:var(--title);font-weight:400;font-size:clamp(1.9rem,4vw,2.8rem);line-height:1.05;margin:0 0 .6rem;color:var(--chalk)}
.card p{margin:0 0 .6rem}
.card--left{margin-right:auto;margin-left:2vw;top:10vh}
.card--right{margin-left:auto;margin-right:2vw;top:30vh}
.verse{font-size:1.12em}

/* ── Sea life (parallax) ── */
.life{position:absolute;inset:0;pointer-events:none;z-index:2}
.px{position:absolute;left:var(--x);top:var(--y);width:var(--w);height:auto;will-change:transform}
.px.back,.r.back{filter:saturate(.55) brightness(.9) contrast(.85);opacity:.55}
.drift-r{animation:drift-r 9s ease-in-out infinite alternate}
.drift-l{animation:drift-l 10s ease-in-out infinite alternate}
.slow{animation-duration:14s}
.bob{animation:bob 6s ease-in-out infinite alternate}
@keyframes drift-r{to{translate:40px -8px}}
@keyframes drift-l{to{translate:-44px 6px}}
@keyframes bob{to{translate:0 -18px}}
.kelp-sway,.sway{transform-origin:50% 100%;animation:sway 6s ease-in-out infinite alternate}
@keyframes sway{from{rotate:-3deg}to{rotate:3deg}}

/* ── Bubbles: chalky rings, never glossy ── */
.bubbles{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.bubbles i,.trail i,.school i.b{position:absolute;bottom:-40px;width:22px;height:22px;background:url(/img/bubble.webp) center/contain no-repeat;opacity:.85;animation:rise 9s linear infinite}
.bubbles i:nth-child(1){left:12%;animation-delay:-1s}
.bubbles i:nth-child(2){left:28%;width:14px;height:14px;animation-delay:-4s;animation-duration:7s}
.bubbles i:nth-child(3){left:47%;width:18px;height:18px;animation-delay:-6s}
.bubbles i:nth-child(4){left:73%;width:12px;height:12px;animation-delay:-2s;animation-duration:8s}
.bubbles i:nth-child(5){left:90%;animation-delay:-7s;animation-duration:11s}
@keyframes rise{0%{transform:translate(0,0)}50%{transform:translate(12px,-55vh)}100%{transform:translate(-6px,-110vh);opacity:0}}

/* ── Reef ── */
.reef{min-height:100vh;padding:30vh 5vw 0;display:flex;flex-direction:column;justify-content:flex-end}
.disco{position:absolute;top:0;left:50%;transform:translateX(-50%);z-index:3;display:flex;flex-direction:column;align-items:center}
.disco .string{display:block;width:2px;height:8vh;background:rgba(236,237,236,.35)}
.disco img{width:clamp(64px,7vw,96px);animation:spin 8s ease-in-out infinite alternate;transform-origin:50% 0}
@keyframes spin{from{rotate:-4deg}to{rotate:4deg}}
.rays--disco{top:calc(8vh + 80px);height:80vh;mix-blend-mode:screen}
.rays--disco i{left:50%;margin-left:-8vw;transform-origin:50% 0;opacity:.32}
.rays--disco i:nth-child(1){transform:rotate(28deg)}.rays--disco i:nth-child(2){transform:rotate(14deg)}.rays--disco i:nth-child(3){transform:rotate(0)}.rays--disco i:nth-child(4){transform:rotate(-14deg)}.rays--disco i:nth-child(5){transform:rotate(-28deg)}
.pool{position:absolute;left:50%;bottom:6%;width:min(60vw,560px);transform:translateX(-50%);z-index:3;opacity:.85}
.join-wrap{position:relative;z-index:6;display:flex;justify-content:center;align-items:flex-end;gap:2vw;margin-bottom:max(150px,17vw)}
.card--form{max-width:34rem;width:100%;background:rgba(30,68,116,.62);padding:2rem 2rem 1.5rem}
.card--form .tim-anchor{display:none}
.join-wrap>.tim-anchor{position:relative;flex:0 0 clamp(130px,16vw,220px);height:clamp(110px,13vw,180px)}
form label{display:block;font-weight:700;margin:.6rem 0 .35rem}
.row{display:flex;gap:.6rem;flex-wrap:wrap}
input[type=email]{flex:1 1 14rem;min-width:0;font:inherit;padding:.75rem 1rem;border-radius:14px;border:2px solid var(--outline-ink);background:var(--spot-sand);color:var(--badge-ink)}
input[type=email]::placeholder{color:#5a6b7a}
button{font:inherit;font-weight:700;padding:.75rem 1.4rem;border-radius:14px;border:2px solid var(--outline-ink);background:var(--tim-yellow);color:var(--badge-ink);cursor:pointer;transition:transform .15s,background .15s}
button:hover{background:var(--tim-yellow-light);transform:translateY(-2px)}
button[disabled]{opacity:.7;cursor:progress;transform:none}
:focus-visible{outline:3px solid var(--tim-yellow);outline-offset:3px}
input[aria-invalid=true]{border-color:var(--crab-orange-light)}
.hp{position:absolute!important;left:-10000px;width:1px;height:1px;overflow:hidden}
.form-msg{min-height:1.4em;margin:.6rem 0 0;font-weight:700;color:var(--tim-yellow-light)}
.privacy{font-size:.82rem;opacity:.75;margin:0}
.thanks{text-align:center}
.thanks img{width:min(220px,60%);margin:0 auto .4rem}
.thanks:focus{outline:none}
.reefbed{position:absolute;left:0;right:0;bottom:0;height:clamp(150px,22vw,300px);z-index:4;pointer-events:none}
.reefbed .r{position:absolute;left:var(--x);bottom:var(--b,0);width:var(--w);height:auto}
.reefbed .front{z-index:3;filter:brightness(.75)}
.reefbed .back{bottom:18%}
.foot{position:relative;z-index:5;background:var(--midnight);text-align:center;padding:1.1rem 1rem calc(1.1rem + env(safe-area-inset-bottom))}
.foot p{margin:0;font-size:.78rem;color:rgba(236,237,236,.55);letter-spacing:.02em}

/* ── Tim, diving along with the scroll ── */
.tim{position:fixed;left:0;top:0;z-index:5;width:clamp(110px,14vw,200px);pointer-events:none;will-change:transform;opacity:0;transition:opacity .4s}
.tim.ready{opacity:1}
.subscribed .tim,.subscribed .tim-static--bottom,.subscribed .join-wrap>.tim-anchor{display:none}
.tim-wiggle{animation:wiggle .9s ease-in-out infinite}
.tim.fast .tim-wiggle{animation-duration:.35s}
@keyframes wiggle{0%,100%{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(4deg) translateY(-3px)}}
.tim-static{display:none}
.trail{position:fixed;inset:0;pointer-events:none;z-index:4}
.trail i{animation:pop 1.6s ease-out forwards}
@keyframes pop{to{transform:translate(var(--dx,0),-90px) scale(1.3);opacity:0}}

/* ── School-of-fish celebration ── */
.school{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden}
.school .f{position:absolute;left:0;top:var(--y);width:var(--w);animation:swim var(--d) cubic-bezier(.45,.05,.55,.95) var(--delay) forwards;transform:translateX(-30vw)}
.school .f img{width:100%;animation:wob .5s ease-in-out infinite alternate}
.school .f.mirror img{scale:-1 1}
@keyframes swim{to{transform:translateX(130vw)}}
@keyframes wob{from{translate:0 -6px;rotate:-3deg}to{translate:0 6px;rotate:3deg}}
.school .dot{position:absolute;width:10px;height:10px;border-radius:50%;animation:confetti 2.4s ease-out forwards}
@keyframes confetti{0%{transform:translate(0,0) scale(.4);opacity:0}15%{opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(1);opacity:0}}

/* ── Small screens ── */
@media (max-width:720px){
  .zone{padding:12vh 5vw}
  .card--left,.card--right{margin:0 auto;top:0}
  .card--right{margin-top:40vh}
  .join-wrap{flex-direction:column;align-items:center;margin-bottom:140px}
  .join-wrap>.tim-anchor{flex:none;width:120px;height:100px}
  .card--form{padding:1.5rem 1.2rem 1.2rem}
  .tim{width:96px}
  .reefbed .r{width:calc(var(--w) * 1.5)}
  .pool{bottom:50px;width:64vw}
  .join-wrap>.tim-anchor{align-self:flex-start;margin-left:6vw}
  .row button{flex:1 1 100%}
}

/* ── Reduced motion: no following, no drifting ── */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .tim,.trail,.bubbles{display:none}
  .tim-static{display:block;margin:0 auto}
  .tim-static--top{position:absolute;z-index:4;right:8vw;top:calc(40% - 60px);width:clamp(100px,12vw,170px)}
  .tim-static--bottom{width:clamp(110px,14vw,190px);margin:0}
  .join-wrap>.tim-anchor{display:none}
}

/* Tim path anchors (invisible) */
.tim-anchor{position:absolute;width:0;height:0}
.surface .tim-anchor{left:84%;top:36%}
.shallows .tim-anchor{left:80%;top:55%}
.midwater .tim-anchor{left:16%;top:30%}
@media (max-width:720px){
  .surface .tim-anchor{left:50%;top:30%}
  .shallows .tim-anchor{left:78%;top:70%}
  .midwater .tim-anchor{left:22%;top:22%}
}
