:root{--paper:#f7f8f1;--ink:#182923;--muted:#687970;--line:rgba(24,41,35,.14);--navy:#193c51;--lime:#c9e86d;--orange:#f2a16d;--blue:#c7e8e8;--purple:#d9c9ea;--mono:"DM Mono",monospace;--sans:"Manrope",Arial,sans-serif}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:#e8ece0;font-family:var(--sans);font-size:14px;line-height:1.5}button,input{font:inherit}button{cursor:pointer}.app-shell{display:grid;min-height:100vh;grid-template-columns:245px minmax(0,1fr)}.sidebar{display:flex;flex-direction:column;padding:30px 20px;color:var(--paper);background:var(--navy)}.product-lockup{display:flex;align-items:center;gap:10px;color:inherit;font-family:var(--mono);font-size:12px;font-weight:500;letter-spacing:.04em}.product-mark{display:grid;width:32px;height:32px;place-items:center;color:var(--navy);border-radius:3px;background:var(--lime);font-family:var(--mono);font-size:10px;font-weight:500}.side-section-label,.overline{font-family:var(--mono);font-size:9px;letter-spacing:.09em;text-transform:uppercase}.side-section-label{margin:72px 10px 12px;color:#f7f8f16b}.sidebar nav{display:grid;gap:4px}.side-link{display:grid;grid-template-columns:28px 1fr 16px;gap:7px;align-items:center;padding:13px 10px;color:#f7f8f19e;border:0;border-left:2px solid transparent;background:transparent;font-family:var(--mono);font-size:10px;text-align:left;transition:background .18s,color .18s}.side-link span{color:#f7f8f159}.side-link i{color:var(--lime);font-style:normal;opacity:0}.side-link:hover,.side-link.active{color:var(--paper);border-left-color:var(--lime);background:#c9e86d1a}.side-link.active span{color:var(--lime)}.side-link.active i{opacity:1}.sidebar-bottom{margin-top:auto;display:grid;gap:5px;padding:18px 10px 4px;border-top:1px solid rgba(247,248,241,.14)}.sidebar-bottom .overline{color:#f7f8f16b}.sidebar-bottom strong{font-size:13px}.sidebar-bottom small{color:#f7f8f180;font-family:var(--mono);font-size:9px}.sidebar-status{display:flex;align-items:center;gap:8px;margin-top:21px;color:var(--lime);font-family:var(--mono);font-size:8px}.sidebar-status i,.legend-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--lime)}.main-area{min-width:0;padding:37px clamp(24px,5vw,76px) 70px}.topbar{display:flex;min-height:78px;align-items:start;justify-content:space-between;gap:20px;padding-bottom:28px;border-bottom:1px solid var(--line)}.topbar .overline,.view-intro .overline,.welcome-row .overline{color:#819087}.topbar h1{margin:7px 0 0;font-size:29px;letter-spacing:-.07em;line-height:1}.topbar-actions{display:flex;align-items:center;gap:13px}.quiet-button,.logout-button,.link-button,.table-action{padding:0;color:var(--muted);border:0;background:transparent;font-family:var(--mono);font-size:9px}.quiet-button span,.link-button span,.table-action span{margin-left:6px;color:#7ca11c}.logout-button{color:#8f5c3b}.avatar{display:grid;width:31px;height:31px;place-items:center;color:var(--navy);border-radius:50%;background:var(--blue);font-family:var(--mono);font-size:9px}.view-stack{display:grid;gap:22px;padding-top:39px}.welcome-row,.view-intro{display:flex;align-items:end;justify-content:space-between;gap:20px}.welcome-row h2,.view-intro h2{margin:9px 0 3px;font-size:37px;letter-spacing:-.08em;line-height:1.02}.welcome-row p,.view-intro p{margin:0;color:var(--muted);font-size:13px}.primary-button{display:inline-flex;min-height:43px;align-items:center;justify-content:space-between;gap:23px;padding:0 14px;color:var(--navy);border:0;border-radius:2px;background:var(--lime);font-family:var(--mono);font-size:9px;text-transform:uppercase;transition:transform .18s,background .18s}.primary-button:hover{background:#ddf78c;transform:translateY(-2px)}.primary-button:disabled{cursor:wait;opacity:.6;transform:none}.primary-button.compact{min-height:38px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}.stat-card{min-height:130px;padding:16px;border:1px solid var(--line);background:#fff6}.stat-card .overline{color:#7d8b83}.stat-card strong{display:block;margin-top:18px;font-size:31px;letter-spacing:-.09em;line-height:1}.stat-card small{display:block;margin-top:8px;color:var(--muted);font-family:var(--mono);font-size:8px}.stat-card.blue{background:var(--blue)}.stat-card.orange{background:var(--orange)}.overview-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:11px}.panel{border:1px solid var(--line);background:#ffffff6b}.panel-heading{display:flex;align-items:start;justify-content:space-between;gap:15px;padding:18px 18px 17px;border-bottom:1px solid var(--line)}.panel-heading .overline{color:#7d8b83}.panel-heading h3{margin:6px 0 0;font-size:17px;letter-spacing:-.05em}.link-button{margin-top:4px;color:var(--ink)}.course-list{padding:0 18px}.course-row{display:grid;grid-template-columns:60px minmax(130px,1fr) minmax(130px,1.1fr) 65px;gap:15px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}.course-row:last-child{border-bottom:0}.course-code,.code-pill{color:var(--navy);font-family:var(--mono);font-size:9px}.course-code{font-weight:500}.course-name{display:grid;gap:4px}.course-name strong{font-size:11px}.course-name small,.course-progress span,.catalogue-card p{color:var(--muted);font-family:var(--mono);font-size:8px}.course-progress{display:grid;gap:7px}.course-progress div{display:flex;justify-content:space-between;gap:8px}.progress-track{height:5px;overflow:hidden;background:#dfe7dd}.progress-track i{display:block;height:100%;background:var(--lime)}.progress-track.blue i{background:#6db6bf}.progress-track.orange i{background:#d87a4c}.course-state,.status-pill{display:inline-block;width:max-content;padding:5px 6px;border-radius:2px;font-family:var(--mono);font-size:8px;text-transform:uppercase}.course-state.active,.status-pill.graded{color:#55751b;background:#e5f2b5}.course-state.review,.status-pill.pending{color:#8e5d3a;background:#f4d8c4}.pulse-panel{padding-bottom:17px}.pulse-mark{color:var(--lime-dark);font-size:22px}.pulse-graphic{position:relative;height:181px;margin:0 18px;overflow:hidden;background:#edf1e6}.pulse-grid{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(24,41,35,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(24,41,35,.08) 1px,transparent 1px);background-size:34px 34px}.pulse-line{position:absolute;top:52px;left:-4%;width:112%;height:94px;border-top:2px solid var(--navy);border-radius:47% 53% 0 0;transform:rotate(-6deg)}.pulse-node{position:absolute;width:10px;height:10px;border:3px solid #edf1e6;border-radius:50%;background:var(--lime-dark);box-shadow:0 0 0 1px var(--navy)}.node-one{top:91px;left:23%}.node-two{top:70px;left:54%;background:var(--orange)}.node-three{top:42px;left:83%}.pulse-label{position:absolute;color:#74847a;font-family:var(--mono);font-size:8px}.label-one{bottom:12px;left:18%}.label-two{bottom:12px;left:49%}.label-three{bottom:12px;right:10%}.pulse-legend{display:flex;align-items:center;justify-content:space-between;padding:16px 18px 0;color:var(--muted);font-family:var(--mono);font-size:8px}.pulse-legend span{display:flex;align-items:center;gap:7px}.pulse-legend strong{color:var(--lime-dark);font-weight:500}.submissions-panel{overflow:hidden}.panel-meta{color:var(--muted);font-family:var(--mono);font-size:8px}.table-wrap{overflow:auto}.table-wrap table{width:100%;min-width:650px;border-collapse:collapse;font-family:var(--mono);font-size:9px;text-align:left}.table-wrap th,.table-wrap td{padding:13px 18px;border-bottom:1px solid var(--line);white-space:nowrap}.table-wrap th{color:#7e8e84;font-size:8px;font-weight:400;text-transform:uppercase}.table-wrap tr:last-child td{border-bottom:0}.table-wrap td:first-child{display:grid;gap:3px}.table-wrap td strong{color:var(--ink);font-family:var(--sans);font-size:10px}.table-wrap td small{color:var(--muted);font-size:8px}.code-pill{padding:4px 5px;background:#e7edf0}.table-action{color:var(--ink);text-decoration:underline;text-underline-offset:4px}.empty-state{padding:30px 18px;color:var(--muted);font-family:var(--mono);font-size:10px}.catalogue-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px}.catalogue-card{padding:20px;border:1px solid var(--line);background:#ffffff6b}.catalogue-top{display:flex;justify-content:space-between;align-items:center}.catalogue-card h3{min-height:48px;margin:38px 0 4px;font-size:20px;letter-spacing:-.07em;line-height:1.15}.catalogue-card p{margin:0 0 28px}.catalogue-meta{display:flex;gap:17px;margin-bottom:12px;color:var(--muted);font-family:var(--mono);font-size:8px}.catalogue-meta b{display:block;color:var(--ink);font-family:var(--sans);font-size:18px;letter-spacing:-.06em}.catalogue-footer{display:flex;justify-content:space-between;gap:10px;margin-top:23px;padding-top:12px;border-top:1px solid var(--line);color:var(--muted);font-family:var(--mono);font-size:8px}.catalogue-footer strong{color:var(--ink);font-weight:500}.inline-form{display:grid;grid-template-columns:1.5fr .6fr 1fr auto;gap:13px;align-items:end;padding:17px}.inline-form label,.grade-modal label{display:grid;gap:6px;color:var(--muted);font-family:var(--mono);font-size:8px;text-transform:uppercase}.inline-form input,.grade-modal input,.login-form-wrap input{width:100%;padding:10px 9px;color:var(--ink);border:1px solid var(--line);outline:none;background:#ffffffa3;font-family:var(--sans);font-size:12px}.inline-form input:focus,.grade-modal input:focus,.login-form-wrap input:focus{border-color:#8cae33}.queue-badge{display:flex;align-items:center;gap:10px;padding:9px 11px;color:var(--navy);background:var(--orange);font-family:var(--mono);font-size:8px;text-transform:uppercase}.queue-badge strong{font-family:var(--sans);font-size:27px;letter-spacing:-.09em;line-height:1}.modal-backdrop{position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#0d252d73}.grade-modal{position:relative;width:min(100%,390px);display:grid;gap:14px;padding:29px;background:var(--paper);box-shadow:0 20px 70px #00000040}.grade-modal h3{margin:2px 0 0;font-size:26px;letter-spacing:-.07em}.grade-modal p{margin:0 0 14px;color:var(--muted);font-family:var(--mono);font-size:9px}.modal-close{position:absolute;top:13px;right:14px;border:0;background:transparent;color:var(--muted);font-family:var(--mono)}.loading-screen{display:grid;min-height:100vh;place-content:center;justify-items:center;gap:12px;color:var(--muted);font-family:var(--mono);font-size:10px}.loading-screen button{padding:8px 12px;border:1px solid var(--line);background:var(--paper);font-family:var(--mono);font-size:9px}.toast{position:fixed;z-index:30;right:20px;bottom:20px;max-width:310px;padding:13px 15px;color:var(--navy);background:var(--lime);box-shadow:0 15px 40px #0000002b;font-family:var(--mono);font-size:9px}.login-page{display:grid;min-height:100vh;grid-template-columns:1.1fr .9fr;background:var(--paper)}.login-story{position:relative;display:flex;flex-direction:column;padding:38px clamp(28px,7vw,115px);color:var(--paper);overflow:hidden;background:radial-gradient(circle at 82% 17%,rgba(201,232,109,.18),transparent 24%),var(--navy)}.login-story:before{position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(rgba(247,248,241,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(247,248,241,.06) 1px,transparent 1px);background-size:48px 48px;content:"";-webkit-mask-image:linear-gradient(to bottom,black,transparent 80%);mask-image:linear-gradient(to bottom,black,transparent 80%)}.login-story>*{position:relative;z-index:1}.login-story .product-lockup{color:var(--paper)}.story-body{margin:auto 0}.story-body .overline{color:var(--lime)}.story-body h1{margin:24px 0 26px;font-size:clamp(48px,7vw,98px);letter-spacing:-.09em;line-height:.95}.story-body h1 em{color:var(--lime);font-style:normal}.story-body p{max-width:420px;color:#f7f8f1ab;font-size:15px;line-height:1.7}.story-footer{display:flex;justify-content:space-between;color:#f7f8f17a;font-family:var(--mono);font-size:9px;text-transform:uppercase}.login-form-side{display:flex;flex-direction:column;padding:38px clamp(28px,8vw,120px)}.login-form-wrap{width:min(100%,380px);margin:auto 0}.mobile-lockup{display:none}.login-form-wrap>.overline{color:#7a8b80}.login-form-wrap h2{margin:14px 0 7px;font-size:29px;letter-spacing:-.08em}.muted{margin:0;color:var(--muted);font-size:13px}.login-form-wrap form{display:grid;gap:17px;margin-top:34px}.login-form-wrap label{display:grid;gap:7px;color:var(--muted);font-family:var(--mono);font-size:9px;text-transform:uppercase}.login-form-wrap input{padding:13px 11px;background:#fff}.form-error{padding:10px;color:#934b2a;background:#f6dfd1;font-family:var(--mono);font-size:9px}.login-form-wrap .primary-button{width:100%}.demo-credential{display:grid;gap:8px;margin-top:48px;padding-top:18px;border-top:1px solid var(--line)}.demo-credential .overline{color:#7a8b80}.demo-credential button{display:flex;justify-content:space-between;padding:0;color:var(--ink);border:0;background:transparent;font-family:var(--mono);font-size:9px;text-align:left}.demo-credential b{color:#7ca11c;font-weight:500}.back-link{align-self:flex-start;color:var(--muted);font-family:var(--mono);font-size:9px}@media (max-width:1050px){.app-shell{grid-template-columns:200px minmax(0,1fr)}.main-area{padding-right:30px;padding-left:30px}.overview-grid{grid-template-columns:1fr}.catalogue-grid{grid-template-columns:repeat(2,1fr)}.login-page{grid-template-columns:1fr 1fr}}@media (max-width:760px){.app-shell{display:block}.sidebar{display:block;padding:15px 18px}.sidebar nav{display:flex;gap:4px;margin-top:17px;overflow:auto}.side-section-label,.sidebar-bottom{display:none}.side-link{min-width:115px;grid-template-columns:20px 1fr;padding:10px 8px;font-size:8px}.side-link i{display:none}.main-area{padding:23px 18px 45px}.topbar{min-height:58px;padding-bottom:21px}.topbar h1{font-size:23px}.quiet-button,.logout-button{display:none}.stats-grid{grid-template-columns:repeat(2,1fr)}.stat-card{min-height:115px}.welcome-row,.view-intro{display:block}.welcome-row .primary-button,.view-intro .primary-button{margin-top:22px}.welcome-row h2,.view-intro h2{font-size:32px}.catalogue-grid,.inline-form{grid-template-columns:1fr}.course-row{grid-template-columns:54px 1fr 60px}.course-progress{grid-column:2 / 4;grid-row:2}.course-state{grid-column:3;grid-row:1;justify-self:end}.login-page{display:block}.login-story{min-height:400px;padding:25px 24px}.story-body{margin:70px 0 45px}.story-body h1{font-size:60px}.login-form-side{min-height:560px;padding:36px 25px}.mobile-lockup{display:flex;align-items:center;gap:10px;margin-bottom:54px;font-family:var(--mono);font-size:12px}.login-form-wrap{margin:0}.back-link{margin-top:auto}}
