/* ==========================================================================
   components.css
   HealthCompare — Component styles
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. TEST CARD
   -------------------------------------------------------------------------- */

.test-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.test-list--compact .test-card {
    padding: var(--space-5);
}

.test-card {
    position: relative;
    display: grid;
    grid-template-columns: 1fr auto;
    gap: var(--space-6);
    align-items: start;
    padding: var(--space-6);
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-xs);
    transition: box-shadow var(--transition-base), border-color var(--transition-base), transform var(--transition-base);
}

.test-card:hover {
    box-shadow: var(--shadow-md);
    border-color: var(--colour-border-strong);
    transform: translateY(-1px);
}

.test-card--ranked {
    padding-left: calc(var(--space-6) + 48px);
}

/* Rank badge */
.test-card__rank {
    position: absolute;
    top: var(--space-6);
    left: var(--space-6);
    transform: none;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--font-display);
    font-size: var(--text-lg);
    color: var(--colour-navy-light);
    background: var(--colour-navy-faint);
    border-radius: var(--radius-sm);
    flex-shrink: 0;
}

.test-card:nth-child(1) .test-card__rank {
    background: var(--colour-teal-light);
    color: var(--colour-teal-dark);
}

/* Label badge */
.test-card__badge {
    position: absolute;
    top: var(--space-4);
    right: var(--space-4);
    padding: var(--space-1) var(--space-3);
    background: var(--colour-navy);
    color: var(--colour-white);
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    border-radius: var(--radius-full);
}

/* Body */
.test-card__body {
    min-width: 0;
}

.test-card__meta {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    margin-bottom: var(--space-2);
}

.test-card__provider,
.test-card__category {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--colour-text-muted);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.test-card__provider:hover {
    color: var(--colour-teal);
}

.test-card__category:hover {
    color: var(--colour-navy);
}

.test-card__separator {
    color: var(--colour-border-strong);
    font-size: var(--text-xs);
}

.test-card__title {
    font-family: var(--font-display);
    font-size: var(--text-xl);
    font-weight: var(--weight-regular);
    margin-bottom: var(--space-3);
    line-height: var(--leading-snug);
}

.test-card__title-link {
    color: var(--colour-text-primary);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.test-card__title-link:hover {
    color: var(--colour-teal);
}

.test-card__description {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    line-height: var(--leading-loose);
    margin-bottom: var(--space-4);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Feature flags */
.test-card__flags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    list-style: none;
}

.test-card__flag {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    padding: var(--space-1) var(--space-3);
    background: var(--colour-off-white);
    border: 1px solid var(--colour-border);
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    color: var(--colour-text-muted);
}

.test-card__flag--positive {
    background: var(--colour-teal-faint);
    border-color: var(--colour-teal-light);
    color: var(--colour-teal-dark);
}

.test-card__flag--positive svg {
    flex-shrink: 0;
}

/* Aside (score + CTA) */
.test-card__aside {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: var(--space-4);
    min-width: 140px;
}

/* Score chip */
.test-card__score {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-md);
    background: var(--colour-off-white);
    border: 1.5px solid var(--colour-border);
    min-width: 80px;
    text-align: center;
}

.test-card__score-value {
    font-family: var(--font-display);
    font-size: var(--text-2xl);
    line-height: 1;
    color: var(--colour-text-primary);
}

.test-card__score-label {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
}

.test-card__verdict {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    color: var(--colour-text-muted);
    margin-top: var(--space-1);
}

/* Score modifier classes */
.score--excellent .test-card__score-value { color: var(--colour-score-excellent); }
.score--good      .test-card__score-value { color: var(--colour-score-good);      }
.score--average   .test-card__score-value { color: var(--colour-score-average);   }
.score--poor      .test-card__score-value { color: var(--colour-score-poor);      }

