:root{
  --ink:#1B2430; --ink-soft:#2A3542; --paper:#F7F5F0; --paper-dim:#EDEAE2;
  --gold:#C9A227; --gold-dim:#B8933A; --slate:#5B6472;
  --ready:#2F9E44; --ready-bg:#E6F4EA;
  --warn:#C77D18; --warn-bg:#FBF0DD;
  --risk:#C0392B; --risk-bg:#FBE9E7;
  --line:#DBD6C9;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--paper);color:var(--ink);font-family:'Inter',sans-serif;-webkit-font-smoothing:antialiased;}
h1,h2,h3,.display{font-family:'Fraunces',serif;}
.mono{font-family:'JetBrains Mono',monospace;}
a{color:inherit;}

.topnav{display:flex;justify-content:space-between;align-items:center;background:var(--ink);color:var(--paper);padding:14px 26px;flex-wrap:wrap;gap:10px;}
.topnav-brand{display:flex;flex-direction:column;line-height:1.25;}
.topnav-brand .eyebrow{font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-weight:600;}
.topnav-brand strong{font-family:'Fraunces',serif;font-size:16px;}
.topnav-links{display:flex;align-items:center;gap:16px;font-size:13.5px;flex-wrap:wrap;}
.topnav-links a{text-decoration:none;color:#D9DCE2;}
.topnav-links a:hover{color:var(--gold);}
.topnav-user{color:#8E97A6;font-size:12px;}
.topnav-logout{background:rgba(255,255,255,.08);padding:6px 12px;border-radius:6px;color:var(--paper) !important;}

.page{max-width:1180px;margin:0 auto;padding:28px 24px 60px;}

.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px 22px;margin-bottom:18px;}
.card h3{margin:0 0 14px;font-size:16px;font-weight:600;}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;}
.field label{font-size:11.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--slate);display:block;margin-bottom:5px;font-weight:600;}

label{font-size:13px;}
select,input[type=text],input[type=password],input[type=number],input[type=date],textarea{
  font-family:'Inter',sans-serif;font-size:14px;padding:8px 10px;border-radius:6px;
  border:1px solid var(--line);background:#fff;color:var(--ink);width:100%;
}

table{width:100%;border-collapse:collapse;font-size:13px;}
th{text-align:left;padding:9px 10px;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--slate);border-bottom:2px solid var(--line);}
td{padding:10px 10px;border-bottom:1px solid var(--line);vertical-align:middle;}
tr:hover td{background:#FCFBF8;}

.btn{background:var(--ink);color:var(--paper);border:none;padding:10px 16px;border-radius:7px;font-size:13.5px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:7px;text-decoration:none;}
.btn.gold{background:var(--gold);color:var(--ink);}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line);}
.btn.danger{background:var(--risk-bg);color:var(--risk);}
.btn:hover{opacity:.9;}

.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:20px;font-size:11.5px;font-weight:700;}
.badge.ready{background:var(--ready-bg);color:var(--ready);}
.badge.warn{background:var(--warn-bg);color:var(--warn);}
.badge.risk{background:var(--risk-bg);color:var(--risk);}

.cefr-chip{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;font-family:'Fraunces',serif;font-weight:700;font-size:14px;background:var(--paper-dim);color:var(--ink);border:1px solid var(--line);}

.bar-bg{width:100%;height:7px;background:var(--paper-dim);border-radius:5px;overflow:hidden;}
.bar-fill{height:100%;border-radius:5px;background:var(--gold);}

.stamp{position:relative;display:inline-flex;align-items:center;justify-content:center;border:3px solid currentColor;border-radius:10px;padding:8px 18px;font-family:'Fraunces',serif;font-weight:700;font-size:15px;letter-spacing:.05em;text-transform:uppercase;transform:rotate(-3deg);opacity:.92;}
.stamp.ready{color:var(--ready);} .stamp.warn{color:var(--warn);} .stamp.risk{color:var(--risk);}

.score-num{font-family:'Fraunces',serif;font-weight:700;line-height:1;}
.empty{text-align:center;padding:60px 20px;color:var(--slate);}

.login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--ink);}
.login-card{background:var(--paper);border-radius:14px;padding:36px 34px;width:100%;max-width:380px;}
.login-card h1{font-size:20px;margin:0 0 4px;}
.login-card .eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-dim);font-weight:700;}
.error-msg{background:var(--risk-bg);color:var(--risk);padding:10px 12px;border-radius:7px;font-size:13px;margin-bottom:14px;}

.public-hero{background:var(--ink);color:var(--paper);padding:40px 30px;border-radius:14px;margin-bottom:22px;}
.public-hero .eyebrow{color:var(--gold);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;}
.public-hero h1{font-size:30px;margin:6px 0 8px;}
.public-hero p{color:#B7BEC8;max-width:640px;margin:0;font-size:14px;line-height:1.6;}

.logrow{display:flex;gap:10px;align-items:center;padding:8px 0;border-bottom:1px dashed var(--line);font-size:13px;}
.logrow:last-child{border-bottom:none;}
.logrow .who{color:var(--gold-dim);font-weight:600;font-size:11.5px;text-transform:uppercase;}
.logrow .when{color:var(--slate);font-size:11.5px;margin-left:auto;}

@media (max-width:900px){ .grid2,.grid3,.grid4{grid-template-columns:1fr;} }
