:root{--bg:#f7f8fa;--surface:#fff;--surface-muted:#f1f3f6;--border:#d8dde5;--border-strong:#aeb7c4;--text:#111827;--muted:#5f6b7a;--accent:#1d4ed8;--accent-soft:#eef4ff;--success:#166534;--shadow:0 12px 30px #11182714}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);letter-spacing:0;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;overflow-x:hidden}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.6}.portal-shell{grid-template-columns:260px minmax(0,1fr);width:100%;min-width:0;max-width:100vw;min-height:100vh;display:grid;overflow-x:hidden}.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;gap:24px;min-width:0;padding:24px 18px;display:flex}.brand{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding-bottom:18px;display:flex}.brand-mark{border:1px solid var(--text);width:42px;height:42px;color:var(--text);border-radius:6px;place-items:center;font-size:14px;font-weight:800;display:grid}.brand p,.brand span,.course-code,.eyeless-label{margin:0}.brand p{font-size:16px;font-weight:800}.brand span{color:var(--muted);font-size:13px}.nav-list{gap:6px;min-width:0;display:grid}.nav-item{width:100%;min-height:42px;color:var(--muted);text-align:left;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:10px;padding:10px 11px;font-size:14px;font-weight:650;display:flex}.nav-item:hover,.nav-item.active{background:var(--accent-soft);color:var(--accent);border-color:#bfd2ff}.sidebar-note{border:1px solid var(--border);color:var(--muted);border-radius:6px;gap:10px;margin-top:auto;padding:12px;font-size:13px;line-height:1.45;display:flex}.sidebar-note p{margin:0}.workspace{width:100%;min-width:0;max-width:100vw;padding:22px;overflow-x:hidden}.topbar{border:1px solid var(--border);background:var(--surface);box-shadow:var(--shadow);border-radius:6px;justify-content:space-between;align-items:center;gap:24px;padding:18px 20px;display:flex}.topbar>div{min-width:0}.course-code{color:var(--accent);text-transform:uppercase;font-size:13px;font-weight:800}.topbar h1{letter-spacing:0;overflow-wrap:anywhere;margin:2px 0 4px;font-size:23px;line-height:1.2}.topbar span{color:var(--muted);font-size:14px}.google-button,.primary-action,.secondary-action{white-space:nowrap;border-radius:6px;justify-content:center;align-items:center;gap:8px;min-height:38px;padding:9px 13px;font-size:14px;font-weight:750;display:inline-flex}.account-stack{justify-items:end;gap:8px;width:min(560px,100%);display:grid}.account-control{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.account-control div{flex:180px;justify-items:end;gap:2px;min-width:0;display:grid}.account-control strong{max-width:260px;color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.account-control span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:800}.google-button,.primary-action{border:1px solid var(--accent);background:var(--accent);color:#fff}.secondary-action{border:1px solid var(--border-strong);background:var(--surface);color:var(--text)}.auth-panel{flex:0 0 360px;gap:8px;width:min(360px,100%);display:grid}.auth-mode-toggle{border:1px solid var(--border);background:var(--surface-muted);border-radius:6px;grid-template-columns:1fr 1fr;gap:4px;padding:4px;display:grid}.auth-mode-toggle button{min-height:30px;color:var(--muted);background:0 0;border:0;border-radius:4px;font-size:12px;font-weight:850}.auth-mode-toggle button.active{background:var(--surface);color:var(--text);box-shadow:0 1px 2px #0f172a14}.auth-fields{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;display:grid}.auth-fields input{min-height:38px;padding:8px 10px}.auth-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.auth-status{color:var(--muted);text-align:right;margin:0;font-size:12px;line-height:1.35}.password-panel{border:1px solid var(--border);background:var(--surface-muted);border-radius:6px;grid-template-columns:minmax(120px,1fr) minmax(120px,1fr) auto;gap:8px;width:100%;padding:10px;display:grid}.password-panel .auth-status{grid-column:1/-1}.content-grid{grid-template-columns:minmax(0,1fr) 330px;gap:18px;min-width:0;margin-top:18px;display:grid}.primary-pane,.side-pane>section{border:1px solid var(--border);background:var(--surface);border-radius:6px}.primary-pane{min-width:0;padding:20px;overflow:hidden}.section-heading{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px;padding-bottom:16px;display:flex}.eyeless-label{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:800}.section-heading h2{letter-spacing:0;margin:2px 0 0;font-size:24px;line-height:1.2}.release-state{border:1px solid var(--border);background:var(--surface-muted);color:var(--muted);border-radius:6px;padding:7px 9px;font-size:12px;font-weight:800}.table-stack,.text-stack{gap:16px;display:grid}.table-stack h3{letter-spacing:0;margin:0;font-size:17px}.text-stack p,.muted{color:var(--muted);line-height:1.6}.text-stack p,.muted,.file-state{margin:0}.table-wrap{border:1px solid var(--border);border-radius:6px;min-width:0;max-width:100%;overflow-x:auto}table{border-collapse:collapse;background:var(--surface);width:100%;min-width:720px}.wide-table{min-width:1080px}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:12px 13px;font-size:14px;line-height:1.45}th{background:var(--surface-muted);color:#1f2937;text-transform:uppercase;font-size:12px;font-weight:850}tr:last-child td{border-bottom:0}.side-pane{align-content:start;gap:14px;display:grid}.action-panel{gap:12px;padding:16px;display:grid}.panel-title{align-items:center;gap:9px;display:flex}.panel-title h3{margin:0;font-size:16px}.grade-status{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:9px 0;font-size:14px;display:flex}.grade-status:last-child{border-bottom:0}.grade-status span{color:var(--muted)}.grade-status strong{color:var(--success);font-size:13px}.dashboard-stack{gap:18px}.dashboard-metrics{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;display:grid}.dashboard-metric{border:1px solid var(--border);background:var(--surface);border-radius:6px;gap:5px;min-width:0;padding:14px;display:grid}.dashboard-metric span{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:850}.dashboard-metric strong{color:var(--text);overflow-wrap:anywhere;font-size:26px;line-height:1.1}.dashboard-metric p{color:var(--muted);margin:0;font-size:13px;line-height:1.35}.button-row,.grade-tools{flex-wrap:wrap;gap:10px;display:flex}.grade-editor-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.grade-editor-heading>div{gap:4px;min-width:0;display:grid}.gradebook-wrap table{min-width:1400px}.gradebook-table th,.gradebook-table td{vertical-align:middle;padding:8px}.gradebook-table th:first-child,.gradebook-table td:first-child{min-width:180px}.gradebook-table th:nth-child(2),.gradebook-table td:nth-child(2){min-width:240px}.grade-input{min-width:70px;min-height:34px;padding:7px 8px;font-size:13px}.grade-email-input{min-width:230px}.student-cell{gap:2px;min-width:0;display:grid}.student-cell strong{color:var(--text);overflow-wrap:anywhere;font-size:13px;line-height:1.3}.student-cell span{color:var(--muted);overflow-wrap:anywhere;font-size:12px;line-height:1.3}.release-toggle{min-height:34px;color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.release-toggle input{width:16px;min-width:16px;height:16px;padding:0}.compact-action{min-height:34px;padding:7px 10px;font-size:13px}.danger-action{color:#b91c1c;border-color:#fecaca}.danger-action:hover:not(:disabled){background:#fef2f2}.notice-panel,.download-panel{border:1px solid var(--border);background:var(--surface-muted);border-radius:6px;gap:12px;padding:14px;display:grid}.notice-panel{grid-template-columns:auto minmax(0,1fr);align-items:start}.notice-panel strong,.download-panel h3{margin:0 0 4px;font-size:15px;display:block}.notice-panel p,.download-panel p{margin:0}.editor-form{border:1px solid var(--border);background:var(--surface);border-radius:6px;gap:12px;padding:14px;display:grid}.editor-form label{color:var(--muted);text-transform:uppercase;gap:7px;font-size:12px;font-weight:800;display:grid}.roster-form{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.roster-form .button-row{grid-column:1/-1;align-items:center}.discussion-form{grid-template-columns:minmax(160px,.45fr) minmax(220px,1fr)}.discussion-message-field,.discussion-form .button-row{grid-column:1/-1}input,textarea{border:1px solid var(--border-strong);background:var(--surface);width:100%;color:var(--text);text-transform:none;border-radius:6px;padding:10px 11px;font-size:14px;line-height:1.45}textarea{resize:vertical}.discussion-list{gap:12px;display:grid}.discussion-thread,.discussion-item,.discussion-reply{min-width:0}.discussion-thread{border:1px solid var(--border);background:var(--surface);border-radius:6px;gap:0;display:grid;overflow:hidden}.discussion-item,.discussion-reply{gap:10px;padding:14px;display:grid}.discussion-replies{border-top:1px solid var(--border);background:var(--surface-muted);gap:0;display:grid}.discussion-reply{border-bottom:1px solid var(--border);padding-left:24px}.discussion-reply:last-child{border-bottom:0}.discussion-meta{color:var(--muted);flex-wrap:wrap;gap:7px;font-size:12px;display:flex}.discussion-meta span{border:1px solid var(--border);background:var(--surface);overflow-wrap:anywhere;border-radius:999px;padding:3px 8px}.discussion-body{gap:6px;min-width:0;display:grid}.discussion-body h4{color:var(--text);overflow-wrap:anywhere;margin:0;font-size:16px;line-height:1.35}.discussion-body strong{color:var(--text);overflow-wrap:anywhere;font-size:13px}.discussion-body p{color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;font-size:14px;line-height:1.55}.discussion-reply-form{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px;display:grid}.check-list{color:var(--muted);gap:8px;margin:0;padding:0;font-size:14px;line-height:1.45;list-style:none;display:grid}.document-links{gap:8px;margin:0;padding:0;font-size:14px;line-height:1.45;list-style:none;display:grid}.document-links a{border:1px solid var(--border);background:var(--surface);color:var(--accent);border-radius:6px;padding:9px 10px;font-weight:750;text-decoration:none;display:block}.document-links a:hover{border-color:var(--border-strong);text-decoration:underline}.roster-summary,.contact-group{gap:10px;display:grid}.contact-group{border-top:1px solid var(--border);padding-top:10px}.contact-group>strong{font-size:13px}.contact-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.contact-list li{gap:2px;min-width:0;display:grid}.contact-list span{color:var(--text);overflow-wrap:anywhere;font-size:13px;font-weight:750}.contact-list a{color:var(--accent);overflow-wrap:anywhere;font-size:13px;text-decoration:none}.contact-list a:hover{text-decoration:underline}.check-list li{padding-left:18px;position:relative}.check-list li:before{border-bottom:2px solid var(--success);border-left:2px solid var(--success);width:8px;height:4px;color:var(--success);content:"";position:absolute;top:.38em;left:0;transform:rotate(-45deg)}.upload-form{border:1px solid var(--border);background:var(--surface-muted);border-radius:6px;flex-wrap:wrap;align-items:end;gap:12px;padding:14px;display:flex}.schedule-form{grid-template-columns:minmax(220px,1.4fr) minmax(150px,.8fr) minmax(190px,1fr) auto;align-items:end;gap:12px;display:grid}.schedule-form label{color:var(--muted);text-transform:uppercase;gap:7px;font-size:12px;font-weight:800;display:grid}.upload-form label{min-width:280px;color:var(--muted);text-transform:uppercase;gap:7px;font-size:12px;font-weight:800;display:grid}select{border:1px solid var(--border-strong);background:var(--surface);width:100%;min-height:40px;color:var(--text);text-transform:none;border-radius:6px;padding:8px 10px;font-size:14px}.hidden-input{display:none}.file-state{color:var(--muted);font-size:13px}.inline-link{color:var(--accent);font-weight:750;text-decoration:none}.inline-link:hover{text-decoration:underline}@media (max-width:1100px){.portal-shell{grid-template-columns:1fr}.sidebar{z-index:5;border-right:0;border-bottom:1px solid var(--border);width:100%;max-width:100vw;padding:14px;display:block;position:sticky;top:0;overflow-x:hidden}.brand,.sidebar-note{display:none}.nav-list{gap:8px;width:100%;max-width:100%;padding-bottom:2px;display:flex;overflow-x:auto}.nav-item{flex:none;width:auto;min-width:max-content}.content-grid{grid-template-columns:1fr}}@media (max-width:700px){.workspace{width:100vw;max-width:100vw;padding:12px}.topbar,.content-grid,.primary-pane,.side-pane,.action-panel{width:calc(100vw - 24px);max-width:calc(100vw - 24px)}.topbar,.section-heading{flex-direction:column;align-items:stretch}.auth-panel{flex-basis:auto;width:100%}.auth-fields{grid-template-columns:1fr}.auth-actions{justify-content:stretch}.auth-actions button{flex:auto}.topbar h1{font-size:20px}.topbar>div,.section-heading>div{min-width:0}.primary-pane{padding:14px}.google-button,.primary-action,.secondary-action,.account-stack,.account-control{width:100%}.account-control{flex-direction:column;align-items:stretch}.account-control div{flex:0 auto;justify-items:start}.password-panel{grid-template-columns:1fr}.upload-form label{min-width:100%}.discussion-form,.discussion-reply-form{grid-template-columns:1fr}.discussion-reply{padding-left:14px}.schedule-form{grid-template-columns:1fr}.grade-editor-heading{display:grid}.gradebook-wrap table,.gradebook-table th:first-child,.gradebook-table td:first-child,.gradebook-table th:nth-child(2),.gradebook-table td:nth-child(2),.grade-input,.grade-email-input{min-width:0}.table-wrap{border:0;overflow:visible}table{min-width:0;display:block}.wide-table{min-width:0}thead{display:none}tbody{gap:10px;display:grid}tr{border:1px solid var(--border);background:var(--surface);border-radius:6px;display:block;overflow:hidden}td{border-bottom:1px solid var(--border);overflow-wrap:anywhere;grid-template-columns:minmax(92px,34%) minmax(0,1fr);gap:12px;width:100%;padding:11px 12px;display:grid}td:before{content:attr(data-label);color:var(--muted);text-transform:uppercase;font-size:11px;font-weight:850;line-height:1.35}tr:last-child td,td:last-child{border-bottom:0}}
