:root{--color-primary:#0077b6;--color-primary-light:#e8f4fa;--color-primary-hover:#005f8a;--color-secondary:#48cae4;--color-success:#2a9d8f;--color-warning:#e9c46a;--color-danger:#e76f51;--color-danger-light:#fdf0ed;--color-text:#2d3436;--color-text-secondary:#636e72;--color-text-light:#b2bec3;--color-bg:#fff;--color-bg-alt:#f8f9fa;--color-bg-card:#fff;--color-border:#ced4da;--font-family:"Noto Sans TC", "Microsoft JhengHei", "Inter", -apple-system, sans-serif;--font-family-zh:"Noto Sans TC", "Microsoft JhengHei", sans-serif;--font-family-en:"Inter", "Noto Sans TC", "Microsoft JhengHei", -apple-system, sans-serif;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:2rem;--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-full:9999px;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 12px #00000014;--shadow-lg:0 8px 24px #0000001a;--transition-fast:.15s ease;--transition-base:.25s ease;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;width:100%;font-size:16px}body{font-family:var(--font-family);color:var(--color-text);background-color:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;width:100%;line-height:1.6;overflow-x:clip}html:lang(en) body,:lang(en){font-family:var(--font-family-en)}html:lang(zh-Hant) body,html:lang(zh-TW) body,:lang(zh),:lang(zh-Hant),:lang(zh-TW){font-family:var(--font-family-zh)}#root{width:100%;min-width:0}button,input,select,textarea{min-width:0}a{color:var(--color-primary);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-primary-hover)}.skip-link{top:0;left:var(--space-md);z-index:1000;padding:var(--space-sm) var(--space-md);background:var(--color-primary);color:#fff;border-radius:0 0 var(--radius-md) var(--radius-md);font-size:var(--font-size-sm);transition:transform var(--transition-fast);position:absolute;transform:translateY(-120%)}.skip-link:focus,.skip-link:focus-visible{color:#fff;outline-offset:2px;outline:2px solid #fff;transform:translateY(0)}.teacher-menu__link:focus-visible,.teacher-sidebar-toggle:focus-visible,.rich-editor__btn:focus-visible,.student-lang-btn:focus-visible,.form-input:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[role=button]:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.container{width:100%;max-width:1440px;padding:0 clamp(var(--space-md), 3vw, var(--space-lg));min-width:0;margin:0 auto}.container--fluid{max-width:none}.page{flex-direction:column;min-height:100vh;display:flex}.content{padding:var(--space-2xl) 0;flex:1;min-width:0}.scroll-region-y{max-height:min(72vh,100vh - 10.5rem);padding-right:var(--space-xs);-webkit-overflow-scrolling:touch;overscroll-behavior:contain;overflow-y:auto}.table-container.scroll-region-y{overflow-x:auto}.header{background:var(--color-bg);border-bottom:1px solid var(--color-border);padding:var(--space-md) 0;z-index:100;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:var(--space-md);min-width:0;display:flex}.header-left{align-items:center;gap:var(--space-sm);min-width:0;display:flex}.header-hamburger{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);width:2.5rem;height:2.5rem;color:var(--color-text);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);flex:none;justify-content:center;align-items:center;display:inline-flex}.header-hamburger:hover{background:var(--color-bg-alt);border-color:color-mix(in srgb, var(--color-primary) 25%, var(--color-border));color:var(--color-primary)}.header-hamburger:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.header-logo{align-items:center;gap:var(--space-sm);font-size:var(--font-size-lg);color:var(--color-text);min-width:0;font-weight:700;display:flex}.header-logo span{flex-direction:column;min-width:0;line-height:1.35;display:flex}.header-logo strong{color:var(--color-text);font-size:var(--font-size-base);line-height:1.25}.header-logo small{color:var(--color-text-secondary);font-size:var(--font-size-xs);line-height:1.35}.logo-badge{object-fit:contain;object-position:center;width:48px;height:48px;box-shadow:var(--shadow-sm);background:#fff;border:1px solid #75512d2e;border-radius:50%;padding:2px}.header-actions{justify-content:flex-end;align-items:center;gap:var(--space-md) var(--space-lg);flex-wrap:wrap;min-width:0;display:flex}.student-lang-switch{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-alt);display:inline-flex;overflow:hidden}.student-lang-switch--compact{flex-shrink:0}.student-lang-btn{font-size:var(--font-size-xs);padding:var(--space-xs) var(--space-sm);color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none}.student-lang-btn:hover{color:var(--color-text);background:#0077b614}.student-lang-btn--active{background:var(--color-primary-light);color:var(--color-primary);font-weight:600}.header-nav{justify-content:flex-end;align-items:center;gap:var(--space-md) var(--space-xl);flex-wrap:wrap;min-width:0;list-style:none;display:flex}.header-nav a{color:var(--color-text-secondary);font-size:var(--font-size-sm);padding:var(--space-xs) 0;transition:color var(--transition-fast), border-color var(--transition-fast);border-bottom:2px solid #0000;font-weight:500}.header-nav a:hover,.header-nav a.active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.header-nav a:focus-visible,.header-logo:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:var(--radius-sm)}.card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-lg);transition:box-shadow var(--transition-base);overflow-wrap:anywhere;min-width:0}.card:hover{box-shadow:var(--shadow-md)}.card-clickable{cursor:pointer}.card-clickable:hover{box-shadow:var(--shadow-md);border-color:var(--color-primary)}.card-clickable:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.card-title{font-size:var(--font-size-lg);margin-bottom:var(--space-sm);font-weight:600}.card-meta{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.btn{justify-content:center;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-full);font-family:var(--font-family);font-size:var(--font-size-sm);text-align:center;white-space:normal;cursor:pointer;min-width:0;max-width:100%;transition:background-color var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);border:none;font-weight:500;line-height:1.25;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);box-shadow:var(--shadow-sm)}.btn-secondary{color:var(--color-primary);border:1px solid var(--color-primary);background:0 0}.btn-secondary:hover:not(:disabled){background:var(--color-primary-light)}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover:not(:disabled){background:#d35640}.btn-lg{padding:var(--space-md) var(--space-xl);font-size:var(--font-size-base)}.btn-sm{padding:var(--space-xs) var(--space-md);font-size:var(--font-size-xs)}.btn-xs{gap:4px;padding:2px 8px;font-size:.75rem}.btn-square{border-radius:var(--radius-sm)}.btn-ghost{background:0 0;border:1px solid #0000}.btn-ghost-secondary{color:var(--color-primary)}.btn-ghost-secondary:hover:not(:disabled){background:var(--color-primary-light)}.btn-ghost-danger{color:var(--color-danger)}.btn-ghost-danger:hover:not(:disabled){background:var(--color-danger-light)}.btn-outline{color:var(--color-primary);border:1px solid var(--color-primary);background:0 0}.btn-outline:hover:not(:disabled){background:var(--color-primary-light)}.form-group{margin-bottom:var(--space-lg)}.form-label{font-size:var(--font-size-sm);margin-bottom:var(--space-xs);color:var(--color-text-secondary);font-weight:500;display:block}.question-editor-form .form-label,.writing-question-fields .form-label{font-size:var(--font-size-base);color:var(--color-text);margin-bottom:var(--space-sm);letter-spacing:.01em;font-weight:700}.question-editor-form .form-hint-label,.writing-question-fields .form-hint-label{font-size:var(--font-size-sm);color:var(--color-text);margin-bottom:var(--space-xs);font-weight:600;display:block}.form-input{width:100%;min-width:0;padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);font-family:var(--font-family);font-size:var(--font-size-base);transition:border-color var(--transition-fast);background:var(--color-bg);color:var(--color-text)}.form-input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #0077b61a}.form-input::placeholder{color:var(--color-text-light)}textarea.form-input{resize:vertical;min-height:100px}.form-error{color:var(--color-danger);font-size:var(--font-size-sm);margin-top:var(--space-xs)}.table-container{-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;width:100%;max-width:100%;overflow-x:auto}.table{border-collapse:collapse;width:100%;min-width:42rem;font-size:var(--font-size-sm)}.table.table--compact{min-width:24rem}.table th,.table td{padding:var(--space-sm) var(--space-md);text-align:left;border-bottom:1px solid var(--color-border);vertical-align:top}.table th{color:var(--color-text-secondary);background:var(--color-bg-alt);white-space:nowrap;font-weight:600}.table--sticky-header thead th,.table-container.scroll-region-y thead th{z-index:2;box-shadow:0 1px 0 var(--color-border);position:sticky;top:0}.table td{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.table td.action-cell{overflow:visible}.table--resizable{width:max-content;min-width:100%}.table-resizable__th{position:relative}.table-resizable__handle{cursor:col-resize;-webkit-user-select:none;user-select:none;touch-action:none;z-index:3;width:8px;height:100%;position:absolute;top:0;right:-4px}.table-resizable__th:last-child .table-resizable__handle{right:0}.table-resizable__handle:after{content:"";background:#636e7259;width:1px;position:absolute;top:20%;bottom:20%;left:50%;transform:translate(-50%)}.table-resizable__th:hover .table-resizable__handle:after{background:#0077b68c}body.table-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}.table-actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;min-width:max-content;display:flex}.action-menu{justify-content:flex-end;display:inline-flex;position:relative}.action-menu__trigger{border-radius:var(--radius-full);width:2rem;height:2rem;color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), transform var(--transition-fast);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;list-style:none;display:inline-flex}.action-menu__trigger::-webkit-details-marker{display:none}.action-menu__trigger:hover{background:var(--color-bg-alt);color:var(--color-text)}.action-menu__trigger:active{border-color:var(--color-text);transform:scale(.9)}.action-menu__trigger:focus-visible{border-color:var(--color-text);outline:none}.action-menu__trigger[aria-expanded=true]{border-color:var(--color-text);background:var(--color-bg-alt);color:var(--color-text)}@media (prefers-reduced-motion:reduce){.action-menu__trigger:active{transform:none}}.action-menu__panel{z-index:1000;min-width:8rem;padding:var(--space-xs) 0;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);box-shadow:var(--shadow-lg);position:fixed}.action-menu__item{width:100%;min-height:0;padding:var(--space-sm) var(--space-md);color:var(--color-text);text-align:left;font:inherit;font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:0;line-height:1.35;display:block}.action-menu__item:hover:not(:disabled){background:var(--color-bg-alt);color:var(--color-primary)}.action-menu__item--danger{color:var(--color-danger)}.action-menu__item:disabled{opacity:.5;cursor:not-allowed}.table-card{padding:0;overflow:hidden}.table-card .table-container{border-radius:inherit}.table-card>.spinner{margin:var(--space-lg)}.table tr:hover td{background:var(--color-bg-alt)}.badge{border-radius:var(--radius-full);font-size:var(--font-size-xs);align-items:center;padding:2px 10px;font-weight:500;display:inline-flex}.badge-primary{background:var(--color-primary-light);color:var(--color-primary)}.badge-success{color:var(--color-success);background:#e6f5f0}.badge-warning{color:#b8860b;background:#fef9e7}.badge-danger{background:var(--color-danger-light);color:var(--color-danger)}.badge-secondary{color:var(--color-text-secondary);background:#e9ecef}.connection-light{border-radius:999px;flex:none;width:.72rem;height:.72rem;display:inline-flex;box-shadow:0 0 0 2px #ffffffe6,0 0 8px #0f172a29}.connection-light--online{background:#16a34a}.connection-light--syncing{background:#f59e0b}.connection-light--offline{background:#dc2626}.alert{padding:var(--space-md) var(--space-lg);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--space-md)}.alert-info{background:var(--color-primary-light);color:var(--color-primary);border:1px solid #0077b633}.alert-warning{color:#b8860b;background:#fef9e7;border:1px solid #e9c46a4d}.alert-danger{background:var(--color-danger-light);color:var(--color-danger);border:1px solid #e76f5133}.alert-success{color:var(--color-success);background:#e6f5f0;border:1px solid #2a9d8f33}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-secondary{color:var(--color-text-secondary)}.text-sm{font-size:var(--font-size-sm)}.flex{display:flex}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1}.min-w-0{min-width:0}.shrink-0{flex-shrink:0}.self-end{align-self:flex-end}.self-center{align-self:center}.self-auto{align-self:auto}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-stretch{align-items:stretch}.items-center{align-items:center}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.grid{gap:var(--space-lg);min-width:0;display:grid}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,18rem),1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.responsive-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));display:grid}.dashboard-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(min(100%,11rem),1fr));display:grid}.exam-card-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr));display:grid}.form-grid{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.page-header{justify-content:space-between;align-items:center;gap:var(--space-md);margin-bottom:var(--space-lg);flex-wrap:wrap;min-width:0;display:flex}.page-header__title{min-width:0}.toolbar,.action-group,.modal-actions,.card-actions{align-items:center;gap:var(--space-sm);flex-wrap:wrap;min-width:0;display:flex}.toolbar{justify-content:flex-end;margin-left:auto}.page-header .toolbar .btn{flex:none}.modal-actions{justify-content:flex-end;gap:var(--space-md)}.select-compact{width:min(100%,25rem)}.field-min-sm{min-width:min(100%,12.5rem)}.field-min-md{min-width:min(100%,15rem)}.cell-wrap{white-space:normal;text-overflow:clip;min-width:14rem;max-width:24rem;overflow:visible}.cell-wrap-sm{white-space:normal;text-overflow:clip;min-width:12rem;max-width:18rem;overflow:visible}.cell-student-id{white-space:nowrap;font-variant-numeric:tabular-nums}.cell-nowrap{white-space:nowrap}.text-truncate{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.text-pre-wrap{white-space:pre-wrap;text-overflow:clip;overflow-wrap:break-word;word-break:keep-all;line-break:strict;overflow:visible}.numeric-display{font-size:var(--font-size-3xl);margin:var(--space-sm) 0;font-weight:800;line-height:1.1}.class-card{cursor:pointer;min-height:140px}.class-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr))}.class-card__header{justify-content:space-between;align-items:flex-start;gap:var(--space-md);min-width:0;display:flex}.class-card__body{flex:auto;min-width:0}.class-card__body p{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.view-toggle{border:1px solid var(--color-border);background:var(--color-bg-alt);border-radius:999px;align-items:center;gap:.25rem;padding:.25rem;display:inline-flex}.view-toggle__btn{width:2.25rem;height:2rem;color:var(--color-text-secondary);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;display:inline-flex}.view-toggle__btn--active{color:var(--color-primary);box-shadow:inset 0 0 0 1px color-mix(in srgb, var(--color-primary) 25%, transparent);background:#dbeafe}.teacher-menu{gap:var(--space-sm);flex-direction:column;display:flex}.teacher-menu__link{align-items:center;gap:var(--space-sm);border:1px solid var(--color-border);border-radius:var(--radius-md);width:100%;color:var(--color-text-secondary);font-size:var(--font-size-sm);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);background:0 0;padding:.75rem 1rem;font-weight:500;text-decoration:none;display:flex}.teacher-menu__link:hover{background:var(--color-bg-alt);color:var(--color-text)}.teacher-menu__link--active{background:var(--color-primary-light);color:var(--color-primary);border-color:color-mix(in srgb, var(--color-primary) 30%, var(--color-border))}.choice-card{cursor:pointer}.choice-card__input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.option-marker{flex:0 0 32px;width:32px;height:32px}.answer-textarea{font-size:var(--font-size-lg);min-height:9.5rem}.exam-panel{max-width:50rem}.exam-panel--writing{max-width:56rem;box-shadow:none;background:0 0;border:none;padding:0}.exam-room-content{background:var(--color-bg-alt)}.exam-writing-shell{gap:var(--space-md);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;display:grid}.exam-writing-shell--focus .exam-question-zone{display:none}.exam-writing-shell--focus .exam-writing-paper,.exam-writing-shell--focus .exam-email-compose{min-height:min(70vh,36rem)}.exam-writing-meta{justify-content:space-between;align-items:center;gap:var(--space-sm);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border);flex-wrap:wrap;display:flex}.exam-writing-meta__left{align-items:center;gap:var(--space-xs);flex-wrap:wrap;display:flex}.exam-type-badge,.exam-group-badge{border-radius:var(--radius-sm);font-size:var(--font-size-xs);color:var(--color-text-secondary);background:var(--color-bg-alt);border:1px solid var(--color-border);align-items:center;gap:.25rem;padding:.15rem .5rem;font-weight:600;display:inline-flex}.exam-group-badge__sep{opacity:.5}.exam-progress-text{font-size:var(--font-size-sm);color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.exam-progress-bar{gap:var(--space-xs);flex-direction:column;min-width:180px;display:flex}.exam-progress-bar__track{background:var(--color-border);border-radius:999px;height:8px;overflow:hidden}.exam-progress-bar__fill{border-radius:inherit;background:var(--color-primary);height:100%;transition:width .2s}.exam-progress-bar__label{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.exam-zone-tabs{gap:var(--space-md);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.exam-zone-tabs__btn{align-items:flex-start;gap:var(--space-xs);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);text-align:left;cursor:pointer;background:#fff;flex-direction:column;display:flex}.exam-zone-tabs__btn--active{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.exam-zone-tabs__title{color:var(--color-text);font-weight:600}.exam-zone-tabs__desc{font-size:var(--font-size-xs);color:var(--color-text-secondary)}@media (width<=640px){.exam-zone-tabs{grid-template-columns:1fr}}.exam-question-zone,.exam-writing-zone{border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;overflow:visible}.exam-zone-header{justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--color-border);background:var(--color-bg-alt);flex-wrap:wrap;display:flex}.exam-zone-header--writing{align-items:flex-start}.exam-zone-header__title{font-size:var(--font-size-base);color:var(--color-text);margin:0;font-weight:600}.exam-zone-header__index{color:var(--color-text-secondary);font-size:var(--font-size-sm)}.exam-question-body{padding:var(--space-md)}.exam-question-body--split{gap:var(--space-md);flex-direction:column;align-items:stretch;display:flex}.exam-question-visual{width:100%;margin:0}.exam-question-visual__frame{padding:var(--space-xs);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-alt)}.exam-question-visual img{object-fit:contain;border-radius:calc(var(--radius-md) - 2px);width:100%;max-height:min(52dvh,32rem);display:block}.exam-question-visual figcaption{margin-top:var(--space-xs);color:var(--color-text-secondary);font-size:var(--font-size-xs)}.exam-question-copy{white-space:normal;overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}.exam-word-pair{align-items:stretch;gap:var(--space-sm);margin:0 0 var(--space-md);padding:var(--space-md);border-radius:var(--radius-md);background:linear-gradient(#fff8eb 0%,#fff3d6 100%);border:2px solid #d97706;flex-direction:column;display:flex;box-shadow:inset 0 0 0 1px #d977061f}.exam-word-pair__label{font-size:var(--font-size-sm);letter-spacing:.02em;color:#9a3412;text-transform:none;margin:0;font-weight:800}.exam-word-pair__hint{font-size:var(--font-size-xs);color:#b45309;margin:0;font-weight:600}.exam-word-pair__words{align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.exam-word-chip{border-radius:var(--radius-md);color:#7c2d12;min-height:2.5rem;font-size:var(--font-size-xl);letter-spacing:.01em;background:#fff;border:2px solid #ea580c;justify-content:center;align-items:center;padding:.45rem .95rem;font-weight:800;line-height:1.2;display:inline-flex;box-shadow:0 1px #ea580c2e}.exam-word-pair__plus{color:#c2410c;font-size:var(--font-size-xl);font-weight:800;line-height:1}.exam-writing-toolbar{justify-content:flex-end;align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.exam-writing-stat{color:var(--color-text);font-size:var(--font-size-sm)}.exam-writing-stat strong{font-weight:700}.exam-writing-stat--muted{color:var(--color-text-secondary)}.exam-focus-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-secondary);font-size:var(--font-size-xs);cursor:pointer;background:#fff;align-items:center;gap:.35rem;padding:.35rem .65rem;font-weight:500;display:inline-flex}.exam-focus-btn--icon{justify-content:center;min-width:2rem;padding:.4rem}.exam-focus-btn:hover,.exam-focus-btn[aria-pressed=true]{border-color:var(--color-primary);color:var(--color-primary)}.exam-writing-paper-wrap{padding:0 var(--space-md) var(--space-md)}.exam-writing-paper{width:100%;min-height:min(34dvh,16rem);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-family:var(--font-family-en);font-size:var(--font-size-base);resize:vertical;background-color:#fff;outline:none;line-height:1.65}.exam-writing-paper:focus{border-color:var(--color-primary);box-shadow:0 0 0 2px color-mix(in srgb, var(--color-primary) 20%, transparent)}.exam-writing-paper::placeholder{color:var(--color-text-secondary)}.exam-structured-block{margin-top:var(--space-md);padding:var(--space-sm) var(--space-md);border-left:3px solid var(--color-border);background:var(--color-bg-alt);white-space:normal;overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}.exam-structured-block__title{margin:0 0 var(--space-xs);font-size:var(--font-size-sm);color:var(--color-text);font-weight:600}.exam-email-header__list{gap:var(--space-xs);margin:0;display:grid}.exam-email-header__list dt{font-size:var(--font-size-xs);color:var(--color-text-secondary);margin:0;font-weight:600}.exam-email-header__list dd{margin:0 0 var(--space-xs);font-size:var(--font-size-sm);color:var(--color-text);word-break:break-word}.exam-email-compose{min-height:inherit;border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface,#fff);flex-direction:column;height:100%;display:flex;overflow:hidden}.exam-email-compose__row{gap:var(--space-sm);border-bottom:1px solid var(--color-border);grid-template-columns:4.5rem minmax(0,1fr);align-items:center;padding:.55rem .85rem;display:grid}.exam-email-compose__label{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin:0;font-weight:600}.exam-email-compose__input{width:100%;font:inherit;font-size:var(--font-size-sm);color:var(--color-text);background:0 0;border:0;outline:none;padding:.15rem 0}.exam-email-compose__input::placeholder{color:var(--color-text-muted,#9aa3af)}.exam-writing-paper--email-body{border:0;border-radius:0;flex:1;min-height:12rem}.exam-student-responses__list{gap:var(--space-md);display:grid}.exam-student-response{margin:0}.exam-student-response__name{margin:0 0 var(--space-xs);font-size:var(--font-size-sm);color:var(--color-primary);font-weight:700}.exam-student-response__body,.exam-your-response-preview p{margin:0}.writing-question-fields .exam-word-pair{margin-top:var(--space-sm)}.exam-writing-footer{justify-content:space-between;gap:var(--space-sm);padding:var(--space-sm) var(--space-md) var(--space-md);border-top:1px solid var(--color-border);background:var(--color-bg-alt);flex-wrap:wrap;display:flex}.exam-writing-footer__hint{color:var(--color-text-secondary);font-size:var(--font-size-xs)}.exam-writing-footer__warn{color:var(--color-danger);font-size:var(--font-size-xs)}.question-rich-content--writing{font-size:var(--font-size-base);line-height:1.65}.question-rich-content--writing strong,.question-rich-content--writing b{font-weight:600}.question-rich-content--writing h1,.question-rich-content--writing h2,.question-rich-content--writing h3{font-size:var(--font-size-base);margin:0 0 var(--space-xs);font-weight:600}.question-rich-content--writing ul,.question-rich-content--writing ol{margin:var(--space-xs) 0;padding-left:1.25rem}.question-rich-content--writing li{margin-top:.25rem}.question-rich-content--writing img{border:1px solid var(--color-border);border-radius:var(--radius-sm)}.exam-panel--writing .exam-actions-bar{margin-top:var(--space-md);box-shadow:none;background:0 0;border:none;border-radius:0}.exam-hint-buttons{gap:var(--space-xs);flex-wrap:wrap;display:flex}.exam-hint-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font-size:var(--font-size-xs);cursor:pointer;background:#fff;align-items:center;gap:.35rem;padding:.35rem .65rem;font-weight:500;display:inline-flex}.exam-hint-btn--active,.exam-hint-btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-bg-alt)}.exam-ai-actions{gap:var(--space-sm);flex-wrap:wrap;align-items:flex-start;display:flex}.exam-ai-action{flex-direction:column;align-items:flex-start;gap:.2rem;display:flex}.exam-ai-action__hint{max-width:14rem;font-size:var(--font-size-xs);color:var(--color-text-secondary);line-height:1.4;display:block}.exam-ai-btn--outline{border:1px solid var(--color-border);color:var(--color-text);background:#fff}.exam-ai-btn--outline:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.exam-writing-footer--stats{align-items:center;gap:var(--space-sm) var(--space-md);flex-wrap:wrap;display:flex}.exam-ai-btn{align-items:center;gap:.35rem;display:inline-flex}.exam-hint-panel,.exam-ai-feedback-panel{margin:0 var(--space-md) var(--space-md);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-alt)}.exam-ai-feedback-panel__header,.exam-hint-panel__header{margin-bottom:var(--space-sm);font-weight:600}.exam-ai-feedback-panel__body{white-space:pre-wrap;margin-bottom:var(--space-sm);line-height:1.65}.exam-nav-buttons{justify-content:flex-end;align-items:center;gap:var(--space-sm);flex-wrap:wrap;width:100%;display:flex}@media (width>=640px){.exam-nav-buttons{width:auto}}.exam-nav-btn{justify-content:center;align-items:center;gap:.35rem;min-width:6.5rem;display:inline-flex}.exam-nav-btn .spinner{width:1.1rem;height:1.1rem}.writing-metrics-grid{gap:var(--space-sm);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.writing-metrics-card{padding:var(--space-md);border-radius:var(--radius-md);background:#ffffffeb;border:1px solid #0077b624}.writing-metrics-card__title{color:#0369a1;margin-bottom:var(--space-sm);font-weight:800}.writing-metrics-card__list{font-size:var(--font-size-sm);gap:.35rem;display:grid}.writing-metrics-card__list div{justify-content:space-between;gap:var(--space-sm);display:flex}.writing-metrics-card__list dt{color:var(--color-text-secondary)}.writing-metrics-card__list dd{margin:0;font-weight:700}.exam-result-overall__text{white-space:pre-wrap;margin:0;line-height:1.7}.exam-result-overall__text--secondary{color:var(--color-text-secondary)}.exam-result-questions{margin-top:var(--space-md)}.exam-result-question{background:var(--color-bg-alt);gap:var(--space-md);flex-direction:column;display:flex}.exam-result-question__header{justify-content:space-between;align-items:flex-start;gap:var(--space-md);padding-bottom:var(--space-md);border-bottom:1px solid var(--color-border);flex-wrap:wrap;display:flex}.exam-result-question__score{text-align:right}.exam-result-score-pill{border-radius:var(--radius-full);background:var(--color-primary-light);color:var(--color-primary);font-weight:800;font-size:var(--font-size-lg);padding:.35rem .75rem;line-height:1.2;display:inline-block}.exam-result-question__ratio{font-size:var(--font-size-sm);color:var(--color-text-secondary);margin-top:.2rem}.exam-result-block__label{margin:0 0 var(--space-xs);font-size:var(--font-size-xs);letter-spacing:.04em;text-transform:uppercase;color:var(--color-text-secondary);font-weight:700}.exam-result-answer{padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);white-space:pre-wrap;line-height:1.7;font-size:var(--font-size-sm);overflow-wrap:break-word;word-break:keep-all}.exam-result-metrics{gap:var(--space-sm);flex-wrap:wrap;display:flex}.exam-result-metric{min-width:7rem;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);background:#fffffff2;border:1px solid #0077b62e;flex-direction:column;gap:.15rem;display:flex}.exam-result-metric__label{font-size:var(--font-size-xs);color:var(--color-text-secondary);font-weight:600}.exam-result-metric__value{font-size:var(--font-size-lg);color:var(--color-primary);font-weight:800;line-height:1.2}.exam-result-feedback-sections{gap:var(--space-md);display:grid}.exam-result-feedback-section{padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg)}.exam-result-feedback-section__title{margin:0 0 var(--space-sm);font-size:var(--font-size-sm);color:var(--color-primary);font-weight:700}.exam-result-feedback-section__body{white-space:pre-wrap;line-height:1.75;font-size:var(--font-size-sm);overflow-wrap:break-word;word-break:keep-all}.exam-result-feedback-fallback{padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);white-space:pre-wrap;line-height:1.75;font-size:var(--font-size-sm);overflow-wrap:break-word;word-break:keep-all}@media (width<=768px){.exam-writing-shell{padding:var(--space-md)}.exam-question-visual img{max-height:min(40dvh,20rem)}.exam-zone-header--writing{flex-direction:column;align-items:stretch}.exam-writing-toolbar{justify-content:flex-start}.exam-writing-paper{min-height:min(40dvh,14rem);font-size:var(--font-size-base)}}.exam-actions-bar{bottom:calc(env(safe-area-inset-bottom,0px) + var(--keyboard-inset,0px));z-index:20;margin:var(--space-lg) calc(var(--space-lg) * -1) calc(var(--space-lg) * -1);padding:var(--space-md) var(--space-lg) max(var(--space-md), env(safe-area-inset-bottom,0px));border-top:1px solid var(--color-border);border-radius:0 0 var(--radius-md) var(--radius-md);background:#fff;position:sticky}.exam-question-image{margin:var(--space-lg) 0 0}.exam-question-image img{object-fit:contain;border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;width:min(100%,44rem);max-height:48dvh;display:block}.exam-question-image figcaption{margin-top:var(--space-xs);color:var(--color-text-secondary);font-size:var(--font-size-sm)}.question-image-upload__input{opacity:0;pointer-events:none;width:0;height:0;position:absolute;overflow:hidden}.question-image-upload__row{align-items:center;gap:var(--space-sm);display:flex}.question-image-editor{align-items:flex-start;gap:var(--space-sm);flex-wrap:wrap;display:flex}.question-image-editor img{object-fit:contain;border:1px solid var(--color-border);border-radius:var(--radius-md);background:#fff;width:min(100%,18rem);max-height:12rem}.question-thumb{object-fit:cover;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:#fff;flex:none;width:4.5rem;height:3.25rem}.question-editor-layout{display:block}.question-editor-layout__editor,.question-editor-layout__preview{min-width:0}.modal-card.question-student-preview-modal,.question-student-preview-modal{--modal-width:min(56rem, 96vw);width:min(100%, var(--modal-width));white-space:normal;max-width:96vw;max-height:min(92dvh,960px);overflow:auto}.question-student-preview-modal__body{border:1px solid var(--color-border);border-radius:var(--radius-md);white-space:normal;background:#fff;min-width:0;overflow:visible}.question-student-preview-modal__body .exam-question-zone,.question-student-preview-modal__body .exam-writing-zone{overflow:visible}.table td.question-editor-cell{white-space:normal;text-overflow:clip;vertical-align:top;max-width:none;overflow:visible}.table td.question-editor-cell .question-editor-form,.table td.question-editor-cell .writing-question-fields,.table td.question-editor-cell .rich-editor,.table td.question-editor-cell .question-rich-content{white-space:normal;overflow-wrap:anywhere;max-width:100%}.question-editor-preview{background:linear-gradient(#fff 0%,#fbfdff 100%);min-height:100%}.question-editor-preview__label{margin-bottom:var(--space-sm);color:var(--color-text-secondary);font-size:var(--font-size-xs);letter-spacing:.04em;text-transform:uppercase;font-weight:700}.rich-editor{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);position:relative;overflow:hidden}.rich-editor__toolbar{gap:var(--space-xs);padding:var(--space-sm);border-bottom:1px solid var(--color-border);background:#f8fbfe;flex-wrap:wrap;display:flex}.rich-editor__btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);width:2rem;height:2rem;color:var(--color-text);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.rich-editor__btn--active,.rich-editor__btn:hover{border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-light)}.rich-editor__surface{position:relative}.rich-editor__content{min-height:18rem;padding:var(--space-md);outline:none;line-height:1.7}.rich-editor__content>*+*{margin-top:.8rem}.rich-editor__content ul,.rich-editor__content ol,.question-rich-content ul,.question-rich-content ol{margin:.35rem 0;padding-left:1.4rem;list-style-position:outside}.rich-editor__content li,.question-rich-content li{margin-top:.35rem;line-height:1.55;display:list-item}.rich-editor__content a,.question-rich-content a{color:var(--color-primary);text-decoration:underline}.rich-editor__content img,.question-rich-content img{border-radius:var(--radius-md);vertical-align:top;max-width:100%;height:auto}.rich-editor__content img.rich-img,.question-rich-content img.rich-img{margin:0 4px 4px 0;display:inline-block}.rich-editor__content img.rich-img--w100,.question-rich-content img.rich-img--w100{width:100%;margin-right:0}.rich-editor__content img.rich-img--w50,.question-rich-content img.rich-img--w50{width:calc(50% - 6px)}.rich-editor__content img.rich-img--w33,.question-rich-content img.rich-img--w33{width:calc(33.333% - 6px)}.rich-editor__content img.rich-img--left,.question-rich-content img.rich-img--left{margin-left:0;margin-right:auto;display:block}.rich-editor__content img.rich-img--center,.question-rich-content img.rich-img--center{margin-left:auto;margin-right:auto;display:block}.rich-editor__content img.rich-img--right,.question-rich-content img.rich-img--right{margin-left:auto;margin-right:0;display:block}.rich-editor__content img.ProseMirror-selectednode{outline:2px solid var(--color-primary);outline-offset:2px}.rich-editor__file-input{display:none}.rich-editor__btn:has(.rich-editor__btn-text){width:auto;padding:0 var(--space-sm)}.rich-editor__btn-text{font-size:var(--font-size-xs);font-weight:600;line-height:1}.rich-editor__placeholder{top:var(--space-md);left:var(--space-md);color:var(--color-text-light);pointer-events:none;position:absolute}.rich-editor__loading{color:var(--color-text-secondary)}.question-rich-content{color:var(--color-text);white-space:normal;overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%;line-height:1.7}.question-rich-content>*+*{margin-top:.85rem}.question-rich-content h1,.question-rich-content h2,.question-rich-content h3{line-height:1.3}.question-rich-content--exam{font-size:var(--font-size-lg)}.announcement-stack{gap:var(--space-md);display:grid}.announcement-card{padding:var(--space-lg);border-radius:var(--radius-lg);background:linear-gradient(135deg,#fff9e8 0%,#fffdf6 100%);border:1px solid #f4d784;box-shadow:0 10px 24px #784a1614}.announcement-card__label{margin-bottom:var(--space-xs);color:#8a5a10;font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;font-weight:700}.announcement-card__title{margin-bottom:var(--space-sm)}.announcement-card__content{white-space:pre-wrap;color:var(--color-text)}.announcement-card__count{margin-left:var(--space-sm);color:#b07a1e;font-weight:600}.announcement-carousel{position:relative}.announcement-card--clickable{cursor:pointer;padding-left:calc(var(--space-lg) + 20px);padding-right:calc(var(--space-lg) + 20px);position:relative}.announcement-card__hint{color:#c79a3e;opacity:.55;pointer-events:none;justify-content:center;align-items:center;transition:opacity .15s,color .15s;display:inline-flex;position:absolute;top:50%;transform:translateY(-50%)}.announcement-card__hint--prev{left:var(--space-xs)}.announcement-card__hint--next{right:var(--space-xs)}.announcement-card--clickable:hover .announcement-card__hint{opacity:1;color:#8a5a10}.announcement-carousel__dots{justify-content:center;gap:var(--space-xs);margin-top:var(--space-md);display:flex}.announcement-carousel__dot{cursor:pointer;background:#e6c884;border:none;border-radius:50%;width:8px;height:8px;padding:0;transition:background .15s,transform .15s}.announcement-carousel__dot.is-active{background:#b07a1e;transform:scale(1.3)}.announcement-admin-row{justify-content:space-between;gap:var(--space-md);padding:var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-alt);display:flex}.question-content-truncate{max-width:min(28rem,48vw)}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-md{border-radius:var(--radius-md)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-full{border-radius:var(--radius-full)}.border{border:1px solid var(--color-border)}.border-t{border-top:1px solid var(--color-border)}.border-l-4{border-left-style:solid;border-left-width:4px}.border-radius{border-radius:var(--radius-md)}.text-md{font-size:var(--font-size-base)}.text-2xl{font-size:var(--font-size-2xl)}.text-success{color:var(--color-success)}.bg-primary{background-color:var(--color-primary)}.bg-primary-light{background-color:var(--color-primary-light)}.bg-opacity-10{background-color:#0077b614}.text-white{color:#fff}.hover\:border-secondary:hover{border-color:var(--color-secondary)!important}.btn svg,a.btn svg{flex-shrink:0;display:block}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.gap-xl{gap:var(--space-xl)}.gap-x-lg{column-gap:var(--space-lg)}.gap-y-xs{row-gap:var(--space-xs)}.mt-sm{margin-top:var(--space-sm)}.mt-md{margin-top:var(--space-md)}.mt-lg{margin-top:var(--space-lg)}.mt-xl{margin-top:var(--space-xl)}.mt-3xl{margin-top:var(--space-3xl)}.mb-xs{margin-bottom:var(--space-xs)}.mb-sm{margin-bottom:var(--space-sm)}.mb-md{margin-bottom:var(--space-md)}.mb-lg{margin-bottom:var(--space-lg)}.mb-xl{margin-bottom:var(--space-xl)}.mb-2xl{margin-bottom:var(--space-2xl)}.mb-3xl{margin-bottom:var(--space-3xl)}.mb-0{margin-bottom:0}.ml-auto{margin-left:auto}.mr-xs{margin-right:var(--space-xs)}.w-full{width:100%}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-lg{max-width:36rem}.mx-auto{margin-left:auto;margin-right:auto}.text-xs{font-size:var(--font-size-xs)}.text-lg{font-size:var(--font-size-lg)}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-snug{line-height:1.35}.h-screen,.min-h-screen{min-height:100dvh}.bg-alt,.bg-light{background-color:var(--color-bg-alt)}.text-danger{color:var(--color-danger)}.text-primary{color:var(--color-primary)}.text-warning{color:#b8860b}.p-xs{padding:var(--space-xs)}.p-sm{padding:var(--space-sm)}.p-md{padding:var(--space-md)}.pt-md{padding-top:var(--space-md)}.py-sm{padding-top:var(--space-sm);padding-bottom:var(--space-sm)}.py-3xl{padding-top:var(--space-3xl);padding-bottom:var(--space-3xl)}.py-xl{padding-top:var(--space-xl);padding-bottom:var(--space-xl)}.px-sm{padding-left:var(--space-sm);padding-right:var(--space-sm)}.pointer{cursor:pointer}.opacity-90{opacity:.9}.border-2{border-style:solid;border-width:2px}.border-primary{border-color:var(--color-primary)}.border-dashed{border-style:dashed}.transition-all{transition:color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast)}.uppercase{text-transform:uppercase}.tracking-wide{letter-spacing:.04em}.tabular-nums{font-variant-numeric:tabular-nums}.print\:max-w-none{max-width:none}@media (width>=640px){.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-end{align-items:flex-end}.sm\:shrink-0{flex-shrink:0}.sm\:self-end{align-self:flex-end}.sm\:w-\[8rem\]{width:8rem}.sm\:min-w-\[12rem\]{min-width:12rem}.sm\:w-auto{width:auto}}@media (width>=1024px){.lg\:flex-row{flex-direction:row}.lg\:justify-between{justify-content:space-between}.lg\:items-start{align-items:flex-start}.lg\:items-end{align-items:flex-end}}.teacher-layout{min-height:min(600px,85dvh);position:relative}.teacher-layout__main{min-width:0}.teacher-sidebar-toggle{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-lg);padding:var(--space-sm) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text);font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);font-weight:500;display:inline-flex}.teacher-sidebar-toggle:hover{background:var(--color-bg-alt);border-color:color-mix(in srgb, var(--color-primary) 25%, var(--color-border));color:var(--color-primary)}.teacher-sidebar-toggle__label{text-overflow:ellipsis;white-space:nowrap;max-width:12rem;overflow:hidden}.teacher-sidebar-overlay{z-index:200;cursor:pointer;background:#2d343673;border:none;padding:0;position:fixed;inset:0}.teacher-sidebar{z-index:210;gap:var(--space-md);width:min(280px,86vw);height:100dvh;padding:var(--space-lg) var(--space-md);border-right:1px solid var(--color-border);background:var(--color-bg);box-shadow:var(--shadow-lg);transition:transform var(--transition-base);flex-direction:column;display:flex;position:fixed;top:0;left:0;overflow-y:auto;transform:translate(-100%)}.teacher-sidebar--open{transform:translate(0)}.teacher-sidebar__header{justify-content:space-between;align-items:center;gap:var(--space-sm);padding-bottom:var(--space-sm);border-bottom:1px solid var(--color-border);display:flex}.teacher-sidebar__title{font-size:var(--font-size-base);color:var(--color-text);font-weight:700}.teacher-sidebar__close{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-alt);width:2rem;height:2rem;color:var(--color-text-secondary);cursor:pointer;transition:background var(--transition-fast), color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}.teacher-sidebar__close:hover{background:var(--color-primary-light);color:var(--color-primary)}.home-role-cards{align-items:stretch;gap:var(--space-lg);flex-direction:column;width:100%;max-width:720px;margin:0 auto;display:flex}.home-role-card{width:100%;max-width:360px;padding:var(--space-2xl) var(--space-xl);margin-left:auto;margin-right:auto}@media (width>=700px){.home-role-cards{flex-flow:wrap;justify-content:center;align-items:stretch;max-width:900px}.home-role-card{flex:260px;max-width:340px;margin-left:0;margin-right:0}}.home-hero-title{font-size:2.5rem;font-weight:800;line-height:1.25}.home-hero-copy{max-width:36rem}.home-brand-seal{object-fit:contain;object-position:center;width:108px;height:108px;box-shadow:var(--shadow-md);background:#fff;border:2px solid #75512d29;border-radius:50%;padding:6px}.exam-room-bar{gap:var(--space-md);flex-wrap:wrap;align-items:flex-start}.exam-room-bar>.flex{flex-wrap:wrap;min-width:0}@media (width>=640px){.exam-room-bar{flex-wrap:nowrap;align-items:center}}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:24px;height:24px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.modal-overlay{z-index:1000;padding:var(--space-lg);overscroll-behavior:contain;background:#2d343673;justify-content:center;align-items:center;display:flex;position:fixed;inset:0;overflow-y:auto}.modal-card{width:min(100%, var(--modal-width,32rem));max-height:calc(100dvh - (var(--space-lg) * 2));-webkit-overflow-scrolling:touch;overflow-y:auto}.modal-card--sm{--modal-width:24rem}.modal-card--md{--modal-width:32rem}.modal-card--lg{--modal-width:45rem}.exam-modal-overlay{background:#0f172ac2}.modal-card--relative{position:relative}.modal-busy{z-index:2;padding:var(--space-lg);border-radius:var(--radius-md);pointer-events:auto;background:#ffffffe0;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.modal-scroll{-webkit-overflow-scrolling:touch;max-height:min(45dvh,20rem);overflow:auto}.dropdown-panel{z-index:1001;max-height:min(45dvh,220px);padding:var(--space-sm);box-shadow:var(--shadow-md);margin-top:4px;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.dropdown-trigger{justify-content:space-between;align-items:center;gap:var(--space-sm);cursor:pointer;text-align:left;background:var(--color-bg);display:flex}.student-confirm-list{gap:var(--space-sm);display:grid}.student-confirm-list>div{justify-content:space-between;align-items:center;gap:var(--space-md);padding:var(--space-sm) 0;border-bottom:1px solid var(--color-border);display:flex}.student-confirm-list strong{text-align:right;overflow-wrap:anywhere;min-width:0}.header-inner--responsive{gap:var(--space-md);flex-wrap:wrap;justify-content:space-between;align-items:center}@media (width<=768px){.container{padding-left:max(var(--space-md), env(safe-area-inset-left,0px));padding-right:max(var(--space-md), env(safe-area-inset-right,0px))}.content{padding-top:var(--space-xl);padding-bottom:var(--space-xl)}.header{padding-top:max(var(--space-sm), env(safe-area-inset-top,0px))}.header-logo{font-size:var(--font-size-base);min-width:0}.header-logo span{line-height:1.3}.header-logo strong{font-size:var(--font-size-sm)}.header-logo small{font-size:.6875rem}.logo-badge{width:40px;height:40px}.header-nav{justify-content:flex-start;gap:var(--space-sm) var(--space-md);flex-wrap:wrap;width:100%;max-width:100%}.card{padding:var(--space-md)}.answer-textarea{min-height:min(34dvh,13rem);font-size:var(--font-size-base)}.exam-panel{padding-bottom:0}.exam-actions-bar{margin:var(--space-md) calc(var(--space-md) * -1) 0;padding:var(--space-sm) var(--space-md) max(var(--space-sm), env(safe-area-inset-bottom,0px));max-height:min(42dvh,15rem);overflow-y:auto}.exam-question-image img{max-height:min(34dvh,18rem)}.announcement-admin-row{flex-direction:column}.table-card{padding:0}.page-header{flex-direction:row;justify-content:space-between;align-items:center}.page-header .toolbar,.page-header .action-group{justify-content:flex-end;width:auto;margin-left:auto}.form-grid,.grid-cols-2,.question-editor-layout{grid-template-columns:1fr}.action-group,.card-actions{width:100%}.table th,.table td{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs)}.table th{white-space:nowrap;vertical-align:top}.scroll-region-y{max-height:min(65vh,100dvh - 12rem)}.modal-overlay{padding:max(var(--space-md), env(safe-area-inset-top,0px)) max(var(--space-md), env(safe-area-inset-right,0px)) max(var(--space-md), env(safe-area-inset-bottom,0px)) max(var(--space-md), env(safe-area-inset-left,0px));align-items:center}.modal-card{max-height:calc(100dvh - (var(--space-md) * 2))}.student-confirm-list>div{flex-direction:column;align-items:flex-start;gap:2px}.student-confirm-list strong{text-align:left}.numeric-display{font-size:var(--font-size-2xl)}.dashboard-grid{gap:var(--space-sm);grid-template-columns:repeat(2,minmax(0,1fr))}.home-hero-title{font-size:var(--font-size-3xl)}}@media (width<=480px){html{font-size:15px}.btn{min-height:44px;padding-left:var(--space-md);padding-right:var(--space-md)}.btn-xs{min-height:36px}.btn-lg:not(.sm\:w-auto){width:100%;max-width:100%}.exam-actions-bar .btn-lg{min-height:40px;padding-top:var(--space-sm);padding-bottom:var(--space-sm);font-size:var(--font-size-sm)}.modal-actions>.btn,.card-actions>.btn{flex:9rem}.table{min-width:38rem}.class-card__header{flex-direction:column}.class-card .card-actions{justify-content:flex-start}.home-hero-title{font-size:var(--font-size-2xl)}}.toast-region{top:max(var(--space-lg), env(safe-area-inset-top,0px));right:max(var(--space-lg), env(safe-area-inset-right,0px));z-index:2147483647;gap:var(--space-sm);pointer-events:none;flex-direction:column;width:min(92vw,22rem);display:flex;position:fixed}.toast{align-items:flex-start;gap:var(--space-sm);padding:var(--space-md);border-radius:var(--radius-md);border:1px solid var(--color-border);background:var(--color-bg-card);box-shadow:var(--shadow-lg);color:var(--color-text);font-size:var(--font-size-sm);pointer-events:auto;animation:toast-in var(--transition-base) ease;display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.toast--success{border-left:4px solid var(--color-success)}.toast--error{border-left:4px solid var(--color-danger)}.toast--warning{border-left:4px solid var(--color-warning)}.toast--info{border-left:4px solid var(--color-primary)}.toast__message{overflow-wrap:anywhere;white-space:pre-wrap;flex:1;min-width:0;line-height:1.5}.toast__close{color:var(--color-text-secondary);cursor:pointer;padding:0 var(--space-xs);border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;font-size:1.25rem;line-height:1}.toast__close:hover{color:var(--color-text)}.toast__close:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}
