:root{--bg:#f5f6f8;--card:#fff;--ink:#17202b;--muted:#5d6b7a;--line:#dde2e8;--accent:#1f5fa8;--ok:#1d7f4e;--warn:#a86410;--err:#b3261e;--radius:8px}
*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
header{background:#14202e;color:#fff;display:flex;align-items:center;gap:1.5rem;padding:.6rem 1.5rem;flex-wrap:wrap}
header .brand{font-weight:600;letter-spacing:.02em}header nav{display:flex;gap:1rem;flex-wrap:wrap;flex:1}
header nav a{color:#c9d6e5}header nav a.on{color:#fff;font-weight:600}header form{margin:0}
header button{background:none;border:1px solid #4a5b70;color:#c9d6e5;border-radius:6px;padding:.2rem .6rem;cursor:pointer}
main{max-width:1200px;margin:1.5rem auto;padding:0 1.25rem}
h1{font-size:1.5rem;margin:.2rem 0 1rem}h2{font-size:1.15rem;margin:1.5rem 0 .6rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem 1.2rem;margin-bottom:1rem}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:.8rem}
table{width:100%;border-collapse:collapse;background:var(--card)}th,td{text-align:left;padding:.45rem .6rem;border-bottom:1px solid var(--line);vertical-align:top}
th{font-weight:600;color:var(--muted);font-size:.85rem}
.btn,button.btn{display:inline-block;background:var(--accent);color:#fff;border:0;border-radius:6px;padding:.45rem .9rem;cursor:pointer;font:inherit}
.btn.secondary{background:#e8edf3;color:var(--ink)}.btn.danger{background:var(--err)}.btn.small{padding:.2rem .6rem;font-size:.85rem}
.pill{display:inline-block;border-radius:99px;padding:.05rem .55rem;font-size:.8rem;font-weight:600;background:#e8edf3;color:var(--muted)}
.pill.ok{background:#dff3e8;color:var(--ok)}.pill.warn{background:#fbecd6;color:var(--warn)}.pill.err{background:#fadedc;color:var(--err)}
.muted{color:var(--muted)}.small{font-size:.85rem}
.msg{padding:.6rem .9rem;border-radius:6px;margin-bottom:.8rem;background:#e6f0fa}.msg.error{background:#fadedc}.msg.warning{background:#fbecd6}.msg.success{background:#dff3e8}
form.stack p,form.stack .field{margin:0 0 .8rem}label{display:block;font-weight:600;font-size:.9rem;margin-bottom:.2rem}
input[type=text],input[type=password],input[type=number],input[type=datetime-local],input:not([type]),select,textarea{width:100%;max-width:520px;padding:.4rem .5rem;border:1px solid var(--line);border-radius:6px;font:inherit;background:#fff}
input[type=checkbox]{margin-right:.35rem}ul.checks{list-style:none;padding:0;margin:0;columns:2}ul.checks label{font-weight:400}
.help{color:var(--muted);font-size:.82rem}.errorlist{color:var(--err);margin:.2rem 0;padding-left:1rem}
pre{background:#0f1720;color:#d8e1ea;padding:.8rem;border-radius:6px;overflow:auto;font-size:.82rem}
.meter{height:8px;background:#e8edf3;border-radius:4px;overflow:hidden;margin:2px 0}.meter span{display:block;height:100%;background:var(--ok)}
.meter span.hot{background:var(--warn)}.meter span.clip{background:var(--err)}
.bar{height:12px;background:#e8edf3;border-radius:6px;overflow:hidden}.bar span{display:block;height:100%;background:var(--accent)}
.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.spacer{flex:1}
.slides{display:flex;gap:.6rem;flex-wrap:wrap}.slides figure{margin:0;background:#fff;border:1px solid var(--line);border-radius:6px;padding:.4rem;text-align:center}
.slides img{width:160px;height:120px;object-fit:contain;display:block}
.login{max-width:380px;margin:4rem auto}.qr{background:#fff;padding:8px;display:inline-block}.qr svg{width:240px;height:240px;display:block}
code{background:#eef1f5;padding:.05rem .3rem;border-radius:4px;font-size:.88em}
