:root{
  --bg:#0f1220; --panel:#181c2e; --panel2:#20253b; --line:#2b3050;
  --text:#e8ebf6; --muted:#9aa3c4; --accent:#6c8cff; --accent2:#4ad9b5;
  --good:#36c98f; --gold:#ffcf4d; --silver:#cfd6e6; --bronze:#e3a06a;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  background:var(--bg);color:var(--text);line-height:1.5}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

header{padding:16px 20px;background:linear-gradient(90deg,#1a1f38,#11142a);
  border-bottom:1px solid var(--line)}
.brand{font-weight:700;font-size:18px;color:var(--text)}
.nav{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;
  padding:10px 20px;background:var(--panel);border-bottom:1px solid var(--line)}
.nav .who em{color:var(--muted);font-style:normal;font-size:13px}
.nav .links a{margin-left:14px}
.nav .logout{color:var(--muted)}

main{max-width:760px;margin:24px auto;padding:0 16px}
footer{max-width:760px;margin:30px auto;padding:16px;color:var(--muted);
  font-size:13px;text-align:center}

.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:22px;margin-bottom:18px}
.card.narrow{max-width:380px;margin:60px auto}
h1{margin:0 0 6px;font-size:24px}
h2{margin:0 0 12px;font-size:19px}
.sub{color:var(--muted);margin:0 0 16px}
.error{background:#3a1d28;color:#ff9db1;padding:10px 12px;border-radius:8px}
.ok,.muted{color:var(--muted)}
.ok{color:var(--good);font-weight:600}

label{display:block;margin:12px 0;font-size:14px;color:var(--muted)}
input[type=text],input[type=password],input:not([type]){
  width:100%;margin-top:6px;padding:11px 12px;border-radius:9px;
  border:1px solid var(--line);background:var(--panel2);color:var(--text);font-size:15px}
button{margin-top:14px;width:100%;padding:12px;border:0;border-radius:10px;
  background:var(--accent);color:#fff;font-size:15px;font-weight:600;cursor:pointer}
button:hover{filter:brightness(1.08)}
.back{display:inline-block;margin-bottom:10px;color:var(--muted);font-size:14px}
button.danger{background:#e0654b}

/* project navigation dropdown */
.team-picker{display:block;margin:6px 0 14px;font-size:13px;color:var(--muted)}
.team-picker select{width:100%;margin-top:6px;padding:13px 12px;font-size:16px;
  border-radius:10px;border:1px solid var(--line);background:var(--panel2);
  color:var(--text);appearance:none;-webkit-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) 20px,calc(100% - 14px) 20px;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat}
.btn-link{display:inline-block;margin-top:6px;padding:12px 16px;border-radius:10px;
  background:var(--accent);color:#fff;font-weight:600}
.btn-link:hover{filter:brightness(1.08);text-decoration:none}

/* banners */
.banner{margin-top:18px;padding:14px 16px;border-radius:11px;background:var(--panel2);
  border:1px solid var(--line)}
.banner p{margin:0 0 8px}
.banner.ready{border-color:#2a5a48}
.banner.locked{border-color:var(--gold);background:#2a2614}
.banner .hint{display:block;margin-top:8px;color:var(--muted)}

/* judge submission status chips */
.judge-status{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px}
.chip{padding:6px 12px;border-radius:999px;font-size:13px;border:1px solid var(--line);background:var(--panel2)}
.chip-done{border-color:#2a5a48;color:var(--good)}
.chip-wait{color:var(--muted)}
.score-readonly{opacity:.95}
.refresh{text-align:center}
.danger-zone{border-color:#5a2a2a;background:#241516}
.danger-zone h2{color:#ff9db1}

/* team list */
.team-list{display:flex;flex-direction:column;gap:10px}
.team-row{display:flex;justify-content:space-between;align-items:center;
  padding:14px 16px;border:1px solid var(--line);border-radius:11px;
  background:var(--panel2);color:var(--text)}
.team-row:hover{border-color:var(--accent);text-decoration:none}
.team-row.done{border-color:#2a5a48}
.team-name{font-weight:600;font-size:16px}
.team-row .status{color:var(--muted);font-size:14px}
.team-row.done .status{color:var(--good)}

/* scoring */
.criterion{padding:14px 0;border-bottom:1px solid var(--line)}
.crit-head{display:flex;flex-direction:column;margin-bottom:10px}
.crit-head small{color:var(--muted)}
.pips{display:flex;gap:8px}
.pip{flex:1;margin:0;text-align:center;cursor:pointer}
.pip input{position:absolute;opacity:0;pointer-events:none}
.pip span{display:block;padding:12px 0;border:1px solid var(--line);border-radius:9px;
  background:var(--panel2);color:var(--text);font-weight:600;font-size:16px}
.pip:hover span{border-color:var(--accent)}
.pip.sel span,.pip input:checked + span{background:var(--accent);border-color:var(--accent);color:#fff}

/* leaderboard */
.ranking{display:flex;flex-direction:column;gap:10px}
.rank-row{display:grid;grid-template-columns:48px 1fr auto auto auto;gap:12px;align-items:center;
  padding:14px 16px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}
.rank-row .rank{font-size:22px;text-align:center}
.rank-row .rname{font-weight:700;font-size:17px}
.rank-row .rscore{font-size:20px;font-weight:800}
.rank-row .rscore small{font-size:11px;color:var(--muted);font-weight:600;margin-left:3px}
.rank-row .ravg,.rank-row .rjudges{color:var(--muted);font-size:13px}
.rank-1{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.rank-2{border-color:var(--silver)}
.rank-3{border-color:var(--bronze)}

.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:9px 10px;border-bottom:1px solid var(--line);text-align:center}
th:first-child,td:first-child{text-align:left}
th{color:var(--muted);font-weight:600}
td.tname{font-weight:600}
td.tot{font-weight:800}
@media(max-width:560px){
  .rank-row{grid-template-columns:40px 1fr auto;row-gap:4px}
  .rank-row .ravg,.rank-row .rjudges{grid-column:2 / -1;text-align:left}
}