.score--excellent.test-card__score { border-color: #A7F3D0; background: #ECFDF5; }
.score--good.test-card__score      { border-color: var(--colour-teal-light); background: var(--colour-teal-faint); }
.score--average.test-card__score   { border-color: #FDE68A; background: #FFFBEB; }
.score--poor.test-card__score      { border-color: #FECACA; background: #FEF2F2; }

/* CTA section */
.test-card__cta {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    text-align: center;
}

.test-card__price {
    font-size: var(--text-xl);
    font-weight: var(--weight-semi);
    color: var(--colour-text-primary);
    font-variant-numeric: tabular-nums;
}

.test-card__price--sale {
    color: var(--colour-score-excellent);
}

.test-card__price--unavailable {
    font-size: var(--text-sm);
    color: var(--colour-text-subtle);
}

.test-card__price-badge {
    display: inline-block;
    padding: var(--space-1) var(--space-2);
    background: #ECFDF5;
    color: var(--colour-score-excellent);
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    border-radius: var(--radius-full);
    margin-left: var(--space-1);
}

.test-card__btn {
    width: 100%;
}

.test-card__detail-link {
    font-size: var(--text-xs);
    color: var(--colour-text-muted);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.test-card__detail-link:hover {
    color: var(--colour-teal);
}

/* --------------------------------------------------------------------------
   2. PROVIDER CARD
   -------------------------------------------------------------------------- */

.provider-card {
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
    padding: var(--space-5);
    box-shadow: var(--shadow-xs);
    transition: box-shadow var(--transition-base), border-color var(--transition-base);
}

.provider-card:hover {
    box-shadow: var(--shadow-md);
    border-color: var(--colour-border-strong);
}

.provider-card__body {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    margin-bottom: var(--space-4);
}

.provider-card__identity {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    min-width: 0;
}

.provider-card__initial {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: var(--colour-navy);
    color: var(--colour-white);
    font-family: var(--font-display);
    font-size: var(--text-lg);
    border-radius: var(--radius-md);
    flex-shrink: 0;
}

.provider-card__info {
    min-width: 0;
}

.provider-card__name {
    font-size: var(--text-base);
    font-weight: var(--weight-semi);
    color: var(--colour-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.provider-card__link {
    text-decoration: none;
    color: inherit;
}

.provider-card__link:hover {
    color: var(--colour-teal);
}

.provider-card__test-count {
    font-size: var(--text-xs);
    color: var(--colour-text-muted);
}

.provider-card__score {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    flex-shrink: 0;
}

.provider-card__score-value {
    font-family: var(--font-display);
    font-size: var(--text-xl);
    color: var(--colour-teal);
}

.provider-card__score-label {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
}

.provider-card__actions {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding-top: var(--space-4);
    border-top: 1px solid var(--colour-border);
}

.provider-card__external-link {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.provider-card__external-link:hover {
    color: var(--colour-teal);
}

/* --------------------------------------------------------------------------
   3. SCORECARD
   -------------------------------------------------------------------------- */

.scorecard {
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
    padding: var(--space-6);
}

.scorecard--compact {
    padding: var(--space-4);
    border-radius: var(--radius-md);
}

.scorecard__summary {
    display: flex;
    align-items: center;
    gap: var(--space-5);
}

/* SVG ring */
.scorecard__ring-wrapper {
    position: relative;
    width: 80px;
    height: 80px;
    flex-shrink: 0;
}

.scorecard--compact .scorecard__ring-wrapper {
    width: 60px;
    height: 60px;
}

.scorecard__ring {
    width: 100%;
    height: 100%;
    overflow: visible;
}

.scorecard__ring-track {
    stroke: var(--colour-border);
}

.scorecard__ring-fill {
    stroke: var(--colour-teal);
    transition: stroke-dashoffset 0.8s ease;
}

.scorecard__ring-fill.score--excellent { stroke: var(--colour-score-excellent); }
.scorecard__ring-fill.score--good      { stroke: var(--colour-score-good);      }
.scorecard__ring-fill.score--average   { stroke: var(--colour-score-average);   }
.scorecard__ring-fill.score--poor      { stroke: var(--colour-score-poor);      }

.scorecard__ring-inner {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.scorecard__ring-value {
    font-family: var(--font-display);
    font-size: var(--text-lg);
    line-height: 1;
    color: var(--colour-text-primary);
}

.scorecard--compact .scorecard__ring-value {
    font-size: var(--text-base);
}

.scorecard__ring-max {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
}

.scorecard__label {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    flex-wrap: wrap;
    margin-bottom: var(--space-2);
}

.scorecard__label-text {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--colour-text-muted);
}

.scorecard__verdict {
    padding: var(--space-1) var(--space-2);
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    border-radius: var(--radius-full);
    background: var(--colour-teal-light);
    color: var(--colour-teal-dark);
}

.scorecard__confidence {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    margin-bottom: var(--space-2);
}

.scorecard__confidence-label {
    color: var(--colour-text-subtle);
}

.scorecard__confidence-value {
    font-weight: var(--weight-medium);
    color: var(--colour-text-body);
}

.scorecard__rationale {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    line-height: var(--leading-loose);
    font-style: italic;
}

/* Criteria breakdown */
.scorecard__criteria {
    margin-top: var(--space-6);
    padding-top: var(--space-6);
    border-top: 1px solid var(--colour-border);
}

.scorecard__criteria-heading {
    font-size: var(--text-sm);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--colour-text-muted);
    margin-bottom: var(--space-4);
}

.scorecard__criteria-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
    list-style: none;
}

.scorecard__criterion-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2);
    margin-bottom: var(--space-2);
}

.scorecard__criterion-name {
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    color: var(--colour-text-body);
}

.scorecard__criterion-score {
    font-size: var(--text-sm);
    font-weight: var(--weight-semi);
    font-variant-numeric: tabular-nums;
}

.scorecard__criterion-score.score--excellent { color: var(--colour-score-excellent); }
.scorecard__criterion-score.score--good      { color: var(--colour-score-good);      }
.scorecard__criterion-score.score--average   { color: var(--colour-score-average);   }
.scorecard__criterion-score.score--poor      { color: var(--colour-score-poor);      }

.scorecard__criterion-bar {
    height: 6px;
    background: var(--colour-border);
    border-radius: var(--radius-full);
    overflow: hidden;
}

.scorecard__criterion-fill {
    height: 100%;
    width: var(--score-pct, 0%);
    border-radius: var(--radius-full);
    background: var(--colour-teal);
    transition: width 0.6s ease;
}

.scorecard__criterion-fill.score--excellent { background: var(--colour-score-excellent); }
.scorecard__criterion-fill.score--good      { background: var(--colour-score-good);      }
.scorecard__criterion-fill.score--average   { background: var(--colour-score-average);   }
.scorecard__criterion-fill.score--poor      { background: var(--colour-score-poor);      }

.scorecard__criterion-evidence {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
    line-height: var(--leading-loose);
    margin-top: var(--space-2);
}

/* --------------------------------------------------------------------------
   4. OFFER CTA
   -------------------------------------------------------------------------- */

.offer-cta {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.offer-cta--large {
    padding: var(--space-6);
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
}

.offer-cta__price {
    display: flex;
    align-items: baseline;
    gap: var(--space-2);
    flex-wrap: wrap;
}

.offer-cta__price-value {
    font-family: var(--font-display);
    font-size: var(--text-3xl);
    color: var(--colour-text-primary);
    font-variant-numeric: tabular-nums;
}

.offer-cta--large .offer-cta__price-value {
    font-size: var(--text-4xl);
}

.offer-cta__price--sale .offer-cta__price-value {
    color: var(--colour-score-excellent);
}

.offer-cta__price--unavailable .offer-cta__price-value {
    font-size: var(--text-lg);
    color: var(--colour-text-subtle);
}

.offer-cta__sale-badge {
    padding: var(--space-1) var(--space-2);
    background: #ECFDF5;
    color: var(--colour-score-excellent);
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    border-radius: var(--radius-full);
}

.offer-cta__offer-name {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
}

.offer-cta__stock-notice--out {
    font-size: var(--text-sm);
    color: var(--colour-score-poor);
    font-weight: var(--weight-medium);
}

.offer-cta__btn {
    width: 100%;
}

.offer-cta__no-offer {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    line-height: var(--leading-loose);
}

.offer-cta__disclaimer {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
    line-height: var(--leading-loose);
}

/* --------------------------------------------------------------------------
   5. COMPARISON TABLE
   -------------------------------------------------------------------------- */

.comparison-table-wrapper {
    overflow-x: auto;
    border-radius: var(--radius-lg);
    border: 1.5px solid var(--colour-border);
    box-shadow: var(--shadow-sm);
    -webkit-overflow-scrolling: touch;
}

.comparison-table {
    width: 100%;
    min-width: 600px;
    border-collapse: collapse;
    font-size: var(--text-sm);
    background: var(--colour-surface);
}

.comparison-table__head {
    background: var(--colour-navy);
}

.comparison-table__head th {
    padding: var(--space-4) var(--space-5);
    text-align: left;
    font-weight: var(--weight-medium);
    color: rgba(255, 255, 255, 0.7);
    border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.comparison-table__attr-col {
    min-width: 160px;
    background: var(--colour-navy-mid);
    position: sticky;
    left: 0;
    z-index: var(--z-raised);
}

.comparison-table__test-col {
    min-width: 200px;
    vertical-align: top;
}

.comparison-table__test-link {
    display: block;
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--colour-teal);
    margin-bottom: var(--space-1);
    text-decoration: none;
}

.comparison-table__test-name {
    display: block;
    color: var(--colour-white);
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
}

.comparison-table__row {
    border-bottom: 1px solid var(--colour-border);
    transition: background-color var(--transition-fast);
}

.comparison-table__row:hover {
    background: var(--colour-navy-faint);
}

.comparison-table__row:last-child {
    border-bottom: none;
}

.comparison-table__attr-label {
    padding: var(--space-3) var(--space-5);
    font-weight: var(--weight-medium);
    color: var(--colour-text-muted);
    background: var(--colour-off-white);
    border-right: 1px solid var(--colour-border);
    position: sticky;
    left: 0;
    z-index: var(--z-raised);
    font-size: var(--text-xs);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.comparison-table__cell {
    padding: var(--space-3) var(--space-5);
    color: var(--colour-text-body);
    vertical-align: middle;
    text-align: center;
}

.comparison-table__cell--cta {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    align-items: center;
    padding-block: var(--space-4);
}

/* Score chip in table */
.comparison-table__score-chip {
    display: inline-flex;
    align-items: baseline;
    gap: 2px;
    padding: var(--space-1) var(--space-3);
    border-radius: var(--radius-full);
    font-weight: var(--weight-semi);
    font-variant-numeric: tabular-nums;
    font-size: var(--text-base);
    background: var(--colour-teal-faint);
    color: var(--colour-teal-dark);
}

.comparison-table__score-chip.score--excellent { background: #ECFDF5; color: var(--colour-score-excellent); }
.comparison-table__score-chip.score--good      { background: var(--colour-teal-faint); color: var(--colour-teal-dark); }
.comparison-table__score-chip.score--average   { background: #FFFBEB; color: var(--colour-score-average);   }
.comparison-table__score-chip.score--poor      { background: #FEF2F2; color: var(--colour-score-poor);      }

.comparison-table__score-max {
    font-size: var(--text-xs);
    opacity: 0.7;
}

.comparison-table__verdict {
    display: block;
    margin-top: var(--space-1);
    font-size: var(--text-xs);
    color: var(--colour-text-muted);
}

.comparison-table__unrated {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
    font-style: italic;
}

.comparison-table__price {
    font-weight: var(--weight-semi);
    font-variant-numeric: tabular-nums;
    color: var(--colour-text-primary);
}

.comparison-table__price--sale {
    color: var(--colour-score-excellent);
}

.comparison-table__sale-badge {
    display: inline-block;
    padding: 1px var(--space-2);
    background: #ECFDF5;
    color: var(--colour-score-excellent);
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    border-radius: var(--radius-full);
    margin-left: var(--space-1);
}

.comparison-table__unavailable {
    color: var(--colour-text-subtle);
}

/* Boolean cells */
.comparison-table__bool {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: var(--radius-full);
}

.comparison-table__bool--yes {
    background: #ECFDF5;
    color: var(--colour-score-excellent);
}

.comparison-table__bool--no {
    background: #FEF2F2;
    color: var(--colour-score-poor);
}

.comparison-table__review-link {
    font-size: var(--text-xs);
    color: var(--colour-text-muted);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.comparison-table__review-link:hover {
    color: var(--colour-teal);
}

/* Row highlights */
.comparison-table__row--score .comparison-table__attr-label,
.comparison-table__row--price .comparison-table__attr-label {
    font-weight: var(--weight-semi);
    color: var(--colour-text-body);
}

/* --------------------------------------------------------------------------
   6. TEST DETAIL PAGE LAYOUT
   -------------------------------------------------------------------------- */

.test-header {
    background: var(--colour-white);
    border-bottom: 1px solid var(--colour-border);
    padding-block: var(--space-8);
}

.test-header__inner {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: var(--space-10);
    align-items: start;
}

.test-header__meta {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    margin-bottom: var(--space-3);
}

.test-header__provider {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--colour-teal);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.test-header__provider:hover {
    color: var(--colour-teal-dark);
}

.test-header__separator {
    color: var(--colour-border-strong);
    font-size: var(--text-xs);
}

.test-header__category {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--colour-text-muted);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.test-header__category:hover {
    color: var(--colour-navy);
}

.test-header__title {
    font-family: var(--font-display);
    font-size: clamp(var(--text-2xl), 3vw, var(--text-4xl));
    color: var(--colour-text-primary);
    margin-bottom: var(--space-4);
}

.test-header__summary {
    font-size: var(--text-md);
    color: var(--colour-text-muted);
    line-height: var(--leading-loose);
    margin-bottom: var(--space-5);
}

.test-header__flags {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    list-style: none;
}

/* Test flags (detail page variants) */
.test-flag {
    display: inline-flex;
    align-items: center;
    padding: var(--space-2) var(--space-3);
    background: var(--colour-off-white);
    border: 1px solid var(--colour-border);
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    font-weight: var(--weight-medium);
    color: var(--colour-text-muted);
}

.test-flag--positive {
    background: var(--colour-teal-faint);
    border-color: var(--colour-teal-light);
    color: var(--colour-teal-dark);
}

/* Body grid */
.test-detail__body {
    padding-block: var(--space-10);
}

.test-detail__grid {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: var(--space-10);
    align-items: start;
}

.test-detail__main {
    min-width: 0;
}

.test-detail__sidebar {
    position: sticky;
    top: calc(68px + var(--space-6));
}

/* Test sections */
.test-section {
    margin-bottom: var(--space-10);
    padding-bottom: var(--space-10);
    border-bottom: 1px solid var(--colour-border);
}

.test-section:last-child {
    border-bottom: none;
}

.test-section__heading {
    font-family: var(--font-display);
    font-size: var(--text-xl);
    color: var(--colour-text-primary);
    margin-bottom: var(--space-5);
}

.test-section__intro {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    line-height: var(--leading-loose);
    margin-bottom: var(--space-5);
}

.test-section__footer {
    margin-top: var(--space-6);
}

/* Spec table */
.spec-table {
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
    overflow: hidden;
}

.spec-table__row {
    display: grid;
    grid-template-columns: 200px 1fr;
    border-bottom: 1px solid var(--colour-border);
}

.spec-table__row:last-child {
    border-bottom: none;
}

.spec-table__label {
    padding: var(--space-3) var(--space-5);
    background: var(--colour-off-white);
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    color: var(--colour-text-muted);
    border-right: 1px solid var(--colour-border);
}

.spec-table__value {
    padding: var(--space-3) var(--space-5);
    font-size: var(--text-sm);
    color: var(--colour-text-body);
}

.spec-table__value a {
    color: var(--colour-teal);
    text-decoration: none;
}

.spec-table__value a:hover {
    text-decoration: underline;
}

.spec-table--compact .spec-table__row {
    grid-template-columns: 140px 1fr;
}

/* Pros / cons */
.pros-cons {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-5);
}

.pros-cons__heading {
    font-size: var(--text-sm);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-bottom: var(--space-4);
}

.pros-cons__heading--pros {
    color: var(--colour-score-excellent);
}

.pros-cons__heading--cons {
    color: var(--colour-score-poor);
}

.pros-cons__list {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    list-style: none;
}

.pros-cons__item {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    font-size: var(--text-sm);
    line-height: var(--leading-loose);
    color: var(--colour-text-body);
}

.pros-cons__item svg {
    flex-shrink: 0;
    margin-top: 3px;
}

.pros-cons__item--pro svg { color: var(--colour-score-excellent); }
.pros-cons__item--con svg { color: var(--colour-score-poor);      }

/* Editorial blocks */
.editorial-block {
    font-size: var(--text-base);
    line-height: var(--leading-loose);
    color: var(--colour-text-body);
    margin-bottom: var(--space-5);
}

.editorial-block p + p {
    margin-top: var(--space-4);
}

/* Sticky CTA sidebar */
.sticky-cta {
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
    padding: var(--space-6);
    box-shadow: var(--shadow-md);
}

.sticky-cta__heading {
    font-family: var(--font-display);
    font-size: var(--text-lg);
    color: var(--colour-text-primary);
    margin-bottom: var(--space-1);
    line-height: var(--leading-snug);
}

.sticky-cta__provider {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    margin-bottom: var(--space-4);
}

.sticky-cta__provider a {
    color: var(--colour-teal);
    text-decoration: none;
}

.sticky-cta__score {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    margin-bottom: var(--space-4);
    padding-bottom: var(--space-4);
    border-bottom: 1px solid var(--colour-border);
}

.sticky-cta__score-value {
    font-family: var(--font-display);
    font-size: var(--text-2xl);
}

.sticky-cta__score-value.score--excellent { color: var(--colour-score-excellent); }
.sticky-cta__score-value.score--good      { color: var(--colour-score-good);      }
.sticky-cta__score-value.score--average   { color: var(--colour-score-average);   }
.sticky-cta__score-value.score--poor      { color: var(--colour-score-poor);      }

.sticky-cta__verdict {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
}

/* --------------------------------------------------------------------------
   7. CATEGORY LAYOUT
   -------------------------------------------------------------------------- */

.category-layout {
    display: grid;
    grid-template-columns: 1fr 260px;
    gap: var(--space-8);
    align-items: start;
    padding-block: var(--space-10);
}

.category-layout__main {
    min-width: 0;
}

.category-layout__sidebar {
    position: sticky;
    top: calc(68px + var(--space-6));
}

/* Filter form */
.filter-bar {
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
    padding: var(--space-5);
    margin-bottom: var(--space-6);
}

.filter-form__fields {
    display: flex;
    gap: var(--space-4);
    flex-wrap: wrap;
    margin-bottom: var(--space-4);
}

.filter-form__field {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    min-width: 140px;
}

.filter-form__label {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--colour-text-muted);
}

.filter-form__select {
    padding: var(--space-2) var(--space-3);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-md);
    font-size: var(--text-sm);
    color: var(--colour-text-body);
    background: var(--colour-surface);
    cursor: pointer;
    transition: border-color var(--transition-fast);
}

.filter-form__select:hover,
.filter-form__select:focus {
    border-color: var(--colour-teal);
    outline: none;
}

.filter-form__actions {
    display: flex;
    gap: var(--space-2);
}

/* Category section */
.category-section {
    margin-bottom: var(--space-8);
    padding-bottom: var(--space-8);
    border-bottom: 1px solid var(--colour-border);
}

.category-section__heading {
    font-family: var(--font-display);
    font-size: var(--text-xl);
    margin-bottom: var(--space-5);
}

/* Group list */
.group-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    list-style: none;
}

.group-list--horizontal {
    flex-direction: row;
    flex-wrap: wrap;
}

.group-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4);
    padding: var(--space-4) var(--space-5);
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-md);
    text-decoration: none;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.group-card:hover {
    border-color: var(--colour-teal);
    box-shadow: var(--shadow-sm);
}

.group-card--sm {
    padding: var(--space-3) var(--space-4);
}

.group-card__name {
    font-weight: var(--weight-medium);
    color: var(--colour-text-primary);
    font-size: var(--text-sm);
}

.group-card__summary {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    flex: 1;
}

.group-card__count {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
    white-space: nowrap;
    margin-left: auto;
    padding-right: var(--space-2);
}

.group-card__arrow {
    color: var(--colour-teal);
    font-size: var(--text-sm);
    flex-shrink: 0;
    opacity: 0;
    transform: translateX(-4px);
    transition: opacity var(--transition-fast), transform var(--transition-fast);
}

.group-card:hover .group-card__arrow {
    opacity: 1;
    transform: translateX(0);
}

/* Sidebar widget */
.sidebar-widget {
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
    padding: var(--space-5);
    margin-bottom: var(--space-4);
}

.sidebar-widget__heading {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--colour-text-muted);
    margin-bottom: var(--space-4);
}

.sidebar-widget__list {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    list-style: none;
}

.sidebar-widget__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-2) var(--space-2);
    font-size: var(--text-sm);
    color: var(--colour-text-body);
    border-radius: var(--radius-sm);
    text-decoration: none;
    transition: background-color var(--transition-fast), color var(--transition-fast);
}

