/* ============================================================
   Zombii — sticker/comic build
   Display face: Gulfs Display · outline ink sampled from the mascot
   ============================================================ */

@font-face{
  font-family:'Gulfs Display';
  src:url('/assets/fonts/GulfsDisplay.woff2')        format('woff2'),
      url('/assets/fonts/GulfsDisplay-Normal.ttf')   format('truetype');
  font-weight:normal;
  font-style:normal;
  font-display:swap;
}

:root{
  --bg:#163039;
  --bg-band:#1d3e49;
  --ink:#eafaf6;
  --ink-dim:#9fbdb9;
  --ink-faint:#7ea19d;            /* 4.95:1 on --bg */
  --ink-deep:#301800;             /* sampled from the mascot's own outline */
  --rule:rgba(234,250,246,.16);
  --rule-soft:rgba(234,250,246,.08);

  --teal:#7FD8D0;
  --pink:#FF598C;
  --gold:#FFD133;
  --orange:#FF8C2E;
  --violet:#B087FF;
  --rose:#FF6EB5;

  --display:'Gulfs Display','SF Pro Display',-apple-system,BlinkMacSystemFont,"Helvetica Neue",sans-serif;
  --text:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Inter,system-ui,sans-serif;

  --pad:clamp(20px,5vw,72px);
  --maxw:1440px;
  color-scheme:dark;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background-color:var(--bg);
  /* halftone dot screen — cheap print texture, keeps flat areas alive */
  background-image:radial-gradient(rgba(234,250,246,.05) 1.4px, transparent 1.5px);
  background-size:15px 15px;
  color:var(--ink);
  font-family:var(--text);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none;}
img{max-width:100%;display:block;}
/* the rotated ticker band and the mascot/burst deliberately overhang the
   viewport edges — clip here so they never widen the document. `clip` keeps
   vertical overflow visible, and the sticky nav sits outside <main>. */
main{overflow-x:clip;}
h1,h2,h3{font-family:var(--display);font-weight:normal;margin:0;}
::selection{background:var(--pink);color:var(--ink-deep);}

/* ---------- STICKER BUTTON ---------- */
.sticker-btn{
  display:inline-flex;align-items:center;gap:10px;
  background:var(--gold);color:var(--ink-deep);
  font-family:var(--display);
  font-size:1.06rem;letter-spacing:.01em;
  padding:13px 24px;
  border:3px solid var(--ink-deep);
  border-radius:14px;
  box-shadow:5px 5px 0 var(--ink-deep);
  transform:rotate(-1.4deg);
  transition:transform .14s ease, box-shadow .14s ease, background .14s ease;
}
.sticker-btn svg{width:18px;height:18px;flex:none;}
.sticker-btn:hover{
  background:#ffdc5c;
  transform:rotate(-1.4deg) translate(3px,3px);
  box-shadow:2px 2px 0 var(--ink-deep);
}
.sticker-btn:active{transform:rotate(-1.4deg) translate(5px,5px);box-shadow:0 0 0 var(--ink-deep);}
.sticker-btn:focus-visible{outline:3px solid var(--teal);outline-offset:3px;}

