/* 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{--bx:50%;
  /* 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 14vh, var(--ray-aqua) 24vh,
    var(--bright-water) 38vh, var(--cerulean) 85vh,
    #0F6FA3 135vh, var(--deep-water) 185vh, #1B2F55 220vh, 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{--wl:24vh;--wl:24svh;position:relative;display:flex;flex-direction:column;align-items:center;padding:calc(var(--wl) + 64px) 5vw 3vh;text-align:center}
.sky{position:absolute;inset:0 0 auto 0;height:calc(var(--wl) + 30px);background:radial-gradient(70% 90% at 50% 0,#fffdf6 0,rgba(247,243,231,0) 70%)}
.waterline{position:absolute;left:0;right:0;top:var(--wl);height:70px;z-index:2}
.waterline svg{width:100%;height:100%;display:block}
.surface::after{content:"";position:absolute;left:0;right:0;top:calc(var(--wl) + 66px);height:220px;background:linear-gradient(180deg,rgba(1,144,189,1) 0,rgba(2,150,193,.55) 30%,rgba(2,154,195,0) 100%);z-index:1;pointer-events:none}
.lockup{position:relative;z-index:6}
.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,.3),0 0 18px rgba(3,44,84,.28)}
.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:.42em 1.3em;border-radius:999px;background:var(--badge-aqua);color:var(--badge-ink);font-weight:700;font-size:1.1rem;letter-spacing:.06em;text-transform:uppercase;box-shadow:inset 0 0 0 2px rgba(3,44,84,.18)}
.dive-btn{position:relative;display:inline-block;margin:1.6rem 0 0;padding:.72em 1.6em .86em;font-family:var(--title);font-weight:400;font-size:clamp(1.35rem,1vw + 1rem,1.9rem);line-height:1;letter-spacing:.03em;color:#203343;text-decoration:none!important;background:url(/img/btn-dive.svg) center/100% 100% no-repeat;-webkit-tap-highlight-color:transparent;transition:transform .18s cubic-bezier(.3,1.6,.5,1);outline:none}
.dive-btn span{position:relative;display:block;text-decoration:none;text-shadow:0 1px 0 rgba(255,246,204,.55)}
.dive-btn:link,.dive-btn:visited,.dive-btn:hover,.dive-btn:active,.dive-btn:focus{color:#203343;text-decoration:none!important}
.dive-btn:hover{transform:translateY(-3px) rotate(-1.5deg) scale(1.03)}
.dive-btn:active{transform:translateY(1px) scale(1.05,.93);transition-duration:.08s}
.dive-btn:focus-visible::after{content:"";position:absolute;inset:-7px -9px;border-radius:999px;border:3px dashed var(--chalk);opacity:.95}

/* ── 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(var(--wl) + 40px);bottom:auto;height:calc(100% - var(--wl) - 40px + 85vh);z-index:2;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 90px,#000 62%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 90px,#000 62%,transparent 100%)}
.rays--shallow{display:none}
.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:50vh;padding:6vh 6vw}
.zone>.life,.zone>.bubbles{z-index:2}
.midwater{min-height:60vh}
.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:2vh}
.shallows{padding-top:3vh}
.card--right{margin-left:auto;margin-right:2vw;top:12vh}
.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{--iw:min(100vw,1800px);--ih:calc(var(--iw) * 630 / 1280);--crabb:calc(var(--ih) * .235);--cw:clamp(76px,7.4vw,112px);min-height:0;padding:calc(3vh + clamp(64px,7vw,96px) * 198 / 145 + 28px) 5vw 0;display:flex;flex-direction:column;justify-content:flex-end}
.disco{position:absolute;top:0;left:var(--bx);transform:translateX(-50%);z-index:3;display:flex;flex-direction:column;align-items:center}
.disco .string{display:block;width:2px;height:3vh}
.disco .ball{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(3vh + 80px);height:80vh;mix-blend-mode:screen}
.rays--disco i{left:var(--bx);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}
.crab{position:absolute;left:var(--bx);bottom:var(--crabb);width:var(--cw);margin-left:calc(var(--cw) / -2);z-index:5;transform-origin:50% 100%;cursor:pointer;-webkit-tap-highlight-color:transparent}
.join-wrap{position:relative;z-index:6;display:flex;justify-content:center;align-items:flex-end;gap:2vw;margin-bottom:calc(var(--crabb) + var(--cw) * 274 / 300 * 1.5 + 18px)}
.reefart{position:absolute;bottom:0;left:calc(var(--bx) - var(--iw) / 2);width:var(--iw);height:auto;max-width:none;z-index:2;pointer-events:none;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 24%),linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);-webkit-mask-composite:source-in;mask-image:linear-gradient(180deg,transparent 0,#000 24%),linear-gradient(90deg,transparent 0,#000 5%,#000 95%,transparent 100%);mask-composite:intersect}
.buoy{--bw:clamp(40px,3.8vw,60px);position:absolute;left:var(--bx);top:calc(var(--wl) + 13px - var(--bw) * 285 / 220 * .7);width:var(--bw);margin-left:calc(var(--bw) / -2);z-index:1;pointer-events:none}
.buoy img{display:block;width:100%;height:auto;transform-origin:50% 90%;animation:buoybob 3.6s ease-in-out infinite}
.buoy-ripple{position:absolute;left:var(--bx);top:calc(var(--wl) + 18px);width:clamp(64px,6vw,96px);height:12px;transform:translateX(-50%);border-radius:50%;border:2px solid rgba(236,237,236,.55);border-top-color:transparent;z-index:3;pointer-events:none;animation:ripple 3.6s ease-in-out infinite}
@keyframes buoybob{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(4px) rotate(4deg)}}
@keyframes ripple{0%,100%{transform:translateX(-50%) scaleX(1);opacity:.7}50%{transform:translateX(-50%) scaleX(1.12);opacity:.45}}
.buoy-line{position:absolute;left:var(--bx);width:1.5px;margin-left:-.75px;top:0;height:0;background:rgba(236,237,236,.3);z-index:2;pointer-events:none}
.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:.8;margin:0}
.privacy a,.foot a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.privacy a:hover,.foot a:hover{color:var(--tim-yellow-light)}
.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}
.tim.intro{transition:none}
.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}}

.splash-layer{position:absolute;inset:0;z-index:6;pointer-events:none;overflow:visible;filter:url(#chalky)}
.splash-layer span{position:absolute;left:0;top:0;will-change:transform,opacity}
.splash-layer .drop{border-radius:50% 50% 50% 50%/58% 58% 42% 42%;background:var(--chalk);box-shadow:inset -2px -2px 0 rgba(65,189,205,.55)}
.splash-layer .drop.aqua{background:var(--ray-aqua);box-shadow:inset -2px -2px 0 rgba(236,237,236,.6)}
.splash-layer .spike{width:9px;height:38px;margin-left:-4.5px;margin-top:-38px;border-radius:50% 50% 40% 40%;background:linear-gradient(180deg,var(--chalk),rgba(65,189,205,.85));transform-origin:50% 100%}
.splash-layer .ripple{width:170px;height:30px;margin:-15px 0 0 -85px;border-radius:50%;border:3px solid rgba(236,237,236,.9)}

/* ── Small screens ── */
@media (max-width:768px){
  :root{--bx:80%}
  .buoy{top:calc(var(--wl) + 25px - var(--bw) * 285 / 220 * .7)}
  /* tighter, continuous dive on phones */
  .ocean{background:linear-gradient(180deg,var(--spot-sand) 0,#CBE9EC 3.5%,var(--ray-aqua) 6.5%,var(--bright-water) 11%,var(--cerulean) 34%,#0F6FA3 52%,var(--deep-water) 68%,#1B2F55 84%,var(--midnight) 100%)}
  .surface{--wl:19vh;--wl:19svh;padding:calc(var(--wl) + 78px) 5vw 3.5vh}
  .zone{min-height:30vh;padding:3vh 5vw}
  .midwater{min-height:34vh}
  .card--left,.card--right{margin:0 auto;top:0}
  .card--right{margin-top:3vh}
  .reef{min-height:auto;padding-top:calc(3vh + 24px)}
  .rays--disco{height:60vh}
  .join-wrap{flex-direction:column;align-items:center}
  .join-wrap>.tim-anchor{flex:none;width:120px;height:96px;align-self:flex-start;margin-left:6vw}
  .card--form{padding:1.5rem 1.2rem 1.2rem}
  .tim{width:96px}
  .tim-static--top{left:50%;right:auto;margin-left:-80px;width:160px;top:calc(var(--wl) - 92px)}
  .reef{--iw:160vw;--cw:min(19vw,80px)}
  .pool{bottom:50px;width:64vw}
  .row button{flex:1 1 100%}
}

/* ── Reduced motion: no following, no drifting ── */
@media (prefers-reduced-motion:reduce){
  .dive-btn:hover,.dive-btn:active{transform:none}
  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:5;right:6vw;top:calc(var(--wl) - 90px);width:clamp(150px,17vw,240px)}
  .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:calc(var(--wl) + 14px)}
.shallows .tim-anchor{left:80%;top:55%}
.midwater .tim-anchor{left:16%;top:30%}
@media (max-width:768px){
  .surface .tim-anchor{left:50%;top:calc(var(--wl) + 4px)}
  .shallows .tim-anchor{left:78%;top:72%}
  .midwater .tim-anchor{left:24%;top:14%}
}

/* ── Privacy page ── */
html:has(body.legal){background:var(--midnight)}
body.legal{min-height:100vh;background:linear-gradient(180deg,var(--cerulean) 0,var(--deep-water) 55%,var(--midnight) 100%)}
.legal-page{min-height:100vh;padding:5vh 5vw 8vh;display:flex;flex-direction:column;align-items:center}
.back-link{align-self:flex-start;max-width:44rem;width:100%;margin:0 auto 1.2rem;color:var(--chalk);font-weight:700;text-decoration:none}
.back-link:hover{color:var(--tim-yellow-light)}
.legal-card{max-width:44rem;width:100%;background:rgba(30,68,116,.6)}
.legal-card h1{font-family:var(--title);font-weight:400;font-size:clamp(2rem,6vw,3rem);line-height:1.05;margin:.2rem 0 .4rem}
.legal-card h2{font-family:var(--body);font-weight:700;font-size:1.05rem;margin:1.3rem 0 .2rem;color:var(--tim-yellow-light)}
.legal-card p{margin:0 0 .4rem}
.legal-card a{color:var(--chalk);text-underline-offset:2px}
.legal-card a:hover{color:var(--tim-yellow-light)}
.legal-tim{float:right;width:clamp(80px,18vw,130px);margin:-.4rem -.4rem .4rem .8rem}
.lede{opacity:.85}
.updated{margin-top:1.4rem!important;font-size:.82rem;opacity:.7}