.sidebar-widget__link:hover {
    background: var(--colour-navy-faint);
    color: var(--colour-navy);
}

.sidebar-widget__count {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
    background: var(--colour-off-white);
    padding: 2px var(--space-2);
    border-radius: var(--radius-full);
}

.sidebar-widget__dl {
    font-size: var(--text-sm);
}

.sidebar-widget__dl dt {
    color: var(--colour-text-muted);
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-top: var(--space-3);
    margin-bottom: var(--space-1);
}

.sidebar-widget__dl dd {
    color: var(--colour-text-body);
}

.sidebar-widget__dl dt:first-child {
    margin-top: 0;
}

/* --------------------------------------------------------------------------
   8. PROVIDER PAGE
   -------------------------------------------------------------------------- */

.provider-hero {
    background: var(--colour-navy);
    padding-block: var(--space-10);
}

.provider-hero__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-6);
    flex-wrap: wrap;
}

.provider-hero__identity {
    display: flex;
    align-items: center;
    gap: var(--space-5);
}

.provider-hero__initial {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    background: rgba(255, 255, 255, 0.1);
    color: var(--colour-white);
    font-family: var(--font-display);
    font-size: var(--text-3xl);
    border-radius: var(--radius-lg);
    flex-shrink: 0;
}

.provider-hero__name {
    font-family: var(--font-display);
    color: var(--colour-white);
    margin-bottom: var(--space-2);
}

