:root{
  --bg:#f4f5f7; --card:#fff; --ink:#1d2330; --muted:#6b7280;
  --line:#e4e7ec; --accent:#a30f2d; --accent-d:#7d0b22;   /* OSU scarlet */
  --ok-bg:#e7f6ec; --ok-ink:#1f7a38; --err-bg:#fdeaea; --err-ink:#b42318;
}
*{box-sizing:border-box}
body{margin:0;font:15px/1.5 -apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink);background:var(--bg)}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1{font-size:1.5rem;margin:.2rem 0 .3rem}
h2{font-size:1.1rem;margin:0 0 .6rem}
.sub{color:var(--muted);margin:.1rem 0 1.1rem;font-size:.95rem}
code{background:#eef1f5;padding:1px 5px;border-radius:4px;font-size:.9em}

.wrap{max-width:920px;margin:0 auto;padding:1.2rem}
.wrap.narrow{max-width:460px;padding-top:2.5rem}
.row{display:flex;align-items:center;gap:.75rem}
.spacer{flex:1}

.topbar{background:var(--ink);color:#fff}
.topbar .wrap{padding:.6rem 1.2rem;display:flex;align-items:center;gap:.75rem}
.topbar strong{font-weight:600}
.topbar .whoami{color:#c7cdd9;font-size:.9rem}
.topbar a{color:#fff}
.topbar .sep{color:#7d8696}

.card{background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:1.1rem;margin:0 0 1rem;box-shadow:0 1px 2px rgba(16,24,40,.04)}
details.card summary{cursor:pointer;font-weight:600}
details.card[open] summary{margin-bottom:.8rem}

label{display:block;margin:0 0 .8rem;font-weight:600;font-size:.92rem}
input,textarea,select{width:100%;margin-top:.3rem;padding:.55rem .65rem;
  border:1px solid var(--line);border-radius:7px;font:inherit;background:#fff;font-weight:400}
input:focus,textarea:focus{outline:2px solid var(--accent);border-color:var(--accent)}
textarea{resize:vertical}
.hint{display:block;margin-top:.35rem;font-weight:400;color:var(--muted);font-size:.85rem}
.two{display:grid;grid-template-columns:1fr 1fr;gap:0 1rem}
.score-in{max-width:120px}

button{background:var(--accent);color:#fff;border:0;border-radius:7px;
  padding:.55rem 1.1rem;font:inherit;font-weight:600;cursor:pointer}
button:hover{background:var(--accent-d)}
button:disabled{opacity:.5;cursor:not-allowed}
a.btn{display:inline-block;background:var(--accent);color:#fff;padding:.4rem .8rem;
  border-radius:7px;font-weight:600;font-size:.85rem}
a.btn:hover{background:var(--accent-d);text-decoration:none}
a.btn.ghost{background:#fff;color:var(--accent);border:1px solid var(--line)}
button.danger{background:#b42318}
button.danger:hover{background:#962012}

.tabs{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}
.tabs a{padding:.5rem .9rem;border:1px solid var(--line);
  border-radius:7px;background:#fff;color:var(--muted)}
.tabs a.on{background:var(--ink);color:#fff;border-color:var(--ink)}

.note{padding:.6rem .8rem;border-radius:7px;margin:0 0 1rem;font-size:.92rem}
.note.ok{background:var(--ok-bg);color:var(--ok-ink)}
.note.err{background:var(--err-bg);color:var(--err-ink)}
.note.info{background:#eef4ff;color:#1a4fb4}

table.grid{width:100%;border-collapse:collapse;font-size:.9rem}
table.grid th,table.grid td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--line);vertical-align:top}
table.grid th{color:var(--muted);font-weight:600;font-size:.82rem;text-transform:uppercase;letter-spacing:.02em}
table.grid tr:hover td{background:#fbfcfe}
table.grid form{margin:0}
table.grid input{margin-top:0}
table.grid button{padding:.35rem .6rem;font-size:.85rem}
.num{font-variant-numeric:tabular-nums;text-align:right}

.pill{display:inline-block;padding:.1rem .5rem;border-radius:999px;font-size:.78rem;
  background:#eef1f5;color:var(--muted);font-weight:600}
.pill.ok{background:var(--ok-bg);color:var(--ok-ink)}
.pill.warn{background:#fef3e7;color:#b25a00}

.tokbox{font:12px/1.4 ui-monospace,Menlo,Consolas,monospace;background:#f7f8fa;
  border:1px solid var(--line);border-radius:6px;padding:.35rem .5rem;width:100%;word-break:break-all}
.abstract{color:#344054;font-size:.9rem;white-space:pre-wrap;max-width:46ch}
.copybtn{font-size:.8rem;padding:.25rem .55rem}
.assign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.15rem .9rem;margin:.4rem 0}
.assign-grid label{font-weight:400;margin:0;display:flex;align-items:center;gap:.4rem;font-size:.9rem}
.assign-grid input{width:auto;margin:0}
.foot{color:var(--muted);font-size:.82rem;margin-top:1.5rem;text-align:center}
