/* Fonts: self-hosted in css/fonts.css (was a Google Fonts @import). */

/* VIRA components — plain CSS classes over tokens.css. Square corners everywhere; circles only for icon badges, steps and the status dot. */

.vira { background: var(--surface); color: var(--ink); font-family: var(--font-serif); }
.vira * { box-sizing: border-box; }

/* Display: caps, semi-expanded Archivo */
.vira-display { font-family: var(--font-display); font-stretch: 112.5%; font-weight: 700; text-transform: uppercase; line-height: 1; margin: 0; letter-spacing: 0; }
.vira-display--xl { font-size: 49px; }
.vira-display--headline { font-size: 29px; line-height: 1.05; }
.vira-display .vira-accent, .vira-accent { color: var(--accent); }

/* Mono eyebrow and labels */
.vira-eyebrow { font-family: var(--font-mono); font-size: 13px; line-height: 17px; letter-spacing: .3em; text-transform: uppercase; color: var(--ink-muted); }
.vira-eyebrow--accent { color: var(--accent); }
.vira-label { font-family: var(--font-mono); font-size: 13px; line-height: 17px; letter-spacing: .14em; text-transform: uppercase; }

/* Tagline flanked by short rules */
.vira-tagline { display: flex; align-items: center; justify-content: center; gap: 14px; font-family: var(--font-mono); font-size: 14px; letter-spacing: .3em; text-transform: uppercase; color: var(--accent); }
.vira-tagline::before, .vira-tagline::after { content: ""; width: 36px; height: 1px; background: var(--accent); }

/* Status tag: dot + mono caps */
.vira-tag { display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: 13px; letter-spacing: .3em; text-transform: uppercase; color: var(--accent); }
.vira-tag::before { content: ""; width: 9px; height: 9px; border-radius: var(--radius-round); background: var(--accent); }

/* Section header: chip + eyebrow + headline */
.vira-section-head { display: flex; align-items: center; flex-wrap: wrap; gap: var(--space-chip-gap) 24px; }
.vira-section-head__lead { display: flex; align-items: center; gap: var(--space-chip-gap); }
.vira-chip { display: inline-grid; place-items: center; min-width: 29px; height: 25px; padding: 0 6px; background: var(--surface-inverse); color: var(--ink-inverse); font-family: var(--font-mono); font-size: 13px; border-radius: var(--radius-none); }
.vira-chip--accent { background: var(--accent); color: var(--on-accent); }

/* Rules */
.vira-rule { height: 0; border: 0; border-top: var(--stroke-hairline) solid var(--hairline); margin: 0; }

/* Standfirst with accent bar */
.vira-standfirst { border-left: var(--stroke-accent-bar) solid var(--accent); padding-left: 20px; }
.vira-standfirst p { margin: 0; font-family: var(--font-serif); font-size: 22px; line-height: 30px; font-optical-sizing: auto; }

/* Icon badge: circle ring with a 48-grid icon inside */
.vira-icon-badge { flex: none; display: inline-grid; place-items: center; width: 44px; height: 44px; border: var(--stroke-hairline) solid var(--accent); border-radius: var(--radius-round); }
.vira-icon-badge img { width: 28px; height: 28px; display: block; }
.vira-icon-badge--lg { width: 51px; height: 51px; }
.vira-icon-badge--lg img { width: 32px; height: 32px; }
.vira-icon-badge--filled { background: var(--accent); }

/* Category strip: icon + label cells between hairlines */
.vira-categories { display: grid; grid-template-columns: repeat(4, 1fr); border-top: var(--stroke-hairline) solid var(--hairline); border-bottom: var(--stroke-hairline) solid var(--hairline); }
.vira-categories > * { display: flex; align-items: center; justify-content: center; gap: var(--space-icon-gap); padding: 26px 8px; font-family: var(--font-display); font-weight: 600; font-size: 18px; }
.vira-categories > * + * { border-left: var(--stroke-hairline) solid var(--hairline); }
.vira-categories img { width: 34px; height: 34px; }
@media (max-width: 560px) { .vira-categories { grid-template-columns: repeat(2, 1fr); } .vira-categories > *:nth-child(3) { border-left: 0; } .vira-categories > *:nth-child(n+3) { border-top: var(--stroke-hairline) solid var(--hairline); } }