.provider-hero__website {
    font-size: var(--text-sm);
    color: var(--colour-teal);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.provider-hero__website:hover {
    color: rgba(255, 255, 255, 0.9);
}

.provider-hero__stats {
    display: flex;
    gap: var(--space-6);
}

.provider-hero__stat {
    text-align: center;
}

.provider-hero__stat-value {
    display: block;
    font-family: var(--font-display);
    font-size: var(--text-3xl);
    color: var(--colour-white);
}

.provider-hero__stat-label {
    display: block;
    font-size: var(--text-xs);
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.provider-layout {
    display: grid;
    grid-template-columns: 1fr 280px;
    gap: var(--space-8);
    padding-block: var(--space-10);
}

.provider-layout__main { min-width: 0; }

.provider-layout__sidebar {
    position: sticky;
    top: calc(68px + var(--space-6));
}

.provider-section {
    margin-bottom: var(--space-8);
    padding-bottom: var(--space-8);
    border-bottom: 1px solid var(--colour-border);
}

.provider-section:last-child { border-bottom: none; }

.provider-section__heading {
    font-family: var(--font-display);
    font-size: var(--text-2xl);
    margin-bottom: var(--space-5);
}

/* --------------------------------------------------------------------------
   9. COMPARE GROUP PAGE
   -------------------------------------------------------------------------- */

.compare-group-section {
    padding-block: var(--space-12);
    border-bottom: 1px solid var(--colour-border);
}

.compare-group-section:last-child { border-bottom: none; }

.compare-group-section--table {
    background: var(--colour-off-white);
}

.compare-group-section__heading {
    font-family: var(--font-display);
    margin-bottom: var(--space-3);
}

.compare-group-section__intro {
    font-size: var(--text-base);
    color: var(--colour-text-muted);
    max-width: 600px;
    margin-bottom: var(--space-8);
    line-height: var(--leading-loose);
}

/* Fallback specs grid */
.compare-specs-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--space-5);
}

