*{box-sizing:border-box}html{font-size:16px}body{margin:0;background:#f4f6fb;color:#111827;font-family:Arial,"Noto Sans Bengali",sans-serif}.app-topbar{height:72px;background:#111827;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 26px;position:sticky;top:0;z-index:20}.brand{font-size:20px;font-weight:800}.brand-sub{font-size:12px;color:#cbd5e1;margin-top:4px}.topbar-user{display:flex;align-items:center;gap:16px;font-size:14px}.topbar-user a{color:#fff;text-decoration:none;font-weight:700;border:1px solid #475569;border-radius:8px;padding:8px 11px}.app-shell{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:calc(100vh - 72px)}.sidebar{background:#fff;border-right:1px solid #e5e7eb;padding:20px 14px}.sidebar nav{display:grid;gap:7px}.nav-link{display:block;padding:12px 14px;border-radius:10px;text-decoration:none;color:#334155;font-weight:700}.nav-link:hover,.nav-link.active{background:#eef2ff;color:#4338ca}.content{padding:28px;min-width:0}.page-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.page-head h1{font-size:28px;margin:0}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:22px}.stat-card,.card{background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 10px 25px rgba(15,23,42,.04)}.stat-card{padding:20px}.stat-label{color:#64748b;font-size:13px;font-weight:700}.stat-value{font-size:30px;font-weight:900;margin-top:9px}.card{padding:20px;margin-bottom:20px}.card h2{margin:0 0 16px;font-size:20px}.quick-actions{display:flex;flex-wrap:wrap;gap:10px}.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:0;border-radius:9px;padding:11px 14px;background:#111827;color:#fff;font-weight:800;cursor:pointer}.btn.secondary{background:#eef2ff;color:#4338ca}.table-wrap{overflow-x:auto;border:1px solid #e5e7eb;border-radius:12px}table{width:100%;border-collapse:collapse;background:#fff}th,td{padding:12px 13px;border-bottom:1px solid #e5e7eb;text-align:left;vertical-align:top;white-space:nowrap}th{background:#f8fafc;color:#475569;font-size:12px;text-transform:uppercase;letter-spacing:.03em}tr:last-child td{border-bottom:0}.status{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}.status-success{background:#dcfce7;color:#166534}.status-danger{background:#fee2e2;color:#991b1b}.status-warning{background:#fef3c7;color:#92400e}.status-neutral{background:#e2e8f0;color:#475569}.muted{color:#64748b;font-size:13px}.filters{display:grid;grid-template-columns:minmax(180px,1fr) 180px 180px auto;gap:10px;margin-bottom:16px}.filters input,.filters select{width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;font-size:14px}.filters button{padding:11px 16px;border:0;border-radius:9px;background:#111827;color:#fff;font-weight:800}.pagination{display:flex;gap:7px;margin-top:16px}.page-link{min-width:36px;text-align:center;padding:8px 10px;border-radius:8px;background:#fff;border:1px solid #dbe2ea;text-decoration:none;color:#334155}.page-link.current{background:#111827;color:#fff;border-color:#111827}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.empty{padding:22px;text-align:center;color:#64748b}.link{color:#4338ca;text-decoration:none;font-weight:800}@media(max-width:1050px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.two-col{grid-template-columns:1fr}.filters{grid-template-columns:1fr 1fr}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid #e5e7eb;padding:10px;overflow-x:auto}.sidebar nav{display:flex;min-width:max-content}.content{padding:18px}.app-topbar{padding:0 16px}.topbar-user span{display:none}.stats-grid{grid-template-columns:1fr 1fr}.filters{grid-template-columns:1fr}.page-head h1{font-size:23px}}@media(max-width:480px){.stats-grid{grid-template-columns:1fr}}

/* Step 15: plugin/version management */
.admin-grid{display:grid;gap:18px}.admin-grid-sidebar{grid-template-columns:minmax(0,1fr) 360px}.admin-grid-sidebar>section:first-child{align-self:start}.form-stack{display:grid;gap:10px}.form-stack label{font-weight:800;font-size:14px}.form-stack input[type=text],.form-stack input[type=file],.form-stack select,.form-stack textarea{width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;font:inherit;color:#111827}.form-stack input[readonly]{background:#f8fafc;color:#64748b}.form-stack textarea{resize:vertical}.field-help{margin:-3px 0 8px;color:#64748b;font-size:12px;line-height:1.5}.notice{padding:12px 14px;border-radius:10px;margin-bottom:16px;font-weight:700}.notice-success{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.notice-danger{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}.section-head,.page-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.page-actions{margin-bottom:16px}.form-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.check-row{display:flex!important;align-items:flex-start;gap:9px;padding:10px 0}.check-row input{margin:3px 0 0}.row-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.row-actions form{margin:0}.text-button{border:0;background:none;padding:0;color:#4338ca;font:inherit;font-weight:800;cursor:pointer}.danger-text{color:#b91c1c}.stats-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.stat-value-small{font-size:20px;margin-top:12px}.info-card{background:#f8fafc}.info-card p{margin:0;color:#475569;line-height:1.65}.card code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92em;background:#f1f5f9;padding:2px 5px;border-radius:5px}@media(max-width:1050px){.admin-grid-sidebar{grid-template-columns:1fr}.form-grid-3{grid-template-columns:1fr 1fr}.stats-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.form-grid-3{grid-template-columns:1fr}.stats-grid-3{grid-template-columns:1fr}.section-head,.page-actions{align-items:flex-start;flex-direction:column}.admin-grid-sidebar{grid-template-columns:1fr}}
.notice{padding:13px 15px;border-radius:10px;margin:0 0 18px;font-weight:700}.notice.success{background:#ecfdf5;color:#047857}.notice.danger{background:#fef2f2;color:#b91c1c}.notice.key-notice{background:#f5f3ff;color:#4c1d95;border:1px dashed #7c3aed}.key-notice code{display:block;margin-top:10px;font-size:18px;word-break:break-all}.form-stack label{display:block;margin:0 0 7px;font-weight:800}.form-stack input,.form-stack select,.form-stack textarea{width:100%;border:1px solid #cbd5e1;border-radius:9px;padding:11px 12px;font-size:14px;background:#fff;margin-bottom:14px}.form-stack textarea{resize:vertical}.form-stack input:focus,.form-stack select:focus,.form-stack textarea:focus{outline:0;border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.12)}.form-grid{display:grid;gap:13px}.form-grid.two{grid-template-columns:1fr 1fr}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.field-help{margin:-7px 0 14px;color:#64748b;font-size:12px;line-height:1.5}.customer-layout,.license-layout{grid-template-columns:minmax(300px,380px) minmax(0,1fr)}.customer-list-card,.license-list-card{min-width:0}.customer-filters{grid-template-columns:minmax(180px,1fr) 160px auto}.license-filters{grid-template-columns:minmax(180px,1fr) 145px 190px auto}.page-actions{margin:-8px 0 18px}.detail-list{display:grid;gap:11px}.detail-list>div{display:flex;justify-content:space-between;gap:20px;padding:11px 0;border-bottom:1px solid #eef2f7}.detail-list>div:last-child{border-bottom:0}.detail-list span{color:#64748b}.stats-inline{display:grid;grid-template-columns:1fr 1fr;gap:14px}.stats-inline>div{padding:18px;border:1px solid #e5e7eb;border-radius:12px;background:#f8fafc}.stats-inline span{display:block;color:#64748b;font-size:13px}.stats-inline strong{display:block;font-size:28px;margin-top:7px}.check-row{display:flex!important;align-items:flex-start;gap:9px;margin:4px 0 16px!important;font-weight:700!important}.check-row input{width:auto!important;margin:3px 0 0!important}.btn:disabled{opacity:.55;cursor:not-allowed}
@media(max-width:1050px){.customer-layout,.license-layout{grid-template-columns:1fr}.form-grid.three{grid-template-columns:1fr 1fr}.license-filters{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.form-grid.two,.form-grid.three{grid-template-columns:1fr}.customer-filters,.license-filters{grid-template-columns:1fr}.detail-list>div{align-items:flex-start;flex-direction:column;gap:5px}}


/* Step 20: Renewals & Expiry */
.compact-stats{grid-template-columns:repeat(4,minmax(0,1fr))}
.stat-link{text-decoration:none;color:inherit;transition:transform .18s ease,box-shadow .18s ease}
.stat-link:hover{transform:translateY(-2px);box-shadow:0 16px 35px rgba(15,23,42,.1)}
.renewal-layout{grid-template-columns:minmax(290px,.72fr) minmax(0,1.5fr);align-items:start}
.renewal-list-card{min-width:0}
.renew-license-summary{display:flex;flex-direction:column;gap:8px;padding:15px;margin-bottom:18px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px}
.renew-license-summary code{font-size:15px;font-weight:800;color:#5b21b6}
.empty-state{padding:28px 18px;text-align:center;color:#64748b;background:#f8fafc;border-radius:12px;border:1px dashed #cbd5e1}
.small-notice{margin:0;padding:10px 12px;font-size:13px}
.card-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.renewal-filters{grid-template-columns:minmax(180px,1fr) 180px auto}
.btn.small{display:inline-flex;width:auto;padding:8px 11px;font-size:12px;text-decoration:none}
@media(max-width:1000px){.compact-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.renewal-layout{grid-template-columns:1fr}}
@media(max-width:640px){.compact-stats{grid-template-columns:1fr 1fr}.renewal-filters{grid-template-columns:1fr}.card-title-row{align-items:flex-start;flex-direction:column}}
.details-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0}.detail-box{padding:13px;background:#f8fafc;border:1px solid #eef2f7;border-radius:11px}.detail-box span{display:block;font-size:12px;color:#64748b;margin-bottom:5px}.detail-box strong{display:block;word-break:break-word}.btn.danger{background:#b91c1c;color:#fff}.btn.warning{background:#f59e0b;color:#111827}@media(max-width:640px){.details-grid{grid-template-columns:1fr}}

/* Step 21: Reminder Automation & Cron */
.settings-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}
.code-label{display:block;font-weight:800;margin:15px 0 7px}
.code-box{width:100%;min-height:74px;padding:12px;border:1px solid #cbd5e1;border-radius:10px;background:#0f172a;color:#e2e8f0;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;resize:vertical;word-break:break-all}
.settings-actions{margin-top:16px}.settings-actions form{margin:0}.btn.warning{background:#f59e0b;color:#111827}.btn.whatsapp{background:#16a34a;color:#fff}.cron-result{padding:12px 14px;background:#eef2ff;color:#3730a3;border-radius:10px;font-size:13px;line-height:1.6;margin-top:12px}.inline-test-form{display:grid;grid-template-columns:minmax(220px,1fr) auto;gap:10px;max-width:650px}.inline-test-form input{width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:9px;font:inherit}.reminder-actions{min-width:260px}.reminder-actions form{margin:0}.reminder-actions .link{align-self:center}.notice.warning{background:#fef3c7;color:#92400e}
@media(max-width:900px){.settings-layout{grid-template-columns:1fr}}
@media(max-width:640px){.inline-test-form{grid-template-columns:1fr}.reminder-actions{min-width:0}}

/* Step 22: Backup, Security & Maintenance */
.stat-value-small{font-size:24px!important}.maintenance-layout{align-items:stretch}.backup-note{margin-top:16px;padding:13px 14px;border:1px solid #ddd6fe;background:#f5f3ff;border-radius:12px;color:#5b21b6;font-size:13px;line-height:1.6}.maintenance-action-form{margin-top:18px}.section-head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.health-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:18px}.health-item{display:flex;gap:12px;padding:15px;border:1px solid #e5e7eb;border-radius:14px;background:#fff}.health-item p{margin:4px 0 0;color:#64748b;font-size:13px;line-height:1.5}.health-icon{display:grid;place-items:center;flex:0 0 30px;width:30px;height:30px;border-radius:50%;font-weight:900}.health-success .health-icon{background:#dcfce7;color:#166534}.health-warning .health-icon{background:#fef3c7;color:#92400e}.health-danger .health-icon{background:#fee2e2;color:#991b1b}.cleanup-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:18px}.cleanup-box{padding:18px;border:1px solid #e5e7eb;border-radius:14px;background:#f8fafc}.cleanup-box label{display:block;margin-bottom:8px;font-weight:800}.cleanup-box select{width:100%;margin-bottom:12px}.btn.danger{background:#b91c1c;color:#fff}@media(max-width:780px){.health-grid,.cleanup-grid{grid-template-columns:1fr}.section-head-row{flex-direction:column}.maintenance-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Step 23: Admin profile and login security */
.topbar-profile{color:#fff;text-decoration:none;font-weight:800}.topbar-profile:hover{text-decoration:underline}.profile-meta{display:flex;flex-direction:column;gap:8px;margin-top:22px;padding-top:18px;border-top:1px solid #e5e7eb;color:#64748b;font-size:14px}.profile-meta strong{color:#111827}.login-agent{max-width:360px;white-space:normal;line-height:1.45}.alert{margin-bottom:18px;padding:13px 15px;border-radius:11px;font-weight:700;line-height:1.5}.alert-success{background:#ecfdf5;color:#047857;border:1px solid #a7f3d0}.alert-danger{background:#fef2f2;color:#b91c1c;border:1px solid #fecaca}

/* Step 24: Production release audit */
.audit-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:26px 28px;margin-bottom:20px;border-radius:18px;border:1px solid #dbeafe;background:linear-gradient(135deg,#eff6ff,#fff);box-shadow:0 12px 30px rgba(15,23,42,.06)}
.audit-hero h2{margin:7px 0 8px;font-size:25px}.audit-hero p{margin:0;max-width:760px;color:#64748b;line-height:1.6}.audit-kicker{font-size:12px;letter-spacing:.12em;font-weight:900;color:#4f46e5}.audit-ready{border-color:#a7f3d0;background:linear-gradient(135deg,#ecfdf5,#fff)}.audit-not-ready{border-color:#fecaca;background:linear-gradient(135deg,#fef2f2,#fff)}
.audit-score{display:grid;place-items:center;flex:0 0 145px;width:145px;height:145px;border-radius:50%;background:#111827;color:#fff;text-align:center;box-shadow:inset 0 0 0 8px rgba(255,255,255,.08)}.audit-score strong{display:block;font-size:34px;line-height:1}.audit-score span{display:block;margin-top:7px;font-size:12px;color:#cbd5e1}.audit-stats{margin-bottom:18px}.audit-green{color:#047857}.audit-amber{color:#b45309}.audit-red{color:#b91c1c}.audit-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.audit-actions .btn{width:auto;text-decoration:none}.audit-actions .link{margin-left:auto}.audit-group{margin-bottom:18px}.audit-list{display:grid;gap:10px;margin-top:16px}.audit-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 14px;border:1px solid #e5e7eb;border-radius:12px;background:#fff}.audit-row-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;font-weight:900}.audit-row-success .audit-row-icon{background:#dcfce7;color:#166534}.audit-row-warning .audit-row-icon{background:#fef3c7;color:#92400e}.audit-row-danger .audit-row-icon{background:#fee2e2;color:#991b1b}.audit-row-body strong{display:block}.audit-row-body p{margin:4px 0 0;color:#64748b;font-size:13px;line-height:1.45}.audit-next-steps ol{margin:12px 0 0;padding-left:22px}.audit-next-steps li{padding:6px 0;color:#475569;line-height:1.55}
@media(max-width:760px){.audit-hero{align-items:flex-start;flex-direction:column}.audit-score{width:115px;height:115px;flex-basis:115px}.audit-actions .link{margin-left:0}.audit-row{grid-template-columns:32px minmax(0,1fr)}.audit-row>.status{grid-column:2;justify-self:start}}
