:root{font-family:system-ui,sans-serif;color:#202833;background:#f4f5f7;font-size:14px}*{box-sizing:border-box}body{margin:0}aside{width:238px;position:fixed;inset:0 auto 0 0;background:#202b39;color:#f6f8fa;padding:22px 14px;overflow:auto}aside strong{font-size:13px;letter-spacing:.03em}small{display:block;color:#657383;margin-top:5px}aside small{color:#bac3ce}nav{margin-top:22px}nav a{display:block;color:#e1e7ee;padding:9px 10px;text-decoration:none;border-radius:3px}nav a:hover,nav a:focus{background:#36475c}main{margin-left:238px;padding:28px;max-width:1800px}header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d4dae1;padding-bottom:20px;margin-bottom:24px}h1{font-size:24px;font-weight:600;margin:0}h2{font-size:17px;margin:0 0 12px}section{background:#fff;border:1px solid #d4dae1;padding:20px;margin:18px 0;border-radius:4px}.cards{display:flex;flex-wrap:wrap;gap:16px}.cards section{min-width:150px;margin:0}.cards b{display:block;font-size:30px;margin-top:8px}a{color:#255c91}button,.button{border:1px solid #aeb9c6;background:#fff;color:#253342;border-radius:3px;padding:9px 14px;cursor:pointer;font:inherit;text-decoration:none;display:inline-block}.primary{background:#2d5d89;border-color:#2d5d89;color:white}.danger{color:#962d32;border-color:#bd6d70}button:hover{filter:brightness(.96)}input,select,textarea{font:inherit;padding:9px;border:1px solid #aeb9c6;border-radius:3px;background:white;color:#202833;max-width:100%}input:focus,select:focus,textarea:focus,button:focus,a:focus{outline:2px solid #6589ad;outline-offset:2px}label{display:block;margin:0 0 16px;font-weight:500}label>input:not([type=checkbox]),label>select,label>textarea{display:block;width:100%;margin-top:6px}textarea{min-height:100px;resize:vertical}input[type=checkbox]{width:auto}table{border-collapse:collapse;background:white;width:100%}th,td{text-align:left;vertical-align:top;padding:12px;border:1px solid #d4dae1;font-size:13px}th{background:#e9edf2;font-weight:600}td.value{max-width:280px;min-width:100px;white-space:pre-wrap;overflow-wrap:anywhere}td a{display:block;margin-bottom:8px}.table-scroll{overflow:auto;border:1px solid #d4dae1}.toolbar,.inline{display:flex;align-items:flex-start;gap:12px;flex-wrap:wrap}.toolbar form{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;flex:1}.toolbar details{width:100%;padding:8px 0}.toolbar details label{display:inline-block;margin-right:14px;max-width:210px}.form-section{max-width:700px}.pager{display:flex;gap:24px;margin-top:20px}.notice{border-left:3px solid #657d96;background:#e9eef4;padding:14px}.login{min-height:100vh;display:grid;place-items:center}.login section{width:min(480px,95vw);padding:32px}.login h1{margin-bottom:16px}pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f4f5f7;padding:12px}footer{margin-top:40px;color:#657383;font-size:12px}@media(max-width:800px){aside{position:static;width:100%;max-height:220px}main{margin:0;padding:16px}nav{display:flex;flex-wrap:wrap}h1{font-size:21px}}
.pre{white-space:pre-wrap;overflow-wrap:anywhere}.save-bar{position:sticky;bottom:0;background:#f4f5f7;border-top:1px solid #d4dae1;padding:14px 0;display:flex;gap:16px;align-items:center}.grade-entry input[name^=grade_]{width:80px}.grade-entry input,.grade-entry select{min-width:80px;max-width:240px}details{margin:14px 0}summary{cursor:pointer;font-weight:600}aside details{margin:12px 0}aside summary{color:#bac3ce;padding:10px}.quick-actions{display:flex;gap:12px;flex-wrap:wrap}.journal td{text-align:center;min-width:74px}.journal th:first-child{position:sticky;left:0;min-width:190px;background:#e9edf2}.journal td a{display:block;margin:0;padding:8px}.lesson-summary h2{flex:1}td .inline-links a{display:inline}p{line-height:1.5}
