:root{color-scheme:light;--bg:#f6f7fb;--ink:#17243b;--muted:#64748b;--line:#e1e5ef;--accent:#3458db;--accent2:#e9efff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,Segoe UI,sans-serif;font-size:14px}a{text-decoration:none;color:inherit}.shell{display:flex;min-height:100vh}.nav{width:246px;background:#101c34;color:#e7ebf5;padding:28px 16px;flex-shrink:0}.brand{font-size:20px;font-weight:800;letter-spacing:-.7px;margin:5px 11px 35px}.brand small{display:block;color:#8fa2cb;font-size:11px;letter-spacing:2px;margin-top:4px}.navlinks{display:grid;grid-gap:6px;gap:6px}.navlinks a{padding:13px 14px;border-radius:10px;color:#c3cde1}.navlinks a:hover{background:#253555;color:white}.navfoot{border-top:1px solid #35435d;margin-top:40px;padding:24px 12px;color:#aebbd4}.page{flex:1 1;min-width:0;padding:35px 42px;max-width:1500px;margin:auto}.top{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:28px}.kicker{color:#63749a;text-transform:uppercase;letter-spacing:1.7px;font-size:11px;font-weight:800}.h1{font-size:29px;letter-spacing:-1px;margin:7px 0}.sub{color:var(--muted);font-size:13px}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px;margin-bottom:24px}.card,.panel{background:white;border:1px solid var(--line);border-radius:17px;box-shadow:0 5px 22px #1b2a4a06}.card{padding:23px}.card .value{font-size:30px;font-weight:800;letter-spacing:-1px;margin:10px 0}.panel{padding:23px;margin-bottom:21px}.panel h2{font-size:17px;margin:0 0 18px}.flex{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.grid2{display:grid;grid-template-columns:1.2fr 1fr;grid-gap:20px;gap:20px}.tablewrap{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left}th{font-size:11px;color:#728097;text-transform:uppercase;letter-spacing:.8px;padding:12px;border-bottom:1px solid var(--line)}td{padding:13px 12px;border-bottom:1px solid #f0f2f8;vertical-align:middle}tbody tr:hover{background:#fafbff}.pill{display:inline-block;background:#eef1f7;color:#465672;border-radius:40px;padding:5px 9px;font-size:11px;font-weight:700}.pill.in_progress{background:#e9efff;color:#3959c8}.pill.ready_for_qa{background:#fff0d8;color:#946000}.pill.closed,.pill.delivered,.pill.qa_passed{background:#def7e9;color:#1b7950}.pill.blocked,.pill.changes_requested{background:#ffe8e6;color:#b43e39}.btn{display:inline-flex;align-items:center;justify-content:center;padding:11px 16px;background:var(--accent);color:white;border-radius:10px;border:0;font-weight:700;cursor:pointer;font-size:13px}.btn.secondary{background:#eff2f9;color:#304264}.btn.danger{background:#a83d3d}.btn:hover{filter:brightness(.94)}.field{display:grid;grid-gap:7px;gap:7px;min-width:0}.field label{font-size:12px;font-weight:700;color:#43536e}input,select,textarea{font:inherit;width:100%;border:1px solid #d9dfeb;border-radius:9px;padding:11px 12px;background:#fff;color:var(--ink)}textarea{min-height:94px;resize:vertical}.formgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:17px;gap:17px}.full{grid-column:1/-1}.empty{text-align:center;color:var(--muted);padding:35px}.alert{padding:12px 15px;background:#fff0e7;border:1px solid #f8d6bf;border-radius:10px;margin-bottom:19px}.tag{font-size:12px;color:#66758e}.login{min-height:100vh;display:grid;place-items:center;padding:25px}.login .panel{width:min(410px,100%);padding:32px}.login h1{margin:0 0 10px;font-size:27px}.stack{display:grid;grid-gap:15px;gap:15px}.mb{margin-bottom:18px}.muted{color:var(--muted)}.tasklink{font-weight:750;color:#304ed1}.actions{flex-wrap:wrap}.actions,.statrow{display:flex;gap:10px}.statrow{align-items:center}.dot{height:9px;width:9px;border-radius:50%;background:#5876e8}.code{font-family:ui-monospace,monospace;color:#59677d}.code,.small{font-size:12px}@media(max-width:1000px){.cards{grid-template-columns:repeat(2,1fr)}.grid2{grid-template-columns:1fr}.page{padding:26px}}@media(max-width:700px){.shell{display:block}.nav{width:auto;padding:15px}.brand{margin:5px 0 15px}.navlinks{display:flex;overflow:auto}.navlinks a{white-space:nowrap;padding:8px}.navfoot{display:block;margin-top:18px;padding:14px 4px}.page{padding:20px}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.card{padding:15px}.formgrid{grid-template-columns:1fr}}.route-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:12px;color:#526077;font-weight:650;background:#f7f8fc}.loading-spinner{width:20px;height:20px;border:3px solid #dce3f2;border-top-color:#3159d8;border-radius:50%;animation:route-spin .7s linear infinite}@keyframes route-spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.loading-spinner{animation:none;border-top-color:#dce3f2;background:#3159d8}}.success-alert{padding:12px 15px;background:#e7f8ee;border:1px solid #bde8cf;color:#17663f;border-radius:10px;margin-bottom:19px}.student-progress-list{display:grid;grid-gap:10px;gap:10px}.student-progress,.workspace-card{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}.student-progress>summary,.workspace-card>summary{list-style:none;cursor:pointer}.student-progress>summary::-webkit-details-marker,.workspace-card>summary::-webkit-details-marker{display:none}.student-progress>summary{padding:15px 17px}.student-progress[open]>summary{background:#f8faff;border-bottom:1px solid var(--line)}.student-summary,.workspace-card>summary{display:flex;align-items:center;justify-content:space-between;gap:16px}.student-summary>div:first-child,.workspace-card>summary>div:first-child{display:grid;grid-gap:4px;gap:4px;min-width:0}.summary-progress{display:flex;align-items:center;gap:12px;flex-shrink:0}.progress-label{font-size:12px;font-weight:750;color:#40506a}.chevron{font-size:25px;line-height:1;color:#77859c;transition:transform .15s}.student-progress[open]>summary .chevron,.workspace-card[open]>summary .chevron{transform:rotate(90deg)}.student-weeks{display:grid;grid-gap:9px;gap:9px;padding:12px;background:#f6f8fc}.workspace-card{background:#fff}.workspace-card>summary{padding:13px 15px}.workspace-card[open]>summary{border-bottom:1px solid #edf0f6}.workspace-card .progress{height:5px;background:#edf0f6;margin:0;overflow:hidden}.workspace-card .progress span{display:block;height:100%;background:var(--accent)}.workspace-card .add-row,.workspace-card .tablewrap{margin:0 14px}.workspace-card .add-row{padding:14px 0}.inline-form{display:flex;align-items:center;gap:8px}.inline-form input,.inline-form select{min-width:135px}.add-row{margin-top:12px}@media(max-width:700px){.student-summary,.workspace-card>summary{align-items:flex-start}.summary-progress{gap:7px}.inline-form{align-items:stretch;flex-direction:column}.workspace-card .tablewrap{margin:0}.workspace-card table{min-width:720px}}.work-group-list{display:grid;grid-gap:12px;gap:12px}.work-group{border:1px solid var(--line);border-radius:12px;padding:15px;background:#fff}.work-group-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:12px}.work-item-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px}.work-item-chip{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 11px;border-radius:9px;background:#f7f9fd;border:1px solid #edf0f6}.work-item-chip>div{display:grid;grid-gap:3px;gap:3px;min-width:0}.add-work-item{display:grid;grid-template-columns:minmax(170px,1fr) minmax(170px,1fr) auto;align-items:end;grid-gap:10px;gap:10px;margin:0 14px;padding:14px 0;border-top:1px solid #edf0f6}.add-work-item .btn{height:42px}@media(max-width:900px){.add-work-item,.work-item-grid{grid-template-columns:1fr}}@media(max-width:700px){.work-group-heading,.work-item-chip{align-items:flex-start}}.work-week-toolbar{justify-content:space-between;gap:20px;margin-bottom:17px}.week-filter,.work-week-toolbar{display:flex;align-items:flex-end}.week-filter{gap:9px;min-width:min(100%,390px)}.week-filter .field{flex:1 1}.selected-week-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#f1f5ff;border:1px solid #dfe7ff;border-radius:10px;margin-bottom:12px}@media(max-width:800px){.selected-week-summary,.work-week-toolbar{align-items:stretch;flex-direction:column}.week-filter{min-width:100%}}@media(max-width:500px){.week-filter{align-items:stretch;flex-direction:column}}.week-management{display:flex;justify-content:space-between;gap:12px;padding:12px 14px;background:#fbfcff;border-bottom:1px solid #edf0f6}.week-management,.week-management .inline-form{align-items:flex-end}.weekly-grades{margin:0 14px 14px;padding-top:14px;border-top:1px solid #edf0f6}.weekly-grades h3{margin:0 0 4px;font-size:15px}.grade-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px;margin-top:12px}.grade-card{padding:13px;border:1px solid var(--line);border-radius:11px;background:#fafbff}.grade-form{display:grid;grid-gap:10px;gap:10px}.grade-fields{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.grade-delete{margin-top:8px}.text-danger{border:0;background:none;color:#b43e39;font:inherit;font-size:12px;font-weight:700;cursor:pointer;padding:3px 0}.text-danger:hover{text-decoration:underline}@media(max-width:850px){.grade-grid{grid-template-columns:1fr}.week-management{flex-direction:column}.week-management,.week-management .inline-form{align-items:stretch}}.brand:before{width:54px;height:54px;margin-bottom:10px}.brand:before,.login .panel:before{content:"";display:block;background:url(/scholarly-works-logo.png) 50%/contain no-repeat;border-radius:50%}.login .panel:before{width:130px;height:130px;margin:0 auto 18px}.login h1{text-align:center}