/*
 * GCS Section Styles — gcs.withavoicelikethis.com
 * Controls: global links, buttons, bookplate gradient, Hunter Green section
 * overrides, image oval frames, testimonials, accessibility, Ninja Forms,
 * Events Calendar brand compliance, mobile nav overlay.
 * Per Brand Guidelines v3.6, WCAG 2.1, Web Standards 2026, Build It Right.
 * See CHANGELOG.md for full version history.
 */

/* ============================================================
   GLOBAL LINK STYLES — Light Background
   Weight: 400 — underline provides WCAG 1.4.1 distinction
   IM Fell DW Pica delicate strokes: synthetic bold incorrect
   :not(.wp-block-button__link) on a:link and a:visited:
   WCAG 1.4.1 underline applies to inline text links only.
   Buttons are already distinguishable by background, border,
   and padding — applying underline to buttons creates
   contradictory affordance signals and defeats the button's
   visual identity. Per WCAG 1.4.1, Web Standards 2026,
   UX standards, Victorian Design Standards, Build It Right.
   Per Brand Guidelines v3.6
   ============================================================ */
a:link:not(.wp-block-button__link) {
    color: var(--wp--preset--color--brand-alt);
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 400;
}
a:visited:not(.wp-block-button__link) {
    color: var(--wp--preset--color--base-accent);
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 400;
}
a:hover {
    color: var(--wp--preset--color--brand);
    text-decoration: none;
}
a:focus {
    color: var(--wp--preset--color--brand);
    outline: 3px solid var(--wp--preset--color--border-base);
    outline-offset: 4px;
    text-decoration: none;
}

/* ============================================================
   COVER BLOCK — Link color override
   Cover block hero uses a dark photo background. Global deep purple
   link color (#552277) produces 1.09:1 contrast: WCAG 1.4.3 FAIL.
   Warm Ivory (#F7F5F0) on dark photo bg = 11.13:1: WCAG AAA.
   Underline retained globally via a:link rule: WCAG 1.4.1 compliant.
   Pattern matches .has-brand-background-color scoped overrides.
   !important required: a:link pseudo-class specificity beats
   wp-elements :where() selector — FSE block-level override cannot
   win here. Per WCAG 1.4.3 AAA, WCAG 1.4.1, Brand Guidelines v3.6,
   Web Standards 2026, Build It Right.
   ============================================================ */
.wp-block-cover a:link:not(.wp-block-button__link),
.wp-block-cover a:visited:not(.wp-block-button__link) {
    color: var(--wp--preset--color--brand-accent) !important;
}

.wp-block-cover a:hover:not(.wp-block-button__link) {
    color: var(--wp--preset--color--border-base) !important;
}

.wp-block-cover a:focus:not(.wp-block-button__link) {
    color: var(--wp--preset--color--border-base) !important;
    outline: 3px solid var(--wp--preset--color--brand-accent);
    outline-offset: 4px;
}

/* ============================================================
   BUTTON BOOKPLATE TREATMENT — GLOBAL
   Full two-layer dimensional treatment matching the ivory-heirloom-logo-block
   in gcs-header.css exactly.
   Intent: worn but well cared for ivory bookplate — authentic, authoritative, cherished.
   Layer 1 (::before) — white radial highlight at 30% 30%:
   Matches logo block ::before. 0.4 opacity — same light source, same luminous
   upper-left quality on Warm Ivory buttons.
   On Hunter Green buttons: produces a natural green tint (~#5A8A60) — luminous
   without being discordant.
   Layer 2 (::after) — Rich Brown edge darkening at perimeter:
   Matches logo block ::after. transparent 0-70%, 0.15 Rich Brown at 100%.
   Gives buttons the same worn perimeter depth as the logo block — parchment
   in shadow at the edges.
   Infrastructure requirements confirmed via live DOM inspection March 2026:
   - position: relative — required for absolute pseudo-elements
   - overflow: hidden — constrains layers to border-radius boundary
   - isolation: isolate — prevents z-index bleed to surrounding content
   - z-index on pseudo-elements — ensures text renders above both layers
   - ::before and ::after confirmed unoccupied on all buttons
   - No existing CSS sets position or pseudo-elements on buttons
   Existing background-image gradient rule removed — pseudo-elements replace it
   entirely with the architecturally superior approach.
   Per Brand Guidelines v3.6, Web Standards 2026, WCAG, Build It Right,
   Victorian Design Standards.
   ============================================================ */
.wp-block-button__link,
.wp-element-button {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

/* Button text above both gradient layers */
.wp-block-button__link span,
.wp-element-button span {
    position: relative;
    z-index: 3;
}

/* Layer 1 — white radial highlight — matches logo block ::before */
.wp-block-button__link::before,
.wp-element-button::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at 30% 30%,
        rgba(255, 255, 255, 0.4) 0%,
        transparent 50%
    );
    border-radius: inherit;
    pointer-events: none;
    z-index: 1;
}

/* Layer 2 — Rich Brown edge darkening — matches logo block ::after */
.wp-block-button__link::after,
.wp-element-button::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at center,
        transparent 0%,
        transparent 70%,
        rgba(42, 24, 16, 0.15) 100%
    );
    border-radius: inherit;
    pointer-events: none;
    z-index: 2;
}