.sticker-btn-sm{
  font-size:.9rem;padding:8px 15px;border-width:2.5px;border-radius:11px;
  box-shadow:3.5px 3.5px 0 var(--ink-deep);background:var(--teal);
}
.sticker-btn-sm:hover{background:#96e4dd;box-shadow:1.5px 1.5px 0 var(--ink-deep);}
.sticker-btn-lg{
  font-size:clamp(1.05rem,1.7vw,1.3rem);padding:16px 30px;
  box-shadow:6px 6px 0 var(--ink-deep);
}
.sticker-btn-lg svg{width:21px;height:21px;}

/* ---------- NAV ---------- */
.nav{
  position:sticky;top:0;z-index:50;
  background:rgba(22,48,57,.94);
  backdrop-filter:blur(10px);
  border-bottom:3px solid var(--ink-deep);
}
.nav-inner{
  max-width:var(--maxw);margin:0 auto;
  padding:11px var(--pad);
  display:flex;align-items:center;justify-content:space-between;gap:20px;
}
.brand{
  display:flex;align-items:center;gap:9px;
  font-family:var(--display);font-size:1.16rem;letter-spacing:.01em;
}
.brand-icon{
  width:30px;height:30px;border-radius:9px;
  border:2.5px solid var(--ink-deep);
  box-shadow:2.5px 2.5px 0 var(--ink-deep);
  transform:rotate(-4deg);
}
.nav-actions{display:flex;align-items:center;gap:24px;}
.nav-link{
  font-size:.85rem;color:var(--ink-dim);
  padding-bottom:2px;border-bottom:2px solid transparent;
  transition:color .16s ease,border-color .16s ease;white-space:nowrap;
}
.nav-link:hover{color:var(--ink);border-bottom-color:var(--pink);}

/* ---------- MASTHEAD ---------- */
.masthead{
  max-width:var(--maxw);margin:0 auto;
  padding:clamp(14px,2.5vw,30px) var(--pad) 0;
  overflow-x:clip;              /* mascot bleeds by design; never widen the doc */
}
.mast-type{position:relative;padding:clamp(26px,5vw,56px) 0 clamp(16px,3vw,34px);}
.mast-type h1{
  position:relative;z-index:3;
  font-size:clamp(3rem,11.4vw,10.2rem);
  line-height:.95;letter-spacing:-.005em;
  display:flex;flex-direction:column;
  text-shadow:.042em .042em 0 var(--ink-deep);
}
.mast-type .l1{transform:rotate(-1.2deg);transform-origin:left center;}
.mast-type .l2{padding-left:.09em;}
.mast-type .l3{padding-left:.02em;transform:rotate(.8deg);transform-origin:left center;}
.mast-type em{font-style:normal;color:var(--pink);}

.mast-art{
  position:absolute;z-index:1;
  right:-1%;top:46%;
  width:clamp(215px,32vw,460px);
  transform:translateY(-48%);
  pointer-events:none;
}
.burst{
  position:absolute;left:50%;top:50%;
  width:150%;aspect-ratio:1;
  transform:translate(-50%,-50%);
  border-radius:50%;
  background:repeating-conic-gradient(from 0deg,
    rgba(127,216,208,.22) 0deg 6deg, transparent 6deg 18deg);
  /* fade the rays out toward the edge so it reads as a glow, not a wheel */
  -webkit-mask-image:radial-gradient(circle,#000 22%,transparent 68%);
          mask-image:radial-gradient(circle,#000 22%,transparent 68%);
  animation:spin 48s linear infinite;
  z-index:0;
}
.mast-mascot{
  position:relative;z-index:1;width:100%;
  transform:rotate(-6deg);
  filter:drop-shadow(7px 7px 0 var(--ink-deep));
}
.badge{
  position:absolute;z-index:2;
  right:2%;bottom:2%;
  display:grid;place-items:center;text-align:center;
  width:clamp(74px,9.5vw,108px);aspect-ratio:1;border-radius:50%;
  background:var(--pink);color:var(--ink-deep);
  font-family:var(--display);font-size:clamp(.82rem,1.3vw,1.05rem);line-height:1.08;
  border:3px solid var(--ink-deep);
  box-shadow:4px 4px 0 var(--ink-deep);
  transform:rotate(11deg);
}
@keyframes spin{to{transform:translate(-50%,-50%) rotate(360deg)}}

.mast-foot{
  display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
  gap:clamp(24px,5vw,80px);align-items:start;
  padding-top:22px;border-top:2px dashed var(--rule);
}
.mast-lede{
  margin:0;font-size:clamp(1.02rem,1.5vw,1.22rem);line-height:1.55;
  color:var(--ink-dim);max-width:54ch;
}
.mast-act{display:flex;flex-direction:column;gap:16px;align-items:flex-start;}
.mast-fine{margin:0;font-size:.82rem;color:var(--ink-faint);line-height:1.45;}

/* ---------- TICKER BAND ---------- */
.ticker{
  margin:clamp(46px,6vw,74px) 0 0;
  background:var(--teal);
  border-top:3px solid var(--ink-deep);
  border-bottom:3px solid var(--ink-deep);
  padding:9px 0;overflow:hidden;
  transform:rotate(-1.3deg) scale(1.04);
}
.ticker-track{
  display:flex;align-items:center;gap:16px;width:max-content;white-space:nowrap;
  font-family:var(--display);
  font-size:.94rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-deep);
  animation:roll 34s linear infinite;
}
.ticker-track i{font-style:normal;font-size:.5em;opacity:.55;}
@keyframes roll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- MANIFESTO ---------- */
.manifesto{
  max-width:var(--maxw);margin:0 auto;
  padding:clamp(74px,10vw,140px) var(--pad);
}
.mf-text{
  margin:0;max-width:20ch;
  font-family:var(--display);
  font-size:clamp(1.5rem,3.5vw,2.9rem);
  line-height:1.3;color:var(--ink);
  text-shadow:.03em .03em 0 var(--ink-deep);
}
.mf-hl{
  background:var(--gold);color:var(--ink-deep);
  padding:.02em .18em;border-radius:.18em;
  text-shadow:none;
  box-decoration-break:clone;-webkit-box-decoration-break:clone;
}

/* ---------- CONTENTS ---------- */
.contents{max-width:var(--maxw);margin:0 auto;padding:0 var(--pad) clamp(48px,8vw,110px);}
.contents-head{
  display:flex;justify-content:space-between;align-items:baseline;gap:24px;flex-wrap:wrap;
  padding-bottom:18px;
}
.contents-head h2{
  font-size:clamp(1.55rem,3vw,2.3rem);
  text-shadow:.035em .035em 0 var(--ink-deep);
}
.contents-head p{margin:0;font-size:.86rem;color:var(--ink-faint);}

/* ---- carousel ---- */
.carousel{position:relative;}
.track{
  list-style:none;
  /* overflow-x:auto also clips vertically, so the overhanging number badges
     need real room — pad the track and pull the box back with a matching
     negative margin so the first slide still lines up with the heading. */
  margin:0 0 0 -20px;
  padding:20px 0 10px 20px;
  scroll-padding-left:20px;
  display:flex;gap:clamp(20px,3vw,40px);
  overflow-x:auto;overscroll-behavior-x:contain;
  /* No scroll-snap here on purpose: snapping coerces every value the JS
     tween writes, which fights the auto-advance and makes it stutter or
     stall. Free scrolling + the tween re-aligning is the steadier trade. */
  scroll-behavior:auto;   /* the tween sets scrollLeft directly */
  scrollbar-width:none;
}
.track::-webkit-scrollbar{display:none;}
.slide{
  flex:0 0 auto;
  width:clamp(228px,25vw,286px);
}
.shot{position:relative;margin-bottom:20px;}
.shot img{
  width:100%;height:auto;aspect-ratio:660/1434;   /* reserve space, no CLS */
  display:block;border-radius:22px;
  border:3px solid var(--ink-deep);
  box-shadow:7px 7px 0 var(--ink-deep);
  background:var(--bg-band);
}
.slide:nth-child(odd)  .shot{transform:rotate(-1.4deg);}
.slide:nth-child(even) .shot{transform:rotate(1.2deg);}
.slide-num{
  position:absolute;top:-14px;left:-14px;
  display:grid;place-items:center;
  width:46px;aspect-ratio:1;border-radius:50%;
  background:var(--c,var(--teal));color:var(--ink-deep);
  font-family:var(--display);font-size:.9rem;
  border:3px solid var(--ink-deep);
  box-shadow:3.5px 3.5px 0 var(--ink-deep);
  transform:rotate(-9deg);
}
.slide-verb{
  font-size:clamp(1.7rem,2.6vw,2.35rem);line-height:1.04;
  color:var(--c,var(--teal));
  text-shadow:.04em .04em 0 var(--ink-deep);
}
.slide-lede{
  margin:5px 0 9px;font-family:var(--display);
  font-size:1.02rem;color:var(--ink);
}
.slide-body{margin:0;font-size:.9rem;line-height:1.58;color:var(--ink-dim);}

/* ---- carousel controls ---- */
.carousel-ctl{
  display:flex;align-items:center;gap:16px;
  padding-top:clamp(22px,3vw,34px);
}
.c-arrow{
  flex:none;width:46px;height:46px;   /* >=44px touch target */
  display:grid;place-items:center;
  font-family:var(--display);font-size:1.5rem;line-height:1;
  padding-bottom:4px;cursor:pointer;
  background:var(--gold);color:var(--ink-deep);
  border:3px solid var(--ink-deep);border-radius:12px;
  box-shadow:4px 4px 0 var(--ink-deep);
  transition:transform .13s ease, box-shadow .13s ease;
}
.c-arrow:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink-deep);}
.c-arrow:active{transform:translate(4px,4px);box-shadow:0 0 0 var(--ink-deep);}
.c-arrow:focus-visible{outline:3px solid var(--teal);outline-offset:3px;}

