/* Design tokens from the approved prototype — copy exactly (spec §3). */
:root{
  --bg:#101623; --panel:#161e2e; --panel2:#1b2436; --line:#232e45;
  --text:#e8edf6; --dim:#8b97ad; --faint:#5a6579;
  --usdt:#26a17b; --usdt-soft:rgba(38,161,123,.12);
  --amber:#e8a33d; --amber-soft:rgba(232,163,61,.12);
  --red:#e05c5c; --red-soft:rgba(224,92,92,.12);
  --evening:#8f7ef2; --violet-soft:rgba(143,126,242,.14);
}

/* Self-hosted fonts (spec §3): drop the woff2 files into /static/fonts —
   see static/fonts/README.md. Cyrillic subsets required. */
@font-face{font-family:'Unbounded';font-weight:500 700;font-display:swap;
  src:url('/static/fonts/Unbounded-var.woff2') format('woff2');}
@font-face{font-family:'Sofia Sans';font-weight:400 700;font-display:swap;
  src:url('/static/fonts/SofiaSans-var.woff2') format('woff2');}
@font-face{font-family:'JetBrains Mono';font-weight:400 700;font-display:swap;
  src:url('/static/fonts/JetBrainsMono-var.woff2') format('woff2');}

*{margin:0;padding:0;box-sizing:border-box}
body{background:var(--bg);color:var(--text);
  font-family:'Sofia Sans',system-ui,sans-serif;font-size:15px;min-height:100vh}
.mono{font-family:'JetBrains Mono',monospace}

.topbar{display:flex;align-items:center;gap:18px;padding:14px 28px;
  border-bottom:1px solid var(--line);background:var(--panel);
  position:sticky;top:0;z-index:40;flex-wrap:wrap}
.wordmark{font-family:'Unbounded',sans-serif;font-weight:700;font-size:15px;
  letter-spacing:.06em}
.wordmark span{color:var(--usdt)}
.nav{display:flex;gap:4px;flex:1}
.nav a{color:var(--dim);padding:7px 14px;border-radius:8px;font-weight:600;
  font-size:14px;text-decoration:none}
.nav a.on{color:var(--text);background:var(--panel2)}
.nav a:hover{color:var(--text)}
.lang{display:flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.lang button{background:none;border:none;color:var(--dim);padding:6px 12px;
  font-family:inherit;font-weight:700;font-size:13px;cursor:pointer}
.lang button.on{background:var(--usdt);color:#04120c}
.userchip{display:flex;align-items:center;gap:10px}
.avatar{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;font-weight:700;font-size:14px;color:#0b1020;
  background:linear-gradient(135deg,#8f7ef2,#26a17b)}
.who{line-height:1.15}.who b{display:block;font-size:14px}
.who span{font-size:12px;color:var(--dim)}

.wrap{max-width:1280px;margin:0 auto;padding:24px 28px 60px}
h1{font-family:'Unbounded',sans-serif;font-weight:500;font-size:20px;margin-bottom:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:18px;margin-bottom:16px}
.card h2{font-size:12px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--dim);margin-bottom:12px}
.btn{background:var(--panel2);border:1px solid var(--line);border-radius:8px;
  color:var(--text);padding:7px 14px;font-family:inherit;font-weight:600;
  font-size:13px;cursor:pointer;text-decoration:none;display:inline-block}
.btn.primary{background:var(--usdt);border-color:var(--usdt);color:#04120c}
.btn.sm{padding:4px 10px;font-size:12px}
.btn:hover{border-color:var(--dim)}
.dimtext{color:var(--dim)} .fainttext{color:var(--faint)}
.note{margin-top:20px;color:var(--faint);font-size:12.5px;text-align:center}
.err{background:var(--red-soft);border:1px solid rgba(224,92,92,.4);
  border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:12px;color:var(--red)}
.info{background:var(--usdt-soft);border:1px solid rgba(38,161,123,.35);
  border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:12px;color:var(--usdt)}

.fld{margin-bottom:12px}
.fld label{display:block;font-size:12px;color:var(--dim);margin-bottom:4px}
.fld input,.fld select{width:100%;background:var(--panel2);
  border:1px solid var(--line);border-radius:8px;color:var(--text);
  padding:8px 10px;font-family:'JetBrains Mono',monospace;font-size:13px}

table.board{width:100%;border-collapse:separate;border-spacing:0 6px}
.board th{font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--faint);text-align:left;padding:0 10px 4px;font-weight:700}
.board td{background:var(--panel2);padding:9px 10px;font-size:13.5px;
  vertical-align:middle}
.board tr td:first-child{border-radius:9px 0 0 9px}
.board tr td:last-child{border-radius:0 9px 9px 0}
.flag{font-size:11px;font-weight:700;padding:2px 8px;border-radius:10px}
.flag.ok{background:var(--usdt-soft);color:var(--usdt)}
.flag.warnf{background:var(--amber-soft);color:var(--amber)}
.flag.missf{background:var(--red-soft);color:var(--red)}

/* Access matrix grid */
.matrix{overflow-x:auto}
.matrix table{border-collapse:collapse;font-size:12px}
.matrix th,.matrix td{border:1px solid var(--line);padding:4px 6px;text-align:center}
.matrix th{background:var(--panel2);position:sticky;top:0}
.matrix td.fn{text-align:left;min-width:240px;background:var(--panel2)}
.matrix tr.scope td{background:var(--panel2);color:var(--dim);font-size:11px}
.matrix tr.module td{background:var(--bg);color:var(--faint);
  text-transform:uppercase;letter-spacing:.1em;font-size:10px;text-align:left}
.matrix select{background:var(--panel2);color:var(--text);
  border:1px solid var(--line);border-radius:4px;font-size:12px}
.saved{color:var(--usdt);font-weight:700}
.login-box{max-width:420px;margin:80px auto}
input[type="checkbox"]{accent-color:var(--usdt);width:15px;height:15px;
  cursor:pointer;flex:none}
