:root{--brand-50:#eef4fd;--brand-100:#dce8fb;--brand-200:#bcd3f7;--brand-300:#8fb4f1;--brand-400:#5a8eea;--brand-500:#2563eb;--brand-600:#1d56d6;--brand-700:#1a45ad;--bg:#f2f3f5;--surface:#fff;--surface-2:#f7f8fa;--press:#f0f1f3;--text:#1a1a1f;--text-2:#4a4d57;--text-muted:#8a8f9a;--text-subtle:#b0b4bd;--border:#e6e7ea;--border-strong:#d9dbe0;--hairline:#0000000f;--success:#07c160;--success-bg:#e8f7ee;--success-tx:#0a9a52;--warning:#fa9d3b;--warning-bg:#fdf2e3;--warning-tx:#b9700c;--danger:#fa5151;--danger-bg:#fdecec;--danger-tx:#c93434;--r-xs:6px;--r-sm:8px;--r-md:10px;--r-lg:14px;--r-pill:999px;--shadow-pop:0 8px 30px #0000001f, 0 2px 8px #0000000f;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Segoe UI,system-ui,Inter,sans-serif}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{min-width:320px;color:var(--text);background:var(--bg);overflow-x:hidden}button,input{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}::selection{background:#2563eb29}@media (prefers-reduced-motion:reduce){*,:before{animation:none!important}}.phone-shell{z-index:1;width:min(430px,100%);min-height:100vh;padding:calc(16px + env(safe-area-inset-top)) 16px calc(96px + env(safe-area-inset-bottom));margin:0 auto;position:relative}.report-shell{padding-bottom:calc(24px + env(safe-area-inset-bottom))}h1,h2,p{margin:0}.upload-hero{text-align:center;margin:42px 2px 18px}.upload-hero-row{text-align:center;position:relative}.upload-hero-row .icon-btn{position:absolute;top:50%;right:0;transform:translateY(-50%)}.upload-hero h1{letter-spacing:-.01em;color:var(--text);margin:0;font-size:24px;font-weight:700;line-height:1.25}.upload-panel,.status-card,.summary-card,.action-card,.source-card,.report-card,.timeline{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}.upload-panel{padding:14px}.upload-zone{border:1.5px dashed var(--brand-300);background:var(--surface-2);width:100%;min-height:166px;color:var(--brand-600);border-radius:var(--r-md);text-align:center;cursor:pointer;align-content:center;place-items:center;gap:10px;padding:24px 20px;transition:border-color .15s,background .15s;display:grid}.upload-zone.drag-active{border-color:var(--brand-500);background:var(--brand-50)}.upload-zone:active{background:var(--press)}.upload-zone svg{color:var(--brand-500)}.upload-zone strong{width:100%;color:var(--text);overflow-wrap:anywhere;padding:0 12px;font-size:17px;font-weight:600;line-height:1.25}.upload-zone span{color:var(--text-muted);font-size:13px;line-height:1.5}.selected-file-list{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);gap:0;margin-top:12px;padding:6px 12px;display:grid}.selected-file-toolbar{justify-content:space-between;align-items:center;gap:8px;padding:8px 0;display:flex}.selected-file-toolbar>span{color:var(--text-2);font-size:13px;font-weight:600}.selected-file-toolbar>div{align-items:center;gap:6px;display:flex}.add-more-file{border-radius:var(--r-sm);background:var(--brand-50);min-height:44px;color:var(--brand-600);border:0;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;transition:background .15s;display:inline-flex}.add-more-file:active{background:var(--brand-100)}.clear-files{border-radius:var(--r-sm);background:var(--surface);min-height:44px;color:var(--text-muted);border:0;padding:0 12px;font-size:13px;font-weight:600;transition:background .15s}.clear-files:active{background:var(--press)}.selected-file{border-top:1px solid var(--hairline);min-height:48px;color:var(--text-2);grid-template-columns:20px minmax(0,1fr) 38px;align-items:center;gap:10px;padding:8px 0;display:grid}.selected-file svg{color:var(--brand-500)}.selected-file strong{color:var(--text);overflow-wrap:anywhere;font-size:13px;font-weight:600;line-height:1.35;display:block}.selected-file span{color:var(--text-subtle);font-variant-numeric:tabular-nums;font-size:12px}.selected-file button{border-radius:var(--r-sm);width:38px;height:38px;min-height:44px;color:var(--danger-tx);background:var(--danger-bg);border:0;justify-content:center;align-items:center;transition:background .15s;display:inline-flex}.selected-file button:active{background:var(--danger-bg)}.primary-btn,.soft-btn{border-radius:var(--r-sm);border:0;justify-content:center;align-items:center;gap:8px;width:100%;min-height:50px;font-size:16px;font-weight:600;transition:background .15s,opacity .15s;display:inline-flex}.primary-btn{color:#fff;background:var(--brand-500);margin-top:14px}.primary-btn:active{background:var(--brand-600)}.primary-btn:disabled{opacity:.5}.soft-btn{min-height:48px;color:var(--brand-600);background:var(--brand-50)}.soft-btn:active{background:var(--brand-100)}.feature-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px;display:grid}.feature-grid div{border-radius:var(--r-md);background:var(--surface);border:1px solid var(--border);min-height:78px;color:var(--text-2);text-align:center;align-content:center;place-items:center;gap:8px;padding:12px 8px;font-size:12px;font-weight:500;transition:background .15s;display:grid}.feature-grid div:active{background:var(--press)}.feature-grid div svg{color:var(--brand-500)}.feature-grid span{color:var(--text-2)}.report-top,.simple-top{padding:calc(11px + env(safe-area-inset-top)) 16px 11px;-webkit-backdrop-filter:blur(14px)saturate(120%);backdrop-filter:blur(14px)saturate(120%);border-bottom:1px solid var(--hairline);background:#f2f3f5eb;grid-template-columns:48px minmax(0,1fr) auto;align-items:center;gap:10px;margin:-16px -16px 14px;display:grid}.report-top{z-index:5;position:sticky;top:0}.report-top>div,.simple-top>div{text-align:center;gap:2px;min-width:0;display:grid}.report-top .report-actions{text-align:initial;align-items:center;gap:0;display:flex}.report-top span,.simple-top span{color:var(--text-muted);font-size:11px}.report-top strong,.simple-top strong{color:var(--text);overflow-wrap:anywhere;font-size:16px;font-weight:600;line-height:1.2}.icon-btn{border-radius:var(--r-sm);width:44px;height:44px;min-height:44px;color:var(--brand-600);background:0 0;border:0;place-items:center;transition:opacity .15s;display:grid}.icon-btn:active{opacity:.5}.share-toast{left:50%;top:calc(64px + env(safe-area-inset-top));z-index:20;border-radius:var(--r-sm);color:#fff;max-width:calc(100% - 40px);min-height:38px;box-shadow:var(--shadow-pop);overflow-wrap:anywhere;background:#000000c7;align-items:center;gap:6px;padding:0 14px;font-size:13px;font-weight:500;display:inline-flex;position:fixed;transform:translate(-50%)}.share-toast svg{color:var(--success);flex:none}.history-panel{gap:10px;display:grid}.history-row-wrap{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--danger);position:relative;overflow:hidden}.history-row-wrap .history-delete-btn{background:var(--danger);color:#fff;z-index:0;border:0;border-radius:0;flex-direction:column;justify-content:center;align-items:center;gap:3px;width:72px;min-height:0;padding:0;font-size:12px;font-weight:600;display:flex;position:absolute;top:0;bottom:0;right:0}.history-row-wrap .history-delete-btn:disabled{opacity:.6}.history-face{z-index:1;background:var(--surface);text-align:left;touch-action:pan-y;border:0;border-radius:0;grid-template-columns:1fr auto;align-items:center;gap:12px;width:100%;min-height:68px;padding:14px;transition:transform .34s cubic-bezier(.34,1.4,.5,1),background .15s;display:grid;position:relative}.history-face:active{background:var(--press)}.history-face div{min-width:0}.history-face strong,.history-face span{text-overflow:ellipsis;white-space:nowrap;min-width:0;display:block;overflow:hidden}.history-face strong{color:var(--text);font-size:16px;font-weight:600;line-height:1.35}.history-face span{color:var(--text-muted);font-variant-numeric:tabular-nums;margin-top:4px;font-size:12px}.history-face em{border-radius:var(--r-xs);background:var(--brand-50);min-width:52px;min-height:26px;color:var(--brand-600);white-space:nowrap;justify-content:center;align-items:center;padding:0 9px;font-size:12px;font-style:normal;font-weight:600;display:inline-flex}.empty-state{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);min-height:120px;color:var(--text-muted);text-align:center;align-content:center;place-items:center;padding:32px 18px;font-size:14px;display:grid}.status-card{text-align:center;justify-items:center;gap:12px;padding:32px 20px;animation:.5s cubic-bezier(.34,1.4,.5,1) both card-rise;display:grid}@keyframes card-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.status-card h2{color:var(--text);margin:6px 0 0;font-size:20px;font-weight:600}.status-card p{color:var(--text-muted);font-size:14px;line-height:1.5}.status-card .soft-btn{width:auto;min-width:160px;margin-top:6px}@property --progress{syntax:"<angle>";inherits:false;initial-value:0deg}.progress-circle{--progress:0deg;background:conic-gradient(from -90deg, var(--brand-500) var(--progress), #e6e8ec 0);border-radius:50%;place-items:center;width:122px;height:122px;transition:--progress .65s cubic-bezier(.4,0,.2,1);display:grid;position:relative}.progress-circle:before{content:"";border:2px solid var(--brand-400);pointer-events:none;border-radius:50%;animation:1.9s ease-out infinite ring-pulse;position:absolute;inset:-7px}@keyframes ring-pulse{0%{opacity:.55;transform:scale(.9)}80%,to{opacity:0;transform:scale(1.16)}}.progress-circle:after{content:"";background:var(--surface);border-radius:50%;position:absolute;inset:11px}.progress-circle span{z-index:1;color:var(--text);font-variant-numeric:tabular-nums;font-size:24px;font-weight:700;position:relative}.timeline{margin-top:12px;padding:0;overflow:hidden}.timeline-row{grid-template-columns:58px minmax(0,1fr);gap:12px;padding:13px 14px;display:grid}.timeline-row+.timeline-row{border-top:1px solid var(--hairline)}.timeline-row span{color:var(--text-subtle);font-variant-numeric:tabular-nums;font-size:12px}.timeline-row p{color:var(--text-2);margin:0;font-size:13px;line-height:1.45}.timeline-row.active p{color:var(--brand-600);font-weight:600}.timeline-row.active p:before{content:"";background:var(--brand-500);vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-right:7px;animation:1.3s ease-in-out infinite dot-pulse;display:inline-block}@keyframes dot-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.45;transform:scale(.55)}}.summary-card{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px;display:grid}.summary-card>div{border:1px solid var(--border);border-radius:var(--r-md);align-content:space-between;min-height:74px;padding:12px;display:grid}.summary-card .summary-status{background:var(--surface-2);grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto;align-content:center;align-items:center;min-height:62px}.summary-card span{color:var(--text-muted);font-size:12px;line-height:1.35}.summary-card strong{color:var(--text);letter-spacing:-.03em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere;align-items:center;gap:5px;font-size:15px;font-weight:600;line-height:1.2;display:inline-flex}.summary-card .summary-status strong{color:var(--success-tx);letter-spacing:-.01em;font-size:15px}.action-card,.source-card,.report-card{margin-top:12px;padding:14px}.action-card .primary-btn{margin-top:0;text-decoration:none}.source-card h2{color:var(--text);margin:0 0 6px;font-size:17px;font-weight:600}.source-row{border-top:1px solid var(--hairline);grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:44px;padding:11px 0;font-size:13px;display:grid}.source-row svg{color:var(--brand-500)}.source-row span{color:var(--text-2);overflow-wrap:anywhere}.source-row em{color:var(--text-subtle);font-variant-numeric:tabular-nums;font-size:13px;font-style:normal}.report-card{padding:16px}.markdown-report{overflow-wrap:anywhere;word-break:break-word;width:100%;max-width:100%}.markdown-report h1{border-bottom:1px solid var(--border);color:var(--text);margin:0 0 14px;padding-bottom:12px;font-size:21px;font-weight:700;line-height:1.25}.markdown-report h2{border-top:1px solid var(--hairline);color:var(--text);margin:20px 0 10px;padding-top:12px;font-size:17px;font-weight:600;line-height:1.3}.markdown-report h3{color:var(--text);margin:16px 0 8px;font-size:15px;font-weight:600;line-height:1.35}.markdown-report p,.markdown-report li{color:var(--text-2);font-size:13.5px;line-height:1.75}.markdown-report p{margin:9px 0}.markdown-report ul,.markdown-report ol{margin:8px 0;padding-left:20px}.markdown-report strong{color:var(--text);font-weight:700}.table-fit{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);width:100%;max-width:100%;margin:10px 0 14px;overflow:hidden}.table-fit table{border-collapse:collapse;table-layout:fixed;font-variant-numeric:tabular-nums;width:100%}.table-fit th,.table-fit td{border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);vertical-align:top;overflow-wrap:anywhere;word-break:break-word;padding:7px 6px;font-size:12px;line-height:1.5}.table-fit th:last-child,.table-fit td:last-child{border-right:0}.table-fit tr:last-child td{border-bottom:0}.table-fit th{background:var(--brand-50);color:var(--brand-700);font-weight:700}.table-fit td{color:var(--text-2);font-weight:500}.error-bar{border-radius:var(--r-sm);background:var(--danger-bg);min-height:44px;color:var(--danger-tx);overflow-wrap:anywhere;align-items:center;gap:8px;margin:10px 0;padding:11px 13px;font-size:13px;line-height:1.5;display:flex}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width>=720px){body{background:#e9eaed;padding:28px 0}.phone-shell{background:var(--bg);min-height:calc(100vh - 56px);box-shadow:var(--shadow-pop);border-radius:24px;margin:0 auto}.report-top{background:#f2f3f5f2}}.portal-fab{top:calc(8px + env(safe-area-inset-top));z-index:8;height:44px;color:var(--brand-600,#1d56d6);border-radius:var(--r-sm,8px);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;justify-content:center;align-items:center;gap:2px;padding:0 8px;font-size:15px;font-weight:500;text-decoration:none;display:inline-flex;position:fixed;left:8px}.portal-fab:active{opacity:.5}.fn-tabbar{background:var(--surface,#fff);border-top:1px solid var(--border,#e6e7ea);width:min(100%,430px);padding-bottom:env(safe-area-inset-bottom);z-index:30;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.fn-tab{color:var(--text-muted,#8a8f9a);-webkit-tap-highlight-color:transparent;flex-direction:column;flex:1;align-items:center;gap:3px;padding:8px 0 7px;font-size:11px;text-decoration:none;display:flex}.fn-tab.active{color:var(--brand-500,#2563eb)}.fn-tab:active{opacity:.6}.primary-btn,.secondary-btn,.soft-btn,.download-btn,.upload-zone,.upload-card{border-radius:var(--r-lg)}.history-fab{top:calc(8px + env(safe-area-inset-top));z-index:8;width:44px;height:44px;color:var(--brand-600,#1d56d6);border-radius:var(--r-sm,8px);-webkit-tap-highlight-color:transparent;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex;position:fixed;right:14px}.history-fab:active{opacity:.5}
