:root{--brand:#1a237e;--brand-700:#141b63;--brand-900:#0d1240;--coral:#ff6b6b;--coral-600:#e24e4e;--ink:#1a1c22;--muted:#5a5f6e;--bg:#f5f6fb;--line:#e6e8f0;--card:#fff;--sbw:256px}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}a{color:var(--brand);text-decoration:none}.brand{font-weight:800;font-size:1.25rem;letter-spacing:-.02em}.brand span{color:var(--coral)}.btn{display:inline-flex;align-items:center;gap:.5rem;border:0;border-radius:999px;padding:.6rem 1.15rem;font-weight:600;font-size:.9rem;cursor:pointer;transition:.2s;font-family:inherit}.btn-primary{background:var(--brand);color:#fff}.btn-primary:hover{background:var(--brand-700)}.btn-primary:disabled{opacity:.6;cursor:default}.btn-ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}.btn-ghost:hover{border-color:#c5ccec;background:#fafbff}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(1200px 500px at 50% -10%,#eef0fa,var(--bg))}.login-card{width:100%;max-width:400px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:2.2rem;box-shadow:0 20px 50px -20px rgba(26,35,126,.25)}.login-card h1{font-size:1.15rem;margin:.4rem 0 .25rem}.login-card p.sub{color:var(--muted);font-size:.9rem;margin:0 0 1.5rem}label{display:block;font-size:.85rem;font-weight:600;margin:.9rem 0 .35rem}input[type=email],input[type=password],input[type=text]{width:100%;padding:.7rem .9rem;border:1px solid var(--line);border-radius:10px;font-size:.95rem;background:#fff;outline:none;font-family:inherit}input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(26,35,126,.12)}.err{background:#ffe7e7;color:#b3261e;border:1px solid #ffc9c9;border-radius:10px;padding:.6rem .8rem;font-size:.88rem;font-weight:600;margin-bottom:1rem}.shell{min-height:100vh}.sidebar{position:fixed;top:0;left:0;height:100vh;width:var(--sbw);background:linear-gradient(180deg,var(--brand) 0,var(--brand-900) 100%);color:#fff;display:flex;flex-direction:column;padding:1.4rem 1rem;z-index:40;transition:transform .25s ease}.sidebar .logo{font-weight:800;font-size:1.4rem;letter-spacing:-.02em;padding:.3rem .6rem 1.4rem}.sidebar .logo span{color:var(--coral)}.nav{flex-direction:column;gap:.25rem}.nav,.nav a{display:flex}.nav a{align-items:center;gap:.75rem;padding:.7rem .8rem;border-radius:12px;color:hsla(0,0%,100%,.75);font-weight:600;font-size:.92rem;position:relative;transition:.15s}.nav a svg{width:19px;height:19px;flex:none}.nav a:hover{background:hsla(0,0%,100%,.08);color:#fff}.nav a.active{background:hsla(0,0%,100%,.14);color:#fff}.nav a.active:before{content:"";position:absolute;left:-1rem;top:50%;transform:translateY(-50%);width:4px;height:60%;background:var(--coral);border-radius:0 4px 4px 0}.sidebar .navlabel{font-size:.7rem;text-transform:uppercase;letter-spacing:.08em;color:hsla(0,0%,100%,.4);padding:.4rem .8rem;margin-top:.4rem}.sidebar .bottom{margin-top:auto;padding-top:1rem;border-top:1px solid hsla(0,0%,100%,.12)}.sidebar .who{gap:.6rem;padding:.4rem .6rem .8rem}.sidebar .avatar,.sidebar .who{display:flex;align-items:center}.sidebar .avatar{width:34px;height:34px;border-radius:50%;background:var(--coral);justify-content:center;font-weight:800;color:#fff;font-size:.85rem}.sidebar .who .em{font-size:.78rem;color:hsla(0,0%,100%,.7);word-break:break-all;line-height:1.2}.logout{width:100%;justify-content:center;background:hsla(0,0%,100%,.1);color:#fff;border:0}.logout:hover{background:hsla(0,0%,100%,.18)}.main{margin-left:var(--sbw);min-height:100vh}.topbar{background:#fff;border-bottom:1px solid var(--line);padding:0 1.5rem;height:62px;display:flex;align-items:center;gap:1rem;position:-webkit-sticky;position:sticky;top:0;z-index:20}.topbar h1{font-size:1.05rem;margin:0}.topbar .sub{color:var(--muted);font-size:.82rem}.burger{display:none;background:none;border:0;cursor:pointer;padding:.4rem;color:var(--ink)}.content{padding:1.8rem 1.5rem 3rem;max-width:1150px}.overlay{display:none;position:fixed;inset:0;background:rgba(13,18,64,.4);z-index:35}.stats{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(3,1fr);margin-bottom:1.6rem}.stat{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:1.2rem 1.3rem;gap:1rem}.stat,.stat .ic{display:flex;align-items:center}.stat .ic{width:44px;height:44px;border-radius:12px;justify-content:center;background:#eef0fa;color:var(--brand);flex:none}.stat.coral .ic{background:#ffe7e7;color:var(--coral-600)}.stat .n{font-size:1.7rem;font-weight:800;color:var(--ink);line-height:1}.stat .l{color:var(--muted);font-size:.8rem;font-weight:600;margin-top:.25rem}.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:.8rem;flex-wrap:wrap;padding:1rem 1.2rem;border-bottom:1px solid var(--line)}.panel-head h2{font-size:1rem;margin:0}.panel-head .right{display:flex;gap:.6rem;align-items:center}.search{min-width:240px;padding:.55rem .85rem}.tablecard{overflow:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}thead th{text-align:left;background:#fafbff;color:var(--muted);font-size:.74rem;text-transform:uppercase;letter-spacing:.04em;padding:.7rem 1.2rem;border-bottom:1px solid var(--line);white-space:nowrap}tbody td{padding:.8rem 1.2rem;border-bottom:1px solid #f0f2f8;vertical-align:top}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fafbff}td.name{font-weight:600}.pill,td .email{color:var(--brand)}.pill{display:inline-block;background:#eef0fa;border-radius:999px;padding:.15rem .6rem;font-size:.78rem;font-weight:600}.empty{padding:3rem 1rem;text-align:center}.empty,.foot,.muted{color:var(--muted)}.foot{font-size:.8rem;margin-top:1rem}.linkmore{font-weight:600;font-size:.88rem}@media (max-width:880px){.sidebar{transform:translateX(-100%);box-shadow:0 0 40px rgba(0,0,0,.2)}.sidebar.open{transform:translateX(0)}.main{margin-left:0}.burger{display:inline-flex}.overlay.show{display:block}.stats{grid-template-columns:1fr}}