:root{
  --bg:#0d1238; --side:#1a246f; --card:#141c54; --card-2:#1a246f; --border:#2c3892; --border-soft:#222d7c;
  --ink:#e5e5e5; --white:#ffffff; --muted:#a9b1d8;
  --primary:#2f6be0; --primary-hover:#4079ef; --focus:#8cb4ff;
  --red:#d32f2f; --amber:#fbc02d; --amber-ink:#1c1500;
  --font:"Segoe UI","Segoe UI Variable",system-ui,-apple-system,"Helvetica Neue",Arial,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 var(--font);-webkit-font-smoothing:antialiased}
a{color:#9dc0ff}
h1,h2{color:var(--white);font-weight:600;margin:0}
h1{font-size:1.6rem;letter-spacing:-.01em}
h2{font-size:1.1rem;margin-bottom:.75rem}
.shell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}
.side{background:var(--side);padding:1.25rem 1rem;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;border-right:1px solid var(--border)}
.brand{display:flex;align-items:center;gap:.7rem;color:var(--white);text-decoration:none;line-height:1.15}
.brand img{width:44px;height:44px;flex:none}
.brand b{display:block;font-size:1.05rem;font-weight:600}
.brand small{display:block;color:var(--muted);font-size:.78rem;letter-spacing:.14em}
.runway{height:0;border-top:2px dashed rgba(229,229,229,.35);margin:1rem 0 .6rem}
.nav-group{margin:1.1rem 0 .25rem;padding:0 .7rem;color:var(--muted);font-size:.8rem;font-weight:600}
.nav-link{display:block;padding:.42rem .7rem;border-radius:6px;color:var(--ink);text-decoration:none;border-left:3px solid transparent}
.nav-link:hover{background:rgba(255,255,255,.08)}
.nav-link.on{background:rgba(255,255,255,.14);color:var(--white);font-weight:600;border-left-color:var(--white)}
.who{margin-top:auto;padding-top:1rem;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:.25rem .9rem;font-size:.9rem}
.who span{width:100%;font-weight:600;color:var(--white)}
.who small{display:block;color:var(--muted);font-weight:400}
.who a{color:#cfe0ff}
.main{padding:1.75rem 2rem 3rem;min-width:0;max-width:1300px}
.page-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}
.card{background:var(--card);border:1px solid var(--border);border-radius:10px}
.table-wrap{overflow-x:auto}
table{border-collapse:collapse;width:100%}
th,td{padding:.62rem .9rem;text-align:left;border-bottom:1px solid var(--border-soft);white-space:nowrap;font-variant-numeric:tabular-nums}
th{font-size:.82rem;color:var(--muted);font-weight:600;background:var(--card-2);position:sticky;top:0}
tr:last-child td{border-bottom:0}
tbody tr:nth-child(even){background:rgba(255,255,255,.025)}
tbody tr:hover{background:rgba(255,255,255,.07)}
.right{text-align:right}.actions-cell{white-space:nowrap}
.inline{display:inline;margin:0}
.btn{display:inline-block;border:1px solid var(--border);background:transparent;color:var(--ink);padding:.5rem 1rem;border-radius:7px;font:inherit;text-decoration:none;cursor:pointer}
.btn:hover{border-color:#5d6cd0;background:rgba(255,255,255,.06)}
.btn.primary{background:var(--primary);border-color:var(--primary);color:var(--white);font-weight:600}
.btn.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}
.btn.ghost{background:transparent}
.link{background:none;border:0;padding:0 .35rem;font:inherit;color:#9dc0ff;cursor:pointer;text-decoration:underline}
.link.danger{color:#ff8a80}
:focus-visible{outline:3px solid var(--focus);outline-offset:2px}
.search{display:flex;gap:.5rem;margin-bottom:1rem;flex-wrap:wrap}
.search input{flex:1;min-width:200px}
input,select,textarea{font:inherit;width:100%;padding:.55rem .7rem;border:1px solid #3a47a8;border-radius:7px;background:#0d1238;color:var(--white)}
input::placeholder{color:#7f89c4}
select option{background:#0d1238;color:var(--white)}
input:disabled,select:disabled{background:#161e5a;color:var(--muted)}
input[type=date]{color-scheme:dark}
.form{padding:1.4rem}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem 1.25rem}
.field{display:flex;flex-direction:column;gap:.3rem}.field.wide{grid-column:1/-1}
.field label{font-size:.86rem;font-weight:600;color:var(--ink)}
.hint{font-size:.8rem;color:var(--muted)}
.has-error input,.has-error select{border-color:var(--red);box-shadow:0 0 0 1px var(--red)}
.msg{font-size:.84rem;color:#ff8a80;font-weight:600}
.actions{display:flex;gap:.6rem;margin-top:1.4rem}
.alert{padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem;border-left:6px solid;font-weight:600}
.alert.ok{background:#0f3a2e;border-color:#43a678;color:#d5f5e6}
.alert.err{background:var(--red);border-color:#ff8a80;color:var(--white)}
.empty{padding:2rem;text-align:center;color:var(--muted);margin:0}
.pager{display:flex;justify-content:space-between;align-items:center;margin-top:.8rem;color:var(--muted);font-size:.9rem;gap:1rem;flex-wrap:wrap}

/* dashboard */
.hero{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap;background:var(--side);border:1px solid var(--border);border-radius:12px;padding:1.25rem 1.5rem;margin-bottom:1.25rem}
.hero img{height:74px;width:auto;display:block}
.hero-text h1{font-size:1.5rem}
.hero-text p{margin:.2rem 0 0;color:var(--muted)}
.quick{display:flex;flex-wrap:wrap;gap:.5rem}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.8rem;margin:0 0 1.25rem}
.stat{padding:.95rem 1.05rem;text-decoration:none;color:inherit;display:block;border-top:4px solid #3a47a8}
.stat:hover{border-color:#5d6cd0;border-top-color:inherit}
.stat b{display:block;font-size:2rem;line-height:1.1;font-weight:600;color:var(--white);font-variant-numeric:tabular-nums}
.stat span{color:var(--muted);font-size:.88rem}
.stat.warn{border-top-color:var(--amber)}
.stat.crit{border-top-color:var(--red);background:#3b1230}
.stat.crit b{color:#ffb4ab}
.attention{margin-bottom:1.25rem}
.attention h2{display:flex;align-items:center;gap:.6rem}
.flag{display:flex;gap:.9rem;align-items:flex-start;padding:.8rem 1rem;border-radius:8px;margin-bottom:.55rem}
.flag .tag{flex:none;min-width:84px;text-align:center;font-weight:700;font-size:.82rem;padding:.18rem .55rem;border-radius:5px}
.flag p{margin:0}
.flag.red{background:var(--red);color:var(--white)}
.flag.red .tag{background:var(--white);color:#9a1b1b}
.flag.amber{background:var(--amber);color:var(--amber-ink)}
.flag.amber .tag{background:var(--amber-ink);color:var(--amber)}
.flag small{display:block;opacity:.92;font-weight:400}
.clear{padding:.85rem 1rem;border:1px dashed var(--border);border-radius:8px;color:var(--muted)}
.board{background:#0a0f30;border:1px solid var(--border);border-radius:10px;padding:1rem 1.2rem;margin-bottom:1.25rem}
.board th{background:transparent;border-bottom:1px solid var(--border)}
.board td{border-bottom:1px solid var(--border-soft);color:var(--white)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}
.panel{padding:1.1rem}
.badge{display:inline-block;padding:.1rem .55rem;border-radius:5px;font-weight:700;font-size:.8rem}
.badge.red{background:var(--red);color:var(--white)}
.badge.amber{background:var(--amber);color:var(--amber-ink)}
.badge.ok{background:#1d4d3d;color:#d5f5e6}

/* login */
.login-wrap{display:grid;grid-template-columns:1.15fr 1fr;min-height:100vh}
.login-art{background:var(--side);padding:3rem;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;border-right:1px solid var(--border)}
.login-art img{width:min(420px,100%);height:auto;margin-bottom:2rem}
.login-art h1{font-size:2rem;line-height:1.15;max-width:18ch}
.login-art p{color:var(--muted);max-width:38ch;font-size:1.05rem}
.login-art .dash{position:absolute;left:0;right:0;bottom:3rem;border-top:5px dashed rgba(229,229,229,.4)}
.login-form{display:flex;align-items:center;justify-content:center;padding:2rem;background:var(--bg)}
.login-form form{width:100%;max-width:350px;display:flex;flex-direction:column;gap:1rem}
.login-form .btn.primary{padding:.7rem 1rem;font-size:1rem}
@media (max-width:900px){
  .shell{grid-template-columns:1fr}.side{position:static;height:auto}
  .main{padding:1.25rem 1rem 2rem}.two{grid-template-columns:1fr}
  .login-wrap{grid-template-columns:1fr}.login-art{padding:2rem 1.5rem 4rem}.login-art img{width:min(300px,100%);margin-bottom:1rem}.login-art h1{font-size:1.5rem}
}
@media (prefers-reduced-motion:no-preference){.btn,.nav-link,.stat{transition:background .15s,border-color .15s}}
@media print{
  body{background:#fff;color:#000}.side,.btn,.search,.pager form,.hero img{display:none}.shell{display:block}.main{padding:0}
  .card,.board{background:#fff;border-color:#999}th,td,h1,h2,.stat b{color:#000;background:#fff}
}
