.modal-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000;opacity:0;transition:opacity .3s ease}.modal-overlay.active{opacity:1}.modal-content{background:var(--genz-surface-2, #1c1c28);color:var(--genz-text, #f0f0f4);color-scheme:dark;padding:28px 24px;border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));border-radius:var(--radius-xl, 28px);max-width:600px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-md);scrollbar-width:thin;position:relative}.modal-content::-webkit-scrollbar{width:6px}.modal-content::-webkit-scrollbar-thumb{background:#667eea4d;border-radius:3px}.modal-content.large-modal{max-width:700px;max-height:85vh}.modal-content h2{font-family:var(--font-display, sans-serif);color:var(--genz-text, #f0f0f4);margin-bottom:20px;font-size:1.25rem;text-align:center;font-weight:700;text-transform:none;letter-spacing:.02em}.modal-actions{display:flex;gap:12px;justify-content:center;margin-top:24px}.modal-actions button{padding:12px 24px;font-size:16px;font-weight:700;border:none;border-radius:8px;cursor:pointer;transition:all .3s ease}.modal-actions .btn-danger{background:#e03131;color:#fff}.modal-actions .btn-danger:hover{background:#c92a2a}.how-to-play-content{text-align:left;padding:20px 0;line-height:1.7;color:var(--genz-text, #f4f4f5)}.how-to-play-content h3{color:var(--genz-cyan, #00e8ff);margin-top:24px;margin-bottom:12px;font-size:18px;font-weight:700}.how-to-play-content h3:first-child{margin-top:0}.how-to-play-content p{margin-bottom:12px;color:var(--genz-text-muted, #a1a1aa)}.how-to-play-content ul,.how-to-play-content ol{margin-bottom:16px;padding-left:25px}.how-to-play-content li{margin-bottom:8px;color:var(--genz-text-muted, #a1a1aa)}.how-to-play-content strong{color:var(--genz-magenta, #ff2d92);font-weight:600}.results-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:var(--genz-bg, #0a0a0f);overflow-y:auto;-webkit-overflow-scrolling:touch;animation:fadeIn .3s ease-out}.results-screen-inner{max-width:640px;margin:0 auto;padding:24px 16px calc(24px + env(safe-area-inset-bottom,0px));min-height:100%;display:flex;flex-direction:column}.results-header{text-align:center;margin-bottom:16px}.results-title{font-family:var(--font-display, sans-serif);color:var(--genz-text, #f0f0f4);font-size:26px;font-weight:800;margin:0 0 6px}.results-subtitle{color:var(--genz-magenta, #ff2d92);font-size:14px;font-weight:700;margin:0}.results-section-title{color:var(--genz-cyan, #00e8ff);font-size:15px;font-weight:700;margin:0 0 10px;padding:0 2px}.results-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:auto;padding-top:24px}.results-actions button{padding:14px 22px;font-size:16px;font-weight:700;border:none;border-radius:10px;cursor:pointer;transition:all .3s ease;flex:1 1 140px;max-width:240px}.results-actions .btn-danger{background:#e03131;color:#fff}.results-actions .btn-danger:hover{background:#c92a2a}.final-hands-section{margin:20px 0 4px;animation:fadeIn .4s ease-out}.final-hands-grid{display:flex;flex-direction:column;gap:12px}.final-hand-row{background:var(--genz-surface, #14141c);border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));border-radius:12px;padding:10px 12px}.final-hand-name{color:var(--genz-text, #f0f0f4);font-weight:700;font-size:14px;margin-bottom:8px}.final-hand-cards{display:flex;flex-wrap:wrap;gap:6px}.final-hand-empty{color:var(--genz-text-muted, #9494a8);font-size:13px}.final-hand-cards .card{width:42px;height:63px;cursor:default}.final-hand-cards .card .card-rank{font-size:14px}.final-hand-cards .card .card-suit{font-size:17px}.results-table-wrapper{margin:12px 0;border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0000001a;animation:fadeIn .5s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.results-table{width:100%;border-collapse:collapse;background:#fff;font-size:14px;table-layout:fixed}.results-table .rank-col{width:44px}.results-table .num-col{width:18%}.results-table thead{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff}.results-table th{padding:14px 12px;text-align:left;font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid rgba(255,255,255,.2)}.results-table th:first-child{border-top-left-radius:12px}.results-table th:last-child{border-top-right-radius:12px}.results-table tbody tr{border-bottom:1px solid #e0e0e0;transition:all .2s ease;animation:slideInRow .4s ease-out backwards}.results-table tbody tr:nth-child(2n){background:#f8f9fa}.results-table tbody tr:nth-child(odd){background:#fff}.results-table tbody tr:hover{background:#f0f4ff;transform:translate(2px)}.results-table tbody tr.winner-row{background:#4caf50;color:#fff;font-weight:600;box-shadow:0 2px 8px #4caf504d}.results-table tbody tr.winner-row:hover{background:#45a049}.results-table tbody tr.winner-row td,.results-table tbody tr.winner-row .score-value,.results-table tbody tr.winner-row .round-score-cell{color:#fff}.results-table tbody tr.winner-row .rank-number{background:#ffffff40;color:#fff}.results-table td{padding:12px 10px;vertical-align:middle;color:#1a1a24;font-size:14px}.icon-cell{text-align:center;padding:12px 4px;line-height:1}.icon-cell .rank-medal{font-size:20px}.icon-cell .rank-number{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#e0e0e8;color:#1a1a24;font-weight:700;font-size:13px}.name-cell{font-weight:600;color:#1a1a24;overflow:hidden}.name-cell-text{vertical-align:middle}.name-cell .declarer-badge{margin-left:6px;font-size:14px;vertical-align:middle}.hand-value-cell,.round-score-cell,.total-score-cell,.final-score-cell{text-align:right;font-weight:700;font-variant-numeric:tabular-nums;color:#1a1a24;font-size:14px}.round-score-cell,.round-score-cell .score-value{color:#4f46e5}.total-score-cell .score-value{color:#1a1a24;font-size:14px}.final-score-cell .score-value{color:#1a1a24;font-size:14px;font-weight:700}.last-round-results{margin-bottom:24px;padding-bottom:20px;border-bottom:1px solid #e0e0e0}.last-round-results h3{color:#667eea;margin-bottom:12px;font-size:16px}.winner-announcement{text-align:center;padding:24px;background:linear-gradient(135deg,#ffd93d,#ffb347);border-radius:12px;margin-bottom:24px;box-shadow:0 4px 12px #ffd93d66;animation:fadeInDown .6s ease-out}.winner-announcement h3{font-size:28px;color:#212121;margin-bottom:8px;text-shadow:0 2px 4px rgba(0,0,0,.1)}.winner-announcement p{font-size:18px;color:#333;font-weight:600}@media (max-width: 768px){.modal-content{padding:20px;width:95%;max-height:90vh}.modal-content h2{font-size:20px}.results-table{font-size:13px}.results-table th{font-size:11px;padding:10px 6px}.results-table td{padding:10px 6px;font-size:13px}.results-table .rank-col{width:36px}.name-cell{white-space:nowrap;text-overflow:ellipsis}.results-title{font-size:22px}.winner-announcement{padding:16px}.winner-announcement h3{font-size:22px}.modal-actions{flex-direction:column}.modal-actions button{width:100%}}.card{width:60px;height:90px;border-radius:6px;position:relative;cursor:pointer;transition:all .3s ease;box-shadow:0 2px 4px #0003;display:flex;flex-direction:column;justify-content:space-between;padding:5px 4px 6px;overflow:hidden}.card.face-up{background:#fff;border:1px solid #b8b8b8}.card.face-down{background:transparent;border:none;padding:0;box-shadow:none;border-radius:0}.card.selectable:hover{transform:translateY(-10px);box-shadow:0 6px 12px #0000004d}.card.selected{transform:translateY(-15px);box-shadow:0 4px 8px #0006;border:2px solid #667eea}.card.newly-picked{border:3px solid #4ade80;box-shadow:0 8px 20px #4ade8099;animation:pulse-newly-picked 1.5s ease-in-out;transform:translateY(-10px)}@keyframes pulse-newly-picked{0%{box-shadow:0 8px 24px #4ade80e6;transform:translateY(-10px) scale(1.05)}50%{box-shadow:0 8px 20px #4ade80b3;transform:translateY(-10px) scale(1.02)}to{box-shadow:0 8px 16px #4ade8080;transform:translateY(-10px) scale(1)}}@keyframes cardPulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.card.red{color:#d32f2f}.card.black{color:#212121}.card-rank{font-size:18px;font-weight:800;line-height:1;flex-shrink:0}.card-rank-bottom{transform:rotate(180deg);flex-shrink:0}.card-suit{font-size:24px;line-height:1;text-align:center;flex-grow:1;flex-shrink:1;display:flex;align-items:center;justify-content:center;min-height:0}.card-back{width:100%;height:100%;display:block;overflow:visible;border-radius:0;padding:0;margin:0;background:transparent}.card-back img{width:100%;height:100%;object-fit:contain;display:block;border-radius:0;padding:0;margin:0;border:none}.card.face-down[class*=skin-]:not(.skin-classic){background:transparent;border:none;padding:0;box-shadow:0 2px 4px #00000040;border-radius:6px}.card-back-skin{width:100%;height:100%;border-radius:6px;display:flex;align-items:center;justify-content:center;border:2px solid rgba(255,255,255,.25);box-sizing:border-box}.card-back-emblem{font-size:18px;font-weight:900;letter-spacing:1px;color:#ffffffd9;text-shadow:0 1px 3px rgba(0,0,0,.4);font-family:Georgia,Times New Roman,serif}.card-back-midnight{background:radial-gradient(circle at 50% 35%,rgba(255,255,255,.08),transparent 60%),linear-gradient(160deg,#1f2533,#11151f);border-color:#94a3b873}.card-back-midnight .card-back-emblem{color:#cbd5e1cc}.card-back-neon{background:repeating-linear-gradient(0deg,transparent 0 9px,rgba(255,255,255,.07) 9px 10px),repeating-linear-gradient(90deg,transparent 0 9px,rgba(255,255,255,.07) 9px 10px),linear-gradient(135deg,#5b21b6,#d946ef 55%,#06b6d4);border-color:#e879f9b3}.card-back-crimson{background:repeating-linear-gradient(45deg,rgba(255,255,255,.1) 0 4px,transparent 4px 12px),repeating-linear-gradient(-45deg,rgba(0,0,0,.12) 0 4px,transparent 4px 12px),linear-gradient(160deg,#b91c1c,#7f1d1d);border-color:#fecaca8c}.card-back-geometric{background:repeating-conic-gradient(from 45deg,#0f766e,#0f766e 12.5%,#115e59 12.5%,#115e59 25%),#115e59;background-size:18px 18px;border-color:#99f6e480}.card-back-ocean{background:radial-gradient(ellipse at 50% -20%,rgba(255,255,255,.22),transparent 55%),repeating-linear-gradient(0deg,rgba(255,255,255,.06) 0 3px,transparent 3px 9px),linear-gradient(180deg,#0369a1,#0c4a6e);border-color:#bae6fd8c}.card.face-up.face-contrast{background:#fffef5;border:2px solid #1a1a1a}.card.face-up.face-contrast .card-rank{font-weight:900}.card.face-up.face-contrast.red{color:#b80000}.card.face-up.face-contrast.black{color:#000}.card-stack{position:relative;display:inline-block}.stack-count{position:absolute;top:-10px;right:-10px;background:#667eea;color:#fff;border-radius:50%;width:30px;height:30px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;box-shadow:0 2px 4px #0003}.opponent-hand .card{width:35px;height:52px;box-shadow:0 1px 3px #0003}.opponent-hand .card-rank{font-size:12px}.opponent-hand .card-suit{font-size:18px}.opponent-hand .card-back{font-size:20px}.opponent-hand .card-back-emblem{font-size:12px}.opponent-player.admin-view .opponent-hand .card{width:40px;height:60px}.opponent-player.admin-view .opponent-hand .card.face-down{display:none}.card.own-discard{opacity:.6;filter:grayscale(30%);border:2px dashed #999;cursor:not-allowed}@media (max-width: 480px){.card{width:40px;height:60px;padding:4px}.card.face-down{padding:0;box-shadow:none;border-radius:0}.card-rank{font-size:15px}.card-suit{font-size:20px}.card-back{font-size:24px}.opponent-hand .card{width:28px;height:40px}.opponent-hand .card-rank{font-size:10px}.opponent-hand .card-suit{font-size:14px}.opponent-hand .card-back{font-size:16px}.card-back-emblem{font-size:13px}.opponent-hand .card-back-emblem{font-size:9px}.opponent-player.admin-view .opponent-hand .card{width:32px;height:46px}.discard-history .card{width:28px;height:40px}.discard-history .card-rank{font-size:10px}.discard-history .card-suit{font-size:14px}.stack-count{width:22px;height:22px;font-size:11px;top:-8px;right:-8px}}.customize-modal{max-width:460px;width:calc(100% - 32px);max-height:85vh;overflow-y:auto;text-align:left}.customize-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.customize-header h2{margin:0}.customize-close{background:#ffffff14;border:none;color:inherit;width:32px;height:32px;border-radius:50%;font-size:14px;cursor:pointer}.customize-section{margin-top:18px}.customize-section h3{margin:0 0 10px;font-size:15px;text-transform:uppercase;letter-spacing:.6px;opacity:.85}.avatar-preview-row{display:flex;align-items:center;gap:14px;margin-bottom:12px}.avatar-preview{width:72px;height:72px;border-radius:50%;border:3px solid rgba(102,126,234,.7);background:#ffffff0f}.avatar-shuffle{padding:8px 14px;font-size:14px}.avatar-style-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.avatar-style-option{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;background:#ffffff0d;border:2px solid transparent;border-radius:10px;cursor:pointer;color:inherit}.avatar-style-option img{width:42px;height:42px;border-radius:50%}.avatar-style-option span{font-size:10px;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.avatar-style-option.active{border-color:#667eea;background:#667eea2e}.skin-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.skin-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 6px;background:#ffffff0d;border:2px solid transparent;border-radius:10px;cursor:pointer;color:inherit}.skin-option.active{border-color:#667eea;background:#667eea2e}.skin-option span{font-size:12px;opacity:.9}.skin-option .skin-preview-card{width:48px;height:72px;cursor:pointer;pointer-events:none}.face-theme-row{display:flex;gap:12px}.face-theme-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px;background:#ffffff0d;border:2px solid transparent;border-radius:10px;cursor:pointer;color:inherit;flex:1}.face-theme-option.active{border-color:#667eea;background:#667eea2e}.face-theme-option span{font-size:12px;opacity:.9}.face-preview{width:48px;height:72px;pointer-events:none;cursor:default}.customize-done{width:100%;margin-top:20px}@media (max-width: 480px){.avatar-style-grid{grid-template-columns:repeat(3,1fr)}}.pregame-container{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:28px 20px calc(80px + env(safe-area-inset-bottom));position:relative;overflow-x:hidden;overflow-y:auto;z-index:1}.pregame-bg-shapes{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;overflow:hidden}.pregame-bg-shapes .shape{position:absolute;display:block;border:none;border-radius:50%;filter:blur(48px);animation:glow-drift 14s ease-in-out infinite}.shape-blob-1{width:min(420px,90vw);height:min(420px,90vw);top:-18%;right:-12%;background:radial-gradient(circle,rgba(255,45,146,.22) 0%,transparent 68%);opacity:1}.shape-blob-2{width:min(320px,70vw);height:min(320px,70vw);bottom:8%;left:-14%;background:radial-gradient(circle,rgba(92,225,230,.16) 0%,transparent 68%);animation-delay:-5s;animation-direction:reverse}@keyframes glow-drift{0%,to{transform:translate(0) scale(1)}50%{transform:translate(8px,-12px) scale(1.03)}}.pregame-content{position:relative;z-index:2;background:linear-gradient(165deg,#1c1c28fa,#14141cfc);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);padding:40px 28px 32px;max-width:420px;width:100%;box-shadow:var(--shadow-md);overflow:hidden}.pregame-content:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;border-radius:var(--radius-xl) var(--radius-xl) 0 0;background:linear-gradient(90deg,var(--genz-magenta),var(--genz-cyan),var(--genz-lime));opacity:.9}.game-logo{text-align:center;margin-bottom:28px;max-width:100%;padding:0 8px}.game-logo h1{font-family:var(--font-brand);display:inline-block;max-width:100%;font-size:clamp(2rem,9vw,2.85rem);font-weight:400;text-align:center;margin:0 auto 12px;letter-spacing:.01em;line-height:1.15;text-transform:none;padding:0 .12em .08em;box-sizing:content-box;background:linear-gradient(100deg,var(--genz-lime) 0%,var(--genz-cyan) 42%,var(--genz-magenta) 88%);-webkit-background-clip:text;background-clip:text;color:var(--genz-lime);-webkit-text-fill-color:transparent}.logo-subtitle{font-family:var(--font-primary);text-align:center;color:var(--genz-text-muted);font-size:.9375rem;font-weight:400;line-height:1.55}.logo-description{color:var(--genz-text);font-weight:400;margin:0 auto;max-width:36ch;line-height:1.6}.logo-highlight{color:var(--genz-lime);font-weight:700}.logo-highlight--minimum{color:var(--genz-cyan)}.logo-highlight--luck{color:var(--genz-magenta)}.input-group{margin:24px 0 0}.input-group label{display:block;margin-bottom:8px;font-family:var(--font-primary);font-size:.8125rem;font-weight:600;color:var(--genz-text-muted);letter-spacing:.02em;text-transform:none}.input-group input{font-family:var(--font-primary);width:100%;padding:14px 16px;min-height:48px;line-height:1.25;border:1px solid var(--border-subtle);border-radius:var(--radius-md);font-size:1rem;background:var(--genz-surface);color:var(--genz-text);transition:border-color .2s ease,box-shadow .2s ease}.round-picker{display:flex;gap:8px;margin-top:8px;padding:4px;background:var(--genz-surface);border-radius:var(--radius-md);border:1px solid var(--border-subtle)}.round-picker .btn{flex:1;min-width:0;padding:11px 8px;font-size:.9375rem;border-radius:var(--radius-sm);box-shadow:none}.round-picker .btn.btn-primary{background:var(--genz-magenta);color:#fff;border-color:transparent;box-shadow:var(--shadow-sm)}.round-picker .btn.btn-secondary{background:transparent;color:var(--genz-text-muted);border-color:transparent}.round-picker .btn.btn-secondary:hover:not(:disabled){background:#ffffff0f;color:var(--genz-text)}.game-setup-modal .game-setup-note{margin:-8px 0 18px;text-align:center;color:var(--genz-text-muted);font-size:.9375rem;line-height:1.5}.game-setup-modal .input-group{margin-bottom:8px}.input-group input::placeholder{color:var(--genz-text-muted);opacity:.7}.input-group input:focus{outline:none;border-color:#d4ff0073;box-shadow:0 0 0 3px #d4ff001f;transform:none}.action-buttons{display:flex;flex-direction:column;gap:10px;margin-top:28px;position:relative;z-index:10}.action-buttons .btn{width:100%;min-width:0;align-self:stretch;display:block;box-sizing:border-box;text-align:center}.action-buttons .btn-rules{background:var(--genz-cyan);color:var(--genz-ink);border:1px solid rgba(92,225,230,.55);box-shadow:var(--shadow-sm);font-weight:600}.action-buttons .btn-rules:hover:not(:disabled){background:#7deef2;border-color:var(--genz-cyan);box-shadow:var(--shadow-md)}.pregame-footer{position:absolute;bottom:calc(16px + env(safe-area-inset-bottom));left:0;right:0;text-align:center;font-family:var(--font-primary);font-size:.8125rem;color:var(--genz-text-muted);z-index:2}.pregame-privacy-link{color:var(--genz-cyan);text-decoration:none;font-weight:500}.pregame-privacy-link:hover{color:var(--genz-lime)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#06060cb8;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.modal-content{font-family:var(--font-primary);background:var(--genz-surface-2);color:var(--genz-text);color-scheme:dark;border:1px solid var(--border-subtle);border-radius:var(--radius-xl);padding:28px 24px;max-width:440px;width:100%;box-shadow:var(--shadow-md)}.modal-content h2{font-family:var(--font-display);margin-bottom:20px;color:var(--genz-text);font-weight:700;font-size:1.25rem;line-height:1.25;text-transform:none;letter-spacing:.02em;text-wrap:balance}.modal-actions{display:flex;flex-direction:column;gap:10px;margin-top:20px}.modal-actions--row{flex-direction:row;flex-wrap:wrap}.modal-actions--row .btn{flex:1;min-width:120px}.modal-hint{margin-top:10px;font-size:.875rem;line-height:1.45;color:var(--genz-text-muted)}.modal-hint--error{color:var(--error-color)}.modal-hint--warn{color:var(--genz-orange)}.room-code-display{margin:20px 0}.code-value{font-family:var(--font-display),monospace;font-size:1.75rem;font-weight:700;color:var(--genz-cyan);letter-spacing:.35em;text-align:center;margin:12px 0;-webkit-user-select:none;user-select:none}.btn-copy{width:100%;margin-top:12px}.room-type-badge{font-family:var(--font-primary);display:inline-block;padding:6px 14px;border:1px solid var(--border-subtle);border-radius:999px;font-size:.8125rem;font-weight:600;margin-top:10px;letter-spacing:.02em}.room-type-badge.public{background:#5ce1e61f;color:var(--genz-cyan);border-color:#5ce1e64d}.room-type-badge.private{background:#ff2d921f;color:var(--genz-magenta);border-color:#ff2d924d}.room-type-toggle{margin:20px 0 0;padding:16px;background:var(--genz-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.room-type-toggle label{font-family:var(--font-primary);display:flex;align-items:flex-start;gap:12px;cursor:pointer;font-weight:500;color:var(--genz-text);line-height:1.45;font-size:.9375rem}.room-type-toggle input[type=checkbox]{width:18px;height:18px;margin-top:3px;accent-color:var(--genz-lime);flex-shrink:0;border-radius:4px}.room-type-toggle .room-type-hint{margin-top:10px;font-size:.8125rem;color:var(--genz-text-muted);line-height:1.5}.room-code-display label{display:block;margin-bottom:8px;font-weight:600;font-family:var(--font-primary);font-size:.8125rem;letter-spacing:.02em;color:var(--genz-text-muted);text-transform:none}.single-player-loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a0a0feb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:10000;color:var(--genz-text)}.single-player-loading-overlay h2{font-family:var(--font-display);font-weight:700;letter-spacing:.04em;margin-bottom:8px;text-transform:none}.single-player-loading-overlay .loading-spinner{font-size:48px;margin-bottom:20px;animation:pulse-load 1.2s ease-in-out infinite}@keyframes pulse-load{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.08);opacity:.85}}.lobby-container{max-width:480px;margin:0 auto;padding:28px 20px calc(32px + env(safe-area-inset-bottom));min-height:100vh;min-height:100dvh;position:relative;z-index:1}.lobby-header{text-align:center;margin-bottom:32px}.lobby-header h1{font-family:var(--font-brand);font-size:clamp(2rem,10vw,2.75rem);font-weight:400;margin-bottom:6px;letter-spacing:.02em;text-transform:none;padding:0 8px 2px;background:linear-gradient(100deg,var(--genz-lime),var(--genz-cyan));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.lobby-header p{color:var(--genz-text-muted);font-size:.9375rem;font-weight:400}.room-info-section,.players-section{background:var(--genz-surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:22px 20px;margin-bottom:14px;box-shadow:var(--shadow-sm)}.room-code-section{margin-bottom:14px}.room-code-section label{display:block;font-family:var(--font-primary);font-size:.8125rem;color:var(--genz-text-muted);margin-bottom:8px;font-weight:600;letter-spacing:.02em}.room-code-display{display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;background:var(--genz-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:12px 14px}.room-code-value{font-family:var(--font-display),monospace;font-size:clamp(1.2rem,5.5vw,1.5rem);font-weight:700;color:var(--genz-lime);letter-spacing:.22em;min-width:0;-webkit-user-select:none;user-select:none}.lobby-rounds-note{margin-top:10px;text-align:center;color:var(--genz-text-muted);font-size:.875rem}.room-type-badge{display:inline-block;padding:6px 14px;border-radius:999px;font-family:var(--font-primary);font-size:.8125rem;font-weight:600;margin-top:10px;letter-spacing:.02em}.room-type-badge.public{background:#5ce1e61f;color:var(--genz-cyan);border:1px solid rgba(92,225,230,.28)}.room-type-badge.private{background:#ff2d921f;color:var(--genz-magenta);border:1px solid rgba(255,45,146,.28)}.players-section h4{margin:0 0 14px;font-family:var(--font-primary);color:var(--genz-text);font-size:.875rem;font-weight:600;letter-spacing:.02em}.players-list{list-style:none;padding:0;margin:0}.players-list li{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;margin-bottom:8px;background:var(--genz-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-md);transition:border-color .2s ease,background .2s ease}.players-list li:last-child{margin-bottom:0}.players-list li:hover{border-color:var(--border-strong);background:#ffffff08}.players-list li.you{background:#d4ff000f;border-color:#d4ff0047;font-weight:500;color:var(--genz-text)}.players-list li.you .player-name,.players-list li.you .player-name>span{color:var(--genz-text);-webkit-text-fill-color:var(--genz-text)}.player-name{display:flex;align-items:center;gap:8px;flex:1;color:var(--genz-text);font-size:.9375rem}.host-crown{font-size:1.1rem}.you-indicator{color:var(--genz-lime);font-weight:600;font-size:.875rem;margin-left:4px}.ai-badge{font-size:.8125rem;color:var(--genz-text-muted)}.ready-badge{background:#d4ff0026;color:var(--genz-lime);border:1px solid rgba(212,255,0,.25);padding:4px 10px;border-radius:999px;font-size:.6875rem;font-weight:600;font-family:var(--font-primary);letter-spacing:.03em}.ready-badge.ai{background:#ffffff0f;color:var(--genz-text-muted);border-color:var(--border-subtle)}.joining-animation{text-align:center;padding:14px;color:var(--genz-cyan);font-weight:500;font-size:.9375rem;animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.lobby-actions{display:flex;gap:10px;margin-top:22px}.lobby-actions .btn{flex:1;min-width:0}.lobby-actions .btn-primary{font-size:clamp(.8125rem,2.5vw,.9rem);line-height:1.3;padding:14px 12px}.auto-start-message{text-align:center;margin-top:16px;padding:14px 16px;background:#d4ff001a;border:1px solid rgba(212,255,0,.22);border-radius:var(--radius-md);color:var(--genz-lime);font-weight:600;font-size:.9375rem}.lobby-container .btn-copy{padding:10px 14px;font-size:.8125rem;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--genz-magenta),#e91e8c);color:#fff;border-color:#ff2d9259;box-shadow:var(--shadow-sm);font-weight:600}.recent-plays{background:#fffffff2;border-radius:8px;padding:6px 8px;min-width:0;flex:1;max-width:200px;box-shadow:0 2px 4px #0000001a;flex-shrink:1}.plays-header{font-weight:700;font-size:11px;margin-bottom:4px;color:#667eea;text-align:center}.plays-table{max-height:80px;overflow-y:auto;font-size:10px;scrollbar-width:thin}.plays-table::-webkit-scrollbar{width:4px}.plays-table::-webkit-scrollbar-thumb{background:#667eea4d;border-radius:2px}.no-plays{text-align:center;color:#999;padding:20px;font-style:italic}.play-row{display:flex;align-items:center;gap:8px;padding:5px;margin:3px 0;background:#667eea0d;border-radius:5px;border-left:3px solid #667eea;transition:all .3s ease}.play-row:hover{background:#667eea1a;transform:translate(3px)}.play-row.recent{background:#667eea26;border-left-color:#764ba2;animation:slideIn .5s ease}@keyframes slideIn{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.play-player{font-weight:700;color:#667eea;min-width:80px;font-size:11px;flex-shrink:0}.play-cards{display:flex;gap:3px;flex-wrap:wrap;flex:1;justify-content:flex-start}.play-card{width:25px;height:35px;font-size:8px;border-radius:4px}.play-card .card-rank{font-size:9px}.play-card .card-suit{font-size:10px}.play-action{font-size:10px;color:#666;font-style:italic;flex-shrink:0;min-width:60px;text-align:right}@media (max-width: 768px){.recent-plays{min-width:100%;max-width:100%}.play-row{flex-wrap:wrap}.play-player{width:100%;margin-bottom:4px}.play-action{width:100%;text-align:left}}body.game-page{background:#1e1e1e!important;background-image:none!important;overflow-y:hidden;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation}body.game-page .game-container,body.game-page .game-container *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}body.game-page input,body.game-page textarea{-webkit-user-select:text;user-select:text}.game-container{max-width:100%;margin:0 auto;display:flex;flex-direction:column;gap:6px;flex:1;overflow:hidden;padding:6px 8px;min-height:100vh;max-height:100vh;background:#1e1e1e}.loading-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;color:var(--genz-text, #f4f4f5);text-align:center;font-family:var(--font-primary, sans-serif)}.loading-screen h2{margin-bottom:16px;font-size:24px;font-family:var(--font-display, sans-serif);text-transform:uppercase;letter-spacing:.08em;color:var(--genz-lime, #d4ff00)}.game-header{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;position:relative;z-index:100;flex-shrink:0;background:var(--genz-surface-2, #1c1c28);border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));border-radius:var(--radius-md, 14px);box-shadow:var(--shadow-sm)}.game-logo{font-family:var(--font-brand, serif);font-size:22px;font-weight:400;color:var(--genz-lime, #d4ff00);letter-spacing:.02em;text-transform:none;line-height:1.1}.help-controls{display:flex;gap:6px;align-items:center;justify-content:flex-end}.btn-mute-sound,.btn-how-to-play{padding:8px 12px;font-size:12px;font-family:var(--font-primary, sans-serif);font-weight:600;text-transform:none;letter-spacing:.02em;background:#ffffff0d;color:var(--genz-cyan, #5ce1e6);border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));border-radius:var(--radius-sm, 10px);cursor:pointer;transition:background .2s ease,border-color .2s ease;white-space:nowrap;box-shadow:none}.btn-mute-sound:hover,.btn-how-to-play:hover{background:#ff2d9226;color:var(--genz-text, #f0f0f4);border-color:#ff2d924d;transform:none;box-shadow:none}.btn-mute-sound{min-width:44px;padding:8px 10px}.game-status-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;padding:10px 12px;background:var(--genz-surface, #14141c);border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));border-radius:var(--radius-md, 14px);box-shadow:var(--shadow-sm);flex-shrink:0}.game-status-bar .round-info{font-family:var(--font-primary, sans-serif);font-size:13px;font-weight:600;color:var(--genz-text-muted, #9494a8);text-transform:none;letter-spacing:.02em}.game-status-bar .turn-info{font-size:14px;font-weight:700;color:var(--genz-cyan, #00e8ff);padding-right:2px;text-align:right;flex-shrink:0}.game-status-bar .turn-info.your-turn{color:var(--genz-lime, #d4ff00)}.game-status-bar .turn-info.opponent-turn{color:var(--genz-text-muted, #a1a1aa)}.game-status-bar .hold-info{font-size:11px;font-weight:600;font-family:var(--font-primary, sans-serif);text-transform:none;letter-spacing:.02em;color:var(--genz-ink, #0a0a0f);background:var(--genz-lime, #d4ff00);border:none;border-radius:999px;padding:4px 10px;box-shadow:none}.game-status-bar .declare-info{flex-basis:100%;font-size:13px;font-weight:800;font-family:var(--font-primary, sans-serif);text-align:center;letter-spacing:.02em;color:#fff;background:linear-gradient(135deg,#d32f2f,#f05);border:none;border-radius:999px;padding:6px 12px;animation:pulse-declare 1.6s ease-in-out infinite}.opponents-area{display:flex;flex-direction:row;justify-content:space-between;gap:6px;flex-wrap:nowrap;flex-shrink:0;overflow-x:auto;overflow-y:hidden;padding-bottom:2px;-webkit-overflow-scrolling:touch}.opponent-player{background:#fffffff2;border-radius:10px;padding:8px 10px;min-width:90px;flex:1;flex-shrink:0;box-shadow:0 2px 6px #00000026;transition:all .3s ease;border:1px solid rgba(0,0,0,.1)}@keyframes turn-border-blink{0%,to{border-color:#f05;box-shadow:0 0 #ff005573}50%{border-color:#0f0;box-shadow:0 0 0 4px #00ff002e}}@keyframes turn-border-pulse{0%{transform:scale(1);opacity:.45}70%{transform:scale(1.03);opacity:0}to{transform:scale(1.03);opacity:0}}.opponent-player.current-turn{position:relative;border:3px solid #ff0055;animation:turn-border-blink 1.2s ease-in-out infinite}.opponent-player.current-turn:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border:2px solid #00ff00;border-radius:12px;pointer-events:none;animation:turn-border-pulse 1.6s ease-out infinite}.opponent-player.declared-player{border:3px solid #d32f2f;box-shadow:0 0 12px #d32f2f8c;animation:pulse-declare 1.6s ease-in-out infinite}.human-hand.my-turn{position:relative;border:3px solid #ff0055;border-radius:8px;animation:turn-border-blink 1.2s ease-in-out infinite}.human-hand.my-turn:after{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border:2px solid #00ff00;border-radius:10px;pointer-events:none;animation:turn-border-pulse 1.6s ease-out infinite}.player-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.opponent-player .player-header{margin-bottom:4px}.player-avatar{width:36px;height:36px;border-radius:8px;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;box-shadow:0 2px 4px #0003;border:2px solid rgba(255,255,255,.95);overflow:hidden;padding:0;line-height:0}.player-avatar img,.player-avatar .player-avatar-img{width:100%;height:100%;display:block;object-fit:cover;object-position:center center;border-radius:0;flex-shrink:0}.player-info{display:flex;flex-direction:column;gap:2px;flex:1;font-size:11px;min-width:0}.opponent-player .player-info{gap:2px;font-size:10px;min-width:0;overflow:hidden}.opponent-player .opponent-name-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px}.opponent-player .player-declared,.opponent-player .player-hold{font-size:9px;padding:2px 6px}.opponent-player .opponent-name-row .player-name{flex:1 1 auto;min-width:30px;overflow:hidden;text-overflow:ellipsis}.player-name-row{display:flex;justify-content:flex-start;align-items:center;gap:6px;flex-wrap:wrap;min-width:0;margin-bottom:4px}.player-name{font-weight:700;font-size:14px;color:#212121;letter-spacing:-.5px;flex:1 1 auto;min-width:0}.opponent-player .player-name{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1 1 0;min-width:20px}.player-rank{font-size:12px;color:#666;white-space:nowrap}.rank-value{font-weight:700;color:#2196f3;font-size:14px}.player-stats{display:flex;gap:2px;flex-wrap:wrap;font-size:12px;color:#666;margin-top:0}.player-stats span{white-space:nowrap}.score-value,.cards-value{font-weight:600;color:#212121}.player-declared{display:inline-flex;align-items:center;font-weight:800;font-size:11px;line-height:1;color:#fff;background:#d32f2f;padding:3px 8px;border-radius:999px;border:none;text-align:center;animation:pulse-declare 1.6s ease-in-out infinite;white-space:nowrap;flex-shrink:0;vertical-align:middle}.player-hold{display:inline-flex;align-items:center;font-weight:800;font-size:11px;line-height:1;color:#fff;background:#15803d;padding:3px 8px;border-radius:999px;border:none;white-space:nowrap;flex-shrink:0;vertical-align:middle}.opponent-hand{display:flex;gap:0;flex-wrap:nowrap;justify-content:center;align-items:center;position:relative;height:52px;padding:2px 0}.opponent-hand .card{position:relative;margin-left:-20px;pointer-events:none}.opponent-hand .card:first-child{margin-left:0}.game-board{background:#0e3b00f2;border:6px solid #592c00;border-radius:8px;padding:16px 14px;min-height:200px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:12px;box-shadow:0 2px 4px #0000001a;flex-shrink:0}.pile{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-width:80px;flex:1;max-width:140px;overflow:hidden}.pile.discard-pile{max-width:180px}.pile-label{font-weight:700;margin-bottom:8px;font-size:14px;text-transform:uppercase;letter-spacing:.5px;color:#fc0;width:100%;text-align:center}.pile-count{margin-top:8px;font-size:12px;color:#fff;font-weight:500;text-align:center}.discard-pile-container{display:flex;flex-direction:column;align-items:center;gap:6px;width:100%;overflow:hidden}.discard-history{display:flex;gap:4px;flex-wrap:nowrap;justify-content:center;align-items:center;width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.discard-history::-webkit-scrollbar{display:none}.discard-history .card,.discard-history .discard-history-card{width:35px;height:52px;flex-shrink:0}.discard-pile-container .own-discard{border:2px solid #1d4ed8!important;box-shadow:0 0 0 2px #1d4ed833}.discard-history .card-rank{font-size:12px}.discard-history .card-suit{font-size:16px}.card.top-card{border:2px solid #ffa94d;box-shadow:0 8px 16px #ffa94d80;animation:pulse-top 1s ease-in-out infinite}@keyframes pulse-top{0%,to{box-shadow:0 8px 16px #ffa94d80}50%{box-shadow:0 8px 20px #ffa94dcc}}.human-player-area{background:#fffffff2;border-radius:8px;padding:8px 10px;box-shadow:0 2px 4px #0000001a;flex-shrink:0;min-height:0;overflow:visible}.human-hand{display:flex;gap:clamp(2px,.6vw,4px);flex-wrap:nowrap;justify-content:flex-start;align-items:flex-end;margin:4px 0;position:relative;overflow:hidden;box-sizing:border-box;min-height:100px;padding:12px 2px 4px}.human-hand .card{position:relative;margin:0;transition:transform .3s ease,z-index .3s ease;cursor:pointer;flex:0 1 auto;flex-shrink:1;min-width:0;width:clamp(36px,calc((100% - 6 * 4px) / 7),60px);height:auto;aspect-ratio:2 / 3;max-width:60px}.human-hand .card .card-rank{font-size:clamp(12px,3.2vw,18px)}.human-hand .card .card-suit{font-size:clamp(14px,3.8vw,24px)}.human-hand .card:hover{transform:translateY(-10px) scale(1.05);z-index:10}.human-hand .card.selected{transform:translateY(-15px) scale(1.1);z-index:15;border:2px solid #667eea}.first-time-hint{background:#ff2d92eb;border:1px solid rgba(255,255,255,.15);border-radius:var(--radius-md, 14px);padding:12px 14px;margin-bottom:12px;box-shadow:var(--shadow-sm);animation:slideIn .5s ease}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.hint-content{display:flex;align-items:center;gap:12px;color:var(--genz-ink, #0a0a0f)}.hint-icon{font-size:24px;flex-shrink:0}.hint-text{flex:1;font-size:14px;font-weight:600;color:var(--genz-ink, #0a0a0f)}.hint-close{background:#fff3;border:none;color:#fff;width:28px;height:28px;border-radius:50%;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:background .3s ease;flex-shrink:0}.hint-close:hover{background:#ffffff4d}.action-buttons{display:flex;flex-direction:column;gap:6px;margin-top:8px;flex-shrink:0}.button-row{display:flex;width:100%;justify-content:center;gap:8px}.button-row button,.button-row .button-group button{flex:1;min-width:0}.button-group{display:flex;width:100%;gap:8px;justify-content:center}.button-group button{flex:1;min-width:0}.primary-buttons-row button,.hold-row button{width:100%;flex:1;min-width:0}.continue-row{display:flex;gap:8px}.continue-row button{flex:1;max-width:300px}.game-container button,.game-container .btn{padding:12px 16px;font-size:13px;font-family:var(--font-primary, sans-serif);font-weight:600;text-transform:none;letter-spacing:.02em;border:1px solid rgba(0,0,0,.2);border-radius:var(--radius-md, 14px);cursor:pointer;transition:filter .15s ease,box-shadow .15s ease,transform .12s ease;box-shadow:0 2px 8px #00000040}.game-container .btn-primary{background:var(--genz-violet, #a855f7);color:var(--genz-text, #f4f4f5)}.game-container .action-buttons .primary-buttons-row .btn-primary:first-child{background:#ffd93d;color:#0a0a0f}.game-container .action-buttons .hold-row .btn-primary:first-child{background:#ff4757;color:#fff}.game-container .btn-primary:hover:not(:disabled),.game-container .btn-secondary:hover:not(:disabled),.game-container .btn-warning:hover:not(:disabled),.game-container .btn-danger:hover:not(:disabled){filter:brightness(1.06);box-shadow:0 4px 14px #00000059;transform:none}.game-container .btn-secondary{background:var(--genz-cyan, #5ce1e6);color:var(--genz-ink, #0a0a0f)}.game-container .btn-warning{background:var(--genz-lime, #d4ff00);color:var(--genz-ink, #0a0a0f)}.game-container .btn-danger{background:var(--genz-magenta, #ff2d92);color:#fff}.game-container .action-buttons .btn:disabled{opacity:1;background:#4a4a54!important;color:#e4e4e7!important;border:1px solid #3a3a44!important;cursor:not-allowed;transform:none!important;box-shadow:none!important;filter:none;pointer-events:none}button:disabled,.btn:disabled{opacity:.4;background:#999!important;color:#666!important;cursor:not-allowed;transform:none!important;box-shadow:none!important;filter:grayscale(.5);pointer-events:none}button:disabled:hover,.btn:disabled:hover{background:#999!important;color:#666!important;transform:none!important;box-shadow:none!important}.game-container .action-buttons .btn:disabled:hover{background:#4a4a54!important;color:#e4e4e7!important;box-shadow:2px 2px #1a1a1f!important}.btn-primary:disabled{background:#999!important;opacity:.4}.btn-secondary:disabled{background:#999!important;opacity:.4}.btn-warning:disabled{background:#999!important;opacity:.4}.btn-danger:disabled{background:#999!important;opacity:.4}button:active:not(:disabled){transform:translateY(0)}@media (max-width: 768px){.game-container{padding:calc(4px + env(safe-area-inset-top)) calc(6px + env(safe-area-inset-right)) calc(4px + env(safe-area-inset-bottom)) calc(6px + env(safe-area-inset-left));min-height:100dvh;max-height:100dvh}.opponents-area{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.opponent-player{min-width:100px;flex-shrink:0;padding:6px 8px}.opponent-player .player-avatar{width:28px;height:28px;font-size:16px;border-width:1.5px}.opponent-player .player-name{font-size:14px}.opponent-hand{height:40px}.game-board{flex-wrap:wrap;padding:8px}.recent-plays{display:none}.game-container .action-buttons{display:grid;grid-template-columns:1fr 1fr;gap:6px}.game-container .action-buttons .btn-primary,.game-container .action-buttons .btn-warning{grid-column:span 2}.human-hand{min-height:92px;padding-top:10px}.human-hand .card{width:clamp(34px,calc((100% - 5 * 3px) / 7),52px);max-width:52px}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRow{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes pulse-declare{0%,to{box-shadow:0 0 #d32f2f66}50%{box-shadow:0 0 0 4px #d32f2f00}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-5px)}20%,40%,60%,80%{transform:translate(5px)}}@keyframes celebrate{0%,to{transform:scale(1)}25%{transform:scale(1.1) rotate(-5deg)}75%{transform:scale(1.1) rotate(5deg)}}.player-declared{animation:pulse-declare 2s ease-in-out infinite}.celebrating{animation:celebrate 1s ease-out}.game-footer{text-align:center;padding:6px 8px;color:#ffffffb3;font-family:var(--font-primary, sans-serif);font-size:11px;flex-shrink:0;-webkit-user-select:none;user-select:none}.game-footer p,.game-footer span{margin:0}.game-id-display{color:#fff9;font-size:10px;font-family:var(--font-primary, sans-serif);letter-spacing:.02em}.footer-separator{color:#fff6;margin:0 4px}.public-rooms-container{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;padding:28px 20px calc(20px + env(safe-area-inset-bottom));max-width:520px;margin:0 auto}.public-rooms-main{flex:1;min-height:0;display:flex;flex-direction:column}.public-rooms-header{text-align:center;margin-bottom:28px}.public-rooms-title{display:flex;flex-direction:column;align-items:center;text-align:center;margin:0 auto 8px;padding:0 4px;width:100%;max-width:100%}.public-rooms-word{display:block;font-family:var(--font-brand);font-size:clamp(2rem,10vw,3rem);font-weight:400;line-height:.92;letter-spacing:.03em;text-transform:uppercase;background:linear-gradient(100deg,var(--genz-lime),var(--genz-cyan));-webkit-background-clip:text;background-clip:text;color:var(--genz-lime);-webkit-text-fill-color:transparent}.public-join-note{margin:-8px 0 16px;text-align:center;color:var(--genz-text-muted);font-size:.875rem;line-height:1.5}.public-rooms-tagline{color:var(--genz-text);font-size:.9375rem;line-height:1.55;max-width:36ch;margin:0 auto}.public-rooms-footer{display:flex;gap:10px;margin-top:20px;padding-top:16px;flex-shrink:0}.public-rooms-footer .btn-random-room{flex:1;min-width:0}.public-rooms-footer .btn-back{flex-shrink:0}.no-rooms-actions{display:flex;flex-direction:column;gap:10px;margin-top:22px;width:100%;max-width:280px;margin-left:auto;margin-right:auto}.no-rooms-actions .btn-refresh,.no-rooms-actions .btn-primary{width:100%}.btn-random-room,.public-rooms-footer .btn-random-room{background:linear-gradient(135deg,var(--genz-lime),#9fd400);color:var(--genz-ink);font-family:var(--font-primary);font-weight:600;padding:12px 18px;border:1px solid rgba(212,255,0,.3);border-radius:var(--radius-md);cursor:pointer;box-shadow:var(--shadow-sm)}.btn-random-room:hover:not(:disabled){filter:brightness(1.05)}.btn-back,.btn-refresh{background:#ffffff0a;color:var(--genz-cyan);border:1px solid var(--border-subtle);padding:12px 18px;border-radius:var(--radius-md);font-family:var(--font-primary);font-weight:600;font-size:.875rem;cursor:pointer}.btn-back:hover,.btn-refresh:hover{background:#ffffff14;border-color:var(--border-strong)}.rooms-list{margin:0 auto;flex:1;display:flex;flex-direction:column;min-height:0}.rooms-container{flex:1;min-height:0}.rooms-list-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.rooms-list-header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.btn-refresh--compact{padding:8px 12px;font-size:.8125rem}.rooms-list-header h2{font-family:var(--font-primary);font-size:.9375rem;color:var(--genz-text);font-weight:600}.rooms-list-header span{color:var(--genz-text-muted);font-size:.875rem}.room-card{background:var(--genz-surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:18px 16px;margin-bottom:10px;cursor:pointer;box-shadow:var(--shadow-sm);transition:border-color .2s ease,box-shadow .2s ease}.room-card:hover{border-color:#d4ff0040;box-shadow:var(--shadow-md);transform:none}.room-code{font-family:var(--font-display);font-size:1.2rem;font-weight:700;color:var(--genz-cyan);letter-spacing:.15em}.room-host,.room-meta{color:var(--genz-text-muted);font-size:.875rem}.room-players{color:var(--genz-lime);font-weight:600}.empty-state,.no-rooms{text-align:center;padding:40px 24px;background:var(--genz-surface-2);border:1px dashed var(--border-strong);border-radius:var(--radius-lg)}.empty-state h3,.no-rooms h3{font-family:var(--font-display);color:var(--genz-text);margin-bottom:8px;font-weight:700}.empty-state p,.no-rooms p{color:var(--genz-text-muted)}.loading-message,.error-message,.rooms-container .loading{text-align:center;padding:24px;color:var(--genz-cyan);font-weight:500}.error-message,.no-rooms.error{color:var(--error-color)}.no-rooms.error{border-color:#ff6b7a59}.public-rooms-container .modal-overlay{background:#06060cb8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.public-rooms-container .input-group label{font-family:var(--font-primary);font-size:.8125rem;color:var(--genz-text-muted);text-transform:none}.public-rooms-container .input-group input{border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:var(--genz-surface)}.join-room-btn,.public-rooms-container .btn-primary{width:100%;margin-top:6px}.rooms-count{color:var(--genz-magenta);font-weight:600;font-size:.8125rem}.room-info{display:flex;flex-wrap:wrap;gap:12px;margin:10px 0 12px;font-size:.8125rem;color:var(--genz-text-muted)}.rules-page{display:flex;flex-direction:column;width:100%;max-width:560px;height:100vh;height:100dvh;max-height:100dvh;margin:0 auto;padding:28px 20px calc(20px + env(safe-area-inset-bottom));overflow:hidden;container-type:inline-size}.rules-header{text-align:center;margin-bottom:20px;flex-shrink:0;width:100%;overflow:visible}.rules-title{display:flex;flex-direction:column;align-items:center;width:100%;max-width:100%;margin:0 auto;padding:0 4px 4px;overflow:visible}.rules-title-word{font-family:var(--font-brand);font-weight:400;line-height:1.05;letter-spacing:.03em;text-transform:uppercase;background:linear-gradient(100deg,var(--genz-lime),var(--genz-cyan));-webkit-background-clip:text;background-clip:text;color:var(--genz-lime);-webkit-text-fill-color:transparent}.rules-title-rules{font-size:clamp(1.5rem,7.5cqi,2.25rem);margin-bottom:.12em}@supports not (font-size: 1cqi){.rules-title-rules{font-size:clamp(1.5rem,7.5vw,2.25rem)}}.rules-title-play{display:block;width:100%;overflow:visible;text-align:center}.rules-title-play-text{display:inline-block;white-space:nowrap;letter-spacing:.02em;line-height:1.05;font-size:1.35rem}.rules-tagline{color:var(--genz-text);font-family:var(--font-primary);font-size:.9375rem;font-weight:400;line-height:1.55;max-width:36ch;margin:10px auto 0;text-align:center}.rules-main{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;padding:4px 2px 16px}.rules-content{text-align:left;line-height:1.65;color:var(--genz-text)}.rules-accordions{display:flex;flex-direction:column;gap:10px}.rules-accordion{border:1px solid var(--border-subtle);border-radius:var(--radius-md);background:#ffffff05;overflow:hidden}.rules-accordion-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.rules-accordion-summary::-webkit-details-marker{display:none}.rules-accordion-title{font-family:var(--font-primary);color:var(--genz-cyan);font-size:1.05rem;font-weight:700;line-height:1.3;text-align:left}.rules-accordion-chevron{flex-shrink:0;width:10px;height:10px;border-right:2px solid var(--genz-cyan);border-bottom:2px solid var(--genz-cyan);transform:rotate(45deg);margin-top:-4px;transition:transform .2s ease}.rules-accordion[open] .rules-accordion-chevron{transform:rotate(-135deg);margin-top:4px}.rules-accordion-panel{padding:0 16px 16px;border-top:1px solid var(--border-subtle)}.rules-accordion-panel>:first-child{margin-top:14px}.rules-objective-list{margin-bottom:0;padding-left:1.35rem}.rules-objective-list li{margin-bottom:10px;color:var(--genz-text-muted);line-height:1.6}.rules-objective-list li:last-child{margin-bottom:0}.rules-turn-intro{margin-bottom:14px;line-height:1.65}.rules-accordion-panel p{margin-bottom:12px;color:var(--genz-text-muted)}.rules-accordion-panel p:last-child,.rules-accordion-panel ul:last-child,.rules-accordion-panel ol:last-child,.rules-accordion-panel .rules-table-wrap:last-child{margin-bottom:0}.rules-accordion-panel ul,.rules-accordion-panel ol{margin-bottom:0;padding-left:1.35rem}.rules-content li{margin-bottom:8px;color:var(--genz-text-muted)}.rules-content strong{color:var(--genz-magenta);font-weight:600}.rules-table-wrap{margin-bottom:0;overflow-x:auto;border:1px solid var(--border-subtle);border-radius:var(--radius-md)}.rules-table{width:100%;border-collapse:collapse;font-size:.9375rem}.rules-table th,.rules-table td{padding:10px 14px;text-align:left;border-bottom:1px solid var(--border-subtle)}.rules-table th{font-family:var(--font-primary);font-weight:600;color:var(--genz-cyan);background:#5ce1e614}.rules-table td{color:var(--genz-text-muted)}.rules-table tbody tr:last-child td{border-bottom:none}.rules-table td strong{color:var(--genz-magenta);font-weight:600}.rules-tips p{margin-bottom:14px;color:var(--genz-text-muted);line-height:1.6}.rules-tips p:last-child{margin-bottom:0}.rules-footer{flex-shrink:0;padding-top:16px;margin-top:8px}.rules-footer .btn-back{width:100%;padding:14px 20px;background:#ffffff0a;color:var(--genz-cyan);border:1px solid var(--border-subtle);border-radius:var(--radius-md);font-family:var(--font-primary);font-weight:600;font-size:.9375rem;cursor:pointer;transition:background .2s ease,border-color .2s ease}.rules-footer .btn-back:hover{background:#ffffff14;border-color:var(--border-strong)}.leaderboard-container{min-height:100vh;min-height:100dvh;background:var(--genz-bg, #0a0a0f);color:var(--genz-text, #f0f0f4);padding:16px 14px calc(24px + env(safe-area-inset-bottom,0px));max-width:640px;margin:0 auto;display:flex;flex-direction:column;gap:12px}.leaderboard-header{display:flex;align-items:center;gap:12px}.leaderboard-header h1{font-family:var(--font-display, sans-serif);font-size:24px;font-weight:800;margin:0}.lb-back{background:var(--genz-surface, #14141c);color:var(--genz-text, #f0f0f4);border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));border-radius:10px;width:38px;height:38px;font-size:18px;cursor:pointer}.lb-board-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch;scrollbar-width:none}.lb-board-tabs::-webkit-scrollbar{display:none}.lb-tab{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--genz-surface, #14141c);border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));color:var(--genz-text-muted, #9494a8);border-radius:12px;padding:8px 12px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s ease}.lb-tab.active{background:var(--genz-violet, #a855f7);color:#fff;border-color:transparent}.lb-tab-icon{font-size:16px}.lb-tab-label{white-space:nowrap}.lb-filters{display:flex;flex-direction:column;gap:6px}.lb-filter-group{display:flex;gap:6px;flex-wrap:wrap}.lb-filter{background:transparent;border:1px solid var(--border-subtle, rgba(255, 255, 255, .14));color:var(--genz-text-muted, #9494a8);border-radius:999px;padding:5px 12px;font-size:12px;font-weight:600;cursor:pointer}.lb-filter.active{background:var(--genz-cyan, #00e8ff);color:#0a0a0f;border-color:transparent}.lb-board-desc{margin:0;font-size:12px;color:var(--genz-text-muted, #9494a8)}.lb-list{display:flex;flex-direction:column;gap:6px}.lb-row{display:flex;align-items:center;gap:10px;background:var(--genz-surface, #14141c);border:1px solid var(--border-subtle, rgba(255, 255, 255, .08));border-radius:12px;padding:10px 12px}.lb-row.top3{border-color:#ffd93d59;background:linear-gradient(135deg,rgba(255,217,61,.08),var(--genz-surface, #14141c))}.lb-row.me{border-color:var(--genz-cyan, #00e8ff);box-shadow:0 0 8px #00e8ff40}.lb-rank{width:28px;text-align:center;font-weight:800;font-size:14px;flex-shrink:0}.lb-avatar{width:36px;height:36px;border-radius:50%;flex-shrink:0}.lb-name{flex:1;font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lb-you{margin-left:8px;font-size:10px;font-weight:800;color:#0a0a0f;background:var(--genz-cyan, #00e8ff);border-radius:999px;padding:2px 8px;vertical-align:middle}.lb-value{font-weight:800;font-size:16px;font-variant-numeric:tabular-nums;color:var(--genz-lime, #d4ff00);flex-shrink:0}.lb-unit{font-size:11px;font-weight:600;color:var(--genz-text-muted, #9494a8)}.lb-status{text-align:center;color:var(--genz-text-muted, #9494a8);padding:32px 0;font-size:14px}.lb-error{color:#ff6b6b}.lb-retry{display:block;margin:12px auto 0;background:var(--genz-violet, #a855f7);color:#fff;border:none;border-radius:8px;padding:8px 20px;font-weight:600;cursor:pointer}*{margin:0;padding:0;box-sizing:border-box}:root{--font-display: "Syne", "Alan Sans", sans-serif;--font-brand: "Sekuya", "Syne", serif;--font-primary: "DM Sans", "Alan Sans", -apple-system, BlinkMacSystemFont, sans-serif;--genz-bg: #0a0a12;--genz-lime: #d4ff00;--genz-magenta: #ff2d92;--genz-cyan: #5ce1e6;--genz-violet: #a855f7;--genz-orange: #ff8c5a;--genz-surface: #14141c;--genz-surface-2: #1c1c28;--genz-ink: #0a0a0f;--genz-border: rgba(255, 255, 255, .1);--border-subtle: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--genz-text: #f0f0f4;--genz-text-muted: #9494a8;--primary-gradient: linear-gradient(125deg, #ff2d92 0%, #a855f7 45%, #5ce1e6 100%);--vibrant-gradient: var(--genz-bg);--dark-bg: var(--genz-bg);--card-bg: var(--genz-surface-2);--text-primary: var(--genz-text);--text-secondary: var(--genz-cyan);--success-color: var(--genz-lime);--error-color: #ff6b7a;--accent-coral: var(--genz-orange);--accent-cyan: var(--genz-cyan);--accent-violet: var(--genz-magenta);--shadow-sm: 0 2px 12px rgba(0, 0, 0, .28);--shadow-md: 0 12px 40px rgba(0, 0, 0, .45);--shadow-glow-lime: 0 0 32px rgba(212, 255, 0, .12);--shadow-glow-magenta: 0 0 28px rgba(255, 45, 146, .1);--shadow-brutal: var(--shadow-sm);--shadow-brutal-lg: var(--shadow-md);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-chunky: var(--radius-md);--radius-chunky-alt: var(--radius-lg)}body{font-family:var(--font-primary);background:var(--genz-bg);background-image:radial-gradient(ellipse 70% 45% at 85% -5%,rgba(255,45,146,.14),transparent 55%),radial-gradient(ellipse 55% 40% at 5% 15%,rgba(92,225,230,.1),transparent 50%),radial-gradient(ellipse 50% 35% at 50% 105%,rgba(212,255,0,.06),transparent 45%);background-attachment:fixed;min-height:100vh;min-height:100dvh;color:var(--genz-text);padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior:none}body.game-page{background:#1e1e1e!important;background-image:none!important}html.native-app{-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}html.native-app input,html.native-app textarea,html.native-app [contenteditable=true]{-webkit-user-select:text;user-select:text}#root{min-height:100vh;min-height:100dvh}.shell-label{display:block;margin-bottom:8px;font-family:var(--font-primary);font-size:.8125rem;font-weight:600;color:var(--genz-text-muted);letter-spacing:.02em}.shell-card{background:var(--genz-surface-2);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.shell-card--inset{background:var(--genz-surface);border-radius:var(--radius-md);box-shadow:inset 0 1px #ffffff0a}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 20px;border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-primary);font-size:.9375rem;font-weight:600;letter-spacing:.01em;text-transform:none;cursor:pointer;transition:background .2s ease,border-color .2s ease,box-shadow .2s ease,transform .15s ease,opacity .2s ease;pointer-events:auto;position:relative;z-index:1;text-align:center;line-height:1.3}.btn:active:not(:disabled){transform:scale(.98)}.btn-primary{background:linear-gradient(135deg,var(--genz-lime) 0%,#9fd400 100%);color:var(--genz-ink);border-color:#d4ff0059;box-shadow:var(--shadow-sm),var(--shadow-glow-lime)}.btn-primary:hover:not(:disabled){box-shadow:var(--shadow-md),0 0 28px #d4ff0038;filter:brightness(1.04)}.btn-primary:disabled{opacity:.42;cursor:not-allowed;box-shadow:none;filter:grayscale(.2)}.btn-secondary{background:#ffffff0a;color:var(--genz-text);border-color:var(--border-subtle);box-shadow:none}.btn-secondary:hover:not(:disabled){background:#ffffff14;border-color:#ffffff24}.btn-secondary:disabled{opacity:.4;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--genz-cyan);border-color:transparent;box-shadow:none}.btn-ghost:hover:not(:disabled){color:var(--genz-lime);background:#00e8ff0f}.btn-link{background:transparent;border:none;box-shadow:none;color:var(--genz-cyan);font-weight:600;padding:10px 12px}.btn-link:hover{color:var(--genz-lime)}.btn-accent{background:linear-gradient(135deg,var(--genz-magenta),#e91e8c);color:#fff;border-color:#ff2d9259;box-shadow:var(--shadow-sm)}.btn-accent:hover:not(:disabled){filter:brightness(1.06);box-shadow:var(--shadow-md)}
