:root{--color-primary:#0052ff;--color-primary-hover:#0044d6;--color-primary-light:#eaf0ff;--color-primary-border:#bfd1ff;--gradient-primary:linear-gradient(135deg, #0052ff, #4d7cff);--color-bg:#fafafa;--color-surface:#fff;--color-surface-hover:#f8fafc;--color-border:#e2e8f0;--color-border-hover:#cbd5e1;--color-text:#0f172a;--color-text-secondary:#64748b;--color-text-muted:#94a3b8;--color-success:#10b981;--color-error:#ef4444;--color-error-bg:#fef2f2;--color-error-border:#fecaca;--color-warning:#f59e0b;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--radius-sm:8px;--radius-md:12px;--radius-lg:16px;--radius-xl:20px;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 10px #00000012;--shadow-lg:0 10px 22px #00000014;--shadow-xl:0 20px 35px #0000001a;--shadow-accent:0 4px 14px #0052ff40;--shadow-accent-lg:0 8px 24px #0052ff59;--font-sans:"Inter", "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;--font-display:"Plus Jakarta Sans", "PingFang SC", "Microsoft YaHei UI", "Microsoft YaHei", sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;--transition-fast:.15s cubic-bezier(.16, 1, .3, 1);--transition-normal:.25s cubic-bezier(.16, 1, .3, 1);--transition-slow:.35s cubic-bezier(.16, 1, .3, 1)}@media (prefers-color-scheme:dark){:root{--color-bg:#0b1220;--color-surface:#111829;--color-surface-hover:#182236;--color-border:#1f2a44;--color-border-hover:#2a3a5c;--color-text:#f1f5f9;--color-text-secondary:#cbd5e1;--color-text-muted:#7c8db0;--color-primary-light:#101a3c;--color-primary-border:#1e3a8a;--color-error-bg:#450a0a;--color-error-border:#7f1d1d;--shadow-sm:0 1px 3px #0006;--shadow-md:0 4px 10px #00000073;--shadow-lg:0 10px 22px #00000080;--shadow-xl:0 20px 35px #0000008c;--shadow-accent:0 4px 14px #0052ff59;--shadow-accent-lg:0 8px 24px #0052ff73}}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px}body{font-family:var(--font-sans);color:var(--color-text);background-color:var(--color-bg);letter-spacing:.01em;background-image:radial-gradient(1200px 500px at 80% -10%,#0052ff0d,#0000 60%),radial-gradient(900px 420px at -10% 110%,#4d7cff0a,#0000 60%);background-attachment:fixed;min-height:100dvh;line-height:1.65}::selection{color:var(--color-text);background:#0052ff2e}*{scrollbar-width:thin;scrollbar-color:var(--color-border) transparent}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background-color:var(--color-border);background-clip:padding-box;border:2px solid #0000;border-radius:999px}::-webkit-scrollbar-thumb:hover{background-color:var(--color-border-hover);background-clip:padding-box}#root{min-height:100dvh}.btn{justify-content:center;align-items:center;gap:var(--space-sm);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-normal);white-space:nowrap;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;border:none;padding:10px 22px;font-family:inherit;font-size:.95rem;font-weight:600;display:inline-flex}.btn:active{transform:scale(.97)}.btn:focus-visible{box-shadow:0 0 0 3px #0052ff33, var(--shadow-md);outline:none}.btn:disabled{cursor:not-allowed;opacity:.55}.btn-primary{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-accent)}.btn-primary:hover:not(:disabled){box-shadow:var(--shadow-accent-lg);background:linear-gradient(135deg,#0048e8,#3d6eff);transform:translateY(-1px)}.btn-secondary{background-color:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.btn-secondary:hover:not(:disabled){background-color:var(--color-surface-hover);border-color:var(--color-border-hover);box-shadow:var(--shadow-md)}.btn-stop{background-color:var(--color-error);color:#fff;border-radius:999px;padding:8px 18px;font-size:.85rem}.btn-stop:hover{opacity:.9}.form-group{margin-bottom:var(--space-lg)}.form-label{color:var(--color-text);margin-bottom:var(--space-sm);font-size:.9rem;font-weight:600;display:block}.form-input{width:100%;color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color var(--transition-fast);outline:none;padding:11px 14px;font-family:inherit;font-size:.95rem}.form-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #0052ff24}.form-input:hover:not(:focus){border-color:var(--color-border-hover)}.form-input::placeholder{color:var(--color-text-muted)}.form-hint{color:var(--color-text-muted);margin-top:4px;font-size:.8rem;display:block}.form-checkbox-label{align-items:center;gap:var(--space-sm);cursor:pointer;color:var(--color-text);font-size:.95rem;font-weight:600;display:flex}.form-checkbox{width:18px;height:18px;accent-color:var(--color-primary);cursor:pointer;flex-shrink:0}.form-checkbox-text{-webkit-user-select:none;user-select:none}textarea{font-family:var(--font-sans)}.modal-overlay{-webkit-backdrop-filter:blur(4px);z-index:1000;padding:var(--space-md);animation:fadeIn var(--transition-normal) ease;background-color:#0f172a8c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-dialog{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl), 0 0 0 1px #00000008;width:100%;max-width:480px;max-height:90vh;animation:slideUp var(--transition-normal) cubic-bezier(.16, 1, .3, 1);overflow-y:auto}.modal-header{padding:var(--space-lg);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.modal-title{color:var(--color-text);font-size:1.2rem;font-weight:700}.modal-close-btn{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--color-text-secondary);cursor:pointer;transition:background-color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1.1rem;display:flex}.modal-close-btn:hover{background-color:var(--color-bg);color:var(--color-text)}.modal-body{padding:var(--space-lg)}.modal-footer{justify-content:flex-end;gap:var(--space-md);padding:var(--space-md) var(--space-lg) var(--space-lg);display:flex}.progress-bar-track{background-color:var(--color-bg);border-radius:999px;width:100%;height:8px;overflow:hidden}.progress-bar-fill{background:var(--gradient-primary);height:100%;transition:width var(--transition-normal);border-radius:999px;box-shadow:0 0 10px #0052ff59}.error-message{padding:var(--space-md);background-color:var(--color-error-bg);border:1px solid var(--color-error-border);border-radius:var(--radius-md);color:var(--color-error);margin-bottom:var(--space-md);font-size:.9rem}.section-title{color:var(--color-text);margin-bottom:var(--space-md);font-size:1.1rem;font-weight:700}.grading-result-content h1,.grading-result-content h2,.grading-result-content h3,.grading-result-content h4,.grading-result-content h5,.grading-result-content h6{color:var(--color-text);margin-top:1.4em;margin-bottom:.6em;font-weight:700;line-height:1.3}.grading-result-content h1{font-size:1.6rem}.grading-result-content h2{font-size:1.35rem}.grading-result-content h3{font-size:1.15rem}.grading-result-content h4{font-size:1.05rem}.grading-result-content p{margin-bottom:.8em;line-height:1.8}.grading-result-content strong{color:var(--color-text);font-weight:700}.grading-result-content em{font-style:italic}.grading-result-content ul,.grading-result-content ol{margin-bottom:.8em;padding-left:1.6em}.grading-result-content li{margin-bottom:.3em;line-height:1.7}.grading-result-content li>ul,.grading-result-content li>ol{margin-top:.3em;margin-bottom:.3em}.grading-result-content blockquote{border-left:3px solid var(--color-primary);background-color:var(--color-primary-light);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--color-text-secondary);margin:1em 0;padding:.7em 1.1em}.grading-result-content blockquote p{margin-bottom:0}.grading-result-content code{font-family:var(--font-mono);background-color:var(--color-bg);color:var(--color-primary);border-radius:4px;padding:2px 6px;font-size:.88em}.grading-result-content pre{background-color:var(--color-bg);border-radius:var(--radius-md);border:1px solid var(--color-border);margin:1em 0;padding:1em;overflow-x:auto}.grading-result-content pre code{color:var(--color-text);background:0 0;border-radius:0;padding:0;font-size:.88em}.grading-result-content table{border-collapse:collapse;width:100%;margin:1em 0;font-size:.95em}.grading-result-content th,.grading-result-content td{border:1px solid var(--color-border);text-align:left;padding:10px 14px}.grading-result-content th{background-color:var(--color-bg);font-weight:700}.grading-result-content tr:nth-child(2n){background-color:var(--color-bg)}.grading-result-content hr{border:none;border-top:1px solid var(--color-border);margin:1.5em 0}.grading-result-content a{color:var(--color-primary);text-decoration:none}.grading-result-content a:hover{text-decoration:underline}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@media (width<=768px){html{font-size:15px}}.app{flex-direction:column;min-height:100dvh;display:flex}.app-main{width:100%;max-width:1100px;padding:var(--space-lg) var(--space-md) var(--space-2xl);flex:1;margin:0 auto}.app-header{background-color:color-mix(in srgb, var(--color-surface) 82%, transparent);-webkit-backdrop-filter:blur(12px)saturate(1.4);border-bottom:1px solid var(--color-border);z-index:100;position:sticky;top:0}.header-content{max-width:1100px;padding:var(--space-md) var(--space-md);justify-content:space-between;align-items:center;margin:0 auto;display:flex;position:relative}.header-content:after{content:"";background:var(--gradient-primary);opacity:.85;border-radius:999px;height:2px;position:absolute;bottom:-1px;left:0;right:0}.header-title{align-items:center;gap:var(--space-sm);font-size:1.32rem;font-weight:700;font-family:var(--font-display);color:var(--color-text);letter-spacing:-.02em;background:linear-gradient(120deg, var(--color-text) 30%, var(--color-primary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;display:flex}.essay-type-section{margin-bottom:var(--space-xl)}.essay-type-category{margin-bottom:var(--space-lg)}.essay-type-category:last-child{margin-bottom:0}.category-title{color:var(--color-text-secondary);margin-bottom:var(--space-sm);padding-bottom:var(--space-xs);border-bottom:1px solid var(--color-border);letter-spacing:.05em;font-size:.9rem;font-weight:600}.essay-type-grid{gap:var(--space-md);grid-template-columns:repeat(auto-fill,minmax(200px,1fr));display:grid}.essay-type-card{align-items:center;gap:var(--space-sm);padding:var(--space-lg) var(--space-md);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;box-shadow:var(--shadow-sm);transition:all var(--transition-normal);text-align:center;color:var(--color-text);flex-direction:column;font-family:inherit;display:flex;position:relative;overflow:hidden}.essay-type-card:before{content:"";background:var(--gradient-primary);opacity:0;height:2px;transition:opacity var(--transition-normal);position:absolute;top:0;left:0;right:0}.essay-type-card:hover{border-color:var(--color-primary-border);box-shadow:var(--shadow-md);transform:translateY(-3px)}.essay-type-card:hover:before{opacity:1}.essay-type-card.selected{border-color:var(--color-primary);background-color:var(--color-primary-light);box-shadow:0 0 0 3px #0052ff1f, var(--shadow-md)}.essay-type-card.selected:before{opacity:1}.essay-type-icon{font-size:2rem;line-height:1}.essay-type-name{color:var(--color-text);font-size:.95rem;font-weight:700;line-height:1.3}.essay-type-desc{color:var(--color-text-secondary);font-size:.78rem;line-height:1.4}.subject-grid{gap:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.subject-card{align-items:flex-start;gap:var(--space-sm);padding:var(--space-xl) var(--space-lg);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;box-shadow:var(--shadow-sm);transition:all var(--transition-normal);text-align:left;color:var(--color-text);flex-direction:column;font-family:inherit;display:flex;position:relative;overflow:hidden}.subject-card:before{content:"";background:var(--gradient-primary);opacity:0;height:2px;transition:opacity var(--transition-normal);position:absolute;top:0;left:0;right:0}.subject-card:hover{border-color:var(--color-primary-border);box-shadow:var(--shadow-md);transform:translateY(-3px)}.subject-card:hover:before{opacity:1}.subject-icon{font-size:2.2rem;line-height:1}.subject-name{color:var(--color-text);font-size:1.15rem;font-weight:700;line-height:1.3}.subject-desc{color:var(--color-text-secondary);font-size:.85rem;line-height:1.4}.subject-arrow{right:var(--space-lg);color:var(--color-text-muted);transition:color var(--transition-fast), transform var(--transition-fast);font-size:1.8rem;font-weight:300;line-height:1;position:absolute;top:50%;transform:translateY(-50%)}.subject-card:hover .subject-arrow{color:var(--color-primary);transform:translateY(-50%)translate(3px)}.category-card{position:relative}.category-count{color:var(--color-primary);background-color:var(--color-primary-light);margin-top:var(--space-xs);border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-block}.nav-breadcrumb{align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md);display:flex}.nav-back-btn{align-items:center;gap:var(--space-xs);padding:var(--space-xs) var(--space-md);color:var(--color-primary);background-color:var(--color-primary-light);border:1px solid var(--color-primary-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);font-family:inherit;font-size:.88rem;font-weight:600;display:inline-flex}.nav-back-btn:hover{background-color:var(--color-primary);color:#fff}.nav-breadcrumb-text{color:var(--color-text-secondary);font-size:.9rem;font-weight:500}.panels-container{gap:var(--space-lg);margin-bottom:var(--space-xl);grid-template-columns:1fr 1fr;display:grid}.panel{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-normal), border-color var(--transition-normal)}.panel:hover{border-color:color-mix(in srgb, var(--color-primary-border) 50%, var(--color-border));box-shadow:var(--shadow-md)}.panel-title{align-items:center;gap:var(--space-sm);color:var(--color-text);margin-bottom:var(--space-md);font-size:1rem;font-weight:700;display:flex}.image-uploader{width:100%}.dropzone{border:1.5px dashed var(--color-border-hover);border-radius:var(--radius-lg);padding:var(--space-2xl) var(--space-lg);text-align:center;cursor:pointer;transition:all var(--transition-normal);background-color:color-mix(in srgb, var(--color-bg) 60%, var(--color-surface))}.dropzone:hover{border-color:var(--color-primary);background-color:var(--color-primary-light);box-shadow:var(--shadow-accent)}.dropzone-active{box-shadow:0 0 0 3px #0052ff26, var(--shadow-accent);border-color:var(--color-primary)!important;background-color:var(--color-primary-light)!important}.dropzone-content{align-items:center;gap:var(--space-sm);flex-direction:column;display:flex}.dropzone-icon{opacity:.8;filter:drop-shadow(0 4px 12px #0052ff40);font-size:2.5rem;line-height:1}.dropzone-text{color:var(--color-text-secondary);font-size:1rem;font-weight:600}.dropzone-hint{color:var(--color-text-muted);font-size:.8rem}.image-preview-grid{gap:var(--space-sm);margin-bottom:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.image-preview-container{border-radius:var(--radius-md);border:1px solid var(--color-border);aspect-ratio:3/4;position:relative;overflow:hidden}.image-preview{object-fit:cover;background-color:var(--color-bg);width:100%;height:100%;display:block}.image-preview-index{top:var(--space-sm);left:var(--space-sm);color:#fff;background:var(--gradient-primary);pointer-events:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:.75rem;font-weight:700;display:flex;position:absolute}.remove-image-btn{top:var(--space-sm);right:var(--space-sm);color:#fff;cursor:pointer;width:28px;height:28px;transition:background-color var(--transition-fast);background-color:#0000008c;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:.9rem;font-weight:700;display:flex;position:absolute}.remove-image-btn:hover{background-color:#ef4444d9}.dropzone-add-more{justify-content:center;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-style:dashed;display:flex}.dropzone-add-icon{color:var(--color-primary);font-size:1.5rem;font-weight:700;line-height:1}.dropzone-add-text{color:var(--color-text-secondary);font-size:.85rem;font-weight:600}.ocr-progress{padding:var(--space-lg);background-color:var(--color-bg);border-radius:var(--radius-md)}.ocr-progress-header{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.ocr-progress-label{color:var(--color-text);font-size:.95rem;font-weight:600}.ocr-progress-percentage{color:var(--color-primary);font-size:.9rem;font-weight:700}.text-editor{gap:var(--space-md);flex-direction:column;display:flex}.text-editor-textarea{width:100%;min-height:280px;padding:var(--space-md);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);resize:vertical;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;font-size:.95rem;line-height:1.8}.text-editor-textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #0052ff24}.text-editor-textarea:hover:not(:focus){border-color:var(--color-border-hover)}.text-editor-textarea::placeholder{color:var(--color-text-muted)}.text-editor-toolbar{gap:var(--space-xs);border-bottom:1px solid var(--color-border);padding-bottom:var(--space-sm);display:flex}.toolbar-btn{border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;padding:6px 14px;font-size:.85rem}.toolbar-btn:hover{background:var(--color-surface-hover);color:var(--color-text)}.toolbar-btn.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.text-editor-preview{min-height:280px;max-height:500px;padding:var(--space-md);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);font-size:.95rem;line-height:1.7;overflow-y:auto}.text-editor-preview p{margin-bottom:.5em}.text-editor-preview .katex-display{margin:.8em 0;overflow-x:auto}.text-editor-footer{justify-content:space-between;align-items:center;display:flex}.char-count{color:var(--color-text-muted);font-size:.85rem}.grading-result-section{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-xl);box-shadow:var(--shadow-md);position:relative;overflow:hidden}.grading-result-section:before{content:"";background:var(--gradient-primary);opacity:.9;height:3px;position:absolute;top:0;left:0;right:0}.grading-result-header{margin-bottom:var(--space-md);justify-content:space-between;align-items:center;display:flex}.grading-result-header .section-title{margin-bottom:0}.grading-result-content{max-height:600px;padding-right:var(--space-sm);line-height:1.8;overflow-y:auto}.grading-result-content::-webkit-scrollbar{width:6px}.grading-result-content::-webkit-scrollbar-track{background:0 0}.grading-result-content::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:999px}.grading-result-content::-webkit-scrollbar-thumb:hover{background-color:var(--color-border-hover)}.streaming-placeholder{padding:var(--space-lg);text-align:center}.streaming-dots{color:var(--color-primary);font-size:1rem;font-weight:600}.streaming-dots .dot-1,.streaming-dots .dot-2,.streaming-dots .dot-3{animation:1.4s infinite dotBlink}.streaming-dots .dot-2{animation-delay:.2s}.streaming-dots .dot-3{animation-delay:.4s}@keyframes dotBlink{0%,20%{opacity:0}50%{opacity:1}to{opacity:0}}.reasoning-section{margin-bottom:var(--space-md)}.reasoning-toggle{border:1px solid var(--color-primary-border);border-radius:var(--radius-md);background-color:var(--color-primary-light);transition:box-shadow var(--transition-fast);overflow:hidden}.reasoning-toggle:hover{box-shadow:0 0 0 3px #0052ff14}.reasoning-toggle summary{padding:var(--space-md);color:var(--color-primary);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color var(--transition-fast);font-size:.95rem;font-weight:600}.reasoning-toggle summary:hover{background-color:var(--color-primary-light)}.reasoning-toggle[open] summary{border-bottom:1px solid var(--color-primary-border)}.reasoning-content{padding:var(--space-md);color:var(--color-text-secondary);background-color:var(--color-surface);white-space:pre-wrap;word-break:break-word;border-left:3px solid var(--color-primary);max-height:400px;font-size:.88rem;line-height:1.75;overflow-y:auto}.reasoning-content::-webkit-scrollbar{width:6px}.reasoning-content::-webkit-scrollbar-track{background:0 0}.reasoning-content::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:999px}.reasoning-thinking-indicator,.grading-streaming-indicator{padding:var(--space-sm) var(--space-md);font-size:.9rem}.grading-error{margin-bottom:var(--space-lg)}@media (width<=900px){.essay-type-grid{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.subject-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.panels-container{grid-template-columns:1fr}}@media (width<=520px){.app-main{padding:var(--space-md) var(--space-sm) var(--space-xl)}.header-content{padding:var(--space-sm) var(--space-sm)}.header-title{font-size:1.15rem}.essay-type-grid{gap:var(--space-sm);grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}.subject-grid{gap:var(--space-md);grid-template-columns:1fr}.subject-card{padding:var(--space-lg) var(--space-md)}.subject-icon{font-size:1.8rem}.subject-name{font-size:1.05rem}.essay-type-card{padding:var(--space-md) var(--space-sm)}.essay-type-icon{font-size:1.6rem}.essay-type-name{font-size:.85rem}.essay-type-desc{font-size:.72rem}.panel{padding:var(--space-md)}.text-editor-textarea{min-height:200px}.grading-result-content{max-height:500px}.modal-dialog{margin:var(--space-sm);max-width:none}.nav-back-btn{padding:var(--space-xs) var(--space-sm);font-size:.82rem}}.header-wb-btn{align-items:center;gap:var(--space-xs);color:var(--color-primary);background-color:var(--color-primary-light);border:1px solid var(--color-primary-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);padding:6px 16px;font-family:inherit;font-size:.9rem;font-weight:600;display:inline-flex}.header-wb-btn:hover{background-color:var(--color-primary);color:#fff}.header-actions{align-items:center;gap:var(--space-md);display:flex}.header-user{align-items:center;gap:var(--space-sm);display:flex}.header-username{color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:140px;font-size:.9rem;font-weight:600;overflow:hidden}.header-logout-btn{color:var(--color-text-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);background-color:#0000;padding:6px 14px;font-family:inherit;font-size:.85rem;font-weight:600}.header-logout-btn:hover{color:var(--color-error);border-color:var(--color-error);background-color:var(--color-error-bg)}.auth-page{min-height:100dvh;padding:var(--space-md);background-color:var(--color-bg);background-image:radial-gradient(900px 500px at 15% -10%,#0052ff14,#0000 60%),radial-gradient(700px 420px at 110% 110%,#4d7cff12,#0000 60%);justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.auth-page:before{content:"";background-image:radial-gradient(circle, var(--color-border) 1px, transparent 1px);opacity:.35;pointer-events:none;background-size:32px 32px;position:absolute;inset:0;-webkit-mask-image:radial-gradient(600px 400px at 50% 40%,#000,#0000 80%);mask-image:radial-gradient(600px 400px at 50% 40%,#000,#0000 80%)}.auth-card{width:100%;max-width:400px;padding:var(--space-xl) var(--space-xl);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-xl);gap:var(--space-md);flex-direction:column;animation:.5s cubic-bezier(.16,1,.3,1) slideUp;display:flex;position:relative}.auth-card:before{content:"";background:var(--gradient-primary);border-radius:var(--radius-xl) var(--radius-xl) 0 0;opacity:.9;height:3px;position:absolute;top:0;left:0;right:0}.auth-title{font-size:1.55rem;font-weight:800;font-family:var(--font-display);color:var(--color-text);text-align:center;letter-spacing:-.02em;margin:0}.auth-subtitle{color:var(--color-text-secondary);text-align:center;margin:calc(var(--space-xs) * -1) 0 0;font-size:.9rem}.auth-tabs{gap:var(--space-xs);background-color:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);grid-template-columns:1fr 1fr;padding:4px;display:grid}.auth-tab{padding:var(--space-sm) 0;color:var(--color-text-secondary);border-radius:calc(var(--radius-md) - 4px);cursor:pointer;transition:all var(--transition-fast);background-color:#0000;border:none;font-family:inherit;font-size:.92rem;font-weight:600}.auth-tab.active{color:var(--color-primary);background-color:var(--color-surface);box-shadow:var(--shadow-sm), 0 0 0 1px var(--color-border)}.auth-field{gap:var(--space-xs);flex-direction:column;display:flex}.auth-label{color:var(--color-text);font-size:.88rem;font-weight:600}.auth-input{color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:12px 14px;font-family:inherit;font-size:.95rem}.auth-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #0052ff24}.auth-input:hover:not(:focus){border-color:var(--color-border-hover)}.auth-submit{margin-top:var(--space-xs);color:#fff;background:var(--gradient-primary);border-radius:var(--radius-md);cursor:pointer;box-shadow:var(--shadow-accent);transition:all var(--transition-normal);border:none;padding:12px 0;font-family:inherit;font-size:1rem;font-weight:700}.auth-submit:hover:not(:disabled){box-shadow:var(--shadow-accent-lg);background:linear-gradient(135deg,#0048e8,#3d6eff);transform:translateY(-1px)}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-loading{min-height:100vh;color:var(--color-text-secondary);justify-content:center;align-items:center;font-size:1rem;display:flex}@media (width<=520px){.header-actions{gap:var(--space-sm)}.header-username{max-width:80px;font-size:.82rem}.auth-card{padding:var(--space-lg) var(--space-md)}}.tts-player{align-items:center;gap:var(--space-xs);display:inline-flex}.tts-btn{border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;width:32px;height:32px;transition:all var(--transition-fast);background:0 0;justify-content:center;align-items:center;font-size:1rem;display:inline-flex}.tts-btn:hover{background:var(--color-surface-hover);border-color:var(--color-primary-border)}.tts-btn-active{background:var(--color-primary);border-color:var(--color-primary);color:#fff;animation:1.5s infinite ttsPulse}@keyframes ttsPulse{0%,to{box-shadow:0 0 #0052ff66}50%{box-shadow:0 0 0 6px #0052ff00}}.tts-btn:disabled{opacity:.6;cursor:not-allowed}.tts-error{color:var(--color-error);white-space:nowrap;font-size:.78rem}.grading-result-actions{align-items:center;gap:var(--space-sm);display:flex}.grading-result-actions .tts-btn{width:36px;height:36px;font-size:1.1rem}.selection-tts .tts-btn{background:var(--color-primary);border-color:var(--color-primary);color:#fff;border-radius:var(--radius-md);width:36px;height:36px;box-shadow:var(--shadow-lg);font-size:1rem}.selection-tts .tts-btn:hover{background:var(--color-primary-hover);box-shadow:var(--shadow-xl);transform:translateY(-1px)}.selection-tts .tts-btn-active{background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.section-tts{margin-left:var(--space-sm);vertical-align:middle;align-items:center;display:inline-flex}.section-tts .tts-btn{width:28px;height:28px;font-size:.85rem}.wb-fab{bottom:calc(24px + env(safe-area-inset-bottom,0px));right:calc(24px + env(safe-area-inset-right,0px));background:var(--gradient-primary);color:#fff;width:56px;height:56px;box-shadow:var(--shadow-accent-lg);cursor:pointer;z-index:900;transition:all var(--transition-normal);border:none;border-radius:50%;justify-content:center;align-items:center;font-size:1.5rem;display:flex;position:fixed}.wb-fab:hover{box-shadow:var(--shadow-xl);transform:scale(1.08)translateY(-2px)}.wb-fab:active{transform:scale(.96)}.wb-overlay{-webkit-backdrop-filter:blur(2px);z-index:998;animation:fadeIn var(--transition-normal) ease;background:#0f172a73;position:fixed;inset:0}.wb-drawer{background:var(--color-surface);border-left:1px solid var(--color-border);width:460px;max-width:100vw;height:100dvh;box-shadow:var(--shadow-xl);z-index:999;transition:right var(--transition-slow) cubic-bezier(.16, 1, .3, 1);flex-direction:column;display:flex;position:fixed;top:0;right:-480px}.wb-drawer-open{right:0}.wb-drawer-header{padding:var(--space-lg) var(--space-lg) var(--space-md);border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;display:flex}.wb-title{color:var(--color-text);font-size:1.2rem;font-weight:700}.wb-close-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-secondary);cursor:pointer;transition:background-color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;font-size:1rem;display:flex}.wb-close-btn:hover{background-color:var(--color-bg);color:var(--color-text)}.wb-stats{gap:var(--space-md);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex}.wb-stat{flex-direction:column;flex:1;align-items:center;gap:2px;display:flex}.wb-stat-num{color:var(--color-text);font-size:1.3rem;font-weight:700}.wb-stat-mastered{color:var(--color-success)}.wb-stat-new{color:var(--color-warning)}.wb-stat-label{color:var(--color-text-muted);font-size:.75rem}.wb-toolbar{gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-bottom:1px solid var(--color-border);flex-shrink:0;display:flex}.btn-sm{padding:6px 12px;font-size:.82rem}.wb-categories{gap:var(--space-xs);padding:var(--space-sm) var(--space-lg);-webkit-overflow-scrolling:touch;flex-shrink:0;display:flex;overflow-x:auto}.wb-categories::-webkit-scrollbar{height:0}.wb-cat-btn{color:var(--color-text-secondary);background:var(--color-bg);border:1px solid var(--color-border);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);border-radius:999px;align-items:center;gap:4px;padding:4px 12px;font-family:inherit;font-size:.82rem;font-weight:600;display:inline-flex}.wb-cat-btn:hover{border-color:var(--color-primary-border);color:var(--color-primary)}.wb-cat-active{background-color:var(--color-primary);color:#fff;border-color:var(--color-primary)}.wb-cat-count{opacity:.7;font-size:.7rem}.wb-search{padding:var(--space-sm) var(--space-lg);flex-shrink:0}.wb-search-input{width:100%;padding:8px 12px;font-size:.88rem}.wb-word-list{padding:var(--space-sm) var(--space-lg);flex:1;overflow-y:auto}.wb-empty{text-align:center;padding:var(--space-2xl) var(--space-md);color:var(--color-text-muted);font-size:.9rem}.wb-word-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-md);margin-bottom:var(--space-sm);box-shadow:var(--shadow-sm);transition:all var(--transition-fast)}.wb-word-card:hover{border-color:var(--color-primary-border);box-shadow:var(--shadow-md);transform:translateY(-1px)}.wb-word-mastered{opacity:.6;border-color:var(--color-success);background:#10b9810d}.wb-word-pending{border-left:3px solid var(--color-warning,#f59e0b)}.wb-word-failed{border-left:3px solid var(--color-error,#ef4444)}.wb-word-status{vertical-align:middle;margin-left:6px;font-size:.7rem;font-weight:500}.wb-status-pending{color:var(--color-warning,#f59e0b);animation:1.5s ease-in-out infinite wb-pulse}.wb-status-failed{color:var(--color-error,#ef4444)}@keyframes wb-pulse{0%,to{opacity:1}50%{opacity:.4}}.wb-action-retry{color:var(--color-warning,#f59e0b);font-weight:600}.wb-word-main{justify-content:space-between;align-items:flex-start;gap:var(--space-sm);margin-bottom:var(--space-xs);display:flex}.wb-word-text{flex-direction:column;gap:2px;display:flex}.wb-word-en{color:var(--color-text);font-size:1rem;font-weight:700}.wb-word-zh{color:var(--color-text-secondary);font-size:.85rem}.wb-word-cat-tag{color:var(--color-primary);background:var(--color-primary-light);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:2px 8px;font-size:.7rem;font-weight:600}.wb-word-example{color:var(--color-text-muted);margin-bottom:var(--space-sm);font-size:.82rem;font-style:italic;line-height:1.5}.wb-word-actions{gap:var(--space-xs);display:flex}.wb-action-btn{border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:1px solid #0000;padding:4px 8px;font-size:.85rem}.wb-action-btn:hover{background:var(--color-surface);border-color:var(--color-border)}.wb-action-delete:hover{background:var(--color-error-bg);border-color:var(--color-error-border)}.wb-pagination{justify-content:center;align-items:center;gap:var(--space-md);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--color-border);flex-shrink:0;display:flex}.wb-page-info{color:var(--color-text-secondary);font-size:.85rem}.wb-selection-popup{pointer-events:auto;animation:.15s fadeIn}.wb-selection-btn{align-items:center;gap:var(--space-xs);color:#fff;background:var(--color-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);cursor:pointer;white-space:nowrap;transition:all var(--transition-fast);-webkit-tap-highlight-color:transparent;touch-action:manipulation;border:none;padding:8px 16px;font-family:inherit;font-size:.88rem;font-weight:600;display:inline-flex}.wb-selection-btn:hover{background:var(--color-primary-hover);box-shadow:var(--shadow-xl);transform:translateY(-1px)}.wb-selection-btn:active{transform:translateY(0)}.selection-tts .tts-btn{-webkit-tap-highlight-color:transparent;touch-action:manipulation}.wb-selection-loading{align-items:center;gap:var(--space-xs);color:var(--color-primary);background:var(--color-surface);border:1px solid var(--color-primary-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);white-space:nowrap;padding:8px 16px;font-size:.88rem;font-weight:600;display:inline-flex}.wb-toast-container{z-index:10000;gap:var(--space-sm);pointer-events:none;flex-direction:column;display:flex;position:fixed;top:20px;right:20px}.wb-toast{border-radius:var(--radius-md);box-shadow:var(--shadow-lg);pointer-events:auto;max-width:360px;padding:12px 20px;font-size:.9rem;font-weight:600;animation:.3s toastIn,.3s 2.7s forwards toastOut}.wb-toast-success{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-success)}.wb-toast-error{background:var(--color-error-bg);color:var(--color-error);border:1px solid var(--color-error-border)}.wb-toast-warn{background:var(--color-surface);color:var(--color-warning);border:1px solid var(--color-warning)}@keyframes toastIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes toastOut{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(40px)}}.wb-review-modes{gap:var(--space-md);flex-direction:column;display:flex}.wb-review-mode-btn{align-items:flex-start;gap:var(--space-xs);padding:var(--space-lg);background:var(--color-bg);border:2px solid var(--color-border);border-radius:var(--radius-lg);cursor:pointer;transition:all var(--transition-fast);text-align:left;flex-direction:column;font-family:inherit;display:flex}.wb-review-mode-btn:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md)}.wb-review-mode-icon{font-size:1.8rem}.wb-review-mode-name{color:var(--color-text);font-size:1rem;font-weight:700}.wb-review-mode-desc{color:var(--color-text-secondary);font-size:.82rem}.wb-review-progress{color:var(--color-text-muted);margin-left:var(--space-sm);font-size:.85rem;font-weight:400}.modal-dialog-lg{max-width:560px}.wb-flashcard-container{align-items:center;gap:var(--space-lg);flex-direction:column;display:flex}.wb-flashcard{perspective:1000px;cursor:pointer;width:100%;height:260px}.wb-flashcard-front,.wb-flashcard-back{padding:var(--space-lg);border-radius:var(--radius-lg);backface-visibility:hidden;flex-direction:column;justify-content:center;align-items:center;transition:transform .5s;display:flex;position:absolute;inset:0}.wb-flashcard-front{background:var(--gradient-primary);color:#fff;box-shadow:var(--shadow-accent-lg)}.wb-flashcard-back{background:var(--color-bg);border:2px solid var(--color-primary-border);transform:rotateY(180deg)}.wb-flashcard-flipped .wb-flashcard-front{transform:rotateY(-180deg)}.wb-flashcard-flipped .wb-flashcard-back{transform:rotateY(0)}.wb-flashcard-word{margin-bottom:var(--space-sm);font-size:1.8rem;font-weight:700}.wb-flashcard-hint{opacity:.7;font-size:.85rem}.wb-flashcard-translation{color:var(--color-text);margin-bottom:var(--space-sm);font-size:1.4rem;font-weight:700}.wb-flashcard-example{color:var(--color-text-secondary);text-align:center;font-size:.88rem;font-style:italic;line-height:1.5}.wb-flashcard-actions{gap:var(--space-md);display:flex}.wb-spelling-container{gap:var(--space-lg);flex-direction:column;display:flex}.wb-spelling-prompt{text-align:center;padding:var(--space-lg);background:var(--color-bg);border-radius:var(--radius-md)}.wb-spelling-zh{color:var(--color-text);margin-bottom:var(--space-sm);font-size:1.4rem;font-weight:700}.wb-spelling-example{color:var(--color-text-muted);font-size:.85rem;font-style:italic}.wb-spelling-input{text-align:center;letter-spacing:.05em;font-size:1.2rem}.wb-spelling-correct{border-color:var(--color-success)!important;background-color:#10b9810d!important}.wb-spelling-wrong{border-color:var(--color-error)!important;background-color:#ef44440d!important}.wb-spelling-result{text-align:center;padding:var(--space-md);border-radius:var(--radius-md);font-size:1rem;font-weight:600}.wb-spelling-result-correct{color:var(--color-success);background:#10b9811a}.wb-spelling-result-wrong{color:var(--color-error);background:#ef44441a}.wb-spelling-actions{justify-content:center;display:flex}.wb-review-complete{align-items:center;gap:var(--space-lg);flex-direction:column;display:flex}.wb-score-num{color:var(--color-primary);font-size:2.5rem;font-weight:700}.wb-score-label{color:var(--color-text-secondary);font-size:1rem}.wb-review-complete-actions{gap:var(--space-md);display:flex}.wb-cat-add-form{gap:var(--space-sm);margin-bottom:var(--space-lg);display:flex}.wb-cat-add-form .form-input{flex:1}.wb-cat-list{gap:var(--space-xs);flex-direction:column;display:flex}.wb-cat-item{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.wb-cat-item-row{align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);display:flex}.wb-cat-item-name{color:var(--color-text);flex:1;font-size:.95rem;font-weight:600}.wb-cat-item-count{color:var(--color-text-muted);font-size:.8rem}.wb-cat-item-actions{gap:var(--space-xs);display:flex}.wb-cat-edit-row{align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);display:flex}.wb-cat-edit-row .form-input{flex:1}@media (width<=520px){.wb-drawer{width:100vw}.header-wb-btn{padding:4px 12px;font-size:.82rem}.selection-tts .tts-btn{width:36px;height:36px;font-size:1rem}.wb-selection-btn{padding:10px 18px;font-size:.92rem}.wb-fab{width:48px;height:48px;font-size:1.2rem;bottom:16px;right:16px}.wb-flashcard{height:220px}.wb-flashcard-word{font-size:1.4rem}}.user-menu{position:relative}.user-menu-dropdown{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);min-width:230px;box-shadow:var(--shadow-xl);z-index:1300;flex-direction:column;padding:6px;animation:.2s cubic-bezier(.16,1,.3,1) slideUp;display:flex;position:absolute;top:calc(100% + 8px);right:0}.user-menu-quota{border-bottom:1px solid var(--color-border);color:var(--color-text-secondary);margin-bottom:4px;padding:8px 10px;font-size:13px}.user-menu-item{text-align:left;color:var(--color-text);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:10px 12px;font-size:14px}.user-menu-item:hover{background:var(--color-primary-light)}.user-menu-item.danger{color:var(--color-error)}.user-menu-item.danger:hover{background:var(--color-error-bg)}.btn-danger{background:var(--color-error);color:#fff;width:100%}.btn-danger:hover:not(:disabled){background:#dc2626}.score-badge{background:var(--gradient-primary);box-shadow:var(--shadow-accent);color:#fff;vertical-align:middle;border:none;border-radius:999px;align-items:baseline;gap:2px;margin-left:12px;padding:3px 16px;font-size:20px;font-weight:800;display:inline-flex}.score-badge-max{color:#fffc;font-size:13px;font-weight:500}.history-save-note{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary);border-radius:10px;margin:8px 0;padding:8px 14px;font-size:13px}.history-save-note.saved{color:var(--color-success);border-color:var(--color-success)}.history-save-note.error{color:var(--color-error);border-color:var(--color-error-border);background:var(--color-error-bg)}.history-tabs{gap:8px;padding:0 16px 12px;display:flex}.history-tab{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;border-radius:10px;flex:1;padding:9px 0;font-size:14px}.history-tab.active{background:var(--color-primary-light);border-color:var(--color-primary-border);color:var(--color-primary);font-weight:600}.history-list{flex:1;padding:0 16px 16px;overflow-y:auto}.history-item{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);align-items:flex-start;gap:10px;margin-bottom:10px;padding:12px;display:flex}.history-item:hover{border-color:var(--color-primary-border);box-shadow:var(--shadow-md);transform:translateY(-1px)}.history-thumb{object-fit:cover;border:1px solid var(--color-border);border-radius:8px;flex-shrink:0;width:52px;height:52px}.history-item-main{flex:1;min-width:0}.history-item-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.history-item-type{color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;overflow:hidden}.history-item-score{background:var(--color-primary-light);border:1px solid var(--color-primary-border);color:var(--color-primary);border-radius:999px;flex-shrink:0;padding:1px 10px;font-size:13px;font-weight:700}.history-item-preview{color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:13px;overflow:hidden}.history-item-date{color:var(--color-text-muted);margin-top:4px;font-size:12px}.history-stats{flex:1;padding:0 16px 16px;overflow-y:auto}.history-stats-summary{gap:10px;margin-bottom:16px;display:flex}.history-stats-summary .wb-stat{flex:1}.history-stats-title{color:var(--color-text-secondary);margin:16px 0 8px;font-size:14px}.score-chart{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;width:100%;height:auto}.score-chart-grid{stroke:var(--color-border);stroke-width:1px}.score-chart-tick{fill:var(--color-text-muted);font-size:10px}.score-chart-area{fill:var(--color-primary-light);opacity:.7}.score-chart-line{fill:none;stroke:var(--color-primary);stroke-width:2px;stroke-linejoin:round}.score-chart-dot{fill:var(--color-primary);stroke:var(--color-surface);stroke-width:2px}.score-chart-empty{text-align:center;color:var(--color-text-muted);background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;padding:40px 0;font-size:14px}.history-bytype{flex-direction:column;gap:8px;display:flex}.history-bytype-row{align-items:center;gap:10px;font-size:13px;display:flex}.history-bytype-name{text-overflow:ellipsis;white-space:nowrap;width:130px;color:var(--color-text);flex-shrink:0;overflow:hidden}.history-bytype-bar-wrap{background:var(--color-border);border-radius:999px;flex:1;height:10px;overflow:hidden}.history-bytype-bar{background:linear-gradient(90deg, var(--color-primary), var(--color-primary-hover));border-radius:999px;height:100%}.history-bytype-value{text-align:right;width:90px;color:var(--color-text-secondary);flex-shrink:0}.history-detail-score{margin-left:10px;font-size:15px}.history-detail-images{flex-wrap:wrap;gap:8px;margin-bottom:12px;display:flex}.history-detail-images img{object-fit:cover;border:1px solid var(--color-border);border-radius:8px;width:96px;height:96px}.history-detail-source{background:var(--color-bg);border:1px solid var(--color-border);border-radius:10px;margin-bottom:12px;padding:10px 14px;font-size:13px}.history-detail-source summary{cursor:pointer;color:var(--color-text-secondary)}.history-detail-source-text{white-space:pre-wrap;color:var(--color-text-secondary);margin-top:8px;line-height:1.7}.history-detail-result{font-size:14px;line-height:1.8}.history-detail-date{color:var(--color-text-muted);text-align:right;margin-top:16px;font-size:12px}.auth-recovery-code{background:var(--color-primary-light);border:2px dashed var(--color-primary-border);text-align:center;letter-spacing:6px;color:var(--color-primary);-webkit-user-select:all;user-select:all;border-radius:12px;margin:18px 0;padding:18px;font-size:34px;font-weight:700}.auth-warning{color:var(--color-error);margin:12px 0 16px;font-size:13px;line-height:1.6}.auth-submit.secondary{background:var(--color-surface);color:var(--color-primary);border:1px solid var(--color-primary-border);margin-bottom:10px}.auth-submit.secondary:hover:not(:disabled){background:var(--color-primary-light)}.auth-link{color:var(--color-primary);cursor:pointer;background:0 0;border:none;margin-top:14px;font-size:13px}.auth-link:hover{text-decoration:underline}.mode-switch{border:1px solid var(--color-border);border-radius:10px;display:inline-flex;overflow:hidden}.mode-btn{background:var(--color-surface);color:var(--color-text-secondary);cursor:pointer;white-space:nowrap;border:none;padding:8px 12px;font-size:13px}.mode-btn.active{background:var(--color-primary-light);color:var(--color-primary);font-weight:600}.panel-hint{color:var(--color-text-muted);margin:0 0 8px;font-size:12px}.mode-tag{background:var(--color-primary-light);border:1px solid var(--color-primary-border);color:var(--color-primary);vertical-align:middle;border-radius:999px;margin-left:6px;padding:0 7px;font-size:11px;display:inline-block}.feedback-group{gap:4px;display:inline-flex}.feedback-btn{border:1px solid var(--color-border);background:var(--color-surface);cursor:pointer;border-radius:8px;padding:5px 10px;font-size:15px;line-height:1}.feedback-btn:hover{border-color:var(--color-primary-border)}.feedback-btn.active-good{background:var(--color-primary-light);border-color:var(--color-success)}.feedback-btn.active-bad{background:var(--color-error-bg);border-color:var(--color-error)}.report-btn{width:100%;margin:12px 0 4px}.report-loading{text-align:center;color:var(--color-text-secondary);padding:48px 0}.report-loading-hint{color:var(--color-text-muted);margin-top:10px;font-size:13px}.report-content{border:1px solid var(--color-border);background:var(--color-bg);border-radius:10px;padding:16px}.report-copy-btn{margin-top:12px}.admin-invite-line{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-secondary);border-radius:10px;padding:10px 14px;font-size:13px}.admin-invite-on{color:var(--color-primary);font-weight:600}.admin-invite-off{color:var(--color-text)}.admin-feedback{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;gap:16px;padding:10px 14px;font-size:14px;display:flex}.admin-feedback-rate{color:var(--color-primary);margin-left:auto;font-weight:600}.admin-user-table{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;font-size:13px;overflow:hidden}.admin-user-row{border-bottom:1px solid var(--color-border);color:var(--color-text);grid-template-columns:1.6fr 1fr .6fr .6fr .6fr;gap:6px;padding:9px 12px;display:grid}.admin-user-row:last-child{border-bottom:none}.admin-user-head{background:var(--color-bg);color:var(--color-text-secondary);font-weight:600}.admin-user-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
