/*
 * bosco-squadrato.css
 * Country House Il Bosco — visual identity squadrato + forme geometriche astratte.
 * Loaded LAST in wp_enqueue_scripts to override Bellevue parent + bosco-child base.
 */

/* =================================================================
   CSS VARIABLES — paleta + geometric tokens
   ================================================================= */
:root {
    /* Palette derivata dal logo (oro/ocra cappello + carbone scritta).
       Tutti i text/bg combinati garantiscono WCAG AA. */
    --bosco-primary:        #B8923F;  /* oro saturo (cappello logo) */
    --bosco-primary-d:      #8C6A2E;  /* oro scuro (hover) */
    --bosco-primary-light:  #D4B574;  /* oro chiaro (eyebrow su dark, AA su #1F1B16 = 7.3:1) */
    --bosco-accent:         #4A6741;  /* verde oliva (uliveto - non nel logo, supporto) */
    --bosco-accent-d:       #3A5234;
    --bosco-bg:             #FAF5EC;  /* crema chiara - bg sezioni */
    --bosco-bg-d:           #F2EADA;  /* crema media - sezioni alternate */
    --bosco-bg-white:       #FFFFFF;  /* bianco puro (come sfondo logo) */
    --bosco-text:           #2C2C2C;  /* carbone (scritta "il bosco country house") */
    --bosco-muted:          #6B6457;  /* grigio caldo - label/secondari (AA 6.2:1 su bg) */
    --bosco-border:         #E8DDD0;
    --bosco-logo-gold:      #B8923F;  /* alias di primary - oro logo */
    --bosco-white:          #FFFFFF;
    --bosco-dark:           #1F1B16;  /* nero brunastro - footer/hero overlay */

    /* Geometric tokens */
    --bosco-line-thin:  1px;
    --bosco-line-thick: 3px;
    --bosco-grid-gap:   32px;
    --bosco-section-pad-y: 72px;
    --bosco-section-pad-y-mobile: 48px;
    --bosco-shape-deco: rgba(184, 146, 63, 0.12);
    --bosco-shape-deco-2: rgba(74, 103, 65, 0.08);

    /* Typography */
    --bosco-font-h: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
    --bosco-font-b: 'Source Sans 3', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

/* =================================================================
   SQUADRATO RESET — global border-radius killer
   ================================================================= */
.btn, .btn-vg-primary, .btn-vg-outline, .vg-btn-solid, .vg-btn-outline,
.button, button:not(.menu-toggle):not(.hamburger-inner),
input[type="text"], input[type="email"], input[type="tel"],
input[type="number"], input[type="date"], input[type="search"],
input[type="url"], input[type="password"],
textarea, select,
.wpcf7-form-control,
.bosco-card, .bosco-button, .bosco-hero, .bosco-section,
.room-card, .vg-room-card, .vg-package-card, .vg-package-full-card,
.dintorno-card, .mphb-room-type-card,
.welcome-photo__img, .vg-gallery-filter button,
.header-cta, .vg-page-hero, .vg-section,
.directions-card, .social-btn,
.skip-to-content,
.menu-item a, .nav-menu a,
.bosco-img-wrap, .bosco-badge, .bosco-callout, .bosco-tag,
.menu-item-prenota-mobile > a,
#vg-sticky-cta {
    border-radius: 0 !important;
}

/* Pill UI minimal exception (tags, indicator dots) */
.bosco-pill {
    border-radius: 2px !important;
}

/* =================================================================
   REMOVE Villa Grazia wave/curvy decorations
   ================================================================= */
.vg-page-hero::after,
.vg-section-light + .vg-section-sand::before,
.vg-section-sand + .vg-section-light::before,
#footer::before,
.vg-page-hero .vg-page-hero__content::before,
.vg-section-light::after,
#footer::after {
    display: none !important;
}

#footer {
    margin-top: 0 !important;
}

/* =================================================================
   TYPOGRAPHY base
   ================================================================= */
body {
    font-family: var(--bosco-font-b);
    color: var(--bosco-text);
    background: var(--bosco-bg);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3 {
    font-family: var(--bosco-font-h);
    color: var(--bosco-text);
    font-weight: 500;
    line-height: 1.15;
    letter-spacing: -0.005em;
}

.bosco-eyebrow {
    font-family: var(--bosco-font-b);
    font-size: 0.75rem;
    letter-spacing: 0.35em;
    text-transform: uppercase;
    color: var(--bosco-accent);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 20px;
}
.bosco-eyebrow::before {
    content: '';
    width: 32px;
    height: 2px;
    background: var(--bosco-accent);
    flex-shrink: 0;
}

/* =================================================================
   GEOMETRIC SHAPES — decorative elements
   ================================================================= */

/* Triangle decorative — top-right corner */
.bosco-shape-triangle-tr {
    position: relative;
}
.bosco-shape-triangle-tr::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 96px 96px 0;
    border-color: transparent var(--bosco-primary) transparent transparent;
    opacity: 0.12;
    pointer-events: none;
    z-index: 1;
}

/* Triangle bottom-left */
.bosco-shape-triangle-bl {
    position: relative;
}
.bosco-shape-triangle-bl::before {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 96px 0 0 96px;
    border-color: transparent transparent transparent var(--bosco-accent);
    opacity: 0.10;
    pointer-events: none;
    z-index: 1;
}

/* Diagonal lines pattern */
.bosco-shape-diagonal {
    background-image: repeating-linear-gradient(
        45deg,
        transparent,
        transparent 8px,
        var(--bosco-shape-deco) 8px,
        var(--bosco-shape-deco) 9px
    );
}

/* Dots pattern */
.bosco-shape-dots {
    background-image: radial-gradient(
        circle,
        var(--bosco-accent) 1.5px,
        transparent 1.5px
    );
    background-size: 24px 24px;
    opacity: 0.18;
}

