.gnc-timeline { display: grid; grid-template-columns: 1fr 3fr 1fr; gap: 0; list-style: none; padding: 0; margin: 2rem 0 0; }
.gnc-timeline__step { position: relative; padding: 1.5rem .75rem 0 0; border-top: 2px solid var(--gnc-accent); color: var(--gnc-ink); font-size: .9375rem; }
.gnc-timeline__step--long { border-top-color: rgba(23, 215, 229, .5); }
.gnc-timeline__step:last-child { border-top-style: dashed; }
.gnc-timeline__dot { position: absolute; top: -7px; left: 0; width: 12px; height: 12px; border-radius: 50%; background: var(--gnc-accent); }
@media (max-width: 575.98px) {
    .gnc-timeline { grid-template-columns: 1fr; }
    .gnc-timeline__step { border-top: 0; border-left: 2px solid var(--gnc-accent); padding: 0 0 1.25rem 1.25rem; }
    .gnc-timeline__dot { top: 0; left: -7px; }
}
.gnc-checks .gnc-card { padding: 1rem 1.25rem 1rem 2.75rem; position: relative; }
.gnc-checks .gnc-card::before { content: "✓"; position: absolute; left: 1.1rem; top: 1rem; color: var(--gnc-accent); font-weight: 700; }
.gnc-area__icon { font-size: 1.5rem; color: var(--gnc-accent); }
.gnc-area h3, .gnc-step h3 { font-size: 1.0625rem; margin: .75rem 0 .5rem; color: #fff; }
.gnc-area p, .gnc-step p { color: var(--gnc-muted); margin: 0; font-size: .9375rem; }
.gnc-steps { counter-reset: gnc-step; }
.gnc-step { counter-increment: gnc-step; }
.gnc-step::before { content: counter(gnc-step, decimal-leading-zero); font-family: var(--gnc-mono); color: var(--gnc-accent); font-size: .875rem; }
.gnc-badge { display: inline-flex; align-items: center; gap: .6rem; padding: .7rem 1rem; border: 1px solid var(--gnc-accent); border-radius: 99px; color: var(--gnc-accent); font-weight: 600; margin-top: .5rem; }
.gnc-price-grid--single { max-width: 420px; }
.gnc-addon { display: flex; flex-direction: column; align-items: flex-start; gap: .5rem; scroll-margin-top: 6rem; }
.gnc-addon > .gnc-price-card { flex: 1; align-self: stretch; }
/* roadmap: one lane per horizon on a vertical rail; --rm is the lane colour */
.gnc-rm--shipped { --rm: var(--gnc-accent); --rm-soft: var(--gnc-accent-soft); }
.gnc-rm--now { --rm: #ffc43d; --rm-soft: rgba(255, 196, 61, .14); }
.gnc-rm--next { --rm: #a5b4fc; --rm-soft: rgba(165, 180, 252, .14); }
.gnc-rm--later { --rm: var(--gnc-muted); --rm-soft: rgba(167, 179, 189, .12); }
.gnc-rm-summary { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; margin: 1.75rem 0 0; }
.gnc-rm-summary__item a { display: inline-flex; align-items: center; gap: .45rem; padding: .4rem .85rem; border: 1px solid var(--gnc-line); border-radius: 99px; color: var(--gnc-ink); text-decoration: none; font-size: .875rem; background: var(--gnc-surface); }
.gnc-rm-summary__item a::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--rm); }
.gnc-rm-summary__item a:hover, .gnc-rm-summary__item a:focus-visible { border-color: var(--rm); }
.gnc-rm-summary__item strong { color: var(--rm); font-family: var(--gnc-mono); }
.gnc-rm-summary__updated { color: var(--gnc-muted); font-size: .8125rem; font-family: var(--gnc-mono); margin-left: .25rem; }
.gnc-rm { padding-top: 1rem; }
.gnc-rm-lane { position: relative; display: grid; gap: 1rem 2.5rem; padding: 0 0 3rem 2.25rem; scroll-margin-top: 6rem; }
.gnc-rm-lane::before { content: ""; position: absolute; top: .9rem; bottom: 0; left: 6px; width: 2px; background: linear-gradient(var(--rm), var(--gnc-line)); }
.gnc-rm--later::before { background: none; border-left: 2px dashed var(--gnc-line); }
.gnc-rm-lane:last-child { padding-bottom: 0; }
.gnc-rm-lane:last-child::before { bottom: auto; height: 100%; }
.gnc-rm-lane__head { position: relative; }
@media (min-width: 992px) {
    .gnc-rm-lane { grid-template-columns: 240px minmax(0, 1fr); }
    .gnc-rm-lane__head { position: sticky; top: 6rem; align-self: start; }
}
.gnc-rm-lane__dot { position: absolute; top: .45rem; left: -2.25rem; width: 14px; height: 14px; border-radius: 50%; background: var(--rm); box-shadow: 0 0 0 5px var(--rm-soft); }
.gnc-rm--later .gnc-rm-lane__dot { background: var(--gnc-bg); border: 2px solid var(--rm); }
.gnc-rm-lane__title { font-size: 1.5rem; margin: 0; color: #fff; }
.gnc-rm-lane__when { margin: .25rem 0 .6rem; font-family: var(--gnc-mono); font-size: .8125rem; letter-spacing: .04em; text-transform: uppercase; color: var(--rm); }
.gnc-rm-lane__text { margin: 0; color: var(--gnc-muted); font-size: .9375rem; }
.gnc-rm-lane__items { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr)); }
.gnc-rm-item { display: flex; flex-direction: column; gap: .4rem; border-top: 2px solid var(--rm); transition: border-color .15s, transform .15s; }
.gnc-rm-item:hover { transform: translateY(-2px); }
.gnc-rm--later .gnc-rm-item { border-top-style: dashed; }
.gnc-rm-item__head { display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.gnc-rm-item .gnc-area__icon { color: var(--rm); }
.gnc-rm-item h3 { font-size: 1.125rem; margin: .5rem 0 0; color: #fff; }
.gnc-rm-item__text { margin: 0; color: var(--gnc-ink); font-size: .9375rem; }
.gnc-rm-item__points { list-style: none; padding: 0; margin: .35rem 0 .5rem; display: grid; gap: .35rem; }
.gnc-rm-item__points li { position: relative; padding-left: 1.25rem; color: var(--gnc-muted); font-size: .875rem; line-height: 1.5; }
.gnc-rm-item__points li::before { content: ""; position: absolute; left: 0; top: .6em; width: 6px; height: 6px; border-radius: 50%; background: var(--rm); }
.gnc-rm--shipped .gnc-rm-item__points li::before { content: "✓"; top: 0; width: auto; height: auto; background: none; color: var(--rm); font-weight: 700; font-size: .8125rem; }
.gnc-rm-item__link { margin-top: auto; font-weight: 600; font-size: .9375rem; color: var(--rm); text-decoration: none; }
.gnc-rm-item__link:hover, .gnc-rm-item__link:focus-visible { text-decoration: underline; }
@media (prefers-reduced-motion: reduce) { .gnc-rm-item { transition: none; } .gnc-rm-item:hover { transform: none; } }
.gnc-feature-groups .page-body { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
.gnc-feature-groups .page-body > section { background: var(--gnc-surface); border: 1px solid var(--gnc-line); border-radius: var(--gnc-radius); padding: 1.5rem; }
.gnc-feature-groups .page-body h2 { font-size: 1.125rem; margin: 0 0 .75rem; color: #fff; }
.gnc-feature-groups .page-body ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .6rem; }
.gnc-feature-groups .page-body li { color: var(--gnc-muted); font-size: .9375rem; line-height: 1.5; padding-left: 1.25rem; position: relative; }
.gnc-feature-groups .page-body li::before { content: ""; position: absolute; left: 0; top: .6em; width: 6px; height: 6px; border-radius: 50%; background: var(--gnc-accent); }
.gnc-feature-groups .page-body li strong { color: var(--gnc-ink); font-weight: 600; }
.gnc-feature-groups .page-body > p { grid-column: 1 / -1; color: var(--gnc-muted); margin: 0; }
.gnc-page--features .gnc-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); }
.gnc-page--tool .gnc-hero--page { padding-bottom: 1rem; }
.gnc-page--tool .airscan { padding-top: 1rem; }
.gnc-page--tool .airscan-area__title, .gnc-page--tool .airscan-report__title { color: var(--gnc-ink); }

.gnc-ai-cards { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
.gnc-ai-card { display: flex; flex-direction: column; gap: .5rem; }
.gnc-ai-card__head { display: flex; justify-content: space-between; align-items: center; gap: .5rem; }
.gnc-ai-card__tags { display: inline-flex; flex-wrap: wrap; gap: .35rem; justify-content: flex-end; }
.gnc-ai-card h3 { font-size: 1.1875rem; margin: .5rem 0 0; color: #fff; }
.gnc-ai-card__lead { color: var(--gnc-ink); margin: 0; }
.gnc-ai-card__points { list-style: none; padding: 0; margin: .25rem 0 1rem; display: grid; gap: .4rem; }
.gnc-ai-card__points li { color: var(--gnc-muted); font-size: .9375rem; padding-left: 1.25rem; position: relative; }
.gnc-ai-card__points li::before { content: ""; position: absolute; left: 0; top: .6em; width: 6px; height: 6px; border-radius: 50%; background: var(--gnc-accent); }
.gnc-ai-card .gnc-btn { margin-top: auto; align-self: flex-start; }
.gnc-status--tag { background: transparent; border: 1px solid var(--gnc-line); color: var(--gnc-ink); }

.gnc-replay__shots { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); }
.gnc-replay__shots img { width: 100%; height: auto; border: 1px solid var(--gnc-line); border-radius: var(--gnc-radius-sm); }
.gnc-replay__shots figcaption { color: var(--gnc-muted); font-size: .875rem; margin-top: .5rem; }


.gnc-walk { display: grid; gap: 0; margin: 2rem 0 0; counter-reset: none; }
.gnc-walk__step { display: grid; grid-template-columns: 28px 1fr; gap: 1rem; }
.gnc-walk__rail { position: relative; }
.gnc-walk__rail::before { content: ""; position: absolute; top: 1.6rem; left: 50%; width: 12px; height: 12px; margin-left: -6px; border-radius: 50%; background: var(--gnc-accent); box-shadow: 0 0 0 4px var(--gnc-accent-soft); }
.gnc-walk__rail::after { content: ""; position: absolute; top: 2.6rem; bottom: -1.6rem; left: 50%; width: 2px; margin-left: -1px; background: var(--gnc-line); }
.gnc-walk__step:last-child .gnc-walk__rail::after { display: none; }
.gnc-walk__body { margin-bottom: 1.25rem; }
.gnc-walk__head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; flex-wrap: wrap; }
.gnc-walk__head h3 { font-size: 1.25rem; margin: 0; color: #fff; }
.gnc-walk__time { font-family: var(--gnc-mono); color: var(--gnc-accent); font-size: .9375rem; }
.gnc-walk__label { margin: 1rem 0 .35rem; font-size: .75rem; letter-spacing: .08em; text-transform: uppercase; color: var(--gnc-muted); }
.gnc-walk__prompt { margin: 0; padding: .9rem 1rem; background: #05070a; border: 1px solid var(--gnc-line); border-left: 3px solid var(--gnc-accent); border-radius: var(--gnc-radius-sm); font-family: var(--gnc-mono); font-size: .875rem; line-height: 1.55; color: var(--gnc-ink); white-space: pre-wrap; word-break: break-word; }
.gnc-walk__text { margin: 0; color: var(--gnc-ink); line-height: 1.6; }
.gnc-walk__result { margin: .9rem 0 0; color: #5ce5ee; font-weight: 600; }
.gnc-walk .gnc-replay__shots { margin-top: 1rem; }

/* download */
.gnc-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 230px), 1fr)); }
.gnc-dl-options { display: grid; gap: 1rem; margin-top: 1.5rem; }
.gnc-dl-option { display: grid; gap: 1.25rem 2rem; align-items: start; }
@media (min-width: 900px) { .gnc-dl-option { grid-template-columns: minmax(0, 2fr) minmax(0, 3fr); } }
.gnc-dl-option h3 { display: flex; align-items: center; gap: .6rem; font-size: 1.25rem; margin: 0 0 .5rem; color: #fff; }
.gnc-dl-option h3 .gnc-area__icon { font-size: 1.35rem; }
.gnc-dl-option__text p { color: var(--gnc-muted); margin: 0 0 1rem; }
.gnc-dl-option__code { min-width: 0; }
.gnc-dl-option__hint { font-size: .8125rem; color: var(--gnc-muted); margin: .6rem 0 0; }
.gnc-code-wrap { position: relative; }
.gnc-code { margin: 0; padding: 2.4rem 1rem .9rem; background: #05070a; border: 1px solid var(--gnc-line); border-left: 3px solid var(--gnc-accent); border-radius: var(--gnc-radius-sm); font-family: var(--gnc-mono); font-size: .8125rem; line-height: 1.6; color: var(--gnc-ink); white-space: pre-wrap; overflow-wrap: anywhere; }
.gnc-code__copy { position: absolute; top: .5rem; right: .5rem; font: 600 .75rem var(--gnc-font); color: var(--gnc-accent); background: #05070a; border: 1px solid var(--gnc-line); border-radius: 99px; padding: .2rem .6rem; cursor: pointer; }
.gnc-code__copy:hover, .gnc-code__copy:focus-visible { border-color: var(--gnc-accent); }
.gnc-dl-list { display: grid; gap: .75rem; margin-top: 1.5rem; }
.gnc-dl-next { text-decoration: none; color: inherit; transition: border-color .15s; }
.gnc-dl-next:hover, .gnc-dl-next:focus-visible { border-color: var(--gnc-accent); }

/* login and register pages: intro on the left, the form in one panel on the right */
.gnc-auth { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 28rem); gap: 4rem; align-items: start; max-width: 64rem; margin: 3rem auto 4rem; }
.gnc-auth__title { font-size: clamp(1.75rem, 3.5vw, 2.5rem); line-height: 1.12; font-weight: 700; letter-spacing: -.02em; color: #fff; margin: 0 0 1rem; }
.gnc-auth__lead { color: var(--gnc-muted); font-size: 1.0625rem; line-height: 1.6; margin: 0 0 2rem; }
.gnc-auth__points { list-style: none; padding: 0; margin: 0; display: grid; gap: 1rem; }
.gnc-auth__points li { display: flex; gap: .75rem; align-items: flex-start; color: var(--gnc-ink); }
.gnc-auth__points .bi { color: var(--gnc-accent); font-size: 1.125rem; line-height: 1.4; }
.gnc-auth__main .page { margin: 0; }
.gnc-auth__main .page .card { background: none; border: 0; border-radius: 0; margin: 0; }
.gnc-auth__main .card-body { padding: 0; }
/* the cards of the stock form read as one panel: fields keep their own spacing, headed groups get a gap */
.gnc-auth__main .card-header { background: none; border: 0; padding: .5rem 0; margin-top: .5rem; }
.gnc-auth__main .card-header .h5 { font-size: .8125rem; letter-spacing: .06em; text-transform: uppercase; color: var(--gnc-muted); }
.gnc-auth__main form > .page, .gnc-auth__main .login-page form, .gnc-auth__main .password-recovery-page { background: var(--gnc-surface); border: 1px solid var(--gnc-line); border-radius: var(--gnc-radius); padding: 1.75rem; }
.gnc-auth__main .form-group { margin-bottom: 1rem; }
.gnc-auth__main .col-form-label { color: var(--gnc-muted); font-size: .875rem; padding: 0 0 .25rem; }
.gnc-auth__main .required { display: none; }
.gnc-auth__main .form-control { padding: .625rem .75rem; }
.gnc-auth__main .message-error:empty, .gnc-auth__main .message-error.validation-summary-valid { display: none; }
.gnc-auth__main .message-error ul { margin: 0 0 1rem; padding: .75rem 1rem; list-style: none; border: 1px solid rgba(255, 107, 107, .4); border-radius: var(--gnc-radius-sm); background: rgba(255, 107, 107, .08); color: #ff9b9b; }
.gnc-auth__submit { width: 100%; justify-content: center; margin-top: 1.25rem; padding-top: .75rem; padding-bottom: .75rem; }
.gnc-auth__switch { text-align: center; color: var(--gnc-muted); margin: 1.25rem 0 0; }
.gnc-auth__switch a { color: var(--gnc-accent); font-weight: 600; margin-left: .25rem; }
.gnc-auth__done { display: flex; gap: .875rem; align-items: flex-start; }
.gnc-auth__done .bi { color: var(--gnc-accent); font-size: 1.5rem; line-height: 1.2; }
.gnc-auth__done p { margin: 0; color: var(--gnc-ink); line-height: 1.55; }
.gnc-auth__guest { margin-top: 1.5rem; padding: 1.25rem 1.75rem; border: 1px solid var(--gnc-line); border-radius: var(--gnc-radius); }
.gnc-auth__guest-title { font-weight: 600; margin: 0 0 .5rem; }
.gnc-auth__guest-actions { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1rem; }
@media (max-width: 991.98px) {
    .gnc-auth { grid-template-columns: minmax(0, 1fr); gap: 2rem; margin: 2rem auto 3rem; max-width: 32rem; }
    .gnc-auth__points { display: none; }
    .gnc-auth__lead { margin-bottom: 0; }
    .gnc-auth__main form > .page, .gnc-auth__main .login-page form, .gnc-auth__main .password-recovery-page { padding: 1.25rem; }
}
