:root{color-scheme:light;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#17352f;background:#f5f7f3;font-size:16px;line-height:1.6}
*{box-sizing:border-box}body{margin:0}header{max-width:72rem;margin:auto;display:flex;gap:1rem;align-items:center;padding:1.4rem 1.5rem;border-bottom:1px solid #d4ded5}header #logout{margin-left:auto}.brand{font-weight:750;font-size:1.35rem;color:inherit;text-decoration:none}.label,.eyebrow{font-weight:650;color:#41604d}.label{background:#e4eee0;border-radius:1rem;padding:.15rem .7rem;font-size:.8rem}.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.8rem}main{max-width:66rem;padding:2rem 1.5rem;margin:auto;min-height:70vh}section{background:#fff;border:1px solid #d4ded5;border-radius:1rem;padding:clamp(1.25rem,4vw,2.8rem);margin-bottom:1.5rem}.hero{margin-top:3vh;padding-block:clamp(2rem,7vw,5rem);background:linear-gradient(130deg,#fff,#eef4e9)}h1{font-size:clamp(2.1rem,5vw,3.7rem);line-height:1.12;letter-spacing:-.04em;max-width:48rem;margin:.7rem 0 1.5rem}h2{font-size:1.65rem;line-height:1.3;margin-top:0}h3{font-size:1.15rem}p{max-width:46rem}.muted,small{color:#50655b}.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin:1.4rem 0}button{font:inherit;font-weight:650;padding:.65rem 1.1rem;min-height:44px;border-radius:.5rem;border:1px solid #1b5949;color:#fff;background:#1b5949;cursor:pointer}button.secondary{background:#fff;color:#1b5949}button.link{background:transparent;color:#245b4d;border:0;text-decoration:underline;padding-left:0}button:disabled{opacity:.55;cursor:wait}input,select,textarea{font:inherit;display:block;width:100%;border:1px solid #6e8176;border-radius:.4rem;padding:.7rem;margin-top:.35rem;background:white;color:#17352f}input[type=radio]{width:auto;display:inline;margin-right:.4rem}label{font-weight:600;display:block;margin:1rem 0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1rem}form{max-width:40rem}fieldset{border:1px solid #bccabd;border-radius:.4rem;margin:1rem 0;padding:.8rem 1.2rem}fieldset label{font-weight:500}legend{font-weight:650}.help{font-size:.9rem;margin:.35rem 0 1rem}#notice:not(:empty){padding:1rem 1.2rem;border:1px solid #9bb59f;background:#e8f1e4;border-radius:.5rem;margin-bottom:1.5rem}#notice.error{border-color:#b94848;background:#fff0ed;color:#842828}.status{padding:.8rem 1rem;border-left:4px solid #567c55;background:#edf3e9}.account-card{padding:1rem 0;border-bottom:1px solid #d4ded5;overflow-wrap:anywhere}.account-card p{margin:.25rem 0}.account-card .actions{margin:.8rem 0}.account-card select{max-width:20rem}code{display:block;padding:1rem;background:#edf3e9;overflow-wrap:anywhere;user-select:all}footer{max-width:72rem;margin:auto;padding:2rem 1.5rem;color:#50655b;font-size:.85rem}.skip{position:absolute;left:1rem;top:-8rem;background:white;padding:1rem;z-index:1}.skip:focus{top:.5rem}:focus-visible{outline:3px solid #bb6a16;outline-offset:4px}[hidden]{display:none!important}@media(max-width:600px){.form-grid{grid-template-columns:1fr}header{flex-wrap:wrap;padding:1rem}.hero{margin-top:0}main{padding:1rem}h1 br{display:none}.actions button{flex-grow:1}header #logout{margin-left:0}}

/* Student workspace: Bootstrap layout with existing application colors. */
.student-nav{gap:.5rem}.student-nav button[aria-current=page]{background:#1b5949;color:white}#student h1{font-size:clamp(2rem,5vw,3rem)}.activity-filters{max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem 1rem;margin:1rem 0 2rem}.activity-filters label{margin:.3rem 0}.activity-filters button{align-self:end}.card{border-color:#d4ded5;border-radius:.7rem;overflow-wrap:anywhere}.activity-copy{white-space:pre-wrap;overflow-wrap:anywhere}.activity-player{max-width:55rem;margin:1.2rem 0;background:#edf3e9;overflow:hidden;border-radius:.6rem}.activity-player iframe{border:0}.progress-unavailable{width:0}.activity-grid h4{font-size:1.2rem}input[type=checkbox]{width:auto;display:inline-block;margin-right:.5rem}#student dl{overflow-wrap:anywhere}@media(max-width:600px){.activity-filters{grid-template-columns:1fr}.student-nav button{flex:1 1 45%}}

.lab-session-panel{border:1px solid #9bb59f;border-radius:.6rem;padding:1rem;margin:1rem 0}.lab-session-panel button{margin-right:.5rem}.lab-session-panel .status{margin-top:1rem}

.student-name{background:none;border:0;color:var(--bs-link-color,#174e42);text-decoration:underline;text-align:left;padding:.25rem;font-weight:600;}
.student-name:hover{background:#edf3ee;color:#143d32;}

.instructor-roster-group{margin-top:1.5rem;padding:1.2rem 0;border-top:2px solid #b9cbbb}.inactive-roster{background:#f5f7f3;padding:1.2rem;border-radius:.5rem;}

.course-actions{align-items:center}.course-action-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.65rem 1.1rem;border:1px solid #1b5949;border-radius:.5rem;color:#1b5949;background:#fff;font:inherit;font-weight:650;text-decoration:none}.course-action-link:hover{color:#1b5949;background:#edf3e9}@media(max-width:600px){.course-actions>*{flex:1 1 100%;width:100%;text-align:center}}

.admin-navigation {padding-block:1rem;border-bottom:1px solid #d6dfdc;margin-bottom:1.5rem;gap:.6rem;flex-wrap:wrap;}
.admin-navigation [aria-current="true"] {background:#173d35;color:white;}
.admin-record {white-space:pre-wrap;overflow-wrap:anywhere;max-width:100%;font-size:.9rem;}
#admin-workspace form {margin-block:1rem;}

/* Student learning workspace. Presentation only; session state stays in lab-session. */
body:has(#student:not([hidden])){background:#f8faf8;color:#273831}
body:has(#student:not([hidden]))>header{max-width:100%;padding:1.15rem 2rem;background:#fff}
body:has(#student:not([hidden]))>header #logout{background:white;color:#315c4d}
main:has(#student:not([hidden])){position:relative;max-width:1600px;padding:2rem 2rem 2rem 18rem;min-height:85vh}
#student{padding:0;border:0;background:transparent;border-radius:0}
.student-sidebar{position:absolute;left:2rem;top:2rem;bottom:2rem;width:14rem;background:#fff;border:1px solid #d9e4dc;border-radius:1rem}
.student-sidebar-inner{position:sticky;top:1rem;padding:1.4rem .8rem}
.student-sidebar .eyebrow{padding:0 .7rem;margin-bottom:1.5rem;font-size:.72rem}
.student-nav{display:flex;flex-direction:column;gap:.35rem}
.student-nav button{border:0;background:transparent;color:#52665b;text-align:left;border-radius:.6rem;padding:.85rem .8rem;font-size:.9rem;line-height:1.4;min-height:48px}
.student-nav button:hover{background:#f1f6f2}
.student-nav button[aria-current=page]{background:#e8f1eb;color:#285848;box-shadow:inset 4px 0 #315e4f}
.student-nav button:nth-child(6){margin-top:1rem;border-top:1px solid #dfE7e1;border-radius:0;padding-top:1.3rem}
.sidebar-session-status{margin:1.5rem .7rem 0;border-top:1px solid #dfe7e1;padding-top:1.3rem;font-size:.8rem;color:#617267}
.sidebar-session-status[data-active=true]::before{content:'';display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:#468b65;margin-right:.5rem}
.workspace-banner{display:flex;justify-content:space-between;gap:1.5rem;align-items:center;background:#eaf3ed;border:1px solid #cbded1;border-radius:1rem;padding:1.7rem 2rem}
#student h1{font-size:clamp(1.8rem,3vw,2.6rem);margin:.5rem 0 .7rem;letter-spacing:-.035em}
.workspace-banner p{margin-bottom:0;color:#5c7364}.workspace-banner .eyebrow{color:#315e4f;font-size:.75rem}
.workspace-course{margin:0;background:white;border:1px solid #ccddd1;border-radius:.7rem;padding:.9rem 1rem;flex:0 1 24rem;min-width:0;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#5b7565}
.workspace-course select{font-size:.88rem;text-transform:none;letter-spacing:0;font-weight:600;color:#2d5947;border:0;background-color:#fff;padding-left:0;margin-top:.25rem;max-width:100%}
#student-course-notice{font-size:.8rem;background:transparent;border:0;padding:.2rem .25rem;margin:0 0 1.1rem;color:#607568;max-width:none}
.lab-session-panel{display:grid;grid-template-columns:1fr 1fr auto;align-items:center;gap:1.5rem;background:white;border:1px solid #d5e3d9;border-radius:.85rem;padding:1.3rem 1.7rem;margin:1rem 0 .6rem}
.lab-session-panel>div:nth-child(2){border-left:1px solid #d6e2d9;padding-left:1.5rem}
.timer-label{font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:#5c7e67;margin:0 0 .15rem}
.workspace-clock{font-size:clamp(1.4rem,2.6vw,2rem);line-height:1.2;letter-spacing:-.025em;font-variant-numeric:tabular-nums;color:#2e5a42;display:block}
.lab-session-panel [role=status]{font-size:.75rem;margin:.25rem 0 0;color:#6a7e6e;max-width:24rem}
.session-controls{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.session-controls button{font-size:.8rem;background:#fff;color:#315e4f;margin:0}
.lab-session-panel>[role=alert]{grid-column:1/-1;margin:0!important}
.student-view{background:white;border:1px solid #d9e4dc;border-radius:1rem;padding:clamp(1.1rem,2.5vw,2rem);min-width:0}
.student-view .view-heading{font-size:clamp(1.5rem,2.4vw,2rem);letter-spacing:-.025em;margin:.8rem 0 1.3rem;line-height:1.25}
.student-view>.secondary:first-child{font-size:.8rem;padding:.3rem 0;border:0;text-decoration:underline;min-height:44px}
.course-summary .card{background:#f5f9f5;border-color:#e0e9e0}.course-summary .card h3{color:#607666;font-size:.75rem}.course-summary .card p{font-size:1.05rem;font-weight:650}
#student .progress{height:.5rem;background:#e7eee7}#student .progress-bar{background:#3e7657}
.activity-filters{background:#f6f9f6;border:1px solid #e1e9e1;border-radius:.7rem;padding:1rem;grid-template-columns:repeat(3,minmax(0,1fr));font-size:.8rem;gap:.7rem 1rem}
.activity-filters input,.activity-filters select{font-size:.85rem}.activity-grid .card{border-color:#dce6dd}.activity-grid .card-body{padding:1.4rem}.activity-grid h4{color:#2f5642}
.activity-meta{display:flex;flex-wrap:wrap;gap:.6rem;margin-bottom:1rem}.activity-meta span{padding:.3rem .7rem;border:1px solid #dce6df;border-radius:.4rem;color:#5d7464;font-size:.8rem}.activity-meta span:last-child{background:#eaf3ed;border-radius:2rem;color:#326346}
.activity-workspace{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(15rem,1fr);gap:1.5rem;margin:1.5rem 0}
.activity-media{min-width:0}.activity-player{max-width:none;margin:0;background:#173d30;border-radius:.7rem}.activity-media>a{font-size:.8rem;color:#315e4f}.activity-media .help{font-size:.8rem}
.learning-objective{background:#f5faf6;border:1px solid #d5e5d9;border-radius:.8rem;padding:1.5rem;min-width:0}.learning-objective h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.09em;color:#315e4f;margin-bottom:1.2rem}.learning-objective p{font-size:.95rem;line-height:1.8;margin:0}
.activity-text-panel{padding:1.5rem;border:1px solid #dbe6de;border-radius:.8rem;margin:1.25rem 0;background:#fcfefc}.activity-text-panel h3{font-size:1.15rem;color:#315e4f}.activity-text-panel p{max-width:none;margin-bottom:0;line-height:1.8}
.student-view .table-responsive{border:1px solid #dde6de;border-radius:.7rem}.student-view table{margin:0;font-size:.9rem}.student-view caption{padding:.8rem}.student-view th,.student-view td{padding:1rem}.student-view thead th{background:#eff5f0;color:#41634e}
main:has(#student:not([hidden]))>section:not(#student){border-color:#d9e4dc}
@media(min-width:1400px){.activity-grid>div{width:33.333333%}}
@media(max-width:1100px){main:has(#student:not([hidden])){padding-left:15rem;padding-right:1.2rem}.student-sidebar{left:1.2rem;width:12.5rem}.workspace-banner{padding:1.5rem;flex-wrap:wrap}.workspace-course{flex-basis:100%}.activity-workspace{grid-template-columns:1fr}.lab-session-panel{gap:1rem;padding:1.2rem}.session-controls{grid-column:1/-1;justify-content:flex-start}.activity-filters{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){body:has(#student:not([hidden]))>header{padding:1rem}main:has(#student:not([hidden])){padding:1rem}.student-sidebar{position:static;width:100%;margin-bottom:1rem;border-radius:.8rem}.student-sidebar-inner{position:static;padding:.8rem}.student-sidebar .eyebrow{margin:0 0 .7rem}.student-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.25rem}.student-nav button{font-size:.8rem;min-width:0}.student-nav button:nth-child(6){margin:0;border:0;border-radius:.6rem;padding:.85rem .8rem}.sidebar-session-status{margin:.7rem .7rem 0;padding-top:.7rem}.workspace-banner{padding:1.3rem}.lab-session-panel{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1rem}.lab-session-panel>div:nth-child(2){padding-left:1rem}.workspace-clock{font-size:1.45rem}.timer-label{font-size:.62rem;letter-spacing:.04em}.student-view{padding:1rem}.activity-filters{grid-template-columns:1fr}.learning-objective,.activity-text-panel{padding:1.1rem}.activity-workspace{gap:1rem}.session-controls{width:100%}.session-controls button{flex:1}#student h1{font-size:1.9rem}}

.activity-heading{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:1rem;margin:.5rem 0}.activity-heading .view-heading{margin:.5rem 0 1rem}.activity-heading .activity-meta{grid-column:1;margin-bottom:.5rem}.activity-heading .actions{grid-column:2;grid-row:1/3;margin:.5rem 0}.activity-heading+.help{font-size:.78rem;color:#63766a;max-width:none}.activity-text-panel+a{color:#315e4f;font-weight:600;font-size:.9rem}
@media(min-width:701px){.lab-session-panel{position:sticky;top:.6rem;z-index:5;box-shadow:0 3px 12px #17352f08}}
@media(max-width:700px){.activity-heading{grid-template-columns:1fr}.activity-heading .actions{grid-column:1;grid-row:auto}.activity-heading .actions button{width:100%}}

.activity-workspace:not(:has(.learning-objective:not([hidden]))){grid-template-columns:1fr}.student-view .view-heading{scroll-margin-top:11rem}.completed-card{border:1px solid #dce6df;border-radius:.7rem;padding:1.2rem;margin:1rem 0;background:#f9fcf9}.completed-card h3{color:#315e4f}.history-day{display:flex;justify-content:space-between;gap:1rem;padding:1.1rem 1.3rem;border:1px solid #dde7df;border-radius:.6rem;margin:.7rem 0;max-width:40rem;background:#f8fbf8}.history-day strong{font-variant-numeric:tabular-nums;color:#315e4f}@media(max-width:700px){.student-view .view-heading{scroll-margin-top:1rem}}

.student-menu-toggle{display:none}.current-course-detail{font-size:.75rem;text-transform:none;letter-spacing:0;font-weight:400;overflow-wrap:anywhere;margin:.2rem 0 0!important}
@media(max-width:700px){.student-menu-toggle{display:block;width:100%;text-align:left;background:white;color:#315e4f;border-color:#d4e1d7}.student-menu-toggle::after{content:' +';float:right}.student-menu-toggle[aria-expanded=true]::after{content:' −'}.student-sidebar .eyebrow{display:none}.student-sidebar .student-nav{display:none;margin-top:.6rem}.student-sidebar[data-expanded=true] .student-nav{display:grid}.sidebar-session-status{font-size:.75rem}.workspace-banner>div>p:last-child{display:none}.workspace-banner{gap:.7rem;padding:1rem}#student h1{font-size:1.6rem;margin:.3rem 0}.workspace-course{padding:.7rem 1rem}.lab-session-panel{padding:1rem}.student-sidebar{margin-bottom:.8rem}}

/* External worksheet remains a link, presented as the primary resource action. */
#student .worksheet-action{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:.85rem 1.3rem;margin:1.25rem 0 .25rem;border:1px solid #1b5949;border-radius:.55rem;background:#1b5949;color:#fff;font-size:1rem;font-weight:700;line-height:1.5;text-align:center;text-decoration:none;box-shadow:0 2px 4px #17352f14}
#student .worksheet-action:hover{background:#124334;border-color:#124334;color:#fff}#student .worksheet-action:active{background:#103b2e}@media(max-width:700px){#student .worksheet-action{display:flex;width:100%}}

/* In-progress rows become labeled cards on phones; all controls stay in view. */
@media(max-width:700px){
 #student .in-progress-list{border:0;overflow:visible}
 #student .in-progress-table{display:block;width:100%;table-layout:fixed}
 #student .in-progress-table caption{display:block;padding:.5rem 0;font-size:.8rem}
 #student .in-progress-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
 #student .in-progress-table tbody{display:block}
 #student .in-progress-table tbody tr{display:block;min-width:0;border:1px solid #dce6df;border-radius:.7rem;padding:1rem;margin:.75rem 0;background:#f8fbf8}
 #student .in-progress-table tbody th{display:block;width:auto;padding:0 0 .8rem;background:transparent;border:0;font-size:1rem;overflow-wrap:anywhere;color:#315e4f}
 #student .in-progress-table td{display:flex;justify-content:space-between;align-items:baseline;gap:.6rem;min-width:0;padding:.65rem 0;background:transparent;border:0;border-top:1px solid #e1e9e3;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
 #student .in-progress-table td[data-label]::before{content:attr(data-label);font-weight:600;color:#526b5a}
 #student .in-progress-table .in-progress-action{display:block;padding:.9rem 0 0;margin-top:.2rem}
 #student .in-progress-action button{display:block;width:100%;min-height:48px}
}

.student-consent-dialog{width:min(46rem,calc(100vw - 2rem));max-height:calc(100dvh - 2rem);padding:1.5rem;border:2px solid #315e4f;border-radius:.8rem;color:#24372d;overflow:auto}
.student-consent-dialog::backdrop{background:rgba(15,35,24,.65)}
.student-consent-dialog h2{font-size:1.4rem}
.student-consent-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6}
.student-consent-dialog .actions{position:sticky;bottom:-1.5rem;background:white;padding:1rem 0;margin-bottom:0}
.student-consent-record{margin:1rem 0;padding:1rem;border:1px solid #cad9ce;border-radius:.5rem}
@media(max-width:600px){.student-consent-dialog{padding:1rem}.student-consent-dialog .actions{bottom:-1rem;display:flex}.student-consent-dialog .actions button{flex:1;min-height:44px}}

.completed-title{display:flex;align-items:center;gap:1rem;margin-bottom:.75rem}.completed-title h3{margin:0;min-width:0;overflow-wrap:anywhere}.completed-check{display:flex;align-items:center;justify-content:center;flex:0 0 3rem;width:3rem;height:3rem;border-radius:50%;background:#dcefe0;color:#22623e;font-size:2.5rem;font-weight:800;line-height:1}

.canvas-match-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr));gap:1rem}.canvas-match-card{border:1px solid #d4ded5;border-radius:.6rem;padding:1rem;overflow-wrap:anywhere}.canvas-match-card dt{font-size:.85rem;color:#50655b}.canvas-match-card dd{margin:0 0 .75rem}

.status.sync-error{color:#842828;background:#fff0ed;border-left-color:#b94848}
