*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d0f1a;--bg2: #13162a;--surface: #1a1e35;--surface2: #222744;--border: #2e3460;--accent: #4f6ef7;--accent-glow: #4f6ef740;--red: #e63946;--red-glow: #e6394650;--yellow: #f9c22e;--yellow-glow: #f9c22e50;--text: #e8eaf6;--text-muted: #7b82b0;--board-bg: #1a3a8f;--board-shadow: #0a1f5c;--cell-empty: #0d0f1a;--radius: 12px;--font: "Outfit", sans-serif}html,body{height:100%;background:var(--bg);color:var(--text);font-family:var(--font);overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--border) 1px,transparent 1px),linear-gradient(90deg,var(--border) 1px,transparent 1px);background-size:40px 40px;opacity:.18;pointer-events:none;z-index:0}#app{position:relative;z-index:1;min-height:100vh;display:flex;flex-direction:column;align-items:center;padding:16px}.header{width:100%;max-width:520px;display:flex;align-items:center;justify-content:space-between;padding:8px 0 24px}.logo{font-size:1.5rem;font-weight:900;letter-spacing:-.5px;background:linear-gradient(135deg,var(--accent),#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.lang-btn{background:var(--surface);border:1px solid var(--border);color:var(--text-muted);font-family:var(--font);font-size:.8rem;font-weight:600;padding:6px 14px;border-radius:20px;cursor:pointer;transition:all .2s;letter-spacing:.5px}.lang-btn:hover{border-color:var(--accent);color:var(--text)}.card{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:32px;width:100%;max-width:420px;text-align:center}.card h1{font-size:clamp(2rem,8vw,3rem);font-weight:900;letter-spacing:-1px;background:linear-gradient(135deg,#fff 30%,#a0a8e0);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:8px}.card .tagline{color:var(--text-muted);font-size:.95rem;margin-bottom:32px}.btn{width:100%;padding:14px 20px;border:none;border-radius:var(--radius);font-family:var(--font);font-size:1rem;font-weight:700;cursor:pointer;transition:all .2s;letter-spacing:.3px}.btn-primary{background:linear-gradient(135deg,var(--accent),#7c3aed);color:#fff;box-shadow:0 4px 20px var(--accent-glow)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 8px 28px var(--accent-glow)}.btn-primary:active{transform:translateY(0)}.btn-secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--accent);background:var(--surface)}.btn-small{width:auto;padding:8px 18px;font-size:.85rem}.btn-red{background:linear-gradient(135deg,var(--red),#c1121f);color:#fff;box-shadow:0 4px 20px var(--red-glow)}.btn-red:hover{transform:translateY(-2px);box-shadow:0 8px 28px var(--red-glow)}.text-btn{width:auto;background:transparent;border:none;color:var(--text-muted);font-family:var(--font);font-size:.85rem;font-weight:700;cursor:pointer;transition:color .2s}.text-btn:hover{color:var(--text)}.divider{display:flex;align-items:center;gap:12px;margin:20px 0;color:var(--text-muted);font-size:.8rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.input-row{display:flex;gap:8px}.input{flex:1;background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);font-family:var(--font);font-size:1.1rem;font-weight:700;padding:12px 16px;letter-spacing:4px;text-transform:uppercase;outline:none;transition:border-color .2s}.input::placeholder{letter-spacing:2px;color:var(--text-muted);font-weight:400}.input:focus{border-color:var(--accent)}.error-msg{color:var(--red);font-size:.85rem;margin-top:12px;min-height:20px}.waiting-card{text-align:center}.waiting-card h2{font-size:1.3rem;font-weight:700;margin-bottom:28px}.code-display{font-size:clamp(2.5rem,12vw,4rem);font-weight:900;letter-spacing:12px;color:var(--accent);text-shadow:0 0 30px var(--accent-glow);margin:12px 0 24px;font-variant-numeric:tabular-nums}.share-label{font-size:.8rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}.share-link-row{display:flex;align-items:center;background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:20px}.share-link-text{flex:1;padding:10px 14px;font-size:.8rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.copy-btn{background:var(--surface2);border:none;border-left:1px solid var(--border);color:var(--text);font-family:var(--font);font-size:.8rem;font-weight:700;padding:10px 16px;cursor:pointer;transition:background .2s,color .2s;white-space:nowrap}.copy-btn:hover{background:var(--accent);color:#fff}.copy-btn.copied{background:#16a34a;color:#fff}.waiting-actions{display:flex;justify-content:center}.spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:16px}@keyframes spin{to{transform:rotate(360deg)}}.game-wrap{display:flex;flex-direction:column;align-items:center;width:100%;gap:16px}.game-top{width:100%;max-width:640px;display:grid;gap:10px;justify-items:center}.game-meta,.score-row{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px}.room-pill,.player-pill,.score-chip,.draw-chip{display:inline-flex;align-items:center;gap:7px;min-height:32px;padding:6px 10px;background:var(--surface);border:1px solid var(--border);border-radius:999px;color:var(--text-muted);font-size:.82rem;font-weight:700}.score-chip.is-you{color:var(--text);border-color:var(--accent)}.chip-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.chip-dot.red{background:var(--red);box-shadow:0 0 8px var(--red-glow)}.chip-dot.yellow{background:var(--yellow);box-shadow:0 0 8px var(--yellow-glow)}.score-value{color:var(--text);font-variant-numeric:tabular-nums}.leave-btn{min-height:32px;padding:6px 10px;border:1px solid var(--border);border-radius:999px}.leave-btn:hover{border-color:var(--red);color:var(--text)}.status-bar{display:flex;align-items:center;justify-content:center;gap:12px;font-size:1rem;font-weight:700;min-height:44px;padding:10px 20px;background:var(--surface);border:1px solid var(--border);border-radius:40px;transition:all .3s}.turn-dot{width:14px;height:14px;border-radius:50%;flex-shrink:0;transition:background .3s}.turn-dot.red{background:var(--red);box-shadow:0 0 10px var(--red-glow)}.turn-dot.yellow{background:var(--yellow);box-shadow:0 0 10px var(--yellow-glow)}.board-container{position:relative;width:100%;max-width:min(520px,95vw)}.column-targets{display:grid;grid-template-columns:repeat(7,1fr);position:absolute;top:0;right:0;bottom:0;left:0;z-index:10;gap:6px;padding:6px}.col-target{cursor:pointer;border-radius:8px;transition:background .15s}.col-target:hover{background:#ffffff0f}.col-target.disabled{cursor:not-allowed}.col-target.disabled:hover{background:transparent}.board{background:var(--board-bg);border-radius:16px;padding:6px;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,1fr);gap:6px;box-shadow:0 8px 32px #00000080,inset 0 2px 4px #ffffff14,0 0 0 2px var(--board-shadow);aspect-ratio:7 / 6;width:100%}.cell{border-radius:50%;background:var(--cell-empty);box-shadow:inset 0 3px 8px #0009;transition:background .1s;position:relative;overflow:hidden}.cell.red{background:var(--red);box-shadow:inset 0 -3px 6px #0000004d,0 0 12px var(--red-glow)}.cell.yellow{background:var(--yellow);box-shadow:inset 0 -3px 6px #0000004d,0 0 12px var(--yellow-glow)}.cell.preview:after{content:"";position:absolute;top:8%;right:8%;bottom:8%;left:8%;border-radius:50%;opacity:.35;pointer-events:none}.cell.preview-red:after{background:var(--red);box-shadow:0 0 12px var(--red-glow)}.cell.preview-yellow:after{background:var(--yellow);box-shadow:0 0 12px var(--yellow-glow)}.cell.win{animation:pulse-win .8s ease-in-out infinite alternate}@keyframes pulse-win{0%{filter:brightness(1)}to{filter:brightness(1.5) drop-shadow(0 0 8px var(--win-color))}}.cell.red.win{--win-color: var(--red)}.cell.yellow.win{--win-color: var(--yellow)}.cell.drop{animation:drop-in .35s cubic-bezier(.25,.46,.45,.94) forwards}@keyframes drop-in{0%{transform:scaleY(.4) scaleX(1.1);opacity:.6}to{transform:scale(1);opacity:1}}.game-over-panel{background:var(--surface);border:1px solid var(--border);border-radius:20px;padding:20px 28px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:420px;animation:slide-up .3s ease-out}.game-over-actions{display:flex;gap:10px;width:100%}.game-over-actions .btn{flex:1}@keyframes slide-up{0%{transform:translateY(10px);opacity:0}to{transform:translateY(0);opacity:1}}.game-over-title{font-size:1.5rem;font-weight:900}.rematch-sub{font-size:.85rem;color:var(--text-muted)}.disconnect-notice{font-size:.85rem;color:var(--yellow);text-align:center;padding:8px;animation:fade-in .4s ease}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.toast{position:fixed;left:50%;bottom:18px;z-index:30;transform:translate(-50%);padding:10px 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--yellow);font-size:.85rem;font-weight:700;box-shadow:0 8px 24px #00000059;animation:fade-in .2s ease}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;display:grid;place-items:center;padding:16px;background:#0000009e}.confirm-modal{width:100%;max-width:360px;padding:22px;background:var(--surface);border:1px solid var(--border);border-radius:16px;text-align:center;box-shadow:0 18px 44px #00000073}.confirm-modal p{color:var(--text);font-weight:700;margin-bottom:18px}.confirm-actions{display:flex;gap:10px}.confirm-actions .btn{flex:1}@media (max-width: 480px){.card{padding:24px 18px}.code-display{letter-spacing:8px}.status-bar{font-size:.9rem}.game-over-actions,.confirm-actions{flex-direction:column}}
