:root{font-family:Inter,system-ui,Arial,sans-serif;color:#152033;background:#f5f7fb}*{box-sizing:border-box}body{margin:0}header{height:64px;background:#101827;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 5vw;position:sticky;top:0;z-index:10}.brand{color:#fff;text-decoration:none;font-weight:800;letter-spacing:.03em}.brand span{font-weight:400;color:#aeb8ca;margin-left:.5rem}nav{display:flex;align-items:center;gap:1.2rem}nav a,.link{color:#dbe4f3;text-decoration:none;background:none;border:0;padding:0;font:inherit;cursor:pointer}main{max-width:1280px;margin:0 auto;padding:32px 5vw}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:24px}h1{margin:.1rem 0;font-size:2rem}h2{margin-top:0}.muted,.help{color:#667085}.card,.scan-card{background:#fff;border:1px solid #e5e9f0;border-radius:14px;padding:22px;margin-bottom:22px;box-shadow:0 2px 8px rgba(16,24,39,.04)}.scan-card{border:2px solid #2563eb}.grid.two{display:grid;grid-template-columns:1fr 1fr;gap:22px}.stack{display:grid;gap:15px}label{display:grid;gap:6px;font-weight:600}input{width:100%;border:1px solid #cfd6e3;border-radius:9px;padding:11px 12px;font:inherit;background:#fff}button,.button{border:0;border-radius:9px;background:#2563eb;color:#fff;padding:11px 16px;font-weight:700;text-decoration:none;cursor:pointer;display:inline-block}.secondary{background:#e9eef8;color:#24324a}.danger{background:#c62828}.actions,.inline-form,#scan-form,.correction{display:flex;gap:10px;align-items:center}.inline-form input,#scan-form input:first-child{flex:1}.correction input{width:90px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.stat{background:#fff;border:1px solid #e5e9f0;border-radius:12px;padding:18px}.stat strong{display:block;font-size:1.65rem}.stat span{color:#667085}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:12px;border-bottom:1px solid #edf0f5;white-space:nowrap}th{font-size:.8rem;text-transform:uppercase;color:#667085}.badge{padding:4px 9px;border-radius:999px;font-size:.8rem;font-weight:700}.badge.open{background:#dcfce7;color:#166534}.badge.closed{background:#e5e7eb;color:#374151}.badge.pending-review{background:#fef3e0;color:#b54708}.badge.review{background:#fef3e0;color:#b54708}.badge.missed{background:#fdeced;color:#c01c28}.alert{padding:13px 16px;border-radius:10px;margin-bottom:18px}.error{background:#fee2e2;color:#991b1b}.success{background:#dcfce7;color:#166534}.positive{color:#047857;font-weight:700}.negative{color:#b91c1c;font-weight:700}.variance-row{background:#fffaf0}.mono{font-family:ui-monospace,Consolas,monospace}.auth{min-height:75vh;display:grid;place-items:center}.auth .card{width:min(420px,100%)}ol{line-height:1.9}@media(max-width:800px){.grid.two,.stats{grid-template-columns:1fr 1fr}.page-head{align-items:flex-start;flex-direction:column}header{padding:0 16px}.brand span{display:none}main{padding:22px 14px}.actions{flex-wrap:wrap}#scan-form{display:grid;grid-template-columns:1fr 85px}#scan-form button{grid-column:1/-1}}@media(max-width:480px){.stats,.grid.two{grid-template-columns:1fr}nav a{display:none}}
select{width:100%;border:1px solid #cfd6e3;border-radius:9px;padding:11px 12px;font:inherit;background:#fff}.barcode-field{min-height:78px;font-size:2rem;font-weight:800;letter-spacing:.04em;border:3px solid #2563eb;padding:16px 20px}.qty-label{min-width:120px;font-size:.8rem;color:#667085}.qty-label input{font-size:1.25rem;font-weight:700;text-align:center}#scan-form button{min-height:78px;font-size:1.05rem}.scan-card h2{font-size:1.65rem}.inline-form select{width:auto;min-width:220px}@media(max-width:800px){.barcode-field{font-size:1.4rem;min-height:68px}#scan-form{grid-template-columns:1fr 100px}.qty-label{min-width:0}#scan-form button{min-height:56px}}
.loud-alert{border:3px solid #b91c1c;font-size:1.1rem;animation:alarm-pulse .35s ease-in-out 3}.scan-error-flash::before{content:"";position:fixed;inset:0;background:rgba(220,38,38,.22);pointer-events:none;z-index:9999;animation:screen-flash .3s ease-in-out 3}.location-assignment{display:grid;gap:8px;min-width:280px}.location-assignment select,select[multiple]{min-height:110px}.location-assignment button{width:max-content}@keyframes alarm-pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.015);box-shadow:0 0 0 6px rgba(220,38,38,.18)}}@keyframes screen-flash{0%,100%{opacity:0}50%{opacity:1}}
.location-picker{display:grid;gap:10px}.location-add-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.location-add-row select{min-width:220px;min-height:44px}.location-chips{display:flex;gap:8px;flex-wrap:wrap;min-height:16px}.location-chip{display:inline-flex;align-items:center;gap:8px;background:#e8efff;border:1px solid #b8cbfa;border-radius:999px;padding:6px 7px 6px 12px;font-weight:700;color:#18376b}.location-chip-remove{display:inline-grid;place-items:center;width:25px;height:25px;padding:0;border:0;border-radius:50%;background:#c81e1e;color:#fff;font-size:20px;line-height:1;cursor:pointer}.location-chip-remove:hover{background:#991b1b}.location-assignment{display:grid;gap:8px;min-width:330px}.location-assignment .secondary{width:max-content}

/* v3.3 inventory insights dashboard */
.insights-head{align-items:flex-end}.month-filter{min-width:240px}.month-filter label{margin:0}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:18px 0}.metric-card{background:#fff;border:1px solid #dfe5ee;border-radius:14px;padding:20px;box-shadow:0 4px 14px rgba(30,50,80,.06)}.metric-card strong{display:block;font-size:1.75rem;margin:8px 0}.metric-card small{color:#667085}.metric-card.negative{border-left:5px solid #c62828}.metric-card.positive{border-left:5px solid #16803c}.metric-label{font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:#667085;font-weight:700}.section-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.section-head h2{margin-bottom:4px}.text-negative{color:#b42318;font-weight:700}.text-positive{color:#067647;font-weight:700}.dashboard-lower{margin-top:18px}.insight-callout{padding:16px;border-radius:10px;margin-bottom:16px}.insight-callout.warning{background:#fff1f0;border:1px solid #fecdca}.insight-callout.good{background:#ecfdf3;border:1px solid #abefc6}.insight-callout p{margin:8px 0 0}.insights-table td,.insights-table th{white-space:nowrap}@media(max-width:1050px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.metric-grid{grid-template-columns:1fr}.insights-head{align-items:stretch}.month-filter{min-width:0;width:100%}}

/* v3.4 location coverage drill-down */
.metric-link{display:block;color:inherit;text-decoration:none;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.metric-link:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(30,50,80,.12);border-color:#94b4f8}.back-link{display:inline-block;margin-bottom:8px;color:#2563eb;text-decoration:none;font-weight:700}.coverage-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:18px 0}.coverage-stat{background:#fff;border:1px solid #dfe5ee;border-radius:14px;padding:18px;border-left:5px solid #667085}.coverage-stat span{font-size:.82rem;text-transform:uppercase;letter-spacing:.04em;color:#667085;font-weight:800}.coverage-stat strong{display:block;font-size:2rem;margin:5px 0}.coverage-stat small{color:#667085}.coverage-stat.open{border-left-color:#d97706}.coverage-stat.closed{border-left-color:#16803c}.coverage-stat.not-initiated{border-left-color:#98a2b3}.status-pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 10px;font-size:.8rem;font-weight:800}.status-pill.open{background:#fff4d6;color:#92400e}.status-pill.closed{background:#dcfce7;color:#166534}.status-pill.not-initiated{background:#f2f4f7;color:#475467}.status-subtext{font-size:.78rem;color:#667085;margin-top:6px}.coverage-row.status-open{background:#fffdf5}.coverage-row.status-not_initiated{background:#fafafa}.coverage-actions{display:grid;gap:8px;min-width:145px}.coverage-actions .button{text-align:center;padding:8px 11px}.coverage-actions>a:not(.button){font-size:.85rem;text-align:center}.coverage-table td{vertical-align:top;white-space:normal;min-width:120px}.coverage-table th{white-space:nowrap}@media(max-width:1050px){.coverage-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:650px){.coverage-summary{grid-template-columns:1fr}}

/* v3.5 pending catalog items */
.pending-stat{border-left:5px solid #dc2626}.pending-item-row{background:#fff0f0}.pending-item-row:hover{background:#ffe4e4}.pending-label{display:inline-block;background:#fee2e2;color:#991b1b;border:1px solid #fca5a5;border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:800;margin-bottom:10px}.approval-form{display:grid;grid-template-columns:minmax(220px,2fr) minmax(130px,1fr) minmax(150px,1fr) 120px 140px auto;gap:8px;align-items:end;min-width:900px}.approval-form label{font-size:.76rem;color:#667085}.approval-form input{min-width:0}.approve-button{background:#15803d;white-space:nowrap}.approve-button:hover{background:#166534}@media(max-width:950px){.approval-form{grid-template-columns:1fr 1fr;min-width:560px}.approval-form .approve-button{grid-column:1/-1}}

/* v3.6 location history and monthly count controls */
.location-history-card{position:relative;min-height:465px}.location-search-wrap{position:relative;margin-bottom:14px}.location-suggestions{position:absolute;left:0;right:0;top:100%;z-index:20;background:#fff;border:1px solid #cfd6e3;border-radius:9px;box-shadow:0 10px 24px rgba(16,24,39,.14);max-height:220px;overflow:auto}.location-suggestion{display:block;width:100%;text-align:left;background:#fff;color:#152033;border:0;border-radius:0;padding:11px 13px;font-weight:600}.location-suggestion:hover,.location-suggestion:focus{background:#eef4ff}.location-history-list{min-height:270px}.location-history-entry{padding:12px 4px;border-bottom:1px solid #edf0f5}.location-history-entry a{text-decoration:none;color:#1d4ed8}.location-history-entry p{margin:4px 0 0}.location-code{display:inline-block;margin-left:8px;padding:2px 7px;border-radius:999px;background:#eef2f7;color:#475467;font-size:.75rem;font-weight:800}.card-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:15px}.card-pagination button{padding:8px 12px}.card-pagination button:disabled{opacity:.45;cursor:not-allowed}.system-date{display:grid;gap:3px;padding:12px 14px;border:1px solid #d7e0ed;background:#f8fafc;border-radius:10px}.system-date span{font-size:.78rem;text-transform:uppercase;color:#667085;font-weight:800}.system-date small{color:#667085}.system-date strong{font-size:1.05rem}@media(max-width:520px){.card-pagination{font-size:.88rem}.card-pagination button{padding:8px 9px}}

/* v3.7 location timezone and AJAX count-location picker */
.ajax-location-picker{position:relative;display:grid;gap:6px}.ajax-location-picker .location-suggestions{top:72px}.ajax-location-suggestion{display:grid;gap:3px}.ajax-location-suggestion span{font-size:.82rem;color:#667085;font-weight:500}.location-no-result{padding:13px;color:#667085}.selected-location{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid #b8cbfa;background:#eef4ff;border-radius:10px;padding:11px 12px}.selected-location strong{color:#18376b}.selected-location span{font-weight:800;color:#475467}.selected-location small{display:block;color:#667085;margin-top:3px}.selected-location .location-chip-remove{flex:0 0 auto}.ajax-location-picker input[readonly]{background:#f8fafc;color:#475467}

/* v3.8 administration workspace */
.admin-section-head{align-items:center;margin-bottom:14px}.admin-count{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;background:#eef2f7;color:#475467;font-size:.82rem;font-weight:800;white-space:nowrap}.admin-search-wrap{position:relative;margin-bottom:14px}.admin-search-wrap input,.user-toolbar input{min-height:46px}.admin-locations-table .compact{padding:7px 10px;font-size:.84rem}.admin-pagination{justify-content:flex-start;flex-wrap:wrap}.admin-pagination #admin-location-page-status{min-width:88px;text-align:center}.page-number-wrap{display:flex;gap:5px}.page-number{min-width:34px;padding:7px 9px;background:#fff;color:#344054;border:1px solid #d0d5dd}.page-number.active{background:#2563eb;color:#fff;border-color:#2563eb}.empty-state{padding:24px;text-align:center;color:#667085;background:#f8fafc;border:1px dashed #cfd6e3;border-radius:10px}.user-toolbar{display:grid;grid-template-columns:minmax(260px,2fr) minmax(160px,1fr) minmax(150px,1fr);gap:10px;margin-bottom:16px}.user-card-list{display:grid;gap:12px}.user-management-card{border:1px solid #dfe5ee;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 3px 12px rgba(30,50,80,.04)}.user-card-summary{display:grid;grid-template-columns:52px minmax(170px,1.1fr) minmax(220px,1.5fr) auto;gap:14px;align-items:center;padding:16px}.user-avatar{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:#e8efff;color:#1d4ed8;font-size:1.25rem;font-weight:900}.user-identity>strong{font-size:1.05rem}.user-meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:6px}.role-badge{display:inline-flex;border-radius:999px;padding:4px 9px;font-size:.76rem;font-weight:800}.role-badge.admin{background:#ede9fe;color:#5b21b6}.role-badge.owner{background:#fef0e8;color:#b54708}.role-badge.manager{background:#dbeafe;color:#1d4ed8}.role-badge.employee{background:#f2f4f7;color:#475467}.user-location-summary{display:grid;gap:2px}.user-location-summary>strong{font-size:1.25rem}.user-location-summary small{color:#667085;white-space:normal}.user-edit-toggle{white-space:nowrap}.user-card-editor{border-top:1px solid #e4e7ec;background:#f8fafc;padding:18px}.user-editor-grid{display:grid;grid-template-columns:2fr 1.2fr 1fr;gap:22px}.user-editor-grid section{min-width:0}.user-editor-grid h3{margin:0 0 11px;font-size:1rem}.compact-form{gap:9px}.compact-form button,.user-editor-grid form>button{width:max-content}.admin-users-card .location-assignment{min-width:0}.admin-users-card .location-add-row select{min-width:180px;flex:1}.admin-users-card .location-chip{max-width:100%}@media(max-width:980px){.user-card-summary{grid-template-columns:52px 1fr auto}.user-location-summary{grid-column:2/-1}.user-editor-grid{grid-template-columns:1fr 1fr}.user-editor-grid section:first-child{grid-column:1/-1}}@media(max-width:680px){.user-toolbar{grid-template-columns:1fr}.user-card-summary{grid-template-columns:46px 1fr}.user-edit-toggle{grid-column:1/-1;width:100%}.user-location-summary{grid-column:1/-1}.user-editor-grid{grid-template-columns:1fr}.user-editor-grid section:first-child{grid-column:auto}.admin-pagination{justify-content:center}.page-number-wrap{order:3;width:100%;justify-content:center}}

/* v3.9 location performance and state controls */
.performance-filter-bar{display:grid;grid-template-columns:minmax(170px,1.2fr) minmax(150px,1fr) minmax(170px,1fr) auto auto;gap:12px;align-items:end;padding:14px;border:1px solid var(--border,#dfe5ec);border-radius:12px;background:#f8fafc;margin:12px 0}.performance-filter-bar label{margin:0}.performance-filter-bar select{width:100%}.performance-filter-bar button,.performance-filter-bar .button{white-space:nowrap}.performance-summary-strip{display:flex;flex-wrap:wrap;gap:10px 22px;padding:10px 2px 14px;color:#52606d;font-size:.9rem}.performance-table th{white-space:nowrap}.rank-pill{display:inline-flex;align-items:center;justify-content:center;min-width:30px;height:30px;border-radius:999px;background:#e8eef8;font-weight:800}.state-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-radius:999px;background:#edf2f7;font-size:.78rem;font-weight:800;letter-spacing:.04em}.location-performance-card{grid-column:1/-1}.performance-heading{margin-bottom:4px}
@media(max-width:900px){.performance-filter-bar{grid-template-columns:1fr 1fr}.performance-filter-bar button,.performance-filter-bar .button{width:100%;text-align:center}}@media(max-width:580px){.performance-filter-bar{grid-template-columns:1fr}.performance-summary-strip{display:grid;gap:5px}}
.inline-state-form{margin:0}.inline-state-form select{min-width:72px;padding:7px 8px;font-weight:700}
.locked-finish{opacity:.9}.modal-backdrop{position:fixed;inset:0;background:rgba(15,23,42,.65);display:grid;place-items:center;padding:20px;z-index:1000}.modal-backdrop[hidden]{display:none}.modal-card{background:#fff;border-radius:16px;max-width:620px;width:100%;padding:24px;box-shadow:0 30px 80px rgba(0,0,0,.3)}.modal-actions{display:flex;gap:10px;flex-wrap:wrap}.pending-barcode-list{max-height:160px;overflow:auto;background:#fff1f2;border:1px solid #fecdd3;border-radius:10px;padding:12px 32px}.override-panel{margin-top:20px;border-top:1px solid #ddd;padding-top:12px}.override-panel textarea{min-height:90px}.stat-link{text-decoration:none;color:inherit;display:block;margin-bottom:14px}.pending-approval-card{border-left:5px solid #dc2626;background:#fff7f7}.approval-global{grid-template-columns:2fr 1fr 1fr 1fr 1fr auto}.empty-state{text-align:center;padding:40px}.approval-head{display:flex;justify-content:space-between;gap:16px}@media(max-width:900px){.approval-global{grid-template-columns:1fr}}

/* v4.1 session directory and AJAX feedback */
.card-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1rem}.card-toolbar h2{margin-bottom:.2rem}.compact-search{min-width:min(360px,100%);font-size:.82rem}.compact-search input{margin-top:.3rem}.pagination-bar{display:flex;align-items:center;justify-content:center;gap:.55rem;flex-wrap:wrap;margin-top:1rem}.page-number-group{display:flex;gap:.3rem}.inline-empty{padding:1rem;text-align:center}.approval-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.compact{padding:.55rem .8rem}.ajax-action-form button[disabled]{opacity:.55;cursor:wait}
@media(max-width:700px){.card-toolbar,.approval-head{align-items:stretch;flex-direction:column}.compact-search{min-width:0}}

.header-eastern-clock{margin-left:auto;display:grid;line-height:1.1;text-align:right;min-width:170px;padding-left:16px;border-left:1px solid rgba(255,255,255,.18)}
.header-eastern-clock span,.header-eastern-clock small{font-size:.72rem;opacity:.78}.header-eastern-clock strong{font-size:.92rem;margin:3px 0}
.clickable-location-row{cursor:pointer}.clickable-location-row:hover{background:rgba(37,99,235,.06)}.location-performance-link{text-decoration:none}
.selected-month-row{background:#eef6ff!important;outline:2px solid #60a5fa;outline-offset:-2px}.selected-month-row td:first-child{font-weight:700}
@media(max-width:850px){.header-eastern-clock{order:3;width:100%;border-left:0;padding:6px 0 0;text-align:left;grid-template-columns:auto auto 1fr;gap:8px;align-items:center}}
.catalog-actions{display:flex;gap:.65rem;flex-wrap:wrap;align-items:center}.catalog-actions .button{white-space:nowrap}.import-progress{margin-top:1rem;padding:1rem;border:1px solid #cbd5e1;border-radius:12px;background:#f8fafc}.import-progress-head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:.55rem}.progress-track{height:18px;background:#e2e8f0;border-radius:999px;overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,#2563eb,#16a34a);transition:width .25s ease;border-radius:999px}.import-progress.success{border-color:#86efac;background:#f0fdf4}.import-progress.error{border-color:#fca5a5;background:#fef2f2}

/* ==========================================================================\n   v5.0 enterprise interface\n   ========================================================================== */
:root{
  --navy-950:#06142f;--navy-900:#071a3d;--navy-850:#0a2350;--blue-600:#1769e0;
  --blue-500:#2f7df4;--blue-100:#e8f1ff;--surface:#fff;--canvas:#f4f7fc;
  --text:#101c36;--muted-v5:#68758d;--line:#e2e8f2;--shadow:0 8px 28px rgba(19,42,82,.08);
  --radius-lg:16px;--radius-md:12px;
}
html{scroll-behavior:smooth}body{background:var(--canvas);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
.app-header{height:82px;padding:0;background:linear-gradient(100deg,var(--navy-950),var(--navy-900) 58%,#08275a);box-shadow:0 2px 12px rgba(5,20,47,.24);z-index:100}
.header-inner{width:100%;max-width:1680px;margin:auto;height:100%;padding:0 30px;display:flex;align-items:center;gap:22px}
.app-brand{min-width:190px;display:flex;align-items:center;gap:11px;color:#fff;text-decoration:none}
.brand-mark{width:42px;height:42px;border:1px solid rgba(255,255,255,.55);border-radius:11px;display:grid;place-items:center;font-weight:900;font-size:18px;background:linear-gradient(145deg,rgba(255,255,255,.15),rgba(255,255,255,.03));box-shadow:inset 0 1px rgba(255,255,255,.25)}
.brand-copy{display:grid;line-height:1.05}.brand-copy strong{font-size:18px;letter-spacing:.035em}.brand-copy small{font-size:10px;text-transform:uppercase;letter-spacing:.18em;color:#b8c8e5;margin-top:5px;font-weight:700}
.primary-navigation{display:flex;align-items:center;gap:4px;flex:1;min-width:0}
.primary-navigation .nav-item{position:relative;display:flex;align-items:center;gap:8px;padding:11px 12px;border-radius:10px;color:#d9e3f4;text-decoration:none;font-weight:650;font-size:14px;white-space:nowrap;transition:background .18s,color .18s,transform .18s}
.primary-navigation .nav-item svg{width:19px;height:19px;fill:currentColor;opacity:.92;flex:none}
.primary-navigation .nav-item:hover{color:#fff;background:rgba(255,255,255,.09);transform:translateY(-1px)}
.primary-navigation .nav-item.active{color:#fff;background:linear-gradient(135deg,#164d9d,#1a64d3);box-shadow:0 7px 18px rgba(0,83,194,.28)}
.nav-alert-dot{width:7px;height:7px;border-radius:50%;background:#ff5b5b;box-shadow:0 0 0 3px rgba(255,91,91,.16)}
.header-tools{display:flex;align-items:center;gap:14px;margin-left:auto}
.header-eastern-clock{position:static;min-width:180px;padding:5px 15px;border-left:1px solid rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;gap:10px;text-align:left;color:#fff}
.header-eastern-clock>svg{width:25px;height:25px;fill:#d9e7ff;flex:none}.clock-copy{display:grid;line-height:1.08}.clock-copy small{color:#bdcbe3;font-size:11px}.clock-copy strong{font-size:15px;margin:3px 0}.clock-copy em{font-style:normal;color:#c6d2e6;font-size:10px}
.user-menu-wrap{position:relative}.user-menu-button{background:transparent;padding:7px 8px;border:1px solid transparent;border-radius:11px;display:flex;align-items:center;gap:9px;color:#fff}.user-menu-button:hover,.user-menu-button[aria-expanded="true"]{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.12)}
.user-avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#2e83f6,#22b5b2);font-weight:850}.user-copy{display:grid;text-align:left;line-height:1.1}.user-copy strong{font-size:13px}.user-copy small{color:#b9c9e4;font-size:10px;margin-top:3px}.chevron{width:18px;height:18px;fill:currentColor}
.user-menu{position:absolute;right:0;top:calc(100% + 12px);width:230px;background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 18px 50px rgba(6,20,47,.2);padding:8px;color:var(--text);z-index:120}.user-menu[hidden]{display:none}.user-menu:before{content:"";position:absolute;right:25px;top:-6px;width:11px;height:11px;background:#fff;border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}
.user-menu-heading{display:grid;padding:10px 11px 12px;border-bottom:1px solid var(--line);margin-bottom:5px}.user-menu-heading span{font-size:12px;color:var(--muted-v5);margin-top:3px}.user-menu a,.user-menu-logout{width:100%;display:block;text-align:left;color:#273550;text-decoration:none;background:transparent;border:0;border-radius:8px;padding:10px 11px;font:inherit;font-size:13px;font-weight:650}.user-menu a:hover,.user-menu-logout:hover{background:#f0f5fd;color:#125bc6}
.mobile-menu-button{display:none;width:42px;height:42px;padding:10px;background:transparent;border:1px solid rgba(255,255,255,.18)}.mobile-menu-button span{display:block;height:2px;background:#fff;margin:4px 0;border-radius:2px}
.login-header{height:74px;display:flex;align-items:center;padding:0 5vw;background:linear-gradient(100deg,var(--navy-950),var(--navy-900));color:#fff}
main#app-main,body.app-shell main{max-width:1440px;padding:36px 34px 54px;margin:auto;width:100%}
.page-head{margin-bottom:26px}.page-head h1,h1{font-size:clamp(1.75rem,2.3vw,2.35rem);letter-spacing:-.035em;color:#0b1833}.page-head .muted{max-width:850px;line-height:1.5}
h2{letter-spacing:-.018em;color:#10203e}.muted,.help{color:var(--muted-v5)}
.card,.scan-card,.metric-card,.stat{border-color:var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.card{padding:24px}.metric-card{padding:23px;min-height:154px;transition:transform .18s,box-shadow .18s}.metric-card:hover{transform:translateY(-2px);box-shadow:0 12px 34px rgba(19,42,82,.12)}
.metric-label{font-size:.77rem;letter-spacing:.07em}.metric-card strong{letter-spacing:-.035em;font-size:1.9rem}
button,.button{border-radius:10px;box-shadow:0 3px 10px rgba(37,99,235,.12);transition:transform .15s,filter .15s,box-shadow .15s}button:hover,.button:hover{filter:brightness(1.04);transform:translateY(-1px);box-shadow:0 6px 15px rgba(37,99,235,.18)}button:disabled{transform:none;box-shadow:none;cursor:not-allowed;opacity:.55}
input,select,textarea{border-color:#cbd5e3;border-radius:10px;min-height:43px;transition:border .15s,box-shadow .15s}input:focus,select:focus,textarea:focus{outline:none;border-color:#4e8deb;box-shadow:0 0 0 3px rgba(47,125,244,.14)}
.table-wrap{border:1px solid var(--line);border-radius:12px;background:#fff}table{background:#fff}thead{background:#f7f9fc}th{color:#56647c;font-size:.73rem;letter-spacing:.045em;padding:13px 14px}td{padding:13px 14px}tbody tr{transition:background .12s}tbody tr:hover{background:#f8fbff}
.badge,.status-pill,.state-badge,.rank-pill{font-weight:750}.section-head{margin-bottom:12px}
.auth{min-height:calc(100vh - 74px)}.auth .card{border:0;box-shadow:0 24px 70px rgba(7,26,61,.16);padding:32px}
.mobile-nav-backdrop{position:fixed;inset:82px 0 0;background:rgba(4,14,34,.55);z-index:89}.mobile-nav-backdrop[hidden]{display:none}
@media(max-width:1240px){.header-inner{padding:0 18px;gap:12px}.app-brand{min-width:160px}.brand-copy strong{font-size:15px}.primary-navigation .nav-item{padding:10px 9px;font-size:12px;gap:6px}.primary-navigation .nav-item svg{width:17px}.header-eastern-clock{min-width:150px;padding:5px 10px}.user-copy{display:none}}
@media(max-width:960px){
 .app-header{height:72px}.header-inner{padding:0 14px}.mobile-menu-button{display:block;order:3;margin-left:auto}.header-tools{order:2;margin-left:auto}.header-eastern-clock{display:none}.user-menu-button{padding:3px}.user-copy,.user-menu-button .chevron{display:none}
 .primary-navigation{position:fixed;top:72px;left:0;bottom:0;width:min(330px,87vw);padding:16px;background:#081b3e;display:flex;flex-direction:column;align-items:stretch;gap:5px;transform:translateX(-105%);transition:transform .22s ease;z-index:100;box-shadow:18px 0 40px rgba(4,14,34,.28);overflow:auto}
 .primary-navigation.open{transform:translateX(0)}.primary-navigation .nav-item{font-size:14px;padding:13px 14px}.primary-navigation .nav-item svg{width:20px;height:20px}
 .mobile-nav-backdrop{inset:72px 0 0}.user-menu{right:0;top:calc(100% + 10px)}
 main#app-main,body.app-shell main{padding:26px 18px 45px}
}
@media(max-width:620px){.app-brand{min-width:0}.brand-copy small{display:none}.brand-mark{width:38px;height:38px}.metric-grid,.stats,.grid.two{grid-template-columns:1fr}.card{padding:18px}.page-head{gap:13px}.header-inner{gap:8px}.user-avatar{width:34px;height:34px}}
.catalog-filter-grid{display:grid;grid-template-columns:minmax(240px,2fr) repeat(3,minmax(160px,1fr)) auto;gap:14px;align-items:end;margin:18px 0}.filter-actions{display:flex;gap:8px;align-items:center}.pagination{display:flex;justify-content:center;align-items:center;gap:16px;padding-top:18px}.pagination .disabled{pointer-events:none;opacity:.45}.danger.small{padding:8px 12px;font-size:.82rem}.inline-delete-form{margin:0}.product-catalog-card table{min-width:1180px}@media(max-width:1100px){.catalog-filter-grid{grid-template-columns:1fr 1fr}}@media(max-width:680px){.catalog-filter-grid{grid-template-columns:1fr}.filter-actions{width:100%}}

/* v5.3 professional navigation and system information */
.nav-dropdown{position:relative}.nav-dropdown>.nav-item{border:0;background:transparent;box-shadow:none}.nav-dropdown.active>.nav-item{color:#fff;background:linear-gradient(135deg,#164d9d,#1a64d3);box-shadow:0 7px 18px rgba(0,83,194,.28)}
.nav-chevron{width:15px!important;height:15px!important;transition:transform .18s}.nav-dropdown.open .nav-chevron{transform:rotate(180deg)}
.nav-dropdown-menu{position:absolute;top:calc(100% + 12px);right:0;width:310px;padding:8px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 22px 55px rgba(4,18,47,.23);z-index:140}.nav-dropdown-menu[hidden]{display:none}.nav-dropdown-menu:before{content:"";position:absolute;right:28px;top:-6px;width:11px;height:11px;background:#fff;border-left:1px solid var(--line);border-top:1px solid var(--line);transform:rotate(45deg)}
.nav-dropdown-menu a{display:grid;gap:3px;padding:12px 13px;border-radius:10px;text-decoration:none;color:#17233b}.nav-dropdown-menu a:hover,.nav-dropdown-menu a.active{background:#edf4ff;color:#0e59c5}.nav-dropdown-menu strong{font-size:13px}.nav-dropdown-menu small{font-size:11px;color:#738097;line-height:1.35}
.eyebrow{display:block;margin-bottom:6px;font-size:.72rem;font-weight:800;letter-spacing:.11em;text-transform:uppercase;color:#3971bd}.system-page-head{align-items:flex-end}.release-badge{padding:10px 15px;border-radius:999px;background:#e8f1ff;color:#135ab9;font-weight:850;box-shadow:inset 0 0 0 1px #c8ddfb}
.system-hero{display:flex;align-items:center;justify-content:space-between;gap:24px;background:linear-gradient(115deg,#071a3d,#0b3474);color:#fff;border:0}.system-hero>div:first-child{display:flex;align-items:center;gap:16px}.system-product-mark{width:58px;height:58px;display:grid;place-items:center;border-radius:15px;border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.1);font-weight:900;font-size:22px}.system-hero h2{margin:0;color:#fff}.system-hero p{margin:5px 0 0;color:#c5d5ee}.health-indicator{display:grid;grid-template-columns:auto auto;column-gap:8px;align-items:center;text-align:right}.health-indicator>span{width:10px;height:10px;border-radius:50%;background:#31d47b;box-shadow:0 0 0 5px rgba(49,212,123,.14)}.health-indicator small{grid-column:1/3;color:#bdd0ed;margin-top:5px}
.system-stat-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:15px;margin-bottom:22px}.system-stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:19px;box-shadow:var(--shadow);display:grid;gap:5px}.system-stat span{font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.055em;color:#65738a}.system-stat strong{font-size:1.8rem;letter-spacing:-.04em;color:#10203e}.system-stat small{color:#7a879b}.system-stat.attention{border-color:#f2c86f;background:#fffaf0}.system-stat.attention strong{color:#b06800}
.system-grid{align-items:start}.system-details{margin:0}.system-details>div{display:grid;grid-template-columns:minmax(150px,1fr) 1.25fr;gap:20px;padding:14px 0;border-bottom:1px solid #e8edf5}.system-details>div:last-child{border:0}.system-details dt{color:#68758d;font-weight:650}.system-details dd{margin:0;text-align:right;font-weight:750;color:#16243d}.system-details dd small{display:block;font-weight:500;color:#7c889a;margin-top:4px}.environment-pill{display:inline-block;padding:5px 9px;border-radius:999px;background:#eef4ff;color:#175ec3;font-size:.8rem}.status-online{display:inline-flex;align-items:center;gap:7px;color:#128049}.status-online i{width:8px;height:8px;border-radius:50%;background:#27bd68}.storage-meter{height:10px;background:#e7edf5;border-radius:999px;overflow:hidden;margin-top:18px}.storage-meter span{display:block;height:100%;background:linear-gradient(90deg,#1769e0,#20a873);border-radius:inherit}.release-note-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.release-note-grid>div{padding:17px;border:1px solid #e3eaf4;border-radius:12px;background:#f9fbfe}.release-note-grid strong{color:#173e78}.release-note-grid p{margin:7px 0 0;color:#66758c;line-height:1.5}
@media(max-width:1200px){.system-stat-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:960px){.nav-dropdown{width:100%}.nav-dropdown>.nav-item{width:100%}.nav-dropdown-menu{position:static;width:100%;margin-top:5px;box-shadow:none;background:#0d2a5b;border-color:rgba(255,255,255,.12)}.nav-dropdown-menu:before{display:none}.nav-dropdown-menu a{color:#fff}.nav-dropdown-menu a:hover,.nav-dropdown-menu a.active{background:rgba(255,255,255,.1);color:#fff}.nav-dropdown-menu small{color:#b7c9e7}.system-stat-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.system-hero{align-items:flex-start;flex-direction:column}.health-indicator{text-align:left}.system-stat-grid,.release-note-grid{grid-template-columns:1fr}.system-details>div{grid-template-columns:1fr;gap:5px}.system-details dd{text-align:left}}

/* v5.4 Backup & Recovery */
.backup-console{margin-top:1.25rem}.backup-grid{align-items:start}.backup-settings-form,.drive-setup{border:1px solid var(--border,#dfe5ec);border-radius:14px;padding:1rem}.section-head.compact{margin-bottom:.75rem}.section-head.compact h3{margin:.1rem 0}.check-row{display:flex!important;align-items:center;gap:.55rem;font-weight:700;margin:.75rem 0}.check-row input{width:auto}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.form-grid label{display:grid;gap:.35rem;font-weight:600}.form-grid input,.form-grid select,.upload-row input{width:100%}.upload-row{display:flex;gap:.6rem;align-items:center;margin:1rem 0}.setup-steps{background:#f7f9fc;border-radius:10px;padding:.85rem;margin:.8rem 0}.setup-steps ol{margin:.5rem 0 0 1.25rem}.setup-steps li{margin:.35rem 0}.status-chip{display:inline-flex;padding:.25rem .55rem;border-radius:999px;background:#eef2f6;font-size:.78rem;font-weight:700}.status-chip.online,.status-chip.completed{background:#e7f8ee;color:#176b3a}.status-chip.running{background:#e8f1ff;color:#1859a9}.status-chip.failed,.status-chip.completed_with_warning{background:#fff0e5;color:#9a4600}.notice{padding:.75rem 1rem;border-radius:10px;margin:.8rem 0}.notice.success{background:#e7f8ee;color:#176b3a}.notice.warning{background:#fff0e5;color:#884000}.security-note{margin-top:1rem}@media(max-width:800px){.form-grid{grid-template-columns:1fr}.upload-row{align-items:stretch;flex-direction:column}}

/* v5.5 Location lifecycle management */
.table-subtext{display:block;color:#758197;font-size:.78rem;margin-top:.25rem}.location-action-row{display:flex;gap:.45rem;align-items:center}.location-manage-menu{position:relative}.location-manage-menu>summary{list-style:none;cursor:pointer}.location-manage-menu>summary::-webkit-details-marker{display:none}.location-manage-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:min(430px,85vw);max-height:78vh;overflow:auto;background:#fff;border:1px solid #dfe6f0;border-radius:14px;padding:18px;box-shadow:0 24px 65px rgba(6,20,47,.22)}.location-manage-panel h3{margin:.15rem 0 .7rem}.location-status-actions{border-top:1px solid #e5eaf2;margin-top:1rem;padding-top:1rem}.danger-zone{border:1px solid #fecaca;background:#fff7f7;border-radius:12px;padding:14px;margin-top:1rem}.danger-zone h3{color:#b91c1c}.danger-zone p{color:#7f1d1d;font-size:.86rem;line-height:1.45}.alert.success{background:#e7f8ee;color:#176b3a;border:1px solid #b7ebca}@media(max-width:760px){.location-action-row{align-items:stretch;flex-direction:column}.location-manage-menu,.location-manage-menu>summary{width:100%}.location-manage-panel{position:fixed;inset:5vh 4vw;width:auto;max-height:90vh}.admin-locations-table th:nth-child(4),.admin-locations-table td:nth-child(4),.admin-locations-table th:nth-child(5),.admin-locations-table td:nth-child(5){display:none}}

/* v5.6 inventory analytics */
.analytics-workspace{overflow:hidden}.analytics-heading{margin-bottom:1rem}.analytics-filter-bar{display:grid;grid-template-columns:repeat(5,minmax(140px,1fr)) auto;gap:.8rem;align-items:end;padding:1rem;border:1px solid var(--border);border-radius:14px;background:var(--surface-soft,#f7f9fc);margin-bottom:1.2rem}.analytics-filter-bar label{font-size:.82rem;font-weight:700;color:var(--muted);display:grid;gap:.35rem}.analytics-filter-bar select{width:100%}.analytics-filter-bar button{height:42px}.analytics-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.analytics-card{border:1px solid var(--border);border-radius:16px;padding:1rem;background:var(--surface,#fff);min-width:0}.analytics-card-wide{grid-column:1/-1}.analytics-card-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;margin-bottom:.75rem}.analytics-card-head h3{margin:0 0 .2rem}.analytics-card-head p{margin:0}.chart-type-badge{white-space:nowrap;font-size:.72rem;font-weight:800;padding:.25rem .55rem;border-radius:999px;background:#eaf1ff;color:#174ea6}.chart-canvas-wrap{position:relative;min-height:280px}.chart-canvas-tall{min-height:360px}.chart-canvas-wrap canvas{display:block;width:100%;height:100%}.chart-empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--muted);font-weight:700;text-align:center}.chart-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.45rem .75rem;margin-top:.8rem}.chart-legend-item{display:flex;align-items:center;justify-content:space-between;gap:.65rem;font-size:.8rem}.chart-legend-label{display:flex;align-items:center;min-width:0;gap:.45rem}.chart-legend-label span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart-legend-dot{width:10px;height:10px;border-radius:3px;flex:0 0 auto}.chart-legend-value{font-weight:800;white-space:nowrap}@media(max-width:1100px){.analytics-filter-bar{grid-template-columns:repeat(3,minmax(150px,1fr))}.analytics-filter-bar button{width:100%}}@media(max-width:760px){.analytics-filter-bar{grid-template-columns:1fr}.analytics-grid{grid-template-columns:1fr}.analytics-card-wide{grid-column:auto}.chart-legend{grid-template-columns:1fr}.chart-canvas-wrap{min-height:250px}}

/* v5.8 Pending Review master-data selectors */
.approval-select-form label{display:flex;flex-direction:column;gap:6px;font-size:.76rem;color:#667085}
.approval-select-form select,.approval-select-form .new-master-value{width:100%;min-width:0}
.approval-select-form .new-master-value{margin-top:4px;border-color:#2563eb;background:#eff6ff}

.profile-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.profile-field{border:1px solid var(--border);border-radius:12px;padding:14px;background:var(--surface)}.profile-field>label:first-child{display:block}.profile-field input[type=text],.profile-field input[type=date],.profile-field textarea,.profile-field input[type=file]{width:100%;margin-top:6px}.report-toggle{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}@media(max-width:800px){.profile-fields{grid-template-columns:1fr}}

/* v6.2: native hidden must override the chart empty-state layout. */
.chart-empty[hidden]{display:none!important}
.analytics-actions{display:flex;gap:.5rem;align-items:center}.analytics-actions .button{height:42px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none}@media(max-width:1100px){.analytics-actions{width:100%}.analytics-actions>*{flex:1}}

/* v6.3 live analytics refresh */
.analytics-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.analytics-live-status{min-width:150px;color:var(--muted,#64748b);font-size:.88rem;font-weight:650}.analytics-workspace.analytics-loading .analytics-grid{opacity:.55;pointer-events:none}.analytics-workspace.analytics-loading{cursor:progress}.analytics-actions button[disabled]{opacity:.7;cursor:wait}
.pending-photo-panel{border:2px solid var(--accent,#2563eb);margin:1rem 0}.pending-photo-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.photo-capture-card{display:flex;flex-direction:column;gap:.55rem;border:1px dashed #94a3b8;border-radius:12px;padding:1rem;background:#f8fafc;cursor:pointer}.photo-capture-card input[type=file]{position:absolute;inline-size:1px;block-size:1px;opacity:0}.photo-capture-card img{width:100%;max-height:280px;object-fit:contain;border-radius:10px;background:#fff;border:1px solid #dbe3ef}.photo-upload-actions{grid-column:1/-1;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.pending-photo-review{display:grid;grid-template-columns:repeat(2,minmax(0,260px));gap:1rem;margin:1rem 0}.pending-photo-review>div{display:flex;flex-direction:column;gap:.45rem}.pending-photo-review img{width:100%;height:220px;object-fit:contain;background:#f8fafc;border:1px solid #dbe3ef;border-radius:10px}.photo-missing{height:120px;display:grid;place-items:center;border:1px dashed #94a3b8;border-radius:10px;color:#64748b;background:#f8fafc}.pending-review-action{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.6rem}@media(max-width:700px){.pending-photo-form,.pending-photo-review{grid-template-columns:1fr}}
/* v6.5.1 sequential camera workflow */
.photo-workflow-backdrop{position:fixed;inset:0;z-index:1200;background:rgba(15,23,42,.72);display:grid;place-items:center;padding:1rem}.photo-workflow-backdrop[hidden]{display:none}.photo-workflow-modal{width:min(640px,100%);max-height:94vh;overflow:auto;background:#fff;border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.32);padding:1.25rem}.photo-workflow-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;border-bottom:1px solid #e2e8f0;padding-bottom:1rem}.photo-step{text-align:center;padding:1.25rem 0}.photo-step[hidden]{display:none}.photo-step-number{width:42px;height:42px;border-radius:999px;display:grid;place-items:center;margin:0 auto .6rem;background:#e0e7ff;color:#3730a3;font-weight:800;font-size:1.1rem}.photo-step-actions{display:flex;justify-content:center;gap:.75rem;flex-wrap:wrap;margin:1rem 0}.photo-step>img{display:block;width:min(100%,420px);max-height:360px;object-fit:contain;margin:1rem auto 0;border:1px solid #cbd5e1;border-radius:12px;background:#f8fafc}.photo-final-previews{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:1rem 0}.photo-final-previews img{width:100%;height:230px;object-fit:contain;border:1px solid #cbd5e1;border-radius:12px;background:#f8fafc}.photo-workflow-status{text-align:center;margin:.5rem 0 0}.photo-capture-flash{animation:photoCaptureFlash .35s ease}@keyframes photoCaptureFlash{50%{opacity:.35}}@media(max-width:600px){.photo-workflow-modal{border-radius:14px;padding:1rem}.photo-final-previews{grid-template-columns:1fr}.photo-final-previews img{height:180px}.photo-step-actions button{width:100%}}

.cycle-type-banner{border:2px solid #dc2626;background:#fff5f5;border-radius:14px;padding:18px;text-align:center;display:grid;gap:6px}.cycle-type-banner span{color:#991b1b;font-size:.9rem;font-weight:700;letter-spacing:.08em}.cycle-type-banner strong{color:#dc2626;font-size:1.35rem}.cycle-type-banner em{font-style:normal;color:var(--muted)}.cycle-legend{display:grid;gap:10px;margin:16px 0}.cycle-legend div{display:flex;gap:12px;align-items:center}.cycle-legend b{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:#fee2e2;color:#991b1b}.cycle-legend span{color:var(--muted)}

/* v7.2 Galaxi enterprise theme and advanced dashboard */
.galaxi-theme{--bg:#071126;--bg-deep:#050b18;--surface:#0d1a35;--surface-2:#111f3f;--surface-soft:#142447;--border:#22345a;--text:#f4f7ff;--muted:#91a0bf;--accent:#6d4aff;--accent-2:#1f8fff;--success:#2bd887;--warning:#ffad32;--danger:#ff556f;--viz-series-1:#2f78ff;--viz-series-2:#6d4aff;--viz-series-3:#14b8a6;--viz-series-4:#23c875;--viz-series-5:#ff9f2d;--viz-series-6:#ef476f;background:radial-gradient(circle at 72% 8%,rgba(70,57,190,.16),transparent 28%),linear-gradient(135deg,#071126,#091733 60%,#071126);color:var(--text);min-height:100vh}.galaxi-layout{display:grid;grid-template-columns:265px minmax(0,1fr);min-height:100vh}.app-sidebar{position:fixed;inset:0 auto 0 0;width:265px;padding:18px 14px;background:linear-gradient(180deg,#08142c 0%,#0a1733 55%,#071126 100%);border-right:1px solid rgba(118,137,184,.18);z-index:70;display:flex;flex-direction:column;overflow-y:auto}.app-content-shell{grid-column:2;min-width:0}.galaxi-brand{display:flex;flex-direction:column;align-items:flex-start;text-decoration:none;padding:0 4px 20px;border-bottom:1px solid rgba(136,153,192,.16)}.galaxi-brand-logo{display:block;width:205px;height:76px;object-fit:contain;object-position:left center}.brand-subtitle{text-transform:uppercase;letter-spacing:.25em;color:#a8b3cb;font-size:.62rem;font-weight:700;margin:-16px 0 0 73px}.sidebar-navigation{display:grid;gap:7px;padding:18px 0}.sidebar-navigation .nav-item{display:flex;align-items:center;gap:12px;width:100%;min-height:46px;padding:0 13px;border:1px solid transparent;border-radius:11px;color:#d7def0;background:transparent;text-decoration:none;font-weight:650;font-size:.93rem;transition:.18s ease}.sidebar-navigation .nav-item svg{width:20px;height:20px;fill:currentColor;flex:0 0 auto}.sidebar-navigation .nav-item:hover{background:rgba(109,74,255,.12);color:white}.sidebar-navigation .nav-item.active,.sidebar-navigation .nav-dropdown.active>.nav-item{background:linear-gradient(135deg,rgba(109,74,255,.78),rgba(68,64,190,.6));border-color:rgba(164,140,255,.32);box-shadow:0 12px 28px rgba(63,44,168,.24);color:white}.sidebar-navigation .nav-chevron{margin-left:auto;width:17px}.nav-count{margin-left:auto;min-width:20px;height:20px;display:grid;place-items:center;border-radius:999px;background:var(--danger);color:white;font-size:.68rem}.nav-count:empty{display:none}.nav-dropdown{position:relative}.nav-dropdown-menu{position:static;margin:5px 4px 0;padding:7px;background:#0a1732;border:1px solid var(--border);border-radius:12px;box-shadow:none}.nav-dropdown-menu a{display:grid;gap:2px;color:#d8e0f2;text-decoration:none;padding:9px;border-radius:8px}.nav-dropdown-menu a:hover{background:#15264b}.nav-dropdown-menu small{color:var(--muted);font-size:.7rem}.sidebar-cycle-card{margin-top:auto;border:1px solid rgba(128,102,255,.38);background:linear-gradient(145deg,rgba(97,62,216,.17),rgba(17,30,63,.7));border-radius:14px;padding:14px;color:#fff}.sidebar-cycle-card>small{text-transform:uppercase;letter-spacing:.1em;color:#aab6d2;font-size:.66rem}.sidebar-cycle-card>div{display:flex;align-items:center;gap:10px;margin:12px 0 5px}.sidebar-cycle-card>div>strong{font-size:2.1rem;color:#ff5d65}.sidebar-cycle-card>div>span{font-size:.8rem;font-weight:750;line-height:1.25}.sidebar-cycle-card p{font-size:.71rem;color:#aebbd6;margin:0 0 12px}.sidebar-cycle-card footer{border-top:1px solid rgba(144,161,199,.17);padding-top:10px;display:flex;align-items:center;gap:6px;font-size:.72rem;color:#8fe2b6}.sidebar-cycle-card footer b{margin-left:auto;color:#bdc8df;font-size:.68rem}.status-dot{width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 9px var(--success)}.sidebar-version{color:#657493;font-size:.66rem;line-height:1.5;padding:14px 4px 0}.galaxi-topbar{height:78px;position:sticky;top:0;z-index:60;background:rgba(5,13,31,.9);backdrop-filter:blur(16px);border-bottom:1px solid rgba(119,138,182,.18);padding:0 26px;display:flex;align-items:center;gap:22px}.header-tools{display:flex;align-items:center;gap:16px;margin-left:auto}.header-eastern-clock{display:flex;align-items:center;gap:10px;padding:0 18px;border-left:1px solid rgba(135,151,187,.2);border-right:1px solid rgba(135,151,187,.2)}.header-eastern-clock svg{width:25px;height:25px;fill:#9b7cff}.clock-copy{display:grid}.clock-copy small,.clock-copy em{color:#8e9bb7;font-size:.68rem;font-style:normal}.clock-copy strong{font-size:1rem;color:#fff}.user-menu-button{background:#0c1832;border:1px solid transparent;color:#fff;display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:12px}.user-avatar{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#17a7d9,#6b4df5);font-weight:800}.user-copy{display:grid;text-align:left}.user-copy small{font-size:.68rem;color:#9eabc4}.user-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:220px;background:#0c1933;border:1px solid var(--border);border-radius:12px;padding:8px;box-shadow:0 22px 50px rgba(0,0,0,.38)}.user-menu a,.user-menu button{color:#e8edfa;background:transparent}.galaxi-theme #app-main{max-width:none;margin:0;padding:28px 30px 48px}.galaxi-theme .card,.galaxi-theme .scan-card,.galaxi-theme .metric-card{background:linear-gradient(145deg,rgba(15,29,59,.96),rgba(10,22,47,.96));border-color:var(--border);color:var(--text);box-shadow:0 15px 38px rgba(0,0,0,.12)}.galaxi-theme input,.galaxi-theme select,.galaxi-theme textarea{background:#0a1731;border-color:#2b3c63;color:#eef3ff}.galaxi-theme input::placeholder,.galaxi-theme textarea::placeholder{color:#7786a6}.galaxi-theme table{color:#e6ecfa}.galaxi-theme th{color:#99a8c6;background:#111f40}.galaxi-theme td{border-color:#22345a}.galaxi-theme a{color:#7eb1ff}.galaxi-theme .muted,.galaxi-theme .help{color:var(--muted)}.galaxi-theme button,.galaxi-theme .button{background:linear-gradient(135deg,#6d4aff,#245eea);color:#fff}.galaxi-theme .button.secondary{background:#162748;border:1px solid #33466e;color:#dae4fa}
.galaxi-dashboard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;margin-bottom:24px}.dashboard-title-wrap{display:flex;gap:16px;align-items:flex-start}.dashboard-title-icon{width:50px;height:50px;border-radius:13px;display:grid;place-items:center;background:linear-gradient(135deg,rgba(109,74,255,.35),rgba(32,97,235,.22));box-shadow:inset 0 0 0 1px rgba(156,132,255,.24)}.dashboard-title-icon svg{width:25px;fill:#9a7dff}.eyebrow{text-transform:uppercase;letter-spacing:.13em;color:#7da8ff;font-size:.69rem;font-weight:800}.galaxi-dashboard-head h1{font-size:2rem;margin:3px 0 5px}.galaxi-dashboard-head p{color:var(--muted);margin:0}.dashboard-head-controls{display:flex;gap:12px}.dashboard-control{min-width:210px;padding:13px 15px;border:1px solid var(--border);border-radius:12px;background:linear-gradient(145deg,#101e3d,#0b1832);display:grid;gap:4px}.dashboard-control small{color:#8e9bb8}.dashboard-control strong{font-size:.95rem}.dashboard-control span{font-size:.7rem;color:#92a0bd}.count-type-control strong{display:flex;align-items:center;gap:9px}.count-type-control strong b{font-size:1.9rem;color:#ff575f}.galaxi-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;margin-bottom:18px}.galaxi-kpi{min-height:133px;display:flex;align-items:flex-start;gap:13px;padding:18px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(145deg,#101e3d,#0b1730);color:var(--text);text-decoration:none;box-shadow:0 16px 38px rgba(0,0,0,.12)}.galaxi-kpi>div{display:grid;gap:6px;min-width:0}.galaxi-kpi small{color:#9ba8c3}.galaxi-kpi strong{font-size:1.75rem;color:#fff;line-height:1.1}.galaxi-kpi span:last-child{color:#8f9db9;font-size:.75rem}.galaxi-kpi.positive strong{color:#2ade88}.galaxi-kpi.negative strong{color:#ff667b}.kpi-icon{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:1.25rem;font-weight:900;flex:0 0 auto}.kpi-icon.purple{background:rgba(116,78,255,.18);color:#a689ff}.kpi-icon.blue{background:rgba(31,143,255,.16);color:#5faaff}.kpi-icon.green{background:rgba(38,207,126,.16);color:#37dc91}.kpi-icon.teal{background:rgba(20,184,166,.16);color:#2ad6c3}.kpi-icon.amber{background:rgba(255,173,50,.17);color:#ffb84b}.galaxi-dashboard-grid{display:grid;gap:14px;margin-bottom:18px}.primary-grid{grid-template-columns:1.65fr .95fr 1.15fr}.secondary-grid{grid-template-columns:.85fr 1.05fr 1.2fr}.galaxi-panel{background:linear-gradient(145deg,rgba(14,28,57,.97),rgba(9,20,44,.97));border:1px solid var(--border);border-radius:14px;padding:17px;min-width:0;box-shadow:0 18px 45px rgba(0,0,0,.12)}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:13px}.panel-head h2,.panel-head h3{margin:0 0 4px;font-size:1.02rem}.panel-head p{margin:0;color:var(--muted);font-size:.76rem}.panel-head>a{font-size:.72rem;text-decoration:none}.panel-chip{padding:4px 9px;border-radius:999px;background:#17284e;color:#91b9ff;font-size:.67rem}.compact-period-filter label{font-size:.66rem;color:var(--muted)}.compact-period-filter select{padding:6px 28px 6px 9px;font-size:.72rem}.dashboard-trend-canvas{min-height:295px}.dashboard-donut-canvas{min-height:230px}.dashboard-legend{grid-template-columns:1fr;margin-top:5px;max-height:125px;overflow:auto}.location-progress-list{display:grid;gap:11px}.location-progress-row{display:grid;grid-template-columns:1fr auto;gap:6px 12px;color:inherit!important;text-decoration:none;padding:7px 0;border-bottom:1px solid rgba(117,139,182,.12)}.location-progress-row:last-child{border-bottom:0}.location-progress-copy{display:grid;gap:2px}.location-progress-copy strong{font-size:.78rem}.location-progress-copy span{font-size:.66rem;color:var(--muted)}.progress-value{display:flex;align-items:center;gap:7px}.progress-value b{font-size:.76rem}.status-badge{font-size:.61rem;padding:3px 7px;border-radius:999px;background:#172745;color:#a8b5ce}.status-badge.open{color:#43dc90;background:rgba(38,210,127,.11)}.status-badge.closed{color:#73aaff;background:rgba(49,127,255,.12)}.status-badge.review{color:#ffbd50;background:rgba(255,174,44,.12)}.status-badge.not_started{color:#ff697d;background:rgba(255,85,111,.1)}.progress-track{grid-column:1/-1;height:5px;background:#1c2b4d;border-radius:999px;overflow:hidden}.progress-track i{display:block;height:100%;background:linear-gradient(90deg,#6c4cff,#1e91ff);border-radius:inherit}.advanced-analytics{margin-bottom:18px}.advanced-analytics .analytics-filter-bar{background:#0b1832;border-color:#293a60}.advanced-analytics .analytics-ranking-wrap{border-top:1px solid var(--border);padding-top:16px}.schedule-list,.data-list,.activity-list{display:grid}.schedule-row{display:flex;align-items:center;gap:11px;padding:10px;border:1px solid #24365d;border-radius:10px;margin-bottom:8px;background:#0b1832}.schedule-row.active{border-color:#5650d6;background:rgba(92,66,217,.14)}.schedule-row>b{width:31px;height:31px;border-radius:8px;display:grid;place-items:center;background:#153d33;color:#47d995}.schedule-row b.type-b{background:#292052;color:#a98aff}.schedule-row b.type-c{background:#4b3213;color:#ffb64c}.schedule-row>span{display:grid;flex:1}.schedule-row strong{font-size:.76rem}.schedule-row small{color:var(--muted);font-size:.66rem}.schedule-row em{font-style:normal;color:#7383a4}.data-list-head,.data-list-row{display:grid;grid-template-columns:1fr 80px 45px;gap:9px;align-items:center;padding:8px 0;border-bottom:1px solid rgba(117,139,182,.13)}.data-list-head{font-size:.62rem;text-transform:uppercase;color:#8290ad}.data-list-row>span{display:grid;min-width:0}.data-list-row strong{font-size:.7rem}.data-list-row small{font-size:.65rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.data-list-row b{font-size:.73rem;text-align:right}.data-list-row em{font-size:.72rem;text-align:right;font-style:normal}.activity-panel .panel-head>strong{font-size:1.4rem}.activity-panel .panel-head>strong small{font-size:.65rem;color:var(--muted)}.activity-list>div{display:grid;grid-template-columns:9px 1fr auto;gap:8px;align-items:start;padding:7px 0;border-bottom:1px solid rgba(117,139,182,.12)}.activity-dot{width:7px;height:7px;border-radius:50%;background:#a457ff;margin-top:5px;box-shadow:0 0 9px #a457ff}.activity-list p{display:grid;margin:0}.activity-list strong{font-size:.72rem}.activity-list small,.activity-list time{font-size:.62rem;color:var(--muted)}.panel-empty{color:var(--muted);font-size:.76rem}.category-detail-panel{margin-bottom:0}.galaxi-theme .table-wrap{border:1px solid #22345a;border-radius:10px}.galaxi-theme .insights-table thead th{background:#101f41}.text-positive{color:#34dc8b!important}.text-negative{color:#ff697d!important}.galaxi-login-header{background:#071329;padding:12px 5vw;height:90px}.galaxi-login-header .galaxi-brand-logo{height:70px}
@media(max-width:1380px){.galaxi-kpi-grid{grid-template-columns:repeat(3,1fr)}.primary-grid{grid-template-columns:1.4fr 1fr}.location-panel{grid-column:1/-1}.secondary-grid{grid-template-columns:repeat(2,1fr)}.activity-panel{grid-column:1/-1}}
@media(max-width:1050px){.galaxi-layout{display:block}.app-sidebar{transform:translateX(-100%);transition:.2s ease}.app-sidebar.open{transform:translateX(0)}.app-content-shell{margin-left:0}.galaxi-topbar{padding:0 16px}.mobile-menu-button{display:flex}.galaxi-dashboard-head{flex-direction:column}.dashboard-head-controls{width:100%}.dashboard-control{flex:1}.primary-grid,.secondary-grid{grid-template-columns:1fr}.composition-panel,.location-panel,.activity-panel{grid-column:auto}.galaxi-kpi-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){.galaxi-theme #app-main{padding:20px 14px 38px}.header-eastern-clock{display:none}.galaxi-dashboard-head h1{font-size:1.55rem}.dashboard-title-icon{display:none}.dashboard-head-controls{flex-direction:column}.galaxi-kpi-grid{grid-template-columns:1fr}.galaxi-kpi{min-height:105px}.analytics-filter-bar{grid-template-columns:1fr!important}.user-copy{display:none}.galaxi-topbar{height:66px}.primary-grid,.secondary-grid{gap:11px}.galaxi-panel{padding:14px}}


/* ============================================================================
   v7.3 Galaxi light-canvas theme

   The shell (sidebar + top bar) stays dark navy; the working surface becomes
   light. Tokens are re-scoped on #app-main rather than redefined globally, so
   the dark chrome keeps the .galaxi-theme values it already had and only the
   content region flips. Everything below is additive: no v7.2 rule is edited,
   which keeps the change reversible by deleting this block.
   ========================================================================= */

/* Chart canvases read their palette from :root via getComputedStyle on
   document.documentElement, so the visualisation tokens must live here to
   reach them. They are tuned for the light working surface. */
:root{
  --viz-series-1:#5b3df5;
  --viz-series-2:#2f7df4;
  --viz-series-3:#16b981;
  --viz-series-4:#f5a524;
  --viz-series-5:#ef4444;
  --viz-series-6:#14b8a6;
  --accent:#5b3df5;
  --text:#101828;
  --muted:#667085;
  --border:#e6e8f0;
}

/* --- canvas ------------------------------------------------------------- */
.galaxi-theme{
  background:#f6f7fb;
}

.galaxi-theme #app-main{
  --surface:#ffffff;
  --surface-2:#fbfbfe;
  --surface-soft:#f2f3f9;
  --border:#e8eaf2;
  --text:#101828;
  --muted:#667085;
  --accent:#5b3df5;
  --accent-2:#2f7df4;
  --success:#16b981;
  --warning:#f5a524;
  --danger:#ef4444;
  background:#f6f7fb;
  color:var(--text);
}

/* --- generic surfaces --------------------------------------------------- */
.galaxi-theme #app-main .card,
.galaxi-theme #app-main .scan-card,
.galaxi-theme #app-main .metric-card,
.galaxi-theme #app-main .galaxi-panel{
  background:#fff;
  border:1px solid var(--border);
  color:var(--text);
  border-radius:14px;
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.04);
}

.galaxi-theme #app-main h1,
.galaxi-theme #app-main h2,
.galaxi-theme #app-main h3,
.galaxi-theme #app-main strong,
.galaxi-theme #app-main b{color:var(--text)}

.galaxi-theme #app-main .panel-head p,
.galaxi-theme #app-main .muted,
.galaxi-theme #app-main .help{color:var(--muted)}

.galaxi-theme #app-main a{color:var(--accent)}
.galaxi-theme #app-main .panel-head>a{font-weight:600}

/* --- form controls ------------------------------------------------------ */
.galaxi-theme #app-main input,
.galaxi-theme #app-main select,
.galaxi-theme #app-main textarea{
  background:#fff;
  border:1px solid #dfe2ec;
  color:var(--text);
}
.galaxi-theme #app-main input::placeholder,
.galaxi-theme #app-main textarea::placeholder{color:#98a2b3}
.galaxi-theme #app-main input:focus,
.galaxi-theme #app-main select:focus,
.galaxi-theme #app-main textarea:focus{
  outline:2px solid rgba(91,61,245,.35);
  outline-offset:1px;
  border-color:var(--accent);
}

.galaxi-theme #app-main button,
.galaxi-theme #app-main .button{background:var(--accent);color:#fff;border:1px solid transparent}
.galaxi-theme #app-main .button.secondary,
.galaxi-theme #app-main button.secondary{
  background:#fff;color:var(--text);border:1px solid #dfe2ec;
}

/* --- page header -------------------------------------------------------- */
.galaxi-theme #app-main .dashboard-title-icon{
  background:#efe9ff;
  box-shadow:inset 0 0 0 1px #ded2ff;
}
.galaxi-theme #app-main .dashboard-title-icon svg{fill:var(--accent)}

.galaxi-theme #app-main .dashboard-control{
  background:#fff;
  border:1px solid var(--border);
  box-shadow:0 1px 2px rgba(16,24,40,.04);
}
.galaxi-theme #app-main .dashboard-control small{color:var(--muted)}
.galaxi-theme #app-main .dashboard-control span{color:var(--muted)}

/* --- KPI row ------------------------------------------------------------ */
.galaxi-theme #app-main .galaxi-kpi{
  background:#fff;
  border:1px solid var(--border);
  color:var(--text);
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.04);
}
.galaxi-theme #app-main .galaxi-kpi small{color:var(--muted)}
.galaxi-theme #app-main .galaxi-kpi strong{color:var(--text)}
.galaxi-theme #app-main .galaxi-kpi span:last-child{color:var(--muted)}
.galaxi-theme #app-main .galaxi-kpi.positive strong{color:#0f9d68}
.galaxi-theme #app-main .galaxi-kpi.negative strong{color:#d92d20}
.galaxi-theme #app-main .galaxi-kpi:hover{border-color:#d6d9e6}

/* Rounded tiles rather than circles, matching the header icon treatment. */
.galaxi-theme #app-main .kpi-icon{border-radius:12px}
.galaxi-theme #app-main .kpi-icon.purple{background:#efe9ff;color:#5b3df5}
.galaxi-theme #app-main .kpi-icon.blue{background:#e6f0ff;color:#2f7df4}
.galaxi-theme #app-main .kpi-icon.green{background:#e3f9f0;color:#0f9d68}
.galaxi-theme #app-main .kpi-icon.teal{background:#e0f7f5;color:#0e9a8d}
.galaxi-theme #app-main .kpi-icon.amber{background:#fef3e0;color:#d98207}

/* --- progress and status ------------------------------------------------ */
.galaxi-theme #app-main .progress-track{background:#eef0f6}
.galaxi-theme #app-main .progress-track i{background:linear-gradient(90deg,#5b3df5,#2f7df4)}
.galaxi-theme #app-main .location-progress-row{border-bottom-color:var(--border)}
.galaxi-theme #app-main .location-progress-copy span{color:var(--muted)}

.galaxi-theme #app-main .status-badge{background:#f2f4f7;color:#475467;font-weight:600}
.galaxi-theme #app-main .status-badge.open{background:#e3f9f0;color:#0f9d68}
.galaxi-theme #app-main .status-badge.closed{background:#e6f0ff;color:#175cd3}
.galaxi-theme #app-main .status-badge.review{background:#fef3e0;color:#b54708}
.galaxi-theme #app-main .status-badge.not_started{background:#fdeced;color:#c01c28}

/* --- schedule, data and activity lists ---------------------------------- */
.galaxi-theme #app-main .schedule-row{
  background:#fff;
  border:1px solid var(--border);
}
.galaxi-theme #app-main .schedule-row.active{
  border-color:#c3b5fd;
  background:#f7f4ff;
}
.galaxi-theme #app-main .schedule-row>b{background:#e3f9f0;color:#0f9d68}
.galaxi-theme #app-main .schedule-row b.type-b{background:#efe9ff;color:#5b3df5}
.galaxi-theme #app-main .schedule-row b.type-c{background:#fef3e0;color:#b54708}
.galaxi-theme #app-main .schedule-row small{color:var(--muted)}
.galaxi-theme #app-main .schedule-row em{color:var(--muted)}

.galaxi-theme #app-main .data-list-head,
.galaxi-theme #app-main .data-list-row{border-bottom:1px solid var(--border)}
.galaxi-theme #app-main .data-list-head{color:var(--muted);font-weight:600;letter-spacing:.04em}
.galaxi-theme #app-main .data-list-row small{color:var(--muted)}

.galaxi-theme #app-main .activity-list>div{border-bottom:1px solid var(--border)}
.galaxi-theme #app-main .activity-dot{background:var(--accent);box-shadow:none}
.galaxi-theme #app-main .activity-list small,
.galaxi-theme #app-main .activity-list time{color:var(--muted)}
.galaxi-theme #app-main .panel-empty{color:var(--muted)}

/* --- tables ------------------------------------------------------------- */
.galaxi-theme #app-main table{color:var(--text)}
.galaxi-theme #app-main th{
  color:var(--muted);
  border-bottom:1px solid var(--border);
  font-weight:600;
}
.galaxi-theme #app-main td{border-bottom:1px solid var(--border)}
.galaxi-theme #app-main tbody tr:hover td{background:#fafbff}
.galaxi-theme #app-main .table-wrap{border:1px solid var(--border);background:#fff}
.galaxi-theme #app-main .insights-table thead th{background:#f8f9fc}

/* --- analytics ---------------------------------------------------------- */
.galaxi-theme #app-main .advanced-analytics .analytics-filter-bar,
.galaxi-theme #app-main .advanced-analytics .analytics-ranking-wrap,
.galaxi-theme #app-main .category-detail-panel{
  background:#fff;
  border:1px solid var(--border);
}
.galaxi-theme #app-main .panel-chip{background:#f2f4f7;color:#475467}
.galaxi-theme #app-main .dashboard-legend{color:var(--text)}
.galaxi-theme #app-main .text-positive{color:#0f9d68}
.galaxi-theme #app-main .text-negative{color:#d92d20}

/* --- shell refinements to match the light canvas ------------------------ */
.galaxi-theme .galaxi-topbar{
  background:#0b1430;
  border-bottom:1px solid rgba(119,138,182,.16);
}
.galaxi-theme .app-sidebar{border-right:1px solid rgba(118,137,184,.14)}

@media(prefers-reduced-motion:reduce){
  .galaxi-theme #app-main *{transition:none!important;animation:none!important}
}

/* --- corrections surfaced by the light canvas ---------------------------- */

/* `.galaxi-theme button` (0,0,1,1) outranks `.user-menu-button` (0,0,1,0), so
   the chrome buttons in the top bar were being painted with the primary
   gradient. Re-assert them with enough specificity to win. */
.galaxi-theme .galaxi-topbar .user-menu-button{
  background:#0c1832;
  color:#fff;
}
.galaxi-theme .galaxi-topbar .user-menu-button:hover,
.galaxi-theme .galaxi-topbar .user-menu-button[aria-expanded="true"]{
  background:#132347;
  border-color:rgba(255,255,255,.14);
}
.galaxi-theme .galaxi-topbar .mobile-menu-button{background:transparent}
.galaxi-theme .user-menu a,
.galaxi-theme .user-menu button{
  background:transparent;
  color:#e8edfa;
}
.galaxi-theme .user-menu a:hover,
.galaxi-theme .user-menu button:hover{background:rgba(255,255,255,.07)}

/* Long currency values (monthly change) overflowed the fixed-width KPI card. */
.galaxi-theme #app-main .galaxi-kpi strong{
  font-size:clamp(1.2rem,1.45vw,1.7rem);
  overflow-wrap:anywhere;
  letter-spacing:-.01em;
}
.galaxi-theme #app-main .galaxi-kpi small,
.galaxi-theme #app-main .galaxi-kpi span:last-child{overflow-wrap:anywhere}

/* Currency figures must not break mid-number; scale the type instead. */
.galaxi-theme #app-main .galaxi-kpi strong{
  font-size:clamp(1.05rem,1.28vw,1.55rem);
  white-space:nowrap;
  overflow-wrap:normal;
}
.galaxi-theme #app-main .galaxi-kpi small{font-size:.76rem;line-height:1.3}

/* `.galaxi-theme th` also sets a dark background, which the earlier rule left
   in place because it only reset the text colour. */
.galaxi-theme #app-main th{background:#f8f9fc}
.galaxi-theme #app-main thead th{background:#f8f9fc}
.galaxi-theme #app-main .table-wrap thead th{background:#f8f9fc}

/* At the 650px breakpoint the menu button switches to display:flex without a
   direction, which laid the three 2px bars out in a row and collapsed them to
   nothing. Stack them again. */
.galaxi-theme .mobile-menu-button{
  flex-direction:column;
  justify-content:center;
}
.galaxi-theme .mobile-menu-button span{
  width:100%;
  flex:0 0 2px;
}

/* --- brand lockup ------------------------------------------------------- */

/* The logo is a stacked lockup (swirl above a full-width GALAXI wordmark) at
   532x306. The v7.2 rule constrained it to 205x76 with object-fit:contain, so
   the height won and the artwork rendered ~132px wide, pinned left inside a
   205px box - while the subtitle was pushed right by a hard 73px margin.
   Nothing lined up. Size by width instead and centre the column. */
.galaxi-theme .app-sidebar .galaxi-brand{
  align-items:center;
  gap:4px;
  padding:2px 4px 18px;
}
.galaxi-theme .app-sidebar .galaxi-brand-logo{
  width:100%;
  max-width:184px;
  height:auto;
  object-fit:contain;
  object-position:center;
}
.galaxi-theme .app-sidebar .brand-subtitle{
  margin:-6px 0 0;
  align-self:stretch;
  text-align:center;
  /* letter-spacing adds a trailing gap after the final letter, which drags the
     text visually left of centre; indent by the same amount to correct it. */
  text-indent:.25em;
}

/* The sign-in header uses the same lockup. Its bar is 90px tall with 12px of
   padding, leaving 66px; the stacked mark plus subtitle must fit inside that
   or the subtitle clips at the bottom edge. */
.galaxi-theme .galaxi-login-header .galaxi-brand{
  align-items:center;
  gap:3px;
  padding:0;
  border-bottom:0;
}
.galaxi-theme .galaxi-login-header .galaxi-brand-logo{
  width:auto;
  height:58px;
  object-position:center;
}
/* Tightened so the subtitle is no wider than the wordmark above it - at the
   sidebar's tracking it would overhang the smaller sign-in mark on both sides. */
.galaxi-theme .galaxi-login-header .brand-subtitle{
  margin:-2px 0 0;
  align-self:stretch;
  text-align:center;
  font-size:.52rem;
  letter-spacing:.16em;
  text-indent:.16em;
}

/* ============================================================================
   Deployment & HTTPS page
   The markup used .panel, .panel-heading, .page-heading, .form-check,
   .command-block, .data-table and .stack-lg, none of which had any CSS, so the
   sections rendered as unstyled blocks with oversized native checkboxes.
   ========================================================================= */

.galaxi-theme #app-main .page-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  margin-bottom:18px;
}
.galaxi-theme #app-main .page-heading h1{margin:2px 0 6px;font-size:1.7rem}
.galaxi-theme #app-main .page-heading p{margin:0;color:var(--muted);max-width:72ch}
.galaxi-theme #app-main .page-heading .eyebrow{margin:0}

.galaxi-theme #app-main .panel{
  background:#fff;
  border:1px solid var(--border);
  border-radius:14px;
  padding:20px;
  margin-bottom:16px;
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.04);
}
.galaxi-theme #app-main .panel-heading{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  margin-bottom:16px;
}
.galaxi-theme #app-main .panel-heading h2{margin:0 0 4px;font-size:1.05rem}
.galaxi-theme #app-main .panel-heading p{margin:0;color:var(--muted);font-size:.8rem;max-width:70ch}

.galaxi-theme #app-main .stack-lg{display:block}

/* Status badges: the page uses success/warning/danger, which only had the
   count-session variants defined. */
.galaxi-theme #app-main .status-badge.success{background:#e3f9f0;color:#0f9d68}
.galaxi-theme #app-main .status-badge.warning{background:#fef3e0;color:#b54708}
.galaxi-theme #app-main .status-badge.danger{background:#fdeced;color:#c01c28}
.galaxi-theme #app-main .page-heading .status-badge,
.galaxi-theme #app-main .panel-heading .status-badge{
  font-size:.72rem;
  padding:6px 12px;
  white-space:nowrap;
  flex:0 0 auto;
}

/* Long values (URLs, timestamps) were overflowing the metric cards. */
.galaxi-theme #app-main .metric-card{
  background:#fff;
  border:1px solid var(--border);
  border-radius:12px;
  padding:14px 16px;
  min-width:0;
}
.galaxi-theme #app-main .metric-card span{
  display:block;
  color:var(--muted);
  font-size:.72rem;
  margin-bottom:5px;
}
.galaxi-theme #app-main .metric-card strong{
  display:block;
  font-size:.95rem;
  line-height:1.35;
  overflow-wrap:anywhere;
}

/* Security posture checklist */
.galaxi-theme #app-main .posture-list{display:grid;gap:0}
.galaxi-theme #app-main .posture-row{
  display:grid;
  grid-template-columns:22px minmax(0,1fr) auto;
  gap:12px;
  align-items:start;
  padding:12px 0;
  border-bottom:1px solid var(--border);
}
.galaxi-theme #app-main .posture-row:last-child{border-bottom:0}
.galaxi-theme #app-main .posture-mark{
  width:22px;height:22px;border-radius:50%;
  display:grid;place-items:center;
  font-size:.72rem;font-weight:800;
}
.galaxi-theme #app-main .posture-row.pass .posture-mark{background:#e3f9f0;color:#0f9d68}
.galaxi-theme #app-main .posture-row.warn .posture-mark{background:#fef3e0;color:#b54708}
.galaxi-theme #app-main .posture-row.fail .posture-mark{background:#fdeced;color:#c01c28}
.galaxi-theme #app-main .posture-copy strong{display:block;font-size:.85rem}
.galaxi-theme #app-main .posture-copy span{display:block;color:var(--muted);font-size:.76rem;margin-top:2px}
.galaxi-theme #app-main .posture-state{
  font-size:.62rem;text-transform:uppercase;letter-spacing:.06em;
  font-weight:700;padding:4px 9px;border-radius:999px;white-space:nowrap;
}
.galaxi-theme #app-main .posture-row.pass .posture-state{background:#e3f9f0;color:#0f9d68}
.galaxi-theme #app-main .posture-row.warn .posture-state{background:#fef3e0;color:#b54708}
.galaxi-theme #app-main .posture-row.fail .posture-state{background:#fdeced;color:#c01c28}

/* Toggle rows: the native checkbox was rendering at heading size with the
   label wrapping onto its own line. */
.galaxi-theme #app-main .form-check{
  display:flex;
  align-items:flex-start;
  gap:11px;
  padding:13px 15px;
  border:1px solid var(--border);
  border-radius:11px;
  background:#fbfbfe;
  margin:0 0 10px;
  cursor:pointer;
}
.galaxi-theme #app-main .form-check:hover{border-color:#cfd4e4;background:#f7f8fd}
.galaxi-theme #app-main .form-check-input{
  width:18px;height:18px;
  flex:0 0 18px;
  margin:1px 0 0;
  accent-color:var(--accent);
  cursor:pointer;
}
.galaxi-theme #app-main .form-check-label{
  display:block;
  font-size:.85rem;
  font-weight:600;
  line-height:1.35;
}
.galaxi-theme #app-main .form-check-label small{
  display:block;
  font-weight:400;
  color:var(--muted);
  font-size:.76rem;
  margin-top:3px;
}
.galaxi-theme #app-main .toggle-grid{display:grid;gap:0}

/* Copyable host commands */
.galaxi-theme #app-main .command-block{
  background:#0d1730;
  color:#dbe4ff;
  border:1px solid #1d2a4d;
  border-radius:11px;
  padding:15px 17px;
  margin:0;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:.78rem;
  line-height:1.75;
  overflow-x:auto;
  white-space:pre;
}
.galaxi-theme #app-main .command-block .cmd-comment{color:#7f8db0}

.galaxi-theme #app-main .data-table{width:100%;border-collapse:collapse}
.galaxi-theme #app-main .data-table th,
.galaxi-theme #app-main .data-table td{
  text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);font-size:.8rem;
}
.galaxi-theme #app-main .data-table th{
  color:var(--muted);font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;background:#f8f9fc;
}

.galaxi-theme #app-main .notice{
  border-radius:11px;padding:13px 16px;margin:0 0 16px;font-size:.83rem;
  border:1px solid var(--border);background:#f8f9fc;color:var(--text);
}
.galaxi-theme #app-main .notice.success{background:#e3f9f0;border-color:#b6ecd5;color:#0b6d4a}
.galaxi-theme #app-main .notice.warning{background:#fef3e0;border-color:#f6dcb0;color:#8a5406}
.galaxi-theme #app-main .notice.danger{background:#fdeced;border-color:#f5c6cb;color:#96151f}

.galaxi-theme #app-main .actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 18px}

/* Certificate expiry meter */
.galaxi-theme #app-main .cert-meter{
  height:6px;border-radius:999px;background:#eef0f6;overflow:hidden;margin-top:10px;
}
.galaxi-theme #app-main .cert-meter i{display:block;height:100%;border-radius:inherit;background:#16b981}
.galaxi-theme #app-main .cert-meter.warn i{background:#f5a524}
.galaxi-theme #app-main .cert-meter.fail i{background:#ef4444}

@media(max-width:760px){
  .galaxi-theme #app-main .page-heading,
  .galaxi-theme #app-main .panel-heading{flex-direction:column;align-items:stretch}
  .galaxi-theme #app-main .posture-row{grid-template-columns:22px minmax(0,1fr);row-gap:6px}
  .galaxi-theme #app-main .posture-state{grid-column:2;justify-self:start}
}

/* `.metric-card{min-height:154px}` was sized for the old large-number cards;
   these hold short status strings, so it left most of each card empty. */
.galaxi-theme #app-main .metric-card{
  min-height:0;
  align-content:start;
}
.galaxi-theme #app-main .metric-grid{
  grid-template-columns:repeat(auto-fit,minmax(190px,1fr));
  gap:12px;
  margin:0;
}
.galaxi-theme #app-main .panel .metric-grid{margin:0}

/* With the global search removed, .header-tools and .mobile-menu-button both
   carried margin-left:auto, so the free space was split between them and the
   user avatar floated to the middle of the bar. One auto margin is enough:
   it pushes the whole group to the right edge. */
@media(max-width:1050px){
  .galaxi-theme .galaxi-topbar .mobile-menu-button{margin-left:0}
  .galaxi-theme .galaxi-topbar .header-tools{margin-left:auto}
}

/* ============================================================================
   Insights and Reports: sidebar groups, tiles, filter bars, wide tables
   ========================================================================= */

.app-sidebar .nav-group{margin:2px 0}
.app-sidebar .nav-group-toggle{
  width:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  padding:9px 12px;
  background:transparent;
  border:0;
  border-radius:9px;
  color:#8e9bba;
  font-size:.66rem;
  font-weight:800;
  letter-spacing:.12em;
  text-transform:uppercase;
  cursor:pointer;
}
.app-sidebar .nav-group-toggle:hover{background:rgba(255,255,255,.05);color:#c3cde3}
.app-sidebar .nav-group-toggle .nav-chevron{
  width:16px;height:16px;fill:currentColor;
  transition:transform .16s ease;
}
.app-sidebar .nav-group.open .nav-group-toggle .nav-chevron{transform:rotate(180deg)}
.app-sidebar .nav-group-items{display:none;padding:2px 0 6px}
.app-sidebar .nav-group.open .nav-group-items{display:grid;gap:1px}
.app-sidebar .nav-subitem{
  display:block;
  padding:8px 12px 8px 26px;
  border-radius:8px;
  color:#c2cbe0;
  text-decoration:none;
  font-size:.82rem;
  line-height:1.3;
}
.app-sidebar .nav-subitem:hover{background:rgba(255,255,255,.06);color:#fff}
.app-sidebar .nav-subitem.active{
  background:linear-gradient(135deg,#5b3df5,#3f2fd0);
  color:#fff;
  font-weight:600;
}

/* Landing tiles */
.galaxi-theme #app-main .tile-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(268px,1fr));
  gap:14px;
}
.galaxi-theme #app-main .nav-tile{
  display:grid;
  gap:6px;
  align-content:start;
  padding:18px 20px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:14px;
  text-decoration:none;
  color:var(--text);
  box-shadow:0 1px 2px rgba(16,24,40,.04),0 8px 24px rgba(16,24,40,.04);
  transition:border-color .16s,transform .16s;
}
.galaxi-theme #app-main .nav-tile:hover{border-color:#c6c9dc;transform:translateY(-2px)}
.galaxi-theme #app-main .nav-tile strong{font-size:1rem}
.galaxi-theme #app-main .nav-tile span{color:var(--muted);font-size:.82rem;line-height:1.45}
.galaxi-theme #app-main .nav-tile em{
  font-style:normal;color:var(--accent);font-size:.78rem;font-weight:600;margin-top:4px;
}

/* Filter bar shared by reports and insights */
.galaxi-theme #app-main .filter-bar{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  gap:12px;
  padding:14px 16px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:12px;
  margin-bottom:16px;
}
.galaxi-theme #app-main .filter-bar label{display:grid;gap:5px;min-width:170px}
.galaxi-theme #app-main .filter-bar label span{
  font-size:.7rem;color:var(--muted);font-weight:600;
}
.galaxi-theme #app-main .filter-bar select{height:40px}
.galaxi-theme #app-main .filter-bar .button{height:40px;display:inline-flex;align-items:center}

/* Report tables can be much wider than the viewport. */
.galaxi-theme #app-main .table-scroll{overflow-x:auto;margin:0 -4px}
.galaxi-theme #app-main .table-scroll .data-table{min-width:100%}
.galaxi-theme #app-main .data-table td.num,
.galaxi-theme #app-main .data-table th.num{text-align:right;white-space:nowrap}
.galaxi-theme #app-main .data-table tbody tr:hover td{background:#fafbff}
.galaxi-theme #app-main .data-table tfoot td{
  font-weight:700;border-top:2px solid var(--border);background:#f8f9fc;
}
.galaxi-theme #app-main .report-note{
  margin:0 0 14px;color:var(--muted);font-size:.8rem;
}
.galaxi-theme #app-main .page-heading .eyebrow a{text-decoration:none}

/* ============================================================================
   Count status pills

   Closed and Missed are both "not open", but they mean opposite things: one
   was worked and finished, the other expired with nothing scanned. Colour has
   to carry that difference, so Closed is neutral grey and Missed is red.
   ========================================================================= */
.galaxi-theme #app-main .status-badge.open{background:#e3f9f0;color:#0f9d68}
.galaxi-theme #app-main .status-badge.closed{background:#eef0f4;color:#4b5563}
.galaxi-theme #app-main .status-badge.review{background:#fef3e0;color:#b54708}
.galaxi-theme #app-main .status-badge.missed{background:#fdeced;color:#c01c28}
.galaxi-theme #app-main .data-table .status-badge{
  display:inline-block;
  font-size:.66rem;
  font-weight:700;
  padding:4px 10px;
  border-radius:999px;
  white-space:nowrap;
}

/* ============================================================================
   Sidebar alignment

   Nav labels sit at 45px (13px padding + 20px icon + 12px gap). The group
   headings and their sub-items were starting at 12px and 26px, so nothing in
   the sidebar lined up. They are indented to the same 45px here.

   The headings also inherited `box-shadow` from the global `button,.button`
   rule, which made them read as raised cards rather than section labels.
   ========================================================================= */
.app-sidebar .nav-group-toggle{
  padding:10px 13px 10px 46px;
  box-shadow:none;
  border:0;
  min-height:38px;
}
.app-sidebar .nav-group-toggle:hover{box-shadow:none}
.app-sidebar .nav-subitem{
  padding:9px 13px 9px 46px;
}
.app-sidebar .nav-group + .nav-group{margin-top:0}
.app-sidebar .nav-group-items{padding-bottom:4px}

/* ============================================================================
   Sidebar groups, final treatment

   Aligning every label to one indent removed the hierarchy — twenty entries
   read as a single flat list. Sub-items now carry their own icons in the same
   column as the top-level ones, so alignment and structure both hold: the icon
   column does the aligning, and weight, size and colour do the ranking.
   ========================================================================= */

.app-sidebar .nav-group{
  margin:6px 0 2px;
  padding-top:6px;
  border-top:1px solid rgba(136,153,192,.12);
}
.app-sidebar .nav-group:first-of-type{border-top:0}

.app-sidebar .nav-group-toggle{
  padding:6px 13px 6px 13px;
  min-height:30px;
  color:#7c8aab;
  font-size:.63rem;
  letter-spacing:.14em;
}
.app-sidebar .nav-group-toggle:hover{background:transparent;color:#a9b6d2}
.app-sidebar .nav-group-toggle .nav-chevron{width:14px;height:14px;opacity:.7}

.app-sidebar .nav-group-items{padding:2px 0 4px}

/* Same 13px padding + 20px icon + 12px gap as .nav-item, so every icon and
   every label in the sidebar shares one column. */
.app-sidebar .nav-subitem{
  display:flex;
  align-items:center;
  gap:12px;
  padding:0 13px;
  min-height:38px;
  border:1px solid transparent;
  border-radius:10px;
  color:#aab6d0;
  font-size:.855rem;
  font-weight:500;
  text-decoration:none;
  transition:.16s ease;
}
.app-sidebar .nav-subitem svg{
  width:20px;
  height:20px;
  flex:0 0 auto;
  fill:currentColor;
  opacity:.72;
}
.app-sidebar .nav-subitem span{min-width:0}
.app-sidebar .nav-subitem:hover{
  background:rgba(109,74,255,.12);
  color:#fff;
}
.app-sidebar .nav-subitem:hover svg{opacity:1}
.app-sidebar .nav-subitem.active{
  background:linear-gradient(135deg,rgba(109,74,255,.78),rgba(68,64,190,.6));
  border-color:rgba(164,140,255,.32);
  box-shadow:0 12px 28px rgba(63,44,168,.24);
  color:#fff;
  font-weight:650;
}
.app-sidebar .nav-subitem.active svg{opacity:1}

/* The two groups sit between the primary links and the account links, so give
   the block after them a matching rule. */
.app-sidebar .nav-group + .nav-item{
  margin-top:6px;
  padding-top:0;
  border-top:1px solid rgba(136,153,192,.12);
}

/* ============================================================================
   Group headings are navigation items

   Insights and Reports were styled as section captions — small uppercase, wide
   tracking, muted grey — so they read as dividers rather than as part of the
   menu. They are destinations with their own pages, exactly like
   Administration, so they now use the same type, size, weight, colour, icon
   column and hit area as every other top-level link.
   ========================================================================= */

.app-sidebar .nav-group{
  margin:0;
  padding-top:0;
  border-top:0;
}
.app-sidebar .nav-group + .nav-item{
  margin-top:0;
  padding-top:0;
  border-top:0;
}

.app-sidebar .nav-group-toggle{
  display:flex;
  align-items:center;
  gap:12px;
  width:100%;
  min-height:46px;
  padding:0 13px;
  border:1px solid transparent;
  border-radius:11px;
  background:transparent;
  box-shadow:none;
  color:#d7def0;
  font-family:inherit;
  font-size:.93rem;
  font-weight:650;
  letter-spacing:normal;
  text-transform:none;
  text-align:left;
  cursor:pointer;
  transition:.18s ease;
}
.app-sidebar .nav-group-toggle > svg:first-child{
  width:20px;
  height:20px;
  flex:0 0 auto;
  fill:currentColor;
}
.app-sidebar .nav-group-toggle > span{flex:1 1 auto;min-width:0}
.app-sidebar .nav-group-toggle .nav-chevron{
  width:17px;
  height:17px;
  margin-left:auto;
  flex:0 0 auto;
  opacity:.8;
  transition:transform .16s ease;
}
.app-sidebar .nav-group-toggle:hover{
  background:rgba(109,74,255,.12);
  color:#fff;
  box-shadow:none;
}

/* The open section is indicated on the parent without the full accent pill,
   because the active sub-item already carries that and two purple rows in a
   row would compete. */
.app-sidebar .nav-group.open > .nav-group-toggle{
  background:rgba(255,255,255,.05);
  color:#fff;
}

/* The reporting date card is now a control rather than a readout. */
.galaxi-theme #app-main .reporting-date-control{
  display:grid;
  gap:4px;
  align-content:start;
  /* Wide enough for the longest label ("September 07, 2026 — Today") plus the
     chevron, so the selected value is never clipped. */
  min-width:268px;
}
.galaxi-theme #app-main .reporting-date-control label{margin:0;cursor:pointer}
.galaxi-theme #app-main .reporting-date-control small{color:var(--muted);font-size:.72rem}
.galaxi-theme #app-main .reporting-date-control select{
  height:auto;
  padding:2px 26px 2px 0;
  border:0;
  background:transparent;
  color:var(--text);
  font-size:.92rem;
  font-weight:700;
  cursor:pointer;
  appearance:none;
  text-overflow:ellipsis;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%23667085'%3E%3Cpath d='m7 10 5 5 5-5H7Z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right center;
  background-size:18px;
}
.galaxi-theme #app-main .reporting-date-control select:focus{
  outline:2px solid rgba(91,61,245,.35);
  outline-offset:3px;
  border-radius:6px;
}

/* ============================================================================
   Sign-in card
   The heading uses the Galaxi mark rather than the raw COMPANY_NAME string, so
   the sign-in page always shows the product's identity consistently.
   ========================================================================= */
.galaxi-theme .auth-shell{display:grid;place-items:center;min-height:100vh;padding:24px}
.galaxi-theme .auth-card{
  max-width:420px;
  width:100%;
  margin:0 auto;
  padding:34px 32px 30px;
  overflow:hidden;
}
/* The mark is white artwork built for the dark rail, so it needs a dark panel
   to sit on. Bleeding it to the card edges makes that read as a deliberate
   header rather than a patch behind the logo. */
.galaxi-theme .auth-brand{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:2px;
  margin:-34px -32px 22px;
  padding:26px 32px 22px;
  border-radius:14px 14px 0 0;
  background:linear-gradient(160deg,#0a1733 0%,#0b1430 60%,#071126 100%);
}
.galaxi-theme .auth-logo{
  display:block;
  width:100%;
  max-width:210px;
  height:auto;
  object-fit:contain;
}
.galaxi-theme .auth-subtitle{
  text-transform:uppercase;
  letter-spacing:.16em;
  text-indent:.16em;
  font-size:.58rem;
  font-weight:700;
  color:#8a93ad;
}
.galaxi-theme .auth-lede{
  text-align:center;
  margin:0 0 20px;
  font-size:.86rem;
}

/* ============================================================================
   Roles & Permissions grid
   ========================================================================= */
.galaxi-theme #app-main .rbac-panel{padding:0;overflow:hidden}
.galaxi-theme #app-main .rbac-scroll{overflow-x:auto}
.galaxi-theme #app-main .rbac-grid{
  width:100%;
  border-collapse:collapse;
  min-width:640px;
}
.galaxi-theme #app-main .rbac-grid thead th{
  position:sticky;
  top:0;
  background:#f8f9fc;
  border-bottom:1px solid var(--border);
  padding:14px 16px;
  font-size:.78rem;
  text-align:center;
  white-space:nowrap;
}
.galaxi-theme #app-main .rbac-grid thead th.rbac-perm-col{
  text-align:left;
  width:52%;
}
.galaxi-theme #app-main .rbac-role-col{min-width:120px}
.galaxi-theme #app-main .rbac-lock{
  display:block;
  font-size:.6rem;
  font-weight:600;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.05em;
  margin-top:2px;
}
.galaxi-theme #app-main .rbac-category td{
  background:#f2f3f9;
  font-size:.68rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.06em;
  color:#5b6478;
  padding:8px 16px;
}
.galaxi-theme #app-main .rbac-perm{
  padding:12px 16px;
  border-bottom:1px solid var(--border);
}
.galaxi-theme #app-main .rbac-perm strong{display:block;font-size:.88rem}
.galaxi-theme #app-main .rbac-perm small{display:block;color:var(--muted);font-size:.76rem;margin-top:2px}
.galaxi-theme #app-main .rbac-cell{
  text-align:center;
  border-bottom:1px solid var(--border);
  padding:12px 16px;
}
.galaxi-theme #app-main .rbac-cell input[type=checkbox]{
  width:19px;height:19px;
  accent-color:var(--accent);
  cursor:pointer;
}
.galaxi-theme #app-main .rbac-cell input[disabled]{cursor:not-allowed;opacity:.55}
.galaxi-theme #app-main .rbac-grid tbody tr:hover .rbac-perm,
.galaxi-theme #app-main .rbac-grid tbody tr:hover .rbac-cell{background:#fafbff}

/* Cut-off time selects on the cycle schedule page need room for "10:00 PM". */
.galaxi-theme #app-main table select[name^="cutoff_hour"]{min-width:104px;padding:9px 10px}

/* Grouped sub-items in the Administration dropdown. */
.nav-dropdown-group{border-bottom:1px solid rgba(117,139,182,.14);padding-bottom:6px;margin-bottom:6px}.nav-dropdown-group-title{display:block;padding:8px 14px 4px;font-size:.66rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8290ad}.nav-dropdown-menu a.nav-dropdown-sub{padding-left:26px}

/* Master product catalog — product list (replaces the wide clipping table). */
.catalog-list{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.catalog-row{display:flex;justify-content:space-between;align-items:flex-start;gap:18px;padding:14px 16px;border:1px solid #e5e9f0;border-radius:12px;background:#fff;transition:border-color .12s ease,box-shadow .12s ease}
.catalog-row:hover{border-color:#c7d2fe;box-shadow:0 3px 12px rgba(37,99,235,.07)}
.catalog-row-main{min-width:0;flex:1 1 auto}
.catalog-row-name{margin:0 0 4px;font-size:1rem;font-weight:750;line-height:1.35;color:#152033}
.catalog-row-ids{font-size:.8rem;color:#667085;margin-bottom:9px}
.catalog-row-ids .mono{font-family:ui-monospace,Consolas,monospace}
.catalog-chips{display:flex;flex-wrap:wrap;gap:6px}
.catalog-chip{font-size:.72rem;font-weight:700;padding:3px 10px;border-radius:999px;background:#eef2f7;color:#475569;white-space:nowrap}
.catalog-chip.cat{background:#eef0ff;color:#4f46e5}
.catalog-chip.sub{background:#f1f5f9;color:#475569}
.catalog-chip.brand{background:#f1f5f9;color:#334155}
.catalog-chip.fits{background:#e0f2fe;color:#0369a1}
.catalog-chip.vendor{background:#f8fafc;color:#64748b;border:1px solid #eef0f5}
.catalog-row-side{display:flex;align-items:center;gap:22px;flex:0 0 auto}
.catalog-prices{display:flex;gap:20px;text-align:right}
.catalog-price{display:flex;flex-direction:column;gap:1px}
.catalog-price span{font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-weight:800}
.catalog-price strong{font-size:.98rem;color:#0f172a}
.catalog-price.retail strong{color:#047857}
.catalog-empty{padding:28px;text-align:center}
@media(max-width:760px){.catalog-row{flex-direction:column;align-items:stretch}.catalog-row-side{width:100%;justify-content:space-between;gap:14px}}

/* Breadcrumb trail. */
.breadcrumbs{margin:0 0 18px}
.breadcrumbs ol{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:2px;margin:0;padding:0;font-size:.82rem}
.breadcrumbs li{display:flex;align-items:center;color:#8290ad}
.breadcrumbs li+li::before{content:"›";margin:0 8px;color:#b6c0d4;font-size:.95rem}
.breadcrumbs a{color:#5a6b8c;text-decoration:none;font-weight:600}
.breadcrumbs a:hover{color:#2563eb;text-decoration:underline}
.breadcrumbs [aria-current="page"]{color:#152033;font-weight:700}
.galaxi-theme .breadcrumbs a{color:#8ea6d8}
.galaxi-theme .breadcrumbs [aria-current="page"]{color:#e6ecf7}
.galaxi-theme .breadcrumbs li{color:#6d7da3}

/* Product edit form. */
.item-edit-meta{color:#8290ad;font-size:.8rem;margin-bottom:14px}
.item-edit-meta .mono{font-family:ui-monospace,Consolas,monospace}
.item-edit-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.item-edit-grid label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.9rem}
.item-edit-grid label.span-2{grid-column:span 2}
.item-edit-actions{display:flex;gap:12px;margin-top:20px}
@media(max-width:820px){.item-edit-grid{grid-template-columns:1fr 1fr}.item-edit-grid label.span-2{grid-column:span 2}}
@media(max-width:520px){.item-edit-grid{grid-template-columns:1fr}.item-edit-grid label.span-2{grid-column:span 1}}

/* Audit Report — plain-language activity feed. */
.audit-controls{display:flex;flex-wrap:wrap;align-items:end;gap:18px}
.audit-controls label{display:flex;flex-direction:column;gap:6px;font-weight:600;font-size:.85rem}
.audit-toggle{flex-direction:row!important;align-items:center;gap:8px;font-weight:600}
.audit-export{margin-left:auto;display:flex;gap:10px}
.audit-feed{display:flex;flex-direction:column;gap:8px}
.audit-entry{border:1px solid #e5e9f0;border-radius:11px;background:#fff;overflow:hidden}
.audit-entry>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:12px 15px;transition:background .12s}
.audit-entry>summary::-webkit-details-marker{display:none}
.audit-entry>summary:hover{background:#f8fafc}
.audit-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:#94a3b8}
.audit-entry.cat-security .audit-dot{background:#e5484d}
.audit-entry.cat-catalog .audit-dot{background:#4f46e5}
.audit-entry.cat-counts .audit-dot{background:#0ea5e9}
.audit-entry.cat-reports .audit-dot{background:#12b981}
.audit-entry.cat-system .audit-dot{background:#94a3b8}
.audit-when{flex:0 0 auto;font-size:.78rem;color:#8290ad;font-variant-numeric:tabular-nums;min-width:118px}
.audit-summary{flex:1 1 auto;font-size:.9rem;color:#152033;min-width:0}
.audit-tag{flex:0 0 auto;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#64748b;background:#eef2f7;padding:3px 9px;border-radius:999px;white-space:nowrap}
.audit-entry.cat-security .audit-tag{color:#c01c28;background:#fdeced}
.audit-detail{border-top:1px solid #eef0f5;padding:14px 16px;display:grid;grid-template-columns:1fr 1fr;gap:10px 24px;background:#fbfcfe}
.audit-detail>div{display:flex;flex-direction:column;gap:2px}
.audit-detail .audit-raw{grid-column:1 / -1}
.audit-k{font-size:.64rem;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-weight:800}
.audit-v{font-size:.86rem;color:#152033}
.audit-v .mono{font-family:ui-monospace,Consolas,monospace;font-size:.8rem;color:#475569}
.report-rowcount{background:#eef7f0;color:#0f9d68;font-weight:700;font-size:.8rem;padding:6px 12px;border-radius:999px}
@media(max-width:680px){.audit-detail{grid-template-columns:1fr}.audit-when{min-width:0}.audit-tag{display:none}}

/* Scanner detail. */
.scanner-loc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-top:6px}
.scanner-loc{border:1px solid #e5e9f0;border-radius:10px;padding:12px 14px;background:#fff}
.scanner-loc strong{display:block;font-size:.92rem;color:#152033;margin-bottom:3px}
.scanner-loc span{font-size:.78rem;color:#667085}
.catalog-chip.loc{background:#eaf5ff;color:#0369a1}
/* Clickable report rows (generic drill-down). */
tr.row-link{cursor:pointer}
tr.row-link:hover{background:#f4f7ff}

/* Scanner detail summary cards. */
.scanner-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:16px}.scanner-summary-card{background:#fff;border:1px solid #e5e9f0;border-radius:12px;padding:16px 18px}.scanner-summary-label{display:block;font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;font-weight:800;margin-bottom:6px}.scanner-summary-card strong{display:block;font-size:1.5rem;color:#0f172a;line-height:1.1}.scanner-summary-card small{display:block;margin-top:5px;font-size:.75rem;color:#8290ad}@media(max-width:900px){.scanner-summary{grid-template-columns:1fr 1fr}}@media(max-width:520px){.scanner-summary{grid-template-columns:1fr}}

/* Status-email scheduled send time. */
.send-time-row{margin:6px 0 2px;padding:12px 14px;background:#f7f8fb;border-radius:10px}
.send-time-selects{display:flex;align-items:center;gap:8px;margin-top:4px}
.send-time-selects select{min-width:70px}
.send-time-selects span{color:#8290ad;font-weight:700}

/* Mobile nav fix: the slide-in drawer must sit ABOVE the dimming backdrop, or
   the backdrop swallows every tap on the menu (and closes it). Previously the
   sidebar was z-index 70 and the backdrop 89, so nav links were unclickable on
   phones and tablets. Keep both below the modal layer (1000). */
.app-sidebar{z-index:120}
.mobile-nav-backdrop{z-index:110}

/* In-field camera scan button + camera overlay (count page). */
.barcode-input-wrap{position:relative;flex:1;display:flex}
.barcode-input-wrap .barcode-field{flex:1;padding-right:64px}
.barcode-camera-btn{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:48px;height:48px;min-height:0;display:grid;place-items:center;padding:0;border-radius:10px;background:#2563eb;color:#fff;border:0;cursor:pointer}
.barcode-camera-btn:hover{background:#1d4ed8}
#scan-form{align-items:stretch}
.scanner-overlay{position:fixed;inset:0;z-index:1200;background:rgba(6,12,26,.92);display:grid;place-items:center;padding:16px}
.scanner-overlay[hidden]{display:none}
.scanner-modal{width:min(520px,100%);background:#0b1730;border-radius:18px;padding:16px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.scanner-video-wrap{position:relative;width:100%;aspect-ratio:4/3;background:#000;border-radius:12px;overflow:hidden}
#scanner-video{width:100%;height:100%;object-fit:cover;display:block}
.scanner-reticle{position:absolute;left:10%;right:10%;top:38%;bottom:38%;border:3px solid rgba(37,99,235,.9);border-radius:12px;box-shadow:0 0 0 100vmax rgba(0,0,0,.25)}
.scanner-hint{color:#dbe4f3;text-align:center;font-weight:600;margin:14px 6px 4px;line-height:1.4}
.scanner-actions{display:flex;justify-content:center;margin-top:6px}
@media(max-width:800px){.barcode-input-wrap .barcode-field{padding-right:58px}.barcode-camera-btn{width:44px;height:44px;right:6px}}

/* Feedback. */
.sidebar-feedback{margin-top:auto;padding-top:10px}
.feedback-nav{position:relative}
.feedback-count{background:#e5484d;color:#fff}
.feedback-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.6fr);gap:20px;align-items:start}
.feedback-new textarea{width:100%;border:1px solid #cfd6e3;border-radius:9px;padding:11px 12px;font:inherit;resize:vertical}
.feedback-thread-list{display:flex;flex-direction:column;gap:8px;margin-top:6px}
.feedback-thread-row{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;padding:13px 15px;border:1px solid #e5e9f0;border-radius:11px;background:#fff;text-decoration:none;color:inherit;transition:border-color .12s,box-shadow .12s}
.feedback-thread-row:hover{border-color:#c7d2fe;box-shadow:0 3px 12px rgba(37,99,235,.06)}
.feedback-thread-row.unread{background:#f5f8ff;border-color:#c7d2fe}
.feedback-thread-title{font-weight:750;color:#152033;display:flex;align-items:center;gap:8px}
.unread-dot{width:9px;height:9px;border-radius:50%;background:#2563eb;flex:0 0 auto}
.feedback-thread-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:7px}
.feedback-chip{font-size:.72rem;font-weight:700;padding:3px 9px;border-radius:999px;background:#eef2f7;color:#475569;white-space:nowrap}
.feedback-chip.cat-bug{background:#fdeced;color:#c01c28}
.feedback-chip.cat-feature{background:#eef0ff;color:#4f46e5}
.feedback-chip.cat-suggestion{background:#e0f2fe;color:#0369a1}
.feedback-chip.cat-question{background:#fef3e0;color:#b54708}
.feedback-status{font-size:.72rem;font-weight:800;padding:3px 9px;border-radius:999px;text-transform:uppercase;letter-spacing:.03em}
.feedback-status.status-open{background:#dcfce7;color:#166534}
.feedback-status.status-in_progress{background:#fef3e0;color:#b54708}
.feedback-status.status-resolved{background:#e5e7eb;color:#374151}
.feedback-by{font-size:.78rem;color:#475569;font-weight:600}
.feedback-count-label,.feedback-when{font-size:.76rem;color:#8290ad;white-space:nowrap}
.feedback-empty{padding:26px;text-align:center}
.feedback-filter{display:flex;gap:6px;flex-wrap:wrap}
.feedback-filter a{font-size:.8rem;font-weight:700;padding:5px 11px;border-radius:999px;text-decoration:none;color:#475569;background:#eef2f7}
.feedback-filter a.active{background:#2563eb;color:#fff}
.feedback-admin-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.feedback-admin-label{font-weight:700;color:#475569}
.status-btn{background:#eef2f7;color:#334155;padding:8px 14px}
.status-btn.current{outline:2px solid #94a3b8}
.status-btn.status-resolved{background:#dcfce7;color:#166534}
.status-btn.status-in_progress{background:#fef3e0;color:#b54708}
.feedback-messages{display:flex;flex-direction:column;gap:12px;margin-bottom:18px}
.feedback-message{max-width:78%;padding:12px 15px;border-radius:14px}
.feedback-message.from-user{align-self:flex-start;background:#f1f5f9;border-bottom-left-radius:4px}
.feedback-message.from-admin{align-self:flex-end;background:#e8efff;border-bottom-right-radius:4px}
.feedback-message-head{display:flex;align-items:center;gap:8px;margin-bottom:5px;font-size:.82rem}
.feedback-admin-tag{background:#2563eb;color:#fff;font-size:.66rem;font-weight:800;padding:2px 7px;border-radius:999px;text-transform:uppercase}
.feedback-message-time{color:#8290ad;font-size:.74rem}
.feedback-message-body{white-space:pre-wrap;line-height:1.5;color:#1e293b}
.feedback-reply textarea{width:100%;border:1px solid #cfd6e3;border-radius:9px;padding:11px 12px;font:inherit;resize:vertical}
@media(max-width:900px){.feedback-layout{grid-template-columns:1fr}.feedback-message{max-width:90%}}

/* Compact feedback nav badge (was stretching full width). */
.feedback-nav{display:flex;align-items:center;gap:10px}
.feedback-nav>span:nth-child(2){flex:1}
.nav-count.feedback-count{flex:0 0 auto;width:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;margin-left:auto}

/* Pending-photo: camera icon button + live camera capture overlay. */
.photo-camera-icon-btn{display:inline-grid;place-items:center;width:64px;height:64px;padding:0;border-radius:14px;background:#2563eb;color:#fff;border:0;cursor:pointer}
.photo-camera-icon-btn:hover{background:#1d4ed8}
.photo-step-actions{display:flex;gap:12px;align-items:center;justify-content:center;margin-top:6px}
.photo-camera-overlay{position:fixed;inset:0;z-index:1300;background:rgba(6,12,26,.94);display:grid;place-items:center;padding:16px}
.photo-camera-overlay[hidden]{display:none}
.photo-camera-modal{width:min(560px,100%);background:#0b1730;border-radius:18px;padding:16px;box-shadow:0 30px 80px rgba(0,0,0,.55)}
.photo-camera-video-wrap{position:relative;width:100%;aspect-ratio:4/3;background:#000;border-radius:12px;overflow:hidden}
#photo-camera-video{width:100%;height:100%;object-fit:cover;display:block}
.photo-camera-hint{color:#dbe4f3;text-align:center;font-weight:600;margin:14px 6px 10px}
.photo-camera-actions{display:flex;gap:12px;justify-content:center}
#photo-camera-capture{background:#2563eb;min-width:150px}

/* Install-app affordance (Android/Chrome). Hidden unless the browser offers it. */
.pwa-install-button{position:fixed;right:16px;bottom:16px;z-index:1400;background:#2563eb;color:#fff;border:0;border-radius:999px;padding:12px 20px;font-weight:800;box-shadow:0 8px 24px rgba(37,99,235,.35);cursor:pointer}
.pwa-install-button[hidden]{display:none}

/* Bulk upload landing (Administration → Bulk Upload) */
.bulk-upload-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-top:8px}
.bulk-upload-option{display:flex;flex-direction:column;gap:10px;text-decoration:none;color:inherit;transition:transform .12s ease,box-shadow .12s ease}
.bulk-upload-option:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(15,23,42,.12)}
.bulk-upload-option h2{margin:0}
.bulk-upload-option .button{align-self:flex-start;margin-top:auto}