.compare-specs-card {
    background: var(--colour-surface);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-lg);
    padding: var(--space-5);
}

.compare-specs-card__header {
    margin-bottom: var(--space-4);
    padding-bottom: var(--space-4);
    border-bottom: 1px solid var(--colour-border);
}

.compare-specs-card__provider {
    display: block;
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--colour-teal);
    margin-bottom: var(--space-1);
    text-decoration: none;
}

.compare-specs-card__name {
    font-size: var(--text-base);
    font-weight: var(--weight-semi);
    color: var(--colour-text-primary);
}

.compare-specs-card__name a {
    color: inherit;
    text-decoration: none;
    transition: color var(--transition-fast);
}

.compare-specs-card__name a:hover {
    color: var(--colour-teal);
}

/* --------------------------------------------------------------------------
   10. COMPARISON LANDING PAGE
   -------------------------------------------------------------------------- */

.comparison-landing__list {
    padding-block: var(--space-12);
}

.ranked-test-block {
    margin-bottom: var(--space-6);
}

.ranked-test-block__summary {
    background: var(--colour-off-white);
    border: 1px solid var(--colour-border);
    border-top: none;
    border-radius: 0 0 var(--radius-lg) var(--radius-lg);
    padding: var(--space-5) var(--space-6);
    font-size: var(--text-sm);
    line-height: var(--leading-loose);
    color: var(--colour-text-muted);
}

