.sidebar{width:var(--sidebar-width);background:linear-gradient(180deg,#0f172af2,#080d1afa);border-right:1px solid rgba(51,65,85,.4);overflow-y:auto;padding:1.5rem 1rem;display:flex;flex-direction:column;position:relative;z-index:100}.sidebar-brand{margin-bottom:2rem;padding:0 .5rem}.sidebar-brand-name{font-size:1.25rem;font-weight:700;color:var(--text);margin-bottom:.25rem}.sidebar-brand-sub{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.sidebar-nav{margin-bottom:1.5rem}.nav-label{font-size:.7rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-weight:600;padding:0 .5rem;margin-bottom:.75rem;display:block}.nav-link{width:100%;padding:.75rem 1rem;background:transparent;color:var(--text-muted);border:none;border-radius:8px;display:flex;align-items:center;gap:.75rem;font-weight:500;font-size:.9rem;cursor:pointer;transition:all .15s ease;margin-bottom:.5rem;justify-content:flex-start}.nav-link:hover{background:#0ea5e91a;color:var(--text)}.nav-link.active{background:#0ea5e926;color:var(--primary);border-left:3px solid var(--primary);padding-left:calc(1rem - 3px)}.nav-icon{font-size:1.1rem;display:flex;align-items:center;justify-content:center}.sidebar-divider{height:1px;background:#3341554d;margin:1rem 0}.sidebar-settings{margin-bottom:1.5rem}.setting-item{margin-bottom:1rem}.setting-item label{display:block;font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:.5rem}.setting-select{width:100%;background:#0f172acc;border:1px solid rgba(51,65,85,.6);border-radius:6px;color:var(--text);padding:.5rem .75rem;font-size:.875rem}.setting-select:focus{outline:none;border-color:var(--primary)}.sidebar-stats{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.stat-chip{background:#0ea5e914;border:1px solid rgba(14,165,233,.15);border-radius:8px;padding:.75rem;display:flex;justify-content:space-between;align-items:center;font-size:.8rem}.stat-label{color:var(--text-muted);font-weight:600}.stat-value{color:var(--primary);font-weight:700}.btn-refresh{width:100%;padding:.75rem 1rem;background:#0ea5e91f;color:var(--primary);border:1px solid rgba(14,165,233,.3);border-radius:8px;font-weight:600;font-size:.9rem;cursor:pointer;transition:all .15s ease;margin-top:auto}.btn-refresh:hover{background:#0ea5e933;border-color:#0ea5e980}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-thumb{background:#33415566;border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:#33415599}@media (max-width: 1024px){.sidebar{width:240px}}@media (max-width: 768px){.sidebar{position:fixed;left:0;right:0;top:auto;bottom:0;width:100%;height:calc(72px + env(safe-area-inset-bottom));padding:.5rem .625rem calc(.5rem + env(safe-area-inset-bottom));display:flex!important;flex-direction:row;align-items:center;border-right:none;border-top:1px solid rgba(51,65,85,.7);background:#080d1afa;box-shadow:0 -10px 30px #00000059;overflow-x:auto;overflow-y:hidden;z-index:1000}.sidebar-brand,.sidebar-settings,.sidebar-stats,.sidebar-divider,.btn-refresh,.nav-label{display:none}.sidebar-nav{display:flex;flex-direction:row;gap:.5rem;width:100%;margin:0;padding:0}.nav-link{flex:1 0 74px;min-width:74px;height:56px;padding:.35rem .45rem;margin:0;flex-direction:column;justify-content:center;gap:.18rem;border-radius:10px;font-size:.68rem;line-height:1.1;text-align:center;white-space:normal}.nav-link.active{border-left:none;border-top:2px solid var(--primary);padding-left:.45rem;padding-top:calc(.35rem - 2px)}.nav-icon{font-size:1rem}}.page-header{position:fixed;top:0;right:0;left:var(--sidebar-width);height:var(--header-height);background:linear-gradient(180deg,#080d1af2,#0f172acc);border-bottom:1px solid rgba(51,65,85,.3);display:flex;justify-content:space-between;align-items:center;padding:0 2rem;z-index:50}.header-left{flex:1;min-width:0}.page-header h1{font-size:1.75rem;font-weight:700;color:var(--text);margin-bottom:.25rem}.page-subtitle{font-size:.875rem;color:var(--text-muted)}.header-badge{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--success);font-weight:600;padding:.5rem 1rem;background:#22c55e14;border:1px solid rgba(34,197,94,.2);border-radius:6px;white-space:nowrap}@media (max-width: 1024px){.page-header{left:240px}}@media (max-width: 768px){.page-header{left:0;right:0;height:var(--header-height);padding:0 .75rem;gap:.75rem}.page-header h1{font-size:1.25rem;line-height:1.15;margin-bottom:0}.page-subtitle{display:none}.header-badge{padding:.4rem .65rem;font-size:.78rem;border-radius:6px}}@media (max-width: 360px){.page-header h1{font-size:1.1rem}.header-badge{padding:.35rem .55rem;font-size:.72rem}}.login-root{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--background, #080D1A);z-index:9999;overflow:hidden}.login-bg{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.login-bg-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(14,165,233,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(14,165,233,.04) 1px,transparent 1px);background-size:48px 48px;animation:gridDrift 30s linear infinite}@keyframes gridDrift{0%{transform:translate(0)}to{transform:translate(48px,48px)}}.login-bg-glow{position:absolute;border-radius:50%;filter:blur(90px);opacity:.18;animation:glowPulse 6s ease-in-out infinite alternate}.login-bg-glow-1{width:500px;height:500px;background:#0ea5e9;top:-150px;left:-100px;animation-delay:0s}.login-bg-glow-2{width:400px;height:400px;background:#818cf8;bottom:-120px;right:-80px;animation-delay:3s}@keyframes glowPulse{0%{opacity:.12;transform:scale(1)}to{opacity:.22;transform:scale(1.08)}}.login-wrapper{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:2rem;width:100%;max-width:420px;padding:1.5rem;animation:fadeUp .5s ease both}@keyframes fadeUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.login-brand{display:flex;align-items:center;gap:.875rem}.login-brand-icon{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;color:var(--primary, #0EA5E9);background:#0ea5e91a;border:1px solid rgba(14,165,233,.22);border-radius:10px}.login-brand-name{font-size:1.5rem;font-weight:700;color:var(--text, #F1F5F9);letter-spacing:-.02em}.login-brand-sub{font-size:.75rem;color:var(--text-muted, #94A3B8);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.login-card{width:100%;background:linear-gradient(135deg,#0f172aeb,#1e293bbf);border:1px solid rgba(51,65,85,.5);border-radius:16px;padding:2rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 0 0 1px #0ea5e90f,0 24px 48px #0006;animation:fadeUp .5s .1s ease both}.login-card-header{margin-bottom:1.75rem}.login-title{font-size:1.4rem;font-weight:700;color:var(--text, #F1F5F9);margin-bottom:.35rem;letter-spacing:-.02em}.login-subtitle{font-size:.875rem;color:var(--text-muted, #94A3B8)}.login-form{display:flex;flex-direction:column;gap:1.25rem}.login-error{display:flex;align-items:center;gap:.6rem;padding:.75rem 1rem;background:#ef444414;border:1px solid rgba(239,68,68,.25);border-radius:8px;color:#fca5a5;font-size:.875rem;animation:shake .35s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.login-field{display:flex;flex-direction:column;gap:.5rem}.login-label{font-size:.78rem;font-weight:600;color:var(--text-muted, #94A3B8);text-transform:uppercase;letter-spacing:.05em}.login-input-wrap{position:relative;display:flex;align-items:center}.login-input-icon{position:absolute;left:.875rem;pointer-events:none;z-index:1;color:var(--text-dim, #64748B)}.login-input{width:100%;padding:.8rem 1rem .8rem 2.5rem;background:#080d1ab3;border:1px solid rgba(51,65,85,.6);border-radius:10px;color:var(--text, #F1F5F9);font-size:.9rem;font-family:inherit;transition:border-color .15s ease,box-shadow .15s ease}.login-input:focus{outline:none;border-color:var(--primary, #0EA5E9);box-shadow:0 0 0 3px #0ea5e91a}.login-input:disabled{opacity:.5;cursor:not-allowed}.login-input-password{padding-right:2.75rem}.login-eye{position:absolute;right:.75rem;display:inline-flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-dim, #64748B);cursor:pointer;padding:.25rem;border-radius:4px;opacity:.6;transition:opacity .15s}.login-eye:hover{opacity:1}.login-btn{width:100%;padding:.9rem 1.5rem;background:linear-gradient(135deg,#0ea5e9,#0284c7);color:#fff;border:none;border-radius:10px;font-size:.95rem;font-weight:700;font-family:inherit;cursor:pointer;transition:all .15s ease;display:flex;align-items:center;justify-content:center;gap:.6rem;margin-top:.25rem;letter-spacing:.01em}.login-btn:hover:not(:disabled){background:linear-gradient(135deg,#38bdf8,#0ea5e9);box-shadow:0 4px 16px #0ea5e94d;transform:translateY(-1px)}.login-btn:active:not(:disabled){transform:translateY(0)}.login-btn:disabled{opacity:.65;cursor:not-allowed}.login-spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.login-footer{display:flex;align-items:center;justify-content:space-between;margin-top:1.5rem;padding-top:1.25rem;border-top:1px solid rgba(51,65,85,.35)}.login-badge{font-size:.78rem;color:var(--success, #22C55E);font-weight:600}.login-footer-text{font-size:.75rem;color:var(--text-dim, #64748B)}.login-copy{font-size:.75rem;color:var(--text-dim, #64748B);text-align:center}@media (max-width: 480px){.login-wrapper{padding:1rem;gap:1.5rem}.login-card{padding:1.5rem}.login-brand-name{font-size:1.25rem}}.app-container{display:flex;height:100vh;width:100%;min-width:0;background-color:var(--background)}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;width:100%}.page-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:var(--header-height) 2rem 2rem 2rem;width:100%;min-width:0}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin-bottom:2rem}.kpi-card{background:linear-gradient(135deg,#0f172acc,#1e293b99);border:1px solid rgba(51,65,85,.4);border-radius:12px;padding:1.5rem;transition:all .2s ease}.kpi-card:hover{border-color:#0ea5e94d;box-shadow:0 4px 12px #0ea5e91a}.kpi-label{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600;margin-bottom:.75rem}.kpi-value{font-size:2rem;font-weight:700;color:var(--text);margin-bottom:.5rem}.kpi-delta{font-size:.8rem;color:var(--text-muted)}.kpi-delta.positive{color:var(--success)}.kpi-delta.negative{color:var(--danger)}.chart-container{background:linear-gradient(135deg,#0f172acc,#1e293b99);border:1px solid rgba(51,65,85,.4);border-radius:12px;padding:1.5rem;transition:all .2s ease;min-width:0}.chart-container:hover{border-color:#0ea5e94d}.chart-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(450px,1fr));gap:2rem;margin-bottom:2rem;min-width:0}.chart-container>div{min-height:350px}.section-header{font-size:1.25rem;font-weight:600;color:var(--text);margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:2px solid rgba(14,165,233,.2)}.table-wrapper{background:linear-gradient(135deg,#0f172acc,#1e293b99);border:1px solid rgba(51,65,85,.4);border-radius:12px;padding:1.5rem;overflow-x:auto}.search-box{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.search-input{flex:1;min-width:200px}.filter-bar{display:flex;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.filter-bar input,.filter-bar select{padding:.75rem 1rem}.filter-bar input{flex:1;min-width:200px}.filter-bar select{min-width:150px}.tabs{display:flex;gap:1rem;margin-bottom:2rem;border-bottom:1px solid rgba(51,65,85,.4)}.tab-button{padding:.75rem 1.5rem;background:transparent;color:var(--text-muted);border:none;border-bottom:2px solid transparent;font-weight:600;cursor:pointer;transition:all .2s ease;position:relative;top:1px}.tab-button:hover{color:var(--primary)}.tab-button.active{color:var(--primary);border-bottom-color:var(--primary)}.tab-content{display:none;animation:fadeIn .3s ease}.tab-content.active{display:block}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.performance-grid{display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:2rem}.status-alerts{display:flex;flex-direction:column;gap:1rem}.dropoff-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:2rem;margin-bottom:2rem}.retention-chart-title{color:var(--text);font-size:1rem;font-weight:600;margin-bottom:1rem}.retention-model-source{color:var(--text-muted);font-size:.8rem;text-align:center}.retention-predictor{display:flex;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.retention-predictor input{max-width:260px}.retention-prediction-result{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;background:#0f172ab8;border:1px solid rgba(51,65,85,.45);border-radius:10px;color:var(--text);margin-bottom:2rem;padding:1rem}.availability-grid{overflow-x:auto;border-radius:12px;border:1px solid rgba(51,65,85,.5);background:#0f172a99;margin-bottom:2rem}.availability-table{width:100%;border-collapse:collapse}.availability-table thead th{background:#0ea5e90f;color:var(--text-dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;font-weight:600;padding:10px 12px}.availability-table tbody td{padding:8px;border-bottom:1px solid rgba(51,65,85,.3)}.availability-table tbody tr:hover td{background:#0ea5e90a}.avail-badge{display:inline-flex;align-items:center;justify-content:center;width:32px;height:24px;border-radius:4px;font-size:.7rem;font-weight:600}.avail-yes{background:#22c55e26;color:#86efac}.avail-no{background:#3341554d;color:var(--text-dim)}.insights-intro{background:linear-gradient(135deg,#0ea5e90f,#6366f10a);border:1px solid rgba(14,165,233,.18);border-radius:10px;padding:1.5rem;margin-bottom:2rem;color:#93c5fd;font-size:.875rem;line-height:1.65}.insights-controls{display:flex;gap:1rem;margin-bottom:2rem;flex-wrap:wrap}.insights-select{flex:1;min-width:250px}.insights-status{color:var(--text-muted);font-size:.875rem;margin-bottom:1rem}.insights-report{background:#0f172a99;border:1px solid rgba(51,65,85,.5);border-radius:14px;padding:2rem;color:var(--text-muted);line-height:1.8;margin-top:2rem;white-space:pre-wrap;font-family:DM Mono,monospace;font-size:.875rem;max-height:600px;overflow-y:auto}.insights-report h1{color:var(--text);font-size:1.2rem;margin-top:1rem;margin-bottom:.5rem}.insights-report h2{color:var(--text);font-size:1.1rem;margin-top:1rem;margin-bottom:.5rem}.insights-report h3{color:var(--text);font-size:1rem;margin-top:.75rem;margin-bottom:.5rem}@media (max-width: 1024px){.chart-row,.performance-grid{grid-template-columns:1fr}.page-content{padding:var(--header-height) 1.5rem 1.5rem 1.5rem}}@media (max-width: 768px){.app-container{height:100dvh;overflow-x:hidden}.main-content,.page-content{min-width:0;max-width:100%}.kpi-grid{grid-template-columns:1fr;gap:.875rem;margin-bottom:1.25rem}.kpi-card{border-radius:10px;padding:1rem}.kpi-label{font-size:.7rem;margin-bottom:.45rem}.kpi-value{font-size:1.65rem;line-height:1.15}.chart-row{grid-template-columns:1fr;gap:1rem;margin-bottom:1.25rem}.chart-container{border-radius:10px;padding:1rem;overflow-x:auto}.chart-container>div{min-height:280px}.performance-grid{grid-template-columns:1fr;gap:1rem}.dropoff-layout{grid-template-columns:1fr;gap:1rem;margin-bottom:1.25rem}.filter-bar{flex-direction:column}.filter-bar input,.filter-bar select{width:100%}.search-box{flex-direction:column}.retention-predictor,.retention-prediction-result{align-items:stretch;flex-direction:column}.retention-predictor input{max-width:none}.search-input{width:100%}.page-content{padding:calc(var(--header-height) + .75rem) .75rem calc(var(--mobile-nav-height) + 1rem)}.section-header{font-size:1rem;margin-bottom:1rem;padding-bottom:.55rem}.table-wrapper{padding:.75rem;border-radius:10px;overflow-x:visible}.table{display:block;width:100%;min-width:0;border-collapse:separate;border-spacing:0;font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.table thead{display:none}.table tbody{display:grid;gap:.75rem}.table tbody tr{display:grid;gap:.5rem;padding:.875rem;border:1px solid rgba(51,65,85,.45);border-radius:10px;background:#0f172ab8}.table tbody td{display:grid;grid-template-columns:minmax(92px,38%) minmax(0,1fr);align-items:start;gap:.75rem;padding:0;border-bottom:none;color:var(--text);white-space:normal;overflow-wrap:anywhere;word-break:break-word;min-width:0}.table tbody td:before{content:attr(data-label);color:var(--text-dim);font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.table tbody td[colspan]{display:block;text-align:center}.table tbody td[colspan]:before{content:""}.availability-grid{overflow:visible;border:none;background:transparent}.availability-table,.availability-table tbody,.availability-table tr,.availability-table td{display:block;width:100%}.availability-table thead{display:none}.availability-table tbody{display:grid;gap:.875rem}.availability-table tbody tr{padding:.875rem;border:1px solid rgba(51,65,85,.45);border-radius:10px;background:#0f172ab8}.availability-table tbody td{border-bottom:none}.availability-table tbody td:first-child{padding:0 0 .75rem!important;color:var(--text)!important;font-size:.95rem!important;border-bottom:1px solid rgba(51,65,85,.35);margin-bottom:.75rem}.availability-table tbody td:not(:first-child){display:grid;grid-template-columns:3rem 42px minmax(0,1fr);align-items:center;gap:.75rem;padding:.45rem 0!important;color:var(--text-muted)}.availability-table tbody td:nth-child(2):before{content:"Mon"}.availability-table tbody td:nth-child(3):before{content:"Tue"}.availability-table tbody td:nth-child(4):before{content:"Wed"}.availability-table tbody td:nth-child(5):before{content:"Thu"}.availability-table tbody td:nth-child(6):before{content:"Fri"}.availability-table tbody td:nth-child(7):before{content:"Sat"}.availability-table tbody td:nth-child(8):before{content:"Sun"}.availability-table tbody td:not(:first-child):before{color:var(--text-dim);font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.availability-table tbody td:not(:first-child)>div{justify-self:start;margin-top:0!important}.search-input,.filter-bar input,.filter-bar select,.insights-select{min-width:0}.tabs{overflow-x:auto;flex-wrap:nowrap}.insights-report{font-size:.75rem;padding:1rem}}:root{--primary: #0EA5E9;--success: #22C55E;--warning: #F59E0B;--danger: #EF4444;--info: #818CF8;--purple: #A78BFA;--neutral: #64748B;--background: #080D1A;--surface: #0F172A;--text: #F1F5F9;--text-muted: #94A3B8;--text-dim: #64748B;--sidebar-width: 280px;--header-height: 80px}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;width:100%;overflow-x:hidden}body{font-family:DM Sans,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background-color:var(--background);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100%;min-width:0;overflow-x:hidden}#root{width:100%;min-width:0}input,textarea,select,button{font-family:inherit}h1{font-size:2rem;font-weight:700}h2{font-size:1.5rem;font-weight:600}h3{font-size:1.25rem;font-weight:600}h4{font-size:1rem;font-weight:600}p{color:var(--text-muted)}a{color:var(--primary);text-decoration:none;transition:color .2s ease}a:hover{color:#06b6d4}button{cursor:pointer;border:none;border-radius:8px;font-weight:500;transition:all .15s ease;font-size:.9rem}.btn{padding:.75rem 1.5rem;display:inline-flex;align-items:center;gap:.5rem}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:#0284c7}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-secondary{background:#33415580;color:var(--text-muted);border:1px solid rgba(51,65,85,.7)}.btn-secondary:hover{background:#334155b3}.btn-export{background:#33415580;color:var(--text-muted);border:1px solid rgba(51,65,85,.7);padding:.75rem 1.5rem;border-radius:8px;font-weight:600;font-size:.9rem;margin-top:1.5rem}.btn-export:hover{background:#334155b3}.badge{display:inline-flex;align-items:center;padding:.25rem .75rem;border-radius:6px;font-size:.8rem;font-weight:600}.badge-success{background:#22c55e26;color:#86efac}.badge-danger{background:#ef444426;color:#fca5a5}.badge-warning{background:#f59e0b26;color:#fcd34d}.badge-info{background:#818cf826;color:#c7d2fe}.badge-neutral{background:#3341554d;color:var(--text-muted)}input,textarea,select{background:#0f172acc;border:1px solid rgba(51,65,85,.6);border-radius:8px;color:var(--text);padding:.75rem 1rem;font-size:.875rem;transition:all .15s ease}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #0ea5e914}.table{width:100%;border-collapse:collapse;font-size:.875rem}.table thead th{background:#0ea5e90f;color:var(--text-dim);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;font-weight:600;padding:12px;text-align:left;border-bottom:1px solid rgba(51,65,85,.3)}.table tbody td{padding:12px;border-bottom:1px solid rgba(51,65,85,.3)}.table tbody tr:hover td{background:#0ea5e90a}.alert{padding:1rem 1.25rem;border-radius:10px;display:flex;align-items:center;gap:.75rem;font-size:.875rem;margin-bottom:1.5rem}.alert-info{background:#0ea5e90f;border:1px solid rgba(14,165,233,.18);color:#93c5fd}.alert-error{background:#ef44440f;border:1px solid rgba(239,68,68,.18);color:#fca5a5}.spinner{display:flex;justify-content:center;align-items:center;min-height:400px}.spinner-ring{border:4px solid rgba(51,65,85,.2);border-radius:50%;border-top:4px solid var(--primary);width:40px;height:40px;animation:spin .8s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.mt-4{margin-top:2rem}.p-1{padding:.5rem}.p-2{padding:1rem}.p-3{padding:1.5rem}.p-4{padding:2rem}.gap-1{gap:.5rem}.gap-2{gap:1rem}.gap-3{gap:1.5rem}.gap-4{gap:2rem}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#33415580;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#334155b3}@media (max-width: 1024px){:root{--sidebar-width: 240px}}@media (max-width: 768px){:root{--sidebar-width: 0;--header-height: 68px;--mobile-nav-height: 72px}.app-container{flex-direction:column}}
