@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:"Noto Sans Thai", "Leelawadee UI", Tahoma, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.static{position:static}.hidden{display:none}.table{display:table}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}:root{--primary:#4f46e5;--primary-strong:#3730a3;--primary-soft:#eef2ff;--bg:#f6f7fb;--surface:#fff;--surface-2:#f8fafc;--text:#162035;--muted:#64748b;--border:#e2e8f0;--success:#059669;--warning:#d97706;--error:#dc2626;--shadow:0 8px 30px #1e293b12;font-family:var(--font-sans);color:var(--text);background:var(--bg);font-synthesis:none}.dark{--bg:#0c1220;--surface:#131c2e;--surface-2:#182337;--text:#edf2f7;--muted:#a0aec0;--border:#2b3950;--primary-soft:#28265e;--shadow:0 8px 30px #00000040;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}svg{flex:none;width:1.1rem;height:1.1rem}h1,h2,h3,p{margin:0}:focus-visible{outline:3px solid var(--primary)}@supports (color:color-mix(in lab,red,red)){:focus-visible{outline:3px solid color-mix(in srgb,var(--primary) 35%,transparent)}}:focus-visible{outline-offset:2px}.btn{border:0;border-radius:11px;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:0 17px;font-weight:700;transition:all .2s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-primary{color:#fff;background:var(--primary);box-shadow:0 5px 14px var(--primary)}@supports (color:color-mix(in lab,red,red)){.btn-primary{box-shadow:0 5px 14px color-mix(in srgb,var(--primary) 25%,transparent)}}.btn-primary:hover{background:var(--primary-strong)}.btn-secondary{color:var(--text);background:var(--surface);border:1px solid var(--border);box-shadow:none}.btn-ghost{color:var(--muted);background:0 0}.btn-danger{color:var(--error);background:#fef2f2;border:1px solid #fecaca}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:18px}.eyebrow{color:var(--primary);letter-spacing:.11em;text-transform:uppercase;font-size:.72rem;font-weight:800}.page{max-width:1500px;margin:auto;padding:34px 38px 60px}.page-title{justify-content:space-between;align-items:end;gap:20px;margin-bottom:28px;display:flex}.page-title h1{letter-spacing:-.02em;margin:5px 0 7px;font-size:2rem;line-height:1.2}.page-title p{color:var(--muted)}.heading-buttons,.top-actions{align-items:center;gap:10px;display:flex}.app-shell{grid-template-columns:255px 1fr;min-height:100vh;display:grid}.sidebar{color:#d6dfef;z-index:40;background:#11182a;flex-direction:column;height:100vh;display:flex;position:sticky;top:0}.sidebar-brand{border-bottom:1px solid #273044;align-items:center;gap:11px;height:76px;padding:0 20px;display:flex}.sidebar-brand>div,.compact-brand>svg{color:#fff;background:linear-gradient(135deg,#818cf8,#4f46e5);border-radius:11px;width:38px;height:38px;padding:9px}.sidebar-brand span{flex-direction:column;display:flex}.sidebar-brand strong{color:#fff;font-size:1.15rem}.sidebar-brand small{letter-spacing:.13em;color:#8793a9;font-size:.57rem}.sidebar-brand button{color:#fff;background:0 0;border:0;margin-left:auto;display:none}.sidebar nav{flex:1;padding:15px 12px;overflow:auto}.sidebar nav section{margin:8px 0 19px}.sidebar nav section>span{color:#718096;text-transform:uppercase;letter-spacing:.12em;padding:0 11px 7px;font-size:.64rem;display:block}.sidebar nav a{color:#acb7cb;border-radius:9px;align-items:center;gap:11px;min-height:42px;margin:3px 0;padding:0 12px;font-size:.86rem;display:flex}.sidebar nav a svg{opacity:.75}.sidebar nav a b{flex:1;font-weight:600}.sidebar nav a em{color:#fff;background:#ef4444;border-radius:10px;padding:2px 6px;font-size:.65rem;font-style:normal}.sidebar nav a:hover,.sidebar nav a.active{color:#fff;background:#252d48}.sidebar nav a.active{box-shadow:inset 3px 0 #818cf8}.sidebar-account{border-top:1px solid #273044;align-items:center;gap:9px;padding:15px;display:flex}.sidebar-account span{flex-direction:column;flex:1;min-width:0;display:flex}.sidebar-account strong{color:#fff;font-size:.8rem}.sidebar-account small{color:#7e899e;text-overflow:ellipsis;font-size:.65rem;overflow:hidden}.sidebar-account button,.icon-button,.menu-button{color:inherit;background:0 0;border:0;border-radius:8px;padding:7px}.avatar,.student-avatar{color:#fff;background:#4338ca;border-radius:10px;place-items:center;width:34px;height:34px;font-weight:800;display:grid}.sidebar-scrim{display:none}.main{min-width:0}.topbar{background:var(--surface);height:76px;padding:0 38px}@supports (color:color-mix(in lab,red,red)){.topbar{background:color-mix(in srgb,var(--surface) 92%,transparent)}}.topbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:30;justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.menu-button{display:none}.course-switch>span{color:var(--muted);margin-bottom:2px;font-size:.68rem;display:block}.course-switch button{color:var(--text);background:0 0;border:0;align-items:center;gap:5px;padding:0;font-weight:700;display:flex}.course-switch>strong{font-size:.78rem;display:block}.icon-button{border:1px solid var(--border);background:var(--surface);place-items:center;width:40px;height:40px;display:grid;position:relative}.icon-button.notice i{border:2px solid var(--surface);background:#ef4444;border-radius:50%;width:7px;height:7px;position:absolute;top:6px;right:7px}.hero-card{color:#fff;background:linear-gradient(120deg,#34317b,#4f46e5 57%,#667eea);border-radius:23px;grid-template-columns:1.2fr 1fr;min-height:300px;padding:45px 52px;display:grid;position:relative;overflow:hidden;box-shadow:0 16px 40px #4f46e533}.hero-card:before,.hero-card:after{content:"";border:1px solid #ffffff1f;border-radius:50%;width:420px;height:420px;position:absolute;top:-140px;right:-120px}.hero-card:after{width:300px;height:300px;top:100px;right:80px}.hero-card>div{z-index:1;position:relative}.hero-pill{background:#ffffff24;border-radius:20px;align-items:center;gap:7px;padding:6px 12px;font-size:.74rem;font-weight:700;display:inline-flex}.hero-card h2{letter-spacing:-.02em;margin:18px 0 8px;font-size:2.25rem}.hero-card h2 em{color:#fbbf24;font-style:normal}.hero-card p{color:#d6dcff;margin-bottom:25px}.hero-card .btn-secondary{color:#3730a3;background:#fff;border:0}.hero-visual{place-items:center;display:grid}.ring{--progress:290deg;background:conic-gradient(#fbbf24 var(--progress),#ffffff24 0);border-radius:50%;place-items:center;width:180px;height:180px;display:grid;position:relative}.ring:before{content:"";background:#4d4ac1;border-radius:50%;position:absolute;inset:14px}.ring span{z-index:1;flex-direction:column;align-items:center;display:flex}.ring strong{font-size:2.4rem}.ring small{color:#dbe0ff}.float-stat{color:#1e293b;background:#fff;border-radius:12px;align-items:center;gap:8px;padding:10px 14px;font-size:.72rem;display:flex;position:absolute;box-shadow:0 10px 25px #0000002e}.float-stat svg{color:#10b981}.float-stat span{flex-direction:column;display:flex}.float-stat.one{top:30px;right:0}.float-stat.two{bottom:20px;left:5px}.float-stat.two svg{color:#f59e0b}.stat-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin:20px 0;display:grid}.stat-grid>.card{align-items:center;gap:14px;padding:20px;display:flex}.stat-icon{border-radius:13px;place-items:center;width:44px;height:44px;display:grid}.stat-icon.purple{color:#4f46e5;background:#eef2ff}.stat-icon.blue{color:#0891b2;background:#ecfeff}.stat-icon.amber{color:#d97706;background:#fffbeb}.stat-icon.green{color:#059669;background:#ecfdf5}.stat-grid .card>div{grid-template-columns:auto auto;align-items:end;gap:0 8px;display:grid}.stat-grid small{color:var(--muted);grid-column:1/3;font-size:.72rem}.stat-grid strong{font-size:1.65rem}.stat-grid em{color:var(--success);align-items:center;font-size:.69rem;font-style:normal;display:flex}.stat-grid em.attention{color:var(--warning)}.dashboard-grid{grid-template-columns:1.55fr 1fr;gap:20px;display:grid}.dashboard-grid>*{min-width:0}.activity-panel,.plan-panel{box-shadow:none;padding:23px}.activity-panel>header,.plan-panel>header,.source-panel>header,.columns-panel>header,.export-preview>header{justify-content:space-between;align-items:center;margin-bottom:15px;display:flex}.activity-panel h2,.plan-panel h2,.source-panel h2,.columns-panel h2{font-size:1rem}.activity-panel header p,.plan-panel header p,.source-panel header p,.columns-panel header p{color:var(--muted);margin-top:3px;font-size:.72rem}.activity-panel header button{color:var(--primary);background:0 0;border:0;align-items:center;font-size:.75rem;display:flex}.activity-list>button,.inbox-list>button{border:0;border-top:1px solid var(--border);width:100%;color:var(--text);text-align:left;background:0 0;align-items:center;gap:11px;padding:13px 4px;display:flex}.activity-list>button>div,.inbox-list>button>div{flex-direction:column;flex:1;min-width:0;display:flex}.activity-list strong,.inbox-list strong{font-size:.78rem}.activity-list small,.inbox-list small{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.67rem;overflow:hidden}.plan-item{margin:18px 0}.plan-item>div:first-child{justify-content:space-between;margin-bottom:7px;font-size:.76rem;display:flex}.progress,.submission-progress>div:last-child{background:var(--surface-2);border-radius:8px;height:7px;overflow:hidden}.progress i,.submission-progress i{background:linear-gradient(90deg,#6366f1,#818cf8);border-radius:8px;height:100%;display:block}.plan-tip{color:#9a3412;background:#fff7ed;border-radius:10px;gap:10px;margin:20px 0;padding:12px;font-size:.7rem;display:flex}.plan-tip span{flex-direction:column;display:flex}.status{white-space:nowrap;color:#475569;background:#f1f5f9;border-radius:16px;align-items:center;gap:5px;padding:4px 8px;font-size:.64rem;font-weight:700;display:inline-flex}.status i{background:currentColor;border-radius:50%;width:5px;height:5px}.status-published,.status-approved,.status-graded,.status-active,.status-on-time{color:#047857;background:#ecfdf5}.status-draft,.status-pending,.status-submitted,.status-reviewing{color:#a16207;background:#fefce8}.status-need_permission,.status-need_revision,.status-late,.status-absent{color:#b91c1c;background:#fef2f2}.status-not_submitted{color:#475569;background:#f1f5f9}.toolbar{align-items:center;gap:10px;margin-bottom:20px;display:flex}.search{flex:1;max-width:520px;position:relative}.search svg{color:var(--muted);position:absolute;top:50%;left:13px;transform:translateY(-50%)}.search input{padding-left:40px!important}.toolbar input,.toolbar select,.form-grid input,.form-grid select,.form-grid textarea,.review-form input,.review-form textarea,.settings-form input,.settings-form select,.submission-form input,.submission-form textarea{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);border-radius:10px;min-height:42px;padding:10px 12px}.toolbar select{width:auto;min-width:160px}.subject-grid,.classroom-grid,.assessment-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.subject-card,.classroom-card,.assessment-card{box-shadow:none;padding:21px;position:relative;overflow:hidden}.subject-color{height:4px;position:absolute;top:0;left:0;right:0}.subject-card header,.classroom-card header,.assessment-card header{justify-content:space-between;align-items:center;margin-bottom:15px;display:flex}.subject-card button,.classroom-card button,.assessment-card button{color:var(--muted);background:0 0;border:0}.subject-icon,.classroom-card header>span,.type-icon{border-radius:12px;place-items:center;width:43px;height:43px;display:grid}.classroom-card header>span{color:#fff}.code-pill,.period-label{color:var(--primary);background:var(--primary-soft);border-radius:6px;padding:3px 7px;font-size:.65rem;font-weight:800;display:inline-block}.subject-card h2,.classroom-card h2,.assessment-card h2{margin:9px 0 4px;font-size:1.05rem}.subject-card>p,.classroom-card>p,.assessment-card>p{color:var(--muted);min-height:34px;font-size:.75rem}.subject-rooms{border-top:1px solid var(--border);margin-top:16px;padding-top:13px}.subject-rooms>span,.room-subject>small{color:var(--muted);font-size:.66rem}.subject-rooms div{gap:6px;margin-top:7px;display:flex}.subject-rooms b,.room-subject b{background:var(--surface-2);border-radius:6px;padding:3px 8px;font-size:.67rem}.subject-card footer,.classroom-card footer,.assessment-card footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:14px;padding-top:13px;font-size:.72rem;display:flex}.assessment-card footer{flex-wrap:wrap;justify-content:flex-start;gap:12px}.assessment-card footer button:last-child{margin-left:auto}.subject-card footer span{color:var(--muted);gap:5px;display:flex}.subject-card footer button,.classroom-card footer button,.assessment-card footer button:last-child{color:var(--primary);font-weight:700}.room-stat{background:var(--surface-2);color:var(--primary);border-radius:10px;align-items:center;gap:10px;margin:16px 0;padding:12px;display:flex}.room-stat div{flex-direction:column;display:flex}.room-stat span{color:var(--muted);font-size:.68rem}.room-subject{justify-content:space-between;align-items:center;display:flex}.room-subject span{gap:5px;display:flex}.classroom-card footer button{align-items:center;gap:5px;display:flex}.type-assignment{color:#4f46e5;background:#eef2ff}.type-homework{color:#0891b2;background:#ecfeff}.type-quiz,.type-midterm,.type-final{color:#ea580c;background:#fff7ed}.assessment-card header>div{align-items:center;gap:5px;display:flex}.assessment-meta{color:var(--muted);gap:15px;margin:15px 0;font-size:.69rem;display:flex}.assessment-meta span{align-items:center;gap:5px;display:flex}.submission-progress>div:first-child{justify-content:space-between;margin-bottom:7px;font-size:.7rem;display:flex}.submission-progress i{background:#10b981}.plan-strip{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:22px;display:grid}.plan-strip button{background:var(--surface);border:1px solid var(--border);text-align:left;color:var(--text);border-radius:13px;padding:15px}.plan-strip button.active{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.plan-strip button>span,.plan-strip button>small{color:var(--muted);font-size:.68rem;display:block}.plan-strip button>strong{margin:5px 0;font-size:1.1rem;display:block}.plan-strip button>div{background:var(--surface-2);border-radius:5px;height:5px;margin-bottom:5px}.plan-strip button i{background:var(--primary);border-radius:5px;height:100%;display:block}.data-card{box-shadow:none;padding:0;overflow:hidden}.data-card>.toolbar{border-bottom:1px solid var(--border);margin:0;padding:18px}.responsive-table{overflow:auto}.responsive-table table{border-collapse:collapse;width:100%}.responsive-table th{text-align:left;background:var(--surface-2);color:var(--muted);white-space:nowrap;padding:11px 16px;font-size:.68rem}.responsive-table td{border-top:1px solid var(--border);padding:12px 16px;font-size:.77rem}.person{align-items:center;gap:9px;display:flex}.person>span{background:var(--primary-soft);width:29px;height:29px;color:var(--primary);border-radius:8px;place-items:center;font-weight:800;display:grid}.person strong{white-space:nowrap}.responsive-table td code{background:var(--surface-2);border-radius:5px;padding:3px 6px;font-family:ui-monospace,monospace}.responsive-table td>button{color:var(--muted);background:0 0;border:0}.modal-backdrop{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#0a101d9e;place-items:center;padding:20px;animation:.15s fade;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:19px;width:min(540px,100%);max-height:90vh;overflow:auto;box-shadow:0 25px 80px #0000004d}.modal-wide{width:min(850px,100%)}.modal>header{border-bottom:1px solid var(--border);background:var(--surface);z-index:2;justify-content:space-between;align-items:center;padding:20px 23px;display:flex;position:sticky;top:0}.modal header small{color:var(--primary);letter-spacing:.15em;font-size:.57rem}.modal header h2{margin-top:3px;font-size:1.1rem}.modal header button{background:var(--surface-2);color:var(--muted);border:0;border-radius:8px;padding:6px}.form-grid,.import-flow{gap:16px;padding:22px;display:grid}.form-grid label,.review-form label,.settings-form label,.submission-form label{color:var(--text);gap:6px;font-size:.72rem;font-weight:700;display:grid}.form-grid textarea,.review-form textarea,.submission-form textarea{resize:vertical}.form-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.color-input{height:44px;padding:3px!important}.modal-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;padding-top:16px;display:flex}.error-text{font-weight:500;color:var(--error)!important}.check-row{flex-wrap:wrap;gap:10px;display:flex}.check-row span{background:var(--surface-2);border-radius:8px;padding:8px 10px;font-weight:500}.option-box{background:var(--surface-2);border-radius:11px;gap:9px;padding:14px;display:grid}.option-box label{align-items:center;gap:8px;display:flex}.option-box label:last-child{grid-template-columns:auto 70px auto;justify-content:start;display:grid}.option-box input[type=number]{min-height:34px;padding:5px}.steps{justify-content:center;align-items:center;gap:8px;display:flex}.steps b{color:var(--muted);font-size:.7rem}.steps b.done{color:var(--success)}.steps i{background:var(--border);width:45px;height:1px}.dropzone{background:var(--surface-2);text-align:center;cursor:pointer;border:2px dashed #cbd5e1;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;min-height:280px;padding:25px;display:flex}.dropzone>svg{width:45px;height:45px;color:var(--primary);background:var(--primary-soft);border-radius:13px;margin-bottom:10px;padding:11px}.dropzone h3{font-size:.95rem}.dropzone p{color:var(--muted);margin:4px 0 15px;font-size:.74rem}.text-link{color:var(--primary);background:0 0;border:0;justify-content:center;align-items:center;gap:5px;margin-top:10px;font-weight:700;display:inline-flex}.import-summary{background:var(--surface-2);border-radius:10px;align-items:center;gap:10px;padding:12px;font-size:.7rem;display:flex}.import-summary span{align-items:center;gap:4px;display:flex}.import-summary .success,.valid-row{color:var(--success)}.import-summary .danger,.invalid-row{color:var(--error)}.import-summary button{color:var(--primary);background:0 0;border:0;margin-left:auto}.import-table{border:1px solid var(--border);border-radius:10px;max-height:350px}.row-error{background:#fff7f7}.valid-row{align-items:center;gap:3px;display:flex}.review-layout{grid-template-columns:390px 1fr;align-items:start;gap:18px;display:grid}.inbox{box-shadow:none;position:sticky;top:95px;overflow:hidden}.inbox>header{border-bottom:1px solid var(--border);gap:7px;padding:14px;display:flex}.inbox header button{border:1px solid var(--border);background:var(--surface);color:var(--muted);border-radius:9px;padding:8px}.filter-chips{border-bottom:1px solid var(--border);gap:5px;padding:10px 12px;display:flex;overflow:auto}.filter-chips button,.quick-comments button{border:1px solid var(--border);background:var(--surface);color:var(--muted);white-space:nowrap;border-radius:15px;padding:5px 8px;font-size:.63rem}.filter-chips button.active{color:var(--primary);background:var(--primary-soft);border-color:#c7d2fe}.inbox-list{max-height:calc(100vh - 240px);overflow:auto}.inbox-list>button{padding:13px 12px}.inbox-list>button.active{background:var(--primary-soft);box-shadow:inset 3px 0 var(--primary)}.review-panel{box-shadow:none;padding:0;overflow:hidden}.review-student{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:19px 22px;display:flex}.student-avatar.large{width:43px;height:43px}.review-student>div{flex:1}.review-student h2{font-size:1rem}.review-student p{color:var(--muted);font-size:.7rem}.review-context{background:var(--surface-2);grid-template-columns:1.3fr 1fr 1fr auto;align-items:center;gap:15px;padding:13px 22px;display:grid}.review-context div{flex-direction:column;display:flex}.review-context small{color:var(--muted);font-size:.61rem}.review-context strong{font-size:.72rem}.drive-preview{border:1px solid var(--border);border-radius:12px;margin:20px 22px;overflow:hidden}.drive-preview>header{background:var(--surface-2);justify-content:space-between;padding:10px 13px;font-size:.68rem;display:flex}.drive-preview header span,.drive-preview header a{align-items:center;gap:6px;display:flex}.drive-preview header a{color:var(--primary);font-weight:700}.drive-preview iframe{background:#fff;border:0;width:100%;height:330px}.preview-error{height:250px;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;display:flex}.preview-error svg{width:38px;height:38px;color:var(--warning)}.preview-error h3{color:var(--text);margin-top:8px;font-size:.9rem}.preview-error p{font-size:.72rem}.review-form{gap:13px;padding:0 22px 20px;display:grid}.score-field>div{align-items:center;display:flex}.score-field input{border-radius:9px 0 0 9px;max-width:110px;font-size:1.1rem;font-weight:800}.score-field span{background:var(--surface-2);border:1px solid var(--border);height:42px;color:var(--muted);border-left:0;border-radius:0 9px 9px 0;align-items:center;padding:0 12px;display:flex}.quick-comments{gap:6px;display:flex}.review-actions{border-top:1px solid var(--border);justify-content:space-between;gap:10px;padding:16px 22px;display:flex}.review-actions>div{gap:8px;display:flex}.history{border:1px solid var(--border);border-radius:10px;margin:0 22px 20px;padding:10px 12px;font-size:.7rem}.history summary{cursor:pointer;font-weight:700}.history>div{border-top:1px solid var(--border);align-items:center;gap:8px;margin-top:9px;padding-top:9px;display:flex}.history>div span{flex-direction:column;flex:1;display:flex}.history a{color:var(--primary);font-weight:700}.gradebook-card{box-shadow:none;overflow:hidden}.gradebook-card>.toolbar{justify-content:space-between;margin:0;padding:16px}.grade-legend{color:var(--muted);align-items:center;gap:5px;font-size:.68rem;display:flex}.save-state{color:var(--success);align-items:center;gap:6px;font-size:.7rem;display:flex}.save-state.saving{color:var(--warning)}.grade-table-wrap{max-height:calc(100vh - 260px);overflow:auto}.grade-table{border-collapse:separate;border-spacing:0;width:100%;min-width:1100px}.grade-table th,.grade-table td{border-top:1px solid var(--border);border-right:1px solid var(--border);text-align:center;padding:7px}.grade-table thead th{z-index:3;background:var(--surface-2);min-width:105px;font-size:.69rem;position:sticky;top:0}.grade-table thead span,.grade-table thead small,.grade-table tfoot span,.grade-table tfoot small{display:block}.grade-table thead small,.grade-table tfoot small{color:var(--muted);font-size:.6rem}.grade-table .sticky-col{z-index:2;background:var(--surface);position:sticky;left:0}.grade-table thead .sticky-col{z-index:4;background:var(--surface-2)}.grade-table .student-col{text-align:left;min-width:210px}.grade-table tbody .student-col{align-items:center;gap:9px;display:flex}.grade-table tbody .student-col div{flex-direction:column;display:flex}.grade-table tbody .student-col strong{font-size:.72rem}.grade-table tbody .student-col small{color:var(--muted);font-size:.61rem}.grade-table input,.grade-table select{text-align:center;width:82px;min-height:35px;color:var(--text);background:0 0;border:1px solid #0000;border-radius:7px;font-weight:700}.grade-table input:hover,.grade-table input:focus{border-color:var(--primary);background:var(--primary-soft)}.grade-table select{width:90px;color:var(--warning);font-size:.6rem}.missing-cell{background:#fffbeb}.total-cell strong,.total-cell small{display:block}.total-cell small{color:var(--muted);font-size:.6rem}.grade-table tfoot th,.grade-table tfoot td{background:var(--surface-2);font-size:.66rem}.grade-table tfoot th{align-items:center;gap:5px;display:flex}.pp5-total{color:#fff;background:linear-gradient(110deg,#312e81,#4f46e5);border-radius:16px;justify-content:space-between;margin-bottom:18px;padding:16px 20px;display:flex}.pp5-total>div{align-items:center;gap:12px;display:flex}.pp5-total>div:first-child>svg{background:#ffffff24;border-radius:10px;width:34px;height:34px;padding:8px}.pp5-total span{flex-direction:column;display:flex}.pp5-total>div:last-child{text-align:center;gap:24px}.pp5-total small{color:#c7d2fe;font-size:.63rem}.pp5-total>div:last-child b{font-size:1.1rem}.unsaved{color:var(--warning);align-items:center;gap:5px;font-size:.68rem;display:flex}.mapping-workspace{grid-template-columns:260px 340px minmax(350px,1fr);align-items:start;gap:14px;display:grid}.mapping-workspace>.card{box-shadow:none;max-height:calc(100vh - 250px);overflow:hidden auto}.source-panel,.columns-panel{padding:16px}.source-list{gap:7px;display:grid}.source-list>div{border:1px solid var(--border);cursor:grab;background:var(--surface);border-radius:10px;align-items:center;gap:7px;padding:9px;display:flex}.source-list>div>svg{color:#94a3b8}.source-list>div>span{flex-direction:column;flex:1;min-width:0;display:flex}.source-list strong{white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;overflow:hidden}.source-list small{color:var(--muted);font-size:.58rem}.source-list>div>b{color:var(--primary);font-size:.72rem}.columns-panel>header button{background:var(--primary-soft);color:var(--primary);border:0;border-radius:8px;gap:4px;padding:6px 8px;font-size:.65rem;font-weight:700;display:flex}.pp5-column-list section{margin-bottom:15px}.pp5-column-list h3{color:var(--muted);justify-content:space-between;margin-bottom:6px;font-size:.68rem;display:flex}.pp5-column-list h3 span{font-weight:500}.pp5-column-list section>button{border:1px solid var(--border);background:var(--surface);width:100%;color:var(--text);text-align:left;border-radius:10px;align-items:center;gap:8px;margin-bottom:6px;padding:9px;display:flex}.pp5-column-list section>button.active{border-color:var(--primary);background:var(--primary-soft)}.column-no{background:var(--surface-2);border-radius:7px;place-items:center;width:25px;height:25px;font-size:.65rem;font-weight:800;display:grid}.pp5-column-list button>div{flex-direction:column;flex:1;display:flex}.pp5-column-list strong{font-size:.7rem}.pp5-column-list small{color:var(--muted);font-size:.58rem}.pp5-column-list button>b{color:var(--primary)}.settings-panel>header{background:var(--surface-2);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:17px 19px;display:flex}.settings-panel header span{color:var(--primary);font-size:.6rem;font-weight:800}.settings-panel header h2{margin-top:3px;font-size:1rem}.settings-form{gap:14px;padding:17px;display:grid}.settings-form label>small{color:var(--muted);font-weight:500}.method-list{grid-template-columns:1fr 1fr;gap:6px;display:grid}.method-list button{text-align:left;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:9px;align-items:center;gap:7px;padding:8px;display:flex}.method-list button.active{border-color:var(--primary);background:var(--primary-soft)}.method-list button>span{border:1px solid var(--border);width:17px;height:17px;color:var(--primary);border-radius:50%;place-items:center;display:grid}.method-list button>div{flex-direction:column;display:flex}.method-list strong{font-size:.65rem}.method-list small{color:var(--muted);font-size:.55rem}.mapped-sources{gap:6px;display:grid}.mapped-sources>div:not(.drop-hint){border:1px solid var(--border);border-radius:8px;align-items:center;gap:6px;padding:7px;display:flex}.mapped-sources>div>span{flex-direction:column;flex:1;display:flex}.mapped-sources strong{font-size:.65rem}.mapped-sources small{color:var(--muted);font-size:.56rem}.mapped-sources label{grid-template-columns:none;align-items:center;font-size:.65rem;display:flex}.mapped-sources label input{width:53px;min-height:30px;padding:4px}.mapped-sources button{color:var(--error);background:0 0;border:0}.drop-hint{border:2px dashed var(--border);text-align:center;color:var(--muted);border-radius:9px;padding:20px;font-size:.67rem}.live-preview{color:#14532d;background:#f0fdf4;border-top:1px solid #bbf7d0;padding:14px 17px}.dark .live-preview{color:#a7f3d0;background:#10281e;border-color:#285b45}.live-preview header{justify-content:space-between;margin-bottom:6px;font-size:.66rem;font-weight:800;display:flex}.live-preview header b{background:#dcfce7;border-radius:5px;padding:3px 6px;font-size:.55rem}.live-preview>div{border-top:1px solid #1665341f;align-items:center;padding:6px 0;font-size:.65rem;display:flex}.live-preview>div span{flex:1}.live-preview>div strong{font-size:.78rem}.live-preview>div small{font-size:.55rem}.empty-settings,.empty-state,.loading{text-align:center;min-height:300px;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;padding:25px;display:flex}.empty-settings svg,.empty-state>span svg{background:var(--primary-soft);width:44px;height:44px;color:var(--primary);border-radius:13px;margin-bottom:10px;padding:10px}.empty-settings h3,.empty-state h3{color:var(--text);font-size:.9rem}.empty-settings p,.empty-state p{margin:4px 0 15px;font-size:.72rem}.export-layout{grid-template-columns:1fr 1fr;gap:20px;max-width:1000px;margin:auto;display:grid}.export-config,.export-preview{box-shadow:none;padding:25px}.export-config>header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding-bottom:19px;display:flex}.export-config header>svg{background:var(--primary-soft);width:48px;height:48px;color:var(--primary);border-radius:13px;padding:12px}.export-config h2,.export-preview h2{font-size:1rem}.export-config p,.export-preview p{color:var(--muted);font-size:.7rem}.export-checks{gap:10px;margin:20px 0;display:grid}.export-checks>div{background:var(--surface-2);border-radius:10px;align-items:center;gap:10px;padding:12px;display:flex}.export-checks svg{color:var(--success)}.export-checks span{flex-direction:column;display:flex}.export-checks strong{font-size:.72rem}.export-checks small{color:var(--muted);font-size:.62rem}.export-config>.btn{width:100%}.export-config>small{text-align:center;color:var(--muted);margin-top:9px;font-size:.6rem;display:block}.export-preview section h3{color:var(--muted);margin:15px 0 5px;font-size:.7rem}.export-preview section>div{border-top:1px solid var(--border);grid-template-columns:1fr 120px auto;gap:8px;padding:9px 0;font-size:.7rem;display:grid}.export-preview section small{color:var(--muted);font-size:.58rem}.academic-card{box-shadow:none;max-width:800px;padding:23px}.academic-card>div:first-child{align-items:center;gap:12px;display:flex}.academic-card>div:first-child>div:nth-child(2){flex:1}.academic-card h2{font-size:1rem}.academic-card p{color:var(--muted);font-size:.72rem}.academic-card hr{border:0;border-top:1px solid var(--border);margin:20px 0}.lock-info{align-items:center;gap:12px;display:flex}.lock-info>svg{color:var(--warning)}.lock-info>div{flex:1}.login-page{background:var(--surface);grid-template-columns:1.05fr .95fr;min-height:100vh;display:grid}.login-brand{color:#fff;background:linear-gradient(145deg,#141a33,#312e81 55%,#4f46e5);grid-template-rows:auto 1fr;grid-template-columns:auto 1fr;gap:0 12px;padding:46px 60px;display:grid;position:relative;overflow:hidden}.login-brand:after{content:"";border:1px solid #ffffff1a;border-radius:50%;width:520px;height:520px;position:absolute;bottom:-160px;right:-240px;box-shadow:0 0 0 80px #ffffff06,0 0 0 160px #ffffff05}.brand-mark{color:#4f46e5;background:#fff;border-radius:12px;place-items:center;width:44px;height:44px;display:grid}.login-brand>div:nth-child(2) h1{font-size:1.35rem}.login-brand>div:nth-child(2) p{color:#a5b4fc;font-size:.64rem}.login-promise{z-index:1;grid-column:1/3;align-self:center;max-width:570px;position:relative}.login-promise>span{color:#c7d2fe;font-size:.75rem;font-weight:700}.login-promise h2{letter-spacing:-.04em;margin:15px 0;font-size:3.1rem;line-height:1.18}.login-promise>p{color:#cbd5e1;max-width:480px}.promise-points{gap:12px;margin-top:35px;display:flex}.promise-points span{background:#ffffff17;border-radius:10px;align-items:center;gap:7px;padding:10px 12px;font-size:.68rem;display:flex}.login-form-wrap{place-items:center;padding:40px;display:grid}.login-form-wrap form,.student-login form{gap:15px;width:min(410px,100%);display:grid}.login-form-wrap h2,.student-login h1{font-size:1.8rem}.login-form-wrap form>p,.student-login form>p{color:var(--muted);margin-top:-9px;margin-bottom:8px;font-size:.8rem}.login-form-wrap label,.student-login label{gap:6px;font-size:.72rem;font-weight:700;display:grid}.input-icon{position:relative}.input-icon svg{color:var(--muted);position:absolute;top:50%;left:12px;transform:translateY(-50%)}.input-icon input,.student-login input{border:1px solid var(--border);background:var(--surface);width:100%;min-height:46px;color:var(--text);border-radius:10px;padding:10px 12px 10px 39px}.student-login input{text-align:center;letter-spacing:.08em;padding-left:12px;font-size:1.1rem}.form-alert{color:var(--error);background:#fef2f2;border-radius:8px;padding:9px;font-size:.68rem}.student-login{background:radial-gradient(circle at 50% 0,#eef2ff,var(--bg) 45%);place-items:center;min-height:100vh;padding:25px;display:grid}.student-login form{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);text-align:center;border-radius:22px;padding:35px}.student-login-icon{background:var(--primary);color:#fff;border-radius:18px;place-items:center;width:58px;height:58px;margin:auto;display:grid;box-shadow:0 10px 22px #4f46e538}.student-login-icon svg{width:28px;height:28px}.security-note{color:var(--muted);justify-content:center;align-items:center;gap:5px;font-size:.6rem;display:flex}.student-shell{background:var(--bg);min-height:100vh}.student-header{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;justify-content:space-between;align-items:center;height:65px;padding:0 max(20px,50% - 550px);display:flex;position:sticky;top:0}.compact-brand{color:var(--primary);align-items:center;gap:8px;display:flex}.compact-brand>svg{width:32px;height:32px;padding:7px}.student-header>div:last-child{align-items:center;gap:10px;font-size:.72rem;display:flex}.student-header button{background:var(--surface-2);color:var(--muted);border:0;border-radius:8px;padding:7px}.student-page{max-width:1100px;margin:auto;padding:30px 20px 80px}.student-hero{color:#fff;background:linear-gradient(120deg,#3730a3,#4f46e5 60%,#7c3aed);border-radius:20px;justify-content:space-between;align-items:center;padding:30px 35px;display:flex}.student-hero>div:first-child>span{color:#ddd6fe;align-items:center;gap:6px;font-size:.7rem;font-weight:700;display:flex}.student-hero h1{margin:5px 0;font-size:2rem}.student-hero p{color:#ddd6fe;font-size:.75rem}.student-summary{background:#ffffff21;border:8px solid #ffffff26;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;width:100px;height:100px;display:flex}.student-summary strong{font-size:1.4rem}.student-summary span{font-size:.65rem}.student-tabs{gap:8px;margin:20px 0;display:flex;overflow:auto}.student-tabs button{border:1px solid var(--border);background:var(--surface);color:var(--muted);white-space:nowrap;border-radius:20px;padding:8px 13px;font-size:.7rem}.student-tabs button.active{background:var(--text);color:var(--surface)}.student-tabs b{background:var(--primary);color:#fff;border-radius:10px;margin-left:4px;padding:1px 5px}.student-assignment-list{gap:12px;display:grid}.student-assignment-card{box-shadow:none;grid-template-columns:75px 1fr;padding:0;display:grid;overflow:hidden}.assignment-number{color:#fff;background:#4f46e5;place-items:center;min-height:190px;font-size:1.7rem;font-weight:900;display:grid}.assignment-number.n1{background:#0891b2}.assignment-number.n2{background:#d97706}.assignment-number.n3{background:#059669}.student-assignment-main{padding:19px 22px}.student-assignment-main header{justify-content:space-between;gap:10px;display:flex}.subject-name{color:var(--primary);font-size:.63rem;font-weight:800}.student-assignment-main h2{margin-top:3px;font-size:1.05rem}.student-assignment-main>p{color:var(--muted);margin:8px 0 15px;font-size:.72rem}.student-assignment-main footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding-top:13px;display:flex}.student-assignment-main footer>div{gap:15px;display:flex}.student-assignment-main footer span{color:var(--muted);align-items:center;gap:5px;font-size:.67rem;display:flex}.student-assignment-main footer span.urgent{color:var(--error);font-weight:700}.student-assignment-main footer .btn{min-height:36px;font-size:.7rem}.student-warning{color:#9a3412;background:#fff7ed;border-radius:9px;gap:8px;margin-bottom:12px;padding:10px;font-size:.66rem;display:flex}.student-warning span{flex-direction:column;display:flex}.student-warning.revision{color:#991b1b;background:#fef2f2}.back-link{color:var(--primary);background:0 0;border:0;align-items:center;gap:6px;margin-bottom:15px;font-size:.72rem;font-weight:700;display:flex}.assignment-detail-grid{grid-template-columns:1.2fr .8fr;align-items:start;gap:18px;display:grid}.assignment-info,.submission-form{box-shadow:none;padding:25px}.assignment-info h1{margin:7px 0;font-size:1.65rem}.assignment-info>p{color:var(--muted);font-size:.8rem;line-height:1.7}.detail-meta{grid-template-columns:repeat(3,1fr);gap:8px;margin:22px 0;display:grid}.detail-meta>span{background:var(--surface-2);border-radius:10px;grid-template-columns:auto 1fr;gap:0 8px;padding:12px;display:grid}.detail-meta svg{color:var(--primary);grid-row:1/3}.detail-meta small{color:var(--muted);font-size:.6rem}.detail-meta strong{font-size:.7rem}.instructions{border-top:1px solid var(--border);padding-top:18px}.instructions h3{font-size:.85rem}.instructions ol{color:var(--muted);font-size:.72rem;line-height:2}.submission-form{gap:15px;display:grid;position:sticky;top:85px}.submission-form>header{justify-content:space-between;align-items:center;display:flex}.submission-form header span{color:var(--primary);font-size:.6rem;font-weight:800}.submission-form h2{font-size:1rem}.submission-form header>svg{color:var(--primary)}.valid-link{color:var(--success);align-items:center;gap:4px;display:flex}.share-check{background:var(--primary-soft);color:var(--primary);border-radius:9px;gap:9px;padding:11px;font-size:.65rem;display:flex}.share-check span{flex-direction:column;display:flex}.preview-link{color:var(--primary);align-items:center;gap:5px;font-size:.67rem;font-weight:700;display:flex}.student-simple-title{margin-bottom:22px}.student-simple-title h1{margin:4px 0;font-size:1.8rem}.student-simple-title p{color:var(--muted)}.student-score-summary{color:#fff;background:linear-gradient(120deg,#312e81,#4f46e5);border:0;align-items:center;gap:15px;padding:22px;display:flex}.student-score-summary>svg{background:#ffffff26;border-radius:12px;width:45px;height:45px;padding:10px}.student-score-summary div{flex-direction:column;display:flex}.student-score-summary span{color:#c7d2fe;font-size:.7rem}.student-score-summary strong{font-size:1.7rem}.student-score-summary small{color:#c7d2fe;font-size:.8rem}.score-list{gap:9px;margin-top:18px;display:grid}.score-list>.card{box-shadow:none;align-items:center;gap:12px;padding:15px 18px;display:flex}.score-icon{background:var(--primary-soft);width:38px;height:38px;color:var(--primary);border-radius:10px;place-items:center;display:grid}.score-list>.card>div{flex-direction:column;flex:1;display:flex}.score-list>.card>div small{color:var(--muted);font-size:.6rem}.score-list>.card>div strong{font-size:.78rem}.score-list>.card>b{color:var(--primary);font-size:1.15rem}.score-list>.card>b small{color:var(--muted);font-size:.65rem}.profile-card{text-align:center;max-width:500px;box-shadow:none;margin:auto;padding:30px}.profile-big-avatar{background:var(--primary-soft);width:80px;height:80px;color:var(--primary);border-radius:25px;place-items:center;margin:auto auto 12px;display:grid}.profile-big-avatar svg{width:35px;height:35px}.profile-card h2{font-size:1.15rem}.profile-card>p{color:var(--muted);font-size:.72rem}.profile-card dl{text-align:left;margin-top:22px}.profile-card dl>div{border-top:1px solid var(--border);justify-content:space-between;padding:12px 0;font-size:.72rem;display:flex}.profile-card dt{color:var(--muted)}.student-bottom-nav{display:none}.toast-stack{z-index:200;gap:8px;display:grid;position:fixed;bottom:20px;right:20px}.toast{color:#fff;background:#172033;border-radius:11px;align-items:center;gap:8px;padding:11px 15px;font-size:.75rem;animation:.2s slide;display:flex;box-shadow:0 10px 30px #00000040}.toast svg{color:#34d399}.toast-error svg{color:#f87171}.loading{min-height:100vh}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade{0%{opacity:0}}@keyframes slide{0%{opacity:0;transform:translateY(10px)}}@media(max-width:1150px){.subject-grid,.classroom-grid,.assessment-grid{grid-template-columns:repeat(2,1fr)}.mapping-workspace{grid-template-columns:230px 300px 1fr}.stat-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{width:255px;transition:all .22s;position:fixed;left:-270px}.sidebar-open{left:0;box-shadow:20px 0 50px #0000004d}.sidebar-brand button{display:block}.sidebar-scrim.show{z-index:35;background:#00000073;border:0;display:block;position:fixed;inset:0}.menu-button{place-items:center;display:grid}.topbar{padding:0 20px}.page{padding:25px 20px 55px}.mapping-workspace{grid-template-columns:1fr 1fr}.settings-panel{grid-column:1/3;max-height:none!important}.review-layout{grid-template-columns:1fr}.inbox{position:static}.inbox-list{max-height:340px}.dashboard-grid{grid-template-columns:minmax(0,1fr)}.export-layout,.login-page{grid-template-columns:1fr}.login-brand{display:none}.assignment-detail-grid{grid-template-columns:1fr}.submission-form{position:static}}@media(max-width:650px){.topbar{height:64px}.course-switch>span{display:none}.course-switch button{max-width:180px;font-size:.7rem}.top-actions .btn{display:none}.page{padding:20px 14px 45px}.page-title{flex-direction:column;align-items:start;margin-bottom:20px}.page-title h1{font-size:1.55rem}.page-title>.btn,.page-title>div:last-child{width:100%}.heading-buttons{flex-wrap:wrap}.heading-buttons>.btn{flex:1}.hero-card{grid-template-columns:1fr;min-height:340px;padding:28px 23px}.hero-card h2{font-size:1.65rem}.hero-visual{opacity:.45;position:absolute;bottom:5px;right:5px}.ring{width:130px;height:130px}.float-stat{display:none}.stat-grid{grid-template-columns:1fr 1fr;gap:9px}.stat-grid>.card{align-items:start;padding:14px}.stat-grid .card>div{flex-direction:column;display:flex}.stat-grid .stat-icon{width:36px;height:36px}.stat-grid strong{font-size:1.25rem}.dashboard-grid{gap:12px}.subject-grid,.classroom-grid,.assessment-grid{grid-template-columns:1fr}.toolbar{flex-wrap:wrap;align-items:stretch}.toolbar .search{flex-basis:100%;width:100%;max-width:none}.toolbar select{flex:1;min-width:120px}.plan-strip{grid-template-columns:1fr 1fr}.form-row{grid-template-columns:1fr}.responsive-table:not(.import-table) thead{display:none}.responsive-table:not(.import-table) tr{border-top:1px solid var(--border);padding:10px;display:block}.responsive-table:not(.import-table) td{border:0;justify-content:space-between;align-items:center;padding:5px 8px;display:flex}.responsive-table:not(.import-table) td:before{content:attr(data-label);color:var(--muted);font-size:.65rem}.person{margin-left:auto}.review-context{grid-template-columns:1fr 1fr}.review-context>.status{justify-self:start}.drive-preview{margin:14px}.drive-preview iframe{height:250px}.review-form{padding:0 14px 15px}.review-actions{flex-direction:column;padding:14px}.review-actions>div{grid-template-columns:1fr 1fr;display:grid}.review-actions>.btn{width:100%}.mapping-workspace{grid-template-columns:1fr}.mapping-workspace>.card{max-height:none}.settings-panel{grid-column:auto}.pp5-total{align-items:start}.pp5-total>div:last-child{grid-template-columns:1fr 1fr;gap:8px;display:grid}.method-list{grid-template-columns:1fr}.grade-legend{display:none}.login-form-wrap{padding:20px}.student-header{padding:0 15px}.student-header>div:last-child>span{display:none}.student-page{padding:18px 13px 85px}.student-hero{padding:22px}.student-hero h1{font-size:1.55rem}.student-summary{border-width:5px;width:75px;height:75px}.student-assignment-card{grid-template-columns:1fr}.assignment-number{min-height:7px;font-size:0}.student-assignment-main{padding:16px}.student-assignment-main footer{align-items:flex-start;gap:12px}.student-assignment-main footer>div{flex-direction:column;gap:5px}.student-bottom-nav{background:var(--surface);border-top:1px solid var(--border);z-index:30;padding:5px 12px max(5px,env(safe-area-inset-bottom));grid-template-columns:repeat(3,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.student-bottom-nav a{color:var(--muted);flex-direction:column;align-items:center;gap:2px;padding:6px;font-size:.6rem;display:flex}.student-bottom-nav a.active{color:var(--primary)}.detail-meta{grid-template-columns:1fr}.student-hero p{max-width:180px}.import-summary{flex-wrap:wrap}.import-summary button{margin-left:0}.modal-backdrop{padding:8px}.modal{max-height:96vh}.export-preview section>div{grid-template-columns:1fr auto}.export-preview section small{display:none}.promise-points{flex-direction:column}}.student-entry-page,.teacher-login-page{background:var(--bg);place-items:center;min-height:100vh;padding:24px;display:grid}.student-entry-page{background:linear-gradient(150deg,#eef2ff 0,#f8fafc 55%,#ecfeff)}.dark .student-entry-page{background:linear-gradient(150deg,#14172f 0,#0c1220 58%,#10252b)}.student-entry-card{background:var(--surface);border:1px solid var(--border);border-radius:24px;width:min(520px,100%);overflow:hidden;box-shadow:0 24px 70px #1e293b21}.entry-brand{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:22px 26px;display:flex}.entry-brand>div{background:var(--primary);color:#fff;border-radius:12px;place-items:center;width:43px;height:43px;display:grid}.entry-brand>div svg{width:23px;height:23px}.entry-brand>span,.brand-home>span{text-align:left;flex-direction:column;display:flex}.entry-brand strong,.brand-home strong{font-size:1.25rem}.entry-brand small,.brand-home small{color:var(--muted);font-size:.62rem}.student-entry-card form{text-align:center;gap:17px;padding:34px 38px;display:grid}.student-entry-card form h1{font-size:1.7rem}.student-entry-card form label,.plain-login-card label{text-align:left;gap:7px;font-size:.75rem;font-weight:700;display:grid}.student-entry-card form input{border:1px solid var(--border);background:var(--surface);width:100%;min-height:52px;color:var(--text);text-align:center;letter-spacing:.04em;border-radius:12px;padding:10px 14px;font-size:1.05rem}.student-entry-card footer{background:var(--surface-2);text-align:center;padding:13px 20px}.student-entry-card footer button{color:var(--muted);background:0 0;border:0;align-items:center;gap:6px;font-size:.68rem;display:inline-flex}.student-entry-card footer button:hover{color:var(--primary)}.plain-login-card{background:var(--surface);border:1px solid var(--border);width:min(420px,100%);box-shadow:var(--shadow);border-radius:20px;gap:16px;padding:30px;display:grid}.brand-home{color:var(--text);border:0;border-bottom:1px solid var(--border);background:0 0;align-items:center;gap:10px;padding:0 0 18px;display:flex}.brand-home>svg{background:var(--primary);color:#fff;border-radius:11px;width:38px;height:38px;padding:9px}.login-heading h1{margin-top:5px;font-size:1.6rem}.first-run-notice{border:1px solid var(--primary);align-items:flex-start;gap:12px;padding:15px;display:flex}@supports (color:color-mix(in lab,red,red)){.first-run-notice{border:1px solid color-mix(in srgb,var(--primary) 28%,var(--border))}}.first-run-notice{background:var(--primary-soft);border-radius:13px}.first-run-notice>svg{width:24px;color:var(--primary);flex:0 0 24px}.first-run-notice strong{font-size:.78rem}.first-run-notice p{color:var(--muted);margin:4px 0 0;font-size:.66rem;line-height:1.65}.image-upload-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;display:grid}.image-upload-grid>div,.image-upload-button{aspect-ratio:1;border:1px solid var(--border);background:var(--surface-2);border-radius:10px;position:relative;overflow:hidden}.image-upload-grid img{object-fit:cover;width:100%;height:100%}.image-upload-grid>div>button{color:#fff;background:#0f172ac7;border:0;border-radius:50%;place-items:center;width:25px;height:25px;display:grid;position:absolute;top:4px;right:4px}.image-upload-grid>div>button svg{width:13px}.image-upload-button{color:var(--primary);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px;font-size:.65rem!important;display:flex!important}.assessment-thumbnail{background:var(--surface-2);border:0;width:calc(100% + 42px);height:150px;margin:0 -21px 14px;display:block;position:relative;overflow:hidden}.assessment-thumbnail img{object-fit:cover;width:100%;height:100%}.assessment-thumbnail span{color:#fff;background:#0f172acc;border-radius:14px;padding:4px 8px;font-size:.65rem;position:absolute;bottom:9px;right:9px}.image-lightbox{place-items:center;padding:18px;display:grid}.image-lightbox img{border-radius:12px;max-width:100%;max-height:72vh}.assignment-image-gallery{margin:20px 0}.assignment-image-gallery h3{margin-bottom:9px;font-size:.85rem}.assignment-image-gallery>div{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.assignment-image-gallery img{aspect-ratio:4/3;object-fit:cover;border:1px solid var(--border);border-radius:9px;width:100%}.assignment-image-gallery button{cursor:zoom-in;background:0 0;border:0;border-radius:9px;padding:0;position:relative;overflow:hidden}.assignment-image-gallery button span{color:#fff;background:#0f172ac7;border-radius:7px;justify-content:center;align-items:center;gap:4px;padding:5px 7px;font-size:.6rem;display:flex;position:absolute;inset:auto 6px 6px}.assignment-image-gallery button span svg,.student-work-image span svg{width:13px;height:13px}.student-expanded-image{object-fit:contain;background:var(--surface-2);border-radius:12px;width:100%;max-height:75vh}.student-link-preview{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;overflow:hidden}.student-link-preview>header{background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-size:.66rem;display:flex}.student-link-preview header span,.student-link-preview header a{align-items:center;gap:5px;display:flex}.student-link-preview header svg{width:15px}.student-link-preview iframe{background:#fff;border:0;width:100%;height:280px;display:block}.student-link-preview>small{color:var(--muted);padding:8px 12px;font-size:.6rem;display:block}.assessment-card footer .danger-link{color:var(--error)}.review-scope-bar,.scope-selectors,.export-scope-form{flex-wrap:wrap;align-items:end;gap:12px;display:flex}.review-scope-bar{margin-bottom:14px;padding:14px 16px}.review-scope-bar label,.scope-selectors label,.export-scope-form label{min-width:190px;color:var(--muted);gap:5px;font-size:.64rem;font-weight:700;display:grid}.review-scope-bar select,.scope-selectors select,.export-scope-form select{border:1px solid var(--border);background:var(--surface);min-height:39px;color:var(--text);border-radius:9px;padding:0 10px}.review-scope-bar>span{color:var(--muted);margin-left:auto;padding-bottom:10px;font-size:.68rem}.gradebook-card>.toolbar{flex-wrap:wrap}.scope-selectors{width:100%}.export-scope-form{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;padding:16px}.database-layout{grid-template-columns:minmax(0,1fr) 280px;align-items:start;gap:18px;display:grid}.database-wizard{padding:24px}.wizard-step{align-items:flex-start;gap:12px;margin:4px 0 14px;display:flex}.wizard-step:not(:first-child){margin-top:26px}.wizard-step>span{background:var(--primary);color:#fff;border-radius:50%;flex:0 0 30px;place-items:center;width:30px;height:30px;font-size:.72rem;font-weight:800;display:grid}.wizard-step h2{margin:1px 0 2px;font-size:.96rem}.wizard-step p,.database-help p,.database-local-info p,.gateway-contract p{color:var(--muted);margin:0;font-size:.68rem;line-height:1.65}.provider-grid{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.provider-grid>button{border:1px solid var(--border);background:var(--surface);text-align:left;min-height:145px;color:var(--text);border-radius:13px;flex-direction:column;align-items:flex-start;gap:7px;padding:15px;display:flex;position:relative}.provider-grid>button.active{border:2px solid var(--primary);background:var(--primary-soft)}.provider-grid>button>svg:first-child{color:var(--primary)}.provider-grid>button>svg:last-child{width:18px;color:var(--primary);position:absolute;top:10px;right:10px}.provider-grid strong{font-size:.78rem}.provider-grid small{color:var(--muted);font-size:.62rem;line-height:1.5}.database-fields{gap:12px;display:grid}.database-fields>label{color:var(--text);gap:6px;font-size:.7rem;font-weight:700;display:grid}.database-fields input,.database-fields textarea{border:1px solid var(--border);background:var(--surface);color:var(--text);font:inherit;resize:vertical;border-radius:10px;padding:11px 12px}.database-fields label small{color:var(--muted);font-size:.62rem;font-weight:400}.database-local-info,.gateway-contract,.connection-result{background:var(--surface-2);border:1px solid var(--border);border-radius:11px;align-items:flex-start;gap:11px;padding:14px;display:flex}.database-local-info svg,.gateway-contract svg{color:var(--primary);flex:0 0 22px}.connection-result.ok{color:#047857;background:#ecfdf5;border-color:#a7f3d0}.connection-result.error{color:#b91c1c;background:#fef2f2;border-color:#fecaca}.connection-result svg{flex:0 0 19px;width:19px}.database-usage-grid{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px;display:grid}.database-usage-grid>div{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;gap:3px;padding:12px;display:grid}.database-usage-grid small{color:var(--muted);font-size:.58rem}.database-usage-grid strong{font-size:.84rem}.database-usage-grid>p{color:var(--muted);grid-column:1/-1;margin:2px 0 0;font-size:.6rem}.database-actions{justify-content:flex-end;gap:9px;margin-top:14px;display:flex}.database-save-complete{color:#166534;background:#f0fdf4;border:1px solid #86efac;border-radius:12px;align-items:flex-start;gap:12px;margin-top:16px;padding:16px;display:flex}.dark .database-save-complete{color:#bbf7d0;background:#052e16;border-color:#166534}.database-save-complete>svg{flex:0 0 22px}.database-save-complete>div{flex:1;gap:10px;min-width:0;display:grid}.database-save-complete h3,.database-save-complete p{margin:0}.database-save-complete p,.database-save-complete small{font-size:.66rem;line-height:1.6}.database-access-link{align-items:stretch;gap:8px;display:flex}.database-access-link input{background:var(--surface);min-width:0;color:var(--text);border:1px solid #86efac;border-radius:9px;flex:1;padding:9px 10px;font-size:.62rem}.database-help{gap:12px;display:grid}.database-help .card{padding:17px}.database-help svg{color:var(--primary);width:24px}.database-help h3{margin:8px 0 4px;font-size:.78rem}.student-subject-groups{gap:22px;display:grid}.student-subject-section>header{align-items:center;gap:10px;margin-bottom:10px;display:flex}.student-subject-section>header>span{color:#fff;border-radius:11px;place-items:center;width:38px;height:38px;display:grid}.student-subject-section>header>div{flex-direction:column;display:flex}.student-subject-section>header strong{font-size:.92rem}.student-subject-section>header small{color:var(--muted);font-size:.65rem}.student-work-image{background:var(--surface-2);color:var(--primary);border:0;border-radius:9px;align-items:center;gap:9px;margin-bottom:12px;padding:6px;font-size:.67rem;font-weight:700;display:flex}.student-work-image img{object-fit:cover;border-radius:6px;width:60px;height:42px}.student-empty-list{text-align:center;color:var(--muted);box-shadow:none;padding:35px}.student-empty-list svg{color:var(--primary);width:32px;height:32px}.student-empty-list h2{color:var(--text);margin:7px 0 3px;font-size:.9rem}.student-empty-list p{font-size:.7rem}@media(max-width:650px){.student-entry-page,.teacher-login-page{padding:12px}.student-entry-card form{padding:28px 20px}.entry-brand{padding:18px 20px}.entry-brand small,.brand-home small{font-size:.55rem}.image-upload-grid{grid-template-columns:repeat(3,1fr)}.assessment-thumbnail{height:130px}.assignment-image-gallery>div{grid-template-columns:repeat(2,1fr)}.database-layout,.provider-grid{grid-template-columns:1fr}.provider-grid>button{min-height:105px}.review-scope-bar,.scope-selectors,.export-scope-form,.database-actions{flex-direction:column;align-items:stretch}.review-scope-bar label,.scope-selectors label,.export-scope-form label{width:100%;min-width:0}.review-scope-bar>span{margin-left:0;padding-bottom:0}.student-link-preview iframe{height:220px}.database-usage-grid{grid-template-columns:repeat(2,1fr)}.database-access-link{flex-direction:column}}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
