/* ==========================================================
   HATO MATO · styles
   dark · tomato red · acid green · cream
   display: Bricolage Grotesque · mono: JetBrains Mono
   ========================================================== */

:root{
  --bg:#0a0a0a;
  --bg2:#101010;
  --card:#141413;
  --ink:#f3ead8;
  --ink-dim:#b9b0a0;
  --muted:#7d766b;
  --line:rgba(243,234,216,.12);
  --red:#e43d05;
  --red-deep:#9e2602;
  --green:#6cf23b;
  --green-deep:#2f8f12;
  --juice:#e43d05;
  --display:'Bricolage Grotesque', 'Helvetica Neue', Arial, sans-serif;
  --headline:'Bricolage Grotesque', 'Helvetica Neue', Arial, sans-serif;
  --text:'Jost', 'Futura', 'Helvetica Neue', Arial, sans-serif;
  --mono:'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  --ease:cubic-bezier(.16,1,.3,1);
  --snap:cubic-bezier(.7,0,.2,1);
  --wrap:1320px;
  --r:18px;
}

*{box-sizing:border-box;margin:0;padding:0}
/* canvas behind the page: blue at the top (hero), dark at the bottom → rubber-band overscroll never shows black above the hero */
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;background:linear-gradient(180deg,#1a3fe6 0%,#1a3fe6 30%,#0a0a0a 70%);overscroll-behavior-y:none}
body{
  background:var(--bg);color:var(--ink);
  font-family:var(--text);font-weight:400;font-size:18px;line-height:1.5;
  overflow-x:hidden;min-height:100vh;
}

img,svg,video,canvas{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0}
ul,ol{list-style:none}
[hidden]{display:none!important}
.mono{font-family:var(--mono);font-size:.78rem;letter-spacing:.04em;text-transform:lowercase}
.wrap{width:min(var(--wrap),calc(100% - 48px));margin-inline:auto}
em{font-style:normal;color:var(--green)}
.red{color:var(--red)}
.muted{color:var(--muted)}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(108,242,59,.15);margin-right:8px;animation:pulse 1.6s infinite}
@keyframes pulse{50%{box-shadow:0 0 0 8px rgba(108,242,59,0)}}

