:root{--bg: #07111f;--bg-2: #0b1a2e;--surface: #0f2038;--surface-2: #162c4b;--line: rgba(255, 255, 255, .08);--line-strong: rgba(255, 255, 255, .16);--text: #f3f6fb;--muted: #8ea2bf;--ball: #d4ff3a;--ball-ink: #0a1628;--clay: #ff6b3d;--court: #2f6bff;--win: var(--ball);--loss: var(--clay);--radius: 18px;--radius-sm: 12px;--font: "Barlow", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display: "Barlow Condensed", "Arial Narrow", system-ui, sans-serif;--nav-h: 68px;--safe-b: env(safe-area-inset-bottom, 0px);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);background:radial-gradient(1200px 500px at 50% -200px,rgba(47,107,255,.22),transparent 70%),var(--bg);background-attachment:fixed;color:var(--text);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}code{background:var(--surface-2);padding:1px 6px;border-radius:6px}p{margin:0}.app{min-height:100dvh;display:flex;flex-direction:column}.page{width:100%;max-width:600px;margin:0 auto;padding:12px 14px calc(var(--nav-h) + var(--safe-b) + 28px);flex:1}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));background:#07111fd1;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:800;font-style:italic;font-size:24px;letter-spacing:.5px;text-transform:uppercase}.brand em,.display em{color:var(--ball);font-style:italic}.topbar-actions{display:flex;align-items:center;gap:4px}.bottomnav{position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--nav-h) + var(--safe-b));padding-bottom:var(--safe-b);display:grid;grid-template-columns:repeat(5,1fr);align-items:center;background:#0b1a2ef0;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--line)}.bottomnav a{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.3px;text-transform:uppercase}.bottomnav a.active{color:var(--ball)}.bottomnav a.active .avatar{outline:2px solid var(--ball);outline-offset:1px}.nav-log{position:relative}.log-btn{display:grid;place-items:center;width:58px;height:58px;margin-top:-26px;border-radius:50%;background:var(--ball);color:var(--ball-ink);box-shadow:0 8px 24px #d4ff3a59,0 0 0 5px var(--bg-2);transition:transform .15s ease}.nav-log:active .log-btn{transform:scale(.92)}.nav-log.active .log-btn{transform:rotate(45deg)}.display,.display-sm,.mc-title,.h2,.stat-val,.lb-main,.result-banner,.vs,.h2h-score,.set-summary{font-family:var(--font-display);font-weight:800;font-style:italic;text-transform:uppercase;letter-spacing:.3px;line-height:1.02}.display{font-size:52px;margin:8px 0 0}.display-sm{font-size:34px;margin:0}.h2{font-size:20px;margin:0 0 6px;color:var(--muted)}.lead{color:var(--muted);font-size:17px;margin-top:6px}.muted{color:var(--muted)}.small{font-size:13px}.strong{font-weight:700}.block{display:block}.center{text-align:center}.label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}.win{color:var(--win)}.loss{color:var(--loss)}.stack{display:flex;flex-direction:column;gap:14px}.stack-sm{display:flex;flex-direction:column;gap:10px}.row{display:flex;align-items:center}.gap{gap:12px}.gap-sm{gap:8px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.push-right{margin-left:auto}.page-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.card{background:linear-gradient(180deg,var(--surface),var(--bg-2));border:1px solid var(--line);border-radius:var(--radius);padding:14px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 18px;border-radius:999px;border:1px solid transparent;font-weight:700;font-size:15px;letter-spacing:.2px;cursor:pointer;white-space:nowrap;transition:transform .1s ease,background .15s ease,opacity .15s}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--ball);color:var(--ball-ink)}.btn-primary:hover{background:#e2ff70}.btn-ghost{background:transparent;border-color:var(--line-strong);color:var(--text)}.btn-ghost:hover{background:#ffffff0d}.btn-danger{background:transparent;border-color:#ff6b3d80;color:var(--clay)}.btn-lg{padding:15px 22px;font-size:17px;width:100%}.btn-sm{padding:7px 14px;font-size:14px}.icon-btn{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:transparent;border:0;color:var(--text);cursor:pointer;font-size:22px;font-weight:700}.icon-btn:hover,.icon-btn.active{background:#ffffff0f}.link-btn{background:none;border:0;padding:4px 0;color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:4px;font-weight:600}.link-btn:hover{color:var(--text)}.back{align-self:flex-start}.badge-host{position:relative}.badge{position:absolute;top:4px;right:2px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--clay);color:#fff;font-size:11px;font-weight:800;display:grid;place-items:center}.field{display:flex;flex-direction:column;gap:6px}.field>span{font-size:13px;font-weight:600;color:var(--muted)}.input{width:100%;background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--radius-sm);padding:12px 14px;font:inherit;color:var(--text);outline:none;transition:border-color .15s,box-shadow .15s}.input:focus{border-color:var(--ball);box-shadow:0 0 0 3px #d4ff3a26}textarea.input{resize:vertical}.select{width:auto;flex:1;padding:10px 12px}input[type=date].input{min-height:48px}.prefix-input{display:flex;align-items:center;gap:6px}.error{background:#ff6b3d1f;border:1px solid rgba(255,107,61,.4);color:#ffb49c;border-radius:var(--radius-sm);padding:10px 12px;font-size:14px}.info{background:#d4ff3a1a;border:1px solid rgba(212,255,58,.35);color:var(--ball);border-radius:var(--radius-sm);padding:10px 12px;font-size:14px}.divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:13px}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--line-strong)}.seg{display:flex;padding:4px;gap:4px;background:var(--bg-2);border:1px solid var(--line);border-radius:999px}.seg button{flex:1;padding:9px 10px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-weight:700;cursor:pointer;transition:background .15s,color .15s}.seg button.active{background:var(--ball);color:var(--ball-ink)}.radio-cards{display:grid;gap:8px}.radio-card{display:grid;grid-template-columns:auto 1fr;column-gap:10px;row-gap:2px;align-items:center;padding:12px;border-radius:var(--radius-sm);border:1px solid var(--line-strong);cursor:pointer}.radio-card input{grid-row:span 2;accent-color:var(--ball);width:18px;height:18px}.radio-card.active{border-color:var(--ball);background:#d4ff3a0f}.avatar{border-radius:50%;object-fit:cover;flex-shrink:0;background:var(--surface-2)}.avatar-fallback{display:inline-grid;place-items:center;background:linear-gradient(135deg,var(--court),#1b3f9e);color:#fff;font-weight:800;font-family:var(--font-display)}.tag{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--surface-2);color:var(--muted);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;vertical-align:middle}.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chip{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;padding:7px 12px;border-radius:999px;background:var(--surface-2);border:1px solid var(--line);cursor:pointer;font-weight:700;font-size:14px}.chip:active{transform:scale(.95)}.chip-win{color:var(--win);font-family:var(--font-display);font-size:17px}.chip-loss{color:var(--loss);font-family:var(--font-display);font-size:17px}.spinner-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;padding:28px 0}.spinner{width:28px;height:28px;border-radius:50%;background:var(--ball);animation:bounce .6s cubic-bezier(.5,0,.5,1) infinite alternate}@keyframes bounce{0%{transform:translateY(-12px)}to{transform:translateY(6px) scaleY(.9)}}.empty{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:32px 16px;border:1px dashed var(--line-strong);border-radius:var(--radius)}.empty-title{font-family:var(--font-display);font-weight:800;font-style:italic;text-transform:uppercase;font-size:24px}.match-card{cursor:pointer;display:flex;flex-direction:column;gap:10px;transition:border-color .15s}.match-card:hover{border-color:var(--line-strong)}.mc-head{display:flex;align-items:center;gap:10px}.mc-meta{flex:1;min-width:0}.mc-name{font-weight:700}.mc-name:hover{text-decoration:underline}.mc-meta .small{display:flex;align-items:center;gap:3px;flex-wrap:wrap}.format-badge{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;padding:4px 9px;border-radius:999px;border:1px solid var(--line-strong);color:var(--muted)}.mc-title{font-size:26px;margin:0}.mc-title.big{font-size:34px}.result-win{color:var(--win)}.result-loss{color:var(--loss)}.result-draw{color:var(--text)}.mc-note{color:#c9d4e4}.mc-actions{display:flex;align-items:center;gap:16px;padding-top:2px}.action{display:inline-flex;align-items:center;gap:6px;background:none;border:0;padding:4px 0;color:var(--muted);font-weight:700;cursor:pointer}.action.liked{color:var(--clay)}.action:disabled{cursor:default}.likers{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.scoreboard{border-radius:var(--radius-sm);overflow:hidden;background:#050c17;border:1px solid var(--line)}.sb-row{display:grid;grid-template-columns:1fr auto 22px;align-items:center;gap:8px;padding:9px 10px 9px 12px}.sb-row+.sb-row{border-top:1px solid var(--line)}.sb-row.lost{opacity:.62}.sb-names{display:flex;flex-direction:column;min-width:0}.sb-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sb-row.won .sb-name{color:var(--text)}.sb-sets{display:flex;gap:4px}.sb-set{width:30px;height:34px;display:grid;place-items:center;border-radius:7px;background:var(--surface);font-family:var(--font-display);font-weight:800;font-size:22px;font-variant-numeric:tabular-nums;color:var(--muted)}.sb-set.set-won{background:var(--ball);color:var(--ball-ink)}.sb-flag{color:var(--ball);font-size:12px;text-align:center}.scoreboard-lg .sb-set{width:40px;height:46px;font-size:30px}.scoreboard-lg .sb-name{font-size:17px}.set-summary{font-size:22px}.log .card{gap:10px}.slot-selected{display:flex;align-items:center;gap:10px;padding:8px 8px 8px 10px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--line-strong)}.slot-selected.locked{border-style:dashed}.slot-name{flex:1;font-weight:700}.picker{position:relative;display:flex;flex-direction:column;gap:8px}.dropdown{display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--radius-sm);overflow:hidden}.dropdown-item{display:flex;align-items:center;gap:10px;padding:11px 12px;background:none;border:0;text-align:left;cursor:pointer}.dropdown-item+.dropdown-item{border-top:1px solid var(--line)}.dropdown-item:hover{background:var(--surface)}.dropdown-item.guest{color:var(--ball);font-weight:600}.vs{align-self:center;font-size:22px;color:var(--clay);padding:2px 14px;border-radius:999px;background:#ff6b3d1a}.score-grid{display:flex;gap:6px;align-items:stretch;overflow-x:auto}.score-labels,.score-col,.score-col-actions{display:grid;grid-template-rows:18px 54px 54px;gap:6px;align-items:center}.score-labels span{font-weight:700;font-size:13px;color:var(--muted);white-space:nowrap}.score-set-no{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;text-align:center}.score-col.active .score-set-no{color:var(--ball)}.score-input{width:54px;height:54px;text-align:center;background:#050c17;border:2px solid var(--line-strong);border-radius:12px;font-family:var(--font-display);font-weight:800;font-size:30px;color:var(--text);outline:none}.score-input:focus{border-color:var(--ball)}.score-col.active .score-input{border-color:#d4ff3a80}.score-col-actions{grid-template-rows:18px 54px 54px}.score-col-actions .icon-btn{width:44px;height:44px;border:1px dashed var(--line-strong)}.score-col-actions .icon-btn:first-child{grid-row:2}.result-banner{display:flex;align-items:baseline;justify-content:space-between;padding:14px 16px;border-radius:var(--radius-sm);font-size:30px}.result-banner span{font-size:18px;opacity:.8}.result-banner.win{background:var(--ball);color:var(--ball-ink)}.result-banner.loss{background:var(--clay);color:#1a0b05}.result-banner.draw{background:var(--surface-2)}.sticky-submit{position:sticky;bottom:calc(var(--nav-h) + var(--safe-b) + 10px);z-index:5}.sticky-submit .btn{box-shadow:0 10px 30px #00000073}.profile-hero,.club-hero{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;padding:18px 12px 6px}.profile-hero .avatar{box-shadow:0 0 0 4px var(--bg),0 0 0 6px var(--ball)}.bio{color:#c9d4e4;max-width:420px}.follow-counts{display:flex;gap:18px;color:var(--muted)}.follow-counts strong,.follow-counts a:hover{color:var(--text)}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;text-align:center}.stat-val{font-size:36px}.stat-lbl{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:1px}.win-bar{height:8px;border-radius:4px;background:var(--clay);overflow:hidden;margin:12px 0 8px}.win-bar span{display:block;height:100%;background:var(--ball);border-radius:4px 0 0 4px}.form-strip{display:flex;gap:6px;flex-wrap:wrap}.form-pill{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;font-family:var(--font-display);font-weight:800;font-size:18px}.form-pill.w{background:var(--ball);color:var(--ball-ink)}.form-pill.l{background:transparent;color:var(--clay);border:2px solid var(--clay)}.streak{font-weight:800;font-size:14px}.h2h-me{display:flex;align-items:center;justify-content:space-between}.h2h-score{font-size:40px;display:flex;gap:8px}.h2h-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.h2h-list li{display:grid;grid-template-columns:minmax(0,1.4fr) 1fr auto;align-items:center;gap:10px}.h2h-player{display:flex;align-items:center;gap:8px;font-weight:600;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.h2h-bar{height:6px;border-radius:3px;background:#ff6b3d8c;overflow:hidden}.h2h-bar span{display:block;height:100%;background:var(--ball)}.h2h-rec{font-family:var(--font-display);font-weight:800;font-size:20px;min-width:44px;text-align:right}.comment{display:flex;gap:10px;align-items:flex-start}.comment-body{flex:1;min-width:0}.comment-body p{color:#d5deeb;overflow-wrap:anywhere}.leaderboard{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.lb-row{display:grid;grid-template-columns:34px 1fr auto minmax(52px,auto);align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--line)}.lb-row.me{border-color:var(--ball)}.lb-rank{font-family:var(--font-display);font-weight:800;font-style:italic;font-size:22px;color:var(--muted);text-align:center}.lb-player{display:flex;align-items:center;gap:10px;min-width:0}.lb-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lb-record{color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums}.lb-main{font-size:26px;text-align:right;color:var(--ball)}.podium-1{background:linear-gradient(90deg,rgba(212,255,58,.18),var(--surface) 60%)}.podium-1 .lb-rank{color:var(--ball)}.podium-2 .lb-rank{color:#d9e2ef}.podium-3 .lb-rank{color:var(--clay)}.list-row{display:flex;align-items:center;gap:12px;padding:10px 2px}.list-row+.list-row{border-top:1px solid var(--line)}.club-badge{display:grid;place-items:center;flex-shrink:0;width:42px;height:42px;border-radius:12px;background:linear-gradient(135deg,var(--clay),#c9431b);font-family:var(--font-display);font-weight:800;font-style:italic;font-size:18px;color:#fff}.club-badge.lg{width:76px;height:76px;font-size:32px;border-radius:20px}.club-badge.league{background:linear-gradient(135deg,var(--ball),#9cc21a);color:var(--ball-ink)}.elo-delta{margin-left:6px;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--muted);vertical-align:middle}.elo-delta.up{color:var(--win)}.elo-delta.down{color:var(--loss)}.elo-card{display:grid;grid-template-columns:1fr 1fr;gap:6px;text-align:center}.stat-val.elo{color:var(--ball)}.league-tag{align-self:flex-start;display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:13px;font-weight:700;background:#d4ff3a1a;color:var(--ball)}.league-tag:hover{background:#d4ff3a2e}.status-tag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.5px}.status-tag.pending{background:#2f6bff2e;color:#9db8ff}.status-tag.rejected{background:#ff6b3d26;color:var(--clay)}.confirm-bar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:10px 12px;border-radius:var(--radius-sm);background:#d4ff3a14;border:1px solid rgba(212,255,58,.35)}.confirm-bar .grow-full{flex-basis:100%}.invite-card{border-color:#d4ff3a59}.elo-chart{position:relative;width:100%}.elo-chart svg{display:block;touch-action:pan-y}.elo-chart .grid{stroke:var(--line);stroke-width:1}.elo-chart .axis{fill:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.elo-chart .line{fill:none;stroke:var(--ball);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.elo-chart .dot{fill:var(--ball)}.elo-chart .dot.ring{stroke:var(--surface);stroke-width:2}.elo-chart .value{fill:var(--text);font-size:13px;font-weight:800}.elo-chart .crosshair{stroke:var(--line-strong);stroke-width:1}.elo-tip{position:absolute;transform:translate(-50%);pointer-events:none;padding:6px 10px;border-radius:10px;text-align:center;white-space:nowrap;background:var(--surface-2);border:1px solid var(--line-strong);box-shadow:0 6px 20px #0006}.elo-table table{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums;margin-top:6px}.elo-table th,.elo-table td{text-align:left;padding:5px 4px;border-bottom:1px solid var(--line)}.elo-table th{color:var(--muted);font-weight:600;font-size:12px}.league-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px}.ls-card{display:flex;flex-direction:column;gap:6px}a.ls-card:hover{border-color:var(--line-strong)}.ls-who{min-width:0}.ls-who .strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ls-avatars{display:flex;flex-shrink:0}.ls-avatars .avatar+.avatar{margin-left:-8px;box-shadow:0 0 0 2px var(--surface)}.ls-value{font-family:var(--font-display);font-weight:800;font-style:italic;font-size:26px;color:var(--ball)}.modal-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:end center;padding:16px 16px calc(16px + var(--safe-b));background:#0009}@media(min-width:640px){.modal-backdrop{place-items:center}}.modal{width:100%;max-width:460px;max-height:calc(100dvh - 32px);overflow-y:auto}.menu-wrap{position:relative}.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:200px;display:flex;flex-direction:column;padding:6px;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--line-strong);box-shadow:0 10px 30px #00000073}.menu button{text-align:left;padding:10px 12px;border-radius:8px;background:none;border:0;color:var(--text);font:inherit;cursor:pointer}.menu button:hover{background:#ffffff0f}.menu button.danger{color:var(--clay)}.notif{border-radius:var(--radius-sm);padding-left:8px;padding-right:8px}.notif.unread{background:#d4ff3a0f}.notif .dot{width:9px;height:9px;border-radius:50%;background:var(--ball);flex-shrink:0}.bottomnav .badge{top:-4px;right:auto;left:calc(50% + 4px)}.auth{min-height:100dvh;max-width:440px;margin:0 auto;display:flex;flex-direction:column;justify-content:center;gap:18px;padding:24px 16px}.auth-hero{text-align:center}.auth-hero .display{font-size:58px}.auth-card{display:flex;flex-direction:column;gap:14px;padding:18px}@media(min-width:720px){.display-sm{font-size:40px}.page{padding-top:20px}}
