:root{color-scheme:light;--ink:#172c30;--dark:#15363c;--paper:#f1f5f2;--line:#d3e0d9;--accent:#c3ead6;--section-space:1rem}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.5 system-ui,sans-serif}
header{display:flex;justify-content:space-between;align-items:center;gap:1.5rem;flex-wrap:wrap;padding:1rem max(5vw,1rem);background:var(--dark);color:#fff}
.brand{display:flex;align-items:center;gap:.75rem;font-weight:800;letter-spacing:.07em;text-decoration:none}
.brand small{display:block;font-size:.75rem;font-weight:500;letter-spacing:.02em;color:var(--accent)}
.brand-logos{display:inline-flex;align-items:center;gap:.45rem;flex-shrink:0}
.brand-logos img{display:block;width:2.75rem;height:2.75rem;padding:.2rem;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:.5rem}
header a{color:inherit}
nav,.actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--section-space)}
.portal-menu{min-width:0;margin-inline-start:auto}
.portal-menu nav{justify-content:flex-end}
.portal-account{margin:0 0 .4rem;text-align:end;overflow-wrap:anywhere}
.portal-account small{display:block;font-size:.75rem;color:var(--accent)}
.portal-session{display:flex;align-items:center;gap:var(--section-space)}
nav form{margin:0}
main,footer{width:min(1040px,calc(100% - 2rem));margin:auto}
main{min-height:70vh;padding-block:1rem 2.5rem}
footer{border-top:1px solid var(--line);padding-block:1rem;font-size:.85rem}
.notice,.messages{margin-block:var(--section-space);padding:.65rem 1rem;background:#fff3d5;border-radius:.55rem}
.messages{padding-left:2rem}
.hero,.card{border-radius:1rem;margin-block:var(--section-space);padding:clamp(1.1rem,4vw,2.25rem)}
.hero{background:linear-gradient(135deg,#15363c 0%,#1c5252 100%);color:#fff}
.eyebrow{color:#28634f;font-size:.82rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}
.hero .eyebrow{color:var(--accent)}
h1,h2,h3{line-height:1.15;margin:.3em 0 .5em}
h1{font-size:clamp(2rem,5vw,3.25rem)}
h2{font-size:1.45rem}
.hero p:last-child{margin-bottom:0}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:var(--section-space)}
.grid .card{margin:0}
.card{background:#fff;border:1px solid var(--line)}
.login{max-width:32rem;margin:2rem auto}
.access-request-form{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem}
.access-request-form :is(button,.button){justify-self:start}
.access-request-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}
.access-request-row input{width:100%}
.equipment-checklist{min-width:0;margin:0;padding:.5rem .85rem .8rem;border:1px solid var(--line);border-radius:.55rem}
.equipment-checklist legend{padding-inline:.3rem;font-weight:750}
.equipment-checklist p{margin:0 0 .5rem;font-size:.9rem}
.equipment-options{display:flex;flex-wrap:wrap;gap:.25rem 1.2rem}
.equipment-options label{display:inline-flex;align-items:center;gap:.4rem;margin:0;padding-block:.15rem}
.equipment-options input[type=checkbox]{width:1.05rem;height:1.05rem;margin:0;padding:0;accent-color:var(--dark)}
.login-logos{margin-bottom:1rem}
.login-logos .brand-logos{gap:.75rem}
.login-logos img{width:4.5rem;height:4.5rem;padding:.4rem}
.badge{display:inline-block;padding:.2rem .65rem;border-radius:2rem;background:#e5f3eb;color:#173d32;font-size:.83rem;font-weight:750}
a{color:#205b4c}
button,.button{display:inline-block;border:1px solid var(--dark);border-radius:.5rem;padding:.6rem .9rem;background:var(--dark);color:#fff;font:inherit;font-weight:700;text-decoration:none;cursor:pointer}
button.secondary,.button.secondary{background:#fff;color:var(--dark)}
button.danger,.button.danger{border-color:#8d1c20;background:#8d1c20}
button.link{border:0;padding:0;text-decoration:underline}
:focus-visible{outline:3px solid #ca7429;outline-offset:3px}
label{display:block;margin-bottom:.25rem;font-weight:650}
input:not([type=hidden]),select,textarea{max-width:100%;border:1px solid #77918a;border-radius:.35rem;padding:.5rem;font:inherit;color:var(--ink)}
input[type=file]{padding:.25rem}
.helptext{display:block;font-size:.85rem}
.items{list-style:none;padding:0}
.items>li{padding:.75rem 0;border-top:1px solid var(--line)}
.items form{margin-top:.65rem}
.errorlist{color:#8d1c20}
.document-tabs{gap:.5rem}
.document-tabs a{border:1px solid var(--line);border-radius:.5rem;padding:.4rem .65rem}
.document-tabs a[aria-current=page]{background:#e5f3eb;font-weight:700;text-decoration:none}
.document-name{overflow-wrap:anywhere}

#agenda{grid-column:1/-1}
#agenda textarea{display:block;width:100%;line-height:1.5;resize:vertical}
.lesson-progress{background:#e5f3eb;border-radius:.5rem;padding:.75rem 1rem}
.lesson-progress ul{margin:.35rem 0 0;padding-left:1.25rem}
.meeting-topic{white-space:pre-line;overflow-wrap:anywhere}
.calendar-navigation{justify-content:space-between;gap:.5rem;margin-bottom:1rem}
.calendar-navigation h2{margin:0}
.calendar-scroll{overflow-x:auto}
.attendance-grid{width:100%;border-collapse:collapse}
.attendance-grid th,.attendance-grid td{border:1px solid var(--line);padding:.55rem}
.attendance-grid thead th{background:var(--paper);white-space:nowrap}
.attendance-grid thead tr + tr th{font-size:.75rem}
.attendance-grid th[rowspan],.attendance-grid th[scope=row]{position:sticky;left:0;min-width:8rem;text-align:left;background:var(--paper)}
.attendance-grid td{text-align:center}
.attendance-grid input[type=checkbox]{width:1.2rem;height:1.2rem;accent-color:var(--dark)}
.calendar{width:100%;min-width:38rem;table-layout:fixed;border-collapse:collapse;text-align:left}
.calendar th,.calendar td{border:1px solid var(--line);padding:.45rem;vertical-align:top}
.calendar th,.calendar-empty{background:var(--paper)}
.calendar td{height:4rem;overflow-wrap:anywhere}
.calendar ul{list-style:none;padding:0;margin:.35rem 0 0}
.calendar li+li{margin-top:.4rem}
.calendar li a{display:block;border-radius:.35rem;background:#e5f3eb;padding:.3rem;font-size:.85rem}
.calendar li span{display:block;font-size:.75rem;font-weight:700}

.assignment-report .actions{margin-block:var(--section-space)}
.assignment-report .card{overflow-wrap:anywhere}
.assignment-report .items h3{margin-top:0}
@media print {
  body.assignment-report{background:#fff;color:#000;font-size:11pt}
  .assignment-report main{width:100%;padding:0}
  .assignment-report h1{font-size:18pt}
  .assignment-report .actions{display:none}
  .assignment-report .card{margin:1em 0;padding:0;border:0}
  .assignment-report h2,.assignment-report h3{break-after:avoid}
  .assignment-report .items>li{break-inside:avoid;padding:.35em 0}
}