.dots{display:flex;gap:9px;align-items:center;}
.dot{
  width:26px;height:26px;padding:0;cursor:pointer;   /* target; visual is the ::after */
  background:none;border:0;display:grid;place-items:center;
}
.dot::after{
  content:"";width:11px;height:11px;border-radius:50%;
  background:transparent;border:2.5px solid var(--ink-deep);
  box-shadow:inset 0 0 0 2px rgba(234,250,246,.55);
  transition:background .16s ease, transform .16s ease;
}
.dot.is-on::after{background:var(--gold);transform:scale(1.18);box-shadow:inset 0 0 0 2px var(--gold);}
.dot:focus-visible{outline:3px solid var(--teal);outline-offset:1px;border-radius:50%;}

/* ---------- SPEECH BUBBLE ---------- */
.pull{
  max-width:var(--maxw);margin:0 auto;
  padding:clamp(40px,7vw,100px) var(--pad) clamp(56px,8vw,110px);
}
.pull blockquote{
  position:relative;
  margin:0 0 0 auto;max-width:min(760px,92%);
  background:var(--gold);color:var(--ink-deep);
  font-family:var(--display);
  font-size:clamp(1.9rem,5.6vw,4.3rem);
  line-height:1.06;letter-spacing:-.005em;
  padding:clamp(28px,4vw,52px) clamp(26px,4vw,54px);
  border:4px solid var(--ink-deep);
  border-radius:26px;
  box-shadow:9px 9px 0 var(--ink-deep);
  transform:rotate(-1deg);
}
/* tail — outline layer then fill layer */
.pull blockquote::before,
.pull blockquote::after{
  content:"";position:absolute;left:11%;
  width:0;height:0;border-style:solid;
}
.pull blockquote::before{
  bottom:-38px;
  border-width:38px 30px 0 0;
  border-color:var(--ink-deep) transparent transparent transparent;
}
.pull blockquote::after{
  bottom:-28px;margin-left:5px;
  border-width:28px 21px 0 0;
  border-color:var(--gold) transparent transparent transparent;
}
.pull-attr{
  /* sit under the bubble, not stranded at the opposite edge */
  margin:clamp(30px,3.5vw,44px) 0 0 auto;
  max-width:min(760px,92%);
  padding-left:12%;
  font-size:.88rem;color:var(--ink-faint);
}

