:root { --purple:#3A2551; --ground:#E0E0DB; --line:#CFCFC8; --soft:#E4E4DE; --ink:#1B1622; --muted:#4A4453; --gold:#8A6602;
  --err:#8A2B14; --err-bg:#FBEDE8; --ok:#1E5A3A; --ok-bg:#E6F2EA; --warn:#5C4300; --warn-bg:#FFF8E6; }
* { box-sizing: border-box; }
body { margin:0; background:var(--ground); color:var(--ink); font:14px/1.45 Inter, system-ui, sans-serif; }
a { color:var(--purple); }
h1 { margin:0; font:400 34px/1.15 'Didact Gothic', sans-serif; color:var(--purple); letter-spacing:-0.01em; }
h2 { margin:0; font-size:17px; font-weight:600; color:var(--purple); }
.muted { color:var(--muted); } .small { font-size:13px; } .pad { padding:24px; } .right { text-align:right; } .num { font-variant-numeric:tabular-nums; }
.bar { background:#fff; border-bottom:1px solid var(--line); } .bar.staff { background:var(--purple); border:0; }
.bar-in { max-width:1200px; margin:0 auto; padding:12px 24px; display:flex; flex-wrap:wrap; align-items:center; gap:8px 28px; }
.brand { font:24px 'Didact Gothic', sans-serif; letter-spacing:.14em; color:var(--purple); text-decoration:none; } .staff .brand { color:#fff; }
nav { display:flex; flex-wrap:wrap; gap:4px; flex:1; }
nav a { padding:12px 14px; text-decoration:none; color:var(--muted); border-bottom:2px solid transparent; }
nav a.on { font-weight:600; color:var(--purple); border-color:var(--gold); }
.staff nav a { color:#E3DBEC; } .staff nav a.on { color:#fff; border-color:#fff; }
.who { font-size:13px; color:var(--muted); text-align:right; } .staff .who, .staff .who button { color:#E3DBEC; }
main { max-width:1200px; margin:0 auto; padding:28px 24px 56px; display:flex; flex-direction:column; gap:20px; }
.row { display:flex; flex-wrap:wrap; gap:12px; align-items:center; } .between { justify-content:space-between; } .end { align-items:flex-end; }
.cols { display:flex; flex-wrap:wrap; gap:20px; align-items:flex-start; } .cols > .main { flex:2 1 560px; min-width:0; display:flex; flex-direction:column; gap:20px; } .cols > aside { flex:1 1 300px; min-width:0; display:flex; flex-direction:column; gap:20px; }
.card { background:#fff; border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.card > .head { padding:16px 20px; border-bottom:1px solid var(--soft); display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; align-items:center; }
.card > .body { padding:16px 20px; display:flex; flex-direction:column; gap:12px; }
.scroll { overflow-x:auto; }
table { width:100%; border-collapse:collapse; } th { text-align:left; font-size:12px; font-weight:500; color:var(--muted); padding:10px 8px; } td { padding:10px 8px; border-top:1px solid var(--soft); vertical-align:top; }
th:first-child, td:first-child { padding-left:20px; } th:last-child, td:last-child { padding-right:20px; }
tr.bad > td { background:var(--err-bg); } tr.msg > td { border-top:0; padding-top:0; color:var(--err); background:var(--err-bg); }
tr.click { cursor:pointer; } tr.click:hover > td { background:#F6F4F9; }
input[type=text], input[type=email], select { min-height:40px; border:1px solid #B9B9B1; border-radius:6px; padding:0 10px; font:inherit; background:#fff; }
input.q { width:96px; text-align:right; font-variant-numeric:tabular-nums; } input.invalid { border:2px solid var(--err); }
input[type=checkbox] { width:20px; height:20px; accent-color:var(--purple); }
button { font:inherit; cursor:pointer; } button:disabled { cursor:not-allowed; }
.btn { min-height:44px; padding:0 18px; border-radius:8px; border:1px solid var(--purple); background:var(--purple); color:#fff; font-weight:600; }
.btn.ghost { background:#fff; color:var(--purple); } .btn.dash { background:#fff; color:var(--purple); border-style:dashed; border-color:#8C8C84; }
.btn:disabled { background:#EDEDE8; border-color:#B9B9B1; color:var(--muted); }
.link { background:none; border:0; padding:0; color:var(--purple); text-decoration:underline; }
.pill { font-size:13px; font-weight:600; border-radius:999px; padding:4px 12px; background:#EDEDE8; color:var(--muted); white-space:nowrap; }
.pill.ok { background:var(--ok-bg); color:var(--ok); } .pill.err { background:var(--err-bg); color:var(--err); } .pill.warn { background:var(--warn-bg); color:var(--warn); }
.fact { background:#fff; border:1px solid var(--line); border-radius:8px; padding:10px 14px; } .fact b { display:block; }
.note { border-radius:8px; padding:12px 14px; } .note.err { background:var(--err-bg); color:var(--err); } .note.ok { background:var(--ok-bg); color:var(--ok); } .note.warn { background:var(--warn-bg); color:var(--warn); }
label.check { display:flex; gap:10px; align-items:flex-start; min-height:44px; }
.login { max-width:420px; margin:10vh auto; } .login .body { gap:16px; padding:28px; }
:focus-visible { outline:3px solid #7B5BA6; outline-offset:2px; }