.ranked-test-block__highlights {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    margin-top: var(--space-3);
    margin-bottom: var(--space-3);
    list-style: none;
}

.ranked-test-block__highlights li {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--text-xs);
    color: var(--colour-teal-dark);
}

.ranked-test-block__highlights li::before {
    content: '✓';
    font-weight: var(--weight-semi);
}

.ranked-test-block__read-more {
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    color: var(--colour-teal);
    text-decoration: none;
    transition: color var(--transition-fast);
}

.ranked-test-block__read-more:hover {
    color: var(--colour-teal-dark);
}

/* Quick nav */
.quick-nav {
    background: var(--colour-navy-faint);
    border-bottom: 1px solid var(--colour-border);
    padding-block: var(--space-4);
}

.quick-nav .container {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    flex-wrap: wrap;
}

.quick-nav__label {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--colour-text-muted);
    white-space: nowrap;
}

.quick-nav__list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    list-style: none;
}

.quick-nav__link {
    display: inline-block;
    padding: var(--space-1) var(--space-3);
    background: var(--colour-surface);
    border: 1px solid var(--colour-border);
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    color: var(--colour-text-body);
    text-decoration: none;
    transition: border-color var(--transition-fast), color var(--transition-fast);
}

.quick-nav__link:hover {
    border-color: var(--colour-teal);
    color: var(--colour-teal);
}

/* Methodology note */
.methodology-note {
    background: var(--colour-navy-faint);
    border-top: 1px solid var(--colour-border);
    padding-block: var(--space-10);
}

.methodology-note--full {
    padding-block: var(--space-12);
}

.methodology-note__heading {
    font-family: var(--font-display);
    font-size: var(--text-xl);
    margin-bottom: var(--space-4);
}

.methodology-note__body {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    max-width: 700px;
    line-height: var(--leading-loose);
    margin-bottom: var(--space-5);
}

/* --------------------------------------------------------------------------
   11. PAGINATION
   -------------------------------------------------------------------------- */

.pagination {
    margin-top: var(--space-8);
}

.pagination__list {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-1);
    list-style: none;
    flex-wrap: wrap;
}

.pagination__link {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 36px;
    height: 36px;
    padding: var(--space-1) var(--space-3);
    font-size: var(--text-sm);
    color: var(--colour-text-body);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-md);
    text-decoration: none;
    transition: border-color var(--transition-fast), background-color var(--transition-fast), color var(--transition-fast);
}

.pagination__link:hover {
    border-color: var(--colour-teal);
    color: var(--colour-teal);
}

.pagination__link--active {
    background: var(--colour-navy);
    border-color: var(--colour-navy);
    color: var(--colour-white);
}

.pagination__link--prev,
.pagination__link--next {
    font-weight: var(--weight-medium);
}

/* --------------------------------------------------------------------------
   12. CATEGORY DIRECTORY (listing page)
   -------------------------------------------------------------------------- */

.category-directory {
    margin-block: var(--space-8);
}

.category-directory__group {
    margin-bottom: var(--space-8);
}

.category-directory__group-heading {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--colour-text-subtle);
    margin-bottom: var(--space-3);
    padding-bottom: var(--space-2);
    border-bottom: 1px solid var(--colour-border);
}

.category-directory__list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: var(--space-2);
    list-style: none;
}

.category-directory__link {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-3) var(--space-4);
    background: var(--colour-surface);
    border: 1px solid var(--colour-border);
    border-radius: var(--radius-md);
    text-decoration: none;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}

.category-directory__link:hover {
    border-color: var(--colour-teal);
    box-shadow: var(--shadow-xs);
}

