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