:root{font-family:'Segoe UI',Arial,sans-serif;color:#1c2926;background:#f5f7f3;font-synthesis:none;text-rendering:optimizeLegibility;--ink:#1c2926;--muted:#77817c;--green:#1e624a;--line:#e8ece7;--paper:#fff;--mint:#e8f2eb;--shadow:0 12px 40px rgba(29,53,43,.045)}
*{box-sizing:border-box}body{margin:0;min-width:340px;background:radial-gradient(ellipse at 18% 0%,rgba(225,239,229,.57),transparent 38%),#f5f7f3}button,input{font:inherit}button{cursor:pointer}.app-shell{max-width:1240px;margin:0 auto;padding:0 36px 52px}.topbar{height:82px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(211,221,214,.75)}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:#1e624a;color:#fff;font:800 13px Manrope,sans-serif;letter-spacing:-.5px}.brand strong,.brand small{display:block}.brand strong{font:700 13px Manrope,sans-serif;letter-spacing:-.1px}.brand small{margin-top:3px;color:#818a85;font-size:10px}.top-note{display:flex;align-items:center;gap:8px;color:#65716b;font-size:11px}.live-dot{width:7px;height:7px;background:#69a77d;border-radius:50%;box-shadow:0 0 0 3px #e2efe4}.view{padding-top:42px}.hidden{display:none!important}.hero{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:8px 0 30px}.eyebrow{margin:0 0 9px;color:#75827b;font-size:9px;line-height:1.2;font-weight:700;letter-spacing:1.45px}.hero h1,.detail-hero h1{margin:0;color:#1a2a25;font:700 35px/1.15 Manrope,sans-serif;letter-spacing:-1.4px}.hero-text{max-width:530px;margin:12px 0 0;color:#738079;font-size:13px;line-height:1.7}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;border-radius:9px;padding:12px 16px;font-size:11px;font-weight:700;transition:transform .16s,background .16s,box-shadow .16s}.button:hover{transform:translateY(-1px)}.button-dark{background:#1e624a;color:#fff;box-shadow:0 5px 12px rgba(30,98,74,.14)}.button-dark:hover{background:#184f3b}.button-light{background:#f0f5f1;color:#315b47}.button-light:hover{background:#e5efe8}.download-icon{font-size:18px;font-weight:400;line-height:10px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:22px}.stat-card{min-height:124px;padding:20px 22px;border:1px solid #e7ece6;border-radius:12px;background:rgba(255,255,255,.84);box-shadow:var(--shadow)}.stat-card-accent{background:linear-gradient(140deg,#f4f8f4,#eaf2eb);border-color:#e1ebe2}.stat-label{display:block;color:#77837c;font-size:9px;font-weight:700;letter-spacing:1.1px}.stat-card strong{display:inline-block;margin-top:12px;color:#1b2d26;font:700 26px Manrope,sans-serif;letter-spacing:-.7px}.stat-foot{margin-left:8px;color:#87918b;font-size:10px}.stat-card strong+.stat-foot{display:inline}.roster-card,.detail-card{overflow:hidden;border:1px solid #e7ece6;border-radius:13px;background:var(--paper);box-shadow:var(--shadow)}.roster-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding:22px 24px 20px}.roster-heading h2,.section-heading h2{margin:0;color:#1d2c27;font:700 19px Manrope,sans-serif;letter-spacing:-.55px}.count-pill{display:inline-grid;place-items:center;min-width:23px;height:22px;margin-left:4px;padding:0 6px;border-radius:20px;background:#edf2ed;color:#5f7165;font:600 10px 'DM Sans',sans-serif;vertical-align:2px}.search-box{display:flex;align-items:center;gap:8px;width:min(310px,40%);height:36px;padding:0 10px;border:1px solid #e8ece8;border-radius:8px;color:#98a29c;background:#fff}.search-box>span{font-size:21px;line-height:1;transform:rotate(-20deg)}.search-box input{width:100%;min-width:0;border:0;outline:0;color:#2a3732;font-size:10px}.search-box input::placeholder{color:#a6afaa}.search-box kbd{padding:2px 4px;border:1px solid #e8ece8;border-radius:4px;color:#9da7a1;font:9px 'DM Sans',sans-serif;white-space:nowrap}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;white-space:nowrap}thead{background:#f8faf8}th{height:37px;padding:0 15px;color:#87928c;text-align:left;font-size:8px;font-weight:700;letter-spacing:.8px}th:first-child,td:first-child{padding-left:24px}th:last-child,td:last-child{padding-right:24px}td{height:62px;padding:7px 15px;border-top:1px solid #edf0ed;color:#35423c;font-size:11px}tr:hover td{background:#fbfcfb}.student-name{color:#24332d;font-weight:700}.student-sub{margin-top:4px;color:#9aa39d;font-size:9px}.registration-code{display:block;color:#77827c;font-size:10px}.profile-entry{display:flex;align-items:center;gap:7px}.profile-input{width:205px;height:32px;padding:0 9px;border:1px solid #e3e9e4;border-radius:6px;outline:0;color:#36443d;font-size:10px}.profile-input:focus,.key-label+input:focus{border-color:#83b196;box-shadow:0 0 0 3px #e5f1e8}.profile-input::placeholder{color:#a8b0ab}.save-button{height:31px;padding:0 10px;border:0;border-radius:6px;background:#eaf3ed;color:#25634c;font-size:10px;font-weight:700}.save-button:hover{background:#deeee3}.profile-link{color:#4d7661;font-size:10px;text-decoration:none}.profile-link:hover{text-decoration:underline}.align-right{text-align:right}.submission-number{text-align:right;font:700 12px Manrope,sans-serif;color:#35483e}.status-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 8px;border:1px solid transparent;border-radius:20px;font-size:9px;font-weight:600}.status-chip:before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}.status-below{background:#f8f0e8;border-color:#f2e6d9;color:#a66c37}.status-average{background:#edf3ed;border-color:#e6eee7;color:#5a7c63}.status-excellent{background:#e7f3ec;border-color:#dcece2;color:#26734f}.status-untracked,.status-pending{background:#f2f4f2;border-color:#eceeec;color:#89938c}.view-button{padding:7px 11px;border:1px solid #e3eae4;border-radius:6px;background:#fff;color:#41664f;font-size:10px;font-weight:700}.view-button:hover{border-color:#a9c7b1;background:#f7faf7}.loading-cell{height:120px!important;color:#85918a!important;text-align:center}.table-foot{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 24px;border-top:1px solid #edf0ed;color:#89938d;font-size:9px}.status-legend{display:flex;align-items:center;gap:6px;white-space:nowrap}.legend-dot{width:6px;height:6px;margin-left:7px;border-radius:50%}.dot-below{background:#b77b47}.dot-average{background:#82a386}.dot-excellent{background:#31865c}.method-note{margin:13px 3px;color:#929b95;font-size:9px}.notice{margin:0 24px 12px;padding:10px 12px;border-radius:7px;background:#fff3e7;color:#936332;font-size:10px}.notice.success{background:#eaf4ed;color:#376a4d}.back-link{display:inline-block;margin:0 0 25px;color:#6f7c74;text-decoration:none;font-size:11px}.back-link:hover{color:#1e624a}.detail-hero{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.detail-hero h1{font-size:31px}.detail-ids{margin:8px 0 0;color:#7e8982;font-size:11px}.detail-actions{display:flex;align-items:center;gap:12px}.detail-stats{margin-bottom:19px}.detail-stats .stat-card{min-height:110px}.detail-card{padding:22px 24px;margin-bottom:18px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:20px}.section-heading .eyebrow{margin-bottom:6px}.heat-legend{display:flex;align-items:center;gap:5px;color:#89938d;font-size:9px}.heat-level{width:11px;height:11px;border-radius:3px}.level-0{background:#edf1ee}.level-1{background:#cde4d3}.level-2{background:#7fbd91}.level-3{background:#26764e}.heatmap{display:grid;grid-template-rows:repeat(7,13px);grid-auto-flow:column;grid-auto-columns:13px;gap:4px;width:max-content;max-width:100%;overflow-x:auto;padding:2px 0}.heat-cell{width:13px;height:13px;border-radius:3px;background:#edf1ee}.heat-cell.level-1{background:#cde4d3}.heat-cell.level-2{background:#7fbd91}.heat-cell.level-3{background:#26764e}.heatmap-months{display:flex;justify-content:space-between;width:min(100%,520px);margin-top:8px;color:#9aa39d;font-size:9px}.daily-card{padding-bottom:17px}.daily-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.daily-item{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:9px 10px;border:1px solid #edf0ed;border-radius:7px;background:#fbfcfb}.daily-date{color:#7f8a83;font-size:9px}.daily-count{color:#32463a;font-size:10px;font-weight:700}.muted,.sync-note{color:#8d9791;font-size:10px}.sync-note{margin:6px 3px}.detail-loading{display:flex;align-items:center;gap:10px;padding:100px 0;color:#7e8982;font-size:12px}.loader{width:16px;height:16px;border:2px solid #dce8df;border-top-color:#387456;border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.access-dialog{width:min(410px,calc(100% - 30px));padding:0;border:1px solid #e4ebe5;border-radius:16px;background:#fff;box-shadow:0 25px 90px rgba(20,44,33,.22);color:var(--ink)}.access-dialog::backdrop{background:rgba(27,42,34,.38);backdrop-filter:blur(3px)}.access-dialog form{position:relative;padding:28px}.dialog-close{position:absolute;top:15px;right:16px;border:0;background:none;color:#8c9790;font-size:23px;line-height:1}.lock-mark{display:grid;place-items:center;width:39px;height:39px;margin-bottom:21px;border-radius:12px;background:#edf5ef;color:#397452;font-size:22px}.access-dialog h2{margin:0;font:700 22px Manrope,sans-serif;letter-spacing:-.6px}.dialog-copy{margin:9px 0 20px;color:#77837c;font-size:11px;line-height:1.6}.key-label{display:block;margin-bottom:7px;color:#78847d;font-size:8px;font-weight:700;letter-spacing:1px}.key-label+input{width:100%;height:40px;padding:0 11px;border:1px solid #e1e8e2;border-radius:7px;outline:0;font-size:11px}.form-error{min-height:15px;margin:7px 0 0;color:#ad573e;font-size:10px}.dialog-submit{width:100%;margin-top:5px}.dialog-submit span{font-size:16px;font-weight:400}.form-error:empty{display:none}
@media(max-width:850px){.app-shell{padding:0 20px 35px}.roster-heading{align-items:flex-start;flex-direction:column}.search-box{width:min(100%,420px)}.table-foot{align-items:flex-start;flex-direction:column}.daily-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:600px){.app-shell{padding:0 14px 28px}.topbar{height:68px}.top-note{font-size:9px}.view{padding-top:27px}.hero{align-items:flex-start;flex-direction:column}.hero h1{font-size:30px}.hero-text{font-size:12px}.hero .button{width:100%}.stats-grid{gap:8px}.stat-card{min-height:106px;padding:15px 12px}.stat-label{font-size:7px;letter-spacing:.6px}.stat-card strong{display:block;margin-top:11px;font-size:22px}.stat-foot{display:block!important;margin:4px 0 0;font-size:8px}.roster-heading{padding:19px 16px 16px}.roster-card th:first-child,.roster-card td:first-child{padding-left:16px}.table-foot{padding:13px 16px}.status-legend{flex-wrap:wrap}.detail-hero{align-items:flex-start;flex-direction:column}.detail-hero h1{font-size:27px}.detail-actions{width:100%;justify-content:space-between}.detail-card{padding:18px 15px}.daily-grid{grid-template-columns:repeat(2,1fr)}.heatmap{grid-template-rows:repeat(7,11px);grid-auto-columns:11px;gap:3px}.heat-cell{width:11px;height:11px}.method-note{line-height:1.6}}
.profile-saved{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.profile-saved .status-chip{padding:5px 7px}
