/*
 * VIS-01: Barbaro B-Lora production typography system.
 *
 * Source specification: candidate-base.css + candidate-b-lora.css at
 * finalist evidence commit 39125711b3d7fce20a0d5f55fb982ccc2ea0d4c9.
 * This stylesheet loads after page and component styles so its type-only
 * declarations preserve the reviewed finalist cascade without changing
 * geometry, content, palette, interaction, or the wordmark.
 */

@font-face {
    font-family: "Bitter";
    src: url("fonts/bitter/Bitter-Variable.ttf") format("truetype");
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
}

@font-face {
    font-family: "Bitter";
    src: url("fonts/bitter/Bitter-Italic-Variable.ttf") format("truetype");
    font-style: italic;
    font-weight: 100 900;
    font-display: swap;
}

@font-face {
    font-family: "Manrope";
    src: url("fonts/manrope/Manrope-Variable.ttf") format("truetype");
    font-style: normal;
    font-weight: 200 800;
    font-display: swap;
}

@font-face {
    font-family: "Lora";
    src: url("fonts/lora/Lora-Italic-Variable.ttf") format("truetype");
    font-style: italic;
    font-weight: 400 700;
    font-display: swap;
}

/*
 * OPC-02: the Lora italic editorial lines (Menu chapter descriptions first).
 * The same italic face, instanced at weight 400 and subset to Latin as WOFF2.
 * It is declared italic, so the browser never synthesizes an italic. The
 * variable face above stays for the existing Lora accents at other weights.
 */
