:root{--ink: #10171f;--ink-soft: #4a5763;--line: #c9d2da;--line-strong: #8b98a5;--bg: #ffffff;--bg-soft: #f4f7f9;--accent: #0b5fa5;--accent-ink: #ffffff;--good: #0f6b3d;--warn: #8a5300;--bad: #9b1c1c;--radius: 8px;--pad: 16px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-text-size-adjust:100%}h1,h2,h3{line-height:1.25;margin:0 0 8px}h1{font-size:26px}h2{font-size:20px}h3{font-size:17px}p{margin:0 0 12px}a{color:var(--accent)}.app{max-width:1100px;margin:0 auto;padding:var(--pad)}.topbar{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline;justify-content:space-between;border-bottom:2px solid var(--line);padding-bottom:12px;margin-bottom:16px}.topbar .sub{color:var(--ink-soft);font-size:14px}.tabs{display:flex;flex-wrap:wrap;gap:4px;border-bottom:2px solid var(--line);margin-bottom:16px}.tabs a{padding:12px 16px;text-decoration:none;color:var(--ink-soft);font-weight:600;border-bottom:3px solid transparent;margin-bottom:-2px}.tabs a.active{color:var(--ink);border-bottom-color:var(--accent)}button,.btn{font:inherit;font-weight:600;min-height:44px;padding:10px 16px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg-soft);color:var(--ink);cursor:pointer}button:hover:not(:disabled),.btn:hover{background:#e8eef3}button:disabled{opacity:.5;cursor:not-allowed}button.primary,.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.primary:hover:not(:disabled){background:#094f8a}button.danger{color:var(--bad);border-color:#e0b4b4;background:#fdf4f4}button.small{min-height:34px;padding:4px 10px;font-size:14px}input,select,textarea{font:inherit;min-height:44px;padding:8px 10px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);color:var(--ink);max-width:100%}input:disabled,select:disabled{background:var(--bg-soft);color:var(--ink-soft)}input[type=checkbox]{min-height:0;width:22px;height:22px}label{font-weight:600;display:block;margin-bottom:4px}.field{margin-bottom:14px}.field .hint{font-weight:400;color:var(--ink-soft);font-size:13px;margin-top:4px}.row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}.row>*{flex:0 1 auto}.card{border:1px solid var(--line);border-radius:var(--radius);padding:var(--pad);margin-bottom:16px;background:var(--bg)}.card>h2:first-child,.card>h3:first-child{margin-top:0}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}th{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}tbody tr:hover{background:var(--bg-soft)}td.numeric,th.numeric{text-align:right;font-variant-numeric:tabular-nums}.pill{display:inline-block;padding:2px 10px;border-radius:999px;font-size:13px;font-weight:700;border:1px solid currentColor}.pill.paid{color:var(--good)}.pill.pending{color:var(--warn)}.pill.muted{color:var(--ink-soft)}.banner{border:1px solid var(--line-strong);border-left:5px solid var(--accent);background:var(--bg-soft);border-radius:var(--radius);padding:12px var(--pad);margin-bottom:16px}.banner.warn{border-left-color:var(--warn)}.banner.bad{border-left-color:var(--bad)}.banner h3{margin-bottom:4px}.banner p:last-child{margin-bottom:0}.stats{display:flex;flex-wrap:wrap;gap:12px}.stat{flex:1 1 180px;border:1px solid var(--line);border-radius:var(--radius);padding:12px var(--pad)}.stat .label{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft)}.stat .value{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}.stat.good .value{color:var(--good)}.stat.warn .value{color:var(--warn)}.meter{height:14px;background:var(--bg-soft);border:1px solid var(--line);border-radius:999px;overflow:hidden}.meter>span{display:block;height:100%;background:var(--good)}.empty{color:var(--ink-soft);padding:16px 0}.muted{color:var(--ink-soft)}.right{margin-left:auto}.stack>*+*{margin-top:16px}.bracket-wrap{--bracket-col: 210px;--bracket-gutter: 28px;--bracket-node-h: 68px}.bracket-scroll{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;padding-bottom:12px;overscroll-behavior-x:contain}.bracket{display:flex;align-items:stretch;min-width:min-content;min-height:220px}.bracket-round{display:flex;flex-direction:column;flex:0 0 auto;width:var(--bracket-col);scroll-snap-align:start}.bracket-round-head{position:sticky;top:0;z-index:2;background:var(--bg);border-bottom:2px solid var(--line);padding:6px 0 8px;font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);white-space:nowrap}.bracket-round-body{flex:1;display:flex;flex-direction:column;padding:14px 0}.bracket-group{flex:1;display:flex;flex-direction:column;justify-content:space-around;position:relative;padding-right:var(--bracket-gutter)}.bracket-node{position:relative;min-height:var(--bracket-node-h);display:flex;flex-direction:column;justify-content:center}.bracket-round:not(.is-last) .bracket-node:after{content:"";position:absolute;left:100%;top:50%;width:calc(var(--bracket-gutter) / 2);border-top:2px solid var(--line-strong)}.bracket-round:not(.is-last) .bracket-group.is-pair:before{content:"";position:absolute;right:calc(var(--bracket-gutter) / 2);top:25%;bottom:25%;border-right:2px solid var(--line-strong)}.bracket-round:not(.is-last) .bracket-group:after{content:"";position:absolute;right:0;top:50%;width:calc(var(--bracket-gutter) / 2);border-top:2px solid var(--line-strong)}.bracket-card{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);overflow:hidden}.bracket-card.is-selected{outline:3px solid var(--accent);outline-offset:1px}.bracket-team{display:flex;align-items:center;gap:6px;padding:6px 6px 6px 0;border-left:4px solid transparent;font-size:14px;line-height:1.2}.bracket-team+.bracket-team{border-top:1px solid var(--line)}.bracket-team.is-winner{border-left-color:var(--good);background:#eef6f1;font-weight:700}.bracket-team.is-loser{color:var(--ink-soft)}.bracket-seed{flex:0 0 auto;min-width:18px;margin-left:6px;text-align:center;font-size:11px;font-weight:700;color:var(--ink-soft);font-variant-numeric:tabular-nums}.bracket-name{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bracket-sets{flex:0 0 auto;display:flex;gap:2px}.bracket-set{min-width:18px;padding:1px 3px;text-align:center;font-size:12px;font-variant-numeric:tabular-nums;border:1px solid var(--line);border-radius:3px;background:var(--bg-soft)}.bracket-set.is-blank{color:var(--line-strong)}.bracket-bye{display:flex;align-items:center;gap:6px;padding:6px 6px 6px 0;border-left:4px solid var(--line);border-top:1px dashed var(--line-strong);border-bottom:1px dashed var(--line-strong);font-size:14px;color:var(--ink-soft)}.bracket-tag{font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.bracket-edit{position:absolute;right:calc(var(--bracket-gutter) + 4px);top:-9px;min-height:0;padding:1px 7px;font-size:11px;border-radius:999px;background:var(--bg);z-index:1}@media(max-width:700px){.bracket-wrap{--bracket-col: 168px;--bracket-gutter: 20px}.bracket-team,.bracket-bye{font-size:13px}}.group-row th{background:var(--bg-soft);border-top:2px solid var(--line-strong);border-bottom:1px solid var(--line);padding:8px 10px;font-size:13px;text-transform:none;letter-spacing:0;color:var(--ink);font-weight:700}.group-count{display:inline-block;margin-left:8px;padding:0 8px;border-radius:999px;background:var(--bg);border:1px solid var(--line-strong);font-variant-numeric:tabular-nums}.group-hint{margin-left:10px;font-weight:400;color:var(--ink-soft);font-size:12px}.player-number{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:16px;font-variant-numeric:tabular-nums}.court-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}.court-slot{border:1px solid var(--line-strong);border-left:5px solid var(--accent);border-radius:var(--radius);padding:8px 12px;background:var(--bg)}.court-slot.is-idle{border-left-color:var(--warn);background:#fffaf0}.court-slot.is-urgent{border-left-color:var(--bad);background:#fdf4f4}.court-slot.is-next{border-left-color:var(--line-strong)}.court-slot.is-open{outline:3px solid var(--accent);outline-offset:1px}.court-sub{display:block;font-weight:400;text-transform:none;letter-spacing:0}.court-tag{float:right;color:var(--bad);font-size:11px}.court-slot.is-idle .court-tag{color:var(--warn)}.court-tap{display:block;width:100%;text-align:left;border:none;background:none;padding:4px 0 0;min-height:0;font:inherit}.court-tap:hover{background:none}.court-cta{margin-top:6px;font-size:12px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.04em}.court-reason{font-size:12px;color:var(--ink-soft);margin-top:4px}.court-reason.is-bad{color:var(--bad)}.court-idle-time{margin-top:6px;font-size:13px;font-weight:700;color:var(--warn);font-variant-numeric:tabular-nums}.court-idle-time.is-long{color:var(--bad)}.court-match.is-locked{color:var(--ink-soft)}.court-entry{padding-top:6px}.court-side{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-weight:400}.court-side span{flex:1 1 auto;font-size:13px}.court-side input{width:56px;min-height:40px;text-align:center;font-size:18px}.court-slot .court-label{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft)}.court-slot .court-match{font-size:14px;line-height:1.35}.round-block{margin-top:20px}.round-block>h3{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding-bottom:6px;border-bottom:2px solid var(--line)}.round-block.is-current>h3{border-bottom-color:var(--accent)}.round-block.is-locked{opacity:.55}.match-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;margin-top:10px}.match-card{border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg);padding:10px 12px;text-align:left;font:inherit;min-height:0;display:block;width:100%}.match-card:disabled{cursor:default}.match-card.is-scored{border-left:5px solid var(--good)}.match-card.is-open{border-left:5px solid var(--warn)}.match-card.is-selected{outline:3px solid var(--accent);outline-offset:1px}.match-card .match-head{display:flex;justify-content:space-between;gap:8px;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.match-card .match-side{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:3px 0}.match-card .match-side+.match-side{border-top:1px solid var(--line)}.match-card .match-names{font-size:14px;line-height:1.25}.match-card .match-score{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;min-width:22px;text-align:right}.match-card .match-score.is-blank{color:var(--line-strong);font-weight:400}.match-card .match-side.is-winner .match-names{font-weight:700}.podium{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.podium-place{border:1px solid var(--line);border-radius:var(--radius);padding:12px var(--pad);border-top:5px solid var(--line-strong)}.podium-place.is-first{border-top-color:#b8860b}.podium-place.is-second{border-top-color:#8b98a5}.podium-place.is-third{border-top-color:#a0632c}.podium-place .place-label{font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft)}.podium-place .place-team{font-size:17px;font-weight:700;line-height:1.3;margin-top:2px}.podium-place .place-team.is-pending{font-weight:400;color:var(--ink-soft)}.podium-place .place-note{font-size:13px;color:var(--ink-soft);margin-top:4px}.events-table .row-action{position:sticky;right:0;background:var(--bg);border-left:1px solid var(--line);text-align:right;white-space:nowrap}.events-table tbody tr:hover .row-action{background:var(--bg-soft)}@media(max-width:640px){.hide-narrow{display:none}}.is-highlighted>td{background:#fff4d6}.is-highlighted>td:first-child{box-shadow:inset 4px 0 0 var(--warn)}.player-link{display:inline-flex;align-items:center;gap:8px}.method-tag{font-weight:600}.player-list{list-style:none;padding:0;margin:0}.player-list li{padding:4px 0;border-bottom:1px solid var(--line)}.method-players{list-style:none;padding:4px 0 4px 18px;margin:0}.method-players li{padding:3px 0}.link-row{border:none;background:none;padding:0;min-height:0;color:var(--accent);font-weight:600;text-align:left}.link-row:hover{background:none;text-decoration:underline}
