/* SnarkStrategy toy layer: Norris letter flips, nav yo-yo, eyes, throwable plates, gumball vault, CRT boot, ticker */
:root{--play-accent:#5dff8f;--play-ink:#d6ffe4;--play-bg:#050806;--play-tick:30px;--play-t:28ms}
html:not(.dark){--play-accent:#17a34a;--play-ink:#07130b;--play-bg:#f1f7f2}

/* ---------- Norris flip ---------- */
.norris{display:inline-block;overflow:hidden;vertical-align:bottom;padding:.12em 0;margin:-.12em 0;white-space:pre;line-height:inherit}
.norris>span{position:relative;display:inline;visibility:hidden}
.norris>span::before,.norris>span::after{position:absolute;left:0;top:0;visibility:visible;content:attr(data-char);color:inherit;
  transition:transform calc(var(--play-t)*10) cubic-bezier(.2,.8,.2,1),opacity calc(var(--play-t)*10),color calc(var(--play-t)*10);
  transition-delay:calc(var(--i)*var(--play-t))}
.norris>span::after{content:attr(data-alt);transform:translateY(1.15em);opacity:0}
.norris.is-on>span::before,a:hover>.norris>span::before,button:hover>.norris>span::before,h1:hover .norris>span::before,h2:hover .norris>span::before,[data-slot=badge]:hover>.norris>span::before,nav p:hover>.norris>span::before{transform:translateY(-1.15em);opacity:0;color:var(--play-accent)}
.norris.is-on>span::after,a:hover>.norris>span::after,button:hover>.norris>span::after,h1:hover .norris>span::after,h2:hover .norris>span::after,[data-slot=badge]:hover>.norris>span::after,nav p:hover>.norris>span::after{transform:translateY(0);opacity:1;color:var(--play-accent)}
button.bg-primary>.norris>span::before,button.bg-primary>.norris>span::after{--play-accent:#031a0a}
html:not(.dark) button.bg-primary>.norris>span::before,html:not(.dark) button.bg-primary>.norris>span::after{--play-accent:#5dff8f}

/* ---------- ticker ---------- */
#play-ticker{position:fixed;top:0;left:0;right:0;height:var(--play-tick);z-index:60;overflow:hidden;background:var(--play-bg);border-bottom:1px solid var(--play-accent);
  font:10px/var(--play-tick) "JetBrains Mono",ui-monospace,monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--play-ink);white-space:nowrap}
#play-ticker .track{display:inline-flex;align-items:center;gap:0;animation:play-scroll var(--play-scroll,60s) linear infinite,play-bob 2.6s ease-in-out infinite;will-change:transform}
#play-ticker:hover .track{animation-play-state:paused}
#play-ticker .item{display:inline-flex;align-items:center;gap:10px;padding:0 28px}
#play-ticker .tag{color:var(--play-accent);border:1px solid var(--play-accent);padding:1px 5px;line-height:14px;border-radius:2px}
#play-ticker .tag.sim{color:#8fcfa8;border-color:#3f7a56}
#play-ticker .tag.live{background:var(--play-accent);color:#031a0a}
#play-ticker .dot{width:6px;height:6px;background:var(--play-accent);box-shadow:0 0 8px var(--play-accent);animation:play-blink 1.2s steps(2) infinite}
@keyframes play-scroll{to{transform:translateX(-50%)}}
@keyframes play-bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-2px) rotate(-1.2deg)}}
@keyframes play-blink{50%{opacity:.2}}
body.has-ticker nav.fixed{top:calc(1rem + var(--play-tick))!important}
@media (max-width:767px){body.has-ticker nav.fixed{top:var(--play-tick)!important}#play-ticker{font-size:9px}}
body.has-ticker{padding-top:var(--play-tick)}

/* ---------- nav yo-yo ---------- */
#play-yoyo{position:fixed;left:clamp(440px,calc(50% - 200px),50%);top:calc(var(--play-tick) + 4.6rem);z-index:39;pointer-events:none;width:26px;transform-origin:top center;transform:rotate(var(--yo-ang,0deg))}
#play-yoyo .string{width:2px;height:var(--yo-len,0px);margin:0 auto;background:linear-gradient(var(--play-accent),var(--play-ink));opacity:.85}
#play-yoyo .disc{pointer-events:auto;cursor:grab;touch-action:none;width:26px;height:26px;border-radius:50%;margin-top:-1px;background:radial-gradient(circle at 35% 30%,#3fa565,#0a1f12 65%);border:2px solid var(--play-accent);
  box-shadow:0 0 16px rgba(93,255,143,.45),inset -4px -6px 10px rgba(0,0,0,.6);transform:rotate(var(--yo-spin,0deg));position:relative;image-rendering:pixelated}
