@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--ink:#182338;--muted:#7e899b;--line:#e9edf3;--paper:#fff;--bg:#f5f7fb;--purple:#6c5ce7;--purple-dark:#5142ce;--green:#2ca77e;--shadow:0 8px 28px rgba(34,47,74,.055)}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:'DM Sans',sans-serif;color:var(--ink);font-size:14px}.app-shell{max-width:1400px;margin:auto;padding:0 48px}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e9edf2}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);font-family:Manrope,sans-serif;font-weight:800;font-size:16px;letter-spacing:-.5px}.brand-mark{width:34px;height:34px;border-radius:11px;background:var(--purple);color:white;display:grid;place-items:center;font-size:18px;box-shadow:0 5px 12px #7668e64a}.brand small{display:block;color:#a0a9b8;font:700 8px 'DM Sans',sans-serif;letter-spacing:1.1px;margin-top:1px}.top-actions{display:flex;align-items:center;gap:24px}.save-indicator{font-size:11px;color:#7c889b}.save-indicator i{display:inline-block;width:7px;height:7px;background:#38b486;border-radius:50%;margin-right:6px}.button{height:42px;border-radius:9px;padding:0 17px;border:1px solid var(--line);font:600 12px 'DM Sans',sans-serif;cursor:pointer;transition:.18s}.button:hover{transform:translateY(-1px)}.button-quiet{background:white;color:#68758a}.button-primary{background:var(--purple);border-color:var(--purple);color:white;box-shadow:0 5px 13px #6c5ce733}.button-primary:hover{background:var(--purple-dark)}main{padding:33px 0 0}.intro{display:flex;align-items:center;justify-content:space-between;margin-bottom:27px}.eyebrow{color:#9aa4b4;font-size:9px;letter-spacing:1.45px;font-weight:700;margin:0 0 8px}.intro h1{font:800 29px Manrope,sans-serif;letter-spacing:-1px;margin:0 0 7px}.subtitle{color:#8993a4;margin:0;font-size:12px}.round-badge{display:flex;align-items:center;gap:10px;border:1px solid #e9edf3;border-radius:12px;background:#fff;padding:10px 16px;color:#929cad;font-size:10px;line-height:1.5}.round-badge strong{color:#4a566d;font-size:12px}.round-icon{width:30px;height:30px;border-radius:9px;background:#f1efff;color:#7a6ce8;display:grid;place-items:center;font-size:16px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:17px}.stat-card{min-height:91px;border:1px solid var(--line);border-radius:12px;background:var(--paper);padding:16px 18px;box-shadow:var(--shadow);display:grid;grid-template-columns:34px 1fr;grid-template-rows:1fr auto;column-gap:12px;align-items:center}.stat-icon{grid-row:1/3;width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-size:15px}.purple{background:#f0eeff;color:#796be4}.blue{background:#eaf3ff;color:#5789d6}.green{background:#e9f8f2;color:#3aa27c}.stat-label{display:block;color:#929cad;font-size:10px;margin-bottom:4px}.stat-card strong{font:800 19px Manrope,sans-serif;letter-spacing:-.5px}.stat-card strong small{font:500 11px 'DM Sans',sans-serif;color:#a6afbd}.progress-track{height:4px;background:#eff0f5;border-radius:4px;margin-top:8px;grid-column:2}.progress-track span{display:block;width:0;height:100%;background:var(--purple);border-radius:4px;transition:width .25s}.stat-foot{grid-column:2;color:#adb5c2;font-size:9px;margin-top:2px}.notice{display:flex;gap:11px;padding:12px 15px;background:#fffaf0;border:1px solid #f7e8c3;border-radius:10px;color:#836d3f;margin-bottom:20px;font-size:10px;line-height:1.55}.notice p{margin:0}.notice strong{font-size:11px;color:#6f5c31}.notice-icon{width:18px;height:18px;flex:none;border-radius:50%;display:grid;place-items:center;background:#f5eacb;color:#9d7d35;font-weight:700;font-size:11px}.workspace{display:grid;grid-template-columns:1fr 1fr;gap:16px}.panel{border:1px solid var(--line);border-radius:13px;background:var(--paper);box-shadow:var(--shadow);min-width:0}.students-panel{padding:20px 20px 0}.teachers-panel{padding:20px}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.panel-heading .eyebrow{font-size:8px;margin-bottom:6px}.panel-heading h2{font:700 15px Manrope,sans-serif;margin:0;letter-spacing:-.3px}.count-pill{font-size:9px;color:#7061dc;background:#f2f0ff;padding:6px 9px;border-radius:20px}.toolbar{display:flex;gap:9px;margin-bottom:10px}.search-box{display:flex;align-items:center;gap:8px;border:1px solid #e9edf3;background:#fbfcfd;border-radius:8px;height:34px;padding:0 10px;flex:1;min-width:0;color:#9ca6b4}.search-box span{font-size:18px;line-height:1;transform:rotate(-20deg)}.search-box input{border:0;outline:0;background:transparent;width:100%;font:11px 'DM Sans',sans-serif;color:var(--ink)}.search-box input::placeholder{color:#adb5c1}.select-wrap select{height:34px;border:1px solid #e9edf3;background:#fbfcfd;border-radius:8px;padding:0 24px 0 10px;color:#788497;font:10px 'DM Sans',sans-serif}.student-list{height:284px;overflow:auto;border-top:1px solid #f0f2f6}.student-row{height:41px;border-bottom:1px solid #f1f3f7;display:grid;grid-template-columns:26px 1fr auto;align-items:center;padding:0 5px;cursor:pointer;transition:.14s}.student-row:hover{background:#faf9ff}.student-row.selected{background:#f4f2ff}.student-avatar{width:24px;height:24px;background:#f0efff;color:#7869df;border-radius:8px;display:grid;place-items:center;font-size:9px;font-weight:700}.student-name{font-size:11px;font-weight:600;padding-left:8px}.student-meta{font-size:9px;color:#a0aaba}.student-row.assigned{cursor:default;opacity:.65}.student-row.assigned .student-avatar{background:#eaf7f1;color:#35a07a}.student-row.assigned .student-name{text-decoration:line-through;color:#929bab}.list-footer{height:39px;display:flex;justify-content:space-between;align-items:center;color:#a0a9b7;font-size:9px}.list-footer b{color:#8578e4;margin-left:4px}.teacher-search-wrap{margin:-1px 0 12px}.teacher-list{height:316px;overflow:auto}.teacher-row{display:grid;grid-template-columns:30px 1fr auto;gap:9px;align-items:center;padding:8px 5px;border-bottom:1px solid #f0f2f6;min-height:49px}.teacher-avatar{width:29px;height:29px;border-radius:9px;background:#eef4fb;color:#648bb5;display:grid;place-items:center;font-size:10px;font-weight:700}.teacher-name{font-size:10px;font-weight:600;margin-bottom:4px}.teacher-sub{font-size:9px;color:#a4adba}.teacher-capacity{display:flex;align-items:center;gap:7px;min-width:116px;justify-content:flex-end}.capacity-number{font:700 11px Manrope,sans-serif;min-width:22px;text-align:right}.capacity-bars{display:flex;gap:2px}.capacity-bars i{width:6px;height:14px;border-radius:2px;background:#e7eaf0}.capacity-bars i.filled{background:#8c80ec}.capacity-bars i.low{background:#efb553}.capacity-bars i.empty{background:#e7eaf0}.teacher-row.complete .teacher-avatar{background:#f2f3f5;color:#afb6c2}.teacher-row.complete .teacher-name{color:#a0a9b7}.teacher-row.complete .capacity-number{color:#bdc4cd}.text-button{border:0;background:transparent;color:#7869de;font:600 10px 'DM Sans',sans-serif;cursor:pointer}.teacher-legend{border-top:1px solid #f0f2f6;padding-top:13px;display:flex;gap:15px;color:#a0a9b7;font-size:8px}.teacher-legend span{display:flex;align-items:center;gap:5px}.dot{width:6px;height:6px;border-radius:50%}.dot-high{background:#8c80ec}.dot-low{background:#efb553}.dot-none{background:#cfd4dc}.bottom-bar{display:flex;justify-content:space-between;align-items:center;padding:15px 17px;border:1px solid #e9edf3;background:white;border-radius:12px;margin-top:16px;box-shadow:var(--shadow)}.bottom-bar>div{display:flex;align-items:center;gap:10px}.bottom-check{width:28px;height:28px;border-radius:9px;display:grid;place-items:center;background:#eaf8f2;color:#35a17a;font-weight:700}.bottom-bar strong{display:block;font-size:10px}.bottom-bar small{display:block;color:#9ba5b3;font-size:9px;margin-top:3px}.button-caret{margin-left:10px;color:#d1cafa}.privacy-note{text-align:center;color:#aab2bf;font-size:9px;margin:12px 0 20px}footer{text-align:center;color:#aab2bf;font-size:9px;padding:16px;border-top:1px solid #e9edf2}footer span{margin:0 7px;color:#cacfd7}.dialog{border:0;border-radius:16px;padding:27px;width:min(440px,calc(100% - 32px));box-shadow:0 20px 80px #17233a40;color:var(--ink)}.dialog::backdrop{background:#1d294255;backdrop-filter:blur(2px)}.dialog form{position:relative}.dialog h2{font:800 21px Manrope,sans-serif;margin:0 0 6px;letter-spacing:-.5px}.dialog-subtitle{font-size:11px;color:#8994a5;line-height:1.5;margin:0 0 22px}.dialog-close{position:absolute;right:0;top:-7px;border:0;background:#f3f5f8;border-radius:50%;width:28px;height:28px;color:#8993a2;font-size:20px;cursor:pointer}.field-label{display:block;font-size:10px;font-weight:700;margin-bottom:7px}.field-select{width:100%;height:42px;border:1px solid #e4e8ef;border-radius:8px;padding:0 11px;color:#344056;background:#fff}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.capacity-dialog{width:min(540px,calc(100% - 32px))}.capacity-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;max-height:310px;overflow:auto}.capacity-item{display:flex;align-items:center;justify-content:space-between;background:#f8f9fb;border:1px solid #edf0f4;border-radius:8px;padding:7px 9px;font-size:10px}.capacity-item input{width:54px;height:29px;border:1px solid #e2e6ed;border-radius:6px;padding:0 6px;font:600 11px 'DM Sans',sans-serif;text-align:center}.capacity-total{display:flex;justify-content:space-between;padding:13px 2px 0;color:#818c9e;font-size:10px}.capacity-total strong{color:#4b5a70}.inline-error{font-size:10px;color:#c65353;margin:9px 0 0}.empty-state{padding:35px 12px;text-align:center;color:#a0a9b7;font-size:11px}.teacher-empty{padding:25px 5px}.complete-state{border:1px solid #dcefe7;background:#f4fbf7;color:#47886d;border-radius:9px;padding:13px;font-size:10px;text-align:center;margin:12px 0}
@media(max-width:900px){.app-shell{padding:0 24px}.workspace{grid-template-columns:1fr}.student-list{height:250px}.teacher-list{height:250px}.intro h1{font-size:25px}}
@media(max-width:560px){.app-shell{padding:0 14px}.topbar{height:65px}.top-actions{gap:10px}.save-indicator{display:none}.top-actions .button{height:34px;padding:0 10px;font-size:10px}.intro{align-items:flex-start}.round-badge{padding:7px 9px}.intro h1{font-size:22px}.subtitle{max-width:275px;line-height:1.5}.stats{grid-template-columns:1fr;gap:8px}.stat-card{min-height:70px}.workspace{gap:11px}.students-panel,.teachers-panel{padding:15px 13px}.panel-heading h2{font-size:13px}.teacher-legend{gap:9px;font-size:7px}.bottom-bar{padding:12px}.bottom-bar .button{height:39px;padding:0 11px;font-size:10px}.capacity-grid{grid-template-columns:1fr}.notice{font-size:9px}}
.turn-panel{background:#fff;border:1px solid #e8eaf2;border-radius:14px;padding:19px 20px 18px;margin:0 0 17px;box-shadow:var(--shadow)}.turn-topline{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.turn-topline .eyebrow{margin-bottom:5px}.turn-topline h2{font:800 18px Manrope,sans-serif;letter-spacing:-.5px;margin:0}.undo-button{height:34px;font-size:10px}.undo-button:disabled{opacity:.48;cursor:not-allowed;transform:none}.turn-student{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:10px;background:linear-gradient(100deg,#f5f3ff,#faf9ff);border:1px solid #ebe8ff}.turn-student-avatar{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#e8e4ff;color:#6555d2;font:800 13px Manrope,sans-serif;flex:none}.turn-student>div{display:grid;gap:2px}.turn-label{font-size:8px;letter-spacing:1px;color:#9690c0;font-weight:700}.turn-student strong{font:800 14px Manrope,sans-serif}.turn-student small{font-size:9px;color:#939caf}.turn-instruction{margin-left:auto;color:#8274df;font-size:10px;font-weight:600}.turn-teachers-heading{display:flex;justify-content:space-between;align-items:center;margin:17px 1px 9px}.turn-teachers-heading strong{font-size:10px}.turn-teachers-heading span{font-size:9px;color:#9ba5b4}.turn-teacher-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.turn-teacher{display:flex;align-items:center;gap:8px;min-width:0;min-height:51px;text-align:left;padding:7px 8px;background:#fff;border:1px solid #e9edf3;border-radius:9px;cursor:pointer;transition:background .15s,border-color .15s,transform .15s}.turn-teacher:hover:not(:disabled){background:#f8f7ff;border-color:#c9c1fa;transform:translateY(-1px)}.turn-teacher-avatar{width:27px;height:27px;display:grid;place-items:center;flex:none;background:#eef3fa;color:#6988aa;border-radius:8px;font-size:8px;font-weight:700}.turn-teacher-info{display:grid;gap:3px;min-width:0;flex:1}.turn-teacher-info strong{font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.turn-teacher-info small{font-size:8px;color:#8794a7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.turn-teacher-count{font:800 11px Manrope,sans-serif;color:#7668dd;background:#f1efff;border-radius:6px;padding:4px 5px}.turn-teacher-full{background:#f8f9fb;cursor:not-allowed;opacity:.58}.turn-teacher-full .turn-teacher-count{color:#aeb5c0;background:#eef0f3}.turn-teacher-full .turn-teacher-info small{color:#b0b7c1}.turn-complete{grid-column:1/-1;padding:18px;border:1px solid #dcefe7;background:#f4fbf7;color:#47886d;text-align:center;border-radius:9px;font-size:11px;font-weight:600}.confirm-card{display:flex;align-items:center;justify-content:center;gap:12px;background:#f7f6ff;border:1px solid #ece9ff;padding:16px;border-radius:10px}.confirm-student,.confirm-teacher{font:700 12px Manrope,sans-serif}.confirm-arrow{color:#8d81e7}.confirm-note{text-align:center;font-size:10px;color:#8994a5;margin:12px 0 0}
@media(max-width:1000px){.turn-teacher-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:620px){.turn-panel{padding:15px 13px}.turn-topline{align-items:flex-start}.undo-button{padding:0 9px;font-size:9px}.turn-instruction{display:none}.turn-teacher-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.turn-teacher{padding:7px 6px;gap:6px}.turn-teacher-info strong{font-size:8px}}
.turn-actions{display:flex;gap:7px;align-items:center}.skip-button{height:34px;font-size:10px;color:#7367c7;background:#f8f7ff;border-color:#e6e2ff}.skip-button:disabled{opacity:.45;cursor:not-allowed;transform:none}.teacher-row-button{width:100%;font:inherit;color:inherit;text-align:left;border:0;border-bottom:1px solid #f0f2f6;background:transparent;cursor:pointer}.teacher-row-button:hover{background:#faf9ff}.teacher-row-button.complete:hover{background:#f7f8fa}.student-row.skipped{background:#fffaf0}.student-row.skipped .student-avatar{background:#fff0d4;color:#b18336}.student-row.skipped .student-meta{color:#b18336}.student-row{cursor:pointer}.student-row.assigned{cursor:default}.detail-dialog{width:min(480px,calc(100% - 32px))}.assigned-students-list{max-height:350px;overflow:auto;border-top:1px solid #edf0f4}.assigned-student-row{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:9px;min-height:42px;border-bottom:1px solid #f0f2f6;padding:5px 3px}.assigned-student-row .student-avatar{width:25px;height:25px}.assigned-student-row strong{font-size:10px}.assigned-student-row small{font-size:9px;color:#99a3b1}
@media(max-width:620px){.turn-actions{flex-direction:column;align-items:flex-end;gap:5px}.turn-actions .button{height:30px;font-size:8px}.assigned-students-list{max-height:55vh}}
.student-row.assigned{cursor:pointer;opacity:.82}.student-row.assigned:hover{background:#f2fbf6}.assigned-student-row{grid-template-columns:28px 1fr auto auto}.unassign-mini{border:1px solid #f0dddd;border-radius:6px;background:#fff8f8;color:#b85c5c;padding:5px 8px;font:600 9px 'DM Sans',sans-serif;cursor:pointer}.unassign-mini:hover{background:#fff0f0;border-color:#e8caca}.button-danger{background:#c75e64;border-color:#c75e64;box-shadow:0 5px 13px #c75e6433}.button-danger:hover{background:#ad4e55}
@media(max-width:520px){.assigned-student-row{grid-template-columns:28px 1fr auto}.assigned-student-row .unassign-mini{grid-column:2/4;justify-self:end}}
.turn-teacher-search{width:100%;height:42px;margin:10px 0 0;background:#fff}.turn-teacher-results{max-height:260px;overflow-y:auto;border:1px solid #e9edf3;border-top:0;border-radius:0 0 9px 9px;background:#fff}.teacher-search-prompt,.teacher-search-more{padding:13px 12px;color:#9ba5b4;font-size:10px}.turn-teacher-result{display:grid;grid-template-columns:29px 1fr auto;gap:9px;align-items:center;width:100%;min-height:42px;padding:6px 10px;text-align:left;border:0;border-bottom:1px solid #f0f2f6;background:#fff;cursor:pointer}.turn-teacher-result:hover,.turn-teacher-result:focus{background:#f8f7ff;outline:0}.turn-teacher-result:last-of-type{border-bottom:0}.turn-teacher-result strong{font-size:10px}.turn-teacher-result-capacity{padding:5px 8px;border-radius:7px;background:#f1efff;color:#7061dc;font-size:9px;font-weight:700}.teacher-search-more{text-align:center;border-top:1px solid #f0f2f6}
@media(max-width:560px){.turn-teacher-search{height:38px}.turn-teacher-results{max-height:220px}}
.teacher-list-hint{font-size:9px;color:#9ba5b4;margin:7px 1px 0}.teacher-search-wrap{margin-bottom:10px}
.save-indicator i.pending{background:#edb84b}.save-indicator i.error{background:#db6c6c}.save-indicator i.saved{background:#38b486}body.loading .app-shell{opacity:.65;pointer-events:none;transition:opacity .2s}.save-indicator{transition:color .15s}
.bottom-actions{display:flex;align-items:center;gap:8px}.save-indicator i.error{background:#db6c6c}.save-indicator i.pending{background:#edb84b}
@media(max-width:760px){.bottom-bar{align-items:flex-start;gap:12px;flex-wrap:wrap}.bottom-actions{width:100%;justify-content:flex-end}.bottom-bar .button{font-size:10px}}
@media(max-width:520px){.bottom-actions{display:grid;grid-template-columns:1fr 1.15fr}.bottom-actions .button{padding:0 8px;white-space:nowrap;font-size:9px}.bottom-bar>div{max-width:100%}.save-indicator{display:none}}