/* Service grid */
.vira-services { display: grid; grid-template-columns: repeat(3, 1fr); column-gap: 28px; }
.vira-service { display: flex; gap: var(--space-icon-gap); padding: var(--space-row) 0; border-bottom: var(--stroke-hairline) solid var(--hairline); }
.vira-service h4 { margin: 0 0 6px; font-family: var(--font-display); font-weight: 700; font-size: 18px; line-height: 1.18; }
.vira-service p { margin: 0; font-family: var(--font-serif); font-size: 15px; line-height: 20px; }
@media (max-width: 720px) { .vira-services { grid-template-columns: 1fr; } }

/* Stat band */
.vira-stats { display: grid; grid-template-columns: repeat(3, 1fr); background: var(--accent); color: var(--on-accent); }
.vira-stat { padding: 26px var(--space-page) 24px; }
.vira-stat + .vira-stat { border-left: var(--stroke-hairline) solid var(--hairline-on-accent); padding-left: 24px; }
.vira-stat b { display: block; font-family: var(--font-display); font-stretch: 112.5%; font-weight: 700; font-size: 36px; line-height: 1; }
.vira-stat span { display: block; margin-top: 8px; font-family: var(--font-mono); font-size: 13px; letter-spacing: .14em; text-transform: uppercase; }
@media (max-width: 560px) { .vira-stats { grid-template-columns: 1fr; } .vira-stat + .vira-stat { border-left: 0; border-top: var(--stroke-hairline) solid var(--hairline-on-accent); padding-left: 24px; } .vira-stat { padding: 18px 24px; } }

/* Proof rows */
.vira-proof { display: grid; grid-template-columns: 136px 1fr 1.6fr; align-items: center; gap: 16px; padding: var(--space-row) 0; border-top: var(--stroke-hairline) solid var(--hairline); }
.vira-proof__fig { color: var(--accent); white-space: nowrap; }
.vira-proof__fig b { font-family: var(--font-display); font-stretch: 112.5%; font-weight: 700; font-size: 34px; line-height: 1; }
.vira-proof__fig span { margin-left: 4px; font-family: var(--font-mono); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; }
.vira-proof h4 { margin: 0; font-family: var(--font-display); font-weight: 700; font-size: 18px; }
.vira-proof p { margin: 0; font-family: var(--font-serif); font-size: 16px; line-height: 21px; }
@media (max-width: 720px) { .vira-proof { grid-template-columns: 1fr; gap: 6px; } }

/* Journey steps on a dark band */
.vira-journey { background: var(--char); color: var(--sand); padding: 22px var(--space-page) 26px; }
.vira-journey__head { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
.vira-journey__head .vira-eyebrow { color: var(--clay-light); }
.vira-journey ol { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, 1fr); position: relative; }
.vira-journey ol::before { content: ""; position: absolute; top: 25px; left: 8.33%; right: 8.33%; height: 1px; background: var(--terracotta); opacity: .55; }
.vira-journey li { position: relative; display: flex; flex-direction: column; align-items: center; text-align: center; }
.vira-step__circle { width: 51px; height: 51px; display: grid; place-items: center; border: var(--stroke-hairline) solid var(--terracotta); border-radius: var(--radius-round); background: var(--char); }
.vira-step__circle img { width: 30px; height: 30px; }
.vira-journey li:last-child .vira-step__circle { background: var(--terracotta); }
.vira-step__num { margin-top: 10px; font-family: var(--font-mono); font-size: 12px; color: var(--terracotta); }
.vira-step__name { margin-top: 2px; font-family: var(--font-display); font-weight: 600; font-size: 17px; }
@media (max-width: 560px) { .vira-journey ol { grid-template-columns: repeat(3, 1fr); row-gap: 18px; } .vira-journey ol::before { display: none; } }