/* Frame offset (Bauhaus-style outline shifted) */
.bosco-frame-offset {
    position: relative;
}
.bosco-frame-offset::after {
    content: '';
    position: absolute;
    inset: 20px -20px -20px 20px;
    border: 2px solid var(--bosco-primary);
    z-index: -1;
    pointer-events: none;
}

/* Geometric divider — line + diamond */
.bosco-divider-geo {
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 56px auto;
    width: 100%;
    max-width: 240px;
}
.bosco-divider-geo::before,
.bosco-divider-geo::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--bosco-border);
}
.bosco-divider-geo > span {
    width: 10px;
    height: 10px;
    background: var(--bosco-primary);
    transform: rotate(45deg);
    margin: 0 18px;
    display: inline-block;
}

/* Diagonal band overlay */
.bosco-shape-band {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        135deg,
        transparent 30%,
        var(--bosco-shape-deco-2) 30%,
        var(--bosco-shape-deco-2) 70%,
        transparent 70%
    );
    pointer-events: none;
    z-index: 0;
}

/* Decorative square stacks */
.bosco-shape-squares {
    position: absolute;
    width: 80px;
    height: 80px;
    background:
        linear-gradient(135deg, var(--bosco-primary) 50%, transparent 50%),
        var(--bosco-accent);
    opacity: 0.15;
    pointer-events: none;
}

/* =================================================================
   HERO — squared, dark, cinematic
   ================================================================= */
.bosco-hero {
    position: relative;
    min-height: 78vh;
    display: flex;
    align-items: center;
    overflow: hidden;
    background: var(--bosco-dark);
    margin: 0;
    padding: 0;
}
.bosco-hero__image {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    filter: brightness(0.55) saturate(1.05);
    z-index: 0;
}
.bosco-hero__pattern {
    position: absolute;
    inset: 0;
    background-image: repeating-linear-gradient(
        45deg,
        transparent,
        transparent 24px,
        rgba(255,255,255,0.03) 24px,
        rgba(255,255,255,0.03) 25px
    );
    z-index: 1;
    pointer-events: none;
}
.bosco-hero__content {
    position: relative;
    z-index: 2;
    color: var(--bosco-white);
    padding: 96px 6vw;
    max-width: 840px;
}
.bosco-hero__eyebrow {
    font-family: var(--bosco-font-b);
    font-size: 0.8125rem;
    letter-spacing: 0.4em;
    text-transform: uppercase;
    margin-bottom: 28px;
    color: var(--bosco-logo-gold);
    display: inline-flex;
    align-items: center;
    gap: 14px;
}
.bosco-hero__eyebrow::before {
    content: '';
    width: 40px;
    height: 2px;
    background: var(--bosco-logo-gold);
}
.bosco-hero__title {
    font-family: var(--bosco-font-h);
    font-size: clamp(2.5rem, 5.5vw, 5rem);
    line-height: 1.04;
    font-weight: 500;
    margin: 0 0 28px 0;
    color: var(--bosco-white);
}
.bosco-hero__subtitle {
    font-family: var(--bosco-font-b);
    font-size: clamp(1rem, 1.3vw, 1.25rem);
    line-height: 1.65;
    max-width: 600px;
    margin: 0 0 44px;
    opacity: 0.94;
    color: var(--bosco-white);
}
.bosco-hero__cta {
    display: inline-block;
    padding: 18px 40px;
    background: var(--bosco-primary);
    color: var(--bosco-white);
    text-decoration: none;
    font-family: var(--bosco-font-b);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    border: 2px solid var(--bosco-primary);
    transition: background 0.25s, color 0.25s;
}
.bosco-hero__cta:hover {
    background: transparent;
    color: var(--bosco-white);
}
.bosco-hero__cta--secondary {
    background: transparent;
    color: var(--bosco-white);
    border-color: var(--bosco-white);
    margin-left: 12px;
}
.bosco-hero__cta--secondary:hover {
    background: var(--bosco-white);
    color: var(--bosco-dark);
}

/* Decorative geometric shapes on hero */
.bosco-hero__shape-1 {
    position: absolute;
    top: 40px;
    right: 40px;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 120px 120px 0;
    border-color: transparent rgba(192, 160, 98, 0.15) transparent transparent;
    z-index: 1;
    pointer-events: none;
}
.bosco-hero__shape-2 {
    position: absolute;
    bottom: 60px;
    right: 80px;
    width: 60px;
    height: 60px;
    background: rgba(192, 160, 98, 0.15);
    transform: rotate(45deg);
    z-index: 1;
    pointer-events: none;
}

/* =================================================================
   SECTIONS — squared layout
   ================================================================= */
.bosco-section {
    padding: var(--bosco-section-pad-y) 6vw;
    position: relative;
    overflow: hidden;
}
.bosco-section--bg {
    background: var(--bosco-bg-d);
}
.bosco-section--accent {
    background: var(--bosco-accent);
    color: var(--bosco-white);
}
.bosco-section--accent h2,
.bosco-section--accent h3 {
    color: var(--bosco-white);
}

.bosco-section__inner {
    max-width: 1240px;
    margin: 0 auto;
    position: relative;
    z-index: 2;
}
.bosco-section__header {
    text-align: center;
    margin-bottom: 64px;
}
.bosco-section__title {
    font-size: clamp(2rem, 3.5vw, 3rem);
    margin: 0 0 16px;
    color: var(--bosco-text);
}
.bosco-section__subtitle {
    font-family: var(--bosco-font-b);
    font-size: 1.0625rem;
    color: var(--bosco-muted);
    max-width: 620px;
    margin: 0 auto;
    line-height: 1.65;
}

/* Two-column asymmetric */
.bosco-twocol {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--bosco-grid-gap);
    align-items: center;
}
.bosco-twocol--offset {
    grid-template-columns: 5fr 7fr;
}
@media (max-width: 900px) {
    .bosco-twocol,
    .bosco-twocol--offset {
        grid-template-columns: 1fr;
    }
}

