/* wurm — shared styles. no frameworks, no libraries. */

:root{
  --pink:#F2919B;
  --chartreuse:#A6D608;
  --ink:#2A3D00;
  --stitch:#D96A78;
  --paper:#FBFDF2;
  --white:#fff;
  --seam:repeating-linear-gradient(90deg,var(--stitch) 0 14px,transparent 14px 26px);
  --maxw:1120px;
}

*{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}

body{
  background:var(--paper);
  color:var(--ink);
  font-family:"Familjen Grotesk",system-ui,sans-serif;
  font-size:17px;
  line-height:1.5;
  overflow-x:hidden;
  cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Ccircle cx='14' cy='14' r='11' fill='%23fff' stroke='%23d8d8d8' stroke-width='2'/%3E%3Ccircle cx='15' cy='16' r='5' fill='%23111'/%3E%3C/svg%3E") 14 14,auto;
}
a,button,summary,.tap{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='34'%3E%3Ccircle cx='17' cy='17' r='14' fill='%23fff' stroke='%23d8d8d8' stroke-width='2'/%3E%3Ccircle cx='18' cy='20' r='7' fill='%23111'/%3E%3C/svg%3E") 17 17,pointer}

/* grain */
body::after{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.16;mix-blend-mode:multiply;
  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='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}

h1,h2,h3,.display{
  font-family:"Fraunces","Times New Roman",serif;
  font-variation-settings:"SOFT" 60,"WONK" 1,"opsz" 100;
  font-weight:600;line-height:.92;letter-spacing:-.02em;
}
h1{font-size:clamp(3rem,12vw,8.5rem)}
h2{font-size:clamp(2rem,5.2vw,3.6rem)}
h3{font-size:clamp(1.2rem,2.4vw,1.6rem)}
p{max-width:62ch}
.lede{font-size:clamp(1.05rem,2vw,1.35rem);line-height:1.4}
.mono{font-family:ui-monospace,"SFMono-Regular",Menlo,monospace;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 22px}
section{padding:clamp(48px,9vw,110px) 0}

/* ---------- stitched nav ---------- */
.seg-nav{position:sticky;top:0;z-index:80;background:var(--chartreuse);border-bottom:2px solid var(--ink)}
.seg-nav .wrap{display:flex;align-items:center;gap:0;height:62px;position:relative}
.seg-nav .seam-line{position:absolute;left:22px;right:22px;top:50%;height:2px;background:var(--seam);opacity:.55}
.seg-brand{position:relative;font-family:"Fraunces",serif;font-size:1.5rem;font-weight:700;text-decoration:none;color:var(--ink);padding-right:16px;background:var(--chartreuse);z-index:2}
.seg-links{position:relative;display:flex;gap:6px;margin-left:auto;z-index:2;background:var(--chartreuse);padding-left:10px}
.seg{
  display:inline-block;text-decoration:none;color:var(--ink);
  background:var(--pink);border:2px solid var(--ink);border-radius:999px;
  padding:5px 14px;font-size:.82rem;letter-spacing:.02em;
  box-shadow:0 2px 0 var(--ink);transition:transform .16s,box-shadow .16s,background .16s;
}
.seg:hover{transform:translateY(-2px) rotate(-1.5deg);box-shadow:0 4px 0 var(--ink)}
.seg[aria-current="page"]{background:var(--white)}
.nav-toggle{display:none}
@media(max-width:760px){
  .seg-links{position:fixed;inset:62px 0 auto 0;background:var(--chartreuse);border-bottom:2px solid var(--ink);
    flex-direction:column;padding:16px 22px;gap:10px;display:none}
  .seg-links.open{display:flex}
  .nav-toggle{display:block;margin-left:auto;background:var(--pink);border:2px solid var(--ink);border-radius:999px;
    padding:6px 14px;font-family:inherit;font-size:.82rem;box-shadow:0 2px 0 var(--ink);z-index:3;position:relative}
  .seg-nav .seam-line{display:none}
}

/* ---------- hero ---------- */
.hero{background:var(--chartreuse);border-bottom:2px solid var(--ink);position:relative;overflow:hidden}
.hero .wrap{padding-top:clamp(36px,7vw,80px);padding-bottom:clamp(36px,7vw,80px)}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:38px;align-items:center}
@media(max-width:860px){.hero-grid{grid-template-columns:1fr;gap:26px}}
.hero h1{margin-bottom:14px}
.hero .lede{max-width:22ch}
.hero-media{position:relative;aspect-ratio:1/1;border:2px solid var(--ink);border-radius:18px;overflow:hidden;background:var(--chartreuse);box-shadow:8px 8px 0 var(--ink)}
.hero-media video,.hero-media img{width:100%;height:100%;object-fit:cover;display:block}
.hero-media .placeholder{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:20px;background:var(--chartreuse)}

.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.btn{
  display:inline-flex;align-items:center;gap:8px;text-decoration:none;
  font-family:inherit;font-size:1rem;padding:11px 22px;border:2px solid var(--ink);
  border-radius:999px;background:var(--white);color:var(--ink);
  box-shadow:0 4px 0 var(--ink);transition:transform .14s,box-shadow .14s;
}
.btn:hover{transform:translateY(-2px);box-shadow:0 6px 0 var(--ink)}
.btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}
.btn.pink{background:var(--pink)}
.btn.ghost{background:transparent}
.btn[disabled]{opacity:.55;pointer-events:none}

