: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,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,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);margin:0}button,input,textarea{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent;min-height:44px}a{color:inherit;-webkit-tap-highlight-color:transparent;text-decoration:none}::selection{background:#2563eb29}.phone-shell{z-index:1;width:min(100%,430px);min-height:100vh;padding:calc(16px + env(safe-area-inset-top)) 16px calc(96px + env(safe-area-inset-bottom));background:var(--bg);margin:0 auto;position:relative}.topbar{--topbar-side:112px;grid-template-columns:var(--topbar-side) minmax(0,1fr) var(--topbar-side);align-items:center;gap:0;min-height:50px;margin:0 0 14px;display:grid}.top-left-actions,.topbar-actions{align-items:center;width:100%;min-width:0;display:flex}.top-left-actions{justify-content:flex-start;gap:4px}.topbar-actions{justify-content:flex-end;gap:0}.topbar-spacer{width:100%;height:44px}.topbar>:last-child{justify-self:end}.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;padding:0;transition:background .15s,opacity .15s;display:grid}.icon-btn:active{opacity:.5}.top-title{text-align:center;justify-self:center;min-width:0;max-width:210px}.top-title span{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.2;display:block;overflow:hidden}.top-title strong{color:var(--text);margin-top:2px;font-size:16px;font-weight:600;line-height:1.1;display:block}.shared-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:none}.shared-primary-btn,.shared-secondary-btn{border-radius:var(--r-sm);justify-content:center;align-items:center;gap:8px;min-height:44px;font-weight:600;display:inline-flex}.shared-primary-btn{color:#fff;background:var(--brand-500);border:0}.shared-primary-btn:active{background:var(--brand-600)}.shared-secondary-btn{border:1px solid var(--border);color:var(--brand-600);background:var(--surface)}.shared-section-title{color:var(--text);margin:0;font-size:17px;font-weight:650;line-height:1.3}@media (prefers-reduced-motion:reduce){*,:before{animation:none!important}}@media (min-width:720px){body{background:#e9eaed;padding:28px 0}.phone-shell{min-height:calc(100vh - 56px);box-shadow:var(--shadow-pop);border-radius:24px}}@media (max-width:370px){.phone-shell{padding-left:12px;padding-right:12px}.topbar{--topbar-side:96px}.icon-btn{width:38px;height:38px;min-height:38px}.top-title strong{font-size:16px}}.upload-hero h1{text-align:center;letter-spacing:-.01em;color:var(--text);margin:42px 2px 16px;font-size:19px;font-weight:700;line-height:1.25}h1,h2,p{margin:0}.upload-card,.panel,.assessment-card,.report-summary,.report-toolbar{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg)}.upload-card{padding:14px}.upload-zone{border:1.5px dashed var(--brand-300);border-radius:var(--r-md);background:var(--surface-2);min-height:166px;color:var(--brand-600);text-align:center;place-items:center;gap:10px;padding:24px 20px;transition:border-color .15s,background .15s;display:grid}.upload-zone svg{color:var(--brand-500)}.upload-zone input{display:none}.upload-zone strong{width:100%;color:var(--text);overflow-wrap:anywhere;word-break:break-word;white-space:normal;font-size:17px;font-weight:600;line-height:1.3}.upload-zone span{color:var(--text-muted);font-size:13px;line-height:1.5}.selected-file-list{gap:8px;margin-top:12px;display:grid}.selected-file-row{border-radius:var(--r-sm);background:var(--brand-50);min-height:42px;color:var(--text-2);justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.selected-file-row span{overflow-wrap:anywhere;word-break:break-word;white-space:normal;flex:auto;min-width:0;font-size:13px;line-height:1.35}.selected-file-row button{border-radius:var(--r-pill);width:28px;height:28px;min-height:28px;color:var(--brand-600);background:#2563eb17;border:0;flex:0 0 28px;place-items:center;padding:0;display:grid}.selected-file-row button:active{background:var(--brand-100)}.primary-btn,.ghost-btn,.download-btn,.compact-action-btn{border-radius:var(--r-sm);white-space:nowrap;border:0;justify-content:center;align-items:center;gap:8px;min-height:48px;font-weight:600;transition:background .15s,opacity .15s;display:inline-flex}.primary-btn svg,.ghost-btn svg,.download-btn svg,.compact-action-btn svg,.icon-btn svg{flex:none}.primary-btn{color:#fff;background:var(--brand-500);width:100%;min-height:50px;margin-top:14px;font-size:16px}.primary-btn:active{background:var(--brand-600)}.ghost-btn{width:100%;min-height:48px;color:var(--brand-600);background:var(--brand-50);margin-top:10px;font-size:16px}.ghost-btn:active{background:var(--brand-100)}.download-btn{min-height:42px;color:var(--brand-600);background:var(--brand-50);white-space:nowrap;padding:0 13px;font-size:13px}.download-btn:active{background:var(--brand-100)}.compact-action-btn{min-height:42px;color:var(--brand-600);background:var(--brand-50);padding:0 12px;font-size:13px}.compact-action-btn:active{background:var(--brand-100)}button:disabled{cursor:not-allowed;opacity:.5}.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;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);font-size:12px}.notice{border-radius:var(--r-sm);min-height:44px;color:var(--text-2);background:var(--surface-2);overflow-wrap:anywhere;align-items:center;gap:8px;margin:0 0 12px;padding:11px 13px;font-size:13px;line-height:1.55;display:flex}.notice.error{color:var(--danger-tx);background:var(--danger-bg)}.share-toast{border-radius:var(--r-sm);min-height:38px;color:var(--success-tx);background:var(--success-bg);overflow-wrap:anywhere;align-items:center;gap:7px;margin:-4px 0 12px;padding:9px 12px;font-size:13px;font-weight:600;display:flex}.share-toast svg{color:var(--success)}.manual-copy-backdrop{z-index:30;background:#0006;place-items:center;padding:18px;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.manual-copy-modal{border-radius:var(--r-lg);background:var(--surface);width:min(100%,390px);box-shadow:var(--shadow-pop);gap:10px;padding:16px;display:grid}.manual-copy-title{justify-content:space-between;align-items:center;gap:10px;display:flex}.manual-copy-title strong{color:var(--text);font-size:15px;font-weight:600}.manual-copy-title button{border-radius:var(--r-sm);width:44px;min-height:44px;color:var(--text-muted);background:var(--surface-2);border:0;justify-content:center;align-items:center;display:inline-flex}.manual-copy-modal textarea{resize:vertical;border:1px solid var(--border-strong);border-radius:var(--r-sm);width:100%;min-height:92px;color:var(--text-2);background:var(--surface-2);outline:none;padding:10px;font-size:13px;line-height:1.5}.manual-copy-modal textarea:focus{border-color:var(--brand-400)}.manual-copy-modal>button{border-radius:var(--r-sm);color:#fff;background:var(--brand-500);border:0;min-height:44px;font-weight:600}.panel{padding:14px}.panel-title{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.panel-title h2{color:var(--text);margin:0;font-size:17px;font-weight:600}.history-list{gap:0;display:grid}.history-row-wrap{background:var(--danger);position:relative;overflow:hidden}.history-row-wrap+.history-row-wrap:before{content:"";background:var(--hairline);z-index:2;height:1px;position:absolute;top:0;left:14px;right:0}.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{overflow-wrap:anywhere;word-break:break-word;min-width:0;line-height:1.35;display:block}.history-face strong{color:var(--text);font-size:16px;font-weight:600}.history-face span{color:var(--text-muted);margin-top:4px;font-size:12px}.history-face em{border-radius:var(--r-xs);color:var(--brand-600);background:var(--brand-50);font-variant-numeric:tabular-nums;flex:none;padding:4px 9px;font-size:12px;font-style:normal;font-weight:600}.empty{color:var(--text-muted);background:var(--surface-2);border-radius:var(--r-md);text-align:center;padding:18px;font-size:13px}.processing-card{text-align:center;align-content:center;place-items:center;gap:12px;min-height:300px;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)}}@property --progress{syntax:"<angle>";inherits:false;initial-value:0deg}.progress-ring{--progress:0deg;border-radius:var(--r-pill);background:conic-gradient(from -90deg, var(--brand-500) var(--progress), #e6e8ec 0deg);place-items:center;width:122px;height:122px;transition:--progress .65s cubic-bezier(.4,0,.2,1);display:grid;position:relative}.progress-ring:before{content:"";border:2px solid var(--brand-400);pointer-events:none;border-radius:50%;animation:1.9s ease-out infinite ring-pulse;position:absolute;top:-7px;bottom:-7px;left:-7px;right:-7px}@keyframes ring-pulse{0%{opacity:.55;transform:scale(.9)}80%,to{opacity:0;transform:scale(1.16)}}.progress-ring:after{content:"";border-radius:var(--r-pill);background:var(--surface);position:absolute;top:11px;bottom:11px;left:11px;right:11px}.progress-ring span{z-index:1;color:var(--text);font-variant-numeric:tabular-nums;font-size:24px;font-weight:700;position:relative}.processing-card h2{color:var(--text);margin:6px 0 0;font-size:20px;font-weight:600}.processing-card p{color:var(--text-muted);word-break:break-word;margin:0;font-size:14px;line-height:1.5}.timeline{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);gap:0;margin-top:16px;display:grid;overflow:hidden}.timeline-row{grid-template-columns:62px 1fr;align-items:start;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)}}.report-summary{grid-template-columns:1fr auto;align-items:start;gap:12px;margin-bottom:10px;padding:18px 16px;display:grid}.report-summary-main{min-width:0}.report-summary p,.report-toolbar p{color:var(--text-muted);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:1.35;display:block}.report-summary h1{color:var(--text);letter-spacing:-.01em;overflow-wrap:anywhere;margin:5px 0 4px;font-size:24px;font-weight:700;line-height:1.15}.report-toolbar{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;padding:12px;display:flex}.report-toolbar div{flex:auto;min-width:0}.report-toolbar .compact-action-btn{flex:none}.report-toolbar span{color:var(--text-subtle);font-variant-numeric:tabular-nums;margin-top:2px;font-size:12px;display:block}.assessment-card{padding:16px}.markdown-body{color:var(--text-2);overflow-wrap:anywhere;font-size:14px;line-height:1.72}.markdown-body h1,.markdown-body h2,.markdown-body h3{color:var(--text);letter-spacing:0;font-weight:700;line-height:1.3}.markdown-body h1{border-bottom:1px solid var(--hairline);margin:0 0 16px;padding-bottom:12px;font-size:20px}.markdown-body h2{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);margin:24px 0 12px;padding:13px 0 12px;font-size:17px}.markdown-body h2:first-child{border-top:0;margin-top:0;padding-top:0}.markdown-body h3{color:var(--brand-600);margin:20px 0 10px;font-size:15px}.markdown-body p{margin:0 0 12px}.markdown-body ul,.markdown-body ol{gap:8px;margin:8px 0 16px;padding-left:0;list-style:none;display:grid}.markdown-body li{border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--border);margin:0;padding:10px 12px}.markdown-body strong{color:var(--text);font-weight:700}.markdown-body code{color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-xs);font-variant-numeric:tabular-nums;padding:1px 5px}.table-scroll{border:1px solid var(--border);border-radius:var(--r-md);width:100%;margin:12px 0 16px;overflow-x:auto}.markdown-body table{border-collapse:collapse;table-layout:auto;font-variant-numeric:tabular-nums;width:100%;min-width:100%;margin:0;font-size:13px;line-height:1.45}.markdown-body th,.markdown-body td{border:0;border-bottom:1px solid var(--hairline);border-right:1px solid var(--hairline);text-align:left;vertical-align:top;word-break:break-word;overflow-wrap:anywhere;padding:10px 9px}.markdown-body th{color:var(--brand-700);background:var(--brand-50);font-weight:700}.markdown-body td{color:var(--text-2)}.markdown-body th:last-child,.markdown-body td:last-child{border-right:0}.markdown-body tr:last-child td{border-bottom:0}.record-list{gap:10px;margin:12px 0 16px;display:grid}.record-card{border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2);padding:12px}.record-card>strong{color:var(--text);margin-bottom:10px;font-size:15px;font-weight:600;line-height:1.35;display:block}.record-card dl{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;display:grid}.record-card dl div{border-radius:var(--r-sm);background:var(--surface);border:1px solid var(--border);min-width:0;padding:8px}.record-card dt{color:var(--text-muted);letter-spacing:.01em;font-size:12px;line-height:1.3}.record-card dd{color:var(--text);letter-spacing:-.03em;overflow-wrap:anywhere;font-variant-numeric:tabular-nums;margin:5px 0 0;font-size:15px;font-weight:600;line-height:1.3}.report-meta-note{border-top:1px solid var(--hairline);grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:18px 0 2px;padding-top:14px;display:grid}.report-meta-note div{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2);min-width:0;padding:10px}.report-meta-note .wide{grid-column:1/-1}.report-meta-note span{color:var(--text-muted);font-size:12px;line-height:1.3;display:block}.report-meta-note strong{color:var(--text);letter-spacing:-.02em;overflow-wrap:anywhere;font-variant-numeric:tabular-nums;margin-top:5px;font-size:14px;font-weight:600;line-height:1.4;display:block}.markdown-body blockquote{color:var(--text-2);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-sm);margin:14px 0 16px;padding:12px 13px}.markdown-body hr{border:0;border-top:1px solid var(--hairline);margin:22px 0}.report-empty{min-height:220px;color:var(--text-muted);align-content:center;place-items:center;gap:12px;display:grid}.spin{animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:370px){.markdown-body{font-size:13px}}.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}.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}@keyframes polish-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}button:not(.history-face){transition:background .16s,color .16s,border-color .16s,box-shadow .16s,opacity .16s,transform .14s cubic-bezier(.34,1.45,.5,1)}button:not(.history-face):not(:disabled):active{transform:scale(.97)}.portal-fab,.history-fab,.icon-btn{transition:opacity .16s,transform .14s cubic-bezier(.34,1.45,.5,1)}.portal-fab:active,.history-fab:active,button.icon-btn:not(:disabled):active{transform:scale(.92)}.upload-hero,.upload-panel{animation:.46s cubic-bezier(.34,1.4,.5,1) backwards polish-rise}.upload-panel{animation-delay:50ms}.upload-hero h1{letter-spacing:-.02em}.llm-report-document p,.llm-report-document li{line-height:1.72}.empty-card{gap:12px;padding:30px 20px}.empty-card svg{opacity:.92;width:40px;height:40px}.upload-zone:active{border-color:var(--brand-400)}.llm-report-document h2{border-top:none;margin-top:22px;padding-top:0;padding-left:0;position:relative}.llm-report-document ul>li::marker{color:var(--brand-400)}.llm-report-document ol>li::marker{color:var(--brand-600);font-weight:600}.llm-report-document h3{margin-top:16px}.report-quote{border-radius:var(--r-md);border-left-width:1px}.report-summary p{letter-spacing:.02em;font-size:11px}.report-summary h1{margin:6px 0 0}.report-toolbar p{color:var(--text-2);align-items:center;gap:7px;display:flex}.report-toolbar p:before{content:"";border-radius:var(--r-pill);background:var(--brand-500);flex:none;width:7px;height:7px}.markdown-body h2{border-top:0;border-bottom:0;padding:0}.markdown-body h3{color:var(--brand-700);font-size:14px}.markdown-body li{background:var(--surface);border-color:var(--hairline);position:relative}.markdown-body blockquote{background:var(--brand-50);border-color:var(--brand-100);border-radius:var(--r-sm)}.report-meta-note strong{letter-spacing:-.03em;font-size:15px}.record-card dd{word-break:break-word}.report-empty{color:var(--text-2)}.report-empty svg{color:var(--brand-400)}.report-empty span{color:var(--text-muted);font-size:14px;display:block}.report-summary,.report-toolbar,.assessment-card{animation:.42s cubic-bezier(.34,1.4,.5,1) backwards polish-rise}.report-toolbar{animation-delay:40ms}.assessment-card{animation-delay:80ms}.upload-hero h1{font-weight:650}.upload-hero:before{content:"";background:var(--brand-200);border-radius:1px;width:28px;height:3px;margin:0 auto 10px;display:block}.upload-zone{background:var(--brand-50);border-color:var(--brand-400)}.upload-zone:active{background:var(--brand-100)}.selected-upload-zone,.selected-upload-zone:active{background:var(--surface-2)}.upload-zone span{max-width:30ch;line-height:1.45}.upload-zone-actions button{border-radius:var(--r-md);min-height:44px}.empty-card svg{color:var(--brand-400)}@supports (-webkit-touch-callout:none){input:not([type=checkbox]):not([type=radio]),select,textarea{font-size:16px}}