#play-yoyo .disc::before{content:"";position:absolute;inset:8px;border-radius:50%;border:2px dashed rgba(214,255,228,.55)}
#play-yoyo .disc::after{content:"";position:absolute;left:11px;top:11px;width:4px;height:4px;background:var(--play-ink);border-radius:50%}
#play-yoyo.held .disc{cursor:grabbing;box-shadow:0 0 26px rgba(93,255,143,.7),inset -4px -6px 10px rgba(0,0,0,.6)}
@media (max-width:767px){#play-yoyo{left:auto;right:74px;width:18px}#play-yoyo .disc{width:18px;height:18px}#play-yoyo .disc::before{inset:5px}#play-yoyo .disc::after{left:7px;top:7px;width:3px;height:3px}}

/* ---------- eyes ---------- */
.play-eyed{position:relative}
.play-eyes{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;pointer-events:none}
.play-eyed>img[src*="/snarks/"]{opacity:0}

/* ---------- throwable plates ---------- */
#play-layer{position:fixed;inset:0;z-index:45;pointer-events:none;overflow:hidden}
#play-layer .flying{position:absolute;left:0;top:0;pointer-events:auto;cursor:grabbing;will-change:transform;filter:none!important;opacity:1;transition:opacity .5s}
#play-layer .flying.fade{opacity:0}
#play-layer .flying.wobble{animation:play-wobble .6s cubic-bezier(.36,.07,.19,.97)}
@keyframes play-wobble{0%,100%{rotate:0deg}20%{rotate:-9deg}40%{rotate:8deg}60%{rotate:-5deg}80%{rotate:3deg}}
#play-layer .flying>div{box-shadow:0 20px 50px rgba(0,0,0,.6),0 0 24px rgba(93,255,143,.25)}

/* ---------- gumball vault ---------- */
#play-vault{display:flex;gap:28px;align-items:center;margin:4px 0 22px;flex-wrap:wrap}
#play-vault svg{width:150px;height:190px;flex:none;image-rendering:pixelated;shape-rendering:crispEdges;filter:drop-shadow(0 0 14px rgba(93,255,143,.18))}
#play-vault .info{flex:1;min-width:220px;font-size:13px;line-height:1.7}
#play-vault .info b{color:var(--play-accent);font-weight:600}
#play-vault .feed{display:inline-flex;align-items:center;gap:8px;margin-top:6px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--play-accent)}
#play-vault .feed .arrow{display:inline-block;animation:play-nudge 1s ease-in-out infinite}
@keyframes play-nudge{50%{transform:translateX(5px)}}
#play-vault button.copy{font:inherit;font-size:11px;letter-spacing:.12em;text-transform:uppercase;background:none;border:1px solid var(--play-accent);color:var(--play-accent);padding:3px 8px;border-radius:2px;cursor:pointer}
#play-vault button.copy:hover{background:var(--play-accent);color:#031a0a}
#play-vault .coin{animation:play-drop .5s cubic-bezier(.3,1.6,.5,1) both;transform-origin:center}
@keyframes play-drop{from{transform:translateY(-60px);opacity:0}to{transform:none;opacity:1}}
#play-vault.full .dome{animation:play-clunk .5s ease-in-out 3}
@keyframes play-clunk{0%,100%{transform:none}25%{transform:translate(-2px,1px)}75%{transform:translate(2px,-1px)}}
#play-confetti{position:fixed;inset:0;z-index:70;pointer-events:none}

/* ---------- sound toggle ---------- */
#play-snd{width:30px;height:30px;border:1px solid var(--border,#1b4630);background:transparent;color:var(--play-ink);border-radius:4px!important;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;margin-left:8px;opacity:.75}
#play-snd:hover,#play-snd[aria-pressed=true]{opacity:1;border-color:var(--play-accent);color:var(--play-accent);box-shadow:0 0 10px rgba(93,255,143,.25)}
#play-snd svg{width:14px;height:14px}

/* ---------- CRT boot ---------- */
#play-boot{position:fixed;inset:0;z-index:99999;background:#000;color:#5dff8f;font:13px/1.7 "JetBrains Mono",ui-monospace,monospace;letter-spacing:.06em;display:flex;align-items:flex-start;padding:14vh 8vw;overflow:hidden}
#play-boot::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(to bottom,rgba(0,0,0,0) 0 2px,rgba(0,0,0,.25) 3px 4px)}
#play-boot .beam{position:absolute;left:0;right:0;top:50%;height:2px;background:#fff;box-shadow:0 0 30px 6px #5dff8f;animation:play-beam .55s ease-out forwards}
@keyframes play-beam{0%{transform:scaleX(0);opacity:1}40%{transform:scaleX(1);opacity:1}100%{transform:scaleX(1) scaleY(400);opacity:0}}
#play-boot pre{margin:0;white-space:pre-wrap;opacity:0;animation:play-fadein .2s .45s forwards;text-shadow:0 0 8px rgba(93,255,143,.6)}
#play-boot pre::after{content:"_";animation:play-blink .8s steps(2) infinite}
@keyframes play-fadein{to{opacity:1}}
#play-boot.off{animation:play-off .35s ease-in forwards}
@keyframes play-off{to{opacity:0;transform:scaleY(.005)}}

/* ---------- hidden yo-yo (type "yoyo") ---------- */
body.play-bounce{animation:play-bounce 1.1s cubic-bezier(.34,1.56,.64,1)}
@keyframes play-bounce{0%{transform:translateY(0)}30%{transform:translateY(38vh)}60%{transform:translateY(-4vh)}80%{transform:translateY(1.5vh)}100%{transform:translateY(0)}}

@media (prefers-reduced-motion:reduce){
  .norris>span::before,.norris>span::after{transition:none}
  #play-ticker .track,#play-ticker .item,#play-ticker .dot,#play-vault .feed .arrow,#play-vault .coin{animation:none}
  #play-yoyo,#play-boot{display:none}
  body.play-bounce{animation:none}
}

/* ---------- where the rewards go ---------- */
#fees [data-chart],#fees p.text-pretty+*{display:none}
#play-rewards{width:100%;max-width:1100px;margin:8px auto 0;padding:0 16px}
#play-rewards .stage{position:relative;width:100%;image-rendering:pixelated}
#play-rewards canvas{position:absolute;left:0;top:0;image-rendering:pixelated}
#play-rewards .labels{position:absolute;inset:0;pointer-events:none}
#play-rewards .lab{position:absolute;display:flex;align-items:center;justify-content:center;text-align:center;padding:6px}
#play-rewards .plate{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 10px;background:var(--play-bg);border:1px solid var(--play-accent);box-shadow:0 0 14px rgba(93,255,143,.25)}
#play-rewards .lab b{font-size:clamp(11px,1.5vw,16px);letter-spacing:.16em;text-transform:uppercase;color:var(--play-ink);font-weight:700}
#play-rewards .lab span{font-size:clamp(9px,1.1vw,12px);letter-spacing:.06em;color:var(--play-ink);opacity:.85}
#play-rewards .stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:18px}
#play-rewards .stat{border:1px solid var(--border,#1b4630);padding:14px 16px;display:flex;flex-direction:column;gap:2px;background:color-mix(in srgb,var(--play-bg) 70%,transparent);backdrop-filter:blur(12px)}
#play-rewards .stat b{font-size:28px;color:var(--play-accent);font-weight:700;letter-spacing:-.03em}
#play-rewards .stat span{font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.8}
#play-rewards .launch{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:18px 0 6px}
#play-rewards .chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border,#1b4630);padding:5px 10px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--play-ink);opacity:.85;border-radius:2px}
#play-rewards .chip.link{border-color:var(--play-accent);color:var(--play-accent);opacity:1;text-decoration:none}
#play-rewards .chip.link:hover{background:var(--play-accent);color:#031a0a}
#play-rewards .chip svg{width:12px;height:12px}
#play-x{display:inline-flex;align-items:center;margin-left:4px}
#play-x svg{width:14px;height:14px}
@media (max-width:767px){#play-rewards .stats{grid-template-columns:1fr}#play-rewards .stat b{font-size:22px}}
@media (prefers-reduced-motion:reduce){#play-rewards .flow{opacity:.6}}

/* ---------- performance: no backdrop blur over the moving field, milder plate blur, no stacked swing layers ---------- */
[data-slot=card].backdrop-blur-xl,#yoyo .backdrop-blur-2xl,.backdrop-blur-2xl{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background-color:color-mix(in srgb,var(--card) 88%,transparent)!important}
div.fixed.inset-0.pointer-events-none.z-0>div.absolute{filter:blur(1px)!important;will-change:transform}
div.fixed.inset-0.pointer-events-none.z-0>div.absolute:nth-child(4n+3){display:none}
.mix-blend-exclusion.pointer-events-none.h-screen{display:none!important}
/* ---------- dithered pendulum ---------- */
#yoyo{position:relative}
#yoyo>*:not(#play-pendulum){position:relative;z-index:1}
#play-pendulum{position:absolute;left:calc(50% + 24vw);top:-6rem;width:4px;height:64vh;z-index:0;pointer-events:none;transform-origin:top center;animation:play-swing 7s cubic-bezier(.45,0,.55,1) infinite;will-change:transform}
#play-pendulum .string{position:absolute;left:0;top:0;width:4px;height:100%;background:linear-gradient(var(--play-accent),transparent 92%);opacity:.35}
#play-pendulum .sphere{position:absolute;left:50%;top:calc(100% - 336px);width:336px;height:336px;margin-left:-168px;background-size:100% 100%;background-repeat:no-repeat;image-rendering:pixelated;opacity:.5;filter:drop-shadow(0 0 30px rgba(93,255,143,.18));animation:play-counter 7s cubic-bezier(.45,0,.55,1) infinite;transform-origin:50% 0}
@keyframes play-swing{0%,100%{transform:rotate(9deg)}50%{transform:rotate(-9deg)}}
@keyframes play-counter{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@media (max-width:767px){#play-pendulum{height:46vh;left:calc(50% + 22vw)}#play-pendulum .sphere{opacity:.4}#play-pendulum .sphere{width:200px;height:200px;margin-left:-100px;top:calc(100% - 200px)}}
/* ---------- dithered buttons ---------- */
button.bg-primary,button[data-slot=button]{position:relative;isolation:isolate}
button.bg-primary::before,button[data-slot=button]::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;border-radius:inherit;opacity:.28;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4' shape-rendering='crispEdges'%3E%3Crect x='0' y='0' width='1' height='1' fill='%23000'/%3E%3Crect x='2' y='2' width='1' height='1' fill='%23000'/%3E%3Crect x='1' y='3' width='1' height='1' fill='%23000' opacity='.5'/%3E%3Crect x='3' y='1' width='1' height='1' fill='%23000' opacity='.5'/%3E%3C/svg%3E");
  mask-image:linear-gradient(180deg,rgba(0,0,0,.15),rgba(0,0,0,1))}
button.bg-primary:hover::before,button[data-slot=button]:hover::before{opacity:.42}
button.bg-primary>*,button[data-slot=button]>*{position:relative;z-index:1}
/* ---------- treasury card ---------- */
#play-treasury .tre{display:flex;gap:28px;align-items:flex-end;flex-wrap:wrap;margin-bottom:12px}
#play-treasury .big b{display:block;font-size:40px;color:var(--play-accent);letter-spacing:-.03em;line-height:1}
#play-treasury .big span{font-size:11px;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
#play-treasury .kv{display:grid;grid-template-columns:auto auto;gap:2px 14px;font-size:12px;letter-spacing:.06em}
#play-treasury .kv span{opacity:.7;text-transform:uppercase;letter-spacing:.14em;font-size:10px;align-self:center}
#play-treasury .addr{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:6px 0 10px;font-size:12px}
#play-treasury code{border:1px solid var(--border,#1b4630);padding:3px 8px}
#play-treasury .copy{font:inherit;font-size:11px;letter-spacing:.12em;text-transform:uppercase;background:none;border:1px solid var(--play-accent);color:var(--play-accent);padding:3px 8px;border-radius:2px;cursor:pointer;text-decoration:none}
#play-treasury .copy:hover{background:var(--play-accent);color:#031a0a}
#play-treasury .moves{list-style:none;margin:0;padding:0;font-size:12px}
#play-treasury .moves li{display:grid;grid-template-columns:130px 1fr auto;gap:10px;padding:6px 0;border-top:1px solid var(--border,#1b4630)}
#play-treasury .moves .when{opacity:.7}#play-treasury .moves a{color:var(--play-ink);text-decoration:underline dotted}
#play-treasury .moves b.in{color:var(--play-accent)}#play-treasury .moves b.out{color:#ff8a8a}
#play-treasury .empty,#play-treasury .note{font-size:12px;opacity:.7;line-height:1.6;margin:8px 0 0}

/* ---------- no simulated prices ---------- */
div.mt-1.text-center:has(> span.text-primary){display:none}
#intro h3.text-3xl ~ p{display:none}
#content .flex.flex-col.gap-1.text-sm{display:none}
#content p.text-sm.text-muted-foreground:has(> span.font-medium.text-primary){display:none}