/* ============================================================
   BUTTON HOVER — GLOBAL
   Inversion pattern per Brand Guidelines v3.6: Hunter Green buttons
   invert to Warm Ivory bg / Hunter Green text on hover.
   Gradient removed — flat state communicates "pressed" — raised emboss
   recedes on activation, consistent with the logo block's dimensional
   bookplate metaphor.
   This rule applies to ALL buttons globally. The Hunter Green section's
   more specific hover rule (.has-brand-background-color .wp-block-button__link:hover)
   has higher specificity via the ancestor class and correctly overrides
   this for CTA section buttons without any conflict.
   !important justified: WordPress wp-elements inline rules set hover
   background-color and win by source order. We must use !important to
   override them.
   Per WCAG 1.4.3 (hover must not create invisible states), UX standards,
   Brand Guidelines v3.6, Build It Right.
   Future governance note: this rule assumes Hunter Green or Warm Ivory button
   backgrounds only. Any future button using a different background color
   requires its own scoped hover rule. Per Brand Guidelines v3.6.
   ============================================================ */
.wp-block-button__link:hover,
.wp-element-button:hover {
    background-color: var(--wp--preset--color--base) !important;
    color: var(--wp--preset--color--brand) !important;
}

/* Hide gradient layers on hover — bookplate emboss recedes on press.
   Pseudo-element opacity to 0 with transition. Per Brand Guidelines v3.6. */
.wp-block-button__link:hover::before,
.wp-element-button:hover::before,
.wp-block-button__link:hover::after,
.wp-element-button:hover::after {
    opacity: 0;
    transition: opacity 0.3s ease;
}

.wp-block-button__link:focus,
.wp-element-button:focus {
    outline: 3px solid var(--wp--preset--color--border-base) !important;
    outline-offset: 4px !important;
}

/* ============================================================
   HUNTER GREEN SECTION — Context-aware link and button overrides
   WCAG: Global hover (Hunter Green on Hunter Green) = 1:1 = FAIL.
   SPECIFICITY NOTE: The block editor generates wp-elements scoped rules
   inside inline <style> tags that load AFTER our external stylesheet.
   Even though they use :where() (zero specificity), they win by source
   order. We must use !important on color to override them.
   This is justified — we are correcting a WCAG failure caused by the
   editor's own output, not fighting an intentional editor decision.
   Per WCAG 1.4.3, 1.4.1.
   ============================================================ */
.has-brand-background-color a:link:not(.wp-block-button__link),
.has-brand-background-color a:visited:not(.wp-block-button__link) {
    color: var(--wp--preset--color--brand-accent) !important;
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 400;
}
.has-brand-background-color a:hover:not(.wp-block-button__link) {
    color: var(--wp--preset--color--border-base) !important;
    text-decoration: underline;
    text-underline-offset: 3px;
}
.has-brand-background-color a:focus:not(.wp-block-button__link) {
    color: var(--wp--preset--color--border-base) !important;
    outline: 3px solid var(--wp--preset--color--brand-accent);
    outline-offset: 4px;
}

/* Email link underline — Cloudflare email protection strips text-decoration.
   !important justified: overriding third-party plugin output. Per WCAG 1.4.1. */
.has-brand-background-color a[href*="cdn-cgi"],
.has-brand-background-color a[href^="mailto"] {
    text-decoration: underline !important;
    text-underline-offset: 3px !important;
}

/* Hunter Green section button hover — consistent with site-wide hover language v1.0.19.
   Aged Parchment bg / Deep Purple text / goes flat — matches all outline buttons.
   Warm Ivory to Aged Parchment: perceptible tonal shift.
   Deep Purple (#552277) on Aged Parchment (#E8E3D8) = 7.2:1 AAA.
   Hue shift green to violet (~120 degrees colour wheel) = unambiguous affordance.
   No transform (WCAG 2.3.3), no box-shadow (flat on hover per bookplate metaphor).
   Per WCAG 1.4.3 AAA, WCAG 2.3.3, Brand Guidelines v3.6, Build It Right. */
.has-brand-background-color .wp-block-button__link:hover,
.has-brand-background-color .wp-element-button:hover {
    background-color: var(--wp--preset--color--contrast-accent) !important;
    color: var(--wp--preset--color--brand-alt) !important;
    transform: none !important;
    box-shadow: none !important;
}

.has-brand-background-color .wp-block-button__link:focus,
.has-brand-background-color .wp-element-button:focus {
    outline: 3px solid var(--wp--preset--color--brand-accent) !important;
    outline-offset: 4px !important;
}

/* Footer stripe fix — footer template part has has-base-background-color set directly
   on the group block, creating a visible ~27px Warm Ivory band.
   Scoped tightly to .site-footer only — prevents accidental header impact.
   Confirmed: stripe parent is footer.site-footer.wp-block-template-part.
   Per live DOM inspection March 2026. */
.site-footer .wp-block-group.has-base-background-color.has-background {
    background-color: transparent !important;
}

/* Section margin-top bands — WordPress core applies margin-top: 32px to all alignfull
   blocks by default via block gap spacing. This creates visible ~27px Warm Ivory bands
   between full-width sections.
   Confirmed via live DOM: margin-top: 32px on every .wp-block-group.alignfull inside
   .wp-block-post-content. The padding-top: 60px on each section is intentional interior
   spacing — this rule does NOT touch padding.
   Per live DOM inspection March 2026. */
