/* ---- Site footer, legal pages and cookie banner (legal.jsx).
   rngidle.fun only: none of these render on websim. */
@property --sf-glow{syntax:'<color>';inherits:true;initial-value:#7adbbc}
.site-footer{--sf-glow:#7adbbc;position:relative;isolation:isolate;width:100%;margin-top:56px;overflow:hidden;transition:--sf-glow 1.2s ease;border-top:1px solid var(--outline-subtle);background:linear-gradient(var(--site-bg),color-mix(in srgb,var(--site-bg) 92%,#000));color:var(--prose-3);font:400 14px/1.6 var(--font-ui);text-transform:none}
.sf-inner{position:relative;z-index:1;width:min(1120px,100%);margin:0 auto;padding:56px 24px 28px}
.sf-top{display:flex;flex-wrap:wrap;justify-content:space-between;gap:40px 48px}
.sf-brand{max-width:300px}
.sf-logo{display:inline-flex;align-items:baseline;color:var(--prose);font:800 22px/1 var(--font-ui);letter-spacing:-.01em;text-decoration:none}
.sf-brand p{margin:16px 0 18px;color:var(--prose-3);font-size:14px;line-height:1.6}
.sf-social{display:flex;gap:6px}
.sf-social a{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;color:var(--prose-3);transition:background-color .15s,color .15s}
.sf-social a:hover{background:var(--surface-raised);color:var(--prose)}
.sf-cols{display:grid;grid-template-columns:repeat(3,minmax(120px,auto));gap:32px 56px}
.sf-cols h3{margin:0 0 14px;color:var(--prose);font:600 14px/1.3 var(--font-ui);letter-spacing:0;text-transform:none}
.sf-cols ul{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.sf-cols a{color:var(--prose-3);font-size:14px;text-decoration:none;transition:color .15s}
.sf-cols a:hover{color:var(--prose)}
.sf-bottom{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px;margin-top:52px}
.sf-bottom p{margin:0;font-size:13.5px}
.sf-pills{display:flex;flex-wrap:wrap;gap:8px}
.sf-pills a,.sf-pills button{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 13px;border:1px solid var(--outline-subtle);border-radius:999px;background:var(--surface);color:var(--prose-2);font:600 12.5px/1 var(--font-ui);text-decoration:none;text-transform:none;cursor:pointer;transition:background-color .15s,color .15s}
.sf-pills a:hover,.sf-pills button:hover{background:var(--surface-raised);color:var(--prose)}
.sf-pills .is-discord{border-color:transparent;background:#5865f2;color:#fff}
.sf-pills .is-discord:hover{background:#4752c4;color:#fff}
.site-footer :focus-visible{outline:2px solid var(--prose);outline-offset:3px;border-radius:6px}

/* The stage: a giant number rolls, its rarity colours the glow, the characters
   live on it. The glow belongs to the whole footer (nothing cuts it). */
.sf-glow{position:absolute;z-index:0;left:-15%;right:-15%;bottom:-35%;height:80%;pointer-events:none;background:radial-gradient(50% 55% at 50% 100%,var(--sf-glow),color-mix(in srgb,var(--sf-glow) 40%,transparent) 50%,transparent 78%),radial-gradient(85% 35% at 50% 100%,color-mix(in srgb,var(--sf-glow) 50%,transparent),transparent 75%);filter:blur(28px);opacity:.9}
.sf-stage{--sf-size:clamp(96px,17vw,240px);--sc:2.2;position:relative;z-index:1;height:calc(var(--sf-size) * .95)}
.sf-number{position:absolute;left:50%;bottom:calc(var(--sf-size) * -.2);display:flex;translate:-50% 0;color:transparent;font:700 var(--sf-size)/1 var(--font-roll,ui-monospace),monospace;letter-spacing:-.04em}
.sf-col{display:block;height:1em;overflow:hidden}
.sf-strip{display:block;width:1ch;word-break:break-all;line-height:1;background:linear-gradient(#fff 0%,color-mix(in srgb,var(--sf-glow) 70%,#fff) 45%,transparent 95%) 0 0/100% 1em repeat-y;-webkit-background-clip:text;background-clip:text;transform:translateY(calc(var(--d,7) * -1em));transition:transform 1.15s cubic-bezier(.2,.85,.25,1.08);transition-delay:calc(var(--i) * 70ms)}
.sf-sparks i{position:absolute;left:var(--x);bottom:-6px;width:4px;height:4px;border-radius:50%;background:color-mix(in srgb,var(--sf-glow) 60%,#fff);box-shadow:0 0 8px var(--sf-glow);opacity:0;transform:scale(var(--s))}
.sf-stage.is-live .sf-sparks i{animation:sf-spark 4s linear infinite;animation-delay:var(--d)}
@keyframes sf-spark{0%{opacity:0;translate:0 0}15%{opacity:.9}100%{opacity:0;translate:10px calc(var(--sf-size) * -1.2)}}
.sf-mascots{position:absolute;left:50%;bottom:calc(var(--sf-size) * .6);width:calc(var(--sf-size) * 4.1);height:0;translate:-50% 0}
.sf-mascot{position:absolute;left:var(--x);bottom:0;width:calc(26px * var(--sc));height:calc(26px * var(--sc));translate:-50% 0}
.sf-body{position:absolute;left:50%;bottom:0;width:26px;height:26px;margin-left:-13px;scale:var(--sc);transform-origin:50% 100%}
.sf-shadow{position:absolute;left:50%;bottom:-4px;width:60%;height:8px;translate:-50% 0;border-radius:50%;background:#000;opacity:.35;filter:blur(2px)}
/* Each character has its own idle motion… */
.sf-stage.is-live .is-glim .sf-body{animation:sf-hop 2.2s cubic-bezier(.3,.6,.4,1) infinite}
.sf-stage.is-live .is-noma .sf-body{animation:sf-float 3.2s ease-in-out infinite}
.sf-stage.is-live .is-grim .sf-body{animation:sf-sway 2.8s ease-in-out infinite}
.sf-stage.is-live .is-mira .sf-body{animation:sf-bounce 1.5s ease-in-out infinite}
@keyframes sf-hop{0%,58%,100%{transform:none}66%{transform:scale(1.14,.84)}78%{transform:translateY(-10px) scale(.92,1.1)}90%{transform:scale(1.08,.92)}}
@keyframes sf-float{0%,100%{transform:translateY(0) rotate(-5deg)}50%{transform:translateY(-7px) rotate(5deg)}}
@keyframes sf-sway{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg) translateY(-2px)}}
@keyframes sf-bounce{0%,100%{transform:translateY(0) scale(1.04,.96)}50%{transform:translateY(-5px) scale(.97,1.03)}}
/* …a trick now and then… */
.sf-stage.is-live .sf-mascot.do-jump .sf-body{animation:sf-jump .9s cubic-bezier(.3,1.5,.5,1)}
.sf-stage.is-live .sf-mascot.do-flip .sf-body{animation:sf-flip .95s cubic-bezier(.4,0,.2,1)}
.sf-stage.is-live .sf-mascot.do-wiggle .sf-body{animation:sf-wiggle .7s ease-in-out}
.sf-stage.is-live .sf-mascot.do-spin .sf-body{animation:sf-spin .8s cubic-bezier(.4,0,.2,1)}
@keyframes sf-jump{30%{transform:translateY(-22px) scale(.9,1.12)}60%{transform:scale(1.14,.86)}80%{transform:translateY(-5px)}}
@keyframes sf-flip{40%{transform:translateY(-20px) rotate(180deg)}80%{transform:rotate(360deg)}100%{transform:rotate(360deg)}}
@keyframes sf-wiggle{20%{transform:rotate(-16deg)}40%{transform:rotate(13deg)}60%{transform:rotate(-9deg)}80%{transform:rotate(5deg)}}
@keyframes sf-spin{50%{transform:translateY(-9px) scaleX(-1)}}
/* …and they all cheer on a rare roll. */
.sf-stage.is-rare.is-live .sf-body{animation:sf-cheer .7s cubic-bezier(.3,1.6,.5,1) 2;animation-delay:calc(var(--i) * 90ms + .9s)}
@keyframes sf-cheer{40%{transform:translateY(-24px) rotate(-10deg)}70%{transform:translateY(2px) rotate(5deg)}}
.sf-bubble{position:absolute;left:50%;bottom:calc(100% + 12px);z-index:3;width:max-content;max-width:190px;padding:7px 11px;border-radius:14px;background:#fff;color:#16171c;font:650 12px/1.35 var(--font-ui);text-align:center;text-transform:none;translate:-50% 0;box-shadow:0 8px 24px #0007;transform-origin:50% 100%;animation:sf-say .38s cubic-bezier(.18,.89,.32,1.25) both}
.sf-bubble::after{content:"";position:absolute;left:50%;top:100%;width:10px;height:10px;margin:-5px 0 0 -5px;background:#fff;rotate:45deg;border-radius:0 0 3px 0}
.sf-bubble.is-left{left:auto;right:-4px;translate:0 0;transform-origin:90% 100%}
.sf-bubble.is-left::after{left:auto;right:18px}
@keyframes sf-say{from{opacity:0;transform:translateY(8px) scale(.6)}}
.sf-tier{position:absolute;right:24px;bottom:16px;padding:4px 10px;border-radius:999px;background:color-mix(in srgb,var(--sf-glow) 22%,#0008);color:#fff;font:700 11px/1.3 var(--font-ui);letter-spacing:.08em;text-transform:uppercase;animation:sf-tag .5s ease-out both}
@keyframes sf-tag{from{opacity:0;translate:0 6px}}
@media (prefers-reduced-motion:reduce){.sf-strip{transition:none}.sf-stage .sf-body,.sf-stage .sf-sparks i,.sf-tier,.sf-bubble{animation:none!important}}
html.perf-mode .sf-stage .sf-body,html.perf-mode .sf-stage .sf-sparks i{animation:none!important}

/* Legal pages: a wide title, tabs, numbered clauses, and "On this page". */
.legal-page{flex:1;min-height:0;overflow-y:auto;text-transform:none;scroll-behavior:smooth}
.legal-wrap{width:min(1200px,100%);margin:0 auto;padding:56px 32px 0}
.legal-head h1{margin:0;color:var(--prose);font:700 clamp(34px,5vw,56px)/1.08 var(--font-ui);letter-spacing:-.02em;text-transform:none}
.legal-updated{margin:14px 0 26px;color:var(--prose-3);font-size:15px}
.legal-tabs{display:flex;flex-wrap:wrap;gap:8px}
.legal-tabs a{padding:9px 18px;border-radius:999px;background:var(--surface);color:var(--prose-2);font:500 15px/1.2 var(--font-ui);text-decoration:none;transition:background-color .15s,color .15s}
.legal-tabs a:hover{background:var(--surface-raised);color:var(--prose)}
.legal-tabs a[aria-current=page]{background:var(--prose);color:var(--site-bg)}
.legal-grid{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:72px;margin-top:56px}
.legal-doc{max-width:760px;color:var(--prose-2);font:400 16px/1.75 var(--font-ui)}
.legal-section{scroll-margin-top:24px;padding-bottom:40px}
.legal-section h2{display:grid;grid-template-columns:56px minmax(0,1fr);align-items:baseline;margin:0 0 18px;color:var(--prose);font:600 22px/1.3 var(--font-ui);letter-spacing:-.01em;text-transform:none}
.legal-section h2 span{color:var(--prose-3);font-weight:500}
.legal-sub{display:grid;grid-template-columns:56px 52px minmax(0,1fr);margin:0 0 16px}
.legal-sub .legal-num{grid-column:2;color:var(--prose-3);font-size:15px;font-variant-numeric:tabular-nums;line-height:1.75}
.legal-sub p{grid-column:3;margin:0}
.legal-sub p b{color:var(--prose);font-weight:650}
.legal-doc a,.legal-inline{color:var(--prose);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--prose) 40%,transparent);text-underline-offset:3px}
.legal-doc a:hover,.legal-inline:hover{text-decoration-color:var(--prose)}
.legal-inline{padding:0;font:inherit;cursor:pointer}
.legal-toc{position:sticky;top:24px;align-self:start;max-height:calc(100vh - 140px);overflow-y:auto;scrollbar-width:none}
.legal-toc h3{margin:0 0 14px;color:var(--prose-3);font:600 12.5px/1.3 var(--font-ui);letter-spacing:.12em;text-transform:uppercase}
.legal-toc ol{margin:0;padding:0;list-style:none;border-left:1px solid var(--outline-subtle)}
.legal-toc button{display:grid;grid-template-columns:30px minmax(0,1fr);width:100%;margin-left:-1px;padding:7px 0 7px 16px;border-left:2px solid transparent;color:var(--prose-3);font:500 14px/1.45 var(--font-ui);text-align:left;text-transform:none;cursor:pointer;transition:color .15s,border-color .15s}
.legal-toc button:hover{color:var(--prose-2)}
.legal-toc button[aria-current=true]{border-left-color:var(--prose);color:var(--prose)}
.legal-toc button span{color:var(--prose-3);font-variant-numeric:tabular-nums}
.legal-page .site-footer{margin-top:24px}

/* Cookie banner */
.cookie-banner{position:fixed;left:16px;bottom:16px;z-index:2147482500;display:grid;gap:10px;width:min(420px,calc(100vw - 32px));padding:16px 18px;border:1px solid var(--outline);border-radius:16px;background:var(--surface);color:var(--prose-2);box-shadow:0 18px 50px #0007;font:400 13px/1.55 var(--font-ui);text-transform:none;animation:cookie-in .3s cubic-bezier(.2,.8,.3,1) both}
.cookie-banner h2{margin:0;color:var(--prose);font:750 15px/1.3 var(--font-ui);text-transform:none;letter-spacing:0}
.cookie-banner p{margin:0}
.cookie-banner p a{color:var(--prose);text-decoration:underline}
.cookie-choices{display:grid;gap:2px;padding:4px 0;border-top:1px solid var(--outline-subtle);border-bottom:1px solid var(--outline-subtle)}
.cookie-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0}
.cookie-toggle b{display:block;color:var(--prose);font-size:13px;font-weight:650}
.cookie-toggle small{display:block;color:var(--prose-3);font-size:11.5px}
.cookie-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}
.cookie-actions button{height:34px;padding:0 14px;border:1px solid var(--outline);border-radius:999px;background:transparent;color:var(--prose);font:650 12.5px/1 var(--font-ui);text-transform:none;cursor:pointer;transition:background-color .15s}
.cookie-actions button:hover{background:var(--surface-raised)}
.cookie-actions button.is-main{border-color:transparent;background:var(--prose);color:var(--site-bg)}
.cookie-actions button:focus-visible{outline:2px solid var(--prose);outline-offset:2px}
@keyframes cookie-in{from{opacity:0;transform:translateY(12px)}}
@media (prefers-reduced-motion:reduce){.cookie-banner{animation:none}}

@media (max-width:1000px){.legal-grid{grid-template-columns:minmax(0,1fr);gap:0}.legal-toc{display:none}}
@media (max-width:640px){
  .sf-inner{padding:40px 18px 24px}
  .sf-cols{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 24px;width:100%}
  .sf-bottom{margin-top:36px}
  .sf-stage{--sf-size:clamp(76px,22vw,130px);--sc:1.6;height:calc(var(--sf-size) * 1.5);margin-bottom:env(safe-area-inset-bottom)}
  .sf-mascots{width:calc(var(--sf-size) * 3.9)}
  .sf-bubble{max-width:150px;font-size:11px}
  .sf-tier{right:auto;left:14px;bottom:10px}
  .legal-wrap{padding:32px 18px 0}
  .legal-section h2{grid-template-columns:36px minmax(0,1fr);font-size:19px}
  .legal-sub{grid-template-columns:36px minmax(0,1fr);row-gap:0}
  .legal-sub .legal-num{grid-column:1;font-size:13px}
  .legal-sub p{grid-column:2}
  .legal-doc{font-size:15px}
  .cookie-banner{left:12px;right:12px;bottom:12px;width:auto}
}

/* The counter (legal.jsx › FooterCount): every roll on the site, live. Sized so
   the whole number fits; low digits turn fast, high ones slowly. */
.sf-number.is-count{font-size:min(var(--sf-size),calc(94vw / (var(--sf-digits,8) * .6)))}
.sf-number.is-count .sf-strip{transition:transform var(--speed,.6s) cubic-bezier(.2,.8,.3,1);transition-delay:0s}
.sf-sep{display:block;height:1em;width:.3em;line-height:1;text-align:center;overflow:visible;background:linear-gradient(#fff 0%,color-mix(in srgb,var(--sf-glow) 70%,#fff) 45%,transparent 95%) 0 0/100% 1em;-webkit-background-clip:text;background-clip:text;color:transparent}
@media (prefers-reduced-motion:reduce){.sf-number.is-count .sf-strip{transition:none}}
html.perf-mode .sf-number.is-count .sf-strip{transition:none}