/* =================================================================
   ROOM CARD — squared, with photo OR geometric placeholder
   ================================================================= */
.bosco-rooms-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--bosco-grid-gap);
}
@media (max-width: 980px) {
    .bosco-rooms-grid {
        grid-template-columns: 1fr;
        gap: 40px;
    }
}

.room-card {
    position: relative;
    background: var(--bosco-white);
    border: 1px solid var(--bosco-border);
    overflow: hidden;
}
.room-card__image-wrap {
    position: relative;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--bosco-bg-d);
}
.room-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.6s ease;
}
.room-card:hover .room-card__image {
    transform: scale(1.04);
}

/* No-photo elegant geometric fallback */
.room-card__no-photo {
    position: absolute;
    inset: 0;
    background: var(--bosco-bg);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden;
}
.room-card__no-photo::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(45deg, transparent 49.5%, var(--bosco-primary) 49.5%, var(--bosco-primary) 50.5%, transparent 50.5%),
        linear-gradient(-45deg, transparent 49.5%, var(--bosco-accent) 49.5%, var(--bosco-accent) 50.5%, transparent 50.5%);
    background-size: 80px 80px;
    opacity: 0.10;
    pointer-events: none;
}
.room-card__no-photo::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 200px;
    height: 200px;
    border: 1px solid var(--bosco-primary);
    transform: translate(-50%, -50%) rotate(45deg);
    opacity: 0.25;
    pointer-events: none;
}
.room-card__no-photo-number {
    font-family: var(--bosco-font-h);
    font-size: 5.5rem;
    line-height: 1;
    color: var(--bosco-primary);
    opacity: 0.6;
    font-weight: 300;
    position: relative;
    z-index: 1;
}
.room-card__no-photo-label {
    font-family: var(--bosco-font-b);
    font-size: 0.75rem;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    color: var(--bosco-accent);
    margin-top: 14px;
    position: relative;
    z-index: 1;
}

.room-card__body {
    padding: 36px 32px 40px;
}
.room-card__category {
    font-family: var(--bosco-font-b);
    font-size: 0.6875rem;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    color: var(--bosco-accent);
    margin-bottom: 14px;
    display: block;
}
.room-card__title {
    font-family: var(--bosco-font-h);
    font-size: 1.875rem;
    color: var(--bosco-text);
    margin: 0 0 18px;
    line-height: 1.15;
    font-weight: 500;
}
.room-card__desc {
    color: var(--bosco-muted);
    line-height: 1.7;
    margin: 0 0 28px;
    font-size: 0.9375rem;
}
.room-card__features {
    display: flex;
    flex-wrap: wrap;
    gap: 14px 22px;
    margin-bottom: 28px;
    padding-top: 22px;
    border-top: 1px solid var(--bosco-border);
}
.room-card__feature {
    font-size: 0.8125rem;
    color: var(--bosco-muted);
    display: inline-flex;
    align-items: center;
    gap: 7px;
}
.room-card__feature::before {
    content: '◆';
    color: var(--bosco-primary);
    font-size: 0.625rem;
}
.room-card__cta {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    align-self: flex-start;
    margin-top: 6px;
    padding: 12px 22px;
    color: var(--bosco-primary);
    background: transparent;
    text-decoration: none;
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    border: 2px solid var(--bosco-primary);
    border-radius: 0;
    transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease, transform 0.25s ease, box-shadow 0.25s ease;
}
.room-card__cta::after {
    content: '\2192'; /* → */
    font-size: 1.05rem;
    line-height: 1;
    display: inline-block;
    transition: transform 0.25s ease;
}
.room-card__cta:hover,
.room-card__cta:focus-visible {
    transform: translateY(-1px);
    box-shadow: 0 6px 18px rgba(184, 146, 63, 0.22);
}
.room-card__cta:hover::after,
.room-card__cta:focus-visible::after {
    transform: translateX(4px);
}

/* =================================================================
   DINTORNI CARDS
   ================================================================= */
.bosco-dintorni-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--bosco-grid-gap);
}
@media (max-width: 1100px) {
    .bosco-dintorni-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}
@media (max-width: 600px) {
    .bosco-dintorni-grid {
        grid-template-columns: 1fr;
    }
}

.dintorno-card {
    position: relative;
    background: var(--bosco-white);
    border: 1px solid var(--bosco-border);
    overflow: hidden;
}
.dintorno-card__image-wrap {
    aspect-ratio: 4 / 3;
    overflow: hidden;
    background: var(--bosco-bg-d);
}
.dintorno-card__image {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.5s ease;
}
.dintorno-card:hover .dintorno-card__image {
    transform: scale(1.05);
}
.dintorno-card__body {
    padding: 24px 22px 28px;
}
.dintorno-card__distance {
    font-size: 0.6875rem;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--bosco-accent);
    font-weight: 600;
    margin-bottom: 8px;
}
.dintorno-card__title {
    font-family: var(--bosco-font-h);
    font-size: 1.4rem;
    margin: 0 0 12px;
    line-height: 1.2;
    color: var(--bosco-text);
}
.dintorno-card__desc {
    font-size: 0.875rem;
    color: var(--bosco-muted);
    line-height: 1.6;
}
.dintorno-card__credit {
    display: block;
    font-size: 0.625rem;
    color: var(--bosco-muted);
    margin-top: 12px;
    opacity: 0.7;
}

/* =================================================================
   BUTTONS
   ================================================================= */
