:root{--bg: #0b1412;--bg-2: #0e1916;--surface: #13221d;--surface-2: #192d26;--surface-3: #21392f;--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .18);--text: #eaf4ef;--muted: #92aa9f;--faint: #5f776c;--accent: #c6ff3d;--accent-ink: #0b1412;--teal: #2dd4bf;--sky: #7dd3fc;--gold: #ffd166;--silver: #cbd5e1;--bronze: #e0a173;--danger: #ff6b6b;--warn: #ffb347;--team-a: #c6ff3d;--team-b: #7dd3fc;--radius: 20px;--radius-sm: 12px;--shadow: 0 14px 40px rgba(0, 0, 0, .35);--font: "Outfit", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body{min-height:100dvh;background:radial-gradient(900px 500px at 50% -10%,rgba(45,212,191,.14),transparent 60%),radial-gradient(700px 400px at 100% 20%,rgba(198,255,61,.07),transparent 60%),var(--bg)}button,input,select{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0}a{color:inherit;text-decoration:none}h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.01em}p{margin:0}.app{max-width:760px;margin:0 auto;padding:0 16px calc(32px + env(safe-area-inset-bottom))}.topbar{display:flex;align-items:center;gap:12px;padding:14px 0 10px;position:sticky;top:0;z-index:20;background:linear-gradient(var(--bg) 70%,transparent)}.topbar .brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:18px}.topbar .brand img{width:30px;height:30px;border-radius:8px}.topbar .spacer{flex:1}.topbar .title{flex:1;min-width:0}.topbar .title h1{font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar .title .sub{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 18px;border-radius:14px;font-weight:600;font-size:15px;line-height:1;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);transition:transform .08s ease,background .15s ease,opacity .15s ease;-webkit-user-select:none;user-select:none;white-space:nowrap}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:transparent;box-shadow:0 6px 20px #c6ff3d40}.btn.ghost{background:transparent;border-color:var(--border);color:var(--muted)}.btn.danger{background:#ff6b6b1f;border-color:#ff6b6b59;color:var(--danger)}.btn.sm{padding:8px 12px;font-size:13px;border-radius:10px}.btn.lg{padding:16px 22px;font-size:17px;border-radius:16px}.btn.block{width:100%}.btn.icon{width:42px;height:42px;padding:0;border-radius:12px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow)}.card+.card{margin-top:14px}.card .card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.card .card-head h2{font-size:15px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.08em}.stack{display:flex;flex-direction:column;gap:14px}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:13px}.tiny{font-size:11.5px}.center{text-align:center}.mt{margin-top:14px}.mb{margin-bottom:14px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);font-size:13px;font-weight:500;line-height:1}.chip.accent{background:#c6ff3d24;border-color:#c6ff3d66;color:var(--accent)}.chip.warn{background:#ffb34724;border-color:#ffb34766;color:var(--warn)}.chip.teal{background:#2dd4bf24;border-color:#2dd4bf66;color:var(--teal)}.avatar{width:36px;height:36px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#0b1412;flex-shrink:0;letter-spacing:.02em}.avatar.sm{width:28px;height:28px;font-size:12px;border-radius:9px}.avatar.lg{width:48px;height:48px;font-size:18px;border-radius:15px}.input{width:100%;padding:13px 14px;border-radius:14px;background:var(--bg-2);border:1px solid var(--border-strong);color:var(--text);outline:none;font-size:16px;transition:border-color .15s ease}.input:focus{border-color:var(--accent)}.input::placeholder{color:var(--faint)}.label{display:block;font-size:13px;color:var(--muted);font-weight:600;margin-bottom:8px;letter-spacing:.02em}.select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 20px) calc(50% - 2px),calc(100% - 14px) calc(50% - 2px);background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:40px}.seg{display:flex;gap:4px;padding:4px;background:var(--bg-2);border-radius:14px;border:1px solid var(--border)}.seg button{flex:1;padding:10px 8px;border-radius:10px;font-weight:600;font-size:14px;color:var(--muted);transition:all .15s ease}.seg button.on{background:var(--surface-3);color:var(--text);box-shadow:0 2px 10px #00000040}.count-picker{display:flex;gap:8px;flex-wrap:wrap}.count-picker button{width:48px;height:48px;border-radius:14px;background:var(--bg-2);border:1px solid var(--border-strong);font-weight:700;font-size:17px;color:var(--muted)}.count-picker button.on{background:var(--accent);color:var(--accent-ink);border-color:transparent}.name-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.name-grid .cell{position:relative}.name-grid .cell .n{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:12px;color:var(--faint);font-weight:700}.name-grid .cell .input{padding-left:32px}.tabs{display:flex;gap:4px;padding:4px;background:var(--surface);border:1px solid var(--border);border-radius:16px;margin:8px 0 16px;position:sticky;top:62px;z-index:15}.tabs button{flex:1;padding:11px 6px;border-radius:12px;font-weight:600;font-size:14px;color:var(--muted);display:flex;align-items:center;justify-content:center;gap:6px}.tabs button.on{background:var(--surface-3);color:var(--text)}.tabs .badge{background:var(--accent);color:var(--accent-ink);border-radius:999px;font-size:11px;padding:2px 6px;font-weight:700}.court{position:relative;border-radius:var(--radius);padding:18px;background:linear-gradient(180deg,#2dd4bf14,#2dd4bf05),var(--surface);border:1px solid rgba(45,212,191,.25);box-shadow:var(--shadow);overflow:hidden}.court:before{content:"";position:absolute;inset:12px;border:1px dashed rgba(45,212,191,.18);border-radius:14px;pointer-events:none}.court .court-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px;position:relative}.court .game-no{font-weight:800;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--teal)}.teams{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch;position:relative}.team{border-radius:16px;padding:12px 10px;background:var(--bg-2);border:1px solid var(--border);display:flex;flex-direction:column;gap:10px;min-width:0;position:relative;transition:border-color .15s ease,box-shadow .15s ease}.team.a{border-top:3px solid var(--team-a)}.team.b{border-top:3px solid var(--team-b)}.team.selected{box-shadow:0 0 0 2px var(--accent)}.team .team-label{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.team.a .team-label span:first-child{color:var(--team-a)}.team.b .team-label span:first-child{color:var(--team-b)}.team .member{display:flex;align-items:center;gap:10px;min-width:0}.team .member .name{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.team .member .meta{font-size:11px;color:var(--muted);white-space:nowrap}.team .member .avatar{width:32px;height:32px;font-size:13px;border-radius:10px}.vs{display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:var(--faint);letter-spacing:.1em}.win-btn{margin-top:4px;padding:12px 8px;border-radius:12px;font-weight:700;font-size:14px;border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);transition:all .12s ease}.win-btn:active{transform:scale(.97)}.team.a .win-btn:hover{border-color:var(--team-a)}.team.b .win-btn:hover{border-color:var(--team-b)}.streak-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;border-radius:999px;background:#ffb34724;border:1px solid rgba(255,179,71,.45);color:var(--warn);font-size:12px;font-weight:700}.streak-pill.hot{background:#ff6b6b29;border-color:#ff6b6b80;color:#ff8c8c}.note{margin-top:14px;padding:12px 14px;border-radius:12px;background:#ffffff0a;border:1px solid var(--border);font-size:13.5px;color:var(--muted);line-height:1.4;position:relative}.note strong{color:var(--text)}.score-pick{margin-top:14px;padding:16px;border-radius:16px;background:var(--bg-2);border:1px solid var(--accent);position:relative;animation:pop .18s ease}@keyframes pop{0%{transform:scale(.97);opacity:0}to{transform:scale(1);opacity:1}}.score-pick h3{font-size:16px;margin-bottom:12px}.score-pick .scores{display:grid;grid-template-columns:1fr 1fr;gap:10px}.score-btn{padding:18px 10px;border-radius:14px;background:var(--surface-2);border:1px solid var(--border-strong);font-weight:800;font-size:26px;letter-spacing:.04em;transition:all .12s ease}.score-btn small{display:block;font-size:12px;font-weight:500;color:var(--muted);letter-spacing:0;margin-top:4px}.score-btn:hover{border-color:var(--accent)}.score-btn:active{transform:scale(.97)}.court-actions{display:flex;gap:10px;margin-top:14px;position:relative}.court-actions .btn{flex:1}.bench{margin-top:14px}.bench .bench-list{display:flex;flex-direction:column;gap:8px}.bench-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;background:var(--bg-2);border:1px solid var(--border)}.bench-item .pos{width:22px;height:22px;border-radius:7px;background:var(--surface-3);color:var(--muted);font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center}.bench-item.next .pos{background:var(--accent);color:var(--accent-ink)}.bench-item .name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty{padding:24px;text-align:center;color:var(--muted);border:1px dashed var(--border-strong);border-radius:14px;font-size:14px}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);font-weight:700;padding:6px 6px 10px;border-bottom:1px solid var(--border)}.table td{padding:10px 6px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table .num{text-align:center;font-variant-numeric:tabular-nums;color:var(--muted)}.table .num.strong{color:var(--text);font-weight:700}.table .num.pts{color:var(--accent);font-weight:800;font-size:15px}.table .rank{width:30px;text-align:center;font-weight:800;color:var(--muted)}.table .rank.r1{color:var(--gold)}.table .rank.r2{color:var(--silver)}.table .rank.r3{color:var(--bronze)}.table .player{display:flex;align-items:center;gap:10px;min-width:0}.table .player .name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:130px}.table tr.inactive{opacity:.45}.form-chip{display:inline-block;padding:2px 6px;border-radius:6px;font-size:11px;font-weight:800;background:var(--surface-3);color:var(--muted)}.form-chip.w{background:#c6ff3d29;color:var(--accent)}.form-chip.l{background:#ff6b6b24;color:var(--danger)}.legend{margin-top:12px;font-size:12px;color:var(--faint);line-height:1.5}.game-row{display:flex;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--border)}.game-row:last-child{border-bottom:0}.game-row .gn{width:34px;font-size:12px;font-weight:800;color:var(--faint);text-align:center}.game-row .side{flex:1;min-width:0;font-size:14px;line-height:1.3;color:var(--muted)}.game-row .side.win{color:var(--text);font-weight:600}.game-row .side.right{text-align:right}.game-row .score{font-weight:800;font-size:18px;font-variant-numeric:tabular-nums;padding:6px 10px;border-radius:10px;background:var(--bg-2);border:1px solid var(--border);white-space:nowrap}.game-note{font-size:12px;color:var(--warn);padding:0 0 8px 44px;margin-top:-6px}.matrix-wrap{overflow-x:auto;margin:0 -18px;padding:0 18px}.matrix{border-collapse:separate;border-spacing:4px;font-size:13px}.matrix th{font-weight:700;color:var(--muted);font-size:12px;padding:4px;text-align:center}.matrix th.rowh{text-align:right;white-space:nowrap;max-width:90px;overflow:hidden;text-overflow:ellipsis}.matrix td{width:40px;height:40px;text-align:center;border-radius:10px;font-weight:700;background:var(--bg-2);color:var(--faint)}.matrix td.self{background:transparent}.matrix td.zero{background:#ff6b6b1a;color:#ff6b6bb3}.matrix td.one{background:#c6ff3d24;color:var(--accent)}.matrix td.many{background:#c6ff3d52;color:var(--accent)}.pair-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.backdrop{position:fixed;inset:0;background:#030807b3;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:50;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s ease}@keyframes fade{0%{opacity:0}to{opacity:1}}.sheet{width:100%;max-width:640px;max-height:92dvh;overflow-y:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:24px 24px 0 0;padding:16px 18px calc(20px + env(safe-area-inset-bottom));animation:up .2s ease;box-shadow:0 -10px 40px #00000080}@keyframes up{0%{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}@media(min-width:700px){.backdrop{align-items:center;padding:20px}.sheet{border-radius:24px;max-height:88vh}}.sheet .sheet-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.sheet .sheet-head h2{font-size:18px}.sheet .section{padding:14px 0;border-top:1px solid var(--border)}.sheet .section h3{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);margin-bottom:10px}.slot{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:14px;background:var(--bg-2);border:1px solid var(--border-strong);width:100%;text-align:left;transition:all .12s ease;min-width:0}.slot .name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.slot.selected{border-color:var(--accent);box-shadow:0 0 0 2px #c6ff3d59}.slot.locked{opacity:.6;cursor:not-allowed}.slot .lock{font-size:13px}.editor-teams{display:grid;grid-template-columns:1fr 1fr;gap:10px}.editor-team{padding:10px;border-radius:16px;background:var(--surface-2);border:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.editor-team.a{border-top:3px solid var(--team-a)}.editor-team.b{border-top:3px solid var(--team-b)}.editor-team .t{font-size:11px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);display:flex;justify-content:space-between}.editor-bench{display:flex;flex-direction:column;gap:8px;margin-top:10px}.hint{font-size:13px;color:var(--muted);padding:10px 12px;border-radius:12px;background:#ffffff0a;border:1px solid var(--border);line-height:1.4}.switch{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:14px;background:var(--bg-2);border:1px solid var(--border)}.switch .txt{flex:1;text-align:left}.switch .txt b{display:block;font-size:14px}.switch .txt span{font-size:12px;color:var(--muted)}.toggle{width:46px;height:28px;border-radius:999px;background:var(--surface-3);position:relative;transition:background .15s ease;flex-shrink:0}.toggle:after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:transform .15s ease}.toggle.on{background:var(--accent)}.toggle.on:after{transform:translate(18px)}.toasts{position:fixed;left:0;right:0;bottom:calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:8px;z-index:100;pointer-events:none;padding:0 16px}.toast{pointer-events:auto;padding:12px 16px;border-radius:14px;background:#1e3a30;border:1px solid var(--border-strong);color:var(--text);font-size:14px;font-weight:500;box-shadow:var(--shadow);max-width:480px;animation:up .2s ease}.toast.error{background:#3a1e1e;border-color:#ff6b6b80}.toast.success{background:#1f3a1e;border-color:#c6ff3d80}.hero{padding:28px 0 18px}.hero h1{font-size:34px;font-weight:800;line-height:1.05;letter-spacing:-.02em}.hero h1 span{color:var(--accent)}.hero p{margin-top:10px;color:var(--muted);font-size:15px;max-width:460px;line-height:1.5}.session-item{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--border);width:100%;text-align:left}.session-item:last-child{border-bottom:0}.session-item .ico{width:44px;height:44px;border-radius:14px;background:var(--surface-2);display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0}.session-item .ico.live{background:#c6ff3d24}.session-item .t{font-weight:700;font-size:15px}.session-item .d{font-size:12.5px;color:var(--muted);margin-top:2px}.session-item .arrow{color:var(--faint)}.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.stat{padding:12px;border-radius:14px;background:var(--bg-2);border:1px solid var(--border);text-align:center}.stat b{display:block;font-size:22px;font-weight:800;color:var(--accent)}.stat span{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint);font-weight:700}.finished-banner{padding:14px 16px;border-radius:16px;background:#ffd1661a;border:1px solid rgba(255,209,102,.4);color:var(--gold);font-weight:600;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.podium{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.podium .p{padding:14px 8px;border-radius:16px;background:var(--bg-2);border:1px solid var(--border);text-align:center}.podium .p.first{border-color:#ffd16680;background:#ffd16614}.podium .p .medal{font-size:22px}.podium .p .n{font-weight:700;margin-top:6px;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.podium .p .pts{font-size:12px;color:var(--muted)}.qr{display:block;margin:0 auto;border-radius:16px;background:#fff;padding:10px;width:220px;height:220px}.link-box{display:flex;gap:8px;align-items:center}.link-box code{flex:1;min-width:0;padding:12px;border-radius:12px;background:var(--bg-2);border:1px solid var(--border);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.loading{padding:60px 0;text-align:center;color:var(--muted)}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--surface-3);border-top-color:var(--accent);animation:spin .8s linear infinite;margin:0 auto 12px}@keyframes spin{to{transform:rotate(360deg)}}.pulse{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 #c6ff3d99;animation:pulse 1.6s infinite}@keyframes pulse{0%{box-shadow:0 0 #c6ff3d99}70%{box-shadow:0 0 0 8px #c6ff3d00}to{box-shadow:0 0 #c6ff3d00}}@media(max-width:380px){.team .member .name{font-size:14px}.score-btn{font-size:22px}.table .player .name{max-width:90px}}
