:root{--color-bg:#f6f7fa;--color-surface:#fff;--color-surface-elevated:#f1f3f7;--color-surface-inset:#eceff4;--color-border:#dfe3ea;--color-border-strong:#c5cbd5;--color-stripe:rgba(17,24,39,.03);--color-text:#1a1d25;--color-text-secondary:#4a505b;--color-text-muted:#5c6371;--color-text-inverse:#fff;--color-primary:#1e6ad1;--color-primary-hover:#144d96;--color-primary-soft:rgba(30,106,209,.1);--color-success:#15724a;--color-success-soft:rgba(21,114,74,.12);--color-warning:#c78b2d;--color-warning-soft:rgba(199,139,45,.12);--color-danger:#d94c4c;--color-danger-soft:rgba(217,76,76,.1);--color-info:#3b8dd6;--color-info-soft:rgba(59,141,214,.1);--font-display:"Roboto Condensed",system-ui,-apple-system,"Segoe UI",sans-serif;--font-body:"Roboto Condensed",system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--text-3xl:2rem;--text-4xl:2.75rem;--leading-tight:1.2;--leading-snug:1.35;--leading-base:1.55;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-8:3rem;--space-10:4rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:999px;--shadow-xs:0 1px 2px rgba(17,24,39,.04);--shadow-sm:0 2px 4px rgba(17,24,39,.06);--shadow-md:0 6px 16px rgba(17,24,39,.08);--shadow-lg:0 20px 48px rgba(17,24,39,.12);--transition-fast:120ms ease;--transition-base:200ms ease;--transition-slow:360ms ease;--focus-ring:0 0 0 3px rgba(30,106,209,.25)}:root[data-theme=dark]{--color-bg:#0f1115;--color-surface:#181b22;--color-surface-elevated:#1f232c;--color-surface-inset:#12151b;--color-border:#2a2e38;--color-border-strong:#3a3f4b;--color-stripe:rgba(255,255,255,.02);--color-text:#e6e6e6;--color-text-secondary:#a8adb8;--color-text-muted:#8a8f99;--color-text-inverse:#0f1115;--color-primary:#4f9df7;--color-primary-hover:#3d8ae8;--color-primary-soft:rgba(79,157,247,.14);--color-success:#3ecf8e;--color-success-soft:rgba(62,207,142,.14);--color-warning:#f5b84e;--color-warning-soft:rgba(245,184,78,.14);--color-danger:#f46b6b;--color-danger-soft:rgba(244,107,107,.14);--color-info:#6db1ff;--color-info-soft:rgba(109,177,255,.14);--shadow-xs:0 1px 2px rgba(0,0,0,.25);--shadow-sm:0 2px 4px rgba(0,0,0,.3);--shadow-md:0 6px 16px rgba(0,0,0,.35);--shadow-lg:0 20px 48px rgba(0,0,0,.45);--focus-ring:0 0 0 3px rgba(79,157,247,.35)}*,*::before,*::after{box-sizing:border-box}html,body{margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-body),sans-serif;font-size:var(--text-base);line-height:var(--leading-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img,svg{display:block;max-width:100%}.img-fluid{width:100%;max-width:100%}h1,h2,h3,h4,h5,h6{font-family:var(--font-display),sans-serif;line-height:var(--leading-tight);margin:0 0 var(--space-3);font-weight:var(--weight-semibold);letter-spacing:-.01em}h1,.h1{font-size:var(--text-4xl);font-weight:var(--weight-bold);letter-spacing:-.02em}h2,.h2{font-size:var(--text-3xl)}h3,.h3{font-size:var(--text-2xl)}h4,.h4{font-size:var(--text-xl)}h5,.h5{font-size:var(--text-lg)}h6,.h6{font-size:var(--text-base);text-transform:uppercase;letter-spacing:.06em;color:var(--color-text-secondary)}p{margin:0 0 var(--space-4)}.text-muted{color:var(--color-text-muted)}.text-secondary{color:var(--color-text-secondary)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-danger{color:var(--color-danger)}.text-sm{font-size:var(--text-sm)}.text-xs{font-size:var(--text-xs)}.text-lg{font-size:var(--text-lg)}.text-mono{font-family:var(--font-mono),monospace;font-size:var(--text-sm)}a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}:where(a:hover){color:var(--color-primary-hover);text-decoration:underline}:where(a:focus-visible){outline:0;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}.text-muted a{text-decoration:underline}code{font-family:var(--font-mono),monospace;font-size:.875em;background:var(--color-surface-inset);border:1px solid var(--color-border);padding:.1em .4em;border-radius:var(--radius-sm);color:var(--color-text-secondary)}hr{border:0;border-top:1px solid var(--color-border);margin:var(--space-6) 0}.container{max-width:1200px;margin:0 auto;padding:var(--space-6) var(--space-5)}.d-flex{display:flex}.d-inline-flex{display:inline-flex}.stack{display:flex;flex-direction:column;gap:var(--space-4)}.stack-sm{gap:var(--space-2)}.stack-lg{gap:var(--space-6)}.row{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center}.row-between{display:flex;gap:var(--space-3);justify-content:space-between;align-items:center;flex-wrap:wrap}@media (max-width:640px){.hidden-xs{display:none!important}}@media (min-width:641px) and (max-width:900px){.hidden-md{display:none!important}}@media (min-width:901px){.hidden-lg{display:none!important}}.grid{display:grid;gap:var(--space-4)}.grid-auto-sm{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.grid-auto-md{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.grid-auto-lg{grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.icon{display:inline-block;width:1.25em;height:1.25em;vertical-align:-.2em;fill:currentColor;flex-shrink:0}.icon-sm{width:1em;height:1em}.icon-md{width:1.25em;height:1.25em}.icon-lg{width:1.5em;height:1.5em}.icon-xl{width:2em;height:2em}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-body),sans-serif;font-size:var(--text-sm);font-weight:var(--weight-medium);line-height:1;padding:.625rem 1rem;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text);cursor:pointer;transition:background var(--transition-fast),border-color var(--transition-fast),color var(--transition-fast),transform var(--transition-fast);white-space:nowrap;text-decoration:none}.btn[hidden]{display:none}.btn:focus-visible{outline:0;box-shadow:var(--focus-ring)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled,.btn.is-disabled{cursor:not-allowed;position:relative}.btn:disabled::before,.btn.is-disabled::before{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--color-surface);opacity:.5;pointer-events:none}.btn-default{background-color:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-default:hover:not(:disabled){background-color:var(--color-surface-elevated);border-color:var(--color-border-strong)}.btn-primary{background:var(--color-primary);color:var(--color-text-inverse);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface-elevated);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-border)}.btn-outline{background:transparent;color:var(--color-primary);border-color:var(--color-primary)}.btn-outline:hover:not(:disabled){background:var(--color-primary-soft)}.btn-ghost{background:transparent;color:var(--color-text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background:var(--color-surface-elevated);color:var(--color-text)}.btn-ghost-danger{background:transparent;color:var(--color-danger);border-color:transparent}.btn-ghost-danger:hover:not(:disabled){background:var(--color-danger-soft);color:var(--color-danger)}.btn-info{background:var(--color-info);color:#fff;border-color:var(--color-info)}.btn-info:hover:not(:disabled){filter:brightness(0.92)}.btn-success{background:var(--color-success);color:#fff;border-color:var(--color-success)}.btn-success:hover:not(:disabled){filter:brightness(0.92)}.btn-danger{background:var(--color-danger);color:#fff;border-color:var(--color-danger)}.btn-danger:hover:not(:disabled){filter:brightness(0.92)}.btn-warning{background:var(--color-warning);color:#fff;border-color:var(--color-warning)}.btn-warning:hover:not(:disabled){filter:brightness(0.92)}.btn-sm{padding:.4rem .75rem;font-size:var(--text-sm);border-radius:var(--radius-sm)}.btn-lg{padding:.85rem 1.4rem;font-size:var(--text-base)}.btn-icon{padding:.5rem}.btn-block{width:100%}.form-group{display:flex;flex-direction:column;gap:var(--space-2)}.form-row{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.form-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text-secondary)}.form-label .required{color:var(--color-danger)}.form-input,.form-select,.form-textarea{width:100%;font-family:var(--font-body),sans-serif;font-size:var(--text-base);line-height:var(--leading-snug);color:var(--color-text);background:var(--color-surface-inset);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.625rem .875rem;transition:border-color var(--transition-fast),box-shadow var(--transition-fast),background var(--transition-fast)}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-muted)}.form-input:hover,.form-select:hover,.form-textarea:hover{border-color:var(--color-border-strong)}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:0;border-color:var(--color-primary);box-shadow:var(--focus-ring);background-color:var(--color-bg)}.form-input:disabled,.form-select:disabled,.form-textarea:disabled{opacity:.55;cursor:not-allowed}:root[data-theme=dark] input[type=date]::-webkit-calendar-picker-indicator,:root[data-theme=dark] input[type=datetime-local]::-webkit-calendar-picker-indicator,:root[data-theme=dark] input[type=time]::-webkit-calendar-picker-indicator,:root[data-theme=dark] input[type=month]::-webkit-calendar-picker-indicator,:root[data-theme=dark] input[type=week]::-webkit-calendar-picker-indicator{filter:invert(1) opacity(0.7)}.form-textarea{resize:vertical;min-height:6rem}.form-select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--color-text-muted) 50%),linear-gradient(135deg,var(--color-text-muted) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 12px) 50%;background-size:6px 6px,6px 6px;background-repeat:no-repeat;padding-right:2.25rem}.form-helper{font-size:var(--text-xs);color:var(--color-text-muted)}.form-error{font-size:var(--text-xs);color:var(--color-danger)}.form-group.has-error .form-input,.form-group.has-error .form-select,.form-group.has-error .form-textarea{border-color:var(--color-danger)}.form-group.has-error .form-input:focus,.form-group.has-error .form-select:focus,.form-group.has-error .form-textarea:focus{box-shadow:0 0 0 3px var(--color-danger-soft)}.form-file{display:block;width:100%;font-family:var(--font-body),sans-serif;font-size:var(--text-sm);color:var(--color-text);background:var(--color-surface-inset);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:0 var(--space-3) 0 0;cursor:pointer;overflow:hidden;transition:border-color var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast)}.form-file:hover{border-color:var(--color-border-strong)}.form-file:focus-visible{outline:0;border-color:var(--color-primary);box-shadow:var(--focus-ring)}.form-file:disabled{opacity:.55;cursor:not-allowed}.form-file::file-selector-button{margin:0 var(--space-3) 0 0;padding:.625rem 1rem;border:0;background:var(--color-primary-soft);color:var(--color-primary);font-family:inherit;font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.form-file:hover::file-selector-button{background:var(--color-primary);color:#fff}.form-check{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;user-select:none;font-size:var(--text-sm)}.form-check input[type=checkbox],.form-check input[type=radio]{appearance:none;width:1.1rem;height:1.1rem;margin:0;background:var(--color-surface-inset);border:1px solid var(--color-border-strong);transition:background var(--transition-fast),border-color var(--transition-fast);cursor:pointer;display:grid;place-content:center;flex-shrink:0}.form-check input[type=checkbox]{border-radius:var(--radius-sm)}.form-check input[type=radio]{border-radius:50%}.form-check input:focus-visible{outline:0;box-shadow:var(--focus-ring)}.form-check input:checked{background:var(--color-primary);border-color:var(--color-primary)}.form-check input[type=checkbox]:checked::after{content:"";width:.6rem;height:.6rem;background:var(--color-text-inverse);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0,43% 62%)}.form-check input[type=radio]:checked::after{content:"";width:.45rem;height:.45rem;background:var(--color-text-inverse);border-radius:50%}.form-switch{display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer;user-select:none;font-size:var(--text-sm)}.form-switch input{appearance:none;width:2.25rem;height:1.25rem;background:var(--color-border);border-radius:var(--radius-pill);position:relative;cursor:pointer;transition:background var(--transition-fast)}.form-switch input::after{content:"";position:absolute;top:2px;left:2px;width:calc(1.25rem - 4px);height:calc(1.25rem - 4px);border-radius:50%;background:var(--color-text);transition:transform var(--transition-fast)}.form-switch input:checked{background:var(--color-primary)}.form-switch input:checked::after{transform:translateX(1rem);background:var(--color-text-inverse)}.form-switch input:focus-visible{outline:0;box-shadow:var(--focus-ring)}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.card-header,.card-footer{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.card-footer{border-top:1px solid var(--color-border);border-bottom:none}.card-title{font-family:var(--font-display),sans-serif;font-size:var(--text-lg);font-weight:var(--weight-semibold);margin:0}.card-subtitle{font-size:var(--text-sm);color:var(--color-text-muted);margin:0}.card-body{padding:var(--space-5)}.card-elevated{box-shadow:var(--shadow-md)}.table-wrapper{border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow-x:auto;-webkit-overflow-scrolling:touch;background:var(--color-surface)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th,.table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--color-border);vertical-align:middle}.table th{font-weight:var(--weight-semibold);color:var(--color-text-secondary);background:var(--color-surface-elevated);text-transform:uppercase;font-size:var(--text-xs);letter-spacing:.06em;white-space:nowrap}.table tbody tr:last-child td{border-bottom:none}.table .form-select,.table .form-input,.table .form-textarea{min-width:140px}.table-hover tbody tr{transition:background var(--transition-fast)}.table-hover tbody tr:hover{background:var(--color-surface-elevated)}.table-striped tbody tr:nth-child(odd) td{background:var(--color-stripe)}.table-actions{display:flex;gap:var(--space-1);justify-content:flex-end}.badge{display:inline-flex;align-items:center;gap:.35em;font-size:var(--text-xs);font-weight:var(--weight-medium);padding:.2rem .55rem;border-radius:var(--radius-pill);line-height:1.4;background:var(--color-surface-elevated);color:var(--color-text-secondary);border:1px solid var(--color-border)}.badge-primary{background:var(--color-primary-soft);color:var(--color-primary);border-color:transparent}.badge-success{background:var(--color-success-soft);color:var(--color-success);border-color:transparent}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning);border-color:transparent}.badge-danger{background:var(--color-danger-soft);color:var(--color-danger);border-color:transparent}.badge-info{background:var(--color-info-soft);color:var(--color-info);border-color:transparent}.badge-dot::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;display:inline-block}.alert{display:flex;gap:var(--space-3);padding:var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);align-items:flex-start}.alert .icon{flex-shrink:0;margin-top:2px}.alert-title{font-weight:var(--weight-semibold);margin:0 0 .25rem}.alert-body{margin:0;color:var(--color-text-secondary);font-size:var(--text-sm)}.alert-info{border-color:transparent;background:var(--color-info-soft);color:var(--color-info)}.alert-success{border-color:transparent;background:var(--color-success-soft);color:var(--color-success)}.alert-warning{border-color:transparent;background:var(--color-warning-soft);color:var(--color-warning)}.alert-danger{border-color:transparent;background:var(--color-danger-soft);color:var(--color-danger)}.alert-info .alert-body,.alert-success .alert-body,.alert-warning .alert-body,.alert-danger .alert-body{color:var(--color-text)}.alert-content{flex:1;min-width:0}.alert-dismissible{padding-right:var(--space-2)}.alert-close{flex-shrink:0;background:transparent;border:0;color:inherit;opacity:.6;cursor:pointer;padding:var(--space-1);margin:-2px 0 0 var(--space-2);border-radius:var(--radius-sm);display:inline-flex;align-items:center;justify-content:center;transition:opacity var(--transition-fast),background var(--transition-fast)}.alert-close:hover{opacity:1;background:color-mix(in srgb,currentColor 12%,transparent)}.alert-close:focus-visible{opacity:1;outline:0;box-shadow:var(--focus-ring)}.alert-close .icon{width:1.125rem;height:1.125rem;margin:0}.pagination{display:inline-flex;gap:var(--space-1);align-items:center}.pagination a,.pagination span{min-width:2.25rem;height:2.25rem;padding:0 .5rem;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-secondary);background:transparent;border:1px solid transparent;text-decoration:none;transition:background var(--transition-fast),color var(--transition-fast)}.pagination a:hover{background:var(--color-surface-elevated);color:var(--color-text);text-decoration:none}.pagination .is-active{background:var(--color-primary);color:var(--color-text-inverse)}.pagination .is-disabled{opacity:.4;pointer-events:none}.pagination .is-ellipsis{color:var(--color-text-muted)}.avatar{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:50%;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:#fff;background:var(--color-border-strong);flex-shrink:0;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.avatar-sm{width:1.75rem;height:1.75rem;font-size:var(--text-xs)}.avatar-lg{width:3rem;height:3rem;font-size:var(--text-base)}.avatar-xl{width:4.5rem;height:4.5rem;font-size:var(--text-2xl)}.avatar-group{display:inline-flex}.avatar-group .avatar{border:2px solid var(--color-bg)}.avatar-group .avatar + .avatar{margin-left:-.625rem}.breadcrumbs{display:flex;gap:var(--space-2);align-items:center;font-size:var(--text-sm);color:var(--color-text-muted);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-3);margin-bottom:var(--space-2);flex-wrap:wrap}.breadcrumbs a{color:var(--color-text-secondary)}.breadcrumbs a:hover{color:var(--color-text);text-decoration:none}.breadcrumbs-separator{color:var(--color-text-muted);opacity:.6}.breadcrumbs .is-current{color:var(--color-text)}.course-card{display:flex;flex-direction:column;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden;color:inherit;text-decoration:none;transition:transform var(--transition-fast),box-shadow var(--transition-fast),border-color var(--transition-fast)}.course-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-border-strong);text-decoration:none}.course-cover{position:relative;height:9rem;background:linear-gradient(135deg,var(--cover-start,#4f9df7),var(--cover-end,#8b5cf6));display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;overflow:hidden}.course-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(0,0,0,.25));pointer-events:none}.course-cover>.icon{width:3rem;height:3rem;opacity:.95;position:relative;z-index:1}.course-cover-badge{position:absolute;top:var(--space-3);right:var(--space-3);z-index:2}.course-cover-badge.badge,.course-cover-badge.badge-success,.course-cover-badge.badge-warning,.course-cover-badge.badge-danger,.course-cover-badge.badge-info,.course-cover-badge.badge-primary{background:rgba(255,255,255,.95);border-color:rgba(255,255,255,.55);box-shadow:0 2px 6px rgba(0,0,0,.18);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);font-weight:var(--weight-semibold)}.course-cover-badge.badge-success{color:#1c7a4e}.course-cover-badge.badge-warning{color:#a36a1a}.course-cover-badge.badge-danger{color:#b13a3a}.course-cover-badge.badge-info{color:#2c6fb0}.course-cover-badge.badge-primary{color:#1e6ad1}.course-body{padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-2);flex:1}.course-title{font-family:var(--font-display),sans-serif;font-size:var(--text-lg);font-weight:var(--weight-semibold);margin:0;line-height:var(--leading-snug);color:var(--color-text)}.course-description{color:var(--color-text-secondary);font-size:var(--text-sm);margin:0;display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-meta{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted);margin-top:auto;padding-top:var(--space-3)}.course-meta-item{display:inline-flex;align-items:center;gap:.25rem}.course-meta-item .icon{width:1em;height:1em}.course-footer{padding:var(--space-3) var(--space-5);border-top:1px solid var(--color-border);display:flex;justify-content:space-between;align-items:center;gap:var(--space-3)}.course-progress{padding:0 var(--space-5) var(--space-4);display:flex;flex-direction:column;gap:var(--space-1)}.course-progress-label{display:flex;justify-content:space-between;font-size:var(--text-xs);color:var(--color-text-muted)}.course-progress-label strong{color:var(--color-text);font-weight:var(--weight-semibold)}.course-progress-bar{height:6px;background:var(--color-surface-elevated);border-radius:var(--radius-pill);overflow:hidden}.course-progress-fill{height:100%;background:var(--color-primary);border-radius:var(--radius-pill);transition:width var(--transition-base)}.course-card-compact{flex-direction:row;align-items:stretch}.course-card-compact .course-cover{width:7rem;height:auto;flex-shrink:0}.course-card-compact .course-cover>.icon{width:2rem;height:2rem}.course-card-compact .course-body{padding:var(--space-4)}.course-card-compact .course-meta{padding-top:var(--space-2)}.course-card-featured{display:grid;grid-template-columns:1.1fr 1fr;gap:0}.course-card-featured .course-cover{height:100%;min-height:14rem}.course-card-featured .course-cover>.icon{width:4.5rem;height:4.5rem}.course-card-featured .course-body{padding:var(--space-5) var(--space-6)}.course-card-featured .course-title{font-size:var(--text-2xl)}@media (max-width:640px){.course-card-featured{grid-template-columns:minmax(0,1fr)}.course-card-featured .course-cover{min-height:10rem}}.course-card-new{background:transparent;border:2px dashed var(--color-border-strong);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6);gap:var(--space-2);color:var(--color-text-muted);min-height:18rem;cursor:pointer;transition:border-color var(--transition-fast),color var(--transition-fast),background var(--transition-fast);text-decoration:none}.course-card-new:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-soft);text-decoration:none}.course-card-new .icon{width:2.5rem;height:2.5rem}.jodit-container{border-radius:var(--radius-md);font-family:var(--font-body),sans-serif;border-color:var(--color-border)}.jodit-container .jodit-toolbar__box:not(:empty){background-color:var(--color-surface-elevated);border-radius:var(--radius-md) var(--radius-md) 0 0;border-bottom:1px solid var(--color-border)}.jodit-container .jodit-workplace{background-color:var(--color-surface-inset);border-radius:0 0 var(--radius-md) var(--radius-md)}.jodit-container .jodit-wysiwyg{color:var(--color-text);font-family:var(--font-body),sans-serif;font-size:var(--text-base);line-height:var(--leading-base);min-height:200px}.jodit-container .jodit-wysiwyg a{color:var(--color-primary)}.jodit-container .jodit-wysiwyg blockquote{border-left:3px solid var(--color-primary);color:var(--color-text-secondary);padding-left:1rem;margin:.5rem 0}.jodit-container .jodit-wysiwyg pre,.jodit-container .jodit-wysiwyg code{background:var(--color-bg);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-family:var(--font-mono),monospace}.jodit-container .jodit-wysiwyg pre{padding:.75rem 1rem}.jodit-container .jodit-toolbar-button__button:hover:not([disabled]),.jodit-container .jodit-toolbar-button_active .jodit-toolbar-button__button{color:var(--color-primary)}.jodit-container .jodit-placeholder{color:var(--color-text-muted)}.auth-page{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - var(--space-8));padding:var(--space-6) 0}.auth-card{width:100%;max-width:420px}.auth-brand{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding-bottom:var(--space-3);text-align:center}.auth-brand .card-title{margin:0}.auth-brand .icon{color:var(--color-primary);width:2rem;height:2rem}.filter-chips{display:flex;gap:var(--space-2);flex-wrap:wrap}.filter-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;border-radius:var(--radius-pill);background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary);text-decoration:none;font-size:var(--text-sm);font-weight:var(--weight-medium);transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.filter-chip:hover{background:var(--color-surface-elevated);color:var(--color-text);text-decoration:none}.filter-chip.is-active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.filter-chip-count{padding:.1rem .45rem;border-radius:var(--radius-pill);background:rgba(0,0,0,.08);font-size:var(--text-xs);min-width:1.4em;text-align:center;line-height:1.4}:root[data-theme=dark] .filter-chip-count{background:rgba(255,255,255,.08)}.filter-chip.is-active .filter-chip-count{background:rgba(255,255,255,.22)}.submission-card{scroll-margin-top:80px;transition:box-shadow var(--transition-base)}.submission-card:target{box-shadow:0 0 0 3px var(--color-primary);animation:submission-target-pulse 2.8s ease-out 1}.submission-summary{list-style:none;cursor:pointer;user-select:none}.submission-summary::-webkit-details-marker{display:none}.submission-summary::marker{content:''}.submission-summary .submission-expand{color:var(--color-text-muted);transition:transform var(--transition-fast);font-size:1.25rem}.submission-card[open] .submission-expand{transform:rotate(180deg)}.submission-card:not([open]) .submission-summary{border-bottom:none}@keyframes submission-target-pulse{0%{box-shadow:0 0 0 6px var(--color-primary)}60%{box-shadow:0 0 0 3px var(--color-primary)}100%{box-shadow:0 0 0 0 transparent}}.drag-handle{display:inline-flex;align-items:center;justify-content:center;width:1.5rem;height:1.5rem;color:var(--color-text-muted);cursor:grab;user-select:none}.drag-handle:hover{color:var(--color-text)}.drag-handle:active{cursor:grabbing}.sortable-chosen{background:var(--color-surface-elevated)}.sortable-drag{opacity:.8;box-shadow:var(--shadow-md)}.sortable-ghost{opacity:.35;background:var(--color-primary-soft)!important}.toast{position:fixed;bottom:var(--space-5);left:50%;transform:translateX(-50%) translateY(80px);background:var(--color-surface-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:.6rem 1rem;box-shadow:var(--shadow-md);z-index:1000;display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);opacity:0;pointer-events:none;transition:opacity var(--transition-base),transform var(--transition-base)}.toast.is-visible{opacity:1;transform:translateX(-50%) translateY(0)}.toast-success{border-color:var(--color-success);color:var(--color-success)}.toast-error{border-color:var(--color-danger);color:var(--color-danger)}.toast-host{position:fixed;top:calc(64px + var(--space-3));right:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);z-index:1000;max-width:min(380px,calc(100vw - var(--space-6)))}.toast-host .toast{position:static;transform:none;opacity:1;pointer-events:auto;background:var(--color-surface);border:1px solid var(--color-border);border-left-width:4px;padding:var(--space-3);box-shadow:var(--shadow-lg);align-items:flex-start;gap:var(--space-3);color:var(--color-text);transition:opacity var(--transition-base),transform var(--transition-base);animation:toast-enter 220ms ease}@keyframes toast-enter{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}.toast-host .toast.is-leaving{opacity:0;transform:translateX(20px)}.toast-host .toast-success{border-left-color:var(--color-success)}.toast-host .toast-info{border-left-color:var(--color-info)}.toast-host .toast-warning{border-left-color:var(--color-warning)}.toast-host .toast-danger{border-left-color:var(--color-danger)}.toast-host .toast-icon{flex-shrink:0;margin-top:2px;color:var(--color-text-secondary)}.toast-host .toast-success .toast-icon{color:var(--color-success)}.toast-host .toast-info .toast-icon{color:var(--color-info)}.toast-host .toast-warning .toast-icon{color:var(--color-warning)}.toast-host .toast-danger .toast-icon{color:var(--color-danger)}.toast-host .toast-content{flex:1;min-width:0}.toast-host .toast-title{font-weight:var(--weight-semibold);margin-bottom:.125rem}.toast-host .toast-body{color:var(--color-text-secondary);font-size:var(--text-sm)}.toast-host .toast-close{flex-shrink:0;background:transparent;border:0;color:var(--color-text-muted);cursor:pointer;padding:0;border-radius:var(--radius-sm);display:inline-flex;align-items:center;transition:color var(--transition-fast)}.toast-host .toast-close:hover{color:var(--color-text)}.toast-host .toast-close .icon{width:1.125rem;height:1.125rem}.nav-bell{position:relative}.nav-bell-trigger{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;list-style:none;user-select:none;background:transparent;transition:background var(--transition-fast),color var(--transition-fast);position:relative}.nav-bell-trigger::-webkit-details-marker{display:none}.nav-bell-trigger::marker{content:''}.nav-bell-trigger:hover{background:var(--color-surface-elevated);color:var(--color-text)}.nav-bell-badge{position:absolute;top:-2px;right:-2px;min-width:1.125rem;height:1.125rem;padding:0 .25rem;background:var(--color-danger);color:#fff;font-size:.6875rem;font-weight:var(--weight-semibold);border-radius:var(--radius-pill);display:inline-flex;align-items:center;justify-content:center;border:2px solid var(--color-surface);line-height:1}.nav-bell-badge[hidden]{display:none}.nav-bell-dropdown{position:absolute;top:calc(100% + var(--space-2));right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);width:min(380px,calc(100vw - var(--space-6)));max-height:min(540px,70vh);display:flex;flex-direction:column;z-index:100}.nav-bell-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-3) var(--space-3) var(--space-2);border-bottom:1px solid var(--color-border)}.nav-bell-list{overflow-y:auto;flex:1}.nav-bell-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3);border-bottom:1px solid var(--color-border);color:var(--color-text);text-decoration:none;cursor:pointer;transition:background var(--transition-fast)}.nav-bell-item:hover{background:var(--color-surface-elevated);text-decoration:none}.nav-bell-item:last-child{border-bottom:none}.nav-bell-item.is-unread{background:var(--color-primary-soft)}.nav-bell-item.is-unread:hover{background:color-mix(in srgb,var(--color-primary) 14%,transparent)}.nav-bell-item-body{flex:1;min-width:0}.nav-bell-item-title{font-weight:var(--weight-medium);font-size:var(--text-sm)}.nav-bell-item-text{color:var(--color-text-secondary);font-size:var(--text-xs);margin-top:.125rem}.nav-bell-item-time{color:var(--color-text-muted);font-size:var(--text-xs);margin-top:.25rem}.nav-bell-item-dot{flex-shrink:0;width:.5rem;height:.5rem;margin-top:.4rem;border-radius:50%;background:var(--color-primary)}.nav-bell-item:not(.is-unread) .nav-bell-item-dot{visibility:hidden}.nav-bell-empty{padding:var(--space-6) var(--space-4);text-align:center;color:var(--color-text-muted);font-size:var(--text-sm)}.site-header{position:sticky;top:0;z-index:50;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.site-nav{display:flex;align-items:center;gap:var(--space-4);min-height:64px;padding-top:var(--space-3);padding-bottom:var(--space-3)}.site-brand{display:inline-flex;align-items:center;gap:var(--space-3);color:var(--color-text);font-family:var(--font-display),sans-serif;text-decoration:none}.site-brand:hover{text-decoration:none;color:var(--color-text)}.site-brand-icon{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:1.25rem}.site-brand-name{font-size:var(--text-lg);font-weight:var(--weight-semibold)}.site-nav-links{display:flex;align-items:center;gap:var(--space-1);margin-left:var(--space-3)}.site-nav-link{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--color-text-secondary);font-size:var(--text-sm);font-weight:var(--weight-medium);text-decoration:none;transition:background var(--transition-fast),color var(--transition-fast)}.site-nav-link:hover{background:var(--color-surface-elevated);color:var(--color-text);text-decoration:none}.site-nav-actions{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}.site-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;background:transparent;border:0;border-radius:var(--radius-md);color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.site-icon-btn:hover{background:var(--color-surface-elevated);color:var(--color-text)}.site-icon-btn:focus-visible{outline:0;box-shadow:var(--focus-ring)}.site-icon-btn [data-show-in=dark]{display:none}.site-icon-btn [data-show-in=light]{display:inline-block}:root[data-theme=dark] .site-icon-btn [data-show-in=dark]{display:inline-block}:root[data-theme=dark] .site-icon-btn [data-show-in=light]{display:none}.nav-user-menu{position:relative}.nav-user-trigger{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);border-radius:var(--radius-md);cursor:pointer;list-style:none;user-select:none;background:transparent}.nav-user-trigger::-webkit-details-marker{display:none}.nav-user-trigger::marker{content:''}.nav-user-trigger:hover{background:var(--color-surface-elevated)}.nav-user-info{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2}.nav-user-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.nav-user-role{font-size:var(--text-xs);color:var(--color-text-muted);text-transform:capitalize}.nav-user-caret{color:var(--color-text-muted);transition:transform var(--transition-fast)}.nav-user-menu[open] .nav-user-caret{transform:rotate(180deg)}.nav-user-dropdown{position:absolute;top:calc(100% + var(--space-2));right:0;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);min-width:220px;padding:var(--space-1);z-index:100}.nav-dropdown-form{margin:0}.nav-dropdown-item{display:flex;width:100%;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:transparent;border:0;color:var(--color-text);font-size:var(--text-sm);text-align:left;text-decoration:none;cursor:pointer;transition:background var(--transition-fast),color var(--transition-fast)}.nav-dropdown-item:hover{background:var(--color-surface-elevated);color:var(--color-text);text-decoration:none}.nav-dropdown-item-danger{color:var(--color-danger)}.nav-dropdown-item-danger:hover{background:rgb(from var(--color-danger) r g b / .08);color:var(--color-danger)}.nav-dropdown-divider{border:0;border-top:1px solid var(--color-border);margin:var(--space-1) 0}@media (max-width:640px){.site-nav-links{display:none}.nav-user-info{display:none}.nav-bell-dropdown{position:fixed;top:calc(64px + var(--space-2));right:var(--space-2);left:var(--space-2);width:auto;max-height:calc(100vh - 64px - var(--space-4))}}.hero,.error{padding:var(--space-8) 0}.hero h1,.error h1{font-size:clamp(2rem,5vw,3.5rem);margin:0 0 var(--space-2)}.hero p,.error p{color:var(--color-text-muted);margin:0 0 var(--space-5)}.calendar-day{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.calendar-day.is-today{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary-soft)}.calendar-day-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--color-surface-elevated);border-bottom:1px solid var(--color-border);font-size:var(--text-sm)}.calendar-day-date{font-weight:var(--weight-semibold);color:var(--color-text)}.calendar-day-list{display:flex;flex-direction:column}.calendar-lesson{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);color:var(--color-text);text-decoration:none;transition:background var(--transition-fast)}.calendar-lesson:last-child{border-bottom:none}.calendar-lesson:hover{background:var(--color-surface-elevated);text-decoration:none}.calendar-lesson:focus-visible{outline:0;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}.calendar-lesson-time{flex-shrink:0;width:5.5rem;font-family:var(--font-mono),monospace;font-weight:var(--weight-medium);display:flex;flex-direction:column;gap:.125rem;line-height:1.2}.calendar-lesson-body{flex:1;min-width:0}.calendar-lesson-title{font-weight:var(--weight-medium)}.calendar-lesson-meta{display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}