:root{
  --bg:#f3f6f5; --panel:#fff; --panel-2:#f8faf9; --text:#13201a; --muted:#68756f;
  --green:#0f7a4f; --green-2:#e7f5ee; --lime:#d9f75c; --line:#dfe7e3; --danger:#b42318;
  --warn:#b25e09; --shadow:0 10px 30px rgba(20,40,30,.08); --radius:18px;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}
button,input,select{font:inherit}
button{cursor:pointer}
.app-shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}
.sidebar{background:#0d1f17;color:#fff;padding:24px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}
.brand{display:flex;align-items:center;gap:12px;margin-bottom:28px}.brand strong{display:block;font-size:16px}.brand span{display:block;color:#94a79d;font-size:12px;margin-top:2px}
.brand-mark{width:42px;height:42px;border-radius:14px;background:var(--lime);color:#10231a;display:grid;place-items:center;font-weight:900;letter-spacing:-1px}
.nav{display:grid;gap:7px}.nav-item{border:0;background:transparent;color:#bccbc3;text-align:left;padding:12px 13px;border-radius:12px;display:flex;gap:10px;align-items:center;font-weight:650}.nav-item:hover,.nav-item.active{background:#17362a;color:#fff}.nav-item.active{box-shadow:inset 3px 0 0 var(--lime)}
.sidebar-footer{margin-top:auto;padding:14px 10px;display:grid;gap:8px;color:#a8bbb1}.status-badge{font-size:12px;display:inline-flex;width:max-content;padding:5px 8px;border-radius:999px;background:#17362a;color:#cfe9da}.status-badge.server{background:#234b39;color:#dff7e8}
.main{min-width:0}.mobile-header{display:none}.page{padding:34px 38px 56px;max-width:1480px;margin:0 auto}.page-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:26px}.page-head h1{margin:0;font-size:30px;letter-spacing:-.035em}.page-head p{margin:6px 0 0;color:var(--muted);max-width:700px}.actions{display:flex;gap:10px;flex-wrap:wrap}
.btn{border:0;border-radius:12px;padding:11px 16px;font-weight:750;background:var(--green);color:#fff;box-shadow:0 4px 12px rgba(15,122,79,.18)}.btn:hover{filter:brightness(.97)}.btn.secondary{background:#fff;color:var(--text);border:1px solid var(--line);box-shadow:none}.btn.ghost{background:transparent;color:var(--green);box-shadow:none}.btn.danger{background:#fff1ef;color:var(--danger);border:1px solid #ffd5d0;box-shadow:none}.btn.full{width:100%}.btn:disabled{opacity:.45;cursor:not-allowed}
.grid{display:grid;gap:18px}.grid.two{grid-template-columns:1.2fr .8fr}.grid.three{grid-template-columns:repeat(3,1fr)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px}.card h2,.card h3{margin:0}.card-sub{color:var(--muted);font-size:14px;margin-top:5px}.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.kpi{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px}.kpi label{display:block;color:var(--muted);font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.05em}.kpi strong{display:block;font-size:28px;margin-top:8px;letter-spacing:-.04em}.kpi em{font-style:normal;color:var(--green);font-size:12px;font-weight:700}
.hero-card{background:linear-gradient(135deg,#102b20,#164a34);color:#fff;border:0;overflow:hidden;position:relative}.hero-card:after{content:"";position:absolute;width:210px;height:210px;border-radius:50%;background:var(--lime);opacity:.13;right:-60px;top:-70px}.hero-card h2{font-size:25px;letter-spacing:-.03em}.hero-card p{color:#c9d9d1;max-width:580px}.hero-card .btn{background:var(--lime);color:#10231a;box-shadow:none}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px;margin-top:15px}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:12px 13px;border-bottom:1px solid #edf1ef;text-align:left;white-space:nowrap}th{font-size:11px;text-transform:uppercase;letter-spacing:.055em;color:var(--muted);background:#f8faf9;position:sticky;top:0}tbody tr:last-child td{border-bottom:0}.rank-num{font-weight:850;color:var(--green)}.rating{font-variant-numeric:tabular-nums;font-weight:850}.delta-up{color:var(--green);font-weight:750}.delta-down{color:var(--danger);font-weight:750}.muted{color:var(--muted)}
.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.field{display:grid;gap:7px}.field label{font-size:12px;font-weight:800;color:#53625a}.input,.select{width:100%;border:1px solid #cfdad5;background:#fff;border-radius:12px;padding:11px 12px;outline:none}.input:focus,.select:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(15,122,79,.1)}
.player-picker{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px}.player-check{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:14px;padding:12px 13px;background:#fff}.player-check.selected{border-color:#92cfb2;background:#f2fbf6}.player-check .who{display:flex;gap:10px;align-items:center}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#edf5f1;color:#235841;font-weight:850}.mini-rating{font-size:12px;color:var(--muted)}.check-input{width:19px;height:19px;accent-color:var(--green)}
.inline-form{display:flex;gap:8px;margin-top:12px}.inline-form .input{flex:1}.selection-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;padding:12px 14px;background:#f6faf8;border-radius:12px}.count-pill{background:var(--green-2);color:var(--green);font-size:12px;font-weight:800;padding:5px 9px;border-radius:999px}
.round-list{display:grid;gap:16px}.round-card{background:#fff;border:1px solid var(--line);border-radius:18px;overflow:hidden}.round-head{padding:13px 16px;background:#f8faf9;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.round-head strong{font-size:15px}.off-pill{font-size:12px;color:#6a4b05;background:#fff6d8;border:1px solid #f4df95;padding:5px 9px;border-radius:999px}.court-grid{display:grid;grid-template-columns:repeat(2,1fr)}.match-card{padding:16px;border-right:1px solid var(--line)}.match-card:last-child{border-right:0}.court-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:800;margin-bottom:10px}.score-row{display:grid;grid-template-columns:minmax(0,1fr) 66px 26px 66px minmax(0,1fr);align-items:center;gap:8px}.team{text-align:center;font-weight:780;line-height:1.25}.score-input{width:66px;text-align:center;border:2px solid #d6e2dc;border-radius:12px;padding:11px 4px;font-size:20px;font-weight:900;outline:none}.score-input:focus{border-color:var(--green);box-shadow:0 0 0 3px rgba(15,122,79,.1)}.versus{text-align:center;color:#87928d;font-size:12px;font-weight:800}.winner-note{margin-top:10px;text-align:center;font-size:12px;color:var(--green);font-weight:800;min-height:17px}.live-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px}.sticky{position:sticky;top:18px;align-self:start}.progress{height:8px;background:#e8eeeb;border-radius:999px;overflow:hidden}.progress>span{display:block;height:100%;background:var(--green);border-radius:inherit}
.history-list{display:grid;gap:12px}.history-item{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}.history-summary{width:100%;border:0;background:#fff;padding:15px 17px;display:flex;justify-content:space-between;align-items:center;text-align:left}.history-summary:hover{background:#fbfcfb}.history-meta{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.week-badge{font-weight:850;color:var(--green);background:var(--green-2);padding:5px 9px;border-radius:999px}.history-detail{padding:0 17px 17px;border-top:1px solid var(--line)}
.setting-row{display:grid;grid-template-columns:1fr 160px;gap:20px;align-items:center;padding:14px 0;border-bottom:1px solid #edf1ef}.setting-row:last-child{border-bottom:0}.setting-row strong{display:block}.setting-row small{color:var(--muted)}
.empty{padding:38px;text-align:center;color:var(--muted);border:1px dashed #ccd8d2;border-radius:16px;background:#fafcfb}.empty strong{display:block;color:var(--text);font-size:18px;margin-bottom:5px}.notice{border-radius:14px;padding:13px 14px;background:#eff8f3;color:#275a43;font-size:13px;border:1px solid #d2ebde}.notice.warn{background:#fff8e9;color:#80510e;border-color:#f4dfac}.notice.danger{background:#fff2f0;color:#8f1e16;border-color:#ffd5d0}.divider{height:1px;background:var(--line);margin:18px 0}.tag{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:#f1f5f3;color:#59675f;font-size:11px;font-weight:750}.tag.anchor{background:#e7f5ee;color:#0b6a44}.tag.provisional{background:#fff4d8;color:#795a0a}
.toast{position:fixed;right:22px;bottom:22px;z-index:1000;background:#12241b;color:#fff;padding:12px 15px;border-radius:12px;box-shadow:var(--shadow);opacity:0;transform:translateY(12px);pointer-events:none;transition:.2s}.toast.show{opacity:1;transform:translateY(0)}
.mobile-menu{position:fixed;inset:0;background:rgba(7,21,14,.55);z-index:900;padding:20px}.mobile-menu-card{background:#fff;border-radius:18px;padding:14px;max-width:360px;margin:60px auto;display:grid;gap:7px}.mobile-menu .nav-item{color:var(--text);background:#f8faf9}.mobile-menu .nav-item:hover{background:#eef5f1}
@media(max-width:1050px){.live-layout{grid-template-columns:1fr}.sticky{position:static}.grid.two{grid-template-columns:1fr}.kpi-row{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app-shell{display:block}.sidebar{display:none}.mobile-header{display:flex;position:sticky;top:0;z-index:50;background:#0d1f17;color:#fff;padding:12px 16px;align-items:center;justify-content:space-between}.brand.compact{margin:0}.brand.compact .brand-mark{width:34px;height:34px;border-radius:10px}.icon-btn{border:0;background:#17362a;color:#fff;width:42px;height:42px;border-radius:11px;font-size:20px}.page{padding:22px 14px 42px}.page-head{display:block}.page-head .actions{margin-top:14px}.page-head h1{font-size:26px}.kpi-row{grid-template-columns:repeat(2,1fr)}.grid.three{grid-template-columns:1fr}.player-picker{grid-template-columns:1fr}.court-grid{grid-template-columns:1fr}.match-card{border-right:0;border-bottom:1px solid var(--line)}.match-card:last-child{border-bottom:0}.score-row{grid-template-columns:minmax(0,1fr) 58px 18px 58px minmax(0,1fr);gap:5px}.score-input{width:58px}.team{font-size:13px}.form-grid{grid-template-columns:1fr}.setting-row{grid-template-columns:1fr}.actions .btn{flex:1}.inline-form{flex-direction:column}}
@media print{.sidebar,.mobile-header,.actions,.btn,.nav{display:none!important}.app-shell{display:block}.page{padding:0}.card,.round-card{box-shadow:none}.score-input{border:1px solid #aaa}.live-layout{display:block}.sticky{margin-top:18px}}


/* Manual tournament entry */
.tag.manual{background:#e9eefc;color:#334e9a}
.manual-match-list{display:grid;gap:14px;margin-top:16px}
.manual-match-card{border:1px solid var(--line);border-radius:16px;padding:16px;background:#fbfcfb}
.manual-match-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:13px}
.manual-meta{display:grid;grid-template-columns:120px 140px;gap:10px;margin-bottom:13px}
.manual-versus-grid{display:grid;grid-template-columns:minmax(0,1fr) 190px minmax(0,1fr);gap:14px;align-items:end}
.manual-team{display:grid;grid-template-columns:1fr 1fr;gap:8px}.manual-team>label,.manual-score>label{grid-column:1/-1;font-size:12px;font-weight:800;color:#53625a}
.manual-score{display:grid;grid-template-columns:72px 30px 72px;justify-content:center;align-items:center;gap:7px}.manual-score>span{text-align:center;color:var(--muted);font-size:12px;font-weight:800}.manual-score .score-input{width:72px}
@media(max-width:850px){.manual-versus-grid{grid-template-columns:1fr}.manual-score{justify-content:start}.manual-team{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.manual-meta,.manual-team{grid-template-columns:1fr}.manual-match-head .muted{display:none}.manual-score{grid-template-columns:64px 26px 64px}.manual-score .score-input{width:64px}}
