:root{--color-bg-base:#0d0d0f;--color-bg-surface:#1a1a1f;--color-bg-surface-raised:#22222a;--color-border:#2a2a35;--color-accent:#e0102a;--color-accent-dark:#8b0000;--color-rank-gold:gold;--color-rank-silver:silver;--color-rank-bronze:#cd7f32;--color-text-primary:#f0f0f5;--color-text-muted:#8888a0;--color-text-disabled:#44444f;--color-success:#22c55e;--color-error:#e0102a;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-pill:9999px;--font-family:system-ui, -apple-system, sans-serif;--font-size-display:32px;--font-size-title:20px;--font-size-heading:17px;--font-size-body:15px;--font-size-label:13px;--font-size-meta:11px;--lightningcss-light: ;--lightningcss-dark:initial;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font:var(--font-size-body) / 1.45 var(--font-family);color:var(--color-text-primary);background:var(--color-bg-base);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{flex-direction:column;min-height:100svh;display:flex}body{background:var(--color-bg-base);color:var(--color-text-primary);margin:0}h1,h2{font-family:var(--font-family);color:var(--color-text-primary);margin:0 0 var(--space-2);font-weight:700}h1{font-size:var(--font-size-title)}h2{font-size:var(--font-size-heading)}p{margin:0}.bottom-nav{background:var(--color-bg-surface);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.nav-tab{min-height:52px;padding:var(--space-1) 0;letter-spacing:.3px;color:var(--color-text-muted);cursor:pointer;font-size:10px;font-weight:600;font-family:var(--font-family);background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:2px;text-decoration:none;display:flex}.nav-icon{font-size:20px;line-height:1}.nav-label{color:inherit}.nav-tab.active{color:var(--color-accent)}.nav-tab.active .nav-icon{filter:drop-shadow(0 0 4px var(--color-accent))}.nav-dot{background:var(--color-accent);border-radius:50%;width:4px;height:4px}.nav-auth{cursor:default}.login-btn{width:100%;color:var(--color-accent);letter-spacing:.3px;cursor:pointer;min-height:52px;padding:var(--space-1) var(--space-2);font-size:10px;font-weight:600;font-family:var(--font-family);background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex}.login-btn .nav-icon{filter:drop-shadow(0 0 4px var(--color-accent))}.user-info{min-height:52px;padding:var(--space-1) 0;color:var(--color-text-muted);cursor:pointer;flex-direction:column;align-items:center;gap:2px;text-decoration:none;display:flex}.user-info.active{color:var(--color-accent)}.user-info.active .nav-icon{filter:drop-shadow(0 0 4px var(--color-accent))}.user-name{letter-spacing:.3px;color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;max-width:64px;font-size:10px;font-weight:600;overflow:hidden}.logout-btn{color:var(--color-text-muted);cursor:pointer;min-height:16px;font-size:9px;font-family:var(--font-family);background:0 0;border:none;padding:0}.toast{bottom:calc(env(safe-area-inset-bottom) + 68px);background:var(--color-bg-surface-raised);color:var(--color-text-primary);padding:var(--space-3) var(--space-5);border-radius:var(--radius-md);font-size:var(--font-size-body);font-family:var(--font-family);z-index:1000;white-space:nowrap;animation:.2s ease-out slideUp,.3s ease-in 1.7s forwards fadeOut;position:fixed;left:50%;transform:translate(-50%)}.toast-error{border:1px solid var(--color-error)}@keyframes slideUp{0%{opacity:0;transform:translate(-50%)translateY(20px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.suit-watermark{color:var(--color-text-primary);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;font-size:40vw;line-height:1;display:flex;position:fixed;inset:0}.podium-block{justify-content:center;align-items:flex-end;gap:var(--space-3);margin-bottom:var(--space-6);display:flex}.podium-card{align-items:center;gap:var(--space-1);min-width:0;padding:var(--space-4) var(--space-2);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center;flex-direction:column;flex:1;display:flex}.podium-card-first{padding-top:var(--space-6);border-color:var(--color-rank-gold);order:2}.podium-card-second{border-color:var(--color-rank-silver);order:1}.podium-card-third{border-color:var(--color-rank-bronze);order:3}.podium-medal{font-size:var(--font-size-title);line-height:1}.podium-avatar{border-radius:var(--radius-pill);background:var(--color-bg-surface-raised);border:2px solid;flex-shrink:0;justify-content:center;align-items:center;font-weight:800;display:flex}.podium-card-first .podium-avatar{width:56px;height:56px;font-size:var(--font-size-heading);border-color:var(--color-rank-gold);color:var(--color-rank-gold)}.podium-card-second .podium-avatar{width:46px;height:46px;font-size:var(--font-size-body);border-color:var(--color-rank-silver);color:var(--color-rank-silver)}.podium-card-third .podium-avatar{width:42px;height:42px;font-size:var(--font-size-label);border-color:var(--color-rank-bronze);color:var(--color-rank-bronze)}.podium-name{font-size:var(--font-size-body);color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;max-width:100%;font-weight:600;overflow:hidden}.podium-score{font-size:var(--font-size-display);color:var(--color-text-primary);font-variant-numeric:tabular-nums;overflow-wrap:break-word;max-width:100%;font-weight:800;line-height:1.1}.podium-card-first .podium-score{color:var(--color-rank-gold)}.podium-card-second .podium-score{font-size:var(--font-size-title);color:var(--color-rank-silver)}.podium-card-third .podium-score{font-size:var(--font-size-heading);color:var(--color-rank-bronze)}.podium-stats{font-size:var(--font-size-meta);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.podium-platform{width:100%;margin-top:var(--space-2);border-radius:var(--radius-sm) var(--radius-sm) 0 0}.podium-card-first .podium-platform{background:color-mix(in srgb, var(--color-rank-gold) 18%, transparent);border:1px solid color-mix(in srgb, var(--color-rank-gold) 30%, transparent);border-bottom:none;height:32px}.podium-card-second .podium-platform{background:color-mix(in srgb, var(--color-rank-silver) 15%, transparent);border:1px solid color-mix(in srgb, var(--color-rank-silver) 25%, transparent);border-bottom:none;height:22px}.podium-card-third .podium-platform{background:color-mix(in srgb, var(--color-rank-bronze) 15%, transparent);border:1px solid color-mix(in srgb, var(--color-rank-bronze) 25%, transparent);border-bottom:none;height:14px}.leaderboard-row{min-height:56px}.leaderboard-row td{padding:var(--space-3) var(--space-2);border-bottom:1px solid var(--color-border);vertical-align:middle}.leaderboard-row-rank{width:24px;color:var(--color-text-muted);text-align:center;font-variant-numeric:tabular-nums;font-weight:800}.leaderboard-row-player{align-items:center;gap:var(--space-3);width:100%;display:flex}.leaderboard-row-avatar{border-radius:var(--radius-pill);background:var(--color-bg-surface);border:1px solid var(--color-border);width:36px;height:36px;color:var(--color-text-muted);font-size:var(--font-size-label);flex-shrink:0;justify-content:center;align-items:center;font-weight:800;display:flex}.leaderboard-row-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.leaderboard-row-name{color:var(--color-text-primary);font-size:var(--font-size-body);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.leaderboard-row-meta{color:var(--color-text-muted);font-size:var(--font-size-meta);font-variant-numeric:tabular-nums;font-weight:600}.leaderboard-row-winrate-track{background:var(--color-bg-surface-raised);border-radius:var(--radius-pill);width:100%;height:4px;display:block;overflow:hidden}.leaderboard-row-winrate-fill{background:var(--color-accent);height:100%;display:block}.leaderboard-row-score-col{text-align:right;white-space:nowrap}.leaderboard-row-score{font-size:var(--font-size-heading);color:var(--color-text-primary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;max-width:100%;font-weight:800;display:block;overflow:hidden}.leaderboard-row-winpct{font-size:var(--font-size-meta);color:var(--color-text-muted);font-variant-numeric:tabular-nums;text-overflow:ellipsis;max-width:100%;font-weight:700;display:block;overflow:hidden}.leaderboard-table{border-collapse:collapse;table-layout:fixed;width:100%}.leaderboard-col-rank{width:24px}.leaderboard-col-score{width:96px}.leaderboard-table thead th{border:0;padding:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.leaderboard-page{padding:var(--space-4);padding-bottom:60px}.leaderboard-skeleton-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;display:flex}.leaderboard-skeleton-row{border-radius:var(--radius-md);background:var(--color-bg-surface-raised);min-height:56px;list-style:none;animation:1.2s ease-in-out infinite leaderboard-shimmer}@keyframes leaderboard-shimmer{0%,to{opacity:.6}50%{opacity:1}}.leaderboard-error-banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-body);flex-direction:column;display:flex}.leaderboard-error-banner button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.leaderboard-empty-state{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted)}.leaderboard-section-title{font-size:var(--font-size-meta);letter-spacing:1px;text-transform:uppercase;color:var(--color-text-muted);margin:0 0 var(--space-3);font-weight:700}.player-chip{justify-content:space-between;align-items:center;gap:var(--space-3);min-height:44px;padding:var(--space-2) var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);font-family:var(--font-family);list-style:none;display:flex}.player-chip-avatar{background:var(--color-bg-surface-raised);width:28px;height:28px;color:var(--color-text-muted);font-size:var(--font-size-label);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.player-chip-main{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.player-chip-name-row{align-items:center;gap:var(--space-2);min-width:0;display:flex}.player-chip-name{font-size:var(--font-size-body);color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.player-chip-creator-badge{padding:1px var(--space-2);border-radius:var(--radius-sm);color:var(--color-accent);text-transform:uppercase;letter-spacing:.3px;background:#e0102a26;flex-shrink:0;font-size:10px;font-weight:700}.player-chip-winrate-row{align-items:center;gap:var(--space-2);display:flex}.player-chip-winrate-track{border-radius:var(--radius-pill);background:var(--color-bg-surface-raised);flex:1;height:4px;overflow:hidden}.player-chip-winrate-fill{border-radius:var(--radius-pill);background:var(--color-accent);height:100%;display:block}.player-chip-winrate-label{text-align:right;min-width:30px;font-size:var(--font-size-meta);color:var(--color-text-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.player-chip-stats{font-size:var(--font-size-meta);color:var(--color-text-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.player-chip-select-btn{all:unset;justify-content:space-between;align-items:center;gap:var(--space-3);cursor:pointer;box-sizing:border-box;width:100%;min-height:44px;display:flex}.player-chip-selected{background:var(--color-accent);border-color:var(--color-accent)}.player-chip-selected .player-chip-name,.player-chip-selected .player-chip-stats{color:var(--color-text-primary)}.player-chip-winner{background:var(--color-accent);border-color:var(--color-accent)}.player-chip-loser{background:var(--color-accent-dark);border-color:var(--color-accent-dark)}.player-chip-winner .player-chip-name,.player-chip-winner .player-chip-stats,.player-chip-loser .player-chip-name,.player-chip-loser .player-chip-stats{color:var(--color-text-primary)}.player-chip-selected .player-chip-avatar,.player-chip-winner .player-chip-avatar,.player-chip-loser .player-chip-avatar{color:var(--color-text-primary);background:#fff3}.player-chip-selected .player-chip-winrate-track,.player-chip-winner .player-chip-winrate-track,.player-chip-loser .player-chip-winrate-track{background:#ffffff40}.player-chip-selected .player-chip-winrate-fill,.player-chip-winner .player-chip-winrate-fill,.player-chip-loser .player-chip-winrate-fill{background:var(--color-text-primary)}.player-chip-selected .player-chip-winrate-label,.player-chip-winner .player-chip-winrate-label,.player-chip-loser .player-chip-winrate-label{color:var(--color-text-primary)}.player-chip-disabled{opacity:.4}.player-chip-disabled .player-chip-select-btn{cursor:not-allowed}.player-chip-remove-btn{min-width:44px;min-height:44px;margin:0 calc(var(--space-3) * -1) 0 0;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.player-chip-remove-btn:hover{color:var(--color-error)}.fab{right:20px;bottom:calc(20px + env(safe-area-inset-bottom) + 60px);border-radius:var(--radius-pill);background:var(--color-accent);width:56px;height:56px;color:var(--color-text-primary);font-family:var(--font-family);cursor:pointer;z-index:500;border:none;font-size:24px;line-height:1;position:fixed;box-shadow:0 4px 12px #e0102a66}.players-page{padding:var(--space-4);padding-bottom:120px}.player-list,.player-skeleton-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;display:flex}.player-skeleton-row{border-radius:var(--radius-pill);background:var(--color-bg-surface-raised);min-height:44px;list-style:none;animation:1.2s ease-in-out infinite shimmer}@keyframes shimmer{0%,to{opacity:.6}50%{opacity:1}}.players-error-banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-body);flex-direction:column;display:flex}.players-error-banner button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.players-empty-state{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted)}.players-empty-hint{margin-top:var(--space-2);font-size:var(--font-size-label)}.players-add-form{left:var(--space-4);right:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom) + 60px);gap:var(--space-2);padding:var(--space-3);background:var(--color-bg-surface-raised);border-radius:var(--radius-md);z-index:500;display:flex;position:fixed}.players-add-form input{min-height:44px;padding:0 var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-body);flex:1}.players-add-form button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.players-add-form button:disabled{background:var(--color-text-disabled);cursor:not-allowed}.players-add-form .players-cancel-btn{border:1px solid var(--color-border);color:var(--color-text-muted);background:0 0}.badge{padding:0 var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-family);font-size:var(--font-size-label);align-items:center;font-weight:500;display:inline-flex}.badge-active{color:var(--color-success);background:#22c55e26}.badge-closed{background:var(--color-text-disabled);color:var(--color-text-primary)}.room-card{padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);list-style:none}.room-card-top-row{align-items:center;gap:var(--space-3);display:flex}.room-card-link{gap:var(--space-2);min-width:0;color:inherit;flex-direction:column;flex:1;text-decoration:none;display:flex}.room-card-header{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.room-card-title{font-size:var(--font-size-heading);color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.room-card-badges{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.room-card-tournament-badge{padding:2px var(--space-2);border-radius:var(--radius-sm);color:var(--color-accent);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;background:#e0102a26;font-size:10px;font-weight:700}.room-card-date{font-size:var(--font-size-meta);color:var(--color-text-muted)}.room-card-meta{gap:var(--space-4);font-size:var(--font-size-meta);color:var(--color-text-muted);font-variant-numeric:tabular-nums;display:flex}.room-card-close-btn{border:1px solid var(--color-border);border-radius:var(--radius-pill);width:44px;height:44px;color:var(--color-text-muted);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;transition:border-color .12s,color .12s;display:inline-flex}.room-card-close-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.room-card-close-btn:disabled{opacity:.5;cursor:not-allowed}.room-card-delete-btn{border:1px solid var(--color-border);border-radius:var(--radius-pill);width:44px;height:44px;color:var(--color-text-muted);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;transition:border-color .12s,color .12s;display:inline-flex}.room-card-delete-btn:hover:not(:disabled){border-color:var(--color-error);color:var(--color-error)}.room-card-delete-btn:disabled{opacity:.5;cursor:not-allowed}.bottom-sheet-backdrop{z-index:550;background:#000000b3;position:fixed;inset:0}.bottom-sheet{background:var(--color-bg-surface-raised);border-radius:var(--radius-lg) var(--radius-lg) 0 0;max-height:85vh;padding:var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom));z-index:560;animation:.3s bottom-sheet-slide-up;position:fixed;bottom:0;left:0;right:0;overflow-y:auto}@keyframes bottom-sheet-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.bottom-sheet-closing{animation:.3s forwards bottom-sheet-slide-down}@keyframes bottom-sheet-slide-down{0%{transform:translateY(0)}to{transform:translateY(100%)}}.bottom-sheet-handle{width:36px;height:4px;margin:0 auto var(--space-3);background:var(--color-border);border-radius:var(--radius-pill);touch-action:none}.player-picker-header{justify-content:space-between;align-items:center;gap:var(--space-3);margin:0 0 var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border);display:flex}.player-picker-header h2{font-size:var(--font-size-title);color:var(--color-text-primary);margin:0;font-weight:800}.player-picker-count{padding:var(--space-1) var(--space-2);background:var(--color-bg-surface);border-radius:var(--radius-pill);font-size:var(--font-size-label);color:var(--color-text-muted);font-variant-numeric:tabular-nums;flex-shrink:0}.player-picker-search{box-sizing:border-box;width:100%;min-height:44px;padding:0 var(--space-3);margin-bottom:var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-body)}.player-picker-list{gap:var(--space-2);margin:0 0 var(--space-4);flex-direction:column;max-height:40vh;padding:0;display:flex;overflow-y:auto}.player-picker-empty{margin:0 0 var(--space-4);padding:var(--space-3);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-body);background:var(--color-bg-surface);border-radius:var(--radius-sm)}.player-picker-divider{align-items:center;gap:var(--space-2);margin:0 0 var(--space-3);color:var(--color-text-muted);font-size:var(--font-size-meta);display:flex}.player-picker-divider:before,.player-picker-divider:after{content:"";background:var(--color-border);flex:1;height:1px}.player-picker-add-new{gap:var(--space-2);margin-bottom:var(--space-4);display:flex}.player-picker-add-new input{min-height:44px;padding:0 var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-body);flex:1}.player-picker-add-new button,.player-picker-footer button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.player-picker-add-new button:disabled,.player-picker-footer button:disabled{background:var(--color-text-disabled);cursor:not-allowed}.player-picker-footer{gap:var(--space-2);display:flex}.player-picker-footer button{flex:1}.player-picker-footer .player-picker-secondary-btn{border:1px solid var(--color-border);color:var(--color-text-muted);background:0 0}.rooms-page{padding:var(--space-4);overscroll-behavior-y:contain;padding-bottom:120px}.room-form-backdrop{z-index:490;background:#0006;position:fixed;inset:0}.room-list,.room-skeleton-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;display:flex}.room-skeleton-card{border-radius:var(--radius-md);background:var(--color-bg-surface-raised);min-height:80px;list-style:none;animation:1.2s ease-in-out infinite room-shimmer}@keyframes room-shimmer{0%,to{opacity:.6}50%{opacity:1}}.rooms-error-banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-body);flex-direction:column;display:flex}.rooms-error-banner button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.rooms-empty-state{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted)}.rooms-empty-cta{margin-top:var(--space-3);min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.room-form{left:var(--space-4);right:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom) + 60px);gap:var(--space-3);max-height:70vh;padding:var(--space-4);background:var(--color-bg-surface-raised);border-radius:var(--radius-md);z-index:500;flex-direction:column;display:flex;position:fixed;overflow-y:auto}.room-form h2{font-size:var(--font-size-heading);color:var(--color-text-primary);margin:0}.room-form-name-input{min-height:44px;padding:0 var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-body)}.room-form-tournament-toggle{align-items:flex-start;gap:var(--space-3);min-height:44px;padding:var(--space-2) 0;cursor:pointer;display:flex}.room-form-tournament-toggle input{width:18px;height:18px;accent-color:var(--color-accent);cursor:pointer;flex-shrink:0;margin-top:3px}.room-form-tournament-toggle span{color:var(--color-text-primary);font-size:var(--font-size-body);flex-direction:column;gap:2px;display:flex}.room-form-tournament-hint{color:var(--color-text-muted);font-size:var(--font-size-meta);font-weight:400}.room-form-players-summary{gap:var(--space-2);flex-direction:column;display:flex}.room-form-players-empty{color:var(--color-text-muted);font-size:var(--font-size-body);margin:0}.room-form-players-chips{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.room-form-players-chip{padding:var(--space-1) var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);color:var(--color-text-primary);font-size:var(--font-size-label)}.room-form-picker-trigger{align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-body);cursor:pointer;background:0 0;align-self:flex-start;display:inline-flex}.room-form-picker-trigger:hover{border-color:var(--color-accent);color:var(--color-accent)}.room-form-teams-section{gap:var(--space-2);padding:var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);flex-direction:column;display:flex}.room-form-teams-title{color:var(--color-text-muted);font-size:var(--font-size-meta);text-transform:uppercase;letter-spacing:.5px;margin:0;font-weight:700}.room-form-teams-list{gap:var(--space-2);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.room-form-team-chip{min-height:44px;padding:0 var(--space-3);background:var(--color-bg-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-pill);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-label);cursor:pointer}.room-form-team-chip-pending{border-color:var(--color-accent);color:var(--color-accent)}.room-form-team-chip-paired{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-text-primary)}.room-form-teams-hint{color:var(--color-error);font-size:var(--font-size-meta);margin:0}.room-form-actions{gap:var(--space-2);display:flex}.room-form-actions button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none;flex:1}.room-form-actions button:disabled{background:var(--color-text-disabled);cursor:not-allowed}.room-form-actions .room-form-cancel-btn{border:1px solid var(--color-border);color:var(--color-text-muted);background:0 0}.add-game-title{margin:0 0 var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border);font-size:var(--font-size-title);color:var(--color-text-primary);font-weight:800}.add-game-title-accent{color:var(--color-accent)}.add-game-section{margin-bottom:var(--space-4)}.add-game-section-label{margin:0 0 var(--space-2);font-size:var(--font-size-label);letter-spacing:.5px;text-transform:uppercase;color:var(--color-text-muted);font-weight:700}.add-game-chip-list{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(130px,1fr));margin:0;padding:0;display:grid}.add-game-chip-list .player-chip-avatar,.add-game-chip-list .player-chip-winrate-row,.add-game-chip-list .player-chip-stats{display:none}.add-game-team-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.add-game-team-btn{width:100%;min-height:44px;padding:0 var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-family:var(--font-family);font-size:var(--font-size-body);text-align:left;cursor:pointer}.add-game-team-btn:disabled{opacity:.4;cursor:not-allowed}.add-game-team-btn-winner{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-text-primary)}.add-game-team-btn-loser{background:var(--color-accent-dark);border-color:var(--color-accent-dark);color:var(--color-text-primary)}.add-game-preview{padding:var(--space-3);text-align:center;color:var(--color-text-primary);font-size:var(--font-size-body)}.add-game-actions{gap:var(--space-2);margin-top:var(--space-3);display:flex}.add-game-actions button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none;flex:1}.add-game-actions button:disabled{background:var(--color-text-disabled);cursor:not-allowed}.add-game-actions .add-game-cancel-btn{border:1px solid var(--color-border);color:var(--color-text-muted);background:0 0}.room-chat-modal-body{padding:0 var(--space-3)}.room-chat-modal-header{margin-bottom:var(--space-3);justify-content:space-between;align-items:center;display:flex}.room-chat-modal-title{font-size:var(--font-size-heading);color:var(--color-text-primary);margin:0}.room-chat-modal-close{width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;font-size:22px;line-height:1;display:flex}.room-chat-status{color:var(--color-text-muted);font-size:var(--font-size-label);margin:var(--space-2) 0}.room-chat-error{color:var(--color-error)}.room-chat-messages{gap:var(--space-3);max-height:50vh;padding:var(--space-2) 2px;flex-direction:column;margin:0;list-style:none;display:flex;overflow:hidden auto}.room-chat-empty{color:var(--color-text-muted);font-size:var(--font-size-label);text-align:center;padding:var(--space-4) 0}.room-chat-message{flex-direction:column;align-items:flex-start;gap:4px;width:100%;display:flex}.room-chat-message.own{align-items:flex-end}.room-chat-message-sender{font-size:var(--font-size-meta);color:var(--color-text-muted);padding:0 var(--space-2)}.room-chat-message-row{align-items:center;gap:var(--space-1);max-width:100%;display:flex}.room-chat-message.own .room-chat-message-row{margin-left:var(--space-8);flex-direction:row-reverse}.room-chat-message:not(.own) .room-chat-message-row{margin-right:var(--space-8)}.room-chat-message-bubble{background:var(--color-bg-surface);border:1px solid var(--color-border);max-width:100%;color:var(--color-text-primary);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);font-size:var(--font-size-body);word-break:break-word;flex-direction:column;gap:2px;display:flex;box-shadow:0 1px 3px #0000004d}.room-chat-message.own .room-chat-message-bubble{background:var(--color-accent-dark);border-color:var(--color-accent-dark)}.room-chat-message-content{align-items:baseline;gap:var(--space-2);display:flex}.room-chat-message-time{font-size:var(--font-size-meta);color:var(--color-text-muted);flex-shrink:0}.room-chat-quote{border-left:2px solid var(--color-accent);padding:2px var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-meta);background:#00000026;flex-direction:column;gap:1px;display:flex}.room-chat-quote-sender{color:var(--color-accent);font-weight:600}.room-chat-quote-content{color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.room-chat-reply-btn{width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.room-chat-typing{font-size:var(--font-size-meta);color:var(--color-text-muted);margin:0 0 var(--space-2);padding:0 var(--space-1);font-style:italic}.room-chat-reply-preview{justify-content:space-between;align-items:center;gap:var(--space-2);background:var(--color-bg-surface);border:1px solid var(--color-border);border-left:2px solid var(--color-accent);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-2);display:flex}.room-chat-reply-preview-text{min-width:0;font-size:var(--font-size-meta);flex-direction:column;gap:1px;display:flex}.room-chat-reply-cancel{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;font-size:18px;line-height:1}.room-chat-form{gap:var(--space-2);display:flex}.room-chat-input{min-height:40px;padding:0 var(--space-3);background:var(--color-bg-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-pill);color:var(--color-text-primary);font-size:var(--font-size-body);font-family:var(--font-family);flex:1}.room-chat-input:focus{border-color:var(--color-accent);outline:none}.room-chat-send-btn{background:var(--color-accent);width:40px;height:40px;color:var(--color-text-primary);cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.room-chat-send-btn:disabled{background:var(--color-bg-surface-raised);color:var(--color-text-disabled);cursor:default}.room-chat-fab{left:20px;bottom:calc(20px + env(safe-area-inset-bottom) + 60px);border-radius:var(--radius-pill);background:var(--color-bg-surface-raised);width:56px;height:56px;color:var(--color-text-primary);cursor:pointer;z-index:500;border:none;justify-content:center;align-items:center;display:flex;position:fixed;box-shadow:0 4px 12px #0006}.room-chat-fab-badge{background:var(--color-accent);min-width:20px;height:20px;color:var(--color-text-primary);font-size:var(--font-size-meta);border-radius:var(--radius-pill);justify-content:center;align-items:center;padding:0 5px;font-weight:700;line-height:1;display:flex;position:absolute;top:-4px;right:-4px}.room-detail-page{padding:var(--space-4);gap:var(--space-4);flex-direction:column;padding-bottom:120px;display:flex}.room-detail-back{min-width:44px;min-height:44px;color:var(--color-text-primary);font-size:var(--font-size-title);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.room-detail-header{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.room-detail-header h1{font-size:var(--font-size-title);color:var(--color-text-primary);margin:0}.room-detail-header-badges{align-items:center;gap:var(--space-2);flex-shrink:0;display:flex}.room-detail-tournament-badge{padding:2px var(--space-2);border-radius:var(--radius-sm);color:var(--color-accent);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;background:#e0102a26;font-size:10px;font-weight:700}.room-detail-columns{gap:var(--space-5);grid-template-columns:1fr;display:grid}.room-detail-columns>*{min-width:0}@media (width>=700px){.room-detail-columns{grid-template-columns:1fr 1fr;align-items:start}}.room-detail-section-title{font-size:var(--font-size-meta);letter-spacing:1px;text-transform:uppercase;color:var(--color-text-muted);margin:0 0 var(--space-3);font-weight:700}.room-detail-players-header{align-items:center;gap:var(--space-1);margin-bottom:var(--space-2);display:flex}.room-detail-players-toggle{min-width:0;min-height:44px;padding:0 var(--space-1);color:var(--color-text-muted);font-family:var(--font-family);font-size:var(--font-size-meta);letter-spacing:1px;text-transform:uppercase;cursor:pointer;background:0 0;border:none;flex:1;justify-content:space-between;align-items:center;font-weight:700;display:flex}.room-detail-players-toggle:hover{color:var(--color-text-primary)}.room-detail-players-add-btn{border:1px solid var(--color-border);border-radius:var(--radius-pill);width:32px;height:32px;color:var(--color-text-muted);cursor:pointer;background:0 0;flex-shrink:0;justify-content:center;align-items:center;transition:border-color .12s,color .12s;display:inline-flex}.room-detail-players-add-btn:hover{border-color:var(--color-accent);color:var(--color-accent)}.room-detail-players-chevron{transition:transform .15s;display:inline-flex}.room-detail-players-chevron.is-open{transform:rotate(180deg)}.room-detail-leaderboard-skeleton{gap:var(--space-3);flex-direction:column;margin:0;padding:0;display:flex}.room-detail-leaderboard-skeleton-row{border-radius:var(--radius-md);background:var(--color-bg-surface-raised);min-height:56px;list-style:none;animation:1.2s ease-in-out infinite room-detail-leaderboard-shimmer}@keyframes room-detail-leaderboard-shimmer{0%,to{opacity:.6}50%{opacity:1}}.room-detail-leaderboard-empty{padding:var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--font-size-body)}.room-detail-player-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;display:flex}.room-detail-player-list[hidden]{display:none}.room-detail-games h2{margin:0 0 var(--space-2);font-size:var(--font-size-heading);color:var(--color-text-primary)}.room-detail-games p{color:var(--color-text-muted);font-size:var(--font-size-body)}.room-detail-game-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.game-card{padding:var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md)}.game-card-top{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.game-card-meta{align-items:center;gap:var(--space-2);min-width:0;display:flex}.game-card-date{font-size:var(--font-size-meta);color:var(--color-text-muted);white-space:nowrap;font-weight:500}.game-card-number{font-size:var(--font-size-meta);color:var(--color-text-muted);background:var(--color-bg-base);border-radius:var(--radius-sm);padding:2px var(--space-2);white-space:nowrap;font-weight:700}.game-card-teams{align-items:stretch;gap:var(--space-2);display:flex}.game-team{min-width:0;padding:var(--space-2) var(--space-3);background:var(--color-bg-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-sm);flex:1}.game-team-winners{background:#e0102a14;border-color:#e0102a59}.game-team-label{letter-spacing:.5px;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:var(--space-1);font-size:10px;font-weight:700}.game-team-winners .game-team-label{color:var(--color-accent)}.game-team-players{flex-direction:column;gap:2px;display:flex}.game-team-players span{font-size:var(--font-size-label);color:var(--color-text-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.game-team-losers .game-team-players span{color:var(--color-text-muted)}.game-vs{color:var(--color-text-disabled);flex-shrink:0;align-self:center;font-size:10px;font-weight:900}.room-detail-game-delete-btn{min-width:44px;min-height:44px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.room-detail-game-delete-btn:hover:not(:disabled){color:var(--color-error)}.room-detail-game-delete-btn:disabled{opacity:.5;cursor:not-allowed}.room-detail-error-banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-body);flex-direction:column;display:flex}.room-detail-error-banner button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.room-detail-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.room-detail-close-btn,.room-detail-delete-btn{align-items:center;gap:var(--space-2);min-height:44px;padding:0 var(--space-4);border-radius:var(--radius-sm);font-family:var(--font-family);font-size:var(--font-size-body);cursor:pointer;transition:border-color .12s,color .12s;display:inline-flex}.room-detail-close-btn{border:1px solid var(--color-border);color:var(--color-text-muted);background:0 0}.room-detail-close-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.room-detail-close-btn:disabled{opacity:.6;cursor:not-allowed}.room-detail-delete-btn{border:1px solid var(--color-error);color:var(--color-error);background:0 0}.room-detail-delete-btn:hover:not(:disabled){background:#e0102a1a}.room-detail-delete-btn:disabled{opacity:.6;cursor:not-allowed}.room-detail-confirm-backdrop{z-index:550;background:#0009;position:fixed;inset:0}.room-detail-confirm-dialog{width:min(360px, calc(100vw - var(--space-6)));gap:var(--space-3);padding:var(--space-5);background:var(--color-bg-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-lg);color:var(--color-text-primary);font-size:var(--font-size-body);z-index:560;flex-direction:column;display:flex;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 16px 48px #00000080}.room-detail-confirm-dialog-actions{gap:var(--space-2);display:flex}.room-detail-confirm-dialog-actions button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none;flex:1}.room-detail-confirm-dialog-actions button:first-child{border:1px solid var(--color-border);color:var(--color-text-muted);background:0 0}.archive-year-card{padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);list-style:none}.archive-year-card-toggle{justify-content:space-between;align-items:center;gap:var(--space-3);width:100%;min-height:44px;color:inherit;font-family:var(--font-family);text-align:left;cursor:pointer;background:0 0;border:none;padding:0;display:flex}.archive-year-card-summary{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.archive-year-card-year{font-size:var(--font-size-title);color:var(--color-text-primary);font-variant-numeric:tabular-nums;font-weight:700}.archive-year-card-winner{font-size:var(--font-size-body);color:var(--color-text-primary)}.archive-year-card-winner-label{color:var(--color-text-muted)}.archive-year-card-games{font-size:var(--font-size-meta);color:var(--color-text-muted);font-variant-numeric:tabular-nums}.archive-year-card-chevron{color:var(--color-text-muted);flex-shrink:0;transition:transform .15s;display:inline-flex}.archive-year-card-chevron.is-open{transform:rotate(180deg)}.archive-year-card-details{gap:var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border);flex-direction:column;display:flex}.archive-year-card-full-link{min-height:44px;color:var(--color-accent);font-size:var(--font-size-label);align-self:center;align-items:center;font-weight:700;text-decoration:none;display:inline-flex}.archive-page{padding:var(--space-4);padding-bottom:120px}.archive-year-list,.archive-skeleton-list{gap:var(--space-3);flex-direction:column;margin:0;padding:0;display:flex}.archive-skeleton-card{border-radius:var(--radius-md);background:var(--color-bg-surface-raised);min-height:80px;list-style:none;animation:1.2s ease-in-out infinite archive-shimmer}@keyframes archive-shimmer{0%,to{opacity:.6}50%{opacity:1}}.archive-error-banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-body);flex-direction:column;display:flex}.archive-error-banner button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.archive-empty-state{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted)}.archive-year-page{padding:var(--space-4);gap:var(--space-4);flex-direction:column;padding-bottom:120px;display:flex}.archive-year-back{min-width:44px;min-height:44px;color:var(--color-text-primary);font-size:var(--font-size-title);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.archive-year-header{align-items:center;gap:var(--space-3);display:flex}.archive-year-header h1{font-size:var(--font-size-title);color:var(--color-text-primary);margin:0}.archive-readonly-badge{padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--color-bg-surface);border:1px solid var(--color-border);color:var(--color-text-muted);font-size:var(--font-size-label);text-transform:uppercase;letter-spacing:.3px;font-weight:700}.archive-year-error-banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-body);flex-direction:column;display:flex}.archive-year-error-banner button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.archive-year-empty{color:var(--color-text-muted);font-size:var(--font-size-body)}.admin-page{padding:var(--space-4);padding-bottom:120px}.admin-page-hint{margin:0 0 var(--space-4);color:var(--color-text-muted);font-size:var(--font-size-label)}.admin-player-list,.admin-skeleton-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;display:flex}.admin-skeleton-row{border-radius:var(--radius-md);background:var(--color-bg-surface-raised);min-height:44px;list-style:none;animation:1.2s ease-in-out infinite shimmer}.admin-error-banner{align-items:flex-start;gap:var(--space-2);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-error);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--font-size-body);flex-direction:column;display:flex}.admin-error-banner button{min-height:44px;padding:0 var(--space-4);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;border:none}.admin-empty-state{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted)}.admin-player-row{align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);list-style:none;display:flex}.admin-player-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--color-text-primary);font-size:var(--font-size-body);flex:1;overflow:hidden}.admin-role-badge{padding:2px var(--space-2);border-radius:var(--radius-sm);background:var(--color-bg-surface-raised);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap;flex-shrink:0;font-size:10px;font-weight:700}.admin-role-badge-admin{color:var(--color-accent);background:#e0102a26}.admin-role-toggle-btn{min-height:44px;padding:0 var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);font-family:var(--font-family);font-size:var(--font-size-meta);cursor:pointer;background:0 0;flex-shrink:0;transition:border-color .12s,color .12s}.admin-role-toggle-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.admin-role-toggle-btn:disabled{opacity:.5;cursor:not-allowed}.profile-page{gap:var(--space-2);flex-direction:column;padding-bottom:100px;display:flex}.profile-page-guest{padding:var(--space-6) var(--space-4);text-align:center;align-items:center;gap:var(--space-3)}.profile-page-guest h1{font-size:var(--font-size-title);color:var(--color-text-primary);margin:0}.profile-page-guest p{color:var(--color-text-muted);margin:0}.profile-login-btn{background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-pill);padding:var(--space-2) var(--space-6);font-size:var(--font-size-body);font-weight:700;font-family:var(--font-family);cursor:pointer;border:none}.profile-page>p[role=status]{padding:var(--space-4);color:var(--color-text-muted)}.profile-error-banner{margin:var(--space-4);padding:var(--space-4);background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:center;color:var(--color-text-muted)}.profile-error-banner button{margin-top:var(--space-2);background:var(--color-accent);color:var(--color-text-primary);border-radius:var(--radius-md);padding:var(--space-2) var(--space-4);font-family:var(--font-family);cursor:pointer;border:none}.profile-hero{background:linear-gradient(180deg, var(--color-bg-surface) 0%, var(--color-bg-base) 100%);padding:var(--space-5) var(--space-5) 0;border-bottom:1px solid var(--color-border)}.profile-main{align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);display:flex}.profile-avatar-lg{border:3px solid var(--color-accent);width:72px;height:72px;font-size:var(--font-size-title);color:var(--color-accent);background:#e0102a1f;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:900;display:flex}.profile-avatar-lg.first{border-color:var(--color-rank-gold);color:var(--color-rank-gold);background:#ffd7001f}.profile-text{flex:1;min-width:0}.profile-name{font-size:var(--font-size-title);color:var(--color-text-primary);letter-spacing:-.5px;margin:0;font-weight:900}.profile-since{font-size:var(--font-size-meta);color:var(--color-text-muted);margin:2px 0 0;font-weight:600}.profile-rank-badge{margin-top:var(--space-2);border-radius:var(--radius-sm);font-size:var(--font-size-label);color:var(--color-rank-gold);background:#ffd70026;border:1px solid #ffd70066;align-items:center;padding:4px 10px;font-weight:800;display:inline-flex}.profile-stats-row{border-top:1px solid var(--color-border);margin:0 calc(var(--space-5) * -1);display:flex}.profile-stat{text-align:center;padding:var(--space-3) var(--space-2);border-right:1px solid var(--color-border);flex:1}.profile-stat:last-child{border-right:none}.profile-stat-num{font-size:var(--font-size-title);color:var(--color-text-primary);letter-spacing:-.5px;font-weight:900;display:block}.profile-stat-num.red{color:var(--color-accent)}.profile-stat-num.gold{color:var(--color-rank-gold)}.profile-stat-label{letter-spacing:.5px;text-transform:uppercase;color:var(--color-text-muted);margin-top:2px;font-size:9px;font-weight:700;display:block}.profile-section-header{margin:var(--space-2) var(--space-5) 0;letter-spacing:2px;text-transform:uppercase;color:var(--color-text-muted);font-size:10px;font-weight:700}.profile-chart-card{margin:var(--space-2) var(--space-4) 0;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4)}.profile-chart-legend{gap:var(--space-4);margin-bottom:var(--space-2);display:flex}.profile-legend-item{font-size:var(--font-size-meta);color:var(--color-text-muted);align-items:center;gap:5px;font-weight:600;display:flex}.profile-legend-swatch{border-radius:2px;width:10px;height:10px}.profile-legend-swatch.win{background:var(--color-accent)}.profile-legend-swatch.loss{background:var(--color-accent-dark)}.profile-chart-bars{align-items:flex-start;gap:var(--space-1);margin-bottom:6px;display:flex}.profile-chart-bar-wrap{min-width:0;font-family:var(--font-family);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:4px;margin:0;padding:0;display:flex;position:relative}.profile-chart-tooltip{background:var(--color-bg-surface-raised);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-meta);color:var(--color-text-primary);white-space:nowrap;z-index:5;pointer-events:none;padding:4px 8px;font-weight:700;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 2px 8px #0006}.profile-chart-tooltip:after{content:"";border:4px solid #0000;border-top-color:var(--color-border);position:absolute;top:100%;left:50%;transform:translate(-50%)}.profile-chart-bar-stack{flex-direction:column;justify-content:flex-end;align-items:stretch;width:100%;height:60px;display:flex}.profile-chart-bar{border-radius:3px 3px 0 0;width:100%}.profile-chart-bar.win{background:var(--color-accent)}.profile-chart-bar.loss{background:var(--color-accent-dark)}.profile-chart-month{color:var(--color-text-muted);font-size:9px;font-weight:600}.profile-achievement-row{gap:var(--space-2);margin:var(--space-2) var(--space-4) 0;flex-wrap:wrap;display:flex}.profile-achievement-chip{background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-pill);font-size:var(--font-size-label);color:var(--color-text-primary);align-items:center;gap:6px;padding:6px 12px;font-weight:700;display:inline-flex}.profile-achievement-chip.special{color:var(--color-rank-gold);background:#ffd70012;border-color:#ffd70059}.profile-empty{margin:var(--space-2) var(--space-4) 0;color:var(--color-text-muted);font-size:var(--font-size-label)}.profile-recent-games{margin:var(--space-2) var(--space-4) 0;background:var(--color-bg-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0;list-style:none;overflow:hidden}.profile-recent-game-row{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-bg-base);display:flex}.profile-recent-game-row:last-child{border-bottom:none}.profile-recent-game-icon{width:28px;height:28px;font-size:var(--font-size-meta);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.profile-recent-game-icon.won{color:var(--color-text-primary);background:#e0102a26}.profile-recent-game-icon.lost{color:var(--color-text-muted);background:#2a2a3580}.profile-recent-game-text{min-width:0;font-size:var(--font-size-label);color:var(--color-text-primary);flex:1;font-weight:700}.profile-recent-game-opponents{color:var(--color-text-muted);font-weight:600}
