/* AI-readiness scanner. Uses Theme.GrandNodeCom tokens (--gnc-*) with fallbacks, so it also reads in other themes. */
.airscan {
    --airscan-accent: var(--gnc-accent, #17d7e5);
    --airscan-ink: var(--gnc-ink, #0b1220);
    --airscan-muted: var(--gnc-muted, #5b6474);
    --airscan-line: var(--gnc-line, #d7dce4);
    --airscan-surface: var(--gnc-surface, #ffffff);
    --airscan-surface-2: var(--gnc-surface-2, #f4f6f9);
    --airscan-field-bg: var(--gnc-field-bg, #ffffff);
    --airscan-field-border: var(--gnc-field-border, #6b7482);
    --airscan-radius: var(--gnc-radius, 12px);
    --airscan-radius-sm: var(--gnc-radius-sm, 8px);
    --airscan-pass: #1a8f4c;
    --airscan-partial: #b26a00;
    --airscan-fail: #c62828;
    color: var(--airscan-ink);
}

.airscan *, .airscan *::before, .airscan *::after { box-sizing: border-box; }

.airscan-form { max-width: 760px; margin: 0 auto; }
.airscan-label { display: block; font-weight: 600; margin-bottom: .5rem; }
.airscan-row { display: flex; gap: .75rem; flex-wrap: wrap; }
.airscan-input {
    flex: 1 1 18rem;
    min-width: 0;
    width: 100%;
    padding: .8rem 1rem;
    font: inherit;
    color: var(--airscan-ink);
    background: var(--airscan-field-bg);
    border: 1px solid var(--airscan-field-border);
    border-radius: var(--airscan-radius-sm);
}
.airscan-row .airscan-input { width: auto; }
.airscan-submit { flex: 0 0 auto; }
.airscan-hint, .airscan-status { color: var(--airscan-muted); margin: .5rem 0 0; min-height: 1.5em; }
.airscan-status { color: var(--airscan-ink); font-weight: 500; }
.airscan-form[aria-busy="true"] .airscan-status::before {
    content: "";
    display: inline-block;
    width: .9em;
    height: .9em;
    margin-right: .5em;
    vertical-align: -.1em;
    border: 2px solid var(--airscan-line);
    border-top-color: var(--airscan-accent);
    border-radius: 50%;
    animation: airscan-spin .8s linear infinite;
}

.airscan-result { max-width: 960px; margin: 2rem auto 0; }
.airscan-summary { display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap; margin-bottom: 1.5rem; }
.airscan-summary__text { flex: 1 1 16rem; min-width: 0; }
.airscan-grade { margin: 0 0 .25rem; }
.airscan-grade:focus { outline: none; }
.airscan-grade:focus-visible { outline: 2px solid var(--airscan-accent); outline-offset: 4px; }
.airscan-host { margin: 0; overflow-wrap: anywhere; }
.airscan-platform { margin: .25rem 0 0; }

.airscan-ring { flex: 0 0 120px; width: 120px; height: 120px; }
.airscan-ring svg { display: block; width: 120px; height: 120px; }
.airscan-ring__track { fill: none; stroke: var(--airscan-line); stroke-width: 10; }
.airscan-ring__bar { fill: none; stroke: var(--airscan-accent); stroke-width: 10; stroke-linecap: round; transition: stroke-dashoffset .8s ease-out; }
.airscan-ring[data-grade="notready"] .airscan-ring__bar { stroke: var(--airscan-fail); }
.airscan-ring[data-grade="gettingthere"] .airscan-ring__bar { stroke: var(--airscan-partial); }
.airscan-ring__value { font-size: 32px; font-weight: 700; fill: currentColor; }

.airscan-areas { display: grid; gap: 1rem; }
.airscan-area { background: var(--airscan-surface); border: 1px solid var(--airscan-line); border-radius: var(--airscan-radius); padding: 1rem 1.25rem; min-width: 0; }
.airscan-area__title { display: flex; justify-content: space-between; gap: 1rem; font-size: 1.05rem; margin: 0 0 .75rem; }
.airscan-area__points { color: var(--airscan-muted); font-weight: 500; white-space: nowrap; }
.airscan-checks { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.airscan-check { display: grid; grid-template-columns: auto 1fr auto; gap: .75rem; align-items: start; }
.airscan-check__body { display: grid; gap: .15rem; min-width: 0; }
.airscan-check__why, .airscan-check__note { color: var(--airscan-muted); font-size: .92rem; overflow-wrap: anywhere; }
.airscan-check__note { font-style: italic; }
.airscan-check__points { color: var(--airscan-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.airscan-badge {
    display: inline-block;
    min-width: 6.5rem;
    text-align: center;
    padding: .15rem .5rem;
    border-radius: 999px;
    font-size: .8rem;
    font-weight: 600;
    border: 1px solid currentColor;
}
.airscan-check--pass .airscan-badge { color: var(--airscan-pass); }
.airscan-check--partial .airscan-badge { color: var(--airscan-partial); }
.airscan-check--fail .airscan-badge { color: var(--airscan-fail); }
.airscan-check--notchecked .airscan-badge { color: var(--airscan-muted); }

.airscan-ctas { margin-top: 1.5rem; }
.airscan-cta { display: flex; flex-direction: column; gap: .75rem; align-items: flex-start; }
.airscan-cta__text { margin: 0; }
.airscan-disclaimer { margin-top: 1.25rem; font-size: .9rem; }

.airscan-report { margin-top: 1.5rem; display: grid; gap: .9rem; max-width: 640px; }
.airscan-report__title { margin: 0; font-size: 1.15rem; }
.airscan-field { display: grid; gap: .35rem; }
.airscan-field label { font-weight: 600; }
.airscan-consent { display: grid; grid-template-columns: auto 1fr; gap: .6rem; align-items: start; }
.airscan-consent input { width: 1.15rem; height: 1.15rem; margin-top: .15rem; accent-color: var(--airscan-accent); }
.airscan-privacy { margin: 0; }
.airscan-report__status { margin: 0; min-height: 1.5em; font-weight: 500; }

.airscan a:focus-visible, .airscan button:focus-visible, .airscan input:focus-visible, .airscan select:focus-visible {
    outline: 2px solid var(--airscan-accent);
    outline-offset: 2px;
}

@media (max-width: 560px) {
    .airscan-row { flex-direction: column; }
    .airscan-row .airscan-input, .airscan-submit { width: 100%; }
    .airscan-check { grid-template-columns: 1fr auto; }
    .airscan-check .airscan-badge { grid-column: 1 / -1; justify-self: start; min-width: 0; }
    .airscan-summary { flex-direction: column; align-items: flex-start; }
}

@media (prefers-reduced-motion: reduce) {
    .airscan-ring__bar { transition: none; }
    .airscan-form[aria-busy="true"] .airscan-status::before { animation: none; }
}

@keyframes airscan-spin { to { transform: rotate(360deg); } }