.category-directory__name {
    font-size: var(--text-sm);
    font-weight: var(--weight-medium);
    color: var(--colour-text-primary);
}

.category-directory__count {
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
    background: var(--colour-off-white);
    padding: 2px var(--space-2);
    border-radius: var(--radius-full);
}

/* --------------------------------------------------------------------------
   13. RESPONSIVE — COMPONENT LEVEL
   -------------------------------------------------------------------------- */

@media (max-width: 1024px) {
    .test-detail__grid {
        grid-template-columns: 1fr;
    }

    .test-detail__sidebar {
        position: static;
        order: -1;
    }

    .test-header__inner {
        grid-template-columns: 1fr;
    }

    .provider-layout {
        grid-template-columns: 1fr;
    }

    .category-layout {
        grid-template-columns: 1fr;
    }

    .category-layout__sidebar {
        position: static;
        order: -1;
    }
}

@media (max-width: 768px) {
    .test-card {
        grid-template-columns: 1fr;
    }

    .test-card--ranked {
        padding-left: var(--space-6);
        padding-top: calc(var(--space-6) + 44px);
    }

    .test-card__rank {
        top: var(--space-4);
        left: var(--space-6);
        transform: none;
    }

    .test-card__aside {
        align-items: flex-start;
        flex-direction: row;
        flex-wrap: wrap;
    }

    .pros-cons {
        grid-template-columns: 1fr;
    }

    .spec-table__row {
        grid-template-columns: 1fr;
    }

    .spec-table__label {
        border-right: none;
        border-bottom: 1px solid var(--colour-border);
    }

    .provider-hero__inner {
        flex-direction: column;
        align-items: flex-start;
    }

    .comparison-table {
        min-width: 480px;
    }
}

@media (max-width: 480px) {
    .filter-form__fields {
        flex-direction: column;
    }

    .filter-form__field {
        min-width: auto;
    }
}

/* --------------------------------------------------------------------------
   14. ERROR PAGES
   -------------------------------------------------------------------------- */

.error-page {
    padding-block: clamp(var(--space-20), 10vw, var(--space-24));
}

.error-page__inner {
    max-width: 480px;
    margin-inline: auto;
    text-align: center;
}

.error-page__code {
    font-family: var(--font-display);
    font-size: clamp(6rem, 15vw, 10rem);
    line-height: 1;
    color: var(--colour-border);
    margin-bottom: var(--space-6);
}

.error-page__heading {
    font-family: var(--font-display);
    font-size: var(--text-3xl);
    margin-bottom: var(--space-4);
}

.error-page__body {
    font-size: var(--text-md);
    color: var(--colour-text-muted);
    margin-bottom: var(--space-8);
    line-height: var(--leading-loose);
}

.error-page__actions {
    display: flex;
    justify-content: center;
    gap: var(--space-3);
    flex-wrap: wrap;
}

/* --------------------------------------------------------------------------
   15. COMPARISON TABLE COLUMN HIGHLIGHT (JS-driven)
   -------------------------------------------------------------------------- */

.comparison-table__cell--highlight {
    background-color: var(--colour-teal-faint);
}

/* --------------------------------------------------------------------------
   16. ABOUT / METHODOLOGY PAGES
   -------------------------------------------------------------------------- */

.about-layout {
    display: grid;
    grid-template-columns: 1fr 280px;
    gap: var(--space-10);
    align-items: start;
    padding-block: var(--space-10);
}

.about-layout__main { min-width: 0; }

.about-layout__sidebar {
    position: sticky;
    top: calc(68px + var(--space-6));
}

.about-section {
    margin-bottom: var(--space-10);
    padding-bottom: var(--space-10);
    border-bottom: 1px solid var(--colour-border);
}

.about-section:last-child { border-bottom: none; }

.about-section__heading {
    font-family: var(--font-display);
    font-size: var(--text-2xl);
    margin-bottom: var(--space-5);
}

.about-section p {
    font-size: var(--text-base);
    line-height: var(--leading-loose);
    color: var(--colour-text-body);
    margin-bottom: var(--space-4);
}

.about-section p:last-child { margin-bottom: 0; }

.about-section__link {
    color: var(--colour-teal);
    text-decoration: underline;
    text-decoration-color: transparent;
    transition: text-decoration-color var(--transition-fast);
}

.about-section__link:hover {
    text-decoration-color: var(--colour-teal);
}

/* Trust list in about sidebar */
.about-trust-list {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
    list-style: none;
}

.about-trust-list__item {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    font-size: var(--text-sm);
    color: var(--colour-text-body);
}

.about-trust-list__icon {
    color: var(--colour-teal);
    font-weight: var(--weight-semi);
}

/* Methodology criteria */
.methodology-criteria {
    display: flex;
    flex-direction: column;
    gap: var(--space-1);
    margin-top: var(--space-5);
}

.methodology-criterion {
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-md);
    padding: var(--space-5);
    transition: border-color var(--transition-fast);
}

.methodology-criterion:hover {
    border-color: var(--colour-teal);
}

.methodology-criterion__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3);
    margin-bottom: var(--space-3);
}

.methodology-criterion__name {
    font-size: var(--text-base);
    font-weight: var(--weight-semi);
    color: var(--colour-text-primary);
}

.methodology-criterion__weight {
    font-size: var(--text-xs);
    color: var(--colour-text-muted);
    background: var(--colour-off-white);
    border: 1px solid var(--colour-border);
    padding: 2px var(--space-3);
    border-radius: var(--radius-full);
    white-space: nowrap;
}

.methodology-criterion__body {
    font-size: var(--text-sm);
    color: var(--colour-text-muted);
    line-height: var(--leading-loose);
    margin: 0;
}