/* Contact CTA band */
.vira-cta { display: grid; grid-template-columns: auto 1fr auto; gap: 28px; align-items: center; background: var(--accent); color: var(--on-accent); padding: 26px var(--space-page); }
.vira-cta__head .vira-eyebrow { color: var(--on-accent); }
.vira-cta__head h3 { margin: 6px 0 0; font-family: var(--font-display); font-stretch: 112.5%; font-weight: 700; font-size: 26px; line-height: 1.03; text-transform: uppercase; }
.vira-cta ul { list-style: none; margin: 0; padding: 0 0 0 28px; border-left: var(--stroke-hairline) solid var(--hairline-on-accent); display: grid; gap: 8px; font-family: var(--font-mono); font-size: 14px; }
.vira-cta li { display: flex; align-items: center; gap: var(--space-icon-gap); }
.vira-cta li img { width: 18px; height: 18px; }
.vira-cta__qr { text-align: center; }
.vira-cta__qr .vira-label { font-size: 11px; letter-spacing: .3em; font-weight: 500; }
.vira-cta__qr-code { margin-top: 8px; width: 85px; height: 85px; background: var(--sand); padding: 6px; }
@media (max-width: 720px) { .vira-cta { grid-template-columns: 1fr; } .vira-cta ul { border-left: 0; padding-left: 0; } .vira-cta__qr { text-align: left; } }

/* Masthead: metadata bar + lockup + tagline */
.vira-masthead { display: grid; grid-template-columns: 1fr auto 1fr; align-items: start; gap: 16px; padding-bottom: 20px; border-bottom: var(--stroke-hairline) solid var(--hairline); }
.vira-masthead .vira-eyebrow:first-child { color: var(--accent); }
.vira-masthead .vira-eyebrow:last-child { text-align: right; }
.vira-masthead__mark { text-align: center; }
.vira-masthead__mark img { display: block; width: 280px; max-width: 100%; margin: 0 auto 18px; }
@media (max-width: 560px) { .vira-masthead { grid-template-columns: 1fr; text-align: center; } .vira-masthead .vira-eyebrow:last-child { text-align: center; } }

/* Theme-aware logo: put both colourways in the page; the theme shows the right one */
.vira-logo--sand { display: none !important; }
[data-theme="char"] .vira-logo--char { display: none !important; }
[data-theme="char"] .vira-logo--sand { display: block !important; }

/* Caption strip: char band on the base of a photo, terracotta tag chip, sand title */
.vira-figure { margin: 0; position: relative; }
.vira-figure img { display: block; width: 100%; height: auto; border-radius: var(--radius-none); }
.vira-caption { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; background: var(--char); color: var(--sand); padding: 14px 18px 16px; }
.vira-figure--overlay .vira-caption { position: absolute; left: 0; right: 0; bottom: 0; }
.vira-caption__tag { display: inline-block; background: var(--terracotta); color: var(--char); font-family: var(--font-mono); font-size: 11px; letter-spacing: .22em; text-transform: uppercase; padding: 3px 7px; }
.vira-caption__title { margin: 8px 0 0; font-family: var(--font-display); font-weight: 700; font-size: 20px; line-height: 1.2; }
.vira-caption__value { font-family: var(--font-display); font-stretch: 112.5%; font-weight: 700; font-size: 22px; color: var(--terracotta); white-space: nowrap; }
.vira-badge-viz { position: absolute; top: 12px; left: 12px; background: var(--char); color: var(--sand); font-family: var(--font-mono); font-size: 11px; letter-spacing: .22em; text-transform: uppercase; padding: 4px 8px; }
