*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--color-background: #0a0a0a;--color-surface: #1a1a1a;--color-surface-hover: #2a2a2a;--color-border: #333;--color-text-primary: #ffffff;--color-text-secondary: #999;--color-primary: #3B82F6;--color-primary-hover: #2563eb;--color-success: #10B981;--color-error: #EF4444;--color-warning: #F59E0B;--spacing-xs: clamp(.2rem, .7vmin, .25rem);--spacing-sm: clamp(.35rem, 1.4vmin, .5rem);--spacing-md: clamp(.6rem, 2.8vmin, 1rem);--spacing-lg: clamp(.85rem, 4.2vmin, 1.5rem);--spacing-xl: clamp(1.1rem, 5.6vmin, 2rem);--spacing-2xl: clamp(1.5rem, 8.4vmin, 3rem);--fs-2xs: clamp(.55rem, 1.8vmin, .6rem);--fs-xs: clamp(.6rem, 2vmin, .65rem);--fs-sm: clamp(.68rem, 2.2vmin, .75rem);--fs-md: clamp(.72rem, 2.4vmin, .8rem);--fs-lg: clamp(.75rem, 2.5vmin, .85rem);--fs-xl: clamp(.8rem, 2.7vmin, .9rem);--size-avatar: clamp(2.5rem, 8vmin, 4rem);--size-action-icon: clamp(1.3rem, 4vmin, 1.8rem);--size-btn-icon: clamp(1.45rem, 4.6vmin, 2rem);--size-emote: clamp(.95rem, 3vmin, 1.2rem);--size-summary-min: clamp(1.5rem, 5vmin, 2.2rem);--size-action-btn-min: clamp(60px, 18vmin, 80px);--max-play-width: 900px;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .5);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .5);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(59, 130, 246, .5);--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-mono: "SF Mono", "Monaco", "Inconsolata", "Fira Mono", "Droid Sans Mono", "Source Code Pro", monospace}html,body{width:100%;height:100%;height:100dvh;overflow:hidden}body{font-family:var(--font-family);background-color:var(--color-background);color:var(--color-text-primary);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;height:100%;height:100dvh;display:flex;flex-direction:column}h1{font-size:2.5rem;font-weight:800;line-height:1.2;letter-spacing:-.02em}h2{font-size:2rem;font-weight:700;line-height:1.3}h3{font-size:1.5rem;font-weight:600;line-height:1.4}p{font-size:1rem;line-height:1.6}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 var(--spacing-md)}.text-center{text-align:center}.flex{display:flex}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}button{font-family:inherit;font-size:inherit;border:none;cursor:pointer;transition:all .2s ease}button:disabled{opacity:.5;cursor:not-allowed}input,textarea{font-family:inherit;font-size:inherit;transition:all .2s ease}button:focus,input:focus,textarea:focus,[tabindex]:focus{outline:none}button:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media(prefers-contrast:more){button:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline-width:3px}}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--color-surface)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#555}.lobby-join-row{display:flex;gap:var(--spacing-sm)}.hp-config-row{flex-wrap:wrap}.chat-input-row{display:flex;gap:var(--spacing-xs);width:100%}@media(max-width:480px){.lobby-join-row{flex-direction:column}.chat-input-row{flex-direction:column;gap:var(--spacing-xs)}.chat-input-row button,.chat-input-row .chat-send-btn{width:100%!important}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideDown{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px)}20%,40%,60%,80%{transform:translate(5px)}}@keyframes glow{0%,to{box-shadow:0 0 5px currentColor}50%{box-shadow:0 0 20px currentColor}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.fade-in{animation:fadeIn .3s ease-in-out}.slide-up{animation:slideUp .3s ease-out}.slide-down{animation:slideDown .3s ease-out}.pulse{animation:pulse 2s ease-in-out infinite}.shake{animation:shake .5s ease-in-out}.glow{animation:glow 2s ease-in-out infinite}.float{animation:float 3s ease-in-out infinite}.rotate{animation:rotate 2s linear infinite}
