:root{color:var(--text);background:var(--bg);text-rendering:optimizelegibility;word-break:keep-all;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5}*{box-sizing:border-box}body{min-width:320px;margin:0}button,input,select{font:inherit}button:disabled{cursor:not-allowed;opacity:.55}.ui-button:disabled{opacity:1;color:#98a4ad;box-shadow:none;background:#eef2f5;border-color:#eef2f5}.app-shell{min-height:100vh;padding:24px}.submission-surface{border:1px solid var(--border);background:#fff;border-radius:8px;grid-template-rows:auto minmax(0,1fr);max-width:1120px;min-height:calc(100vh - 48px);margin:0 auto;display:grid;box-shadow:0 18px 42px #1f313a14}.topbar{border-bottom:1px solid var(--border);background:#fbfcfd;justify-content:space-between;align-items:center;gap:20px;padding:18px 22px;display:flex}.brand-row{min-width:0;color:var(--text);flex-wrap:wrap;align-items:center;gap:12px;font-size:.98rem;font-weight:600;display:flex}.brand-logo{object-fit:contain;flex:none;width:auto;height:38px;display:block}.brand-wordmark{letter-spacing:-.01em;color:var(--text);font-size:20px;font-weight:800}.brand-logo-large{object-fit:contain;width:auto;height:78px;margin-bottom:10px;display:block}.brand-context{color:#344551;border:1px solid var(--border);overflow-wrap:break-word;background:#f2f6f8;border-radius:999px;align-items:center;min-width:0;min-height:30px;padding:0 10px;font-size:.86rem;font-weight:700;line-height:1.2;display:inline-flex}.step-meter{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.topbar-actions{justify-content:flex-end;align-items:center;gap:12px;min-width:0;display:flex}.teacher-login-link{min-height:38px;color:var(--accent);border:1px solid var(--accent-soft-border);white-space:nowrap;background:#fff;border-radius:8px;justify-content:center;align-items:center;padding:0 12px;font-size:.9rem;font-weight:700;text-decoration:none;display:inline-flex}.teacher-login-link:hover{background:var(--accent-soft)}.guide-page{min-height:100vh;color:var(--text);background-color:#f4f8f9;background-image:linear-gradient(90deg,#256f661a 1px,#0000 1px),linear-gradient(#256f6614 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:42px 42px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;grid-template-rows:auto auto minmax(0,1fr) auto auto;gap:26px;padding:28px;display:grid}.guide-header{justify-content:space-between;align-items:center;gap:18px;display:flex}.guide-screen-chip{min-height:42px;color:var(--accent-text);border:1px solid var(--accent-soft-border);white-space:nowrap;background:#fff;border-radius:8px;align-items:center;gap:8px;padding:0 14px;font-size:1rem;font-weight:700;display:inline-flex}.guide-hero{grid-template-columns:minmax(0,1fr) minmax(320px,480px);align-items:stretch;gap:20px;display:grid}.guide-hero-copy{align-content:center;gap:14px;min-width:0;display:grid}.guide-hero-copy h1{font-size:clamp(3rem,6vw,6.3rem);line-height:1}.guide-hero-copy p:last-child{color:#344551;max-width:850px;margin:0;font-size:clamp(1.2rem,2vw,1.75rem);font-weight:600}.guide-code-panel{min-height:220px;color:var(--text);border:2px solid var(--text);box-shadow:8px 8px 0 var(--accent);text-align:center;background:#fff;border-radius:8px;align-content:center;place-items:center;gap:6px;padding:20px;display:grid}.guide-code-panel span,.guide-code-panel small{color:var(--text-muted);font-weight:700}.guide-code-panel strong{color:var(--accent-text);letter-spacing:.01em;white-space:nowrap;font-size:clamp(3.6rem,7.4vw,6.4rem);font-weight:800;line-height:.95}.guide-infographic{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;display:grid}.guide-step-card{border:2px solid var(--text);background:#fff;border-radius:8px;grid-template-rows:auto auto auto minmax(0,1fr);gap:14px;min-height:310px;padding:22px;display:grid;box-shadow:6px 6px #17202a29}.guide-step-number{color:#fff;background:var(--text);border-radius:999px;place-items:center;width:46px;height:46px;font-size:1.25rem;font-weight:700;display:inline-grid}.guide-step-icon{border-radius:999px;place-items:center;width:100px;height:100px;display:grid}.guide-step-card h2{color:var(--text);margin:0;font-size:clamp(1.65rem,2.4vw,2.55rem);line-height:1.05}.guide-step-card p{color:#14202b;margin:0;font-size:clamp(1.2rem,1.75vw,1.7rem);font-weight:700;line-height:1.35}.guide-step-teal .guide-step-icon{color:var(--accent-text);background:var(--accent-soft)}.guide-step-coral .guide-step-icon{color:#8d2f20;background:#fff0eb}.guide-step-blue .guide-step-icon{color:#1d4d7a;background:#e4f0fb}.guide-step-green .guide-step-icon{color:#1f5c35;background:#e1f3df}.guide-step-amber .guide-step-icon{color:#8a5a12;background:#fdf0d6}.guide-secondary{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;display:grid}.guide-secondary-tile{background:#fff;border:1px solid #cdd8e0;border-radius:8px;align-items:center;gap:14px;padding:14px 18px;display:flex}.guide-secondary-tile>svg{color:var(--accent-text);flex-shrink:0}.guide-secondary-tile p{color:#3a4650;margin:0;font-size:1rem;font-weight:600;line-height:1.4}.guide-secondary-tile strong{color:var(--text)}.guide-secondary-qr{border:1px solid var(--border);background:#fff;border-radius:6px;flex-shrink:0;place-items:center;width:78px;height:78px;display:grid}.guide-secondary-qr img{width:70px;height:70px;display:block}.step-meter span{min-height:34px;color:var(--text-muted);background:#f3f6f8;border:1px solid #d9e2e9;border-radius:999px;padding:7px 10px;font-size:.86rem;font-weight:600}.step-meter .is-active{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent-soft-border)}.content-area{align-items:start;padding:clamp(40px,6vh,72px) 34px 48px;display:grid}.step-layout{gap:22px;width:min(100%,760px);margin:0 auto;display:grid}.code-step{width:min(100%,680px)}.code-hero{gap:28px;display:grid}.copy-block{max-width:680px}.copy-block.compact{max-width:620px}.eyebrow{color:var(--accent);letter-spacing:.01em;margin:0 0 8px;font-size:.86rem;font-weight:600}h1{color:var(--text);letter-spacing:-.01em;margin:0;font-size:clamp(1.7rem,3vw,2.6rem);line-height:1.18}.compact h1,.result-layout h1{font-size:clamp(1.8rem,4vw,3.4rem)}.copy-block p:last-child,.result-layout p{max-width:620px;color:var(--text-muted);margin:14px 0 0;font-size:1.04rem}.action-block{max-width:620px}.code-step .action-block{max-width:680px}.action-block label{color:#344551;margin-bottom:8px;font-weight:600;display:block}.code-input-row{grid-template-columns:minmax(180px,1fr) auto;gap:12px;display:grid}.code-input-row input{width:100%;height:62px;color:var(--text);border:1px solid var(--border-strong);letter-spacing:0;background:#f8fbfd;border-radius:8px;padding:0 18px;font-size:1.72rem;font-weight:700}.ui-button{color:#fff;background:var(--accent);cursor:pointer;text-align:center;white-space:normal;border:0;border-radius:8px;justify-content:center;align-items:center;gap:8px;min-width:0;max-width:100%;min-height:58px;padding:0 20px;font-weight:700;line-height:1.2;display:inline-flex}.ui-button svg,.assignment-mini-button svg,.download-link svg,.zip-download-link svg{flex:none}.ui-button:hover:not(:disabled){background:var(--accent-hover)}.secondary-button{color:#23333d;background:#edf2f5}.secondary-button:hover:not(:disabled){background:#dde7ed}.ghost-button{color:#42525d;background:0 0;border:1px solid #cfdbe4}.ghost-button:hover:not(:disabled){color:var(--text);background:#f5f8fa}.assignment-header{border:1px solid var(--border);background:#f5f8fa;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;display:flex}.assignment-header span,.assignment-header strong{display:block}.assignment-header span{color:#667682;font-size:.86rem;font-weight:600}.assignment-header strong{color:var(--text);font-size:1.05rem}.assignment-header button{min-height:38px;color:var(--accent);border:1px solid var(--accent-soft-border);cursor:pointer;background:#fff;border-radius:8px;padding:0 12px;font-weight:600}.number-grid{grid-template-columns:repeat(auto-fill,minmax(82px,1fr));gap:10px;display:grid}.number-button{min-height:74px;color:var(--text);border:1px solid var(--border-strong);cursor:pointer;background:#fff;border-radius:8px;place-items:center;padding:8px;display:grid}.number-button:hover{border-color:var(--accent)}.number-button strong{font-size:1.55rem;line-height:1}.number-button span{color:#b24632;font-size:.78rem;font-weight:700}.number-button.is-submitted{background:#fff6f3;border-color:#e4b5a8}.roster-select-panel{gap:14px;display:grid}.roster-search-field{min-height:50px;color:var(--text-muted);border:1px solid var(--border-strong);background:#fff;border-radius:8px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:10px;padding:0 14px;display:grid}.roster-search-field:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #256f661f}.roster-search-field input{width:100%;min-width:0;min-height:46px;color:var(--text);font:inherit;background:0 0;border:0;outline:0;padding:0;font-weight:700}.roster-student-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;display:grid}.roster-student-button{min-width:0;min-height:86px;color:var(--text);border:1px solid var(--border-strong);cursor:pointer;text-align:left;background:#fff;border-radius:8px;align-content:center;justify-items:start;gap:4px;padding:12px;display:grid}.roster-student-button:hover{border-color:var(--accent);box-shadow:0 8px 18px #1f313a14}.roster-student-button span{color:var(--text-muted);font-size:.84rem;font-weight:700}.roster-student-button strong{overflow-wrap:break-word;min-width:0;font-size:1.05rem}.roster-student-button small{color:#b24632;font-size:.78rem;font-weight:700}.roster-student-button.is-submitted{background:#fff6f3;border-color:#e4b5a8}.roster-empty-message{color:var(--text-muted);border:1px dashed var(--border-strong);text-align:center;background:#fbfcfd;border-radius:8px;grid-column:1/-1;margin:0;padding:18px;font-weight:700}.file-picker{min-height:184px;color:var(--accent);background:var(--accent-soft);border:2px dashed var(--accent-soft-border);cursor:pointer;text-align:center;border-radius:8px;place-items:center;gap:8px;padding:24px;font-size:1.1rem;font-weight:700;transition:background .16s,border-color .16s,box-shadow .16s,color .16s;display:grid;position:relative}.file-picker:hover,.file-picker.is-drag-active{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent)}.file-picker.is-drag-active{box-shadow:inset 0 0 0 3px #256f6624}.file-picker.has-file{color:#1f5d7a;background:#f8fbfd;border-color:#86b9d7}.file-picker.has-error{color:#8d2f20;background:#fff7f5;border-color:#d98775}.file-picker svg{width:38px;height:38px}.file-picker span,.file-picker small{overflow-wrap:break-word;max-width:100%}.file-picker small{color:var(--text-muted);font-size:.88rem;font-weight:600}.file-picker input{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.screen-capture-panel{border:1px solid var(--border);background:#fbfcfd;border-radius:8px;gap:14px;padding:16px;display:grid}.screen-capture-copy{grid-template-columns:auto minmax(0,1fr);align-items:start;gap:12px;min-width:0;display:grid}.screen-capture-copy strong,.screen-capture-copy p{overflow-wrap:break-word}.screen-capture-copy strong{color:var(--text);font-size:1rem;font-weight:700;display:block}.screen-capture-copy p,.screen-capture-note{color:var(--text-muted);margin:4px 0 0;font-size:.9rem;font-weight:600;line-height:1.5}.screen-capture-icon{width:42px;height:42px;color:var(--accent);background:var(--accent-soft);border-radius:8px;place-items:center;display:grid}.screen-capture-preview{background:var(--text);border:1px solid #cfdbe4;border-radius:8px;overflow:hidden}.screen-capture-preview img{object-fit:contain;background:#111820;width:100%;max-height:280px;display:block}.screen-capture-actions{flex-wrap:wrap;gap:10px;display:flex}.screen-capture-actions .ui-button{min-width:144px}.screen-capture-note{margin:0}.file-summary,.confirm-summary{border:1px solid var(--border);background:#f5f8fa;border-radius:8px;gap:10px;padding:16px;display:grid}.file-summary{align-items:center}.file-summary.has-error{background:#fff7f5;border-color:#e4b5a8}.file-summary strong,.confirm-summary strong{overflow-wrap:break-word;min-width:0}.file-summary span,.confirm-summary span{color:var(--text-muted);font-weight:600}.selected-file-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.selected-file-list li{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) auto;gap:10px;min-width:0;padding-top:8px;display:grid}.selected-file-list span{min-width:0;color:var(--text);overflow-wrap:break-word}.selected-file-list small{color:var(--text-muted);white-space:nowrap;font-weight:700}.confirm-file-list{border:1px solid var(--border);background:#fbfcfd;border-radius:8px;padding:14px 16px}.confirm-summary div{grid-template-columns:90px minmax(0,1fr);gap:12px;display:grid}.button-row{flex-wrap:wrap;gap:12px;display:flex}.error-message{color:#8d2f20;background:#fff4f1;border:1px solid #e7b5a8;border-radius:8px;margin:0;padding:12px 14px;font-weight:600}.result-layout{text-align:center;justify-items:center;gap:18px;width:min(100%,680px);margin:0 auto;display:grid}.status-icon{width:58px;height:58px;color:var(--accent)}.status-icon.success{color:var(--accent)}.status-icon.danger{color:#b24632}.progress-track{background:var(--border);border-radius:999px;width:min(100%,420px);height:14px;overflow:hidden}.progress-track span{background:var(--accent);height:100%;display:block}.teacher-shell{background:var(--bg);min-height:100vh;padding:20px}.teacher-workspace,.teacher-login-panel{border:1px solid var(--border);background:#fff;border-radius:8px;max-width:1180px;min-height:calc(100vh - 40px);margin:0 auto;box-shadow:0 18px 42px #1f313a14}.teacher-login-panel{grid-template-columns:minmax(0,1fr) minmax(330px,.78fr);align-items:start;gap:32px;padding:clamp(48px,9vh,96px) 48px 48px;display:grid}.teacher-login-copy{align-content:start;gap:14px;max-width:600px;display:grid}.teacher-login-copy h1,.dashboard-heading h1,.teacher-list-heading h1{font-size:clamp(1.5rem,2.4vw,2.1rem)}.teacher-login-copy p:last-child,.dashboard-heading p,.section-heading p,.teacher-list-heading p{color:var(--text-muted);margin:10px 0 0}.teacher-login-form{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:10px;padding:22px;display:grid}.form-hint{color:var(--text-subtle);margin:-4px 0 0;font-size:12px}.auth-switch{color:var(--text-muted);text-align:center;margin:4px 0 0;font-size:14px}.auth-switch-link{color:var(--accent-hover);cursor:pointer;background:0 0;border:0;padding:0;font-size:14px;font-weight:800}.auth-switch-link:hover{text-decoration:underline}.teacher-login-form label,.assignment-create-form label{color:#344551;font-weight:700}.teacher-login-form input,.assignment-create-form input,.assignment-create-form select,.journal-modal-form textarea,.roster-upload-modal-form textarea{width:100%;min-height:48px;color:var(--text);border:1px solid var(--border-strong);background:#fff;border-radius:8px;padding:0 12px}.roster-upload-modal-form input[type=file]{align-items:center;padding:10px 12px;display:flex}.roster-upload-modal-form textarea{min-height:150px;font:inherit;resize:vertical;padding:12px;font-weight:600;line-height:1.45}.manual-roster-paste-label{color:var(--text-muted);font-size:.86rem;font-weight:700}.manual-roster-textarea{width:100%;min-height:200px;color:var(--text);border:1px solid var(--border-strong);font:inherit;resize:vertical;background:#fff;border-radius:8px;padding:12px 14px;font-weight:600;line-height:1.75}.student-roster-empty .school-card-actions{flex-wrap:wrap;justify-content:center}.onboarding-panel{gap:20px;width:100%;max-width:640px;margin:0 auto;display:grid}.add-school-mode-toggle{gap:8px;margin-bottom:2px;display:flex}.onboarding-intro{gap:6px;display:grid}.onboarding-intro h1{color:var(--text);margin:0;font-size:1.5rem;font-weight:800}.onboarding-intro p{color:var(--text-muted);margin:0;font-size:.92rem;font-weight:600;line-height:1.55}.onboarding-form{gap:14px;display:grid}.onboarding-field-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.onboarding-field-grid>div{gap:6px;min-width:0;display:grid}.onboarding-actions{justify-content:flex-end;display:flex}@media (width<=640px){.onboarding-field-grid{grid-template-columns:minmax(0,1fr)}.onboarding-actions{justify-content:stretch}.onboarding-actions>*{width:100%}}.user-dashboard-plan-chip{text-align:right;background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:var(--r-md);gap:2px;padding:10px 16px;display:grid}.user-dashboard-plan-chip span{color:var(--text-muted);font-size:.78rem;font-weight:700}.user-dashboard-plan-chip strong{color:var(--accent-text);font-size:1rem}.user-dashboard-grid{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}.user-dashboard-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);min-width:0;box-shadow:var(--shadow-sm);gap:14px;padding:20px;display:grid}.user-dashboard-recent-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.user-dashboard-recent-item{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;text-decoration:none;transition:border-color .14s,background .14s;display:flex}.user-dashboard-recent-item:hover{border-color:var(--border-strong);background:#fff}.user-dashboard-recent-main{gap:3px;min-width:0;display:grid}.user-dashboard-recent-main strong{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;overflow:hidden}.user-dashboard-recent-main small{color:var(--text-muted);font-size:.8rem;font-weight:600}.user-dashboard-shortcuts{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.user-dashboard-shortcut{color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:18px 12px;font-weight:700;text-decoration:none;transition:color .14s,background .14s,border-color .14s;display:flex}.user-dashboard-shortcut:hover{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent-soft-border)}@media (width<=860px){.user-dashboard-grid{grid-template-columns:minmax(0,1fr)}}.journal-modal-form textarea{min-height:96px;font:inherit;resize:vertical;padding:12px;font-weight:600;line-height:1.45}.assignment-create-form{border-top:1px solid var(--border);gap:10px;padding-top:18px;display:grid}.assignment-create-form .ui-button{width:100%;min-height:46px;padding:8px 12px}.form-two-column{grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:10px;display:grid}.form-two-column>div{gap:8px;display:grid}.compact-heading{align-items:center;margin-bottom:2px}.compact-error{padding:10px 12px;font-size:.9rem}.modal-backdrop{z-index:30;background:#17202a70;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal-panel{border:1px solid var(--border-strong);background:#fff;border-radius:8px;gap:18px;width:min(100%,520px);max-height:calc(100vh - 40px);padding:22px;display:grid;overflow:auto;box-shadow:0 22px 54px #17202a38}.modal-header{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.modal-header h2{color:var(--text);margin:0;font-size:1.45rem;line-height:1.2}.modal-icon-button{color:#344551;border:1px solid var(--border);cursor:pointer;background:#f5f8fa;border-radius:8px;flex:none;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex}.modal-icon-button:hover:not(:disabled){background:#edf2f5}.modal-create-form{border-top:0;padding-top:0}.assignment-context-fields{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:10px;padding:14px;display:grid}.context-field-heading{gap:3px;display:grid}.context-field-heading strong{color:var(--text);font-size:.95rem}.context-field-heading span{color:var(--text-muted);font-size:.82rem;font-weight:600;line-height:1.45}.assignment-create-form select:disabled{color:var(--text-subtle);cursor:not-allowed;background:#edf2f5}.modal-action-row{grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:10px;margin-top:4px;display:grid}.modal-action-row .ui-button{width:100%;min-height:48px}.danger-button{color:#fff;background:#b24632}.danger-button:hover:not(:disabled){background:#8d2f20}.edit-static-grid,.delete-confirm-box{border:1px solid var(--border);background:#f5f8fa;border-radius:8px;gap:10px;padding:14px;display:grid}.edit-static-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.edit-static-grid.single-column{grid-template-columns:1fr}.edit-static-grid span,.delete-confirm-box span{color:var(--text-muted);font-size:.84rem;font-weight:700}.edit-static-grid strong,.delete-confirm-box strong{min-width:0;color:var(--text);overflow-wrap:break-word}.delete-confirm-box p{color:#8d2f20;margin:0;font-weight:700}.bulk-delete-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.bulk-delete-list li{border:1px solid var(--border);background:#fff;border-radius:8px;grid-template-columns:minmax(0,1fr) auto;gap:10px;min-width:0;padding:8px 10px;display:grid}.bulk-delete-list span{min-width:0;color:var(--text);overflow-wrap:break-word}.bulk-delete-list small{color:var(--text-muted);white-space:nowrap;font-weight:700}.qr-modal-panel{width:min(100%,420px)}.qr-preview{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;place-items:center;min-height:260px;padding:18px;display:grid}.qr-preview img{background:#fff;border:8px solid #fff;border-radius:8px;width:min(100%,260px);height:auto;display:block}.qr-link-box{border:1px solid var(--border);background:#f5f8fa;border-radius:8px;gap:4px;padding:12px;display:grid}.qr-link-box span{color:var(--text-muted);font-size:.82rem;font-weight:700}.qr-link-box strong{min-width:0;color:var(--text);overflow-wrap:break-word;font-size:.92rem}.teacher-topbar{border-bottom:1px solid var(--border);background:#fbfcfd;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.teacher-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;min-width:0;display:flex}.teacher-actions .ui-button{flex:0 auto;min-height:42px;padding:8px 14px}.teacher-actions-divider{background:var(--border);flex:none;align-self:center;width:1px;height:22px;margin:0 2px}.teacher-actions .secondary-button{color:var(--text-muted);border:1px solid var(--border);background:0 0}.teacher-actions .secondary-button:hover:not(:disabled){color:#23333d;background:#f2f6f8}.teacher-page-nav-button{color:#344551;border-color:var(--border-strong);background:#fff}.teacher-page-nav-button.is-active{color:var(--accent-hover);background:var(--accent-soft);border-color:var(--accent-soft-border)}.teacher-page-nav-button:disabled{color:var(--text-subtle);background:#edf2f5}.teacher-primary-nav{flex-wrap:wrap;align-items:center;gap:6px;min-width:0;display:flex}.teacher-nav-link{color:#344551;border:1px solid var(--border-strong);background:#fff;border-radius:999px;align-items:center;gap:7px;min-height:42px;padding:8px 15px;font-size:15px;font-weight:700;text-decoration:none;transition:color .12s,background .12s,border-color .12s;display:inline-flex}.teacher-nav-link svg{flex:none}.teacher-nav-dropdown{display:inline-flex;position:relative}.teacher-nav-dropdown-toggle{cursor:pointer}.teacher-nav-chevron{transition:transform .14s}.teacher-nav-chevron.is-open{transform:rotate(180deg)}.teacher-nav-menu{z-index:40;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);min-width:210px;max-width:calc(100vw - 24px);box-shadow:var(--shadow-md);gap:2px;padding:8px;display:grid;position:absolute;top:calc(100% + 8px);left:0}@media (width<=760px){.teacher-nav-dropdown{width:100%}.teacher-nav-menu{min-width:0;max-width:none;left:0;right:0}}.teacher-nav-menu-item{color:var(--text-muted);border-radius:var(--r-md);align-items:center;gap:9px;padding:10px 12px;font-size:14.5px;font-weight:700;text-decoration:none;transition:color .14s,background .14s;display:inline-flex}.teacher-nav-menu-item:hover{color:var(--text);background:#eef0f4}.teacher-nav-menu-item.is-active{color:var(--accent-text);background:var(--accent-soft)}.teacher-nav-menu-item svg{flex:none}.teacher-breadcrumb{color:#6a7984;background:#fff;border-bottom:1px solid #eef3f6;flex-wrap:wrap;align-items:center;gap:4px;padding:12px 20px;font-size:13px;display:flex}.teacher-breadcrumb-item{align-items:center;gap:4px;display:inline-flex}.teacher-breadcrumb-item a{color:var(--text-muted);font-weight:600;text-decoration:none}.teacher-breadcrumb-item a:hover{color:var(--accent-hover);text-decoration:underline}.teacher-breadcrumb-item [aria-current=page]{color:#23333d;font-weight:800}.teacher-breadcrumb-item svg{color:#b6c4cd}.console-tab-nav{border-bottom:1px solid #e3eaef;flex-wrap:wrap;gap:8px;margin-bottom:18px;padding-bottom:12px;display:flex}.console-tab{color:var(--text-muted);background:#f4f7f9;border:1px solid #0000;border-radius:8px;align-items:center;gap:7px;padding:8px 16px;font-size:15px;font-weight:800;text-decoration:none;display:inline-flex}.console-tab:hover{color:#23333d;background:#eaf0f3}.console-tab.is-active{color:var(--accent-hover);background:var(--accent-soft);border-color:var(--accent-soft-border)}.teacher-list-heading-actions{align-items:center;gap:14px;display:flex}.class-record-toolbar.standalone{background:#f8fbfd;border:1px solid #e3eaef;border-radius:12px;flex-wrap:wrap;gap:14px;margin-bottom:18px;padding:14px 16px}.class-record-class-picker{flex-wrap:wrap;grid-column:1/-1;gap:12px;min-width:0;display:flex}.class-record-class-picker .class-record-class-select{flex:160px;min-width:160px}.class-record-class-picker .class-record-class-select:last-child{flex:2 200px}.class-record-class-select{flex-direction:column;gap:6px;min-width:220px;display:flex}.class-record-class-select>span{color:var(--text-muted);font-size:13px;font-weight:700}.class-record-class-select select,.class-record-class-select input{color:#23333d;border:1px solid var(--border-strong);background:#fff;border-radius:8px;min-height:42px;padding:8px 12px;font-size:15px}.class-record-class-select select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2352616c' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:38px}.class-record-class-select select:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.button-link{min-height:42px;color:var(--accent-hover);background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:8px;align-items:center;gap:7px;padding:8px 16px;font-size:15px;font-weight:700;text-decoration:none;display:inline-flex}.button-link:hover{background:var(--accent-soft)}.teacher-main{grid-template-columns:296px minmax(0,1fr);min-height:calc(100vh - 118px);display:grid}.assignment-sidebar{border-right:1px solid var(--border);background:#f7fafb;align-content:start;gap:16px;padding:20px;display:grid}.teacher-meta{border-bottom:1px solid var(--border);gap:2px;padding-bottom:16px;display:grid}.teacher-meta span,.teacher-meta small,.assignment-summary dt{color:var(--text-muted);font-size:.82rem;font-weight:700}.teacher-meta strong{color:var(--text);font-size:1.1rem}.assignment-list-section{gap:10px;min-width:0;display:grid}.assignment-list-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.assignment-list-header h2{color:var(--text);margin:0;font-size:1rem;line-height:1.2}.assignment-list-header span{color:var(--text-muted);font-size:.84rem;font-weight:700}.assignment-list{gap:8px;min-width:0;max-height:360px;padding-right:2px;display:grid;overflow-y:auto}.assignment-list-item{width:100%;min-width:0;color:var(--text);border:1px solid var(--border);cursor:pointer;text-align:left;background:#fff;border-radius:8px;gap:8px;padding:12px;display:grid}.assignment-list-item:hover{border-color:var(--accent-soft-border);background:#f8fbfd}.assignment-list-item.is-selected{background:var(--accent-soft);border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.assignment-list-item strong{overflow-wrap:break-word;min-width:0;font-size:.98rem;line-height:1.25}.assignment-list-meta{color:var(--text-muted);flex-wrap:wrap;gap:6px;font-size:.8rem;font-weight:700;display:flex}.assignment-list-meta span{border:1px solid var(--border);background:#f3f6f8;border-radius:999px;min-height:24px;padding:2px 7px}.assignment-list-date{color:var(--text-muted);font-size:.82rem;font-weight:700}.assignment-status-badge{border:1px solid var(--border);color:#23333d;border-radius:999px;justify-self:start;min-height:24px;padding:2px 8px;font-size:.78rem;font-weight:700}.assignment-status-open{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent-soft-border)}.assignment-status-closed{color:#8d2f20;background:#fff0eb;border-color:#d98775}.assignment-status-expired{color:#7a520c;background:#fff1c9;border-color:#e0b764}.assignment-status-draft{color:var(--text-muted);border-color:var(--border);background:#f3f6f8}.assignment-list-empty{min-height:150px;color:var(--text-muted);border:1px dashed var(--border-strong);text-align:center;background:#fff;border-radius:8px;align-content:center;place-items:center;gap:8px;padding:16px;font-weight:700;display:grid}.assignment-list-empty p{margin:0}.assignment-summary{gap:10px;margin:0;display:grid}.assignment-summary-panel{border:1px solid var(--border);background:#fff;border-radius:8px;gap:12px;padding:14px;display:grid}.assignment-summary div{grid-template-columns:58px minmax(0,1fr);gap:8px;display:grid}.assignment-summary dd{overflow-wrap:break-word;min-width:0;margin:0;font-weight:700}.invite-code-chip{min-height:30px;color:var(--accent-text);background:var(--accent-soft);border:1px solid var(--accent-soft-border);letter-spacing:0;border-radius:8px;align-items:center;padding:0 8px;display:inline-flex}.assignment-action-row{grid-template-columns:1fr;gap:8px;display:grid}.assignment-action-row .danger-mini-button{grid-column:auto}.assignment-mini-button{color:#23333d;border:1px solid var(--border-strong);cursor:pointer;text-align:center;white-space:normal;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:6px;width:100%;min-width:0;min-height:38px;padding:8px 10px;font-size:.86rem;font-weight:700;line-height:1.2;text-decoration:none;display:inline-flex}.assignment-mini-button:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent-soft-border)}.danger-mini-button{color:#8d2f20;background:#fff7f5;border-color:#e4b5a8}.danger-mini-button:hover:not(:disabled){background:#fff0eb;border-color:#d98775}.teacher-content{min-width:0;padding:24px}.teacher-list-page{gap:18px;min-width:0;padding:24px;display:grid}.teacher-list-heading{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:16px;display:flex}.teacher-list-heading>div:first-child{min-width:0}.teacher-list-count{border:1px solid var(--border);background:#f5f8fa;border-radius:8px;gap:2px;min-width:96px;padding:12px 14px;display:grid}.teacher-list-count span{color:var(--text-muted);font-size:.82rem;font-weight:700}.teacher-list-count strong{color:var(--text);font-size:1.6rem;line-height:1}.bulk-download-bar{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:12px;display:flex}.bulk-download-bar span{color:var(--text-muted);font-weight:700}.bulk-action-note{text-align:right;color:var(--accent-hover);margin:-2px 0 0;font-size:13px;font-weight:700}.plan-lock-badge{letter-spacing:.03em;color:#7a520c;background:#fff3da;border:1px solid #f0d9a8;border-radius:999px;margin-left:6px;padding:1px 7px;font-size:11px;font-weight:900}.plan-usage-chip{background:#fff7e8;border:1px solid #f0d9a8;border-radius:12px;flex-direction:column;align-items:flex-end;padding:6px 14px;display:flex}.plan-usage-chip span{color:#7a520c;font-size:12px;font-weight:700}.plan-usage-chip strong{color:#5c3d08;font-size:18px;font-weight:900}.assignment-filter-bar{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end;gap:10px;padding:14px;display:grid}.assignment-filter-bar label{gap:6px;min-width:0;display:grid}.assignment-filter-bar span{color:var(--text-muted);font-size:.82rem;font-weight:700}.assignment-filter-bar select{width:100%;min-width:0;min-height:42px;color:var(--text);border:1px solid var(--border-strong);font:inherit;background:#fff;border-radius:8px;padding:0 10px;font-weight:600}.assignment-filter-bar select:disabled{color:var(--text-subtle);cursor:not-allowed;background:#edf2f5}.assignment-filter-bar .ui-button{min-height:42px;padding:8px 12px}.school-management-page{align-content:start}.school-management-forms{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.school-management-form{border:1px solid var(--border);background:#fbfcfd;border-radius:8px;align-content:start;gap:9px;min-width:0;padding:16px;display:grid}.school-form-heading{color:var(--text);align-items:center;gap:8px;display:flex}.school-form-heading svg{color:var(--accent)}.school-management-form label,.checkbox-row{color:var(--text-muted);font-size:.84rem;font-weight:700}.school-management-form input,.school-management-form select,.school-management-form textarea,.inline-edit-form input{min-width:0;min-height:42px;color:var(--text);border:1px solid var(--border-strong);font:inherit;background:#fff;border-radius:8px;padding:0 12px;font-weight:600}.school-management-form textarea{resize:vertical;min-height:118px;padding:10px 12px;line-height:1.45}.roster-import-form{grid-column:span 2}.csv-preview{border:1px solid var(--border);background:#f5f8fa;border-radius:8px;gap:3px;padding:10px 12px;display:grid}.csv-preview strong{color:var(--text);font-weight:700}.csv-preview small{color:var(--text-muted);overflow-wrap:break-word;font-weight:600}.csv-preview.has-error{background:#fff7f5;border-color:#e4b5a8}.csv-preview.has-error small{color:#8d2f20}.checkbox-row{align-items:center;gap:8px;display:inline-flex}.checkbox-row input{width:18px;height:18px;min-height:0;accent-color:var(--accent);padding:0}.school-card-list{gap:12px;display:grid}.school-card{border:1px solid var(--border);background:#fff;border-radius:8px;gap:14px;padding:16px;display:grid}.school-card.is-archived,.academic-year-card.is-archived,.class-group-row.is-archived{opacity:.62}.school-card-header,.academic-year-header,.class-group-row{justify-content:space-between;align-items:center;gap:12px;min-width:0;display:flex}.school-card-title{align-items:flex-start;gap:10px;min-width:0;display:flex}.school-card-title svg{color:var(--accent);flex:none}.school-card-title strong,.academic-year-header strong,.class-group-row span{min-width:0;color:var(--text);overflow-wrap:break-word;font-weight:700}.school-card-title small,.academic-year-header small,.class-group-empty{color:var(--text-muted);font-size:.84rem;font-weight:600}.school-card-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.school-card-actions button,.inline-edit-form button{color:#23333d;border:1px solid var(--border-strong);cursor:pointer;white-space:nowrap;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:5px;min-height:34px;padding:0 10px;font-size:.82rem;font-weight:700;display:inline-flex}.school-card-actions button:hover:not(:disabled),.inline-edit-form button:hover:not(:disabled){background:var(--accent-soft);border-color:var(--accent-soft-border)}.school-card-actions .danger-inline-button{color:#8d2f20;background:#fff7f5;border-color:#e4b5a8}.school-card-actions .danger-inline-button:hover:not(:disabled){background:#fff0eb;border-color:#d98775}.school-card-actions button:disabled,.inline-edit-form button:disabled{cursor:not-allowed}.academic-year-list{border-top:1px solid var(--border);gap:0;display:grid}.academic-year-card{border-bottom:1px solid var(--border);gap:10px;padding:12px 0;display:grid}.academic-year-card:last-child{border-bottom:0}.current-year-badge{min-height:28px;color:var(--accent-text);background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:8px;align-items:center;padding:0 8px;font-size:.8rem;font-weight:700;display:inline-flex}.class-group-list{gap:6px;min-width:0;display:grid}.roster-list{border-top:1px dashed var(--border);gap:8px;min-width:0;padding-top:10px;display:grid}.roster-list-heading{color:var(--text-muted);justify-content:space-between;align-items:center;gap:10px;font-size:.84rem;font-weight:700;display:flex}.class-group-row{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;min-height:42px;padding:8px 10px}.roster-row{border:1px solid var(--border);background:#fff;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-width:0;min-height:46px;padding:8px 10px;display:flex}.roster-row.is-archived{opacity:.62}.roster-row>span{gap:2px;min-width:0;display:grid}.roster-row strong{min-width:0;color:var(--text);overflow-wrap:break-word}.roster-row small{color:var(--text-muted);font-size:.82rem;font-weight:600}.class-group-empty{margin:0;padding:8px 10px}.inline-edit-form{flex-wrap:wrap;gap:8px;min-width:0;display:flex}.inline-edit-form input{flex:220px}.table-inline-edit-form{min-width:300px}.school-workspace-layout{grid-template-columns:minmax(240px,300px) minmax(0,1fr);align-items:start;gap:16px;min-width:0;display:grid}.school-workspace-table-layout{grid-template-columns:1fr}.school-workspace-sidebar,.school-workspace-panel{border:1px solid var(--border);background:#fff;border-radius:8px;min-width:0}.school-workspace-sidebar{position:sticky;top:16px;overflow:hidden}.school-workspace-create{border-bottom:1px solid var(--border);background:#fbfcfd;gap:9px;padding:14px;display:grid}.school-workspace-create label,.class-workspace-create span,.workspace-section-heading span{color:var(--text-muted);font-size:.84rem;font-weight:700}.school-workspace-create input,.workspace-inline-create input,.class-workspace-create input,.manual-roster-count-row input,.manual-roster-name-row input{width:100%;min-width:0;min-height:42px;color:var(--text);border:1px solid var(--border-strong);font:inherit;background:#fff;border-radius:8px;padding:0 12px;font-weight:600}.school-workspace-list{gap:8px;min-height:120px;max-height:calc(100vh - 360px);padding:12px;display:grid;overflow:auto}.school-workspace-item{width:100%;color:var(--text);border:1px solid var(--border);cursor:pointer;text-align:left;background:#fff;border-radius:8px;gap:3px;padding:12px;display:grid}.school-workspace-item:hover,.school-workspace-item.is-active{background:var(--accent-soft);border-color:var(--accent-soft-border)}.school-workspace-item span{overflow-wrap:break-word;min-width:0;font-weight:700}.school-workspace-item small{color:var(--text-muted);font-size:.82rem;font-weight:600}.school-workspace-main{gap:14px;min-width:0;display:grid}.school-workspace-panel{gap:16px;padding:16px;display:grid}.school-list-panel{gap:14px}.school-table-wrap{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.school-table{border-collapse:collapse;background:#fff;width:100%;min-width:760px}.school-table th,.school-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:11px 12px}.school-table th{color:var(--text-muted);background:#f5f8fa;font-size:.82rem;font-weight:700}.school-table th:not(:first-child),.school-table td:not(:first-child){white-space:nowrap;width:1%}.school-table tr:last-child td{border-bottom:0}.school-table-title{gap:2px;min-width:0;display:grid}.school-table-title strong{color:var(--text);overflow-wrap:break-word;font-weight:700}.school-table-title small{color:var(--text-muted);font-size:.82rem;font-weight:600}.school-table-actions{flex-wrap:nowrap;justify-content:flex-end;gap:8px;display:flex}.school-table-actions .assignment-table-button{min-height:34px}.class-detail-table{min-width:680px}.school-workspace-header,.workspace-section-heading{justify-content:space-between;align-items:flex-start;gap:14px;min-width:0;display:flex}.school-workspace-header h2{color:var(--text);overflow-wrap:break-word;margin:0;font-size:1.45rem;line-height:1.2}.school-workspace-header>div:first-child,.workspace-section-heading>div:first-child{gap:4px;min-width:0;display:grid}.school-workspace-header>div:first-child>span{color:var(--text-muted);font-size:.9rem;font-weight:600}.school-workspace-section{border-top:1px solid var(--border);gap:12px;min-width:0;padding-top:14px;display:grid}.school-year-bar{grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px}.school-year-select-group{align-items:center;gap:8px;min-width:0;display:flex}.school-year-select-group label{color:var(--text-muted);white-space:nowrap;font-size:.82rem;font-weight:800}.school-year-select{min-width:168px;min-height:40px;color:var(--text);border:1px solid var(--border-strong);font:inherit;background:#fff;border-radius:8px;padding:0 10px;font-weight:700}.school-year-select:disabled{color:var(--text-subtle);cursor:not-allowed;background:#edf2f5}.school-year-bar .school-card-actions{align-items:center}@media (width<=760px){.school-year-bar{grid-template-columns:1fr;align-items:stretch}.school-year-select{width:100%}}.workspace-section-heading strong{color:var(--text);font-size:1.02rem;font-weight:700}.workspace-inline-create{grid-template-columns:minmax(86px,110px) auto;align-items:center;gap:8px;display:grid}.workspace-inline-create .ui-button,.class-workspace-create .ui-button{min-height:42px}.workspace-tab-row{flex-wrap:wrap;gap:8px;display:flex}.class-detail-tabs{flex-wrap:wrap;gap:8px;padding-bottom:2px;display:flex}.workspace-tab{min-height:38px;color:var(--text-muted);border:1px solid var(--border);cursor:pointer;background:#f5f8fa;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-weight:700;display:inline-flex}.workspace-tab span{color:#1f4f49;border:1px solid var(--accent-soft-border);background:#fff;border-radius:999px;padding:2px 6px;font-size:.72rem;font-weight:700}.class-workspace-create{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;grid-template-columns:minmax(120px,.7fr) minmax(160px,1fr) auto;align-items:end;gap:10px;min-width:0;padding:12px;display:grid}.class-workspace-create label{gap:6px;min-width:0;display:grid}.class-workspace-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;min-width:0;display:grid}.class-workspace-card{border:1px solid var(--border);background:#fff;border-radius:8px;gap:10px;padding:12px;display:grid}.class-workspace-card.is-active{background:#fbf7ed;border-color:#d8bc72}.class-workspace-card>button{width:100%;color:inherit;cursor:pointer;text-align:left;background:0 0;border:0;gap:3px;padding:0;display:grid}.class-workspace-card strong{color:var(--text);overflow-wrap:break-word;font-weight:700}.class-workspace-card span{color:var(--text-muted);font-size:.82rem;font-weight:600}.student-roster-workspace{grid-template-columns:1fr;align-items:start;gap:14px;min-width:0;display:grid}.student-roster-current{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:12px;min-width:0;padding:14px;display:grid}.student-roster-table-wrap{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.student-roster-table{border-collapse:collapse;background:#fff;width:100%;min-width:430px}.student-roster-table th,.student-roster-table td{border-bottom:1px solid var(--border);text-align:left;padding:10px 12px}.student-roster-table th{color:var(--text-muted);background:#f5f8fa;font-size:.82rem;font-weight:700}.student-roster-table tr:last-child td{border-bottom:0}.class-record-panel{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:12px;min-width:0;padding:14px;display:grid}.class-record-toolbar{grid-template-columns:minmax(150px,220px) minmax(0,1fr);align-items:end;gap:12px;min-width:0;display:grid}.class-record-toolbar label{color:var(--text-muted);gap:6px;font-size:.84rem;font-weight:700;display:grid}.class-record-toolbar input,.attendance-table input,.submission-table select{min-width:72px;min-height:34px;color:var(--text);border:1px solid var(--border-strong);font:inherit;cursor:pointer;background:#fff;border-radius:8px;padding:0 8px;font-weight:600}.submission-table select:disabled{color:#9aa7b1;cursor:not-allowed;background:#f1f5f8}.attendance-summary-row{flex-wrap:wrap;gap:6px;display:flex}.attendance-summary-chip{color:#344551;border:1px solid var(--border);background:#fff;border-radius:999px;align-items:center;gap:6px;min-height:32px;padding:0 12px;font-size:.82rem;font-weight:700;display:inline-flex}.attendance-summary-chip:before{content:"";background:#8b97a1;border-radius:50%;width:8px;height:8px}.attendance-summary-chip.status-present:before{background:var(--accent)}.attendance-summary-chip.status-absent:before{background:#d7503f}.attendance-summary-chip.status-late:before{background:#d99311}.attendance-summary-chip.status-early_leave:before{background:#dd7a2e}.attendance-summary-chip.status-excused:before{background:#5378a6}.attendance-status-group{border:1px solid var(--border);background:#eef3f6;border-radius:10px;flex-wrap:nowrap;gap:3px;padding:3px;display:inline-flex}.attendance-status-btn{min-height:32px;color:var(--text-muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:7px;padding:0 12px;font-size:.86rem;font-weight:600;transition:background .12s,color .12s,box-shadow .12s}.attendance-status-btn:hover{color:var(--text);background:#ffffffbf}.attendance-status-btn.is-active{color:#fff;box-shadow:0 1px 2px #0f223024}.attendance-status-btn.is-active.status-present{background:var(--accent)}.attendance-status-btn.is-active.status-absent{background:#d7503f}.attendance-status-btn.is-active.status-late{background:#d99311}.attendance-status-btn.is-active.status-early_leave{background:#dd7a2e}.attendance-status-btn.is-active.status-excused{background:#5378a6}.attendance-status-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.class-record-note{color:var(--text-muted);margin:0;font-size:.84rem;font-weight:600}.class-record-actions{justify-content:flex-end;display:flex}.class-record-actions .ui-button{min-height:42px}.attendance-table{min-width:720px}.attendance-table th:first-child,.attendance-table td:first-child{width:72px}.attendance-table th:nth-child(3),.attendance-table td:nth-child(3){width:150px}.journal-table{min-width:820px}.journal-table th:first-child,.journal-table td:first-child{width:112px}.journal-table th:nth-child(4),.journal-table td:nth-child(4),.journal-table th:nth-child(5),.journal-table td:nth-child(5){width:120px}.journal-summary-text{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.84rem;font-weight:600;display:-webkit-box;overflow:hidden}.journal-linked-assignment-list{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.journal-linked-assignment{color:#1f4f49;background:var(--accent-soft);border:1px solid var(--accent-soft-border);text-overflow:ellipsis;white-space:nowrap;border-radius:8px;align-items:center;max-width:180px;min-height:28px;padding:0 8px;font-size:.78rem;font-weight:700;display:inline-flex;overflow:hidden}.journal-table-actions{flex-wrap:wrap;gap:6px;display:flex}.journal-table-actions .assignment-table-button{text-decoration:none}.journal-assignment-picker{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:10px;padding:12px;display:grid}.journal-assignment-list{gap:8px;max-height:190px;display:grid;overflow:auto}.journal-assignment-option{border:1px solid var(--border);background:#fff;border-radius:8px;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:10px;min-width:0;padding:10px;display:grid}.journal-assignment-option input{width:18px;height:18px;min-height:0;accent-color:var(--accent);padding:0}.journal-assignment-option span{gap:2px;min-width:0;display:grid}.journal-assignment-option strong,.journal-assignment-option small{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.journal-assignment-option small,.compact-muted-text{color:var(--text-muted);font-size:.82rem;font-weight:600}.compact-muted-text{margin:0}.journal-modal-panel{width:min(100%,680px)}.journal-detail-modal-panel{width:min(100%,720px)}.journal-detail-body{gap:12px;display:grid}.journal-detail-meta{flex-wrap:wrap;gap:8px;display:flex}.journal-detail-meta span{color:#1f4f49;background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:8px;align-items:center;min-height:30px;padding:0 9px;font-size:.8rem;font-weight:700;display:inline-flex}.journal-detail-section{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:8px;padding:12px;display:grid}.journal-detail-section h3{color:var(--text);margin:0;font-size:.95rem}.journal-detail-section p{color:#344551;white-space:pre-wrap;margin:0;font-size:.9rem;font-weight:600;line-height:1.55}.journal-detail-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.journal-detail-actions .assignment-table-button{min-height:42px;text-decoration:none}.journal-detail-actions .ui-button{min-height:42px}.roster-modal-panel{width:min(100%,640px)}.manual-roster-modal-form{gap:12px}.manual-roster-count-row{grid-template-columns:92px minmax(0,180px);align-items:center;gap:10px;margin:0;display:grid}.manual-roster-count-row span,.manual-roster-name-row span{color:var(--text-muted);font-size:.86rem;font-weight:700}.manual-roster-help{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:4px;padding:12px;display:grid}.manual-roster-help strong{color:var(--text);font-size:.94rem}.manual-roster-help span{color:var(--text-muted);font-size:.84rem;font-weight:600;line-height:1.5}.manual-roster-name-grid{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:8px;max-height:min(42vh,360px);padding:10px;display:grid;overflow:auto}.manual-roster-name-row{grid-template-columns:64px minmax(0,1fr);align-items:center;gap:10px;min-width:0;margin:0;display:grid}.compact-empty-state{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;min-height:180px;padding:18px}.school-modal-form{gap:11px}.assignment-table-wrap{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.assignment-table{border-collapse:collapse;background:#fff;width:100%;min-width:900px}.assignment-table th,.assignment-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:11px 12px}.assignment-table th{color:var(--text-muted);background:#f5f8fa;font-size:.82rem;font-weight:700}.assignment-select-cell{text-align:center;width:48px}.assignment-select-cell input{width:18px;height:18px;accent-color:var(--accent)}.assignment-table tr:last-child td{border-bottom:0}.assignment-table tr:hover td{background:#f8fbfd}.submission-table,.assignment-table,.school-table,.student-roster-table{font-variant-numeric:tabular-nums}.submission-table tbody tr:nth-child(2n),.assignment-table tbody tr:nth-child(2n){background:#f5f8fb}.submission-table tbody tr:hover td,.assignment-table tbody tr:hover td,.school-table tbody tr:hover td,.student-roster-table tbody tr:hover td{background:var(--accent-soft)}.assignment-title-cell{gap:2px;min-width:0;display:grid}.assignment-title-cell strong{min-width:0;color:var(--text);overflow-wrap:break-word}.assignment-title-cell small{color:var(--text-subtle);font-size:.8rem;font-weight:600}.assignment-title-cell .assignment-context-line{color:var(--accent);font-weight:700}.assignment-table-actions{flex-wrap:wrap;gap:8px;display:flex}.assignment-table-button{color:#23333d;border:1px solid var(--border-strong);cursor:pointer;white-space:nowrap;background:#fff;border-radius:8px;justify-content:center;align-items:center;gap:5px;min-height:34px;padding:0 10px;font-size:.84rem;font-weight:700;text-decoration:none;display:inline-flex}.assignment-table-button:hover{background:#edf2f5}.assignment-table-button.primary{color:var(--accent-hover);border-color:var(--accent-soft-border);background:#fff}.assignment-table-button.primary:hover{background:var(--accent-soft);border-color:var(--accent-soft-border)}.assignment-table-button.danger{color:#8d2f20;background:#fff7f5;border-color:#e4b5a8}.assignment-table-button.danger:hover{background:#fff0eb;border-color:#d98775}.back-to-list-button{width:100%;min-height:44px}.dashboard-layout{gap:18px;display:grid}.collage-entry-section,.collage-panel{border-top:1px solid var(--border);gap:14px;margin-top:18px;padding-top:18px;display:grid}.collage-entry-section{grid-template-columns:minmax(0,1fr) auto;align-items:center}.collage-entry-section h2,.collage-heading h2{color:var(--text);margin:0;font-size:1.18rem}.collage-entry-section p:last-child,.collage-heading p{color:var(--text-muted);margin:6px 0 0;font-weight:600}.collage-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.collage-preview-workspace{grid-template-columns:minmax(220px,300px) minmax(0,1fr);align-items:start;gap:14px;display:grid}.collage-option-panel{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;align-content:start;gap:14px;min-width:0;padding:14px;display:grid}.collage-option-group,.collage-range-control{gap:8px;min-width:0;display:grid}.collage-option-group>span,.collage-range-control>span{color:var(--text-muted);font-size:.84rem;font-weight:700}.segmented-control{border:1px solid var(--border);background:#edf2f5;border-radius:8px;gap:4px;min-width:0;padding:4px;display:flex}.segmented-control button{min-width:0;min-height:34px;color:var(--text-muted);cursor:pointer;font:inherit;background:0 0;border:0;border-radius:6px;flex:1 1 0;padding:0 10px;font-size:.84rem;font-weight:700}.segmented-control button:hover,.segmented-control button.is-active{color:#1f4f49;background:#fff}.segmented-control button:disabled{color:var(--text-subtle);cursor:not-allowed}.segmented-control button.is-active{box-shadow:0 1px 4px #17202a1f}.wrap-control{flex-wrap:wrap}.wrap-control button{flex-basis:78px}.collage-range-control input{width:100%;accent-color:var(--accent)}.color-swatch-row{flex-wrap:wrap;gap:8px;display:flex}.color-swatch-row button{border:2px solid var(--border);cursor:pointer;border-radius:999px;width:34px;height:34px;padding:0;box-shadow:inset 0 0 0 1px #17202a14}.color-swatch-row button:hover,.color-swatch-row button.is-active{border-color:var(--accent)}.color-swatch-row button.is-active{box-shadow:0 0 0 3px #256f6624,inset 0 0 0 1px #17202a1a}.privacy-notice{color:var(--accent-hover);background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:8px;gap:4px;padding:10px 12px;display:grid}.privacy-notice strong{color:var(--accent-text);font-size:.86rem;font-weight:700}.privacy-notice span{color:var(--text-muted);font-size:.82rem;font-weight:600;line-height:1.45}.privacy-notice.is-warning{color:#7a520c;background:#fff7e8;border-color:#e0b764}.privacy-notice.is-warning strong{color:#6d4403}.collage-preview-stage{border:1px solid var(--border);background:#fbfcfd;border-radius:8px;gap:10px;min-width:0;padding:14px;display:grid}.collage-preview-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.collage-preview-meta strong{color:var(--text);font-size:.94rem;font-weight:700}.collage-preview-meta span{color:var(--text-muted);font-size:.82rem;font-weight:600}.collage-preview-stage canvas{border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;height:auto;display:block}.collage-report-download{background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:12px;display:flex}.collage-report-download>div{gap:3px;min-width:0;display:grid}.collage-report-download strong{min-width:0;color:var(--text);overflow-wrap:break-word;font-weight:700}.collage-report-download span{color:var(--text-muted);font-size:.84rem;font-weight:600}.collage-report-download small{color:var(--text-muted);font-size:.78rem;font-weight:600;line-height:1.4}.collage-image-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.collage-image-card{border:1px solid var(--border);background:#fff;border-radius:8px;min-width:0;display:grid;overflow:hidden}.collage-image-card.is-selected{border-color:var(--accent);box-shadow:0 0 0 3px #256f661f}.collage-image-preview-button{aspect-ratio:4/3;cursor:pointer;background:#edf2f5;border:0;width:100%;padding:0;display:block;position:relative;overflow:hidden}.collage-image-preview-button img{object-fit:cover;width:100%;height:100%;display:block}.collage-image-preview-button span{color:#fff;background:#17202ac7;border-radius:8px;min-height:28px;padding:5px 8px;font-size:.78rem;font-weight:700;position:absolute;bottom:8px;right:8px}.collage-image-card.is-selected .collage-image-preview-button span{background:var(--accent)}.collage-image-meta{gap:3px;min-width:0;padding:10px;display:grid}.collage-image-meta strong,.collage-image-meta span{overflow-wrap:break-word;min-width:0}.collage-image-meta strong{color:var(--text);font-weight:700}.collage-image-meta span,.collage-image-meta small{color:var(--text-muted);font-size:.82rem;font-weight:600}.dashboard-heading{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:16px;display:flex}.dashboard-heading>div:first-child{flex:280px;min-width:0}.dashboard-stats{flex:0 300px;grid-template-columns:repeat(3,minmax(76px,1fr));gap:8px;min-width:min(100%,280px);display:grid}.stat-tile{border:1px solid var(--border);background:#f5f8fa;border-radius:8px;gap:2px;padding:10px 12px;display:grid}.stat-tile span{color:var(--text-muted);font-size:.82rem;font-weight:700}.stat-tile strong{color:var(--text);font-size:1.45rem;line-height:1}.status-submitted{background:var(--accent-soft);border-color:var(--accent-soft-border)}.status-resubmitted{background:#fff7e8;border-color:#e0b764}.status-missing{border-color:var(--border);color:var(--text-muted);background:#f5f8fa}.submission-section{gap:10px;display:grid}.section-heading{justify-content:space-between;align-items:center;gap:16px;display:flex}.section-heading h2{color:var(--text);margin:0;font-size:1.25rem}.submission-table-wrap{border:1px solid var(--border);border-radius:8px;overflow-x:auto}.submission-table{border-collapse:collapse;background:#fff;width:100%;min-width:860px}.submission-table th,.submission-table td{border-bottom:1px solid var(--border);text-align:left;vertical-align:middle;padding:10px 12px}.submission-table th{color:var(--text-muted);background:#f5f8fa;font-size:.82rem;font-weight:700}.submission-table tr:last-child td{border-bottom:0}.submission-row:hover{background:#f8fbfd}.submission-row.is-missing{background:#fbfcfd}.submission-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.submission-history-row>td{background:#f4f8fa;padding:0}.submission-history{flex-direction:column;gap:10px;padding:14px 16px;display:flex}.submission-version{background:#fff;border:1px solid #e3eaef;border-radius:10px;padding:12px 14px}.submission-version-head{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:12px;font-size:13px;display:flex}.submission-version-tag{color:var(--accent-hover);font-weight:800}.submission-version-files{flex-direction:column;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.submission-version-files li{align-items:center;gap:8px;font-size:13px;display:flex}.submission-version-files li small{color:var(--text-subtle)}.student-number-cell{width:92px;color:var(--text);font-size:1.02rem;font-weight:700}.student-identity-cell{gap:2px;min-width:0;display:grid}.student-identity-cell strong{color:var(--text);white-space:nowrap;font-weight:700}.student-identity-cell small{color:var(--text-muted);overflow-wrap:break-word;font-size:.78rem;font-weight:600}.filename-cell{overflow-wrap:break-word;gap:3px;max-width:330px;font-weight:700;display:grid}.filename-cell small{color:var(--text-muted);font-size:.78rem;font-weight:600}.muted-cell{color:var(--text-subtle);font-weight:600}.status-pill{border:1px solid var(--border);color:#23333d;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;min-height:30px;padding:0 9px;font-size:.84rem;font-weight:700;display:inline-flex}.version-badge,.download-link{white-space:nowrap;border-radius:8px;align-items:center;gap:6px;min-height:32px;padding:0 10px;font-size:.88rem;font-weight:700;text-decoration:none;display:inline-flex}.version-badge{color:#1f4f49;background:var(--accent-soft)}.version-badge.is-resubmitted{color:#7a520c;background:#fff1c9}.download-link{color:var(--accent-hover);border:1px solid var(--accent-soft-border);background:#fff}.zip-download-link{color:#fff;background:var(--accent);text-align:center;white-space:normal;border-radius:8px;flex:0 auto;justify-content:center;align-items:center;gap:8px;max-width:100%;min-height:46px;padding:0 16px;font-weight:700;line-height:1.2;text-decoration:none;display:inline-flex}.download-link:hover{background:var(--accent-soft);border-color:var(--accent-soft-border)}.zip-download-link:hover{background:var(--accent-hover)}.zip-download-link.is-disabled{color:#71808b;pointer-events:none;background:#e4ebef}.table-empty,.empty-state{color:var(--text-muted);text-align:center;font-weight:700}.empty-state{align-content:center;place-items:center;gap:12px;min-height:260px;display:grid}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=980px){.guide-hero{grid-template-columns:1fr}.guide-infographic{grid-template-columns:repeat(3,minmax(0,1fr))}.school-management-forms,.school-workspace-layout,.student-roster-workspace{grid-template-columns:1fr}.school-workspace-sidebar{position:static}.school-workspace-list{max-height:none}.teacher-main{grid-template-columns:1fr}.assignment-sidebar{border-right:0;border-bottom:1px solid var(--border)}.assignment-action-row{grid-template-columns:repeat(auto-fit,minmax(132px,1fr))}.collage-entry-section,.collage-preview-workspace{grid-template-columns:1fr}.assignment-list{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));max-height:none;padding-right:0}.teacher-topbar{align-items:flex-start}.teacher-actions{justify-content:flex-start}.teacher-content{padding:20px}}@media (width<=760px){.attendance-status-group{flex-wrap:wrap}.guide-page{gap:18px;padding:16px}.guide-header{flex-direction:column;align-items:stretch}.guide-screen-chip{white-space:normal;justify-content:center}.guide-infographic{grid-template-columns:1fr}.guide-code-panel{min-height:180px}.guide-step-card{min-height:230px}.app-shell,.teacher-shell{padding:12px}.teacher-workspace,.teacher-login-panel{min-height:calc(100vh - 24px)}.teacher-login-panel{grid-template-columns:1fr;padding:24px}.brand-logo-large{width:auto;height:68px}.teacher-topbar,.dashboard-heading,.section-heading,.teacher-list-heading,.school-card-header,.academic-year-header,.class-group-row,.roster-row{flex-direction:column;align-items:stretch}.roster-import-form{grid-column:auto}.school-card-actions,.inline-edit-form,.school-table-actions,.school-workspace-header,.workspace-section-heading{justify-content:stretch}.school-workspace-header,.workspace-section-heading{flex-direction:column;align-items:stretch}.school-card-actions button,.school-table-actions .assignment-table-button,.inline-edit-form button{width:100%}.workspace-inline-create,.class-workspace-create,.class-record-toolbar,.manual-roster-count-row,.manual-roster-name-row{grid-template-columns:1fr}.class-record-actions,.class-record-actions .ui-button{width:100%}.assignment-filter-bar{grid-template-columns:1fr}.assignment-filter-bar .ui-button,.teacher-actions,.teacher-actions .ui-button{width:100%}.teacher-main{grid-template-columns:1fr}.assignment-sidebar{border-right:0;border-bottom:1px solid var(--border)}.teacher-content,.teacher-list-page{padding:18px}.teacher-list-count{width:100%}.bulk-download-bar{flex-direction:column;align-items:stretch}.bulk-download-bar .zip-download-link,.collage-actions,.collage-actions .ui-button,.collage-report-download .zip-download-link,.collage-entry-section .ui-button{width:100%}.segmented-control{align-items:stretch}.collage-option-panel,.collage-preview-stage{padding:12px}.dashboard-heading>div:first-child,.dashboard-stats{flex:none}.dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.submission-surface{min-height:calc(100vh - 24px)}.topbar,.assignment-header{flex-direction:column;align-items:stretch}.brand-row{flex-wrap:wrap;justify-content:flex-start}.brand-logo{width:auto;height:44px}.brand-context{min-height:28px}.step-meter{justify-content:flex-start}.topbar-actions{flex-direction:column;align-items:flex-start}.content-area{padding:20px}.code-hero{gap:18px}.code-input-row,.file-summary,.confirm-summary div{grid-template-columns:1fr}.button-row{flex-direction:column}.button-row .ui-button,.code-input-row .ui-button,.screen-capture-actions .ui-button,.modal-action-row{width:100%}.modal-backdrop{padding:12px}.modal-panel{max-height:calc(100vh - 24px);padding:18px}.modal-action-row,.edit-static-grid{grid-template-columns:1fr}}.billing-page{align-content:start;gap:24px;width:100%;max-width:900px;margin-inline:auto;padding:clamp(40px,6vh,64px) 34px 56px;display:grid}.plan-compare{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.plan-compare-three{grid-template-columns:repeat(3,minmax(0,1fr))}.billing-plan-select{margin-bottom:4px}.plan-card{border:1px solid var(--border);background:#fff;border-radius:8px;align-content:start;gap:16px;padding:24px;display:grid}.plan-card.is-current{border-color:var(--accent-soft-border);box-shadow:0 0 0 1px var(--accent-soft-border)}.plan-card-pro{background:var(--accent-soft);border-color:var(--accent-soft-border)}.plan-card-head{align-items:center;gap:10px;display:flex}.plan-card-head h2{margin:0;font-size:1.3rem}.plan-current-badge,.plan-recommend-badge{border-radius:999px;align-items:center;padding:2px 10px;font-size:.8rem;font-weight:700;display:inline-flex}.plan-current-badge{color:var(--accent-hover);background:var(--accent-soft)}.plan-recommend-badge{color:#fff;background:var(--accent)}.plan-price{align-items:baseline;gap:6px;margin:0;display:flex}.plan-price strong{font-size:1.7rem}.plan-price span{color:var(--text-muted);font-size:.92rem}.plan-feature-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.plan-feature-list li{border-bottom:1px solid #eef2f5;justify-content:space-between;align-items:center;gap:12px;padding-bottom:10px;font-size:.94rem;display:flex}.plan-feature-list li:last-child{border-bottom:none;padding-bottom:0}.plan-feature-list span{color:var(--text-muted)}.plan-feature-list strong{color:var(--text)}.billing-notice{color:var(--accent-hover);background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:8px;align-items:center;gap:10px;padding:16px 18px;font-weight:600;display:flex}.billing-order-card{border:1px solid var(--border);background:#fff;border-radius:8px;gap:14px;padding:22px;display:grid}.billing-order-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.billing-order-head strong{font-size:1.2rem}.billing-order-card p{color:#344551;margin:0;line-height:1.55}.bank-info{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:8px;margin:0;padding:16px;display:grid}.bank-info div{justify-content:space-between;gap:12px;display:flex}.bank-info dt{color:var(--text-muted);font-size:.9rem}.bank-info dd{margin:0;font-weight:700}.billing-form{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:10px;padding:22px;display:grid}.billing-form h2{margin:0;font-size:1.15rem}.billing-form p{color:var(--text-muted);margin:0 0 4px;font-size:.92rem}.billing-form label{font-size:.9rem;font-weight:600}.billing-form input{border:1px solid var(--border-strong);background:#fff;border-radius:8px;min-height:46px;padding:0 14px}.billing-history{gap:10px;display:grid}.billing-history h2{margin:0;font-size:1.05rem}.billing-history ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.billing-history li{border:1px solid var(--border);background:#fff;border-radius:8px;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 14px;font-size:.9rem;display:flex}.billing-history-date{color:var(--text-muted)}.order-status{border-radius:999px;align-items:center;padding:2px 10px;font-size:.82rem;font-weight:700;display:inline-flex}.order-pending{color:#7a520c;background:#fff7e8}.order-confirmed{color:var(--accent-hover);background:var(--accent-soft)}.order-rejected{color:#8d2f20;background:#fff4f1}.order-cancelled{color:var(--text-muted);background:#f2f6f8}@media (width<=760px){.plan-compare{grid-template-columns:1fr}}.consent-group{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:8px;padding:14px;display:grid}.consent-row{cursor:pointer;align-items:flex-start;gap:8px;font-size:.92rem;line-height:1.5;display:flex}.consent-row input{width:18px;min-width:18px;height:18px;margin-top:1px}.consent-row a{color:var(--accent);font-weight:600;text-decoration:underline}.account-page{align-content:start;gap:24px;padding:clamp(40px,6vh,64px) 34px 56px;display:grid}.account-sections{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start;gap:16px;display:grid}.account-card{border:1px solid var(--border);background:#fff;border-radius:8px;gap:8px;padding:22px;display:grid}.account-card h2{margin:0 0 6px;font-size:1.1rem}.account-card>p{color:var(--text-muted);margin:0 0 6px;font-size:.92rem;line-height:1.55}.account-card label{font-size:.88rem;font-weight:600}.account-card input{border:1px solid var(--border-strong);background:#fff;border-radius:8px;min-height:44px;padding:0 14px}.account-card input:disabled{color:#8a97a1;background:#f2f6f8}.account-card .button,.account-card button[type=submit]{justify-self:start;margin-top:6px}.account-success{color:var(--accent-hover);margin:2px 0 0;font-size:.9rem;font-weight:600}.account-danger{background:#fffaf9;border-color:#f0c8c0}.account-danger h2{color:#8d2f20}.legal-page{background:#f4f7f9;min-height:100vh}.legal-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;max-width:880px;margin:0 auto;padding:20px 24px;display:flex}.legal-header .brand-row{text-decoration:none}.legal-nav{flex-wrap:wrap;gap:16px;font-size:.92rem;display:flex}.legal-nav a{color:#44535d;font-weight:600;text-decoration:none}.legal-nav a:hover{color:var(--accent)}.legal-content{background:#fff;border:1px solid #e2e9ee;border-radius:12px;max-width:880px;margin:0 auto 64px;padding:32px clamp(20px,4vw,40px) 48px}.legal-content h1{margin:0 0 16px;font-size:1.7rem}.legal-content h2{color:#17313a;margin:28px 0 8px;font-size:1.1rem}.legal-content p,.legal-content li{color:#3a4a54;word-break:keep-all;line-height:1.7}.legal-content ul{margin:6px 0;padding-left:20px}.legal-placeholder-note{background:#fff7e8;border:1px solid #f0d8a8;border-radius:8px;padding:12px 14px;font-size:.9rem;color:#7a520c!important}.legal-meta{border-top:1px solid #e2e9ee;margin-top:32px;padding-top:16px;font-size:.88rem;color:var(--text-muted)!important}.billing-receipt-toggle{cursor:pointer;align-items:center;gap:8px;margin-top:4px;font-size:.92rem;font-weight:600;display:flex}.billing-receipt-toggle input{width:16px;height:16px;min-height:16px;margin:0}.billing-receipt-fields{border:1px solid var(--border);background:#fff;border-radius:8px;gap:10px;margin:0;padding:14px;display:grid}.billing-receipt-types{flex-wrap:wrap;gap:8px 18px;display:flex}.billing-receipt-types label{cursor:pointer;align-items:center;gap:6px;font-size:.9rem;font-weight:500;display:flex}.billing-receipt-types input{width:16px;height:16px;min-height:16px;margin:0}.billing-receipt-fields>input{border:1px solid var(--border-strong);background:#fff;border-radius:8px;min-height:44px;padding:0 14px}.receipt-cell{flex-direction:column;gap:2px;display:inline-flex}.receipt-cell small{color:var(--text-muted)}.billing-legal{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:12px;padding:22px;display:grid}.billing-legal h2{margin:0;font-size:1.05rem}.billing-legal-note{color:var(--text-muted);margin:0;font-size:.9rem;line-height:1.6}.billing-legal-note a{color:var(--accent);font-weight:600;text-decoration:underline}.student-privacy-footer{max-width:640px;margin:18px auto 0;padding:0 24px 10px}.student-privacy-footer .privacy-notice a{color:var(--accent);font-weight:600;text-decoration:underline}.billing-cycle-toggle{border:1px solid var(--border);background:#eef3f6;border-radius:999px;justify-self:start;gap:4px;padding:4px;display:inline-flex}.billing-cycle-toggle button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:999px;align-items:center;gap:8px;padding:9px 18px;font-size:.92rem;font-weight:600;display:inline-flex}.billing-cycle-toggle button.is-active{color:var(--text);background:#fff;box-shadow:0 1px 3px #17202a1f}.cycle-badge{background:var(--accent-soft);color:var(--accent-hover);border-radius:999px;align-items:center;padding:1px 8px;font-size:.78rem;font-weight:700;display:inline-flex}.plan-price-sub{color:var(--accent-hover);margin:-8px 0 0;font-size:.9rem;font-weight:600}.storage-usage{border:1px solid var(--border);background:#f8fbfd;border-radius:8px;gap:8px;padding:18px 22px;display:grid}.storage-usage-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.storage-usage-head span{font-weight:600}.storage-usage-head strong{font-size:1.05rem}.storage-usage-bar{background:#e3eaef;border-radius:999px;height:8px;overflow:hidden}.storage-usage-bar span{background:var(--accent);border-radius:999px;height:100%;display:block}.storage-usage-bar span.is-full{background:#c0492f}.storage-usage small{color:var(--text-muted);font-size:.85rem}:root{--accent:#4f46e5;--accent-hover:#4338ca;--accent-press:#3730a3;--accent-soft:#eef0fe;--accent-soft-border:#d7dafb;--accent-text:#4338ca;--bg:#f4f5f8;--surface:#fff;--surface-2:#fafbfc;--border:#e7e9f0;--border-strong:#d7dbe4;--text:#191c24;--text-muted:#5a6474;--text-subtle:#8993a2;--danger:#dc2626;--danger-hover:#b91c1c;--danger-soft:#fef2f3;--danger-border:#f3c9cd;--r-sm:8px;--r-md:11px;--r-lg:16px;--r-pill:999px;--shadow-xs:0 1px 2px #1216210d;--shadow-sm:0 1px 2px #1216210f, 0 2px 6px #1216210d;--shadow-md:0 2px 4px #1216210d, 0 8px 24px #12162114;--shadow-lg:0 12px 40px #1216211f;--font-sans:"Pretendard Variable", Pretendard, Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Apple SD Gothic Neo", sans-serif;font-family:var(--font-sans);color:var(--text);background:var(--bg)}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.teacher-shell{background:var(--bg)}.teacher-workspace,.teacher-login-panel{border-radius:var(--r-lg);box-shadow:var(--shadow-lg);border:0}.teacher-topbar{background:var(--surface);border-bottom:1px solid var(--border);border-radius:var(--r-lg) var(--r-lg) 0 0;padding:16px 22px}.teacher-nav-link{min-height:40px;color:var(--text-muted);border-radius:var(--r-pill);background:0 0;border:1px solid #0000;padding:8px 14px;transition:color .14s,background .14s,border-color .14s}.teacher-nav-link:hover{color:var(--text);background:#eef0f4}.teacher-nav-link.is-active{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent-soft-border)}.teacher-breadcrumb{border-bottom:1px solid var(--border)}.ui-button{border-radius:var(--r-md);box-shadow:var(--shadow-xs);transition:background .14s,box-shadow .14s,transform 60ms}.ui-button:hover:not(:disabled){box-shadow:var(--shadow-sm)}.ui-button:active:not(:disabled){transform:translateY(1px)}.ui-button:disabled{color:var(--text-subtle);background:#eef0f3;border-color:#eef0f3}.teacher-list-heading h1,.dashboard-heading h1{letter-spacing:-.02em;font-weight:800}.eyebrow{color:var(--accent-text)}.teacher-list-count{background:var(--accent-soft);border:1px solid var(--accent-soft-border);border-radius:var(--r-md)}.teacher-list-count strong{color:var(--accent-text)}.school-workspace-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);gap:18px;padding:22px}.school-workspace-main{gap:16px}.school-workspace-section{border-top:1px solid var(--border)}.school-table-wrap{border-radius:var(--r-md);border:0;overflow:hidden}.school-table th,.school-table td{border-bottom:1px solid var(--border);padding:14px 16px}.school-table th{color:var(--text-subtle);background:var(--surface-2);letter-spacing:.02em;text-transform:none;font-size:.78rem;font-weight:700}.school-table tr:hover td,.school-table tr.is-active td{background:#f7f8fb}.school-table-title strong{font-weight:700}.school-year-bar{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);padding:16px}.school-year-select{border:1px solid var(--border-strong);border-radius:var(--r-md);min-height:42px}.school-year-select:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.workspace-inline-create input{border:1px solid var(--border-strong);border-radius:var(--r-md)}.workspace-tab{min-height:40px;color:var(--text-muted);border:1px solid var(--border-strong);border-radius:var(--r-pill);background:0 0;transition:color .14s,background .14s,border-color .14s}.workspace-tab:hover,.workspace-tab.is-active{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent-soft-border)}.school-card-actions button:not(.ui-button):not(.danger-inline-button),.school-table-actions .assignment-table-button{color:var(--text-muted);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);transition:color .14s,background .14s,border-color .14s}.school-card-actions button:not(.ui-button):not(.danger-inline-button):hover:not(:disabled),.school-table-actions .assignment-table-button:hover:not(:disabled){color:var(--text);border-color:var(--border-strong);background:#f3f4f7}.school-card-actions .danger-inline-button{color:var(--danger);background:var(--danger-soft);border:1px solid var(--danger-border);border-radius:var(--r-md)}.school-card-actions .danger-inline-button:hover:not(:disabled){color:#fff;background:var(--danger);border-color:var(--danger)}.teacher-login-form input,.assignment-create-form input,.assignment-create-form select,.journal-modal-form textarea,.roster-upload-modal-form textarea,.school-management-form input,.billing-form input,.inline-edit-form input,input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],input[type=date],textarea{border-color:var(--border-strong);border-radius:var(--r-md)}select,.assignment-filter-bar select,.assignment-create-form select,.school-management-form select,.submission-table select,.school-year-select{appearance:none;color:var(--text);background-color:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235a6474' stroke-width='2.25' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 13px center;background-repeat:no-repeat;background-size:16px 16px;padding-left:12px;padding-right:40px;transition:border-color .14s,box-shadow .14s}select:hover:not(:disabled),.assignment-filter-bar select:hover:not(:disabled),.school-year-select:hover:not(:disabled){border-color:var(--text-subtle)}select:disabled{color:var(--text-subtle);cursor:not-allowed;background-color:#eef0f3}.submission-table select{background-position:right 8px center;min-width:88px;padding-left:9px;padding-right:28px}.list-toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px;display:flex}.list-toolbar .list-search{flex:240px;max-width:380px}.list-toolbar-count{color:var(--text-subtle);white-space:nowrap;margin-left:auto;font-size:.85rem;font-weight:700}.list-search{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-md);align-items:center;gap:8px;min-width:0;min-height:42px;padding:0 10px 0 12px;transition:border-color .14s,box-shadow .14s;display:flex}.list-search:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.list-search>svg{color:var(--text-subtle);flex:none}.list-search input{min-width:0;height:100%;color:var(--text);font:inherit;background:0 0;border:0;outline:none;flex:auto;padding:0;font-weight:600}.list-search input::placeholder{color:var(--text-subtle);font-weight:500}.list-search input[type=search]::-webkit-search-cancel-button{appearance:none}.list-search-clear{width:24px;height:24px;color:var(--text-subtle);border-radius:var(--r-pill);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:inline-flex}.list-search-clear:hover{color:var(--text);background:#eef0f4}.filter-chips{flex-wrap:wrap;gap:6px;min-width:0;display:flex}.filter-chip{min-height:38px;color:var(--text-muted);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-pill);cursor:pointer;align-items:center;gap:6px;padding:0 13px;font-weight:700;transition:color .14s,background .14s,border-color .14s;display:inline-flex}.filter-chip:hover{color:var(--text);background:#f3f4f7}.filter-chip.is-active{color:var(--accent-text);background:var(--accent-soft);border-color:var(--accent-soft-border)}.filter-chip-count{min-width:20px;height:20px;color:var(--text-muted);border-radius:var(--r-pill);background:#eef0f4;justify-content:center;align-items:center;padding:0 6px;font-size:.78rem;font-weight:800;display:inline-flex}.filter-chip.is-active .filter-chip-count{color:var(--accent-text);background:#fff}@media (width<=760px){.list-toolbar .list-search{flex-basis:100%;max-width:none}.list-toolbar-count{margin-left:0}}.admin-stats{margin-bottom:20px}.admin-tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:8px;margin-bottom:18px;padding-bottom:18px;display:flex}.admin-tabs .workspace-tab{text-decoration:none}.admin-section{min-width:0}.student-roster-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.student-roster-toolbar .list-search{flex:220px;max-width:340px}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{box-shadow:0 0 0 3px var(--accent-soft);border-color:var(--accent);border-radius:var(--r-sm);outline:none}.backup-card{max-width:620px;margin-bottom:24px}.backup-card .checkbox-row input{width:18px;height:18px;min-height:0;accent-color:var(--accent);padding:0}.backup-number-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 16px;display:grid}.backup-number-grid>div{gap:6px;display:grid}.backup-card-actions{flex-wrap:wrap;gap:10px;margin-top:8px;display:flex}.backup-history-heading{margin:4px 0 12px;font-size:1.1rem}.backup-download{align-items:center;gap:5px;display:inline-flex}.beta-notice{border-radius:var(--r-sm);color:#7a4e0b;background:#fff8ec;border:1px solid #f0c98a;flex-direction:column;gap:4px;margin-top:4px;padding:12px 14px;font-size:.86rem;line-height:1.5;display:flex}.beta-notice strong{font-size:.9rem}.beta-notice p{margin:0}@media (prefers-color-scheme:dark){.beta-notice{color:#f0c98a;background:#2a2113;border-color:#6b5220}}
