:root{--bg: #08080c;--panel: #14141c;--panel-2: #1d1d28;--line: #2a2a38;--text: #f2f2f7;--text-dim: #9c9cb4;--meta: #7a7a94;--ghost: #5f5f78;--cyan: #2ff3ff;--magenta: #ff3bd4;--lime: #b4ff2e;--alert: #ff8a3d;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--s7: 44px;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--font-display: "Bungee", Helvetica, sans-serif;--font-ui: "Space Grotesk", Helvetica, sans-serif;--font-mono: "IBM Plex Mono", monospace;--tv-safe: 2.5%;--tv-pad: clamp(16px, 3.4vh, 56px);--tv-gap: clamp(10px, 2.2vh, 40px);--tv-title: clamp(26px, 6vh, 76px);--tv-code: clamp(28px, 6.6vh, 84px);--tv-head: clamp(16px, 3vh, 38px);--tv-body: clamp(12px, 1.9vh, 24px);--tv-label: clamp(9px, 1.35vh, 17px)}.tv-root{height:100vh;height:100dvh;width:100vw;width:100dvw;overflow:hidden;padding:max(var(--tv-safe),env(safe-area-inset-top)) max(var(--tv-safe),env(safe-area-inset-right)) max(var(--tv-safe),env(safe-area-inset-bottom)) max(var(--tv-safe),env(safe-area-inset-left));display:flex;flex-direction:column;min-height:0}.tv-fit{min-height:0;min-width:0;overflow:hidden}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;overscroll-behavior:none}a{color:var(--cyan);text-decoration:none}a:hover{color:var(--lime)}button{font-family:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--lime);outline-offset:2px}input,textarea{font-family:inherit}@keyframes ttPulse{0%,to{opacity:1}50%{opacity:.3}}@keyframes ttPop{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}@keyframes ttGlitch{0%,to{transform:translateZ(0)}25%{transform:translate3d(-2px,1px,0)}50%{transform:translate3d(2px,-1px,0)}75%{transform:translate3d(-1px,2px,0)}}@keyframes ttBuzz{0%,to{transform:rotate(0)}50%{transform:rotate(-14deg)}}@keyframes ttDrip{0%{transform:translateY(0);opacity:1}70%{opacity:1}to{transform:translateY(14px);opacity:0}}@keyframes ttSpinRing{to{transform:rotate(360deg)}}@keyframes ttTrail{0%{stroke-dashoffset:120}to{stroke-dashoffset:0}}@keyframes ttShake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes ttNoise{0%{transform:translateY(0)}to{transform:translateY(-8px)}}@keyframes ttBreathe{0%,to{transform:scale(1)}50%{transform:scale(1.04)}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
