:root{--school-celestial-ink:var(--foreground);--school-celestial-panel:var(--ui-dark);--school-paper:var(--card);--school-parchment:var(--background);--school-body-ink:var(--foreground);--school-muted:var(--muted-foreground);--school-line:var(--border);--school-display-font:var(--font-display-family);--school-body-font:var(--font-family);--school-shadow-xs:0 1px 3px 0 #0000000d;--school-shadow-sm:0 1px 3px 0 #0000001a, 0 1px 2px -1px #0000001a;--school-shadow-lg:0 1px 3px 0 #0000001a, 0 10px 24px -6px #00000024;--school-primary-hover:oklch(88.5% .05 86.47);--school-primary-edge:oklch(86% .05 86.47);--school-focus:var(--ink);--school-focus-ring:0 0 0 3px color-mix(in oklch, var(--ring) 50%, transparent);--school-topbar-height:64px;color:var(--school-body-ink);background:var(--school-parchment);font-family:var(--school-body-font);font-synthesis:none}*{box-sizing:border-box}body{background:var(--school-parchment);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-width:320px;margin:0}button,input,select,textarea{font-family:var(--font-family);font-size:var(--text-body)}.school-shell input,.school-shell textarea,.school-shell select{font-weight:var(--weight-regular)!important}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}:focus-visible{outline:2px solid var(--school-focus);outline-offset:2px}.video-js :focus-visible{outline:3px solid var(--primary);outline-offset:-3px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;padding:0;position:absolute;overflow:hidden}.school-shell{min-height:100svh;display:flex}.school-sidebar{z-index:10;border-right:1px solid var(--border);background:var(--sidebar);width:256px;color:var(--foreground);flex-direction:column;padding:0 12px 12px;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto}.brand{min-height:var(--school-topbar-height);color:var(--foreground);font-family:var(--font-display-family);font-size:var(--text-body);font-weight:var(--weight-medium);letter-spacing:-.025em;align-items:center;gap:10px;margin:0;padding:0 8px;line-height:1.3;display:inline-flex}.brand strong{font-weight:inherit}.brand-logo{width:auto;max-width:100%;height:48px;display:block}.brand span{background:var(--primary);width:32px;height:32px;color:var(--primary-foreground);font-weight:var(--weight-bold);letter-spacing:0;border-radius:8px;flex:none;place-items:center;display:grid}.brand--light{align-self:flex-start}.navigation-list{gap:20px;margin-top:12px;display:grid}.navigation-group{gap:2px;display:grid}.navigation-group__label{color:var(--muted-foreground);letter-spacing:normal;margin:0 12px 4px;font-size:.75rem;font-weight:500;line-height:1.5}.navigation-list a,.settings-link{border-radius:var(--ui-radius-field);min-height:44px;color:var(--secondary-foreground);font-size:var(--text-caption);align-items:center;gap:10px;padding:8px 12px;font-weight:500;line-height:1.4;transition:background .15s,color .15s;display:flex}.navigation-list a svg,.settings-link svg{color:var(--muted-foreground);flex:none;transition:color .15s}.navigation-list a:hover,.settings-link:hover{background:var(--primary-soft);color:var(--foreground)}.navigation-list a.active{background:var(--primary);color:var(--primary-foreground);font-weight:var(--weight-medium)}.navigation-list a:hover svg,.settings-link:hover svg,.navigation-list a.active svg{color:currentColor}.settings-link{flex-shrink:0;margin-top:auto}.settings-link--next{margin-top:2px}.school-main{width:calc(100% - 256px);min-width:0;margin-left:256px}.topbar{min-height:var(--school-topbar-height);border-bottom:1px solid var(--border);background:var(--background);align-items:center;gap:8px;padding:8px 40px;display:flex}.topbar__page-title{color:var(--foreground);font-family:var(--font-display-family);font-size:var(--text-body);font-weight:var(--weight-medium);letter-spacing:-.02em}.topbar__spacer{flex:1}.topbar__back-link{flex:0 auto;margin:0 0 0 14px}.icon-button{border-radius:var(--ui-radius-control);width:44px;height:44px;color:var(--muted-foreground);background:0 0;border:0;flex-shrink:0;place-items:center;transition:background .15s,color .15s;display:inline-grid}.icon-button:not(:disabled):hover{background:var(--accent);color:var(--accent-foreground)}.profile-trigger{border:1px solid var(--border);border-radius:var(--ui-radius-control);background:var(--background);min-height:44px;box-shadow:var(--school-shadow-xs);color:var(--foreground);font-size:var(--text-caption);align-items:center;gap:10px;margin-left:8px;padding:5px 14px 5px 5px;font-weight:500;transition:background .15s;display:inline-flex}.profile-trigger:hover{background:var(--accent)}.avatar{border-radius:var(--ui-radius-pill);background:var(--primary);width:32px;height:32px;color:var(--primary-foreground);font-size:var(--text-caption);font-weight:var(--weight-medium);flex-shrink:0;place-items:center;display:grid}.profile-menu{z-index:40;border:1px solid var(--border);background:var(--popover);min-width:220px;max-width:calc(100vw - 24px);box-shadow:var(--ui-shadow-menu);color:var(--popover-foreground);font-size:var(--text-caption);border-radius:12px;padding:4px}.profile-menu__label{color:var(--muted-foreground);padding:8px 10px 6px;font-size:.75rem;font-weight:500}.profile-menu [role=menuitem],.profile-menu [role=menuitem] a{border-radius:8px;outline:none;align-items:center;gap:8px;min-height:44px;padding:0 10px;display:flex}.profile-menu [role=menuitem]:focus,.profile-menu [role=menuitem]:hover{background:var(--accent);color:var(--accent-foreground)}.profile-menu [role=menuitem].danger-item{color:var(--destructive)}.profile-menu [role=menuitem].danger-item:focus,.profile-menu [role=menuitem].danger-item:hover{background:var(--destructive-soft);color:var(--destructive)}.profile-menu [role=menuitem]:focus-visible{outline:none}.profile-menu [role=menuitem][data-disabled]{opacity:.5}.menu-separator{background:var(--border);height:1px;margin:4px -4px}.page-content{width:min(1280px,100%);margin:0 auto;padding:40px 40px 72px}.page-heading{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:30px;display:flex}.page-heading__title{align-items:flex-start;gap:10px;display:flex}.eyebrow{color:var(--muted-foreground);font-size:var(--text-caption);letter-spacing:normal;margin:0 0 8px;font-weight:500}h1,h2,p{margin-top:0}h1{color:var(--foreground);font-family:var(--font-display-family);font-weight:var(--weight-medium);letter-spacing:-.025em;line-height:var(--leading-heading);margin-bottom:10px}h2{color:var(--foreground);font-family:var(--font-display-family);font-weight:var(--weight-medium);letter-spacing:-.025em}.page-heading>div>p:last-child,.lead{max-width:630px;color:var(--muted-foreground);font-size:var(--text-body);margin-bottom:0;line-height:1.6}.button{border-radius:var(--ui-radius-control);min-height:44px;font-size:var(--text-caption);font-weight:500;line-height:var(--leading-control);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:9px 16px;transition:background .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.button svg{flex:none}.button:not(:disabled):active{transform:translateY(1px)}.button--primary{border-color:var(--school-primary-edge);background:var(--primary);color:var(--primary-foreground)}.button--primary:hover:not(:disabled){border-color:var(--school-primary-edge);background:var(--school-primary-hover);color:var(--primary-foreground)}.button--secondary{border-color:var(--border);background:var(--background);box-shadow:var(--school-shadow-xs);color:var(--foreground)}.button--secondary:hover:not(:disabled){border-color:var(--border);background:var(--accent);color:var(--accent-foreground)}.button--danger{border-color:var(--destructive);background:var(--background);box-shadow:var(--school-shadow-xs);color:var(--destructive)}.button--danger:hover:not(:disabled){border-color:var(--destructive);background:var(--destructive);color:#fff}.course-refresh-button{justify-content:center;width:44px;min-width:44px;padding:0}.button--wide{width:100%;min-height:48px}.school-admin label,.admin-dialog label{font-size:var(--text-caption);font-weight:var(--weight-medium);gap:6px;display:grid}.school-admin input,.school-admin select,.admin-dialog input,.admin-dialog textarea,.admin-dialog select{box-sizing:border-box;border:1px solid var(--input);border-radius:var(--ui-radius-field);background:var(--card);min-height:44px;color:var(--foreground);font:var(--weight-regular) var(--text-body)/var(--leading-control) var(--font-family);max-width:100%;padding:9px 12px;box-shadow:0 1px 3px #0000000d}.admin-dialog textarea{resize:vertical;min-height:96px}.admin-tabs,.admin-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-actions:has(>label){align-items:flex-end}.school-admin .school-checkbox__label{font-weight:var(--weight-regular);display:inline}.admin-tabs{border-bottom:1px solid var(--border);flex-wrap:nowrap;gap:4px;margin-bottom:24px;overflow-x:auto}.admin-tabs button{min-height:44px;font:var(--weight-regular) var(--text-body)/var(--leading-control) var(--font-family);color:var(--muted-foreground);white-space:nowrap;cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:10px 14px}.admin-tabs button:hover{color:var(--foreground)}.admin-tabs button[data-state=active]{color:var(--foreground);font-weight:var(--weight-medium);border-color:var(--ink)}.admin-tabs button:focus-visible{outline:2px solid var(--ink);outline-offset:-2px}.admin-actions{margin:12px 0}.admin-table-wrap{border:1px solid var(--border);border-radius:var(--ui-radius-card);background:var(--card);overflow:auto;box-shadow:0 1px 3px #0000000d}.admin-table{border-collapse:collapse;text-align:left;width:100%}.admin-table td,.admin-table th{border-bottom:1px solid var(--border);padding:12px 16px}.admin-table th{background:var(--muted);color:var(--muted-foreground);font-size:var(--text-caption);font-weight:var(--weight-medium);white-space:nowrap}.admin-table tbody tr:last-child td{border-bottom:0}.admin-table tbody tr:hover{background:var(--muted)}.admin-table td>.admin-cell-label{display:none}.admin-row-actions{margin:0}.admin-subjects,.admin-selected{margin:12px 0;padding:0;list-style:none}.admin-subjects{border:1px solid var(--border);border-radius:var(--ui-radius-card);background:var(--card);overflow:hidden;box-shadow:0 1px 3px #0000000d}.admin-subjects:empty{display:none}.admin-subjects li,.admin-selected li{border-bottom:1px solid var(--border);overflow-wrap:anywhere;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;display:flex}.admin-subjects li{padding:14px 16px}.admin-subjects li:last-child,.admin-selected li:last-child{border-bottom:0}.admin-subjects li p{color:var(--muted-foreground);margin:4px 0 0}.admin-subjects li .admin-actions{flex-shrink:0;margin:0}.admin-subjects small{color:var(--muted-foreground);display:block}.subject-picker{border:1px solid var(--border);border-radius:12px;max-height:360px;margin:16px 0;padding:14px;overflow:auto}.admin-selected{max-height:180px;overflow:auto}.admin-overlay{background:color-mix(in oklab, var(--foreground) 50%, transparent);z-index:100;position:fixed;inset:0}.admin-dialog{box-sizing:border-box;background:var(--card);width:min(640px,100vw - 32px);max-height:calc(100dvh - 48px);color:var(--foreground);border:1px solid var(--border);border-radius:var(--ui-radius-card);z-index:101;box-shadow:var(--ui-shadow-menu);padding:24px;position:fixed;top:50%;left:50%;overflow:auto;transform:translate(-50%,-50%)}.admin-dialog>p{color:var(--muted-foreground)}.admin-form{gap:14px;margin-top:20px;display:grid}.admin-dialog h2{letter-spacing:-.02em;margin-top:0}.admin-dialog--scroll,.admin-dialog:has(>.admin-dialog__body){flex-direction:column;max-height:calc(100vh - 48px);display:flex;overflow:hidden}.admin-dialog>.admin-dialog__body{flex:auto;min-height:0;margin:0 -24px;padding:0 24px;overflow:auto}.admin-dialog--scroll>.admin-actions,.admin-dialog:has(>.admin-dialog__body)>.admin-actions{flex:none;margin-bottom:0}@media (width<=620px){.admin-subjects li{flex-wrap:wrap;align-items:flex-start}.admin-table-wrap:has(.admin-table--responsive){box-shadow:none;background:0 0;border:0;border-radius:0}.admin-table--responsive,.admin-table--responsive tbody,.admin-table--responsive tr,.admin-table--responsive td{box-sizing:border-box;width:100%;display:block}.admin-table--responsive thead{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.admin-table--responsive tr{border:1px solid var(--border);border-radius:var(--ui-radius-card);background:var(--card);margin-bottom:16px;padding:10px 14px;box-shadow:0 1px 3px #0000000d}.admin-table--responsive tbody tr:hover{background:var(--card)}.admin-table--responsive td{border-bottom:1px solid var(--border);overflow-wrap:anywhere;grid-template-columns:minmax(90px,35%) minmax(0,1fr);gap:8px;padding:8px 0;display:grid}.admin-table--responsive td:last-child{border-bottom:0}.admin-table--responsive td>.admin-cell-label{color:var(--muted-foreground);font-size:var(--text-caption);font-weight:var(--weight-medium);display:block}.admin-table--responsive .admin-actions{margin:0}.admin-table--responsive .admin-actions button{min-height:44px}}.status-chip{border-radius:var(--ui-radius-pill);background:var(--primary);color:var(--primary-foreground);font-size:.75rem;font-weight:var(--weight-medium);letter-spacing:.02em;text-transform:uppercase;margin-bottom:11px;padding:3px 10px;display:inline-flex}.status-chip[data-published=true]{background:var(--success-soft);color:var(--success)}.course-card__description{max-height:6.2em;color:var(--muted-foreground);font-size:var(--text-caption);overflow-wrap:anywhere;line-height:1.55;overflow:hidden}.course-card__description :is(h1,h2,h3,h4,h5,h6){font-size:var(--text-body);margin:0 0 4px}.course-card__description :is(p,ol,ul){margin:0 0 4px}.course-card--skeleton,.detail-skeleton{background:var(--card);min-height:244px;position:relative;overflow:hidden}.course-card--skeleton:after,.detail-skeleton:after{background:linear-gradient(90deg, transparent, var(--muted), transparent);content:"";animation:1.4s infinite shimmer;position:absolute;inset:0}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.status-panel{border:1px solid var(--border);border-radius:var(--ui-radius-card);background:var(--card);max-width:680px;box-shadow:var(--school-shadow-xs);color:var(--muted-foreground);align-items:flex-start;gap:16px;padding:24px;display:flex}.status-panel>svg{flex:none}.status-panel[data-kind=unavailable],.status-panel[data-kind=error]{border-color:color-mix(in oklch, var(--destructive) 25%, var(--border));background:var(--destructive-soft);color:var(--destructive)}.status-panel h2{font-size:var(--text-heading);margin-bottom:6px}.status-panel p{font-size:var(--text-body);margin-bottom:15px;line-height:1.55}.status-panel[data-kind=unavailable] p,.status-panel[data-kind=error] p{color:var(--foreground)}.back-link{color:var(--ink);font-size:var(--text-caption);font-weight:var(--weight-medium);align-items:center;gap:6px;margin-bottom:26px;display:inline-flex}.back-link.topbar__back-link{margin-bottom:0}.back-link:hover{color:var(--ink-hover);text-underline-offset:4px;text-decoration:underline}.course-detail,.unavailable-section{border:1px solid var(--border);border-radius:var(--ui-radius-card);background:var(--card);max-width:760px;box-shadow:var(--school-shadow-xs);padding:40px}.notice{border:1px solid var(--border);background:var(--muted);color:var(--muted-foreground);font-size:var(--text-caption);border-radius:8px;gap:5px;margin-top:31px;padding:13px 16px;line-height:1.55;display:grid}.unavailable-section>svg{color:var(--muted-foreground);margin-bottom:21px}.unavailable-section .notice{margin:24px 0 0}.lesson-preview{border:1px dashed var(--ring);max-width:760px;color:var(--muted-foreground);font-size:var(--text-caption);border-radius:12px;gap:10px;margin-top:17px;padding:15px 17px;line-height:1.45;display:flex}.lesson-preview svg{color:var(--muted-foreground);flex:none}.video-player{background:var(--ui-dark);border-radius:12px;overflow:hidden}.h5p-embed{border:1px solid var(--border);background:var(--card);border-radius:12px;overflow:hidden}.h5p-embed iframe{border:0;width:100%;min-height:480px;display:block}.embed-unavailable{border:1px dashed var(--ring);color:var(--muted-foreground);font-size:var(--text-caption);border-radius:8px;align-items:center;gap:9px;padding:15px;display:flex}.rich-editor{border:1px solid var(--input);background:var(--card);box-shadow:var(--school-shadow-xs);border-radius:8px;overflow:hidden}.editor-toolbar{border-bottom:1px solid var(--border);background:var(--muted);flex-wrap:wrap;align-items:center;gap:3px;padding:6px;display:flex}.editor-toolbar button{white-space:nowrap;min-width:32px;height:32px;color:var(--muted-foreground);background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;gap:4px;padding:0 6px;display:inline-flex}.editor-toolbar button:hover{background:var(--border);color:var(--foreground)}.editor-toolbar button.active{background:var(--primary);color:var(--primary-foreground)}.editor-content .tiptap{min-height:160px;color:var(--foreground);outline:none;padding:16px;line-height:1.65}.editor-content .tiptap p:first-child{margin-top:0}.editor-content .tiptap img{border-radius:8px;max-width:100%;height:auto}.editor-content .tiptap table{border-collapse:collapse;width:100%}.editor-content .tiptap td,.editor-content .tiptap th{border:1px solid var(--border);text-align:left;min-width:80px;padding:7px}.login-card{gap:19px;width:min(100%,400px);display:grid}.login-card h2{font-size:var(--text-heading);margin-bottom:7px}.login-card>div>p:last-child{color:var(--muted-foreground);font-size:var(--text-caption);margin-bottom:0}.login-card label{color:var(--foreground);font-size:var(--text-caption);gap:8px;font-weight:500;display:grid}.input-wrap{border:1px solid var(--input);border-radius:var(--ui-radius-field);background:var(--background);min-height:48px;box-shadow:var(--school-shadow-xs);color:var(--muted-foreground);align-items:center;gap:9px;padding:0 12px;transition:border-color .15s,box-shadow .15s;display:flex}.input-wrap:focus-within{border-color:var(--school-focus);box-shadow:var(--school-focus-ring)}.input-wrap input{width:100%;color:var(--foreground);background:0 0;border:0;outline:none}.form-error{border:1px solid color-mix(in oklch, var(--destructive) 25%, var(--border));background:var(--destructive-soft);color:var(--destructive);font-size:var(--text-caption);border-radius:8px;margin:0;padding:10px 12px;line-height:1.45}.form-note{color:var(--muted-foreground);font-size:var(--text-caption);text-align:center;margin:-3px 0 0;line-height:1.5}.mobile-only{display:none}@media (width<=840px){.school-sidebar{display:none}.school-main{width:100%;margin-left:0}.topbar{flex-wrap:wrap;padding:8px 16px}.topbar__page-title{margin-left:8px}.mobile-only{display:inline-grid}.profile-trigger__label{display:none}.profile-trigger{margin-left:0;padding:5px}.topbar__back-link{font-size:var(--text-caption);margin-left:0}.page-content{padding:32px 20px 56px}.mobile-overlay{z-index:49;background:#00000080;position:fixed;inset:0}.mobile-navigation{z-index:50;border:0;border-right:1px solid var(--border);background:var(--sidebar);width:min(86vw,308px);color:var(--foreground);box-shadow:var(--school-shadow-lg);outline:none;flex-direction:column;padding:0 12px 16px;display:flex;position:fixed;inset:0 auto 0 0;overflow-y:auto}.mobile-navigation .brand{font-size:var(--text-body);flex:none}.mobile-navigation .navigation-list{flex:1;align-content:start;margin-bottom:16px}.mobile-navigation .button{align-self:flex-start}}@media (prefers-reduced-motion:reduce){.course-card--skeleton:after,.detail-skeleton:after{background:var(--muted);animation:none}.button:not(:disabled):active{transform:none}}@media (width<=620px){.page-heading{flex-direction:column;align-items:flex-start}.course-detail,.unavailable-section{padding:28px 23px}}@media (width<=639px){.topbar,.page-content{padding-inline:12px}}
