:root{--color-primary: #4f46e5;--color-secondary: #0ea5e9;--color-primary-hover: color-mix(in srgb, var(--color-primary), black 14%);--color-primary-soft: color-mix(in srgb, var(--color-primary), white 90%);--color-secondary-soft: color-mix(in srgb, var(--color-secondary), white 88%);--sidebar-bg: color-mix(in srgb, var(--color-primary) 22%, #14161f);--sidebar-text: rgba(255, 255, 255, .72);--sidebar-text-strong: #ffffff;--sidebar-hover: rgba(255, 255, 255, .07);--sidebar-active: color-mix(in srgb, var(--color-primary) 65%, transparent);--color-bg: #f4f5fa;--color-surface: #ffffff;--color-border: #e4e6ef;--color-text: #1f2333;--color-text-muted: #6b7185;--color-danger: #c0392b;--color-danger-soft: #fdecea;--color-success: #1e7e4e;--color-success-soft: #e6f6ee;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--shadow-sm: 0 1px 2px rgba(31, 35, 51, .06);--shadow-md: 0 4px 16px rgba(31, 35, 51, .08);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}#app{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4{margin:0;line-height:1.25;font-weight:600}p{margin:0}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-primary-hover)}button{font-family:inherit;font-size:.9rem;cursor:pointer}input,select{font-family:inherit}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;padding:.55rem 1.1rem;border-radius:var(--radius-sm);border:1px solid transparent;font-weight:500;transition:background-color .15s,border-color .15s,color .15s}.btn-primary{background-color:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--color-primary-hover)}.btn-primary:disabled{opacity:.6;cursor:default}.btn-ghost{background-color:#fff;color:var(--color-text-muted);border-color:var(--color-border)}.btn-ghost:hover{color:var(--color-text);border-color:var(--color-text-muted)}.btn-danger{background-color:transparent;color:var(--color-danger);border-color:var(--color-danger-soft)}.btn-danger:hover:not(:disabled){background-color:var(--color-danger-soft)}.card{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.alert-error{padding:.7rem 1rem;border-radius:var(--radius-sm);background-color:var(--color-danger-soft);color:var(--color-danger);font-size:.9rem}.alert-success{padding:.7rem 1rem;border-radius:var(--radius-sm);background-color:var(--color-success-soft);color:var(--color-success);font-size:.9rem}.field{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:500}.field input,.field select{padding:.6rem .75rem;font-size:.95rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text);transition:border-color .15s,box-shadow .15s}.field textarea{padding:.6rem .75rem;font-size:.95rem;font-family:inherit;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text);resize:vertical;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}.field-error{color:var(--color-danger);font-size:.8rem;font-weight:400}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:transparent;color:var(--color-text-muted)}.icon-btn .app-icon{width:16px;height:16px}.icon-btn:hover{color:var(--color-text);border-color:var(--color-text-muted)}.icon-btn:disabled{opacity:.5;pointer-events:none}.icon-btn-danger:hover{color:var(--color-danger);border-color:var(--color-danger)}.placeholder{color:var(--color-text-muted);padding:1rem 0}.row-actions{display:flex;gap:.4rem}.back-link{display:inline-flex;align-items:center;gap:.3rem;color:var(--color-text-muted);font-size:.88rem;width:fit-content}.back-link:hover{color:var(--color-text)}.admin-page{width:100%;max-width:1100px;margin:0 auto;padding:2rem 1.5rem 3rem}.admin-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}.admin-header h1{font-size:1.5rem}.admin-subtitle{color:var(--color-text-muted);margin-top:.3rem;font-size:.88rem}.table-card{overflow-x:auto}.cell-name{font-weight:500}.cell-muted{color:var(--color-text-muted)}.col-actions{width:1%;white-space:nowrap}.toolbar{display:flex;gap:.75rem;margin-bottom:1rem}.search-field{flex:1;display:flex;align-items:center;gap:.5rem;padding:0 .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text-muted)}.search-field input{flex:1;border:none;outline:none;padding:.6rem 0;font-size:.9rem;background:transparent;color:var(--color-text)}.role-filter{padding:.6rem .75rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text);font-size:.9rem}.pagination-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.75rem;margin-top:.75rem;font-size:.85rem;color:var(--color-text-muted)}.page-size{display:inline-flex;align-items:center;gap:.5rem}.page-size select{padding:.35rem .5rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text);font-size:.85rem}.pagination-controls{display:flex;align-items:center;gap:.5rem}.pagination-info{margin-right:.25rem;white-space:nowrap}.pagination-page{white-space:nowrap;padding:0 .25rem}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--color-text)}.sort-icon{width:14px;height:14px;vertical-align:-2px;opacity:.6}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0f111a73;display:flex;align-items:center;justify-content:center;padding:1.5rem;z-index:100}.modal{width:100%;max-width:480px;max-height:calc(100vh - 3rem);overflow-y:auto;padding:1.5rem;display:flex;flex-direction:column;gap:1rem}.modal-sm{max-width:420px}.modal-lg{max-width:1100px;max-height:calc(100vh - 3rem)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}.modal-header h2{font-size:1.1rem}.modal-text{color:var(--color-text-muted);font-size:.9rem}.modal-form{display:flex;flex-direction:column;gap:1rem}.modal-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:.25rem}.app-icon[data-v-785f9427]{width:20px;height:20px;flex-shrink:0}.sidebar[data-v-f76d32c8]{width:248px;flex-shrink:0;display:flex;flex-direction:column;background-color:var(--sidebar-bg);color:var(--sidebar-text);transition:width .2s ease;position:sticky;top:0;height:100vh;overflow:hidden}.sidebar.collapsed[data-v-f76d32c8]{width:72px}.sidebar-brand[data-v-f76d32c8]{display:flex;align-items:center;gap:.65rem;padding:1rem 1rem 1.1rem;color:var(--sidebar-text-strong);font-weight:700;font-size:1.1rem;white-space:nowrap}.brand-mark[data-v-f76d32c8]{width:36px;height:36px;flex-shrink:0;border-radius:9px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700}.brand-logo[data-v-f76d32c8]{background:none;object-fit:contain}.sidebar-nav[data-v-f76d32c8]{flex:1;display:flex;flex-direction:column;gap:.2rem;padding:.25rem .65rem;overflow-y:auto;overflow-x:hidden}.nav-item[data-v-f76d32c8]{display:flex;align-items:center;gap:.7rem;padding:.6rem .75rem;border-radius:var(--radius-sm);color:var(--sidebar-text);font-size:.9rem;font-weight:500;white-space:nowrap;transition:background-color .15s,color .15s}.nav-item[data-v-f76d32c8]:hover{background-color:var(--sidebar-hover);color:var(--sidebar-text-strong)}.nav-item.router-link-exact-active[data-v-f76d32c8]{background-color:var(--sidebar-active);color:var(--sidebar-text-strong)}.nav-section[data-v-f76d32c8]{margin:1.1rem .75rem .35rem;border-top:1px solid rgba(255,255,255,.09);padding-top:.75rem}.nav-section-label[data-v-f76d32c8]{font-size:.68rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:#ffffff73;white-space:nowrap}.collapse-btn[data-v-f76d32c8]{display:flex;align-items:center;gap:.7rem;margin:.65rem;padding:.6rem .75rem;border:none;border-radius:var(--radius-sm);background-color:transparent;color:var(--sidebar-text);font-size:.85rem;font-weight:500;white-space:nowrap}.collapse-btn[data-v-f76d32c8]:hover{background-color:var(--sidebar-hover);color:var(--sidebar-text-strong)}.collapsed .brand-name[data-v-f76d32c8],.collapsed .nav-label[data-v-f76d32c8],.collapsed .nav-section-label[data-v-f76d32c8]{opacity:0;width:0;overflow:hidden}.collapsed .sidebar-brand[data-v-f76d32c8],.collapsed .nav-item[data-v-f76d32c8],.collapsed .collapse-btn[data-v-f76d32c8]{justify-content:center;gap:0}.collapsed .nav-section[data-v-f76d32c8]{margin:1.1rem .5rem .35rem;padding-top:.35rem}.shell[data-v-1792012f]{flex:1;display:flex;min-height:100vh}.shell-main[data-v-1792012f]{flex:1;min-width:0;display:flex;flex-direction:column}.impersonation-banner[data-v-1792012f]{background-color:var(--color-primary);color:#fff;padding:.55rem 1.5rem;display:flex;align-items:center;gap:.6rem;font-size:.85rem;position:sticky;top:0;z-index:11}.impersonation-banner[data-v-1792012f] .app-icon{width:16px;height:16px;flex-shrink:0}.impersonation-btn[data-v-1792012f]{margin-left:auto;padding:.35rem .85rem;border-color:#ffffff80;color:#fff;flex-shrink:0}.impersonation-btn[data-v-1792012f]:hover{color:#fff;border-color:#fff;background-color:#ffffff1f}.topbar[data-v-1792012f]{background-color:var(--color-surface);border-bottom:1px solid var(--color-border);padding:.65rem 1.5rem;display:flex;align-items:center;justify-content:space-between;gap:1rem;position:sticky;top:0;z-index:10}.topbar-title[data-v-1792012f]{font-size:1.02rem;color:var(--color-text-muted);font-weight:500}.user-area[data-v-1792012f]{display:flex;align-items:center;gap:.75rem}.account-link[data-v-1792012f]{display:flex;align-items:center;gap:.6rem;color:inherit}.avatar[data-v-1792012f]{width:34px;height:34px;border-radius:50%;background-color:var(--color-primary-soft);color:var(--color-primary);display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:600;text-transform:uppercase}.user-name[data-v-1792012f]{font-size:.9rem;color:var(--color-text-muted)}.logout-btn[data-v-1792012f]{padding:.45rem .8rem}.content[data-v-1792012f]{flex:1;display:flex;flex-direction:column}@media (max-width: 720px){.user-name[data-v-1792012f],.logout-label[data-v-1792012f]{display:none}}.qr-canvas[data-v-5c5cac61]{border-radius:var(--radius-sm);background:#fff;padding:8px}.login-page[data-v-dd928fcd]{flex:1;display:flex;align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(circle at 15% 20%,var(--color-primary-soft),transparent 45%),radial-gradient(circle at 85% 80%,var(--color-primary-soft),transparent 45%),var(--color-bg)}.login-card[data-v-dd928fcd]{width:100%;max-width:380px;padding:2.25rem 2rem;box-shadow:var(--shadow-md)}.login-brand[data-v-dd928fcd]{display:flex;align-items:center;gap:.6rem;justify-content:center}.login-brand h1[data-v-dd928fcd]{font-size:1.6rem}.brand-mark[data-v-dd928fcd]{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700}.brand-logo[data-v-dd928fcd]{background:none;object-fit:contain}.login-subtitle[data-v-dd928fcd]{text-align:center;color:var(--color-text-muted);font-size:.9rem;margin:.5rem 0 1.75rem}.maintenance-banner[data-v-dd928fcd]{background-color:#fff7e6;border:1px solid #f5cf87;color:#8a5a00;border-radius:var(--radius-sm);padding:.75rem .9rem;font-size:.85rem;line-height:1.4;margin-bottom:1.25rem}.maintenance-banner strong[data-v-dd928fcd]{display:block;margin-bottom:.15rem}form[data-v-dd928fcd]{display:flex;flex-direction:column;gap:1rem}label[data-v-dd928fcd]{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:500}input[data-v-dd928fcd]{padding:.6rem .75rem;font-size:.95rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text);transition:border-color .15s,box-shadow .15s}input[data-v-dd928fcd]:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-soft)}button[data-v-dd928fcd]{margin-top:.25rem;padding:.65rem;font-size:.95rem}.login-links[data-v-dd928fcd]{display:flex;justify-content:space-between;font-size:.85rem}.two-factor-form[data-v-dd928fcd]{display:flex;flex-direction:column;gap:1rem}.two-factor-intro[data-v-dd928fcd]{font-size:.85rem;color:var(--color-text-muted);line-height:1.5}.qr-wrap[data-v-dd928fcd]{display:flex;justify-content:center}.dashboard[data-v-c65c8156]{width:100%;max-width:1100px;margin:0 auto;padding:2rem 1.5rem 3rem}.dashboard-header[data-v-c65c8156]{margin-bottom:1.75rem}.dashboard-header h1[data-v-c65c8156]{font-size:1.6rem}.greeting[data-v-c65c8156]{color:var(--color-text-muted);margin-top:.35rem}.dashboard-section[data-v-c65c8156]{margin-bottom:2.25rem}.dashboard-section h2[data-v-c65c8156]{font-size:1.1rem;margin-bottom:1rem}.section-heading[data-v-c65c8156]{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.section-heading h2[data-v-c65c8156]{margin-bottom:0}.preview-badge[data-v-c65c8156]{font-size:.72rem;font-weight:600;color:var(--color-text-muted);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:999px;padding:.2rem .65rem;white-space:nowrap}.placeholder[data-v-c65c8156]{color:var(--color-text-muted)}.course-grid[data-v-c65c8156]{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem}.course-card[data-v-c65c8156]{overflow:hidden;color:var(--color-text);transition:box-shadow .15s,transform .15s}.course-card[data-v-c65c8156]:hover{color:var(--color-text);box-shadow:var(--shadow-md);transform:translateY(-2px)}.catalog-card[data-v-c65c8156]{cursor:default}.catalog-card[data-v-c65c8156]:hover{box-shadow:none;transform:none}.course-banner[data-v-c65c8156]{height:84px;background:linear-gradient(135deg,hsl(var(--hue) 65% 48%),hsl(calc(var(--hue) + 40) 60% 40%));display:flex;align-items:flex-end;padding:.6rem 1rem}.course-code[data-v-c65c8156]{font-size:.75rem;font-weight:600;letter-spacing:.05em;color:#ffffffe6;background-color:#00000040;padding:.15rem .5rem;border-radius:999px}.course-body[data-v-c65c8156]{padding:.9rem 1rem 1.1rem;display:flex;align-items:center;justify-content:space-between;gap:.75rem}.course-body h3[data-v-c65c8156]{font-size:1.02rem}.course-category[data-v-c65c8156]{margin-top:.3rem;font-size:.82rem;color:var(--color-text-muted)}.catalog-card .btn[data-v-c65c8156]{flex-shrink:0;padding:.4rem .85rem;font-size:.82rem;cursor:default}.assignment-list[data-v-c65c8156]{padding:.5rem 0}.assignment-row[data-v-c65c8156]{display:flex;align-items:center;gap:.85rem;padding:.85rem 1.25rem;border-bottom:1px solid var(--color-border)}.assignment-row[data-v-c65c8156]:last-child{border-bottom:none}.assignment-icon[data-v-c65c8156]{color:var(--color-text-muted);display:flex}.assignment-info[data-v-c65c8156]{flex:1;display:flex;flex-direction:column;gap:.15rem}.assignment-title[data-v-c65c8156]{font-weight:500;font-size:.92rem}.assignment-course[data-v-c65c8156]{font-size:.8rem;color:var(--color-text-muted)}.assignment-due[data-v-c65c8156]{font-size:.8rem;font-weight:600;color:var(--color-text-muted);white-space:nowrap}.section-tree[data-v-f8f5d79e]{list-style:none;margin:0;padding:0}.section-item+.section-item[data-v-f8f5d79e]{margin-top:.15rem}.branch[data-v-f8f5d79e]{position:relative;margin-left:.65rem;padding-left:.85rem;border-left:1.5px solid var(--color-border)}.tree-children[data-v-f8f5d79e]{margin-top:.15rem}.tree-row[data-v-f8f5d79e]{display:flex;align-items:center;gap:.3rem;padding:.15rem .3rem;border-radius:var(--radius-sm)}.tree-row.active[data-v-f8f5d79e]{background-color:var(--color-primary-soft)}.tree-row.active .tree-label[data-v-f8f5d79e]{color:var(--color-primary)}.tree-toggle[data-v-f8f5d79e],.tree-toggle-spacer[data-v-f8f5d79e]{width:20px;height:20px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;color:var(--color-text-muted);background:none;border:none}.tree-toggle[data-v-f8f5d79e] .app-icon{width:14px;height:14px}.tree-label[data-v-f8f5d79e]{flex:1;min-width:0;padding:.45rem .3rem;font-size:.92rem;font-weight:600;color:var(--color-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-label[data-v-f8f5d79e]:hover{color:var(--color-primary)}.tree-label.is-locked[data-v-f8f5d79e]{display:inline-flex;align-items:center;gap:.35rem;color:var(--color-text-muted);cursor:not-allowed}.tree-label.is-locked[data-v-f8f5d79e]:hover{color:var(--color-text-muted)}.lock-icon[data-v-f8f5d79e]{width:13px;height:13px;flex-shrink:0}.activity-row.is-locked[data-v-f8f5d79e]{opacity:.55}.activity-label.is-locked[data-v-f8f5d79e]{cursor:not-allowed;color:var(--color-text-muted)}.activity-list[data-v-f8f5d79e]{list-style:none;margin:.1rem 0;padding:0}.activity-row[data-v-f8f5d79e]{display:flex;align-items:center;gap:.5rem;padding:.2rem .3rem;border-radius:var(--radius-sm)}.activity-row[data-v-f8f5d79e]:hover{background-color:var(--color-bg)}.activity-row.active[data-v-f8f5d79e]{background-color:var(--color-primary-soft)}.activity-check[data-v-f8f5d79e]{display:inline-flex;flex-shrink:0;cursor:pointer;position:relative}.activity-check input[data-v-f8f5d79e]{position:absolute;opacity:0;width:16px;height:16px;margin:0;cursor:pointer}.activity-check-mark[data-v-f8f5d79e]{width:16px;height:16px;border-radius:4px;border:1.5px solid var(--color-border);background-color:var(--color-surface);display:inline-block;position:relative;flex-shrink:0;transition:background-color .15s,border-color .15s}.activity-check input:checked+.activity-check-mark[data-v-f8f5d79e]{background-color:var(--color-primary);border-color:var(--color-primary)}.activity-check-mark[data-v-f8f5d79e]:after{content:"";position:absolute;display:none;left:4px;top:1px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}.activity-check input:checked+.activity-check-mark[data-v-f8f5d79e]:after{display:block}.activity-done-icon[data-v-f8f5d79e]{width:15px;height:15px;flex-shrink:0;color:var(--color-success)}.activity-file-icon[data-v-f8f5d79e]{width:14px;height:14px;flex-shrink:0;color:var(--color-text-muted)}.activity-label[data-v-f8f5d79e]{flex:1;min-width:0;padding:.15rem 0;font-size:.85rem;color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-label[data-v-f8f5d79e]:hover{color:var(--color-primary)}.activity-row.active .activity-label[data-v-f8f5d79e]{color:var(--color-primary);font-weight:600}.course-nav[data-v-27cef19d]{padding:1.35rem 1.1rem 1.1rem;position:sticky;top:1rem}.nav-course[data-v-27cef19d]{padding-bottom:1.25rem;margin-bottom:1.1rem;border-bottom:1px solid var(--color-border)}.nav-course-tags[data-v-27cef19d]{display:flex;flex-wrap:wrap;gap:.4rem}.course-code[data-v-27cef19d]{font-size:.72rem;font-weight:700;letter-spacing:.05em;color:var(--color-primary);background-color:var(--color-primary-soft);padding:.18rem .55rem;border-radius:999px}.course-category[data-v-27cef19d]{font-size:.72rem;font-weight:600;color:var(--color-text-muted);background-color:var(--color-bg);padding:.18rem .55rem;border-radius:999px}.nav-course-title[data-v-27cef19d]{display:block;font-size:1.3rem;font-weight:700;line-height:1.25;margin-top:.65rem;color:var(--color-text)}.nav-course-title[data-v-27cef19d]:hover{color:var(--color-primary)}.course-description[data-v-27cef19d]{margin-top:.5rem;font-size:.85rem;color:var(--color-text-muted)}.hidden-flag[data-v-27cef19d]{font-size:.72rem;font-weight:700;color:var(--color-danger);background-color:var(--color-danger-soft);padding:.18rem .55rem;border-radius:999px}.progress-wrap[data-v-27cef19d]{margin-top:1.1rem}.progress-head[data-v-27cef19d]{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:.4rem}.progress-label[data-v-27cef19d]{font-size:.72rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--color-text-muted)}.progress-value[data-v-27cef19d]{font-size:.85rem;font-weight:700;color:var(--color-primary)}.progress-track[data-v-27cef19d]{height:8px;border-radius:999px;background-color:var(--color-bg);overflow:hidden}.progress-fill[data-v-27cef19d]{height:100%;background:linear-gradient(90deg,var(--color-primary),var(--color-secondary));border-radius:999px;transition:width .2s ease}.completion-badge[data-v-27cef19d]{display:flex;align-items:center;gap:.5rem;margin-top:.75rem;padding:.55rem .8rem;border-radius:var(--radius-sm);background-color:var(--color-success-soft);color:var(--color-success);font-size:.85rem;font-weight:600}.self-complete-btn[data-v-27cef19d]{margin-top:.75rem;width:100%;justify-content:center}.start-course-btn[data-v-27cef19d]{width:100%;margin-top:1rem}.nav-admin[data-v-27cef19d]{display:flex;flex-direction:column;gap:.15rem;padding-bottom:1rem;margin-bottom:1rem;border-bottom:1px solid var(--color-border)}.nav-admin-link[data-v-27cef19d]{display:flex;align-items:center;gap:.5rem;padding:.4rem .3rem;border-radius:var(--radius-sm);font-size:.85rem;font-weight:500;color:var(--color-text)}.nav-admin-link[data-v-27cef19d]:hover{color:var(--color-primary);background-color:var(--color-primary-soft)}.nav-admin-link[data-v-27cef19d] .app-icon{width:15px;height:15px}.nav-header[data-v-27cef19d]{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:.7rem}.placeholder[data-v-27cef19d]{color:var(--color-text-muted);font-size:.85rem}.cf-display[data-v-602b253f]{display:flex;flex-direction:column;gap:.5rem}.cf-display-row[data-v-602b253f]{display:flex;gap:.5rem;font-size:.88rem}.cf-display-label[data-v-602b253f]{color:var(--color-text-muted);min-width:10rem}.cf-display-value[data-v-602b253f]{font-weight:500}.modal-backdrop[data-v-076b5ffe]{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#0f111a73;display:flex;align-items:center;justify-content:center;padding:1.5rem;z-index:100}.modal[data-v-076b5ffe]{width:100%;max-width:560px;padding:1.5rem;display:flex;flex-direction:column;gap:1rem;max-height:90vh;overflow-y:auto}.modal-header[data-v-076b5ffe]{display:flex;align-items:center;justify-content:space-between;gap:1rem}.modal-header h2[data-v-076b5ffe]{font-size:1.1rem}.modal-text[data-v-076b5ffe]{color:var(--color-text-muted);font-size:.85rem}.placeholder[data-v-076b5ffe]{color:var(--color-text-muted)}.field[data-v-076b5ffe]{display:flex;flex-direction:column;gap:.35rem;font-size:.85rem;font-weight:500}.field input[data-v-076b5ffe],.field select[data-v-076b5ffe]{padding:.55rem .7rem;font-size:.88rem;font-family:inherit;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text)}.match-type-field[data-v-076b5ffe]{padding:.75rem;background-color:var(--color-bg);border-radius:var(--radius-sm)}.restriction-list[data-v-076b5ffe]{display:flex;flex-direction:column;gap:.85rem}.restriction-card[data-v-076b5ffe]{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.85rem;display:flex;flex-direction:column;gap:.75rem}.restriction-card-header[data-v-076b5ffe]{display:flex;align-items:center;gap:.6rem}.type-select[data-v-076b5ffe]{flex:1;padding:.5rem .65rem;font-size:.88rem;font-family:inherit;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text)}.restriction-fields[data-v-076b5ffe]{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem}.icon-btn[data-v-076b5ffe]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:transparent;color:var(--color-text-muted)}.icon-btn[data-v-076b5ffe]:hover{color:var(--color-danger);border-color:var(--color-danger)}.add-restriction-btn[data-v-076b5ffe]{align-self:flex-start}.modal-actions[data-v-076b5ffe]{display:flex;justify-content:flex-end;gap:.75rem;margin-top:.25rem;border-top:1px solid var(--color-border);padding-top:1rem}.course-page[data-v-45db5540]{width:100%;max-width:1180px;margin:0 auto;padding:1.5rem 1.5rem 3rem}.breadcrumb[data-v-45db5540]{display:flex;align-items:center;gap:.5rem;font-size:.85rem;margin-bottom:1.25rem}.breadcrumb-sep[data-v-45db5540]{color:var(--color-text-muted)}.breadcrumb-current[data-v-45db5540]{color:var(--color-text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.preview-toggle[data-v-45db5540]{display:inline-flex;align-items:center;gap:.4rem;margin-bottom:1rem;font-size:.85rem;color:var(--color-text-muted);cursor:pointer}.preview-toggle[data-v-45db5540] .app-icon{width:15px;height:15px}.preview-toggle .toggle-input[data-v-45db5540]{width:34px;height:18px;accent-color:var(--color-primary)}.course-layout[data-v-45db5540]{display:grid;grid-template-columns:260px 1fr;gap:1.5rem;align-items:start}.course-content[data-v-45db5540]{min-width:0}.course-custom-fields[data-v-45db5540]{margin-bottom:1.25rem}.section[data-v-45db5540]{padding:1.4rem 1.5rem;margin-bottom:1.25rem;transition:opacity .15s}.section.drag-source[data-v-45db5540]{opacity:.4}.section.is-locked[data-v-45db5540]{opacity:.65}.section-title[data-v-45db5540]{display:flex;align-items:center;gap:.4rem}.lock-icon[data-v-45db5540]{width:15px;height:15px;flex-shrink:0;color:var(--color-text-muted)}.lock-reason[data-v-45db5540]{margin-top:.3rem;font-size:.82rem;color:var(--color-text-muted);font-style:italic}.section-header[data-v-45db5540]{display:flex;align-items:flex-start;justify-content:space-between;gap:.6rem;padding-bottom:.75rem;margin-bottom:1rem;border-bottom:1px solid var(--color-border)}.section-heading[data-v-45db5540]{flex:1;min-width:0}.section-title[data-v-45db5540]{font-size:1.15rem}.section-description[data-v-45db5540]{margin-top:.3rem;font-size:.85rem;color:var(--color-text-muted)}.section-actions[data-v-45db5540]{display:flex;gap:.35rem;flex-shrink:0}.placeholder[data-v-45db5540]{color:var(--color-text-muted)}.drag-grip[data-v-45db5540]{width:16px;height:16px;flex-shrink:0;margin-top:.2rem;color:var(--color-text-muted);cursor:grab}.activity-drop-zone[data-v-45db5540]{min-height:1.5rem}.activity-list[data-v-45db5540]{display:flex;flex-direction:column;gap:.5rem}.activity-row[data-v-45db5540]{display:flex;align-items:center;gap:.6rem;padding:.5rem .6rem;border-radius:var(--radius-sm);transition:opacity .15s}.activity-row .drag-grip[data-v-45db5540]{margin-top:0}.activity-row[data-v-45db5540]:hover{background-color:var(--color-bg)}.activity-row.drag-source[data-v-45db5540]{opacity:.4}.activity-row.is-locked[data-v-45db5540]{opacity:.55}.activity-icon[data-v-45db5540]{width:34px;height:34px;border-radius:var(--radius-sm);background-color:var(--color-primary-soft);color:var(--color-primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.activity-link[data-v-45db5540]{flex:1;min-width:0;display:flex;align-items:baseline;gap:.6rem;background:none;border:none;text-align:left;padding:0}.activity-name[data-v-45db5540]{font-size:.95rem;color:var(--color-text)}.activity-link:hover .activity-name[data-v-45db5540]{color:var(--color-primary)}.activity-link.is-locked[data-v-45db5540]{cursor:not-allowed}.activity-link.is-locked .activity-type[data-v-45db5540]{color:var(--color-text-muted);font-style:italic}.activity-type[data-v-45db5540]{font-size:.76rem;color:var(--color-text-muted);flex-shrink:0}.hidden-flag[data-v-45db5540]{font-size:.72rem;font-weight:600;color:var(--color-text-muted);background-color:var(--color-bg);padding:.1rem .5rem;border-radius:999px;flex-shrink:0}.activity-actions[data-v-45db5540]{display:flex;gap:.35rem;flex-shrink:0}.add-activity-btn[data-v-45db5540]{margin-top:1.1rem;font-size:.85rem;padding:.45rem .85rem}.module-search[data-v-45db5540]{margin-bottom:.75rem}.module-picker-list[data-v-45db5540]{display:flex;flex-direction:column;gap:.6rem;max-height:60vh;overflow-y:auto}.module-picker-item[data-v-45db5540]{display:flex;align-items:center;gap:.9rem;padding:.85rem 1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:transparent;text-align:left}.module-picker-item[data-v-45db5540]:hover{border-color:var(--color-primary);background-color:var(--color-primary-soft)}.module-picker-icon[data-v-45db5540]{width:38px;height:38px;flex-shrink:0;border-radius:var(--radius-sm);background-color:var(--color-primary-soft);color:var(--color-primary);display:flex;align-items:center;justify-content:center}.module-picker-text[data-v-45db5540]{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem;font-size:.9rem}.module-picker-description[data-v-45db5540]{font-size:.82rem;color:var(--color-text-muted);font-weight:400}.module-picker-chevron[data-v-45db5540]{flex-shrink:0;color:var(--color-text-muted)}.favorite-toggle[data-v-45db5540]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;flex-shrink:0;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--color-text-muted)}.favorite-toggle[data-v-45db5540]:hover{color:var(--color-text)}.favorite-toggle.active[data-v-45db5540]{color:#f5a623}.favorite-toggle[data-v-45db5540] .app-icon{fill:currentColor;opacity:.25}.favorite-toggle.active[data-v-45db5540] .app-icon{opacity:1}@media (max-width: 820px){.course-layout[data-v-45db5540]{grid-template-columns:1fr}}.settings-form[data-v-ce9be34d]{display:flex;flex-direction:column;gap:1.5rem}fieldset[data-v-ce9be34d]{border:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1rem}legend[data-v-ce9be34d]{padding:0;margin-bottom:.75rem;font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted)}.field-row[data-v-ce9be34d]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 560px){.field-row[data-v-ce9be34d]{grid-template-columns:1fr}}.color-input[data-v-ce9be34d]{display:flex;gap:.5rem}.color-input input[type=color][data-v-ce9be34d]{width:46px;height:42px;padding:.2rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);cursor:pointer}.color-input input[type=text][data-v-ce9be34d]{flex:1;min-width:0}.theme-preview[data-v-ce9be34d]{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.preview-banner[data-v-ce9be34d]{background:linear-gradient(120deg,var(--preview-primary),var(--preview-secondary));padding:1rem 1.25rem}.preview-site-name[data-v-ce9be34d]{color:#fff;font-weight:600}.preview-body[data-v-ce9be34d]{display:flex;align-items:center;gap:1.25rem;padding:1rem 1.25rem;background-color:var(--color-surface)}.preview-btn[data-v-ce9be34d]{display:inline-block;padding:.45rem 1rem;border-radius:var(--radius-sm);background-color:var(--preview-primary);color:#fff;font-size:.85rem;font-weight:500}.preview-link[data-v-ce9be34d]{color:var(--preview-primary);font-size:.9rem;font-weight:500;text-decoration:underline}.submit-btn[data-v-ce9be34d]{align-self:flex-start;padding:.65rem 1.5rem}.install-page[data-v-21e31c39]{flex:1;display:flex;align-items:flex-start;justify-content:center;padding:3rem 1.5rem;background:radial-gradient(circle at 12% 10%,var(--color-primary-soft),transparent 40%),radial-gradient(circle at 88% 90%,var(--color-secondary-soft),transparent 40%),var(--color-bg)}.install-card[data-v-21e31c39]{width:100%;max-width:620px;padding:2.25rem 2.25rem 2.5rem;box-shadow:var(--shadow-md)}.install-header[data-v-21e31c39]{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.install-header h1[data-v-21e31c39]{font-size:1.45rem}.brand-mark[data-v-21e31c39]{width:46px;height:46px;flex-shrink:0;border-radius:12px;background:linear-gradient(135deg,var(--color-primary),var(--color-secondary));color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.7rem;font-weight:700}.install-subtitle[data-v-21e31c39]{color:var(--color-text-muted);font-size:.92rem;margin-top:.2rem}.stepper[data-v-21e31c39]{list-style:none;display:flex;gap:.5rem;margin:0 0 1.75rem;padding:0}.stepper li[data-v-21e31c39]{flex:1;display:flex;align-items:center;gap:.5rem;padding:.5rem .65rem;border-radius:var(--radius-sm);background-color:var(--color-bg);color:var(--color-text-muted);font-size:.82rem;font-weight:500}.stepper li.active[data-v-21e31c39]{background-color:var(--color-primary-soft);color:var(--color-primary)}.stepper li.done[data-v-21e31c39]{color:var(--color-success)}.step-dot[data-v-21e31c39]{width:22px;height:22px;flex-shrink:0;border-radius:50%;background-color:var(--color-surface);border:1px solid currentColor;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:600}.step-label[data-v-21e31c39]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.step-panel[data-v-21e31c39]{display:flex;flex-direction:column;gap:1.1rem}.step-intro[data-v-21e31c39]{color:var(--color-text-muted);font-size:.92rem}.alert-error[data-v-21e31c39],.alert-success[data-v-21e31c39]{margin:0}.db-summary[data-v-21e31c39]{display:flex;gap:2rem;margin:0;padding:.9rem 1.1rem;border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg)}.db-summary dt[data-v-21e31c39]{font-size:.72rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--color-text-muted)}.db-summary dd[data-v-21e31c39]{margin:.15rem 0 0;font-size:.9rem;font-family:ui-monospace,monospace}.db-choice[data-v-21e31c39]{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.db-form[data-v-21e31c39]{display:flex;flex-direction:column;gap:1rem;padding:1.25rem;border:1px dashed var(--color-border);border-radius:var(--radius-md)}.db-form .btn[data-v-21e31c39]{align-self:flex-start}.admin-form[data-v-21e31c39]{gap:1rem}.field-row[data-v-21e31c39]{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 560px){.field-row[data-v-21e31c39]{grid-template-columns:1fr}}.step-actions[data-v-21e31c39]{display:flex;justify-content:space-between;margin-top:.5rem}.back-btn[data-v-21e31c39]{align-self:flex-start}.install-done[data-v-21e31c39]{display:flex;flex-direction:column;align-items:center;gap:.9rem;text-align:center;padding:1.5rem 0}.done-mark[data-v-21e31c39]{width:56px;height:56px;border-radius:50%;background-color:var(--color-success-soft);color:var(--color-success);display:flex;align-items:center;justify-content:center;font-size:1.8rem;font-weight:700}.install-done h1[data-v-21e31c39]{font-size:1.4rem}.install-done .btn[data-v-21e31c39]{margin-top:.5rem}
