:root{--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-soft:#eaf1ff;--color-canvas:#f6f8fc;--color-surface:#fff;--color-surface-alt:#f8faff;--color-text:#172033;--color-text-secondary:#667085;--color-text-tertiary:#98a2b3;--color-border:#d8e0ea;--color-border-soft:#e7edf3;--color-success:#16a34a;--color-success-soft:#eaf7ee;--color-info:#2563eb;--color-info-soft:#eff6ff;--color-warning:#f59e0b;--color-warning-soft:#fff7e6;color:var(--color-text);background:var(--color-canvas);font-synthesis:none;text-rendering:optimizelegibility}*{box-sizing:border-box}body{background:var(--color-canvas);min-width:320px;margin:0}a{color:inherit;text-decoration:none}.full-width{width:100%}.app-frame{min-height:100vh}.brand-mark{background:var(--color-primary);color:#fff;border-radius:9px;place-items:center;width:34px;height:34px;font-weight:700;display:inline-grid}.brand-mark.large{border-radius:12px;width:46px;height:46px;margin:0 auto 10px;font-size:20px}.app-header{z-index:10;border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;height:72px;padding:0 28px;display:flex;position:sticky;top:0}.app-header-leading{flex:1;min-width:0}.header-brand{color:var(--color-text);font:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:0;font-weight:650;display:flex}.header-brand .brand-mark{border-radius:8px;width:32px;height:32px}.header-divider{background:var(--color-border);width:1px;height:24px}.app-header h1{text-overflow:ellipsis;white-space:nowrap;max-width:min(52vw,520px);margin:0;font-size:22px;line-height:1;overflow:hidden}.app-content{width:100%;max-width:1280px;margin:0 auto;padding:28px}.ant-card,.ant-table-wrapper{border-color:var(--color-border-soft)}.ant-table-thead>tr>th{background:var(--color-surface-alt)!important;color:#344054!important;font-weight:600!important}.ant-table-tbody>tr:hover>td{background:#f8fbff!important}.page-heading{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.page-heading h2,.page-heading p{margin-top:0}.login-page,.public-page{background:var(--color-canvas);place-items:center;min-height:100vh;padding:24px;display:grid}.login-session-alert{margin-bottom:18px}.login-card,.access-card{width:min(440px,100%)}.login-heading{text-align:center;margin-bottom:20px}.feedback-editor-flow{gap:18px;width:min(980px,100%);display:grid}.rich-editor{border:1px solid var(--color-border);background:var(--color-surface);border-radius:8px;overflow:hidden}.rich-toolbar{border-bottom:1px solid var(--color-border-soft);background:var(--color-surface-alt);padding:8px}.rich-surface{outline:none;min-height:430px;padding:18px;line-height:1.8}.rich-surface h2,.rich-content h2{margin:18px 0 10px;font-size:22px}.rich-surface h3,.rich-content h3{margin:16px 0 8px;font-size:18px}.rich-surface p,.rich-content p{margin:0 0 12px}.share-input{width:calc(100% - 112px)!important}.center-panel{place-items:center;min-height:360px;display:grid}.mobile-list-loading{min-height:120px;color:var(--color-text-secondary);place-items:center;display:grid}.mobile-feedback-row{border:1px solid var(--color-border-soft);background:var(--color-surface);width:100%;min-height:74px;color:var(--color-text);text-align:left;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.mobile-feedback-row span{gap:4px;display:grid}.mobile-feedback-row small{color:var(--color-text-secondary)}.mobile-data-row{border:1px solid var(--color-border-soft);background:var(--color-surface);width:100%;min-height:78px;color:var(--color-text);text-align:left;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.mobile-data-row span{gap:4px;min-width:0;display:grid}.mobile-data-row strong,.mobile-data-row small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mobile-data-row small{color:var(--color-text-secondary)}.mobile-data-row em{color:var(--color-primary);flex:none;font-style:normal;font-weight:600}.mobile-group-card{border:1px solid var(--color-border-soft);background:var(--color-surface);border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-height:78px;padding:12px;display:flex}.mobile-group-info{gap:4px;min-width:0;display:grid}.mobile-group-info strong,.mobile-group-info small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mobile-group-info small{color:var(--color-text-secondary)}.mobile-group-actions{flex-direction:column;flex:none;justify-content:center;align-items:flex-end;gap:2px;display:flex}.mobile-group-actions .ant-btn{height:24px;padding:0}.public-page.reading{align-items:start;padding-top:42px}.public-card{width:min(820px,100%)}.public-heading h1{margin:0;font-size:clamp(28px,5vw,44px)}.rich-content{color:var(--color-text);font-size:16px;line-height:1.9}.teacher-message{border-left:3px solid var(--color-primary);background:var(--color-info-soft);border-radius:6px;margin:0;padding:12px 14px}.public-section{gap:12px;display:grid}.public-section h3{margin:0}.wechat-debug-panel{border:1px solid var(--color-border);background:#f8fbff;border-radius:8px;gap:10px;padding:12px;display:grid}.wechat-debug-panel h3{margin:0}.wechat-debug-panel pre{max-height:260px;color:var(--color-text);white-space:pre-wrap;word-break:break-word;margin:0;font-size:12px;line-height:1.55;overflow:auto}.public-image-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.public-image-grid .ant-image{aspect-ratio:1;width:100%}.public-image-grid img{object-fit:cover;border-radius:8px;width:100%;height:100%}.editor-image-item{aspect-ratio:1;background:var(--color-surface);border-radius:8px;min-width:0;transition:opacity .16s;position:relative}.editor-image-item.is-dragging{opacity:.3}.editor-image-action{z-index:2;background:#fffffff0;position:absolute;top:6px;box-shadow:0 1px 4px #1118272e}.editor-image-drag-handle{cursor:grab;touch-action:none;left:6px}.editor-image-drag-handle:active{cursor:grabbing}.editor-image-delete{right:6px}.editor-image-drag-overlay{aspect-ratio:1;background:#ffffffeb;border-radius:8px;overflow:hidden;box-shadow:0 12px 30px #1118273d}.editor-image-drag-overlay img{object-fit:cover;width:100%;height:100%;display:block}.homework-file-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.homework-file-item{aspect-ratio:1;border:1px solid var(--color-border-soft);background:var(--color-surface-alt);border-radius:8px;min-width:0;position:relative;overflow:hidden}.homework-image-root,.homework-image-root .ant-image,.homework-image{display:block;width:100%!important;height:100%!important}.homework-image{object-fit:cover}.homework-file-loading{place-items:center;width:100%;height:100%;display:grid}.homework-file-delete{z-index:3;background:#fffffff0;width:40px;min-width:40px;height:40px;position:absolute;top:6px;right:6px;box-shadow:0 1px 4px #1118272e}.homework-preview-button{width:100%;height:100%;color:var(--color-text);cursor:pointer;background:0 0;border:0;flex-direction:column;padding:0;display:flex;overflow:hidden}.homework-pdf-page{background:#eef1f5;flex:1;place-items:center;width:100%;min-height:0;padding:8px;display:grid;overflow:hidden}.homework-pdf-page .react-pdf__Document,.homework-pdf-page .react-pdf__Page{max-width:100%;max-height:100%}.homework-pdf-page canvas{max-width:100%;max-height:100%;box-shadow:0 1px 5px #11182729;width:auto!important;height:auto!important}.homework-pdf-fallback{color:var(--color-text-secondary);place-items:center;gap:6px;font-size:12px;display:grid}.homework-pdf-fallback svg{color:#dc2626;width:28px;height:28px}.homework-file-name{text-align:left;overflow-wrap:anywhere;-webkit-line-clamp:2;background:#fffffff5;-webkit-box-orient:vertical;width:100%;min-height:40px;padding:5px 8px;font-size:12px;line-height:15px;display:-webkit-box;overflow:hidden}.pdf-preview-toolbar{min-height:48px;padding:0 0 12px}.pdf-page-count,.pdf-zoom-count{text-align:center;min-width:58px}.pdf-preview-viewport{background:#eef1f5;place-items:start center;min-height:320px;max-height:calc(100vh - 220px);padding:16px;display:grid;overflow:auto}.pdf-preview-viewport canvas{display:block;box-shadow:0 2px 12px #1118272e}.pdf-preview-error{width:100%;color:var(--color-text-secondary);text-align:center;padding:56px 16px}.file-link{border:1px solid var(--color-border-soft);background:var(--color-surface);min-height:46px;color:var(--color-primary);border-radius:8px;align-items:center;gap:10px;padding:10px 12px;display:flex}@media (width<=900px){.app-content{padding:18px}.app-header{height:62px;padding:0 16px}.app-header h1{max-width:52vw;font-size:20px}}@media (width<=640px){.page-heading{flex-direction:column}.rich-surface{min-height:320px}.public-page{padding:14px}.app-header-leading{gap:6px!important}.app-header h1{max-width:40vw;font-size:18px}.pdf-preview-modal{max-width:calc(100vw - 16px);margin:8px auto;padding-bottom:0}.pdf-preview-modal .ant-modal-content{padding:16px 12px}.pdf-preview-viewport{max-height:calc(100vh - 190px);padding:8px}}
