/* $2.99 scan details (SCAN_DETAILS_PAID=1 builds only; scripts/scan-unlock.mjs links this file on / and nowhere else). */
/* Locked result (app.js sets data-scan-locked on .hero-visual): the card fits its content (score, unlock box) instead of
   keeping the sample image's full height, which left a large empty area. The sample stays out of the way while it shows. */
.hero-visual[data-state="result"][data-scan-locked] .figure { display: none; }
.hero-visual[data-state="result"][data-scan-locked] .scan-result { position: relative; inset: auto; }
.hero-visual[data-state="result"][data-scan-locked] .scan-card-body { flex: none; overflow: visible; }
/* The unlock's required box on the ink background (same row as the report consent, consent.css). */
.scan-unlock .consent { display: flex; flex-direction: column; gap: var(--space-2); margin-top: var(--space-2); }
.scan-unlock .consent-row { display: flex; align-items: flex-start; gap: var(--space-3); min-height: 44px; padding: 10px 0; cursor: pointer; line-height: 1.4; }
.scan-unlock .consent-row input { flex: 0 0 auto; width: 24px; height: 24px; margin: 0; accent-color: var(--signal); cursor: pointer; }
.scan-unlock .consent-row input:focus-visible { outline: 3px solid var(--signal); outline-offset: 2px; }
.scan-unlock .consent-row a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
/* Hover/tap keeps the card's link color (Team Lead 1:19 AM ET Oct 16): the global a:not(.btn):not(.skip):hover rule is more
   specific and turned the Terms link dark blue on the navy card. Same fix as the /pricing card link (7b33c95). */
.scan-unlock .consent-row a:not(.btn):not(.skip):hover { color: inherit; }
.scan-unlock .consent-error:empty { display: none; }
.scan-unlock .consent-error { color: var(--signal); font-weight: 600; }
