:root{
  --bg:#f4f6f9; --card:#fff; --ink:#1b2430; --muted:#6b7686; --line:#e1e6ed;
  --brand:#1f6feb; --brand-ink:#fff; --ok:#1a9d5a; --warn:#c77700; --bad:#d1344b;
  --track:#e6ebf2; --shadow:0 1px 2px rgba(20,30,50,.06),0 4px 14px rgba(20,30,50,.05);
}
@media (prefers-color-scheme:dark){
  :root{--bg:#10151c;--card:#19212b;--ink:#e8edf3;--muted:#96a3b4;--line:#2a3441;
        --brand:#5b9bff;--brand-ink:#0b1220;--ok:#3ccf86;--warn:#f0b24a;--bad:#ff6b81;
        --track:#2a3441;--shadow:none}
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);
  font-family:"Sukhumvit Set","Thonburi","Noto Sans Thai",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:16px;line-height:1.5;-webkit-text-size-adjust:100%}
a{color:var(--brand)}
.wrap{max-width:1080px;margin:0 auto;padding:16px}
.topbar{background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
.topbar .wrap{display:flex;align-items:center;gap:8px;padding-top:10px;padding-bottom:10px;flex-wrap:wrap}
.brand{font-weight:700;margin-right:auto;font-size:1.02rem}
.nav a{display:inline-block;padding:7px 12px;border-radius:8px;text-decoration:none;color:var(--ink);font-weight:600;font-size:.95rem}
.nav a.on{background:var(--brand);color:var(--brand-ink)}
.who{color:var(--muted);font-size:.88rem}
h1{font-size:1.35rem;margin:6px 0 14px}
h2{font-size:1.1rem;margin:22px 0 10px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow);padding:16px}
.muted{color:var(--muted);font-size:.88rem}
.btn{appearance:none;border:1px solid var(--line);background:var(--card);color:var(--ink);
  padding:10px 16px;border-radius:10px;font:inherit;font-weight:600;cursor:pointer}
.btn.primary{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.btn.small{padding:6px 10px;font-size:.88rem}
.btn:disabled{opacity:.55;cursor:default}
input[type=text],input[type=password],input[type=number],input:not([type]),select{
  width:100%;font:inherit;color:var(--ink);background:var(--bg);border:1px solid var(--line);
  border-radius:10px;padding:10px 12px}
input:focus,select:focus{outline:2px solid var(--brand);outline-offset:1px}
label{font-weight:600;font-size:.92rem}
.err{color:var(--bad);font-weight:600;min-height:1.4em}
.ok{color:var(--ok);font-weight:600}

/* dashboard */
.overall{border:2px solid var(--brand);display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.overall .big{font-size:2.4rem;font-weight:800;line-height:1}
.overall .txt{flex:1;min-width:220px}
.donut{width:150px;height:150px;flex:none}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.item{display:flex;gap:14px;align-items:center}
.item .donut{width:92px;height:92px}
.item .name{font-weight:700}
.item .num{font-size:.95rem}
.rounds{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0 0}
.chip{border:1px solid var(--line);border-radius:999px;padding:3px 12px;font-size:.88rem;font-weight:600;color:var(--muted)}
.chip.done{background:color-mix(in srgb,var(--ok) 14%,transparent);border-color:var(--ok);color:var(--ok)}
.notice{border-left:4px solid var(--warn);background:color-mix(in srgb,var(--warn) 12%,var(--card));
  padding:10px 14px;border-radius:8px;margin:12px 0}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);font-size:.93rem;vertical-align:top}
th{color:var(--muted);font-weight:600}

/* entry */
.round-pick{display:flex;gap:8px;flex-wrap:wrap}
.round-pick label{flex:1;min-width:90px;text-align:center;border:1px solid var(--line);
  border-radius:10px;padding:10px;cursor:pointer;background:var(--card)}
.round-pick input{position:absolute;opacity:0}
.round-pick input:checked+span{color:var(--brand)}
.round-pick label:has(input:checked){border:2px solid var(--brand);padding:9px}
.fields{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin-top:12px}
.field h3{margin:0 0 8px;font-size:1.02rem}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.stepper{display:flex;gap:6px}
.stepper button{width:44px;flex:none;font-size:1.3rem;font-weight:700;line-height:1;padding:0}
.stepper input{text-align:center;font-weight:700;font-size:1.15rem}
.changed input{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 9%,var(--bg))}
.save-bar{position:sticky;bottom:0;background:linear-gradient(transparent,var(--bg) 30%);
  padding:18px 0 14px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.save-bar .btn.primary{flex:1;min-width:200px;padding:14px;font-size:1.05rem}
.toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);background:var(--ok);color:#fff;
  padding:12px 20px;border-radius:12px;font-weight:700;box-shadow:0 6px 24px rgba(0,0,0,.25);z-index:50}
.login{max-width:380px;margin:12vh auto 0}
.login .card{display:grid;gap:12px}
@media (max-width:520px){.donut{width:120px;height:120px}.overall .big{font-size:2rem}}

.grp{margin:26px 0 10px;padding-bottom:6px;border-bottom:2px solid var(--line)}
.fields{margin-top:0}
.num-badge{display:inline-block;min-width:1.7em;margin-right:6px;padding:0 6px;border-radius:999px;
  background:var(--track);color:var(--muted);font-size:.8rem;font-weight:700;text-align:center}
