@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');
:root{--bg:#f4f5f6;--panel:#fff;--ink:#151515;--muted:#777e87;--line:#e7e8eb;--black:#101010;--soft:#f8f8f8;--green:#16845b;--red:#b83a3a;--shadow:0 10px 30px rgba(20,20,20,.045)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 'DM Sans',Arial,sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh;display:flex}.sidebar{width:255px;background:#101010;color:#fff;display:flex;flex-direction:column;padding:26px 17px 18px;position:fixed;inset:0 auto 0 0;z-index:5}.brand{display:flex;align-items:center;gap:11px;color:inherit;margin:0 8px 36px}.brand-mark{width:38px;height:38px;border:1px solid #555;border-radius:12px;display:grid;place-items:center;font:800 22px Manrope,sans-serif;background:#1b1b1b;color:#fff}.brand strong{display:block;font:800 16px Manrope,sans-serif;letter-spacing:1.8px}.brand small{display:block;color:#999;font-size:9px;letter-spacing:1.5px;margin-top:2px}.nav-label,.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.7px;color:#92979f}.nav-label{padding:0 11px 10px}.nav{display:flex;flex-direction:column;gap:4px}.nav-link{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:9px;color:#b9bbc0;font-weight:500;transition:.15s}.nav-link:hover,.nav-link.active{background:#252525;color:#fff}.nav-link.active{box-shadow:inset 2px 0 #fff}.nav-ico{width:20px;text-align:center;font-size:17px;color:#d6d6d6}.nav-gap{margin-top:25px}.sidebar-bottom{margin-top:auto}.user-chip{display:flex;align-items:center;gap:10px;padding:12px 8px;border-top:1px solid #292929}.avatar{width:32px;height:32px;display:grid;place-items:center;background:#343434;border-radius:50%;font-weight:700}.user-chip b,.user-chip small{display:block}.user-chip b{font-size:12px}.user-chip small{color:#999;font-size:10px}.logout{border:0;background:none;color:#aaa;padding:8px;font-size:12px}.logout:hover{color:#fff}.main{margin-left:255px;min-height:100vh;flex:1;min-width:0}.topbar{height:91px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.topbar .eyebrow{color:#92979f}.topbar h1{font:700 21px Manrope,sans-serif;margin:4px 0 0}.top-user{display:flex;align-items:center;gap:9px;color:#686d75;font-size:12px}.status-dot{width:7px;height:7px;border-radius:50%;background:#28a36e}.content{padding:30px 38px 45px;max-width:1500px;margin:auto}.footer{padding:18px 38px 26px;color:#9a9ea4;font-size:10px;border-top:1px solid var(--line)}.welcome-row{display:flex;justify-content:space-between;align-items:center;margin:4px 0 24px}.welcome-row h2{font:700 25px Manrope,sans-serif;margin:7px 0}.welcome-mark{font:800 52px Manrope;color:#dedfe1}.muted{color:var(--muted)}p.muted{margin:5px 0}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;margin-bottom:34px}.stat-card,.panel,.tile,.module-card{background:var(--panel);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow)}.stat-card{padding:19px}.stat-card span,.stat-card small{display:block}.stat-card strong{display:block;font:700 30px Manrope,sans-serif;margin:11px 0 3px}.stat-card small{color:#9a9ea4;font-size:11px}.section-heading{display:flex;justify-content:space-between;align-items:center;margin:28px 0 14px}.section-heading h2{font:700 17px Manrope,sans-serif;margin:0 0 4px}.section-heading p{font-size:12px}.tile-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.tile{padding:19px;display:flex;flex-direction:column;gap:9px;transition:.15s}.tile:hover{transform:translateY(-2px);border-color:#c7c9ce}.tile-icon{width:37px;height:37px;display:grid;place-items:center;background:#f1f2f3;border-radius:10px;font-size:18px}.tile b{font:700 14px Manrope}.tile .muted{font-size:11px;min-height:34px}.tile-arrow{font-size:11px;font-weight:700;margin-top:4px}.empty-state{background:#fff;border:1px dashed #d8dade;border-radius:13px;padding:35px;text-align:center;color:#555}.empty-state p{max-width:480px;margin:8px auto 0;color:#888;font-size:12px}.empty-icon{font-size:26px;color:#aaa;margin-bottom:7px}.empty-state.full{grid-column:1/-1}.panel{padding:22px;margin-bottom:16px}.panel h2,.panel h3{font:700 16px Manrope;margin:0 0 12px}.panel h2{font-size:20px}.panel p{font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.stack{display:flex;flex-direction:column;gap:13px}.form-grid label,.stack label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700;color:#555b63}.full{grid-column:1/-1}.form-grid input,.form-grid select,.stack input,.stack select,.permission-row select{width:100%;border:1px solid #dfe1e4;border-radius:8px;background:#fff;padding:11px 12px;color:#171717;outline:none}.form-grid input:focus,.stack input:focus,.stack select:focus{border-color:#777}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid transparent;border-radius:8px;padding:10px 15px;font-size:12px;font-weight:700;min-height:39px}.btn.primary{background:#111;color:#fff}.btn.primary:hover{background:#303030}.btn.secondary{background:#fff;border-color:#dfe1e4;color:#222}.btn.tiny{min-height:30px;padding:5px 9px;font-size:10px}.form-note{font-size:10px;color:#8a8f96}.rule{height:1px;background:var(--line);margin:7px 0}.table-panel{padding:0;overflow:hidden}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:680px}th{text-align:left;font-size:9px;letter-spacing:1px;text-transform:uppercase;color:#8c9299;background:#fafafa;padding:13px 17px}td{padding:14px 17px;border-top:1px solid #eff0f2;font-size:11px;color:#555}td b,td small{display:block}td b{font-size:12px;color:#222}td small{color:#999;font-size:10px;margin-top:3px}.status{display:inline-flex;padding:4px 8px;border-radius:30px;font-size:9px;font-weight:700}.status.on{background:#e8f5ee;color:#16734e}.status.off{background:#f1f1f1;color:#777}.text-link{font-size:11px;font-weight:700}.text-link:hover{text-decoration:underline}.count-pill{border:1px solid var(--line);border-radius:30px;padding:6px 10px;font-size:10px;color:#777;background:#fff}.notice{padding:12px 14px;border-radius:9px;margin-bottom:16px;font-size:12px}.notice.success{background:#eaf6ef;color:#176b49}.notice.error{background:#fff0f0;color:#9c2f2f}.permission-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;margin:12px 0 18px}.permission-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #f0f1f2}.permission-row span b,.permission-row span small{display:block}.permission-row span b{font-size:11px}.permission-row span small{font-size:9px;color:#999;margin-top:2px}.permission-row select{max-width:155px;padding:7px;font-size:10px}.permission-row input{accent-color:#111}.role-head{display:flex;align-items:flex-start;justify-content:space-between}.role-panel details{border-top:1px solid var(--line);padding-top:13px;margin-top:13px}.role-panel summary{cursor:pointer;font-size:11px;font-weight:700}.module-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.module-card{padding:19px}.module-symbol{width:38px;height:38px;border-radius:10px;background:#f1f2f3;display:grid;place-items:center;font-size:20px}.module-version{float:right;font-size:9px;color:#999}.module-card h3{font:700 15px Manrope;margin:14px 0 6px}.module-card p{font-size:11px;min-height:32px}.module-card small{font-size:9px}.module-actions{display:flex;align-items:center;justify-content:space-between;margin:14px 0 10px}.checkline{display:flex!important;flex-direction:row!important;align-items:center}.checkline input{width:auto!important}.details-cell{max-width:250px;word-break:break-word;font-size:10px}.module-host{background:#fff;border:1px solid var(--line);border-radius:13px;padding:22px}.module-host-head{border-bottom:1px solid var(--line);padding-bottom:15px;margin-bottom:18px}.module-host-head h2{font:700 20px Manrope;margin:5px 0}.narrow{max-width:700px}.login-body,.install-body{background:#111;min-height:100vh;display:grid;place-items:center;padding:25px}.login-wrap,.install-wrap{width:min(100%,460px)}.login-wrap>.brand,.install-wrap>.brand{color:#fff;margin:0 0 28px 3px}.panel.login-panel,.install-card{padding:30px;border:0;border-radius:15px}.login-panel h1,.install-card h1{font:800 25px Manrope;margin:8px 0}.login-panel .muted,.install-card .muted{font-size:12px;margin-bottom:20px}.login-panel .eyebrow,.install-card .eyebrow{color:#888}.login-panel .stack{margin-top:22px}.login-panel .stack input,.install-card input{padding:13px}.login-panel .btn{width:100%;margin-top:5px}.install-foot{text-align:center;color:#777;font-size:9px;letter-spacing:1.5px;margin-top:22px}.install-card h2{font:700 13px Manrope;margin:9px 0 0}.install-card .rule{margin:8px 0}.install-card .btn{width:100%;margin-top:5px}.install-card code{background:#f0f0f0;padding:2px 4px;border-radius:4px}.module-host .muted{font-size:12px}
@media(max-width:1050px){.stats-grid{grid-template-columns:repeat(2,1fr)}.tile-grid,.module-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.sidebar{width:100%;height:auto;position:sticky;top:0;inset:auto;padding:12px 14px;background:#101010}.app-shell{display:block}.sidebar .brand{margin:0 5px 10px}.sidebar .nav-label,.sidebar-bottom{display:none}.sidebar .nav{display:flex;flex-direction:row;overflow-x:auto;gap:5px;padding-bottom:2px;scrollbar-width:thin}.sidebar .nav-link{flex:0 0 auto;white-space:nowrap;padding:8px 10px;font-size:10px}.sidebar .nav-ico{display:none}.sidebar .nav-gap{display:none}.main{margin-left:0}.topbar{height:auto;padding:18px 18px}.topbar h1{font-size:18px}.content{padding:20px 15px 32px}.footer{padding:15px}.stats-grid{gap:8px}.stat-card{padding:13px}.stat-card strong{font-size:24px}.tile-grid,.module-grid{grid-template-columns:1fr 1fr}.welcome-row h2{font-size:21px}.welcome-mark{font-size:38px}.form-grid,.permission-list{grid-template-columns:1fr}.panel{padding:17px}.top-user{font-size:10px}}
@media(max-width:420px){.tile-grid,.module-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:1fr 1fr}.stat-card strong{font-size:22px}}
