:root{--lms-text-xs:11px;--lms-text-sm:13px;--lms-text-base:14px;--lms-text-md:15px;--lms-text-lg:16px;--lms-text-xl:18px;--lms-text-2xl:22px;--lms-text-3xl:28px;--lms-weight-body:400;--lms-weight-heading:500;--lms-space-0:0px;--lms-space-0_5:2px;--lms-space-1:4px;--lms-space-1_5:6px;--lms-space-2:8px;--lms-space-3:12px;--lms-space-4:16px;--lms-space-5:20px;--lms-space-6:24px;--lms-space-8:32px;--lms-space-10:40px;--lms-space-12:48px;--lms-space-16:64px;--lms-radius-sm:4px;--lms-radius-md:6px;--lms-radius-lg:8px;--lms-radius-xl:12px;--lms-radius-2xl:16px;--lms-radius-3xl:24px;--lms-radius-pill:9999px;--lms-shadow-none:none;--lms-shadow-sm:0 1px 2px #0000000d;--lms-shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--lms-shadow-lg:0 8px 16px -4px #00000014, 0 4px 6px -4px #0000000a;--lms-shadow-xl:0 16px 32px -8px #0000001a, 0 8px 16px -8px #0000000f;--lms-shadow-modal:0 20px 60px -12px #0000002e, 0 8px 24px -8px #0000001a;--lms-z-base:0;--lms-z-dropdown:100;--lms-z-sticky:200;--lms-z-modal:300;--lms-z-toast:400;--lms-z-tooltip:500;--lms-duration-fast:.1s;--lms-duration-base:.15s;--lms-duration-slow:.25s;--lms-duration-modal:.2s;--lms-easing-default:cubic-bezier(.4, 0, .2, 1);--lms-admin-accent:#4f46e5;--lms-admin-accent-hover:#4338ca;--lms-admin-accent-active:#3730a3;--lms-admin-accent-ring:#4f46e540;--lms-admin-accent-soft:#4f46e514;--lms-admin-accent-surface:#eef2ff;--lms-student-accent:#4f46e5;--lms-student-accent-hover:#4338ca;--lms-student-spinner-border:#0000001a;--lms-student-spinner-accent:#4f46e5;--lms-surface-primary:#fff;--lms-surface-secondary:#f8fafc;--lms-surface-tertiary:#f1f5f9;--lms-surface-elevated:#fff;--lms-surface-overlay:#00000073;--lms-border-default:#e2e8f0;--lms-border-strong:#cbd5e1;--lms-border-subtle:#e2e8f0e6;--lms-border-accent:var(--lms-admin-accent);--lms-border-ring:#f1f5f9cc;--lms-text-primary:#0f172a;--lms-text-secondary:#475569;--lms-text-tertiary:#94a3b8;--lms-text-disabled:#cbd5e1;--lms-text-inverse:#fff;--lms-text-link:var(--lms-admin-accent);--lms-text-link-hover:var(--lms-admin-accent-hover);--lms-success-bg:#f0fdf4;--lms-success-border:#bbf7d0;--lms-success-text:#166534;--lms-success-icon:#059669;--lms-warning-bg:#fffbeb;--lms-warning-border:#fde68a;--lms-warning-text:#92400e;--lms-warning-icon:#d97706;--lms-error-bg:#fef2f2;--lms-error-border:#fecaca;--lms-error-text:#991b1b;--lms-error-icon:#dc2626;--lms-info-bg:#eff6ff;--lms-info-border:#bfdbfe;--lms-info-text:#1e40af;--lms-info-icon:#2563eb;--lms-chart-1:#0d9488;--lms-chart-2:#7c3aed;--lms-chart-3:#d97706;--lms-chart-4:#dc2626;--lms-chart-5:#059669;--lms-chart-6:#6366f1;--lms-chart-7:#f97316;--lms-chart-8:#0ea5e9;--lms-brand-gold-tint-1:#fffdf7;--lms-brand-gold-tint-2:#fff7e6;--lms-brand-gold-tint-3:#fff2ca;--lms-brand-gold-surface:#fff9ea;--lms-brand-gold-border:#d8c28a;--lms-brand-gold-border-soft:#dfcb93;--lms-brand-gold-text:#8d6f14;--lms-brand-gold-accent:#c39a1f;--lms-brand-gold-deep:#7c5e10;--lms-brand-gold-highlight:#f5dfa0;--lms-brand-gold-shadow:#8c6e1c33;--lms-input-height:40px;--lms-input-padding-x:var(--lms-space-4);--lms-input-padding-y:10px;--lms-input-font-size:var(--lms-text-base);--lms-input-radius:var(--lms-radius-xl);--lms-input-border:var(--lms-border-default);--lms-btn-height-sm:32px;--lms-btn-height-md:40px;--lms-btn-height-lg:48px;--lms-btn-padding-x-sm:var(--lms-space-3);--lms-btn-padding-x-md:var(--lms-space-4);--lms-btn-padding-x-lg:var(--lms-space-6);--lms-btn-radius:var(--lms-radius-xl);--lms-btn-font-size:var(--lms-text-base);--lms-btn-font-weight:var(--lms-weight-heading);--lms-spinner-size-page:40px;--lms-spinner-size-inline:32px;--lms-spinner-size-sm:20px;--lms-spinner-width:4px;--lms-sidebar-width:256px;--lms-topbar-height:56px;--lms-page-max-width:1280px;--lms-page-padding-x:var(--lms-space-6);--lms-page-padding-y:var(--lms-space-8);--lms-modal-width-sm:400px;--lms-modal-width-md:520px;--lms-modal-width-lg:640px;--lms-table-header-height:48px;--lms-table-header-bg:var(--lms-surface-secondary);--lms-table-header-font-size:var(--lms-text-xs);--lms-table-header-color:var(--lms-text-secondary);--lms-table-row-height:52px;--lms-table-row-hover:var(--lms-surface-secondary);--lms-badge-font-size:var(--lms-text-xs);--lms-badge-font-weight:var(--lms-weight-heading);--lms-badge-padding-x:10px;--lms-badge-padding-y:2px;--lms-badge-radius:var(--lms-radius-pill);--lms-status-open-bg:#eef2ff;--lms-status-open-text:#4338ca;--lms-status-open-border:#c7d2fe;--lms-status-assigned-bg:#eff6ff;--lms-status-assigned-text:#1d4ed8;--lms-status-assigned-border:#bfdbfe;--lms-status-in-progress-bg:#ecfeff;--lms-status-in-progress-text:#0e7490;--lms-status-in-progress-border:#a5f3fc;--lms-status-waiting-student-bg:#fffbeb;--lms-status-waiting-student-text:#92400e;--lms-status-waiting-student-border:#fde68a;--lms-status-waiting-support-bg:#fff7ed;--lms-status-waiting-support-text:#9a3412;--lms-status-waiting-support-border:#fed7aa;--lms-status-resolved-bg:#f0fdf4;--lms-status-resolved-text:#166534;--lms-status-resolved-border:#bbf7d0;--lms-status-closed-bg:#f8fafc;--lms-status-closed-text:#64748b;--lms-status-closed-border:#e2e8f0;--lms-status-escalated-bg:#fef2f2;--lms-status-escalated-text:#b91c1c;--lms-status-escalated-border:#fecaca;--lms-status-pending-bg:#fffbeb;--lms-status-pending-text:#92400e;--lms-status-pending-border:#fde68a;--lms-status-approved-bg:#f0fdf4;--lms-status-approved-text:#166534;--lms-status-approved-border:#bbf7d0;--lms-status-rejected-bg:#fef2f2;--lms-status-rejected-text:#991b1b;--lms-status-rejected-border:#fecaca;--lms-status-cancelled-bg:#f8fafc;--lms-status-cancelled-text:#64748b;--lms-status-cancelled-border:#e2e8f0;--lms-status-active-bg:#f0fdf4;--lms-status-active-text:#166534;--lms-status-active-border:#bbf7d0;--lms-status-archived-bg:#f8fafc;--lms-status-archived-text:#475569;--lms-status-archived-border:#e2e8f0;--lms-priority-low-bg:#f8fafc;--lms-priority-low-text:#64748b;--lms-priority-low-dot:#94a3b8;--lms-priority-medium-bg:#eff6ff;--lms-priority-medium-text:#1d4ed8;--lms-priority-medium-dot:#3b82f6;--lms-priority-high-bg:#fffbeb;--lms-priority-high-text:#92400e;--lms-priority-high-dot:#f59e0b;--lms-priority-urgent-bg:#fef2f2;--lms-priority-urgent-text:#991b1b;--lms-priority-urgent-dot:#ef4444}
.btn-primary{justify-content:center;align-items:center;gap:var(--lms-space-2);height:var(--lms-btn-height-md);padding:0 var(--lms-btn-padding-x-md);border-radius:var(--lms-btn-radius);font-size:var(--lms-btn-font-size);font-weight:var(--lms-btn-font-weight);color:var(--lms-text-inverse);background:var(--lms-admin-accent);transition:all var(--lms-duration-slow) var(--lms-easing-default);cursor:pointer;border:none;display:inline-flex;box-shadow:0 4px 12px -2px #4f46e540}.btn-primary:hover{background:var(--lms-admin-accent-hover);box-shadow:0 6px 16px -2px #4f46e54d}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary:disabled:hover{background:var(--lms-admin-accent);box-shadow:0 4px 12px -2px #4f46e540}.btn-primary.is-loading{pointer-events:none;opacity:.75}.btn-secondary{justify-content:center;align-items:center;gap:var(--lms-space-2);height:var(--lms-btn-height-md);padding:0 var(--lms-btn-padding-x-md);border-radius:var(--lms-btn-radius);font-size:var(--lms-btn-font-size);font-weight:var(--lms-btn-font-weight);color:var(--lms-text-primary);background:var(--lms-surface-primary);border:1px solid var(--lms-border-default);box-shadow:var(--lms-shadow-sm);transition:all var(--lms-duration-slow) var(--lms-easing-default);cursor:pointer;display:inline-flex}.btn-secondary:hover{border-color:var(--lms-admin-accent);background:var(--lms-admin-accent-surface);color:var(--lms-admin-accent);box-shadow:var(--lms-shadow-md)}.btn-secondary:active{transform:scale(.98)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{justify-content:center;align-items:center;gap:var(--lms-space-2);height:var(--lms-btn-height-md);padding:0 var(--lms-btn-padding-x-md);border-radius:var(--lms-btn-radius);font-size:var(--lms-btn-font-size);font-weight:var(--lms-btn-font-weight);color:var(--lms-text-secondary);transition:all var(--lms-duration-base) var(--lms-easing-default);cursor:pointer;background:0 0;border:none;display:inline-flex}.btn-ghost:hover{background:var(--lms-surface-tertiary);color:var(--lms-text-primary)}.btn-ghost:active{transform:scale(.98)}.btn-ghost:disabled{opacity:.5;cursor:not-allowed}.btn-danger{justify-content:center;align-items:center;gap:var(--lms-space-2);height:var(--lms-btn-height-md);padding:0 var(--lms-btn-padding-x-md);border-radius:var(--lms-btn-radius);font-size:var(--lms-btn-font-size);font-weight:var(--lms-btn-font-weight);color:var(--lms-error-text);background:var(--lms-error-bg);border:1px solid var(--lms-error-border);box-shadow:var(--lms-shadow-sm);transition:all var(--lms-duration-slow) var(--lms-easing-default);cursor:pointer;display:inline-flex}.btn-danger:hover{background:var(--lms-error-border);border-color:var(--lms-error-icon)}.btn-danger:active{transform:scale(.98)}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.btn-approve{justify-content:center;align-items:center;gap:var(--lms-space-2);height:var(--lms-btn-height-md);padding:0 var(--lms-btn-padding-x-md);border-radius:var(--lms-btn-radius);font-size:var(--lms-btn-font-size);font-weight:var(--lms-btn-font-weight);color:var(--lms-text-inverse);background:var(--lms-success-icon);box-shadow:var(--lms-shadow-sm);transition:all var(--lms-duration-slow) var(--lms-easing-default);cursor:pointer;border:none;display:inline-flex}.btn-approve:hover{background:var(--lms-success-text);box-shadow:var(--lms-shadow-md)}.btn-approve:active{transform:scale(.98)}.btn-approve:disabled{opacity:.5;cursor:not-allowed}.btn-reject{justify-content:center;align-items:center;gap:var(--lms-space-2);height:var(--lms-btn-height-md);padding:0 var(--lms-btn-padding-x-md);border-radius:var(--lms-btn-radius);font-size:var(--lms-btn-font-size);font-weight:var(--lms-btn-font-weight);color:var(--lms-text-secondary);background:var(--lms-surface-primary);border:1px solid var(--lms-border-default);box-shadow:var(--lms-shadow-sm);transition:all var(--lms-duration-slow) var(--lms-easing-default);cursor:pointer;display:inline-flex}.btn-reject:hover{background:var(--lms-surface-tertiary)}.btn-reject:active{transform:scale(.98)}.btn-reject:disabled{opacity:.5;cursor:not-allowed}.btn-sm{height:var(--lms-btn-height-sm);padding:0 var(--lms-btn-padding-x-sm);font-size:var(--lms-text-sm)}.btn-lg{height:var(--lms-btn-height-lg);padding:0 var(--lms-btn-padding-x-lg);font-size:var(--lms-text-lg)}.input{width:100%;min-height:var(--lms-input-height);padding:var(--lms-input-padding-y) var(--lms-input-padding-x);border-radius:var(--lms-input-radius);border:1px solid var(--lms-input-border);background:var(--lms-surface-primary);color:var(--lms-text-primary);font-size:var(--lms-input-font-size);box-shadow:var(--lms-shadow-sm);transition:border-color var(--lms-duration-slow) var(--lms-easing-default), box-shadow var(--lms-duration-slow) var(--lms-easing-default);outline:none}.input::placeholder{color:var(--lms-text-tertiary)}.input:focus{border-color:var(--lms-admin-accent);box-shadow:0 0 0 3px var(--lms-admin-accent-ring)}.input:disabled{background:var(--lms-surface-tertiary);color:var(--lms-text-disabled);cursor:not-allowed}.input--error{border-color:var(--lms-error-icon);box-shadow:0 0 0 3px #dc26261f}.input--error:focus{border-color:var(--lms-error-icon);box-shadow:0 0 0 3px #dc26262e}textarea.input{resize:vertical;min-height:80px;padding-top:var(--lms-space-3);padding-bottom:var(--lms-space-3)}select.input{appearance:none;padding-right:var(--lms-space-10);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--lms-space-3) center;background-size:16px}.checkbox,.radio{border-radius:var(--lms-radius-sm);border:1px solid var(--lms-border-strong);width:16px;height:16px;accent-color:var(--lms-admin-accent);cursor:pointer}.radio{border-radius:var(--lms-radius-pill)}.checkbox:focus,.radio:focus{box-shadow:0 0 0 3px var(--lms-admin-accent-ring);outline:none}.toggle{border-radius:var(--lms-radius-pill);background:var(--lms-border-default);cursor:pointer;width:44px;height:24px;transition:background var(--lms-duration-slow) var(--lms-easing-default);border:2px solid #0000;display:inline-flex;position:relative}.toggle[aria-checked=true]{background:var(--lms-admin-accent)}.toggle:after{content:"";border-radius:var(--lms-radius-pill);background:var(--lms-surface-primary);width:16px;height:16px;box-shadow:var(--lms-shadow-sm);transition:transform var(--lms-duration-slow) var(--lms-easing-default);position:absolute;top:2px;left:2px}.toggle[aria-checked=true]:after{transform:translate(20px)}.toggle:disabled{opacity:.5;cursor:not-allowed}.card{border-radius:var(--lms-radius-2xl);border:1px solid var(--lms-border-subtle);background:var(--lms-surface-primary);padding:var(--lms-space-6);box-shadow:var(--lms-shadow-lg);transition:box-shadow var(--lms-duration-slow) var(--lms-easing-default)}.card:hover{box-shadow:var(--lms-shadow-xl)}.card-section{border-radius:var(--lms-radius-2xl);border:1px solid var(--lms-border-subtle);background:var(--lms-surface-primary);padding:var(--lms-space-5);box-shadow:var(--lms-shadow-sm)}.card-metric{border-radius:var(--lms-radius-2xl);border:1px solid var(--lms-border-default);border-left:4px solid var(--lms-admin-accent);background:var(--lms-surface-primary);padding:var(--lms-space-5);box-shadow:var(--lms-shadow-sm)}.card-metric__label{font-size:var(--lms-text-xs);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.card-metric__value{margin-top:var(--lms-space-1);font-size:var(--lms-text-2xl);font-variant-numeric:tabular-nums;font-weight:700}.table-th{padding:var(--lms-space-4) var(--lms-space-5);font-size:var(--lms-table-header-font-size);text-transform:uppercase;letter-spacing:.05em;color:var(--lms-table-header-color);background:var(--lms-table-header-bg);text-align:left;font-weight:600}.table-th--compact{padding:var(--lms-space-3) var(--lms-space-4);font-size:var(--lms-table-header-font-size);text-transform:uppercase;letter-spacing:.05em;color:var(--lms-table-header-color);background:var(--lms-table-header-bg);text-align:left;font-weight:600}.table-td{padding:var(--lms-space-4) var(--lms-space-5);font-size:var(--lms-text-base);color:var(--lms-text-primary)}.table-tr{transition:background var(--lms-duration-fast) var(--lms-easing-default)}.table-tr:hover{background:var(--lms-table-row-hover)}.badge{align-items:center;gap:var(--lms-space-1);padding:var(--lms-space-1) var(--lms-space-3);border-radius:var(--lms-badge-radius);font-size:var(--lms-badge-font-size);font-weight:var(--lms-badge-font-weight);white-space:nowrap;display:inline-flex}.badge-inline{align-items:center;gap:var(--lms-space-1);padding:var(--lms-badge-padding-y) var(--lms-badge-padding-x);border-radius:var(--lms-badge-radius);font-size:var(--lms-badge-font-size);font-weight:var(--lms-badge-font-weight);white-space:nowrap;display:inline-flex}.badge--open{background:var(--lms-status-open-bg);color:var(--lms-status-open-text)}.badge--assigned{background:var(--lms-status-assigned-bg);color:var(--lms-status-assigned-text)}.badge--in-progress{background:var(--lms-status-in-progress-bg);color:var(--lms-status-in-progress-text)}.badge--waiting-student{background:var(--lms-status-waiting-student-bg);color:var(--lms-status-waiting-student-text)}.badge--waiting-support{background:var(--lms-status-waiting-support-bg);color:var(--lms-status-waiting-support-text)}.badge--resolved{background:var(--lms-status-resolved-bg);color:var(--lms-status-resolved-text)}.badge--closed{background:var(--lms-status-closed-bg);color:var(--lms-status-closed-text)}.badge--escalated{background:var(--lms-status-escalated-bg);color:var(--lms-status-escalated-text)}.badge--pending{background:var(--lms-status-pending-bg);color:var(--lms-status-pending-text)}.badge--approved{background:var(--lms-status-approved-bg);color:var(--lms-status-approved-text)}.badge--rejected{background:var(--lms-status-rejected-bg);color:var(--lms-status-rejected-text)}.badge--cancelled{background:var(--lms-status-cancelled-bg);color:var(--lms-status-cancelled-text)}.badge--active{background:var(--lms-status-active-bg);color:var(--lms-status-active-text)}.badge--archived{background:var(--lms-status-archived-bg);color:var(--lms-status-archived-text)}.badge--priority-low{background:var(--lms-priority-low-bg);color:var(--lms-priority-low-text)}.badge--priority-medium{background:var(--lms-priority-medium-bg);color:var(--lms-priority-medium-text)}.badge--priority-high{background:var(--lms-priority-high-bg);color:var(--lms-priority-high-text)}.badge--priority-urgent{background:var(--lms-priority-urgent-bg);color:var(--lms-priority-urgent-text)}.alert{align-items:flex-start;gap:var(--lms-space-3);padding:var(--lms-space-3) var(--lms-space-4);border-radius:var(--lms-radius-xl);font-size:var(--lms-text-base);font-weight:var(--lms-weight-heading);border-style:solid;border-width:1px;display:flex}.alert--error{background:var(--lms-error-bg);border-color:var(--lms-error-border);color:var(--lms-error-text)}.alert--success{background:var(--lms-success-bg);border-color:var(--lms-success-border);color:var(--lms-success-text)}.alert--warning{background:var(--lms-warning-bg);border-color:var(--lms-warning-border);color:var(--lms-warning-text)}.alert--info{background:var(--lms-info-bg);border-color:var(--lms-info-border);color:var(--lms-info-text)}.modal-backdrop{z-index:var(--lms-z-modal);background:var(--lms-surface-overlay);padding:var(--lms-space-4);animation:lms-fade-in var(--lms-duration-modal) var(--lms-easing-default);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-card{width:100%;max-width:var(--lms-modal-width-md);border-radius:var(--lms-radius-2xl);background:var(--lms-surface-primary);box-shadow:var(--lms-shadow-modal);animation:lms-slide-up var(--lms-duration-modal) var(--lms-easing-default);overflow:hidden}.modal-card--sm{max-width:var(--lms-modal-width-sm)}.modal-card--lg{max-width:var(--lms-modal-width-lg)}.modal-header{padding:var(--lms-space-5) var(--lms-space-6);border-bottom:1px solid var(--lms-border-default);justify-content:space-between;align-items:center;display:flex}.modal-header__title{font-size:var(--lms-text-xl);color:var(--lms-text-primary);font-weight:600}.modal-body{padding:var(--lms-space-6)}.modal-footer{padding:var(--lms-space-4) var(--lms-space-6);border-top:1px solid var(--lms-border-default);justify-content:flex-end;align-items:center;gap:var(--lms-space-3);display:flex}@keyframes lms-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lms-slide-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.sidebar-item{align-items:center;gap:var(--lms-space-3);padding:10px var(--lms-space-3);border-radius:var(--lms-radius-xl);font-size:var(--lms-text-base);font-weight:var(--lms-weight-heading);color:var(--lms-text-secondary);transition:all var(--lms-duration-base) var(--lms-easing-default);cursor:pointer;display:flex}.sidebar-item:hover{background:var(--lms-admin-accent-soft);color:var(--lms-text-primary)}.sidebar-item.is-active{background:var(--lms-admin-accent);color:var(--lms-text-inverse);box-shadow:0 4px 12px -2px #4f46e533}.tab-btn{align-items:center;gap:var(--lms-space-2);padding:10px var(--lms-space-4);border-radius:var(--lms-radius-xl);font-size:var(--lms-text-base);font-weight:var(--lms-weight-heading);color:var(--lms-text-secondary);background:var(--lms-surface-primary);border:1px solid var(--lms-border-default);transition:all var(--lms-duration-base) var(--lms-easing-default);cursor:pointer;display:inline-flex}.tab-btn:hover{border-color:var(--lms-admin-accent);background:var(--lms-admin-accent-surface);color:var(--lms-admin-accent)}.tab-btn.is-active{background:var(--lms-admin-accent);color:var(--lms-text-inverse);border-color:var(--lms-admin-accent);box-shadow:var(--lms-shadow-md)}.nav-pills{align-items:center;gap:var(--lms-space-2);padding:6px var(--lms-space-3);border-radius:var(--lms-radius-pill);font-size:var(--lms-text-xs);color:var(--lms-text-secondary);background:var(--lms-surface-tertiary);transition:all var(--lms-duration-fast) var(--lms-easing-default);cursor:pointer;font-weight:600;display:inline-flex}.nav-pills:hover{background:var(--lms-border-default)}.nav-pills.is-active{background:var(--lms-admin-accent);color:var(--lms-text-inverse)}.spinner{width:var(--lms-spinner-size-page);height:var(--lms-spinner-size-page);border-radius:var(--lms-radius-pill);border:var(--lms-spinner-width) solid var(--lms-border-default);border-top-color:var(--lms-admin-accent);animation:.75s linear infinite lms-spin}.spinner-lms{width:var(--lms-spinner-size-page);height:var(--lms-spinner-size-page);border-radius:var(--lms-radius-pill);border:var(--lms-spinner-width) solid var(--lms-student-spinner-border);border-top-color:var(--lms-student-spinner-accent);animation:.75s linear infinite lms-spin}.spinner--sm,.spinner-lms--sm{width:var(--lms-spinner-size-sm);height:var(--lms-spinner-size-sm);border-width:2px}.spinner--inline,.spinner-lms--inline{width:var(--lms-spinner-size-inline);height:var(--lms-spinner-size-inline);border-width:3px}@keyframes lms-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.empty-state{padding:var(--lms-space-12) var(--lms-space-6);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.empty-state__icon{border-radius:var(--lms-radius-pill);background:var(--lms-admin-accent-surface);width:64px;height:64px;color:var(--lms-admin-accent);justify-content:center;align-items:center;display:flex}.empty-state__icon svg{width:24px;height:24px}.empty-state__title{margin-top:var(--lms-space-4);font-size:var(--lms-text-lg);font-weight:var(--lms-weight-heading);color:var(--lms-text-primary)}.empty-state__desc{margin-top:var(--lms-space-1);font-size:var(--lms-text-base);color:var(--lms-text-secondary);max-width:360px}.empty-state__cta{margin-top:var(--lms-space-6)}.icon-xs{width:14px;height:14px}.icon-sm{width:16px;height:16px}.icon-md{width:20px;height:20px}.icon-lg{width:24px;height:24px}@media (prefers-reduced-motion:reduce){.spinner,.spinner-lms,.spinner--sm,.spinner-lms--sm,.modal-card,.modal-backdrop{animation:none!important}.btn-primary:active,.btn-secondary:active,.btn-ghost:active,.btn-danger:active,.btn-approve:active,.btn-reject:active{transform:none!important}}
.rte-shell{--rte-bg:#fff;--rte-panel:#fff;--rte-border:#e5e7eb;--rte-muted:#6b7280;--rte-text:#111827;--rte-active:#eef2ff;--rte-accent:#4f46e5;color:var(--rte-text);background:var(--rte-bg);border:1px solid var(--rte-border);max-height:min(80vh, var(--rte-max-height,920px));border-radius:12px;flex-direction:column;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;display:flex;position:relative;overflow:hidden}.rte-toolbar{border-bottom:1px solid var(--rte-border);background:var(--rte-panel);z-index:30;flex-wrap:wrap;align-items:center;gap:6px;padding:10px;display:flex;position:sticky;top:0;box-shadow:0 1px #0f172a0d}.rte-font-select-narrow{min-width:64px}.rte-font-select-spacing{min-width:72px}.rte-dialog-checkbox-row{color:#334155;cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.rte-font-select{border:1px solid var(--rte-border);min-width:118px;height:34px;color:var(--rte-text);cursor:pointer;background:#fff;border-radius:8px;padding:0 28px 0 10px;font-size:12px;font-weight:600}.rte-font-select:focus{outline-offset:1px;outline:2px solid #c7d2fe}.rte-color-input{border:1px solid var(--rte-border);cursor:pointer;background:#fff;border-radius:8px;width:36px;height:34px;padding:3px}.rte-color-control{border:1px solid var(--rte-border);background:#fff;border-radius:10px;flex-direction:column;gap:4px;min-width:122px;padding:6px;display:flex}.rte-color-dropdown{position:relative}.rte-color-dropdown>summary{list-style:none}.rte-color-dropdown>summary::-webkit-details-marker{display:none}.rte-color-dropdown-trigger{border:1px solid var(--rte-border);height:34px;color:var(--rte-text);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:6px;padding:0 10px;font-size:12px;font-weight:600;display:inline-flex}.rte-color-dropdown-trigger:hover{background:#f8fafc;border-color:#94a3b8}.rte-color-dropdown-panel{z-index:35;position:absolute;top:40px;left:0;box-shadow:0 10px 28px #0206172e}.rte-color-title{color:#334155;align-items:center;gap:6px;font-size:11px;font-weight:700;display:flex}.rte-color-title svg{width:13px;height:13px}.rte-color-swatches,.rte-color-recent{grid-template-columns:repeat(6,1fr);gap:4px;display:grid}.rte-color-swatch{cursor:pointer;border:1px solid #cbd5e1;border-radius:999px;width:15px;height:15px;padding:0}.rte-color-swatch.recent{width:13px;height:13px}.rte-color-custom{align-items:center;gap:6px;display:flex}.rte-color-clear{border:1px solid var(--rte-border);color:#475569;cursor:pointer;background:#fff;border-radius:6px;padding:4px 6px;font-size:11px}.rte-color-recent-label{color:#64748b;text-transform:uppercase;letter-spacing:.05em;font-size:10px}.rte-toolbar.floating{border:1px solid var(--rte-border);border-radius:10px;margin:10px;position:sticky;top:10px;box-shadow:0 8px 24px #0f172a14}.rte-btn{border:1px solid var(--rte-border);min-width:34px;height:34px;color:var(--rte-text);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;padding:0 9px;font-size:12px;font-weight:600;transition:all .16s;display:inline-flex;box-shadow:0 1px #0f172a08}.rte-btn:hover{color:#0f172a;background:#f8fafc;border-color:#94a3b8;transform:translateY(-.5px)}.rte-btn.active{background:var(--rte-active);color:var(--rte-accent);border-color:#c7d2fe;font-weight:600;box-shadow:0 0 0 1px #6366f12e}.rte-btn svg{flex:none;width:17px;height:17px}.rte-btn-text{letter-spacing:.02em;font-size:11px;line-height:1}.rte-number-input{border:1px solid var(--rte-border);width:74px;height:34px;color:var(--rte-text);background:#fff;border-radius:8px;padding:0 8px;font-size:12px;font-weight:600}.rte-number-input:disabled{opacity:.45}.rte-btn:disabled{opacity:.4;cursor:not-allowed}.rte-separator{background:var(--rte-border);width:1px;height:18px;margin:0 4px}.rte-content{overscroll-behavior:contain;min-height:var(--rte-content-min-height,220px);max-height:calc(min(80vh, var(--rte-max-height,920px)) - 140px);padding:8px 12px 18px;position:relative;overflow:auto}.rte-stats{border-top:1px solid var(--rte-border);color:var(--rte-muted);background:#fafafa;justify-content:flex-end;gap:8px;padding:8px 12px;font-size:12px;display:flex}.rte-inline-toolbar{z-index:50;background:#0f172af5;border-radius:10px;align-items:center;gap:4px;padding:4px;display:inline-flex;position:absolute;box-shadow:0 12px 30px #02061759}.rte-inline-toolbar.hidden{display:none}.rte-inline-btn{color:#fff;cursor:pointer;background:0 0;border:none;border-radius:7px;justify-content:center;align-items:center;width:28px;height:28px;display:inline-flex}.rte-inline-btn:hover{background:#ffffff24}.rte-media-resize-overlay{pointer-events:none;z-index:12;box-sizing:border-box;border:2px solid #6366f1;border-radius:8px;position:absolute}.rte-media-resize-overlay.hidden{display:none}.rte-media-handle{pointer-events:auto;background:#fff;border:2px solid #4338ca;border-radius:999px;width:12px;height:12px;padding:0;position:absolute}.rte-media-handle[data-dir=nw]{cursor:nwse-resize;top:-8px;left:-8px}.rte-media-handle[data-dir=n]{cursor:ns-resize;top:-8px;left:calc(50% - 6px)}.rte-media-handle[data-dir=ne]{cursor:nesw-resize;top:-8px;right:-8px}.rte-media-handle[data-dir=e]{cursor:ew-resize;top:calc(50% - 6px);right:-8px}.rte-media-handle[data-dir=se]{cursor:nwse-resize;bottom:-8px;right:-8px}.rte-media-handle[data-dir=s]{cursor:ns-resize;bottom:-8px;left:calc(50% - 6px)}.rte-media-handle[data-dir=sw]{cursor:nesw-resize;bottom:-8px;left:-8px}.rte-media-handle[data-dir=w]{cursor:ew-resize;top:calc(50% - 6px);left:-8px}.rte-media-editbar{z-index:13;background:#0f172af2;border-radius:10px;align-items:center;gap:6px;padding:6px;display:inline-flex;position:absolute;box-shadow:0 8px 24px #02061759}.rte-media-editbar.hidden{display:none}.rte-media-edit-btn{color:#fff;cursor:pointer;background:0 0;border:1px solid #fff3;border-radius:6px;justify-content:center;align-items:center;min-width:26px;height:26px;padding:0 8px;font-size:11px;font-weight:700;display:inline-flex}.rte-media-edit-btn svg{width:14px;height:14px}.rte-media-edit-btn:hover{background:#ffffff24}.rte-media-edit-btn.danger{color:#fecaca;border-color:#f8717173}.rte-media-edit-range{width:96px}.rte-prosemirror{outline:none;min-height:280px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px;line-height:1.7}.rte-prosemirror>:first-child{margin-top:0}.rte-prosemirror p{margin:.8em 0}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[data-indent="1"],:is(.rte-prosemirror,.rich-text-view) .rte-indent-1{padding-left:36px}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[data-indent="2"],:is(.rte-prosemirror,.rich-text-view) .rte-indent-2{padding-left:72px}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[data-indent="3"],:is(.rte-prosemirror,.rich-text-view) .rte-indent-3{padding-left:108px}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[data-indent="4"],:is(.rte-prosemirror,.rich-text-view) .rte-indent-4{padding-left:144px}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[data-indent="5"],:is(.rte-prosemirror,.rich-text-view) .rte-indent-5{padding-left:180px}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[data-indent="6"],:is(.rte-prosemirror,.rich-text-view) .rte-indent-6{padding-left:216px}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[data-indent="7"],:is(.rte-prosemirror,.rich-text-view) .rte-indent-7{padding-left:252px}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[data-indent="8"],:is(.rte-prosemirror,.rich-text-view) .rte-indent-8{padding-left:288px}:is(.rte-prosemirror,.rich-text-view) .ql-indent-1{padding-left:36px}:is(.rte-prosemirror,.rich-text-view) .ql-indent-2{padding-left:72px}:is(.rte-prosemirror,.rich-text-view) .ql-indent-3{padding-left:108px}:is(.rte-prosemirror,.rich-text-view) .ql-indent-4{padding-left:144px}:is(.rte-prosemirror,.rich-text-view) .ql-indent-5{padding-left:180px}:is(.rte-prosemirror,.rich-text-view) .ql-indent-6{padding-left:216px}:is(.rte-prosemirror,.rich-text-view) .ql-indent-7{padding-left:252px}:is(.rte-prosemirror,.rich-text-view) .ql-indent-8{padding-left:288px}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[style*="text-align: center"],:is(.rte-prosemirror,.rich-text-view) .ql-align-center{text-align:center}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[style*="text-align: right"],:is(.rte-prosemirror,.rich-text-view) .ql-align-right{text-align:right}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[style*="text-align: justify"],:is(.rte-prosemirror,.rich-text-view) .ql-align-justify{text-align:justify}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6,blockquote)[style*="text-align: left"],:is(.rte-prosemirror,.rich-text-view) .ql-align-left{text-align:left}.rte-prosemirror h1,.rte-prosemirror h2,.rte-prosemirror h3,.rte-prosemirror h4,.rte-prosemirror h5,.rte-prosemirror h6{margin:1.2em 0 .6em;line-height:1.25}.rte-prosemirror h1{font-size:2rem}.rte-prosemirror h2{font-size:1.5rem}.rte-prosemirror h3{font-size:1.2rem}.rte-prosemirror h4{font-size:1.05rem;font-weight:600}.rte-prosemirror h5{font-size:.95rem;font-weight:600}.rte-prosemirror h6{color:#475569;font-size:.875rem;font-weight:600}:is(.rte-prosemirror,.rich-text-view) ul,:is(.rte-prosemirror,.rich-text-view) ol{margin:.5em 0;padding-left:1.75em;list-style-position:outside}:is(.rte-prosemirror,.rich-text-view) ul{list-style-type:disc}:is(.rte-prosemirror,.rich-text-view) ul ul{list-style-type:circle}:is(.rte-prosemirror,.rich-text-view) ul ul ul{list-style-type:square}:is(.rte-prosemirror,.rich-text-view) ol{list-style-type:decimal}:is(.rte-prosemirror,.rich-text-view) ol ol{list-style-type:lower-alpha}:is(.rte-prosemirror,.rich-text-view) ol ol ol{list-style-type:lower-roman}:is(.rte-prosemirror,.rich-text-view) ul ol,:is(.rte-prosemirror,.rich-text-view) ol ul{margin-top:.25em;margin-bottom:.25em}:is(.rte-prosemirror,.rich-text-view) li{margin:.15em 0;display:list-item}:is(.rte-prosemirror,.rich-text-view) li>p{margin:.15em 0}:is(.rte-prosemirror,.rich-text-view) li>ul,:is(.rte-prosemirror,.rich-text-view) li>ol{margin:.2em 0 .35em}:is(.rte-prosemirror,.rich-text-view) ul[data-type=taskList]{padding-left:.25rem;list-style:none}:is(.rte-prosemirror,.rich-text-view) ul[data-type=taskList] li{align-items:flex-start;gap:.45rem;list-style:none;display:flex}:is(.rte-prosemirror,.rich-text-view) ul[data-type=taskList] li>label{flex-shrink:0;margin-top:.18rem}:is(.rte-prosemirror,.rich-text-view) ul[data-type=taskList] ul[data-type=taskList]{margin-top:.25em;padding-left:1.75rem}:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6)[data-indent]+ul,:is(.rte-prosemirror,.rich-text-view) :is(p,h1,h2,h3,h4,h5,h6)[data-indent]+ol{margin-top:.35em}.rte-prosemirror table{border-collapse:collapse;width:100%;margin:1rem 0}.rte-prosemirror table td,.rte-prosemirror table th{vertical-align:top;border:1px solid #d1d5db;padding:8px 10px}.rte-prosemirror table th{background:#f8fafc;font-weight:700}:is(.rte-prosemirror,.rich-text-view) li::marker{color:currentColor}.rte-prosemirror blockquote{color:#334155;border-left:3px solid #cbd5e1;margin:1em 0;padding:.1em 0 .1em 1em}.rte-prosemirror pre{color:#e2e8f0;background:#0f172a;border-radius:8px;padding:12px;overflow-x:auto}.rte-prosemirror img{border-radius:8px;max-width:100%;margin:.7em 0}.rte-prosemirror img.rte-image{border-radius:10px;max-width:100%;margin-top:1rem;margin-bottom:1rem;display:block}.rte-prosemirror img.rte-image[style*="float: right"]{margin-bottom:1rem!important;margin-left:1.5rem!important}.rte-prosemirror img.rte-image[style*="float: left"]{margin-bottom:1rem!important;margin-right:1.5rem!important}.rte-prosemirror img.rte-image[style*="float: left"]~p,.rte-prosemirror img.rte-image[style*="float: left"]~ul,.rte-prosemirror img.rte-image[style*="float: left"]~ol,.rte-prosemirror video.rte-video[style*="float: left"]~p,.rte-prosemirror video.rte-video[style*="float: left"]~ul,.rte-prosemirror video.rte-video[style*="float: left"]~ol,.rte-prosemirror iframe.rte-video-embed[style*="float: left"]~p,.rte-prosemirror iframe.rte-video-embed[style*="float: left"]~ul,.rte-prosemirror iframe.rte-video-embed[style*="float: left"]~ol{margin-left:.75rem}.rte-prosemirror img.rte-image[style*="float: right"]~p,.rte-prosemirror img.rte-image[style*="float: right"]~ul,.rte-prosemirror img.rte-image[style*="float: right"]~ol,.rte-prosemirror video.rte-video[style*="float: right"]~p,.rte-prosemirror video.rte-video[style*="float: right"]~ul,.rte-prosemirror video.rte-video[style*="float: right"]~ol,.rte-prosemirror iframe.rte-video-embed[style*="float: right"]~p,.rte-prosemirror iframe.rte-video-embed[style*="float: right"]~ul,.rte-prosemirror iframe.rte-video-embed[style*="float: right"]~ol{margin-right:.75rem}.rte-prosemirror img.rte-image.rte-image-align-left{shape-margin:.8rem;margin-bottom:1.25rem;margin-left:0;margin-right:1.5rem}.rte-prosemirror img.rte-image.rte-image-align-center{margin-left:auto;margin-right:auto}.rte-prosemirror img.rte-image.rte-image-align-right{shape-margin:.8rem;margin-bottom:1.25rem;margin-left:1.5rem;margin-right:0}.rte-prosemirror video.rte-video{border-radius:10px;max-width:100%;margin-top:.8em;margin-bottom:.8em;display:block}.rte-prosemirror iframe.rte-video-embed{border:0;border-radius:10px;max-width:100%;margin-top:.8em;margin-bottom:.8em;display:block}.rte-prosemirror video.rte-video.rte-video-align-left,.rte-prosemirror iframe.rte-video-embed.rte-video-align-left{shape-margin:.8rem;margin-bottom:1.25rem;margin-left:0;margin-right:1.5rem}.rte-prosemirror video.rte-video.rte-video-align-center,.rte-prosemirror iframe.rte-video-embed.rte-video-align-center{margin-left:auto;margin-right:auto}.rte-prosemirror video.rte-video.rte-video-align-right,.rte-prosemirror iframe.rte-video-embed.rte-video-align-right{shape-margin:.8rem;margin-bottom:1.25rem;margin-left:1.5rem;margin-right:0}.rte-prosemirror hr{border:none;border-top:1px solid #cbd5e1;margin:1.2em 0}.rte-slash-menu{z-index:20;background:#fff;border:1px solid #e5e7eb;border-radius:10px;width:280px;padding:6px;position:absolute;box-shadow:0 14px 35px #02061729}.rte-slash-menu.hidden{display:none}.rte-slash-item{text-align:left;cursor:pointer;background:0 0;border:none;border-radius:8px;flex-direction:column;gap:2px;width:100%;padding:8px 10px;display:flex}.rte-slash-item .title{color:#0f172a;justify-content:space-between;align-items:center;gap:6px;font-size:13px;display:flex}.rte-slash-item .title .icon{color:#475569;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.rte-slash-item .title .label{flex:1}.rte-slash-item .group{text-transform:uppercase;letter-spacing:.05em;color:#6366f1;font-size:10px}.rte-slash-item .desc{color:var(--rte-muted);font-size:12px}.rte-slash-item.active,.rte-slash-item:hover{background:#f3f4f6}.rte-slash-empty{color:#64748b;padding:10px 12px;font-size:12px}.rte-dialog-backdrop{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0f172a73;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.rte-dialog{border:1px solid var(--rte-border);background:#fff;border-radius:14px;width:min(100%,420px);overflow:hidden;box-shadow:0 24px 48px #0f172a2e}.rte-dialog-header{border-bottom:1px solid var(--rte-border);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px 10px;display:flex}.rte-dialog-title{color:var(--rte-text);margin:0;font-size:15px;font-weight:700}.rte-dialog-close{border-radius:8px;width:32px;min-width:32px;height:32px;padding:0;font-size:20px;line-height:1}.rte-dialog-body-stack{flex-direction:column;gap:12px;padding:14px 16px;display:flex}.rte-dialog-message{color:var(--rte-text);margin:0;padding:16px;font-size:14px;line-height:1.5}.rte-dialog-hint{color:var(--rte-muted);margin:0;font-size:13px;line-height:1.45}.rte-dialog-label{color:#334155;flex-direction:column;gap:6px;font-size:12px;font-weight:600;display:flex}.rte-dialog-input{box-sizing:border-box;border:1px solid var(--rte-border);width:100%;height:40px;color:var(--rte-text);background:#fff;border-radius:10px;padding:0 12px;font-size:14px}.rte-dialog-input:focus{outline-offset:1px;border-color:#a5b4fc;outline:2px solid #c7d2fe}.rte-dialog-input-error{border-color:#f87171;outline-color:#fecaca}.rte-dialog-divider{text-align:center;color:var(--rte-muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px;font-weight:600}.rte-dialog-upload-row{display:flex}.rte-dialog-btn-upload{justify-content:center;width:100%}.rte-dialog-footer{padding:0 16px 14px}.rte-dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.rte-dialog-actions-split{justify-content:space-between}.rte-dialog-btn{border:1px solid var(--rte-border);height:36px;color:var(--rte-text);cursor:pointer;background:#fff;border-radius:10px;padding:0 14px;font-size:13px;font-weight:600}.rte-dialog-btn:hover{background:#f8fafc}.rte-dialog-btn-primary{background:var(--rte-accent);border-color:var(--rte-accent);color:#fff}.rte-dialog-btn-primary:hover{background:#4338ca;border-color:#4338ca}.rte-dialog-btn-ghost{color:var(--rte-muted);background:0 0;border-color:#0000}.rte-dialog-btn-ghost:hover{color:var(--rte-text);background:#f1f5f9}
