@import"https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;700&display=swap";:root{font-family:Noto Sans KR,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#263344;background:#f7f9fc;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #263344;--muted: #66758a;--soft: #8794a7;--line: #e3e9f1;--surface: #ffffff;--background: #f7f9fc;--blue: #2769db;--blue-dark: #1b4fae;--blue-soft: #eaf1ff;--mint: #168a78;--mint-soft: #e4f7f2;--purple: #7655c8;--purple-soft: #f0ebff;--red: #ca4b4b;--red-soft: #fff1f0;--shadow: 0 12px 30px rgba(29, 47, 78, .06)}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--background)}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit}.app-shell{min-height:100vh;display:flex}.sidebar{width:260px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;padding:26px 18px 20px;flex:0 0 260px;z-index:10;transition:width .2s ease,flex-basis .2s ease,padding .2s ease}.brand-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.sidebar-toggle{display:inline-grid;place-items:center;flex:0 0 auto;width:32px;height:32px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--muted)}.sidebar-toggle:hover{color:var(--blue);background:var(--blue-soft);border-color:#c8d8f7}.brand{display:flex;align-items:center;gap:11px;color:var(--ink)}.brand-mark{width:38px;height:38px;display:block;border-radius:12px;object-fit:cover;flex:0 0 auto}.brand strong{display:block;letter-spacing:.08em;font-size:19px}.brand span:not(.brand-mark){display:block;color:var(--soft);font-size:12px;margin-top:2px}.role-switcher{margin:36px 7px 26px}.role-switcher button{margin:7px 0 0;padding:0;width:100%;display:flex;justify-content:space-between;align-items:center;color:var(--ink);border:0;background:transparent;font-size:17px;font-weight:700;text-align:left}.role-switcher p{margin:7px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.eyebrow{display:block;color:var(--soft);font-size:12px;letter-spacing:.04em;font-weight:700}.main-nav{display:grid;gap:5px}.main-nav button,.sidebar-link{border:0;background:transparent;color:var(--muted);border-radius:11px;padding:13px 12px;display:flex;align-items:center;gap:12px;font-weight:700;font-size:15px;text-align:left;position:relative}.main-nav button:hover,.sidebar-link:hover{background:#f5f7fb;color:var(--ink)}.main-nav button.is-active{color:var(--blue);background:var(--blue-soft)}.nav-live-dot{width:7px;height:7px;background:#e95d5d;border-radius:50%;margin-left:auto}.sidebar-bottom{margin-top:auto;display:grid;gap:10px}.connection-card{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;align-items:center;min-width:0;padding:11px;border:1px solid var(--line);border-radius:12px}.connection-card strong,.connection-card span{display:block}.connection-card strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.connection-card div span{color:var(--soft);margin-top:3px;font-size:11px}.connection-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;flex:0 0 30px;background:var(--mint-soft);color:var(--mint)}.connection-icon.connecting{background:#fff6da;color:#a77708}.connection-icon.error{background:var(--red-soft);color:var(--red)}.sidebar-link{font-size:13px;padding:8px 10px}.sidebar.is-collapsed{width:82px;flex-basis:82px;padding-left:13px;padding-right:13px}.sidebar.is-collapsed .brand-row{justify-content:center}.sidebar.is-collapsed .brand{display:block}.sidebar.is-collapsed .brand>div,.sidebar.is-collapsed .role-switcher,.sidebar.is-collapsed .main-nav button>span:not(.nav-live-dot),.sidebar.is-collapsed .connection-card>div,.sidebar.is-collapsed .sidebar-link>span{display:none}.sidebar.is-collapsed .brand-mark{width:42px;height:42px}.sidebar.is-collapsed .sidebar-toggle{position:absolute;top:72px;left:50%;transform:translate(-50%)}.sidebar.is-collapsed .main-nav{margin-top:42px}.sidebar.is-collapsed .main-nav button,.sidebar.is-collapsed .sidebar-link{justify-content:center;padding-left:10px;padding-right:10px}.sidebar.is-collapsed .nav-live-dot{position:absolute;top:8px;right:8px;margin:0}.sidebar.is-collapsed .connection-card{grid-template-columns:30px;justify-content:center;padding-left:8px;padding-right:8px}.content-shell{flex:1;min-width:0;padding:34px 42px 60px}.page-header{max-width:1440px;margin:0 auto 31px;display:flex;align-items:flex-end;justify-content:space-between;gap:24px}.page-header h1{margin:8px 0 0;font-size:clamp(26px,3vw,34px);letter-spacing:-.04em;line-height:1.25;color:var(--ink)}.header-actions{display:flex;align-items:center;gap:14px}.class-chip{border:1px solid var(--line);background:#fff;border-radius:20px;padding:9px 13px;display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px;font-weight:700;white-space:nowrap}.class-chip__dot{width:8px;height:8px;background:#52ad8f;border-radius:50%}.avatar{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;border:0;font-weight:700;color:#fff;background:var(--blue);flex:0 0 auto}.avatar-teacher{background:var(--ink)}.avatar-connected{background:#6985a7}.avatar-viewing{background:#8d73ce}.avatar-working{background:var(--blue)}.avatar-submitted{background:var(--mint)}.avatar-offline{background:#9ba5b1}.page-body{max-width:1440px;margin:0 auto}.panel{background:var(--surface);border:1px solid var(--line);border-radius:17px;box-shadow:var(--shadow)}.hero-card{min-height:256px;background:#1d2e46;color:#fff;border-radius:19px;padding:33px 39px;display:flex;justify-content:space-between;overflow:hidden;position:relative}.hero-card:after{content:"";position:absolute;right:210px;top:-140px;width:330px;height:330px;border:1px solid rgba(255,255,255,.09);border-radius:50%}.hero-card__label,.hero-card p{color:#b5c5d9}.hero-card__label{font-size:13px}.hero-card h2{margin:13px 0 9px;max-width:660px;font-size:clamp(24px,3vw,35px);line-height:1.3;letter-spacing:-.04em}.hero-card p{margin:0;max-width:650px;font-size:16px;line-height:1.7}.hero-card__actions{display:flex;gap:10px;margin-top:26px}.hero-card .soft-button{color:#dce8f8;border-color:#fff3;background:#ffffff14}.hero-illustration{align-self:center;width:145px;height:145px;border-radius:50%;background:#385271;display:grid;place-items:center;align-content:center;gap:9px;position:relative;z-index:1;transform:rotate(8deg)}.hero-illustration span{font-size:16px;font-weight:700;line-height:1.35;text-align:center}.primary-button,.secondary-button,.soft-button,.danger-button,.text-button{border-radius:10px;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:10px 15px;font-weight:700;font-size:14px;border:1px solid transparent}.primary-button{background:var(--blue);color:#fff;border-color:var(--blue)}.primary-button:hover{background:var(--blue-dark)}.secondary-button{background:#fff;color:var(--ink);border-color:#cfd9e6}.secondary-button:hover,.soft-button:hover{background:#f5f8fc}.soft-button{background:#f5f7fb;color:var(--muted);border-color:transparent}.danger-button{color:var(--red);background:var(--red-soft)}.text-button{color:var(--blue);background:transparent;padding:4px 0;min-height:30px}.play-icon{font-size:12px}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px}.metric-card{min-height:156px;padding:20px;border-radius:16px;border:1px solid var(--line);position:relative;background:#fff}.metric-card .metric-icon{width:37px;height:37px;border-radius:11px;display:grid;place-items:center;margin-bottom:16px}.metric-card strong{display:block;margin:6px 0 3px;font-size:30px;letter-spacing:-.05em}.metric-label,.metric-detail{display:block}.metric-label{font-size:13px;font-weight:700}.metric-detail{font-size:12px;color:var(--soft)}.tone-blue .metric-icon{background:var(--blue-soft);color:var(--blue)}.tone-mint .metric-icon{background:var(--mint-soft);color:var(--mint)}.tone-purple .metric-icon{background:var(--purple-soft);color:var(--purple)}.section-block{margin-top:38px}.section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.section-heading h2,.panel-heading h2{margin:7px 0 0;font-size:21px;letter-spacing:-.035em;line-height:1.35}.activity-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.activity-card{display:flex;align-items:center;gap:13px;width:100%;border:1px solid var(--line);background:#fff;border-radius:13px;text-align:left;color:var(--ink);padding:16px}.activity-card:hover,.activity-card.is-current{border-color:#b7cdf8;background:#f9fbff}.activity-card__icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;background:var(--blue-soft);color:var(--blue);flex:0 0 auto}.activity-card--new .activity-card__icon{background:#f4f5f7;color:var(--muted)}.activity-card__body{min-width:0;flex:1}.activity-card__body strong,.activity-card__body span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.activity-card__body strong{font-size:14px}.activity-card__body span{color:var(--soft);font-size:12px;margin-top:4px}.classroom-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:18px;padding:19px 22px}.classroom-summary h2{margin:6px 0;font-size:19px}.classroom-summary p{margin:0;color:var(--muted);font-size:12px}.classroom-summary__actions{display:flex;gap:8px;flex:0 0 auto}.form-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(350px,.95fr);gap:20px}.form-card{padding:27px}.step-count{color:var(--soft);font-size:13px}.field{display:block;margin:22px 0}.field>span{display:block;font-weight:700;font-size:14px;margin-bottom:9px}.field input,.field textarea,.draft-card textarea{width:100%;border:1px solid #d5deea;border-radius:10px;color:var(--ink);background:#fbfcfe;padding:12px 14px;outline:none;line-height:1.65}.field input:focus,.field textarea:focus,.draft-card textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2769db1c;background:#fff}.field textarea,.draft-card textarea{resize:vertical}.field-help,.optional{color:var(--soft);font-size:12px;font-weight:400}.field-tools,.answer-tools{display:flex;align-items:center;gap:8px;margin-top:9px;flex-wrap:wrap}.input-with-icon{display:flex;align-items:center;gap:8px;border:1px solid #d5deea;border-radius:10px;background:#fbfcfe;padding-left:12px;color:var(--soft)}.input-with-icon:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px #2769db1c;background:#fff}.input-with-icon input{border:0;box-shadow:none;padding-left:0;background:transparent}.input-with-icon input:focus{box-shadow:none}.ai-helper{display:flex;align-items:center;gap:12px;margin:30px 0 20px;padding:16px;border:1px solid #e1dafa;background:#fbfaff;border-radius:13px}.ai-helper__icon{width:38px;height:38px;display:grid;place-items:center;background:var(--purple-soft);color:var(--purple);border-radius:11px;flex:0 0 auto}.ai-helper>div:nth-child(2){flex:1}.ai-helper strong{font-size:14px}.ai-helper p{margin:4px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.form-actions{margin-top:34px;display:flex;justify-content:flex-end;gap:9px}.ocr-tool{border:1px dashed #c6d3e6;border-radius:13px;padding:17px;background:#fbfcff}.ocr-tool__header{display:flex;justify-content:space-between;align-items:flex-start}.ocr-tool h3{margin:5px 0 0;font-size:16px}.ocr-tool p{color:var(--muted);margin:9px 0 13px;font-size:13px;line-height:1.6}.ocr-result{display:block;width:100%;margin-top:12px;border:1px solid #d5deea;border-radius:9px;padding:10px;line-height:1.6}.ocr-hint{display:flex;gap:7px;align-items:center;color:var(--soft);font-size:12px;margin-top:12px}.form-error{color:var(--red)!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.icon-button{display:inline-grid;place-items:center;width:34px;height:34px;border:0;background:transparent;color:var(--muted);border-radius:8px}.icon-button:hover{background:#f3f5f8}.full-width{width:100%}.soft-button.is-active{color:var(--blue);background:var(--blue-soft)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.live-page{max-width:1600px;margin:0 auto}.live-topbar{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:14px 18px;background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:16px}.live-topbar__title,.live-topbar__controls,.connection-pill,.live-actions,.control-label,.student-summary,.live-notice,.detail-actions{display:flex;align-items:center}.live-topbar__title{gap:10px;min-width:0}.live-topbar__title .muted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:13px}.live-dot,.notice-dot{width:8px;height:8px;display:inline-block;border-radius:50%;background:#e45a5a;box-shadow:0 0 0 4px #e45a5a1f}.live-topbar__controls{gap:10px}.connection-pill{gap:7px;color:var(--mint);background:var(--mint-soft);border-radius:20px;padding:8px 12px;font-size:12px;font-weight:700;white-space:nowrap}.live-grid{display:grid;grid-template-columns:280px minmax(380px,1fr) 280px;gap:16px;align-items:start}.student-panel,.presentation-panel,.control-panel{min-height:620px;padding:20px}.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;color:var(--muted)}.panel-heading h2{color:var(--ink)}.student-summary{justify-content:space-between;padding:13px 0;margin:17px 0 8px;border-bottom:1px solid var(--line);color:var(--soft);font-size:11px}.student-summary b{color:var(--ink);font-size:16px;margin-right:3px}.student-list{display:grid;gap:4px}.student-row{width:100%;display:flex;align-items:center;gap:9px;padding:9px 7px;background:transparent;border:0;border-radius:11px;text-align:left;color:var(--ink)}.student-row:hover,.student-row.is-selected{background:#f5f8fd}.student-row__body{flex:1;min-width:0}.student-row__body strong,.student-row__body .status-badge{display:block}.student-row__body strong{font-size:13px}.student-row__progress{color:var(--soft);font-size:11px}.status-badge{width:fit-content;display:inline-flex;align-items:center;gap:4px;margin-top:4px;font-size:10px;font-weight:700;white-space:nowrap}.status-connected{color:#54769d}.status-viewing{color:var(--purple)}.status-working{color:var(--blue)}.status-submitted{color:var(--mint)}.status-offline{color:var(--soft)}.projection{min-height:395px;border-radius:16px;padding:39px;margin-top:18px;background:#edf3ff;display:flex;flex-direction:column;justify-content:center}.projection-writing{background:#f2edff}.projection-label{color:var(--blue);font-weight:700;font-size:12px}.projection h1{font-size:clamp(24px,3vw,37px);letter-spacing:-.05em;line-height:1.35;margin:16px 0 13px;max-width:650px}.projection p{color:var(--muted);font-size:15px;line-height:1.75;max-width:600px}.material-card{display:flex;align-items:center;gap:11px;padding:13px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--muted)}.material-card svg{color:var(--blue);flex:0 0 auto}.material-card>div{flex:1;min-width:0}.material-card strong,.material-card span{display:block}.material-card strong{color:var(--ink);font-size:13px}.material-card span{color:var(--soft);font-size:11px;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.material-card a{color:var(--blue)}.writing-preview{background:#fff;border:1px solid #ded5f7;border-radius:12px;padding:19px;color:var(--soft);font-size:13px}.preview-line{height:9px;background:#eee9fb;border-radius:5px;margin-top:17px}.preview-line.short{width:63%;margin-top:10px}.live-notice{gap:9px;color:var(--muted);font-size:12px;margin:14px 0}.notice-dot{background:var(--blue);box-shadow:0 0 0 4px #2769db1f}.live-actions{gap:9px}.control-block{padding:19px 0;border-bottom:1px solid var(--line)}.control-block:last-child{border-bottom:0}.control-label{justify-content:space-between;font-size:13px;font-weight:700;margin-bottom:11px}.switch-label{color:var(--soft);font-size:11px}.switch-label.is-on{color:var(--mint)}.toggle-button{width:100%;display:flex;align-items:center;gap:9px;border:1px solid #bed1f6;color:var(--blue);background:var(--blue-soft);border-radius:10px;padding:12px;font-size:12px;font-weight:700;text-align:left}.toggle-button:not(.is-on){border-color:var(--line);color:var(--muted);background:#f8f9fb}.toggle-button span{width:27px;height:27px;border-radius:8px;background:#fff;display:grid;place-items:center}.timer-options{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-bottom:9px}.timer-options button{border:1px solid var(--line);background:#fff;color:var(--muted);border-radius:8px;padding:8px 4px;font-size:12px}.timer-options button.is-selected{border-color:var(--blue);color:var(--blue);background:var(--blue-soft);font-weight:700}.control-block--danger{margin-top:auto}.check-square{width:18px;height:18px;display:grid;place-items:center;border-radius:5px;background:#fff3;font-weight:700}.student-detail{margin-top:14px;padding:17px 20px;display:flex;gap:18px;align-items:center}.student-detail>div{flex:0 0 auto}.student-detail h3{margin:5px 0 0;font-size:16px}.student-detail p{flex:1;color:var(--muted);font-size:13px;margin:0;line-height:1.6}.submissions-layout{display:grid;grid-template-columns:minmax(360px,.9fr) minmax(400px,1.1fr);gap:18px}.submission-list,.submission-detail{padding:25px}.submission-tabs{display:flex;gap:15px;border-bottom:1px solid var(--line);margin-bottom:7px}.submission-tabs button{border:0;background:transparent;padding:10px 0;color:var(--soft);font-size:12px;font-weight:700;border-bottom:2px solid transparent}.submission-tabs button.is-active{color:var(--blue);border-bottom-color:var(--blue)}.submission-row{width:100%;display:flex;align-items:center;gap:10px;padding:13px 8px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left}.submission-row:hover,.submission-row.is-selected{background:#f7faff}.submission-row__body{flex:1;min-width:0}.submission-row__body strong,.submission-row__body span{display:block}.submission-row__body strong{font-size:14px}.submission-row__body span{color:var(--soft);font-size:12px;margin-top:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.answer-card{background:#f7f9fc;border-radius:12px;padding:17px;margin:18px 0}.answer-card__label{display:block;color:var(--soft);font-size:11px;font-weight:700;margin-bottom:6px}.answer-card p{margin:0 0 17px;color:var(--muted);line-height:1.6;font-size:13px}.answer-card p:last-child{margin-bottom:0}.answer-card__text{color:var(--ink)!important;min-height:80px}.detail-actions{justify-content:flex-end;gap:9px}.portfolio-intro{min-height:175px;padding:28px 30px;background:#eaf2ff;border-radius:18px;display:flex;justify-content:space-between;align-items:center}.portfolio-intro h2,.semester-hero h2{margin:9px 0;font-size:26px;letter-spacing:-.045em}.portfolio-intro p,.semester-hero p{margin:0;color:var(--muted);font-size:14px;line-height:1.6}.portfolio-count{text-align:right}.portfolio-count strong,.portfolio-count span{display:block}.portfolio-count strong{color:var(--blue);font-size:37px}.portfolio-count span{color:var(--soft);font-size:12px}.filter-bar{display:flex;align-items:center;gap:8px;margin:22px 0}.filter-chip{background:#fff;border:1px solid var(--line);color:var(--muted);border-radius:20px;padding:8px 14px;font-size:12px;font-weight:700}.filter-chip.is-active{border-color:var(--blue);background:var(--blue);color:#fff}.filter-bar .soft-button{margin-left:auto}.timeline{position:relative;padding-left:27px}.timeline:before{content:"";position:absolute;left:6px;top:6px;bottom:20px;width:1px;background:#c9d6e8}.portfolio-card{position:relative;padding:21px 23px;background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:13px}.timeline-marker{position:absolute;left:-27px;top:25px;width:13px;height:13px;background:var(--blue);border:3px solid var(--background);border-radius:50%}.portfolio-card__meta{display:flex;gap:9px;color:var(--soft);font-size:11px}.subject-label{color:var(--blue);background:var(--blue-soft);border-radius:5px;padding:2px 5px;font-weight:700}.portfolio-card h3{margin:10px 0 7px;font-size:16px}.portfolio-card p{color:var(--muted);font-size:13px;line-height:1.7;margin:0}.tag-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}.tag-list span{padding:4px 8px;color:var(--muted);background:#f4f6f9;border-radius:6px;font-size:11px}.tag-list .verified-tag{display:inline-flex;gap:4px;align-items:center;color:var(--mint);background:var(--mint-soft)}.semester-hero{min-height:190px;padding:30px;background:#f0ebff;border-radius:18px;display:flex;justify-content:space-between;align-items:center}.semester-hero__icon{width:78px;height:78px;border-radius:24px;display:grid;place-items:center;color:var(--purple);background:#fff}.semester-layout{display:grid;grid-template-columns:330px 1fr;gap:18px;margin-top:20px;align-items:start}.semester-students,.draft-list{padding:24px}.select-student{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);cursor:pointer}.select-student input{accent-color:var(--blue);width:16px;height:16px}.select-student>span:nth-of-type(2){flex:1}.select-student strong,.select-student small{display:block}.select-student strong{font-size:13px}.select-student small{color:var(--soft);font-size:11px;margin-top:3px}.select-student__count{color:var(--soft);font-size:11px}.semester-students .primary-button{margin-top:18px}.draft-card{border-top:1px solid var(--line);padding-top:15px;margin-top:15px}.draft-card__heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px}.draft-status{color:var(--soft);font-size:11px}.draft-status.ready{color:var(--blue)}.student-class-banner{padding:24px 27px;background:#eaf2ff;border-radius:17px;display:flex;align-items:center;justify-content:space-between;gap:15px}.student-class-banner h2{margin:7px 0 0;font-size:clamp(22px,3vw,30px);letter-spacing:-.05em}.live-student-pill{display:flex;align-items:center;gap:9px;color:var(--red);font-size:12px;font-weight:700;white-space:nowrap}.student-task-layout{display:grid;grid-template-columns:minmax(0,.85fr) minmax(440px,1.15fr);gap:18px;margin-top:18px;align-items:start}.student-material,.student-answer{padding:25px}.student-material__body{min-height:360px;padding:24px;margin-top:18px;background:#f7f9fc;border-radius:14px}.student-material__body h3{margin:0 0 10px;font-size:22px;line-height:1.45}.student-material__body p{margin:0 0 20px;color:var(--muted);line-height:1.8;font-size:14px}.required-label{color:var(--red);background:var(--red-soft);padding:5px 8px;border-radius:6px;font-size:11px;font-weight:700}.question-box{padding:15px 17px;border-left:4px solid var(--blue);background:var(--blue-soft);border-radius:7px;margin:18px 0 12px}.question-box strong{color:var(--ink);line-height:1.65;font-size:14px}.student-answer>textarea{width:100%;padding:15px;border:1px solid #d5deea;border-radius:11px;line-height:1.8;color:var(--ink);resize:vertical;outline:none}.student-answer>textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2769db1c}.character-count{margin-left:auto;color:var(--soft);font-size:12px}.student-submit{border-top:1px solid var(--line);margin-top:18px;padding-top:18px;display:flex;align-items:center;justify-content:space-between;gap:15px}.student-submit p{color:var(--soft);display:flex;align-items:center;gap:6px;font-size:11px;line-height:1.5;margin:0}.student-submit p svg{color:var(--mint);flex:0 0 auto}.student-help{display:flex;align-items:center;gap:8px;margin-top:15px;padding:14px 17px;background:#fffdf0;color:#8a6b13;border:1px solid #f3e7b8;border-radius:11px;font-size:12px}.student-help .text-button{margin-left:auto;color:#8a6b13}.empty-state{min-height:220px;display:grid;place-items:center;align-content:center;text-align:center;padding:20px;color:var(--muted)}.empty-state__dot{width:38px;height:38px;border-radius:50%;background:var(--blue-soft);margin-bottom:13px}.empty-state h3{margin:0 0 8px;color:var(--ink);font-size:17px}.empty-state p{margin:0;font-size:13px;line-height:1.6}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);min-width:300px;max-width:calc(100vw - 32px);display:flex;align-items:center;gap:9px;padding:13px 15px;background:#1f2e43;color:#fff;border-radius:10px;box-shadow:0 13px 30px #1926393b;z-index:40;font-size:13px}.toast>svg{color:#70d4b5;flex:0 0 auto}.toast .icon-button{color:#c8d2df;margin-left:auto}.app-loading{min-height:100vh;display:grid;place-items:center;color:var(--muted)}.mobile-topbar,.sidebar-overlay{display:none}.role-switcher .role-title{margin-top:9px;color:var(--ink);font-size:15px;font-weight:800}.account-chip{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:12px}.class-invite{margin:18px 0;padding:22px}.class-invite__heading,.class-invite__body,.class-invite__actions{display:flex;align-items:center}.class-invite__heading{justify-content:space-between;gap:15px}.class-invite__heading h2{margin:6px 0 0;font-size:21px}.class-invite__heading>svg{color:var(--blue)}.class-invite__hint{margin:11px 0 18px;color:var(--muted);font-size:13px;line-height:1.65}.class-invite__body{gap:22px;align-items:stretch}.class-invite__qr{display:grid;justify-items:center;gap:8px;padding:10px;border:1px solid var(--line);border-radius:14px;background:#fff}.class-invite__qr img,.qr-placeholder{width:150px;height:150px;object-fit:contain}.qr-button{display:block;padding:0;border:0;border-radius:8px;background:#fff;line-height:0}.qr-button:hover{outline:3px solid var(--blue-soft)}.qr-placeholder{display:grid;place-items:center;color:var(--soft);font-size:12px;background:#f7f9fc}.invite-status{display:inline-flex;align-items:center;gap:5px;color:var(--soft);font-size:11px;font-weight:800}.invite-status.is-open{color:var(--mint)}.class-invite__details{display:grid;align-content:center;gap:10px;min-width:0;flex:1}.class-invite__label{color:var(--soft);font-size:11px;font-weight:800}.class-invite__link{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-width:0;padding:13px 14px;border:1px solid var(--line);border-radius:10px;background:#f8fafc;color:var(--ink);text-align:left;font-size:13px}.class-invite__link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.class-invite__link svg{flex:0 0 auto;color:var(--blue)}.class-invite__actions{gap:12px;flex-wrap:wrap}.class-invite__code{color:var(--soft);font-size:11px}.backup-card{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:18px 0;padding:20px 22px}.backup-card h2{margin:6px 0;font-size:18px}.backup-card p{margin:0;max-width:700px;color:var(--muted);font-size:12px;line-height:1.65}.backup-card__actions{display:flex;gap:8px;flex:0 0 auto}.backup-card__actions label{cursor:pointer}.auth-gate,.join-page{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(145deg,#f7f9fc,#eef4ff)}.auth-gate__card,.join-card{width:min(470px,100%);padding:36px;border:1px solid var(--line);border-radius:24px;background:#fff;box-shadow:0 20px 60px #1f35571f}.auth-gate__card>.brand-mark{display:grid;margin-bottom:24px}.auth-gate__card h1,.join-card h1{margin:9px 0 12px;color:var(--ink);font-size:clamp(25px,5vw,34px);letter-spacing:-.05em;line-height:1.28}.auth-gate__card p,.join-card>p{margin:0 0 24px;color:var(--muted);font-size:14px;line-height:1.75}.auth-gate__card .primary-button{width:100%;justify-content:center;text-decoration:none}.auth-gate__card .text-button{display:block;margin:18px auto 0}.join-card .brand{margin-bottom:38px}.join-card .brand span:not(.brand-mark){color:var(--soft)}.join-form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.join-form label{display:grid;gap:7px;color:var(--ink);font-size:12px;font-weight:800}.join-form input{width:100%;padding:13px 10px;border:1px solid var(--line);border-radius:10px;color:var(--ink);text-align:center;font-size:18px;outline:none}.join-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2769db1c}.join-form input[readonly]{background:#f1f4f8;color:var(--muted)}.join-password{grid-column:1 / -1}.join-password input{text-align:left}.join-form .primary-button{grid-column:1 / -1;margin-top:9px;justify-content:center}.form-error{grid-column:1 / -1;margin:0;color:var(--red);font-size:12px}.join-card__room{display:block;margin-top:20px;color:var(--soft);text-align:center}.compact-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.compact-fields .field{margin:0}.roster-modal{width:min(680px,100%);padding:26px;box-shadow:0 24px 70px #1720333d}.roster-form{display:grid;grid-template-columns:80px minmax(130px,1fr) minmax(150px,1fr) auto;gap:8px}.roster-form input{min-width:0;border:1px solid #d5deea;border-radius:10px;padding:10px 11px;outline:none}.roster-form input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2769db1c}.roster-list{display:grid;gap:4px;max-height:310px;overflow:auto;margin-top:16px;border-top:1px solid var(--line)}.roster-row{display:grid;grid-template-columns:34px minmax(100px,1fr) auto 34px;align-items:center;gap:9px;padding:10px 0;border-bottom:1px solid var(--line)}.roster-number{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:var(--blue-soft);color:var(--blue);font-size:12px;font-weight:800}.roster-row strong{font-size:13px}.roster-password{color:var(--soft);font-size:11px}.roster-empty{padding:28px 0;color:var(--soft);text-align:center;font-size:13px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:20px;background:#1720336b;z-index:50}.settings-modal{width:min(520px,100%);padding:26px;box-shadow:0 24px 70px #1720333d}.modal-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.modal-heading h2{margin:7px 0 0;font-size:24px;letter-spacing:-.04em}.settings-intro{margin:12px 0 23px;color:var(--muted);line-height:1.65;font-size:13px}.settings-modal select,.settings-modal input[type=number]{width:100%;border:1px solid #d5deea;border-radius:10px;color:var(--ink);background:#fbfcfe;padding:12px 14px;outline:none}.settings-modal select:focus,.settings-modal input[type=number]:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2769db1c;background:#fff}.settings-note{display:flex;align-items:flex-start;gap:8px;margin-top:6px;padding:13px 14px;border:1px solid #e1dafa;border-radius:11px;background:#fbfaff;color:var(--purple);font-size:12px;line-height:1.6}.settings-note span{color:var(--muted)}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:24px}.qr-modal{width:min(470px,100%);padding:26px;text-align:center;box-shadow:0 24px 70px #1720333d}.qr-modal .modal-heading{text-align:left}.qr-modal h2{margin:7px 0 0;font-size:22px}.qr-modal__image{display:block;width:min(340px,100%);height:auto;margin:24px auto 17px;border-radius:12px}.qr-modal p{margin:0;color:var(--soft);font-size:12px}@media(max-width:1200px){.content-shell{padding:28px 24px 50px}.sidebar{width:230px;flex-basis:230px}.live-grid{grid-template-columns:250px minmax(300px,1fr)}.control-panel{grid-column:1 / -1;min-height:auto;display:grid;grid-template-columns:1fr 1fr 1fr;gap:19px}.control-panel .panel-heading{grid-column:1 / -1}.control-block{border-bottom:0;border-right:1px solid var(--line);padding:0 18px 0 0}.control-block:last-child{border-right:0;padding-right:0}}@media(max-width:900px){.sidebar,.sidebar.is-collapsed{width:260px;flex-basis:260px;padding:26px 18px 20px;position:fixed;left:0;top:0;bottom:0;transform:translate(-100%);transition:transform .2s ease;box-shadow:15px 0 40px #0000001a}.sidebar.is-open{transform:translate(0)}.sidebar.is-collapsed .brand-row{justify-content:space-between}.sidebar.is-collapsed .brand{display:flex}.sidebar.is-collapsed .brand>div,.sidebar.is-collapsed .role-switcher,.sidebar.is-collapsed .main-nav button>span:not(.nav-live-dot),.sidebar.is-collapsed .connection-card>div,.sidebar.is-collapsed .sidebar-link>span{display:block}.sidebar.is-collapsed .brand-mark{width:38px;height:38px}.sidebar.is-collapsed .sidebar-toggle{position:static;transform:none}.sidebar.is-collapsed .main-nav{margin-top:0}.sidebar.is-collapsed .main-nav button,.sidebar.is-collapsed .sidebar-link{justify-content:flex-start;padding-left:12px;padding-right:12px}.sidebar.is-collapsed .nav-live-dot{position:static;margin-left:auto}.sidebar.is-collapsed .connection-card{grid-template-columns:30px minmax(0,1fr);justify-content:initial;padding-left:11px;padding-right:11px}.mobile-topbar{height:64px;padding:13px 17px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px}.mobile-topbar .brand{gap:8px}.mobile-topbar .brand-mark{width:31px;height:31px;font-size:17px;border-radius:9px}.mobile-topbar .brand strong{font-size:16px}.mobile-topbar .brand span:not(.brand-mark){display:none}.sidebar-overlay{position:fixed;display:block;top:0;right:0;bottom:0;left:0;border:0;background:#141e2d40;z-index:5}.content-shell{padding:25px 17px 45px}.page-header{align-items:flex-start;margin-bottom:24px}.page-header h1{font-size:27px}.header-actions{gap:7px}.class-chip{display:none}.form-layout,.submissions-layout,.student-task-layout{grid-template-columns:1fr}.student-panel,.presentation-panel{min-height:auto}.control-panel{display:block}.control-block{border-bottom:1px solid var(--line);border-right:0;padding:19px 0}.control-block:last-child{padding-right:0}.activity-list,.semester-layout{grid-template-columns:1fr}}@media(max-width:620px){.hero-card{padding:26px;min-height:0}.hero-card p{font-size:14px}.hero-card__actions{flex-direction:column;align-items:stretch}.hero-illustration{display:none}.metric-grid{grid-template-columns:1fr}.metric-card{min-height:125px}.live-topbar{align-items:flex-start;flex-direction:column}.live-topbar__controls{width:100%;justify-content:space-between}.live-grid{grid-template-columns:1fr}.projection{min-height:300px;padding:26px}.live-actions,.form-actions,.detail-actions,.student-submit{flex-direction:column;align-items:stretch}.live-actions>button,.form-actions>button,.detail-actions>button,.student-submit>button{width:100%}.filter-bar{flex-wrap:wrap}.filter-bar .soft-button{margin-left:0}.portfolio-intro,.semester-hero,.student-class-banner{align-items:flex-start;flex-direction:column;gap:18px}.portfolio-count{text-align:left}.student-help{align-items:flex-start;flex-wrap:wrap}.student-help .text-button{margin-left:0}.student-material__body{min-height:0}.class-invite__body{align-items:center;flex-direction:column}.backup-card{align-items:stretch;flex-direction:column}.backup-card__actions{flex-direction:column}.class-invite__details{width:100%}.classroom-summary{align-items:stretch;flex-direction:column}.classroom-summary__actions{flex-direction:column}.roster-form{grid-template-columns:70px 1fr}.roster-form input:nth-child(3){grid-column:1 / 2}.roster-form button{grid-column:2 / 3}.roster-row{grid-template-columns:34px minmax(80px,1fr) 34px}.roster-password{display:none}.compact-fields{grid-template-columns:1fr 1fr}.account-chip{display:none}.auth-gate__card,.join-card{padding:28px 22px}}
