*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--bg: #f6f7fb;--panel: #ffffff;--text: #1c2333;--text-dim: #6b7280;--primary: #4f46e5;--primary-dark: #4338ca;--border: #e5e7eb;--ok: #059669;--err: #dc2626}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app{max-width:720px;margin:0 auto;padding:32px 20px 40px}.header{text-align:center;margin-bottom:24px}.header h1{font-size:26px;font-weight:700}.header-sub{color:var(--text-dim);margin-top:8px;font-size:14px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:20px;box-shadow:0 1px 3px #0000000a;display:flex;flex-direction:column;gap:16px}.upload-drop{border:2px dashed var(--border);border-radius:12px;padding:28px 16px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.upload-drop:hover,.upload-drop.dragging{border-color:var(--primary);background:#f5f5ff}.upload-drop-icon{font-size:28px}.upload-drop-title{font-weight:600;margin-top:6px}.upload-drop-sub{color:var(--text-dim);font-size:13px;margin-top:4px}.upload-error{color:var(--err);font-size:13px;margin-top:8px}.upload-preview{display:flex;align-items:center;gap:12px}.upload-preview img{width:72px;height:72px;object-fit:cover;border-radius:10px;border:1px solid var(--border)}.upload-preview-meta{flex:1;display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--text-dim)}.desc-input{width:100%;border:1px solid var(--border);border-radius:12px;padding:12px 14px;font-size:15px;font-family:inherit;resize:vertical;min-height:72px;outline:none;transition:border-color .15s}.desc-input:focus{border-color:var(--primary)}.examples{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.examples-label{font-size:13px;color:var(--text-dim)}.example-chip{border:1px solid var(--border);background:#fafafa;border-radius:999px;padding:4px 10px;font-size:12px;color:var(--text-dim);cursor:pointer;transition:all .15s}.example-chip:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:10px;padding:10px 18px;font-size:15px;font-weight:600;cursor:pointer;text-decoration:none;transition:all .15s;font-family:inherit}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-dark)}.btn-primary:disabled{background:#c7c7d4;cursor:not-allowed}.btn-ghost{background:#f3f4f6;color:var(--text)}.btn-ghost:hover{background:#e5e7eb}.btn-generate{padding:13px;font-size:16px}.progress{display:flex;flex-direction:column;gap:8px}.class-info{font-size:14px}.class-reason{color:var(--text-dim);font-size:13px}.stage-msg{display:flex;align-items:center;gap:8px;color:var(--text-dim);font-size:14px}.spinner{width:18px;height:18px;border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}.spinner-sm{width:14px;height:14px}@keyframes spin{to{transform:rotate(360deg)}}.error-box{background:#fef2f2;border:1px solid #fecaca;color:var(--err);border-radius:10px;padding:12px 14px;font-size:14px}.result{display:flex;flex-direction:column;gap:16px;margin-top:4px}.result-head{display:flex;flex-wrap:wrap;gap:8px}.badge{background:#eef2ff;color:var(--primary);border-radius:999px;padding:4px 12px;font-size:13px;font-weight:600}.badge-ghost{background:#f3f4f6;color:var(--text-dim);font-weight:500}.badge-ok{background:#ecfdf5;color:var(--ok);font-weight:500}.result-gif{background:repeating-conic-gradient(#f0f0f3,#f0f0f3 25%,#fff 0%,#fff 50%) 0 0 / 20px 20px;border:1px solid var(--border);border-radius:12px;display:flex;justify-content:center;padding:12px}.result-gif img{max-width:100%;max-height:420px}.result-actions{display:flex;gap:10px}.result-actions .btn-primary{flex:1}.result-sheet{text-align:center}.result-sheet img{max-width:100%;max-height:260px;border-radius:10px;border:1px solid var(--border)}.result-sheet-cap{font-size:12px;color:var(--text-dim);margin-top:6px}.result-waiting{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 0;color:var(--text-dim)}.footer{text-align:center;color:var(--text-dim);font-size:12px;margin-top:24px}