.wp-block-post-content .wp-block-group.alignfull {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

/* ============================================================
   VICTORIAN GOLD OVAL IMAGE FRAME
   Theme-level image treatment — CSS is correct tool.
   Applied to: standard WordPress image blocks, testimonial images,
   and The Events Calendar plugin images (confirmed via live DOM
   inspection March 2026 — exact class names verified).
   Per Brand Guidelines v3.6
   ============================================================ */
.entry-content .wp-block-image img,
.wp-block-post-content .wp-block-image img,
.wpmtst-testimonial img,
.wp-block-media-text .wp-block-media-text__media img,
.wp-block-gallery .wp-block-image img,
article .wp-post-image,
.post-thumbnail img,
/* The Events Calendar — events archive (confirmed class name via live DOM) */
.tribe-events-calendar-latest-past__event-featured-image,
/* The Events Calendar — single event featured image */
.tribe-events-event-image img,
/* The Events Calendar — post type wrapper safety net */
.type-tribe_events img {
    border: 3px solid var(--wp--preset--color--border-base);
    border-radius: 50% / 40%;
    padding: 8px;
    background-color: var(--wp--preset--color--base);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

/* Exclusions — higher specificity prevents oval on non-content images */
.site-logo img,
.custom-logo,
.wp-block-site-logo img,
.ivory-heirloom-logo-block img,
.ivory-heirloom-logo-block .wp-block-site-logo img,
.wp-block-cover img,
.wp-block-cover__image-background,
nav img,
.wp-block-navigation img,
.ivory-heirloom-nav-block img,
button img,
.wp-block-button img,
img.no-oval,
.no-oval img,
/* Events Calendar loading spinner — exclude from oval */
.tribe-events-spinner-medium {
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
    background-color: transparent !important;
}

/* ============================================================
   VICTORIAN RECTANGULAR BORDER — Non-portrait photography
   For venue, architectural, landscape, and object photography.
   Per Victorian Design Standards: rectangular frame with ruled border
   is the period-correct treatment for non-portrait subjects.
   Corner ornaments use Rumble Brave Ornaments glyph 9 (U+0039).
   Mirror transforms replicate Victorian engraving convention — one block
   printed in four orientations via reflection, NOT rotation.
   Rotation preserves chirality (curl direction) which looks mechanical.
   Mirrors produce natural growth from each corner, as period engravers intended.
   Transform key:
   TL — scale(1, 1)   — base orientation
   TR — scale(-1, 1)  — horizontal flip
   BL — scale(1, -1)  — vertical flip
   BR — scale(-1, -1) — both flips
   Usage: wrap image in <div class="img-victorian-rect"> or add class to
   the wp-block-image container.
   Per Brand Guidelines v3.6 — March 2026.
   ============================================================ */
.img-victorian-rect {
    position: relative;
    display: inline-block;
    border: 2px solid var(--wp--preset--color--border-base);
    padding: 6px;
    background-color: var(--wp--preset--color--base);
    border-radius: 0;
}

.img-victorian-rect img {
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
    background-color: transparent !important;
    display: block;
    width: 100%;
    height: auto;
}

/* Corner ornament shared styles */
.img-victorian-rect .corner-ornament {
    font-family: 'Rumble Brave Ornaments', serif;
    color: var(--wp--preset--color--border-base);
    position: absolute;
    font-size: 1.25em;
    line-height: 1;
    width: 1.25em;
    height: 1.25em;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1;
}

/* Top-left — base orientation */
.img-victorian-rect .corner-tl {
    top: -0.5em;
    left: -0.5em;
    transform: scale(1, 1);
}

/* Top-right — horizontal flip */
.img-victorian-rect .corner-tr {
    top: -0.5em;
    right: -0.5em;
    transform: scale(-1, 1);
}

/* Bottom-left — vertical flip */
.img-victorian-rect .corner-bl {
    bottom: -0.5em;
    left: -0.5em;
    transform: scale(1, -1);
}

/* Bottom-right — both flips */
.img-victorian-rect .corner-br {
    bottom: -0.5em;
    right: -0.5em;
    transform: scale(-1, -1);
}

/* ============================================================
   TESTIMONIALS — Strong Testimonials plugin CSS fallback
   Template: Unstyled — full CSS control, no plugin styles compete
   DOM structure confirmed via live site inspection March 2026:
   h3.wpmtst-testimonial-heading > a (Title field — linked name)
   div.wpmtst-testimonial-content (testimonial quote)
   .wpmtst-testimonial-field.testimonial-name (Name custom field)
   .wpmtst-testimonial-field.testimonial-company (Company custom field)
   ============================================================ */

/* Title heading — h3 containing linked name
   Sorts Mill Goudy, centered, Deep Purple
   Per Powder v1.8.20 */
.wpmtst-testimonial h3.wpmtst-testimonial-heading,
.wpmtst-testimonial h2.wpmtst-testimonial-heading {
    font-family: var(--wp--preset--font-family--sorts-mill-goudy), Georgia, serif;
    text-align: center;
    color: var(--wp--preset--color--brand-alt);
    font-weight: 600;
    font-size: 22px;
    margin-bottom: 0.5rem;
}

/* Title link — inherits Sorts Mill Goudy from h3 parent
   No font-family override here — inheritance is intentional.
   Underline for WCAG 1.4.1 link distinction. */
.wpmtst-testimonial h3.wpmtst-testimonial-heading a,
.wpmtst-testimonial h2.wpmtst-testimonial-heading a {
    color: var(--wp--preset--color--brand-alt);
    text-decoration: underline;
    text-underline-offset: 3px;
    display: block;
    text-align: center;
}

/* Testimonial quote/content — IM Fell DW Pica italic
   Per Powder v1.8.20 */
.wpmtst-testimonial-content,
.testimonial-content {
    font-family: var(--wp--preset--font-family--im-fell-dw-pica), Georgia, serif;
    font-size: 20px;
    line-height: 1.7;
    color: var(--wp--preset--color--contrast);
    font-style: italic;
    margin-bottom: 1rem;
    text-align: center;
}

/* Name custom field — Meddon script signature
   Renders BELOW the testimonial content as attribution
   Per Powder v1.8.20 and Brand Guidelines v3.5 */
.wpmtst-testimonial-field.testimonial-name,
.wpmtst-client .testimonial-name {
    font-family: 'Meddon', cursive;
    font-size: 28px;
    color: var(--wp--preset--color--brand-alt);
    font-weight: 400;
    text-align: center;
    display: block;
    margin-top: 1rem;
    line-height: 1.4;
}

/* Company/position — IM Fell DW Pica italic, Saddle Brown
   Per Powder v1.8.20 */
.wpmtst-testimonial-field.testimonial-company,
.wpmtst-client .testimonial-company {
    font-family: var(--wp--preset--font-family--im-fell-dw-pica), Georgia, serif;
    font-size: 16px;
    color: var(--wp--preset--color--base-accent);
    font-style: italic;
    text-align: center;
}

/* ============================================================
   ACCESSIBILITY
   ============================================================ */
.skip-link.screen-reader-text {
    background-color: var(--wp--preset--color--base);
    color: var(--wp--preset--color--brand);
    font-family: 'IM Fell DW Pica', Georgia, serif;
    font-size: 16px;
    font-weight: 400;
    padding: 1rem 1.5rem;
    position: absolute;
    top: -100%;
    left: 0;
    z-index: 100000;
    text-decoration: none;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
    border: 3px solid var(--wp--preset--color--border-base);
    border-radius: 4px;
}

.skip-link.screen-reader-text:focus {
    top: 0;
    outline: 3px solid var(--wp--preset--color--border-base);
}

*:focus-visible {
    outline: 3px solid var(--wp--preset--color--border-base);
    outline-offset: 4px;
}

@media (prefers-contrast: high) {
    body {
        background: #FFFFFF;
        color: #000000;
    }
    a {
        color: #0000EE;
        text-decoration: underline;
    }
}

@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }
}

