*,:after,:before{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(--font-weight-regular);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}img{display:block;max-width:100%}::selection{background:var(--color-neon);color:var(--color-text-on-neon)}:focus{outline:none}.focusable:focus-visible,[tabindex]:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:var(--focus-ring-width) solid var(--focus-ring-color);outline-offset:2px;box-shadow:0 0 0 1px var(--color-bg),0 0 18px var(--focus-glow);border-radius:var(--radius-sm)}.tv-focusable{transition:transform .12s ease,box-shadow .12s ease}.tv-focusable:focus-visible{transform:scale(var(--focus-scale));z-index:2}@media (prefers-reduced-motion:reduce){.tv-focusable{transition:none}.tv-focusable:focus-visible{transform:none}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-pill)}::-webkit-scrollbar-thumb:hover{background:var(--color-grey-dark)}.app-shell{display:flex;flex-direction:column;min-height:100vh}.page{flex:1 1;width:100%;max-width:1600px;margin:0 auto;padding:var(--space-lg)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.spinner{width:28px;height:28px;border:3px solid var(--color-border);border-top-color:var(--color-neon);border-radius:var(--radius-pill);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.center-fill{display:flex;align-items:center;justify-content:center;min-height:50vh;flex-direction:column;gap:var(--space-md)}.error-banner{background:rgba(255,59,59,.12);border:1px solid var(--color-danger);color:var(--color-text);padding:var(--space-md);border-radius:var(--radius-md);font-size:var(--font-size-caption)}.neon-text{color:var(--color-neon)}.muted{color:var(--color-grey);font-size:var(--font-size-caption)}