:root{--portal-bg:#f5f7fb;--portal-surface:#ffffff;--portal-surface-subtle:#f8fafc;--portal-border:#dce3ec;--portal-text:#1d2733;--portal-muted:#657386;--portal-primary:#2f6fed;--portal-primary-dark:#1f55b7;--portal-success:#11a36a;--portal-warning:#d97706;--portal-danger:#dc3545;--portal-sidebar:#172033;--portal-sidebar-soft:#202c42;--portal-sidebar-muted:#a9b5c6;--portal-sidebar-active:#3b7cff;--portal-focus:rgba(47,111,237,0.22);--portal-shadow:0 16px 38px rgba(23,32,51,0.09)}html,body{min-height:100%}body{margin:0;background:var(--portal-bg);color:var(--portal-text);font-family:"Segoe UI",Arial,sans-serif}a{color:var(--portal-primary)}a:hover{color:var(--portal-primary-dark)}.btn{border-radius:7px;font-weight:600}.btn-primary{background:var(--portal-primary);border-color:var(--portal-primary)}.btn-primary:hover,.btn-primary:focus{background:var(--portal-primary-dark);border-color:var(--portal-primary-dark)}.btn-outline-secondary{border-color:#c4ceda;color:#435064}.btn-outline-secondary:hover,.btn-outline-secondary:focus{background:#eef3f8;border-color:#b5c0cf;color:var(--portal-text)}.btn:focus,.btn:focus-visible,.form-control:focus,.form-select:focus,.portal-nav-link:focus-visible,.portal-sidebar-toggle:focus-visible,.portal-topbar-toggle:focus-visible,.portal-user-button:focus-visible{box-shadow:0 0 0 0.25rem var(--portal-focus);outline:0}.badge,.portal-label{border-radius:7px;font-weight:700}.portal-shell{display:grid;grid-template-columns:268px minmax(0,1fr);min-height:100vh;transition:grid-template-columns 0.18s ease}body.portal-sidebar-collapsed .portal-shell,html.portal-sidebar-collapsed body .portal-shell{grid-template-columns:88px minmax(0,1fr)}.portal-sidebar{background:var(--portal-sidebar);color:#ffffff;min-height:100vh;position:sticky;top:0;z-index:1030}.portal-sidebar-inner{display:flex;flex-direction:column;gap:12px;min-height:100vh;overflow-x:hidden;padding:18px 16px}.portal-brand{align-items:center;color:#ffffff;display:flex;gap:12px;min-height:44px;overflow:hidden;text-decoration:none}.portal-brand:hover{color:#ffffff}.portal-brand-icon{align-items:center;background:rgba(255,255,255,0.12);border:1px solid rgba(255,255,255,0.1);border-radius:8px;display:inline-flex;flex:0 0 42px;height:42px;justify-content:center;width:42px}.portal-brand-text{font-size:1.12rem;font-weight:800;white-space:nowrap}.portal-sidebar-divider{border-color:rgba(255,255,255,0.14);margin:4px 0 8px;opacity:1}.portal-nav{display:grid;gap:20px}.portal-nav-section{display:grid;gap:6px}.portal-nav-heading{color:#7f8ca2;font-size:0.72rem;font-weight:800;padding:0 12px;text-transform:uppercase;white-space:nowrap}.portal-nav-link{align-items:center;border-radius:8px;color:var(--portal-sidebar-muted);display:flex;gap:12px;min-height:42px;overflow:hidden;padding:9px 12px;position:relative;text-decoration:none;transition:background 0.15s ease,color 0.15s ease}.portal-nav-link:hover,.portal-nav-link:focus{background:rgba(255,255,255,0.08);color:#ffffff}.portal-nav-link.active{background:linear-gradient(90deg,rgba(59,124,255,0.28),rgba(17,163,106,0.15));color:#ffffff}.portal-nav-link.active::before{background:var(--portal-sidebar-active);border-radius:8px;bottom:8px;content:"";left:0;position:absolute;top:8px;width:3px}.portal-nav-icon{align-items:center;display:inline-flex;flex:0 0 22px;justify-content:center;width:22px}.portal-nav-text{font-weight:650;white-space:nowrap}.portal-sidebar-footer{display:flex;justify-content:center;margin-top:auto;padding-top:16px}.portal-sidebar-toggle,.portal-topbar-toggle,.portal-user-button{border:0;cursor:pointer}.portal-sidebar-toggle{align-items:center;background:rgba(255,255,255,0.12);border-radius:50%;color:#ffffff;display:inline-flex;height:42px;justify-content:center;transition:background 0.15s ease,transform 0.15s ease;width:42px}.portal-sidebar-toggle:hover{background:rgba(255,255,255,0.2)}body.portal-sidebar-collapsed .portal-brand,html.portal-sidebar-collapsed body .portal-brand{justify-content:center}body.portal-sidebar-collapsed .portal-brand-text,body.portal-sidebar-collapsed .portal-nav-heading,body.portal-sidebar-collapsed .portal-nav-text,html.portal-sidebar-collapsed body .portal-brand-text,html.portal-sidebar-collapsed body .portal-nav-heading,html.portal-sidebar-collapsed body .portal-nav-text{opacity:0;pointer-events:none;width:0}body.portal-sidebar-collapsed .portal-nav-link,html.portal-sidebar-collapsed body .portal-nav-link{justify-content:center;padding-left:0;padding-right:0}body.portal-sidebar-collapsed .portal-sidebar-toggle i,html.portal-sidebar-collapsed body .portal-sidebar-toggle i{transform:rotate(180deg)}.portal-sidebar-backdrop{display:none}.portal-main{min-width:0}.portal-topbar{align-items:center;background:rgba(255,255,255,0.94);border-bottom:1px solid var(--portal-border);display:flex;gap:18px;justify-content:space-between;min-height:70px;padding:0 28px;position:sticky;top:0;z-index:1020}.portal-topbar-toggle{align-items:center;background:transparent;border-radius:8px;color:var(--portal-muted);display:none;height:40px;justify-content:center;width:40px}.portal-topbar-toggle:hover{background:#eef3f8;color:var(--portal-text)}.portal-page-title{display:grid;gap:2px;margin-right:auto;min-width:0}.portal-page-title span{color:var(--portal-muted);font-size:0.78rem;font-weight:700;text-transform:uppercase}.portal-page-title strong{color:var(--portal-text);font-size:1.05rem;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-user{align-items:center;display:flex;gap:12px}.portal-user-button{align-items:center;background:transparent;border-radius:8px;color:var(--portal-text);display:flex;gap:10px;max-width:260px;min-height:44px;padding:4px 8px}.portal-user-button:hover{background:#eef3f8}.portal-avatar{align-items:center;background:#eaf1ff;border:1px solid #d7e4ff;border-radius:50%;color:var(--portal-primary);display:inline-flex;flex:0 0 34px;height:34px;justify-content:center;width:34px}.portal-user-name{font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-menu{border-color:var(--portal-border);border-radius:8px}.dropdown-item{align-items:center;display:flex;min-height:36px}.dropdown-item:active{background:var(--portal-primary)}.portal-confirm-modal{border:0;box-shadow:0 24px 60px rgba(23,32,51,0.2)}.portal-confirm-heading{align-items:center;display:flex;gap:12px}.portal-confirm-icon{align-items:center;background:#fff3cd;border:1px solid #ffe69c;border-radius:8px;color:var(--portal-warning);display:inline-flex;flex:0 0 38px;height:38px;justify-content:center;width:38px}.portal-confirm-modal .modal-title{font-weight:800}.portal-confirm-modal .modal-body{color:var(--portal-muted)}.portal-auth-shell{min-height:100vh}.portal-auth-header{align-items:center;background:var(--portal-surface);border-bottom:1px solid var(--portal-border);display:flex;min-height:70px;padding:0 28px}.portal-auth-brand{color:var(--portal-text);font-size:1.25rem;font-weight:800;text-decoration:none}.portal-auth-brand:hover{color:var(--portal-text)}.portal-auth-content{padding:28px}.portal-content{padding:28px}.page-heading{margin-bottom:22px}.page-heading h1{font-size:1.7rem;font-weight:800;margin:0}.page-heading p{color:var(--portal-muted);margin:6px 0 0}.row-heading{align-items:center;display:flex;gap:16px;justify-content:space-between}.metric-grid,.split-grid{display:grid;gap:18px}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.split-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metric-card,.content-panel,.auth-panel{background:var(--portal-surface);border:1px solid var(--portal-border);border-radius:8px;box-shadow:var(--portal-shadow)}.metric-card{padding:22px}.metric-card span{color:var(--portal-muted);display:block;font-size:0.82rem;font-weight:750;margin-bottom:8px;text-transform:uppercase}.metric-card strong{color:var(--portal-text);display:block;font-size:1.32rem;margin-bottom:8px}.metric-card p{color:var(--portal-muted);margin:0}.content-panel{padding:22px}.content-panel.narrow{max-width:760px}.content-panel h2{font-size:1.15rem;font-weight:750;margin-bottom:16px}.auth-panel{margin:40px auto;max-width:460px;padding:28px}.auth-panel h1{font-size:1.45rem;font-weight:800;margin-bottom:20px}.auth-links{display:flex;justify-content:space-between;margin-top:16px}.inline-form{display:flex;gap:10px;margin-bottom:18px}.stack-form{display:grid;gap:10px;margin-bottom:18px}.stack-form.compact{margin-bottom:0}.row-form{align-items:center;display:grid;gap:8px;grid-template-columns:minmax(180px,1fr) auto auto}.table{--bs-table-bg:transparent;--bs-table-striped-bg:#f8fafc;border-color:var(--portal-border)}.table thead th{color:var(--portal-muted);font-size:0.78rem;font-weight:800;text-transform:uppercase}.table-actions{align-items:center;display:flex;gap:8px;justify-content:flex-end}.form-actions{display:flex;gap:10px;margin-top:20px}.check-row{align-items:center;display:flex;gap:8px}.alert{border-radius:8px}code{background:#eef2ff;border-radius:6px;color:#312e81;padding:2px 6px}@media (max-width:980px){.portal-shell,body.portal-sidebar-collapsed .portal-shell,html.portal-sidebar-collapsed body .portal-shell{display:block}.portal-sidebar{bottom:0;left:0;min-height:100vh;position:fixed;top:0;transform:translateX(-100%);transition:transform 0.18s ease;width:280px}body.portal-sidebar-open .portal-sidebar{transform:translateX(0)}body.portal-sidebar-collapsed .portal-brand,html.portal-sidebar-collapsed body .portal-brand{justify-content:flex-start}body.portal-sidebar-collapsed .portal-brand-text,body.portal-sidebar-collapsed .portal-nav-heading,body.portal-sidebar-collapsed .portal-nav-text,html.portal-sidebar-collapsed body .portal-brand-text,html.portal-sidebar-collapsed body .portal-nav-heading,html.portal-sidebar-collapsed body .portal-nav-text{opacity:1;pointer-events:auto;width:auto}body.portal-sidebar-collapsed .portal-nav-link,html.portal-sidebar-collapsed body .portal-nav-link{justify-content:flex-start;padding-left:12px;padding-right:12px}.portal-sidebar-footer{display:none}.portal-sidebar-backdrop{background:rgba(23,32,51,0.5);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1025}body.portal-sidebar-open .portal-sidebar-backdrop{display:block}.portal-topbar{padding-left:18px;padding-right:18px}.portal-topbar-toggle{display:inline-flex}.metric-grid,.split-grid{grid-template-columns:1fr}}@media (max-width:640px){.portal-auth-content,.portal-auth-header,.portal-content,.portal-topbar{padding-left:16px;padding-right:16px}.portal-content{padding-top:22px}.portal-user-name{display:none}.inline-form,.row-heading,.row-form{align-items:stretch;flex-direction:column;grid-template-columns:1fr}.table-actions,.form-actions,.auth-links{align-items:stretch;flex-direction:column}}