/* ============================================================
   NINJA FORMS — Victorian Styling
   Ported from Powder child theme v1.8.20
   Updated to use CSS custom property tokens (var(--wp--preset--color--))
   instead of hardcoded hex values — FSE compliant.
   Popup Maker theme must be set to "Content Only" (theme ID 330) for these
   styles to render correctly. Default Theme wraps the form in its own
   container styling which conflicts with this CSS.
   Per Brand Guidelines v3.5
   ============================================================ */

/* Form Container — Victorian Gold border, Warm Ivory background */
.nf-form-cont {
    font-family: var(--wp--preset--font-family--im-fell-dw-pica), Georgia, serif;
    background-color: var(--wp--preset--color--base);
    border: 3px solid var(--wp--preset--color--border-base);
    padding: 2rem;
    border-radius: 6px;
    max-width: 680px;
    margin: 0 auto;
}

/* Form Title — .nf-form-title is a span rendered directly, no h3 child.
   Confirmed via live DOM inspection March 2026. */
.nf-form-title {
    font-family: var(--wp--preset--font-family--sorts-mill-goudy), Georgia, serif;
    font-size: 28px;
    color: var(--wp--preset--color--brand-alt);
    margin-bottom: 1.5rem;
    text-align: center;
    display: block;
}

/* Field Labels */
.nf-field-label label {
    font-family: var(--wp--preset--font-family--im-fell-dw-pica), Georgia, serif;
    font-weight: 600;
    color: var(--wp--preset--color--contrast);
    font-size: 16px;
    margin-bottom: 8px;
    display: block;
}

/* Required field indicator */
.nf-field-label .req {
    color: var(--wp--preset--color--brand);
}

/* Input Fields — text, email, tel, date, number, textarea, select */
.nf-field input[type="text"],
.nf-field input[type="email"],
.nf-field input[type="tel"],
.nf-field input[type="date"],
.nf-field input[type="number"],
.nf-field textarea,
.nf-field select {
    font-family: var(--wp--preset--font-family--im-fell-dw-pica), Georgia, serif;
    font-size: 16px;
    color: var(--wp--preset--color--contrast);
    background-color: var(--wp--preset--color--base);
    border: 2px solid var(--wp--preset--color--border-base);
    padding: 12px 16px;
    min-height: 48px;
    width: 100%;
    border-radius: 4px;
    transition: all 0.3s ease;
}

/* Focus state — Royal Purple outline, WCAG compliant */
.nf-field input:focus,
.nf-field textarea:focus,
.nf-field select:focus {
    outline: 3px solid var(--wp--preset--color--brand-alt);
    outline-offset: 2px;
    border-color: var(--wp--preset--color--brand-alt);
}

/* Submit Button — Hunter Green, Warm Ivory text, Victorian Gold border
   Full Victorian button treatment per Brand Guidelines v3.5
   Selectors confirmed against live DOM March 2026. */