.btn-bosco-primary {
    display: inline-block;
    padding: 16px 36px;
    background: var(--bosco-primary);
    color: var(--bosco-white) !important;
    text-decoration: none;
    font-family: var(--bosco-font-b);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    border: 2px solid var(--bosco-primary);
    transition: background 0.25s, color 0.25s;
    cursor: pointer;
}
.btn-bosco-primary:hover {
    background: var(--bosco-primary-d);
    border-color: var(--bosco-primary-d);
}
.btn-bosco-outline {
    display: inline-block;
    padding: 16px 36px;
    background: transparent;
    color: var(--bosco-primary) !important;
    text-decoration: none;
    font-family: var(--bosco-font-b);
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    border: 2px solid var(--bosco-primary);
    transition: background 0.25s, color 0.25s;
    cursor: pointer;
}
.btn-bosco-outline:hover {
    background: var(--bosco-primary);
    color: var(--bosco-white) !important;
}

/* =================================================================
   AMENITIES GRID
   ================================================================= */
.bosco-amenities {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--bosco-grid-gap);
}
@media (max-width: 900px) {
    .bosco-amenities {
        grid-template-columns: repeat(2, 1fr);
    }
}
.bosco-amenity {
    text-align: center;
    padding: 32px 16px;
    border: 1px solid var(--bosco-border);
    background: var(--bosco-white);
    position: relative;
}
.bosco-amenity::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 32px;
    height: 3px;
    background: var(--bosco-primary);
}
.bosco-amenity__icon {
    font-size: 2rem;
    line-height: 1;
    margin-bottom: 16px;
    color: var(--bosco-accent);
    display: block;
}
.bosco-amenity__title {
    font-family: var(--bosco-font-h);
    font-size: 1.125rem;
    font-weight: 500;
    margin: 0 0 6px;
    color: var(--bosco-text);
}
.bosco-amenity__desc {
    font-size: 0.8125rem;
    color: var(--bosco-muted);
    line-height: 1.5;
}

/* =================================================================
   FORM (Contact Form 7) — squared
   ================================================================= */
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 input[type="number"],
.wpcf7 input[type="date"],
.wpcf7 textarea,
.wpcf7 select {
    width: 100%;
    padding: 14px 16px;
    border: 1px solid var(--bosco-border);
    background: var(--bosco-white);
    color: var(--bosco-text);
    font-family: var(--bosco-font-b);
    font-size: 1rem;
    transition: border-color 0.2s;
}
.wpcf7 input:focus,
.wpcf7 textarea:focus,
.wpcf7 select:focus {
    outline: none;
    border-color: var(--bosco-primary);
}
.wpcf7 .wpcf7-submit {
    background: var(--bosco-primary);
    color: var(--bosco-white);
    border: 2px solid var(--bosco-primary);
    padding: 14px 40px;
    font-family: var(--bosco-font-b);
    font-size: 0.8125rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.25s, color 0.25s;
}
.wpcf7 .wpcf7-submit:hover {
    background: transparent;
    color: var(--bosco-primary);
}

/* =================================================================
   IMAGES — squared default
   ================================================================= */
img.bosco-img,
.bosco-img-wrap img,
.room-card img,
.dintorno-card img,
.welcome-photo__img {
    border-radius: 0 !important;
}

/* Geometric image frame for storytelling sections */
.bosco-img-frame {
    position: relative;
    display: inline-block;
}
.bosco-img-frame::before {
    content: '';
    position: absolute;
    inset: 24px -24px -24px 24px;
    border: 2px solid var(--bosco-primary);
    z-index: -1;
    pointer-events: none;
}

/* =================================================================
   MEDIA HOVER NAV / link
   ================================================================= */
a.bosco-link-underline {
    /* 2026-07-24 design-gate fix: --bosco-primary (#B8923F) su --bosco-bg/--bosco-bg-d
       da' 2.68:1 / 2.43:1 — sotto la soglia WCAG AA 4.5:1 per body text.
       --bosco-accent (#4A6741) passa AA su entrambi gli sfondi crema (5.85:1 / 5.31:1). */
    color: var(--bosco-accent);
    text-decoration: none;
    border-bottom: 2px solid var(--bosco-accent);
    padding-bottom: 4px;
    transition: color 0.2s, border-color 0.2s;
}
a.bosco-link-underline:hover {
    color: var(--bosco-accent-d);
    border-color: var(--bosco-accent-d);
}

/* =================================================================
   FOOTER tweaks (squadrato)
   ================================================================= */
#footer,
.site-footer {
    background: var(--bosco-dark);
    color: var(--bosco-white);
    padding: 80px 6vw 40px;
}
#footer h3, #footer h4,
.site-footer h3, .site-footer h4 {
    color: var(--bosco-white);
    font-family: var(--bosco-font-h);
    font-weight: 500;
    font-size: 1.125rem;
    margin: 0 0 20px;
    position: relative;
    padding-bottom: 14px;
}
#footer h3::after, #footer h4::after,
.site-footer h3::after, .site-footer h4::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 24px;
    height: 2px;
    background: var(--bosco-primary);
}
#footer a, .site-footer a {
    color: rgba(255,255,255,0.78);
    text-decoration: none;
    transition: color 0.2s;
}
#footer a:hover, .site-footer a:hover {
    color: var(--bosco-logo-gold);
}

/* =================================================================
   ACCESSIBILITY — focus states (squared, high-contrast)
   ================================================================= */
*:focus-visible {
    outline: 3px solid var(--bosco-primary);
    outline-offset: 2px;
    border-radius: 0;
}

/* =================================================================
   UTILITY
   ================================================================= */
.bosco-text-center { text-align: center; }
.bosco-text-right  { text-align: right; }
.bosco-mt-0  { margin-top: 0 !important; }
.bosco-mb-0  { margin-bottom: 0 !important; }
.bosco-mt-32 { margin-top: 32px; }
.bosco-mt-48 { margin-top: 48px; }
.bosco-mt-64 { margin-top: 64px; }
.bosco-mb-32 { margin-bottom: 32px; }
.bosco-mb-48 { margin-bottom: 48px; }
.bosco-mb-64 { margin-bottom: 64px; }
.bosco-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--bosco-grid-gap); }
.bosco-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--bosco-grid-gap); }
.bosco-grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--bosco-grid-gap); }
@media (max-width: 900px) {
    .bosco-grid-2, .bosco-grid-3, .bosco-grid-4 { grid-template-columns: 1fr; }
}

