:root{--brand-red: #EA3057;--brand-red-dark: #9E1A3C;--brand-black: #191919;--brand-grey: #5B5553;--brand-taupe: #B1A7A5;--brand-light: #E5E5E5;--brand-white: #FFFFFF;--brand-pink: #F6C4D0;--bg: var(--brand-light);--panel: var(--brand-white);--panel-2: #F4F2F2;--border: var(--brand-taupe);--border-soft: #E2DCDB;--text: var(--brand-black);--muted: var(--brand-grey);--primary: var(--brand-red);--primary-hover: var(--brand-red-dark);--accent: var(--brand-pink);--dark: var(--brand-black);--dark-2: #232222;--dark-border: #353232;--dark-text: #F2EFEE;--dark-muted: var(--brand-taupe);--green: #1F8A4C;--red: var(--brand-red);--yellow: #C98A00;--orange: #D2600F;--purple: #7A3E9D;--blue: #2563A8;--gray: var(--brand-grey);--font-body: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-heading: "IBM Plex Sans Condensed", "IBM Plex Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, Consolas, monospace;--shadow-sm: 0 1px 2px rgba(25, 25, 25, .06), 0 1px 3px rgba(25, 25, 25, .05);--shadow: 0 2px 4px rgba(25, 25, 25, .04), 0 8px 24px -8px rgba(25, 25, 25, .12);--shadow-lg: 0 20px 40px -12px rgba(25, 25, 25, .25);--radius: 12px;--sidebar-w: 280px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-body);background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}p{color:var(--muted)}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-hover);text-decoration:underline}h1,h2,h3,h4{margin:0;font-family:var(--font-heading);font-weight:600;color:var(--text);letter-spacing:-.1px}code{font-family:var(--font-mono);font-size:12px;background:var(--panel-2);padding:2px 6px;border-radius:6px;color:var(--brand-red-dark);border:1px solid var(--border-soft)}.muted{color:var(--muted)}.small{font-size:12px}.mb{margin-bottom:12px}.text-green{color:var(--green)}.text-red{color:var(--red)}.text-yellow{color:var(--yellow)}.inline{display:inline-flex;align-items:center;gap:6px}.logo{display:flex;align-items:center}a.logo,a.logo:hover{color:inherit;text-decoration:none}.logo-img{display:block;height:72px;width:auto;max-width:100%;object-fit:contain;transition:transform .4s ease}a.logo:hover .logo-img{transform:scale(1.04)}.logo-lg .logo-img{height:96px}.input{width:100%;background:var(--panel);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:9px 12px;font:inherit;outline:none;transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--brand-taupe)}.input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #ea305726}.input-sm{padding:5px 8px;font-size:13px;width:auto;min-width:140px}textarea.input{resize:vertical}.form{display:flex;flex-direction:column;gap:14px}.form label{display:flex;flex-direction:column;gap:6px;font-family:var(--font-mono);font-size:11.5px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);font-weight:500}.form label .input{font-family:var(--font-body);text-transform:none;letter-spacing:normal;font-size:14px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.input-valid,.input-valid:focus{border-color:var(--green)}.input-invalid,.input-invalid:focus{border-color:var(--primary)}.password-validator{display:flex;flex-direction:column;gap:10px;margin-top:-4px}.strength{display:flex;align-items:center;gap:10px}.strength-bar{flex:1;display:grid;grid-template-columns:repeat(5,1fr);gap:4px}.strength-bar span{height:5px;border-radius:3px;background:var(--border-soft);transition:background .2s}.strength-bar span.filled.level-0{background:var(--brand-red-dark)}.strength-bar span.filled.level-1{background:var(--primary)}.strength-bar span.filled.level-2{background:var(--orange)}.strength-bar span.filled.level-3{background:var(--yellow)}.strength-bar span.filled.level-4{background:var(--green)}.strength-label{font-family:var(--font-mono);font-size:11px;text-transform:uppercase;letter-spacing:.5px;min-width:70px;text-align:right}.strength-label.level-0{color:var(--brand-red-dark)}.strength-label.level-1{color:var(--primary)}.strength-label.level-2{color:var(--orange)}.strength-label.level-3{color:var(--yellow)}.strength-label.level-4{color:var(--green)}.password-rules{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;font-size:12.5px;color:var(--muted)}.password-rules li:before{content:"✕";display:inline-block;width:16px;color:var(--primary);font-weight:700}.password-rules li.passed{color:var(--green)}.password-rules li.passed:before{content:"✓";color:var(--green)}.match-hint{font-size:12.5px;margin-top:-4px}.match-hint.ok{color:var(--green)}.match-hint.bad{color:var(--primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--panel);border:1px solid var(--border);color:var(--text);padding:9px 16px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s,box-shadow .15s}.btn:hover{border-color:var(--text);text-decoration:none}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 4px 12px -4px #ea305780}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}.btn-success{background:var(--green);border-color:var(--green);color:#fff}.btn-success:hover{background:#176b3b;border-color:#176b3b}.btn-danger{background:var(--brand-red-dark);border-color:var(--brand-red-dark);color:#fff}.btn-danger:hover{background:#7d1430;border-color:#7d1430}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--panel-2);border-color:var(--border-soft)}.btn-sm{padding:5px 10px;font-size:12px}.btn-block{width:100%}.btn-row{display:flex;gap:8px}.icon-btn{background:none;border:none;color:var(--text);font-size:20px;cursor:pointer}.alert{padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:16px}.form .alert{margin-bottom:0}.alert-error{background:#fdecf0;border:1px solid var(--brand-pink);color:var(--brand-red-dark)}.alert-success{background:#e8f5ee;border:1px solid #A8D8BC;color:#176b3b}.auth-page{min-height:100%;display:grid;grid-template-columns:1.1fr 1fr}.auth-hero{padding:64px;display:flex;flex-direction:column;justify-content:center;gap:20px;background:radial-gradient(circle at 15% 15%,rgba(234,48,87,.22),transparent 50%),radial-gradient(circle at 85% 85%,rgba(158,26,60,.25),transparent 50%),var(--dark);color:var(--dark-text)}.auth-hero h2{color:#fff}.auth-hero h2{font-size:34px;line-height:1.15;max-width:480px}.auth-hero p{color:var(--dark-muted);max-width:480px;line-height:1.6}.auth-points{list-style:none;padding:0;margin:0;display:grid;gap:10px}.auth-points li:before{content:"✓";color:var(--primary);margin-right:10px;font-weight:700}.auth-panel{display:flex;align-items:center;justify-content:center;padding:32px;background:var(--bg)}.auth-card{width:100%;max-width:440px;background:var(--panel);padding:36px;border-radius:16px;box-shadow:var(--shadow)}.auth-card h1{font-size:28px;margin-bottom:6px}.auth-card>.muted{margin:0 0 24px}.auth-divider{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1px}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.btn-google{gap:10px;padding:10px 16px}.auth-switch{margin-top:20px;text-align:center;color:var(--muted)}.app-shell{display:flex;min-height:100%}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--dark);color:var(--dark-text);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:10;transition:width .2s ease}.sidebar-brand{position:relative;padding:10px 22px 8px;border-bottom:1px solid var(--dark-border);margin-bottom:4px}.brand-compact{display:none}.logo-compact .logo-img{height:44px}.collapse-btn{position:absolute;top:50%;right:-12px;transform:translateY(-50%);width:24px;height:24px;border-radius:50%;display:grid;place-items:center;cursor:pointer;background:var(--dark-2);color:var(--dark-muted);border:1px solid var(--dark-border);transition:background .18s,color .18s,border-color .18s}.collapse-btn:hover{background:var(--primary);border-color:var(--primary);color:#fff}.sidebar-close{display:none;position:absolute;top:50%;right:14px;transform:translateY(-50%);width:34px;height:34px;border-radius:10px;place-items:center;cursor:pointer;background:#ffffff0d;color:#cfc8c6;border:1px solid var(--dark-border);transition:background .18s,color .18s,border-color .18s}.sidebar-close:hover{background:var(--primary);border-color:var(--primary);color:#fff}@media (min-width: 861px){.sidebar-collapsed{--sidebar-w: 84px}.sidebar-collapsed .sidebar-brand{padding:10px 0 8px;display:flex;justify-content:center}.sidebar-collapsed .brand-full{display:none}.sidebar-collapsed .brand-compact{display:block}.sidebar-collapsed .nav-heading{font-size:0;padding:0;margin:10px 8px;border-top:1px solid var(--dark-border)}.sidebar-collapsed .nav-link{justify-content:center}.sidebar-collapsed .nav-link:hover{transform:none}.sidebar-collapsed .nav-text,.sidebar-collapsed .sidebar-status div,.sidebar-collapsed .logout-btn span{display:none}.sidebar-collapsed .nav-count{position:absolute;top:2px;right:2px;min-width:16px;height:16px;padding:0 4px;font-size:9.5px;box-shadow:0 0 0 2px var(--dark)}.sidebar-collapsed .sidebar-status{justify-content:center;padding:12px 0}.sidebar-collapsed .logout-btn{padding:11px 0}}.sidebar-nav{flex:1;overflow-y:auto;padding:4px 14px 14px;display:flex;flex-direction:column;gap:4px}.nav-heading{font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:1.4px;text-transform:uppercase;color:#8a8280;padding:16px 12px 6px}.nav-link{position:relative;display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:10px;color:#cfc8c6;font-weight:500;border:1px solid transparent;transition:background .18s,color .18s,border-color .18s,transform .18s}.nav-link:hover{background:#ffffff0d;color:#fff;text-decoration:none;transform:translate(2px)}.nav-link.active{color:#fff;font-weight:600;background:#ea305724;border-color:#ea30574d}.nav-link.active:before{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:4px;border-radius:0 4px 4px 0;background:var(--primary)}.nav-icon{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;flex-shrink:0;background:#ffffff0d;color:var(--dark-muted);border:1px solid rgba(255,255,255,.06);transition:background .18s,color .18s}.nav-link:hover .nav-icon{color:var(--brand-pink)}.nav-link.active .nav-icon{background:var(--primary);color:#fff;border-color:transparent;box-shadow:0 4px 14px -4px #ea3057cc}.nav-text{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-count{min-width:22px;height:20px;padding:0 7px;border-radius:999px;display:grid;place-items:center;font-family:var(--font-mono);font-size:11px;font-weight:600}.count-blue{background:#ffffff1a;color:#fff}.count-yellow{background:#f6c4d033;color:var(--brand-pink)}.count-red{background:var(--primary);color:#fff}.sidebar-status{margin:12px 14px 10px;padding:12px 14px;border-radius:12px;background:var(--dark-2);border:1px solid var(--dark-border);display:flex;align-items:center;gap:12px}.sidebar-status div{display:flex;flex-direction:column}.sidebar-status strong{font-size:12.5px;color:#fff}.sidebar-status span{font-family:var(--font-mono);font-size:11px;color:var(--dark-muted)}.pulse{width:9px;height:9px;border-radius:50%;background:#3dcb7a;flex-shrink:0;animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 #3dcb7a99}70%{box-shadow:0 0 0 8px #3dcb7a00}to{box-shadow:0 0 #3dcb7a00}}.sidebar-footer{padding:0 14px 16px}.logout-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:11px 14px;border-radius:10px;cursor:pointer;font:inherit;font-weight:600;background:transparent;border:1px solid var(--dark-border);color:#cfc8c6;transition:background .18s,border-color .18s,color .18s}.logout-btn:hover{background:var(--primary);border-color:var(--primary);color:#fff}.module-tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--border);margin-bottom:-4px}.module-tab{padding:10px 16px;color:var(--muted);font-weight:600;font-size:13px;border-bottom:2px solid transparent;margin-bottom:-1px}.module-tab:hover{color:var(--text);text-decoration:none}.module-tab.active{color:var(--text);border-bottom-color:var(--primary)}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:var(--primary);font-family:var(--font-mono);font-weight:600;font-size:13px;flex-shrink:0;color:#fff}.user-meta{display:flex;flex-direction:column;min-width:0;text-align:left;line-height:1.3}.user-meta strong{font-size:13px}.user-meta span{color:var(--muted);font-size:11.5px}.sidebar-backdrop{display:none}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{height:68px;padding:0 28px;display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--border-soft);background:#ffffffeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0;z-index:5}.breadcrumb{flex:1;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;min-width:0}.breadcrumb svg{opacity:.5;flex-shrink:0}.breadcrumb span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.crumb-root{font-family:var(--font-mono);font-size:12px;color:var(--brand-taupe)}.crumb-current{color:var(--text);font-weight:600}.topbar-actions{display:flex;align-items:center;gap:10px}.menu-btn{display:none}.topbar-icon{position:relative;width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:var(--panel);border:1px solid var(--border-soft);color:var(--muted);cursor:pointer;transition:border-color .15s,color .15s}.topbar-icon:hover{border-color:var(--primary);color:var(--primary)}.topbar-badge{position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--primary);color:#fff;font-family:var(--font-mono);font-size:10.5px;font-weight:600;display:grid;place-items:center;border:2px solid var(--panel)}.topbar-badge.badge-warn{background:var(--brand-black);color:#fff}.user-menu{position:relative;margin-left:6px;padding-left:16px;border-left:1px solid var(--border-soft)}.user-trigger{display:flex;align-items:center;gap:10px;background:none;border:none;color:var(--text);font:inherit;cursor:pointer;padding:4px 8px 4px 4px;border-radius:999px;transition:background .15s}.user-trigger:hover{background:var(--panel-2)}.user-dropdown{position:absolute;right:0;top:calc(100% + 10px);width:240px;background:var(--panel);border:1px solid var(--border-soft);border-radius:12px;box-shadow:var(--shadow-lg);padding:6px;z-index:30}.user-dropdown-head{padding:10px 12px;border-bottom:1px solid var(--border-soft);margin-bottom:6px;display:flex;flex-direction:column}.user-dropdown-head span{color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis}.dropdown-item{width:100%;display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;background:none;border:none;color:var(--primary);font:inherit;font-weight:500;cursor:pointer;text-align:left}.dropdown-item:hover{background:#fdecf0;color:var(--primary-hover)}.content{padding:28px;display:flex;flex-direction:column;gap:20px;max-width:1400px;width:100%}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;background:var(--dark);color:var(--dark-text);padding:26px 28px;border-radius:var(--radius);background-image:radial-gradient(circle at 100% 0%,rgba(234,48,87,.28),transparent 45%)}.page-header h1{font-size:28px;color:#fff}.page-header p{margin:6px 0 0;color:var(--dark-muted)}.page-header .muted{color:var(--dark-muted)}.page-header .btn:not(.btn-primary):not(.btn-success):not(.btn-danger){background:transparent;color:#fff;border-color:var(--dark-border)}.page-header .btn:not(.btn-primary):not(.btn-success):not(.btn-danger):hover{border-color:#fff}.page-section{font-family:var(--font-mono);font-size:11.5px;text-transform:uppercase;letter-spacing:1.2px;color:var(--brand-pink);font-weight:500;margin-bottom:6px}.section-title{font-size:20px;margin-top:8px}.card{background:var(--panel);border:1px solid transparent;border-radius:var(--radius);box-shadow:var(--shadow)}.card-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border-soft)}.card-header h3{font-size:17px}.card-body{padding:20px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.stat-card{background:var(--panel);border-radius:var(--radius);padding:16px 18px;position:relative;overflow:hidden;box-shadow:var(--shadow)}.stat-card:before{content:"";position:absolute;left:0;top:0;right:0;height:3px;background:var(--brand-taupe)}.stat-blue:before{background:var(--blue)}.stat-green:before{background:var(--green)}.stat-red:before{background:var(--primary)}.stat-yellow:before{background:var(--yellow)}.stat-orange:before{background:var(--orange)}.stat-purple:before{background:var(--purple)}.stat-gray:before{background:var(--gray)}.stat-label{font-family:var(--font-mono);color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.8px;font-weight:500}.stat-value{font-family:var(--font-heading);font-size:32px;font-weight:700;margin:6px 0 2px;line-height:1.1}.stat-hint{color:var(--muted);font-size:12px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:start}.badge{display:inline-block;padding:3px 9px;border-radius:999px;font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.3px;white-space:nowrap;border:1px solid}.badge-green{color:#176b3b;background:#e8f5ee;border-color:#a8d8bc}.badge-red{color:var(--brand-red-dark);background:#fdecf0;border-color:var(--brand-pink)}.badge-yellow{color:#8a5e00;background:#fdf4dc;border-color:#ebcf85}.badge-orange{color:#9a4309;background:#fdeee2;border-color:#f1be96}.badge-blue{color:#1d4c82;background:#e7eff8;border-color:#a9c3e3}.badge-purple{color:#5c2c78;background:#f2eaf7;border-color:#cfb3e0}.badge-gray{color:var(--brand-grey);background:var(--panel-2);border-color:var(--border)}.toolbar{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}.toolbar .search{max-width:320px}.toolbar select.input{width:auto}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{text-align:left;font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted);font-weight:500;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap;background:var(--panel-2)}td{padding:12px;border-bottom:1px solid var(--border-soft);vertical-align:middle}tbody tr{transition:background .12s}tbody tr:hover{background:#fbf4f6}td.empty{text-align:center;color:var(--muted);padding:32px}.progress{height:6px;background:var(--brand-light);border-radius:99px;overflow:hidden;flex:1;min-width:80px}.progress-fill{height:100%;border-radius:99px;transition:width .3s}.fill-green{background:var(--green)}.fill-blue{background:var(--primary)}.fill-yellow{background:var(--yellow)}.fill-red{background:var(--brand-red-dark)}.fill-gray{background:var(--gray)}.progress-cell{display:flex;align-items:center;gap:10px}.confidence{display:flex;align-items:center;gap:10px;min-width:150px}.confidence-value{font-family:var(--font-mono);font-weight:600;font-size:12.5px;min-width:40px}.media-thumb{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:6px;font-size:12px}.media-image{background:#fdecf0;color:var(--primary)}.media-video{background:var(--brand-light);color:var(--brand-black)}.media-preview{position:relative;border-radius:10px;min-height:180px;display:grid;place-items:center;color:var(--dark-muted);font-family:var(--font-mono);font-size:12px;font-weight:500;background:repeating-linear-gradient(45deg,rgba(255,255,255,.03) 0 10px,transparent 10px 20px),linear-gradient(135deg,#2A2727,var(--dark))}.bbox{position:absolute;left:30%;top:25%;width:40%;height:45%;border:2px solid var(--primary);border-radius:4px}.bbox span{position:absolute;top:-22px;left:-2px;background:var(--primary);color:#fff;font-family:var(--font-mono);font-size:10.5px;font-weight:500;padding:2px 6px;border-radius:4px 4px 0 0;white-space:nowrap}.details{display:grid;grid-template-columns:140px 1fr;gap:10px 16px;margin:0}.details dt{font-family:var(--font-mono);font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);padding-top:2px}.details dd{margin:0;font-weight:500}.lead{line-height:1.7;margin-top:0}.tag-list{display:flex;flex-wrap:wrap;gap:8px}.tag{background:#fdecf0;border:1px solid var(--brand-pink);color:var(--brand-red-dark);border-radius:999px;padding:4px 12px;font-family:var(--font-mono);font-size:11.5px}.event-detail{display:grid;grid-template-columns:1fr 1fr;gap:20px}.module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}.module-head{display:flex;gap:12px;align-items:center;margin-bottom:14px}.module-head h3{font-size:17px}.module-icon{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;background:var(--primary);color:#fff;font-size:18px}.module-links{list-style:none;padding:0;margin:0;display:grid;gap:8px}.module-links a{color:var(--muted);font-size:13px}.module-links a:hover{color:var(--primary)}.facility-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.facility-card{text-align:left;background:var(--panel);border:2px solid transparent;border-radius:var(--radius);padding:16px;color:var(--text);font:inherit;cursor:pointer;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow);transition:border-color .15s,transform .15s}.facility-card:hover{border-color:var(--brand-pink);transform:translateY(-1px)}.facility-card.selected{border-color:var(--primary)}.facility-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.facility-top h3{font-size:16px}.facility-meta{display:flex;justify-content:space-between;font-family:var(--font-mono);font-size:11.5px;color:var(--muted);margin-top:6px}.bar-list{display:grid;gap:14px}.bar-row{display:grid;grid-template-columns:130px 1fr 30px;align-items:center;gap:12px}.bar-label{font-size:13px}.bar-track{height:10px;background:var(--brand-light);border-radius:99px;overflow:hidden}.bar-fill{height:100%;border-radius:99px}.bar-value{text-align:right;font-family:var(--font-mono);font-weight:600}.category-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}.category-list li{display:flex;gap:12px}.category-list p{margin:4px 0 0}.category-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.swatch{width:12px;height:12px;border-radius:4px;margin-top:4px;flex-shrink:0}.kanban{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:14px;overflow-x:auto}.kanban-col{background:#efeded;border:1px solid var(--border-soft);border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:300px}.kanban-head{display:flex;justify-content:space-between;align-items:center;padding:4px}.kanban-head h3,.kanban-head strong{font-family:var(--font-heading)}.kanban-card{background:var(--panel);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-sm)}.kanban-card p{margin:0;font-weight:500;color:var(--text)}.kanban-card-top{display:flex;align-items:center;gap:8px}.kanban-card-top .badge{margin-left:auto}.kanban-card .input-sm{width:100%}.simple-list{list-style:none;margin:0;padding:0;display:grid;gap:12px}.simple-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--border-soft)}.simple-list li:last-child{border-bottom:none;padding-bottom:0}.inspector-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.inspector-card{background:var(--panel);border-radius:var(--radius);padding:14px;display:flex;gap:12px;align-items:center;box-shadow:var(--shadow)}.inspector-card>div:last-child{display:flex;flex-direction:column;gap:3px}.timeline{list-style:none;margin:0;padding:0 0 0 18px;border-left:2px solid var(--border-soft);display:grid;gap:18px}.timeline li{position:relative}.timeline li:before{content:"";position:absolute;left:-25px;top:4px;width:12px;height:12px;border-radius:50%;background:var(--primary);border:2px solid var(--panel);box-shadow:0 0 0 2px var(--brand-pink)}.timeline-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.timeline p{margin:6px 0 4px;line-height:1.5}.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}.tab{background:var(--panel);border:1px solid var(--border-soft);color:var(--muted);padding:7px 14px;border-radius:8px;font:inherit;font-weight:600;cursor:pointer;transition:all .15s}.tab:hover{color:var(--text);border-color:var(--border)}.tab.active{color:#fff;border-color:var(--brand-black);background:var(--brand-black)}.review-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.review-card .card-body{display:flex;flex-direction:column;gap:14px}.review-info{display:flex;flex-direction:column;gap:10px}.review-title{display:flex;justify-content:space-between;align-items:center}.review-info p{margin:0}.chart{width:100%;height:auto}.grid-line{stroke:var(--border-soft);stroke-dasharray:3 4}.axis-text{fill:var(--muted);font-family:var(--font-mono);font-size:10.5px}.legend{display:flex;flex-wrap:wrap;gap:16px;margin-top:10px;font-size:13px}.legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px}.active-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.active-card .card-body{display:flex;flex-direction:column;gap:10px}.active-card h3{font-size:17px}.active-top,.active-foot{display:flex;justify-content:space-between;align-items:center}.alert-feed{display:flex;flex-direction:column;gap:10px}.alert-item{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 18px;background:var(--panel);border-left:4px solid var(--border);border-radius:10px;box-shadow:var(--shadow-sm)}.alert-item.level-critical{border-left-color:var(--primary)}.alert-item.level-high{border-left-color:var(--orange)}.alert-item.level-medium{border-left-color:var(--yellow)}.alert-item.level-low{border-left-color:var(--green)}.alert-item.acked{opacity:.55}.alert-main{display:flex;align-items:center;gap:14px}.facility-status-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.facility-status .card-body{display:flex;flex-direction:column;gap:10px}.facility-status.status-degraded{border-color:#ebcf85}.facility-status.status-offline{border-color:var(--primary)}.mini-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:6px 0}.mini-stats div{background:var(--panel-2);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:2px}.mini-stats strong{font-family:var(--font-heading);font-size:20px}.mini-stats span{font-family:var(--font-mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--muted)}@keyframes slide-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@keyframes toast-in{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes value-flash{0%{color:var(--primary);transform:scale(1.06)}to{color:inherit;transform:none}}@keyframes shrink{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:200px 0}}@keyframes live-ping{0%{box-shadow:0 0 #ea30578c}80%,to{box-shadow:0 0 0 7px #ea305700}}.stat-value{transform-origin:left center;animation:value-flash .9s ease-out}.alert-item,.feed-item{animation:slide-in .35s ease-out}.spin{display:inline-grid;animation:spin .9s linear infinite}.btn:disabled{opacity:.6;cursor:default}.live-pill{display:inline-flex;align-items:center;gap:8px;height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--border-soft);background:var(--panel);font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:1px;text-transform:uppercase;color:var(--text);cursor:pointer;transition:border-color .15s,background .15s}.live-pill:hover{border-color:var(--primary)}.live-pill svg{opacity:.55}.live-dot{width:8px;height:8px;border-radius:50%;background:var(--brand-taupe)}.live-connected .live-dot{background:var(--primary);animation:live-ping 1.6s infinite}.live-connecting .live-dot,.live-reconnecting .live-dot{background:var(--yellow);animation:pulse 1.2s infinite}.live-paused{background:var(--panel-2);color:var(--muted)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:8px}.section-head .section-title{margin-top:0}.section-meta{font-family:var(--font-mono);font-size:11.5px;color:var(--muted)}.card-kpis{display:flex;align-items:center;gap:12px}.card-kpis strong{font-family:var(--font-heading);font-size:20px}.card-kpis>span{color:var(--muted);font-size:12px}.live-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:20px;align-items:stretch}.live-grid .card{display:flex;flex-direction:column}.live-grid .card-body{flex:1}.throughput{position:relative}.tp-head{animation:live-ping 1.6s infinite}.chart-tip{position:absolute;top:4px;transform:translate(-50%);pointer-events:none;background:var(--dark);color:#fff;padding:6px 10px;border-radius:8px;font-size:12px;display:flex;flex-direction:column;align-items:center;white-space:nowrap;box-shadow:var(--shadow)}.chart-tip span{font-family:var(--font-mono);font-size:10.5px;color:var(--dark-muted)}.segmented{display:inline-flex;background:var(--panel-2);border:1px solid var(--border-soft);border-radius:9px;padding:3px;margin-bottom:12px}.segmented button{background:none;border:none;padding:5px 12px;border-radius:6px;font:inherit;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.segmented button:hover{color:var(--text)}.segmented button.active{background:var(--brand-black);color:#fff}.feed-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;max-height:300px;overflow-y:auto}.feed-empty{color:var(--muted);padding:24px 0;text-align:center;font-family:var(--font-mono);font-size:12px}.feed-item{display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:8px;border-left:3px solid transparent}.feed-item:hover{background:var(--panel-2)}.feed-item.sev-critical{border-left-color:var(--primary);background:#fef5f7}.feed-item.sev-high{border-left-color:var(--orange)}.feed-swatch{width:10px;height:10px;border-radius:3px;flex-shrink:0}.feed-main{flex:1;min-width:0}.feed-title{display:flex;align-items:center;gap:8px;justify-content:space-between}.feed-title strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.feed-meta{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.feed-time{font-family:var(--font-mono);font-size:10.5px;color:var(--muted);white-space:nowrap;min-width:56px;text-align:right}.toast-stack{position:fixed;right:20px;bottom:20px;z-index:50;display:flex;flex-direction:column;gap:10px;width:340px;max-width:calc(100vw - 40px)}.toast{position:relative;overflow:hidden;display:flex;gap:10px;padding:14px 14px 16px 16px;background:var(--dark);color:var(--dark-text);border-radius:12px;border-left:4px solid var(--orange);box-shadow:var(--shadow-lg);animation:toast-in .3s ease-out}.toast-critical{border-left-color:var(--primary)}.toast-body{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}.toast-head{display:flex;justify-content:space-between;align-items:center}.toast-time,.toast-meta{font-family:var(--font-mono);font-size:10.5px;color:var(--dark-muted)}.toast strong{color:#fff;font-size:13.5px}.toast-link{color:var(--brand-pink);font-size:12px;font-weight:600;margin-top:2px}.toast-link:hover{color:#fff}.toast-close{background:none;border:none;color:var(--dark-muted);cursor:pointer;padding:2px;height:fit-content}.toast-close:hover{color:#fff}.toast-timer{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--primary);transform-origin:left;animation:shrink 6.5s linear forwards}.weather-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:14px}.weather-card{border:1px solid var(--border-soft);border-top:3px solid var(--brand-taupe);border-radius:10px;padding:14px;display:flex;flex-direction:column;gap:6px;transition:transform .15s,box-shadow .15s}.weather-card:hover{transform:translateY(-2px);box-shadow:var(--shadow)}.weather-card.impact-green{border-top-color:var(--green)}.weather-card.impact-yellow{border-top-color:var(--yellow)}.weather-card.impact-red{border-top-color:var(--primary)}.weather-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.weather-card h4{font-size:15px;line-height:1.2}.weather-loc{font-family:var(--font-mono);font-size:10.5px;color:var(--muted)}.weather-icon-lg{font-size:26px;line-height:1;color:var(--brand-grey)}.weather-temp{font-family:var(--font-heading);font-size:34px;font-weight:700;line-height:1;margin-top:4px}.weather-temp small{font-size:16px;color:var(--muted);margin-left:2px}.weather-cond{color:var(--muted);font-size:13px}.weather-metrics{display:flex;gap:10px;flex-wrap:wrap;font-family:var(--font-mono);font-size:11px;color:var(--muted);padding:6px 0;border-top:1px solid var(--border-soft);border-bottom:1px solid var(--border-soft)}.weather-metrics span,.weather-stat{display:inline-flex;align-items:center;gap:4px}.weather-impact{display:flex;flex-direction:column;gap:4px}.weather-impact span:last-child{font-size:11.5px;color:var(--muted);line-height:1.4}.weather-strip{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:12.5px;padding:8px 10px;background:var(--panel-2);border-radius:8px}.weather-strip .weather-stat{font-family:var(--font-mono);font-size:11px;color:var(--muted)}.weather-strip .badge{margin-left:auto}.weather-icon{font-size:16px}.skeleton-lines{display:grid;gap:8px;margin-top:6px}.skeleton-lines i{display:block;height:12px;border-radius:6px;background:linear-gradient(90deg,var(--panel-2) 0,#ECE8E7 50%,var(--panel-2) 100%) no-repeat;background-size:400px 100%;animation:shimmer 1.2s infinite linear}.skeleton-lines i:first-child{height:28px;width:50%}.skeleton-lines i:last-child{width:70%}@keyframes grow-y{0%{transform:scaleY(0)}to{transform:scaleY(1)}}@keyframes grow-x{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes draw{0%{stroke-dashoffset:1200}to{stroke-dashoffset:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.chart-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:20px;align-items:stretch}.chart-row>.card{display:flex;flex-direction:column}.chart-row>.card>.card-body{flex:1;display:flex;flex-direction:column;justify-content:center}.chart-wrap{position:relative}.chart-empty{padding:40px 0;text-align:center;color:var(--muted);font-family:var(--font-mono);font-size:12px}.threshold-text{fill:var(--brand-black);font-weight:600}.bar-rect{transform-box:fill-box;transform-origin:bottom;animation:grow-y .6s cubic-bezier(.2,.8,.2,1) both;transition:opacity .15s}.line-path{stroke-dasharray:1200;animation:draw 1.1s ease-out both}.chart-tip{transform:translate(-50%,calc(-100% - 8px))}.throughput .chart-tip{transform:translate(-50%)}.chart-tip-list{transform:translate(-50%);align-items:stretch;gap:3px;min-width:160px;z-index:2}.chart-tip-list>span{text-align:center}.chart-tip-list div{display:flex;align-items:center;gap:6px;font-size:11.5px}.chart-tip-list div i{width:8px;height:8px;border-radius:2px}.chart-tip-list div strong{margin-left:auto;padding-left:10px;font-family:var(--font-mono);font-weight:500}.donut{display:flex;align-items:center;gap:22px;flex-wrap:wrap;justify-content:center}.donut-svg{flex-shrink:0;animation:fade-in .5s ease-out}.donut-seg{cursor:pointer;transition:stroke-width .15s,opacity .15s}.donut-value{font-family:var(--font-heading);font-size:30px;font-weight:700;fill:var(--brand-black)}.donut-label{font-family:var(--font-mono);font-size:9.5px;fill:var(--muted);text-transform:uppercase;letter-spacing:.6px}.chart-legend{list-style:none;margin:0;padding:0;display:grid;gap:4px;flex:1;min-width:170px}.chart-legend li{display:grid;grid-template-columns:10px 1fr auto 40px;align-items:center;gap:8px;padding:5px 8px;border-radius:6px;font-size:13px;cursor:default;transition:background .12s}.chart-legend li.active,.chart-legend li:hover{background:var(--panel-2)}.chart-legend i{width:10px;height:10px;border-radius:3px}.legend-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.legend-value{font-weight:600}.legend-pct{font-family:var(--font-mono);font-size:11px;color:var(--muted);text-align:right}.inline-legend{display:flex;flex-wrap:wrap;gap:4px 14px;margin-bottom:10px}.inline-legend li{display:flex;padding:0;font-size:12px;color:var(--muted)}.inline-legend li:hover{background:none}.hbar{display:grid;gap:12px}.hbar-row{display:grid;grid-template-columns:minmax(90px,140px) 1fr 52px;align-items:center;gap:12px}.hbar-label{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hbar-track{display:flex;height:14px;background:var(--brand-light);border-radius:99px;overflow:visible}.hbar-fill{position:relative;height:100%;transform-origin:left;animation:grow-x .7s cubic-bezier(.2,.8,.2,1) both;transition:opacity .15s,filter .15s;cursor:default}.hbar-fill:first-child{border-radius:99px 0 0 99px}.hbar-fill:last-child{border-radius:0 99px 99px 0}.hbar-fill:only-child{border-radius:99px}.hbar-fill:hover{filter:brightness(1.1)}.hbar-fill.dim{opacity:.4}.hbar-tip{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);white-space:nowrap;z-index:3;background:var(--dark);color:#fff;font-size:11.5px;padding:4px 8px;border-radius:6px;pointer-events:none}.hbar-value{text-align:right;font-family:var(--font-mono);font-size:12px;font-weight:600}.gauge{display:flex;flex-direction:column;align-items:center;gap:4px}.gauge-svg{width:100%;max-width:260px}.gauge-arc{transition:stroke-dasharray .8s cubic-bezier(.2,.8,.2,1)}.gauge-value{font-family:var(--font-heading);font-size:32px;font-weight:700;fill:var(--brand-black)}.gauge-caption{margin:0;font-size:12.5px;text-align:center;max-width:300px}.link-btn{background:none;border:0;padding:0;color:var(--brand-black);font:inherit;font-weight:600;text-align:left;cursor:pointer}.link-btn:hover{color:var(--primary)}.action-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;margin-bottom:16px}.image-card{margin:0;border:1px solid var(--border-soft);border-radius:10px;overflow:hidden;background:var(--panel-2)}.image-card img{width:100%;height:120px;object-fit:cover;display:block;background:#232222}.image-card figcaption{padding:8px 10px;font-size:13px}.object-frame{position:relative;background:#232222;border-radius:10px;aspect-ratio:16 / 9;margin-bottom:12px}.object-box{position:absolute;border:2px solid var(--primary)}.object-box span{position:absolute;top:-20px;left:-2px;background:var(--primary);color:#fff;font-family:var(--font-mono);font-size:10.5px;padding:2px 6px;white-space:nowrap}.pulse-alert{background:var(--primary)}.heatmap{display:grid;gap:4px;overflow-x:auto}.heat-line{display:contents}.heat-col{font-family:var(--font-mono);font-size:10px;color:var(--muted);text-align:center;text-transform:uppercase;letter-spacing:.4px;padding-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.heat-row{font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;align-self:center}.heat-cell{height:36px;border-radius:6px;display:grid;place-items:center;font-family:var(--font-mono);font-size:12px;font-weight:600;transition:transform .12s,box-shadow .12s;animation:fade-in .5s ease-out both}.heat-cell.active{transform:scale(1.08);box-shadow:0 0 0 2px var(--brand-black)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition:none!important}}@media (max-width: 1024px){.grid-2,.event-detail,.live-grid{grid-template-columns:1fr}.kanban{grid-template-columns:repeat(4,240px)}}@media (max-width: 860px){.auth-page{grid-template-columns:1fr}.auth-hero{padding:32px}.auth-card{padding:24px}.sidebar{position:fixed;left:0;top:0;z-index:20;transform:translate(-100%);transition:transform .2s}.nav-open .sidebar{transform:none}.collapse-btn{display:none}.sidebar-close{display:grid}.nav-open .sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#19191980;z-index:15}.menu-btn{display:block}.topbar{padding:0 16px}.user-meta,.crumb-root,.breadcrumb>svg:first-of-type{display:none}.user-menu{padding-left:8px}.content{padding:16px}.page-header{padding:20px}.form-row{grid-template-columns:1fr}}