.nf-form-cont .submit-container input[type="button"],
.nf-form-cont .submit-container input[type="submit"],
.nf-form-cont .nf-field input[type="button"] {
    font-family: var(--wp--preset--font-family--im-fell-dw-pica), Georgia, serif;
    font-weight: 600;
    font-size: 18px;
    background-color: var(--wp--preset--color--brand);
    color: var(--wp--preset--color--brand-accent);
    border: 2px solid var(--wp--preset--color--border-base);
    padding: 14px 32px;
    min-height: 48px;
    min-width: 120px;
    border-radius: 6px;
    cursor: pointer;
    transition: all 0.3s ease;
    box-shadow: 0 4px 12px rgba(53, 94, 59, 0.25);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* Submit Button Hover */
.nf-form-cont .submit-container input[type="button"]:hover,
.nf-form-cont .submit-container input[type="submit"]:hover,
.nf-form-cont .nf-field input[type="button"]:hover {
    background-color: var(--wp--preset--color--brand-alt);
    border-color: var(--wp--preset--color--brand-alt);
    transform: translateY(-2px);
    box-shadow: 0 6px 20px rgba(53, 94, 59, 0.35);
}

/* Submit Button Focus */
.nf-form-cont .submit-container input[type="button"]:focus,
.nf-form-cont .submit-container input[type="submit"]:focus,
.nf-form-cont .nf-field input[type="button"]:focus {
    outline: 3px solid var(--wp--preset--color--border-base);
    outline-offset: 4px;
}

/* Error Messages */
.nf-error-msg,
.nf-error .nf-field-element::after {
    color: #d32f2f;
    font-weight: 600;
    font-size: 14px;
    font-family: var(--wp--preset--font-family--im-fell-dw-pica), Georgia, serif;
}

/* Success Messages */
.nf-pass .nf-field-element::after {
    color: var(--wp--preset--color--brand);
    font-weight: 600;
}

/* Field spacing */
.nf-field-container {
    margin-bottom: 1.25rem;
}

/* ============================================================
   THE EVENTS CALENDAR — BRAND COMPLIANCE
   All selectors confirmed via live DOM inspection March 2026.
   Stylesheet load order confirmed: tribe skeleton pos 9,
   tribe common/views-full pos 27-45 — AFTER theme pos 19.
   !important required only where plugin files load after theme.
   Per Brand Guidelines v3.6, Web Standards 2026, WCAG,
   Victorian Design Standards, Build It Right.
   ============================================================ */

/* ------------------------------------------------------------
   GROUP A — Plugin near-black rgb(20,24,39) → Rich Brown
   Affects: month header, event titles, view selector buttons,
   search input, date numbers, venue text, list date block.
   Confirmed across month view, list view, single event page.
   --wp--preset--color--contrast = #2A1810 (Rich Brown) confirmed.
   !important required: common-full.css / views-full.css pos 27-45
   load AFTER theme pos 19.
   ------------------------------------------------------------ */
.tribe-events-c-top-bar__datepicker-button,
.tribe-events-c-top-bar__datepicker-time,
.tribe-events-c-top-bar__datepicker-mobile,
.tribe-events-c-top-bar__datepicker-desktop,
.tribe-events-c-view-selector__button-text,
.tribe-events-c-view-selector__list-item-text,
.tribe-common-form-control-text__input,
.tribe-events-calendar-list__month-separator-text,
.tribe-events-calendar-list__event-date-tag-daynum,
.tribe-events-calendar-list__event-date-tag-weekday,
.tribe-events-calendar-list__event-venue,
.tribe-events-calendar-month__grid-cell-date-link,
.tribe-events-calendar-month__calendar-event-title a {
    color: var(--wp--preset--color--contrast) !important;
}

/* ------------------------------------------------------------
   GROUP B — "This event has passed" notice
   Plugin default: light blue bg, blue text — off-brand.
   Replace with Aged Parchment bg, Rich Brown text, Victorian Gold border.
   Aged Parchment on Rich Brown = 9.4:1 AAA.
   Per Brand Guidelines v3.6, Victorian Design, WCAG 1.4.3.
   ------------------------------------------------------------ */
.tribe-events-notices {
    background-color: var(--wp--preset--color--contrast-accent) !important;
    color: var(--wp--preset--color--contrast) !important;
    border-color: var(--wp--preset--color--border-base) !important;
}

/* ------------------------------------------------------------
   GROUP C — Single event page content width
   .tribe-events-single max-width: none set in views-skeleton.css
   pos 30 — loads AFTER theme pos 19. !important required on
   max-width only. margin/padding longhand wins over shorthand
   without !important.
   var(--wp--style--global--content-size) = 800px (theme.json
   contentSize) — token-based, auto-follows theme.json changes.
   Per WordPress FSE standards, WCAG 1.4.8, Victorian Design,
   Brand Guidelines v3.6, Build It Right.
   ------------------------------------------------------------ */

/* Single event content column — padding v1.0.21.
   Confirmed DOM structure: #tribe-events-content carries
   .tribe-events-single as a class — it IS the container, not a child.
   Plugin sets padding: 0px via #tribe-events-content (ID selector).
   body.single-tribe_events #tribe-events-content adds the body class
   to our ID selector — higher natural specificity than plugin's plain
   ID rule, wins without !important on padding.
   max-width retains !important: plugin skeleton CSS explicitly overrides.
   Per WCAG 1.4.8, Victorian Design Standards, Web Standards 2026,
   Build It Right — natural specificity over !important. */
body.single-tribe_events #tribe-events-content {
    max-width: var(--wp--style--global--content-size) !important;
    margin-left: auto;
    margin-right: auto;
    padding-left: 1.5rem;
    padding-right: 1.5rem;
}

/* ------------------------------------------------------------
   GROUP D — Events Calendar button brand compliance
   All pseudo-element availability, load order, contrast ratios,
   and touch targets confirmed via live DOM inspection March 2026.
   Subscribe / Add to Calendar (.tribe-common-c-btn-border):
   - White → Warm Ivory bg
   - fontWeight 700 → 400 per Brand Guidelines v3.6
   - Victorian Gold border retained (3.2:1 non-text ✅)
   - position:relative already set — only overflow/isolation needed
   - Bookplate gradient pseudo-elements added
   Find Events (.tribe-common-c-btn):
   - Victorian Gold bg / White text = 2.3:1 WCAG FAIL → fix
   - Hunter Green bg / Warm Ivory text = 10.8:1 AAA ✅
   - Victorian Gold border added for brand consistency
   - fontWeight 700 → 400
   - position:static → relative required for pseudo-elements
   !important on colors: common-full.css pos 44 loads after theme pos 19.
   !important NOT needed on infrastructure rules.
   ------------------------------------------------------------ */