/* ---------- seam divider ---------- */
.seam{height:2px;background:var(--seam);margin:0}
.seam.thick{height:3px}

/* ---------- eyes (the wrong gaze) ---------- */
.eyes{display:flex;align-items:flex-start;gap:10px}
.eye{background:#fff;border:2px solid #cfcfcf;border-radius:50%;position:relative;box-shadow:inset 0 -3px 6px rgba(0,0,0,.12)}
.eye .pupil{position:absolute;background:#141414;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);transition:transform .06s linear}
.eye.big{width:72px;height:72px}
.eye.big .pupil{width:34px;height:34px}
.eye.small{width:46px;height:46px;margin-top:26px}
.eye.small .pupil{width:22px;height:22px}
.watcher{position:fixed;right:18px;bottom:18px;z-index:70;opacity:.9;pointer-events:none}
.watcher .eye.big{width:44px;height:44px}
.watcher .eye.big .pupil{width:20px;height:20px}
.watcher .eye.small{width:28px;height:28px;margin-top:16px}
.watcher .eye.small .pupil{width:13px;height:13px}
@media(max-width:760px){.watcher{display:none}}

/* ---------- cards / grid ---------- */
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.g2,.g3,.g4{grid-template-columns:1fr}}

.card{background:var(--white);border:2px solid var(--ink);border-radius:16px;overflow:hidden;
  box-shadow:5px 5px 0 var(--ink);transition:transform .18s,box-shadow .18s}
.card:hover{transform:translateY(-3px) rotate(-.6deg);box-shadow:8px 9px 0 var(--ink)}
.card figure{background:var(--chartreuse);border-bottom:2px solid var(--ink)}
.card img{width:100%;display:block;aspect-ratio:1/1;object-fit:cover;background:var(--chartreuse)}
.card .body{padding:14px 16px 16px}
.card .title{font-family:"Fraunces",serif;font-size:1.15rem;font-weight:600}
.card .note{font-size:.92rem;opacity:.78;margin-top:4px}
.card .acts{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.mini{font-family:inherit;font-size:.76rem;letter-spacing:.02em;padding:5px 11px;border:2px solid var(--ink);
  border-radius:999px;background:var(--paper);color:var(--ink);text-decoration:none;transition:background .14s}
.mini:hover{background:var(--pink)}
.mini.done{background:var(--chartreuse)}

/* ---------- stats ---------- */
.tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
@media(max-width:900px){.tiles{grid-template-columns:repeat(2,1fr)}}
.tile{background:var(--white);border:2px solid var(--ink);border-radius:14px;padding:14px 16px;box-shadow:4px 4px 0 var(--ink)}
.tile .k{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;opacity:.65}
.tile .v{font-family:"Fraunces",serif;font-size:1.7rem;font-weight:600;margin-top:2px;word-break:break-word}
.up{color:#2f7d0d}.down{color:#b02a37}

/* ---------- CA box ---------- */
.ca-box{background:var(--ink);color:var(--chartreuse);border-radius:18px;padding:22px;border:2px solid var(--ink)}
.ca-box .label{font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;opacity:.75}
.ca-val{font-family:ui-monospace,Menlo,monospace;font-size:clamp(.8rem,2.4vw,1.15rem);word-break:break-all;margin-top:8px;line-height:1.35}
.notyet{background:var(--pink);color:var(--ink);display:inline-block;padding:6px 14px;border:2px solid var(--ink);border-radius:999px;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase}

/* ---------- game ---------- */
.stage{position:relative;height:340px;background:var(--chartreuse);border:2px solid var(--ink);border-radius:18px;overflow:hidden;box-shadow:6px 6px 0 var(--ink)}
.stage .ground{position:absolute;left:0;right:0;bottom:52px;height:2px;background:var(--seam);opacity:.5}
.stage .guy{position:absolute;left:50%;bottom:52px;width:150px;transform-origin:50% 100%;translate:-50% 0;transition:rotate .12s ease-out}
.stage .guy img{width:100%;display:block;pointer-events:none;filter:drop-shadow(0 6px 0 rgba(0,0,0,.15))}
.stage .hud{position:absolute;left:14px;top:12px;font-family:ui-monospace,Menlo,monospace;font-size:.8rem;letter-spacing:.06em}
.stage .hint{position:absolute;left:0;right:0;bottom:14px;text-align:center;font-size:.82rem;opacity:.7}
.stage .over{position:absolute;inset:0;display:none;place-items:center;background:rgba(42,61,0,.82);color:var(--chartreuse);text-align:center;padding:20px}
.stage.dead .over{display:grid}

/* ---------- wiggle ---------- */
.wiggle-box{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.wiggle-worm{width:110px;transform-origin:50% 100%}
.wiggle-worm.on{animation:wig .28s infinite ease-in-out}
@keyframes wig{0%,100%{transform:rotate(-6deg) scaleY(1)}50%{transform:rotate(6deg) scaleY(.94)}}
.counter{font-family:"Fraunces",serif;font-size:clamp(2.2rem,7vw,4rem);font-weight:600;line-height:1}

/* ---------- reveal ---------- */
.rv{opacity:0;transform:translateY(14px) rotate(-.8deg);transition:opacity .5s ease,transform .5s ease}
.rv.in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  .wiggle-worm.on{animation:none}
  html{scroll-behavior:auto}
}

/* ---------- footer ---------- */
footer{background:var(--ink);color:#E8F3C8;border-top:2px solid var(--ink);padding:44px 0 34px}
footer a{color:var(--ink);background:var(--chartreuse);text-decoration:none;
  border:2px solid var(--chartreuse);border-radius:999px;padding:5px 15px;display:inline-block;font-size:.85rem}
footer a:hover{background:var(--pink);border-color:var(--pink)}
footer .cols{display:flex;justify-content:space-between;gap:26px;flex-wrap:wrap}
footer .disc{margin-top:26px;font-size:.78rem;line-height:1.55;opacity:.72;max-width:78ch}
.toast{position:fixed;left:50%;bottom:26px;translate:-50% 0;background:var(--ink);color:var(--chartreuse);
  padding:10px 18px;border-radius:999px;font-size:.86rem;z-index:200;opacity:0;transition:opacity .2s,translate .2s;pointer-events:none}
.toast.show{opacity:1;translate:-50% -8px}