/* Confidence score table */
.methodology-confidence {
    margin-top: var(--space-5);
    border: 1.5px solid var(--colour-border);
    border-radius: var(--radius-md);
    overflow: hidden;
}

.methodology-confidence__row {
    display: grid;
    grid-template-columns: 80px 1fr;
    border-bottom: 1px solid var(--colour-border);
}

.methodology-confidence__row:last-child { border-bottom: none; }

.methodology-confidence__level {
    padding: var(--space-4) var(--space-5);
    background: var(--colour-off-white);
    font-family: var(--font-display);
    font-size: var(--text-lg);
    color: var(--colour-teal);
    border-right: 1px solid var(--colour-border);
    display: flex;
    align-items: center;
}

.methodology-confidence__desc {
    padding: var(--space-4) var(--space-5);
    font-size: var(--text-sm);
    color: var(--colour-text-body);
    line-height: var(--leading-loose);
    display: flex;
    align-items: center;
}

/* Score legend in sidebar */
.score-legend {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
    list-style: none;
}

.score-legend__item {
    padding: var(--space-2) var(--space-3);
    border-radius: var(--radius-sm);
    font-size: var(--text-xs);
    font-weight: var(--weight-medium);
}

.score-legend__item.score--excellent { background: #ECFDF5; color: var(--colour-score-excellent); }
.score-legend__item.score--good      { background: var(--colour-teal-faint); color: var(--colour-teal-dark); }
.score-legend__item.score--average   { background: #FFFBEB; color: var(--colour-score-average); }
.score-legend__item.score--poor      { background: #FEF2F2; color: var(--colour-score-poor); }

/* --------------------------------------------------------------------------
   17. COMPARE HUB PAGE
   -------------------------------------------------------------------------- */

.compare-hub-layout {
    padding-block: var(--space-10);
}

.compare-hub-section {
    margin-bottom: var(--space-12);
}

.compare-hub-section__heading {
    font-family: var(--font-display);
    font-size: var(--text-2xl);
    margin-bottom: var(--space-3);
}

.compare-hub-section__intro {
    font-size: var(--text-base);
    color: var(--colour-text-muted);
    margin-bottom: var(--space-6);
    max-width: 600px;
}

.compare-hub-category {
    margin-bottom: var(--space-8);
}

.compare-hub-category__heading {
    font-size: var(--text-xs);
    font-weight: var(--weight-semi);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--colour-text-subtle);
    margin-bottom: var(--space-3);
    padding-bottom: var(--space-2);
    border-bottom: 1px solid var(--colour-border);
}

.group-list--grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--space-3);
}

/* Light comparison card variant (on white bg) */
.comparison-card-grid--light .comparison-card,
.comparison-card--light {
    background: var(--colour-off-white);
    border: 1.5px solid var(--colour-border);
    color: var(--colour-text-body);
}

.comparison-card--light .comparison-card__title {
    color: var(--colour-text-primary);
}

.comparison-card--light .comparison-card__summary {
    color: var(--colour-text-muted);
}

.comparison-card--light .comparison-card__cta {
    color: var(--colour-teal);
}

.comparison-card--light:hover {
    border-color: var(--colour-teal);
    box-shadow: var(--shadow-sm);
    background: var(--colour-white);
}

/* --------------------------------------------------------------------------
   18. RESPONSIVE — NEW PAGES
   -------------------------------------------------------------------------- */

@media (max-width: 1024px) {
    .about-layout {
        grid-template-columns: 1fr;
    }

    .about-layout__sidebar {
        position: static;
        order: -1;
    }
}

/* --------------------------------------------------------------------------
   19. GEO / AVAILABILITY UI
   -------------------------------------------------------------------------- */

.test-flag--warning {
    background: #FFFBEB;
    border-color: #FDE68A;
    color: var(--colour-score-average);
}

.offer-cta__availability-note {
    font-size: var(--text-xs);
    color: var(--colour-text-muted);
    line-height: var(--leading-loose);
    font-style: italic;
}

.offer-cta__geo-note {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    font-size: var(--text-xs);
    color: var(--colour-text-subtle);
    background: var(--colour-off-white);
    border: 1px solid var(--colour-border);
    border-radius: var(--radius-full);
    padding: 2px var(--space-3);
}

.offer-cta__geo-note::before {
    content: '📍';
    font-size: 0.7em;
}

/* Country context indicator in page heroes */
.page-hero__country {
    display: inline-flex;
    align-items: center;
    gap: var(--space-2);
    margin-top: var(--space-3);
    font-size: var(--text-xs);
    color: rgba(255,255,255,0.5);
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: var(--radius-full);
    padding: var(--space-1) var(--space-3);
}

.page-hero__country-flag {
    font-size: var(--text-sm);
}

/* --------------------------------------------------------------------------
   20. TEST CARD GEO BADGES
   -------------------------------------------------------------------------- */

.test-card__geo-badge {
    display: inline-flex;
    align-items: center;
    gap: var(--space-1);
    margin-bottom: var(--space-2);
    padding: 2px var(--space-2);
    background: var(--colour-navy-faint);
    border: 1px solid var(--colour-border);
    border-radius: var(--radius-full);
    font-size: var(--text-xs);
    font-weight: var(--weight-medium);
    color: var(--colour-text-muted);
}

.test-card__geo-badge--global {
    background: var(--colour-teal-faint);
    border-color: var(--colour-teal-light);
    color: var(--colour-teal-dark);
}

.test-card__geo-flag {
    font-size: 0.9em;
    line-height: 1;
}

.test-card__geo-label {
    letter-spacing: 0.02em;
}