/* =================================================================
   FEATURE FLAG — hide booking elements when booking_public=false
   ================================================================= */
body.is-booking-hidden .mphb-book-button,
body.is-booking-hidden .bosco-search-form,
body.is-booking-hidden .vg-search-form,
body.is-booking-hidden [data-mphb-search],
body.is-booking-hidden .mphb-availability-search-form,
body.is-booking-hidden .room-card .mphb-price,
body.is-booking-hidden #vg-sticky-cta,
body.is-booking-hidden .menu-item-prenota,
body.is-booking-hidden .menu-item-prenota-mobile,
body.is-booking-hidden .menu-item-galleria {
    display: none !important;
}

/* =================================================================
   PAGE HERO universal (page-camere, page-dintorni, etc)
   ================================================================= */
.bosco-page-hero {
    position: relative;
    min-height: 56vh;
    display: flex;
    align-items: flex-end;
    overflow: hidden;
    background: var(--bosco-dark);
    margin: 0;
    padding: 0;
}
.bosco-page-hero__image {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    filter: brightness(0.55);
    z-index: 0;
}
.bosco-page-hero__content {
    position: relative;
    z-index: 2;
    color: var(--bosco-white);
    padding: 0 6vw 80px;
    max-width: 900px;
}
.bosco-page-hero__title {
    font-family: var(--bosco-font-h);
    font-size: clamp(2.5rem, 5vw, 4rem);
    font-weight: 500;
    margin: 0 0 16px;
    line-height: 1.1;
    color: var(--bosco-white);
}
.bosco-page-hero__subtitle {
    font-family: var(--bosco-font-b);
    font-size: 1.0625rem;
    line-height: 1.6;
    max-width: 580px;
    margin: 0;
    opacity: 0.94;
    color: var(--bosco-white);
}
.bosco-page-hero__shape {
    position: absolute;
    top: 30px;
    right: 30px;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 0 80px 80px 0;
    border-color: transparent rgba(184, 146, 63, 0.18) transparent transparent;
    z-index: 1;
}

/* PNRR — nessun override qui. Le regole base in custom.css
   (.bosco-pnrr, .bosco-pnrr__logo img height:44px ecc.) replicano
   1:1 villa-pnrr/ulivi-pnrr degli altri siti. */

/* =================================================================
   RESPONSIVE — spacing + tipografia ottimizzati mobile
   ================================================================= */

/* Padding sezioni: 72px desktop -> 48px mobile */
@media (max-width: 768px) {
    .bosco-section {
        padding: var(--bosco-section-pad-y-mobile, 48px) 5vw !important;
    }
    .bosco-section__header {
        margin-bottom: 32px !important;
    }
}

/* Hero altezza ridotta su mobile (era 78vh fisso = troppo) */
@media (max-width: 768px) {
    .bosco-hero {
        min-height: 62vh !important;
    }
    .bosco-hero__content {
        padding: 64px 5vw !important;
    }
    .bosco-hero__subtitle {
        margin: 0 0 28px !important;
    }
    .bosco-hero__cta {
        padding: 14px 28px !important;
        font-size: 0.75rem !important;
    }
}

/* Page hero (hero pagine interne) mobile */
@media (max-width: 768px) {
    .bosco-page-hero {
        min-height: 48vh !important;
    }
    .bosco-page-hero__title {
        font-size: clamp(1.875rem, 7vw, 2.5rem) !important;
    }
}

/* Room card title fisso 1.875rem -> scala su mobile */
@media (max-width: 600px) {
    .room-card__title {
        font-size: 1.5rem !important;
    }
    .room-card__body {
        padding: 28px 22px 32px !important;
    }
    .dintorno-card__title {
        font-size: 1.2rem !important;
    }
}

/* CTA hero stack verticale su mobile */
@media (max-width: 600px) {
    .bosco-hero__cta {
        display: block !important;
        width: 100% !important;
        text-align: center !important;
        margin: 0 0 12px 0 !important;
    }
    .bosco-hero__cta:last-of-type { margin-bottom: 0 !important; }
}

/* CTA primary/outline migliori contrasti */
.bosco-btn-primary,
.btn-bosco-primary {
    background: var(--bosco-primary) !important;
    color: var(--bosco-white) !important;
    border: 2px solid var(--bosco-primary) !important;
    font-weight: 600 !important;
}
.bosco-btn-primary:hover,
.btn-bosco-primary:hover {
    background: var(--bosco-primary-d) !important;
    border-color: var(--bosco-primary-d) !important;
}
.bosco-btn-primary:focus-visible,
.btn-bosco-primary:focus-visible {
    outline: 3px solid var(--bosco-primary-light) !important;
    outline-offset: 3px !important;
}