/* ---------- CLOSE ---------- */
.close{
  max-width:var(--maxw);margin:0 auto;
  padding:clamp(46px,7vw,100px) var(--pad) clamp(64px,10vw,140px);
  border-top:2px dashed var(--rule);
  display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);
  gap:clamp(28px,5vw,72px);align-items:end;
}
.close-type{
  font-size:clamp(2.6rem,8.4vw,7rem);line-height:.98;letter-spacing:-.005em;
  text-shadow:.042em .042em 0 var(--ink-deep);
}
.close-type em{font-style:normal;color:var(--teal);}
.close-side{padding-bottom:.4em;}
.close-side p{
  margin:0 0 26px;font-size:1rem;line-height:1.6;color:var(--ink-dim);max-width:38ch;
}

/* ---------- FOOTER ---------- */
.footer{border-top:3px solid var(--ink-deep);padding:26px var(--pad);background:var(--bg-band);}
.footer-inner{
  max-width:var(--maxw);margin:0 auto;
  display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;
}
.footer-links{display:flex;gap:20px;align-items:center;flex-wrap:wrap;}
.footer-links a{
  color:var(--ink-dim);font-size:.83rem;
  border-bottom:2px solid transparent;padding-bottom:1px;
  transition:color .16s ease,border-color .16s ease;
}
.footer-links a:hover{color:var(--teal);border-bottom-color:var(--teal);}
.footer-links p{color:var(--ink-faint);font-size:.78rem;margin:0;}