@font-face {
    font-family: "Lora Editorial";
    src: url("fonts/lora/Lora-Italic-400-latin-20260928.woff2") format("woff2");
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/*
 * OPC-02: a metric-matched fallback while the subset loads. Times New Roman
 * Italic (Liberation Serif Italic is metric-compatible) scaled to Lora Italic
 * 400's advance over the live chapter descriptions (ratio 1.114), with Lora's
 * ascent (1006/1000) and descent (274/1000) so the line does not rewrap or move.
 */
@font-face {
    font-family: "Lora Editorial Fallback";
    src: local("Times New Roman Italic"), local("TimesNewRomanPS-ItalicMT"), local("Liberation Serif Italic"), local("LiberationSerif-Italic");
    font-style: italic;
    font-weight: 400;
    size-adjust: 111.4%;
    ascent-override: 90.3%;
    descent-override: 24.6%;
    line-gap-override: 0%;
}

:root {
    --lab-display-family: "Bitter", Georgia, serif;
    --lab-heading-family: "Manrope", Arial, sans-serif;
    --lab-body-family: "Manrope", Arial, sans-serif;
    --lab-interface-family: "Manrope", Arial, sans-serif;
    --lab-compact-family: "Manrope", Arial, sans-serif;
    --lab-accent-family: "Lora", Georgia, serif;
    --lab-editorial-line-family: "Lora Editorial", "Lora Editorial Fallback", Georgia, serif;
    --lab-display-weight: 500;
    --lab-heading-weight: 500;
    --lab-body-weight: 400;
    --lab-compact-weight: 700;
    --lab-accent-weight: 500;
    --lab-data-strong-weight: 800;
    --lab-display-tracking: -0.022em;
    --lab-heading-tracking: -0.008em;
    --lab-body-tracking: 0;
    --lab-compact-tracking: 0.105em;
    --lab-accent-tracking: -0.012em;
    --lab-build-title-tracking: -0.018em;
    --lab-display-leading: 1.07;
    --lab-display-leading-mobile: 1.1;
    --lab-body-leading: 1.68;
    --lab-body-leading-mobile: 1.68;
    --lab-build-title-leading: 1.12;
    --lab-ticket-title-leading: 1.04;
    --lab-home-title-size: clamp(35px, 3.95vw, 49px);
    --lab-home-title-size-mobile: 35px;
    --lab-body-size: 16px;
    --lab-body-size-mobile: 16px;
    --lab-build-title-size: clamp(22px, 2.25vw, 23px);
    --lab-build-title-weight: 500;
    --lab-ticket-title-size: 25px;

    --typeface-display: var(--lab-display-family);
    --typeface-body: var(--lab-interface-family);
    --typeface-accent: var(--lab-accent-family);
    --font-brand: var(--lab-display-family);
    --font-display: var(--lab-display-family);
    --font-display-weight: var(--lab-display-weight);
    --font-app: var(--lab-interface-family);
    --font-prose: var(--lab-body-family);
    --font-accent: var(--lab-accent-family);
    --font-editorial-line: var(--lab-editorial-line-family);
    --lab-data-family: var(--lab-interface-family);
}

.doc-editor--build {
    --doc-title-size: var(--lab-build-title-size);
}

body,
button,
input,
select,
textarea {
    font-family: var(--lab-interface-family);
}

.hero-split .hero-title {
    font-family: var(--lab-display-family);
    font-size: var(--lab-home-title-size);
    font-weight: var(--lab-display-weight);
    letter-spacing: var(--lab-display-tracking);
    line-height: var(--lab-display-leading);
}

.hero-split .hero-title em,
:is(.hero-title, .doc-editor-craft-strip, .page-hero-title, .exp-shelf-title) em {
    font-family: var(--lab-accent-family);
    font-style: italic;
    font-weight: var(--lab-accent-weight);
    letter-spacing: var(--lab-accent-tracking);
}

.hero-split .hero-body,
.hero-split .hero-subtitle {
    font-family: var(--lab-body-family);
    font-size: var(--lab-body-size);
    font-weight: var(--lab-body-weight);
    letter-spacing: var(--lab-body-tracking);
    line-height: var(--lab-body-leading);
}

.hero-tagline,
.section-eyebrow,
.card-label,
.chip-group-label,
.ticket-section-label,
.balance-meter-title,
.doc-editor-meta,
.doc-editor-title-label {
    font-family: var(--lab-compact-family);
    font-weight: var(--lab-compact-weight);
    letter-spacing: var(--lab-compact-tracking);
}

.nav-links,
.nav-tools,
.cta-link,
.hero-cta-link,
.chip,
.ticket-chip,
.station-summary {
    font-family: var(--lab-interface-family);
}

.oven-name,
.spotlight-name,
.wr-title,
.ticket-source-name,
.ticket-empty-title:not(.is-default-title) {
    font-family: var(--lab-display-family);
    font-weight: var(--lab-display-weight);
    letter-spacing: var(--lab-display-tracking);
}

.doc-editor--build .doc-editor-title,
.doc-editor--build h1.doc-editor-title {
    font-family: var(--lab-display-family);
    font-weight: var(--lab-build-title-weight);
    letter-spacing: var(--lab-build-title-tracking);
    line-height: var(--lab-build-title-leading);
}

.ticket-source-name,
.ticket-empty-title:not(.is-default-title) {
    font-size: var(--lab-ticket-title-size);
    line-height: var(--lab-ticket-title-leading);
}

.station-title {
    font-family: var(--lab-heading-family);
    font-weight: var(--lab-heading-weight);
    letter-spacing: var(--lab-heading-tracking);
}

.canonical-data-name,
.station-title.canonical-data-name,
.meter-label,
.meter-value {
    font-family: var(--lab-data-family);
    font-variant-numeric: tabular-nums;
}

.meter-value {
    font-weight: var(--lab-data-strong-weight);
}

/* Main owns the complete ticket order-line monospace stack. */

@media (max-width: 600px) {
    .hero-split .hero-title {
        font-size: var(--lab-home-title-size-mobile);
        line-height: var(--lab-display-leading-mobile);
    }

    .hero-split .hero-body {
        font-size: var(--lab-body-size-mobile);
        line-height: var(--lab-body-leading-mobile);
    }

}
