﻿:root { --font-display:"Plus Jakarta Sans","Noto Sans SC","Microsoft YaHei",sans-serif; --font-body:"Inter","Noto Sans SC","Microsoft YaHei",sans-serif; --bg:#f4f6fb; --surface:#ffffff; --surface-2:#f4f6fc; --surface-3:#eef1f8; --ink:#141b34; --ink-2:#3a4364; --muted:#6a7290; --muted-2:#9aa1bd; --line:#e8ebf4; --line-2:#dde1ee; --primary:#2f6bff; --primary-soft:#eaf1ff; --grad:linear-gradient(135deg,#2f6bff 0%,#5b8cff 100%); --violet:#7c5cff; --emerald:#12b184; --amber:#f0912e; --ink-h1:#1b2350; --ink-h2:#141b3f; --ink-h3:#0e1430; --success:#12a06a; --danger:#e2496b; --warn:#e08a2a; --info:#2f6bff; --shadow-xs:0 2px 8px rgba(20,27,52,.05); --shadow-sm:0 10px 26px rgba(30,47,110,.07); --shadow-md:0 22px 52px rgba(30,47,110,.12); --shadow-primary:0 12px 28px rgba(47,107,255,.3); --shadow-hero:0 26px 64px rgba(9,16,46,.34); --radius:16px; --radius-lg:22px; --maxw:1680px; --ease:cubic-bezier(.22,.61,.36,1); --ease-out:cubic-bezier(.16,1,.3,1); } * { box-sizing:border-box; } html { scroll-behavior:smooth; } body { margin:0; min-width:320px; color:var(--ink); background:var(--bg); font-family:var(--font-body); font-size:14px; line-height:1.6; -webkit-font-smoothing:antialiased; overflow-x:hidden; } h1,h2,h3,h4,.brand-copy strong { font-family:var(--font-display); } button,input,select { font:inherit; } button { cursor:pointer; } a { color:inherit; text-decoration:none; } svg { display:block; } ::selection { color:#fff; background:var(--primary); } ::-webkit-scrollbar { width:12px; height:12px; } ::-webkit-scrollbar-thumb { background:#ccd3e8; border:3px solid var(--bg); border-radius:20px; } .scroll-progress { position:fixed; inset:0 0 auto 0; z-index:60; height:3px; pointer-events:none; } .scroll-progress i { display:block; width:0; height:100%; background:var(--grad); box-shadow:0 0 14px rgba(47,107,255,.55); transition:width .1s linear; } .topnav { position:sticky; top:0; z-index:50; background:rgba(255,255,255,.82); border-bottom:1px solid var(--line); backdrop-filter:blur(20px) saturate(1.5); -webkit-backdrop-filter:blur(20px) saturate(1.5); } .topnav-inner { width:100%; max-width:var(--maxw); height:66px; margin:0 auto; padding:0 clamp(16px,2.4vw,40px); display:flex; align-items:center; gap:20px; } .brand { display:flex; align-items:center; gap:11px; } .brand-mark { width:40px; height:40px; display:grid; place-items:center; color:#fff; background:var(--grad); border-radius:12px; box-shadow:var(--shadow-primary); transition:transform .4s var(--ease-out); } .brand-mark svg { width:23px; height:23px; } .brand:hover .brand-mark { transform:rotate(-8deg) scale(1.06); } .brand-copy strong,.brand-copy small { display:block; } .brand-copy strong { font-size:15px; font-weight:800; } .brand-copy small { margin-top:1px; color:var(--muted-2); font-size:8px; font-weight:700; letter-spacing:.12em; } .nav { display:flex; align-items:center; gap:2px; margin-left:8px; } .nav-link { position:relative; padding:9px 14px; overflow:hidden; color:var(--muted); border-radius:9px; font-size:13px; font-weight:600; white-space:nowrap; transition:color .25s,background .25s; } .nav-glow { position:absolute; inset:0; z-index:0; background:radial-gradient(80px 44px at var(--gx,50%) var(--gy,50%),rgba(47,107,255,.14),transparent 70%); opacity:0; transition:opacity .3s; } .nav-link > :not(.nav-glow) { position:relative; z-index:1; } .nav-link:hover { color:var(--ink); background:rgba(47,107,255,.06); } .nav-link:hover .nav-glow { opacity:1; } .nav-link.active { color:var(--primary); background:rgba(47,107,255,.1); } .nav-link.active::after { content:""; position:absolute; left:14px; right:14px; bottom:3px; height:2px; background:var(--grad); border-radius:2px; } .topnav-actions { display:flex; align-items:center; gap:12px; margin-left:auto; } .nav-search { display:flex; align-items:center; gap:8px; padding:0 10px; height:38px; color:var(--muted-2); background:var(--surface-2); border:1px solid var(--line-2); border-radius:10px; } .nav-search svg { width:15px; height:15px; } .nav-search input { width:180px; border:0; background:transparent; color:var(--ink); font-size:12px; outline:none; } .nav-search kbd { padding:2px 6px; color:var(--muted-2); background:var(--surface); border:1px solid var(--line-2); border-radius:5px; font-family:var(--font-body); font-size:8px; } .icon-btn { width:36px; height:36px; display:grid; place-items:center; color:var(--muted); background:var(--surface-2); border:1px solid var(--line-2); border-radius:10px; font-size:14px; } .icon-btn:hover { color:var(--primary); } .topnav-user { display:flex; align-items:center; gap:8px; color:var(--ink-2); font-size:12px; font-weight:600; } .user-avatar { width:32px; height:32px; display:grid; place-items:center; color:#fff; background:var(--grad); border-radius:50%; font-size:12px; font-weight:700; } .page { width:100%; max-width:var(--maxw); margin:0 auto; padding:22px clamp(16px,2.4vw,40px) 90px; }
.button { position:relative; min-height:42px; padding:0 18px; display:inline-flex; align-items:center; justify-content:center; gap:10px; overflow:hidden; color:var(--ink); background:transparent; border:0; border-radius:10px; font-family:var(--font-body); font-size:12px; font-weight:600; white-space:nowrap; transition:transform .2s var(--ease),box-shadow .28s var(--ease),background .22s var(--ease); } .button > span { position:relative; z-index:1; transition:transform .25s var(--ease); } .button:hover:not(:disabled) { transform:translateY(-2px); } .button:active:not(:disabled) { transform:translateY(0) scale(.98); } .button:disabled { opacity:.4; cursor:not-allowed; } .button .ripple { position:absolute; z-index:0; border-radius:50%; background:rgba(255,255,255,.45); transform:translate(-50%,-50%) scale(0); pointer-events:none; animation:ripple .6s var(--ease-out); } .button-primary { color:#fff; background:var(--grad); background-size:160% 160%; box-shadow:var(--shadow-primary); } .button-primary:hover:not(:disabled) { background-position:100% 50%; box-shadow:0 16px 34px rgba(47,107,255,.4); } .button-primary:hover:not(:disabled) > span:last-child { transform:translateX(4px); } .button-accent { color:#fff; background:linear-gradient(135deg,#13c093,var(--emerald)); box-shadow:0 12px 28px rgba(18,177,132,.3); } .button-accent:hover:not(:disabled) { box-shadow:0 16px 34px rgba(18,177,132,.42); } .button-secondary { color:var(--primary); background:var(--primary-soft); } .button-secondary:hover:not(:disabled) { background:#dce8ff; } .button-ghost { color:var(--muted); background:var(--surface); border:1px solid var(--line-2); } .button-ghost:hover:not(:disabled) { color:var(--ink); border-color:var(--muted-2); } .button-ai { color:#fff; background:linear-gradient(135deg,#8a63ff,#6a43e8); box-shadow:0 12px 28px rgba(124,92,255,.3); } .button-ai:hover:not(:disabled) { box-shadow:0 16px 34px rgba(124,92,255,.42); } .button-glass { color:#fff; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.28); } .button-glass:hover { background:rgba(255,255,255,.24); } .button-compact { min-height:34px; padding:0 15px; font-size:11px; } .status { min-height:0; color:var(--muted); font-size:10px; line-height:1.55; } .status:not(:empty) { margin-top:9px; padding:10px 13px; background:var(--surface-2); border-radius:9px; animation:fadeSlide .35s var(--ease-out); } .status.error { color:var(--danger); background:rgba(226,73,107,.09); } .status.success { color:var(--success); background:rgba(18,160,106,.1); } .panel { position:relative; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-sm); transition:box-shadow .35s var(--ease),transform .35s var(--ease),border-color .35s var(--ease); } .panel-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:15px; } .panel-head strong { font-size:14px; font-weight:700; } .panel-head strong small { margin-left:7px; color:var(--muted-2); font-size:9px; font-weight:400; } .panel-more { color:var(--primary); font-size:10px; font-weight:600; } .panel-more:hover { text-decoration:underline; } .demo-pill { padding:2px 7px; color:var(--amber); background:rgba(240,145,46,.13); border-radius:999px; font-size:7px; font-weight:700; font-style:normal; letter-spacing:.06em; } .demo-note { margin:12px 0 0; color:var(--muted-2); font-size:8px; text-align:right; } .section-eyebrow,.overline { color:var(--primary); font-size:9px; font-weight:800; letter-spacing:.16em; } .workspace { position:relative; padding-top:64px; } .section-anchor { scroll-margin-top:82px; } .section-heading { margin-bottom:22px; display:flex; align-items:flex-end; justify-content:space-between; gap:30px; } .section-title-group { display:flex; align-items:center; gap:14px; } .step { width:40px; height:40px; flex:0 0 auto; display:grid; place-items:center; color:#fff; background:var(--grad); border-radius:12px; font-family:var(--font-display); font-size:12px; font-weight:800; box-shadow:var(--shadow-primary); } .section-heading h2 { margin:4px 0 0; font-size:26px; font-weight:800; letter-spacing:-.03em; } .section-heading > p { max-width:460px; margin:0 0 3px; color:var(--muted); font-size:12px; line-height:1.7; text-align:right; } .hidden { display:none !important; }
.stat-row { display:grid; grid-template-columns:repeat(4,1fr) 1.5fr; gap:14px; } .stat-card { position:relative; display:flex; align-items:flex-start; gap:13px; padding:18px; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-sm); transition:transform .3s var(--ease),box-shadow .3s var(--ease); } .stat-card:hover { transform:translateY(-3px); box-shadow:var(--shadow-md); } .stat-ic { width:42px; height:42px; flex:0 0 auto; display:grid; place-items:center; border-radius:12px; color:#fff; font-size:18px; } .sc-blue .stat-ic { background:linear-gradient(135deg,#2f6bff,#5b8cff); } .sc-violet .stat-ic { background:linear-gradient(135deg,#8a63ff,#6a43e8); } .sc-amber .stat-ic { background:linear-gradient(135deg,#ffa63d,#f0912e); } .sc-green .stat-ic { background:linear-gradient(135deg,#13c093,#12a06a); } .stat-body { min-width:0; } .stat-body > span { display:flex; align-items:center; gap:6px; color:var(--muted); font-size:11px; } .stat-body strong { display:block; margin:5px 0 3px; font-family:var(--font-display); font-size:26px; font-weight:800; letter-spacing:-.02em; } .stat-body small { display:block; font-size:9px; } .stat-body small.up { color:var(--success); } .ai-banner { position:relative; display:flex; align-items:center; overflow:hidden; padding:20px 24px; color:#eaf0ff; background:linear-gradient(120deg,var(--ink-h1),var(--ink-h3)); border-radius:var(--radius); box-shadow:var(--shadow-hero); } .ai-banner-bg { position:absolute; inset:0; overflow:hidden; } .ai-banner-bg span { position:absolute; border-radius:50%; filter:blur(46px); } .ai-banner-bg span:nth-child(1) { width:190px; height:190px; top:-70px; left:-30px; background:radial-gradient(circle,rgba(47,107,255,.6),transparent 70%); animation:floatBlob 18s var(--ease) infinite; } .ai-banner-bg span:nth-child(2) { width:170px; height:170px; right:20%; bottom:-80px; background:radial-gradient(circle,rgba(124,92,255,.5),transparent 70%); animation:floatBlob 22s var(--ease) infinite reverse; } .ai-banner-bg span:nth-child(3) { width:8px; height:8px; top:26%; right:30%; background:#9fc0ff; box-shadow:0 0 12px #9fc0ff; animation:twinkle 5s ease-in-out infinite; } .ai-banner-copy { position:relative; z-index:1; flex:1; } .ai-banner-copy .section-eyebrow { color:#9fc0ff; } .ai-banner-copy h3 { margin:7px 0 4px; font-size:20px; font-weight:800; } .ai-banner-copy p { margin:0 0 14px; color:rgba(220,228,255,.7); font-size:11px; } .ai-banner-art { position:relative; z-index:1; display:flex; gap:7px; align-items:flex-end; height:64px; } .ai-banner-art i { width:16px; border-radius:5px 5px 0 0; background:linear-gradient(180deg,#9fc0ff,rgba(159,192,255,.25)); } .ai-banner-art i:nth-child(1) { height:38px; animation:barPulse 2.4s var(--ease) infinite; } .ai-banner-art i:nth-child(2) { height:58px; animation:barPulse 2.4s var(--ease) infinite .3s; } .ai-banner-art i:nth-child(3) { height:28px; animation:barPulse 2.4s var(--ease) infinite .6s; }
.work-row { margin-top:14px; display:grid; grid-template-columns:1.05fr 1fr 1fr; gap:14px; align-items:start; } .upload-card { padding:18px; } .drop-zone { position:relative; padding:26px 20px; display:flex; flex-direction:column; align-items:center; justify-content:center; overflow:hidden; background:linear-gradient(160deg,#f7f9ff,#eef2fc); border:1.5px dashed #b9c6ee; border-radius:14px; text-align:center; outline:none; cursor:pointer; transition:border-color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease); } .drop-zone:hover,.drop-zone:focus { background:#eef3ff; border-color:var(--primary); transform:translateY(-2px); } .drop-zone.dragover { background:#e4edff; border-color:var(--primary); border-style:solid; transform:scale(1.01); } .drop-shine { position:absolute; top:0; left:-60%; width:45%; height:100%; background:linear-gradient(105deg,transparent,rgba(255,255,255,.6),transparent); transform:skewX(-18deg); opacity:0; } .drop-zone:hover .drop-shine { animation:shine 1.1s var(--ease-out); } .upload-visual { position:relative; width:60px; height:60px; margin-bottom:13px; display:grid; place-items:center; } .upload-visual span { position:absolute; inset:0; border:1.5px dashed #b9c6ee; border-radius:50%; animation:spin 15s linear infinite; } .upload-visual span::after { content:""; position:absolute; inset:9px; background:var(--grad); border-radius:50%; box-shadow:var(--shadow-primary); } .upload-visual i { position:relative; z-index:1; color:#fff; font-size:21px; font-style:normal; } .drop-zone h3 { margin:0 0 5px; font-size:15px; font-weight:700; } .drop-zone p { margin:0 0 15px; color:var(--muted); font-size:10px; } .upload-cta { display:flex; gap:8px; } .upload-run { margin-top:12px; display:grid; grid-template-columns:1fr 1fr; gap:8px; } .upload-privacy { margin-top:12px; display:flex; align-items:center; gap:8px; color:var(--muted); font-size:9px; } .upload-privacy .lock-icon { color:var(--primary); font-size:7px; } .list-panel { padding:18px; display:flex; flex-direction:column; } .recent-list,.news-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; } .recent-list li { display:flex; align-items:center; gap:10px; padding:10px 0; border-bottom:1px solid var(--line); } .recent-list li:last-child { border-bottom:0; } .ic-file { width:30px; height:30px; flex:0 0 auto; display:grid; place-items:center; border-radius:8px; font-size:13px; color:#fff; } .ic-file.blue { background:#2f6bff; } .ic-file.green { background:#12a06a; } .ic-file.red { background:#e2496b; } .ic-file.amber { background:#f0912e; } .recent-main { min-width:0; flex:1; } .recent-main strong { display:block; overflow:hidden; font-size:11px; font-weight:600; text-overflow:ellipsis; white-space:nowrap; } .recent-main small { display:block; margin-top:2px; color:var(--muted-2); font-size:8px; } .tag { flex:0 0 auto; padding:3px 8px; border-radius:999px; font-size:8px; font-weight:700; } .tag.done { color:#2f6bff; background:rgba(47,107,255,.1); } .tag.price { color:#12a06a; background:rgba(18,160,106,.12); } .tag.risk { color:#e2496b; background:rgba(226,73,107,.11); } .tag.join { color:#e08a2a; background:rgba(224,138,42,.13); } .tag.pending { color:var(--muted); background:var(--surface-3); } .recent-list time,.news-list time { flex:0 0 auto; color:var(--muted-2); font-size:8px; } .news-list li { display:flex; gap:9px; padding:11px 0; border-bottom:1px solid var(--line); } .news-list li:last-child { border-bottom:0; } .news-list li i { width:5px; height:5px; margin-top:6px; flex:0 0 auto; background:var(--primary); border-radius:50%; } .news-list li div { min-width:0; flex:1; } .news-list li strong { display:block; overflow:hidden; color:var(--ink-2); font-size:10px; font-weight:500; text-overflow:ellipsis; white-space:nowrap; } .news-list li time { display:block; margin-top:3px; }
.module-row { margin-top:14px; display:grid; grid-template-columns:1fr 320px; gap:14px; align-items:start; } .module-cards { display:grid; grid-template-columns:1fr 1fr; gap:14px; } .module-card { position:relative; display:flex; flex-direction:column; padding:18px; overflow:hidden; background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-sm); transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease); } .module-card::before { content:""; position:absolute; inset:0 0 auto 0; height:3px; background:var(--mc,var(--primary)); } .module-card:hover { transform:translateY(-4px); box-shadow:var(--shadow-md); } .m-analysis { --mc:#2f6bff; } .m-history { --mc:#7c5cff; } .m-pricing { --mc:#12b184; } .m-ai { --mc:#f0912e; } .module-head { display:flex; align-items:flex-start; gap:11px; } .module-icon { width:38px; height:38px; flex:0 0 auto; display:grid; place-items:center; color:#fff; background:var(--mc,var(--primary)); border-radius:11px; font-size:16px; transition:transform .35s var(--ease-out); } .module-card:hover .module-icon { transform:rotate(-8deg) scale(1.08); } .module-head > div { min-width:0; flex:1; } .module-head strong { display:block; font-size:14px; font-weight:700; } .module-head small { display:block; margin-top:3px; color:var(--muted); font-size:9px; } .module-points { margin:14px 0; padding:0; list-style:none; display:grid; grid-template-columns:1fr 1fr; gap:7px; } .module-points li { position:relative; padding-left:16px; color:var(--ink-2); font-size:10px; } .module-points li::after { content:""; position:absolute; left:3px; top:6px; width:5px; height:5px; background:var(--mc,var(--primary)); border-radius:50%; } .module-cta { margin-top:auto; display:inline-flex; align-items:center; gap:6px; color:var(--mc,var(--primary)); font-size:11px; font-weight:700; } .module-cta b { transition:transform .25s var(--ease); } .module-card:hover .module-cta b { transform:translateX(4px); } .side-col { display:flex; flex-direction:column; gap:14px; } .insights-panel { padding:16px; } .insight { display:flex; align-items:center; gap:11px; padding:11px; margin-bottom:8px; background:var(--surface-2); border:1px solid var(--line); border-radius:11px; transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease; } .insight:last-of-type { margin-bottom:0; } .insight:hover { transform:translateX(3px); box-shadow:var(--shadow-xs); } .insight-ic { width:32px; height:32px; flex:0 0 auto; display:grid; place-items:center; border-radius:9px; font-size:14px; color:#fff; } .insight.risk .insight-ic { background:#e2496b; } .insight.win .insight-ic { background:#12a06a; } .insight.price .insight-ic { background:#f0912e; } .insight > div { min-width:0; flex:1; } .insight strong { display:block; font-size:11px; font-weight:700; } .insight small { display:block; margin-top:2px; color:var(--muted); font-size:8px; line-height:1.5; } .insight b { color:var(--muted-2); font-size:12px; } .quick-panel { padding:16px; } .quick-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:9px; } .quick-grid a { display:flex; flex-direction:column; align-items:center; gap:6px; padding:13px 6px; color:var(--ink-2); background:var(--surface-2); border:1px solid var(--line); border-radius:11px; font-size:9px; font-weight:600; transition:transform .2s ease,color .2s ease,border-color .2s ease; } .quick-grid a span { width:30px; height:30px; display:grid; place-items:center; color:var(--primary); background:var(--primary-soft); border-radius:9px; font-size:13px; } .quick-grid a:hover { transform:translateY(-3px); color:var(--primary); border-color:var(--primary); }
.charts-row { margin-top:14px; display:grid; grid-template-columns:repeat(4,1fr); gap:14px; align-items:start; } .chart-panel { padding:18px; } .chart-badge { padding:3px 9px; color:var(--primary); background:var(--primary-soft); border-radius:999px; font-size:10px; font-weight:800; } .donut-wrap { display:flex; align-items:center; gap:14px; } .donut { position:relative; width:120px; height:120px; flex:0 0 auto; border-radius:50%; background:conic-gradient(var(--danger) 0 calc(var(--high,30) * 1%), var(--warn) 0 calc((var(--high,30) + var(--mid,43)) * 1%), var(--success) 0 100%); animation:donutIn 1s var(--ease-out); } .donut-hole { position:absolute; inset:22px; display:flex; flex-direction:column; align-items:center; justify-content:center; background:var(--surface); border-radius:50%; } .donut-hole strong { font-family:var(--font-display); font-size:20px; font-weight:800; } .donut-hole span { color:var(--muted-2); font-size:8px; } .donut-legend { flex:1; margin:0; padding:0; list-style:none; display:flex; flex-direction:column; gap:9px; } .donut-legend li { display:flex; align-items:center; gap:7px; font-size:10px; color:var(--ink-2); } .donut-legend b { margin-left:auto; font-family:var(--font-display); font-weight:700; } .donut-legend em { color:var(--muted-2); font-size:9px; font-style:normal; min-width:38px; text-align:right; } .dot { width:9px; height:9px; border-radius:3px; } .dot.high { background:var(--danger); } .dot.mid { background:var(--warn); } .dot.low { background:var(--success); } .line-chart { width:100%; height:120px; margin-top:6px; overflow:visible; } .line-chart .grid { stroke:var(--line); stroke-width:1; } .line-chart .ln { fill:none; stroke-width:2.5; stroke-linecap:round; stroke-linejoin:round; stroke-dasharray:900; stroke-dashoffset:900; animation:draw 1.6s var(--ease-out) forwards; } .line-chart .ln.red { stroke:var(--danger); } .line-chart .ln.amber { stroke:var(--warn); } .line-chart .ln.green { stroke:var(--success); } .line-chart .ln.blue { stroke:var(--primary); } .line-chart .area { fill:rgba(47,107,255,.12); } .chart-x { margin-top:8px; display:flex; justify-content:space-between; color:var(--muted-2); font-size:8px; } .bar-list { margin:2px 0 0; padding:0; list-style:none; display:flex; flex-direction:column; gap:12px; } .bar-list li { display:grid; grid-template-columns:78px 1fr 40px; align-items:center; gap:9px; font-size:10px; } .bar-list li span { color:var(--ink-2); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .bar-list li i { height:8px; border-radius:6px; background:var(--grad); width:0; animation:barGrowW 1.2s var(--ease-out) forwards; } .bar-list li b { color:var(--muted); font-family:var(--font-display); font-weight:700; text-align:right; }
.empty-state { min-height:170px; padding:30px 40px; display:flex; align-items:center; justify-content:center; gap:28px; box-shadow:none; } .empty-orbit { position:relative; width:66px; height:66px; flex:0 0 auto; border:1.5px dashed var(--line-2); border-radius:50%; animation:spin 18s linear infinite; } .empty-orbit span { position:absolute; inset:14px; background:var(--surface-3); border-radius:50%; } .empty-orbit i { position:absolute; width:8px; height:8px; right:6px; top:9px; background:var(--grad); border-radius:50%; } .empty-number { color:var(--primary); font-size:9px; font-weight:800; letter-spacing:.16em; } .empty-state h3 { margin:8px 0 5px; font-size:16px; font-weight:700; } .empty-state p { max-width:600px; margin:0; color:var(--muted); font-size:11px; line-height:1.7; } .results { padding-top:4px; } .result-toolbar { margin-bottom:16px; display:flex; align-items:flex-end; justify-content:space-between; gap:15px; } .result-toolbar h2 { margin:4px 0 0; font-size:22px; font-weight:800; letter-spacing:-.03em; } .summary-grid { margin-bottom:12px; display:grid; grid-template-columns:repeat(4,1fr); gap:11px; } .summary-card { position:relative; min-height:110px; padding:18px; overflow:hidden; color:#fff; background:linear-gradient(140deg,var(--ink-h1),var(--ink-h3)); border-radius:14px; animation:cardIn .5s var(--ease-out) backwards; } .summary-card:nth-child(2) { animation-delay:.07s; } .summary-card:nth-child(3) { animation-delay:.14s; } .summary-card:nth-child(4) { animation-delay:.21s; } .summary-card::after { content:""; position:absolute; width:80px; height:80px; right:-32px; bottom:-40px; border:1px solid rgba(159,192,255,.3); border-radius:50%; } .summary-card:hover { transform:translateY(-3px); } .summary-card.light { color:var(--ink); background:var(--surface); border:1px solid var(--line); } .summary-card span,.summary-card strong { position:relative; z-index:1; display:block; } .summary-card span { color:rgba(220,228,255,.6); font-size:9px; } .summary-card.light span { color:var(--muted); } .summary-card strong { margin-top:22px; font-family:var(--font-display); color:#9fc0ff; font-size:21px; font-weight:800; } .summary-card.light strong { color:var(--primary); } .result-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; } .result-block { padding:20px; box-shadow:none; } .result-block:hover { border-color:var(--line-2); box-shadow:var(--shadow-sm); } .full-width { grid-column:1 / -1; } .block-heading { margin-bottom:15px; display:flex; align-items:center; justify-content:space-between; gap:14px; } .block-heading > div { display:flex; align-items:center; gap:10px; } .block-heading h3 { margin:0; font-size:14px; font-weight:700; } .block-heading .overline + h3,.block-heading span > h3 { margin-top:3px; } .block-index { width:29px; height:29px; display:grid; place-items:center; color:var(--primary); background:var(--primary-soft); border-radius:9px; font-family:var(--font-display); font-size:9px; font-weight:800; } .block-index.ai { color:#fff; background:linear-gradient(135deg,#8a63ff,#6a43e8); } .block-index.history { color:#fff; background:linear-gradient(135deg,#7c5cff,#5a3fe0); } .count { min-width:26px; padding:5px 9px; color:var(--muted); background:var(--surface-2); border-radius:999px; text-align:center; font-size:8px; font-weight:700; } .info-grid { display:grid; grid-template-columns:repeat(4,1fr); overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:11px; gap:1px; } .info-item { min-height:76px; padding:13px; background:var(--surface); } .info-item:hover { background:var(--surface-2); } .info-item span,.info-item strong { display:block; } .info-item span { margin-bottom:6px; color:var(--muted-2); font-size:8px; } .info-item strong { font-size:11px; font-weight:600; line-height:1.5; word-break:break-word; }
.finding-list { display:grid; gap:8px; } .finding { padding:12px 13px; background:var(--surface-2); border-left:3px solid var(--info); border-radius:9px; animation:cardIn .45s var(--ease-out) backwards; transition:transform .2s ease,box-shadow .2s ease; } .finding:hover { transform:translateX(3px); box-shadow:var(--shadow-xs); } .finding.high { border-left-color:var(--danger); } .finding.medium { border-left-color:var(--warn); } .finding.low { border-left-color:var(--success); } .finding-header { display:flex; align-items:center; justify-content:space-between; gap:10px; } .finding-header strong { font-size:11px; font-weight:700; } .severity { padding:3px 7px; color:var(--muted); background:var(--surface-3); border-radius:6px; font-size:7px; font-weight:800; } .finding.high .severity { color:var(--danger); background:rgba(226,73,107,.12); } .finding.medium .severity { color:var(--warn); background:rgba(224,138,42,.14); } .finding.low .severity { color:var(--success); background:rgba(18,160,106,.12); } .finding p { margin:7px 0 0; color:var(--muted); font-size:9px; line-height:1.6; } .finding small { display:block; margin-top:6px; color:var(--primary); font-size:8px; line-height:1.55; } .no-data { padding:22px; color:var(--muted); background:var(--surface-2); border:1px dashed var(--line-2); border-radius:10px; text-align:center; font-size:9px; } .suggestion-list { margin:0; padding-left:20px; color:var(--muted); font-size:10px; line-height:1.9; } .suggestion-list li::marker { color:var(--primary); font-weight:700; } .ai-analysis-block { background:linear-gradient(135deg,rgba(124,92,255,.06),var(--surface)); border-color:rgba(124,92,255,.2); } .ai-analysis-block .overline { color:var(--violet); } .ai-summary-grid { display:grid; grid-template-columns:1.5fr .7fr; gap:10px; } .ai-summary { padding:17px; color:#fff; background:linear-gradient(145deg,#8a63ff,#6a43e8); border-radius:12px; } .ai-summary span,.ai-summary strong { display:block; } .ai-summary span { color:rgba(255,255,255,.6); font-size:8px; } .ai-summary strong { margin-top:8px; font-family:var(--font-display); color:#fff; font-size:17px; font-weight:800; } .ai-summary p { margin:9px 0 0; color:rgba(255,255,255,.8); font-size:9px; line-height:1.7; } .ai-run-meta { display:grid; overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:12px; gap:1px; } .ai-run-meta > div { padding:9px 12px; background:var(--surface); } .ai-run-meta span,.ai-run-meta strong { display:block; } .ai-run-meta span { color:var(--muted); font-size:7px; } .ai-run-meta strong { margin-top:3px; font-family:var(--font-display); color:var(--violet); font-size:11px; font-weight:800; } .ai-result-columns { margin-top:10px; display:grid; grid-template-columns:1fr 1fr; gap:10px; } .ai-result-columns > div { padding:14px; background:var(--surface); border:1px solid var(--line); border-radius:11px; } .ai-result-columns h4 { margin:0 0 9px; font-size:11px; font-weight:700; } .ai-item-list { display:grid; gap:6px; } .ai-item { padding:10px; background:var(--surface-2); border-left:3px solid var(--violet); border-radius:8px; } .ai-item.high { border-left-color:var(--danger); } .ai-item.medium { border-left-color:var(--warn); } .ai-item.low { border-left-color:var(--success); } .ai-item > div { display:flex; justify-content:space-between; gap:8px; } .ai-item strong { font-size:8px; font-weight:700; } .ai-item > div span { color:var(--muted); font-size:7px; } .ai-item p { margin:5px 0; color:var(--muted); font-size:8px; line-height:1.55; } .ai-item small { color:var(--violet); font-size:7px; line-height:1.5; } .ai-simple-list { margin:0; padding-left:17px; color:var(--muted); font-size:8px; line-height:1.75; } .ai-disclaimer { margin:10px 0 0; color:var(--muted-2); font-size:7px; text-align:right; }
.history-layout { display:grid; grid-template-columns:minmax(360px,.85fr) minmax(0,1.15fr); gap:14px; align-items:start; } .history-form,.history-list-panel { padding:22px; } .form-group-title { padding-bottom:11px; display:flex; align-items:center; justify-content:space-between; color:var(--ink-2); border-bottom:1px solid var(--line); font-size:10px; font-weight:700; } .form-group-title small { color:var(--muted-2); font-size:8px; font-weight:400; } .form-group-title.parameters { margin-top:22px; } .panel-title { margin-bottom:20px; padding-bottom:16px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); } .panel-title > div { display:flex; align-items:center; gap:11px; } .panel-title strong,.panel-title small { display:block; } .panel-title strong { font-size:14px; font-weight:700; } .panel-title small { margin-top:3px; color:var(--muted); font-size:9px; } .panel-icon { width:37px; height:37px; display:grid; place-items:center; color:var(--primary); background:var(--primary-soft); border-radius:11px; font-size:16px; } .panel-icon.currency { font-family:Georgia,serif; font-weight:700; } .panel-icon.model { color:#fff; background:linear-gradient(135deg,#8a63ff,#6a43e8); font-size:10px; font-weight:800; } .local-pill { padding:5px 9px; color:var(--muted); background:var(--surface-2); border:1px solid var(--line-2); border-radius:999px; font-size:7px; font-weight:800; letter-spacing:.1em; } .history-file-picker { margin-bottom:20px; padding:13px; display:grid; grid-template-columns:37px minmax(0,1fr) auto; align-items:center; gap:11px; color:var(--ink); background:var(--surface-2); border:1.5px dashed var(--line-2); border-radius:11px; cursor:pointer; transition:border-color .2s,background .2s,transform .2s; } .history-file-picker:hover { background:var(--primary-soft); border-color:var(--primary); transform:translateY(-1px); } .history-file-icon { width:37px; height:37px; display:grid; place-items:center; color:#fff; background:var(--grad); border-radius:10px; font-size:16px; } .history-file-picker strong,.history-file-picker small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .history-file-picker strong { font-size:11px; font-weight:600; } .history-file-picker small { margin-top:3px; color:var(--muted); font-size:8px; } .history-file-picker b { color:var(--primary); font-size:9px; } .field-grid { margin-top:14px; display:grid; grid-template-columns:1fr 1fr; gap:12px; } .field-grid.thirds { grid-template-columns:repeat(3,1fr); } .field-grid label,.llm-key-field { min-width:0; color:var(--muted); font-size:9px; font-weight:500; } .field-grid input,.field-grid select,.key-input-row input { width:100%; height:43px; margin-top:7px; padding:0 12px; color:var(--ink); background:var(--surface-2); border:1px solid var(--line-2); border-radius:10px; outline:none; transition:border-color .2s,box-shadow .2s,background .2s; } .field-grid input:focus,.field-grid select:focus,.key-input-row input:focus { background:var(--surface); border-color:var(--primary); box-shadow:0 0 0 3px rgba(47,107,255,.12); } .calculate-button { width:100%; margin-top:22px; } .history-list-heading { padding-bottom:16px; display:flex; align-items:flex-start; justify-content:space-between; gap:15px; border-bottom:1px solid var(--line); } .history-list-heading h3 { margin:4px 0 0; font-size:17px; font-weight:800; } .history-list-heading h3 span { color:var(--primary); } .history-list-heading p { margin:4px 0 0; color:var(--muted); font-size:8px; } .history-list { max-height:640px; margin-top:13px; padding-right:3px; display:grid; gap:9px; overflow:auto; } .history-project { padding:14px; background:var(--surface-2); border:1px solid transparent; border-radius:11px; transition:border-color .2s,background .2s,transform .2s; animation:cardIn .45s var(--ease-out) backwards; } .history-project:hover { background:var(--surface); border-color:var(--line-2); transform:translateY(-2px); box-shadow:var(--shadow-sm); } .history-project-top { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; } .history-project-top > div { min-width:0; display:flex; align-items:center; flex-wrap:wrap; gap:6px; } .history-project-top strong { max-width:340px; overflow:hidden; font-size:11px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; } .history-project-top small { width:100%; overflow:hidden; color:var(--muted); font-size:8px; text-overflow:ellipsis; white-space:nowrap; } .history-project-top em,.match-title em { padding:2px 6px; color:var(--amber); background:rgba(240,145,46,.14); border-radius:5px; font-size:7px; font-style:normal; font-weight:700; } .history-delete { width:26px; height:26px; flex:0 0 auto; color:var(--muted-2); background:transparent; border:0; border-radius:8px; font-size:16px; transition:color .2s,background .2s,transform .2s; } .history-delete:hover { color:var(--danger); background:rgba(226,73,107,.1); transform:rotate(90deg); } .history-tags { margin-top:9px; display:flex; flex-wrap:wrap; gap:5px; } .history-tags span { padding:3px 7px; color:var(--primary); background:var(--primary-soft); border-radius:6px; font-size:7px; font-weight:600; } .history-project-money { margin-top:10px; display:grid; grid-template-columns:repeat(4,1fr); overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:9px; gap:1px; } .history-project-money > div { padding:9px; background:var(--surface); } .history-project-money span,.history-project-money strong { display:block; } .history-project-money span { color:var(--muted-2); font-size:7px; } .history-project-money strong { margin-top:4px; font-size:9px; font-weight:700; } .history-insights-block { background:linear-gradient(135deg,rgba(47,107,255,.05),var(--surface)); border-color:rgba(47,107,255,.16); } .history-empty { padding:26px; background:var(--surface); border:1px dashed var(--line-2); border-radius:11px; text-align:center; } .history-empty strong { font-size:13px; font-weight:700; } .history-empty p { margin:6px 0 14px; color:var(--muted); font-size:9px; } .history-stat-grid { display:grid; grid-template-columns:1.4fr 1fr 1fr .7fr; overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:11px; gap:1px; } .history-stat-grid > div { min-height:82px; padding:13px; background:var(--surface); } .history-stat-grid span,.history-stat-grid strong { display:block; } .history-stat-grid span { color:var(--muted); font-size:8px; } .history-stat-grid strong { margin-top:9px; font-family:var(--font-display); color:var(--primary); font-size:15px; font-weight:800; } .history-match-grid { margin-top:11px; display:grid; grid-template-columns:1fr 1fr; gap:9px; } .history-match-card { padding:13px; display:flex; gap:12px; background:var(--surface); border:1px solid var(--line); border-radius:11px; transition:transform .2s,box-shadow .2s; } .history-match-card:hover { transform:translateY(-2px); box-shadow:var(--shadow-sm); } .match-score { width:50px; height:50px; flex:0 0 auto; display:flex; flex-direction:column; align-items:center; justify-content:center; color:#fff; background:var(--grad); border-radius:10px; } .match-score strong { font-family:var(--font-display); font-size:16px; font-weight:800; } .match-score span { font-size:7px; opacity:.85; } .match-content { min-width:0; flex:1; } .match-title { display:flex; align-items:center; gap:6px; } .match-title strong { overflow:hidden; font-size:9px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; } .match-content p { margin:4px 0; color:var(--muted); font-size:7px; } .match-money { display:flex; flex-wrap:wrap; gap:8px; color:var(--ink-2); font-size:7px; } .match-content small { display:block; margin-top:5px; color:var(--primary); font-size:7px; } .insight-notes { margin-top:10px; padding:10px 12px; color:var(--muted); background:rgba(47,107,255,.05); border-radius:9px; } .insight-notes p { margin:2px 0; font-size:8px; line-height:1.5; }
.pricing-layout { display:grid; grid-template-columns:minmax(480px,1.35fr) minmax(300px,.65fr); gap:14px; align-items:start; } .pricing-form { padding:22px; } .pricing-placeholder { position:relative; min-height:500px; padding:48px 36px; display:flex; flex-direction:column; align-items:center; justify-content:center; overflow:hidden; color:rgba(220,228,255,.62); background:linear-gradient(150deg,var(--ink-h1),var(--ink-h3)); border-radius:var(--radius); text-align:center; box-shadow:var(--shadow-md); } .pricing-placeholder::before { content:""; position:absolute; width:280px; height:280px; right:-110px; top:-110px; background:radial-gradient(circle,rgba(47,107,255,.3),transparent 70%); border-radius:50%; filter:blur(46px); } .price-orbit { position:relative; z-index:1; width:80px; height:80px; margin-bottom:20px; display:grid; place-items:center; border:1.5px dashed rgba(159,192,255,.4); border-radius:50%; animation:spin 16s linear infinite; } .price-orbit span { width:54px; height:54px; display:grid; place-items:center; color:#fff; background:var(--grad); border-radius:50%; font-family:Georgia,serif; font-size:24px; box-shadow:var(--shadow-primary); animation:bob 3s var(--ease) infinite; } .price-orbit i { position:absolute; width:8px; height:8px; right:2px; top:14px; background:#9fc0ff; border-radius:50%; } .pricing-placeholder .section-eyebrow { position:relative; z-index:1; color:#9fc0ff; } .pricing-placeholder h3 { position:relative; z-index:1; margin:8px 0; color:#fff; font-size:17px; font-weight:700; } .pricing-placeholder p { position:relative; z-index:1; max-width:280px; margin:0; font-size:9px; line-height:1.7; } .placeholder-scale { position:relative; z-index:1; width:170px; height:2px; margin-top:28px; display:flex; justify-content:space-between; background:linear-gradient(90deg,rgba(159,192,255,.2),#9fc0ff,rgba(159,192,255,.2)); } .placeholder-scale span,.placeholder-scale i,.placeholder-scale b { width:6px; height:6px; margin-top:-2px; background:#9fc0ff; border-radius:50%; } .pricing-results { display:grid; gap:10px; } .recommended-card { position:relative; padding:22px; overflow:hidden; color:#fff; background:var(--grad); background-size:160% 160%; border-radius:var(--radius); box-shadow:var(--shadow-primary); animation:cardIn .5s var(--ease-out),gradShift 8s ease infinite; } .recommended-card::after { content:"\A5"; position:absolute; right:-6px; bottom:-32px; color:rgba(255,255,255,.12); font-family:Georgia,serif; font-size:120px; } .recommended-card .overline { position:relative; z-index:1; color:rgba(255,255,255,.72); } .recommended-card p { position:relative; z-index:1; margin:16px 0 4px; font-size:9px; opacity:.85; } .recommended-card strong { position:relative; z-index:1; display:block; font-family:var(--font-display); font-size:clamp(26px,3vw,38px); font-weight:800; letter-spacing:-.04em; } .quote-range { position:relative; z-index:1; margin-top:13px; padding-top:12px; border-top:1px solid rgba(255,255,255,.22); font-size:8px; opacity:.85; } .breakdown { display:grid; grid-template-columns:1fr 1fr; overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:12px; gap:1px; animation:cardIn .5s var(--ease-out) .08s backwards; } .breakdown-item { padding:13px; background:var(--surface); } .breakdown-item span,.breakdown-item strong { display:block; } .breakdown-item span { color:var(--muted-2); font-size:8px; } .breakdown-item strong { margin-top:5px; font-family:var(--font-display); color:var(--ink); font-size:13px; font-weight:800; } .scenario-list { display:grid; gap:7px; } .scenario { padding:13px; background:var(--surface); border:1px solid var(--line); border-radius:11px; animation:cardIn .5s var(--ease-out) backwards; transition:border-color .2s,transform .2s,box-shadow .2s; } .scenario:hover { border-color:var(--line-2); transform:translateX(3px); box-shadow:var(--shadow-xs); } .scenario-head { display:flex; justify-content:space-between; gap:10px; font-size:10px; font-weight:700; } .scenario-head strong:last-child { font-family:var(--font-display); color:var(--emerald); } .scenario p { margin:7px 0 0; color:var(--muted); font-size:8px; line-height:1.55; } .warning-box { color:var(--warn); font-size:8px; line-height:1.55; } .warning-box div { margin-top:5px; padding:9px 11px; background:rgba(224,138,42,.09); border:1px solid rgba(224,138,42,.14); border-radius:8px; }
.llm-layout { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr); gap:14px; align-items:start; } .llm-form,.llm-guide { padding:22px; } .config-badge { padding:5px 10px; border-radius:999px; font-size:8px; font-weight:800; } .config-badge.online { color:var(--success); background:rgba(18,160,106,.12); } .config-badge.offline { color:var(--danger); background:rgba(226,73,107,.1); } .llm-primary-fields label > small,.llm-key-field > small { display:block; margin-top:5px; color:var(--muted-2); font-size:7px; line-height:1.5; } .llm-key-field { display:block; margin-top:15px; } .key-input-row { margin-top:7px; display:flex; gap:8px; } .key-input-row input { min-width:0; flex:1; margin-top:0; } .key-input-row .button { flex:0 0 auto; } .llm-parameters { margin-top:15px; } .clear-key-option { margin-top:14px; display:flex; align-items:center; gap:8px; color:var(--muted); font-size:8px; cursor:pointer; } .clear-key-option input { accent-color:var(--primary); } .llm-actions { margin-top:20px; display:flex; justify-content:flex-end; gap:8px; } .llm-guide { position:relative; overflow:hidden; color:#eaf0ff; background:linear-gradient(155deg,var(--ink-h1),var(--ink-h3)); border-color:rgba(255,255,255,.06); } .llm-guide::after { content:""; position:absolute; width:180px; height:180px; right:-96px; top:-100px; border:1px solid rgba(159,192,255,.16); border-radius:50%; animation:spin 22s linear infinite; } .guide-top { position:relative; z-index:1; display:flex; align-items:center; justify-content:space-between; } .guide-top .overline { color:#9fc0ff; } .guide-signal { display:flex; align-items:flex-end; gap:2px; height:12px; } .guide-signal i { width:2px; background:#9fc0ff; border-radius:2px; animation:eq 1.2s var(--ease) infinite; } .guide-signal i:nth-child(1) { height:4px; opacity:.5; } .guide-signal i:nth-child(2) { height:8px; opacity:.75; animation-delay:.2s; } .guide-signal i:nth-child(3) { height:12px; animation-delay:.4s; } .llm-guide h3 { position:relative; z-index:1; margin:20px 0 8px; font-size:20px; font-weight:800; } .guide-copy { position:relative; z-index:1; margin:0; color:rgba(220,228,255,.5); font-size:9px; line-height:1.75; } .endpoint-preview { position:relative; z-index:1; margin-top:20px; padding:13px; background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.08); border-radius:10px; } .endpoint-preview span,.endpoint-preview code { display:block; } .endpoint-preview span { color:rgba(220,228,255,.4); font-size:7px; } .endpoint-preview code { margin-top:6px; overflow-wrap:anywhere; color:#9fc0ff; font-family:Consolas,monospace; font-size:8px; } .protocol-list { position:relative; z-index:1; margin-top:9px; display:grid; grid-template-columns:repeat(3,1fr); overflow:hidden; background:rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.08); border-radius:10px; gap:1px; } .protocol-list > div { padding:11px; background:rgba(14,20,48,.82); } .protocol-list span,.protocol-list strong { display:block; } .protocol-list span { color:rgba(220,228,255,.34); font-size:6px; } .protocol-list strong { margin-top:4px; color:#fff; font-size:8px; } .privacy-warning { position:relative; z-index:1; margin-top:16px; padding:13px; display:flex; align-items:flex-start; gap:10px; color:#ffe0ad; background:rgba(240,145,46,.13); border:1px solid rgba(240,145,46,.2); border-radius:10px; } .privacy-mark { width:21px; height:21px; flex:0 0 auto; display:grid; place-items:center; color:#fff; background:var(--amber); border-radius:50%; font-size:10px; font-weight:800; } .privacy-warning p { margin:0; } .privacy-warning strong,.privacy-warning small { display:block; } .privacy-warning strong { font-size:9px; } .privacy-warning small { margin-top:4px; color:rgba(255,224,173,.72); font-size:7px; line-height:1.6; } footer { margin-top:64px; padding:26px 0 0; display:flex; align-items:center; justify-content:space-between; gap:30px; color:var(--muted); border-top:1px solid var(--line); font-size:9px; } footer > div { display:flex; align-items:center; gap:9px; color:var(--primary); font-family:var(--font-display); font-weight:700; } .footer-mark { width:9px; height:9px; background:var(--grad); border-radius:50%; } footer p { margin:0; text-align:right; }
[data-reveal] .reveal-up,[data-reveal] .reveal-scale { opacity:0; will-change:transform,opacity; } [data-reveal] .reveal-up { transform:translateY(24px); transition:opacity .7s var(--ease-out),transform .7s var(--ease-out); } [data-reveal] .reveal-scale { transform:scale(.96) translateY(18px); transition:opacity .8s var(--ease-out),transform .8s var(--ease-out); } [data-reveal].is-visible .reveal-up,[data-reveal].is-visible .reveal-scale { opacity:1; transform:none; } [data-reveal].is-visible .reveal-up,[data-reveal].is-visible .reveal-scale { transition-delay:calc(var(--i,0) * 70ms); } @keyframes floatBlob { 0%,100% { transform:translate(0,0) scale(1); } 33% { transform:translate(24px,-18px) scale(1.06); } 66% { transform:translate(-18px,14px) scale(.95); } } @keyframes twinkle { 0%,100% { opacity:.2; transform:scale(.7); } 50% { opacity:.95; transform:scale(1.25); } } @keyframes shimmerText { 0% { background-position:0% center; } 100% { background-position:220% center; } } @keyframes gradShift { 0%,100% { background-position:0% 50%; } 50% { background-position:100% 50%; } } @keyframes spin { to { transform:rotate(360deg); } } @keyframes bob { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-6px); } } @keyframes shine { 0% { left:-60%; opacity:0; } 30% { opacity:1; } 100% { left:120%; opacity:0; } } @keyframes ripple { to { transform:translate(-50%,-50%) scale(1); opacity:0; } } @keyframes cardIn { from { opacity:0; transform:translateY(16px); } to { opacity:1; transform:none; } } @keyframes fadeSlide { from { opacity:0; transform:translateY(-4px); } to { opacity:1; transform:none; } } @keyframes barPulse { 0%,100% { transform:scaleY(.8); } 50% { transform:scaleY(1); } } @keyframes donutIn { from { transform:rotate(-90deg) scale(.9); opacity:.4; } to { transform:none; opacity:1; } } @keyframes draw { to { stroke-dashoffset:0; } } @keyframes barGrowW { from { width:0; } to { width:var(--w,100%); } } @media (max-width:1200px) { .stat-row { grid-template-columns:repeat(2,1fr); } .ai-banner { grid-column:1 / -1; } .work-row { grid-template-columns:1fr 1fr; } .work-row .upload-card { grid-column:1 / -1; } .charts-row { grid-template-columns:1fr 1fr; } } @media (max-width:1000px) { .module-row { grid-template-columns:1fr; } .side-col { flex-direction:row; } .side-col .panel { flex:1; } .history-layout,.llm-layout,.pricing-layout { grid-template-columns:1fr; } } @media (max-width:860px) { .nav,.nav-search { display:none; } .work-row { grid-template-columns:1fr; } .module-cards { grid-template-columns:1fr; } .side-col { flex-direction:column; } .section-heading { flex-direction:column; align-items:flex-start; gap:10px; } .section-heading > p { text-align:left; } } @media (max-width:640px) { .stat-row { grid-template-columns:1fr; } .charts-row { grid-template-columns:1fr; } .summary-grid,.info-grid,.result-grid,.field-grid,.field-grid.thirds { grid-template-columns:1fr; } .full-width { grid-column:auto; } .quick-grid { grid-template-columns:1fr 1fr; } .topnav-user span:last-child,.brand-copy small { display:none; } .history-project-money { grid-template-columns:1fr 1fr; } .history-stat-grid,.history-match-grid,.ai-result-columns,.ai-run-meta,.ai-summary-grid { grid-template-columns:1fr; } } @media (prefers-reduced-motion:reduce) { *,*::before,*::after { animation-duration:.001ms !important; animation-iteration-count:1 !important; transition-duration:.001ms !important; } [data-reveal] .reveal-up,[data-reveal] .reveal-scale { opacity:1 !important; transform:none !important; } .scroll-progress { display:none; } }


/* 独立页面路由：由 animations.js 运行时启用，不改变业务 DOM 契约 */
[hidden] { display:none !important; }
body.route-ready .route-page[hidden] { display:none !important; }
body.route-ready .route-feature { min-height:calc(100vh - 182px); padding-top:18px; }
body.route-ready .route-feature.route-enter,
body.route-ready .route-home.route-enter { animation:routePageIn .58s var(--ease-out) both; }
body.route-ready footer { margin-top:34px; }
body[data-page="home"] .work-row { grid-template-columns:1.05fr 1fr 1fr; }

.home-launch-card { min-height:100%; padding:20px; display:flex; flex-direction:column; overflow:hidden; isolation:isolate; color:#fff; background:linear-gradient(145deg,#17255f 0%,#254fc0 58%,#2f6bff 100%); border-color:rgba(255,255,255,.08); box-shadow:0 20px 48px rgba(30,65,160,.24); }
.home-launch-card::before { content:""; position:absolute; z-index:-1; width:230px; height:230px; right:-90px; top:-105px; background:radial-gradient(circle,rgba(133,178,255,.72),transparent 68%); border-radius:50%; filter:blur(12px); animation:floatBlob 14s var(--ease) infinite; }
.home-launch-card::after { content:""; position:absolute; z-index:-1; width:190px; height:190px; left:-105px; bottom:-120px; border:1px solid rgba(255,255,255,.16); border-radius:50%; }
.home-launch-card:hover { color:#fff; transform:translateY(-4px); box-shadow:0 28px 58px rgba(30,65,160,.32); }
.home-launch-visual { position:relative; height:82px; margin-bottom:10px; display:flex; align-items:center; justify-content:center; }
.launch-orbit { position:relative; width:72px; height:72px; display:grid; place-items:center; border:1px dashed rgba(255,255,255,.45); border-radius:50%; animation:spin 17s linear infinite; }
.launch-orbit::before,.launch-orbit::after { content:""; position:absolute; border:1px solid rgba(159,192,255,.24); border-radius:50%; }
.launch-orbit::before { inset:-10px; }
.launch-orbit::after { inset:10px; }
.launch-orbit i { position:absolute; width:9px; height:9px; top:5px; right:7px; background:#a9c8ff; border-radius:50%; box-shadow:0 0 14px #a9c8ff; }
.launch-orbit b { width:43px; height:43px; display:grid; place-items:center; color:#fff; background:rgba(255,255,255,.14); border:1px solid rgba(255,255,255,.22); border-radius:50%; font-family:var(--font-display); font-size:12px; backdrop-filter:blur(8px); animation:counterSpin 17s linear infinite; }
.launch-grid { position:absolute; inset:8px 12%; opacity:.16; background-image:linear-gradient(rgba(255,255,255,.22) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.22) 1px,transparent 1px); background-size:18px 18px; mask-image:radial-gradient(circle,#000,transparent 68%); }
.home-launch-copy { position:relative; z-index:1; }
.home-launch-copy .section-eyebrow { color:#bfd4ff; }
.home-launch-copy h3 { margin:7px 0 6px; font-size:17px; font-weight:800; }
.home-launch-copy p { margin:0 0 15px; color:rgba(235,241,255,.72); font-size:10px; line-height:1.7; }
.home-launch-copy .button { pointer-events:none; min-height:36px; color:#234aa9; background:#fff; box-shadow:0 10px 24px rgba(9,23,75,.18); }
.home-launch-card > small { margin-top:auto; padding-top:14px; color:rgba(235,241,255,.5); font-size:8px; }

.analysis-workbench { margin-bottom:18px; display:grid; grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr); gap:14px; align-items:stretch; }
.analysis-upload-card { padding:22px; }
.analysis-upload-card .drop-zone { min-height:245px; }
.analysis-flow { position:relative; padding:26px; overflow:hidden; color:#eaf0ff; background:linear-gradient(150deg,var(--ink-h1),var(--ink-h3)); border-color:rgba(255,255,255,.06); }
.analysis-flow::before { content:""; position:absolute; width:220px; height:220px; right:-120px; top:-110px; background:radial-gradient(circle,rgba(47,107,255,.36),transparent 70%); border-radius:50%; filter:blur(24px); }
.analysis-flow > * { position:relative; z-index:1; }
.analysis-flow .section-eyebrow { color:#9fc0ff; }
.analysis-flow h3 { margin:8px 0 5px; color:#fff; font-size:19px; font-weight:800; }
.analysis-flow > p { margin:0; color:rgba(220,228,255,.54); font-size:9px; line-height:1.7; }
.analysis-flow ol { margin:20px 0 0; padding:0; display:grid; gap:9px; list-style:none; }
.analysis-flow li { padding:10px; display:flex; align-items:center; gap:11px; background:rgba(255,255,255,.055); border:1px solid rgba(255,255,255,.07); border-radius:10px; transition:transform .22s ease,background .22s ease; }
.analysis-flow li:hover { transform:translateX(4px); background:rgba(255,255,255,.09); }
.analysis-flow li > b { width:31px; height:31px; flex:0 0 auto; display:grid; place-items:center; color:#9fc0ff; background:rgba(47,107,255,.18); border-radius:9px; font-family:var(--font-display); font-size:8px; }
.analysis-flow li span,.analysis-flow li strong,.analysis-flow li small { display:block; }
.analysis-flow li strong { color:#fff; font-size:10px; }
.analysis-flow li small { margin-top:2px; color:rgba(220,228,255,.45); font-size:7px; line-height:1.5; }
.analysis-flow .privacy-warning { margin-top:14px; }

.route-feature .section-heading { padding:17px 20px; align-items:center; background:linear-gradient(135deg,rgba(255,255,255,.94),rgba(247,249,255,.94)); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow-sm); }
.route-feature .section-heading > p { max-width:560px; }

@keyframes routePageIn { from { opacity:0; transform:translateY(18px) scale(.995); filter:blur(3px); } to { opacity:1; transform:none; filter:none; } }
@keyframes counterSpin { to { transform:rotate(-360deg); } }

@media (max-width:1200px) {
  body[data-page="home"] .work-row { grid-template-columns:1fr 1fr; }
  body[data-page="home"] .home-launch-card { grid-column:1 / -1; min-height:300px; display:grid; grid-template-columns:220px minmax(0,1fr); align-items:center; column-gap:25px; }
  .home-launch-card > small { grid-column:2; }
}
@media (max-width:1000px) {
  .analysis-workbench { grid-template-columns:1fr; }
}
@media (max-width:860px) {
  .topnav-inner { height:auto; min-height:66px; padding-top:10px; padding-bottom:8px; flex-wrap:wrap; }
  .topnav .nav { order:3; width:100%; margin:0; display:flex; overflow-x:auto; scrollbar-width:none; }
  .topnav .nav::-webkit-scrollbar { display:none; }
  .topnav .nav-link { flex:0 0 auto; padding:8px 12px; }
  .topnav-actions { margin-left:auto; }
  .route-feature .section-heading { align-items:flex-start; }
}
@media (max-width:640px) {
  body[data-page="home"] .work-row { grid-template-columns:1fr; }
  body[data-page="home"] .home-launch-card { min-height:340px; display:flex; }
  .home-launch-card > small { grid-column:auto; }
  .analysis-upload-card,.analysis-flow { padding:16px; }
  .analysis-upload-card .drop-zone { min-height:220px; padding:22px 12px; }
  .upload-run { grid-template-columns:1fr; }
  .route-feature .section-heading { padding:15px; }
}


/* 会员中心卡片 */
.membership-card { position:relative; margin-bottom:14px; padding:22px; overflow:hidden; color:#eaf0ff; background:linear-gradient(155deg,#1a2554 0%,#3557d1 55%,#7c5cff 120%); border:1px solid rgba(255,255,255,.08); border-radius:var(--radius); box-shadow:0 22px 52px rgba(30,47,110,.24); }
.membership-card::before { content:""; position:absolute; width:260px; height:260px; right:-120px; top:-140px; background:radial-gradient(circle,rgba(159,192,255,.55),transparent 68%); border-radius:50%; filter:blur(12px); animation:floatBlob 14s var(--ease) infinite; }
.membership-card::after { content:""; position:absolute; width:180px; height:180px; left:-90px; bottom:-100px; border:1px solid rgba(255,255,255,.14); border-radius:50%; }
.membership-card > * { position:relative; z-index:1; }
.membership-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:16px; }
.membership-head .section-eyebrow { color:#bfd4ff; }
.membership-head h3 { margin:6px 0 6px; color:#fff; font-size:20px; font-weight:800; letter-spacing:-.01em; }
.membership-head p { margin:0; max-width:520px; color:rgba(235,241,255,.72); font-size:10px; line-height:1.7; }
.membership-head p.is-error { color:#ffb1c3; }
.membership-card .config-badge.online { color:#12a06a; background:rgba(255,255,255,.9); }
.membership-card .config-badge.offline { color:#fff; background:rgba(255,255,255,.16); border:1px solid rgba(255,255,255,.24); }
.membership-body { display:grid; gap:14px; }
.membership-stats { display:grid; grid-template-columns:repeat(4,1fr); overflow:hidden; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.12); border-radius:12px; gap:1px; }
.membership-stats > div { padding:12px 14px; background:rgba(14,20,48,.55); }
.membership-stats span,.membership-stats strong { display:block; }
.membership-stats span { color:rgba(220,228,255,.5); font-size:8px; }
.membership-stats strong { margin-top:5px; color:#fff; font-family:var(--font-display); font-size:13px; font-weight:800; }
.membership-form { display:flex; align-items:flex-end; gap:12px; }
.membership-form label { flex:1; color:rgba(235,241,255,.72); font-size:9px; font-weight:600; }
.membership-form input { display:block; width:100%; height:43px; margin-top:7px; padding:0 14px; color:#fff; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.22); border-radius:10px; font-size:12px; outline:none; transition:border-color .2s,background .2s; }
.membership-form input::placeholder { color:rgba(235,241,255,.4); }
.membership-form input:focus { background:rgba(255,255,255,.18); border-color:#bfd4ff; box-shadow:0 0 0 3px rgba(191,212,255,.18); }
.membership-form .button { min-width:132px; height:43px; color:#1a2554; background:#fff; box-shadow:0 12px 24px rgba(9,23,75,.22); }
.membership-form .button:hover:not(:disabled) { box-shadow:0 16px 34px rgba(9,23,75,.28); }
.membership-actions { display:flex; justify-content:flex-end; }
.membership-actions .button-ghost { color:rgba(235,241,255,.78); background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.22); }
.membership-actions .button-ghost:hover { color:#fff; background:rgba(255,255,255,.2); }
#membership-status:not(:empty) { color:#fff; background:rgba(255,255,255,.12); }
#membership-status.error { color:#ffb1c3; background:rgba(226,73,107,.18); }
#membership-status.success { color:#a8f0cd; background:rgba(18,160,106,.22); }

@media (max-width:860px) {
  .membership-stats { grid-template-columns:1fr 1fr; }
  .membership-form { flex-direction:column; align-items:stretch; }
  .membership-form .button { width:100%; }
}


/* 整体放大：原设计字号偏小，统一放大约 25%（Edge/Chrome 支持 zoom） */
body { zoom: 1.25; }


/* ================= 可读性增强：加深文字对比 + 抬高过小字号 ================= */
/* 1) 把偏浅的灰色调深，解决“灰蒙蒙看不清”的问题 */
:root {
  --muted: #4d5675;
  --muted-2: #6b7397;
  --ink-2: #293152;
}

/* 2) 抬高过小字号的下限（原设计 6~9px 太小） */
.protocol-list span { font-size: 9px; }
.demo-pill,
.ai-run-meta span,
.ai-item > div span,
.ai-item small,
.ai-disclaimer,
.severity,
.endpoint-preview span,
.endpoint-preview code,
.privacy-warning small,
.guide-copy,
.llm-primary-fields label > small,
.llm-key-field > small,
.history-tags span,
.history-project-money span,
.history-project-top small,
.history-stat-grid span,
.history-list-heading p,
.match-content p,
.match-money,
.match-content small,
.breakdown-item span,
.scenario p,
.warning-box,
.membership-stats span,
.ai-summary span,
.ai-simple-list,
.ai-item strong,
.ai-item p { font-size: 10.5px; }

.demo-note,
.brand-copy small,
.nav-search kbd,
.recent-main small,
.tag,
.recent-list time,
.news-list time,
.insight small,
.insight b,
.donut-hole span,
.chart-x,
.count,
.info-item span,
.finding small,
.finding p,
.no-data,
.empty-number,
.summary-card span,
.section-eyebrow,
.overline,
.local-pill,
.config-badge,
.stat-body small,
footer,
footer p { font-size: 11px; }

.status,
.module-head small,
.module-points li,
.quick-grid a,
.donut-legend li,
.donut-legend em,
.bar-list li,
.field-grid label,
.field-grid select,
.llm-key-field,
.news-list li strong,
.panel-head strong small,
.panel-more,
.panel-title small,
.finding-header strong,
.recent-main strong,
.info-item strong,
.insight strong,
.history-project-top strong { font-size: 12px; }

.stat-body > span,
.section-heading > p,
.suggestion-list,
.empty-state p,
.module-cta,
.membership-head p,
.upload-privacy,
.drop-zone p { font-size: 12.5px; }

/* 3) 正文输入框文字也放大一点，填写更清楚 */
.field-grid input,
.key-input-row input,
.membership-form input { font-size: 13px; }


/* ============ 首页“最近分析项目 / 行业动态”卡片更饱满 ============ */
/* 让这一行三张卡等高，两张列表卡不再贴着内容显得空 */
.work-row { align-items: stretch; }
.work-row .list-panel { height: 100%; }
/* 列表占满卡片高度，行与行均匀分布 */
.list-panel .recent-list,
.list-panel .news-list { flex: 1; justify-content: space-between; }
/* 每行加大留白与命中区域，视觉更扎实 */
.recent-list li { padding: 14px 2px; gap: 12px; }
.news-list li { padding: 14px 2px; }
.recent-main strong { font-size: 12.5px; }
.recent-main small { margin-top: 3px; }
.news-list li strong { font-size: 12.5px; line-height: 1.5; white-space: normal; }
.news-list li i { margin-top: 8px; }
/* 卡片标题更醒目 */
.list-panel .panel-head strong { font-size: 15px; }
.list-panel .demo-note { margin-top: 4px; }

@media (max-width: 1200px) {
  /* 换行后仍保持两张卡等高 */
  body[data-page="home"] .work-row .list-panel { height: 100%; }
}


/* 首页模块区补充的两张卡片配色（会员中心 / 快速上手） */
.module-card.m-member { --mc:#e0a72e; }
.module-card.m-guide { --mc:#0ea5b7; }


/* ================= 功能页（Tab）布局与丰富度优化 ================= */
/* 1) 去掉底部强制留白：让页面高度贴合内容 */
body.route-ready .route-feature { min-height: 0; }

/* 2) 页头改成左对齐 Hero，消除“标题在左、说明在右、中间大片空”的单调感 */
.route-feature .section-heading {
  position: relative;
  overflow: hidden;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  padding: 22px 26px;
}
.route-feature .section-heading::after {
  content: "";
  position: absolute;
  right: -40px; top: -50px;
  width: 200px; height: 200px;
  background: radial-gradient(circle, rgba(47,107,255,.12), transparent 70%);
  border-radius: 50%;
  pointer-events: none;
}
.route-feature .section-heading .section-title-group { position: relative; z-index: 1; }
.route-feature .section-heading > p {
  position: relative;
  z-index: 1;
  max-width: 760px;
  margin: 0;
  text-align: left;
}

/* 3) 页头下方“能力亮点”一行三卡，进入 Tab 不再只有一个孤零零的表单 */
.page-highlights {
  margin-bottom: 14px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
.ph-card {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 16px 18px;
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  transition: transform .3s var(--ease), box-shadow .3s var(--ease);
}
.ph-card:hover { transform: translateY(-3px); box-shadow: var(--shadow-md); }
.ph-ic {
  width: 44px; height: 44px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  color: #fff;
  background: var(--grad);
  border-radius: 12px;
  font-size: 17px;
  font-weight: 800;
}
.page-highlights .ph-card:nth-child(2) .ph-ic { background: linear-gradient(135deg,#8a63ff,#6a43e8); }
.page-highlights .ph-card:nth-child(3) .ph-ic { background: linear-gradient(135deg,#13c093,#12a06a); }
.ph-body strong { display: block; font-size: 13.5px; font-weight: 700; }
.ph-body small { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; line-height: 1.5; }

@media (max-width: 900px) {
  .page-highlights { grid-template-columns: 1fr; }
}


/* ===== 让功能页主体分栏对齐顶部三张亮点卡的分隔线 ===== */
@media (min-width: 1001px) {
  /* 右侧面板占 1/3，分隔线落在第三张亮点卡下方 */
  .analysis-workbench { grid-template-columns: 2fr 1fr; }
  .pricing-layout { grid-template-columns: 2fr 1fr; }
  .llm-layout { grid-template-columns: 2fr 1fr; }
  /* 历史库：录入表单占 1/3，列表占 2/3，分隔线落在第一张亮点卡下方 */
  .history-layout { grid-template-columns: 1fr 2fr; }
}


/* ===== 历史库 / 报价 / AI 页两栏等高，底边对齐 ===== */
@media (min-width: 1001px) {
  .history-layout,
  .pricing-layout,
  .llm-layout { align-items: stretch; }
}


/* ================= 再次放大字体（覆盖之前的设置） ================= */
/* 整页缩放上调到 1.25，所有文字等比更大 */
body { zoom: 1.25; }

/* 把最小的一批微型文字统一抬到 12px（配合缩放约等于 15px） */
.protocol-list span,
.demo-pill,
.ai-run-meta span,
.ai-item > div span,
.ai-item small,
.ai-disclaimer,
.severity,
.endpoint-preview span,
.endpoint-preview code,
.privacy-warning small,
.privacy-warning strong,
.history-tags span,
.history-project-money span,
.history-project-top small,
.history-stat-grid span,
.history-list-heading p,
.match-content p,
.match-money,
.match-content small,
.breakdown-item span,
.scenario p,
.scenario-head,
.warning-box,
.membership-stats span,
.ai-summary span,
.ai-simple-list,
.ai-item strong,
.ai-item p,
.demo-note,
.brand-copy small,
.nav-search kbd,
.recent-main small,
.tag,
.recent-list time,
.news-list time,
.insight small,
.donut-hole span,
.chart-x,
.count,
.info-item span,
.finding small,
.no-data,
.empty-number,
.summary-card span,
.local-pill,
.config-badge,
.stat-body small,
.clear-key-option,
footer,
footer p { font-size: 12px; }

/* 说明性正文再大一档 */
.section-eyebrow,
.overline,
.status,
.module-head small,
.module-points li,
.quick-grid a,
.donut-legend li,
.donut-legend em,
.bar-list li,
.field-grid label,
.field-grid select,
.llm-key-field,
.news-list li strong,
.panel-head strong small,
.panel-more,
.panel-title small,
.finding-header strong,
.finding p,
.recent-main strong,
.info-item strong,
.insight strong,
.history-project-top strong,
.ph-body small,
.guide-copy,
.llm-primary-fields label > small,
.llm-key-field > small { font-size: 12.5px; }


/* ===== 针对性放大：历史项目金额数值 + 分析流程步骤文字 ===== */
/* 历史项目卡里的金额（项目预算/中标金额/预算下浮/实际利润率的数值） */
.history-project-money strong { font-size: 13px; }
.history-stat-grid strong { font-size: 15px; }
.match-money span,
.match-score span { font-size: 11px; }
.match-score strong { font-size: 17px; }

/* 分析流程（ANALYSIS FLOW）四个步骤的标题与说明 */
.analysis-flow li strong { font-size: 13px; }
.analysis-flow li small { font-size: 11.5px; }
.analysis-flow > p { font-size: 12px; }
.analysis-flow li > b { font-size: 11px; }


/* ================= 账号登录与用户会话 ================= */
body.auth-locked { overflow:hidden; }
body.auth-locked > header,
body.auth-locked > main,
body.auth-locked > .scroll-progress { filter:blur(7px); pointer-events:none; user-select:none; }
.auth-gate[hidden] { display:none !important; }
.auth-gate { position:fixed; inset:0; z-index:1000; padding:30px; display:grid; place-items:center; overflow:auto; background:radial-gradient(circle at 18% 16%,rgba(72,125,255,.34),transparent 34%),linear-gradient(145deg,#0b1230 0%,#172459 48%,#243f97 100%); }
.auth-shell { width:min(1060px,100%); min-height:620px; display:grid; grid-template-columns:1.12fr .88fr; overflow:hidden; background:#fff; border:1px solid rgba(255,255,255,.18); border-radius:24px; box-shadow:0 38px 100px rgba(2,8,32,.48); animation:authShellIn .55s var(--ease-out) both; }
.auth-showcase { position:relative; padding:54px; display:flex; flex-direction:column; justify-content:space-between; overflow:hidden; color:#fff; background:linear-gradient(155deg,#1a2c70,#2f6bff 62%,#7c5cff 130%); }
.auth-showcase::before { content:""; position:absolute; width:380px; height:380px; right:-190px; top:-190px; border:1px solid rgba(255,255,255,.2); border-radius:50%; box-shadow:0 0 0 45px rgba(255,255,255,.035),0 0 0 95px rgba(255,255,255,.025); }
.auth-showcase::after { content:""; position:absolute; width:240px; height:240px; left:-120px; bottom:-120px; background:radial-gradient(circle,rgba(150,190,255,.62),transparent 70%); border-radius:50%; filter:blur(15px); }
.auth-showcase > * { position:relative; z-index:1; }
.auth-showcase-mark { width:58px; height:58px; display:grid; place-items:center; color:#234aa9; background:#fff; border-radius:17px; font-family:var(--font-display); font-size:18px; font-weight:800; box-shadow:0 15px 32px rgba(5,18,70,.25); }
.auth-showcase .section-eyebrow { color:#c6d9ff; font-size:12px; }
.auth-showcase h2 { max-width:520px; margin:13px 0 12px; font-size:32px; line-height:1.28; letter-spacing:-.025em; }
.auth-showcase p { max-width:520px; margin:0; color:rgba(239,244,255,.77); font-size:14px; line-height:1.9; }
.auth-showcase ul { margin:34px 0 0; padding:0; display:grid; gap:12px; list-style:none; }
.auth-showcase li { padding:13px 15px; display:flex; align-items:center; gap:13px; background:rgba(255,255,255,.09); border:1px solid rgba(255,255,255,.13); border-radius:13px; backdrop-filter:blur(8px); }
.auth-showcase li > b { width:34px; height:34px; flex:0 0 auto; display:grid; place-items:center; color:#d7e5ff; background:rgba(12,28,84,.3); border-radius:10px; font-size:11px; }
.auth-showcase li span,.auth-showcase li strong,.auth-showcase li small { display:block; }
.auth-showcase li strong { color:#fff; font-size:13px; }
.auth-showcase li small { margin-top:3px; color:rgba(239,244,255,.62); font-size:11px; }
.auth-card { padding:50px 48px; display:flex; flex-direction:column; justify-content:center; color:var(--ink); }
.auth-brand { margin-bottom:34px; display:flex; align-items:center; gap:11px; }
.auth-brand > span { width:38px; height:38px; display:grid; place-items:center; color:#fff; background:var(--grad); border-radius:11px; font-size:12px; }
.auth-brand strong,.auth-brand small { display:block; }
.auth-brand strong { font-size:15px; }
.auth-brand small { margin-top:2px; color:var(--muted); font-size:9px; letter-spacing:.08em; }
.auth-tabs { margin-bottom:30px; padding:4px; display:grid; grid-template-columns:1fr 1fr; background:var(--surface-3); border-radius:11px; }
.auth-tabs button { height:40px; color:var(--muted); background:transparent; border:0; border-radius:8px; font-size:13px; font-weight:700; }
.auth-tabs button.active { color:var(--primary); background:#fff; box-shadow:var(--shadow-xs); }
.auth-card h1 { margin:0; font-size:28px; line-height:1.25; }
.auth-card > p { margin:9px 0 25px; color:var(--muted); font-size:13px; line-height:1.7; }
.auth-card form { display:grid; gap:16px; }
.auth-card form label { color:var(--ink-2); font-size:13px; font-weight:700; }
.auth-card form input { width:100%; height:48px; margin-top:7px; padding:0 14px; color:var(--ink); background:var(--surface-2); border:1px solid var(--line-2); border-radius:11px; font-size:14px; outline:none; transition:border-color .2s,box-shadow .2s,background .2s; }
.auth-card form input:focus { background:#fff; border-color:var(--primary); box-shadow:0 0 0 4px rgba(47,107,255,.12); }
.auth-card form .button { width:100%; min-height:48px; margin-top:5px; font-size:14px; }
.auth-status { min-height:24px; margin-top:15px; padding:0 2px; color:var(--muted); font-size:12px; line-height:1.6; }
.auth-status.error { color:var(--danger); }
.auth-status.success { color:var(--success); }
.auth-card .auth-footnote { margin:14px 0 0; color:var(--muted-2); font-size:10px; text-align:center; }
.auth-user-copy strong,.auth-user-copy small { display:block; }
.auth-user-copy strong { max-width:110px; overflow:hidden; color:var(--ink); font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.auth-user-copy small { margin-top:1px; color:var(--muted); font-size:9px; font-weight:500; }
.auth-logout { height:30px; padding:0 10px; color:var(--muted); background:var(--surface-2); border:1px solid var(--line-2); border-radius:8px; font-size:10px; font-weight:700; transition:color .2s,border-color .2s,background .2s; }
.auth-logout:hover { color:var(--danger); background:rgba(226,73,107,.08); border-color:rgba(226,73,107,.25); }
@keyframes authShellIn { from { opacity:0; transform:translateY(22px) scale(.975); } to { opacity:1; transform:none; } }

/* ================= 历史招标库：隔离、筛选、分页、参考集 ================= */
.history-visibility-choice { margin:20px 0 0; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:10px; border:0; }
.history-visibility-choice legend { grid-column:1 / -1; margin-bottom:3px; color:var(--ink-2); font-size:12.5px; font-weight:700; }
.history-visibility-choice label { position:relative; min-width:0; padding:13px; display:flex; align-items:center; gap:10px; color:var(--ink-2); background:var(--surface-2); border:1px solid var(--line-2); border-radius:11px; cursor:pointer; transition:border-color .2s,background .2s,box-shadow .2s; }
.history-visibility-choice label.active { background:var(--primary-soft); border-color:rgba(47,107,255,.42); box-shadow:0 0 0 3px rgba(47,107,255,.08); }
.history-visibility-choice input { position:absolute; opacity:0; pointer-events:none; }
.visibility-icon { width:31px; height:31px; flex:0 0 auto; display:grid; place-items:center; color:#fff; background:var(--primary); border-radius:9px; font-size:11px; }
.visibility-icon.public { background:var(--emerald); }
.history-visibility-choice label > span:last-child,
.history-visibility-choice strong,
.history-visibility-choice small { display:block; }
.history-visibility-choice strong { font-size:11.5px; }
.history-visibility-choice small { margin-top:3px; color:var(--muted); font-size:10px; line-height:1.45; }
.history-filter-form { margin-top:14px; padding:14px; background:var(--surface-2); border:1px solid var(--line); border-radius:12px; }
.history-filter-grid { display:grid; grid-template-columns:1.4fr repeat(3,1fr); gap:10px; }
.history-filter-grid label { min-width:0; color:var(--muted); font-size:10px; font-weight:700; }
.history-filter-grid input,.history-filter-grid select { width:100%; height:38px; margin-top:5px; padding:0 10px; color:var(--ink); background:#fff; border:1px solid var(--line-2); border-radius:9px; font-size:11px; outline:none; }
.history-filter-grid input:focus,.history-filter-grid select:focus { border-color:var(--primary); box-shadow:0 0 0 3px rgba(47,107,255,.1); }
.history-filter-actions { margin-top:11px; display:flex; justify-content:flex-end; gap:8px; }
.history-selection-bar { margin-top:10px; padding:11px 13px; display:flex; align-items:center; justify-content:space-between; gap:12px; background:var(--surface); border:1px solid var(--line); border-radius:11px; transition:background .2s,border-color .2s; }
.history-selection-bar.has-selection { background:rgba(124,92,255,.07); border-color:rgba(124,92,255,.3); }
.history-selection-bar > div:first-child { min-width:0; }
.history-selection-bar strong,.history-selection-bar span { display:block; }
.history-selection-bar strong { font-size:11.5px; }
.history-selection-bar span { margin-top:2px; overflow:hidden; color:var(--muted); font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.history-selection-bar > div:last-child { flex:0 0 auto; display:flex; gap:7px; }
.history-list { max-height:780px; }
.history-list.is-loading { opacity:.55; pointer-events:none; }
.history-project-enhanced { position:relative; }
.history-project-enhanced.selected-reference { background:rgba(124,92,255,.07); border-color:rgba(124,92,255,.34); box-shadow:inset 3px 0 0 var(--violet); }
.history-project-select { margin-bottom:9px; padding-bottom:8px; display:flex; align-items:center; justify-content:space-between; gap:10px; border-bottom:1px solid var(--line); }
.history-project-select > label { display:flex; align-items:center; gap:7px; color:var(--muted); font-size:10px; font-weight:700; cursor:pointer; }
.history-project-select input { width:16px; height:16px; accent-color:var(--violet); }
.history-project-actions { display:flex; align-items:center; gap:6px; }
.visibility-toggle { height:27px; padding:0 9px; background:#fff; border:1px solid var(--line-2); border-radius:7px; font-size:9.5px; font-weight:700; }
.visibility-toggle.is-private { color:var(--emerald); }
.visibility-toggle.is-public { color:var(--primary); }
.visibility-toggle:hover { border-color:currentColor; }
.ownership-badge,.visibility-badge { padding:3px 7px; border-radius:999px; font-size:9px; font-weight:800; }
.ownership-badge.mine { color:var(--violet); background:rgba(124,92,255,.11); }
.ownership-badge.shared { color:var(--primary); background:var(--primary-soft); }
.visibility-badge.public { color:var(--success); background:rgba(18,160,106,.11); }
.visibility-badge.private { color:var(--muted); background:var(--surface-3); }
.history-pagination { margin-top:12px; display:flex; align-items:center; justify-content:center; gap:13px; }
.history-pagination > span { min-width:150px; color:var(--muted); font-size:10.5px; font-weight:700; text-align:center; }

@media (max-width:1000px) {
  .auth-shell { grid-template-columns:1fr; max-width:620px; }
  .auth-showcase { min-height:330px; padding:38px; }
  .auth-showcase h2 { font-size:27px; }
  .auth-showcase ul { grid-template-columns:repeat(3,1fr); }
  .auth-showcase li { align-items:flex-start; }
  .auth-showcase li > b { display:none; }
  .auth-card { padding:42px; }
  .history-filter-grid { grid-template-columns:repeat(3,1fr); }
}
@media (max-width:700px) {
  .auth-gate { padding:14px; place-items:start center; }
  .auth-shell { min-height:0; }
  .auth-showcase { min-height:290px; padding:28px; }
  .auth-showcase h2 { font-size:23px; }
  .auth-showcase p { font-size:12px; }
  .auth-showcase ul { display:none; }
  .auth-card { padding:30px 24px; }
  .history-visibility-choice,.history-filter-grid { grid-template-columns:1fr; }
  .history-selection-bar { align-items:flex-start; flex-direction:column; }
  .history-selection-bar > div:last-child { width:100%; }
  .history-selection-bar > div:last-child .button { flex:1; }
  .history-pagination { gap:7px; }
  .history-pagination > span { min-width:110px; }
}


/* ================= 最终可读性覆盖：彻底去掉“灰蒙蒙”观感 ================= */
/* 放在文件最末尾，优先级最高：把正文与次要文字统一压深、加重 */
:root {
  --ink: #0e1430;
  --ink-2: #222a4c;
  --muted: #3c456a;
  --muted-2: #525b80;
}

/* 正文默认再深一点，避免整体发灰 */
body { color: #0e1430; }

/* 次要说明文字：由浅灰提到更深的蓝灰，保证在白底上清晰 */
.status,
.drop-zone p,
.upload-privacy,
.module-head small,
.panel-title small,
.history-list-heading p,
.section-heading > p,
.stat-body > span,
.finding p,
.suggestion-list,
.scenario p,
.no-data,
.clear-key-option,
.ph-body small,
.history-visibility-choice small,
.history-selection-bar span,
.history-filter-grid label,
.auth-card > p,
.auth-brand small { color: #3c456a; }

/* 标题、关键信息用近黑色，最清晰 */
.panel-head strong,
.panel-title strong,
.block-heading h3,
.section-heading h2,
.result-toolbar h2,
.history-list-heading h3,
.finding-header strong,
.info-item strong,
.recent-main strong,
.news-list li strong,
.insight strong,
.history-project-top strong,
.module-head strong { color: #0e1430; }

/* 输入框文字加深，填写时看得清 */
.field-grid input,
.field-grid select,
.key-input-row input,
.history-filter-grid input,
.history-filter-grid select,
.auth-card form input { color: #0e1430; }


/* ================= AI 报价策略解读区 ================= */
.pricing-advice-launch { margin-top:4px; padding:15px; display:flex; align-items:center; justify-content:space-between; gap:14px; background:linear-gradient(135deg,rgba(124,92,255,.08),rgba(47,107,255,.06)); border:1px solid rgba(124,92,255,.2); border-radius:12px; }
.pricing-advice-intro { min-width:0; }
.pricing-advice-intro .overline { color:var(--violet); }
.pricing-advice-intro p { margin:5px 0 0; color:#3c456a; font-size:11.5px; line-height:1.6; }
.pricing-advice-launch .button { flex:0 0 auto; }
#pricing-advice-status { margin-top:8px; }
.pricing-advice-block { margin-top:12px; padding:18px; background:linear-gradient(135deg,rgba(124,92,255,.06),var(--surface)); border:1px solid rgba(124,92,255,.22); border-radius:14px; animation:cardIn .45s var(--ease-out) backwards; }
.pricing-advice-block.hidden { display:none !important; }
.pricing-advice-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; }
.pricing-advice-head .overline { color:var(--violet); }
.pricing-advice-head h4 { margin:5px 0 0; font-size:16px; font-weight:800; color:#0e1430; }
.advice-verdict { flex:0 0 auto; padding:6px 11px; border-radius:999px; font-size:11px; font-weight:800; }
.advice-verdict.good { color:var(--success); background:rgba(18,160,106,.12); }
.advice-verdict.high { color:var(--danger); background:rgba(226,73,107,.12); }
.advice-verdict.low { color:var(--warn); background:rgba(224,138,42,.14); }
.advice-verdict.warn { color:var(--violet); background:rgba(124,92,255,.13); }
.pricing-advice-summary { margin:12px 0 0; color:#293152; font-size:12.5px; line-height:1.75; }
.pricing-advice-metrics { margin-top:13px; display:grid; grid-template-columns:1fr 1fr; overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:11px; gap:1px; }
.pricing-advice-metrics > div { padding:11px 13px; background:var(--surface); }
.pricing-advice-metrics span,.pricing-advice-metrics strong { display:block; }
.pricing-advice-metrics span { color:var(--muted); font-size:10.5px; }
.pricing-advice-metrics strong { margin-top:4px; color:#0e1430; font-size:12px; font-weight:700; line-height:1.5; }
.pricing-advice-columns { margin-top:12px; display:grid; grid-template-columns:1fr 1fr; gap:11px; }
.pricing-advice-columns > div { padding:13px; background:var(--surface); border:1px solid var(--line); border-radius:11px; }
.pricing-advice-columns h5 { margin:0 0 8px; font-size:12px; font-weight:700; color:#0e1430; }
.pricing-advice-columns .ai-simple-list { color:#3c456a; font-size:11.5px; line-height:1.85; }
.pricing-advice-block .ai-disclaimer { color:var(--muted-2); }

@media (max-width:760px) {
  .pricing-advice-launch { flex-direction:column; align-items:stretch; }
  .pricing-advice-launch .button { width:100%; }
  .pricing-advice-metrics,.pricing-advice-columns { grid-template-columns:1fr; }
}


/* ================= 中标结果录入 ================= */
.history-outcome-choice { margin:16px 0 0; padding:0; border:0; }
.history-outcome-choice legend { margin-bottom:8px; color:var(--ink-2); font-size:12.5px; font-weight:700; }
.history-outcome-choice legend small { margin-left:6px; color:var(--muted); font-size:10px; font-weight:500; }
.history-outcome-choice .outcome-options { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }
.history-outcome-choice .outcome-options label { display:flex; align-items:center; justify-content:center; gap:6px; padding:9px; color:var(--ink-2); background:var(--surface-2); border:1px solid var(--line-2); border-radius:10px; font-size:12px; font-weight:700; cursor:pointer; transition:border-color .2s,background .2s,box-shadow .2s; }
.history-outcome-choice .outcome-options label.active { color:var(--primary); background:var(--primary-soft); border-color:rgba(47,107,255,.42); box-shadow:0 0 0 3px rgba(47,107,255,.08); }
.history-outcome-choice .outcome-options input { position:absolute; opacity:0; pointer-events:none; }
.history-outcome-choice .outcome-bid { display:block; margin-top:10px; color:var(--muted); font-size:10px; font-weight:600; }
.history-outcome-choice .outcome-bid input { width:100%; height:40px; margin-top:6px; padding:0 12px; color:var(--ink); background:var(--surface-2); border:1px solid var(--line-2); border-radius:10px; outline:none; }
.history-outcome-choice .outcome-bid input:focus { background:var(--surface); border-color:var(--primary); box-shadow:0 0 0 3px rgba(47,107,255,.12); }
.outcome-badge { padding:3px 7px; border-radius:999px; font-size:9px; font-weight:800; }
.outcome-badge.won { color:var(--success); background:rgba(18,160,106,.13); }
.outcome-badge.lost { color:var(--danger); background:rgba(226,73,107,.12); }
.outcome-select { height:27px; padding:0 6px; color:var(--ink-2); background:#fff; border:1px solid var(--line-2); border-radius:7px; font-size:10px; font-weight:700; cursor:pointer; }
.outcome-select:focus { border-color:var(--primary); outline:none; }


/* ================= 招标文件分析：AI 独占模式 ================= */
/* 隐藏本地分析按钮，AI 按钮占满整行 */
#analyze-button { display:none !important; }
.upload-run { grid-template-columns:1fr !important; }
#ai-analyze-button { width:100%; }

/* AI 分析结果作为唯一结果：隐藏规则版/历史块，只留 AI 深度分析块 */
.results.ai-only #summary-cards,
.results.ai-only .result-block:not(.ai-analysis-block) { display:none !important; }
.results.ai-only #export-button { display:inline-flex; }
.results.ai-only .result-grid { display:block; }
.results.ai-only .ai-analysis-block { grid-column:1 / -1; margin:0; }

/* AI 结果卡片更饱满 */
.ai-analysis-block { padding:24px; background:linear-gradient(150deg,rgba(124,92,255,.09),rgba(47,107,255,.05) 55%,var(--surface)); border:1px solid rgba(124,92,255,.24); border-radius:18px; box-shadow:0 18px 44px rgba(80,60,180,.12); }
.ai-analysis-block .block-heading { margin-bottom:18px; }
.ai-summary-grid { grid-template-columns:1.4fr .8fr; gap:14px; }
.ai-summary { padding:22px; border-radius:16px; box-shadow:0 12px 30px rgba(106,67,232,.28); }
.ai-summary span { font-size:9px; letter-spacing:.12em; text-transform:uppercase; }
.ai-summary strong { margin-top:10px; font-size:22px; }
.ai-summary p { margin-top:12px; font-size:12px; line-height:1.85; }
.ai-run-meta { border-radius:16px; }
.ai-run-meta > div { padding:13px 15px; }
.ai-run-meta strong { font-size:14px; }
.ai-result-columns { margin-top:14px; gap:14px; }
.ai-result-columns > div { padding:18px; border-radius:14px; }
.ai-result-columns h4 { margin:0 0 12px; font-size:13px; display:flex; align-items:center; gap:8px; }
.ai-result-columns h4::before { content:""; width:4px; height:14px; border-radius:3px; background:var(--violet); }
.ai-item { padding:13px; border-radius:11px; }
.ai-item strong { font-size:12px; }
.ai-item p { font-size:11px; line-height:1.7; color:#3c456a; }
.ai-item small { font-size:10.5px; line-height:1.6; }
.ai-item > div span { font-size:9px; }
.ai-simple-list { font-size:12px; line-height:2; color:#293152; padding-left:20px; }
.ai-disclaimer { margin-top:16px; font-size:10px; color:var(--muted-2); }

@media (max-width:760px) {
  .ai-summary-grid { grid-template-columns:1fr; }
  .ai-result-columns { grid-template-columns:1fr; }
}


/* ================= AI 分析扩展板块 ================= */
.ai-panel { margin-top:14px; padding:16px 18px; background:var(--surface); border:1px solid var(--line); border-radius:14px; }
.ai-panel > h4 { margin:0 0 12px; font-size:13px; font-weight:700; color:#0e1430; display:flex; align-items:center; gap:8px; }
.ai-panel.danger { background:rgba(226,73,107,.06); border-color:rgba(226,73,107,.32); }
.ai-panel.danger > h4 { color:var(--danger); }
.ai-disqual-list { margin:0; padding-left:20px; font-size:12px; line-height:1.95; }
.ai-disqual-list li { color:var(--danger); font-weight:600; }
.ai-reason { display:block; margin-top:8px; color:rgba(255,255,255,.95); font-size:12px; font-style:normal; font-weight:700; }
.ai-score-table { display:flex; flex-direction:column; gap:1px; overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:10px; }
.ai-score-head, .ai-score-row { display:grid; grid-template-columns:1.3fr .6fr 2fr; gap:1px; }
.ai-score-head > span { padding:9px 12px; background:var(--surface-2); color:var(--muted); font-size:10px; font-weight:700; }
.ai-score-row > span { padding:10px 12px; background:var(--surface); font-size:11.5px; color:#293152; line-height:1.6; }
.ai-score-row > span:first-child { font-weight:700; color:#0e1430; }
.ai-timeline { margin:0; padding:0; list-style:none; display:grid; gap:8px; }
.ai-timeline li { display:flex; align-items:center; gap:12px; padding:9px 12px; background:var(--surface-2); border-left:3px solid var(--primary); border-radius:8px; }
.ai-timeline b { flex:0 0 auto; min-width:120px; color:var(--primary); font-size:11px; font-weight:800; }
.ai-timeline span { font-size:11.5px; color:#293152; }
.ai-kv-grid { display:grid; grid-template-columns:1fr 1fr; gap:1px; overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:10px; }
.ai-kv-grid > div { padding:11px 13px; background:var(--surface); }
.ai-kv-grid span { display:block; color:var(--muted); font-size:10px; }
.ai-kv-grid strong { display:block; margin-top:4px; color:#0e1430; font-size:12px; }
.price-ref-grid { display:grid; grid-template-columns:2fr 1fr 1fr 1fr; gap:1px; overflow:hidden; background:var(--line); border:1px solid var(--line); border-radius:10px; }
.price-ref-grid > div { padding:12px 14px; background:var(--surface); }
.price-ref-grid span { display:block; color:var(--muted); font-size:10px; }
.price-ref-grid strong { display:block; margin-top:5px; color:#0e1430; font-size:13px; font-weight:800; }
.price-ref-main { background:linear-gradient(135deg,rgba(18,177,132,.1),var(--surface)) !important; }
.price-ref-main strong { color:var(--emerald); font-size:15px; }
@media (max-width:760px) {
  .ai-score-head, .ai-score-row { grid-template-columns:1fr; }
  .ai-kv-grid, .price-ref-grid { grid-template-columns:1fr; }
  .ai-timeline b { min-width:88px; }
}


/* ================= 技术强制项 + 依据标注徽章 ================= */
.ai-tech-list { margin:0; padding:0; list-style:none; display:grid; gap:8px; }
.ai-tech-list li { display:flex; align-items:flex-start; gap:10px; padding:10px 12px; background:var(--surface-2); border:1px solid var(--line); border-radius:9px; }
.ai-tech-list li.mandatory { background:rgba(226,73,107,.06); border-color:rgba(226,73,107,.28); }
.ai-tech-list .tech-flag { flex:0 0 auto; padding:3px 8px; border-radius:6px; font-size:9px; font-weight:800; color:var(--muted); background:var(--surface-3); }
.ai-tech-list li.mandatory .tech-flag { color:#fff; background:var(--danger); }
.ai-tech-list li > div { min-width:0; }
.ai-tech-list strong { display:block; font-size:11.5px; font-weight:600; color:#0e1430; line-height:1.6; }
.ai-tech-list small { display:block; margin-top:3px; color:var(--muted); font-size:10px; line-height:1.5; }
.src-badge { margin-left:6px; padding:2px 6px; border-radius:5px; font-size:8px; font-weight:800; }
.src-badge.origin { color:var(--success); background:rgba(18,160,106,.12); }
.src-badge.infer { color:var(--warn); background:rgba(224,138,42,.14); }


/* ================= 企业资质库表单 + 资质比对面板 ================= */
.company-profile-card { margin-top:14px; padding:22px; }
.company-profile-form { display:grid; gap:13px; margin-top:16px; }
.company-profile-form label { display:block; color:var(--ink-2); font-size:12px; font-weight:700; }
.company-profile-form input, .company-profile-form textarea { width:100%; margin-top:6px; padding:10px 12px; color:var(--ink); background:var(--surface-2); border:1px solid var(--line-2); border-radius:10px; font:inherit; font-size:12.5px; outline:none; resize:vertical; transition:border-color .2s,box-shadow .2s,background .2s; }
.company-profile-form input:focus, .company-profile-form textarea:focus { background:#fff; border-color:var(--primary); box-shadow:0 0 0 3px rgba(47,107,255,.12); }
.company-profile-form .button { justify-self:start; min-width:150px; }

.ai-compliance-list { margin:0; padding:0; list-style:none; display:grid; gap:8px; }
.ai-compliance-list li { display:flex; align-items:flex-start; gap:10px; padding:11px 13px; background:var(--surface-2); border:1px solid var(--line); border-radius:10px; }
.ai-compliance-list .cmp-status { flex:0 0 auto; padding:3px 9px; border-radius:6px; font-size:10px; font-weight:800; }
.ai-compliance-list .cmp-status.ok { color:var(--success); background:rgba(18,160,106,.12); }
.ai-compliance-list .cmp-status.no { color:#fff; background:var(--danger); }
.ai-compliance-list .cmp-status.maybe { color:var(--warn); background:rgba(224,138,42,.14); }
.ai-compliance-list li > div { min-width:0; }
.ai-compliance-list strong { display:block; font-size:12px; font-weight:600; color:#0e1430; line-height:1.6; }
.ai-compliance-list small { display:block; margin-top:3px; color:var(--muted); font-size:10.5px; line-height:1.55; }
.ai-panel.compliance { background:linear-gradient(135deg,rgba(47,107,255,.06),var(--surface)); border-color:rgba(47,107,255,.24); }


/* ================= 历史分析记录 ================= */
.analysis-archive { margin-top:18px; padding:20px; }
.archive-list { display:grid; gap:8px; margin-top:6px; }
.archive-item { display:flex; align-items:center; gap:12px; padding:11px 13px; background:var(--surface-2); border:1px solid var(--line); border-radius:10px; cursor:pointer; transition:border-color .2s,background .2s,transform .2s; }
.archive-item:hover { background:#fff; border-color:var(--primary); transform:translateY(-1px); box-shadow:var(--shadow-xs); }
.archive-main { min-width:0; flex:1; }
.archive-main strong { display:block; overflow:hidden; font-size:12.5px; font-weight:700; color:#0e1430; text-overflow:ellipsis; white-space:nowrap; }
.archive-main small { display:block; margin-top:3px; color:var(--muted); font-size:10px; }
.archive-item .tag { flex:0 0 auto; }
.archive-del { flex:0 0 auto; width:26px; height:26px; color:var(--muted-2); background:transparent; border:0; border-radius:8px; font-size:16px; transition:color .2s,background .2s; }
.archive-del:hover { color:var(--danger); background:rgba(226,73,107,.1); }

/* -------------------- 分析页·参考项目提示条 -------------------- */
.analysis-ref-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 12px 0;
  padding: 10px 14px;
  border-radius: 12px;
  border: 1px solid rgba(148, 163, 184, 0.28);
  background: rgba(148, 163, 184, 0.10);
  color: var(--text-muted, #64748b);
  font-size: 13px;
  line-height: 1.5;
}
.analysis-ref-bar a {
  color: var(--brand, #2563eb);
  text-decoration: none;
  font-weight: 600;
}
.analysis-ref-bar a:hover { text-decoration: underline; }
.analysis-ref-bar b { color: var(--text, #0f172a); }
.analysis-ref-bar .ref-dot {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #94a3b8;
}
.analysis-ref-bar #ref-clear { margin-left: auto; }
.analysis-ref-bar.active {
  border-color: rgba(37, 99, 235, 0.35);
  background: rgba(37, 99, 235, 0.10);
  color: #1d4ed8;
}
.analysis-ref-bar.active .ref-dot {
  background: #2563eb;
  box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.18);
}

/* 参考条·可展开名称列表 */
.analysis-ref-bar.active { flex-direction: column; align-items: stretch; gap: 8px; }
.analysis-ref-bar .ref-bar-head { display: flex; align-items: center; gap: 10px; }
.analysis-ref-bar .ref-toggle {
  flex: 1 1 auto;
  text-align: left;
  background: none;
  border: none;
  padding: 0;
  cursor: pointer;
  color: inherit;
  font: inherit;
}
.analysis-ref-bar .ref-toggle b { color: #1d4ed8; }
.analysis-ref-bar .ref-caret { display: inline-block; transition: transform 0.15s ease; opacity: 0.7; }
.analysis-ref-bar.expanded .ref-caret { transform: rotate(180deg); }
.analysis-ref-bar .ref-list {
  list-style: none;
  margin: 0;
  padding: 8px 10px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.6);
  border: 1px solid rgba(37, 99, 235, 0.18);
  max-height: 220px;
  overflow-y: auto;
}
.analysis-ref-bar .ref-list li {
  padding: 5px 8px;
  font-size: 12.5px;
  color: #334155;
  border-radius: 6px;
}
.analysis-ref-bar .ref-list li + li { border-top: 1px dashed rgba(148, 163, 184, 0.35); }
.analysis-ref-bar .ref-list li::before { content: "• "; color: #2563eb; }

/* -------------------- 企业资质库·说明块 -------------------- */
.profile-note {
  margin: 0 0 16px;
  padding: 16px 18px;
  border-radius: 14px;
  background: rgba(37, 99, 235, 0.06);
  border: 1px solid rgba(37, 99, 235, 0.16);
  border-left: 4px solid #2563eb;
}
.profile-note strong {
  display: block;
  margin-bottom: 10px;
  color: #1d4ed8;
  font-size: 14px;
}
.profile-note ul {
  margin: 0;
  padding-left: 18px;
  display: grid;
  gap: 6px;
}
.profile-note li {
  color: #475569;
  font-size: 12.5px;
  line-height: 1.6;
}
.profile-note li b { color: #0f172a; }

/* -------------------- 企业资质库·多套列表 -------------------- */
.profile-list { display: grid; gap: 10px; margin-bottom: 14px; }
.profile-empty {
  padding: 18px;
  border-radius: 12px;
  border: 1px dashed rgba(148, 163, 184, 0.4);
  background: rgba(148, 163, 184, 0.06);
  color: #64748b;
  font-size: 13px;
  line-height: 1.6;
}
.profile-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  border-radius: 12px;
  border: 1px solid rgba(37, 99, 235, 0.16);
  background: rgba(37, 99, 235, 0.05);
}
.profile-item-main { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.profile-item-main strong { color: #0f172a; font-size: 14px; }
.profile-item-main small { color: #64748b; font-size: 12px; }
.profile-item-actions { display: flex; gap: 6px; flex: 0 0 auto; }
.profile-form-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 6px; }

/* 分析页·企业资质选择条 */
.analysis-profile-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 12px 0;
  padding: 10px 14px;
  border-radius: 12px;
  border: 1px solid rgba(148, 163, 184, 0.28);
  background: rgba(148, 163, 184, 0.10);
  color: #64748b;
  font-size: 13px;
}
.analysis-profile-bar a { color: #2563eb; text-decoration: none; font-weight: 600; }
.analysis-profile-bar a:hover { text-decoration: underline; }
.analysis-profile-bar .pf-dot { flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; background: #94a3b8; }
.analysis-profile-bar select {
  flex: 1 1 auto;
  max-width: 320px;
  padding: 6px 10px;
  border-radius: 8px;
  border: 1px solid rgba(37, 99, 235, 0.28);
  background: #fff;
  color: #0f172a;
  font-size: 13px;
}
.analysis-profile-bar.active { border-color: rgba(37, 99, 235, 0.35); background: rgba(37, 99, 235, 0.10); color: #1d4ed8; }
.analysis-profile-bar.active .pf-dot { background: #2563eb; box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.18); }

/* 分析前·资质核实弹窗 */
.analysis-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(15, 23, 42, 0.55);
  backdrop-filter: blur(2px);
}
.analysis-modal {
  width: min(560px, 100%);
  max-height: 82vh;
  overflow-y: auto;
  padding: 24px;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.28);
}
.analysis-modal h3 { margin: 0 0 6px; font-size: 18px; color: #0f172a; }
.analysis-modal > p { margin: 0 0 16px; color: #64748b; font-size: 13px; line-height: 1.6; }
.analysis-modal-body { display: grid; gap: 10px; margin-bottom: 18px; }
.analysis-modal-body .pf-row {
  padding: 10px 12px;
  border-radius: 10px;
  background: rgba(37, 99, 235, 0.05);
  border: 1px solid rgba(37, 99, 235, 0.12);
}
.analysis-modal-body .pf-row span { display: block; color: #1d4ed8; font-size: 12px; font-weight: 700; margin-bottom: 4px; }
.analysis-modal-body .pf-row p { margin: 0; color: #334155; font-size: 13px; line-height: 1.6; white-space: pre-wrap; }
.analysis-modal-actions { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }

/* -------------------- AI 分析概览·客观信号条（无投标建议结论） -------------------- */
.ai-summary.neutral { border-left: 4px solid #2563eb; }
.ai-signals {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 10px 0 12px;
}
.ai-signals .sig {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 700;
  color: #475569;
  background: rgba(148, 163, 184, 0.16);
  border: 1px solid rgba(148, 163, 184, 0.3);
}
.ai-signals .sig.ok { color: #12a06a; background: rgba(18, 160, 106, 0.12); border-color: rgba(18, 160, 106, 0.28); }
.ai-signals .sig.pend { color: #b7791f; background: rgba(224, 138, 42, 0.12); border-color: rgba(224, 138, 42, 0.28); }
.ai-signals .sig.warn { color: #c2410c; background: rgba(234, 88, 12, 0.12); border-color: rgba(234, 88, 12, 0.28); }
.ai-signals .sig.no { color: #e2496b; background: rgba(226, 73, 107, 0.12); border-color: rgba(226, 73, 107, 0.3); }

/* -------------------- 内置模型选择条 -------------------- */
.analysis-model-bar {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin: 12px 0; padding: 10px 14px; border-radius: 12px;
  border: 1px solid rgba(148, 163, 184, 0.28); background: rgba(148, 163, 184, 0.10);
  color: #64748b; font-size: 13px;
}
.analysis-model-bar .mb-dot { flex: 0 0 auto; width: 8px; height: 8px; border-radius: 50%; background: #94a3b8; }
.analysis-model-bar select {
  flex: 1 1 auto; max-width: 320px; padding: 6px 10px; border-radius: 8px;
  border: 1px solid rgba(37, 99, 235, 0.28); background: #fff; color: #0f172a; font-size: 13px;
}
.analysis-model-bar .mb-bal { margin-left: auto; color: #1d4ed8; }
.analysis-model-bar .mb-bal b { font-size: 14px; }
.analysis-model-bar .mb-bal a { color: #2563eb; text-decoration: none; font-weight: 600; }
.analysis-model-bar.active { border-color: rgba(37, 99, 235, 0.35); background: rgba(37, 99, 235, 0.08); }
.analysis-model-bar.active .mb-dot { background: #2563eb; box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.18); }

/* 弹窗内积分提示 */
.analysis-modal .modal-credit {
  margin: 0 0 12px; padding: 10px 12px; border-radius: 10px;
  background: rgba(37, 99, 235, 0.08); border: 1px solid rgba(37, 99, 235, 0.18);
  color: #1d4ed8; font-size: 13px;
}
.analysis-modal .modal-credit b { font-size: 15px; }

/* -------------------- 积分中心卡 -------------------- */
.credit-center-card .credit-balance-row { font-size: 14px; color: #334155; margin: 4px 0 14px; }
.credit-center-card .credit-balance-row b { font-size: 22px; color: #1d4ed8; font-weight: 800; }
.credit-center-card .redeem-form { display: flex; gap: 8px; }
.credit-center-card .redeem-form input {
  flex: 1 1 auto; padding: 9px 12px; border-radius: 10px;
  border: 1px solid rgba(148, 163, 184, 0.4); font-size: 13px;
}
.credit-center-card .credit-packs { margin: 12px 0; color: #64748b; font-size: 12px; line-height: 1.7; }
.credit-center-card .credit-ledger { display: grid; gap: 6px; margin-top: 8px; }
.credit-center-card .ledger-row {
  display: flex; align-items: center; gap: 10px; padding: 7px 10px;
  border-radius: 8px; background: rgba(148, 163, 184, 0.08); font-size: 12.5px; color: #475569;
}
.credit-center-card .ledger-row span { flex: 1 1 auto; min-width: 0; }
.credit-center-card .ledger-row b.plus { color: #12a06a; }
.credit-center-card .ledger-row b.minus { color: #e2496b; }
.credit-center-card .ledger-row time { color: #94a3b8; font-size: 11px; }
.credit-center-card .ledger-empty { color: #94a3b8; font-size: 12px; }

/* 统一走内置模型：隐藏用户自配的接口表单，#llm 页仅保留积分中心 */
#llm .llm-layout { display: none !important; }

/* -------------------- 积分中心 · 充值页设计 -------------------- */
.credit-center-card .credit-hero {
  display: grid; grid-template-columns: minmax(200px, 0.9fr) minmax(280px, 1.4fr);
  gap: 16px; margin: 6px 0 20px;
}
@media (max-width: 720px) { .credit-center-card .credit-hero { grid-template-columns: 1fr; } }
.credit-center-card .credit-hero-bal {
  display: flex; flex-direction: column; justify-content: center; gap: 2px;
  padding: 18px 20px; border-radius: 14px; color: #fff;
  background: linear-gradient(135deg, #2563eb, #4f46e5);
  box-shadow: 0 10px 26px rgba(37, 99, 235, 0.28);
}
.credit-center-card .credit-hero-bal span { font-size: 12px; opacity: 0.85; }
.credit-center-card .credit-hero-bal strong { font-size: 40px; font-weight: 800; line-height: 1.1; }
.credit-center-card .credit-hero-bal small { font-size: 11px; opacity: 0.8; }
.credit-center-card .redeem-form { display: flex; flex-direction: column; justify-content: center; }
.credit-center-card .redeem-form > label { font-size: 13px; font-weight: 700; color: #334155; margin-bottom: 8px; }
.credit-center-card .redeem-row { display: flex; gap: 8px; }
.credit-center-card .redeem-row input {
  flex: 1 1 auto; min-width: 0; padding: 10px 12px; border-radius: 10px;
  border: 1px solid rgba(148, 163, 184, 0.45); font-size: 13px;
}
.credit-center-card .credit-section { margin-top: 20px; }
.credit-center-card .credit-section h4 {
  margin: 0 0 12px; font-size: 14px; color: #0f172a;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.credit-center-card .credit-section h4 .soon {
  font-size: 11px; font-weight: 600; color: #b7791f;
  background: rgba(224, 138, 42, 0.12); padding: 3px 8px; border-radius: 999px;
}
.credit-center-card .credit-packs-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
@media (max-width: 720px) { .credit-center-card .credit-packs-grid { grid-template-columns: 1fr; } }
.credit-center-card .pack {
  position: relative; padding: 16px; border-radius: 14px; text-align: center;
  border: 1px solid rgba(148, 163, 184, 0.3); background: #fff;
  transition: border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.credit-center-card .pack:hover { border-color: rgba(37, 99, 235, 0.5); transform: translateY(-2px); box-shadow: 0 8px 20px rgba(37, 99, 235, 0.12); }
.credit-center-card .pack.recommend { border-color: #2563eb; background: rgba(37, 99, 235, 0.05); }
.credit-center-card .pack em {
  position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  font-size: 11px; font-weight: 700; color: #fff; background: #2563eb;
  padding: 2px 10px; border-radius: 999px; font-style: normal;
}
.credit-center-card .pack b { display: block; font-size: 24px; font-weight: 800; color: #0f172a; }
.credit-center-card .pack span { display: block; margin-top: 4px; font-size: 13px; color: #1d4ed8; font-weight: 600; }
.credit-center-card .pack i { display: block; margin-top: 4px; font-size: 11px; color: #94a3b8; font-style: normal; }
.credit-center-card .model-price-table { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; }
@media (max-width: 720px) { .credit-center-card .model-price-table { grid-template-columns: 1fr; } }
.credit-center-card .mp-row {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 12px; border-radius: 10px; background: rgba(148, 163, 184, 0.08);
  border: 1px solid rgba(148, 163, 184, 0.22); font-size: 13px; color: #334155;
}
.credit-center-card .mp-row b { color: #1d4ed8; font-weight: 700; white-space: nowrap; }
.credit-center-card .mp-empty { color: #94a3b8; font-size: 12px; }
.credit-center-card .credit-help ul { margin: 0; padding-left: 18px; display: grid; gap: 8px; }
.credit-center-card .credit-help li { color: #475569; font-size: 12.5px; line-height: 1.7; }
.credit-center-card .credit-help li b { color: #0f172a; }

/* -------------------- 积分中心 · 加大留白，与整体风格统一 -------------------- */
.credit-center-card { padding: 26px 30px 32px; }
.credit-center-card .panel-title { margin-bottom: 8px; }
.credit-center-card .credit-hero { margin: 18px 0 28px; gap: 20px; }
.credit-center-card .credit-hero-bal { padding: 24px 26px; }
.credit-center-card .credit-section { margin-top: 32px; }
.credit-center-card .credit-section:first-of-type { margin-top: 8px; }
.credit-center-card .credit-section h4 { margin-bottom: 16px; }
.credit-center-card .credit-packs-grid { gap: 16px; }
.credit-center-card .pack { padding: 22px 16px; }
.credit-center-card .model-price-table { gap: 10px; }
.credit-center-card .mp-row { padding: 14px 16px; }
.credit-center-card .credit-help ul { gap: 11px; }
.credit-center-card .credit-help li { line-height: 1.85; }
.credit-center-card .credit-ledger { margin-top: 4px; }
