:root{--ps-primary:#2563eb;--ps-primary-hover:#1d4ed8;--ps-primary-soft:#eff6ff;--ps-background:#f6f8fb;--ps-surface:#fff;--ps-surface-muted:#f8fafc;--ps-text:#0f172a;--ps-text-secondary:#475569;--ps-text-muted:#64748b;--ps-border:#e2e8f0;--ps-border-strong:#cbd5e1;--ps-available:#15803d;--ps-occupied:#dc2626;--ps-unknown:#b45309;--ps-radius-sm:8px;--ps-radius-md:12px;--ps-radius-lg:16px;--ps-shadow-sm:0 1px 3px #0f172a0a;--ps-shadow-md:0 8px 24px #0f172a0f;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}body{background:var(--ps-background);color:var(--ps-text)}button,input,select,textarea{font:inherit}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline-offset:2px;outline:3px solid #93c5fd}.session-header{background:#0e1728;border-bottom:1px solid #26354b;justify-content:space-between;align-items:center;gap:24px;min-height:84px;padding:16px clamp(20px,3vw,44px);display:flex}.session-brand,.session-actions{align-items:center;gap:14px;display:flex}.session-brand-icon{color:#fff;background:#2563eb;border-radius:12px;flex-shrink:0;place-items:center;width:42px;height:42px;font-size:22px;font-weight:800;display:grid}.session-brand-text{flex-direction:column;gap:3px;display:flex}.session-brand-text strong{color:#f1f5f9;letter-spacing:-.025em;font-size:17px}.session-brand-text span,.session-context{color:#94a3b8;font-size:12px}.session-actions button{color:#e2e8f0;background:#172338;border:1px solid #334155;border-radius:9px;padding:10px 18px;font-weight:600}.session-actions button:hover{background:#243650}.session-actions button:focus-visible{outline-offset:3px;outline:3px solid #93c5fd}@media (width<=640px){.session-header{min-height:72px}.session-context,.session-brand-text span{display:none}}*{box-sizing:border-box}body{color:#e5e7eb;background:#0b1220;margin:0;font-family:Inter,system-ui,sans-serif}.app{max-width:1600px;margin:0 auto;padding:24px}header h1{margin:0;font-size:28px}header p{color:#94a3b8}.toolbar{flex-wrap:wrap;gap:12px;margin:24px 0;display:flex}button{color:#fff;cursor:pointer;background:#2563eb;border:0;border-radius:8px;padding:11px 16px}button:disabled{opacity:.4;cursor:not-allowed}.workspace{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:20px;display:grid}.canvas-panel{background:#111827;border:1px solid #334155;border-radius:12px;overflow:auto}.canvas-panel>.empty{text-align:center;color:#94a3b8;padding:100px 20px}aside{background:#111827;border:1px solid #334155;border-radius:12px;padding:20px}aside h2{margin-top:0}aside p{color:#94a3b8;font-size:14px}.bay-item{border-bottom:1px solid #334155;justify-content:space-between;padding:12px 0;font-size:14px;display:flex}@media (width<=900px){.workspace{grid-template-columns:1fr}}.view-switch{gap:8px;margin-top:20px;display:flex}.view-switch button{background:#1e293b;border:1px solid #334155}.view-switch button.active{background:#2563eb;border-color:#60a5fa}.occupancy-dashboard{margin-top:24px}.recording-label{color:#94a3b8;font-size:14px}.occupancy-stats{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:16px 0 24px;display:grid}.stat-card{background:#111827;border:1px solid #334155;border-radius:12px;flex-direction:column;gap:8px;padding:20px;display:flex}.stat-card strong{font-size:32px}.stat-card span{color:#94a3b8;font-size:14px}.stat-card.available strong{color:#22c55e}.stat-card.occupied strong{color:#ef4444}.stat-card.unknown strong{color:#f59e0b}.occupancy-error{color:#f87171}@media (width<=700px){.occupancy-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.view-switch{flex-wrap:wrap}}.occupancy-state{text-transform:capitalize;font-weight:600}.occupancy-state.empty{color:#22c55e}.occupancy-state.occupied{color:#ef4444}.occupancy-state.unknown{color:#f59e0b}aside{max-height:760px;overflow-y:auto}.bay-item{flex-direction:row;justify-content:space-between;align-items:center;gap:12px;height:auto;min-height:44px;display:flex}.bay-item>span{flex:none;line-height:20px;display:inline}.occupancy-bay-list{flex-direction:column;align-items:stretch;display:flex}.occupancy-bay-list .bay-item{flex:none;justify-content:space-between;align-items:center;width:100%;min-height:44px;margin:0;padding:12px 0}.history-modal{color:#e5e7eb;background:#0b1220;border:1px solid #334155;border-radius:16px;width:min(1100px,94vw);max-width:94vw;max-height:90vh;margin:auto;padding:0;overflow-y:auto;box-shadow:0 24px 80px #0000008c}.history-modal::backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000000bf}.history-modal-content{min-width:0;padding:24px}.history-modal-header{justify-content:space-between;align-items:center;gap:16px;display:flex}.history-modal-header h2{margin:0}.history-modal-header button{cursor:pointer}.history-modal .occupancy-history-chart{width:100%}@media (width<=640px){.history-modal-content{padding:16px}}.recording-processor{background:#111827;border:1px solid #334155;border-radius:12px;margin-top:24px;padding:24px}.recording-processor h2{margin-top:0}.recording-processor p{color:#cbd5e1}.recording-processor input[type=file]{max-width:100%;margin:16px 0;display:block}.recording-processor strong{color:#f8fafc}.app{--ps-surface:#101a2b;--ps-border:#26354b;--ps-muted:#94a3b8;--ps-accent:#3b82f6;color:#e8eef7;width:100%;max-width:1680px;margin:0 auto;padding:clamp(20px,3vw,44px)}.app>header{margin-bottom:30px}.app>header h1{letter-spacing:-.045em;margin:0;font-size:clamp(28px,3vw,38px);font-weight:750;line-height:1.2}.app>header p{color:var(--ps-muted);margin:10px 0 0;font-size:14px}.app .view-switch{flex-wrap:wrap;gap:10px;margin-top:26px;display:flex}.app .view-switch button{border:1px solid var(--ps-border);color:#cbd5e1;background:#172338;border-radius:10px;min-height:42px;padding:10px 17px;font-size:13px;font-weight:600;transition:background .15s,border-color .15s}.app .occupancy-dashboard{margin-top:28px}.app .recording-label{color:var(--ps-muted);font-size:13px}.app .occupancy-stats{gap:16px;margin:18px 0 28px}.app .stat-card{border:1px solid var(--ps-border);background:var(--ps-surface);border-radius:16px;min-height:126px;padding:22px;transition:border-color .16s,transform .16s;position:relative}.app .stat-card:hover{border-color:#466181;transform:translateY(-2px)}.app .stat-card strong{letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:clamp(30px,3vw,38px);font-weight:750;line-height:1.15}.app .stat-card span{color:var(--ps-muted);font-size:13px}.app .workspace{gap:20px}.app .canvas-panel{border:1px solid var(--ps-border);background:var(--ps-surface);border-radius:16px}.app .workspace>aside{border:1px solid var(--ps-border);background:var(--ps-surface);border-radius:16px;max-height:760px;padding:24px}.app .workspace>aside h2{letter-spacing:-.025em;margin:0 0 16px;font-size:20px}.app .workspace>aside p{color:var(--ps-muted);line-height:1.6}.app .bay-item{border-bottom:1px solid #26354b}.app .recording-processor{border:1px solid var(--ps-border);background:var(--ps-surface);border-radius:16px;margin:0 0 26px;padding:26px}.app .recording-processor h2{letter-spacing:-.025em;font-size:20px}.app button:focus-visible{outline-offset:3px;outline:3px solid #93c5fd}@media (width<=900px){.app .workspace{grid-template-columns:minmax(0,1fr)}}@media (width<=700px){.app .occupancy-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.app .stat-card{min-height:112px;padding:16px}}@media (width<=420px){.app .occupancy-stats{gap:10px}.app .view-switch button{flex:auto}}@media (prefers-reduced-motion:reduce){.app .stat-card,.app .view-switch button{transition:none}.app .stat-card:hover{transform:none}}body:has(.app){color:#0f172a;background:#f6f8fb}.app{--ps-surface:#fff;--ps-border:#e2e8f0;--ps-muted:#64748b;--ps-accent:#2563eb;color:#0f172a}.app>header h1,.app .workspace>aside h2,.app .recording-processor h2{color:#0f172a}.app>header p,.app .recording-label{color:#64748b}.app .stat-card,.app .workspace>aside,.app .recording-processor,.app .canvas-panel{background:#fff;border-color:#e2e8f0;box-shadow:0 2px 8px #0f172a09}.app .stat-card strong{color:#0f172a}.app .stat-card.available strong{color:#15803d}.app .stat-card.occupied strong{color:#dc2626}.app .stat-card.unknown strong{color:#b45309}.app .stat-card span,.app .workspace>aside p,.app .recording-processor p{color:#64748b}.app .bay-item{color:#334155;border-color:#e2e8f0}.app .occupancy-state.empty{color:#15803d}.app .occupancy-state.occupied{color:#dc2626}.app .occupancy-state.unknown{color:#b45309}.app .view-switch button{color:#475569;background:#fff;border-color:#e2e8f0}.app .view-switch button:hover{background:#f1f5f9;border-color:#cbd5e1}.app .view-switch button.active{color:#fff;background:#2563eb;border-color:#2563eb}.app .canvas-panel{background:#101827;overflow:auto}.app .stat-card:hover{border-color:#cbd5e1}.app .workspace>aside{max-height:680px}@media (width<=700px){.app{padding:16px}}.app .workspace{align-items:stretch;margin-bottom:24px}.app .workspace>aside{height:100%;min-height:0;max-height:640px;overflow-y:auto}.app .canvas-panel{min-width:0;max-height:640px;overflow:auto}.app .dashboard-bottom-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;gap:20px;margin-top:24px;display:grid}.app .dashboard-bottom-grid>*{min-width:0}.app .dashboard-bottom-grid .recording-processor{height:100%;margin:0}.app .dashboard-history-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;min-width:0;padding:26px}.app .dashboard-history-card h2{color:#0f172a;margin:0 0 16px;font-size:20px}.app .dashboard-history-card .occupancy-history-chart{width:100%;min-width:0}@media (width<=900px){.app .dashboard-bottom-grid{grid-template-columns:1fr}.app .workspace>aside{height:auto;max-height:360px}}.app .dashboard-history-card,.app .dashboard-bottom-grid .recording-processor{background:#fff;border:1px solid #e2e8f0;border-radius:16px;min-height:300px;padding:24px;box-shadow:0 2px 8px #0f172a09}.app .dashboard-history-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.app .dashboard-history-header h2{color:#0f172a;margin:0 0 8px;font-size:20px;font-weight:650}.app .dashboard-history-header p,.app .dashboard-history-card>p{color:#64748b;margin:0;font-size:13px}.app .history-expand-button{color:#2563eb;background:#eff6ff;border:1px solid #dbeafe;border-radius:9px;flex-shrink:0;padding:9px 14px;font-weight:600}.app .history-expand-button:hover{background:#dbeafe}.app .dashboard-bottom-grid .recording-processor{margin:0}@media (width<=900px){.app .dashboard-bottom-grid{grid-template-columns:minmax(0,1fr)}}.app .card-title-with-icon{align-items:center;gap:10px;display:flex}.app .card-title-with-icon svg{color:#2563eb;flex-shrink:0}.app .history-expand-button{justify-content:center;align-items:center;gap:8px;display:inline-flex}.login-page{color:#f1f5f9;background:#080e1b;grid-template-columns:minmax(0,1fr) minmax(420px,.85fr);min-height:100vh;display:grid}.login-showcase{background:radial-gradient(at 75% 65%,#2563eb35,#0000 55%),radial-gradient(at 15% 15%,#14b8a620,#0000 45%),#0c1628;border-right:1px solid #26344b;flex-direction:column;justify-content:space-between;padding:clamp(32px,5vw,80px);display:flex;position:relative;overflow:hidden}.login-showcase:after{content:"";pointer-events:none;opacity:.22;background-image:linear-gradient(#64748b25 1px,#0000 1px),linear-gradient(90deg,#64748b25 1px,#0000 1px);background-size:48px 48px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000,#000);mask-image:linear-gradient(#0000,#000)}.login-brand{z-index:1;letter-spacing:-.04em;align-items:center;gap:12px;font-size:20px;font-weight:700;display:flex;position:relative}.login-brand-icon{color:#fff;background:#2563eb;border-radius:13px;place-items:center;width:42px;height:42px;font-weight:800;display:grid}.login-showcase-content{z-index:1;max-width:560px;position:relative}.login-eyebrow{color:#5eead4;letter-spacing:.15em;text-transform:uppercase;font-size:12px;font-weight:700}.login-showcase h2{letter-spacing:-.055em;margin:20px 0;font-size:clamp(36px,4.5vw,64px);line-height:1.1}.login-showcase-content>p:last-child{color:#a5b4c8;max-width:440px;font-size:17px;line-height:1.7}.login-showcase-footer{z-index:1;color:#8190a8;font-size:13px;position:relative}.login-auth-panel{justify-content:center;align-items:center;padding:48px 32px;display:flex}.login-card{width:100%;max-width:410px}.login-card h1{letter-spacing:-.045em;margin:0 0 12px;font-size:clamp(30px,3vw,38px);line-height:1.2}.login-subtitle{color:#94a3b8;margin:0 0 38px;line-height:1.6}.login-card form{flex-direction:column;gap:10px;display:flex}.login-card label{color:#dbe4f0;margin-top:12px;font-size:13px;font-weight:600}.login-card input{box-sizing:border-box;color:#f8fafc;width:100%;min-height:48px;font:inherit;background:#111c2e;border:1px solid #344258;border-radius:10px;outline:none;padding:12px 14px;transition:border-color .16s,box-shadow .16s}.login-card input:focus-visible{border-color:#60a5fa;box-shadow:0 0 0 3px #2563eb30}.login-card input:disabled{opacity:.65}.login-card form>button{color:#fff;min-height:48px;font:inherit;cursor:pointer;background:#2563eb;border:0;border-radius:10px;margin-top:22px;font-weight:650;transition:background .16s}.login-card form>button:hover:not(:disabled){background:#1d4ed8}.login-card form>button:focus-visible{outline-offset:3px;outline:3px solid #93c5fd}.login-card form>button:disabled{cursor:wait;opacity:.65}.login-error{color:#fca5a5;background:#ef444412;border:1px solid #ef444455;border-radius:10px;padding:12px 14px;font-size:13px}.login-footer{text-align:center;color:#64748b;margin-top:38px;font-size:12px}@media (width<=900px){.login-page{grid-template-columns:1fr}.login-showcase{min-height:140px;padding:28px}.login-showcase-content,.login-showcase-footer{display:none}.login-auth-panel{padding:48px 24px 80px}}@media (width<=480px){.login-showcase{min-height:auto;padding:22px}.login-auth-panel{align-items:flex-start;padding-top:48px}}.login-auth-panel{color:#0f172a;background:#f8fafc;border-left:1px solid #e2e8f0}.login-auth-panel .login-card{box-shadow:none;color:#0f172a;background:0 0}.login-auth-panel h1,.login-auth-panel h2,.login-auth-panel label,.login-auth-panel .login-brand{color:#0f172a}.login-auth-panel p{color:#64748b}.login-auth-panel input{color:#0f172a;background:#fff;border:1px solid #cbd5e1}.login-auth-panel input::placeholder{color:#94a3b8}.login-auth-panel input:focus{outline-offset:1px;border-color:#2563eb;outline:2px solid #bfdbfe}.login-auth-panel button[type=submit]{color:#fff;background:#2563eb}.login-auth-panel button[type=submit]:hover:not(:disabled){background:#1d4ed8}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html,body,#root{width:100%;min-height:100%;margin:0}body{min-width:320px}#root{text-align:left;display:block}