/* Eyebrow su sfondi scuri: passa a primary-light (#D4B574, AA 7.3:1 su #1F1B16) */
.bosco-hero__eyebrow,
.bosco-page-hero .bosco-hero__eyebrow {
    color: var(--bosco-primary-light, #D4B574) !important;
}

/* Footer: anchor gold con contrasto AA migliore */
#footer a:hover,
.site-footer a:hover {
    color: var(--bosco-primary-light, #D4B574) !important;
}

/* Spacing room-card body: titolo + desc */
.room-card__title { letter-spacing: -0.01em; }
.room-card__desc { font-size: 0.95rem; }

/* Container max-width più ampia su desktop XL */
@media (min-width: 1400px) {
    .bosco-section__inner {
        max-width: 1320px !important;
    }
}

/* Tipografia body: line-height per readability */
body, p { line-height: 1.65; }

/* =================================================================
   ABSTRACT BACKGROUND PATTERNS — decorativi geometrici
   ================================================================= */
.bosco-section--abstract-dots {
    background-image:
        radial-gradient(circle at 1px 1px, rgba(184, 146, 63, 0.18) 1px, transparent 0),
        linear-gradient(180deg, var(--bosco-bg) 0%, var(--bosco-bg-d) 100%);
    background-size: 28px 28px, 100% 100%;
}
.bosco-section--abstract-lines {
    background-image:
        repeating-linear-gradient(135deg, transparent 0 22px, rgba(184, 146, 63, 0.06) 22px 23px),
        linear-gradient(180deg, var(--bosco-bg) 0%, var(--bosco-bg) 100%);
}
.bosco-section--abstract-grid {
    background-image:
        linear-gradient(rgba(184, 146, 63, 0.08) 1px, transparent 1px),
        linear-gradient(90deg, rgba(184, 146, 63, 0.08) 1px, transparent 1px),
        linear-gradient(180deg, var(--bosco-bg) 0%, var(--bosco-bg-d) 100%);
    background-size: 48px 48px, 48px 48px, 100% 100%;
}

/* Forme decorative su sezioni accent / dark */
.bosco-section--abstract-dots::before,
.bosco-section--abstract-grid::before {
    content: "";
    position: absolute;
    top: -40px;
    right: -40px;
    width: 220px;
    height: 220px;
    background: var(--bosco-primary);
    opacity: 0.06;
    transform: rotate(45deg);
    pointer-events: none;
    z-index: 0;
}
.bosco-section--abstract-lines::after {
    content: "";
    position: absolute;
    bottom: -60px;
    left: -60px;
    width: 180px;
    height: 180px;
    border: 3px solid var(--bosco-primary);
    opacity: 0.10;
    pointer-events: none;
    z-index: 0;
}
.bosco-section.bosco-section--abstract-dots > .bosco-section__inner,
.bosco-section.bosco-section--abstract-lines > .bosco-section__inner,
.bosco-section.bosco-section--abstract-grid > .bosco-section__inner {
    position: relative;
    z-index: 1;
}

/* =================================================================
   NO UNDERLINE — anchor + button labels
   ================================================================= */
a, a:visited, a:hover, a:focus,
.btn, .btn-vg-primary, .btn-vg-outline,
.btn-bosco-primary, .btn-bosco-outline,
.bosco-hero__cta, .room-card__cta, .header-cta,
.bosco-link-underline {
    text-decoration: none !important;
}
.bosco-link-underline {
    /* 2026-07-24: allineato allo stesso fix AA di "a.bosco-link-underline"
       (riga ~855) — questo blocco e' oggi sovrascritto per specificity da
       quello con prefisso "a.", ma va tenuto in sync per non far riemergere
       il vecchio colore a basso contrasto se in futuro la classe viene
       usata su un elemento diverso da <a> o se il blocco "a." viene rimosso. */
    border-bottom: 1px solid currentColor;
    padding-bottom: 2px;
    transition: border-color 0.2s, color 0.2s;
}
.bosco-link-underline:hover {
    color: var(--bosco-accent-d);
    border-bottom-color: var(--bosco-accent-d);
}

/* =================================================================
   BUTTON HOVER — testo SEMPRE leggibile su tutti i bg
   ================================================================= */
.btn-bosco-primary,
.btn-bosco-primary:link,
.btn-bosco-primary:visited {
    background: var(--bosco-primary) !important;
    color: var(--bosco-white) !important;
    border: 2px solid var(--bosco-primary) !important;
}
.btn-bosco-primary:hover,
.btn-bosco-primary:focus {
    background: var(--bosco-primary-d) !important;
    border-color: var(--bosco-primary-d) !important;
    color: var(--bosco-white) !important;
}

.btn-bosco-outline,
.btn-bosco-outline:link,
.btn-bosco-outline:visited {
    background: transparent !important;
    color: var(--bosco-primary) !important;
    border: 2px solid var(--bosco-primary) !important;
}
.btn-bosco-outline:hover,
.btn-bosco-outline:focus {
    background: var(--bosco-primary) !important;
    border-color: var(--bosco-primary) !important;
    color: var(--bosco-white) !important;  /* contrasto AA 5.2:1 garantito */
}

/* Hero CTA: hover bianco visibile */
.bosco-hero__cta:hover,
.bosco-hero__cta:focus {
    background: var(--bosco-primary-d) !important;
    color: var(--bosco-white) !important;
    border-color: var(--bosco-primary-d) !important;
}
.bosco-hero__cta--secondary:hover,
.bosco-hero__cta--secondary:focus {
    background: var(--bosco-white) !important;
    color: var(--bosco-dark) !important;
    border-color: var(--bosco-white) !important;
}

/* Room card CTA (outline) */
.room-card__cta:hover,
.room-card__cta:focus {
    background: var(--bosco-primary) !important;
    color: var(--bosco-white) !important;
    border-color: var(--bosco-primary) !important;
}

/* =================================================================
   IMG-FRAME — stacco testo dalla cornice/linea sotto la foto
   ================================================================= */
.bosco-twocol .bosco-img-frame,
.bosco-twocol--offset .bosco-img-frame {
    margin-bottom: 8px;
}
.bosco-twocol > div:not(.bosco-img-frame),
.bosco-twocol--offset > div:not(.bosco-img-frame) {
    padding-left: 16px;
}
@media (min-width: 901px) {
    .bosco-twocol > div:not(.bosco-img-frame),
    .bosco-twocol--offset > div:not(.bosco-img-frame) {
        padding-left: 32px;
    }
}
.bosco-twocol--reverse {
    grid-template-columns: 7fr 5fr !important;
}
.bosco-twocol--reverse > .bosco-img-frame {
    order: 2;
}
.bosco-twocol--reverse > div:not(.bosco-img-frame) {
    order: 1;
    padding-left: 0 !important;
    padding-right: 32px;
}
@media (max-width: 900px) {
    .bosco-twocol--reverse { grid-template-columns: 1fr !important; }
    .bosco-twocol--reverse > .bosco-img-frame,
    .bosco-twocol--reverse > div:not(.bosco-img-frame) {
        order: initial;
        padding-right: 0;
    }
}

/* =================================================================
   AMENITY ICON — uniformata, base oro su crema
   ================================================================= */
.bosco-amenity__icon {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 56px !important;
    height: 56px !important;
    font-size: 1.6rem !important;
    background: rgba(184, 146, 63, 0.10);
    color: var(--bosco-primary);
    margin-bottom: 16px !important;
    border: 1px solid rgba(184, 146, 63, 0.25);
}

/* =================================================================
   PAGE-CONTATTI — layout 1x4 cards (sopra) + form centrale (sotto)
   ================================================================= */
.bosco-contact-cards-1x4 {
    display: grid;
    grid-template-columns: 1fr;
    gap: 14px;
}
@media (min-width: 768px) {
    .bosco-contact-cards-1x4 {
        grid-template-columns: repeat(2, 1fr);
        gap: 16px;
    }
}
@media (min-width: 1024px) {
    .bosco-contact-cards-1x4 {
        grid-template-columns: repeat(4, 1fr);
        gap: 18px;
    }
}
.bosco-contact-card {
    text-align: center !important;
    padding: 28px 22px !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 6px;
    transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease;
}
.bosco-contact-card .bosco-amenity__icon {
    margin: 0 auto 12px !important;
}
.bosco-contact-card .bosco-amenity__title,
.bosco-contact-card .bosco-amenity__desc {
    text-align: center !important;
    width: 100%;
    margin-left: 0 !important;
    margin-right: 0 !important;
}
a.bosco-contact-card:hover,
a.bosco-contact-card:focus {
    transform: translateY(-2px);
    border-color: var(--bosco-primary) !important;
    background: var(--bosco-white) !important;
}
.bosco-contact-form-wrap {
    background: var(--bosco-white);
    border: 1px solid var(--bosco-border);
    padding: 32px 28px;
    max-width: 800px;
    margin: 0 auto;
}
.bosco-contact-form-wrap input[type="text"],
.bosco-contact-form-wrap input[type="email"],
.bosco-contact-form-wrap input[type="tel"],
.bosco-contact-form-wrap input[type="number"],
.bosco-contact-form-wrap input[type="date"],
.bosco-contact-form-wrap textarea,
.bosco-contact-form-wrap select {
    width: 100% !important;
    padding: 12px 14px !important;
    border: 1px solid var(--bosco-border) !important;
    background: var(--bosco-bg) !important;
    font-size: 0.95rem !important;
}
.bosco-contact-form-wrap textarea { min-height: 120px !important; }
.bosco-contact-form-wrap label {
    display: block;
    font-size: 0.85rem;
    color: var(--bosco-muted);
    margin-bottom: 6px;
    font-weight: 600;
}
.bosco-contact-form-wrap .wpcf7-submit {
    margin-top: 12px;
    width: auto !important;
}

/* =================================================================
   MAP iframe
   ================================================================= */
.bosco-map-wrap {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.bosco-map-wrap iframe {
    filter: grayscale(15%);
    transition: filter 0.3s ease;
}
.bosco-map-wrap:hover iframe { filter: grayscale(0%); }

/* =================================================================
   FAB — WhatsApp + Back-to-top floating buttons
   ================================================================= */
.bosco-fab {
    position: fixed;
    right: 22px;
    width: 54px;
    height: 54px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    cursor: pointer;
    text-decoration: none !important;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
    transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
    z-index: 9998;
}
.bosco-fab:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.24);
}

.bosco-fab--wa {
    bottom: 88px;
    background: #25D366;  /* official WhatsApp brand green */
    color: #ffffff;
}
.bosco-fab--wa:hover,
.bosco-fab--wa:focus { background: #1ebe5d; color: #ffffff; }

.bosco-fab--totop {
    bottom: 22px;
    background: var(--bosco-primary);
    color: #ffffff;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(14px);
}
.bosco-fab--totop.is-visible {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
}
.bosco-fab--totop:hover,
.bosco-fab--totop:focus { background: var(--bosco-primary-d); color: #ffffff; }

@media (max-width: 600px) {
    .bosco-fab { width: 48px; height: 48px; right: 16px; }
    .bosco-fab--wa     { bottom: 76px; }
    .bosco-fab--totop  { bottom: 16px; }
}

/* =================================================================
   DINTORNI — foto uniformate 4:3
   ================================================================= */
.bosco-section .bosco-twocol--offset img.bosco-img {
    aspect-ratio: 4 / 3 !important;
    width: 100% !important;
    height: auto !important;
    object-fit: cover !important;
    display: block !important;
}
/* page-dintorni: forza aspect ratio anche con width/height inline */
[id^="oliveto-"] img.bosco-img,
[id="castello-oliveto-citra"] img.bosco-img,
[id="contursi-terme"] img.bosco-img,
[id="parco-cilento"] img.bosco-img,
[id="grotte-pertosa"] img.bosco-img,
[id="paestum"] img.bosco-img,
[id="oasi-wwf-senerchia"] img.bosco-img,
[id="laviano-ponte-tibetano"] img.bosco-img {
    aspect-ratio: 4 / 3 !important;
    object-fit: cover !important;
    width: 100% !important;
    height: auto !important;
}

/* =================================================================
   HIDE Bellevue parent's jQuery scrollUp button.
   Parent injects <a id="scrollUp"> via themo_start_scrollup() in main.js.
   We have our own FAB system, so we kill the parent's button.
   ================================================================= */
#scrollUp,
.scrollUp {
    display: none !important;
    visibility: hidden !important;
    pointer-events: none !important;
}

/* =================================================================
   MOBILE SAFETY NET — anti-overflow orizzontale globale
   Previene che qualunque elemento esca dal viewport mobile.
   ================================================================= */

/* 1. Safety overflow: nessun elemento può causare scroll orizzontale */
html, body {
    overflow-x: hidden;
    max-width: 100%;
}

/* 2. Box-sizing universale (padding/border non aggiungono larghezza) */
*, *::before, *::after {
    box-sizing: border-box;
}

/* 3. Media (immagini, video, iframe, SVG, embed) contenuti nel parent */
img, video, picture, svg, embed, object {
    max-width: 100%;
    height: auto;
}
/* iframe responsive (Google Maps, ecc.) */
iframe {
    max-width: 100%;
}

/* 4. Grid/flex cells: minmax(0, 1fr) evita blow-out su contenuti larghi */
.bosco-grid-3,
.bosco-grid-4,
.bosco-amenities,
.bosco-rooms-grid,
.bosco-contact-cards-1x4,
.bosco-twocol,
.bosco-twocol--offset,
.footer-grid {
    min-width: 0;
}
.bosco-grid-3 > *,
.bosco-grid-4 > *,
.bosco-amenities > *,
.bosco-rooms-grid > *,
.bosco-contact-cards-1x4 > *,
.bosco-twocol > *,
.bosco-twocol--offset > *,
.footer-grid > * {
    min-width: 0;
    overflow-wrap: anywhere;
}

/* 5. Word wrap su parole lunghe (URL, email, indirizzi) */
.bosco-amenity__desc,
.bosco-amenity__title,
.room-card__desc,
.bosco-section__subtitle,
.bosco-section__title,
.footer-contact__item,
.footer-tagline,
.bosco-hero__subtitle,
.bosco-page-hero__subtitle,
p {
    overflow-wrap: break-word;
    word-wrap: break-word;
}
.bosco-hero__title,
.bosco-page-hero__title {
    overflow-wrap: break-word;
    word-wrap: break-word;
    hyphens: auto;
}

/* Link mailto:/tel: con stringhe lunghe */
a[href^="mailto:"],
a[href^="tel:"] {
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* 6. Tabelle wide → scroll orizzontale invece di overflow viewport */
.bosco-section__inner table,
.entry-content table {
    display: block;
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* 7. Pre/code overflow */
.bosco-section__inner pre,
.bosco-section__inner code,
.entry-content pre,
.entry-content code {
    overflow-x: auto;
    white-space: pre-wrap;
    word-wrap: break-word;
    max-width: 100%;
}

/* 8. CF7 + form generici: input/textarea/select non eccedono mai */
input, textarea, select {
    max-width: 100%;
}
.bosco-contact-form-wrap input,
.bosco-contact-form-wrap textarea,
.bosco-contact-form-wrap select,
.wpcf7-form input,
.wpcf7-form textarea,
.wpcf7-form select {
    max-width: 100% !important;
    box-sizing: border-box !important;
}

/* 9. Mobile small (<480px): padding minimo + adjustments */
@media (max-width: 480px) {
    .bosco-section,
    .bosco-page-hero__content,
    .bosco-hero__content {
        padding-left: 18px !important;
        padding-right: 18px !important;
    }
    /* Card piene di larghezza con padding ridotto */
    .bosco-amenity,
    .bosco-contact-card,
    .room-card,
    .bosco-img-wrap,
    .bosco-img-frame {
        max-width: 100%;
    }
    /* Bottoni full-width fluidi */
    .btn-bosco-primary,
    .btn-bosco-outline,
    .bosco-hero__cta,
    .room-card__cta {
        max-width: 100%;
        white-space: normal;
        word-break: keep-all;
        text-align: center;
    }
    /* Hero pagine — assicura padding interno */
    .bosco-page-hero {
        max-width: 100vw;
        overflow: hidden;
    }
    /* Footer cards stacking */
    .footer-grid {
        grid-template-columns: 1fr !important;
        gap: 32px;
    }
    /* Section header titoli scalabili */
    .bosco-section__title {
        font-size: clamp(1.5rem, 7vw, 2rem);
    }
    .bosco-section__subtitle {
        font-size: 0.95rem;
    }
    /* Iframe map height ridotta */
    .bosco-map-wrap iframe {
        height: 320px !important;
    }
    /* FAB WhatsApp non sovrappone testi importanti */
    .bosco-fab--wa {
        width: 52px !important;
        height: 52px !important;
    }
    /* Email/telefono nelle card contatti — più piccoli */
    .bosco-contact-card .bosco-amenity__desc {
        font-size: 0.8125rem !important;
    }
}

/* 10. Extra-small (<360px): aggiusto le card 4-col su una colonna */
@media (max-width: 360px) {
    .bosco-contact-cards-1x4 {
        grid-template-columns: 1fr !important;
    }
}

/* =================================================================
   HERO PAGINA — variante "solid" (no foto, gradient brand color).
   Usata su page-contact dove non c'è foto pertinente.
   ================================================================= */
.bosco-page-hero--solid .bosco-page-hero__image {
    background-image:
        radial-gradient(circle at 18% 28%, rgba(255,255,255,0.10) 0%, transparent 38%),
        radial-gradient(circle at 84% 78%, rgba(0,0,0,0.18) 0%, transparent 42%),
        linear-gradient(135deg, var(--bosco-primary) 0%, var(--bosco-primary-d) 60%, #5C4628 100%) !important;
    background-color: var(--bosco-primary) !important;
}
.bosco-page-hero--solid .bosco-page-hero__image::after {
    content: '';
    position: absolute;
    inset: 0;
    background-image:
        repeating-linear-gradient(45deg, rgba(255,255,255,0.04) 0 2px, transparent 2px 14px);
    pointer-events: none;
}
/* L'overlay scuro standard sopra l'immagine non serve sul solid */
.bosco-page-hero--solid .bosco-page-hero__image {
    position: relative;
}