::selection{background:var(--red);color:#fff}
/* display font for headings, buttons, numbers; body text runs in Jost */
h1,h2,h3,h4,.btn,.menu-name,.fov-big,.stat b,.work-title,.tile-info b,.tile-cta,.contact-mail,.reel-card-title,.game-over h3,.roast-q p,.roast-result h3,.hero-fill-label b,.cmp b,.filters button{font-family:var(--display)}

/* ---------- type ---------- */
.nowrap{white-space:nowrap}
.h-huge{font-family:var(--headline);font-size:clamp(2.2rem,6vw,5.6rem);line-height:1;font-weight:800;letter-spacing:-.015em;font-variation-settings:'opsz' 96,'wdth' 90}
.h-big{font-family:var(--headline);font-size:clamp(2.4rem,6.5vw,6rem);line-height:.95;font-weight:800;letter-spacing:-.02em;font-variation-settings:'opsz' 96,'wdth' 85}
.kicker{color:var(--green);margin-bottom:18px}
/* fill painted over the stroke (same color as the background) hides the overlapping inner contours of the variable font */
.outline-text{-webkit-text-stroke:3px var(--ink);color:var(--bg);paint-order:stroke fill}
.strike{position:relative;display:inline-block}
.strike::after{content:'';position:absolute;left:-2%;right:-2%;top:54%;height:.09em;background:var(--red);transform:rotate(-3deg)}
.sec-head{margin-bottom:56px;max-width:900px}
.sec-sub{color:var(--ink-dim);margin-top:22px;font-size:1.05rem;max-width:600px}

/* ---------- buttons ---------- */
.btn{
  --btn-bg:var(--ink);--btn-fg:#0a0a0a;
  position:relative;display:inline-flex;align-items:center;gap:14px;
  padding:16px 26px;border-radius:999px;font-weight:700;font-size:1rem;letter-spacing:-.01em;
  background:var(--btn-bg);color:var(--btn-fg);overflow:hidden;isolation:isolate;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease);
  white-space:nowrap;
}
.btn span{position:relative;z-index:1}
.btn small{position:relative;z-index:1;opacity:.7;font-weight:500}
.btn::before{content:'';position:absolute;inset:0;background:var(--green);transform:translateY(101%);transition:transform .5s var(--ease);z-index:0;border-radius:inherit}
.btn:hover::before{transform:translateY(0)}
.btn:hover{color:#0a0a0a;transform:translateY(-2px)}
.btn:active{transform:translateY(1px) scale(.98)}
.btn-red{--btn-bg:var(--red);--btn-fg:#fff}
.btn-ghost{--btn-bg:transparent;--btn-fg:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn-ghost:hover{box-shadow:inset 0 0 0 1.5px var(--green)}
.btn-lg{padding:20px 32px;font-size:1.1rem}
.btn-sm{padding:11px 18px;font-size:.9rem}

/* ---------- grain ---------- */
.grain{position:fixed;inset:-50%;pointer-events:none;z-index:60;opacity:.06;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  }
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-4%)}60%{transform:translate(-4%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}

/* ---------- cursor ---------- */
.cursor{position:fixed;left:0;top:0;width:34px;height:34px;z-index:1000;pointer-events:none;transform:translate(-50%,-50%);transition:width .25s var(--ease),height .25s var(--ease);display:none;will-change:transform}
.cursor{display:none!important}
.cursor img{width:100%;height:100%;filter:drop-shadow(0 2px 6px rgba(0,0,0,.6));transition:transform .3s var(--ease)}
.cursor.is-hover{width:54px;height:54px}
.cursor.is-hover img{transform:rotate(-14deg)}
.cursor.is-down img{transform:scale(.8) rotate(14deg)}
.cursor-label{position:absolute;left:calc(100% + 6px);top:50%;transform:translateY(-50%) scale(.9);font-family:var(--mono);font-size:.7rem;background:var(--ink);color:#0a0a0a;padding:4px 8px;border-radius:6px;white-space:nowrap;opacity:0;transition:opacity .2s,transform .3s var(--ease)}
.cursor.has-label .cursor-label{opacity:1;transform:translateY(-50%) scale(1)}
body[data-mode="grumpy"] .cursor img{filter:drop-shadow(0 0 10px var(--red)) saturate(1.6) hue-rotate(-10deg)}

/* ---------- loader ---------- */
.loader{position:fixed;inset:0;z-index:900;background:#0b1f9c;display:grid;place-items:center;transition:opacity .7s ease,visibility 0s linear .7s;opacity:1;visibility:visible}
.loader.done{opacity:0;visibility:hidden;pointer-events:none}
.loader-lottie{width:min(46vw,360px);aspect-ratio:1}
@media (max-width:900px){.loader-lottie{width:min(84vw,420px)}}
.loader-text{position:absolute;left:32px;right:32px;bottom:28px;display:flex;justify-content:space-between;color:rgba(255,255,255,.7)}
.loader-pct{color:#fff;font-size:1rem}

/* ---------- nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:18px 28px;gap:24px;
  transition:background .4s,backdrop-filter .4s,padding .4s,transform .5s var(--ease)}
.nav.scrolled{background:rgba(255,255,255,.06);backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);padding:12px 28px;border-bottom:1px solid rgba(255,255,255,.12)}
/* over light sections: flip to dark text, light glass */
.nav.on-light{background:rgba(243,234,216,.7);border-bottom-color:rgba(10,10,10,.08)}
.nav.on-light .nav-links a,.nav.on-light .sound{color:#0a0a0a;border-color:rgba(10,10,10,.3)}
.nav.on-light .nav-links a:hover{color:var(--red)}
.nav.on-light .nav-logo img{filter:brightness(0)}
.nav.on-light .burger{color:#0a0a0a}
.nav.open .nav-links a,.nav.on-light.open .nav-links a{color:var(--ink)}
.nav.open .burger{color:var(--ink)}
/* over the juice: logo goes all white */
.nav.on-red .nav-logo img{filter:brightness(0) invert(1)}
.nav-logo img{transition:filter .3s}
.nav.hidden{transform:translateY(-110%)}
.nav-logo img{height:26px;width:auto}
.nav-links{display:flex;gap:28px}
.nav-extra{display:none}   /* mobile-menu footer only */
.nav-links a{position:relative;color:var(--ink);font-size:.85rem;font-weight:500;transition:color .3s}
.nav-links a:hover{color:var(--green)}
.nav-links a::after{content:attr(data-hover);position:absolute;left:0;top:100%;color:var(--green);opacity:0;transform:translateY(-4px);transition:.3s var(--ease);white-space:nowrap}
.nav-links a:hover::after{opacity:1;transform:translateY(0)}
.nav-right{display:flex;align-items:center;gap:14px}
.sound{display:flex;align-items:center;gap:10px;color:var(--ink);padding:8px 14px;border-radius:999px;border:1px solid rgba(243,234,216,.35);transition:.3s}
.sound:hover{border-color:var(--green);color:var(--green)}
/* off = muted speaker icon, on = dancing bars */
.sound-ico{display:block}
.sound[aria-pressed="true"] .sound-ico{display:none}
.sound[aria-pressed="false"] .sound-bars{display:none}
.sound-bars{display:flex;gap:2px;align-items:flex-end;height:14px}
.sound-bars i{width:2px;height:4px;background:currentColor;border-radius:2px;transition:height .3s}
.sound[aria-pressed="true"]{color:var(--green)}
.sound[aria-pressed="true"] .sound-bars i{animation:bars .9s infinite ease-in-out}
.sound[aria-pressed="true"] .sound-bars i:nth-child(2){animation-delay:.15s}
.sound[aria-pressed="true"] .sound-bars i:nth-child(3){animation-delay:.3s}
.sound[aria-pressed="true"] .sound-bars i:nth-child(4){animation-delay:.45s}
@keyframes bars{0%,100%{height:4px}50%{height:14px}}
.burger{display:none;width:44px;height:44px;flex-direction:column;justify-content:center;align-items:center;gap:7px;color:var(--ink);flex:none}
.burger i{display:block;width:26px;height:3px;border-radius:2px;background:currentColor;transition:transform .4s var(--ease)}
.nav.open .burger i:first-child{transform:translateY(5px) rotate(45deg)}
.nav.open .burger i:last-child{transform:translateY(-5px) rotate(-45deg)}
@media (max-width:900px){
  .nav-links{position:fixed;inset:0;background:radial-gradient(ellipse at 70% 20%,#2a55ff 0,#1a3fe6 40%,#0b1f9c 100%);flex-direction:column;justify-content:center;align-items:flex-start;gap:6px;padding:110px 28px 40px;clip-path:circle(0 at calc(100% - 40px) 38px);transition:clip-path .8s var(--snap);z-index:-1;overflow:hidden}
  .nav-links::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse at center,#000 30%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 80%)}
  .nav-links::after{content:'🍅';position:absolute;right:-12%;bottom:-6%;font-size:52vw;line-height:1;opacity:.14;transform:rotate(-12deg)}
  .nav.open .nav-links{clip-path:circle(160% at calc(100% - 40px) 38px)}
  /* while open: no blur/transform on the bar (they'd turn into a containing block and cage the fixed overlay inside the header) */
  .nav.open,.nav.open.scrolled{backdrop-filter:none;-webkit-backdrop-filter:none;background:transparent;border-bottom-color:transparent;transform:none!important}
  .nav-links a{position:relative;color:#fff;font-family:var(--headline);font-weight:800;font-size:clamp(2.4rem,13vw,3.6rem);letter-spacing:-.02em;line-height:1.05;text-transform:uppercase;opacity:0;transform:translateY(18px) rotate(-1deg);transition:opacity .5s var(--ease),transform .6s var(--ease);transition-delay:0s}
  .nav.open .nav-links a{opacity:1;transform:none;transition-delay:calc(.15s + var(--i,0) * .07s)}
  .nav-links a::after{position:static;display:block;font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;color:var(--green);opacity:1;transform:none;margin:-2px 0 10px;text-transform:lowercase;font-weight:400}
  .nav-links a:hover{color:var(--green)}
  .nav.open .nav-links a:nth-child(4){color:var(--green)}   /* annoy me */
  .nav-extra{margin-top:auto;display:flex!important;justify-content:space-between;align-items:flex-end;width:100%;opacity:0;transition:opacity .5s .5s}
  .nav.open .nav-extra{opacity:1}
  .nav-extra-tag{font-family:var(--mono);font-size:.68rem;color:#fff;background:var(--red);padding:6px 10px;border-radius:6px;border:2px solid #0a0a0a;transform:rotate(-4deg)}
  .nav-extra-links{display:flex;gap:16px;font-family:var(--mono);font-size:.72rem}
  .nav-extra-links a{color:#fff;border-bottom:1px solid rgba(255,255,255,.4);opacity:1;transform:none;font-family:var(--mono);font-size:.72rem;font-weight:400;text-transform:lowercase;letter-spacing:.04em}
  .nav-extra-links a::after{display:none}
  .nav-right .sound-label{display:none}
  .nav-right .sound{width:40px;height:40px;padding:0;justify-content:center;border-radius:50%}
  .nav-right .btn{display:none}
  .burger{display:flex}
  .nav.open .nav-logo img{filter:none}
}

/* ---------- hero ---------- */
.hero-wrap{position:relative;background:var(--juice)}
.hero-wrap{height:230svh}.hero-wrap>.hero{position:sticky;top:0;height:100svh;min-height:0}
.hero{position:relative;min-height:100svh;display:grid;align-items:center;padding:110px 24px 100px;overflow:hidden;isolation:isolate;
  --hero-blue:#1a3fe6;--hero-blue-deep:#0b1f9c;
  background:radial-gradient(ellipse at 75% 40%,#2a55ff 0,var(--hero-blue) 35%,var(--hero-blue-deep) 100%);
  --ink-dim:#d9dcf5;--muted:#a9b2ea;--line:rgba(243,234,216,.18)}
.hero-bg{position:absolute;inset:0;z-index:-2}
.hero-rings{position:absolute;right:-10vw;top:-20vh;width:90vw;height:90vw;max-width:1100px;max-height:1100px;border-radius:50%;
  background:radial-gradient(circle at center,rgba(120,190,255,.55) 0,rgba(90,160,255,.2) 30%,transparent 60%);filter:blur(30px)}
.hero-grid{position:absolute;inset:0;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:80px 80px;
  mask-image:radial-gradient(ellipse at 70% 40%,#000 20%,transparent 70%);-webkit-mask-image:radial-gradient(ellipse at 70% 40%,#000 20%,transparent 70%);opacity:.5}
.hero-juice{position:absolute;inset:0;width:100%;height:100%;opacity:.55;pointer-events:none}
.hero-lottie.ready{opacity:1}
.hero-lottie{--sqx:1;--sqy:1;--sqd:0vh;transform-origin:50% 92%;opacity:0;transition:opacity .9s ease .2s;position:absolute;right:calc(max(24px,(100% - var(--wrap))/2) - .295*min(100vw,1500px));top:50%;transform:translateY(-52%);width:min(100vw,1500px);aspect-ratio:16/9;z-index:-1;will-change:transform;pointer-events:none}
.hero-copy{position:relative;width:min(var(--wrap),100%);margin-inline:auto;padding-right:42%}
.hero-kicker{color:var(--ink);margin-bottom:26px;text-transform:none;display:flex;align-items:center;gap:10px}
.mob-br{display:none}
.kicker-tomato{font-size:1.25rem;line-height:1;display:inline-block;animation:wiggle 2.4s ease-in-out infinite}
@keyframes wiggle{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}
.hero-title{font-family:var(--headline);font-size:clamp(2.8rem,8vw,8rem);line-height:.8;font-weight:800;letter-spacing:-.015em;word-spacing:.06em;font-variation-settings:'opsz' 96,'wdth' 88;text-transform:uppercase;margin-bottom:.1em}
.hero-title .line{display:block;width:fit-content;overflow:hidden;padding:.08em .24em .14em .02em;margin:0 0 -.22em -.02em;transform-origin:left center}
.hero-title .line:nth-child(1){transform:rotate(-1deg)}
.hero-title .line:nth-child(2){transform:rotate(.8deg)}
.hero-title .line:nth-child(3){transform:rotate(-.8deg)}
.hero-title .red{background:var(--red);color:#fff;display:inline-block;padding:0 .12em .04em .14em;border-radius:.08em;transform:rotate(-1deg);box-shadow:.06em .08em 0 rgba(0,0,0,.35)}
.hero-title .line:last-child{margin-bottom:0}
.hero-title .word{display:inline-block;transform:translateY(110%);animation:rise 1.2s var(--ease) forwards}
.hero-title .line:nth-child(2) .word{animation-delay:.08s}
.hero-title .line:nth-child(3) .word{animation-delay:.16s}
.hero-title .outline{font-family:'Instrument Serif',Georgia,serif;font-style:italic;font-weight:400;text-transform:none;letter-spacing:0;font-size:.95em;line-height:0;vertical-align:baseline;color:transparent;-webkit-text-stroke:1.5px var(--ink);paint-order:stroke fill;font-variation-settings:normal;margin-left:.04em}
.hero-title .period{color:var(--green);display:inline}
@keyframes rise{to{transform:translateY(0)}}
body.loading .hero-title .word{animation-play-state:paused}
.hero-sub{max-width:540px;margin-top:30px;font-family:var(--text);font-weight:500;font-size:clamp(.95rem,1.2vw,1.1rem);color:var(--ink);line-height:1.5;letter-spacing:.005em}
.hero-sub em{color:var(--green);font-weight:600}
.hero-cta{display:flex;gap:14px;margin-top:28px;flex-wrap:wrap}
.hero-meta{position:absolute;left:max(24px,calc((100% - var(--wrap))/2));bottom:28px;display:flex;gap:10px;color:#fff;z-index:4}
.hero-scroll{position:absolute;right:max(24px,calc((100% - var(--wrap))/2));bottom:28px;display:flex;align-items:center;gap:10px;color:#fff;z-index:4}
.hero-scroll-line{width:60px;height:1px;background:rgba(255,255,255,.35);position:relative;overflow:hidden}
.hero-scroll-line::after{content:'';position:absolute;left:-40%;top:0;width:40%;height:100%;background:var(--green);animation:scrollline 1.8s infinite var(--ease)}
@keyframes scrollline{to{left:100%}}
@media (max-width:900px){
  .hero{padding:92px 20px 70px;align-items:start}
  .hero-copy{padding-right:0}
  /* the tomato sits fully visible under the copy; the squeeze still works on scroll */
  .hero-lottie{right:-35vw;top:auto;bottom:-2vw;transform:none;width:170vw;opacity:1;transform-origin:50% 92%}
  .hero-copy{text-align:center;display:flex;flex-direction:column;align-items:center}
  .hero-kicker{font-size:.66rem;margin-bottom:16px;justify-content:center;flex-wrap:wrap;line-height:1.6}
  .mob-br{display:block}
  .hero-kicker .kicker-tomato{display:none}
  .hero-juice{display:none}
  .hero-title{font-size:clamp(3.2rem,16vw,5.2rem);margin-bottom:.05em}
  .hero-title .line{margin-left:auto;margin-right:auto;transform-origin:center}
  .hero-sub{font-size:.98rem;margin-top:14px;max-width:100%}
  .hero-cta{margin-top:20px;gap:10px;width:100%;flex-direction:column}
  .hero-cta .btn{width:100%;justify-content:center;padding:15px 16px;font-size:1rem;gap:8px}
  .hero-cta .btn-lg{padding:15px 16px;font-size:1rem}
  /* the ghost button sits over the tomato on phones → give it a faint dark fill so it reads */
  .hero-cta .btn-ghost{background:rgba(19,44,180,.42);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:inset 0 0 0 1.5px rgba(243,234,216,.55)}
  .hero-meta{display:none}
  .hero-scroll{left:50%;right:auto;bottom:14px;transform:translateX(-50%);justify-content:center}
  .hero-fill{height:4%}
  .hero-wave{top:-59px;height:60px}
  .hero-fill-label{width:calc(100% - 40px)}
  .hero-fill-label b{font-size:clamp(2rem,10.5vw,3.2rem);line-height:1}
  .hero-fill-cta{width:100%;margin-top:26px}
  .hero-fill-cta .btn{width:100%;justify-content:center;padding:15px 16px;font-size:1rem}
}
@media (max-width:900px){ .hero-lottie{transform:translateY(var(--sqd)) scale(var(--sqx),var(--sqy))} }

/* ---------- hero squeeze fill ---------- */
.hero-fill{position:absolute;left:0;right:0;bottom:0;height:7%;z-index:3;pointer-events:none}
.hero-fill-body{position:absolute;inset:0;background:var(--juice)}
.hero-wave{position:absolute;left:0;top:-99px;width:100%;height:100px;fill:var(--juice);display:block}
.hero-fill-label{position:absolute;left:0;right:0;margin-inline:auto;bottom:18%;text-align:center;color:#fff;opacity:0;width:min(90%,760px);pointer-events:none}
.hero-fill-label.live{pointer-events:auto}
.hero-fill-label>.mono:first-child{display:block;margin-bottom:14px;color:rgba(255,255,255,.7)}
.hero-fill-label b{display:block}
.hero-fill-cta{margin-top:30px;display:flex;justify-content:center}
.hero-fill-cta .btn{--btn-bg:#fff;--btn-fg:#0a0a0a}
.hero-fill-label .hero-fill-down{margin:34px auto 0;display:flex;width:fit-content;flex-direction:column;align-items:center;gap:10px;color:rgba(255,255,255,.85);text-transform:lowercase;animation:bob 2.2s ease-in-out infinite;transition:color .3s}
.hero-fill-down:hover{color:#fff}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
.fill-down-arrows{width:22px;height:34px;overflow:visible}
.fill-down-arrows path{opacity:.15;animation:chev 1.5s ease-in-out infinite}
.fill-down-arrows .a2{animation-delay:.2s}
.fill-down-arrows .a3{animation-delay:.4s}
@keyframes chev{0%,100%{opacity:.15;transform:translateY(0)}40%{opacity:1;transform:translateY(3px)}}
.hero-fill-label b{font-family:var(--headline);font-weight:800;font-size:clamp(1.8rem,4.5vw,4rem);line-height:1.02;letter-spacing:-.015em;font-variation-settings:'opsz' 96,'wdth' 88}
.hero.pinned .hero-copy{z-index:2}

/* ---------- drips ---------- */
.drips{position:relative;height:0;z-index:5;pointer-events:none}
.drips img{position:absolute;left:0;top:-2px;width:100%;height:auto;display:block;transform-origin:top center;transform:scaleY(.02);transition:transform 1.6s var(--ease) .05s}
.drips.in img{transform:scaleY(1)}
.skill-tag{position:absolute;top:calc(17.3vw * var(--y) / 100);transform:translate(-50%,-50%) rotate(var(--r)) scale(0);background:var(--ink);color:#0a0a0a;font-family:var(--mono);font-size:.78rem;letter-spacing:.04em;text-transform:lowercase;padding:8px 14px;border-radius:6px;box-shadow:3px 4px 0 rgba(0,0,0,.25);white-space:nowrap;opacity:0}
.drips.in .skill-tag{animation:tagPop .6s var(--snap) var(--d) both}
@keyframes tagPop{0%{opacity:0;transform:translate(-50%,-50%) rotate(calc(var(--r) - 12deg)) scale(0)}70%{opacity:1;transform:translate(-50%,-50%) rotate(calc(var(--r) + 2deg)) scale(1.08)}100%{opacity:1;transform:translate(-50%,-50%) rotate(var(--r)) scale(1)}}
@media (max-width:900px){.skill-tag{font-size:.74rem;padding:8px 12px;white-space:nowrap}.skill-tag:nth-child(n+8){display:none}}

/* ---------- sections base ---------- */
section{position:relative;padding:140px 0}
@media (max-width:900px){section{padding:96px 0}}
.reveal{opacity:0;transform:translateY(34px);transition:opacity 1s var(--ease),transform 1.1s var(--ease)}
.reveal.in{opacity:1;transform:none}

/* ---------- slop / manifesto ---------- */
.slop{padding-top:calc(17.3vw + 90px);background:var(--ink);color:#0a0a0a}
.slop .kicker{color:var(--red-deep)}
.slop .muted{color:#7a7366}
.slop .strike::after{background:var(--red)}

.slop .h-huge{max-width:none}
@media (max-width:700px){.slop .nowrap{white-space:normal}}
.slop-head{display:grid;grid-template-columns:minmax(0,1fr) 520px;gap:56px;align-items:center}
.slop .h-huge{font-size:clamp(2rem,4.2vw,4.2rem)}
@media (max-width:1100px){.slop-head{grid-template-columns:1fr}.slopgen-wrap{max-width:520px;justify-self:start}}
/* parody AI logo generator */
.slopgen-wrap{position:relative;justify-self:end;width:min(100%,520px)}
.slopgen{position:relative;background:#fff;border:2.5px solid #0a0a0a;border-radius:22px;box-shadow:8px 8px 0 #0a0a0a;transform:rotate(2deg);overflow:hidden;width:100%}
.facepalm{position:absolute;left:-16%;bottom:-12%;width:36%;z-index:3;pointer-events:none;transform:rotate(-6deg)}
@media (max-width:1100px){.facepalm{left:auto;right:-8%;width:30%;bottom:-14%}}
.slopgen-bar{display:flex;align-items:center;gap:6px;padding:10px 14px;border-bottom:2.5px solid #0a0a0a;background:#f3ead8}
.slopgen-bar i{width:10px;height:10px;border-radius:50%;background:#0a0a0a;opacity:.25}
.slopgen-bar .mono{margin-left:auto;color:#7a7366;font-size:.66rem}
.slopgen-prompt{padding:16px 20px;height:82px;overflow:hidden;border-bottom:1.5px dashed rgba(10,10,10,.15);color:#0a0a0a;font-size:.84rem;line-height:1.5}
.slopgen-caret::after{content:'';display:inline-block;width:.55em;height:1em;background:#0a0a0a;margin-left:2px;vertical-align:-2px;animation:blink 1s steps(2) infinite}
@keyframes blink{50%{opacity:0}}
.slopgen-out{display:flex;gap:20px;align-items:center;padding:22px 20px;height:176px}
.slopgen-logo{--hue:0deg;--mark:0deg;width:128px;height:128px;border-radius:28px;background:linear-gradient(135deg,#6d4bd8,#b84bd8 60%,#3b6fe0);filter:hue-rotate(var(--hue));display:grid;place-items:center;flex:none;position:relative;transition:transform .4s var(--snap),filter .4s;box-shadow:inset 0 -12px 24px rgba(0,0,0,.15)}
.slopgen-logo i{width:56px;height:56px;border-radius:var(--shape,16px 16px 16px 4px);background:rgba(255,255,255,.92);transform:rotate(calc(45deg + var(--mark)));transition:border-radius .4s,transform .4s}
.slopgen-logo.thinking{transform:scale(.6);filter:hue-rotate(var(--hue)) blur(6px) saturate(.6)}
.slopgen-meta b{display:block;font-family:var(--display);font-weight:800;font-size:1.8rem;letter-spacing:-.02em;line-height:1}
.slopgen-meta .mono{color:#7a7366;font-size:.7rem;display:block;margin-top:8px;height:1.2em}
.slopgen-foot{display:flex;justify-content:flex-end;gap:12px;align-items:center;padding:10px 18px 12px;border-top:2.5px solid #0a0a0a;background:#f3ead8;color:#4a453d;font-size:.7rem}
.slopgen-foot b{font-family:var(--display);font-size:1.1rem;color:var(--red)}
.slopgen-stamp{position:absolute;right:18px;bottom:64px;font-family:var(--display);font-weight:800;font-size:3rem;letter-spacing:-.04em;color:var(--red);border:4px solid var(--red);border-radius:10px;padding:0 10px;transform:rotate(-14deg) scale(0);opacity:0;transition:transform .35s var(--snap),opacity .2s}
.slopgen-stamp.on{transform:rotate(-14deg) scale(1);opacity:1}
.slop-lead{margin-top:34px;max-width:560px;font-size:clamp(1.05rem,1.5vw,1.35rem);line-height:1.45;color:#3a352e}
.slop-lead b{color:#0a0a0a;font-weight:700}
.slop-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:56px}
.slop-dots{display:none}
.slop-card{position:relative;background:#fff;border:2.5px solid #0a0a0a;border-radius:22px;overflow:hidden;transform:rotate(var(--tilt,0));box-shadow:8px 8px 0 #0a0a0a;transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.slop-card:hover{transform:rotate(0) translateY(-6px);box-shadow:12px 14px 0 #0a0a0a}
.card-band{display:flex;align-items:center;justify-content:space-between;background:var(--band);color:var(--band-ink);padding:0 22px;height:58px;border-bottom:2.5px solid #0a0a0a;position:relative;overflow:hidden}
.card-band .mono{opacity:.9}
.card-band b{font-family:var(--display);font-weight:800;font-size:1.9rem;line-height:1;letter-spacing:-.02em;font-variation-settings:'opsz' 96,'wdth' 85;color:var(--band-ink)}
.card-stamp{position:absolute;right:16px;top:44px;transform:rotate(var(--rot,-6deg));font-family:var(--mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;border:2px solid #0a0a0a;border-radius:6px;padding:5px 9px;background:var(--ink);color:#0a0a0a;z-index:2;box-shadow:2px 2px 0 #0a0a0a}
.card-body{padding:34px 26px 32px}
.slop-card h3{font-size:1.6rem;font-weight:800;letter-spacing:-.01em;line-height:1.08;margin-bottom:14px}
.slop-card p{color:#4a453d;font-size:.98rem}
.slop-no{display:none}
.slop-compare{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}
.cmp-track{display:contents}
.cmp-switch{display:none}
.cmp{border-radius:var(--r);padding:28px;display:flex;flex-direction:column;gap:22px;border:2.5px solid #0a0a0a;background:#fff}
.cmp-head h3{font-size:clamp(1.5rem,2.4vw,2.1rem);font-weight:800;letter-spacing:-.015em;line-height:1.02;margin-top:12px}
.cmp-tag{display:inline-block;font-family:var(--mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;padding:6px 10px;border-radius:6px;border:2px solid #0a0a0a}
.cmp-tag-bad{background:#e9e2d3;color:#0a0a0a}
.cmp-tag-good{background:var(--green);color:#0a0a0a}
.cmp-bad{background:#f7f2e8;border-style:dashed;color:#0a0a0a}
.cmp-bad h3{color:#7a7366}
.cmp-bad .cmp-slop img{filter:saturate(.7) contrast(.95)}
.cmp-good{background:#fff;box-shadow:8px 8px 0 #0a0a0a}
.cmp-slop{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.cmp-slop img{display:block;width:100%;aspect-ratio:1;object-fit:cover;border-radius:14px;transition:transform .5s var(--ease),filter .5s}
.cmp-slop img:hover{transform:scale(1.04) rotate(-1deg);filter:saturate(1)}
.cmp-media{position:relative;aspect-ratio:3/2;border-radius:14px;overflow:hidden;background:#0a0a0a}
.cmp-media video{width:100%;height:100%;object-fit:cover;display:block}
.cmp-badge{position:absolute;left:12px;bottom:12px;background:var(--ink);color:#0a0a0a;padding:6px 10px;border-radius:6px;font-size:.66rem;border:2px solid #0a0a0a}
.cmp-list{display:grid;gap:8px;color:#4a453d;font-size:.74rem;margin-top:auto}
.cmp-list li{padding-left:18px;position:relative}
.cmp-bad .cmp-list li::before{content:'✕';position:absolute;left:0;color:var(--red)}
.cmp-good .cmp-list li::before{content:'✓';position:absolute;left:0;color:var(--green-deep);font-weight:700}
.cmp-vs{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;pointer-events:none;opacity:0}
.cmp-vs i{display:block;font-style:normal;font-family:'Sedgwick Ave Display','Permanent Marker','Impact',sans-serif;font-size:clamp(3.4rem,8vw,7.5rem);line-height:1;color:var(--red);-webkit-text-stroke:2.5px #0a0a0a;paint-order:stroke fill;text-shadow:6px 7px 0 #0a0a0a;transform:rotate(-10deg)}
.slop-compare.in .cmp-vs{animation:vsIn .1s linear 1.4s both}
.slop-compare.in .cmp-vs i{animation:vsSlam .75s cubic-bezier(.2,1.5,.35,1) 1.4s both,vsIdle 2.2s ease-in-out 2.2s infinite alternate}
@keyframes vsIn{to{opacity:1}}
@keyframes vsSlam{0%{transform:rotate(-30deg) scale(4);filter:blur(6px)}55%{transform:rotate(-6deg) scale(.92);filter:blur(0)}72%{transform:rotate(-12deg) scale(1.06)}100%{transform:rotate(-10deg) scale(1)}}
@keyframes vsIdle{0%{transform:rotate(-10deg) scale(1)}100%{transform:rotate(-7deg) scale(1.05)}}
@media (max-width:900px){.slop-grid,.slop-compare{grid-template-columns:1fr}}

/* ---------- fruit or vegetable (fun checkpoint) ---------- */
.fov{position:relative;background:radial-gradient(ellipse at 70% 30%,#2a55ff 0,#1a3fe6 40%,#0b1f9c 100%);color:#fff;padding:200px 0 160px;overflow:hidden;isolation:isolate;clip-path:polygon(0 0,100% 5vw,100% 100%,0 100%);margin-top:-5vw}
.fov::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:80px 80px;z-index:-1;mask-image:radial-gradient(ellipse at center,#000 30%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 80%)}
.fov::after{content:'🍅';position:absolute;right:-4vw;bottom:-8vw;font-size:38vw;line-height:1;opacity:.08;z-index:-1;transform:rotate(-14deg);filter:grayscale(1) brightness(3)}
.fov .kicker{color:var(--green)}
.fov-inner{width:min(1100px,calc(100% - 48px));margin-inline:auto;text-align:center}
.fov-title{font-size:clamp(2.2rem,6vw,5.2rem);line-height:1;font-weight:800;letter-spacing:-.02em;font-variation-settings:'opsz' 96,'wdth' 88}
.fov-buttons{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:60px;perspective:900px}
.fov-btn{position:relative;border-radius:28px;padding:44px 24px 40px;display:flex;flex-direction:column;gap:8px;align-items:center;overflow:visible;border:3px solid #0a0a0a;box-shadow:10px 10px 0 #0a0a0a;transition:transform .5s var(--ease),box-shadow .5s var(--ease);transform:rotate(var(--t,0))}
.fov-btn .mono{opacity:.8}
.fov-emoji{font-size:clamp(3rem,7vw,5.5rem);line-height:1;display:block;margin-bottom:8px;transition:transform .5s var(--ease)}
.fov-big{font-family:'Sedgwick Ave Display','Permanent Marker',var(--display);font-weight:400;font-size:clamp(2.6rem,7.5vw,6.4rem);line-height:1;letter-spacing:.01em;color:#fff;-webkit-text-stroke:2px #0a0a0a;paint-order:stroke fill;text-shadow:4px 5px 0 #0a0a0a}
.fov-badge{position:absolute;top:-16px;right:26px;transform:rotate(8deg);font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;background:var(--ink);color:#0a0a0a;border:2px solid #0a0a0a;border-radius:6px;padding:6px 10px;box-shadow:2px 2px 0 #0a0a0a}
.fov-badge-warn{background:var(--red);color:#fff;transform:rotate(-8deg);right:auto;left:26px}
.fov-fruit{--t:-2deg;background:var(--green);color:#0a0a0a}
.fov-fruit .mono{color:#0a0a0a}
.fov-veg{--t:2deg;background:repeating-linear-gradient(135deg,#0a0a0a 0 18px,#1c1c1c 18px 36px);color:var(--ink)}
.fov-btn:hover{transform:rotate(0) translateY(-8px);box-shadow:16px 18px 0 #0a0a0a}
.fov-fruit:hover .fov-emoji{transform:rotate(-12deg) scale(1.15)}
.fov-veg:hover{background:repeating-linear-gradient(135deg,#e43d05 0 18px,#b52d06 18px 36px)}
.fov-veg:hover .fov-emoji{animation:nervous .15s linear infinite}
@keyframes nervous{0%,100%{transform:translate(-2px,0) rotate(-4deg)}50%{transform:translate(2px,0) rotate(4deg)}}
.fov-result{margin-top:44px}
.fov-stamp{display:inline-block;max-width:90%;font-weight:800;font-size:clamp(1.6rem,4vw,3rem);letter-spacing:-.03em;border:4px solid var(--green);color:var(--green);padding:6px 22px;border-radius:12px;transform:rotate(-6deg);animation:stamp .6s var(--snap) both}
@keyframes stamp{0%{transform:rotate(-6deg) scale(3);opacity:0}60%{transform:rotate(-6deg) scale(.95);opacity:1}100%{transform:rotate(-6deg) scale(1)}}
.fov-correct p{margin-top:22px;font-size:1.15rem;max-width:640px;margin-inline:auto;color:#fff}
.fov-count{margin-top:48px;color:rgba(255,255,255,.7)}
.fov.answered .fov-buttons{pointer-events:none;opacity:.35;filter:grayscale(.6)}
@media (max-width:700px){.fov-buttons{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}

/* ---------- rage ---------- */
.rage{position:fixed;inset:0;z-index:800;pointer-events:none;display:none}
.rage.on{display:block}
.rage-flash{position:absolute;inset:0;background:var(--red);opacity:0}
.rage.on .rage-flash{animation:flash .25s steps(2) 8}
@keyframes flash{0%{opacity:0}50%{opacity:.85}100%{opacity:0}}
.rage-stamp{font-family:var(--headline);position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-8deg) scale(0);font-size:clamp(5rem,22vw,22rem);font-weight:800;letter-spacing:-.06em;color:#fff;
  -webkit-text-stroke:3px var(--red);text-shadow:0 0 60px rgba(228,61,5,.8);font-variation-settings:'opsz' 96,'wdth' 75}
.rage.on .rage-stamp{animation:stampin .5s var(--snap) .2s forwards,stampshake .08s linear .7s 20}
@keyframes stampin{to{transform:translate(-50%,-50%) rotate(-8deg) scale(1)}}
@keyframes stampshake{0%,100%{margin-left:0}25%{margin-left:-8px}75%{margin-left:8px}}
.rage-splats{position:absolute;inset:0;overflow:hidden}
.splat{position:absolute;width:var(--s);height:var(--s);transform:translate(-50%,-50%) scale(0) rotate(var(--r));animation:splat .45s var(--snap) var(--d) forwards;filter:drop-shadow(0 6px 10px rgba(0,0,0,.4))}
@keyframes splat{0%{transform:translate(-50%,-50%) scale(0) rotate(var(--r))}70%{transform:translate(-50%,-50%) scale(1.15) rotate(var(--r))}100%{transform:translate(-50%,-50%) scale(1) rotate(var(--r))}}
/* shake/invert go on <main>, not <body>: a transformed/filtered body would drag the fixed overlays (rage, ban) with it and leave gaps at the edges on phones */
body.shake main{animation:shake .09s linear 24}
@keyframes shake{0%{transform:translate(0,0)}25%{transform:translate(-10px,6px) rotate(-.4deg)}50%{transform:translate(8px,-8px)}75%{transform:translate(-6px,-4px) rotate(.4deg)}100%{transform:translate(0,0)}}
body.invert main{filter:invert(1) hue-rotate(180deg)}
body.flip main{transform:rotate(180deg);transition:transform .8s var(--snap)}

/* ---------- ban ---------- */
.ban{position:fixed;inset:0;z-index:850;background:#0a0a0a;display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .4s}
.ban.on{opacity:1;pointer-events:auto}
.ban-inner{text-align:center;max-width:720px;padding:32px}
.ban-lottie{width:min(40vw,220px);aspect-ratio:1;margin:0 auto 10px;animation:angry .12s linear infinite}
@keyframes angry{0%,100%{transform:translate(0,0)}25%{transform:translate(-3px,2px)}75%{transform:translate(3px,-2px)}}
.ban-kicker{color:var(--red)}
.ban-title{font-family:var(--headline);font-size:clamp(2.2rem,7vw,5.4rem);line-height:.98;font-weight:800;letter-spacing:-.02em;margin:14px 0 30px;font-variation-settings:'opsz' 96,'wdth' 85}
.ban-title span{color:var(--red)}
.ban-meta{display:inline-grid;gap:8px;text-align:left;margin-bottom:34px;color:var(--ink-dim)}
.ban-meta li{display:grid;grid-template-columns:120px 1fr;gap:16px}
.ban-meta li span{color:var(--muted)}
.ban-meta b{color:var(--green);font-size:1rem}
.ban-sorry{font-size:clamp(1.05rem,1.8vw,1.4rem);padding:22px 34px;animation:sorryPulse 1.6s ease-in-out infinite;box-shadow:0 0 0 0 rgba(228,61,5,.6)}
@keyframes sorryPulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 rgba(228,61,5,.55)}50%{transform:scale(1.04);box-shadow:0 0 0 18px rgba(228,61,5,0)}}
.ban-sorry:hover{animation-play-state:paused}
.ban-foot{margin-top:36px;color:var(--muted)}

/* ---------- work wall ---------- */
.workwall{background:var(--bg)}
.projects{display:grid;grid-template-columns:repeat(3,1fr);gap:26px 22px;margin-bottom:40px}
@media (max-width:1100px){.projects{grid-template-columns:repeat(2,1fr)}}
.project{cursor:pointer;display:flex;flex-direction:column;gap:14px}
.project-media{position:relative;aspect-ratio:3/2;border-radius:22px;overflow:hidden;background:var(--tile-bg,#111);border:1px solid var(--line);transition:transform .6s var(--ease),box-shadow .6s var(--ease)}
.project-media video{width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s var(--ease)}
/* light/white loops: soften the edge so they don't glare against the dark wall */
.project-media::before{content:'';position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 0 0 1px rgba(0,0,0,.25),inset 0 0 40px rgba(0,0,0,.08);pointer-events:none;z-index:1}
.project:hover .project-media{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(228,61,5,.45)}
.project:hover .project-media video{transform:scale(1.03)}
.project-ph{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:var(--w,60%);max-width:70%;max-height:60%;object-fit:contain;pointer-events:none}
.project-ph.cover{width:100%;height:100%;max-width:none;max-height:none;object-fit:cover}
.project.has-video .project-media::after{content:'▶\FE0E  hover to play';position:absolute;left:14px;bottom:12px;font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:#fff;background:rgba(10,10,10,.6);border:1px solid rgba(255,255,255,.25);padding:7px 11px;border-radius:999px;backdrop-filter:blur(6px);pointer-events:none;transition:opacity .3s,transform .4s var(--ease)}
.project.has-video:hover .project-media::after{opacity:0;transform:translateY(6px)}
@media (pointer:coarse){.project.has-video .project-media::after{display:none}}
.project.no-video .project-media::after{content:'loop coming soon';position:absolute;left:12px;bottom:10px;font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;color:rgba(255,255,255,.55);mix-blend-mode:difference}
.project-meta{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.project-meta h3{font-size:1.35rem;font-weight:800;letter-spacing:-.015em;line-height:1}
.project-meta p{color:var(--ink-dim);margin-top:4px;font-size:.95rem}
.project-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.project-tags span{font-family:var(--mono);font-size:.66rem;border:1px solid var(--line);padding:4px 9px;border-radius:999px;color:var(--ink-dim);text-transform:lowercase}

.work-visual.has-video{padding:0;aspect-ratio:3/2}
.work-visual.has-video video{width:100%;height:100%;object-fit:cover;display:block}
@media (max-width:700px){.projects{grid-template-columns:1fr;gap:30px}}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:30px}
.filters button{padding:9px 16px;border-radius:999px;border:1px solid var(--line);color:var(--ink-dim);transition:.3s}
.filters button:hover{border-color:var(--ink);color:var(--ink)}
.filters button.on{background:var(--ink);color:#0a0a0a;border-color:var(--ink)}
.tiles{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.tile{position:relative;aspect-ratio:1;border-radius:var(--r);overflow:hidden;display:grid;place-items:center;padding:18%;background:var(--tile-bg,#111);
  transition:transform .6s var(--ease),opacity .5s,filter .5s;transform-style:preserve-3d;will-change:transform;text-align:left}
.tile img{width:var(--w,70%);height:auto;max-height:70%;object-fit:contain;pointer-events:none;transition:transform .6s var(--ease)}
.tile.cover{padding:0}
.tile.cover img{width:100%;height:100%;max-height:none;object-fit:cover}
.tile-info{position:absolute;left:0;right:0;bottom:0;padding:16px;background:linear-gradient(transparent,rgba(0,0,0,.78));color:#fff;transform:translateY(100%);transition:transform .5s var(--ease)}
.tile-info b{display:block;font-weight:700;letter-spacing:-.01em;font-size:1.05rem}
.tile-info span{display:block;font-family:var(--mono);font-size:.7rem;opacity:.75;margin-top:2px}
.tile:hover .tile-info{transform:translateY(0)}
.tile:hover img{transform:scale(1.06)}
.tile.hide{opacity:0;transform:scale(.9);pointer-events:none;position:absolute;inset:0}
.tile-cta{background:transparent;border:1.5px dashed var(--line);color:var(--ink-dim);font-weight:700;font-size:1rem;letter-spacing:-.02em;text-align:center;line-height:1.1;padding:24px;display:grid;place-items:center;transition:.4s}
.tile-cta small{display:block;font-family:var(--mono);font-size:.7rem;font-weight:400;margin-top:10px;color:var(--muted)}
.tile-cta:hover{border-color:var(--green);color:var(--green)}
.tile-year{position:absolute;top:12px;right:14px;font-family:var(--mono);font-size:.65rem;opacity:.5;mix-blend-mode:difference;color:#fff}
.wall-note{margin-top:28px;color:var(--muted)}
@media (max-width:1100px){.tiles{grid-template-columns:repeat(4,1fr)}}
@media (max-width:700px){.tiles{grid-template-columns:repeat(3,1fr);gap:8px}.tile-info{display:none}}

/* ---------- work modal ---------- */
.work{position:fixed;inset:0;z-index:700;background:rgba(10,10,10,.85);backdrop-filter:blur(10px);display:grid;place-items:center;padding:20px;opacity:0;pointer-events:none;transition:opacity .35s}
.work.on{opacity:1;pointer-events:auto}
.work-card{background:var(--card);border:1px solid var(--line);border-radius:24px;width:min(980px,100%);display:grid;grid-template-columns:1fr 1fr;overflow:hidden;position:relative;transform:translateY(20px) scale(.98);transition:transform .5s var(--ease)}
.work.on .work-card{transform:none}
.work-close,.reel-close{position:absolute;right:14px;top:14px;width:42px;height:42px;border-radius:50%;background:var(--ink);color:#0a0a0a;font-size:1rem;display:grid;place-items:center;z-index:2;transition:.3s}
.work-close:hover,.reel-close:hover{background:var(--green);transform:rotate(90deg)}
.work-visual{aspect-ratio:1;display:grid;place-items:center;padding:16%;background:var(--tile-bg,#111)}
.work-visual img{width:var(--w,70%);object-fit:contain}
.work-visual.cover{padding:0}
.work-visual.cover img{width:100%;height:100%;object-fit:cover}
.work-body{padding:40px 36px;display:flex;flex-direction:column;gap:14px;justify-content:center}
.work-kicker{color:var(--green)}
.work-title{font-size:2.2rem;font-weight:800;letter-spacing:-.015em;line-height:1}
.work-desc{color:var(--ink-dim)}
.work-tags{display:flex;gap:6px;flex-wrap:wrap}
.work-tags span{font-family:var(--mono);font-size:.68rem;border:1px solid var(--line);padding:4px 10px;border-radius:999px;color:var(--ink-dim)}
.work-placeholder{color:var(--muted);border:1px dashed var(--line);padding:14px;border-radius:10px;text-align:center}
.work-body .btn{align-self:flex-start;margin-top:8px}
@media (max-width:800px){.work-card{grid-template-columns:1fr;max-height:92vh;overflow:auto}.work-visual{aspect-ratio:16/10}}

/* ---------- showreel section ---------- */
.reelsec{padding:0 28px 140px}
.reel-card{position:relative;width:min(var(--wrap),100%);margin-inline:auto;aspect-ratio:21/9;border-radius:28px;overflow:hidden;display:block;text-align:left;isolation:isolate;background:#0a0a0a;transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(#fff,#000)}
.reel-card-poster{position:absolute;inset:-2px;width:calc(100% + 4px);height:calc(100% + 4px);object-fit:cover;z-index:-3;transition:transform .9s var(--ease);backface-visibility:hidden}
.reel-card{cursor:pointer}
.reel-card-poster{filter:brightness(.9) saturate(.95);transition:transform .9s var(--ease),filter .6s}
.reel-card:hover .reel-card-poster{transform:scale(1.06);filter:brightness(1.05) saturate(1.05)}
.reel-card:hover .reel-card-bg{opacity:.85}
.reel-card-bg{transition:opacity .6s}
.reel-card-bg{position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,10,10,.88) 0%,rgba(10,10,10,.6) 45%,rgba(10,10,10,.15) 100%),linear-gradient(0deg,rgba(10,10,10,.75),transparent 55%);z-index:-2}
.reel-card-copy{position:absolute;left:clamp(24px,5vw,64px);bottom:clamp(24px,5vw,56px);display:flex;flex-direction:column;gap:16px}
.reel-card-title{font-family:var(--headline);font-size:clamp(2rem,5.5vw,5rem);font-weight:800;letter-spacing:-.015em;line-height:.98;font-variation-settings:'opsz' 96,'wdth' 85}
.reel-sub{display:block;max-width:520px;color:var(--ink-dim);font-size:1rem;line-height:1.5}
.reel-play{display:inline-flex;align-items:center;gap:14px;font-family:var(--mono);font-size:.8rem;letter-spacing:.1em;color:var(--ink)}
.reel-play i{width:64px;height:64px;border-radius:50%;background:var(--red);display:grid;place-items:center;position:relative;transition:.4s var(--ease)}
.reel-play i::after{content:'';border-left:16px solid #fff;border-top:10px solid transparent;border-bottom:10px solid transparent;margin-left:4px}
.reel-card:hover .reel-play i{background:var(--green);transform:scale(1.12)}
.reel-card:hover .reel-play i::after{border-left-color:#0a0a0a}
@media (max-width:800px){.reelsec{padding:0 16px 96px}.reel-card{aspect-ratio:4/5}}

/* ---------- reel modal ---------- */
.reel{position:fixed;inset:0;z-index:750;background:rgba(0,0,0,.94);display:grid;place-items:center;padding:20px;opacity:0;pointer-events:none;transition:opacity .35s}
.reel.on{opacity:1;pointer-events:auto}
.reel-frame{width:min(1400px,100%);aspect-ratio:16/9;background:#000;border-radius:14px;overflow:hidden;box-shadow:0 40px 120px rgba(0,0,0,.7)}
.reel-frame video,.reel-frame iframe{width:100%;height:100%;border:0}

/* ---------- menu / services → order ticket ---------- */
.menu{position:relative;background:radial-gradient(ellipse at 20% 20%,#2a55ff 0,#1a3fe6 40%,#0b1f9c 100%);color:#fff;overflow:hidden;isolation:isolate}
.menu::before{content:'';position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);background-size:80px 80px;z-index:-1;mask-image:radial-gradient(ellipse at center,#000 30%,transparent 80%);-webkit-mask-image:radial-gradient(ellipse at center,#000 30%,transparent 80%)}
.menu .kicker{color:var(--green)}
.menu .sec-sub{color:rgba(255,255,255,.8)}
.order{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:40px;align-items:start}
.menu-list{border-top:2px solid rgba(255,255,255,.25)}
.menu-item{display:grid;grid-template-columns:52px 1fr 56px;gap:18px;align-items:start;padding:26px 0;border-bottom:2px solid rgba(255,255,255,.25);cursor:pointer;position:relative;transition:padding .4s var(--ease)}
.menu-item::before{content:'';position:absolute;inset:0 -16px;border-radius:16px;background:rgba(255,255,255,.06);opacity:0;transition:opacity .3s;z-index:-1}
.menu-item:hover::before,.menu-item.on::before{opacity:1}
.menu-item.on::before{background:rgba(108,242,59,.12)}
.menu-no{color:rgba(255,255,255,.55);padding-top:6px}
.menu-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.menu-name{font-size:clamp(1.5rem,2.6vw,2.3rem);font-weight:800;letter-spacing:-.015em;line-height:1;transition:color .3s}
.menu-item.on .menu-name{color:var(--green)}
.menu-tag{font-family:var(--mono);font-size:.62rem;letter-spacing:.08em;text-transform:lowercase;border:1.5px solid rgba(255,255,255,.5);border-radius:999px;padding:4px 9px;color:#fff}
.menu-item.featured .menu-tag{background:var(--red);border-color:var(--red)}
.menu-desc{color:rgba(255,255,255,.82);max-width:620px;margin-top:10px;font-size:.98rem}
.menu-deliver{display:block;color:rgba(255,255,255,.55);margin-top:10px;font-size:.7rem}
.menu-add{width:48px;height:48px;border-radius:50%;border:2px solid #fff;display:grid;place-items:center;justify-self:end;margin-top:2px;transition:.35s var(--ease);background:transparent;position:relative}
.menu-add i{position:relative;width:18px;height:18px;display:block}
.menu-add i::before,.menu-add i::after{content:'';position:absolute;left:50%;top:50%;width:18px;height:2.5px;background:#fff;transform:translate(-50%,-50%);transition:.35s var(--ease)}
.menu-add i::after{transform:translate(-50%,-50%) rotate(90deg)}
.menu-item:hover .menu-add{background:#fff}
.menu-item:hover .menu-add i::before,.menu-item:hover .menu-add i::after{background:#0a0a0a}
.menu-item.on .menu-add{background:var(--green);border-color:var(--green);transform:rotate(45deg)}
.menu-item.on .menu-add i::before,.menu-item.on .menu-add i::after{background:#0a0a0a}
/* ticket */
.ticket{position:sticky;top:90px;background:#fffdf7;color:#0a0a0a;padding:26px 22px 20px;border-radius:4px;box-shadow:0 30px 60px -20px rgba(0,0,0,.55);transform:rotate(1.2deg);
  -webkit-mask:radial-gradient(circle at 10px 100%,transparent 7px,#000 7.5px) -10px 0/20px 100% repeat-x, linear-gradient(#000,#000) 0 0/100% calc(100% - 10px) no-repeat;
  mask:radial-gradient(circle at 10px 100%,transparent 7px,#000 7.5px) -10px 0/20px 100% repeat-x, linear-gradient(#000,#000) 0 0/100% calc(100% - 10px) no-repeat;
  mask-composite:add;-webkit-mask-composite:source-over;padding-bottom:34px}
.ticket.bump{animation:bump .35s var(--snap)}
@keyframes bump{0%{transform:rotate(1.2deg) scale(1)}40%{transform:rotate(.4deg) scale(1.02)}100%{transform:rotate(1.2deg) scale(1)}}
.ticket-head{text-align:center;display:grid;gap:4px;padding-bottom:16px;border-bottom:2px dashed rgba(10,10,10,.25)}
.ticket-head b{font-family:var(--display);font-weight:800;font-size:1.5rem;letter-spacing:.02em}
.ticket-head .mono{color:#6d665c;font-size:.66rem}
.ticket-items{padding:14px 0;min-height:110px;display:grid;gap:8px;font-size:.74rem;border-bottom:2px dashed rgba(10,10,10,.25)}
.ticket-items li{display:grid;grid-template-columns:auto 1fr auto auto;gap:8px;align-items:baseline;animation:fadeIn .4s both}
.ticket-items .dots{border-bottom:2px dotted rgba(10,10,10,.4);transform:translateY(-3px)}
.ticket-empty{color:#8a8378;grid-template-columns:1fr!important;text-align:center;padding:24px 0}
.ticket-total{display:flex;justify-content:space-between;align-items:center;padding:14px 0 16px;font-size:.74rem}
.ticket-total b{font-family:var(--display);font-size:1.2rem;font-weight:800;color:var(--red);letter-spacing:-.01em}
.ticket-send{width:100%;justify-content:center;opacity:.45;pointer-events:none;transition:opacity .3s}
.ticket.has-items .ticket-send{opacity:1;pointer-events:auto}
.ticket-alt{display:block;text-align:center;margin-top:10px;color:#6d665c;font-size:.66rem;text-decoration:underline;opacity:.45;pointer-events:none;transition:opacity .3s}
.ticket.has-items .ticket-alt{opacity:1;pointer-events:auto}
.ticket-foot{text-align:center;color:#8a8378;font-size:.62rem;margin-top:14px}
.ticket-barcode{height:34px;margin-top:12px;background:repeating-linear-gradient(90deg,#0a0a0a 0 2px,transparent 2px 4px,#0a0a0a 4px 5px,transparent 5px 9px,#0a0a0a 9px 12px,transparent 12px 14px);opacity:.85}
@media (max-width:1000px){.order{grid-template-columns:1fr}.ticket{position:relative;top:0;transform:none;max-width:420px}.ticket.bump{animation:none}}
@media (max-width:700px){.menu-item{grid-template-columns:36px 1fr 44px;gap:10px}.menu-add{width:40px;height:40px}}

/* ---------- how it goes (compact strip under the order) ---------- */
.how{margin-top:72px;padding-top:28px;border-top:2px solid rgba(255,255,255,.25)}
.how-label{display:block;color:var(--green);margin-bottom:18px}
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:18px}
.step{display:grid;gap:6px;position:relative;padding-right:18px}
.step:not(:last-child)::after{content:'→';position:absolute;right:2px;top:0;color:rgba(255,255,255,.35);font-family:var(--mono)}
.step-no{color:rgba(255,255,255,.5);font-size:.66rem}
.step b{font-weight:700;font-size:.98rem;letter-spacing:-.01em;line-height:1.15}
.step-d{color:rgba(255,255,255,.65);font-size:.8rem;line-height:1.4}
@media (max-width:1000px){.steps{grid-template-columns:repeat(3,1fr)}}
@media (max-width:600px){.steps{grid-template-columns:1fr 1fr}.step:not(:last-child)::after{display:none}}

/* ---------- about ---------- */
.about{background:var(--ink);color:#0a0a0a;overflow:hidden}
.about .kicker{color:var(--red-deep)}
.about .muted{color:#6d665c}
.about-side{display:flex;flex-direction:column;gap:26px}
.about-lottie-wrap{position:relative;width:100%;aspect-ratio:1920/1400}
.about-lottie{position:absolute;inset:0}
.about-caption{position:absolute;left:0;right:0;bottom:-6px;text-align:center;color:#8a8378;font-size:.68rem}
.about-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:center}
.about-copy p{color:#3a352e;font-size:1.05rem;margin-top:18px;max-width:620px}
.about-copy .h-big{color:#0a0a0a}
.stats{display:grid;grid-template-columns:1fr 1fr;gap:0 28px;padding-top:8px}
.stat{padding:18px 0 20px;border-top:2px solid #0a0a0a}
.stat b{display:block;font-size:clamp(2.2rem,4.2vw,3.6rem);font-weight:800;letter-spacing:-.03em;line-height:1;font-variation-settings:'opsz' 96,'wdth' 85;color:var(--red)}
.stat span{font-family:var(--mono);font-size:.72rem;color:#5a554c;display:block;margin-top:6px}
.about-links{display:flex;gap:26px;margin-top:30px}
.about-links a{color:#0a0a0a;border-bottom:1px solid #0a0a0a;padding-bottom:2px;transition:.3s}
.about-links a:hover{color:var(--red);border-color:var(--red)}
@media (max-width:900px){.about-grid{grid-template-columns:1fr;gap:34px}}

/* ---------- game ---------- */
.gamesec{background:var(--bg)}
.game-frame{position:relative;width:min(960px,100%);margin-inline:auto;border-radius:22px;overflow:hidden;border:2.5px solid #0a0a0a;background:#efe4cf;aspect-ratio:16/9}
#gameCanvas{width:100%;height:100%;touch-action:manipulation}
.game-ui{position:absolute;inset:0;pointer-events:none}
.game-hud{position:absolute;left:16px;right:16px;top:14px;display:flex;gap:22px;color:var(--ink-dim)}
.game-hud>span{background:rgba(10,10,10,.78);padding:6px 10px;border-radius:999px;backdrop-filter:blur(4px)}
.game-hud b{color:var(--ink);font-size:1rem}
.game-hud .lives{margin-left:auto;display:flex;gap:4px}
.game-hud .lives i{width:16px;height:16px;background:url('assets/brand/icon.svg') center/contain no-repeat;display:inline-block}
.game-hud .lives i.off{opacity:.2;filter:grayscale(1)}
.game-over{position:absolute;inset:0;display:grid;place-content:center;text-align:center;gap:14px;background:rgba(10,10,10,.78);backdrop-filter:blur(6px);pointer-events:auto;padding:24px}
.game-over h3{font-family:var(--headline);font-size:clamp(2rem,6vw,4.4rem);font-weight:800;letter-spacing:-.02em;line-height:.95;font-variation-settings:'opsz' 96,'wdth' 80}
.game-over p{color:var(--ink-dim)}
.game-over p b{color:var(--green)}
.game-over .btn{justify-self:center}
.game-over-btns{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.game-hint{color:var(--muted)}
.game-frame.playing .game-hud{opacity:1}

/* ---------- annoy the tomato ---------- */
.annoy{display:grid;grid-template-columns:1.1fr .9fr;gap:26px;align-items:stretch;position:relative}
.annoy-stage{position:relative;background:radial-gradient(ellipse at 50% 40%,#2a55ff 0,#1a3fe6 45%,#0b1f9c 100%);border:2.5px solid #0a0a0a;border-radius:26px;overflow:hidden;min-height:520px;display:grid;place-items:center;padding:40px 24px 90px}
/* tension background: blue → warm → red → hell */
.annoy-heat{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .9s ease;background:radial-gradient(ellipse at 50% 80%,#ff5a1f 0,#b31400 35%,#3a0006 70%,#12000a 100%)}
.annoy-stage[data-mood="1"] .annoy-heat{opacity:.35}
.annoy-stage[data-mood="2"] .annoy-heat{opacity:.72}
.annoy-stage[data-mood="3"] .annoy-heat{opacity:1}
/* hell behind it: a breathing dark-red glow + slow embers drifting up (no flames on the tomato itself) */
.annoy-hellglow{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .8s;background:radial-gradient(ellipse at 50% 55%,rgba(255,90,31,.55) 0,rgba(180,20,0,.35) 30%,rgba(60,0,10,0) 65%);animation:hellBreath 2.2s ease-in-out infinite}
.annoy-stage[data-mood="3"] .annoy-hellglow{opacity:1}
@keyframes hellBreath{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.08);filter:brightness(1.25)}}
.annoy-embers{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .8s;overflow:hidden}
.annoy-stage[data-mood="3"] .annoy-embers{opacity:1}
.annoy-embers i{position:absolute;bottom:-4%;width:5px;height:5px;border-radius:50%;background:#ffb02e;box-shadow:0 0 8px 2px rgba(255,120,30,.8);animation:ember 5s linear infinite;opacity:0}
.annoy-embers i:nth-child(1){left:4%;animation-duration:6.2s;animation-delay:-1s}.annoy-embers i:nth-child(2){left:11%;animation-duration:5.1s;animation-delay:-3s;width:3px;height:3px}.annoy-embers i:nth-child(3){left:17%;animation-duration:7s;animation-delay:-2s}.annoy-embers i:nth-child(4){left:24%;animation-duration:4.6s;animation-delay:-.5s;width:4px;height:4px}.annoy-embers i:nth-child(5){left:30%;animation-duration:6.6s;animation-delay:-4s}.annoy-embers i:nth-child(6){left:36%;animation-duration:5.4s;animation-delay:-1.5s;width:3px;height:3px}.annoy-embers i:nth-child(7){left:43%;animation-duration:7.4s;animation-delay:-2.5s}.annoy-embers i:nth-child(8){left:49%;animation-duration:4.9s;animation-delay:-3.5s}.annoy-embers i:nth-child(9){left:55%;animation-duration:6s;animation-delay:-.8s;width:4px;height:4px}.annoy-embers i:nth-child(10){left:61%;animation-duration:5.7s;animation-delay:-4.5s}.annoy-embers i:nth-child(11){left:67%;animation-duration:6.9s;animation-delay:-1.2s;width:3px;height:3px}.annoy-embers i:nth-child(12){left:73%;animation-duration:5.2s;animation-delay:-2.8s}.annoy-embers i:nth-child(13){left:79%;animation-duration:6.4s;animation-delay:-3.8s;width:4px;height:4px}.annoy-embers i:nth-child(14){left:85%;animation-duration:4.8s;animation-delay:-.3s}.annoy-embers i:nth-child(15){left:91%;animation-duration:7.2s;animation-delay:-2.2s;width:3px;height:3px}.annoy-embers i:nth-child(16){left:96%;animation-duration:5.9s;animation-delay:-4.2s}.annoy-embers i:nth-child(17){left:8%;animation-duration:6.7s;animation-delay:-5s;width:4px;height:4px}.annoy-embers i:nth-child(18){left:64%;animation-duration:5.5s;animation-delay:-.1s}
@keyframes ember{0%{transform:translate(0,0) scale(.6);opacity:0}10%{opacity:1}50%{transform:translate(14px,-300px) scale(1);opacity:.9}100%{transform:translate(-10px,-640px) scale(.4);opacity:0}}
.annoy-ears{position:absolute;inset:0;pointer-events:none;z-index:2}
.annoy-ears span{position:absolute;font-size:1.5rem;opacity:0;animation:earSmoke 1.1s ease-out forwards}
.annoy-ears span.l{animation-name:earSmokeL}
@keyframes earSmoke{0%{transform:translate(0,0) scale(.5);opacity:0}15%{opacity:.95}100%{transform:translate(70px,-60px) scale(1.6);opacity:0}}
@keyframes earSmokeL{0%{transform:translate(0,0) scale(.5) scaleX(-1);opacity:0}15%{opacity:.95}100%{transform:translate(-70px,-60px) scale(1.6) scaleX(-1);opacity:0}}
.annoy-stage.hit .annoy-tomato{animation:tomatoHit .45s var(--snap)}
@keyframes tomatoHit{0%{transform:scale(1)}30%{transform:scale(.94,1.06) translateY(-6px)}60%{transform:scale(1.05,.95)}100%{transform:scale(1)}}
.annoy-stage.shaking .annoy-tomato{animation:angryShake .1s linear infinite}
@keyframes angryShake{0%,100%{transform:translate(0,0) rotate(0)}25%{transform:translate(-3px,2px) rotate(-1deg)}75%{transform:translate(3px,-2px) rotate(1deg)}}
.annoy-figure{position:relative;width:min(70%,360px);z-index:1}
.annoy-ground{position:absolute;left:50%;bottom:7.5%;width:86%;height:9%;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse at center,rgba(5,10,60,.55),rgba(5,10,60,.25) 55%,rgba(5,10,60,0) 72%);pointer-events:none}
.annoy-tomato{position:relative;width:100%;transition:filter .4s}
/* nerves: annoyed = tiny occasional twitch, angry = more frequent, blow = constant shake (stage.shaking) */
.annoy-tomato[data-mood="1"]{animation:nervy 3.8s linear infinite}
.annoy-tomato[data-mood="2"]{animation:nervy2 1.6s linear infinite}
@keyframes nervy{0%,86%,100%{transform:none}88%{transform:translate(2.5px,-1.5px) rotate(.7deg)}90%{transform:translate(-2.5px,1.5px) rotate(-.7deg)}92%{transform:translate(2px,.5px) rotate(.5deg)}94%{transform:translate(-1px,-.5px) rotate(-.3deg)}96%{transform:none}}
@keyframes nervy2{0%,66%,100%{transform:none}70%{transform:translate(3px,-1.5px) rotate(.9deg)}74%{transform:translate(-3px,1.5px) rotate(-.9deg)}78%{transform:translate(2.5px,.8px) rotate(.6deg)}82%{transform:translate(-2px,-.8px) rotate(-.4deg)}86%{transform:translate(1px,0)}90%{transform:none}}
.annoy-img{width:100%;height:auto;display:block}
.annoy-svg{width:100%;position:relative;aspect-ratio:986/941}
.annoy-rig{position:absolute;inset:0}
.annoy-rig svg{width:100%!important;height:100%!important;display:block;overflow:visible}
.annoy-facepalm{position:absolute;inset:0;width:100%;height:auto;opacity:0;transition:opacity .15s;pointer-events:none}
.annoy-facepalm.on{opacity:1}
.annoy-tomato[data-mood="3"] .annoy-img{filter:saturate(1.3)}
.annoy-eyes{position:absolute;inset:0;pointer-events:none;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.annoy-pupil{position:absolute;border-radius:50%;background:#111;transform:translate(-50%,-50%);will-change:left,top;transition:background .3s}
.annoy-brow{position:absolute;height:7%;max-height:16px;background:#0a0a0a;border-radius:999px;transform:translate(-50%,-50%) rotate(4deg);transition:transform .35s var(--snap);opacity:.85}
.annoy-brow[data-side="l"]{transform-origin:right center}
.annoy-brow[data-side="r"]{transform-origin:left center}
.annoy.sprites .annoy-brow,.annoy.sprites .annoy-tint{display:none}
.annoy-tint{position:absolute;inset:0;background:radial-gradient(circle at 50% 55%,rgba(228,61,5,.9),rgba(228,61,5,0) 68%);opacity:0;transition:opacity .5s;pointer-events:none;mix-blend-mode:multiply}
.annoy-steam{position:absolute;left:0;right:0;top:6%;height:30%;pointer-events:none;z-index:2}
.annoy-steam span{position:absolute;bottom:0;font-size:2rem;animation:steamUp var(--d,1.4s) ease-out forwards;opacity:0}
@keyframes steamUp{0%{transform:translateY(20px) scale(.6);opacity:0}20%{opacity:1}100%{transform:translateY(-120px) scale(1.4);opacity:0}}
.annoy-bubble{position:absolute;z-index:4;max-width:min(60%,340px);padding:12px 16px;border-radius:18px;border:2.5px solid #0a0a0a;font-size:.95rem;line-height:1.3;box-shadow:4px 4px 0 #0a0a0a}
.annoy-bubble.pop{animation:bubblePop .35s var(--snap)}
@keyframes bubblePop{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
.annoy-bubble-client{left:20px;top:22px;background:#fff;color:#0a0a0a;border-bottom-left-radius:4px;font-size:.72rem}
.annoy-bubble-tomato{right:20px;bottom:110px;background:var(--ink);color:#0a0a0a;border-bottom-right-radius:4px;font-family:var(--display);font-weight:800;letter-spacing:-.01em;font-size:1.05rem}
.annoy-hud{position:absolute;z-index:4;left:20px;right:20px;bottom:20px;display:flex;align-items:flex-end;justify-content:space-between;gap:20px}
.annoy-meter{flex:1;max-width:360px}
.annoy-meter .mono{display:block;color:rgba(255,255,255,.7);margin-bottom:6px}
.annoy-bar{height:14px;border-radius:999px;background:rgba(10,10,10,.45);border:2px solid #0a0a0a;overflow:hidden}
.annoy-bar i{display:block;height:100%;width:100%;background:var(--green);transition:width .5s var(--ease),background .5s}
.annoy-score{color:#fff;white-space:nowrap}
.annoy-score b{color:var(--green)}
.annoy-deck{display:flex;flex-direction:column;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:26px;padding:18px 18px 16px}
.annoy-chat-head{display:flex;align-items:center;gap:12px;padding:4px 4px 14px;border-bottom:1px solid var(--line)}
.annoy-avatar{width:44px;height:44px;border-radius:50%;background:var(--ink);display:grid;place-items:center;font-size:1.4rem;flex:none}
.annoy-chat-head b{display:block;font-weight:700;letter-spacing:-.01em}
.annoy-online{color:var(--muted);font-size:.66rem;display:flex;align-items:center;gap:6px}
.annoy-online i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px rgba(108,242,59,.2)}
.annoy-keys{margin-left:auto;color:var(--muted);font-size:.62rem;border:1px solid var(--line);padding:4px 8px;border-radius:999px}
.annoy-typing{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:.66rem;padding:8px 6px 0}
.annoy-typing i{width:6px;height:6px;border-radius:50%;background:var(--ink-dim);animation:typing 1s ease-in-out infinite}
.annoy-typing i:nth-child(2){animation-delay:.15s}.annoy-typing i:nth-child(3){animation-delay:.3s;margin-right:6px}
@keyframes typing{0%,100%{transform:translateY(0);opacity:.4}50%{transform:translateY(-4px);opacity:1}}
.annoy-lives{display:flex;gap:4px;margin:6px 0 8px}
.annoy-lives img{width:18px;height:18px;transition:opacity .3s,filter .3s,transform .3s}
.annoy-lives img.off{opacity:.25;filter:grayscale(1);transform:scale(.85)}
.annoy-card-meta em{font-style:normal;display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;background:#0a0a0a;color:var(--ink);font-size:.6rem;margin-right:6px}
.annoy-card.pressed{transform:translate(2px,3px);box-shadow:2px 2px 0 #0a0a0a}
.annoy-stamp{position:absolute;right:8%;top:10%;transform:rotate(12deg);font-family:var(--headline);font-weight:800;font-size:clamp(2rem,5vw,3.6rem);letter-spacing:-.02em;color:var(--red);border:5px solid var(--red);border-radius:12px;padding:2px 16px;opacity:.9;animation:stamp .5s var(--snap) .4s both}
.annoy-deck-label{color:var(--green)}
.annoy-cards{display:grid;gap:12px;min-height:296px;align-content:start}
.annoy-card{text-align:left;background:var(--ink);color:#0a0a0a;border:2.5px solid #0a0a0a;border-radius:18px 18px 18px 6px;padding:14px 18px 16px;display:grid;gap:6px;cursor:pointer;box-shadow:6px 6px 0 #0a0a0a;transition:transform .35s var(--ease),box-shadow .35s var(--ease);animation:cardIn .45s var(--snap) both;animation-delay:calc(var(--k,0) * .12s);transform-origin:left center}
@keyframes cardIn{0%{opacity:0;transform:translateY(10px) scale(.96)}100%{opacity:1;transform:none}}
.annoy-card .mono{color:#7a7366;font-size:.64rem}
.annoy-card b{font-weight:700;font-size:1.05rem;line-height:1.25;letter-spacing:-.01em}
.annoy-card:hover{transform:translate(-2px,-3px);box-shadow:9px 10px 0 #0a0a0a}
.annoy-card:active{transform:translate(2px,3px);box-shadow:2px 2px 0 #0a0a0a}
.annoy-hint{color:var(--muted);margin-top:auto}
.annoy-splash{position:absolute;inset:0;pointer-events:none;z-index:4;overflow:hidden}
.annoy-splash i{position:absolute;width:var(--s);height:var(--s);margin:calc(var(--s)/-2) 0 0 calc(var(--s)/-2);background:var(--red);border-radius:45% 55% 40% 60%/55% 40% 60% 45%;transform:scale(0) rotate(var(--r));animation:splat .45s var(--snap) var(--d) forwards}
.annoy-stage.snapped .annoy-tomato{animation:none}
/* finale */
.annoy-stage.prebang{animation:prebang .09s linear infinite}
@keyframes prebang{0%,100%{transform:translate(0,0)}25%{transform:translate(-5px,3px) rotate(-.4deg)}50%{transform:translate(5px,-4px)}75%{transform:translate(-4px,-3px) rotate(.4deg)}}
.annoy-stage.prebang .annoy-heat{animation:flicker .12s steps(2) infinite}
@keyframes flicker{50%{opacity:.4}}
.annoy-stage.bang{animation:bangShake .08s linear 10}
@keyframes bangShake{0%,100%{transform:translate(0,0)}25%{transform:translate(-12px,8px) rotate(-.8deg)}50%{transform:translate(10px,-10px)}75%{transform:translate(-8px,-6px) rotate(.8deg)}}
.annoy-flash{position:absolute;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:6}
.annoy-flash.on{animation:flashOut .55s ease-out forwards}
@keyframes flashOut{0%{opacity:1}30%{opacity:.9}100%{opacity:0}}
.annoy-ring{position:absolute;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;border:6px solid rgba(255,240,200,.95);box-shadow:0 0 30px rgba(255,120,30,.8),inset 0 0 20px rgba(255,120,30,.6);z-index:5;pointer-events:none;animation:ring 1.1s cubic-bezier(.1,.7,.3,1) forwards;transform:scale(0);opacity:1}
@keyframes ring{0%{transform:scale(0);opacity:1}100%{transform:scale(24);opacity:0;border-width:1px}}
.annoy-debris{position:absolute;inset:0;pointer-events:none;z-index:5;overflow:hidden}
.annoy-debris i{position:absolute;left:0;top:0;will-change:transform,opacity}
.annoy-debris i.chunk{background:radial-gradient(circle at 35% 35%,#ff5a1f,#c40000 60%,#7a0000);border-radius:46% 54% 38% 62%/55% 42% 58% 45%;box-shadow:inset -2px -3px 6px rgba(0,0,0,.35)}
.annoy-debris i.seed{background:radial-gradient(circle at 40% 40%,#fff3a0,#e0b43a);border-radius:50% 50% 50% 50%/60% 60% 40% 40%}
.annoy-debris i.smoke{background:radial-gradient(circle,rgba(60,60,60,.7),rgba(30,30,30,0) 70%);border-radius:50%}
.annoy-drip{position:absolute;top:-2%;width:var(--w);height:0;background:linear-gradient(180deg,var(--red),#b52d06);border-radius:0 0 var(--w) var(--w);animation:dripDown 1.6s cubic-bezier(.4,0,.6,1) var(--d) forwards;z-index:4}
.annoy-drip::after{content:'';position:absolute;left:50%;bottom:-4px;width:calc(var(--w)*1.4);height:calc(var(--w)*1.2);margin-left:calc(var(--w)*-.7);background:#b52d06;border-radius:50%}
@keyframes dripDown{to{height:var(--h)}}
.annoy-over{position:absolute;inset:0;z-index:7;display:grid;place-content:center;text-align:center;gap:14px;background:rgba(10,10,10,.82);backdrop-filter:blur(6px);border-radius:26px;padding:24px}
.annoy-over h3{font-family:var(--headline);font-size:clamp(2rem,5vw,4rem);font-weight:800;letter-spacing:-.02em;line-height:1}
.annoy-over p{color:var(--ink-dim)}
.annoy-over p b{color:var(--green)}
@media (max-width:900px){.annoy{grid-template-columns:1fr}.annoy-stage{min-height:440px}.annoy-bubble{max-width:70%}}

/* ---------- quotes ---------- */
.quotes{background:var(--bg2);border-top:1px solid var(--line)}
.quote-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.quote{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:28px;display:flex;flex-direction:column;gap:22px;justify-content:space-between;min-height:240px;position:relative}
.quote::before{content:'“';position:absolute;right:22px;top:2px;font-size:6rem;line-height:1;color:var(--red);opacity:.35;font-weight:800}
.quote p{font-size:1.05rem;line-height:1.45}
.quote.ph p{color:var(--muted);font-style:normal}
.quote .who{font-family:var(--mono);font-size:.72rem;color:var(--ink-dim)}
.quote .who b{color:var(--ink);display:block;font-weight:500}
@media (max-width:900px){.quote-grid{grid-template-columns:1fr}}

/* ---------- roast (slop check) ---------- */
.roast{background:var(--green);color:#0a0a0a;position:relative;overflow:hidden}
.roast::after{content:'🍅';position:absolute;left:-3vw;bottom:-9vw;font-size:30vw;line-height:1;opacity:.12;transform:rotate(12deg);pointer-events:none;filter:grayscale(1) brightness(0)}
.roast .kicker{color:#0a0a0a;opacity:.7}
.roast .sec-sub{color:#1d2a14}
.roast-grid{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:center;position:relative;z-index:1}
.roast-box{background:#fff;border:3px solid #0a0a0a;border-radius:26px;box-shadow:10px 10px 0 #0a0a0a;transform:rotate(-1.2deg);min-height:420px;display:flex;flex-direction:column;position:relative;overflow:hidden}
.roast-head{display:flex;justify-content:space-between;gap:10px;padding:12px 18px;border-bottom:3px solid #0a0a0a;background:var(--ink);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase}
.roast-q,.roast-result{padding:30px 30px 34px;display:flex;flex-direction:column;gap:18px;flex:1;justify-content:center;position:relative}
.roast-dots{display:flex;gap:6px}
.roast-dots i{width:26px;height:8px;border-radius:4px;background:rgba(10,10,10,.12);border:1.5px solid #0a0a0a}
.roast-dots i.done{background:#0a0a0a}
.roast-dots i.yes{background:var(--red)}
.roast-dots i.cur{background:var(--green)}
.roast-q p{font-family:var(--display);font-size:clamp(1.5rem,2.4vw,2.1rem);font-weight:800;letter-spacing:-.01em;line-height:1.12;min-height:3.4em;margin:0}
.roast-btns{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.roast-btn{border:2.5px solid #0a0a0a;border-radius:16px;padding:16px 14px;display:grid;gap:4px;text-align:left;cursor:pointer;box-shadow:5px 5px 0 #0a0a0a;transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.roast-btn b{font-family:var(--display);font-weight:800;font-size:1.4rem;letter-spacing:-.01em}
.roast-btn .mono{font-size:.64rem;opacity:.7}
.roast-no{background:var(--ink);color:#0a0a0a}
.roast-yes{background:var(--red);color:#fff}
.roast-btn:hover{transform:translate(-2px,-3px);box-shadow:8px 9px 0 #0a0a0a}
.roast-btn:active{transform:translate(2px,3px);box-shadow:2px 2px 0 #0a0a0a}
.roast-react{position:absolute;right:22px;top:14px;font-size:2.4rem;opacity:0;transform:scale(.4) rotate(-20deg);pointer-events:none}
.roast-react.pop{animation:reactPop .7s var(--snap) both}
@keyframes reactPop{0%{opacity:0;transform:scale(.4) rotate(-20deg)}30%{opacity:1;transform:scale(1.2) rotate(6deg)}100%{opacity:0;transform:scale(1) rotate(0) translateY(-16px)}}
.roast-stamp{align-self:flex-start;font-family:var(--headline);font-weight:800;font-size:1.2rem;letter-spacing:.04em;color:var(--red);border:3px solid var(--red);border-radius:8px;padding:2px 10px;transform:rotate(-4deg);animation:stamp .5s var(--snap) both}
.roast-result h3{font-size:clamp(2rem,4vw,3.2rem);font-weight:800;letter-spacing:-.02em;line-height:.98;color:#0a0a0a}
.roast-result p{color:#3a352e;margin:0}
.roast-meter-wrap{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;font-size:.66rem}
.roast-meter{height:14px;border-radius:8px;background:rgba(10,10,10,.08);border:2px solid #0a0a0a;overflow:hidden}
.roast-meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--green),#f2c230 55%,var(--red));transition:width 1.2s var(--ease)}
.roast-meter-val{font-weight:700}
.roast-actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;margin-top:6px}
.roast-again{color:#6d665c;text-decoration:underline}
@media (max-width:900px){.roast-grid{grid-template-columns:1fr;gap:30px}.roast-box{transform:none}.roast-q,.roast-result{padding:22px}}

/* ---------- contact ---------- */
.contact{padding:180px 0 160px;overflow:hidden;isolation:isolate}
.contact-bg{position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 20% 100%,rgba(228,61,5,.35),transparent 55%),radial-gradient(ellipse at 90% 10%,rgba(108,242,59,.12),transparent 50%)}
.contact-splash{position:absolute;top:0;right:0;bottom:0;width:55%;pointer-events:none;z-index:0}
.contact-splash .splat-anim{position:absolute;transform:translate(-50%,-50%)}
.contact .wrap{position:relative;z-index:1}
.contact .kicker{color:var(--ink-dim)}
.contact-title{font-family:var(--headline);font-size:clamp(3.2rem,11vw,11rem);line-height:.92;font-weight:800;letter-spacing:-.02em;font-variation-settings:'opsz' 96,'wdth' 82;text-transform:uppercase}
.contact-row{display:flex;align-items:center;gap:18px;margin-top:56px;flex-wrap:wrap}
.contact-mail{font-size:clamp(1.3rem,3.4vw,2.8rem);font-weight:700;letter-spacing:-.03em;border-bottom:3px solid var(--red);transition:.3s;word-break:break-all}
.contact-mail:hover{color:var(--green);border-color:var(--green)}
.copy{padding:8px 14px;border:1px solid var(--line);border-radius:999px;color:var(--ink-dim);transition:.3s}
.copy:hover{border-color:var(--green);color:var(--green)}
.contact-links{display:flex;gap:26px;margin-top:30px;color:var(--ink-dim)}
.contact-links a,.contact-links button{border-bottom:1px solid var(--line);transition:.3s}
.contact-links a:hover,.contact-links button:hover{color:var(--green);border-color:var(--green)}
.contact-unlock{margin-top:40px;display:inline-block;max-width:100%;background:var(--green);color:#0a0a0a;padding:12px 18px;border-radius:12px;animation:stamp .6s var(--snap) both;transform-origin:left}

/* ---------- footer ---------- */
.footer{display:flex;gap:24px;flex-wrap:wrap;justify-content:space-between;align-items:center;padding:26px 28px;border-top:1px solid var(--line);color:var(--muted)}
.footer b{color:var(--red)}
.footer button{color:var(--ink-dim);border-bottom:1px solid var(--line)}

/* ---------- tomato rain (easter egg) ---------- */
.rain{position:fixed;top:-60px;width:var(--s);height:var(--s);pointer-events:none;z-index:650;animation:rain var(--t) linear forwards}
@keyframes rain{to{transform:translateY(120vh) rotate(720deg)}}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
  .reveal{opacity:1;transform:none}
  .hero-title .word{transform:none}
}


/* ==========================================================
   MOBILE PASS · everything below tunes the small-screen experience
   ========================================================== */
/* floating order bar (services, mobile) */
.order-bar{position:fixed;left:12px;right:12px;bottom:12px;z-index:90;display:none;align-items:center;justify-content:space-between;gap:12px;background:var(--ink);color:#0a0a0a;border:2.5px solid #0a0a0a;border-radius:999px;padding:8px 8px 8px 18px;box-shadow:6px 6px 0 #0a0a0a;transform:translateY(120%);transition:transform .5s var(--ease)}
.order-bar.on{transform:none}
.order-bar b{color:var(--red)}
@media (max-width:1000px){.order-bar{display:flex}}

@media (max-width:900px){
  section{padding:84px 0}
  .wrap{width:calc(100% - 40px)}
  .sec-head{margin-bottom:34px}
  .sec-sub{font-size:.98rem;margin-top:14px}
  .h-big{font-size:clamp(2.2rem,11vw,3.6rem)}
  .h-huge{font-size:clamp(1.9rem,9vw,3rem)}
  .kicker{margin-bottom:12px}
  .btn-lg{padding:15px 22px;font-size:1rem}

  /* pitch */
  .slop{padding-top:calc(17.3vw + 64px)}
  .slop-lead{font-size:1rem;margin-top:22px}
  .slopgen-wrap{width:100%;max-width:none}
  .slopgen{transform:none;width:100%}
  .slopgen-out{height:150px;padding:18px 16px}
  .slopgen-logo{width:104px;height:104px}
  .slopgen-meta b{font-size:1.4rem}
  .facepalm{display:none}
  .slopgen-foot{justify-content:flex-start}
  /* the three cards become a swipe panel with dots */
  .slop-grid{display:flex;gap:14px;margin:40px -20px 0;padding:6px 20px 14px;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .slop-grid::-webkit-scrollbar{display:none}
  .slop-card{flex:0 0 84%;scroll-snap-align:center;transform:none!important;box-shadow:6px 6px 0 #0a0a0a}
  .slop-dots{display:flex;justify-content:center;gap:8px;margin:4px 0 22px}
  .slop-dots i{width:8px;height:8px;border-radius:50%;background:rgba(10,10,10,.2);border:1.5px solid #0a0a0a;transition:.3s}
  .slop-dots i.on{background:#0a0a0a;width:26px;border-radius:6px}
  /* one panel: segmented switch + sliding track; VS stamps in on each flip */
  .slop-compare{display:block;margin-top:18px}
  .cmp-switch{position:relative;display:grid;grid-template-columns:1fr 1fr;background:#fff;border:2.5px solid #0a0a0a;border-radius:999px;padding:4px;margin-bottom:14px;z-index:3;box-shadow:5px 5px 0 #0a0a0a}
  .cmp-switch button{position:relative;z-index:1;font-family:var(--mono);font-size:.7rem;letter-spacing:.06em;text-transform:uppercase;padding:11px 6px;color:#0a0a0a;border-radius:999px;transition:color .3s}
  .cmp-switch button.on{color:#fff}
  .cmp-switch i{position:absolute;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:999px;background:#0a0a0a;transition:transform .45s var(--snap),background .3s}
  .cmp-switch.side1 i{transform:translateX(100%);background:var(--green-deep)}
  .cmp-track{display:flex;width:200%;transition:transform .6s var(--snap)}
  .cmp-track .cmp{flex:0 0 50%;width:50%}
  .cmp-track.side1{transform:translateX(-50%)}
  .slop-compare{overflow:hidden;border-radius:20px}
  .cmp{padding:22px}
  .cmp-badge{font-size:.58rem;left:10px;bottom:10px}
  .cmp-vs{top:48%;opacity:0}
  .cmp-vs i{font-size:3.4rem}
  .slop-compare.in .cmp-vs{animation:none}
  .slop-compare.in .cmp-vs i{animation:none}
  .cmp-vs.flip{animation:vsFlip 1.1s var(--snap) both}
  @keyframes vsFlip{0%{opacity:0;transform:translate(-50%,-50%) scale(3)}25%{opacity:1;transform:translate(-50%,-50%) scale(1)}75%{opacity:1;transform:translate(-50%,-50%) scale(1)}100%{opacity:0;transform:translate(-50%,-50%) scale(.8)}}

  /* fruit or vegetable */
  .fov{padding:110px 0 80px;clip-path:polygon(0 0,100% 7vw,100% 100%,0 100%);margin-top:-7vw}
  .fov-title{line-height:1.1}
  .fov-t2{display:inline-block;color:#ff6a3d;font-size:1.3em;margin-top:.3em;transform:rotate(-3deg);font-variation-settings:'opsz' 96,'wdth' 85}
  .fov-buttons{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:34px}
  .fov-btn{padding:22px 10px 18px;border-radius:20px;gap:4px;box-shadow:6px 6px 0 #0a0a0a}
  .fov-emoji{font-size:2.6rem;margin-bottom:4px}
  .fov-big{font-size:clamp(1.2rem,6.2vw,1.9rem);letter-spacing:0;max-width:100%;text-shadow:none;-webkit-text-stroke:1.5px #0a0a0a}
  .fov-btn{min-width:0}
  .fov-btn .mono{display:none}
  .fov-badge{top:-12px;right:10px;font-size:.58rem;padding:4px 7px}
  .fov-badge-warn{left:10px;right:auto}
  .fov-result{margin-top:30px}
  .fov-count{margin-top:30px;font-size:.68rem}

  /* work */
  .project-meta{flex-direction:column;align-items:flex-start;gap:10px}
  .project-tags{justify-content:flex-start}
  .project-meta h3{font-size:1.3rem}

  /* bonus */
  .reel-card-title{font-size:clamp(1.7rem,8vw,2.6rem)}
  .reel-sub{font-size:.9rem}

  /* services */
  .order{gap:28px}
  .menu-item{padding:20px 0}
  .menu-name{font-size:1.45rem}
  .menu-desc{font-size:.92rem;margin-top:8px}
  .menu-deliver{display:none}
  .how{margin-top:40px}

  /* about */
  .about-grid{gap:10px}
  .about-side{gap:10px}
  .about-lottie-wrap{width:132%;margin-left:-16%;margin-top:-14px}
  .about-caption{font-size:.62rem}
  .stats{grid-template-columns:1fr 1fr}

  /* game: stage stays on screen while you tap the cards below */
  .annoy{gap:16px}
  .annoy-stage{position:sticky;top:64px;z-index:3;min-height:0;height:min(52svh,420px);padding:10px 14px 74px;border-radius:22px}
  .annoy-figure{width:min(80%,330px)}
  .annoy-bubble{max-width:70%;font-size:.85rem;padding:10px 12px}
  .annoy-bubble-client{display:none}   /* the client's line is the card you just tapped; no need to repeat it */
  .annoy-bubble-tomato{right:12px;bottom:86px;font-size:.9rem}
  .annoy-hud{left:12px;right:12px;bottom:12px;gap:10px}
  .annoy-lives img{width:15px;height:15px}
  .annoy-score{font-size:.7rem}
  .annoy-deck{padding:14px;border-radius:20px}
  .annoy-keys{display:none}
  .annoy-cards{min-height:272px}
  .annoy-card{padding:12px 14px 14px}
  .annoy-card b{font-size:.98rem}
  .annoy-hint{font-size:.66rem}
  .annoy-over{border-radius:22px}
  .annoy-over h3{font-size:clamp(1.7rem,8vw,2.6rem)}

  /* roast */
  .roast-box{min-height:0}
  .roast-q p{font-size:1.35rem;min-height:4.6em}
  .roast-btn b{font-size:1.2rem}

  /* contact */
  .contact{padding:120px 0 110px}
  .contact-title{font-size:clamp(2.8rem,14vw,4.6rem)}
  .contact-splash{width:70%}
  .contact-mail{font-size:clamp(1.1rem,6vw,1.6rem)}
  .contact-links{flex-wrap:wrap;gap:14px 20px}
  .contact-unlock{font-size:.72rem;display:block;width:100%;transform:none;animation:none;border-radius:14px;padding:14px 16px;line-height:1.5;margin-top:30px;text-align:center}
  .contact .kicker{margin-bottom:18px}

  footer.footer{flex-direction:column;align-items:center;text-align:center;gap:8px;padding:28px 20px 36px;font-size:.66rem;line-height:1.5}
  footer.footer button{margin-top:10px;border:1px solid var(--line);border-radius:999px;padding:10px 18px}
}
@media (pointer:coarse){
  .project.has-video .project-media::after{display:none}
  .menu-item:hover{padding-left:0}
}