/* Infrastructure — Subscribe/Add to Calendar */
.tribe-common-c-btn-border,
.tribe-events-c-subscribe-dropdown__button {
    overflow: hidden;
    isolation: isolate;
}

/* Infrastructure — Find Events */
.tribe-common-c-btn {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

/* Subscribe / Add to Calendar colors + compliance fixes.
   Font size 14px → 1rem (16px) — Brand Guidelines / Web Standards min.
   Min-height 41px → 44px — WCAG 2.5.5 touch target.
   Border-width 1px → 2px — Web Standards min for bordered buttons.
   Padding ensures adequate internal spacing at 44px height.
   All confirmed via live DOM March 2026. */
.tribe-common-c-btn-border,
.tribe-events-c-subscribe-dropdown__button {
    background-color: var(--wp--preset--color--base) !important;
    font-weight: 400 !important;
    font-size: 1rem !important;
    min-height: 44px !important;
    border-width: 2px !important;
    border-radius: 6px !important;
    padding: 0.75rem 1.25rem !important;
}

/* Find Events — WCAG fix + brand compliance */
.tribe-common-c-btn {
    background-color: var(--wp--preset--color--brand) !important;
    color: var(--wp--preset--color--brand-accent) !important;
    font-weight: 400 !important;
    border: 2px solid var(--wp--preset--color--border-base) !important;
    border-radius: 6px !important;
}

/* Bookplate gradient — ::before white highlight.
   Matches logo block ::before and .wp-block-button__link.
   No !important — not set by plugin CSS. */
.tribe-common-c-btn-border::before,
.tribe-events-c-subscribe-dropdown__button::before,
.tribe-common-c-btn::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at 30% 30%,
        rgba(255, 255, 255, 0.4) 0%,
        transparent 50%
    );
    border-radius: inherit;
    pointer-events: none;
    z-index: 1;
}

/* Bookplate gradient — ::after Rich Brown edge darkening.
   Matches logo block ::after and .wp-block-button__link. */
.tribe-common-c-btn-border::after,
.tribe-events-c-subscribe-dropdown__button::after,
.tribe-common-c-btn::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at center,
        transparent 0%,
        transparent 70%,
        rgba(42, 24, 16, 0.15) 100%
    );
    border-radius: inherit;
    pointer-events: none;
    z-index: 2;
}

/* Hover — gradient layers recede, inversion pattern.
   Matches global .wp-block-button__link hover rule. */
.tribe-common-c-btn-border:hover,
.tribe-events-c-subscribe-dropdown__button:hover,
.tribe-common-c-btn:hover {
    background-color: var(--wp--preset--color--contrast-accent) !important;
    color: var(--wp--preset--color--brand-alt) !important;
    border-color: var(--wp--preset--color--border-contrast) !important;
}

.tribe-common-c-btn-border:hover::before,
.tribe-events-c-subscribe-dropdown__button:hover::before,
.tribe-common-c-btn:hover::before,
.tribe-common-c-btn-border:hover::after,
.tribe-events-c-subscribe-dropdown__button:hover::after,
.tribe-common-c-btn:hover::after {
    opacity: 0;
    transition: opacity 0.3s ease;
}

/* ============================================================
   MOBILE NAV OVERLAY — Victorian Treatment
   Confirmed rgba(0,0,0,0) transparent via live DOM inspection.
   Warm Ivory background with Victorian Gold border provides brand
   containment consistent with parchment aesthetic.
   !important required: WordPress block library sets background on
   responsive container via source order.
   Per Victorian Design Standards, UX, Brand Guidelines v3.6.
   ============================================================ */
.wp-block-navigation__responsive-container.is-menu-open {
    background-color: var(--wp--preset--color--base) !important;
    border-right: 2px solid var(--wp--preset--color--border-base);
}

/* ============================================================
   v1.0.16 — EVENTS CALENDAR ADDITIONAL BRAND COMPLIANCE
   All selectors confirmed via live DOM inspection March 2026.
   Load order confirmed: tribe common-full.css / views-full.css
   pos 44-45 load AFTER theme pos 19.
   !important required on color overrides.
   Per Brand Guidelines v3.6, WCAG, Build It Right.
   ============================================================ */

/* Fix 1 — Subscribe / Add to Calendar: Victorian Gold text violation.
   Brand Guidelines: NEVER use Victorian Gold for readable text on light backgrounds.
   Fix: Hunter Green text on Warm Ivory bg. Hunter Green on Warm Ivory = 10.8:1 AAA. */
.tribe-common-c-btn-border,
.tribe-events-c-subscribe-dropdown__button {
    color: var(--wp--preset--color--brand) !important;
}

/* Fix 2 — Event website link button (.tribe-block__event-website a)
   Plugin renders as classless <a> with Victorian Gold bg / White text.
   Victorian Gold bg = not an approved button bg per Brand Guidelines.
   White on Victorian Gold = 2.3:1 — WCAG 1.4.3 FAIL.
   Fix: full brand button treatment. Warm Ivory on Hunter Green = 10.8:1 AAA.
   position/overflow/isolation needed — confirmed position:static on live DOM.
   !important on infrastructure: plugin sets conflicting values. */
.tribe-block__event-website a {
    background-color: var(--wp--preset--color--brand) !important;
    color: var(--wp--preset--color--brand-accent) !important;
    font-weight: 400 !important;
    border: 2px solid var(--wp--preset--color--border-base) !important;
    border-radius: 6px !important;
    position: relative !important;
    overflow: hidden !important;
    isolation: isolate !important;
    display: inline-block;
    padding: 0.6em 1.2em;
    text-decoration: none !important;
}

