:root{--color-bg:#f7f5f0;--color-surface:#fff;--color-surface-muted:#f0eee8;--color-surface-strong:#e7e3da;--color-text:#1e2925;--color-text-muted:#66716c;--color-text-subtle:#89918d;--color-border:#d9d7d0;--color-border-strong:#b9beb9;--color-primary:#14785f;--color-primary-hover:#0f664f;--color-primary-soft:#e2f2ec;--color-accent:#d97941;--color-accent-soft:#faeadf;--color-info:#286f9b;--color-info-soft:#e5f1f8;--color-success:#247a4a;--color-success-soft:#e4f3e9;--color-warning:#9a681a;--color-warning-soft:#f8efd9;--color-danger:#a13c3c;--color-danger-soft:#f8e7e7;--color-focus:#246bce;--color-overlay:#141e1a85;--color-on-primary:#fff;--color-transparent:transparent;--shadow-menu:0 10px 28px #18221e1f;--shadow-dialog:0 20px 50px #18221e2e;--radius-xs:4px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;color:var(--color-text);font-synthesis:none;text-rendering:optimizelegibility;font-family:Plus Jakarta Sans,Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{background:var(--color-bg);min-width:320px;color:var(--color-text);font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button{color:inherit}button,select{cursor:pointer}button:disabled,select:disabled{cursor:not-allowed}h1,h2,h3,p{margin-top:0}h1{margin-bottom:var(--space-2);letter-spacing:-.025em;font-size:clamp(24px,3vw,28px);line-height:1.22}h2{margin-bottom:var(--space-2);font-size:20px;line-height:1.4}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.muted{color:var(--color-text-muted)}.eyebrow,.nav-label{margin-bottom:var(--space-2);color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:700}.login-page,.boot-state{min-height:100vh;padding:var(--space-6);place-items:center;display:grid}.login-card{width:min(100%,440px);padding:var(--space-10);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}.login-card>.muted{margin-bottom:var(--space-8)}.form-stack{gap:var(--space-5);display:grid}label{gap:var(--space-2);color:var(--color-text);font-size:13px;font-weight:600;display:grid}input,select,textarea{border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);width:100%;min-height:42px;color:var(--color-text);outline:none;padding:10px 12px;font-weight:400;transition:border-color .15s,box-shadow .15s}textarea{resize:vertical}input:hover,select:hover,textarea:hover{border-color:var(--color-text-muted)}input:focus,select:focus,textarea:focus{border-color:var(--color-focus);box-shadow:0 0 0 2px var(--color-info-soft)}input:disabled,select:disabled,textarea:disabled{background:var(--color-surface-muted);color:var(--color-text-subtle)}.content-editor{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;line-height:1.55}.button{justify-content:center;align-items:center;gap:var(--space-2);border:1px solid var(--color-transparent);border-radius:var(--radius-sm);min-height:42px;padding:9px 15px;font-size:13px;font-weight:700;transition:background-color .15s,border-color .15s,color .15s;display:inline-flex}.button svg{width:17px;height:17px}.file-picker:focus-within{outline:2px solid var(--color-focus);outline-offset:2px}.button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.icon-button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.nav-item:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.module-item:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.button--primary{background:var(--color-primary);color:var(--color-on-primary)}.button--primary:hover:not(:disabled){background:var(--color-primary-hover)}.button--secondary{border-color:var(--color-border-strong);background:var(--color-surface)}.button--secondary:hover:not(:disabled){background:var(--color-surface-muted)}.button--tertiary{background:var(--color-transparent);min-height:36px;color:var(--color-primary);padding:6px 10px}.button--tertiary:hover:not(:disabled){background:var(--color-primary-soft)}.button--danger{background:var(--color-danger);color:var(--color-on-primary)}.button--danger:hover:not(:disabled){background:#873232}.button:disabled{opacity:.55}.button--wide{width:100%}.icon-button{border:1px solid var(--color-transparent);border-radius:var(--radius-sm);background:var(--color-transparent);place-items:center;width:42px;min-width:42px;height:42px;padding:0;display:inline-grid}.icon-button svg{width:19px;height:19px}.icon-button:hover:not(:disabled){background:var(--color-surface-muted)}.icon-button:disabled{color:var(--color-text-subtle)}.icon-button--danger{color:var(--color-danger)}.icon-button--danger:hover:not(:disabled){background:var(--color-danger-soft)}.spinner{align-items:center;gap:var(--space-2);display:inline-flex}.spinner svg{width:18px;height:18px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.notice{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--color-info-soft);color:var(--color-info);font-size:13px;font-weight:500;display:flex}.notice svg{width:18px;min-width:18px;height:18px;margin-top:1px}.notice--danger{background:var(--color-danger-soft);color:var(--color-danger)}.notice--warning{background:var(--color-warning-soft);color:var(--color-warning)}.app-shell{min-height:100vh}.topbar{z-index:30;align-items:center;gap:var(--space-5);height:64px;padding:0 var(--space-6);border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex;position:fixed;top:0;left:0;right:0}.topbar-brand{align-items:center;display:flex}.topbar-brand>div:last-child{line-height:1.25;display:grid}.topbar-brand span{color:var(--color-text-muted);font-size:11px}.environment-badge,.count-chip{background:var(--color-primary-soft);min-height:26px;color:var(--color-primary);border-radius:999px;align-items:center;padding:3px 9px;font-size:11px;font-weight:700;display:inline-flex}.topbar-user{align-items:center;gap:var(--space-2);color:var(--color-text-muted);margin-left:auto;font-size:12px;display:flex}.topbar-user>svg{width:20px}.main-nav{z-index:20;width:232px;padding:var(--space-8) var(--space-4);border-right:1px solid var(--color-border);background:var(--color-surface);transition:transform .17s;position:fixed;top:64px;bottom:0;left:0;transform:translate(-100%)}.main-nav--open{transform:translate(0)}.main-nav .nav-label{padding:0 var(--space-3)}.nav-item{align-items:center;gap:var(--space-3);width:100%;min-height:44px;margin-bottom:var(--space-1);border-radius:var(--radius-sm);background:var(--color-transparent);color:var(--color-text-muted);text-align:left;border:0;padding:10px 12px;font-size:13px;font-weight:600;display:flex;position:relative}.nav-item:before{background:var(--color-transparent);content:"";border-radius:3px;width:3px;position:absolute;top:10px;bottom:10px;left:0}.nav-item svg{width:19px;height:19px}.nav-item:hover{background:var(--color-surface-muted)}.nav-item--active{background:var(--color-primary-soft);color:var(--color-primary)}.nav-item--active:before{background:var(--color-primary)}.app-main{min-height:100vh;padding-top:64px;padding-left:0;transition:padding-left .17s}.app-shell--nav-open .app-main{padding-left:232px}.nav-scrim{display:none}.page{width:min(100%,1480px);padding:var(--space-10);margin:0 auto}.page-heading,.section-heading{justify-content:space-between;align-items:flex-start;gap:var(--space-6);display:flex}.page-heading{margin-bottom:var(--space-8)}.page-heading p:last-child{margin-bottom:0}.toolbar{gap:var(--space-3);margin-bottom:var(--space-5);display:flex}.search-field{width:min(100%,520px);position:relative}.search-field svg{width:18px;height:18px;color:var(--color-text-muted);position:absolute;top:12px;left:12px}.search-field input{padding-left:40px}.page-state{align-content:center;justify-items:center;gap:var(--space-4);min-height:240px;padding:var(--space-8);border:1px dashed var(--color-border-strong);border-radius:var(--radius-md);color:var(--color-text-muted);text-align:center;display:grid}.table-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);overflow:auto}table{border-collapse:collapse;width:100%}th,td{border-bottom:1px solid var(--color-border);text-align:left;vertical-align:middle;padding:13px 16px}th{z-index:1;background:var(--color-surface-muted);color:var(--color-text-muted);letter-spacing:.05em;text-transform:uppercase;font-size:11px;font-weight:700;position:sticky;top:0}td{height:58px;font-size:13px}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:var(--color-bg)}td>strong,.cell-subtitle{display:block}.cell-subtitle{color:var(--color-text-muted);margin-top:3px;font-size:11px}.line-clamp{-webkit-line-clamp:2;-webkit-box-orient:vertical;max-width:520px;display:-webkit-box;overflow:hidden}.status-badge,.type-badge{white-space:nowrap;border-radius:999px;align-items:center;padding:4px 8px;font-size:11px;font-weight:700;display:inline-flex}.status-badge--success{background:var(--color-success-soft);color:var(--color-success)}.status-badge--warning{background:var(--color-warning-soft);color:var(--color-warning)}.status-badge--muted{background:var(--color-surface-strong);color:var(--color-text-muted)}.type-badge{background:var(--color-info-soft);color:var(--color-info)}.type-badge--none{background:var(--color-surface-strong);color:var(--color-text-muted)}.type-badge--multiple{background:var(--color-accent-soft);color:var(--color-accent)}.progress-cell{align-items:center;gap:var(--space-2);grid-template-columns:36px 1fr;min-width:120px;display:grid}progress{background:var(--color-surface-strong);width:100%;height:7px;accent-color:var(--color-primary);border:0;border-radius:10px;overflow:hidden}progress::-webkit-progress-bar{background:var(--color-surface-strong)}progress::-webkit-progress-value{background:var(--color-primary)}.pagination{justify-content:flex-end;align-items:center;gap:var(--space-5);padding:var(--space-3) 0;color:var(--color-text-muted);font-size:12px;display:flex}.pagination>div{display:flex}.course-workspace{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);grid-template-columns:280px minmax(0,1fr);min-height:620px;display:grid;overflow:hidden}.module-sidebar{padding:var(--space-5) var(--space-3);border-right:1px solid var(--color-border);background:var(--color-bg);overflow-y:auto}.module-sidebar .nav-label{padding:0 var(--space-3)}.module-list{gap:var(--space-1);display:grid}.module-item{align-items:center;gap:var(--space-2);width:100%;min-height:58px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-transparent);border-radius:var(--radius-sm);background:var(--color-transparent);text-align:left;grid-template-columns:30px 1fr auto;display:grid}.module-item:hover{background:var(--color-surface)}.module-item--active{border-color:var(--color-border);background:var(--color-surface)}.module-order{border-radius:var(--radius-xs);background:var(--color-surface-strong);width:28px;height:28px;color:var(--color-text-muted);place-items:center;font-size:10px;font-weight:700;display:grid}.module-item--active .module-order{background:var(--color-primary);color:var(--color-on-primary)}.module-item strong,.module-item small{display:block}.module-item strong{font-size:12px}.module-item small{color:var(--color-text-muted);margin-top:2px;font-size:10px}.status-dot{background:var(--color-warning);border-radius:50%;width:8px;height:8px}.course-panel{min-width:0;padding:var(--space-6)}.section-heading{margin-bottom:var(--space-5)}.stats-line{gap:var(--space-4);color:var(--color-text-muted);flex-wrap:wrap;font-size:11px;display:flex}.steps-table th:first-child,.steps-table td:first-child{font-variant-numeric:tabular-nums;width:118px}.step-order-controls,.step-order-buttons{align-items:center;display:flex}.step-order-controls{gap:var(--space-2)}.step-order-number{text-align:center;min-width:18px;font-weight:700}.step-order-buttons{gap:2px}.icon-button--compact{width:30px;min-width:30px;height:30px}.icon-button--compact svg{width:16px;height:16px}.steps-table th:last-child,.steps-table td:last-child{width:156px}.actions-cell{text-align:right}.step-row-actions{justify-content:flex-end;align-items:center;gap:var(--space-1);display:flex}.media-count{font-variant-numeric:tabular-nums}.media-count--warning{color:var(--color-warning);font-weight:700}.messages-form{gap:var(--space-5);display:grid}.messages-toolbar,.messages-footer{justify-content:space-between;align-items:flex-start;gap:var(--space-5);display:flex}.messages-toolbar h2,.messages-toolbar p{margin-bottom:0}.messages-toolbar p{margin-top:var(--space-1)}.messages-grid{gap:var(--space-4);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.message-card{align-content:start;gap:var(--space-4);padding:var(--space-5);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);display:grid}.message-card-heading{justify-content:space-between;align-items:flex-start;gap:var(--space-4);display:flex}.message-card-heading h2,.message-card-heading p,.message-metadata{margin-bottom:0}.message-card-heading h2{font-size:16px;line-height:1.5}.message-card-heading p{margin-top:var(--space-1);color:var(--color-text-muted);font-size:12px}.message-card-heading code,.messages-page .page-heading code{border-radius:var(--radius-xs);background:var(--color-surface-muted);color:var(--color-text-muted);white-space:nowrap;padding:3px 7px;font-size:11px}.message-card label small{text-align:right}.message-metadata{color:var(--color-text-subtle);font-size:10px}.messages-footer{padding-top:var(--space-2);justify-content:flex-end}.dialog-backdrop{z-index:100;height:100vh;height:100dvh;padding:var(--space-5);background:var(--color-overlay);place-items:center;animation:.15s fade-in;display:grid;position:fixed;top:0;bottom:0;left:0;right:0;overflow:hidden}.dialog{width:min(100%,780px);height:min(900px,100vh - 40px);height:min(900px,100dvh - 40px);max-height:calc(100vh - 40px);border-radius:var(--radius-lg);background:var(--color-surface);max-height:calc(100dvh - 40px);box-shadow:var(--shadow-dialog);outline:none;grid-template-rows:auto minmax(0,1fr);animation:.16s dialog-in;display:grid;overflow:hidden}.dialog>form{grid-template-rows:minmax(0,1fr) auto;min-height:0;display:grid;overflow:hidden}.dialog--confirmation{grid-template-rows:auto auto auto;width:min(100%,540px);height:auto}.confirmation-body{overflow:visible}.confirmation-body p{margin:0}.dialog-header,.dialog-footer{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4) var(--space-6);background:var(--color-surface);display:flex}.dialog-header{border-bottom:1px solid var(--color-border)}.dialog-header p,.dialog-header h2{margin-bottom:0}.dialog-footer{border-top:1px solid var(--color-border);justify-content:flex-end}.dialog-body{gap:var(--space-6);overscroll-behavior:contain;min-height:0;padding:var(--space-6);scrollbar-color:var(--color-border-strong) var(--color-surface-muted);scrollbar-gutter:stable;scrollbar-width:thin;display:grid;overflow-y:auto}.dialog-body::-webkit-scrollbar{width:10px}.dialog-body::-webkit-scrollbar-track{background:var(--color-surface-muted)}.dialog-body::-webkit-scrollbar-thumb{border:2px solid var(--color-surface-muted);background:var(--color-border-strong);border-radius:999px}fieldset{gap:var(--space-4);border:0;grid-template-columns:repeat(2,minmax(0,1fr));padding:0;display:grid}legend{margin-bottom:var(--space-1);grid-column:1/-1;padding:0;font-size:14px;font-weight:700}.legend-row{grid-column:1/-1;justify-content:space-between;align-items:center;display:flex}.legend-row legend{margin:0}.legend-title-row{align-items:center;gap:var(--space-4);flex-wrap:wrap;display:flex}.legend-title-row legend{flex:none}.field-full,.options-list,.grading-controls,.media-list,.file-picker,.field-help,.empty-inline,fieldset>.notice{grid-column:1/-1}.grading-controls{gap:var(--space-4) var(--space-6);flex-wrap:wrap;display:flex}label small,.field-help{color:var(--color-text-muted);margin:0;font-size:11px;font-weight:400}.options-list,.media-list{gap:var(--space-2);display:grid}.option-row{align-items:center;gap:var(--space-2);grid-template-columns:30px minmax(0,1fr) auto 42px;display:grid}.option-number{border-radius:var(--radius-xs);background:var(--color-surface-muted);width:28px;height:28px;color:var(--color-text-muted);place-items:center;font-size:11px;font-weight:700;display:grid}.compact-check,.check-row{align-items:center;gap:var(--space-2);display:flex}.compact-check input,.check-row input{width:18px;min-height:18px;accent-color:var(--color-primary);margin:0}.empty-inline{padding:var(--space-4);border:1px dashed var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);text-align:center}.media-item{align-items:center;gap:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);grid-template-columns:38px minmax(0,1fr) auto;display:grid}.media-item>svg{width:22px;height:22px;color:var(--color-primary)}.media-item strong,.media-item span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.media-item strong{font-size:12px}.media-item span{color:var(--color-text-muted);margin-top:2px;font-size:10px}.media-item progress{margin-top:var(--space-2);display:block}.media-actions{display:flex}.file-picker{justify-content:center;align-items:center;gap:var(--space-2);border:1px dashed var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-bg);min-height:82px;color:var(--color-primary);cursor:pointer;display:flex}.file-picker:hover{border-color:var(--color-primary);background:var(--color-primary-soft)}.file-picker svg{width:20px}.file-picker input{clip:rect(0, 0, 0, 0);width:1px;height:1px;min-height:1px;position:absolute;overflow:hidden}.toast{z-index:200;right:var(--space-6);bottom:var(--space-6);align-items:center;gap:var(--space-3);max-width:min(420px,100vw - 48px);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-menu);display:flex;position:fixed}.toast>svg{width:20px;color:var(--color-success)}@keyframes fade-in{0%{opacity:0}}@keyframes dialog-in{0%{opacity:0;transform:translateY(8px)}}@media (max-width:1100px){.course-workspace{grid-template-columns:220px minmax(0,1fr)}.topbar-user>span{display:none}.messages-grid{grid-template-columns:1fr}}@media (max-width:900px){.main-nav{z-index:50;width:260px}.nav-scrim{z-index:45;background:var(--color-overlay);border:0;width:100%;display:block;position:fixed;top:64px;bottom:0;left:0;right:0}.app-main,.app-shell--nav-open .app-main{padding-left:0}.page{padding:var(--space-6)}.course-workspace{display:block}.module-sidebar{border-right:0;border-bottom:1px solid var(--color-border);overflow-x:auto}.module-list{min-width:max-content;display:flex}.module-item{width:220px}}@media (max-width:700px){.topbar{gap:var(--space-3);padding:0 var(--space-3)}.topbar-brand>div:last-child,.environment-badge{display:none}.page{padding:var(--space-5) var(--space-3)}.page-heading,.section-heading,.toolbar{flex-direction:column;align-items:stretch}.toolbar .button{align-self:flex-start}.course-panel{padding:var(--space-4)}.messages-toolbar{flex-direction:column;align-items:stretch}.messages-toolbar .button,.messages-footer .button{width:100%}.message-card-heading{display:grid}.message-card-heading code{justify-self:start}.section-heading .button{width:100%}.table-card{background:var(--color-transparent);border:0;overflow:visible}table,thead,tbody,tr,th,td{display:block}thead{display:none}tbody{gap:var(--space-3);display:grid}tbody tr{padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface)}td,.steps-table td:first-child,.steps-table td:last-child{width:auto;height:auto;min-height:40px;padding:var(--space-2);border:0;grid-template-columns:112px minmax(0,1fr);align-items:center;display:grid}td:before{color:var(--color-text-muted);content:attr(data-label);letter-spacing:.04em;text-transform:uppercase;font-size:10px;font-weight:700}.actions-cell{justify-content:flex-end;display:flex}.actions-cell:before{content:none}.line-clamp{max-width:none}.dialog-backdrop{padding:var(--space-2)}.dialog{height:calc(100vh - 16px);height:calc(100dvh - 16px);max-height:calc(100vh - 16px);border-radius:var(--radius-md);max-height:calc(100dvh - 16px)}.dialog-header,.dialog-body,.dialog-footer{padding:var(--space-4)}fieldset{grid-template-columns:1fr}.option-row{grid-template-columns:30px minmax(0,1fr) 42px}.compact-check{grid-column:2/-1}.media-item{grid-template-columns:32px minmax(0,1fr)}.media-actions{grid-column:2;justify-content:flex-end}.login-card{padding:var(--space-6)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
