:root{--primary:#f56134;--background:#f9f7f4;--foreground:#011232;--card:#fff;--border:#e0d5cc;--input:#e0d5cc;--muted-foreground:#617080;--accent:#011232;--destructive:#dc2626;--success:#22c55e;--warning:#eab308;--ring:#f56134;--radius:.5rem;--font-display:"Fraunces", serif;--font-body:"DM Sans", sans-serif;--font-mono:"DM Mono", monospace;font-family:var(--font-body);color:var(--foreground);background-color:var(--background);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5;transition:background-color .18s,color .18s}body{background-color:var(--background);color:var(--foreground);margin:0}#root{min-height:100svh}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--foreground);margin:0}h1{font-size:clamp(1.5rem,5vw + .5rem,2.25rem);font-weight:600}h2{font-size:clamp(1.2rem,3vw + .5rem,1.5rem);font-weight:600}h3{font-size:clamp(1.05rem,2vw + .5rem,1.25rem);font-weight:500}p{margin:0}code,pre{font-family:var(--font-mono)}*{-webkit-tap-highlight-color:transparent}.page-center{justify-content:center;align-items:center;min-height:100svh;padding:1.25rem 1rem;display:flex}.card{background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius) * 2);box-sizing:border-box;flex-direction:column;gap:1rem;width:100%;max-width:480px;padding:1.5rem 1.25rem;display:flex;box-shadow:0 4px 24px #0112320f}.btn-primary{background:var(--primary);color:#fff;border-radius:var(--radius);min-height:44px;font-family:var(--font-body);cursor:pointer;box-sizing:border-box;border:none;justify-content:center;align-items:center;width:100%;padding:.75rem 1.5rem;font-size:.9375rem;font-weight:600;text-decoration:none;transition:opacity .15s,transform .1s;display:inline-flex}.btn-primary:hover{opacity:.9}.btn-primary:active{transform:scale(.98)}.btn-secondary{min-height:44px;color:var(--foreground);border:1.5px solid var(--border);border-radius:var(--radius);font-family:var(--font-body);cursor:pointer;box-sizing:border-box;background:0 0;justify-content:center;align-items:center;width:100%;padding:.625rem 1.25rem;font-size:.9rem;font-weight:500;transition:border-color .15s;display:inline-flex}.btn-secondary:hover{border-color:var(--foreground)}.tag{letter-spacing:.01em;border-radius:999px;align-items:center;padding:.15rem .55rem;font-size:.75rem;font-weight:600;display:inline-flex}.tag-green{color:#15803d;background:#dcfce7}.tag-red{color:#b91c1c;background:#fee2e2}.tag-orange{color:#c2410c;background:#ffedd5}.tag-muted{background:var(--border);color:var(--muted-foreground)}.tag-blue{color:#1d4ed8;background:#dbeafe}.tag-purple{color:#6d28d9;background:#ede9fe}.tag-topic{color:#c2410c;background:#ffedd5;font-weight:600}.not-found-card{text-align:center;align-items:center}.not-found-code{font-family:var(--font-display);color:var(--border);margin:0;font-size:5rem;font-weight:700;line-height:1}.not-found-hint{color:var(--muted-foreground)}.not-found-divider{background:var(--border);width:100%;height:1px;margin:.5rem 0}.not-found-sub{color:var(--muted-foreground);font-size:.875rem}.login-card{gap:1.25rem}.login-header{align-items:center;gap:.75rem;display:flex}.login-subtitle{color:var(--muted-foreground);margin-top:-.25rem;font-size:.9rem}.user-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.user-btn{box-sizing:border-box;background:var(--background);border:1.5px solid var(--border);border-radius:var(--radius);cursor:pointer;width:100%;min-height:44px;font-family:var(--font-body);text-align:left;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.9rem;transition:border-color .15s,background .15s;display:flex}.user-btn:hover{border-color:var(--primary);background:#fff7f4}.user-avatar{background:var(--primary);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.875rem;font-weight:700;display:flex}.user-email{min-width:0;color:var(--foreground);overflow-wrap:break-word;flex:1;font-size:.875rem}.login-divider{color:var(--muted-foreground);align-items:center;gap:.75rem;font-size:.8rem;display:flex}.login-divider:before,.login-divider:after{content:"";background:var(--border);flex:1;height:1px}.login-error{color:#b91c1c;margin:0;font-size:.85rem}.google-btn{justify-content:center;align-items:center;gap:.625rem;width:100%;display:flex}.gate-card{align-items:flex-start;gap:1.25rem}.gate-heading{flex-direction:column;gap:.25rem;width:100%;display:flex}.gate-heading h1{font-size:clamp(1.3rem,4vw + .5rem,1.75rem)}.gate-subtitle{font-family:var(--font-display);color:var(--muted-foreground);font-size:1.05rem;font-weight:500}.gate-topics{flex-wrap:wrap;gap:.4rem;width:100%;display:flex}.gate-desc{color:var(--muted-foreground);font-size:.9rem}.gate-meta{background:var(--background);border-radius:var(--radius);border:1px solid var(--border);box-sizing:border-box;flex-direction:column;gap:.5rem;width:100%;padding:1rem;display:flex}.gate-meta-item{flex-wrap:wrap;justify-content:space-between;gap:.25rem .75rem;font-size:.875rem;display:flex}.gate-meta-label{color:var(--muted-foreground)}.gate-meta-val{overflow-wrap:anywhere;text-align:right;font-weight:600}.gate-account-cell{flex-direction:column;align-items:flex-end;gap:.25rem;display:flex}.logout-link{color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;align-items:center;gap:.25rem;padding:0;font-size:.75rem;text-decoration:underline;display:inline-flex}.logout-link:hover{color:var(--foreground)}.gate-icon{font-size:2rem}.gate-warning{color:var(--muted-foreground);font-size:.8rem}.gate-retry-note{color:#c2410c;border-radius:var(--radius);box-sizing:border-box;background:#ffedd5;width:100%;padding:.5rem .75rem;font-size:.875rem}.gate-exhausted{color:var(--muted-foreground);flex-direction:column;align-items:center;gap:.75rem;width:100%;font-size:.9rem;display:flex}.gate-last-score{background:var(--background);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;align-items:center;gap:.125rem;width:100%;padding:.875rem;display:flex}.gate-last-score-num{font-family:var(--font-display);color:var(--primary);font-size:1.75rem;font-weight:700;line-height:1}.gate-last-score-label{color:var(--muted-foreground);font-size:.8125rem}.gate-exhausted-actions{flex-direction:column;gap:.5rem;width:100%;margin-top:.5rem;display:flex}.gate-other-btn{width:100%}.retry-request-link{color:var(--muted-foreground);cursor:pointer;background:0 0;border:none;align-self:center;align-items:center;gap:.375rem;padding:0;font-size:.8125rem;text-decoration:underline;display:inline-flex}.retry-request-link svg{color:var(--destructive);flex-shrink:0}.retry-request-link:hover{color:var(--foreground)}.gate-other-link{color:var(--muted-foreground);align-self:center;font-size:.8125rem;text-decoration:underline}.gate-other-link:hover{color:var(--foreground)}.gate-actions{text-align:center;flex-direction:column;align-items:center;gap:.75rem;width:100%;display:flex}.modal-overlay{z-index:100;background:#01123273;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-card{background:var(--card);border-radius:calc(var(--radius) * 2);box-sizing:border-box;flex-direction:column;gap:1rem;width:100%;max-width:440px;padding:1.5rem 1.25rem;display:flex;box-shadow:0 12px 40px #01123233}.modal-text{color:var(--muted-foreground);font-size:.9rem;line-height:1.5}.modal-rules{background:var(--background);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:.75rem;padding:.875rem;display:flex}.modal-rule{color:var(--muted-foreground);align-items:flex-start;gap:.625rem;font-size:.8125rem;line-height:1.45;display:flex}.modal-rule svg{color:var(--primary);flex-shrink:0;margin-top:.0625rem}.modal-rule strong{color:var(--foreground)}.modal-actions{flex-direction:column-reverse;gap:.625rem;display:flex}@media (width>=480px){.modal-actions{flex-direction:row;justify-content:flex-end}.modal-actions .btn-secondary,.modal-actions .btn-primary{width:auto}}.assessment-layout{background:var(--background);flex-direction:column;min-height:100svh;display:flex;position:relative}.offline-banner{z-index:200;color:#f1f5f9;background:#1e293b;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.8rem;display:flex;position:fixed;top:0;left:0;right:0}.proctor-blurred .assessment-header,.proctor-blurred .assessment-main{filter:blur(8px);pointer-events:none;-webkit-user-select:none;user-select:none}.proctor-blur-overlay{z-index:100;text-align:center;background:#01123259;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.proctor-blur-message{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-body);padding:1rem 1.25rem;font-size:.9375rem;font-weight:600;box-shadow:0 4px 24px #01123226}.tab-switch-counter{color:var(--destructive,#c0392b);white-space:nowrap;font-size:.75rem;font-weight:600}.metrics-debug-btn{border:1px solid var(--border);width:24px;height:24px;color:var(--muted-foreground);cursor:pointer;background:0 0;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8125rem;display:inline-flex}.metrics-list{text-align:left;flex-direction:column;gap:.5rem;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.metrics-flag-warn{color:var(--destructive,#c0392b);font-weight:600}.metrics-sublist{color:var(--muted-foreground);border-left:2px solid var(--border);flex-direction:column;gap:.25rem;margin:.375rem 0 0;padding:0 0 0 .75rem;font-size:.8125rem;font-weight:400;list-style:none;display:flex}.assessment-sticky-top{z-index:10;background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0}.assessment-header{justify-content:space-between;align-items:center;gap:.75rem;padding:.625rem 1rem;display:flex}.assessment-header-left{align-items:center;gap:.5rem;min-width:0;display:flex}.assessment-title{font-family:var(--font-display);white-space:nowrap;text-overflow:ellipsis;max-width:40vw;font-size:.875rem;font-weight:600;overflow:hidden}.assessment-subtitle{color:var(--muted-foreground);font-weight:400}.assessment-header-right{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.progress-text{color:var(--muted-foreground);white-space:nowrap;font-size:.75rem}.progress-bar{background:var(--border);height:3px}.progress-fill{background:var(--primary);height:100%;transition:width .4s cubic-bezier(.4,0,.2,1)}.assessment-main{box-sizing:border-box;flex-direction:column;flex:1;gap:1.25rem;width:100%;max-width:720px;margin:0 auto;padding:1.25rem 1rem 3rem;display:flex}.questions-list{flex-direction:column;gap:3rem;padding-top:9vh;display:flex}.question-block{background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius) * 1.5);box-sizing:border-box;flex-direction:column;gap:1rem;padding:1.125rem;transition:border-color .2s;display:flex}.question-student-tag{opacity:.75;color:var(--muted-foreground);align-self:flex-end;align-items:center;gap:.3rem;font-size:.6875rem;font-weight:500;display:inline-flex}.question-block:focus-within{border-color:var(--ring);box-shadow:0 0 0 3px #f561341f}.question-meta{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.question-num{color:var(--primary);background:#f5613414;border-radius:999px;padding:.15rem .5rem;font-size:.75rem;font-weight:700}.question-topic{color:var(--muted-foreground);font-size:.75rem}.question-pts{color:var(--muted-foreground);margin-left:auto;font-size:.75rem}.question-text{color:var(--foreground);-webkit-user-select:none;user-select:none;font-size:1rem;font-weight:500;line-height:1.6}.question-note{color:var(--muted-foreground);font-size:.8125rem;font-style:italic}.question-locked-note{color:#b91c1c;background:#dc262614;border-radius:999px;align-items:center;gap:.3rem;width:fit-content;padding:.25rem .625rem;font-size:.75rem;font-weight:500;display:inline-flex}.option-list{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.option-list-locked .option-label,.written-textarea:disabled{cursor:not-allowed;opacity:.65}.option-label{border:1.5px solid var(--border);border-radius:var(--radius);cursor:pointer;-webkit-user-select:none;user-select:none;box-sizing:border-box;align-items:center;gap:.75rem;min-height:44px;padding:.75rem 1rem;transition:border-color .15s,background .15s;display:flex}.option-label:hover,.option-selected{border-color:var(--primary);background:#fff7f4}.option-lock-icon{width:18px;height:18px;color:var(--primary);flex-shrink:0}.option-input{display:none}.option-indicator{border:2px solid var(--border);border-radius:50%;flex-shrink:0;width:18px;height:18px;transition:border-color .15s,background .15s;position:relative}.option-selected .option-indicator{border-color:var(--primary);background:var(--primary)}.option-selected .option-indicator:after{content:"";background:#fff;border-radius:50%;position:absolute;inset:3px}.option-indicator[data-multi]{border-radius:4px}.option-selected .option-indicator[data-multi]:after{clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%);border-radius:0}.textarea-wrap{flex-direction:column;gap:.375rem;display:flex;position:relative}.written-textarea{border:1.5px solid var(--border);border-radius:var(--radius);width:100%;font-family:var(--font-body);color:var(--foreground);background:var(--background);resize:vertical;box-sizing:border-box;padding:.75rem;font-size:1rem;line-height:1.6;transition:border-color .15s}.written-textarea:focus{border-color:var(--ring);outline:none}.char-count{color:var(--muted-foreground);align-self:flex-end;font-size:.75rem}.char-limit{color:var(--destructive)}.input-warning{color:var(--destructive);font-size:.8125rem;font-weight:500}.timer{font-variant-numeric:tabular-nums;align-items:center;gap:.4rem;display:flex}.timer-ring{width:36px;height:36px}.timer-label{font-family:var(--font-mono);color:var(--foreground);min-width:3.5ch;font-size:.9rem;font-weight:600}.timer-urgent .timer-label{color:var(--destructive)}.submit-area{flex-direction:column;align-items:stretch;gap:.75rem;padding-top:.5rem;display:flex}.unanswered-warn{color:var(--muted-foreground);font-size:.875rem}.btn-submit{padding:.875rem 2rem;font-size:1rem}.submitted-card{gap:1.25rem;max-width:580px}.timeout-banner{color:#92400e;border-radius:var(--radius);text-align:center;background:#fef3c7;padding:.5rem .75rem;font-size:.875rem;font-weight:500}.submitted-header{align-items:center;gap:.75rem;display:flex}.submitted-icon{background:var(--success);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.0625rem;font-weight:700;display:flex}.submitted-title{margin:0;font-size:1.125rem;font-weight:600}.submitted-sub{color:var(--muted-foreground);margin:.125rem 0 0;font-size:.8125rem}.score-block{background:var(--background);border-radius:var(--radius);border:1px solid var(--border);text-align:center;box-sizing:border-box;width:100%;padding:1rem}.score-num{font-family:var(--font-display);color:var(--primary);font-size:2.5rem;font-weight:700;line-height:1}.score-label{color:var(--foreground);margin-top:.25rem;font-size:.875rem;font-weight:600}.score-sub{color:var(--muted-foreground);margin-top:.25rem;font-size:.8rem}.submitted-answers{flex-direction:column;gap:.75rem;width:100%;display:flex}.review-item{border:1px solid var(--border);border-radius:var(--radius);background:var(--background);box-sizing:border-box;flex-direction:column;gap:.375rem;padding:.875rem;display:flex}.review-footer{justify-content:space-between;align-items:center;gap:.5rem;margin-top:.25rem;display:flex}.review-footer-score{display:flex}.ask-ai-btn{color:var(--muted-foreground);opacity:.7;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;margin-left:auto;padding:.3125rem .625rem;text-decoration:none;transition:opacity .15s,color .15s,background .15s,border-color .15s;display:inline-flex;overflow:hidden}.ask-ai-main{text-align:left;white-space:nowrap;flex-shrink:0;align-items:center;gap:.25rem;font-size:.75rem;font-weight:500;display:inline-flex}.ask-ai-main svg{transition:transform .15s}.ask-ai-sub{opacity:0;white-space:nowrap;align-items:center;gap:.125rem;max-width:0;margin-left:0;font-size:.6875rem;font-style:italic;transition:max-width .25s,opacity .15s,margin-left .25s;display:inline-flex;overflow:hidden}.ask-ai-sub svg{flex-shrink:0;font-style:normal}.ask-ai-btn:hover,.ask-ai-btn:focus-visible,.ask-ai-btn-revealed{opacity:1;color:var(--primary);background:#f5613414;border-color:#f5613440}.ask-ai-btn:hover .ask-ai-main svg,.ask-ai-btn:focus-visible .ask-ai-main svg,.ask-ai-btn-revealed .ask-ai-main svg{transform:rotate(12deg)scale(1.1)}.ask-ai-btn:hover .ask-ai-sub,.ask-ai-btn:focus-visible .ask-ai-sub,.ask-ai-btn-revealed .ask-ai-sub{opacity:.85;max-width:11rem;margin-left:.3rem}.review-q{color:var(--foreground);font-size:.8125rem;font-weight:600}.review-a{color:var(--muted-foreground);font-size:.875rem}.review-options{flex-direction:column;gap:.375rem;margin:0;padding:0;list-style:none;display:flex}.review-option{border-radius:var(--radius);border:1px solid var(--border);color:var(--muted-foreground);align-items:center;gap:.5rem;padding:.5rem .625rem;font-size:.8125rem;display:flex}.review-option svg{color:var(--muted-foreground);flex-shrink:0}.review-option-correct{color:#15803d;background:#dcfce7;border-color:#86efac}.review-option-correct svg{color:#15803d}.review-option-wrong{color:#b91c1c;background:#fee2e2;border-color:#fca5a5}.review-option-wrong svg{color:#b91c1c}.review-option-tag{text-transform:uppercase;letter-spacing:.02em;opacity:.75;margin-left:auto;font-size:.6875rem;font-weight:600}.review-score{border-radius:999px;align-self:flex-start;padding:.125rem .5rem;font-size:.75rem;font-weight:700}.review-score.pending{color:#92400e;background:#fef3c7;align-items:center;gap:.375rem;display:inline-flex}.review-score-row{align-items:center;gap:.5rem;display:flex}.flag-textarea{margin-top:.25rem}.flag-btn{border:1px solid var(--border);color:#dc2626;cursor:pointer;opacity:.5;background:0 0;border-radius:50%;justify-content:center;align-items:center;width:1.5rem;height:1.5rem;padding:0;display:inline-flex}.flag-btn-active{opacity:1;background:#fee2e2;border-color:#dc2626}.review-spinner{border:1.5px solid #92400e4d;border-top-color:#92400e;border-radius:50%;width:.75rem;height:.75rem;animation:.7s linear infinite review-spin}.score-loading{justify-content:center;padding:.5rem 0;display:flex}.review-spinner-lg{border-width:2.5px;border-color:#0159d633;border-top-color:var(--primary);width:1.75rem;height:1.75rem}@keyframes review-spin{to{transform:rotate(360deg)}}.muted{color:var(--muted-foreground);font-size:.875rem}@media (width>=480px){.btn-primary,.btn-secondary{width:auto}.submit-area{flex-direction:row;justify-content:space-between;align-items:center}.btn-submit{align-self:auto}}@media (width>=640px){.page-center{padding:2rem 1rem}.card{padding:2.5rem 2rem}.assessment-header{padding:.75rem 1.5rem}.assessment-title{max-width:320px;font-size:.9375rem}.assessment-header-right{gap:1rem}.progress-text{font-size:.8125rem}.assessment-main{gap:1.5rem;padding:2rem 1.25rem 4rem}.question-block{padding:1.5rem}}
