:root{color:#102a43;font-synthesis:none;--ink:#102a43;--ink-soft:#52667a;--paper:#f6f4ee;--surface:#fffdf8;--line:#d8ded9;--accent:#d85b36;--accent-dark:#a83e22;--teal:#177e78;--shadow:0 20px 50px #102a431a;background:#f6f4ee;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}a{color:inherit}button,input{font:inherit}h1,h2,p{margin-top:0}h1{letter-spacing:-.045em;max-width:14ch;font-family:Georgia,Times New Roman,serif;font-size:clamp(2.6rem,7vw,5.8rem);line-height:.98}h2{font-family:Georgia,Times New Roman,serif;font-size:1.55rem}.brand-link{text-decoration:none}.brand-mark{letter-spacing:-.02em;align-items:center;gap:.7rem;font-weight:800;display:inline-flex}.brand-mark__image{object-fit:cover;border-radius:.6rem;width:2rem;height:2rem}.landing{background:radial-gradient(circle at 80% 10%, #177e7829, transparent 28%), var(--paper);min-height:100vh;padding:clamp(1.25rem,4vw,3rem)}.landing-nav,.app-header,.app-footer{justify-content:space-between;align-items:center;gap:1.25rem;display:flex}.hero{max-width:1050px;padding:clamp(5rem,12vw,10rem) 0 clamp(4rem,8vw,7rem)}.hero__copy{max-width:590px;color:var(--ink-soft);font-size:clamp(1.1rem,2vw,1.35rem);line-height:1.65}.hero__actions{flex-wrap:wrap;align-items:center;gap:1.2rem;margin-top:2rem;display:flex}.eyebrow{color:var(--teal);letter-spacing:.16em;text-transform:uppercase;margin-bottom:1rem;font-size:.75rem;font-weight:800}.button{cursor:pointer;border:0;border-radius:999px;justify-content:center;padding:.8rem 1.2rem;font-weight:750;text-decoration:none;display:inline-flex}.button:disabled{cursor:wait;opacity:.65}.button--primary{color:#fff;background:var(--accent);box-shadow:0 8px 20px #d85b3638}.button--primary:hover{background:var(--accent-dark)}.button--quiet{color:var(--ink);border:1px solid var(--line);background:0 0}.text-link{color:var(--accent-dark);font-weight:700}.feature-grid,.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.feature-grid article,.status-panel{border:1px solid var(--line);background:#fffdf8cc;border-radius:1.1rem;padding:1.5rem}.feature-grid article>span{color:var(--accent);font-weight:800}.feature-grid p,.muted{color:var(--ink-soft);line-height:1.6}.auth-page,.center-page{background:linear-gradient(145deg, #e7efeb, var(--paper));place-items:center;min-height:100vh;padding:1.25rem;display:grid}.auth-card{border:1px solid var(--line);background:var(--surface);width:min(100%,440px);box-shadow:var(--shadow);border-radius:1.4rem;gap:2rem;padding:clamp(1.5rem,5vw,3rem);display:grid}.auth-card h1,.center-page h1{font-size:clamp(2.4rem,6vw,4rem)}.auth-card form{gap:.8rem;display:grid}.auth-card label{font-weight:750}.auth-card input{border:1px solid var(--line);background:#fff;border-radius:.7rem;width:100%;padding:.9rem 1rem}.auth-card input:focus{border-color:var(--teal);outline:3px solid #177e7833}.form-error{color:#9d2e1e}.fine-print{color:var(--ink-soft);margin:0;font-size:.8rem;line-height:1.5}.center-page{align-content:center;justify-items:start;max-width:none;padding-inline:max(1.5rem,50vw - 450px)}.app-frame{grid-template-rows:auto 1fr auto;min-height:100vh;display:grid}.app-header,.app-footer{border-bottom:1px solid var(--line);background:var(--surface);padding:1rem clamp(1rem,4vw,3rem)}.app-header nav{gap:1rem;margin-left:auto;display:flex}.app-header nav a{color:var(--ink-soft);font-weight:700;text-decoration:none}.app-header nav a.active{color:var(--ink)}.app-main{width:min(1180px,100%);margin:0 auto;padding:clamp(2rem,6vw,5rem) clamp(1rem,4vw,3rem)}.app-footer{border-top:1px solid var(--line);color:var(--ink-soft);border-bottom:0;font-size:.85rem}.page-stack{gap:2rem;display:grid}.page-heading h1{font-size:clamp(2.6rem,6vw,4.8rem)}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.status-panel{min-height:230px}.status-panel code{overflow-wrap:anywhere}.recommendation-list{gap:.65rem;padding:0;list-style:none;display:grid}.recommendation-link{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:.75rem;justify-content:space-between;gap:1rem;padding:.85rem 1rem;font-weight:750;text-decoration:none;display:flex}.recommendation-link:hover,.recommendation-link:focus-visible{border-color:var(--teal);outline:3px solid #177e7826}.recommendation-link small{color:var(--ink-soft);text-transform:capitalize;font-weight:600}.assignment-panel{border-left:4px solid var(--teal)}.assignment-actions{flex-wrap:wrap;gap:.6rem;margin-top:1rem;display:flex}.assignment-note{margin-bottom:0}.assignment-options{border:0;gap:.6rem;margin:1rem 0 0;padding:0;display:grid}.assignment-option{border:1px solid var(--line);cursor:pointer;border-radius:.8rem;align-items:center;gap:.7rem;padding:.8rem 1rem;transition:border-color .15s,background-color .15s;display:flex}.assignment-option:hover{border-color:var(--teal)}.assignment-option.is-selected{border-color:var(--teal);background:color-mix(in srgb, var(--teal) 8%, transparent)}.assignment-option input[type=radio]{accent-color:var(--teal);width:1rem;height:1rem}.assignment-option-label{color:var(--ink);font-size:.95rem}.instructor-roster-panel{border-left:4px solid var(--teal)}.roster-courses{gap:1.25rem;display:grid}.roster-course{border:1px solid var(--line);background:#fff;border-radius:.85rem;gap:.6rem;padding:1rem;display:grid}.roster-course-title{color:var(--teal);letter-spacing:.02em;margin:0;font-size:1.05rem}.roster-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.roster-learner{border:1px solid var(--line);background:#fdfdf9;border-radius:.6rem;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.4rem 1rem;padding:.6rem .75rem;transition:border-color .15s,background-color .15s;display:flex}.roster-learner:hover{border-color:var(--teal);background:#fff}.roster-learner-name{color:var(--ink);font-weight:750}.roster-learner-section,.roster-learner-role{color:var(--ink-soft);font-size:.9rem}.roster-learner-role{text-transform:capitalize}.assignment-detail{border:1px solid var(--line);background:var(--surface);border-radius:1.2rem;gap:1rem;max-width:760px;padding:clamp(1.5rem,4vw,2.5rem);display:grid}.assignment-detail ul{color:var(--ink-soft);padding-left:1.2rem;line-height:1.7}.skeleton{background:linear-gradient(90deg,#e7ebe8 25%,#f5f6f4 50%,#e7ebe8 75%) 0 0/200% 100%;border-radius:.75rem;width:100%;height:4.5rem}.lesson-player{gap:clamp(2rem,6vw,4rem);display:grid}.lesson-header,.lesson-content{width:min(100%,760px)}.lesson-stage{grid-template-columns:minmax(0,1fr) minmax(320px,400px);align-items:start;gap:1.5rem;display:grid}.lesson-stage__main,.lesson-stage__assistant{min-width:0}.media-player{gap:1rem;display:grid}.media-stage{box-shadow:var(--shadow);background:#10131c;border-radius:1.1rem;position:relative;overflow:hidden}.media-video{aspect-ratio:16/9;background:#10131c;width:100%;display:block}.media-skeleton{aspect-ratio:16/9;background:linear-gradient(90deg,#e7ebe8 25%,#f5f6f4 50%,#e7ebe8 75%) 0 0/200% 100%;border-radius:1rem;width:100%;animation:1.2s linear infinite shimmer}.media-error{color:#9d2e1e;background:#9d2e1e14;border-radius:.75rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin:0;padding:.75rem 1rem;font-weight:700;display:flex}.media-controls{flex-wrap:wrap;gap:1rem;display:flex}.media-control{gap:.3rem;display:grid}.media-control label{color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;font-size:.75rem;font-weight:800}.media-control select{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:.7rem;padding:.55rem .8rem}.media-control select:focus-visible,.transcript-item:focus-visible{border-color:var(--teal);outline:3px solid #177e7833}.media-transcript{border:1px solid var(--line);background:var(--surface);border-radius:1rem}.media-transcript summary{cursor:pointer;padding:1rem 1.25rem;font-weight:800}.transcript-list{gap:.3rem;max-height:18rem;margin:0;padding:0 1.25rem 1.25rem;list-style:none;display:grid;overflow-y:auto}.transcript-item{width:100%;color:var(--ink);text-align:left;cursor:pointer;font:inherit;background:0 0;border:0;border-radius:.6rem;gap:.8rem;padding:.5rem .6rem;display:flex}.transcript-item:hover{background:#177e7812}.transcript-item.is-active{background:#177e781f}.transcript-time{color:var(--teal);font-variant-numeric:tabular-nums;flex:none;font-weight:800}.assistant-panel{border:1px solid var(--line);background:var(--surface);border-radius:1.1rem;gap:1rem;padding:1.5rem;display:grid;box-shadow:0 10px 30px #102a430f}.assistant-panel h2{margin-bottom:0;font-size:1.3rem}.assistant-concepts{border:0;gap:.5rem;margin:0;padding:0;display:grid}.assistant-actions{flex-wrap:wrap;gap:.6rem;display:flex}.assistant-panel--chat{min-height:24rem}.assistant-messages{align-content:start;gap:.6rem;display:grid}.assistant-message{border-radius:.9rem;max-width:92%;padding:.7rem .9rem;line-height:1.55}.assistant-message p{white-space:pre-wrap;margin:0}.assistant-image-badge{letter-spacing:.02em;color:var(--ink-soft);background:color-mix(in srgb, var(--teal) 8%, transparent);border:1px solid var(--line);vertical-align:middle;border-radius:999px;margin-top:.35rem;padding:.1rem .5rem;font-size:.72rem;display:inline-block}.assistant-message--student{background:color-mix(in srgb, var(--teal) 12%, transparent);border-bottom-right-radius:.3rem;justify-self:end}.assistant-message--tutor{background:#eef1ee;border-bottom-left-radius:.3rem;justify-self:start}.assistant-composer{align-items:end;gap:.6rem;display:grid}.assistant-composer .answer-input{resize:vertical}.assistant-composer-row{justify-content:space-between;align-items:center;gap:.6rem;display:flex}.assistant-image-picker{align-items:center;display:inline-flex}.assistant-image-picker input[type=file]{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.assistant-image-picker>span:last-child{cursor:pointer;color:var(--teal);border:1px dashed color-mix(in srgb, var(--teal) 55%, transparent);border-radius:.6rem;padding:.45rem .7rem;font-size:.85rem;transition:background .15s,border-color .15s}.assistant-image-picker input[type=file]:focus-visible+span:last-child{outline-offset:2px;outline:3px solid #177e7833}.assistant-image-picker input[type=file]:disabled+span:last-child{opacity:.55;cursor:not-allowed}.assistant-image-picker>span:last-child:hover{background:color-mix(in srgb, var(--teal) 8%, transparent);border-color:var(--teal)}.assistant-image-preview{align-self:start;display:inline-flex;position:relative}.assistant-image-preview img{object-fit:cover;border:1px solid var(--line);border-radius:.7rem;width:7rem;height:5rem}.assistant-image-remove{border:1px solid var(--line);background:var(--surface);width:1.4rem;height:1.4rem;color:var(--ink);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;line-height:1;display:inline-flex;position:absolute;top:-.4rem;right:-.4rem;box-shadow:0 1px 4px #102a432e}.assistant-image-remove:hover{background:color-mix(in srgb, #9d2e1e 10%, var(--surface));border-color:#9d2e1e}@media (width<=960px){.lesson-stage{grid-template-columns:1fr}.lesson-stage__assistant{order:2}}.lesson-header h1{margin-block:1.5rem 1rem}.lesson-summary{color:var(--ink-soft);font-size:1.15rem;line-height:1.7}.lesson-meta{flex-wrap:wrap;gap:2rem;margin:1.5rem 0 0;display:flex}.lesson-meta div{gap:.2rem;display:grid}.lesson-meta dt{color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;font-size:.75rem;font-weight:800}.lesson-meta dd{text-transform:capitalize;margin:0;font-weight:750}.lesson-content{gap:1.25rem;display:grid}.content-block{border:1px solid var(--line);background:var(--surface);border-radius:1rem;padding:clamp(1.25rem,4vw,2rem)}.content-block h2{text-transform:capitalize}.content-block p{white-space:pre-wrap;margin-bottom:0;line-height:1.8}.content-block pre{background:var(--ink);color:#fff;border-radius:.75rem;padding:1rem;overflow-x:auto}.lesson-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.lesson-actions section{border:1px solid var(--line);background:var(--surface);border-radius:1rem;padding:1.5rem}.lesson-actions ul{flex-wrap:wrap;gap:.6rem;padding:0;list-style:none;display:flex}.lesson-skeleton{background:linear-gradient(90deg,#e7ebe8 25%,#f5f6f4 50%,#e7ebe8 75%) 0 0/200% 100%;border-radius:1rem;width:min(100%,760px);height:28rem}@keyframes shimmer{to{background-position-x:-200%}}@media (width<=720px){.feature-grid,.dashboard-grid,.lesson-actions{grid-template-columns:1fr}.landing-nav .button,.app-header nav{display:none}.app-footer{flex-direction:column;align-items:flex-start}}@media (prefers-reduced-motion:no-preference){.hero,.feature-grid{animation:.55s ease-out both rise}.skeleton,.lesson-skeleton{animation:1.2s linear infinite shimmer}.feature-grid{animation-delay:.12s}@keyframes rise{0%{opacity:0;transform:translateY(14px)}}}.assessment-player{gap:clamp(2rem,6vw,4rem);display:grid}.assessment-header{width:min(100%,760px)}.assessment-header h1{margin-block:1.5rem 1rem}.assessment-skeleton{background:linear-gradient(90deg,#e7ebe8 25%,#f5f6f4 50%,#e7ebe8 75%) 0 0/200% 100%;border-radius:1rem;width:min(100%,760px);height:28rem;animation:1.2s linear infinite shimmer}.assessment-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.question-list{gap:1.5rem;padding:0;list-style:none;display:grid}.question-item{border:1px solid var(--line);background:var(--surface);border-radius:1rem;padding:1.5rem}.question-position{color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;margin:0 0 .5rem;font-size:.75rem;font-weight:800}.question-text{margin:0 0 1rem;font-weight:750}.question-options{border:0;gap:.5rem;margin:0;padding:0;display:grid}.question-option{border:1px solid var(--line);cursor:pointer;border-radius:.75rem;align-items:flex-start;gap:.6rem;padding:.75rem;display:flex}.question-option.is-selected{border-color:var(--teal);background:#2d70690f}.question-option input{accent-color:var(--teal);margin-top:.2rem}.answer-input,.code-input{border:1px solid var(--line);background:var(--surface);width:100%;color:var(--ink);resize:vertical;border-radius:.75rem;padding:.8rem}.code-input{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.85rem}.result-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:0 0 1rem;display:grid}.result-list div{gap:.2rem;display:grid}.result-list dt{color:var(--ink-soft);letter-spacing:.1em;text-transform:uppercase;font-size:.75rem;font-weight:800}.result-list dd{margin:0;font-weight:750}@media (width<=640px){.result-list{grid-template-columns:1fr}}.history-list{gap:.75rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.history-item{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;gap:.4rem;padding:1rem;display:grid}.history-status{letter-spacing:.08em;text-transform:uppercase;border-radius:999px;justify-self:start;padding:.15rem .5rem;font-size:.7rem;font-weight:800}.history-status--started,.history-status--submitted{color:var(--teal);background:#2d70691f}.history-status--expired{color:var(--ink-soft);background:#78787826}.history-status--pending_review{color:#8a5a00;background:#c48d2024}.history-attempt{font-weight:750}.history-meta{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.5rem 1rem;margin:0;display:grid}.history-meta div{gap:.15rem;display:grid}.history-meta dt{color:var(--ink-soft);letter-spacing:.08em;text-transform:uppercase;font-size:.7rem;font-weight:800}.history-meta dd{margin:0}.admin-panel{border-left:4px solid var(--accent)}.admin-sections{gap:2rem;display:grid}.admin-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.admin-row{border:1px solid var(--line);background:#fdfdf9;border-radius:.6rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem 1rem;padding:.6rem .75rem;transition:border-color .15s,background-color .15s;display:flex}.admin-row:hover{border-color:var(--accent);background:#fff}.admin-row-main{color:var(--ink);font-weight:750}.admin-row-sub{color:var(--ink-soft);text-transform:capitalize;font-size:.9rem}.admin-row-actions,.admin-confirm-inline{flex-wrap:wrap;align-items:center;gap:.5rem;display:inline-flex}.admin-confirm{border:1px solid var(--line);background:#fff;border-radius:.85rem;margin-top:1rem;padding:1rem}.admin-locked{border:1px solid var(--line);background:#fdfdf9;border-radius:.85rem;margin-top:.5rem;padding:1rem}.admin-feedback{border:1px solid var(--line);background:#fff;border-radius:.85rem;margin-top:1rem;padding:1rem}.admin-key-field-row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.admin-key-field{border:1px solid var(--line);background:#fdfdf9;border-radius:.6rem;flex:16rem;min-width:0;padding:.6rem .75rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.95rem}
