:root{--bg:#f6f7f9;--panel:#ffffff;--text:#172033;--muted:#687386;--border:#e1e5eb;--accent:#315efb;--accent-soft:#eef2ff;--good:#1f7a4c;--good-bg:#edf8f2;--warn:#9a6700;--warn-bg:#fff6dd;--bad:#b42318;--bad-bg:#fff0ee;--neutral:#546174;--neutral-bg:#eff2f5}*{box-sizing:border-box}body,html{background:var(--bg)}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text)}button,input{font:inherit}button{cursor:pointer}code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.shell{max-width:1120px;margin:0 auto;padding:34px 28px 70px}.landing{min-height:100vh}.brandRow{display:flex;gap:11px;align-items:center}.brandRow strong{display:block;font-size:16px;letter-spacing:-.02em}.brandRow span{display:block;margin-top:1px;font-size:12px;color:var(--muted)}.brandMark{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;color:white;background:#111827}.brandRow.compact .brandMark{width:34px;height:34px}.hero{max-width:760px;margin:88px 0 42px}.eyebrow{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;display:flex;gap:7px;align-items:center}.hero h1{font-size:clamp(42px,6vw,68px);line-height:1.03;letter-spacing:-.045em;margin:15px 0 20px;max-width:900px}.heroCopy{font-size:19px;line-height:1.65;color:var(--muted);max-width:760px;margin:0}.uploadPanel{background:var(--panel);border:1px solid var(--border);border-radius:18px;padding:22px}.uploadChoice{display:grid;grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);grid-gap:8px;gap:8px;align-items:stretch}.dropZone,.urlBox{min-height:180px;border:1.5px dashed #c6ccd6;border-radius:14px;padding:24px;background:#fbfcfd;transition:.16s ease}.dropZone{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;cursor:pointer}.dropZone.selected,.dropZone:hover{border-color:var(--accent);background:var(--accent-soft)}.dropZone input{display:none}.dropZone strong{margin-top:14px;font-size:16px}.dropZone span,.urlBox span{color:var(--muted);font-size:13px;margin-top:6px;line-height:1.45}.or{display:grid;place-items:center;color:#98a1b1;font-size:12px;position:relative}.or:before{content:"";width:1px;height:100%;background:var(--border);position:absolute;left:50%}.or span{background:var(--panel);padding:8px 0;z-index:1}.urlBox{display:grid;grid-template-columns:auto 1fr;grid-gap:12px;gap:12px;align-content:center}.urlBox strong{display:block}.urlBox input{grid-column:1/-1;margin-top:12px;width:100%;padding:12px 13px;border:1px solid var(--border);border-radius:9px;background:white;color:var(--text);outline:none}.urlBox input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.analysisContract{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin:18px 0}.analysisContract>div{display:flex;gap:10px;align-items:flex-start;padding:12px;border-radius:10px;background:#f7f8fa}.analysisContract svg{margin-top:2px;color:#4b5563}.analysisContract small,.analysisContract strong{display:block}.analysisContract strong{font-size:13px}.analysisContract small{color:var(--muted);margin-top:3px;line-height:1.35}.primaryButton{width:100%;border:0;border-radius:10px;background:var(--accent);color:white;padding:14px 18px;display:flex;justify-content:center;align-items:center;gap:9px;font-weight:700}.primaryButton:disabled{opacity:.7;cursor:wait}.errorBanner{background:var(--bad-bg);color:var(--bad);display:flex;gap:9px;align-items:center;padding:11px 13px;border-radius:9px;margin:12px 0;font-size:13px}.busyNote{text-align:center;color:var(--muted);font-size:12px;margin:10px 0 0}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.pipeline{display:flex;gap:12px;align-items:center;justify-content:center;margin-top:28px;color:var(--muted)}.pipeline>div{text-align:center;min-width:115px}.pipeline>div svg{width:21px;height:21px}.pipeline b,.pipeline span{display:block}.pipeline b{color:var(--text);font-size:12px;margin:4px 0 2px}.pipeline span{font-size:11px}.pipeline>svg{width:14px;color:#b2bac6}.workspace{min-height:100vh;display:grid;grid-template-columns:230px minmax(0,1fr)}.sidebar{border-right:1px solid var(--border);background:#fbfcfd;padding:22px 16px;display:flex;flex-direction:column;min-height:100vh;position:-webkit-sticky;position:sticky;top:0;align-self:start;height:100vh}.newAnalysis{margin:26px 0 14px;border:1px solid var(--border);background:white;padding:10px 11px;border-radius:9px;text-align:left;color:var(--text)}.sidebar nav{display:grid;grid-gap:4px;gap:4px}.sidebar nav button{border:0;background:transparent;display:flex;gap:10px;align-items:center;text-align:left;padding:10px 11px;border-radius:8px;color:#4b5668}.sidebar nav button.active{background:var(--accent-soft);color:#2748c7;font-weight:700}.sideMeta{margin-top:auto;padding-top:18px;border-top:1px solid var(--border);display:grid;grid-gap:4px;gap:4px;font-size:11px;color:var(--muted)}.sideMeta strong{color:var(--text);font-size:12px;margin-bottom:8px;overflow-wrap:anywhere}.sideMeta small{line-height:1.45;color:var(--warn)}.content{min-width:0;max-width:1260px;width:100%;padding:32px 40px 80px}.projectHeader{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:24px}.projectHeader h1{font-size:34px;letter-spacing:-.03em;margin:7px 0 5px}.projectHeader p{margin:0;color:var(--muted)}.statsGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:12px;gap:12px;margin-bottom:16px}.statsGrid>div{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:15px;display:grid;grid-template-columns:auto 1fr;grid-gap:6px 9px;gap:6px 9px;align-items:center}.statsGrid svg{width:18px;color:var(--muted)}.statsGrid span{font-size:12px;color:var(--muted)}.statsGrid strong{grid-column:1/-1;font-size:28px;letter-spacing:-.03em}.card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:20px;margin-bottom:16px}.card h2{margin:0 0 10px;font-size:18px;letter-spacing:-.01em}.card h3{font-size:13px;margin:20px 0 8px}.card p{color:#4c586b;line-height:1.6}.proseCard p{font-size:15px;max-width:950px}.twoCol{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr);grid-gap:16px;gap:16px}.chipRow{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}.chip{background:#f1f3f6;border:1px solid #e5e8ed;padding:5px 9px;font-size:11px;color:#4e596c}.chip,.pill{border-radius:999px}.pill{display:inline-flex;align-items:center;padding:5px 8px;font-size:10px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.pill.good{color:var(--good);background:var(--good-bg)}.pill.warn{color:var(--warn);background:var(--warn-bg)}.pill.bad{color:var(--bad);background:var(--bad-bg)}.pill.neutral{color:var(--neutral);background:var(--neutral-bg)}.compactList{display:grid;grid-gap:13px;gap:13px}.compactList>div{display:grid;grid-template-columns:auto 1fr;grid-gap:10px;gap:10px;align-items:start}.compactList small,.compactList strong{display:block}.compactList strong{font-size:13px}.compactList small{color:var(--muted);line-height:1.4;margin-top:3px}.codeList{display:flex;flex-wrap:wrap;gap:7px}.codeList code,.evidence code{background:#f4f6f8;border:1px solid #e5e8ec;border-radius:6px;padding:5px 7px;font-size:11px}.fileList{display:grid;grid-gap:9px;gap:9px}.fileList>div{display:grid;grid-template-columns:auto minmax(0,auto) 1fr;grid-gap:8px;gap:8px;align-items:baseline}.fileList code{font-size:11px;overflow-wrap:anywhere}.fileList span{color:var(--muted);font-size:11px}.sectionTitle{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.sectionTitle p{margin:0}.ghostButton{border:1px solid var(--border);background:white;border-radius:8px;padding:8px 10px;display:inline-flex;gap:6px;align-items:center;color:#4b5563}.mermaidCanvas{margin-top:18px;overflow-x:auto;padding:16px;border-radius:10px;background:#fbfcfd;border:1px solid #eef0f3}.mermaidCanvas svg{max-width:100%;height:auto}.diagramError{margin-top:16px;color:var(--bad);background:var(--bad-bg);padding:12px;border-radius:9px}.diagramError p{color:inherit}.diagramError pre{overflow-x:auto;white-space:pre-wrap;font-size:11px}.componentGrid,.entityGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:12px;gap:12px}.componentGrid article,.entityGrid article{background:#fafbfc;border:1px solid #eceff2;border-radius:10px;padding:14px}.componentGrid article h3,.entityGrid article h3{font-size:14px;margin:8px 0 5px}.componentGrid article p,.entityGrid article p{margin:0 0 12px;font-size:13px}.evidenceList{display:grid;grid-gap:7px;gap:7px}.evidence{display:grid;grid-template-columns:minmax(0,auto) 1fr;grid-gap:8px;gap:8px;align-items:start}.evidence span{font-size:11px;color:var(--muted);line-height:1.45}.stack{display:grid;grid-gap:0;gap:0}.featureHead{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.featureHead h2{margin-bottom:4px}.featureHead p{margin:0}.steps{color:#4c586b;line-height:1.65}.apiTable{display:grid;grid-gap:1px;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:9px;overflow:hidden}.apiRow{display:grid;grid-template-columns:76px minmax(170px,.8fr) 1.5fr;grid-gap:10px;gap:10px;align-items:center;background:white;padding:10px 12px;font-size:12px}.apiRow>span{color:var(--muted)}.method{font-weight:800}.method.get{color:#1769aa}.method.post{color:#157347}.method.patch,.method.put{color:#996515}.method.delete{color:#b42318}.auditList,.riskList{display:grid;grid-gap:12px;gap:12px}.auditList article,.riskList article{border-top:1px solid #edf0f2;padding-top:14px}.auditList article:first-child,.riskList article:first-child{border-top:0;padding-top:0}.auditList article>div:first-child,.riskList article>div:first-child{display:flex;gap:9px;align-items:center;flex-wrap:wrap}.auditList h3,.riskList h3{margin:0;font-size:14px}.auditList p,.riskList p{margin:8px 0}.plainList{padding-left:18px;color:#4c586b;line-height:1.65}.muted{color:var(--muted)!important}.small{font-size:11px}.empty{text-align:center;padding:46px 20px}.empty svg{color:#9aa4b3;width:30px;height:30px}.exportsCard{max-width:900px}.exportGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px;margin-top:18px}.exportGrid button{border:1px solid var(--border);background:#fbfcfd;border-radius:10px;padding:14px;display:grid;grid-template-columns:auto 1fr auto;grid-gap:11px;gap:11px;align-items:center;text-align:left;color:var(--text)}.exportGrid button:hover{border-color:#b7c1d1;background:white}.exportGrid button>svg{width:18px;color:#566175}.exportGrid button span small,.exportGrid button span strong{display:block}.exportGrid button span strong{font-size:13px}.exportGrid button span small{color:var(--muted);font-size:11px;margin-top:3px}.exportGrid .bundleButton{grid-column:1/-1;background:var(--accent-soft);border-color:#cbd6ff}@media print{.sidebar{display:none}.workspace{display:block}.content{max-width:none;padding:0}button{display:none!important}}@media (max-width:900px){.uploadChoice{grid-template-columns:1fr}.or{height:30px}.or:before{width:100%;height:1px;left:0;top:50%}.analysisContract,.statsGrid{grid-template-columns:repeat(2,1fr)}.pipeline{flex-wrap:wrap}.pipeline>svg{display:none}.workspace{grid-template-columns:1fr}.sidebar{position:static;height:auto;min-height:0;border-right:0;border-bottom:1px solid var(--border)}.sidebar nav{grid-template-columns:repeat(3,1fr)}.sideMeta{margin-top:16px}.twoCol{grid-template-columns:1fr}}@media (max-width:640px){.shell{padding:24px 16px 60px}.hero{margin-top:58px}.hero h1{font-size:42px}.heroCopy{font-size:16px}.analysisContract,.componentGrid,.entityGrid,.exportGrid,.statsGrid{grid-template-columns:1fr}.exportGrid .bundleButton{grid-column:auto}.content{padding:24px 16px 60px}.sidebar nav{grid-template-columns:repeat(2,1fr)}.projectHeader{flex-direction:column}.apiRow{grid-template-columns:65px 1fr}.apiRow span{grid-column:1/-1}.evidence{grid-template-columns:1fr}}.providerPanel{margin:24px 0 0;padding:18px;border:1px solid var(--border);border-radius:12px;min-width:0}.providerPanel legend{font-size:15px;font-weight:700;padding:0 7px}.providerIntro{color:var(--muted);font-size:13px;margin:0 0 16px}.providerGrid{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}.providerGrid label{display:grid;grid-gap:8px;gap:8px;font-size:13px;font-weight:600;min-width:0}.providerGrid input,.providerGrid select{width:100%;min-width:0;font:inherit;font-weight:400;border:1px solid var(--border);border-radius:8px;padding:11px 12px;background:white;color:var(--text)}.providerGrid input:focus,.providerGrid select:focus{outline:2px solid var(--accent);outline-offset:2px}.wideField{grid-column:1/-1}.privacyNote,.providerHint{font-size:12px;color:var(--muted);line-height:1.6;margin:14px 0 0}.privacyNote{display:flex;gap:8px;align-items:flex-start}.privacyNote svg{flex-shrink:0;margin-top:2px}@media (max-width:640px){.providerGrid{grid-template-columns:1fr}}.analysisProgress{margin-top:20px;padding:20px;background:#f8faff;border:1px solid #dce4ff;border-radius:12px}.progressFooter,.progressHeading{display:flex;align-items:center;justify-content:space-between;gap:12px}.progressHeading{font-size:14px}.progressHeading>span{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.analysisProgress progress{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;width:100%;height:7px;margin:18px 0;border-radius:8px;overflow:hidden;background:#e1e7f5}.analysisProgress progress::-webkit-progress-bar{background:#e1e7f5}.analysisProgress progress::-webkit-progress-value{background:var(--accent);-webkit-transition:width .3s;transition:width .3s}.analysisProgress progress::-moz-progress-bar{background:var(--accent)}.progressStages{list-style:none;display:grid;grid-template-columns:repeat(5,1fr);padding:0;margin:0;grid-gap:10px;gap:10px}.progressStages li{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:12px}.progressStages li>span{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#e9edf4;flex-shrink:0}.progressStages .current{color:var(--accent);font-weight:700}.progressStages .current>span{background:var(--accent);color:white}.progressStages .done{color:var(--good)}.analysisProgress p{font-size:13px;line-height:1.6}.progressFooter small{color:var(--muted);font-size:11px;line-height:1.5}@media(max-width:640px){.progressStages{grid-template-columns:1fr}}.keyCheck{display:flex;align-items:center;gap:12px;margin-top:14px}.keyCheck button{flex-shrink:0}.keyCheck small{color:var(--muted);line-height:1.5}.keyAccepted{background:var(--good-bg);color:var(--good);padding:12px;border-radius:8px;font-size:13px}@media(max-width:640px){.keyCheck{align-items:flex-start;flex-direction:column}}.evidenceWarning{background:var(--warn-bg);border:1px solid #ead39c;border-radius:12px;padding:16px 20px;margin-bottom:20px;color:#755000;font-size:13px;line-height:1.6}.evidenceWarning p{margin:6px 0}.evidenceWarning summary{cursor:pointer;font-weight:600}