/* Bookplate gradient — ::before white highlight */
.tribe-block__event-website a::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at 30% 30%,
        rgba(255, 255, 255, 0.4) 0%,
        transparent 50%
    );
    border-radius: inherit;
    pointer-events: none;
    z-index: 1;
}

/* Bookplate gradient — ::after Rich Brown edge darkening */
.tribe-block__event-website a::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at center,
        transparent 0%,
        transparent 70%,
        rgba(42, 24, 16, 0.15) 100%
    );
    border-radius: inherit;
    pointer-events: none;
    z-index: 2;
}

/* Hover — inversion pattern */
.tribe-block__event-website a:hover {
    background-color: var(--wp--preset--color--base) !important;
    color: var(--wp--preset--color--brand) !important;
}

.tribe-block__event-website a:hover::before,
.tribe-block__event-website a:hover::after {
    opacity: 0;
    transition: opacity 0.3s ease;
}

/* Fix 3 — Venue name H3: 14px → 16px (Brand Guidelines minimum).
   Plugin renders venue name as classless H3 at plugin-overridden 14px.
   Color Deep Purple is correct — retained.
   !important: views-full.css pos 45 loads after theme pos 19. */
.tribe-block__venue__name h3 {
    font-size: 1rem !important;
    color: var(--wp--preset--color--brand-alt) !important;
}

/* Fix 4 — Venue address/phone: near-black → Rich Brown, 14px → 16px.
   ADDRESS.tribe-block__venue__address missed from v1.0.15 Group A.
   !important: plugin CSS loads after theme. */
.tribe-block__venue__address,
.tribe-block__venue__phone,
.tribe-block__venue__tel {
    color: var(--wp--preset--color--contrast) !important;
    font-size: 1rem !important;
}

/* ============================================================
   TESTIMONIAL NAVIGATION — v1.0.17 CORRECTED SELECTORS
   Strong Testimonials JS injects nav as A.wpmslider-prev and
   A.wpmslider-next — confirmed via live DOM inspection March 2026.
   Previous selectors (.wpmtst-prev, .cycle-prev etc.) were wrong
   and never matched anything. Corrected here.
   Default: Rich Brown (12.4:1 AAA — WCAG AA/AAA compliant at 16px).
   Hover: Victorian Gold (decorative accent per Brand Guidelines v3.6).
   44px touch target per WCAG 2.5.5.
   Per Brand Guidelines v3.6, WCAG 2.5.5, WCAG 1.4.3, Build It Right.
   ============================================================ */
.wpmslider-prev,
.wpmslider-next {
    color: var(--wp--preset--color--contrast) !important;
    font-family: var(--wp--preset--font-family--im-fell-dw-pica), Georgia, serif !important;
    font-size: 1rem !important;
    font-weight: 400 !important;
    min-width: 44px;
    min-height: 44px;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    text-decoration: none !important;
    transition: color 0.3s ease;
}

.wpmslider-prev:hover,
.wpmslider-next:hover {
    color: var(--wp--preset--color--border-base) !important;
    text-decoration: none !important;
}

/* ============================================================
   v1.0.16 ADDITIONS
   ============================================================ */

/* ------------------------------------------------------------
   EVENTS CALENDAR — Fix 1
   Subscribe / Add to Calendar: Victorian Gold text violation.
   Brand Guidelines: NEVER use Victorian Gold for readable text
   on light backgrounds. Change to Hunter Green text.
   Hunter Green on Warm Ivory = 10.8:1 AAA ✅
   !important required: common-full.css pos 44 > theme pos 19.
   ------------------------------------------------------------ */
.tribe-common-c-btn-border,
.tribe-events-c-subscribe-dropdown__button {
    color: var(--wp--preset--color--brand) !important;
}

/* ------------------------------------------------------------
   EVENTS CALENDAR — Fix 2
   Event website link button (.tribe-block__event-website a)
   Classless <a> tag — Victorian Gold bg / White text.
   Victorian Gold as button bg: not approved per Brand Guidelines.
   White on Victorian Gold = 2.3:1 — WCAG 1.4.3 FAIL.
   Fix: Hunter Green bg, Warm Ivory text, Victorian Gold border,
   bookplate gradient, hover inversion.
   Warm Ivory text on Hunter Green = 10.8:1 AAA ✅
   position:relative !important — position:static confirmed in DOM.
   !important required on color/bg: plugin files pos 44-45 > pos 19.
   ------------------------------------------------------------ */
.tribe-block__event-website a {
    background-color: var(--wp--preset--color--brand) !important;
    color: var(--wp--preset--color--brand-accent) !important;
    font-weight: 400 !important;
    border: 2px solid var(--wp--preset--color--border-base) !important;
    border-radius: 6px !important;
    position: relative !important;
    overflow: hidden !important;
    isolation: isolate !important;
    display: inline-block;
    padding: 0.6em 1.2em;
    text-decoration: none !important;
}

.tribe-block__event-website a::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at 30% 30%,
        rgba(255, 255, 255, 0.4) 0%,
        transparent 50%
    );
    border-radius: inherit;
    pointer-events: none;
    z-index: 1;
}

.tribe-block__event-website a::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse at center,
        transparent 0%,
        transparent 70%,
        rgba(42, 24, 16, 0.15) 100%
    );
    border-radius: inherit;
    pointer-events: none;
    z-index: 2;
}

.tribe-block__event-website a:hover {
    background-color: var(--wp--preset--color--base) !important;
    color: var(--wp--preset--color--brand) !important;
}

