/* Preserve both themes while making product text readable at normal zoom. */
html{font-size:16px}
body{font-size:1rem;line-height:1.65}
.header nav,.nav-contact{font-size:1rem}
.brand-sub{font-size:.75rem;letter-spacing:1.7px}
.eyebrow,.closing .eyebrow,.prose .eyebrow{font-size:.75rem;letter-spacing:1.5px;line-height:1.6}
.hero-description{font-size:1.125rem;line-height:1.8;max-width:470px}
.button,.hero-actions .button,.text-link,.hero-actions .text-link{font-size:1rem;line-height:1.5}
.button{min-height:48px}
.hero-actions{gap:20px}
.hero-note{font-size:.875rem;line-height:1.8}
.hero-note span{padding-inline:5px}
.visual-label{font-size:.75rem;letter-spacing:1px;line-height:1.6}
.sample-top{font-size:.875rem;flex-wrap:wrap}
.sample-badge,.small-label{font-size:.75rem;letter-spacing:.8px}
.sample-metrics span{font-size:.875rem;line-height:1.4;display:block}
.sample-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;font-size:.875rem;gap:10px}
.sample-row small{font-size:.75rem;line-height:1.6}
.sample-row .pill{font-size:.75rem;letter-spacing:0;padding:4px 6px}
.sample-bottom{font-size:.875rem;line-height:1.6}
.floating-note{font-size:.875rem}
.floating-note small{font-size:.75rem;line-height:1.6}
.principles>.container{flex-wrap:wrap}
.principles span{font-size:.75rem;letter-spacing:1px}
.principles p{font-size:1rem}
.section-heading>p{font-size:1rem;max-width:360px;line-height:1.8}
.service-top>span:last-child{font-size:.75rem;letter-spacing:.6px}
.service-card h3{font-size:1.375rem;line-height:1.4}
.service-card>p,.service-card ul{font-size:1rem;line-height:1.8}
.service-card>a{font-size:1rem;align-items:center;gap:12px;min-height:48px}
.service-card li{padding-left:18px;position:relative}
.service-card li:before{position:absolute;left:0;margin:0}
.scanner-intro>p:not(.eyebrow){font-size:1rem;line-height:1.8;max-width:420px}
.privacy-note{font-size:.875rem;line-height:1.8;max-width:420px}
.privacy-note strong{font-size:1rem}
.scanner-intro .text-link{font-size:.875rem}
.tab{font-size:1rem;min-height:56px}
.form-description{font-size:1rem;line-height:1.8}
.field-label{font-size:1rem}
.scanner-card input[type=text]{font-size:1rem;min-height:50px}
.field-help,.check-label{font-size:.875rem;line-height:1.75}
.check-label input{width:20px;height:20px}
.check-label small{font-size:.875rem;line-height:1.75}
.form-footer{font-size:.875rem;line-height:1.8}
.upload-zone strong{font-size:1rem}
.upload-zone>span:last-of-type,.upload-zone input{font-size:.875rem;line-height:1.75}
.upload-zone input{min-height:36px}
.progress strong{font-size:1rem}
.progress p,.error{font-size:.875rem;line-height:1.7}
.process-grid>article>span{font-size:.875rem}
.process-grid h3{font-size:1.25rem}
.process-grid p{font-size:1rem;line-height:1.8}
.faq-list summary{font-size:1.0625rem;line-height:1.6;min-height:56px}
.faq-list details p{font-size:1rem;line-height:1.8}
.footer{flex-wrap:wrap;row-gap:25px}
.footer>p,.footer>div{font-size:.875rem;line-height:1.7}
.footer>div{flex-wrap:wrap;gap:16px 24px}
.footer>div>a{display:inline-flex;align-items:center;min-height:44px}
.footer .brand-sub{font-size:.75rem;letter-spacing:1px}
#report-target{font-size:1rem}
.report-summary{font-size:1rem;line-height:1.8}
.finding h3{font-size:1.125rem}
.severity{font-size:.875rem}
.finding p{font-size:1rem;line-height:1.8}
.finding .location,.finding a{font-size:.875rem;line-height:1.8}
.report-panel p,.report-panel li{font-size:1rem;line-height:1.8}
.check-row strong{font-size:1rem}
.check-row span{font-size:.875rem}
.check-row p{font-size:.875rem;line-height:1.8}
.report-disclaimer,.report-next p{font-size:.875rem;line-height:1.8}
.prose p{font-size:1.0625rem;line-height:1.85}
.prose .lead{font-size:1.25rem}
@media(max-width:1100px){
  .service-top{align-items:flex-start;flex-wrap:wrap}
  .sample-row{grid-template-columns:25px minmax(0,1fr);column-gap:10px;row-gap:6px}
  .sample-row>.pill{grid-column:2;justify-self:start;margin-left:0}
}
@media(max-width:800px){
  .header nav{gap:18px;font-size:.9375rem}
  .nav-contact{padding-left:16px}
  .hero-description{font-size:1.125rem}
  .scanner-intro>p:not(.eyebrow){font-size:1rem}
  .sample-row{grid-template-columns:28px minmax(0,1fr) auto}
  .sample-row>.pill{grid-column:auto;justify-self:auto;margin-left:auto}
  .visual-label{left:0;right:0}
  .service-top{align-items:center}
}
@media(max-width:480px){
  .header-inner{gap:12px}
  .header nav{flex-shrink:0}
  .brand{font-size:1rem}
  .brand-sub{font-size:.75rem;letter-spacing:1px}
  .nav-contact{font-size:.875rem;padding-left:0}
  .hero h1{font-size:clamp(2.7rem,14vw,3.625rem)}
  .hero-description{font-size:1rem}
  .hero-actions{gap:20px;align-items:flex-start}
  .hero-note{font-size:.875rem}
  .hero-visual{width:100%;padding-top:62px}
  .visual-label{font-size:.75rem;letter-spacing:.7px}
  .sample-row{grid-template-columns:25px minmax(0,1fr)}
  .sample-row>.pill{grid-column:2;justify-self:start;margin-left:0}
  .sample-metrics>div{padding-inline:8px}
  .sample-metrics>div:first-child{padding-left:0}
  .sample-metrics span{font-size:.75rem}
  .sample-bottom{font-size:.75rem;gap:8px}
  .floating-note{right:0;font-size:.875rem;max-width:100%;padding:12px}
  .floating-note small{font-size:.75rem}
  .principles p{font-size:.875rem}
  .principles span{font-size:.75rem}
  .scanner-card form{padding:22px}
  .tabs{padding-inline:16px}
  .tab{font-size:1rem}
  .form-footer{font-size:.875rem}
  .footer>div{font-size:.875rem;justify-content:flex-start}
  .footer .brand-sub{font-size:.75rem}
  .prose p{font-size:1rem}
  .prose .lead{font-size:1.125rem}
}
@media print{
  .report-summary,.finding p,.report-panel p,.report-panel li{font-size:11pt}
  .finding .location,.finding a,.check-row span,.check-row p,.report-disclaimer{font-size:10pt}
}

