:root{--rouge:#c0392b;--orange:#e67e22;--ok:#27ae60;--bg:#f5f6f8;--card:#fff;--line:#e2e5ea;--txt:#2c3038;--muted:#7c8290;--header-bg:#1f2a37;--header-txt:#fff;--nav-txt:#cfd6df;--nav-hover:#2c3a4b;--accent:#3b82f6;--accent-h:#2563eb;--gray:#6b7280;--th-bg:#eef1f5;--row-rouge:#fdecea;--row-orange:#fef5ec;--input-bg:#fff;--input-border:#cbd2db;--flash-ok-bg:#e7f6ec;--flash-ok-tx:#1e7a3d;--flash-err-bg:#fdecea;--flash-err-tx:#a5281b;--link:#2563eb}:root[data-theme=dark]{--bg:#0f141a;--card:#1a212b;--line:#2b3542;--txt:#e6e9ee;--muted:#9aa4b2;--header-bg:#0b0f14;--header-txt:#f3f5f8;--nav-txt:#b7c1ce;--nav-hover:#263241;--th-bg:#222c38;--row-rouge:#3a1f1c;--row-orange:#3a2c1c;--input-bg:#131a22;--input-border:#3a4657;--flash-ok-bg:#12301f;--flash-ok-tx:#7fdca0;--flash-err-bg:#3a1f1c;--flash-err-tx:#f0a89f;--link:#7fb4ff}*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,Segoe UI,sans-serif;background:var(--bg);color:var(--txt)}header.top{display:flex;align-items:center;gap:1.5rem;background:var(--header-bg);padding:.6rem 1rem;flex-wrap:wrap}.brand,header.top{color:var(--header-txt)}.brand{text-decoration:none;font-weight:700;font-size:1.15rem}nav.main{display:flex;gap:.25rem;flex-wrap:wrap}nav.main a{color:var(--nav-txt);text-decoration:none;padding:.35rem .7rem;border-radius:6px;font-size:.92rem}nav.main a:hover{background:var(--nav-hover);color:#fff}nav.main a.active{background:var(--accent);color:#fff}.spacer{flex:1 1 auto}.userbox{display:flex;align-items:center;gap:.6rem;font-size:.88rem;flex-wrap:wrap}.userbox,.userbox a{color:var(--nav-txt)}.userbox a{text-decoration:none}.userbox a:hover{color:#fff}.themebtn{background:transparent;border:1px solid var(--nav-hover);color:var(--nav-txt);border-radius:6px;padding:.3rem .55rem;cursor:pointer;font-size:.9rem}.themebtn:hover{background:var(--nav-hover);color:#fff}main{max-width:1080px;margin:1.2rem auto;padding:0 1rem}h1{font-size:1.4rem;margin:.2rem 0 1rem}h2{font-size:1.1rem;margin:1.6rem 0 .6rem}table{border-collapse:collapse;width:100%;background:var(--card);border:1px solid var(--line);border-radius:8px;overflow:hidden}td,th{padding:.5rem .7rem;text-align:left;border-bottom:1px solid var(--line)}th{background:var(--th-bg);font-size:.82rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}tr:last-child td{border-bottom:none}.badge{display:inline-block;padding:.12rem .55rem;border-radius:999px;color:#fff;font-size:.78rem;font-weight:600}.badge.ok{background:var(--ok)}.badge.orange{background:var(--orange)}.badge.rouge{background:var(--rouge)}tr.row-rouge td{background:var(--row-rouge)}tr.row-orange td{background:var(--row-orange)}.card,form.card{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:1rem;margin:.6rem 0}label{display:block;font-size:.85rem;color:var(--muted);margin:.5rem 0 .15rem}input,select{padding:.4rem .5rem;border:1px solid var(--input-border);border-radius:6px;font:inherit;width:100%;max-width:340px;background:var(--input-bg);color:var(--txt)}input[type=checkbox]{width:auto}.row{display:flex;gap:1rem;flex-wrap:wrap}.row>div{flex:1 1 200px}.btn,button{background:var(--accent);color:#fff;border:0;border-radius:6px;padding:.45rem .9rem;font:inherit;cursor:pointer;text-decoration:none;display:inline-block}.btn:hover,button:hover{background:var(--accent-h)}.btn.sm{padding:.2rem .55rem;font-size:.82rem}.btn.danger{background:var(--rouge)}.btn.gray{background:var(--gray)}.flash{padding:.6rem .9rem;border-radius:6px;margin:.6rem 0}.flash.ok{background:var(--flash-ok-bg);color:var(--flash-ok-tx)}.flash.err{background:var(--flash-err-bg);color:var(--flash-err-tx)}.muted{color:var(--muted)}.right{text-align:right}small{color:var(--muted)}main a{color:var(--link)}footer.bot{max-width:1080px;margin:2rem auto 1rem;padding:1rem;color:var(--muted);font-size:.85rem;border-top:1px solid var(--line)}.login-wrap{max-width:380px;margin:4rem auto;padding:0 1rem}.login-wrap h1{text-align:center}.login-wrap .brand-big{text-align:center;font-size:1.6rem;font-weight:700;margin-bottom:.3rem}.login-wrap input{max-width:none}.login-wrap button{width:100%;margin-top:.8rem}