/* ============================================================
   LEGAL / SUPPORT PAGES
   ============================================================ */
.legal{padding:clamp(44px,7vw,86px) var(--pad) clamp(70px,10vw,130px);}
.legal-inner{max-width:660px;margin:0 auto;}
/* `.legal-inner p` would otherwise win on specificity and wash the text out */
.legal-inner .eyebrow{
  display:inline-block;
  margin:0 0 14px;font-family:var(--display);font-size:.8rem;
  letter-spacing:.06em;text-transform:uppercase;
  background:var(--teal);color:var(--ink-deep);
  padding:5px 13px;border-radius:10px;
  border:2.5px solid var(--ink-deep);
  box-shadow:3px 3px 0 var(--ink-deep);
  transform:rotate(-2deg);
}
.legal-inner h1{
  font-size:clamp(2.2rem,5.8vw,3.8rem);letter-spacing:-.005em;line-height:1;
  margin:0 0 14px;
  text-shadow:.04em .04em 0 var(--ink-deep);
}
.legal-updated{
  color:var(--ink-faint);font-size:.88rem;margin:0 0 8px;
  padding-bottom:26px;border-bottom:2px dashed var(--rule);
}
.legal-inner h2{
  font-family:var(--display);font-weight:normal;
  font-size:clamp(1.2rem,2.1vw,1.6rem);
  color:var(--teal);margin:40px 0 12px;
  text-shadow:.035em .035em 0 var(--ink-deep);
}
.legal-inner p{color:var(--ink-dim);line-height:1.72;font-size:1rem;margin:0 0 16px;}
.legal-inner strong{color:var(--ink);font-weight:600;}
.legal-inner ul{margin:0 0 16px;padding-left:20px;color:var(--ink-dim);line-height:1.75;}
.legal-inner li{margin-bottom:5px;}
.legal-link{
  color:var(--teal);border-bottom:2px solid rgba(127,216,208,.45);
  transition:border-color .16s ease;
}
.legal-link:hover{border-bottom-color:var(--teal);}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:1000px){
  .mast-foot{grid-template-columns:1fr;gap:26px;}
  .close{grid-template-columns:1fr;align-items:start;gap:32px;}
  .close-side{padding-bottom:0;}
  .pull blockquote{max-width:100%;}
}

@media (max-width:760px){
  .mast-art{width:clamp(150px,40vw,240px);right:-12%;top:52%;opacity:.9;}
  .badge{display:none;}
  .burst{opacity:.6;}
  /* heavy display face gets tiring over many lines — ease it on small screens */
  .mf-text{max-width:none;font-size:1.3rem;line-height:1.38;}
  .pull blockquote::before{left:8%;}
  .pull blockquote::after{left:8%;}
}

@media (max-width:640px){
  .nav-link{display:none;}
  .nav-actions{gap:12px;}
  .footer-inner{flex-direction:column;align-items:flex-start;}
  .footer-links{flex-direction:column;align-items:flex-start;gap:10px;}
}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;}
  .ticker-track,.burst{animation:none;}
}
