:root{
 --bg:#f5f7fb;
 --surface:#ffffff;
 --surface-2:#f9fafb;
 --text:#111827;
 --muted:#667085;
 --subtle:#98a2b3;
 --border:#d7dde8;
 --border-soft:#e8edf5;
 --primary:#1f5eff;
 --primary-700:#1746c6;
 --success:#067647;
 --success-bg:#ecfdf3;
 --warning:#b54708;
 --warning-bg:#fffaeb;
 --danger:#b42318;
 --danger-bg:#fef3f2;
 --info:#026aa2;
 --info-bg:#f0f9ff;
 --sidebar:#121826;
 --sidebar-2:#1f2937;
 --shadow:0 10px 28px rgba(16,24,40,.08);
 --radius:8px;
}
*{box-sizing:border-box}
html{min-height:100%}
body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,Arial,sans-serif;font-size:14px;line-height:1.45}
a{color:var(--primary);text-decoration:none}
a:hover{text-decoration:underline}
.app-shell{display:flex;min-height:100vh}
.sidebar{width:276px;background:var(--sidebar);color:#fff;padding:18px 14px;position:sticky;top:0;height:100vh;border-right:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:14px}
.brand{display:flex;align-items:center;gap:12px;padding:8px 8px 16px;border-bottom:1px solid rgba(255,255,255,.08)}
.brand-icon{width:42px;height:42px;border-radius:12px;background:#eef4ff;color:#1d4ed8;display:grid;place-items:center;font-weight:900;font-size:17px}
.brand strong{display:block;font-size:16px;letter-spacing:0}
.brand span{display:block;color:#aab4c5;font-size:12px;margin-top:1px}
.nav{display:flex;flex-direction:column;gap:5px}
.nav-link{width:100%;display:flex;align-items:center;gap:11px;color:#d0d7e2;text-decoration:none;padding:10px 11px;border-radius:var(--radius);border:1px solid transparent;background:transparent;font:inherit;text-align:left;cursor:pointer;min-height:42px}
.nav-text{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:800}
.nav-link:hover,.nav-link.active{color:#fff;background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.1);text-decoration:none}
.nav-link.active{background:#eef4ff;color:#1d4ed8;border-color:#eef4ff}
.nav-glyph{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;flex:0 0 28px;background:rgba(255,255,255,.08);color:#dbeafe;position:relative}
.nav-link.active .nav-glyph{background:#dbeafe;color:#1d4ed8}
.nav-glyph:before,.nav-glyph:after{content:'';position:absolute;display:block}
.nav-glyph-dashboard:before{width:5px;height:5px;border-radius:2px;background:currentColor;box-shadow:8px 0 0 currentColor,0 8px 0 currentColor,8px 8px 0 currentColor;left:7px;top:7px}
.nav-glyph-products:before{width:13px;height:13px;border:2px solid currentColor;border-radius:4px;left:7px;top:7px}
.nav-glyph-products:after{width:8px;height:2px;background:currentColor;left:10px;top:10px}
.nav-glyph-licenses:before{width:8px;height:8px;border:2px solid currentColor;border-radius:999px;left:6px;top:8px}
.nav-glyph-licenses:after{width:11px;height:2px;background:currentColor;left:14px;top:14px;box-shadow:5px 4px 0 currentColor}
.nav-glyph-releases:before{width:14px;height:14px;border:2px solid currentColor;border-radius:999px;left:7px;top:7px}
.nav-glyph-releases:after{width:7px;height:7px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg);left:12px;top:10px}
.nav-glyph-users:before{width:7px;height:7px;border:2px solid currentColor;border-radius:999px;left:6px;top:6px;box-shadow:9px 2px 0 -1px currentColor}
.nav-glyph-users:after{width:18px;height:8px;border:2px solid currentColor;border-radius:999px 999px 4px 4px;border-bottom:0;left:5px;top:16px}
.nav-glyph-settings:before{width:13px;height:13px;border:2px solid currentColor;border-radius:999px;left:7px;top:7px}
.nav-glyph-settings:after{width:3px;height:3px;border-radius:999px;background:currentColor;left:13px;top:13px;box-shadow:0 -8px 0 currentColor,0 8px 0 currentColor,8px 0 0 currentColor,-8px 0 0 currentColor}
.nav-glyph-manifest:before{width:12px;height:16px;border:2px solid currentColor;border-radius:3px;left:8px;top:5px}
.nav-glyph-manifest:after{width:7px;height:2px;background:currentColor;left:11px;top:12px;box-shadow:0 5px 0 currentColor}
.sidebar-profile{display:flex;align-items:center;gap:10px;margin-top:auto;padding:11px;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius);background:rgba(255,255,255,.05)}
.avatar{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:#eef4ff;color:#1d4ed8;font-weight:900;flex:0 0 36px}
.sidebar-profile-copy{min-width:0}
.sidebar-profile strong{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.sidebar-profile span{display:block;font-size:11px;color:#aab4c5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px}
.sidebar-footer{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.sidebar-footer a{display:block;padding:9px 10px;border-radius:var(--radius);background:rgba(255,255,255,.06);color:#e5e7eb;text-align:center;font-weight:800;font-size:12px;text-decoration:none;border:1px solid rgba(255,255,255,.08)}
.sidebar-footer a:hover{background:rgba(255,255,255,.1)}
.main{flex:1;min-width:0;padding:24px;max-width:1500px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px;padding-bottom:16px;border-bottom:1px solid var(--border)}
.eyebrow{margin:0 0 3px;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
h1{margin:0;font-size:26px;line-height:1.2;letter-spacing:0}
h2,h3{letter-spacing:0}
h3{margin:0 0 12px;font-size:17px;line-height:1.25}
.top-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.profile-link{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.icon-btn,.btn,button{border:0;border-radius:var(--radius);background:var(--primary);color:#fff;padding:10px 13px;font-weight:800;line-height:1;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease}
.btn:hover,button:hover,.icon-btn:hover{background:var(--primary-700);text-decoration:none}
.secondary,.icon-btn{background:#fff;color:#1f2937;border:1px solid var(--border);box-shadow:none}
.secondary:hover,.icon-btn:hover{background:#f3f6fb;color:#111827}
.danger{background:#d92d20}
.danger:hover{background:#b42318}
.full{width:100%;margin-top:10px}
.icon-btn b{min-width:20px;height:20px;border-radius:999px;background:#d92d20;color:#fff;display:inline-grid;place-items:center;font-size:11px}
.notify-wrap{position:relative}
.notify-trigger{white-space:nowrap}
.notify-dot-icon{width:18px;height:18px;border-radius:999px;background:var(--warning-bg);color:var(--warning);display:grid;place-items:center;font-weight:900;font-size:12px}
.notify-panel{display:none;position:absolute;right:0;top:46px;width:390px;max-width:calc(100vw - 32px);background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);z-index:30;overflow:hidden}
.notify-panel.open{display:block}
.notify-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border-soft);background:#f8fafc}
.notify-head button{min-height:30px;padding:6px 9px;background:#fff;color:#344054;border:1px solid var(--border)}
.notice-item{display:flex;gap:10px;margin:10px 12px;padding:11px;border:1px solid var(--border-soft);border-radius:var(--radius);background:#fff}
.notice-item.unread{border-color:#bdd7ff;background:#f8fbff}
.notice-icon{width:30px;height:30px;border-radius:var(--radius);display:grid;place-items:center;font-weight:900;flex:0 0 auto;background:var(--info-bg);color:var(--info);font-size:11px}
.notice-item.success .notice-icon{background:var(--success-bg);color:var(--success)}
.notice-item.warning .notice-icon{background:var(--warning-bg);color:var(--warning)}
.notice-item.error .notice-icon{background:var(--danger-bg);color:var(--danger)}
.notice-body{min-width:0;flex:1}
.notice-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}
.notice-meta strong{font-size:13px}
.notice-meta span{font-size:10px;text-transform:uppercase;color:var(--muted);background:#f2f4f7;padding:2px 7px;border-radius:999px}
.notice-item p{margin:4px 0;color:var(--muted)}
.notice-item small{color:var(--subtle)}
.notice-action{display:inline-block;margin-top:8px;font-weight:800}
.empty-state{text-align:center;color:var(--muted);padding:24px;background:#f9fafb;margin:12px;border-radius:var(--radius)}
.mtd-alert-region{margin-bottom:16px}
.toast,.banner{display:flex;gap:10px;align-items:flex-start;padding:12px 13px;border-radius:var(--radius);border:1px solid var(--border-soft);background:#fff;box-shadow:0 4px 14px rgba(16,24,40,.05);margin-bottom:10px}
.toast p,.banner p{margin:2px 0 0;color:var(--muted)}
.success{border-color:#abefc6;background:var(--success-bg);color:#054f31}
.warning{border-color:#fedf89;background:var(--warning-bg);color:#7a2e0e}
.error{border-color:#fecdca;background:var(--danger-bg);color:#7a271a}
.alert-icon{width:24px;height:24px;border-radius:999px;background:#fff;display:grid;place-items:center;font-weight:900;flex:0 0 auto;font-size:11px}
.alert-close{margin-left:auto;background:transparent!important;border:0!important;color:inherit!important;min-height:0;padding:0 4px!important}
.dismissible-alert.is-hiding{opacity:0;transform:translateY(-4px);transition:.16s ease}
.grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:12px;margin-bottom:16px}
.mini-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:16px}
.card,.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 2px rgba(16,24,40,.03);padding:16px;margin-bottom:16px}
.card{min-height:96px;display:flex;flex-direction:column;justify-content:space-between}
.card span{display:block;color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.06em}
.card strong{display:block;font-size:30px;line-height:1.05;margin-top:8px;color:#101828}
.card p{margin:8px 0 0;color:var(--muted)}
.panel>.actions:first-child{margin-bottom:12px}
.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.muted{color:var(--muted)}
p.muted{margin:0 0 12px}
.status-list{list-style:none;margin:0;padding:0}
.status-list li{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--border-soft)}
.status-list li:last-child{border-bottom:0}
.status-list small{color:var(--muted)}
table{width:100%;border-collapse:collapse;border:1px solid var(--border-soft);border-radius:var(--radius);overflow:hidden;background:#fff}
th,td{padding:11px 12px;border-bottom:1px solid var(--border-soft);text-align:left;vertical-align:top}
th{background:#f8fafc;color:#667085;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#fbfcff}
code{display:inline-block;background:#f2f4f7;border:1px solid #e4e7ec;color:#344054;border-radius:6px;padding:2px 6px;font-family:Consolas,Monaco,monospace;font-size:12px}
.small-code{max-width:360px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pill,.badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;font-size:11px;font-weight:900;text-transform:uppercase;letter-spacing:.02em;background:#eff8ff;color:#175cd3;white-space:nowrap}
.pill.active,.badge.active,.pill.success{background:var(--success-bg);color:var(--success)}
.pill.suspended,.pill.expired,.pill.cancelled,.badge.inactive,.badge.disabled,.badge.draft{background:var(--danger-bg);color:var(--danger)}
.filter-row{display:flex;align-items:end;gap:8px;flex-wrap:wrap;margin-bottom:0}
.filter-row .form-field{min-width:220px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}
.mtd-labeled-form{padding:14px;border:1px solid var(--border-soft);border-radius:var(--radius);background:var(--surface-2)}
.form-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.form-field-wide{grid-column:1 / -1}
label{font-size:12px;color:#344054;font-weight:900}
.form-field label{display:flex;align-items:center;gap:6px}
.form-field small{color:var(--muted);font-size:12px}
input,select,textarea{width:100%;border:1px solid var(--border);border-radius:var(--radius);background:#fff;color:#111827;padding:10px 11px;font:inherit;min-height:38px}
textarea{min-height:96px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:0;border-color:#84adff;box-shadow:0 0 0 3px rgba(31,94,255,.14)}
input[disabled]{background:#f2f4f7;color:#667085}
input[type=checkbox]{width:16px;height:16px;min-height:16px;accent-color:var(--primary)}
.form-field label:has(input[type=checkbox]){flex-direction:row;justify-content:flex-start;border:1px solid var(--border-soft);background:#fff;border-radius:var(--radius);padding:10px 11px}
.required,.danger-text{color:var(--danger)}
.field-error{border-color:#f04438!important;box-shadow:0 0 0 3px rgba(240,68,56,.12)!important}
.field-warning{color:var(--danger)!important;font-weight:800}
.form-actions{display:flex;align-items:center;gap:8px;margin-top:2px}
.inline-form{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.inline-form input,.inline-form select{width:auto;min-width:130px;min-height:34px;padding:8px 9px}
.reset-details summary{cursor:pointer;color:var(--primary);font-weight:900;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:#fff}
.reset-form{margin-top:8px;padding:10px;background:#f8fafc;border:1px solid var(--border-soft);border-radius:var(--radius)}
.login{width:min(420px,calc(100vw - 32px));margin:10vh auto;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:26px}
.login h1{font-size:24px;margin:0 0 18px}
.login label{display:block;margin-top:12px;margin-bottom:6px}
.login button{width:100%;margin-top:18px}
.alert{padding:11px 12px;border:1px solid #fecdca;background:var(--danger-bg);color:var(--danger);border-radius:var(--radius);margin-bottom:12px}
.installer-body{background:#eef2f7}
.installer-shell{width:min(980px,calc(100vw - 32px));margin:34px auto}
.installer-hero{padding:8px 0 18px}
.installer-hero h1{font-size:32px}
.installer-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.installer-check{border:1px solid var(--border);border-radius:var(--radius);background:#fff;padding:12px;display:grid;grid-template-columns:auto 1fr;gap:3px 9px;align-items:center}
.installer-check span{grid-row:1 / span 2;width:34px;height:34px;border-radius:999px;display:grid;place-items:center;font-size:11px;font-weight:900}
.installer-check.ok span{background:var(--success-bg);color:var(--success)}
.installer-check.bad span{background:var(--danger-bg);color:var(--danger)}
.installer-check strong{font-size:13px}
.installer-check small{color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.installer-step{display:flex;gap:12px;align-items:flex-start;margin-bottom:12px}
.installer-step>span{width:34px;height:34px;border-radius:999px;background:#eef4ff;color:#1d4ed8;display:grid;place-items:center;font-weight:900;flex:0 0 auto}
.installer-step h3{margin-bottom:4px}
.mtd-modal-backdrop{display:none;position:fixed;inset:0;background:rgba(17,24,39,.58);z-index:100;align-items:center;justify-content:center;padding:20px}
.mtd-modal-backdrop.open{display:flex}
.mtd-modal{width:min(920px,100%);max-height:88vh;overflow:hidden;background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column}
.mtd-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px;border-bottom:1px solid var(--border-soft)}
.mtd-modal-header h2{margin:0;font-size:20px}
.mtd-modal-close{background:#fff;color:#344054;border:1px solid var(--border);min-width:38px}
.mtd-modal-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;border-bottom:1px solid var(--border-soft)}
.manifest-pre{margin:0;padding:16px;overflow:auto;max-height:58vh;background:#111827;color:#d1e0ff;font-size:13px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.forbidden{max-width:760px}
@media(max-width:1180px){
 .grid{grid-template-columns:repeat(3,minmax(150px,1fr))}
 .mini-grid{grid-template-columns:1fr}
}
@media(max-width:900px){
 .app-shell{display:block}
 .sidebar{position:relative;width:auto;height:auto;padding:14px}
 .sidebar-footer{position:static;margin-top:14px}
 .nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
 .sidebar-profile{margin:14px 0}
 .main{padding:16px}
 .topbar{display:block}
 .top-actions{margin-top:12px}
 .profile-link{max-width:100%}
 .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
 .notify-panel{right:auto;left:0}
 th,td{padding:10px}
 table{display:block;overflow-x:auto;white-space:nowrap}
}
@media(max-width:640px){
 .nav{grid-template-columns:1fr}
 .grid{grid-template-columns:1fr}
 .form-field-wide{grid-column:auto}
 .form-actions,.inline-form{display:grid;grid-template-columns:1fr;width:100%}
 .inline-form input,.inline-form select,.inline-form button{width:100%}
 .mtd-modal-actions{display:grid;grid-template-columns:1fr}
}
