:root{--accent: #4361ee;--accent-hover: #2f4fdb;--accent-subtle: #eff2ff;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-border-subtle: #f1f5f9;--color-text: #0f172a;--color-text-secondary: #475569;--color-text-muted: #94a3b8;--color-text-disabled: #cbd5e1;--color-success: #16a34a;--color-success-bg: #dcfce7;--color-warning: #d97706;--color-warning-bg: #fef3c7;--color-danger: #dc2626;--color-danger-bg: #fee2e2;--nav-bg: #0f172a;--nav-border: rgba(255, 255, 255, .07);--nav-text: #94a3b8;--nav-text-hover: #e2e8f0;--nav-text-active: #ffffff;--shadow-xs: 0 1px 2px rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08), 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07), 0 2px 4px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1), 0 4px 6px rgba(0, 0, 0, .05);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono: "ui-monospace", "SF Mono", "Fira Code", "Cascadia Code", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 1.875rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font);background:var(--color-bg);color:var(--color-text);line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-gutter:stable}a{color:inherit}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 30px var(--color-surface) inset!important;-webkit-text-fill-color:var(--color-text)!important;transition:background-color 9999s ease-in-out 0s}.layout,.admin-page{max-width:1100px;margin:0 auto;padding:2rem 1.5rem}.admin-main h1{font-size:var(--text-3xl);font-weight:700;letter-spacing:-.02em;margin-bottom:1rem}.tabs{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem;background:var(--color-border-subtle);border:1px solid var(--color-border);border-radius:var(--radius-full)}.tabs button{border:none;background:transparent;padding:.3rem .85rem;border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:500;font-family:var(--font);color:var(--color-text-secondary);cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}.tabs button:hover{background:#ffffffb3}.tabs button.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-xs)}.card{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.5rem;border:1px solid var(--color-border);box-shadow:var(--shadow-xs);margin-bottom:1rem}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.card-accent-primary{border-left:3px solid var(--accent);background:var(--accent-subtle);border-color:var(--color-border)}.stat-box{background:var(--color-surface);border-radius:var(--radius-lg);padding:1.25rem;text-align:center;border:1px solid var(--color-border);box-shadow:var(--shadow-xs)}.stat-box .stat-value{font-size:var(--text-3xl);font-weight:700;color:var(--accent);letter-spacing:-.02em}.stat-box .stat-label{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:.3rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .875rem;border:none;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:500;font-family:var(--font);cursor:pointer;text-decoration:none;transition:filter .15s,opacity .15s,transform .12s,box-shadow .12s;letter-spacing:-.01em;line-height:1;white-space:nowrap;will-change:transform;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}@media(hover:hover){.btn:hover{filter:brightness(.94)}}.btn:active{filter:brightness(.85);transform:translateY(1px);transition:filter .06s,transform .06s}.btn-sm:active,.btn-xs:active,.btn-micro:active{transform:translateY(1px) scale(.95)}.btn-primary{background:var(--accent);color:#fff}.btn-secondary{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border)}.btn-danger{background:var(--color-danger);color:#fff}.btn-ghost{background:transparent;color:var(--color-text-secondary);border:none}.btn-ghost-accent{background:transparent;color:var(--accent);border:none}.btn-ghost-danger{background:transparent;color:var(--color-danger);border:none}@media(hover:hover){.btn-ghost:hover{background:var(--color-border-subtle);filter:none}.btn-ghost-accent:hover{background:var(--accent-subtle);filter:none}.btn-ghost-danger:hover{background:var(--color-danger-bg);filter:none}}.btn-sm{padding:.3rem .6rem;font-size:var(--text-xs)}.btn-xs{font-size:.65rem;padding:.15rem .4rem}.btn-micro{font-size:var(--text-xs);padding:.2rem .5rem}.btn-upload{cursor:pointer;display:inline-block}.form-group{margin-bottom:1rem}.form-group label{display:block;margin-bottom:.35rem;font-weight:500;font-size:var(--text-sm);color:var(--color-text-secondary)}.form-group input,.form-group textarea,.form-group select{width:100%;padding:.55rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font);color:var(--color-text);background:var(--color-surface);transition:border-color .15s,box-shadow .15s}.form-group textarea{min-height:100px;resize:vertical}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}.form-label{display:block;font-size:var(--text-sm);font-weight:500;color:var(--color-text-secondary);margin-bottom:.35rem}.form-input{width:100%;padding:.55rem .75rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font);color:var(--color-text);background:var(--color-surface);transition:border-color .15s,box-shadow .15s}.form-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}.source-picker{display:flex;gap:.5rem;margin-bottom:1rem}.source-picker button{padding:.45rem .875rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);cursor:pointer;font-size:var(--text-sm);font-family:var(--font);font-weight:500;color:var(--color-text-secondary);transition:border-color .15s,background .15s,color .15s}.source-picker button.active{border-color:var(--accent);background:var(--accent-subtle);color:var(--accent)}.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:1fr 1fr}.grid-3{grid-template-columns:1fr 1fr 1fr}.grid-4{grid-template-columns:repeat(4,1fr)}.tag{display:inline-block;padding:.2rem .6rem;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500;letter-spacing:.01em}.tag-green{background:var(--color-success-bg);color:var(--color-success)}.tag-yellow{background:var(--color-warning-bg);color:var(--color-warning)}.tag-gray{background:var(--color-border-subtle);color:var(--color-text-secondary)}.file-badge,.file-badge-pdf{background:var(--accent);color:#fff;padding:.2rem .5rem;border-radius:var(--radius-sm);font-size:.7rem;font-weight:700;flex-shrink:0}.file-badge-dark{min-width:34px;height:28px;border-radius:var(--radius-md);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.65rem;flex-shrink:0}.module-number{background:var(--accent);color:#fff;width:32px;height:32px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--text-sm);flex-shrink:0}.module-number-sm{width:28px;height:28px;font-size:var(--text-xs)}.module-number-xs{width:22px;height:22px;font-size:.6rem}.error{color:var(--color-danger);background:var(--color-danger-bg);padding:.75rem 1rem;border-radius:var(--radius-md);margin-bottom:1rem;font-size:var(--text-sm);border:1px solid #fca5a5}.loading{text-align:center;padding:3rem;color:var(--color-text-muted);font-size:var(--text-sm)}.loading-fallback{display:flex;justify-content:center;align-items:center;min-height:60vh}.progress-bar{width:100%;height:6px;background:var(--color-border);border-radius:var(--radius-full);overflow:hidden}.progress-bar-fill{height:100%;background:var(--accent);border-radius:var(--radius-full);transition:width .3s}.progress-fill--success{background:var(--color-success)!important}.progress-fill--warning{background:var(--color-warning)!important}.archived-section{opacity:.65}.archived-section h2{color:var(--color-text-muted)}.module-list{list-style:none}.module-item{display:flex;align-items:center;padding:.75rem 1rem;border-bottom:1px solid var(--color-border-subtle);gap:1rem}.module-item:last-child{border-bottom:none}.module-info{flex:1}.module-info h3{font-size:var(--text-sm);margin-bottom:.2rem}.module-info p{font-size:var(--text-xs);color:var(--color-text-muted)}.file-row{display:flex;align-items:center;gap:.75rem;padding:.45rem .75rem;background:var(--color-border-subtle);border-radius:var(--radius-md);margin-bottom:.4rem}.file-row-pending,.file-row-pending-sm{display:flex;align-items:center;gap:.75rem;padding:.45rem .75rem;background:var(--accent-subtle);border-radius:var(--radius-md);margin-bottom:.4rem}.file-row-pending-sm{margin-bottom:.5rem}.upload-area{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin-bottom:.5rem;background:var(--color-border-subtle);padding:.5rem;border-radius:var(--radius-md)}.upload-area-inline{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;background:var(--color-border-subtle);padding:.5rem;border-radius:var(--radius-md)}.upload-progress{margin-top:.6rem}.upload-progress-bar-track{background:var(--color-border);border-radius:var(--radius-sm);height:6px;overflow:hidden}.upload-progress-bar-fill{background:var(--accent);height:100%;border-radius:var(--radius-sm);transition:width .15s ease}.upload-progress-text{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:.3rem}.section-header{display:flex;align-items:center;padding:.7rem 1rem;background:var(--color-border-subtle);cursor:pointer;gap:.75rem;transition:background .15s}.section-header:hover{background:var(--color-border)}.section-header-compact{display:flex;align-items:center;gap:.5rem;padding:.55rem .75rem;background:var(--color-border-subtle);border-bottom:1px solid var(--color-border)}.section-header-blue{display:flex;align-items:center;justify-content:space-between;padding:.55rem .75rem;background:var(--accent-subtle);border-bottom:1px solid var(--color-border)}.form-actions{display:flex;gap:.5rem;margin-top:1rem}.content-pill{border:2px solid var(--accent);border-radius:var(--radius-md);margin-bottom:.75rem;background:var(--accent-subtle)}.content-pill-icon{width:28px;height:28px;border-radius:var(--radius-full);background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--text-xs);flex-shrink:0}.item-row{display:flex;align-items:center;gap:.75rem;padding:.45rem 0;border-bottom:1px solid var(--color-border-subtle)}.add-subsection-row{display:flex;gap:.4rem;align-items:center;margin-top:.75rem;border-top:1px solid var(--color-border-subtle);padding-top:.5rem}.section-label{font-size:var(--text-xs);color:var(--color-text-muted);font-weight:600;margin-bottom:.35rem;text-transform:uppercase;letter-spacing:.04em}.subsection-card{border:1px solid var(--color-border);border-radius:var(--radius-md);margin-bottom:.5rem;margin-left:.5rem}.subsection-header{display:flex;align-items:center;gap:.4rem;padding:.4rem .6rem;background:var(--accent-subtle);border-bottom:1px solid var(--color-border)}.subsection-body{padding:.5rem .6rem}.subsection-label{font-size:.65rem;font-weight:700;color:var(--accent);letter-spacing:.4px}.subsection-title{border-left:2px solid var(--accent);padding-left:.4rem;font-weight:600;font-size:var(--text-sm);flex:1}.link-primary{color:var(--accent);text-decoration:none;font-weight:500}.link-primary:hover{text-decoration:underline}.link-subtle{text-decoration:none;color:inherit}.link-dashed{display:inline-block;font-size:var(--text-sm);color:var(--accent);text-decoration:none;border-bottom:1px dashed var(--accent);padding-bottom:1px;transition:opacity .15s,border-bottom-style .15s}@media(hover:hover){.link-dashed:hover{opacity:.8;border-bottom-style:solid}}.link-dashed:active{opacity:.55;transition:opacity .06s}.input-inline-sm{padding:.4rem .6rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font);color:var(--color-text);background:var(--color-surface);transition:border-color .15s,box-shadow .15s}.input-inline-sm:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}.input-inline-compact{padding:.35rem .55rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:var(--font)}.visually-hidden{display:none}.sr-only{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.spinner{border-radius:50%;border-style:solid;border-color:var(--color-border);border-top-color:var(--accent);animation:spinner-rotate .7s linear infinite;display:inline-block}.spinner-sm{width:16px;height:16px;border-width:2px}.spinner-md{width:28px;height:28px;border-width:3px}.spinner-lg{width:44px;height:44px;border-width:4px}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.accordion-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .22s cubic-bezier(.4,0,.2,1)}.accordion-wrap--open{grid-template-rows:1fr}.accordion-inner{overflow:hidden}.flex-row{display:flex;align-items:center}.flex-row-between{display:flex;align-items:center;justify-content:space-between}.flex-row-center{display:flex;align-items:center;justify-content:center}.flex-col-center{display:flex;flex-direction:column;align-items:center}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.flex-1-min0{flex:1;min-width:0}.flex-shrink-0{flex-shrink:0}.gap-xs{gap:.3rem}.gap-sm{gap:.4rem}.gap-md{gap:.5rem}.gap-075{gap:.75rem}.gap-lg{gap:1rem}.gap-xl{gap:1.5rem}.mb-0{margin-bottom:0}.mb-xs{margin-bottom:.25rem}.mb-sm{margin-bottom:.5rem}.mb-075{margin-bottom:.75rem}.mb-md{margin-bottom:1rem}.mb-lg{margin-bottom:1.5rem}.mb-xl{margin-bottom:2rem}.mt-sm{margin-top:.5rem}.mt-075{margin-top:.75rem}.mt-md{margin-top:1rem}.mt-lg{margin-top:1.5rem}.mt-xl{margin-top:2rem}.ml-sm{margin-left:.5rem}.ml-auto{margin-left:auto}.mr-sm{margin-right:.5rem}.mr-075{margin-right:.75rem}.p-sm{padding:.5rem}.p-075{padding:.75rem}.p-md{padding:1rem}.py-xs{padding-top:.25rem;padding-bottom:.25rem}.text-center{text-align:center}.text-muted{color:var(--color-text-muted)}.text-muted-light{color:var(--color-text-disabled)}.text-secondary{color:var(--color-text-secondary)}.text-dark{color:var(--color-text)}.text-primary{color:var(--accent)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-xs{font-size:var(--text-xs)}.text-xxs{font-size:.65rem}.text-tiny{font-size:.7rem}.text-small,.text-caption{font-size:var(--text-xs)}.text-body-sm,.text-body{font-size:var(--text-sm)}.text-body-lg{font-size:var(--text-base)}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.tracking-wide{letter-spacing:.04em}.italic{font-style:italic}.pre-wrap{white-space:pre-wrap}.leading-relaxed{line-height:1.75}.no-margin{margin:0}.bg-light{background:var(--color-border-subtle)}.bg-blue-light,.bg-blue-soft,.bg-blue-tint{background:var(--accent-subtle)}.border-card{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.border-section{border:1px solid var(--color-border);border-radius:var(--radius-md)}.border-bottom-light,.border-bottom-subtle{border-bottom:1px solid var(--color-border-subtle)}.border-bottom-border{border-bottom:1px solid var(--color-border)}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.cursor-pointer{cursor:pointer}.hidden{display:none}.block{display:block}.inline-block{display:inline-block}a,button,[role=button],.cursor-pointer{-webkit-tap-highlight-color:transparent;touch-action:manipulation}.mt-0{margin-top:0}.course-info-hint{color:var(--color-text-muted);font-size:var(--text-sm);margin-bottom:.75rem}.lesson-file-meta{color:var(--color-text-muted);margin-left:.5rem;font-size:var(--text-xs)}@media(max-width:768px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr 1fr}}._container_e9xos_3{position:fixed;bottom:1.5rem;right:1.5rem;z-index:2000;display:flex;flex-direction:column;gap:.5rem;pointer-events:none}._toast_e9xos_14{padding:.75rem 1.25rem;border-radius:var(--radius-lg);color:#fff;font-size:var(--text-sm);font-weight:500;box-shadow:var(--shadow-md);pointer-events:auto;animation:_slideIn_e9xos_1 .25s ease-out;max-width:360px;word-break:break-word}@keyframes _slideIn_e9xos_1{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}._success_e9xos_38{background:#166534}._error_e9xos_41{background:var(--color-danger)}._info_e9xos_44{background:var(--accent)}._page_137xw_3{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem}._wrap_137xw_11{display:flex;flex-direction:column;align-items:center;gap:1.25rem;width:100%;max-width:400px}._logo_137xw_20{font-size:var(--text-2xl);font-weight:800;letter-spacing:-.03em;color:var(--color-text)}._form_137xw_27{width:100%;padding:2.5rem 2rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-md);text-align:center}@media(max-width:480px){._form_137xw_27{padding:2rem 1.5rem;border-radius:var(--radius-lg)}}._form_137xw_27 h1{font-size:var(--text-2xl);font-weight:700;margin-bottom:.5rem;color:var(--accent);letter-spacing:-.02em}._form_137xw_27 p{color:var(--color-text-muted);margin-bottom:2rem;font-size:var(--text-sm)}._form_137xw_27 input{width:100%;padding:.75rem 1rem;border:1.5px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-lg);font-family:var(--font);text-align:center;letter-spacing:.15em;margin-bottom:.75rem;color:var(--color-text);transition:border-color .15s,box-shadow .15s}._form_137xw_27 input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-subtle)}._form_137xw_27 .btn{width:100%;justify-content:center;padding:.65rem;font-size:var(--text-base)}._inputLeft_137xw_87{text-align:left;letter-spacing:normal}
