@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-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--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:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--radius-lg:.5rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--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,ui-sans-serif, system-ui, 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{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{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.start{inset-inline-start:var(--spacing)}.end{inset-inline-end:var(--spacing)}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.break-all{word-break:break-all}.uppercase{text-transform:uppercase}.italic{font-style:italic}.line-through{text-decoration-line:line-through}.underline{text-decoration-line:underline}.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,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--ink:#0f1a2e;--slate:#1e2d47;--muted:#5a6a84;--soft:#8b97ad;--cream:#f7f5f0;--paper:#fffdf8;--warm:#e8a44a;--warm-light:#f5d9a8;--accent-green:#3a9e7e;--accent-green-light:#d4f0e5;--danger:#d9534f;--danger-light:#f8e0df;--radius:12px;--radius-lg:20px;--sidebar-width:240px;--border:#e2ddd5;--card-bg:#fff;--card-shadow:0 2px 8px #0f1a2e0f}[data-theme=dark]{--ink:#e8e4de;--slate:#c4bfb5;--muted:#9a9488;--soft:#706b62;--cream:#1a1a1a;--paper:#242424;--warm:#e8a44a;--warm-light:#4a3820;--accent-green:#4ec9a0;--accent-green-light:#1e3a30;--danger:#e06060;--danger-light:#3a2020;--border:#3a3a3a;--card-bg:#2a2a2a;--card-shadow:0 2px 8px #0003}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--ink);background:var(--cream);-webkit-font-smoothing:antialiased;font-family:Plus Jakarta Sans,system-ui,-apple-system,sans-serif;line-height:1.6}h1{margin-bottom:24px;font-size:1.75rem;font-weight:700}h2{margin-bottom:16px;font-size:1.25rem;font-weight:600}h3{margin-bottom:8px;font-size:1.05rem;font-weight:600}a{color:var(--warm);text-decoration:none}a:hover{text-decoration:underline}.auth-page{background:var(--cream);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--paper);border-radius:var(--radius-lg);border:1px solid #0f1a2e0f;width:100%;max-width:400px;padding:48px 40px;box-shadow:0 8px 40px #0f1a2e14}.auth-logo{align-items:center;gap:8px;margin-bottom:32px;font-size:1.5rem;font-weight:700;display:flex}.auth-logo-dot{background:var(--warm);border-radius:50%;width:10px;height:10px;display:inline-block}.auth-card h1{margin-bottom:4px;font-size:1.5rem}.auth-subtitle{color:var(--muted);margin-bottom:24px}.auth-error{background:var(--danger-light);color:var(--danger);border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:.875rem}.auth-card form{flex-direction:column;gap:16px;display:flex}.auth-card label{color:var(--slate);flex-direction:column;gap:6px;font-size:.875rem;font-weight:600;display:flex}.auth-card input{background:var(--paper);color:var(--ink);border:1px solid #0f1a2e1f;border-radius:8px;outline:none;padding:12px 16px;font-family:inherit;font-size:.95rem;transition:border-color .2s}.auth-card input:focus{border-color:var(--warm)}.auth-card input::placeholder{color:var(--soft)}.auth-switch{text-align:center;color:var(--muted);margin-top:24px;font-size:.875rem}.app-layout{min-height:100vh;display:flex}.app-main{margin-left:var(--sidebar-width);flex-direction:column;flex:1;display:flex}.app-content{flex:1;padding:32px 40px}.sidebar{width:var(--sidebar-width);background:var(--ink);color:var(--paper);z-index:100;flex-direction:column;padding:24px 16px;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-logo{align-items:center;gap:8px;margin-bottom:32px;padding:0 12px;font-size:1.25rem;font-weight:700;display:flex}.sidebar-logo-dot{background:var(--warm);border-radius:50%;width:8px;height:8px;display:inline-block}.sidebar-nav{flex-direction:column;flex:1;gap:4px;display:flex}.sidebar-link{color:var(--soft);border-radius:8px;align-items:center;gap:12px;padding:10px 12px;font-size:.9rem;font-weight:500;text-decoration:none;transition:background .2s,color .2s;display:flex}.sidebar-link:hover{color:var(--paper);background:#ffffff0f;text-decoration:none}.sidebar-link-active{color:var(--warm);background:#e8a44a26}.sidebar-icon{text-align:center;width:24px;font-size:1.1rem}.sidebar-footer{border-top:1px solid #ffffff14;padding-top:16px}.sidebar-signout{width:100%;color:var(--soft);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;padding:10px 12px;font-family:inherit;font-size:.85rem;transition:background .2s,color .2s}.sidebar-signout:hover{color:var(--paper);background:#ffffff0f}.app-header{background:var(--paper);border-bottom:1px solid #0f1a2e0f;padding:20px 40px}.header-greeting{color:var(--muted);font-size:.9rem}.header-greeting strong{color:var(--ink)}.loading-screen{min-height:100vh;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.loading-spinner{border:3px solid #0f1a2e1a;border-top-color:var(--warm);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}:focus-visible{outline:2px solid var(--warm);outline-offset:2px}button:focus:not(:focus-visible),a:focus:not(:focus-visible),input:focus:not(:focus-visible),textarea:focus:not(:focus-visible),select:focus:not(:focus-visible){outline:none}.btn-primary{background:var(--ink);color:var(--paper);cursor:pointer;border:none;border-radius:8px;align-items:center;gap:8px;padding:10px 24px;font-family:inherit;font-size:.875rem;font-weight:600;text-decoration:none;transition:background .2s,transform .2s;display:inline-flex}.btn-primary:hover{background:var(--slate);text-decoration:none;transform:translateY(-1px)}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-secondary{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0f1a2e1f;border-radius:8px;align-items:center;gap:8px;padding:8px 16px;font-family:inherit;font-size:.825rem;font-weight:600;text-decoration:none;transition:border-color .2s,color .2s;display:inline-flex}.btn-secondary:hover{border-color:var(--ink);color:var(--ink);text-decoration:none}.btn-danger-text{color:var(--danger);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:8px 12px;font-family:inherit;font-size:.825rem;font-weight:600;transition:background .2s}.btn-danger-text:hover{background:var(--danger-light)}.page-header{justify-content:space-between;align-items:center;margin-bottom:32px;display:flex}.page-header h1{margin-bottom:0}.breadcrumbs{flex-wrap:wrap;align-items:center;gap:2px;margin-bottom:8px;font-size:.8rem;display:flex}.breadcrumb-sep{color:var(--soft);margin:0 6px}.breadcrumb-link{color:var(--muted);text-decoration:none}.breadcrumb-link:hover{color:var(--warm);text-decoration:underline}.breadcrumb-current{color:var(--soft)}.card-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px;display:grid}.card{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;transition:box-shadow .2s,transform .2s;overflow:hidden}.card:hover{transform:translateY(-2px);box-shadow:0 4px 20px #0f1a2e0f}.card-body{padding:24px}.card-actions{border-top:1px solid #0f1a2e0f;flex-wrap:wrap;gap:8px;padding:12px 24px;display:flex}.stats-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px;margin-bottom:40px;display:grid}.stat-card{background:var(--paper);border-radius:var(--radius);text-align:center;border:1px solid #0f1a2e0f;padding:24px}.stat-card-number{color:var(--ink);font-size:2rem;font-weight:700;display:block}.stat-card-label{color:var(--soft);text-transform:uppercase;letter-spacing:1px;margin-top:4px;font-size:.75rem;font-weight:600;display:block}.empty-state{text-align:center;background:var(--paper);border-radius:var(--radius-lg);border:1px solid #0f1a2e0f;padding:64px 24px}.empty-state h2{color:var(--ink)}.empty-state p{color:var(--muted);max-width:400px;margin:0 auto 24px}.empty-state-actions{justify-content:center;gap:12px;display:flex}.quick-actions-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px;display:grid}.action-card{background:var(--paper);border-radius:var(--radius);text-align:center;color:var(--ink);border:1px solid #0f1a2e0f;flex-direction:column;align-items:center;gap:8px;padding:24px;font-size:.9rem;font-weight:600;text-decoration:none;transition:box-shadow .2s,transform .2s;display:flex}.action-card:hover{text-decoration:none;transform:translateY(-2px);box-shadow:0 4px 20px #0f1a2e0f}.action-icon{font-size:1.5rem}.settings-section{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;margin-bottom:24px;padding:32px}.settings-section h2{margin-bottom:20px}.settings-row{border-bottom:1px solid #0f1a2e0f;justify-content:space-between;padding:12px 0;display:flex}.settings-row:last-child{border-bottom:none}.settings-label{color:var(--slate);font-size:.875rem;font-weight:600}.settings-value{color:var(--muted);font-size:.875rem}.settings-actions{gap:12px;margin-top:16px;display:flex}.text-muted{color:var(--muted);font-size:.9rem}.text-small{color:var(--soft);margin-top:8px;font-size:.8rem}.page-header-actions{gap:8px;display:flex}.rubric-meta{background:var(--paper);border-radius:var(--radius);border:1px solid var(--border);flex-direction:column;gap:16px;margin-bottom:24px;padding:24px;display:flex}.criterion-label{color:var(--slate);flex-direction:column;gap:6px;font-size:.875rem;font-weight:600;display:flex}.criterion-input{border:1px solid var(--border);background:var(--paper);width:100%;color:var(--ink);border-radius:8px;outline:none;padding:10px 14px;font-family:inherit;font-size:.9rem;transition:border-color .2s}.criterion-input:focus{border-color:var(--warm)}.criterion-input-narrow{width:auto;max-width:140px}.criterion-input-error{border-color:var(--danger)}.criterion-error-text{color:var(--danger);font-size:.8rem;font-weight:500}.criterion-textarea{border:1px solid var(--border);background:var(--paper);width:100%;color:var(--ink);resize:vertical;border-radius:8px;outline:none;padding:10px 14px;font-family:inherit;font-size:.9rem;transition:border-color .2s}.criterion-textarea:focus{border-color:var(--warm)}.weight-bar-container{background:var(--paper);border-radius:var(--radius);border:1px solid var(--border);margin-bottom:24px;padding:20px 24px}.weight-bar-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.weight-bar-title{color:var(--slate);font-size:.875rem;font-weight:600}.weight-bar-total{color:var(--accent-green);font-size:.875rem;font-weight:700}.weight-bar-warning{color:var(--danger)}.weight-bar{background:#0f1a2e0f;border-radius:6px;height:12px;display:flex;overflow:hidden}.weight-bar-segment{height:100%;transition:width .3s}.weight-bar-empty{background:#0f1a2e0a}.weight-distribute-btn{margin-top:12px}.criteria-list{flex-direction:column;gap:16px;display:flex}.criterion-editor{background:var(--paper);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden}.criterion-header{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;padding:16px 20px;transition:background .15s;display:flex}.criterion-header:hover{background:#0f1a2e05}.criterion-header-left{align-items:center;gap:10px;display:flex}.criterion-handle{font-size:1.1rem}.criterion-type-badge{color:var(--warm);background:var(--warm-light);border-radius:20px;padding:3px 10px;font-size:.75rem;font-weight:600}.criterion-name{color:var(--ink);font-size:.9rem;font-weight:600}.criterion-header-right{align-items:center;gap:12px;display:flex}.criterion-weight-badge{color:var(--muted);font-size:.8rem;font-weight:700}.criterion-expand{color:var(--soft);font-size:.85rem}.criterion-body{border-top:1px solid var(--border);flex-direction:column;gap:16px;padding:20px;display:flex}.criterion-row-split{gap:16px;display:flex}.criterion-config{background:#0f1a2e05;border-radius:8px;flex-direction:column;gap:12px;padding:16px;display:flex}.criterion-config-hint{color:var(--muted);font-size:.825rem;line-height:1.5}.criterion-range{width:100%;accent-color:var(--warm)}.criterion-range-labels{color:var(--soft);justify-content:space-between;font-size:.75rem;display:flex}.criterion-actions{border-top:1px solid var(--border);justify-content:space-between;align-items:center;padding-top:8px;display:flex}.criterion-move-btns{gap:4px;display:flex}.btn-icon{cursor:pointer;width:32px;height:32px;color:var(--muted);background:0 0;border:1px solid #0f1a2e1f;border-radius:6px;justify-content:center;align-items:center;font-size:.9rem;transition:border-color .2s,color .2s;display:flex}.btn-icon:hover:not(:disabled){border-color:var(--ink);color:var(--ink)}.btn-icon:disabled{opacity:.3;cursor:not-allowed}.add-criterion-btn{align-self:flex-start}.keyword-input-row{gap:8px;display:flex}.keyword-input-row .criterion-input{flex:1}.keyword-tags{flex-wrap:wrap;gap:6px;display:flex}.keyword-tag{background:var(--warm-light);color:var(--ink);border-radius:20px;align-items:center;gap:6px;padding:4px 12px;font-size:.825rem;font-weight:500;display:inline-flex}.keyword-tag button{cursor:pointer;color:var(--muted);background:0 0;border:none;padding:0;font-size:1rem;line-height:1}.keyword-tag button:hover{color:var(--danger)}.regex-test-result{border-radius:20px;padding:4px 12px;font-size:.825rem;font-weight:600}.regex-pass{background:var(--accent-green-light);color:var(--accent-green)}.regex-fail{background:var(--danger-light);color:var(--danger)}.type-selector-overlay{z-index:200;background:#0f1a2e66;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.type-selector{background:var(--paper);border-radius:var(--radius-lg);width:100%;max-width:560px;padding:32px;box-shadow:0 16px 64px #0f1a2e33}.type-selector h3{margin-bottom:20px}.type-selector-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:20px;display:grid}.type-selector-card{background:var(--cream);border-radius:var(--radius);cursor:pointer;text-align:left;border:2px solid #0000;flex-direction:column;align-items:flex-start;gap:4px;padding:16px;font-family:inherit;transition:border-color .2s,transform .15s;display:flex}.type-selector-card:hover{border-color:var(--warm);transform:translateY(-1px)}.type-selector-icon{font-size:1.25rem}.type-selector-label{color:var(--ink);font-size:.9rem;font-weight:600}.type-selector-desc{color:var(--muted);font-size:.78rem;line-height:1.4}.type-selector-cancel{justify-content:center;width:100%}.upload-zone-container{background:var(--paper);border-radius:var(--radius);border:2px solid var(--warm);flex-direction:column;gap:16px;min-height:200px;margin-bottom:24px;padding:24px;display:flex}.upload-dropzone{border-radius:var(--radius);text-align:center;cursor:pointer;border:2px dashed #0f1a2e26;padding:40px 24px;transition:border-color .2s,background .2s}.upload-dropzone:hover,.upload-dropzone-active{border-color:var(--warm);background:#e8a44a0a}.upload-icon{margin-bottom:8px;font-size:2rem;display:block}.upload-text{color:var(--ink);margin-bottom:4px;font-size:.9rem;font-weight:600}.upload-hint{color:var(--soft);font-size:.8rem}.upload-file-list{flex-direction:column;gap:8px;display:flex}.upload-file-item{background:var(--cream);border-radius:8px;align-items:center;gap:12px;padding:10px 14px;display:flex}.upload-file-entry{background:var(--cream);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;display:flex}.upload-name-input{width:160px;color:var(--ink);background:var(--paper);border:1px solid #0f1a2e1f;border-radius:6px;padding:6px 10px;font-family:inherit;font-size:.875rem}.upload-name-input:focus{border-color:var(--warm);outline:none}.upload-file-name{color:var(--ink-light);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8rem;overflow:hidden}.upload-file-size{color:var(--soft);font-size:.8rem}.upload-file-remove{cursor:pointer;color:var(--muted);background:0 0;border:none;padding:0 4px;font-size:1.2rem}.upload-file-remove:hover{color:var(--danger)}.upload-progress{color:var(--muted);font-size:.85rem;font-style:italic}.upload-rejected{color:#92400e;background:#fef3c7;border-radius:8px;margin-top:8px;padding:8px 14px;font-size:.83rem}.upload-section{margin-bottom:24px}.submission-meta{align-items:center;gap:12px;margin-top:8px;display:flex}.status-badge{text-transform:capitalize;border-radius:20px;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-block}.status-uploaded{background:var(--warm-light);color:var(--warm)}.status-scanning{color:#4a90d9;background:#4a90d926}.status-scanned{background:var(--accent-green-light);color:var(--accent-green)}.status-graded{color:#7c6bb5;background:#7c6bb526}.assignment-rubric-info{margin-bottom:24px}.assignment-form{flex-direction:column;gap:24px;display:flex}.submission-list h2{margin-bottom:16px}.next-step-banner{border-radius:10px;justify-content:space-between;align-items:center;margin-bottom:20px;padding:12px 20px;font-size:.9rem;font-weight:500;display:flex}.next-step-banner-scan{color:#92400e;background:#fef3c7;border:1px solid #fcd34d}.next-step-banner-grade{color:#1e40af;background:#dbeafe;border:1px solid #93c5fd}.scan-warmup-banner{background:var(--paper);border-radius:var(--radius);color:var(--ink-light);border:1px solid #0f1a2e14;align-items:center;gap:10px;margin-bottom:16px;padding:12px 16px;font-size:.9rem;display:flex}.scan-progress-container{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;margin-bottom:24px;padding:20px 24px}.scan-progress-bar{background:#0f1a2e0f;border-radius:4px;height:8px;margin-bottom:8px;overflow:hidden}.scan-progress-fill{background:var(--warm);border-radius:4px;height:100%;transition:width .3s}.scan-progress-text{color:var(--muted);font-size:.85rem}.scan-done-message{background:var(--accent-green-light);color:var(--accent-green);border-radius:8px;margin-bottom:24px;padding:12px 16px;font-size:.875rem;font-weight:600}.scan-layout{grid-template-columns:300px 1fr;gap:24px;min-height:400px;display:grid}.scan-sidebar-list{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;padding:20px}.scan-sidebar-list h2{margin-bottom:12px;font-size:1rem}.scan-submission-list{flex-direction:column;gap:4px;display:flex}.scan-submission-item{cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;justify-content:space-between;align-items:center;width:100%;padding:10px 12px;font-family:inherit;transition:background .15s;display:flex}.scan-submission-item:hover:not(:disabled){background:#0f1a2e08}.scan-submission-item:disabled{opacity:.5;cursor:default}.scan-submission-selected{background:#e8a44a1a}.scan-submission-info{flex-direction:column;gap:2px;display:flex}.scan-submission-name{color:var(--ink);font-size:.875rem;font-weight:600}.scan-submission-file{color:var(--soft);font-size:.75rem}.scan-mini-score{border-radius:12px;padding:2px 8px;font-size:.8rem;font-weight:700}.scan-mini-pass{background:var(--accent-green-light);color:var(--accent-green)}.scan-mini-fail{background:var(--danger-light);color:var(--danger)}.scan-mini-graded{color:var(--soft);background:#0f1a2e0f}.scan-submission-graded{border-left:3px solid var(--accent-green);opacity:.7}.scan-submission-graded .scan-submission-name{color:var(--soft)}.scan-submission-ungraded{border-left:3px solid var(--accent)}.scan-graded-check{color:var(--accent-green);font-weight:700}.cluster-group{border:1px solid #0f1a2e1a;border-radius:8px;margin-bottom:12px;overflow:hidden}.cluster-group-header{color:var(--soft);text-transform:uppercase;letter-spacing:.04em;background:#0f1a2e0a;border-bottom:1px solid #0f1a2e14;justify-content:space-between;align-items:center;padding:6px 10px;font-size:.75rem;font-weight:600;display:flex}.cluster-group-label{align-items:center;gap:6px;display:flex}.cluster-size-badge{text-transform:none;letter-spacing:0;background:#0f1a2e14;border-radius:99px;padding:1px 7px;font-size:.7rem;font-weight:500;display:inline-block}.scan-submission-representative{border-left:3px solid var(--accent)}.cluster-rep-badge{color:var(--accent);font-size:.8em}.btn-xs{white-space:nowrap;border-radius:5px;padding:3px 8px;font-size:.72rem}.btn-active{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-active:hover{background:#0f1a2ed9;border-color:#0f1a2ed9}.scan-grade-action{margin-bottom:16px}.grading-progress-subtitle{color:var(--soft);margin-top:2px;font-size:.85rem}.btn-disabled{opacity:.5;cursor:default;pointer-events:none}.workflow-steps{align-items:center;gap:0;margin:0 0 20px;display:flex}.workflow-step{align-items:center;gap:6px;display:flex}.workflow-step-dot{background:var(--paper);width:28px;height:28px;color:var(--soft);border:2px solid #0f1a2e26;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;font-weight:700;display:flex}.workflow-step-label{color:var(--soft);white-space:nowrap;font-size:.8rem;font-weight:600}.workflow-step-line{background:#0f1a2e1a;flex-shrink:0;width:24px;height:2px;margin:0 8px}.workflow-step-active .workflow-step-dot{border-color:var(--warm);background:var(--warm);color:var(--paper)}.workflow-step-active .workflow-step-label{color:var(--ink)}.workflow-step-completed .workflow-step-dot{border-color:var(--accent-green);background:var(--accent-green);color:var(--paper)}.workflow-step-completed .workflow-step-label{color:var(--accent-green)}.workflow-step-completed .workflow-step-line{background:var(--accent-green)}.workflow-action-banner{background:var(--accent-green-light);color:var(--accent-green);border-radius:var(--radius);justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;padding:12px 16px;font-size:.9rem;font-weight:600;display:flex}.workflow-action-complete{background:var(--accent-green-light)}.grading-progress-card{background:var(--paper);border:2px solid var(--warm);border-radius:var(--radius);flex-direction:column;margin-bottom:20px;padding:16px 20px;display:flex}.grading-progress-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.grading-progress-label{color:var(--ink);text-transform:uppercase;letter-spacing:.03em;font-size:.85rem;font-weight:600}.grading-progress-count{color:var(--warm);font-size:.85rem;font-weight:600}.grading-progress-bar{background:#f59e0b26;border-radius:4px;height:8px;overflow:hidden}.grading-progress-fill{background:var(--warm);border-radius:4px;height:100%;transition:width .3s}.scan-detail-panel{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;padding:24px}.scan-detail-empty{justify-content:center;align-items:center;min-height:200px;display:flex}.scan-summary{border-bottom:1px solid #0f1a2e0f;align-items:center;gap:24px;margin-bottom:20px;padding-bottom:20px;display:flex}.scan-summary-score{flex-direction:column;align-items:center;display:flex}.scan-score-number{color:var(--ink);font-size:2rem;font-weight:700}.scan-score-label{color:var(--soft);text-transform:uppercase;letter-spacing:1px;font-size:.75rem;font-weight:600}.scan-summary-stats{gap:16px;display:flex}.scan-stat{color:var(--muted);font-size:.85rem;font-weight:600}.scan-stat-pass{color:var(--accent-green)}.scan-stat-fail{color:var(--danger)}.scan-criteria-results{flex-direction:column;gap:12px;display:flex}.scan-criterion-result{border-left:4px solid;border-radius:8px;padding:16px}.scan-pass{border-left-color:var(--accent-green);background:#3a9e7e0a}.scan-fail{border-left-color:var(--danger);background:#d9534f0a}.scan-criterion-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.scan-criterion-left{align-items:center;gap:8px;display:flex}.scan-criterion-icon{font-size:1rem;font-weight:700}.scan-pass .scan-criterion-icon{color:var(--accent-green)}.scan-fail .scan-criterion-icon{color:var(--danger)}.scan-criterion-type{color:var(--muted);font-size:.75rem;font-weight:600}.scan-criterion-name{color:var(--ink);font-size:.9rem;font-weight:600}.scan-criterion-right{align-items:center;gap:8px;display:flex}.scan-criterion-pct{color:var(--muted);font-size:.8rem;font-weight:600}.scan-score-bar{background:#0000000f;border-radius:2px;height:4px;margin-bottom:8px;overflow:hidden}.scan-score-bar-fill{border-radius:2px;height:100%;transition:width .3s}.scan-bar-good{background:var(--accent-green)}.scan-bar-ok{background:var(--warm)}.scan-bar-low{background:var(--danger)}.scan-criterion-details{margin-top:8px}.scan-detail-rows{flex-direction:column;gap:6px;display:flex}.scan-detail-row{gap:12px;font-size:.825rem;display:flex}.scan-detail-label{color:var(--muted);min-width:80px;font-weight:500}.scan-detail-value{color:var(--ink);font-weight:600}.scan-matched-text blockquote{color:var(--slate);background:#0f1a2e08;border-radius:6px;margin-top:4px;padding:8px 12px;font-size:.825rem;font-style:italic}.scan-tags{flex-wrap:wrap;align-items:center;gap:6px;font-size:.825rem;display:flex}.keyword-tag-missing{background:var(--danger-light);color:var(--danger)}.scan-error{color:var(--danger);font-size:.825rem}.scan-grade-action{border-top:1px solid #0f1a2e0f;margin-top:20px;padding-top:20px}.grade-total-bar{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;justify-content:space-between;align-items:center;margin-bottom:24px;padding:16px 24px;display:flex}.grade-total-left{align-items:baseline;gap:12px;display:flex}.grade-total-score{color:var(--ink);font-size:1.5rem;font-weight:700}.grade-total-pct{color:var(--muted);font-size:1rem;font-weight:600}.grade-total-letter{color:var(--warm);background:var(--warm-light);border-radius:8px;padding:4px 12px;font-size:1.25rem;font-weight:700}.grade-class-avg{border-radius:8px;margin-left:4px;padding:4px 10px;font-size:.8rem;font-weight:600}.grade-above-avg{color:var(--accent-green);background:var(--accent-green-light)}.grade-below-avg{color:var(--danger);background:var(--danger-light)}.grading-layout{grid-template-columns:1fr 1fr;gap:24px;min-height:500px;display:grid}.grading-text-panel{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;max-height:80vh;padding:24px;overflow-y:auto}.grading-text-panel h2{margin-bottom:16px;font-size:1rem}.grading-text-content{color:var(--slate);font-size:.875rem;line-height:1.7}.grading-text-line{margin-bottom:4px}.grading-criteria-panel{flex-direction:column;gap:20px;display:flex}.grading-criteria-panel h2{font-size:1rem}.grading-criteria-list{flex-direction:column;gap:12px;display:flex}.grading-overall-feedback{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;padding:24px}.grading-overall-feedback h2{margin-bottom:12px;font-size:1rem}.grade-card{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;overflow:hidden}.grade-card-header{border-bottom:1px solid #0f1a2e0a;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.grade-card-left{align-items:center;gap:10px;display:flex}.grade-card-icon{font-size:1.1rem}.grade-card-name{color:var(--ink);font-size:.875rem;font-weight:600;display:block}.grade-card-type{color:var(--soft);font-size:.75rem;display:block}.grade-card-scores{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.grade-card-auto{color:var(--soft);font-size:.75rem}.grade-card-teacher{color:var(--ink);font-size:.85rem;font-weight:700}.grade-card-body{flex-direction:column;gap:12px;padding:14px 16px;display:flex}.grade-accept-row{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.grade-accept-btn{cursor:pointer;color:var(--muted);background:0 0;border:1px solid #0f1a2e1f;border-radius:6px;padding:6px 14px;font-family:inherit;font-size:.8rem;font-weight:600;transition:all .2s}.grade-accept-btn:hover{border-color:var(--accent-green);color:var(--accent-green)}.grade-accept-active{background:var(--accent-green-light);border-color:var(--accent-green);color:var(--accent-green)}.grade-override-label{color:var(--slate);align-items:center;gap:8px;font-size:.825rem;font-weight:600;display:flex}.grade-max{color:var(--soft);font-size:.8rem}.grade-feedback-label{color:var(--slate);flex-direction:column;gap:6px;font-size:.825rem;font-weight:600;display:flex}.grade-details-toggle{color:var(--muted);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-family:inherit;font-size:.78rem}.grade-details-toggle:hover{color:var(--warm)}.grade-scan-details{background:#0f1a2e05;border-radius:6px;padding:12px}.grade-card-pass{border-left:3px solid var(--accent-green)}.grade-card-fail{border-left:3px solid var(--danger)}.grading-page-with-footer{padding-bottom:80px}.grading-footer-bar{background:var(--paper);z-index:100;border-top:1px solid #0f1a2e1a;justify-content:space-between;align-items:center;padding:14px 32px;display:flex;position:fixed;bottom:0;left:220px;right:0;box-shadow:0 -2px 12px #0f1a2e0f}.grading-footer-left{align-items:center;gap:12px;font-size:.875rem;display:flex}.grading-footer-progress{color:var(--soft);font-weight:500}.grading-footer-divider{color:#0f1a2e26}.grading-footer-score{color:var(--ink);font-weight:700}.grading-footer-actions{align-items:center;gap:10px;display:flex}.scan-warmup-banner{border-radius:var(--radius);color:var(--warm);background:#e8a44a14;align-items:center;gap:10px;margin-bottom:16px;padding:12px 20px;font-size:.875rem;display:flex}@media(max-width:768px){.workflow-steps{margin:0 0 16px}.workflow-step-label{display:none}.workflow-step-line{width:16px;margin:0 4px}.sidebar{width:var(--sidebar-width);padding:24px 16px;transition:transform .25s;transform:translate(-100%)}.sidebar-mobile-open{transform:translate(0)}.mobile-menu-btn{display:flex}.app-main{margin-left:0}.app-content{padding:24px 16px}.card-grid,.scan-layout,.grading-layout{grid-template-columns:1fr}.grading-footer-bar{padding:12px 16px;left:0}}.subscription-status-card{background:var(--color-cream);border:1px solid var(--color-soft);border-radius:10px;margin-top:8px;padding:20px}.subscription-badge-row{margin-bottom:12px}.subscription-badge{letter-spacing:.02em;border-radius:20px;padding:4px 14px;font-size:.82rem;font-weight:600;display:inline-block}.subscription-badge-trial{color:#92400e;background:#fef3c7}.subscription-badge-active{color:#065f46;background:#d1fae5}.subscription-badge-expired{color:#991b1b;background:#fee2e2}.subscription-details{margin-top:4px}.subscription-upgrade{border-top:1px solid var(--color-soft);margin-top:16px;padding-top:16px}.subscription-expired-text{color:#991b1b;margin-bottom:12px;font-weight:500}.sidebar-banner{border-radius:8px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;font-size:.8rem;display:flex}.sidebar-banner-trial{color:#92400e;background:#fef3c7}.sidebar-banner-expired{color:#991b1b;background:#fee2e2}.sidebar-banner-text{white-space:nowrap;font-weight:600}.sidebar-banner-btn{background:var(--color-ink);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:4px 12px;font-size:.75rem;font-weight:600}.sidebar-banner-btn:hover{opacity:.9}.sidebar-banner-btn:disabled{opacity:.5;cursor:not-allowed}.sidebar-banner-link{color:#92400e;font-size:.75rem;font-weight:600;text-decoration:underline}.trial-limit-banner{background:#fef3c7;border:1px solid #fcd34d;border-radius:10px;justify-content:space-between;align-items:center;gap:20px;margin-bottom:16px;padding:16px 20px;display:flex}.trial-limit-banner.expired{background:#fee2e2;border-color:#fca5a5}.trial-limit-content strong{color:#92400e;margin-bottom:4px;display:block}.trial-limit-content p{color:#78350f;margin:0;font-size:.88rem}.trial-scans-remaining{color:#92400e;text-align:center;background:#fef3c7;border-radius:8px;margin-bottom:16px;padding:8px 16px;font-size:.85rem;font-weight:500}.dashboard-section{margin-top:28px}.dashboard-section h2{margin-bottom:12px}.dashboard-table-wrap{border:1px solid var(--color-soft);background:#fff;border-radius:10px;overflow-x:auto}.dashboard-table{border-collapse:collapse;width:100%;font-size:.9rem}.dashboard-table th{text-align:left;color:var(--color-muted);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--color-soft);background:var(--color-cream);padding:10px 14px;font-size:.8rem;font-weight:600}.dashboard-table td{border-bottom:1px solid var(--color-soft);padding:10px 14px}.dashboard-table tr:last-child td{border-bottom:none}.dashboard-table tr:hover td{background:var(--color-cream)}.dashboard-link{color:var(--color-ink);font-weight:500;text-decoration:none}.dashboard-link:hover{text-decoration:underline}.dashboard-score{border-radius:6px;padding:2px 8px;font-size:.85rem;font-weight:600}.dashboard-score-pass{color:#065f46;background:#d1fae5}.dashboard-score-fail{color:#991b1b;background:#fee2e2}.btn-small{padding:4px 12px!important;font-size:.78rem!important}.next-step{white-space:nowrap;border-radius:6px;padding:2px 10px;font-size:.8rem;font-weight:500}.next-step-upload{color:var(--muted);background:var(--cream)}.next-step-scan{color:#92400e;background:#fef3c7}.next-step-grade{color:#1e40af;background:#dbeafe}.next-step-done{color:#065f46;background:#d1fae5}.rubric-card-meta{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.rubric-usage-badge{color:#065f46;background:#d1fae5;border-radius:6px;padding:2px 8px;font-weight:500}.rubric-usage-none{color:#6b7280}.gateway-cards{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:24px;margin-top:8px;display:grid}.gateway-card{background:var(--card-bg,#fff);border:2px solid var(--border,#e5e7eb);color:inherit;border-radius:12px;flex-direction:column;padding:28px 24px;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:flex;position:relative}.gateway-card:hover{border-color:#e8a44a;box-shadow:0 4px 12px #0000000f}.gateway-card-recommended{border-color:#e8a44a}.gateway-card-badge{color:#fff;text-transform:uppercase;letter-spacing:.5px;background:#e8a44a;border-radius:10px;padding:2px 12px;font-size:.75rem;font-weight:600;position:absolute;top:-10px;left:20px}.gateway-card-icon{margin-bottom:12px;font-size:2.2rem}.gateway-card h2{margin:0 0 8px;font-size:1.3rem}.gateway-card>p{color:#6b7280;margin:0 0 16px;font-size:.92rem;line-height:1.5}.gateway-card-features{flex:1;margin:0 0 20px;padding:0;list-style:none}.gateway-card-features li{color:#4b5563;padding:4px 0 4px 20px;font-size:.88rem;position:relative}.gateway-card-features li:before{content:"✓";color:#3a9e7e;font-weight:600;position:absolute;left:0}.gateway-card-btn{text-align:center;margin-top:auto}.wizard-steps{justify-content:center;align-items:center;gap:0;margin:24px 0 32px;padding:0 20px;display:flex}.wizard-step{align-items:center;gap:8px;display:flex}.wizard-step-circle{color:#9ca3af;background:#fff;border:2px solid #d1d5db;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.9rem;font-weight:600;transition:all .2s;display:flex}.wizard-step-label{color:#9ca3af;white-space:nowrap;font-size:.85rem;font-weight:500}.wizard-step-line{background:#d1d5db;flex-shrink:0;width:32px;height:2px;margin:0 6px}.wizard-step-active .wizard-step-circle{color:#fff;background:#e8a44a;border-color:#e8a44a}.wizard-step-active .wizard-step-label{color:#1f2937}.wizard-step-completed .wizard-step-circle{color:#fff;background:#3a9e7e;border-color:#3a9e7e}.wizard-step-completed .wizard-step-label{color:#3a9e7e}.wizard-step-completed .wizard-step-line{background:#3a9e7e}.wizard-review-panel{background:var(--paper);border-radius:var(--radius);border:1px solid #0f1a2e0f;margin-bottom:16px;overflow:hidden}.wizard-review-toggle{cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:12px;width:100%;padding:12px 20px;font-family:inherit;display:flex}.wizard-review-toggle-label{color:var(--ink);white-space:nowrap;font-size:.85rem;font-weight:600}.wizard-review-toggle-summary{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.8rem;overflow:hidden}.wizard-review-chevron{color:var(--muted);font-size:.65rem}.wizard-review-details{border-top:1px solid #0f1a2e0f;flex-direction:column;gap:8px;padding:12px 20px 16px;display:flex}.wizard-review-row{gap:12px;font-size:.8rem;line-height:1.4;display:flex}.wizard-review-label{color:var(--muted);flex-shrink:0;min-width:60px;font-weight:600}.wizard-content{min-height:350px}.wizard-step-content h2{margin:0 0 8px;font-size:1.25rem}.wizard-fields{flex-direction:column;gap:16px;margin-top:24px;display:flex}.wizard-nav{border-top:1px solid var(--border,#e5e7eb);align-items:center;gap:12px;margin-top:24px;padding:20px 0;display:flex}.wizard-nav-spacer{flex:1}.required{color:#d9534f}.setup-grid{grid-template-columns:1fr 1fr;gap:16px;margin-top:16px;display:grid}@media(max-width:600px){.setup-grid{grid-template-columns:1fr}}.criteria-search-input{margin-top:12px;margin-bottom:4px}.criteria-toggle-list{flex-direction:column;gap:8px;margin-top:16px;display:flex}.criteria-toggle-item{border:2px solid var(--border,#e5e7eb);background:var(--card-bg,#fff);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;padding:14px 16px;transition:border-color .15s,background .15s;display:flex}.criteria-toggle-item:hover{border-color:#e8a44a}.criteria-toggle-selected{background:#f0fdf4;border-color:#3a9e7e}.criteria-toggle-left{align-items:center;gap:14px;display:flex}.criteria-toggle-switch{background:#d1d5db;border-radius:12px;flex-shrink:0;width:44px;height:24px;transition:background .2s;position:relative}.criteria-toggle-on{background:#3a9e7e}.criteria-toggle-knob{background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000026}.criteria-toggle-on .criteria-toggle-knob{transform:translate(20px)}.criteria-toggle-info{flex-direction:column;gap:2px;display:flex}.criteria-toggle-name{align-items:center;gap:8px;font-size:.95rem;font-weight:600;display:flex}.criteria-toggle-desc{color:#6b7280;font-size:.82rem;line-height:1.4}.criteria-toggle-tooltip{color:#6b7280;cursor:help;background:#f3f4f6;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:.8rem;font-weight:700;display:flex}.criteria-selector-badge{color:#92400e;text-transform:uppercase;letter-spacing:.3px;background:#fef3c7;border-radius:6px;padding:1px 7px;font-size:.68rem;font-weight:600;display:inline-block}.scale-options{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-top:20px;display:grid}.scale-card{border:2px solid var(--border,#e5e7eb);background:var(--card-bg,#fff);cursor:pointer;text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:12px;padding:20px 16px;transition:border-color .15s,background .15s;display:flex}.scale-card:hover{border-color:#e8a44a}.scale-card-selected{background:#fef9f0;border-color:#e8a44a}.scale-card-name{font-size:1rem;font-weight:600}.scale-card-preview{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.scale-card-label{color:#374151;background:#f3f4f6;border-radius:6px;padding:4px 10px;font-size:.8rem;font-weight:500}.scale-card-selected .scale-card-label{color:#92400e;background:#fde68a}.level-editor-list{flex-direction:column;gap:20px;margin-top:16px;display:flex}.level-editor-card{background:var(--card-bg,#fff);border:1px solid var(--border,#e5e7eb);border-radius:10px;padding:20px}.level-editor-title{border-bottom:1px solid var(--border,#f3f4f6);margin:0 0 14px;padding-bottom:10px;font-size:1.05rem;font-weight:600}.level-editor-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}@media(max-width:700px){.level-editor-grid{grid-template-columns:1fr}}.level-editor-cell{flex-direction:column;gap:4px;display:flex}.level-editor-label{color:#6b7280;text-transform:uppercase;letter-spacing:.3px;font-size:.82rem;font-weight:600}.level-editor-textarea{border:1px solid var(--border,#e5e7eb);resize:vertical;background:var(--card-bg,#fff);width:100%;color:var(--text,#1f2937);border-radius:8px;padding:10px 12px;font-family:inherit;font-size:.85rem;line-height:1.5}.level-editor-textarea:focus{border-color:#e8a44a;outline:none;box-shadow:0 0 0 2px #e8a44a26}.points-total-bar{background:var(--card-bg,#fff);border:1px solid var(--border,#e5e7eb);border-radius:10px;align-items:center;gap:12px;margin:16px 0;padding:14px 16px;display:flex}.points-total-label{font-size:.92rem;font-weight:600}.points-total-value{flex:1;font-size:1.1rem;font-weight:700}.points-total-match{color:#065f46}.points-total-mismatch{color:#d9534f}.points-list{flex-direction:column;gap:8px;display:flex}.points-row{background:var(--card-bg,#fff);border:1px solid var(--border,#e5e7eb);border-radius:8px;align-items:center;gap:12px;padding:10px 16px;display:flex}.points-row-name{flex:1;font-size:.92rem;font-weight:500}.points-row-pct{color:#6b7280;text-align:right;min-width:40px;font-size:.85rem}.text-preview{border-top:1px solid var(--border);margin-top:16px;padding-top:12px}.text-preview-toggle{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:4px 0;font-size:.85rem;display:flex}.text-preview-toggle:hover{color:var(--ink)}.text-preview-word-count{color:var(--soft);font-size:.8rem}.text-preview-content{background:var(--paper);border:1px solid var(--border);max-height:400px;color:var(--ink);border-radius:8px;margin-top:8px;padding:16px;font-size:.88rem;line-height:1.6;overflow-y:auto}.text-preview-line{margin:0 0 8px}.toast-container{z-index:9999;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:80px;right:24px}.toast{color:#fff;border-radius:8px;max-width:400px;padding:12px 20px;font-size:.9rem;font-weight:500;animation:.3s ease-out toast-in;box-shadow:0 4px 12px #00000026}.toast-success{background:var(--accent-green)}.toast-error{background:var(--danger)}.toast-info{background:var(--slate)}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.sidebar-search{border:1px solid var(--border);box-sizing:border-box;background:#fff;border-radius:8px;width:100%;margin-bottom:10px;padding:8px 12px;font-size:.85rem}.sidebar-search:focus{border-color:var(--warm);outline:none;box-shadow:0 0 0 3px #f59e0b26}.assignment-card-status{margin-top:10px}.assignment-card-progress-bar{background:#0f1a2e14;border-radius:3px;height:5px;margin-bottom:4px;overflow:hidden}.assignment-card-progress-fill{background:var(--accent-green);border-radius:3px;height:100%;transition:width .3s}.assignment-card-counts{color:var(--soft);font-size:.75rem}.dashboard-section-header{justify-content:space-between;align-items:center;margin-bottom:4px;display:flex}.dashboard-section-header h2{margin-bottom:0}.admin-table-wrapper{margin-top:16px;overflow-x:auto}.admin-table{border-collapse:collapse;width:100%;font-size:.875rem}.admin-table th{text-align:left;color:var(--slate);border-bottom:2px solid var(--border);white-space:nowrap;padding:10px 12px;font-weight:600}.admin-table td{border-bottom:1px solid var(--border);vertical-align:middle;padding:10px 12px}.admin-table tbody tr:hover{background:var(--surface)}.admin-edit-row{background:#fffbeb!important}.admin-user-name{font-weight:500}.admin-email{color:var(--slate);font-size:.8125rem}.admin-expired-text{color:var(--danger);font-weight:500}.admin-actions{flex-wrap:nowrap;gap:6px;display:flex}.btn-small{cursor:pointer;white-space:nowrap;border-radius:6px;padding:4px 10px;font-size:.75rem}.admin-inline-select{border:1px solid var(--border);background:#fff;border-radius:6px;padding:4px 6px;font-size:.8125rem}.admin-inline-date{border:1px solid var(--border);background:#fff;border-radius:6px;width:140px;padding:4px 6px;font-size:.8125rem}.role-badge{border-radius:10px;padding:2px 8px;font-size:.75rem;font-weight:500;display:inline-block}.role-admin{color:#6d28d9;background:#ede9fe}.role-teacher{color:#1e40af;background:#dbeafe}.role-student{background:var(--surface);color:var(--slate)}.status-expired{color:var(--danger);background:#fee2e2}.status-suspended{color:#92400e;background:#fef3c7}.admin-modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.admin-modal{background:#fff;border-radius:12px;width:380px;max-width:90vw;padding:24px;box-shadow:0 20px 60px #00000026}.admin-modal h3{margin:0 0 4px;font-size:1.125rem}.admin-pw-input{border:1px solid var(--border);box-sizing:border-box;border-radius:8px;width:100%;margin-top:12px;padding:10px 12px;font-size:.9375rem}.admin-pw-input:focus{border-color:var(--warm);outline:none;box-shadow:0 0 0 3px #f59e0b26}.admin-modal-actions{gap:8px;margin-top:16px;display:flex}.admin-form-group{margin-bottom:16px}.admin-form-label{color:var(--color-text-muted,#64748b);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:.8125rem;font-weight:600;display:block}.admin-form-group .admin-pw-input{margin-top:0}@media(max-width:768px){.admin-table{font-size:.8125rem}.admin-table th,.admin-table td{padding:8px 6px}.admin-actions{flex-direction:column;gap:4px}}.rubric-preview{background:var(--paper);border-radius:var(--radius);border:1px solid #e2ddd5;padding:32px}.rubric-preview-header{border-bottom:2px solid #e2ddd5;margin-bottom:24px;padding-bottom:16px}.rubric-preview-title{display:none}.rubric-preview-desc{color:var(--muted);margin-bottom:8px}.rubric-preview-meta{color:var(--soft);flex-wrap:wrap;gap:16px;font-size:.8125rem;display:flex}.rubric-preview-meta span:before{content:"•";margin-right:8px}.rubric-preview-meta span:first-child:before{content:"";margin-right:0}.rubric-preview-table-wrap{overflow-x:auto}.rubric-preview-table{border-collapse:collapse;width:100%;font-size:.875rem}.rubric-preview-table th{background:var(--cream);text-align:left;white-space:nowrap;border:1px solid #e2ddd5;padding:10px 12px;font-size:.8125rem;font-weight:600}.rubric-preview-table td{vertical-align:top;border:1px solid #e2ddd5;padding:10px 12px}.rubric-preview-th-criterion{width:200px;min-width:160px}.rubric-preview-th-points{width:80px;text-align:center!important}.rubric-preview-td-criterion strong{margin-bottom:4px;display:block}.rubric-preview-criterion-desc{color:var(--muted);margin-bottom:4px;font-size:.8125rem}.rubric-preview-type-badge{color:var(--soft);background:var(--cream);border-radius:4px;padding:2px 8px;font-size:.75rem;display:inline-block}.rubric-preview-td-level{min-width:140px;font-size:.8125rem;line-height:1.5}.rubric-preview-td-points{text-align:center;white-space:nowrap}.rubric-preview-weight{color:var(--soft);font-size:.75rem;display:block}.rubric-preview-score-section{border-top:2px solid #e2ddd5;margin-top:24px;padding-top:16px}.rubric-preview-score-row{align-items:center;gap:12px;margin-bottom:12px;font-size:.875rem;font-weight:600;display:flex}.rubric-preview-score-line{border-bottom:1px solid var(--muted);flex:1;height:1px}.rubric-preview-score-box{font-family:monospace;font-size:1rem}.rubric-preview-feedback-box{background:#fff;border:1px solid #e2ddd5;border-radius:8px;min-height:80px}@media print{.no-print,.sidebar,.toast-container{display:none!important}.app-main{margin-left:0!important;padding:0!important}.rubric-preview{box-shadow:none;border:none;padding:0}.rubric-preview-title{margin-bottom:8px;font-size:1.5rem;display:block}.rubric-preview-type-badge,.rubric-preview-table th{background:#f0f0f0}.rubric-preview-feedback-box{min-height:120px}body{background:#fff}}.grade-level-tag{color:var(--soft);background:var(--cream);vertical-align:middle;border:1px solid #e2ddd5;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:.6875rem;display:inline-block}.perf-levels-section{border-top:1px solid #e2ddd5;margin-top:12px;padding-top:12px}.perf-levels-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.perf-levels-toggle{cursor:pointer;color:var(--ink);background:0 0;border:none;align-items:center;gap:6px;padding:0;font-size:.875rem;font-weight:600;display:flex}.perf-levels-toggle:hover{color:var(--warm)}.perf-levels-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-top:8px;display:grid}.perf-level-card{background:var(--cream);border:1px solid #e2ddd5;border-radius:8px;padding:10px}.perf-level-label-input{margin-bottom:6px;font-size:.8125rem;font-weight:600}.template-picker-overlay{z-index:200;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.template-picker{background:var(--paper);border-radius:var(--radius-lg);flex-direction:column;width:90%;max-width:500px;max-height:70vh;padding:24px;display:flex}.template-picker h3{margin-bottom:4px}.template-picker-list{flex:1;margin-top:12px;overflow-y:auto}.template-picker-item{cursor:pointer;border:1px solid #e2ddd5;border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:8px;padding:10px 12px;transition:border-color .15s,background .15s;display:flex}.template-picker-item:hover{border-color:var(--warm);background:var(--warm-light)}.template-picker-item-info{flex-direction:column;gap:2px;display:flex}.template-picker-item-name{font-size:.9375rem;font-weight:600}.template-picker-item-meta{color:var(--soft);font-size:.75rem}.template-picker-actions{text-align:right;margin-top:12px}.grades-table-section{background:var(--paper);border-radius:var(--radius);border:1px solid #e2ddd5;margin-bottom:24px;padding:20px 24px}.grades-table-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.grades-table-header h2{margin-bottom:0}.grades-table-actions{gap:8px;display:flex}.grades-stats-bar{background:var(--cream);color:var(--muted);border-radius:8px;flex-wrap:wrap;gap:20px;margin-bottom:12px;padding:10px 14px;font-size:.8125rem;display:flex}.grades-stats-bar strong{color:var(--ink)}.grades-table-wrap{overflow-x:auto}.grades-table{border-collapse:collapse;width:100%;font-size:.875rem}.grades-table th{text-align:left;white-space:nowrap;color:var(--muted);border-bottom:2px solid #e2ddd5;padding:8px 12px;font-size:.8125rem;font-weight:600}.grades-th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.grades-th-sortable:hover{color:var(--warm)}.grades-table td{vertical-align:middle;border-bottom:1px solid #f0ece5;padding:8px 12px}.grades-table tbody tr:hover{background:var(--cream)}.grades-td-name{font-weight:600}.grades-pct{border-radius:4px;padding:2px 8px;font-size:.8125rem;font-weight:600;display:inline-block}.grades-pct-pass{background:var(--accent-green-light);color:#1a7a5a}.grades-pct-fail{background:var(--danger-light);color:var(--danger)}.grades-td-actions{gap:6px;display:flex}@media(max-width:768px){.grades-table{font-size:.8125rem}.grades-table th,.grades-table td{padding:6px 8px}.grades-stats-bar{gap:12px}}.criterion-analysis{background:var(--paper);border-radius:var(--radius);border:1px solid #e2ddd5;margin-bottom:24px;padding:20px 24px}.criterion-analysis-header{margin-bottom:16px}.criterion-analysis-header h2{margin-bottom:4px}.criterion-analysis-header .text-muted{font-size:.8125rem}.criterion-insights{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.criterion-insight{border-radius:8px;align-items:center;gap:10px;padding:10px 14px;font-size:.875rem;display:flex}.criterion-insight-weak{background:var(--danger-light);color:var(--danger)}.criterion-insight-strong{background:var(--accent-green-light);color:#1a7a5a}.criterion-insight-icon{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;font-size:.75rem;font-weight:700;display:flex}.criterion-insight-weak .criterion-insight-icon{background:var(--danger);color:#fff}.criterion-insight-strong .criterion-insight-icon{background:var(--accent-green);color:#fff}.criterion-bars{flex-direction:column;gap:14px;display:flex}.criterion-bar-row{flex-direction:column;gap:4px;display:flex}.criterion-bar-label{justify-content:space-between;align-items:baseline;display:flex}.criterion-bar-name{font-size:.875rem;font-weight:600}.criterion-bar-meta{color:var(--muted);font-size:.8125rem}.criterion-bar-track{background:var(--cream);border-radius:5px;height:10px;overflow:hidden}.criterion-bar-fill{border-radius:5px;height:100%;transition:width .4s}.criterion-bar-pass{background:var(--accent-green)}.criterion-bar-warn{background:var(--warm)}.criterion-bar-fail{background:var(--danger)}.criterion-bar-detail{gap:16px;font-size:.75rem;display:flex}.post-grading-summary{background:var(--paper);border:2px solid var(--accent-green);border-radius:var(--radius);margin-bottom:24px;padding:24px}.post-grading-header{align-items:center;gap:16px;margin-bottom:20px;display:flex}.post-grading-check{background:var(--accent-green);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.25rem;font-weight:700;display:flex}.post-grading-header h2{margin-bottom:2px}.post-grading-stats{flex-wrap:wrap;gap:12px;margin-bottom:20px;display:flex}.post-grading-stat{background:var(--cream);border-radius:8px;flex-direction:column;flex:1;align-items:center;min-width:100px;padding:12px;display:flex}.post-grading-stat-value{color:var(--ink);font-size:1.5rem;font-weight:700}.post-grading-stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-size:.75rem}.post-grading-distribution{margin-bottom:20px}.post-grading-distribution h3{margin-bottom:12px}.distribution-bars{justify-content:center;align-items:flex-end;gap:16px;height:120px;display:flex}.distribution-col{flex-direction:column;align-items:center;gap:4px;width:40px;display:flex}.distribution-count{color:var(--muted);font-size:.75rem;font-weight:600}.distribution-track{background:var(--cream);border-radius:4px;flex-direction:column;justify-content:flex-end;width:100%;height:80px;display:flex;overflow:hidden}.distribution-fill{border-radius:4px 4px 0 0;width:100%;transition:height .4s}.distribution-astar{background:#22c55e}.distribution-a{background:var(--accent-green)}.distribution-b{background:#5bb5a0}.distribution-c{background:var(--warm)}.distribution-d{background:#e07c3a}.distribution-e{background:#ef4444}.distribution-u{background:#6b7280}.distribution-f{background:var(--danger)}.distribution-letter{color:var(--ink);font-size:.875rem;font-weight:700}.post-grading-actions{border-top:1px solid #e2ddd5;justify-content:center;gap:10px;padding-top:16px;display:flex}@media(max-width:600px){.post-grading-stats{gap:8px}.post-grading-stat{min-width:80px;padding:8px}.post-grading-stat-value{font-size:1.125rem}}.regrade-banner{border:1px solid var(--warm-light);color:var(--slate);background:#fff3e0;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding:10px 16px;font-size:.875rem;display:flex}.snippet-picker-wrapper{position:relative}.snippet-picker-trigger{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #d5cfc6;border-radius:6px;padding:3px 10px;font-size:.75rem}.snippet-picker-trigger:hover{border-color:var(--warm);color:var(--warm)}.snippet-picker-panel{background:var(--paper);border-radius:var(--radius);z-index:50;border:1px solid #e2ddd5;flex-direction:column;width:340px;max-height:400px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0000001f}.snippet-picker-header{border-bottom:1px solid #f0ece5;padding:12px 14px 8px}.snippet-picker-title{margin-bottom:8px;font-size:.875rem;font-weight:600;display:block}.snippet-picker-tabs{gap:4px;display:flex}.snippet-tab{cursor:pointer;color:var(--muted);background:0 0;border:none;border-radius:4px;padding:4px 10px;font-size:.75rem}.snippet-tab:hover{background:var(--cream)}.snippet-tab-active{background:var(--warm-light);color:var(--slate);font-weight:600}.snippet-picker-list{flex:1;max-height:220px;padding:8px;overflow-y:auto}.snippet-empty{color:var(--muted);text-align:center;padding:16px 8px;font-size:.8125rem}.snippet-item{border-radius:6px;align-items:flex-start;gap:8px;margin-bottom:4px;padding:6px 8px;display:flex}.snippet-item:hover{background:var(--cream)}.snippet-item-text{text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:none;flex:1;padding:0;font-size:.8125rem;line-height:1.4}.snippet-item-meta{flex-shrink:0;align-items:center;gap:6px;display:flex}.snippet-cat{text-transform:uppercase;letter-spacing:.5px;border-radius:3px;padding:2px 6px;font-size:.625rem;font-weight:600}.snippet-cat-praise{background:var(--accent-green-light);color:#1a7a5a}.snippet-cat-improvement{background:var(--danger-light);color:var(--danger)}.snippet-cat-general{background:var(--cream);color:var(--muted)}.snippet-delete{color:var(--soft);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:1rem;line-height:1}.snippet-delete:hover{color:var(--danger)}.snippet-save-form{border-top:1px solid #f0ece5;padding:10px 12px}.snippet-save-input{resize:vertical;border:1px solid #d5cfc6;border-radius:6px;width:100%;margin-bottom:8px;padding:6px 8px;font-family:inherit;font-size:.8125rem}.snippet-save-row{align-items:center;gap:6px;display:flex}.snippet-save-select{border:1px solid #d5cfc6;border-radius:6px;flex:1;padding:4px 8px;font-family:inherit;font-size:.75rem}.snippet-picker-footer{border-top:1px solid #f0ece5;gap:8px;padding:8px 12px;display:flex}.snippet-add-btn{color:var(--warm);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8125rem;font-weight:600}.snippet-add-btn:hover{text-decoration:underline}.grade-feedback-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.grade-feedback-header span,.grade-feedback-header h2{margin-bottom:0}.grade-distribution{background:var(--paper);border-radius:var(--radius);border:1px solid #e2ddd5;margin-bottom:24px;padding:20px 24px}.grade-distribution-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:16px;display:flex}.grade-distribution-header h2{margin-bottom:0}.grade-distribution-stats{color:var(--muted);gap:16px;font-size:.8125rem;display:flex}.grade-distribution-stats strong{color:var(--ink)}.distribution-histogram{align-items:flex-end;gap:6px;height:140px;margin-bottom:12px;display:flex}.histogram-col{flex-direction:column;flex:1;align-items:center;gap:4px;height:100%;display:flex}.histogram-count{color:var(--muted);min-height:16px;font-size:.6875rem;font-weight:600}.histogram-track{border-radius:4px 4px 0 0;flex-direction:column;flex:1;justify-content:flex-end;width:100%;display:flex;overflow:hidden}.histogram-bar{border-radius:4px 4px 0 0;width:100%;min-width:8px;transition:height .4s}.histogram-label{color:var(--muted);white-space:nowrap;font-size:.625rem}.distribution-legend{color:var(--muted);justify-content:center;gap:16px;font-size:.75rem;display:flex}.distribution-legend-item{align-items:center;gap:4px;display:flex}.distribution-swatch{border-radius:2px;width:10px;height:10px;display:inline-block}@media(max-width:600px){.distribution-histogram{height:100px}.histogram-label{font-size:.5625rem}}.assignment-edit-form{background:var(--paper);border:1px solid var(--warm-light);border-radius:var(--radius);margin-bottom:20px;padding:20px 24px}.assignment-edit-row{grid-template-columns:1fr 1fr;gap:16px;display:grid}.assignment-edit-actions{gap:10px;margin-top:16px;display:flex}@media(max-width:600px){.assignment-edit-row{grid-template-columns:1fr}}.dashboard-assignments{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px;display:grid}.dashboard-assignment-card{background:var(--paper);border-radius:var(--radius);border:1px solid #e2ddd5;flex-direction:column;gap:10px;padding:16px 20px;transition:border-color .15s;display:flex}.dashboard-assignment-card:hover{border-color:var(--warm-light)}.dashboard-card-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.dashboard-card-info{flex-direction:column;gap:2px;min-width:0;display:flex}.dashboard-card-title{color:var(--ink);text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;font-weight:600;text-decoration:none;overflow:hidden}.dashboard-card-title:hover{color:var(--warm);text-decoration:none}.dashboard-card-meta{color:var(--muted);font-size:.75rem}.dashboard-card-score{flex-direction:column;flex-shrink:0;align-items:center;display:flex}.dashboard-score-big{font-size:1.25rem;font-weight:700;line-height:1}.dashboard-score-label{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-size:.625rem}.dashboard-card-progress{align-items:center;gap:10px;display:flex}.dashboard-progress-track{background:var(--cream);border-radius:3px;flex:1;height:6px;overflow:hidden}.dashboard-progress-fill{background:var(--warm);border-radius:3px;height:100%;transition:width .3s}.dashboard-progress-done{background:var(--accent-green)}.dashboard-progress-text{color:var(--muted);white-space:nowrap;font-size:.6875rem}.dashboard-card-range{color:var(--muted);font-size:.75rem}.dashboard-card-action{border-top:1px solid #f0ece5;justify-content:space-between;align-items:center;padding-top:8px;display:flex}@media(max-width:600px){.dashboard-assignments{grid-template-columns:1fr}}.mobile-menu-btn{z-index:200;background:var(--ink);cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;padding:10px;display:none;position:fixed;top:16px;left:16px}.hamburger{flex-direction:column;gap:4px;width:20px;display:flex}.hamburger span{background:var(--paper);border-radius:1px;height:2px;transition:transform .25s,opacity .25s;display:block}.hamburger-open span:first-child{transform:translateY(6px)rotate(45deg)}.hamburger-open span:nth-child(2){opacity:0}.hamburger-open span:nth-child(3){transform:translateY(-6px)rotate(-45deg)}.sidebar-overlay{z-index:99;background:#0006;position:fixed;inset:0}.not-found-page{text-align:center;justify-content:center;align-items:center;min-height:60vh;padding:24px;display:flex}.not-found-card{max-width:400px}.not-found-code{color:var(--warm);margin-bottom:8px;font-size:5rem;font-weight:800;line-height:1;display:block}.not-found-card h1{margin-bottom:8px;font-size:1.5rem}.not-found-card p{color:var(--muted);margin-bottom:24px}.auth-forgot{text-align:center;margin-top:8px;margin-bottom:0;font-size:.85rem}.auth-success{background:var(--accent-green-light);color:#1a6b4f;border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:.9rem}.settings-password-form{flex-direction:column;gap:12px;max-width:360px;display:flex}.settings-password-form .btn-primary{align-self:flex-start;margin-top:4px}.settings-danger-zone{border:1px solid var(--danger-light);border-radius:var(--radius);margin-top:24px;padding:20px 24px}.settings-danger-zone h2{color:var(--danger)}.btn-danger{background:var(--danger);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:10px 20px;font-family:inherit;font-size:.9rem;font-weight:500;transition:background .2s}.btn-danger:hover{background:#c0433f}.btn-danger:disabled{opacity:.5;cursor:not-allowed}.settings-delete-confirm{margin-top:12px}.settings-delete-confirm p{margin-bottom:8px}.settings-delete-confirm .criterion-input{max-width:240px;margin-bottom:12px}.settings-delete-actions{gap:8px;display:flex}.toast{align-items:center;gap:12px;display:flex}.toast-message{flex:1}.toast-dismiss{color:#fffc;cursor:pointer;background:0 0;border:none;flex-shrink:0;padding:0 4px;font-size:1.25rem;line-height:1}.toast-dismiss:hover{color:#fff}.assignment-list-filters{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;display:flex}.assignment-search{background:#fff;border:1px solid #e2ddd5;border-radius:8px;flex:1;min-width:180px;max-width:320px;padding:8px 14px;font-family:inherit;font-size:.875rem}.assignment-search:focus{border-color:var(--warm);outline:none;box-shadow:0 0 0 3px #e8a44a26}.assignment-filter-tabs{gap:4px;display:flex}.filter-tab{color:var(--muted);cursor:pointer;background:#fff;border:1px solid #e2ddd5;border-radius:6px;padding:6px 14px;font-family:inherit;font-size:.8125rem;transition:all .15s}.filter-tab:hover{border-color:var(--warm);color:var(--ink)}.filter-tab-active{background:var(--warm);border-color:var(--warm);color:#fff}@media(max-width:600px){.assignment-list-filters{flex-direction:column;align-items:stretch}.assignment-search{max-width:none}.assignment-filter-tabs{overflow-x:auto}}[data-theme=dark] body{color:var(--ink);background:var(--cream)}[data-theme=dark] .card,[data-theme=dark] .stat-card,[data-theme=dark] .auth-card,[data-theme=dark] .dashboard-assignment-card,[data-theme=dark] .criterion-analysis,[data-theme=dark] .grade-distribution,[data-theme=dark] .post-grading-summary,[data-theme=dark] .upload-zone-container,[data-theme=dark] .settings-section,[data-theme=dark] .assignment-edit-form{background:var(--card-bg);border-color:var(--border)}[data-theme=dark] .card{box-shadow:var(--card-shadow)}[data-theme=dark] input,[data-theme=dark] textarea,[data-theme=dark] select{background:var(--paper);color:var(--ink);border-color:var(--border)}[data-theme=dark] input::placeholder,[data-theme=dark] textarea::placeholder{color:var(--soft)}[data-theme=dark] .upload-dropzone,[data-theme=dark] .upload-file-entry{background:var(--paper);border-color:var(--border)}[data-theme=dark] .btn-secondary{background:var(--paper);border-color:var(--border);color:var(--ink)}[data-theme=dark] .filter-tab{background:var(--paper);border-color:var(--border);color:var(--muted)}[data-theme=dark] .assignment-search,[data-theme=dark] .sidebar-search{background:var(--paper);border-color:var(--border);color:var(--ink)}[data-theme=dark] .next-step-banner-scan,[data-theme=dark] .next-step-banner-grade{background:var(--warm-light);border-color:var(--border)}[data-theme=dark] .auth-error{background:var(--danger-light);color:var(--danger)}[data-theme=dark] .auth-success{background:var(--accent-green-light);color:var(--accent-green)}[data-theme=dark] .breadcrumb-link{color:var(--muted)}[data-theme=dark] .dashboard-card-action{border-top-color:var(--border)}[data-theme=dark] .dashboard-progress-track{background:var(--border)}[data-theme=dark] .settings-danger-zone{border-color:var(--danger-light)}[data-theme=dark] .scan-done-message{background:var(--accent-green-light);color:var(--accent-green)}.theme-toggle{background:var(--soft);cursor:pointer;border:none;border-radius:13px;flex-shrink:0;width:48px;height:26px;transition:background .25s;position:relative}.theme-toggle-on{background:var(--warm)}.theme-toggle-knob{background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .25s;display:block;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #0003}.theme-toggle-on .theme-toggle-knob{transform:translate(22px)}.submission-card-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.submission-card-header h3{margin-bottom:0}.submission-grade-badge{white-space:nowrap;border-radius:6px;padding:2px 10px;font-size:1rem;font-weight:700}.submission-grade-pass{background:var(--accent-green-light);color:var(--accent-green)}.submission-grade-fail{background:var(--danger-light);color:var(--danger)}.submission-letter-grade{color:var(--warm);font-weight:600}.classroom-modal-overlay{z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.classroom-modal{background:var(--paper);border-radius:var(--radius-lg);flex-direction:column;width:600px;max-width:92vw;max-height:80vh;padding:32px;display:flex;box-shadow:0 20px 60px #00000026}.classroom-modal h3{margin:0 0 4px;font-size:1.25rem}.classroom-steps{border-bottom:1px solid var(--border);align-items:center;gap:0;margin-bottom:24px;padding-bottom:16px;display:flex}.classroom-step-wrapper{align-items:center;display:flex}.classroom-step{align-items:center;gap:6px;display:flex}.classroom-step-dot{border:2px solid var(--border);width:28px;height:28px;color:var(--soft);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex}.classroom-step-active .classroom-step-dot{border-color:var(--warm);background:var(--warm);color:#fff}.classroom-step-completed .classroom-step-dot{border-color:var(--accent-green);background:var(--accent-green);color:#fff}.classroom-step-label{color:var(--soft);white-space:nowrap;font-size:.8rem;font-weight:500}.classroom-step-active .classroom-step-label{color:var(--ink)}.classroom-step-completed .classroom-step-label{color:var(--accent-green)}.classroom-step-line{background:var(--border);flex-shrink:0;width:24px;height:2px;margin:0 6px}.classroom-step-line-done{background:var(--accent-green)}.classroom-modal-body{flex:1;min-height:200px;overflow-y:auto}.classroom-connect-btn{color:#3c4043;cursor:pointer;background:#fff;border:1px solid #dadce0;border-radius:8px;align-items:center;gap:10px;padding:12px 24px;font-family:inherit;font-size:.9375rem;font-weight:500;transition:box-shadow .2s,border-color .2s;display:inline-flex}.classroom-connect-btn:hover{border-color:#c4c7c5;box-shadow:0 1px 3px #0000001a}.classroom-connect-btn:disabled{opacity:.6;cursor:not-allowed}.classroom-item-list{flex-direction:column;gap:8px;display:flex}.classroom-item{border:1px solid var(--border);cursor:pointer;background:var(--paper);text-align:left;border-radius:8px;justify-content:space-between;align-items:center;width:100%;padding:12px 16px;font-family:inherit;transition:border-color .15s,background .15s;display:flex}.classroom-item:hover{border-color:var(--warm);background:var(--cream)}.classroom-item-name{font-size:.9375rem;font-weight:600}.classroom-item-detail{color:var(--muted);margin-top:2px;font-size:.8125rem}.classroom-item-arrow{color:var(--soft);font-size:1.25rem}.classroom-preview-list{border-collapse:collapse;width:100%}.classroom-preview-list th,.classroom-preview-list td{text-align:left;border-bottom:1px solid var(--border);padding:8px 12px;font-size:.875rem}.classroom-preview-list th{color:var(--muted);font-size:.8125rem;font-weight:600}.classroom-progress{background:var(--border);border-radius:4px;width:100%;height:8px;margin:16px 0;overflow:hidden}.classroom-progress-fill{background:var(--accent-green);border-radius:4px;height:100%;transition:width .3s}.classroom-progress-text{color:var(--muted);margin-bottom:8px;font-size:.875rem}.classroom-modal-footer{border-top:1px solid var(--border);gap:8px;margin-top:20px;padding-top:16px;display:flex}.classroom-link-badge{background:var(--accent-green-light);color:var(--accent-green);border-radius:6px;align-items:center;gap:6px;margin-top:8px;padding:6px 12px;font-size:.8125rem;font-weight:500;display:inline-flex}.classroom-return-table{border-collapse:collapse;width:100%}.classroom-return-table th,.classroom-return-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 12px;font-size:.875rem}.classroom-return-table th{color:var(--muted);font-size:.8125rem;font-weight:600}.classroom-results{background:var(--accent-green-light);text-align:center;border-radius:8px;padding:24px}.classroom-results-number{color:var(--accent-green);font-size:2rem;font-weight:700}[data-theme=dark] .classroom-modal{background:var(--paper)}[data-theme=dark] .classroom-connect-btn{background:var(--card-bg);color:var(--ink);border-color:var(--border)}[data-theme=dark] .classroom-item{background:var(--card-bg)}[data-theme=dark] .classroom-item:hover{background:var(--paper)}[data-theme=dark] .classroom-link-badge{background:#4ade801a}.share-modal-overlay{z-index:1000;background:#00000080;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.share-modal{background:var(--cream);border-radius:var(--radius-lg);width:100%;max-width:560px;max-height:80vh;box-shadow:var(--card-shadow);padding:28px;overflow-y:auto}.share-modal h3{margin:0 0 4px}.share-link-row{gap:8px;margin:16px 0;display:flex}.share-link-input{border:1px solid var(--border);border-radius:var(--radius);background:var(--paper);color:var(--ink);text-overflow:ellipsis;white-space:nowrap;flex:1;padding:8px 12px;font-family:monospace;font-size:.8125rem;overflow:hidden}.share-copy-btn{background:var(--accent-green);color:#fff;border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:none;padding:8px 16px;font-size:.8125rem;font-weight:600;transition:background .15s}.share-copy-btn:hover{opacity:.9}.share-copy-btn.copied{background:var(--accent-green)}.share-modal-footer{border-top:1px solid var(--border);gap:8px;margin-top:20px;padding-top:16px;display:flex}.share-batch-table{border-collapse:collapse;width:100%;margin:16px 0}.share-batch-table th,.share-batch-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 12px;font-size:.875rem}.share-batch-table th{color:var(--muted);font-size:.8125rem;font-weight:600}.share-batch-actions{gap:6px;display:flex}.share-note{color:var(--muted);margin-top:8px;font-size:.75rem}[data-theme=dark] .share-modal{background:var(--paper)}.report-page{background:var(--cream);justify-content:center;align-items:flex-start;min-height:100vh;padding:40px 24px;display:flex}.report-card{background:var(--paper);border-radius:var(--radius-lg);width:100%;max-width:720px;box-shadow:var(--card-shadow);padding:40px}.report-header{border-bottom:2px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;display:flex}.report-logo{color:var(--accent-orange);font-size:1.125rem;font-weight:700}.report-title{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.875rem;font-weight:600}.report-meta{grid-template-columns:1fr 1fr;gap:8px 24px;margin-bottom:24px;display:grid}.report-meta-row{flex-direction:column;gap:2px;display:flex}.report-meta-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.75rem;font-weight:600}.report-meta-value{color:var(--ink);font-size:.9375rem;font-weight:500}.report-score-banner{background:var(--cream);border-radius:var(--radius);text-align:center;margin-bottom:28px;padding:24px}.report-score-number{color:var(--ink);font-size:2.5rem;font-weight:700;line-height:1}.report-score-detail{color:var(--muted);margin-top:6px;font-size:1rem}.report-letter-grade{background:var(--accent-green-light);color:var(--accent-green);border-radius:4px;margin-left:12px;padding:2px 10px;font-size:.9375rem;font-weight:700;display:inline-block}.report-section-title{color:var(--ink);margin:0 0 12px;font-size:.9375rem;font-weight:700}.report-criteria-table{border-collapse:collapse;width:100%;margin-bottom:28px}.report-criteria-table th{text-align:left;color:var(--muted);border-bottom:2px solid var(--border);padding:8px 12px;font-size:.8125rem;font-weight:600}.report-criteria-table td{border-bottom:1px solid var(--border);vertical-align:top;padding:10px 12px;font-size:.875rem}.report-criteria-name{white-space:nowrap;font-weight:600}.report-criteria-score{white-space:nowrap;font-weight:500}.report-criteria-feedback{color:var(--muted);line-height:1.5}.report-feedback{margin-bottom:28px}.report-feedback p{color:var(--ink);white-space:pre-wrap;margin:0;line-height:1.7}.report-actions{gap:8px;margin-bottom:20px;display:flex}.report-footer{text-align:center;color:var(--muted);border-top:1px solid var(--border);padding-top:16px;font-size:.75rem}.report-error{text-align:center;padding:40px 0}.report-error h2{margin:0 0 8px}@media(max-width:600px){.report-page{padding:16px}.report-card{padding:24px 16px}.report-meta{grid-template-columns:1fr}.report-score-number{font-size:2rem}.report-criteria-table{font-size:.8125rem}.report-criteria-table th,.report-criteria-table td{padding:6px 8px}.report-header{flex-direction:column;align-items:flex-start;gap:4px}}@media print{.report-page{background:#fff;min-height:auto;padding:0}.report-card{box-shadow:none;border-radius:0;max-width:none;padding:20px}.report-actions{display:none}.report-score-banner{background:#f5f5f5}}[data-theme=dark] .report-score-banner{background:var(--card-bg)}[data-theme=dark] .report-letter-grade{background:#4ade8026}.lti-launch-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.lti-launch-card{background:var(--card-bg);border:1px solid var(--border);text-align:center;border-radius:12px;width:100%;max-width:480px;padding:48px}.lti-launch-logo{color:var(--accent);font-size:1.5rem;font-weight:700}.lti-launch-card h2{margin:16px 0 8px}.lti-tool-config{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-top:16px;padding:16px}.lti-tool-config h4{margin:0 0 4px}.lti-config-grid{flex-direction:column;gap:8px;margin-top:12px;display:flex}.lti-config-row{align-items:center;gap:8px;display:flex}.lti-config-label{min-width:180px;color:var(--text-muted);flex-shrink:0;font-size:.85rem}.lti-config-value{background:var(--card-bg);border:1px solid var(--border);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;flex:1;padding:4px 8px;font-size:.8rem;overflow:hidden}.lti-key-section{align-items:center;margin-top:16px;display:flex}.lti-platforms-table{border-collapse:collapse;width:100%;margin-top:8px;font-size:.9rem}.lti-platforms-table th,.lti-platforms-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 12px}.lti-platforms-table th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.8rem;font-weight:600}.lti-td-truncate{text-overflow:ellipsis;white-space:nowrap;max-width:200px;overflow:hidden}.lti-platform-form{background:var(--bg);border:1px solid var(--border);border-radius:8px;margin-top:16px;padding:20px}.lti-platform-form h4{margin:0 0 4px}.lti-platform-form label{margin-top:12px;font-size:.9rem;font-weight:500;display:block}.lti-platform-form input[type=text],.lti-platform-form input[type=url]{border:1px solid var(--border);background:var(--card-bg);width:100%;color:var(--text);border-radius:6px;margin-top:4px;padding:8px 12px;font-size:.9rem;display:block}.lti-platform-form input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #6366f126}.lti-platform-form .required{color:#ef4444}.lti-form-actions{gap:8px;margin-top:20px;display:flex}.lti-return-results{padding:16px 0}.lti-return-success{color:#22c55e;font-weight:600}.lti-return-failure{color:#ef4444;font-weight:600}.lti-return-errors{background:var(--bg);border:1px solid var(--border);border-radius:6px;max-height:200px;margin-top:8px;padding:12px;overflow-y:auto}.lti-return-errors p{margin:4px 0;font-size:.85rem}@media(max-width:600px){.lti-config-row{flex-direction:column;align-items:flex-start}.lti-config-label{min-width:unset}.lti-config-value{width:100%}.lti-td-truncate{max-width:120px}}[data-theme=dark] .lti-tool-config,[data-theme=dark] .lti-platform-form{background:var(--bg)}[data-theme=dark] .lti-config-value{background:var(--card-bg)}.rg-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--paper);margin-bottom:24px;overflow-x:auto}.rg-table{border-collapse:collapse;width:100%;min-width:820px}.rg-th{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:var(--cream);border-bottom:2px solid var(--border);text-align:left;white-space:nowrap;padding:12px 14px;font-size:.72rem;font-weight:700}.rg-col-criterion{width:220px}.rg-col-level{min-width:160px}.rg-col-pts{text-align:center;width:80px}.rg-col-del{width:40px}.rg-td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);vertical-align:top;padding:10px 12px}.rg-td:last-child{border-right:none}.rg-row:nth-child(2n) .rg-td{background:#0f1a2e04}[data-theme=dark] .rg-row:nth-child(2n) .rg-td{background:#ffffff06}.rg-empty{text-align:center;color:var(--muted);padding:32px;font-size:.9rem}.rg-name{border:1px solid var(--border);background:var(--paper);width:100%;color:var(--ink);border-radius:6px;outline:none;margin-bottom:6px;padding:6px 8px;font-family:inherit;font-size:.88rem;font-weight:600;transition:border-color .15s;display:block}.rg-name:focus{border-color:var(--warm)}.rg-desc,.rg-level-text{border:1px solid var(--border);background:var(--paper);width:100%;color:var(--ink);resize:none;border-radius:6px;outline:none;min-height:52px;padding:6px 8px;font-family:inherit;font-size:.82rem;line-height:1.5;transition:border-color .15s;display:block;overflow:hidden}.rg-desc:focus,.rg-level-text:focus{border-color:var(--warm)}.rg-desc{color:var(--muted);font-size:.79rem}.rg-pts-input{border:1px solid var(--border);background:var(--paper);width:100%;color:var(--ink);text-align:center;border-radius:6px;outline:none;padding:6px 4px;font-family:inherit;font-size:1rem;font-weight:700;transition:border-color .15s;display:block}.rg-pts-input:focus{border-color:var(--warm)}.rg-pts-pct{color:var(--soft);text-align:center;margin-top:3px;font-size:.68rem;display:block}.rg-del-btn{width:28px;height:28px;color:var(--soft);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;font-size:1.25rem;line-height:1;transition:color .15s,background .15s;display:flex}.rg-del-btn:hover{color:var(--danger);background:var(--danger-light)}.rg-footer{border-top:1px solid var(--border);padding:12px 16px}tfoot tr .rg-footer{align-items:center;gap:16px;display:flex}.rg-footer-total{color:var(--muted);font-size:.82rem;font-weight:600}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@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}