/* Live scan progress and per-finding page lists. */
.progress-bar{display:block;width:100%;height:8px;margin:10px 0 6px;border:0;border-radius:999px;overflow:hidden;background:rgba(127,127,127,.25);appearance:none;-webkit-appearance:none}
.progress-bar::-webkit-progress-bar{background:transparent}
.progress-bar::-webkit-progress-value{background:currentColor;border-radius:999px;transition:width .4s ease}
.progress-bar::-moz-progress-bar{background:currentColor;border-radius:999px}
.progress>div{flex:1;min-width:0}
.finding details,.coverage-detail details{margin:8px 0;font-size:14px}
.finding details summary,.coverage-detail details summary{cursor:pointer;font-weight:600}
.finding details ul,.coverage-detail details ul{margin:8px 0 0;padding-left:18px;overflow-wrap:anywhere}
.report-next+.report-next{margin-top:16px}
@media (prefers-reduced-motion:reduce){.progress-bar::-webkit-progress-value{transition:none}}

/* Score summary. Grade colours are classes so the strict style policy stays intact. */
.score-card{display:flex;align-items:center;gap:22px;padding:22px;margin:0 0 22px;border:1px solid rgba(127,127,127,.3);border-radius:10px}
.score-ring{flex:none;width:104px;height:104px;aspect-ratio:1;border-radius:50%;border:6px solid currentColor;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.score-ring strong{font-size:2.25rem}
.score-ring span{font-size:.8125rem;opacity:.75;margin-top:4px}
.score-card h3{margin:2px 0 6px;font-size:1.25rem}
.score-card p:last-child{font-size:.875rem;line-height:1.7;margin:0}
.grade-a .score-ring,.grade-b .score-ring{color:#2e9e77}.grade-c .score-ring,.grade-d .score-ring{color:#c98a14}.grade-f .score-ring{color:#d2493f}
@media (max-width:600px){.score-card{flex-direction:column;align-items:flex-start}}
@media print{.score-card{break-inside:avoid}}

/* Perfect-score celebration: above the page, never blocking clicks, never printed. */
.fireworks{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:1000}
@media print{.fireworks{display:none}}

/* Code review: the file input is hidden but stays keyboard reachable; the zone is the control. */
.upload-zone{position:relative}.upload-zone input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;margin:0;min-height:0}
.upload-zone:focus-within{outline:2px solid currentColor;outline-offset:3px}.upload-zone.dragging{border-style:solid;border-color:#37796f;background:#eaf4f1}
.finding pre.snippet{margin:8px 0;padding:10px 12px;border-radius:6px;background:#0b1830;color:#d8efff;font-size:.8125rem;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}

/* Code excerpt in code-review findings. */
.finding pre.code-excerpt{margin:10px 0;padding:8px 0;border-radius:6px;background:#0b1830;color:#d8efff;font-size:.8125rem;line-height:1.65;overflow-x:auto}
.code-line{display:flex;padding:0 12px 0 0;white-space:pre}.code-number{flex:0 0 3.2em;padding-right:12px;text-align:right;color:#6f8aa8;user-select:none}
.code-line.is-match{background:rgba(255,120,110,.16);box-shadow:inset 3px 0 0 #ff7b72}.code-line.is-hidden .code-text{color:#8aa0b6;font-style:italic}
@media print{.finding pre.code-excerpt{white-space:pre-wrap;break-inside:avoid}}

/* Masked secret values in code excerpts. */
.code-line.is-hidden .code-text{font-style:normal;color:#d8efff}.code-masked{margin-left:12px;padding:0 6px;border-radius:4px;background:rgba(255,190,90,.16);color:#ffcf8a;font-size:.6875rem;align-self:center;white-space:nowrap}

/* One block per location, and the suggested fix under each excerpt. */
.code-place{margin:14px 0}.code-place+.code-place{padding-top:14px;border-top:1px dashed rgba(127,127,127,.3)}.code-place-label{margin:0 0 6px}
.suggested-fix{margin:10px 0 4px}.suggested-title{margin:0 0 6px;font-weight:700;font-size:.875rem;color:#7ee2b8}
.fix-code .code-line.is-removed{background:rgba(255,120,110,.14)}.fix-code .code-line.is-added{background:rgba(110,220,150,.14)}
.fix-code .code-line.is-removed .code-number{color:#ff8f87}.fix-code .code-line.is-added .code-number{color:#7ee2b8}
.suggested-note{margin:6px 0 0;font-size:.875rem;opacity:.85}
.paid-tag{margin-left:8px;padding:1px 7px;border-radius:999px;background:rgba(255,190,90,.18);color:#ffcf8a;font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}

/* Code source switch, repository fields and the no-retention notice. */
.source-switch{display:flex;gap:8px;margin:4px 0 14px;flex-wrap:wrap}.source-switch label{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid rgba(127,127,127,.35);border-radius:999px;cursor:pointer;font-size:.9375rem}
.source-switch label:has(input:checked){border-color:currentColor;font-weight:600}.source-switch input{accent-color:#37796f}
#repo-source input[type=text],#repo-source input[type=password]{width:100%;margin:4px 0 6px}
.private-repo{margin:8px 0 4px}.private-repo summary{cursor:pointer;font-weight:600;font-size:.9375rem}.private-repo[open] summary{margin-bottom:8px}
.retention-note{display:flex;gap:10px;align-items:flex-start;margin:14px 0 10px;padding:12px 14px;border-radius:8px;background:rgba(55,121,111,.08);border:1px solid rgba(55,121,111,.25)}
.retention-note p{margin:0;font-size:.875rem;line-height:1.7}

/* Download and save buttons keep a clear gap. */
.report-actions{gap:14px}

/* Light and dark theme switch in the header. */
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;margin-left:18px;flex-shrink:0;border:1px solid var(--line);border-radius:12px;background:transparent;color:inherit;cursor:pointer}
.theme-toggle:hover{color:var(--mint)}
.theme-toggle .theme-moon{display:none}
html[data-theme="classic"] .theme-toggle .theme-moon{display:block}
html[data-theme="classic"] .theme-toggle .theme-sun{display:none}
.header-actions{display:flex;align-items:center}
@media(max-width:700px){.theme-toggle{margin-left:10px}}

/* Account link shown as an icon. */
.header nav .nav-account{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:1px solid var(--line);border-radius:12px}
.header nav .nav-account{margin-left:12px}

/* Report calls to action share dimensions and keep labels on one line. */
.report-next>div{flex:1;min-width:0}
.report-next>.button{flex:0 0 300px;width:300px;min-height:54px;justify-content:space-between;gap:12px;white-space:nowrap;padding:14px 20px}
.report-next>.button>span[aria-hidden]{flex-shrink:0}
@media(max-width:800px){.report-next>.button{flex:none;width:300px;max-width:100%}}
@media(max-width:480px){
  .report-next{padding:18px}
  .report-next>.button{width:100%;font-size:.875rem;padding:14px 8px;gap:8px}
}

/* Detected technologies: one icon row per group, names as chips, file evidence on hover. */
#report-technologies{margin-bottom:22px}
#report-technologies h3{margin-bottom:14px}
.tech-row{display:flex;align-items:center;gap:12px;margin:0 0 10px}
.tech-label{flex:0 0 32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;background:var(--bg);border:1px solid var(--line);color:var(--mint)}
.tech-chips{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:0;padding:0;min-width:0}
.tech-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:999px;background:var(--bg);border:1px solid var(--line);color:var(--text);font-size:.9rem;line-height:1.3;cursor:default;overflow-wrap:anywhere}
.tech-count{font-size:.75rem;font-weight:600;color:var(--muted);background:var(--panel);border-radius:999px;padding:1px 7px}
.tech-label-named{flex:0 0 232px;width:232px;justify-content:flex-start;gap:8px;padding:0 10px}
.tech-group-name{font-size:.8125rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-width:640px){.tech-row:has(.tech-label-named){flex-direction:column;align-items:flex-start;gap:8px}.tech-label-named{width:auto;flex:none}}
.tech-note{font-size:.8rem;color:var(--muted);margin:12px 0 0}
/* Neutral "checking your browser" note that reuses the error slot. */
.error.is-status{background:#f0f7f5;border-color:#cbded8;color:#244e44}

/* Email check before free scans, shown inside the scan card in place of the form. */
.email-step{padding:31px}
.email-step h3{font-size:1.4375rem;letter-spacing:-.6px;line-height:1.3;margin-bottom:10px}
.email-step input{width:100%;background:#fff;color:#152d3a;border:1px solid #c3d2d8;border-radius:6px;padding:14px;font-size:1rem;min-height:50px;margin-bottom:18px}
.email-step input:focus{outline:3px solid var(--cyan);outline-offset:2px}
.email-step .submit-button{width:100%}
.gate-links{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:16px 0 0;font-size:.875rem}
.gate-links .text-link,.gate-status .text-link{background:none;border:0;padding:0;font:inherit;cursor:pointer;text-decoration:underline}
.gate-status{margin:12px 0 0;text-align:center;font-size:.875rem;color:#566c77}
.scan-captcha{padding:0 31px}.scan-captcha:has(iframe){padding:0 31px 22px}
/* Service cards: step label on top, icon on the same line as the heading. */
.service-step{margin:0 0 14px;font-size:.75rem;letter-spacing:.6px;color:#8fa4ba;text-transform:uppercase}
.service-head{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.service-head .service-icon{flex:none;margin:0}
.service-head h3{margin:0}

/* Header: links, then the theme and account buttons. On phones the links move into a menu, like the company site. */
.header-inner{position:relative}
.header-actions{gap:12px}
.header-actions .nav-account{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:1px solid var(--line);border-radius:12px}
.nav-account-text,.menu-toggle{display:none}
@media(max-width:800px){
  .header nav{display:none;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;padding:8px 20px 16px;background:var(--bg,#0b1523);border-bottom:1px solid var(--line);box-shadow:0 18px 40px #0005;z-index:40}
  .header nav.is-open{display:flex}
  .header nav>a:not(.nav-contact),.header nav a{display:block;padding:13px 2px;font-size:1rem;border-bottom:1px solid var(--line)}
  .header nav .nav-contact{border-left:0;padding-left:2px}
  .header nav .nav-account-text{border-bottom:0}
  .header-actions{margin-left:auto;gap:10px}
  .header-actions .nav-account{display:none}
  .menu-toggle{display:grid;gap:5px;place-content:center;width:42px;height:42px;border-radius:12px;border:1px solid var(--line);background:transparent;color:inherit;cursor:pointer}
  .menu-toggle span{display:block;width:18px;height:2px;border-radius:2px;background:currentColor;transition:transform .2s,opacity .2s}
  .menu-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .menu-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
  .menu-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
}
/* Desktop: links sit to the right, before the theme and account buttons; spacing comes from the actions gap. */
.header nav{margin-left:auto}
.header-actions .theme-toggle{margin-left:0}
.header-actions{margin-left:18px}
@media(max-width:800px){.header-actions{margin-left:auto}}
/* Keep the header on screen while scrolling, like .com and .ai. */
.header{position:sticky;top:0;z-index:50;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
html{scroll-padding-top:90px}
