:root{--ink:#21302f;--muted:#71807e;--line:#dce4e1;--paper:#fffefb;--green:#276b58;--dark:#183d35;--yellow:#f4c75f;--soft:#f2f6f3;--coral:#c97567}*{box-sizing:border-box}body{margin:0;background:#edf2ef;color:var(--ink);font:14px/1.5 Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;letter-spacing:0}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;padding:12px clamp(20px,4vw,58px);border-top:1px solid var(--line);background:var(--paper);color:var(--muted);font-size:12px}.site-footer nav{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:14px}.privacy-back,.site-footer a{color:var(--green);text-decoration:none}.privacy-back:hover,.site-footer a:hover{text-decoration:underline}.privacy-page{min-height:100vh;padding:52px 20px;background:#edf2ef}.privacy-page article{max-width:760px;margin:0 auto;padding:clamp(28px,5vw,52px);border:1px solid var(--line);border-radius:8px;background:var(--paper)}.privacy-eyebrow{color:var(--green);font-size:12px;font-weight:800}.privacy-eyebrow,.privacy-page h1{margin-bottom:8px}.privacy-updated{color:var(--muted);font-size:12px}.privacy-page section{margin-top:28px}.privacy-page h2{margin-bottom:8px}.privacy-page section p{margin:0;color:#40524d}.privacy-back{display:inline-block;margin-top:34px;font-weight:700}button,input,select,textarea{font:inherit}button{cursor:pointer}.app-shell{display:flex;min-height:100vh}.sidebar{width:240px;flex:0 0 240px;padding:25px 16px 18px;background:var(--dark);color:#e9f4ef;display:flex;flex-direction:column}.brand{display:flex;gap:10px;align-items:center;margin:0 10px 36px;color:#fff;font:700 21px Georgia,Songti SC,serif}.brand-mark{display:block;flex:0 0 auto;width:28px;height:28px}.role-label{margin:0 10px 10px;color:#9ab5aa;font-size:11px;font-weight:700;letter-spacing:.09em}.sidebar nav{display:grid;grid-gap:4px;gap:4px}.nav-item{display:flex;align-items:center;gap:12px;min-height:42px;padding:0 12px;border:0;border-radius:6px;background:transparent;color:#c5d8d0;text-align:left}.nav-item.active,.nav-item:hover{background:rgba(230,248,239,.12);color:#fff}.sidebar-bottom{margin-top:auto;padding:13px;border:1px solid rgba(255,255,255,.12);border-radius:7px;background:rgba(255,255,255,.055)}.sidebar-bottom small{display:block;color:#a6c0b5;margin-bottom:3px}.main{min-width:0;flex:1 1}.topbar{height:75px;display:flex;justify-content:space-between;align-items:center;gap:14px;padding:0 clamp(20px,4vw,58px);border-bottom:1px solid #dce6e1;background:rgba(255,254,251,.9)}.topbar>div:first-child{color:var(--muted);font-size:13px}.topbar b{color:var(--ink);font-size:15px}.top-actions{display:flex;align-items:center;gap:10px}.icon-button{position:relative;width:33px;height:33px;border:0;background:transparent;color:#466059}.icon-button i{position:absolute;top:5px;right:4px;width:7px;height:7px;border-radius:50%;background:#d76557}.role-switch{display:flex;padding:3px;border-radius:7px;background:#e7eeea}.role-switch button{border:0;border-radius:5px;padding:5px 9px;background:transparent;color:#59706a;font-size:12px}.role-switch .selected{background:var(--paper);color:var(--green);box-shadow:0 1px 3px #0000001a;font-weight:700}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:#cf7769;color:#fff;font-size:11px;font-weight:800}.content{max-width:1360px;margin:0 auto;padding:36px clamp(20px,4vw,58px) 60px}h1,h2,h3,p{margin-top:0}h1{margin-bottom:6px;font:700 30px/1.2 Georgia,Songti SC,serif}h2{font-size:17px;margin-bottom:0}h3{font-size:14px}.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px}.page-heading p{margin:0;color:var(--muted)}.daily-writing-note{display:grid;grid-template-columns:28px minmax(0,1fr);grid-gap:12px;gap:12px;align-items:center;min-height:82px;margin:-8px 0 24px;padding:14px 17px;border:1px solid #cfe2d8;background:#e5f1eb;color:var(--green)}.daily-writing-note>svg{align-self:start;margin-top:3px}.daily-writing-note blockquote{display:grid;grid-gap:4px;gap:4px;margin:0}.daily-writing-note blockquote>span{color:#286b58;font-size:11px;font-weight:800}.daily-writing-note blockquote>span small{margin-left:6px;color:#69847a;font-size:10px;font-weight:600}.daily-writing-note p{margin:0;color:#29453c;font:600 15px/1.5 Georgia,Songti SC,serif}.daily-writing-note p+p{margin-top:-1px;color:#607b71;font:12px/1.45 Inter,ui-sans-serif,sans-serif}.status,.week-chip{display:inline-flex;align-items:center;min-height:22px;border-radius:12px;padding:0 8px;font-size:11px;font-weight:700;white-space:nowrap}.week-chip{background:#e5f2ec;color:var(--green)}.stats{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px;margin-bottom:28px}.stat{min-height:108px;padding:17px 18px;border:1px solid var(--line);border-radius:7px;background:var(--paper)}.stat-button{width:100%;border:1px solid var(--line);color:inherit;text-align:left}.stat-button:hover{border-color:#91afa4;box-shadow:0 0 0 3px #276b5814}.stat span{display:block;color:var(--muted);font-size:12px}.stat strong{display:block;margin:7px 0 2px;font:700 28px Georgia,serif}.stat small{color:var(--green);font-size:11px}.two-column{display:grid;grid-template-columns:minmax(0,1.48fr) minmax(280px,.8fr);grid-gap:20px;gap:20px}.student-dashboard-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.72fr);grid-gap:20px;gap:20px;align-items:stretch}.student-feedback-panel,.student-focus-panel{overflow:hidden}.student-focus-content{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;grid-gap:16px;gap:16px;padding:20px;border-top:1px solid #edf0ee}.student-focus-content .task-badge{width:50px;height:50px}.student-feedback-item h3,.student-focus-content h3{margin:3px 0 6px;font:700 18px/1.35 Georgia,Songti SC,serif}.student-feedback-item p,.student-focus-content p{margin:0;color:#63736e;font-size:12px;line-height:1.6}.student-focus-meta{color:var(--green)!important;font-size:11px!important;font-weight:700}.student-feedback-item{display:block;width:100%;min-height:168px;padding:20px;border:0;border-top:1px solid #edf0ee;background:transparent;color:inherit;text-align:left}.student-feedback-item:hover{background:#f7faf8}.student-feedback-item>span{display:inline-block;padding:3px 6px;border-radius:4px;background:#e5f2ec;color:var(--green);font-size:11px;font-weight:800}.panel{border:1px solid var(--line);border-radius:7px;background:var(--paper);box-shadow:0 2px 5px #1f342f08}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 15px}.back,.text-button{border:0;background:transparent;color:var(--green);font-size:12px;font-weight:700}.assignment-row{display:grid;grid-template-columns:43px minmax(0,1fr) auto;align-items:start;grid-gap:14px;gap:14px;padding:17px 20px;border-top:1px solid #edf0ee}.task-badge{flex:0 0 auto;display:grid;place-items:center;width:43px;height:43px;border-radius:6px;background:#e7f3ed;color:var(--green);font-size:11px;font-weight:800}.task-badge.task-one{background:#f9f0d7;color:#936c19}.assignment-copy{min-width:0;flex:1 1}.assignment-copy>div{display:flex;align-items:center;gap:8px}.assignment-copy .assignment-prompt{margin:4px 0;line-height:1.55;overflow-wrap:anywhere;white-space:normal}.assignment-row>.outline-button{align-self:center;justify-self:end;white-space:nowrap}.assignment-copy .assignment-preview{overflow:hidden;margin:0;color:#667671;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.assignment-copy .assignment-meta{display:flex;flex-wrap:wrap;margin-top:7px;color:var(--muted);font-size:11px}.assignment-meta b{color:var(--ink)}.draft-tag{padding:2px 5px;border-radius:4px;background:#f9efd5;color:#8d6817;font-weight:700}.heading-actions,.toolbar-actions,.toolbar-selection{display:flex;align-items:center;gap:9px}.heading-actions{flex-wrap:wrap;justify-content:flex-end}.group-overview{display:flex;align-items:flex-start;gap:16px;margin:-4px 0 16px;padding:12px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.group-overview-heading{display:grid;flex:0 0 88px;grid-gap:2px;gap:2px;padding-top:5px}.group-overview-heading b{color:var(--ink);font-size:12px}.group-overview-heading span{color:var(--muted);font-size:11px}.group-overview-list{display:flex;flex:1 1;flex-wrap:wrap;gap:7px}.group-overview-actions{display:flex;align-items:center;gap:4px;margin:-8px 0 14px;color:var(--muted);font-size:11px}.group-overview-actions .icon-button{width:28px;height:28px}.danger-button,.danger-icon{color:#b54f46}.group-filter{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:4px 8px 4px 10px;border:1px solid #cddbd5;border-radius:5px;background:var(--paper);color:#526660;font-size:12px;font-weight:700}.group-filter b{min-width:18px;padding:1px 5px;border-radius:9px;background:#edf3ef;color:var(--green);font-size:10px}.group-filter.active{border-color:#72a592;background:#e7f3ed;color:var(--green)}.group-filter.active b{background:#cfe7db}.list-toolbar{flex-wrap:wrap;gap:10px;margin:-2px 0 16px}.list-pagination,.list-toolbar{display:flex;align-items:center}.list-pagination{justify-content:flex-end;gap:12px;margin-top:18px;color:var(--muted);font-size:12px}.list-pagination button{min-width:76px}.list-pagination button:disabled{cursor:not-allowed;opacity:.5}.toolbar-actions{margin-left:auto}.toolbar-selection{width:100%;padding-top:10px;border-top:1px solid var(--line)}.search-field{display:flex;align-items:center;width:min(100%,360px);min-height:40px;border:1px solid #cddbd5;border-radius:5px;background:var(--paper);color:var(--ink);font-size:12px}.search-field:focus-within{border-color:#6a9d8b;box-shadow:0 0 0 3px #276b5814}.search-field svg{flex:0 0 auto;margin-left:12px;color:var(--muted)}.search-field input{width:100%;min-width:0;height:38px;padding:0 12px 0 9px;border:0;outline:0;background:transparent;color:var(--ink)}.list-toolbar select,.student-picker select{min-height:40px;padding:0 28px 0 11px;border:1px solid #cddbd5;border-radius:5px;background:var(--paper);color:var(--ink);font-size:12px}.student-picker{display:grid;grid-gap:10px;gap:10px;margin:0;padding:12px;border:1px solid #dce5e0;border-radius:8px;background:#f7f8fa}.student-picker-heading{display:flex;justify-content:space-between;align-items:center;font-size:14px}.field-label em,.student-picker-heading em{color:#c75d56;font-style:normal}.student-picker-heading span{color:var(--green);font-weight:700}.student-picker>select{width:100%}.student-picker-list{max-height:176px;overflow-y:auto;border:1px solid #dce5e0;border-radius:7px;background:var(--paper)}.student-picker-list label{display:flex;align-items:center;gap:10px;min-height:44px;padding:8px 10px;border-top:1px solid #edf0ee;cursor:pointer;transition:background .16s ease}.student-picker-list label:hover{background:#f2f6f3}.student-picker-list label.selected{background:#e7f1ec}.student-picker-list label:first-child{border-top:0}.student-picker-list span{display:grid;grid-gap:1px;gap:1px;font-size:12px}.student-picker-list small{color:var(--muted);font-size:10px}.student-picker-list input{width:16px;height:16px;margin:0;accent-color:var(--green)}.due{color:var(--muted);font-size:12px}.status.pending{background:#fff1d4;color:#9a6a10}.status.submitted{background:#e0eef6;color:#36718d}.status.reviewed{background:#dff1e8;color:#286b58}.outline-button,.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:5px;padding:8px 12px;font-size:12px;font-weight:800;white-space:nowrap}.outline-button{align-self:center;border:1px solid #cddbd5;background:#fff}.primary-button{border:0;color:#fff}.feedback{padding:17px 20px;border-top:1px solid #edf0ee}.feedback h3{margin:7px 0 4px}.feedback p{margin:0;color:#63736e;font-size:12px}.feedback span{display:inline-block;margin:10px 5px 0 0;padding:3px 6px;border-radius:4px;background:#f2f5f3;color:#596b65;font-size:11px}.next-task{margin:0 20px 20px;padding:18px;border-radius:6px;background:#225f50;color:#e9f5ef}.next-task small{color:#c4e4d4;font-size:11px}.next-task strong{display:block;margin:5px 0 12px;font:700 17px Georgia,serif}.next-task button{border:0;border-radius:5px;padding:7px 10px;background:var(--yellow);color:#19483d;font-size:12px;font-weight:800}.muted{color:var(--muted);font-size:12px}.mini-chart{display:flex;align-items:flex-end;gap:13px;height:135px;padding:10px 25px 20px}.mini-chart i{width:34px;max-width:25%;border-radius:4px 4px 1px 1px;background:#85b8a0}.mini-chart .latest{background:var(--green)}.space-top{margin-top:20px}.back{margin-bottom:13px;padding:0}.editor-layout,.review-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;grid-gap:20px;gap:20px;align-items:start}.language-review-stack{display:grid;grid-gap:28px;gap:28px}.language-review-section{display:grid;grid-template-columns:minmax(0,1fr) 360px;grid-gap:20px;gap:20px;align-items:start}.annotation-editor,.annotation-field,.language-review-section .language-feedback,.language-review-section>*{min-width:0}.revision-preview{grid-column:1/-1;overflow:hidden}.language-review-section.english{--annotation-background:#fff0a8;--annotation-background-active:#f8cf58;--annotation-accent:#28594c;--annotation-outline:#e7b63455;--annotation-card-border:#8eafa3;--annotation-card-outline:#276b5814}.language-review-section.chinese{order:-1;--annotation-background:#f8d1c2;--annotation-background-active:#eca385;--annotation-accent:#a94f3d;--annotation-outline:#d8765955;--annotation-card-border:#cf8875;--annotation-card-outline:#a94f3d14}.essay-panel{overflow:hidden}.essay-head{padding:23px 26px 18px;border-bottom:1px solid var(--line)}.essay-head small{color:var(--green);font-size:11px;font-weight:800;letter-spacing:.07em}.essay-head h2{margin:5px 0 8px;font:700 22px/1.35 Georgia,Songti SC,serif}.essay-head p{margin:0;color:#60716b;font-size:13px}.editor-tools{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--line);background:#fafcfa;color:#577069}.editor-tools span{color:#d8e0dc}.essay-panel>textarea{display:block;width:100%;min-height:485px;resize:vertical;padding:24px 27px;border:0;outline:0;background:var(--paper);color:#314640;font:16px/1.9 Georgia,"Noto Serif",serif}.essay-panel footer{display:flex;justify-content:space-between;padding:12px 20px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.saved{color:var(--green)}.review-form,.review-summary,.task-info{padding:19px}.language-review-section .language-feedback{position:static;max-height:none;overflow:visible}.task-info dl{margin:10px 0}.task-info dl div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #edf0ee;font-size:12px}.task-info dt{color:var(--muted)}.task-info dd{margin:0;font-weight:700}.review-form>label,.task-info label{display:block;margin-top:15px;font-size:12px;font-weight:700}.review-form input,.review-form textarea,.task-info textarea{display:block;width:100%;min-height:88px;resize:vertical;margin-top:7px;padding:9px;border:1px solid #d7e1dd;border-radius:5px;outline-color:var(--green);background:#fcfdfc;font-size:12px}.review-form input{min-height:auto}.revision-input{display:block;margin-top:15px;color:var(--ink);font-size:12px;font-weight:700}.revision-input small{margin-left:5px;color:var(--muted);font-size:10px;font-weight:500}.revision-input textarea{min-height:155px}.optional-review-field{margin-top:15px;color:var(--muted);font-size:12px}.optional-review-field summary{cursor:pointer;color:var(--green);font-weight:700}.optional-review-field textarea{display:block;width:100%;min-height:155px;resize:vertical;margin-top:8px;padding:9px;border:1px solid #d7e1dd;border-radius:5px;outline-color:var(--green);background:#fcfdfc;font-size:12px}.question-reference{display:grid;grid-gap:8px;gap:8px;margin-top:12px;padding:10px;border-left:3px solid var(--yellow);background:#fff8e7}.question-reference b{color:var(--dark);font-size:12px}.question-reference p{max-height:150px;overflow:auto;margin:0;color:#586962;font-size:12px;white-space:pre-line}.question-reference .outline-button{justify-self:start}.review-reference-panel{margin:0 0 20px;padding:0}.review-reference-panel>summary{cursor:pointer;padding:15px 18px;color:var(--green);font-size:13px;font-weight:700}.review-reference-content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px;padding:0 18px 16px}.review-reference-content .question-reference{margin-top:0}.reference-notice{margin:0 18px 16px;color:var(--green);font-size:12px;font-weight:700}.full{width:100%;margin-top:14px}.reading{padding:27px;font:16px/1.95 Georgia,"Noto Serif",serif;white-space:pre-line}.selectable-reading{cursor:text}.annotation-highlight{position:relative;padding:1px 2px;border-radius:2px;background:var(--annotation-background,#fff0a8);color:inherit;cursor:pointer;scroll-margin-top:28vh;text-decoration:none}.annotation-highlight.focused,.annotation-highlight:hover{background:var(--annotation-background-active,#f8cf58);box-shadow:0 0 0 2px var(--annotation-outline,#e7b63455)}.annotation-highlight sup{display:inline-grid;place-items:center;width:15px;height:15px;margin-left:3px;border-radius:50%;background:var(--annotation-accent,#28594c);color:#fff;font-family:Inter,ui-sans-serif,sans-serif;font-size:9px;font-weight:800;line-height:1;vertical-align:text-top}.annotation-list{margin-top:18px}.annotation-list h4{margin:0 0 8px;color:var(--annotation-accent,#4f645e);font-size:12px}.annotation-card{position:relative;margin-top:8px;border:1px solid #dce5e0;border-radius:6px;background:#fff;scroll-margin-top:20px;transition:border-color .12s ease,box-shadow .12s ease}.annotation-card.focused,.annotation-card:hover{border-color:var(--annotation-card-border,#8eafa3);box-shadow:0 0 0 3px var(--annotation-card-outline,#276b5814)}.annotation-jump{display:grid;grid-template-columns:25px minmax(0,1fr);width:100%;grid-gap:9px;gap:9px;padding:11px;border:0;border-radius:6px;background:transparent;color:inherit;text-align:left}.annotation-number{display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:var(--annotation-accent,#28594c);color:#fff;font-size:11px;font-weight:800}.annotation-card-copy{display:grid;min-width:0;grid-gap:3px;gap:3px}.annotation-card-label{color:#82908b;font-size:10px;font-weight:700}.annotation-card-copy b{overflow:hidden;color:#526660;font-size:12px;font-weight:600;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.suggestion-label{margin-top:5px;color:var(--annotation-accent,var(--green))}.annotation-comment{color:#213d35;font-size:13px;font-weight:700;line-height:1.5}.assignment-tags span,.category-chip{display:inline-flex;width:max-content;padding:2px 5px;border-radius:4px;background:#edf5f0;color:var(--green);font-size:10px;font-weight:800}.assignment-tags{display:flex;flex-wrap:wrap;gap:5px;margin:3px 0 5px}.annotation-remove{position:absolute;top:7px;right:8px;padding:3px;font-size:10px}.annotation-card:has(.annotation-remove) .annotation-jump{padding-right:40px}.overall-score{display:grid;grid-template-columns:1fr auto;align-items:baseline;grid-gap:2px 10px;gap:2px 10px;margin:13px 0 3px;padding:10px;border:1px solid #dce5e0;border-radius:5px;background:#f4f8f5;color:#526762;font-size:11px}.overall-score strong{color:var(--green);font-size:22px}.overall-score small{grid-column:1/-1;color:var(--muted);font-size:10px}.selected-text{position:relative;max-width:100%;overflow:hidden;min-height:54px;margin-top:7px;padding:8px 34px 8px 9px;border:1px solid #d7e1dd;border-radius:5px;background:#fcfdfc;color:#556963;font-size:12px;font-weight:400}.selected-text b{display:block;color:var(--annotation-accent,var(--green));font-size:10px}.selected-text p{display:-webkit-box;overflow:hidden;margin:3px 0 0;overflow-wrap:anywhere;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-break:break-word}.selected-text>button{position:absolute;top:6px;right:6px}.annotation-editor{display:grid;min-width:0;grid-gap:7px;gap:7px;margin-top:15px;color:var(--ink);font-size:12px;font-weight:700}.annotation-editor .selected-text,.annotation-editor textarea{box-sizing:border-box;max-width:100%;margin-top:0}.annotation-editor textarea:disabled{cursor:not-allowed;background:#f3f5f4}.annotation-field{display:grid;grid-gap:5px;gap:5px;color:var(--ink);font-size:12px;font-weight:700}.annotation-field small{color:var(--muted);font-size:10px;font-weight:500}.annotation-field select{box-sizing:border-box;width:100%;max-width:100%;min-height:34px;padding:6px 8px;border:1px solid #d7e1dd;border-radius:5px;outline-color:var(--green);background:#fcfdfc;color:var(--ink);font-size:12px}.annotation-field textarea{min-height:64px}.score-guide{margin-top:10px;border:1px solid #dce5e0;border-radius:5px;background:#fafcfb}.score-guide summary{padding:9px 10px;color:var(--green);cursor:pointer;font-size:11px;font-weight:800}.score-guide p{display:grid;grid-gap:2px;gap:2px;margin:0;padding:8px 10px;border-top:1px solid #e5ece8;color:var(--muted);font-size:11px}.score-guide b{color:var(--ink)}.language-kicker{margin:0 0 4px;color:var(--annotation-accent,var(--green));font-size:11px;font-weight:800}.revision-preview-heading{padding:20px 25px 15px;border-bottom:1px solid var(--line);background:#fafcfb}.revision-preview-heading h2{margin:0;color:var(--ink);font:700 19px/1.35 Georgia,Songti SC,serif}.revision-preview-content{padding:26px 28px 31px;background:var(--paper);color:#2f4740;font:16px/1.9 Georgia,"Noto Serif",serif;white-space:pre-wrap}.review-actions{position:-webkit-sticky;position:sticky;top:14px;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 18px;margin:0 0 20px;box-shadow:0 8px 20px #1f342f12}.review-actions .save-status{margin:0}.review-actions>div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:9px}.save-status{margin:14px 0 0;color:var(--muted);font-size:11px}.save-status.error{color:#af4c42}.ai-review-error{margin:-10px 0 16px}.ai-review-panel{margin:0 0 20px;padding:18px;border:1px solid #c7ddd3;background:#f8fcf9}.ai-review-loading{border-color:#d4e2db}.ai-review-spinner{flex:none;color:var(--green);animation:ai-review-spin .9s linear infinite}.ai-review-progress{margin:14px 0 0;color:#405851;font-size:13px}.ai-review-skeleton-scores{margin-bottom:13px}.ai-review-skeleton{display:block;min-height:11px;border-radius:3px;background:#dce9e2;animation:ai-review-pulse 1.2s ease-in-out infinite}.ai-review-skeleton-scores .ai-review-skeleton{min-height:37px}.ai-review-skeleton.medium{width:68%}.ai-review-skeleton.short{width:35%}.ai-review-skeleton-annotations{display:grid;grid-gap:8px;gap:8px}.ai-review-skeleton-annotation{display:grid;grid-gap:7px;gap:7px;padding:10px;border-left:3px solid #b9d4c7;background:#fff}.review-editing-fieldset{min-width:0;margin:0;padding:0;border:0}@keyframes ai-review-spin{to{transform:rotate(1turn)}}@keyframes ai-review-pulse{50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.ai-review-skeleton,.ai-review-spinner{animation:none}}.ai-review-heading{display:flex;align-items:start;justify-content:space-between;gap:14px}.ai-review-heading h2{margin:2px 0 0}.ai-review-heading small{color:var(--muted);font-size:11px}.ai-review-feedback-grid{display:grid;grid-gap:9px;gap:9px;margin-top:11px}.ai-word-count{margin:9px 0 0;color:#405851;font-size:12px}.ai-word-count.warning{color:#a95131;font-weight:800}.ai-task-alignment{margin-top:12px;padding:10px 11px;border:1px solid #c7ddd3;border-left:3px solid #4d9677;background:#fff}.ai-task-alignment.warning{border-color:#e2b793 #e2b793 #e2b793 #c8663f;background:#fff8f2}.ai-task-alignment>b{color:var(--green);font-size:12px}.ai-task-alignment.warning>b{color:#a95131}.ai-task-alignment-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.ai-task-alignment-tags span{padding:3px 7px;border-radius:99px;background:#eaf5ee;color:#287455;font-size:11px;font-weight:800}.ai-task-alignment.warning .ai-task-alignment-tags span{background:#fff0e6;color:#a95131}.ai-task-alignment p{margin:8px 0 0;color:#405851;font-size:13px;line-height:1.6;white-space:pre-wrap}.ai-task-alignment-reasons{display:grid;grid-gap:4px;gap:4px;margin-top:8px;color:#405851;font-size:12px;line-height:1.55}.ai-risk-notice{margin:10px 0 0;padding:9px 10px;border-left:3px solid #bd8b5c;background:#fff8f1;color:#6d432d;font-size:12px;line-height:1.6}.ai-risk-notice b{display:block;margin-bottom:3px;color:#a25b36}.ai-review-feedback-grid.bilingual,.ai-review-revisions.bilingual{grid-template-columns:repeat(2,minmax(0,1fr))}.ai-review-feedback-block{min-width:0;padding:10px 11px;border-left:3px solid #78a892;background:#fff}.ai-review-feedback-block b{color:var(--green);font-size:12px}.ai-review-feedback-block p{margin:5px 0 0;color:#405851;font-size:13px;white-space:pre-wrap}.ai-review-feedback-block.chinese{border-left-color:#bd8b5c}.ai-review-feedback-block.chinese b{color:#a25b36}.ai-review-details{margin-top:13px}.ai-review-details summary{cursor:pointer;color:var(--green);font-size:12px;font-weight:800}.ai-review-annotations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;grid-gap:9px;gap:9px;margin-top:8px}.ai-review-annotation{display:grid;min-width:0;grid-gap:3px;gap:3px;padding:9px 10px;border-left:3px solid #78a892;background:#fff;font-size:12px}.ai-review-annotation-heading{display:flex;align-items:center;gap:6px}.ai-review-annotation-number{display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--green);color:#fff;font-size:10px;font-weight:800}.ai-review-annotation b{color:var(--dark)}.ai-review-annotation-label{color:var(--muted);font-size:11px;font-weight:700}.ai-annotation-severity{width:-moz-fit-content;width:fit-content;padding:2px 6px;border-radius:2px;background:#edf2ef;color:#496058;font-size:10px;font-weight:800}.ai-annotation-severity.major{background:#fff0e6;color:#a95131}.ai-review-recommendation{display:grid;grid-gap:4px;gap:4px;margin-top:3px;padding:8px 9px;border-left:3px solid #3c8767;background:#eaf5ee}.ai-review-recommendation span{color:#287455;font-size:11px;font-weight:800}.ai-review-recommendation strong{color:#173c31;font-size:13px;font-weight:700;line-height:1.55;white-space:pre-wrap}.ai-review-annotation.chinese{border-left-color:#bd8b5c}.ai-review-annotation.chinese .ai-review-annotation-number{background:#a25b36}.ai-review-annotation.chinese .category-chip{background:#fff0e8;color:#a25b36}.ai-review-annotation.chinese .ai-review-recommendation{border-left-color:#bd8b5c;background:#fff1eb}.ai-review-annotation.chinese .ai-review-recommendation span{color:#a25b36}.ai-review-annotation.chinese .ai-review-recommendation strong{color:#693d27}.ai-review-revisions{display:grid;grid-gap:9px;gap:9px;margin-top:8px}.ai-review-revision{min-width:0;border:1px solid #dce5e0;border-left:3px solid #78a892;background:#fff}.ai-review-revision header{margin:0;padding:9px 10px 8px;border-bottom:1px solid #dce5e0;background:#f5faf7}.ai-review-revision b{color:var(--green);font-size:12px}.ai-review-revision p{margin:0;padding:9px 10px 10px;color:#405851;font-size:13px;line-height:1.7;white-space:pre-wrap}.ai-review-revision.chinese{border-left-color:#bd8b5c}.ai-review-revision.chinese header{border-bottom-color:#efddd0;background:#fff8f4}.ai-review-revision.chinese b{color:#a25b36}@media (max-width:680px){.ai-review-annotations,.ai-review-feedback-grid.bilingual,.ai-review-revisions.bilingual{grid-template-columns:1fr}}.ai-review-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.score-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:9px;gap:9px;margin:14px 0}.score-grid span{padding:9px;border:1px solid #dce5e0;border-radius:5px;background:#fafcfb;color:var(--green);font-size:11px;font-weight:800}.review-summary h3{margin:18px 0 6px}.review-summary p{color:#63736e;font-size:12px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left}td,th{padding:12px 16px;border-bottom:1px solid #edf0ee;font-size:12px;white-space:nowrap}th{background:#fafcfa;color:var(--muted);font-size:11px}.student-line{display:flex;align-items:center;gap:10px;padding:14px 20px;border-top:1px solid #edf0ee}.student-line .coral{background:#cf7769}.student-line .blue{background:#6484a6}.student-line p{margin:2px 0 0;color:var(--muted);font-size:12px}.score-selects{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:9px;gap:9px}.score-selects label{padding:9px;border:1px solid #dce5e0;border-radius:5px;background:#fafcfb;color:#667671;font-size:10px}.score-selects select{display:block;width:100%;margin-top:3px;border:0;outline:0;background:transparent;color:var(--green);font-size:16px;font-weight:800}.required-mark{color:#c45b4d;font-weight:800}.empty{display:grid;justify-items:center;grid-gap:7px;gap:7px;padding:34px 20px;color:var(--muted);text-align:center}.empty b{color:var(--ink)}.empty p{margin:0;font-size:12px}.toast{position:fixed;top:96px;left:50%;z-index:50;width:min(520px,calc(100vw - 32px));padding:12px 15px;border-radius:6px;background:#234e43;color:#fff;box-shadow:0 10px 28px #1f342f26;font-size:13px;text-align:center;transform:translateX(-50%)}@media (max-width:1000px){.sidebar{width:205px;flex-basis:205px}.stats{grid-template-columns:repeat(2,1fr)}.editor-layout,.language-review-section,.review-layout,.review-reference-content,.student-dashboard-grid,.two-column{grid-template-columns:1fr}.language-review-section .language-feedback,.review-form{position:static;max-height:none;overflow:visible}}@media (max-width:680px){.app-shell,.sidebar{display:block}.sidebar{width:auto;min-height:0;padding:13px 12px}.brand{margin:0 5px 10px}.role-label,.sidebar-bottom{display:none}.sidebar nav{display:flex;overflow:auto}.nav-item{width:auto;flex:0 0 auto;padding:0 9px}.topbar{height:58px;padding:0 16px}.topbar>div:first-child{display:none}.content{padding:24px 16px 45px}h1{font-size:26px}.stats{gap:9px}.stat{min-height:88px;padding:13px}.stat strong{font-size:23px}.assignment-row{padding:14px;grid-template-columns:43px minmax(0,1fr)}.assignment-row>.outline-button{grid-column:2;justify-self:start;margin-top:4px}.assignment-copy .assignment-preview{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.page-heading{align-items:stretch;flex-direction:column}.heading-actions{width:100%;justify-content:stretch}.heading-actions>button{flex:1 1}.group-overview{align-items:stretch;flex-direction:column;gap:8px}.group-overview-heading{display:flex;align-items:baseline;gap:8px;padding:0}.list-toolbar{align-items:stretch;flex-direction:column}.search-field,.toolbar-actions,.toolbar-actions select{width:100%}.toolbar-actions{margin-left:0}.toolbar-selection{align-items:stretch;flex-wrap:wrap}.student-focus-content{grid-template-columns:auto minmax(0,1fr)}.student-focus-content>button{grid-column:1/-1;width:100%}.toolbar-selection .primary-button,.toolbar-selection select{flex:1 1;min-width:132px}.review-actions{align-items:stretch;flex-direction:column}.review-actions>div{width:100%}.review-actions>div>button{flex:1 1}.task-analysis-grid{grid-template-columns:1fr}.task-analysis-grid>div+div{border-top:1px solid var(--line);border-left:0}.outline-button{padding:8px 10px}.editor-layout,.review-layout{gap:14px}.essay-head{padding:19px}.essay-panel>textarea{min-height:390px;padding:20px;font-size:15px}.review-form,.review-summary,.task-info{padding:16px}.page-heading{margin-bottom:22px}.daily-writing-note{grid-template-columns:24px minmax(0,1fr);gap:10px;min-height:0;margin:-4px 0 20px;padding:12px 14px}.daily-writing-note>svg{width:18px;height:18px}.daily-writing-note p{font-size:14px}.role-switch button{padding:5px 7px}}.student-focus-count{display:block;margin-top:3px;color:#87938e;font-size:11px;font-weight:500}.student-next-tasks{border-top:1px solid #edf1ef}.student-next-heading{display:flex;align-items:center;justify-content:space-between;min-height:37px;padding:0 20px;color:#73817a;font-size:11px;font-weight:750}.student-next-heading .text-button{min-height:auto;padding:3px 0;font-size:11px}.student-next-task{display:grid;width:100%;grid-template-columns:28px minmax(0,1fr) 16px;align-items:center;grid-gap:9px;gap:9px;min-height:48px;padding:7px 20px;border:0;border-top:1px solid #f0f3f1;background:#fff;color:inherit;text-align:left}.student-next-task:hover{background:#f7faf8}.student-next-task.overdue{background:#fffaf7;box-shadow:inset 3px 0 #d98254}.student-next-task .task-badge{width:28px;height:28px;border-radius:5px;font-size:8px}.student-next-task>span:nth-child(2){min-width:0}.student-next-task b,.student-next-task small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.student-next-task b{color:var(--ink);font-size:11px;line-height:1.35}.student-next-task small{margin-top:2px;color:#7c8983;font-size:10px}.student-next-task small.overdue{color:#ad573c;font-weight:750}.student-next-task>svg{color:#7d8e86}@media (max-width:680px){.student-focus-panel .panel-heading{align-items:flex-start}.student-next-heading,.student-next-task{padding-inline:16px}}.student-assignment-tabs{display:flex;gap:4px;padding:8px 20px;border-top:1px solid #edf1ef;border-bottom:1px solid #edf1ef;background:#fafcfb}.student-assignment-item{display:grid;grid-template-columns:43px minmax(0,1fr) auto;align-items:center;grid-gap:13px;gap:13px;min-height:76px;padding:14px 20px;border-bottom:1px solid #edf1ef;background:#fff}.student-assignment-item.overdue{box-shadow:inset 3px 0 #d98254;background:#fffaf7}.student-assignment-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px}.student-assignment-item b{display:block;overflow:hidden;margin-top:5px;color:var(--ink);font-size:13px;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.student-assignment-item .outline-button{min-height:32px;padding:5px 9px;font-size:11px}.student-assignment-item .overdue-action{border-color:#efc9b8;background:#fff7f2;color:#a9573d}@media (max-width:680px){.student-assignment-tabs{overflow-x:auto;padding-inline:14px}.student-assignment-tabs .profile-tab{flex:0 0 auto}.student-assignment-item{grid-template-columns:38px minmax(0,1fr);gap:10px;padding-inline:14px}.student-assignment-item .task-badge{width:38px;height:38px}.student-assignment-item .outline-button{grid-column:2;justify-self:start}}.student-profile-backlinks{display:flex;align-items:center;gap:12px;margin-bottom:12px}.student-profile-backlinks .text-button{min-height:auto;padding:3px 0;color:#75827c}.student-profile-stats{grid-template-columns:repeat(5,minmax(0,1fr))}.student-profile-stats .stat{min-height:116px}.student-profile-stats .stat strong{font-size:25px}.student-profile-stats .stat-detail{background:#fff0e7;color:#ae573b}.student-profile-panel{overflow:hidden}.student-profile-heading{align-items:center}.student-profile-heading h2{margin:0}.student-profile-heading>div>span{display:block;margin-top:4px;color:#84918b;font-size:11px}.profile-tabs{display:flex;gap:4px;padding:8px 20px;border-top:1px solid #edf1ef;border-bottom:1px solid #edf1ef;background:#fafcfb}.profile-tab{min-height:28px;padding:0 9px;border:1px solid transparent;border-radius:4px;background:transparent;color:#74817b;font-size:11px;font-weight:750}.profile-tab b{display:inline-grid;min-width:17px;height:17px;place-items:center;margin-left:3px;border-radius:9px;background:#e5ece8;color:#6b8177;font-size:10px}.profile-tab.active{border-color:#d0dfd8;background:#fff;color:var(--green);box-shadow:0 1px 3px rgb(24 73 57/10%)}.profile-assignment{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:14px;gap:14px;align-items:center;padding:14px 20px;border-bottom:1px solid #edf1ef;background:#fff}.profile-assignment.overdue{box-shadow:inset 3px 0 #d98254;background:#fffaf7}.profile-assignment-main{display:grid;grid-template-columns:40px minmax(0,1fr);grid-gap:11px;gap:11px;align-items:center}.profile-assignment-main .task-badge{width:40px;height:40px;font-size:9px}.profile-assignment-main b{display:block;overflow:hidden;margin-top:5px;color:var(--ink);font-size:13px;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.profile-assignment-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px}.profile-progress{display:inline-flex;align-items:center;min-height:18px;padding:1px 5px;border-radius:3px;background:#edf1ef;color:#6d7f77;font-size:10px;font-weight:700}.profile-progress.progress{background:#fff0d8;color:#916d1f}.profile-assignment-actions{display:flex;align-items:center;gap:7px}.profile-assignment-actions .outline-button,.profile-assignment-actions .text-button{min-height:30px;padding:4px 8px;font-size:11px}@media (max-width:1180px){.student-profile-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:680px){.student-profile-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.student-profile-heading{align-items:flex-start;flex-direction:column}.profile-tabs{overflow-x:auto;padding-inline:14px}.profile-tab{flex:0 0 auto}.profile-assignment{grid-template-columns:1fr;gap:10px;padding-inline:14px}.profile-assignment-actions{justify-content:flex-start}}.role-chip{display:inline-flex;align-items:center;min-height:27px;padding:0 9px;border:1px solid #d6e2dd;border-radius:5px;background:#f4f8f5;color:var(--green);font-size:12px;font-weight:800}.notification-wrap,.profile-wrap{position:relative}.notification-menu{position:absolute;top:42px;right:0;z-index:10;width:min(360px,calc(100vw - 32px));overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 12px 30px #1f342f24}.notification-menu header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border-bottom:1px solid #edf0ee}.notification-menu header>div{display:flex;align-items:baseline;gap:7px}.notification-menu h2{font-size:14px}.notification-menu header span{color:var(--muted);font-size:11px}.notification-menu .text-button{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.notification-list{max-height:min(440px,calc(100vh - 150px));overflow-y:auto}.notification-item{position:relative;display:flex;width:100%;gap:9px;padding:13px 14px;border:0;border-bottom:1px solid #f0f3f1;background:transparent;color:var(--ink);text-align:left}.notification-item:hover{background:#f5f9f6}.notification-item.unread{background:#f1f8f4}.notification-item-dot{flex:0 0 auto;width:7px;height:7px;margin-top:6px;border-radius:50%;background:transparent}.notification-item.unread .notification-item-dot{background:var(--green)}.notification-item-copy{display:grid;min-width:0;grid-gap:3px;gap:3px}.notification-item-copy b,.notification-item-copy span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notification-item-copy b{font-size:12px}.notification-empty,.notification-item-copy small,.notification-item-copy span{color:var(--muted);font-size:11px}.notification-empty{margin:0;padding:24px 14px;text-align:center}.profile-trigger{border:0;cursor:pointer}.avatar{overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.account-menu{position:absolute;top:42px;right:0;z-index:10;width:210px;border:1px solid var(--line);border-radius:7px;background:var(--paper);box-shadow:0 12px 30px #1f342f24}.account-menu-name{padding:12px 13px;border-bottom:1px solid #edf0ee}.account-menu-name b,.account-menu-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-menu-name small{margin-top:2px;color:var(--muted);font-size:11px}.account-menu button{display:flex;align-items:center;gap:9px;width:100%;padding:10px 13px;border:0;background:transparent;color:var(--ink);text-align:left}.account-menu button:hover{background:#f1f6f3}.auth-page{display:grid;min-height:100vh;place-items:center;padding:24px;background:#edf2ef}.auth-panel{width:min(100%,430px);padding:30px;border:1px solid var(--line);border-radius:7px;background:var(--paper);box-shadow:0 8px 28px #1f342f12}.auth-brand{margin:0 0 35px}.auth-heading h1{margin-bottom:7px}.auth-heading p{margin-bottom:22px;color:var(--muted)}.auth-mode{margin-bottom:19px}.auth-mode button{flex:1 1}.auth-form{display:grid;grid-gap:14px;gap:14px}.auth-form label,.profile-label{display:grid;grid-gap:6px;gap:6px;color:#405550;font-size:12px;font-weight:700}.auth-form input,.profile-label input,.profile-label select{width:100%;min-height:39px;padding:8px 10px;border:1px solid #d7e1dd;border-radius:5px;outline-color:var(--green);background:#fcfdfc;color:var(--ink)}.profile-label select{padding-right:30px}.auth-form label .role-switch{width:max-content}.auth-submit{min-height:40px;margin-top:4px}.primary-button:disabled{cursor:wait;opacity:.65}.form-error{margin:0;color:#b54f46;font-size:12px}.modal-backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:16px;background:rgb(24 61 53/58%)}.profile-dialog{width:min(100%,420px);padding:22px;border:1px solid var(--line);border-radius:7px;background:var(--paper);box-shadow:0 14px 38px #173a302e}.assignment-dialog{display:flex;flex-direction:column;width:min(100%,560px);max-height:calc(100dvh - 32px);padding:0;overflow:hidden;overscroll-behavior:contain;border-radius:10px;box-shadow:0 24px 58px rgb(18 47 40/35%)}@media (prefers-reduced-motion:no-preference){.assignment-dialog{animation:assignment-dialog-enter .18s ease-out}}@keyframes assignment-dialog-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.assignment-dialog-body{display:grid;flex:1 1 auto;grid-gap:20px;gap:20px;min-height:0;padding:4px 28px 28px;overflow-y:auto;overscroll-behavior:contain}.assignment-dialog .profile-label{gap:8px;margin:0;color:#334943;font-size:14px;font-weight:600}.assignment-dialog .field-label{display:flex;align-items:baseline;gap:4px}.assignment-dialog .field-label small{color:var(--muted);font-size:12px;font-weight:500}:root{--ink:#222222;--body:#555555;--muted:#777777;--hint:#999999;--line:#dfe6e2;--paper:#ffffff;--green:#1e6a4f;--green-hover:#175a42;--green-soft:#e6f4ee;--dark:#173d32;--soft:#f5f8f6;--warning-soft:#fff2e0;--danger-soft:#fdeeee}body{background:#f4f7f5;color:var(--body)}h1{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif;font-size:24px;font-weight:750}h1,h2{color:var(--ink)}h2{font-size:16px;font-weight:650}.content{max-width:1440px;padding:32px clamp(24px,4vw,56px) 64px}.page-heading{margin-bottom:24px}.muted,.page-heading p{color:var(--hint);font-size:12px}.panel{border-radius:8px;box-shadow:0 1px 4px rgb(0 0 0/6%)}.outline-button,.primary-button{min-height:40px;border-radius:8px;gap:8px;padding:8px 14px;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease,transform .15s ease}.primary-button{background:var(--green)}.primary-button:hover{background:var(--green-hover);box-shadow:0 2px 6px rgb(30 106 79/22%)}.outline-button{border-color:#bcd2c8;background:var(--green-soft);color:var(--green)}.outline-button:hover{border-color:var(--green);background:#d8ecdf}.icon-button:active,.outline-button:active,.primary-button:active{transform:scale(.98)}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgb(30 106 79/24%);outline-offset:2px}.sidebar{padding:24px 16px 18px}.nav-item{position:relative;gap:8px;border-radius:8px;transition:background .15s ease,color .15s ease}.nav-item.active:before{position:absolute;left:-16px;width:4px;height:24px;border-radius:0 4px 4px 0;background:#4ec089;content:""}.nav-item.active{background:rgb(230 244 238/16%)}.sidebar-bottom{width:100%;border:0;border-top:1px solid rgb(255 255 255/18%);border-radius:0;background:transparent;color:inherit;text-align:left}.sidebar-bottom:hover{background:rgb(255 255 255/7%)}.topbar{background:rgb(255 255 255/92%)}.icon-button{border-radius:8px;transition:background .15s ease,color .15s ease,transform .15s ease}.icon-button:hover{background:#edf4f0;color:var(--green)}.admin-page{min-height:100vh;background:#f4f7f5}.admin-header{display:flex;align-items:center;justify-content:space-between;min-height:68px;padding:0 clamp(20px,4vw,56px);border-bottom:1px solid var(--line);background:var(--paper)}.admin-header .brand{margin:0;color:var(--ink)}.admin-account,.admin-summary{display:flex;align-items:center;gap:12px}.admin-account{color:var(--muted);font-size:13px}.admin-layout{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:24px;gap:24px;max-width:1320px;margin:0 auto;padding:38px clamp(20px,4vw,56px) 64px}.admin-form,.admin-intro,.admin-section-heading{display:flex;align-items:center;justify-content:space-between;gap:20px}.admin-kicker{margin-bottom:5px;color:var(--green);font-size:12px;font-weight:800}.admin-intro h1{margin-bottom:7px}.admin-intro p:not(.admin-kicker),.admin-section-heading p{margin-bottom:0;color:var(--muted);font-size:13px}.admin-summary span{display:inline-flex;align-items:center;gap:7px;color:var(--green);font-size:13px;font-weight:750}.admin-create,.admin-users{padding:24px;border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 1px 4px rgb(0 0 0/5%)}.admin-section-heading{margin-bottom:20px}.admin-form{align-items:end;justify-content:start}.admin-form label,.admin-reset-dialog label{display:grid;flex:1 1 180px;grid-gap:6px;gap:6px;color:#334943;font-size:12px;font-weight:700}.admin-filter select,.admin-form input,.admin-reset-dialog input{min-height:40px;padding:8px 10px;border:1px solid #d7e1dd;border-radius:6px;outline-color:var(--green);background:#fcfdfc;color:var(--ink)}.admin-form .primary-button{flex:0 0 auto}.admin-filter{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.admin-table-wrap{overflow-x:auto}.admin-table{width:100%;min-width:1050px;border-collapse:collapse;font-size:13px}.admin-table td,.admin-table th{padding:13px 10px;border-top:1px solid #edf1ef;text-align:left;vertical-align:middle}.admin-table th{border-top:0;color:var(--muted);font-size:11px;font-weight:700}.admin-table td:first-child b,.admin-table td:first-child small{display:block}.admin-activity{display:grid;min-width:180px;grid-gap:2px;gap:2px}.admin-activity b{color:#334943;font-size:12px}.admin-activity small,.admin-activity-empty{color:var(--muted);font-size:11px}.admin-table td:first-child small{margin-top:2px;color:var(--muted);font-size:11px}.admin-status{display:inline-flex;padding:3px 7px;border-radius:4px;background:#e7f4ed;color:#1e6a4f;font-size:11px;font-weight:750}.admin-status.reset{background:#fff1dc;color:#9b6815}.admin-empty{margin:24px 0 0;color:var(--muted);font-size:13px;text-align:center}.admin-toast.error{background:#8f4339}.dialog-backdrop{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:16px;background:rgb(24 61 53/58%)}.admin-reset-dialog{display:grid;grid-gap:18px;gap:18px;width:min(100%,420px)}.admin-reset-dialog,.submission-confirm{padding:24px;border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 14px 38px #173a302e}.submission-confirm{width:min(100%,400px)}.confirmation-dialog{width:min(100%,420px);padding:24px;border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 14px 38px #173a302e}.confirmation-dialog h2{margin-bottom:8px}.confirmation-dialog p{margin-bottom:20px;color:var(--muted);font-size:13px}.confirmation-dialog .dialog-actions{justify-content:flex-end}.submission-confirm h2{margin-bottom:8px}.submission-confirm p{margin-bottom:20px;color:var(--muted);font-size:13px}.submission-confirm .dialog-actions{justify-content:flex-end}.admin-reset-dialog .dialog-heading p{margin:5px 0 0}.secondary-button{min-height:40px;padding:8px 14px;border:1px solid #cddbd5;border-radius:8px;background:#fff;color:var(--green);font-size:12px;font-weight:800}@media (max-width:760px){.admin-form,.admin-intro,.admin-section-heading{align-items:stretch;flex-direction:column}.admin-form .primary-button,.admin-form label{width:100%}.admin-summary{justify-content:space-between}}.daily-writing-note{min-height:94px;margin:0 0 24px;padding:20px;border-color:#cde2d7;border-radius:8px;background:#f4faf6;box-shadow:0 1px 4px rgb(0 0 0/4%)}.daily-writing-note blockquote>span small,.daily-writing-note p+p{color:var(--hint);font-size:12px}.stats{gap:16px;margin-bottom:24px}.stat{display:flex;gap:13px;min-height:124px;padding:20px;border-radius:8px;box-shadow:0 1px 4px rgb(0 0 0/6%)}.stat,.stat-button{align-items:flex-start}.stat-button:hover{border-color:#8cb9a5;box-shadow:0 4px 12px rgb(31 75 57/10%);transform:translateY(-1px)}.stat-icon{position:relative;display:block;flex:0 0 auto;width:36px;height:36px;border-radius:8px;background:var(--green-soft);color:var(--green)}.stat-icon svg{position:absolute;top:50%;left:50%;display:block;width:19px;height:19px;transform:translate(-50%,-50%) translate(1px,1px)}.stat-copy{min-width:0}.stat strong{margin:4px 0 1px;color:var(--ink);font-family:Inter,ui-sans-serif,sans-serif}.stat small{color:var(--hint)}.stat-detail{display:block;margin-top:5px;color:#b96535;font-size:11px;font-style:normal;font-weight:700}.dashboard-stats{grid-template-columns:repeat(5,minmax(0,1fr))}.dashboard-follow-up-grid{grid-template-columns:minmax(0,1.65fr) minmax(290px,.72fr)}.follow-up-panel{overflow:hidden}.follow-up-heading{align-items:flex-start}.todo-tabs,.view-switch{display:inline-flex;align-items:center;gap:3px;padding:3px;border:1px solid #d7e1dc;border-radius:6px;background:#f4f8f5}.todo-tab,.view-switch button{min-height:28px;border:0;border-radius:4px;background:transparent;color:#61736b;font-size:11px;font-weight:750}.todo-tab{padding:0 8px}.todo-tab b{display:inline-grid;min-width:17px;height:17px;place-items:center;margin-left:3px;border-radius:9px;background:#e1eae5;color:#577066;font-size:10px}.todo-tab.active,.view-switch button.active{background:#fff;color:var(--green);box-shadow:0 1px 3px rgb(24 73 57/14%)}.todo-tab.overdue b{background:#f9e2da;color:#a84d37}.todo-tab.review{color:#176b4f;background:#eaf6ef}.todo-tab.review b{background:#bde4cd;color:#0f5b41}.todo-tab.review.active{border-color:#76bb91;background:#dff3e7;color:#0d5940}.todo-tab.overdue.active{color:#aa4f37}.follow-up-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 20px;border-bottom:1px solid #edf1ef;color:var(--muted);font-size:11px}.view-switch button{padding:0 8px}.follow-up-batch{border-bottom:1px solid #edf1ef}.follow-up-batch.overdue{box-shadow:inset 3px 0 #d98254}.follow-up-batch-summary{display:grid;grid-template-columns:minmax(0,1fr) auto 32px;align-items:center;grid-gap:13px;gap:13px;min-height:76px;padding:13px 16px 13px 20px}.follow-up-batch-summary>div:first-child{display:flex;min-width:0;align-items:center;gap:11px}.follow-up-batch-summary .task-badge{width:38px;height:38px;font-size:9px}.follow-up-batch-summary b,.follow-up-student-row b,.student-follow-up b{display:block;overflow:hidden;color:var(--ink);font-size:13px;line-height:1.45;text-overflow:ellipsis;white-space:nowrap}.deadline{display:block;margin-top:3px;color:var(--muted);font-size:11px}.deadline.overdue{color:#ae573b;font-weight:750}.submission-count{min-width:84px;text-align:right}.submission-count b,.submission-count span{display:block;font-size:11px}.submission-count span{margin-top:3px;color:var(--muted)}.follow-up-batch-details{padding:0 20px 15px;background:#fbfcfb}.batch-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;color:var(--muted);font-size:11px}.follow-up-student-row{display:grid;grid-template-columns:minmax(120px,.8fr) auto;grid-gap:8px 14px;gap:8px 14px;padding:12px;border:1px solid #e2eae6;border-radius:6px;background:#fff}.follow-up-student-row+.follow-up-student-row{margin-top:8px}.follow-up-student-row small{display:block;margin-top:4px;color:var(--muted);font-size:10px}.deadline-editor,.follow-up-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}.deadline-editor .text-button,.follow-up-actions .outline-button,.follow-up-actions .text-button{min-height:28px;padding:4px 7px;font-size:10px}.follow-up-actions .outline-button:disabled{cursor:not-allowed;opacity:.5}.deadline-editor{grid-column:1/-1;justify-content:flex-start}.deadline-editor input{min-height:30px;border:1px solid #d4dfd9;border-radius:5px;padding:3px 7px;color:#52665e;font:11px Inter,ui-sans-serif,sans-serif}.student-follow-up{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;grid-gap:12px;gap:12px;padding:16px 20px;border-bottom:1px solid #edf1ef}.student-follow-up .student-avatar{flex:0 0 32px;width:32px;height:32px}.student-follow-up .student-task>div>span,.student-follow-up p{display:block;margin:3px 0 0;color:var(--muted);font-size:11px;line-height:1.45}@media (max-width:1180px){.dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:860px){.dashboard-follow-up-grid{grid-template-columns:1fr}}.two-column{gap:24px;align-items:stretch}.two-column>.panel{min-height:324px}.panel-heading{min-height:64px;padding:20px 20px 16px}.empty{min-height:230px;align-content:center;padding:32px 20px}.empty>svg{width:32px;height:32px;color:var(--green)}.student-line{width:100%;gap:12px;border:0;border-top:1px solid #edf1ef;background:transparent;color:var(--ink);text-align:left;transition:background .15s ease}.student-line:hover{background:#f5f8f6}.student-line-link{margin-left:auto;color:var(--green);font-size:12px;font-weight:700}.group-overview{margin:0 0 16px;padding:16px;border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 1px 4px rgb(0 0 0/4%)}.group-filter{min-height:32px;border-radius:8px}.group-filter.active{border-color:var(--green);background:var(--green);color:#fff}.group-filter.active b{background:rgb(255 255 255/18%);color:#fff}.list-toolbar{min-height:72px;margin:0 0 16px;padding:16px;border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 1px 4px rgb(0 0 0/4%)}.search-field{width:min(75%,760px);border-radius:8px}.search-field:focus-within{border-color:var(--green);box-shadow:0 0 0 3px rgb(30 106 79/14%)}.list-toolbar select,.student-picker select{min-width:132px;border-radius:8px}.toolbar-selection{padding-top:12px}.danger-button{border-color:#efc2bf;background:var(--danger-soft);color:#ae443c}.danger-button:hover{border-color:#d86d65;background:#f8dddb}.table-wrap{box-shadow:0 1px 4px rgb(0 0 0/6%)}tbody tr:nth-child(2n){background:#fafcfb}tbody tr:hover{background:#eff7f2}td,th{padding:14px 16px}th{background:#f2f5f3;color:#66716d}.selection-cell{width:48px;padding:0 12px}.selection-cell label{display:grid;min-height:48px;place-items:center;cursor:pointer}.question-select input,.selection-cell input{width:17px;height:17px;margin:0;accent-color:var(--green)}.text-button{color:var(--ink);font-weight:600}.text-button:hover{color:var(--green);text-decoration:underline}.manage-button{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 8px;border:1px solid #c8d9d1;border-radius:8px;background:#fff;color:var(--green);font-size:12px;font-weight:700}.manage-button:hover{border-color:var(--green);background:var(--green-soft)}.status,.week-chip{min-height:24px;border-radius:999px;padding:0 9px}.status.pending{background:var(--warning-soft);color:#9a6014}.status.reviewed{background:var(--green-soft);color:var(--green)}.question-bank-item{grid-template-columns:28px minmax(0,1fr) auto;grid-gap:10px;gap:10px;padding:20px;transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.question-bank-item:hover{border-color:#b8d2c6;box-shadow:0 4px 12px rgb(31 75 57/9%);transform:translateY(-1px)}.question-select{padding-top:3px}.question-bank-item h2{margin:4px 0 7px}.question-bank-item>div>p:not(.language-kicker){max-width:88ch;margin:0 0 12px;color:var(--body);font-size:13px;line-height:1.65}.question-bank-actions .icon-button{width:36px;height:36px}.question-bank-actions .danger-icon:hover{background:var(--danger-soft);color:#b34039}.history-toolbar .search-field{width:min(75%,760px)}.history-list{display:grid;grid-gap:12px;gap:12px}.history-list .assignment-row{border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 1px 4px rgb(0 0 0/6%);transition:border-color .15s ease,box-shadow .15s ease,transform .15s ease}.history-list .assignment-row:hover{border-color:#b8d2c6;box-shadow:0 4px 12px rgb(31 75 57/9%);transform:translateY(-1px)}.history-list .empty{border:1px solid var(--line);border-radius:8px;background:var(--paper)}.assignment-history-toolbar{align-items:center;justify-content:space-between}.assignment-history-toolbar .search-field{width:min(62%,620px)}.history-range{display:inline-flex;padding:3px;border:1px solid #cfddd7;border-radius:8px;background:#f5f8f6}.history-range button{min-height:30px;border:0;border-radius:5px;padding:4px 10px;background:transparent;color:var(--muted);font-size:12px;font-weight:700}.history-range button.active{background:var(--paper);color:var(--green);box-shadow:0 1px 3px rgb(26 62 51/14%)}.assignment-history-list{display:grid;grid-gap:12px;gap:12px}.assignment-history-item{display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,34%);border:1px solid var(--line);border-radius:8px;background:var(--paper);box-shadow:0 1px 4px rgb(0 0 0/6%);overflow:hidden}.assignment-history-main{padding:20px}.assignment-history-details,.assignment-history-meta{display:flex;align-items:center;flex-wrap:wrap;gap:9px;color:var(--muted);font-size:12px}.assignment-history-main h2{margin:13px 0 6px;font-size:17px}.assignment-history-main>p{display:-webkit-box;margin:0 0 15px;overflow:hidden;color:#53645f;font-size:13px;line-height:1.6;-webkit-box-orient:vertical;-webkit-line-clamp:2}.assignment-history-details{gap:16px}.assignment-history-details span{display:inline-flex;align-items:center;gap:5px}.assignment-history-recipients{border-left:1px solid var(--line);background:#f8faf9}.assignment-history-recipients>span{display:block;padding:13px 16px 8px;color:var(--muted);font-size:12px;font-weight:700}.assignment-history-recipient{display:grid;grid-template-columns:minmax(0,1fr) auto 16px;align-items:center;width:100%;min-height:48px;grid-gap:8px;gap:8px;border:0;border-top:1px solid #e4ebe7;padding:7px 15px;background:transparent;color:var(--ink);text-align:left}.assignment-history-recipient:hover{background:#eef6f1}.assignment-history-recipient>span:first-child{min-width:0}.assignment-history-recipient b,.assignment-history-recipient small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assignment-history-recipient small{color:var(--muted);font-size:11px}.assignment-history-recipient .status{min-height:22px;padding:0 7px;font-size:11px}.assignment-history-loading{padding:34px;color:var(--muted);text-align:center}.account-menu,.profile-dialog{border-radius:8px;box-shadow:0 4px 16px rgb(0 0 0/12%)}@media (min-width:681px){body{overflow:hidden}.app-shell,.sidebar{height:100dvh;min-height:0}.sidebar{overflow-y:auto}.main{display:flex;min-height:0;flex-direction:column;overflow:hidden}.topbar{position:relative;z-index:5;flex:0 0 75px}.content-scroll{flex:1 1 auto;min-height:0;overflow-x:hidden;overflow-y:scroll;overscroll-behavior:contain}}@media (max-width:680px){body{overflow:auto}.content-scroll{overflow:visible}.content{padding:24px 16px 48px}.nav-item.active:before{left:0}.stats{gap:10px}.stat{min-height:104px;padding:14px}.stat-icon{width:30px;height:30px}.group-overview,.list-toolbar{padding:12px}.assignment-history-toolbar .search-field,.history-toolbar .search-field,.search-field{width:100%}.assignment-history-toolbar{align-items:stretch}.history-range{width:100%}.history-range button{flex:1 1}.assignment-history-item{grid-template-columns:1fr}.assignment-history-recipients{border-top:1px solid var(--line);border-left:0}.question-bank-item{grid-template-columns:24px minmax(0,1fr);padding:16px}.question-bank-actions{grid-column:2}.student-line-link{display:none}}.assignment-dialog .profile-label input:not([type=file]),.assignment-dialog .profile-label select,.assignment-dialog .profile-label textarea{width:100%;min-height:40px;padding:9px 11px;border:1px solid #cddbd5;border-radius:6px;outline:0;background:#fff;color:var(--ink);font-size:14px;transition:border-color .16s ease,box-shadow .16s ease,background .16s ease}.assignment-dialog .profile-label textarea{min-height:78px;resize:vertical;line-height:1.55}.assignment-dialog .profile-label input:not([type=file]):hover,.assignment-dialog .profile-label select:hover,.assignment-dialog .profile-label textarea:hover{border-color:#9db8ae;background:#fcfdfc}.assignment-dialog .profile-label input:not([type=file]):focus,.assignment-dialog .profile-label select:focus,.assignment-dialog .profile-label textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgb(39 107 88/13%)}.assignment-dialog .profile-label input[type=file]{font-size:13px}.assignment-dialog .dialog-actions{flex:0 0 auto;min-height:76px;margin:0;padding:18px 28px;border-top:1px solid var(--line);background:var(--paper)}.dialog-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.assignment-dialog .dialog-heading{flex:0 0 auto;padding:28px 28px 20px}.dialog-heading h2{margin:0 0 4px}.assignment-dialog .dialog-heading h2{margin-bottom:8px;font-size:18px}.dialog-heading p{margin:0;color:var(--muted);font-size:12px}.assignment-dialog .dialog-heading p{color:#61736d;font-size:13px}.dialog-close{display:grid;flex:0 0 auto;place-items:center;width:32px;height:32px;border-radius:50%;transition:background .16s ease,color .16s ease}.dialog-close:hover{background:#edf2ef;color:var(--dark)}.avatar-editor{display:flex;align-items:center;gap:10px;margin:22px 0}.profile-preview{width:54px;height:54px;font-size:15px}.file-button{position:relative}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.profile-label{margin-top:7px}.dialog-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.assignment-dialog .dialog-actions .outline-button,.assignment-dialog .dialog-actions .primary-button{min-width:100px;min-height:40px;border-radius:6px;font-size:14px}.assignment-dialog .dialog-actions .outline-button:hover{background:#f2f6f3}.assignment-dialog .dialog-actions .primary-button{background:var(--green);color:#fff}.assignment-dialog .dialog-actions .primary-button:hover:not(:disabled){background:#1f5a49}.assignment-dialog .dialog-actions .primary-button:disabled{cursor:not-allowed;background:#a9bbb4;color:#eff5f1;opacity:1}.student-remove-section,.student-security-section{display:grid;grid-gap:10px;gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.student-remove-section>div,.student-security-section>div{display:grid;grid-gap:2px;gap:2px}.student-remove-section b,.student-security-section b{color:var(--ink);font-size:12px}.student-remove-section p,.student-security-section p{margin:0;color:var(--muted);font-size:11px}.danger-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;justify-self:start;min-height:40px;padding:8px 12px;border:1px solid #e1b9b4;border-radius:5px;background:#fffafa;font-size:12px;font-weight:800}.task-image{display:block;width:min(100%,680px);max-height:360px;margin-top:18px;border:1px solid var(--line);border-radius:5px;object-fit:contain;background:#fff}.bilingual-editor{display:grid;grid-template-columns:minmax(0,1fr)}.writing-pane{display:grid;min-width:0}.writing-pane+.writing-pane{border-top:1px solid var(--line)}.writing-pane>span{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 20px 8px;border-bottom:1px solid var(--line);background:#fafcfa;color:var(--green);font-size:12px;font-weight:800}.writing-pane>span small{color:var(--muted);font-size:11px;font-weight:600}.word-progress.below-target{color:#a95131;font-weight:800}.admin-filters{display:flex;align-items:center;gap:10px}.admin-filters .search-field{width:min(100%,260px)}@media (max-width:680px){.admin-filters{width:100%;flex-wrap:wrap}.admin-filters .search-field{flex:1 1 100%}}.writing-pane textarea{width:100%;min-height:330px;resize:vertical;padding:22px;border:0;outline:0;background:var(--paper);color:#314640;font:16px/1.9 Georgia,"Noto Serif",serif}.checkbox-label{display:flex;align-items:flex-start;gap:10px;margin:0;padding:12px;border:1px solid #d5e3dd;border-radius:8px;background:#f7f8fa;color:#405550;font-size:12px}.checkbox-label input{width:16px;height:16px;margin:1px 0 0;accent-color:var(--green)}.checkbox-label span{display:grid;grid-gap:2px;gap:2px}.checkbox-label small{color:var(--muted);font-size:12px}.writing-guide{margin-top:15px;padding:12px;border-left:3px solid var(--yellow);background:#fff8e7}.writing-guide h3{margin:0 0 5px;color:var(--dark);font-size:12px}.writing-guide p{margin:0;color:#586962;font-size:12px;white-space:pre-line}.analysis-panel{padding-bottom:14px}.skill-row{display:grid;grid-template-columns:100px minmax(0,1fr) 32px;align-items:center;grid-gap:12px;gap:12px;padding:10px 20px;font-size:12px}.skill-row>div{height:8px;overflow:hidden;border-radius:2px;background:#e5ece8}.skill-row i{display:block;height:100%;background:var(--green)}.skill-row b{color:var(--green);text-align:right}.analysis-notice{margin-bottom:16px;padding:10px 13px;border-left:3px solid var(--yellow);background:#fff8e7;color:#70603a;font-size:12px}.trend-row{display:grid;grid-template-columns:100px minmax(0,1fr) 32px;align-items:center;grid-gap:12px;gap:12px;min-height:70px;padding:9px 20px;font-size:12px}.trend-points{display:flex;align-items:flex-end;gap:5px;height:48px;padding:0 3px;border-bottom:1px solid #dce5e0}.trend-points i{min-width:8px;flex:1 1;border-radius:3px 3px 0 0;background:#76a990}.trend-row b{color:var(--green);text-align:right}.task-analysis{margin-top:20px}.task-analysis-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.task-analysis-grid>div{display:grid;grid-gap:4px;gap:4px;padding:17px 20px}.task-analysis-grid>div+div{border-left:1px solid var(--line)}.task-analysis-grid strong{color:var(--green);font:700 24px Georgia,serif}.task-analysis-grid span{color:var(--muted);font-size:11px}.notebook-summary{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.notebook-filter{border:1px solid #cddbd5;border-radius:5px;padding:6px 9px;background:var(--paper);color:#526660;font-size:12px;font-weight:700}.notebook-filter.active{border-color:var(--green);background:#e7f3ed;color:var(--green)}.notebook-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:14px;gap:14px}.question-bank-list{display:grid;grid-gap:12px;gap:12px}.question-bank-tabs{display:flex;gap:18px;margin:0 0 18px;border-bottom:1px solid #dbe5df}.question-bank-tabs button{padding:0 2px 10px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font-size:14px;font-weight:700;cursor:pointer}.question-bank-tabs button.active{border-bottom-color:var(--green);color:var(--green)}.official-library-intro{display:flex;align-items:flex-start;gap:12px;margin-bottom:18px;padding:15px 16px;border:1px solid #cfe4d7;border-left:3px solid var(--green);background:#f4faf6;color:var(--green)}.official-library-intro h2{margin:0 0 3px;color:var(--ink);font-size:15px}.official-library-intro p{margin:0;color:var(--muted);font-size:13px;line-height:1.55}.official-library-toolbar{align-items:center}.official-library-filters{flex-wrap:wrap}.official-question-item{min-height:138px}.official-question-item .question-bank-copy:hover h2{color:inherit;text-decoration:none}.official-question-actions{align-self:center}.compact-button{gap:6px;padding:7px 10px;font-size:12px}.official-imported{display:inline-flex;align-items:center;gap:5px;color:var(--green);font-size:12px;font-weight:700}.question-bank-item{position:relative;display:grid;grid-template-columns:20px minmax(0,1fr) auto;align-items:start;grid-gap:12px;gap:12px;min-height:144px;padding:16px;overflow:hidden}.question-bank-item:before{position:absolute;top:0;bottom:0;left:0;width:2px;background:#cfe9dc;content:""}.question-bank-copy{min-width:0;padding:0;border:0;background:transparent;color:inherit;text-align:left}.question-bank-copy:hover h2{color:var(--green);text-decoration:underline}.question-select{display:grid;align-self:stretch;min-height:100%;place-items:start center;padding-top:4px;margin:0;border-radius:4px;cursor:pointer}.question-select:hover{background:#eef7f2}.question-bank-item h2{margin:3px 0 6px}.question-bank-copy p:not(.language-kicker){overflow:hidden;margin:0 0 8px;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}.question-bank-actions{display:flex;flex:0 0 auto;gap:4px}.question-detail-form-panel,.question-detail-prompt,.question-detail-reference{padding:24px}.question-detail-prompt{margin-bottom:20px}.question-detail-section-heading{display:flex;align-items:flex-start;gap:10px;color:var(--green)}.question-detail-section-heading>div{display:grid;grid-gap:2px;gap:2px}.question-detail-section-heading span{color:var(--hint);font-size:11px;font-weight:700}.question-detail-section-heading h2{margin:0}.question-detail-reading{margin:22px 0 0;color:#314640;font-size:15px;line-height:1.8;white-space:pre-wrap}.question-detail-reading.english{font-family:Georgia,"Noto Serif",serif}.question-detail-instructions{margin-top:20px;padding:14px 16px;border-left:3px solid #9fcfb9;background:#f4faf6}.question-detail-instructions b{color:var(--green);font-size:12px}.question-detail-instructions p{margin:5px 0 0;white-space:pre-wrap}.question-detail-image{display:block;width:min(100%,760px);max-height:520px;margin-top:22px;border:1px solid var(--line);border-radius:8px;object-fit:contain}.task-image-viewer.question-detail-image,.task-image-viewer.task-image{max-height:none}.task-image-viewer-trigger{position:relative;display:block;width:100%;padding:0;overflow:hidden;border:0;border-radius:inherit;background:#fff;cursor:zoom-in}.task-image-viewer-preview{display:block;width:100%;max-height:520px;object-fit:contain}.task-image-viewer.task-image .task-image-viewer-preview{max-height:360px}.task-image-viewer-expand{position:absolute;right:10px;bottom:10px;display:grid;width:34px;height:34px;place-items:center;border:1px solid rgb(255 255 255/78%);border-radius:6px;background:rgb(24 61 53/82%);color:#fff;opacity:0;transition:opacity .15s ease}.task-image-viewer-trigger:focus-visible .task-image-viewer-expand,.task-image-viewer-trigger:hover .task-image-viewer-expand{opacity:1}.image-lightbox-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgb(13 28 23/78%)}.image-lightbox{display:grid;grid-template-rows:auto minmax(0,1fr);width:min(1180px,100%);height:min(820px,calc(100dvh - 40px));overflow:hidden;border:1px solid rgb(255 255 255/28%);border-radius:8px;background:#f8fbf9;box-shadow:0 28px 72px rgb(0 0 0/38%)}.image-lightbox-toolbar{display:flex;align-items:center;justify-content:space-between;min-height:52px;padding:8px 12px;border-bottom:1px solid #dce6e1;background:#fff}.image-lightbox-zoom-controls{display:flex;align-items:center;gap:4px}.image-lightbox-zoom-controls output{min-width:48px;color:#466059;font-size:13px;font-weight:800;text-align:center}.image-lightbox .icon-button:disabled{cursor:not-allowed;opacity:.38}.image-lightbox-stage{display:flex;align-items:flex-start;justify-content:flex-start;overflow:auto;padding:24px;background:#edf3f0}.image-lightbox-image{display:block;max-width:none;min-width:100%;height:auto;margin:auto;background:#fff;box-shadow:0 1px 5px rgb(0 0 0/12%)}.task-image-picker{display:flex;align-items:center;gap:10px}.task-image-picker-state{display:flex;flex:1 1 auto;align-items:center;gap:9px;min-height:46px;padding:8px 10px;border:1px dashed #bdd0c8;border-radius:6px;background:#f8fbf9;color:#647770;font-size:12px}.task-image-picker-state.selected{border-style:solid;border-color:#9dceb5;background:#ebf7f0;color:#216346}.task-image-picker-state>svg{flex:0 0 auto}.task-image-picker-state>div{display:grid;min-width:0;grid-gap:1px;gap:1px}.task-image-picker-state b,.task-image-picker-state small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-image-picker-state b{font-size:13px}.task-image-picker-state small{color:#527361;font-size:11px;font-weight:600}.task-image-picker-input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.task-image-picker-button{flex:0 0 auto;min-height:38px}@media (max-width:680px){.task-image-viewer-expand{opacity:1}.image-lightbox-backdrop{padding:10px}.image-lightbox{height:calc(100dvh - 20px)}.image-lightbox-stage{padding:12px}.task-image-picker{align-items:stretch;flex-direction:column}.task-image-picker-button{align-self:flex-start}}.question-detail-reference-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:20px;gap:20px}.question-detail-reference{min-height:360px}.reference-empty{display:grid;min-height:220px;margin-top:22px;place-items:center;border:1px dashed #c9ddd4;border-radius:8px;color:var(--hint);font-size:13px}.question-detail-editor{display:grid;grid-gap:20px;gap:20px}.question-detail-form-panel .panel-heading{min-height:0;padding:0 0 18px}.question-detail-form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px}.question-detail-title-field{grid-column:span 2}.question-detail-form-stack{display:grid;grid-gap:18px;gap:18px}.question-detail-editor .profile-label{display:grid;grid-gap:7px;gap:7px;color:#405550;font-size:12px;font-weight:700}.question-detail-editor .profile-label input:not([type=file]),.question-detail-editor .profile-label select,.question-detail-editor .profile-label textarea{width:100%;min-height:40px;padding:9px 11px;border:1px solid #cddbd5;border-radius:8px;outline:0;background:#fcfdfc;color:var(--ink);line-height:1.6}.question-detail-editor .profile-label textarea{resize:vertical}.question-detail-editor .profile-label input:not([type=file]):focus,.question-detail-editor .profile-label select:focus,.question-detail-editor .profile-label textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px rgb(30 106 79/14%)}.question-detail-reference-grid .question-detail-form-panel{min-width:0}.question-detail-reference-grid .question-detail-form-panel .panel-heading{display:flex;justify-content:space-between;align-items:baseline}.question-detail-reference-grid .question-detail-form-panel .panel-heading small{color:var(--hint);font-weight:500}.notebook-card{display:grid;align-content:start;grid-gap:11px;gap:11px;padding:17px}.notebook-card-heading{display:flex;align-items:center;flex-wrap:wrap;gap:7px;color:var(--muted);font-size:11px}.notebook-source{margin:0;color:var(--ink);font:700 16px/1.55 Georgia,Songti SC,serif}.notebook-comment,.notebook-recommendation p{margin:0;color:#5c6f69;font-size:12px}.notebook-recommendation{padding:10px;border-left:3px solid var(--green);background:#f3f8f5}.notebook-recommendation b{color:var(--green);font-size:11px}.mastery-control{display:grid;grid-template-columns:1fr 110px;align-items:center;grid-gap:10px;gap:10px;padding-top:10px;border-top:1px solid #edf0ee;color:var(--muted);font-size:11px}.mastery-control select{min-height:32px;border:1px solid #d7e1dd;border-radius:5px;background:#fcfdfc;color:var(--green);font-size:12px;font-weight:700}.notebook-reflection-field{display:grid;grid-gap:6px;gap:6px;color:var(--muted);font-size:11px}.notebook-reflection-field small{margin-left:4px;font-size:10px;font-weight:500}.notebook-reflection-field textarea{width:100%;min-height:64px;resize:vertical;padding:8px;border:1px solid #d7e1dd;border-radius:5px;outline-color:var(--green);background:#fcfdfc;color:var(--ink);font-size:12px}@media (max-width:680px){.role-chip{display:none}.auth-page{padding:16px}.auth-panel{padding:24px 20px}.account-menu{right:-4px}.profile-dialog:not(.assignment-dialog){padding:19px}.assignment-dialog .dialog-heading{padding:22px 20px 16px}.assignment-dialog-body{gap:18px;padding:4px 20px 20px}.assignment-dialog .dialog-actions{padding:14px 20px}.assignment-dialog .dialog-actions .outline-button,.assignment-dialog .dialog-actions .primary-button{min-width:0;flex:1 1}.review-actions{top:8px}.avatar-editor{flex-wrap:wrap}.skill-row,.trend-row{grid-template-columns:86px minmax(0,1fr) 30px;gap:8px;padding:10px 16px}.notebook-list{grid-template-columns:1fr}.list-pagination{justify-content:space-between;gap:8px}.question-bank-item{grid-template-columns:20px minmax(0,1fr);gap:12px;padding:16px}.question-bank-actions{grid-column:2;justify-content:flex-start}.official-library-toolbar{align-items:stretch}.official-library-filters{width:100%}.question-detail-form-grid,.question-detail-reference-grid{grid-template-columns:1fr}.question-detail-title-field{grid-column:auto}.question-detail-form-panel,.question-detail-prompt,.question-detail-reference{padding:18px}.writing-pane textarea{min-height:330px;padding:18px;font-size:15px}}.session-loader{display:grid;min-height:100dvh;padding:24px;place-items:center;background:#edf2ef}.session-loader-content{display:grid;width:min(100%,560px);min-height:220px;align-content:center;justify-items:center;grid-gap:18px;gap:18px;text-align:center}.session-loader-mark{display:block;width:38px;height:38px}.session-loader-status{display:inline-flex;align-items:center;gap:8px;color:#527068;font-size:12px;font-weight:700}.session-loader-spinner{color:var(--green);animation:session-loader-spin .8s linear infinite}.session-loader-note{display:grid;min-height:82px;margin:4px 0 0;align-content:center;grid-gap:7px;gap:7px;color:#29453c}.session-loader-note p{margin:0}.session-loader-note p:first-child{font:600 21px/1.5 Georgia,Songti SC,serif}.session-loader-note p+p{max-width:500px;color:#617b72;font-size:12px;line-height:1.55}@media (prefers-reduced-motion:no-preference){.session-loader-content{animation:session-loader-enter .26s ease-out both}}@keyframes session-loader-spin{to{transform:rotate(1turn)}}@keyframes session-loader-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.session-loader-content,.session-loader-spinner{animation:none}}.dashboard-stats{gap:16px}.dashboard-stats .stat{position:relative;min-height:128px;padding:18px;border-color:#dce6e1;background:#fff}.dashboard-stats .stat strong{margin:5px 0 4px;font-size:27px;font-weight:800;line-height:1}.dashboard-stats .stat small{display:block;max-width:150px;line-height:1.45}.dashboard-stats .stat-detail{position:absolute;right:14px;bottom:13px;margin:0;padding:3px 6px;border-radius:4px;background:#fff0e7;color:#ae573b;font-size:10px}.follow-up-heading,.todo-controls{align-items:center}.todo-controls{display:flex;gap:9px}.todo-tabs{border:0;background:transparent}.todo-tab{min-height:30px;padding:0 9px;border:1px solid transparent}.todo-tab.active{border-color:#d2e0d9}.todo-tab.muted{color:#87958f}.todo-tab.muted b{background:#edf1ef;color:#87958f}.todo-tab.overdue{color:#aa5539}.todo-tab.overdue.active{border-color:#f0cdbd;background:#fff5ef}.dimension-select,.student-sort{display:inline-flex;align-items:center;gap:6px;color:#71807a;font-size:11px;font-weight:700;white-space:nowrap}.dimension-select select,.student-sort select{min-height:30px;padding:4px 25px 4px 8px;border:1px solid #d6e1dc;border-radius:5px;background:#fff;color:var(--green);font:inherit}.follow-up-toolbar{min-height:42px;padding-block:10px;border-top:1px solid #edf1ef;color:#87938e}.filter-reset{min-height:auto;padding:2px 0;color:var(--green);font-size:11px}.student-follow-up{display:block;padding:0;border-bottom:1px solid #e9efec;background:#fff;transition:background .15s ease,box-shadow .15s ease}.student-follow-up.highlighted{background:#f7fbf8;box-shadow:inset 3px 0 #5f9b83}.student-follow-up-summary{display:grid;grid-template-columns:32px minmax(0,1fr) auto;align-items:center;grid-gap:11px;gap:11px;padding:14px 20px 10px}.student-follow-up-summary b{font-size:13px}.student-follow-up-summary p{margin:3px 0 0;color:#74817b;font-size:11px}.student-follow-up-summary p em,.student-line p em{color:#b05a3e;font-style:normal;font-weight:750}.student-follow-up-actions{display:flex;align-items:center;gap:5px}.student-follow-up-actions .outline-button{min-height:29px;padding:4px 8px;border-color:#b8d8ca;background:#f3faf6;color:var(--green);font-size:10px}.student-follow-up-actions .text-button{min-height:29px;padding:4px;font-size:10px}.student-task-list{display:grid;grid-gap:6px;gap:6px;padding:0 20px 14px 67px}.student-task{position:relative;display:grid;grid-template-columns:31px minmax(0,1fr);align-items:center;grid-gap:9px;gap:9px;min-height:48px;padding:8px 10px;border:1px solid #e5ebe8;border-radius:5px;background:#fcfdfc}.student-task:before{position:absolute;top:9px;bottom:9px;left:0;width:3px;border-radius:0 2px 2px 0;background:#c9d2ce;content:""}.student-task.overdue{border-color:#f0d8cc;background:#fffaf7}.student-task.overdue:before{background:#d98254}.follow-up-batch-summary .task-badge,.student-task .task-badge{width:31px;height:31px;border-radius:5px;font-size:8px}.batch-title b,.student-task b{display:block;overflow:hidden;color:var(--ink);font-size:12px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.deadline-chip{display:inline-flex;align-items:center;min-height:18px;margin-top:3px;padding:1px 5px;border-radius:3px;background:#edf1ef;color:#73817a;font-size:10px;font-weight:700}.deadline-chip.overdue{background:#d98254;color:#fff}.deadline-chip.soon{background:#f1f2f0;color:#5e6d67}.deadline-chip.none{border:1px dashed #cbd6d1;background:#fff;color:#899690}.student-follow-up .student-task .deadline-chip{display:inline-flex;width:-moz-fit-content;width:fit-content;margin:3px 0 0}.follow-up-batch{border-bottom-color:#e9efec}.follow-up-batch.overdue{box-shadow:none}.follow-up-batch-summary{width:100%;grid-template-columns:38px minmax(0,1fr) auto 26px;min-height:69px;padding:11px 16px 11px 20px;border:0;border-left:3px solid transparent;background:#fff;color:inherit;text-align:left}.follow-up-batch.overdue .follow-up-batch-summary{border-left-color:#d98254;background:#fffaf7}.batch-title{min-width:0}.submission-count{min-width:94px}.submission-count b{color:#344640}.submission-count span{color:#7b8983}.batch-chevron{justify-self:end;color:#6d8178;transition:transform .15s ease}.batch-chevron.expanded{transform:rotate(180deg)}.student-overview-heading{align-items:center}.student-sort{font-size:10px}.student-sort select{min-height:27px;max-width:114px;padding-left:6px;font-size:10px}.student-line{min-height:68px;padding:12px 20px}.student-line .student-avatar{flex:0 0 32px}.student-line.linked{background:#f0f8f3;box-shadow:inset 3px 0 #5f9b83}@media (max-width:680px){.site-footer{align-items:flex-start;flex-direction:column}.site-footer nav{justify-content:flex-start}.dashboard-stats .stat{min-height:118px}.dashboard-stats .stat-detail{position:static;width:-moz-fit-content;width:fit-content;margin-top:6px}.follow-up-heading,.todo-controls{align-items:stretch}.todo-controls{flex-direction:column}.dimension-select{justify-content:space-between}.student-follow-up-summary{grid-template-columns:32px minmax(0,1fr);padding-inline:16px}.student-follow-up-actions{grid-column:2;justify-content:flex-start}.student-task-list{padding:0 16px 13px}.follow-up-batch-summary{grid-template-columns:34px minmax(0,1fr) 24px;gap:8px;padding-inline:13px}.submission-count{grid-column:2;min-width:0;text-align:left}.batch-chevron{grid-row:1/span 2;grid-column:3}.student-sort{display:none}.dashboard-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.follow-up-heading,.follow-up-toolbar{align-items:stretch;flex-direction:column}.todo-tabs,.view-switch{width:100%}.todo-tab,.view-switch button{flex:1 1;padding-inline:5px}.follow-up-batch-summary{grid-template-columns:minmax(0,1fr) auto 30px;gap:8px;padding-inline:14px}.follow-up-batch-details{padding-inline:14px}.batch-actions{align-items:flex-start;flex-direction:column;padding:10px 0}.follow-up-student-row{grid-template-columns:1fr}.follow-up-actions{justify-content:flex-start;flex-wrap:wrap}.follow-up-actions .text-button{white-space:nowrap}.deadline-editor{flex-wrap:wrap}.student-follow-up{grid-template-columns:34px minmax(0,1fr)}.student-follow-up .outline-button{grid-column:2;justify-self:start}}