/*
Theme Name:     Astra Child
Description:    Astra child theme for casasprotx.com. All site CSS lives here.
Author:         Casas Pro Roofing and Construction
Template:       astra
Version:        1.7.4
*/

/* ------------------------------------------------------------------
   Moved from the "Simple Custom CSS and JS" plugin (snippet 1423)
   on 2026-09-30. Plugin deactivated afterwards.
   ------------------------------------------------------------------ */

/* Center the Form */
.custom-inspection-form {
    max-width: 600px;
    margin: 0 auto;
    padding: 20px;
    background: #f9f9f9;
    border: 1px solid #ddd;
    border-radius: 10px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

/* Style Input Fields */
.custom-inspection-form input[type="text"],
.custom-inspection-form input[type="email"],
.custom-inspection-form textarea {
    width: 100%;
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 5px;
    font-size: 16px;
}

/* Style Submit Button */
.custom-submit-btn {
    background-color: #0073e6;
    color: white;
    border: none;
    padding: 10px 20px;
    font-size: 16px;
    border-radius: 5px;
    cursor: pointer;
    transition: background-color 0.3s;
}

.custom-submit-btn:hover {
    background-color: #005bb5;
}

/* Style Error Messages */
.wpforms-error {
    color: red;
    font-weight: bold;
    margin-top: 5px;
}

/* Adjust for Mobile Devices */
@media (max-width: 768px) {
    .custom-inspection-form {
        padding: 10px;
    }
}

/* ------------------------------------------------------------------
   Moved from Customizer > Additional CSS (custom_css post 17, "astra")
   on 2026-09-30, because that CSS is bound to the parent theme slug
   and would not follow the switch to astra-child.
   ------------------------------------------------------------------ */

/* Custom background color for a specific WPForms field */
.custom-text-field input[type="text"],
.custom-text-field textarea {
    background-color: #7a7a7a7a;
    border: 1px solid #ddd;
    padding: 8px;
    border-radius: 5px;
}
/* .sticky-form removed 2026-09-30: it pushed the contact form over the footer and off the right edge. */

.submit-button {
    background-color: #FF7300;
    color: #ffffff;
    border: none;
    padding: 10px 20px;
    border-radius: 5px;
    font-weight: bold;
    cursor: pointer;
}

.submit-button:hover {
    background-color: #f89738;
}


/* ------------------------------------------------------------------
   Phase 3 site-wide fixes (2026-09-30)
   ------------------------------------------------------------------ */

/* S3: headings must never break mid-word on phones */
@media (max-width: 767px) {
    h1, h2, h3, .elementor-heading-title {
        word-break: normal;
        overflow-wrap: normal;
        hyphens: manual;
    }
}

/* S7: one size for every footer heading (widget titles, block headings, Spectra headings) */
.site-footer .widget-title,
.site-footer .footer-widget-area h2,
.site-footer .footer-widget-area h3,
.site-footer .footer-widget-area h4,
.site-footer .uagb-heading-text {
    font-size: 22px !important;
    line-height: 1.3 !important;
    margin-bottom: 16px !important;
    text-transform: none;
}

/* S8: footer "Call Now" button keeps its natural width on every page */
.site-footer .wp-block-button,
.site-footer .wp-block-button__link {
    width: auto !important;
    min-width: 0;
    white-space: nowrap;
}

/* Services page (912) is Elementor now (redesign step 6); its Spectra-era rules were removed. */


/* ------------------------------------------------------------------
   Redesign (2026-10-02), reports/design-system.md
   Step 2: header. Tokens are shared by the later steps.
   ------------------------------------------------------------------ */

:root {
    --cp-navy: #0E3D58;
    --cp-blue: #2498DB;
    --cp-deep: #0A2C40;
    --cp-orange: #C24E0B;
    --cp-orange-dark: #A2400A;
    --cp-ink: #14212B;
    --cp-slate: #3A4A56;
    --cp-line: #DCE3E8;
    --cp-mist: #F4F7F9;
    --cp-head: "Barlow Semi Condensed", "Arial Narrow", Arial, sans-serif;
    --cp-body: Roboto, system-ui, Arial, sans-serif;
}

/* Sticky white header (Astra's own sticky header is a Pro feature) */
#masthead {
    position: sticky;
    top: 0;
    z-index: 99;
    background: #fff;
}
.admin-bar #masthead { top: 32px; }
@media (max-width: 782px) { .admin-bar #masthead { top: 46px; } }

/* Click-to-call block in header HTML element 1 */
.cp-call {
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none !important;
    color: var(--cp-navy) !important;
    font-family: var(--cp-head);
    font-weight: 700;
    font-size: 20px;
    line-height: 1;
    white-space: nowrap;
}
.cp-call::before {
    content: "";
    width: 22px;
    height: 22px;
    flex: none;
    background: var(--cp-blue);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3.1 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.1 4.2 2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.3a2 2 0 0 1 2.1-.4c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z'/%3E%3C/svg%3E") center / contain no-repeat;
}
.cp-call-text { display: flex; flex-direction: column; gap: 3px; }
.cp-call-note {
    font-family: var(--cp-body);
    font-weight: 500;
    font-size: 12px;
    line-height: 1.2;
    letter-spacing: .02em;
    color: var(--cp-slate);
}
.cp-call:hover .cp-call-number { color: var(--cp-blue); }
.ast-header-html-1 .ast-builder-html-element { padding: 0; }

/* Phones and tablets: the call block becomes an orange icon button next to the menu toggle */
.ast-header-break-point .cp-call {
    width: 48px;
    height: 48px;
    justify-content: center;
    gap: 0;
    border-radius: 6px;
    background: var(--cp-orange);
}
.ast-header-break-point .cp-call::before { background: #fff; }
.ast-header-break-point .cp-call-text {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
}

/* Header row: side columns size to their content so the phone block and button never wrap */
.ast-primary-header-bar .ast-builder-grid-row.ast-grid-center-col-layout { grid-template-columns: auto 1fr auto; }
#ast-desktop-header .site-branding { padding-top: 6px; padding-bottom: 6px; }

/* Header button: one primary action */
.ast-header-button-1 .ast-custom-button {
    font-family: var(--cp-head);
    text-transform: none;
    letter-spacing: .01em;
    white-space: nowrap;
}
.ast-header-button-1 .ast-custom-button:hover { background-color: var(--cp-orange-dark) !important; }

/* Menu */
.ast-builder-menu-1 .main-header-menu .menu-link { font-family: var(--cp-head); }


/* ------------------------------------------------------------------
   Redesign step 3: homepage components (Elementor widgets carry
   cp-* classes; the design system lives here, not in widget settings)
   ------------------------------------------------------------------ */

/* Eyebrow label above a heading */
.cp-eyebrow .elementor-heading-title {
    font-family: var(--cp-head);
    font-weight: 600;
    font-size: 14px;
    line-height: 1.2;
    letter-spacing: .08em;
    text-transform: uppercase;
}

/* Buttons: 52 px, radius 6, Barlow 600 17, no uppercase. One primary per view. */
.elementor-widget-button.cp-btn .elementor-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 52px;
    padding: 15px 26px;
    border-radius: 6px;
    border: 2px solid transparent;
    font-family: var(--cp-head);
    font-weight: 600;
    font-size: 17px;
    line-height: 1;
    letter-spacing: .01em;
    text-transform: none;
    transition: background-color .15s ease, color .15s ease;
}
.elementor-widget-button.cp-btn .elementor-button-icon svg, .elementor-widget-button.cp-btn .elementor-button-icon i { font-size: 18px; width: 18px; }
.elementor-widget-button.cp-btn-primary .elementor-button { background-color: var(--cp-orange); color: #fff; }
.elementor-widget-button.cp-btn-primary .elementor-button:hover, .elementor-widget-button.cp-btn-primary .elementor-button:focus { background-color: var(--cp-orange-dark); color: #fff; }
.elementor-widget-button.cp-btn-secondary .elementor-button { background-color: var(--cp-navy); color: #fff; }
.elementor-widget-button.cp-btn-secondary .elementor-button:hover, .elementor-widget-button.cp-btn-secondary .elementor-button:focus { background-color: var(--cp-deep); color: #fff; }
.elementor-widget-button.cp-btn-light .elementor-button { background-color: #fff; color: var(--cp-navy); }
.elementor-widget-button.cp-btn-light .elementor-button:hover, .elementor-widget-button.cp-btn-light .elementor-button:focus { background-color: var(--cp-mist); color: var(--cp-navy); }
.elementor-widget-button.cp-btn-ghost .elementor-button { background-color: #fff; color: var(--cp-navy); border-color: var(--cp-navy); }
.elementor-widget-button.cp-btn-ghost .elementor-button:hover, .elementor-widget-button.cp-btn-ghost .elementor-button:focus { background-color: var(--cp-mist); color: var(--cp-navy); }
@media (max-width: 767px) {
    .cp-hero .cp-btn, .cp-hero .elementor-widget-button.cp-btn .elementor-button-wrapper, .cp-hero .elementor-widget-button.cp-btn .elementor-button,
    .elementor-element#contact .cp-btn, .elementor-element#contact .elementor-widget-button.cp-btn .elementor-button-wrapper, .elementor-element#contact .elementor-widget-button.cp-btn .elementor-button { width: 100%; }
}

/* Elementor "full width" template: Astra still pads .ast-container by 20 px; sections should bleed edge to edge */
.elementor-template-full-width .ast-container { padding-left: 0; padding-right: 0; max-width: 100%; }

/* Lead paragraph line length */
.cp-lead { max-width: 60ch; }

/* Trust bar icon boxes keep their text left of centre */
.cp-trust .elementor-icon-box-wrapper { align-items: flex-start; }

/* Service cards */
.cp-card { transition: transform .15s ease, box-shadow .15s ease; }
.cp-card:hover { transform: translateY(-3px); box-shadow: 0 2px 4px rgba(20,33,43,.08), 0 14px 34px rgba(20,33,43,.12) !important; }
.cp-card-img img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.cp-card-body > .cp-card-more { margin-top: auto; }
.cp-card-more p { margin: 0; font-family: var(--cp-head); font-weight: 600; }


/* Process step number */
.cp-step-num .elementor-heading-title {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--cp-navy);
    font-family: var(--cp-head);
    font-weight: 700;
    font-size: 22px;
    line-height: 1;
}

/* About photo */
.cp-photo img { display: block; width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 10px; box-shadow: 0 1px 2px rgba(20,33,43,.06), 0 8px 24px rgba(20,33,43,.06); }
.cp-ticks .elementor-icon-list-text { line-height: 1.5; }

/* Service-area city chips (inline icon list laid out as a grid) */
.cp-chips .elementor-icon-list-items { display: grid; grid-template-columns: repeat(5, 1fr); gap: 12px; }
.cp-chips .elementor-icon-list-item { margin: 0 !important; padding: 14px 16px !important; background: #fff; border: 1px solid var(--cp-line); border-radius: 8px; }
.cp-chips .elementor-icon-list-text { font-family: var(--cp-head); font-weight: 600; font-size: 17px; line-height: 1.2; }
@media (max-width: 1024px) { .cp-chips .elementor-icon-list-items { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 767px)  { .cp-chips .elementor-icon-list-items { grid-template-columns: repeat(2, 1fr); } }

/* Hero form card: WPForms fields in the design-system style (scoped to the card for now) */
.cp-form-card .wpforms-container { margin: 0; }
.cp-form-card .wpforms-form .wpforms-field { padding: 6px 0; }
.cp-form-card .wpforms-form input[type=text],
.cp-form-card .wpforms-form input[type=email],
.cp-form-card .wpforms-form input[type=tel],
.cp-form-card .wpforms-form input[type=number],
.cp-form-card .wpforms-form textarea {
    width: 100% !important;
    max-width: 100% !important;
    height: 46px;
    padding: 0 12px;
    border: 1px solid #B9C5CD;
    border-radius: 6px;
    background: #fff !important;
    font-family: var(--cp-body);
    font-size: 16px;
    color: var(--cp-ink);
}
.cp-form-card .wpforms-form textarea { height: 90px; padding: 10px 12px; }
.cp-form-card .wpforms-form input:focus, .cp-form-card .wpforms-form textarea:focus { border-color: var(--cp-blue); box-shadow: 0 0 0 3px rgba(36,152,219,.25); outline: none; }
.cp-form-card .wpforms-form .wpforms-field-checkbox label,
.cp-form-card .wpforms-form .wpforms-field-gdpr-checkbox label { font-size: 13px; line-height: 1.4; color: var(--cp-slate); }
.cp-form-card .wpforms-form .wpforms-field-checkbox ul li, .cp-form-card .wpforms-form .wpforms-field-gdpr-checkbox ul li { margin-bottom: 6px; }
.cp-form-card .wpforms-form button[type=submit].wpforms-submit {
    width: 100%;
    min-height: 52px;
    margin-top: 8px;
    padding: 15px 26px;
    border: 0;
    border-radius: 6px;
    background: var(--cp-orange) !important;
    color: #fff !important;
    font-family: var(--cp-head);
    font-weight: 600;
    font-size: 17px;
    line-height: 1;
    text-transform: none;
}
.cp-form-card .wpforms-form button[type=submit].wpforms-submit:hover { background: var(--cp-orange-dark) !important; }


/* ------------------------------------------------------------------
   Redesign step 5: service, blog and contact pages
   ------------------------------------------------------------------ */

/* Page banner: white H1 over a photo with the deep-navy overlay */
.cp-banner .elementor-heading-title { color: #fff; text-align: center; }

/* Long-form text keeps a readable measure and the design-system heading rhythm */
.cp-prose,
.e-con.e-con > .e-con-inner > .elementor-widget.cp-prose,
.elementor.elementor .e-con > .elementor-widget.cp-prose { max-width: 800px; margin-left: auto; margin-right: auto; width: 100%; }
.cp-prose h2, .cp-prose h3, .cp-prose h4 { margin-top: 1.4em; margin-bottom: .5em; }
.cp-prose h2:first-child, .cp-prose h3:first-child { margin-top: 0; }
.cp-prose p, .cp-prose li { line-height: 1.65; }
.cp-prose ul, .cp-prose ol { padding-left: 1.4em; }
.cp-prose li { margin-bottom: .4em; }
.cp-prose hr { border: 0; border-top: 1px solid var(--cp-line); margin: 1.6em 0; }
.cp-prose a { color: var(--cp-blue); }

/* Form card: a heading above the form on service pages */
.cp-form-card .wpforms-head-container .wpforms-title { font-family: var(--cp-head); font-size: 24px; color: var(--cp-ink); margin-bottom: 4px; }
.cp-form-card .wpforms-head-container .wpforms-description { font-size: 15px; color: var(--cp-slate); margin-bottom: 12px; }


/* ------------------------------------------------------------------
   Conversion homepage (reports/conversion-plan.md)
   ------------------------------------------------------------------ */

/* Google rating badge in the hero */
.cp-badge-wrap p { margin: 0; }
.cp-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(255,255,255,.12);
    border: 1px solid rgba(255,255,255,.28);
    color: #fff !important;
    text-decoration: none !important;
    font-family: var(--cp-body);
    font-size: 15px;
    line-height: 1;
}
.cp-badge:hover { background: rgba(255,255,255,.2); }
.cp-stars { color: #FFC83D; letter-spacing: 1px; font-size: 16px; }

/* Six-item trust bar: label only, no description */
.cp-trust-6 .elementor-icon-box-description { display: none; }
.cp-trust-6 .elementor-icon-box-wrapper { align-items: center; }
.cp-trust-6 a .elementor-icon-box-title { text-decoration: underline; text-decoration-color: rgba(255,255,255,.4); text-underline-offset: 3px; }

/* Short form: dropdown and optional checkbox */
.cp-form-card .wpforms-form select {
    width: 100% !important;
    max-width: 100% !important;
    height: 46px;
    padding: 0 12px;
    border: 1px solid #B9C5CD;
    border-radius: 6px;
    background: #fff;
    font-family: var(--cp-body);
    font-size: 16px;
    color: var(--cp-ink);
}
.cp-form-card .wpforms-field-limit-text { display: none; }
.cp-form-card .cp-privacy { margin: 10px 0 0; font-size: 13px; color: var(--cp-slate); }
.cp-form-card .wpforms-confirmation-container-full { background: #EAF6EE; border: 1px solid #BFE3C9; border-radius: 8px; padding: 18px; font-size: 17px; }

/* Project tiles */
.cp-tile .cp-caption p { margin: 0; padding: 12px 16px; font-family: var(--cp-head); font-weight: 600; font-size: 16px; color: var(--cp-ink); }

/* FAQ */
.cp-faq .cp-faq-item:last-child { border-bottom: 0 !important; }
.cp-faq h3 { font-size: 20px; }

/* Sticky mobile bar: Call | Free inspection, phones only */
.elementor .cp-sticky.e-con, .cp-sticky { display: none; }
@media (max-width: 767px) {
    .elementor .cp-sticky.e-con, .cp-sticky {
        display: flex !important;
        position: fixed;
        left: 0; right: 0; bottom: 0;
        z-index: 98;
        background: #fff;
        border-top: 1px solid var(--cp-line);
        box-shadow: 0 -4px 16px rgba(20,33,43,.12);
    }
    .cp-sticky .elementor-widget-button { flex: 1 1 0; }
    .cp-sticky .elementor-button-wrapper, .cp-sticky .elementor-button { width: 100%; }
    .cp-sticky .elementor-button { min-height: 48px; padding: 13px 16px; }
    body:has(.cp-sticky) { padding-bottom: 64px; }
    body:has(.cp-sticky) .site-footer { padding-bottom: 8px; }
}

/* Review cards (verbatim Google excerpts) */
.cp-review-stars p { margin: 0; letter-spacing: 2px; line-height: 1; }
.cp-review-text p { margin: 0; line-height: 1.55; }
.cp-review-by p { margin: 0; }
.cp-review-by a { color: var(--cp-blue); }

/* Global sticky bar (printed by the child theme on every page) */
.cp-sticky-global a {
    flex: 1 1 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    border-radius: 6px;
    font-family: var(--cp-head);
    font-weight: 600;
    font-size: 17px;
    text-decoration: none !important;
    color: #fff !important;
}
.cp-sticky-global { gap: 8px; padding: 8px; }
.cp-sticky-global .cp-sticky-call { background: var(--cp-orange); }
.cp-sticky-global .cp-sticky-form { background: var(--cp-navy); }

/* ------------------------------------------------------------------
   Redesign step 10: footer
   ------------------------------------------------------------------ */
.site-footer { font-size: 16px; }
.site-footer .widget-title,
.site-footer .footer-widget-area h2,
.site-footer .footer-widget-area h3 { font-family: var(--cp-head); font-size: 18px !important; font-weight: 600; color: #fff; margin-bottom: 14px !important; }
.site-footer .footer-widget-area ul, .site-footer .wp-block-list { list-style: none; margin: 0; padding: 0; }
.site-footer .footer-widget-area li { margin-bottom: 8px; }
.site-footer a { color: var(--cp-pale, #C9DAE4); text-decoration: none; }
.site-footer a:hover { color: #fff; }
.site-footer .cp-footer-logo { background: #fff; border-radius: 8px; padding: 8px; display: inline-block; margin: 0 0 16px; line-height: 0; }
.site-footer .cp-footer-logo img { height: 64px; width: auto; display: block; }
.site-footer .cp-footer-phone { font-family: var(--cp-head); font-weight: 700; font-size: 22px; color: #fff; }
.site-footer .ast-footer-social-wrap .ast-builder-social-element { margin-top: 12px; }
.site-footer .site-below-footer-wrap { font-size: 14px; }

/* Recent-work galleries: centred rows of 3:2 photo tiles with captions */
.cp-gallery .cp-tile { flex: 0 1 auto; }
.cp-gallery .cp-tile .cp-card-img img { display: block; width: 100%; aspect-ratio: 3 / 2; object-fit: cover; }
.cp-gallery .cp-caption p { margin: 0; padding: 12px 16px; font-family: var(--cp-head); font-weight: 600; font-size: 16px; color: var(--cp-ink); }
@media (min-width: 768px) { #recent-work .cp-gallery:has(.cp-tile:only-child) .cp-tile { max-width: 520px; } }

/* Mobile review fixes (2026-10-04) */

/* Card links: one navy in every state (the blue hover stuck after a tap on phones) */
a.cp-card, a.cp-card:hover, a.cp-card:focus, a.cp-card:visited, a.cp-card:active { color: var(--cp-navy); }
a.cp-card .cp-card-more p, a.cp-card:hover .cp-card-more p, a.cp-card:focus .cp-card-more p,
a.cp-card:visited .cp-card-more p, a.cp-card:active .cp-card-more p { color: var(--cp-navy) !important; }
@media (hover: hover) { a.cp-card:hover .cp-card-more p { text-decoration: underline; text-underline-offset: 3px; } }
.cp-crop-top img { object-position: center top; }

/* Button rows sit flush with the text above them; full width on phones like the hero buttons */
@media (max-width: 767px) {
    #storm .elementor-widget-button.cp-btn, #storm .elementor-widget-button.cp-btn .elementor-button-wrapper,
    #storm .elementor-widget-button.cp-btn .elementor-button { width: 100%; }
}

/* WPForms spam-trap fields are meant to be invisible; their 1px-wide label was leaking text ("do need?") on phones */
.wpforms-container .wpforms-field:has(> label.wpforms-field-label[aria-hidden="true"]),
.wpforms-container label.wpforms-field-label[aria-hidden="true"] { display: none !important; }

/* No hyphenation or mid-word breaks in form labels, consent text or the privacy line */
.wpforms-container label, .wpforms-container .wpforms-field-label, .wpforms-container .wpforms-field-checkbox li,
.wpforms-container .wpforms-field-description, .cp-privacy, .cp-privacy a {
    -webkit-hyphens: none; hyphens: none; word-break: normal; overflow-wrap: normal;
}
.cp-privacy a { color: var(--cp-navy); text-decoration: underline; }

/* Performance (2026-10-04): phones get the 800 px hero photo (44 KB) instead of the 1600 px one (146 KB) */
@media (max-width: 767px) {
    .elementor-906 .cp-hero { background-image: url("https://casasprotx.com/wp-content/uploads/2026/10/casaspro-hero-roof-800.webp") !important; }
}

/* Self-hosted fonts (2026-10-04): only the weights the site uses, Latin subset, from child-theme/fonts/.
   Roboto is one variable file (400-700); Barlow Semi Condensed is static 400 / 600 / 700. */
@font-face { font-family: "Roboto"; font-style: normal; font-weight: 400 700; font-display: swap;
    src: url("fonts/roboto-latin.woff2") format("woff2");
    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; }
@font-face { font-family: "Barlow Semi Condensed"; font-style: normal; font-weight: 400; font-display: swap;
    src: url("fonts/barlow-semi-condensed-400-latin.woff2") format("woff2");
    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; }
@font-face { font-family: "Barlow Semi Condensed"; font-style: normal; font-weight: 600; font-display: swap;
    src: url("fonts/barlow-semi-condensed-600-latin.woff2") format("woff2");
    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; }
@font-face { font-family: "Barlow Semi Condensed"; font-style: normal; font-weight: 700; font-display: swap;
    src: url("fonts/barlow-semi-condensed-700-latin.woff2") format("woff2");
    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; }
/* Roboto italic (only the maintenance blog uses <em>); loaded on demand, so other pages never fetch it */
@font-face { font-family: "Roboto"; font-style: italic; font-weight: 400 700; font-display: swap;
    src: url("fonts/roboto-italic-latin.woff2") format("woff2");
    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; }
