:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;color:var(--color-text);background:var(--color-page);color-scheme:light;--color-page: #edf2f7;--color-panel: #ffffff;--color-panel-muted: #f8fafc;--color-text: #1f2937;--color-text-muted: #667085;--color-border: #d7dee8;--color-sidebar: #102033;--color-sidebar-hover: #1c324a;--color-sidebar-text: #dbeafe;--color-sidebar-muted: #cbd5e1;--color-brand-mark: #e7f1ff;--color-sidebar-card: #1a324d;--color-sidebar-card-border: #365575;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-info: #2563eb;--color-info-soft: #eff6ff;--color-info-border: #bfdbfe;--color-success: #15803d;--color-success-soft: #e7f7ed;--color-warning: #b7791f;--color-warning-soft: #fff4dc;--color-danger: #b42318;--color-danger-soft: #fff1f2;--color-danger-border: #fecdd3;--color-teal: #0f766e;--color-purple: #6d28d9;--color-grey: #64748b;--shadow-panel: 0 18px 48px rgba(15, 23, 42, .12);--shadow-card: 0 8px 24px rgba(15, 23, 42, .06);--ink: var(--color-text);--muted: var(--color-text-muted);--line: var(--color-border);--panel: var(--color-panel);--soft: var(--color-panel-muted);--nav: var(--color-sidebar);--nav-2: var(--color-sidebar-hover);--blue: var(--color-primary);--teal: var(--color-teal);--green: var(--color-success);--amber: var(--color-warning);--red: var(--color-danger);--purple: var(--color-purple);--grey: var(--color-grey)}:root[data-theme=harbor]{--color-page: #f3f6f8;--color-panel-muted: #f9fbfc;--color-text: #202a33;--color-text-muted: #637083;--color-border: #d6dde5;--color-sidebar: #18313b;--color-sidebar-hover: #244653;--color-sidebar-card: #203f4a;--color-sidebar-card-border: #3d616e}:root[data-theme=night]{color-scheme:dark;--color-page: #101820;--color-panel: #17212b;--color-panel-muted: #1d2a36;--color-text: #e7edf4;--color-text-muted: #a8b4c2;--color-border: #304252;--color-sidebar: #08111a;--color-sidebar-hover: #142333;--color-sidebar-text: #d5e7ff;--color-sidebar-muted: #9fb2c8;--color-brand-mark: #173554;--color-sidebar-card: #111f2d;--color-sidebar-card-border: #2a435a;--color-info-soft: #13283f;--color-info-border: #2c5f9d;--color-success-soft: #143524;--color-warning-soft: #392a12;--color-danger-soft: #3b171b;--color-danger-border: #7f2a34;--shadow-panel: 0 18px 48px rgba(0, 0, 0, .34);--shadow-card: 0 8px 24px rgba(0, 0, 0, .24)}:root[data-accent=teal]{--color-primary: #0f766e;--color-primary-hover: #0b5f59;--color-info: #0f766e;--color-info-soft: #e6fffb;--color-info-border: #99f6e4}:root[data-accent=green]{--color-primary: #15803d;--color-primary-hover: #166534;--color-info: #15803d;--color-info-soft: #ecfdf3;--color-info-border: #bbf7d0}*{box-sizing:border-box}body{background:var(--color-page);color:var(--color-text);margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin:0}.app-shell{display:grid;grid-template-columns:270px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--nav);color:#f8fafc;display:flex;flex-direction:column;gap:24px;padding:22px 16px}.brand{align-items:center;display:flex;gap:12px;padding:4px 6px 10px}.brand-mark{align-items:center;background:var(--color-brand-mark);border-radius:8px;color:var(--blue);display:grid;height:42px;place-items:center;width:42px}.brand strong,.brand span,.publish-card strong,.publish-card span{display:block}.brand span,.publish-card span{color:var(--color-sidebar-muted);font-size:12px;margin-top:2px}.sidebar nav{display:grid;gap:5px}.nav-link{align-items:center;background:transparent;border:0;border-radius:8px;color:var(--color-sidebar-text);display:flex;gap:10px;min-height:40px;padding:9px 10px;text-align:left}.nav-link:hover,.nav-link.active{background:var(--nav-2);color:#fff}.publish-card{align-items:flex-start;background:var(--color-sidebar-card);border:1px solid var(--color-sidebar-card-border);border-radius:8px;display:flex;gap:10px;margin-top:auto;padding:12px}.main-area{min-width:0}.topbar{align-items:center;background:color-mix(in srgb,var(--color-panel) 92%,transparent);border-bottom:1px solid var(--line);display:flex;gap:18px;justify-content:space-between;padding:18px 24px;position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.eyebrow{color:var(--muted);display:block;font-size:12px;font-weight:800;text-transform:uppercase}h1{font-size:24px;letter-spacing:0;margin-top:3px}h2{font-size:18px;letter-spacing:0}h3{font-size:15px;letter-spacing:0}.topbar-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end}.search-box{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;color:var(--muted);display:flex;gap:8px;min-height:38px;padding:0 12px}.search-box input{background:transparent;border:0;color:var(--ink);min-width:220px;outline:0}.primary-button,.ghost-button{align-items:center;border-radius:8px;display:inline-flex;gap:8px;min-height:38px;padding:0 12px}.primary-button{background:var(--blue);border:1px solid var(--blue);color:#fff}.primary-button:disabled,.ghost-button:disabled{cursor:not-allowed;opacity:.55}.ghost-button{background:var(--color-panel-muted);border:1px solid var(--line);color:var(--ink)}.icon-button{justify-content:center;padding:0;width:38px}.compact-button{min-height:32px;padding:0 10px}.button-row{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.unpublished-pill{background:var(--color-warning-soft);border:1px solid color-mix(in srgb,var(--amber) 30%,transparent);border-radius:999px;color:var(--amber);font-size:12px;font-weight:800;padding:7px 10px;white-space:nowrap}.context-select{background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;color:var(--ink);min-height:38px;padding:0 10px}.notice{background:var(--color-info-soft);border:1px solid var(--color-info-border);border-radius:8px;color:var(--color-info);font-size:13px;padding:12px}.notice.error{background:var(--color-danger-soft);border-color:var(--color-danger-border);color:var(--red)}.notice.success{background:#ecfdf3;border-color:#bbf7d0;color:var(--green)}.notice.warning{background:var(--color-warning-soft);border-color:#b7791f59;color:var(--amber)}.skeleton-line,.skeleton-icon{animation:skeleton-pulse 1.2s ease-in-out infinite;background:linear-gradient(90deg,#94a3b829,#94a3b852,#94a3b829);background-size:220% 100%;border-radius:999px;display:block}.skeleton-line{height:12px;max-width:170px;width:100%}.skeleton-line.short{max-width:70px}.skeleton-line.wide{max-width:240px}.skeleton-line.heading{height:18px;max-width:190px}.skeleton-line.action{height:32px;max-width:120px}.skeleton-line.badge{height:24px;max-width:78px}.skeleton-icon{flex:0 0 auto;height:38px;width:38px}.skeleton-card{color:inherit}.skeleton-stack{display:grid;gap:12px}.skeleton-stack-row{background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:grid;gap:8px;padding:13px}.skeleton-table-row:hover{background:transparent}.skeleton-table-row td{height:58px}.skeleton-table-row .skeleton-line+.skeleton-line{margin-top:8px}@keyframes skeleton-pulse{0%{background-position:100% 0}to{background-position:-120% 0}}.compact-notice{font-size:12px;padding:9px 10px}.login-screen{align-items:center;background:var(--color-page);display:grid;min-height:100vh;padding:24px;place-items:center}.login-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-panel);display:grid;gap:16px;max-width:420px;padding:22px;width:min(100%,420px)}.login-brand{padding:0}.login-brand span{color:var(--muted)}.login-form{display:grid;gap:12px}.login-form label,.action-form label{display:grid;gap:6px}.login-form label span,.action-form label span{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.login-form input,.action-form input,.action-form select{border:1px solid var(--line);border-radius:8px;min-height:42px;padding:0 12px}.field-invalid input,.field-invalid select{border-color:var(--color-danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-danger) 15%,transparent)}.field-error{color:var(--color-danger)!important;font-size:12px!important;font-weight:700!important;text-transform:none!important}.action-form{align-items:end;display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr)) auto}.side-drawer .action-form{align-items:stretch;grid-template-columns:1fr}.assignment-form{grid-template-columns:repeat(4,minmax(0,1fr)) auto}.notification-test-form{align-items:end;grid-template-columns:minmax(260px,1fr) auto auto}.notification-filter-row{align-items:center;display:grid;gap:8px;grid-template-columns:minmax(180px,1fr) repeat(3,minmax(130px,auto))}.settings-filter-row{align-items:center;display:grid;gap:8px;margin-bottom:12px}.security-filter-row,.audit-filter-row{grid-template-columns:minmax(170px,1fr) repeat(5,minmax(120px,auto)) auto}.notification-filter-row input,.settings-filter-row input{background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;color:var(--ink);min-height:38px;padding:0 10px}.mailpit-link{text-decoration:none}.notification-rules-grid{display:grid;gap:12px}.notification-rule-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}.notification-rule-summary{align-items:center;display:flex;gap:16px;justify-content:space-between;padding:14px}.notification-rule-summary strong,.notification-rule-summary span{display:block}.notification-rule-summary span{color:var(--muted);font-size:12px;margin-top:4px}.notification-rule-actions{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.notification-rule-form{background:var(--soft);border-top:1px solid var(--line);display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr));padding:14px}.notification-rule-form label{color:var(--muted);display:grid;font-size:12px;font-weight:700;gap:6px}.notification-rule-form input,.notification-rule-form textarea,.notification-rule-form select{width:100%}.notification-rule-form select[multiple]{min-height:112px;padding:8px}.notification-rule-form textarea{min-height:112px;resize:vertical}.notification-rule-checks{align-content:start;display:grid;gap:8px}.notification-rule-checks label{align-items:center;color:var(--ink);display:flex;font-weight:600;gap:8px}.notification-rule-checks input{width:auto}main{display:grid;gap:18px;padding:24px}.settings-view-stack{display:grid;gap:18px}.subnav-row{align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-card);display:flex;flex-wrap:wrap;gap:6px;padding:8px}.subnav-row button{background:transparent;border:1px solid transparent;border-radius:8px;color:var(--muted);min-height:34px;padding:0 12px}.subnav-row button.active,.subnav-row button:hover{background:var(--color-info-soft);border-color:var(--color-info-border);color:var(--blue)}.panel,.kpi-card,.module-card{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow-card)}.panel{padding:18px}.panel-header{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:16px}.dashboard-grid{display:grid;gap:16px;grid-template-columns:repeat(4,minmax(0,1fr))}.settings-stack{display:grid;gap:16px}.span-2{grid-column:span 2}.wide{grid-column:1 / -1}.kpi-card{align-items:center;display:flex;gap:12px;min-height:96px;padding:18px}.kpi-card strong{display:block;font-size:28px}.kpi-card span{color:var(--muted);font-size:13px}.kpi-card.blue{color:var(--blue)}.kpi-card.green{color:var(--green)}.kpi-card.amber{color:var(--amber)}.kpi-card.red{color:var(--red)}.health-grid,.module-stack,.summary-stack{display:grid;gap:12px}.health-item,.config-summary{align-items:flex-start;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:flex;gap:12px;justify-content:space-between;padding:13px}p{color:var(--muted);font-size:13px;line-height:1.5;margin-top:5px}.module-card{display:grid;gap:8px;padding:14px}.module-control{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:flex;gap:12px;justify-content:space-between;margin-bottom:14px;padding:12px}.module-control span{color:var(--muted);display:block;font-size:13px;margin-top:2px}.module-grid,.company-layout{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}.company-layout .panel:first-child{grid-column:span 2}.form-grid{display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}.field{display:grid;gap:6px}.field span,.detail span{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase}.field input,.field select{background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;min-height:40px;padding:0 11px}.checklist-field{border:1px solid var(--line);border-radius:8px;gap:8px;padding:12px}.checklist-field legend{color:var(--muted);font-size:12px;font-weight:700;padding:0 4px;text-transform:uppercase}.toggle-field{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:flex;gap:10px;min-height:40px;padding:0 11px}.toggle-field span{color:var(--ink);font-size:13px;font-weight:700}.usage-row{display:grid;gap:8px;margin-bottom:16px}.usage-row div:first-child{display:flex;justify-content:space-between}.usage-row span{color:var(--muted);font-size:13px}.progress{background:#e5e7eb;border-radius:999px;height:8px;overflow:hidden}.progress span{background:var(--teal);display:block;height:100%}.progress.neutral span{background:transparent}.split-layout,.module-config-layout{align-items:start;display:grid;gap:18px;grid-template-columns:minmax(0,1.6fr) minmax(320px,.8fr)}.module-config-layout{grid-template-columns:360px minmax(0,1fr)}.filter-strip{align-items:center;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.filter-strip span{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:999px;display:inline-flex;font-size:12px;gap:5px;padding:6px 10px}.table-panel{overflow-x:auto}.drawer-backdrop{background:#0f172a61;display:flex;top:0;right:0;bottom:0;left:0;justify-content:flex-end;position:fixed;z-index:40}.side-drawer{background:var(--panel);box-shadow:-18px 0 44px #0f172a2e;display:grid;grid-template-rows:auto 1fr;max-width:480px;overflow-y:auto;padding:22px;width:min(100%,480px)}.drawer-header{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;margin-bottom:18px;padding-bottom:14px}table{border-collapse:collapse;min-width:760px;width:100%}th,td{border-bottom:1px solid var(--line);padding:12px 10px;text-align:left;vertical-align:top}th{color:var(--muted);font-size:12px;text-transform:uppercase}td{font-size:13px}.empty-row{color:var(--muted);padding:22px 10px;text-align:center}td strong,td span{display:block}td span{color:var(--muted);margin-top:3px}.security-events-table{min-width:980px}.truncate-cell{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-state{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:flex;gap:12px;padding:16px}.empty-state span,.empty-state strong{display:block}.empty-state span{color:var(--muted);font-size:13px;margin-top:3px}tbody tr{cursor:default}tbody tr:hover,.selected-row{background:var(--color-panel-muted)}.detail-panel,.detail-list{display:grid;gap:14px}.detail{display:grid;gap:4px}.detail strong{font-size:14px}.module-row{display:flex;flex-wrap:wrap;gap:6px}.assignment-summary,.assignment-manager,.assignment-cards,.assignment-list{display:grid;gap:12px}.assignment-summary{border-top:1px solid var(--line);margin-top:6px;padding-top:14px}.summary-header{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.summary-header h3{margin:0}.summary-header p{color:var(--muted);margin:4px 0 0}.role-chip-list{display:flex;flex-wrap:wrap;gap:8px}.role-chip{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:inline-flex;gap:8px;min-height:34px;padding:6px 10px}.role-chip small{color:var(--muted);font-weight:800;text-transform:uppercase}.role-chip-list.compact{gap:6px}.role-chip-list.compact .role-chip{min-height:30px;padding:5px 8px}.role-chip.muted{color:var(--muted);font-size:12px;font-weight:800}.readonly-summary,.role-option-list{display:grid;gap:8px}.readonly-summary{background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;padding:12px}.readonly-summary span{color:var(--muted)}.full-width{grid-column:1 / -1}.role-option{align-items:flex-start;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:grid!important;gap:10px!important;grid-template-columns:auto 1fr;padding:12px}.role-option input{min-height:auto;margin-top:2px}.role-option small{color:var(--muted);display:block;margin-top:3px}.role-permission-layout{align-items:start;display:grid;gap:18px;grid-template-columns:minmax(280px,.75fr) minmax(0,1.25fr)}.role-list-panel,.role-detail-panel,.role-create-form,.role-list,.permission-list{display:grid;gap:12px}.inline-search{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;color:var(--muted);display:flex;gap:8px;min-height:38px;padding:0 10px}.inline-search input{background:transparent;border:0;color:var(--ink);min-height:36px;outline:0;width:100%}.role-list-item{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;color:var(--ink);display:flex;gap:10px;justify-content:space-between;padding:12px;text-align:left}.role-list-item:hover,.role-list-item.selected{background:var(--color-info-soft);border-color:var(--color-info-border)}.role-list-item strong,.role-list-item small,.permission-row strong,.permission-row span{display:block}.role-list-item small,.permission-row span{color:var(--muted);font-size:12px;margin-top:3px}.role-summary-grid{display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.permission-row{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:grid;gap:10px;grid-template-columns:auto minmax(0,1fr);padding:11px}.permission-row.enabled{background:var(--color-success-soft);border-color:#bbf7d0}.permission-group{display:grid;gap:8px}.permission-group+.permission-group{margin-top:8px}.permission-group-header{align-items:center;border-bottom:1px solid var(--line);color:var(--muted);display:flex;gap:8px;justify-content:space-between;padding:4px 2px 8px}.permission-group-header strong{color:var(--ink);font-size:13px}.permission-group-header span{font-size:11px;font-weight:800;text-transform:uppercase}.role-create-form{align-content:start}.role-create-form label{display:grid;gap:6px}.role-create-form label span{color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.role-create-form input,.role-create-form select{border:1px solid var(--line);border-radius:8px;min-height:42px;padding:0 12px}.assignment-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.assignment-card,.assignment-item{background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px}.assignment-card{display:grid;gap:10px;padding:12px}.assignment-card span,.assignment-item span{color:var(--muted);display:block;font-size:12px;margin-top:3px}.assignment-item{align-items:center;display:flex;gap:10px;justify-content:space-between;padding:10px}.assignment-chip-list{display:flex;flex-wrap:wrap;gap:6px}.assignment-chip{background:#e7f0ff;border-radius:999px;color:var(--blue);display:inline-flex;font-size:12px;font-weight:800;margin:0;min-height:24px;padding:4px 9px}.compact-button{min-height:32px}.badge{align-items:center;border-radius:999px;display:inline-flex;font-size:12px;font-weight:800;min-height:24px;padding:4px 9px;white-space:nowrap}.status-active,.status-published,.module-settings{background:#e7f7ed;color:var(--green)}.status-draft,.status-pending-invite,.status-dry-dock{background:#fff4dc;color:var(--amber)}.status-disabled,.status-inactive,.scope{background:#eef2f7;color:var(--grey)}.status-requires-review{background:#fee4e2;color:var(--red)}.module-atr{background:#e7f0ff;color:var(--blue)}.module-ovmsa{background:#e6fffb;color:var(--teal)}.module-ims{background:#f1e8ff;color:var(--purple)}.ims-settings{background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:grid;gap:16px;padding:14px}.settings-section{background:var(--color-panel);border:1px solid var(--line);border-radius:8px;display:grid;gap:12px;padding:14px}.settings-section-head{display:grid;gap:4px}.settings-section-head h3{margin:0}.settings-section-head p{color:var(--muted);font-size:13px;line-height:1.45}.settings-section-head.action-head{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.settings-section-head.action-head .compact-button{flex:0 0 auto}.workflow-grid,.notification-grid{display:grid;gap:16px;grid-template-columns:repeat(2,minmax(0,1fr))}.workflow-card{display:grid;gap:16px}.workflow-head{align-items:flex-start;display:flex;gap:12px;justify-content:space-between}.workflow-head span{color:var(--muted);font-size:13px}.step-list{display:grid;gap:8px}.step{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:8px;display:flex;gap:10px;padding:10px}.step span{align-items:center;background:var(--blue);border-radius:999px;color:#fff;display:inline-flex;font-size:12px;font-weight:800;height:24px;justify-content:center;width:24px}.check-cell{background:#e5e7eb;border-radius:50%;display:inline-block;height:14px;width:14px}.check-cell.enabled{background:var(--green)}.notification-card{display:grid;gap:14px}.channel-row{display:flex;flex-wrap:wrap;gap:8px}.channel-row span{align-items:center;background:var(--color-panel-muted);border:1px solid var(--line);border-radius:999px;color:var(--muted);display:inline-flex;font-size:12px;gap:6px;padding:7px 10px}@media(max-width:1100px){.app-shell{grid-template-columns:1fr}.sidebar{position:static}.sidebar nav{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-grid,.company-layout,.module-grid,.workflow-grid,.notification-grid,.split-layout,.module-config-layout,.role-permission-layout,.role-summary-grid,.assignment-cards,.action-form,.settings-filter-row,.notification-filter-row{grid-template-columns:1fr}.span-2,.wide,.company-layout .panel:first-child{grid-column:auto}}@media(max-width:720px){.topbar,.topbar-actions{align-items:stretch;flex-direction:column}.search-box input{min-width:0;width:100%}.form-grid,.settings-filter-row,.notification-filter-row,.sidebar nav{grid-template-columns:1fr}.settings-section-head.action-head{align-items:stretch;flex-direction:column}.settings-section-head.action-head .compact-button{width:100%}}