.tribe-block__event-website a:hover::before,
.tribe-block__event-website a:hover::after {
    opacity: 0;
    transition: opacity 0.3s ease;
}

/* ------------------------------------------------------------
   EVENTS CALENDAR — Fix 3
   Venue name H3: plugin renders as classless H3 at 14px.
   Brand Guidelines minimum: 16px. Deep Purple color correct
   per Brand Guidelines.
   !important required: views-full.css pos 45 > theme pos 19.
   ------------------------------------------------------------ */
.tribe-block__venue__name h3 {
    font-size: 1rem !important;
    color: var(--wp--preset--color--brand-alt) !important;
}

/* ------------------------------------------------------------
   EVENTS CALENDAR — Fix 4
   Venue address/phone: near-black rgb(20,24,39) missed from
   v1.0.15 Group A. Font size 14px below Brand Guidelines 16px.
   !important required: views-full.css pos 45 > theme pos 19.
   ------------------------------------------------------------ */
.tribe-block__venue__address,
.tribe-block__venue__phone,
.tribe-block__venue__tel {
    color: var(--wp--preset--color--contrast) !important;
    font-size: 1rem !important;
}

/* ============================================================
   v1.0.17 — EVENTS CALENDAR & LIST VIEW FIXES
   All selectors confirmed via live DOM inspection March 2026.
   ============================================================ */

/* Fix 1 — Subscribe/Add to Calendar border: explicit Victorian Gold.
   The computed border was resolving to rgb(51,74,255) blue despite
   --tec-color-accent-primary = #b8860b being set correctly in TEC
   Customizer inline style block. Root cause: browser default color
   bleeding through on the DIV element — unexplained but consistent.
   Explicit !important border-color override forces Victorian Gold.
   Victorian Gold on Warm Ivory bg = 3.2:1 — WCAG 1.4.11 non-text ✅
   !important required: unexplained browser bleed cannot be won by
   specificity alone. Per Brand Guidelines v3.6, WCAG 1.4.11. */
.tribe-common-c-btn-border,
.tribe-events-c-subscribe-dropdown__button {
    border-color: var(--wp--preset--color--border-base) !important;
}

/* Fix 2B — Datepicker active/selected month: Victorian Gold bg violation.
   Plugin sets bg: var(--tec-color-accent-primary) = #b8860b Victorian Gold
   on .day.active via views-full.css.
   Victorian Gold as interactive bg = Brand Guidelines violation
   (NEVER for backgrounds with readable text).
   Fix: Hunter Green bg / Warm Ivory text = 10.8:1 AAA ✅
   !important required: views-full.css pos 45 loads after theme pos 18.
   Per Brand Guidelines v3.6, WCAG 1.4.3 AAA, Build It Right. */
.tribe-events .datepicker .month.active,
.tribe-events .datepicker .month.active:hover,
.tribe-events .datepicker .month.focused.active {
    background: var(--wp--preset--color--brand) !important;
    color: var(--wp--preset--color--brand-accent) !important;
}

/* Fix 3 — List view oval frame: Victorian Gold border with !important.
   img.tribe-events-calendar-list__event-featured-image carries the class
   directly on the IMG tag. borderRadius 50%/40% applies but border is
   stripped to 0px none by a later-loading plugin file. !important required.
   Scoped to wrapper parent for defensive specificity per Build It Right.
   Victorian Gold on Warm Ivory = 3.2:1 — WCAG 1.4.11 non-text ✅
   Per Brand Guidelines v3.6, Victorian Design Standards, Build It Right. */
.tribe-events-calendar-list__event-featured-image-wrapper img.tribe-events-calendar-list__event-featured-image {
    border: 3px solid var(--wp--preset--color--border-base) !important;
    padding: 8px !important;
    background-color: var(--wp--preset--color--base) !important;
}

/* ============================================================
   v1.0.19 ADDITIONS
   ============================================================ */

/* Fix: Datepicker current month tile — Victorian Gold text violation.
   .month.current = today's actual calendar month in the datepicker.
   Plugin sets color: var(--tec-color-accent-primary) = #b8860b Victorian Gold.
   Victorian Gold NEVER for readable text on light backgrounds per Brand Guidelines.
   Fix: Rich Brown text — 12.4:1 AAA on Warm Ivory background.
   Background shift to Aged Parchment provides additional visual distinction
   from non-current months without filling the tile.
   !important required: views-full.css pos 45 loads after theme pos 18.
   Per Brand Guidelines v3.6, WCAG 1.4.3 AAA, Build It Right. */
.tribe-events .datepicker .month.current {
    color: var(--wp--preset--color--contrast) !important;
    background: var(--wp--preset--color--contrast-accent) !important;
}

.tribe-events .datepicker .month.current:hover {
    color: var(--wp--preset--color--brand-accent) !important;
    background: var(--wp--preset--color--brand) !important;
}

/* ============================================================
   v1.0.21 — LIST VIEW FONT SIZE COMPLIANCE
   Scoped to .tribe-events-calendar-list parent — list view only.
   Month/day view grid cells are NOT affected.
   Plugin renders datetime, description, venue at 12px on mobile.
   List view has no grid width constraint — 1rem safe at all viewports.
   !important required: plugin files load after theme pos 18.
   Per WCAG 1.4.4, Web Standards 2026 (16px minimum),
   Brand Guidelines v3.6, Build It Right.
   ============================================================ */
.tribe-events-calendar-list .tribe-events-calendar-list__event-datetime,
.tribe-events-calendar-list .tribe-events-calendar-list__event-description p,
.tribe-events-calendar-list .tribe-block__venue,
.tribe-events-calendar-list .tribe-events-calendar-list__event-venue {
    font-size: 1rem !important;
}
