:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--primary-50:#eff6ff;--primary-100:#dbeafe;--primary-200:#bfdbfe;--primary-300:#93c5fd;--primary-400:#60a5fa;--primary-500:#3b82f6;--primary-600:#2563eb;--primary-700:#1d4ed8;--primary-800:#1e40af;--primary-900:#1e3a8a;--bg-app:#f8fafc;--bg-surface:#fff;--bg-surface-elevated:#fff;--bg-surface-subtle:#f1f5f9;--bg-surface-hover:#f8fafc;--border-subtle:#e2e8f0;--border-strong:#cbd5e1;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#5b6677;--text-inverse:#fff;--success-bg:#ecfdf5;--success-border:#a7f3d0;--success-text:#065f46;--success-main:#047857;--warning-bg:#fffbeb;--warning-border:#fde68a;--warning-text:#92400e;--warning-main:#f59e0b;--danger-bg:#fef2f2;--danger-border:#fecaca;--danger-text:#991b1b;--danger-main:#c22;--info-bg:#eff6ff;--info-border:#bfdbfe;--info-text:#1e40af;--info-main:#3b82f6;--purple-bg:#faf5ff;--purple-border:#e9d5ff;--purple-text:#6b21a8;--purple-main:#a855f7;--primary-accent:var(--primary-600);--primary-accent-hover:var(--primary-700);--success-fill:#047857;--danger-fill:#c22;--warning-fill:#b45309;--info-fill:#2f62e8;--purple-fill:#9038e0;--font-sans:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", monospace;--shadow-xs:0 1px 2px 0 #0000000d;--shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--shadow-xl:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:9999px;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-normal:.25s cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-app:#090d16;--bg-surface:#0f172a;--bg-surface-elevated:#1e293b;--bg-surface-subtle:#1e293b;--bg-surface-hover:#334155;--border-subtle:#1e293b;--border-strong:#334155;--text-primary:#f8fafc;--text-secondary:#cbd5e1;--text-muted:#94a3b8;--primary-accent:var(--primary-300);--primary-accent-hover:var(--primary-200);--danger-main:#f87171;--success-main:#10b981;--text-inverse:#0f172a;--success-bg:#064e3b;--success-border:#047857;--success-text:#a7f3d0;--warning-bg:#78350f;--warning-border:#b45309;--warning-text:#fde68a;--danger-bg:#7f1d1d;--danger-border:#b91c1c;--danger-text:#fecaca;--info-bg:#1e3a8a;--info-border:#1d4ed8;--info-text:#bfdbfe;--purple-bg:#581c87;--purple-border:#7e22ce;--purple-text:#e9d5ff}*,:before,:after{box-sizing:border-box;margin:0;padding:0}:focus-visible{outline:2px solid var(--primary-600);outline-offset:2px}.skip-link{background:var(--primary-600);color:#fff;border-radius:var(--radius-md);z-index:9999;box-shadow:var(--shadow-lg);padding:.75rem 1.25rem;font-weight:700;text-decoration:none;transition:top .2s;position:absolute;top:-100px;left:1rem}.skip-link:focus{outline:3px solid #fff;top:1rem}body{font-family:var(--font-sans);background-color:var(--bg-app);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.5;overflow-x:hidden}button,input,select,textarea{font-family:inherit;font-size:inherit}a{color:var(--primary-accent);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--primary-accent-hover)}.app-root{flex-direction:column;min-height:100vh;display:flex}.app-container{min-height:100vh;display:flex}.sidebar{background-color:var(--bg-surface);border-right:1px solid var(--border-subtle);width:260px;transition:transform var(--transition-normal);z-index:40;flex-direction:column;flex-shrink:0;display:flex}.sidebar-header{border-bottom:1px solid var(--border-subtle);align-items:center;gap:.75rem;padding:1.25rem 1.5rem;display:flex}.brand-logo{border-radius:var(--radius-md);background:linear-gradient(135deg, var(--primary-600), var(--primary-800));color:#fff;justify-content:center;align-items:center;width:38px;height:38px;font-size:1.25rem;font-weight:800;display:flex;box-shadow:0 4px 10px #2563eb4d}.brand-title{letter-spacing:-.02em;color:var(--text-primary);font-size:1.15rem;font-weight:700}.brand-badge{background:var(--primary-50);color:var(--primary-600);border-radius:var(--radius-full);border:1px solid var(--primary-200);margin-left:auto;padding:2px 6px;font-size:.65rem;font-weight:700}.sidebar-nav{flex-direction:column;flex:1;gap:.25rem;padding:1rem .75rem;display:flex;overflow-y:auto}.nav-section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:.75rem .75rem .25rem;font-size:.7rem;font-weight:700}.nav-item{border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);border:1px solid #0000;align-items:center;gap:.75rem;padding:.625rem .875rem;font-size:.875rem;font-weight:600;display:flex}.nav-item:hover{background-color:var(--bg-surface-hover);color:var(--text-primary)}.nav-item.active{background-color:var(--primary-50);color:var(--primary-700);border-color:var(--primary-200)}[data-theme=dark] .nav-item.active{background-color:var(--primary-900);color:var(--primary-300);border-color:var(--primary-700)}.nav-icon{text-align:center;width:20px;font-size:1.1rem}.nav-badge{background-color:var(--primary-600);color:#fff;border-radius:var(--radius-full);margin-left:auto;padding:1px 6px;font-size:.7rem;font-weight:700}.sidebar-footer{border-top:1px solid var(--border-subtle);background-color:var(--bg-surface-subtle);padding:1rem}.user-card{align-items:center;gap:.75rem;display:flex}.user-avatar{border-radius:var(--radius-full);background:var(--primary-100);width:36px;height:36px;color:var(--primary-700);border:1.5px solid var(--primary-300);flex-shrink:0;justify-content:center;align-items:center;font-size:.875rem;font-weight:700;display:flex}.user-info{flex:1;min-width:0}.user-name{white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:600;overflow:hidden}.user-role-tag{color:var(--text-muted);text-transform:capitalize;font-size:.7rem}.main-wrapper{flex-direction:column;flex:1;min-width:0;display:flex;overflow-y:auto}.topbar{background-color:var(--bg-surface);border-bottom:1px solid var(--border-subtle);z-index:30;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);justify-content:space-between;align-items:center;gap:1rem;height:64px;padding:0 1.5rem;display:flex;position:sticky;top:0}.topbar-left,.topbar-right{align-items:center;gap:.875rem;display:flex}.center-selector{color:var(--text-secondary);border-radius:var(--radius-sm);background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);align-items:center;gap:.5rem;padding:.375rem .75rem;font-size:.875rem;font-weight:600;display:flex}.sidebar-toggle-btn{border:1px solid var(--border-subtle);cursor:pointer;color:var(--text-primary);border-radius:var(--radius-md);transition:all var(--transition-fast);background:0 0;justify-content:center;align-items:center;padding:.35rem .6rem;font-size:1.2rem;display:none}.sidebar-toggle-btn:hover{background:var(--bg-surface-hover);border-color:var(--border-strong)}.sidebar-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:39;opacity:0;pointer-events:none;transition:opacity var(--transition-normal);background:#0f172a99;position:fixed;inset:0}.sidebar-overlay.active{opacity:1;pointer-events:auto}.child-context-switcher{border-radius:var(--radius-full);cursor:pointer;transition:all var(--transition-fast);background:linear-gradient(135deg,#f0fdf4,#dcfce7);border:1.5px solid #86efac;align-items:center;gap:.6rem;padding:.35rem .875rem;display:flex;position:relative;box-shadow:0 1px 3px #10b98126}.child-context-switcher:hover,.child-context-switcher:focus-within{border-color:#15803d;box-shadow:0 0 0 3px #22c55e33}[data-theme=dark] .child-context-switcher{background:linear-gradient(135deg,#064e3b,#047857);border-color:#059669}.child-switcher-avatar{border-radius:var(--radius-full);color:#fff;background:#15803d;border:2px solid #86efac;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:.75rem;font-weight:800;display:flex}[data-theme=dark] .child-switcher-avatar{background:#047857;border-color:#34d399}.child-switcher-label{color:#166534;text-transform:uppercase;letter-spacing:.03em;font-size:.7rem;font-weight:800}[data-theme=dark] .child-switcher-label{color:#86efac}.child-switcher-name{color:#14532d;white-space:nowrap;font-size:.875rem;font-weight:800}[data-theme=dark] .child-switcher-name{color:#f0fdf4}.child-switcher-group{color:#fff;border-radius:var(--radius-full);white-space:nowrap;background:#15803d;padding:1px 7px;font-size:.75rem;font-weight:700}[data-theme=dark] .child-switcher-group{background:#047857}.child-switcher-badge-dot{border-radius:var(--radius-full);background:#22c55e;width:8px;height:8px;box-shadow:0 0 6px #22c55e}.page-container{flex:1;width:100%;max-width:1440px;margin:0 auto;padding:1.75rem 2rem}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.page-title{letter-spacing:-.02em;font-size:1.5rem;font-weight:800}.page-subtitle{color:var(--text-muted);margin-top:.25rem;font-size:.875rem}.btn{border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:600;display:inline-flex}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background-color:var(--primary-600);color:#fff;box-shadow:0 1px 2px #2563eb33}.btn-primary:hover:not(:disabled){background-color:var(--primary-700)}.btn-secondary{background-color:var(--bg-surface);color:var(--text-primary);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background-color:var(--bg-surface-hover)}.btn-success{background-color:var(--success-fill);color:#fff}.btn-success:hover:not(:disabled){filter:brightness(.9)}.btn-danger{background-color:var(--danger-fill);color:#fff}.btn-danger:hover:not(:disabled){filter:brightness(.9)}.btn-ghost{color:var(--text-secondary);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--bg-surface-subtle);color:var(--text-primary)}.btn-sm{border-radius:var(--radius-sm);padding:.35rem .7rem;font-size:.8rem}.btn-lg{border-radius:var(--radius-lg);padding:.75rem 1.5rem;font-size:1rem}.btn-icon{border-radius:var(--radius-md);width:36px;height:36px;padding:0}.btn.is-loading{pointer-events:none;cursor:wait;opacity:.85;position:relative}.btn:active:not(:disabled){transform:scale(.98)}.btn-spinner{vertical-align:middle;flex-shrink:0;animation:.75s linear infinite spin;display:inline-block}.btn-loading-text{display:inline-block}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.form-group{flex-direction:column;gap:.375rem;margin-bottom:1rem;display:flex}.form-label{color:var(--text-secondary);font-size:.8125rem;font-weight:600}.form-input,.form-select,.form-textarea{background-color:var(--bg-surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--text-primary);transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color var(--transition-fast);outline:none;padding:.625rem .875rem;font-size:.875rem}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--primary-500);box-shadow:0 0 0 3px #3b82f626}.form-input.is-invalid,.form-select.is-invalid,.form-textarea.is-invalid{background-color:var(--bg-surface);border-color:var(--danger-main)!important;box-shadow:0 0 0 3px #ef444426!important}.form-input.is-valid,.form-select.is-valid,.form-textarea.is-valid{border-color:var(--success-main)!important;box-shadow:0 0 0 3px #10b98126!important}.form-feedback-text{align-items:center;gap:.25rem;margin-top:.25rem;font-size:.75rem;font-weight:600;animation:.15s ease-out fadeIn;display:flex}.form-feedback-text.form-error{color:var(--danger-main)}.form-feedback-text.form-success{color:var(--success-main)}.form-textarea{resize:vertical;min-height:80px}.form-hint{color:var(--text-muted);font-size:.75rem}.form-error{color:var(--danger-main);font-size:.75rem;font-weight:600}.card{background-color:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-fast);padding:1.5rem}.card-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding-bottom:.75rem;display:flex}.card-title{font-size:1.1rem;font-weight:700}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;display:grid}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem;display:grid}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:1.25rem;display:grid}@media (width<=1024px){.grid-cols-4,.grid-cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.grid-cols-4,.grid-cols-3,.grid-cols-2{grid-template-columns:1fr}.page-container{padding:1rem}}.stat-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);align-items:center;gap:1rem;padding:1.25rem;display:flex}.stat-icon-wrapper{border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:1.5rem;display:flex}.stat-number{font-size:1.6rem;font-weight:800;line-height:1.1}.stat-label{color:var(--text-muted);font-size:.8rem;font-weight:600}.badge{border-radius:var(--radius-full);align-items:center;gap:.35rem;padding:.2rem .6rem;font-size:.75rem;font-weight:700;line-height:1;display:inline-flex}.badge-present{background:var(--success-bg);color:var(--success-text);border:1px solid var(--success-border)}.badge-unexcused{background:var(--danger-bg);color:var(--danger-text);border:1px solid var(--danger-border)}.badge-excused{background:var(--info-bg);color:var(--info-text);border:1px solid var(--info-border)}.badge-late{background:var(--warning-bg);color:var(--warning-text);border:1px solid var(--warning-border)}.badge-activity{background:var(--purple-bg);color:var(--purple-text);border:1px solid var(--purple-border)}.badge-urgent{color:#991b1b;background:#fee2e2;border:1px solid #f87171;font-weight:800}.badge-high{color:#9a3412;background:#ffedd5;border:1px solid #fb923c}.badge-normal{background:var(--bg-surface-subtle);color:var(--text-secondary);border:1px solid var(--border-subtle)}.table-responsive{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-surface);width:100%;overflow-x:auto}.data-table{border-collapse:collapse;text-align:left;width:100%;font-size:.875rem}.data-table th{background:var(--bg-surface-subtle);color:var(--text-secondary);border-bottom:1px solid var(--border-subtle);padding:.75rem 1rem;font-weight:700}.data-table td{border-bottom:1px solid var(--border-subtle);color:var(--text-primary);vertical-align:middle;padding:.875rem 1rem}.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background-color:var(--bg-surface-hover)}.auth-page{background:radial-gradient(circle at 100% 0,#dbeafe,#f8fafc);justify-content:center;align-items:center;min-height:100vh;padding:1.5rem;display:flex}[data-theme=dark] .auth-page{background:radial-gradient(circle at 100% 0,#1e293b,#090d16)}.auth-card{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-xl);width:100%;max-width:440px;box-shadow:var(--shadow-xl);padding:2.25rem}.auth-header{text-align:center;margin-bottom:1.75rem}.auth-logo{border-radius:var(--radius-lg);background:linear-gradient(135deg, var(--primary-600), var(--primary-800));color:#fff;justify-content:center;align-items:center;width:52px;height:52px;margin:0 auto 1rem;font-size:1.75rem;font-weight:800;display:flex;box-shadow:0 8px 16px #2563eb40}.auth-tabs{background:var(--bg-surface-subtle);border-radius:var(--radius-lg);margin-bottom:1.5rem;padding:4px;display:flex}.auth-tab{text-align:center;border-radius:var(--radius-md);color:var(--text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;flex:1;padding:.5rem;font-size:.85rem;font-weight:700}.auth-tab.active{background:var(--bg-surface);color:var(--primary-accent-hover);box-shadow:var(--shadow-xs)}.role-pills{border-top:1px dashed var(--border-subtle);flex-wrap:wrap;gap:.375rem;margin-top:1rem;padding-top:1rem;display:flex}.role-pill{border-radius:var(--radius-full);background:var(--bg-surface-subtle);color:var(--text-secondary);border:1px solid var(--border-subtle);cursor:pointer;padding:2px 8px;font-size:.7rem;font-weight:600}.role-pill:hover{background:var(--primary-50);color:var(--primary-700);border-color:var(--primary-300)}.attendance-status-selector{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:var(--radius-md);gap:2px;padding:2px;display:inline-flex}.status-btn{border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);color:var(--text-secondary);background:0 0;border:none;padding:.25rem .55rem;font-size:.75rem;font-weight:700}.status-btn.active.present{background:var(--success-fill);color:#fff}.status-btn.active.unexcused{background:var(--danger-fill);color:#fff}.status-btn.active.excused{background:var(--info-fill);color:#fff}.status-btn.active.late{background:var(--warning-fill);color:#fff}.status-btn.active.activity{background:var(--purple-fill);color:#fff}.chat-layout{border:1px solid var(--border-subtle);border-radius:var(--radius-xl);background:var(--bg-surface);height:calc(100vh - 180px);display:flex;overflow:hidden}.chat-conversations-list{border-right:1px solid var(--border-subtle);background:var(--bg-surface-subtle);flex-direction:column;width:320px;display:flex}.chat-search-bar{border-bottom:1px solid var(--border-subtle);padding:1rem}.conversation-items{flex:1;overflow-y:auto}.conversation-item{border-bottom:1px solid var(--border-subtle);cursor:pointer;transition:background var(--transition-fast);padding:1rem}.conversation-item:hover{background:var(--bg-surface-hover)}.conversation-item.active{background:var(--bg-surface);border-left:3px solid var(--primary-600)}.chat-thread-container{background:var(--bg-surface);flex-direction:column;flex:1;display:flex}.chat-thread-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.chat-messages-area{flex-direction:column;flex:1;gap:1rem;padding:1.5rem;display:flex;overflow-y:auto}.message-bubble{border-radius:var(--radius-lg);max-width:75%;padding:.75rem 1rem;font-size:.9rem;position:relative}.message-bubble.incoming{background:var(--bg-surface-subtle);color:var(--text-primary);border-bottom-left-radius:var(--radius-xs);align-self:flex-start}.message-bubble.outgoing{background:var(--primary-600);color:#fff;border-bottom-right-radius:var(--radius-xs);align-self:flex-end}.message-meta{opacity:.8;align-items:center;gap:.35rem;margin-top:.25rem;font-size:.7rem;display:flex}.chat-input-bar{border-top:1px solid var(--border-subtle);align-items:center;gap:.75rem;padding:1rem 1.5rem;display:flex}.timetable-grid{grid-template-columns:90px repeat(5,minmax(140px,1fr));gap:.5rem;display:grid;overflow-x:auto}.timetable-header-cell{background:var(--bg-surface-subtle);text-align:center;border-radius:var(--radius-md);border:1px solid var(--border-subtle);padding:.75rem .5rem;font-size:.85rem;font-weight:700}.timetable-time-cell{background:var(--bg-surface-subtle);text-align:center;color:var(--text-muted);border-radius:var(--radius-md);border:1px solid var(--border-subtle);flex-direction:column;justify-content:center;padding:.75rem .5rem;font-size:.75rem;font-weight:600;display:flex}.timetable-slot-card{background:var(--primary-50);border:1px solid var(--primary-200);border-radius:var(--radius-md);transition:transform var(--transition-fast);flex-direction:column;gap:.2rem;padding:.625rem;display:flex}[data-theme=dark] .timetable-slot-card{background:var(--primary-900);border-color:var(--primary-700)}.timetable-slot-subject{color:var(--primary-900);font-size:.85rem;font-weight:700}[data-theme=dark] .timetable-slot-subject{color:var(--primary-200)}.timetable-slot-room{color:var(--text-muted);font-size:.7rem;font-weight:600}.timetable-slot-teacher{color:var(--text-secondary);font-size:.7rem}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#0f172a99;justify-content:center;align-items:center;padding:1.5rem;animation:.15s ease-out fadeIn;display:flex;position:fixed;inset:0}.modal-dialog{background:var(--bg-surface);border-radius:var(--radius-xl);width:100%;max-width:600px;max-height:90vh;box-shadow:var(--shadow-xl);border:1px solid var(--border-subtle);animation:.2s ease-out slideUp;overflow-y:auto}.modal-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-body{padding:1.5rem}.modal-footer{border-top:1px solid var(--border-subtle);background:var(--bg-surface-subtle);justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;display:flex}.toast-container{z-index:200;pointer-events:none;flex-direction:column;gap:.75rem;display:flex;position:fixed;bottom:1.5rem;right:1.5rem}.toast{pointer-events:auto;background:var(--bg-surface-elevated);border:1px solid var(--border-strong);border-radius:var(--radius-lg);min-width:320px;max-width:420px;box-shadow:var(--shadow-lg);transition:transform var(--transition-fast), opacity var(--transition-fast);align-items:center;gap:.75rem;padding:1rem 1.25rem 1.15rem;animation:.25s cubic-bezier(.16,1,.3,1) slideInRight;display:flex;position:relative;overflow:hidden}.toast.toast-exit{animation:.2s cubic-bezier(.7,0,.84,0) forwards slideOutRight}.toast:hover .toast-progress-bar{animation-play-state:paused}.toast-success{border-left:4px solid var(--success-main)}.toast-error{border-left:4px solid var(--danger-main)}.toast-info{border-left:4px solid var(--info-main)}.toast-warning{border-left:4px solid var(--warning-main)}.toast-progress-bar{background:var(--primary-600);border-bottom-left-radius:var(--radius-lg);border-bottom-right-radius:var(--radius-lg);height:3px;animation:linear forwards toastCountdown;position:absolute;bottom:0;left:0}.toast-error .toast-progress-bar{background:var(--danger-main)}.toast-success .toast-progress-bar{background:var(--success-main)}.toast-warning .toast-progress-bar{background:var(--warning-main)}.toast-info .toast-progress-bar{background:var(--info-main)}@keyframes toastCountdown{0%{width:100%}to{width:0%}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(50px)}to{opacity:1;transform:translate(0)}}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(60px)}}@keyframes shimmerAnimation{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-shimmer{background:linear-gradient(90deg, var(--bg-surface-subtle) 0%, var(--border-subtle) 50%, var(--bg-surface-subtle) 100%);will-change:background-position;background-size:200% 100%;animation:1.6s ease-in-out infinite shimmerAnimation}[data-theme=dark] .skeleton-shimmer{background:linear-gradient(90deg,#1e293b 0%,#334155 50%,#1e293b 100%) 0 0/200% 100%}.skeleton-box{border-radius:var(--radius-md);display:inline-block}.skeleton-text{border-radius:var(--radius-sm);height:1rem}.skeleton-avatar{border-radius:var(--radius-full)}.skeleton-card{pointer-events:none;border-color:var(--border-subtle)}.skeleton-row td{padding:1rem}.empty-state-card{background:var(--bg-surface);border:2px dashed var(--border-subtle);border-radius:var(--radius-xl);text-align:center;max-width:540px;transition:transform var(--transition-normal), border-color var(--transition-normal);flex-direction:column;justify-content:center;align-items:center;margin:1.5rem auto;padding:3rem 2rem;animation:.2s ease-out fadeIn;display:flex}.empty-state-card:hover{border-color:var(--border-strong)}.empty-state-compact{border-style:solid;border-width:1px;max-width:100%;padding:2rem 1.5rem}.empty-state-icon-wrapper{border-radius:var(--radius-full);background:var(--primary-50);border:1px solid var(--primary-200);width:64px;height:64px;transition:transform var(--transition-fast);justify-content:center;align-items:center;margin-bottom:1rem;display:flex}.empty-state-card:hover .empty-state-icon-wrapper{transform:scale(1.06)}.empty-state-icon-wrapper svg{display:block}[data-theme=dark] .empty-state-icon-wrapper{background:var(--primary-900);border-color:var(--primary-700)}.empty-state-icon{font-size:2rem}.empty-state-badge{margin-bottom:.75rem}.empty-state-title{color:var(--text-primary);margin-bottom:.5rem;font-size:1.2rem;font-weight:800}.empty-state-description{color:var(--text-muted);max-width:420px;margin-bottom:1.25rem;font-size:.875rem;line-height:1.5}.empty-state-action{margin-top:.5rem}.error-state-card{background:var(--bg-surface);border:1px solid var(--danger-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);text-align:center;flex-direction:column;align-items:center;width:100%;max-width:520px;padding:2.5rem 2rem;animation:.25s ease-out slideUp;display:flex}.error-state-icon-wrapper{border-radius:var(--radius-full);background:var(--danger-bg);border:1px solid var(--danger-border);justify-content:center;align-items:center;width:68px;height:68px;margin-bottom:1rem;display:flex}.error-state-icon{font-size:2.25rem}.error-state-title{color:var(--text-primary);margin-bottom:.5rem;font-size:1.35rem;font-weight:800}.error-state-description{color:var(--text-secondary);margin-bottom:1rem;font-size:.9rem;line-height:1.5}.error-state-details{background:var(--bg-surface-subtle);border:1px solid var(--border-subtle);border-radius:var(--radius-md);color:var(--text-muted);width:100%;margin-bottom:1.5rem;padding:.5rem .875rem;font-size:.8rem}.error-state-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.mobile-bottom-bar{background:var(--bg-surface);border-top:1px solid var(--border-subtle);z-index:35;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-around;align-items:center;height:60px;padding:0 .5rem;display:none;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px #0000000d}.mobile-bottom-item{color:var(--text-muted);border-radius:var(--radius-sm);min-width:54px;min-height:44px;transition:color var(--transition-fast);flex-direction:column;justify-content:center;align-items:center;gap:2px;padding:4px 8px;font-size:.65rem;font-weight:700;text-decoration:none;display:flex;position:relative}.mobile-bottom-item.active{color:var(--primary-accent)}.mobile-bottom-item .mobile-bottom-icon{font-size:1.25rem;line-height:1}.mobile-bottom-badge{background:var(--danger-fill);color:#fff;border-radius:var(--radius-full);padding:0 4px;font-size:.6rem;font-weight:800;line-height:1.2;position:absolute;top:2px;right:10px}@media (width<=1024px){.sidebar-toggle-btn{justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.sidebar{box-shadow:var(--shadow-xl);position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}}@media (width<=640px){.mobile-bottom-bar{display:flex}.main-wrapper{padding-bottom:64px}.toast-container{bottom:4.75rem;left:1rem;right:1rem}.toast{min-width:100%;max-width:100%}.chat-layout{flex-direction:column;height:calc(100vh - 220px)}.chat-conversations-list{border-right:none;border-bottom:1px solid var(--border-subtle);width:100%;height:180px}}.file-upload-container{flex-direction:column;gap:.5rem;width:100%;display:flex}.file-upload-dropzone{border:2px dashed var(--border-strong);background:var(--bg-surface-subtle);border-radius:var(--radius-md);text-align:center;cursor:pointer;transition:all var(--transition-fast);outline:none;padding:1.25rem 1rem;position:relative}.file-upload-dropzone:hover,.file-upload-dropzone:focus-visible,.file-upload-dropzone.dragover{border-color:var(--primary-600);background:var(--primary-50)}[data-theme=dark] .file-upload-dropzone:hover,[data-theme=dark] .file-upload-dropzone:focus-visible,[data-theme=dark] .file-upload-dropzone.dragover{border-color:var(--primary-400);background:#2563eb26}.file-upload-dropzone.is-invalid{border-color:var(--danger-main);background:var(--danger-bg)}.file-upload-input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.file-upload-idle{flex-direction:column;align-items:center;gap:.35rem;display:flex}.file-upload-icon{font-size:1.75rem;line-height:1}.file-upload-prompt{color:var(--text-secondary);font-size:.875rem}.file-upload-prompt-highlight{color:var(--primary-600);font-weight:700;text-decoration:underline}[data-theme=dark] .file-upload-prompt-highlight{color:var(--primary-400)}.file-upload-hint{color:var(--text-muted);font-size:.75rem}.file-upload-preview{background:var(--bg-surface);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);text-align:left;justify-content:space-between;align-items:center;gap:1rem;padding:.625rem .875rem;display:flex}.file-upload-preview-body{align-items:center;gap:.75rem;display:flex;overflow:hidden}.file-upload-preview-media{flex-shrink:0;justify-content:center;align-items:center;display:flex}.file-upload-thumbnail{object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);width:44px;height:44px}.file-upload-doc-badge{background:var(--danger-bg);width:44px;height:44px;color:var(--danger-text);border:1px solid var(--danger-border);border-radius:var(--radius-sm);text-align:center;justify-content:center;align-items:center;font-size:.75rem;font-weight:800;display:flex}.file-upload-preview-meta{flex-direction:column;display:flex;overflow:hidden}.file-upload-filename{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.875rem;font-weight:600;overflow:hidden}.file-upload-filesize{color:var(--text-muted);font-size:.75rem}.file-upload-remove-btn{flex-shrink:0}.file-upload-progress{margin-top:.25rem}.file-upload-progress-info{color:var(--text-muted);justify-content:space-between;margin-bottom:.25rem;font-size:.75rem;display:flex}.file-upload-progress-bar{background:var(--bg-surface-subtle);border-radius:var(--radius-full);border:1px solid var(--border-subtle);width:100%;height:6px;overflow:hidden}.file-upload-progress-fill{background:var(--primary-600);border-radius:var(--radius-full);height:100%;transition:width .2s}.file-upload-error{color:var(--danger-text);background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:var(--radius-sm);align-items:center;gap:.35rem;padding:.5rem .75rem;font-size:.8rem;display:flex}.network-offline-badge{background-color:var(--warning-bg);border:1px solid var(--warning-border);color:var(--warning-text);border-radius:var(--radius-full);box-shadow:var(--shadow-xs);align-items:center;gap:.45rem;padding:4px 10px;font-size:.75rem;font-weight:600;line-height:1;transition:opacity .2s,transform .2s;animation:.3s cubic-bezier(.16,1,.3,1) badgeFadeIn;display:inline-flex}.network-offline-badge.hidden{display:none!important}.offline-dot{background-color:var(--warning-main);border-radius:50%;width:8px;height:8px;animation:1.8s cubic-bezier(.66,0,0,1) infinite offlinePulse;box-shadow:0 0 #f59e0bb3}@keyframes offlinePulse{0%{transform:scale(.95);box-shadow:0 0 #f59e0bb3}70%{transform:scale(1.05);box-shadow:0 0 0 6px #f59e0b00}to{transform:scale(.95);box-shadow:0 0 #f59e0b00}}@keyframes badgeFadeIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.pwa-install-btn{color:var(--primary-600);border:1px solid var(--primary-200);background-color:var(--primary-50);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:.35rem;padding:4px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.pwa-install-btn:hover{background-color:var(--primary-100);color:var(--primary-700);border-color:var(--primary-300);box-shadow:var(--shadow-xs)}.pwa-install-btn:focus-visible{outline:2px solid var(--primary-600);outline-offset:2px}[data-theme=dark] .pwa-install-btn{color:var(--primary-300);background-color:#4f46e526;border-color:#4f46e559}[data-theme=dark] .pwa-install-btn:hover{color:var(--primary-200);background-color:#4f46e540;border-color:#4f46e580}.pwa-install-btn.hidden{display:none!important}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
