:root{--navy:#0f2a4a;--teal:#0e9f8a;--bg:#f4f6f8;--card:#ffffff;--border:#dfe5ea;--text:#1c2733;--muted:#66788a;--danger:#c0392b}*{box-sizing:border-box}body{margin:0;font-family:system-ui,Segoe UI,Tahoma,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--teal)}h1{font-size:1.4rem;margin:0}h2{font-size:1.05rem;margin:0 0 .75rem}.muted{color:var(--muted)}.small{font-size:.85rem}code{background:#eef1f3;padding:.1rem .35rem;border-radius:4px;font-size:.85em}.shell{display:flex;min-height:100vh}.sidebar{width:230px;background:var(--navy);color:#fff;padding:1rem 0;flex-shrink:0}.brand{padding:.25rem 1rem 1rem;border-bottom:1px solid rgba(255,255,255,.15)}.brand strong{font-size:1.4rem;display:block}.brand span{font-size:.8rem;opacity:.8}.sidebar nav{display:flex;flex-direction:column;padding:.75rem 0}.sidebar nav a{color:#d7e2ec;text-decoration:none;padding:.55rem 1rem;font-size:.95rem}.sidebar nav a:hover{background:rgba(255,255,255,.08)}.sidebar nav a.active{background:var(--teal);color:#fff}.content{flex:1 1;min-width:0}.topbar{justify-content:space-between;background:var(--card);border-bottom:1px solid var(--border);padding:.9rem 1.5rem}.topbar,.userbox{display:flex;align-items:center}.userbox{gap:.75rem;font-size:.9rem}.content main{padding:1.5rem}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem 1.25rem;margin-bottom:1rem}.card.error{border-color:var(--danger);color:var(--danger)}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-gap:.75rem;gap:.75rem;margin-bottom:1rem}.stat{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1rem;text-align:center}.stat strong{display:block;font-size:1.6rem;color:var(--navy)}.stat span{font-size:.85rem;color:var(--muted)}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem}@media (max-width:900px){.grid2{grid-template-columns:1fr}.sidebar{width:180px}}.table{width:100%;border-collapse:collapse;background:var(--card);border-radius:10px;overflow:hidden}.table td,.table th{text-align:right;padding:.6rem .8rem;border-bottom:1px solid var(--border);font-size:.92rem}.table th{background:#eef2f5;color:var(--navy)}.table tr:last-child td{border-bottom:none}.btn{border:1px solid var(--border);background:#fff;border-radius:8px;padding:.5rem 1rem;cursor:pointer;font-size:.92rem}.btn:hover{background:#eef2f5}.btn-primary{background:var(--teal);border-color:var(--teal);color:#fff}.btn-primary:hover{background:#0b8574}.btn-danger{color:var(--danger);border-color:#e5b4ae}.btn-ghost{background:transparent}.btn-small{padding:.3rem .7rem;font-size:.85rem}.btn:disabled{opacity:.5;cursor:not-allowed}.actions{display:flex;gap:.4rem;flex-wrap:wrap}.toolbar{display:flex;gap:.75rem;margin-bottom:1rem}.toolbar input,.toolbar select{padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;font-size:.95rem}.form{gap:.75rem}.form,.form label{display:flex;flex-direction:column}.form label{gap:.3rem;font-size:.92rem}.form input,.form select,.form textarea,.form-inline input,.form-inline select{padding:.55rem .75rem;border:1px solid var(--border);border-radius:8px;font-size:.95rem;font-family:inherit}.form-inline{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.perms{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:.4rem;gap:.4rem;margin:.75rem 0;font-size:.88rem}.perms label{display:flex;gap:.4rem;align-items:baseline}.pager{display:flex;gap:.75rem;align-items:center;margin-top:.75rem}.input-wide{width:100%;min-width:220px;padding:.45rem .6rem;border:1px solid var(--border);border-radius:6px;font-family:inherit}.loading{padding:2rem;text-align:center;color:var(--muted)}.login-wrap{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:1rem}.login-card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:2rem;width:100%;max-width:440px}.login-card h1{margin-bottom:.25rem}ul{-webkit-padding-start:1.2rem;padding-inline-start:1.2rem}li{margin-bottom:.3rem}