/* Montserrat self-hosted (RLB-163) — no Google Fonts CDN */
@font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url('../fonts/montserrat/montserrat-latin-ext-400-800.woff2') format('woff2');
    unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-weight: 400 800;
    font-display: swap;
    src: url('../fonts/montserrat/montserrat-latin-400-800.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
    --color-primary: #CB333B;
    --color-primary-dark: #A32730;
    --color-primary-light: #E15A62;
    --color-almi-logo-red: #E31F26;
    --color-accent: #CB333B;
    --color-accent-dark: #A32730;
    --color-black: #101010;
    --color-text: #191817;
    --color-text-muted: #6B6762;
    --color-bg: #ffffff;
    --color-bg-alt: #F7F5F2;
    --color-border: #E7E2DC;
    --color-success: #276749;
    --color-error: #c53030;
    --font-family: 'Montserrat', system-ui, -apple-system, sans-serif;
    --font-family-heading: 'Montserrat', system-ui, -apple-system, sans-serif;
    --max-width: 1200px;
    --radius: 2px;
    --radius-sm: 2px;
    --shadow-md: 0 12px 32px rgba(16, 16, 16, 0.08);
    --shadow-lg: 0 24px 48px rgba(16, 16, 16, 0.14);
    --section-pad: clamp(3rem, 6vw, 4.5rem);
    --color-cream: #FAF5EC;
    --color-warm: #F1E8DA;
    --accent-terra: #B86125;
    --accent-amber: #FFA400;
    --accent-green: #84BD00;
    --header-bar-h: clamp(30px, 2.2vw + 22px, 44px);
    --header-bar-h-scrolled: clamp(24px, 1.7vw + 17px, 34px);
    --header-h: calc(var(--header-bar-h) + 2rem + 1px);
}

@media (max-width: 768px) {
    :root {
        --header-bar-h: max(clamp(30px, 2.2vw + 22px, 44px), 39px);
        --header-bar-h-scrolled: 39px;
    }
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    /* Fallback; JS sets --header-scroll-pad from live .site-header height */
    scroll-padding-top: var(--header-scroll-pad, 120px);
}

body {
    margin: 0;
    font-family: var(--font-family);
    color: var(--color-text);
    background: var(--color-bg);
    line-height: 1.7;
    overflow-x: clip;
    /* Compensa l'header fixed; JS sovrascrive --header-offset (misura reale + menu mobile aperto) */
    padding-top: var(--header-offset, var(--header-h));
}

h1,
h2,
h3 {
    font-family: var(--font-family-heading);
    line-height: 1.05;
}

h1,
h2 {
    text-transform: uppercase;
    line-height: 0.95;
}

/* Titoli-oggetto: nomi di card e prodotti restano in caso naturale */
.hub-card h2,
.catalog-panel__name {
    text-transform: none;
    line-height: 1.15;
}

p strong {
    font-weight: 700;
    color: inherit;
}

:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.skip-link {
    position: fixed;
    top: -100%;
    left: 1rem;
    z-index: 200;
    background: var(--color-primary);
    color: #fff;
    padding: 0.75rem 1.25rem;
    text-decoration: none;
    font-weight: 600;
    font-size: 0.875rem;
    border-radius: var(--radius-sm);
}

.skip-link:focus {
    top: 1rem;
}

.eyebrow {
    margin: 0 0 1rem;
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.site-header {
    background: var(--color-bg);
    color: var(--color-text);
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 100;
    border-bottom: 1px solid var(--color-border);
    transition: box-shadow 0.3s ease;
}

.site-header.is-scrolled {
    box-shadow: var(--shadow-md);
}

.site-header.is-scrolled .site-nav {
    padding-block: 0.5rem;
    min-height: calc(var(--header-bar-h-scrolled) + 1rem);
}

.site-header.is-scrolled .site-logo img {
    height: clamp(24px, 1.7vw + 17px, 34px);
}

.site-nav {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: 1rem 1.5rem;
    min-height: calc(var(--header-bar-h) + 2rem);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    transition: padding 0.25s ease, min-height 0.25s ease;
}

.site-logo {
    display: flex;
    align-items: center;
    text-decoration: none;
}

.site-logo img {
    display: block;
    height: clamp(30px, 2.2vw + 22px, 44px);
    max-width: 45vw;
    width: auto;
    transition: height 0.25s ease;
}

.nav-toggle {
    display: none;
    margin-left: auto;
    background: transparent;
    border: 1px solid var(--color-border);
    color: var(--color-text);
    padding: 0.4rem;
    border-radius: var(--radius-sm);
    cursor: pointer;
    line-height: 0;
}

.nav-panel {
    display: contents;
}

.nav-menu,
.lang-switcher {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 1.5rem;
    align-items: center;
}

.nav-menu a,
.lang-switcher a {
    color: var(--color-text);
    text-decoration: none;
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    transition: color 0.2s ease, border-color 0.2s ease;
    border-bottom: 2px solid transparent;
    padding-bottom: 0.15rem;
}

.nav-menu a:hover,
.lang-switcher a:hover {
    color: var(--color-primary);
}

.nav-menu a[aria-current="page"],
.lang-switcher a[aria-current="true"] {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
}

.nav-menu {
    margin-left: auto;
}

.lang-switcher {
    padding-left: 1.5rem;
    border-left: 1px solid var(--color-border);
}

@media (min-width: 769px) and (max-width: 1100px) {
    .nav-menu,
    .lang-switcher {
        gap: 1rem;
    }

    .nav-menu a,
    .lang-switcher a {
        font-size: 0.75rem;
        letter-spacing: 0.05em;
    }
}

.site-main {
    max-width: var(--max-width);
    margin: 0 auto;
    padding: 0 1.5rem;
    min-height: 60vh;
}

.breadcrumb {
    margin: 1.25rem 0 0;
}

.breadcrumb__list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.75rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.breadcrumb__item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.breadcrumb__item + .breadcrumb__item::before {
    content: '/';
    color: var(--color-border);
}

.breadcrumb a {
    color: var(--color-text-muted);
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.breadcrumb a:hover {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
}

.breadcrumb [aria-current="page"] {
    color: var(--color-text);
    font-weight: 600;
}

.hero {
    --hero-image: url('../images/content/hero-home-spezie.webp');
    --hero-parallax: 0px;
    position: relative;
    overflow: hidden;
    isolation: isolate;
    background: var(--color-black);
    color: #fff;
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    min-height: 72vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
    text-align: left;
}

/* Livello foto sovradimensionato: 130% dell'altezza hero = 15% di corsa per lato */
.hero::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: -15%;
    bottom: -15%;
    background: var(--hero-image) center / cover no-repeat;
    transform: translate3d(0, var(--hero-parallax), 0);
    will-change: transform;
    z-index: 0;
}

.hero::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(100deg, rgba(16, 16, 16, 0.85) 0%, rgba(16, 16, 16, 0.55) 55%, rgba(16, 16, 16, 0.25) 100%);
    z-index: 1;
}

.hero > * {
    position: relative;
    z-index: 2;
}

.hero .eyebrow {
    color: var(--color-almi-logo-red);
}

.hero h1 {
    margin-top: 0;
    margin-bottom: 1.25rem;
    font-size: clamp(2.25rem, 7.5vw, 5.5rem);
    font-weight: 800;
    letter-spacing: 0;
    line-height: 0.92;
    color: #fff;
    max-width: 18ch;
}

.hero-title-accent {
    color: var(--color-primary-light);
}

.hero p {
    max-width: 36rem;
    margin: 0 0 2rem;
    font-size: 1.1rem;
    opacity: 0.95;
    line-height: 1.7;
}

.hero-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
}

.btn-primary {
    display: inline-block;
    background: var(--color-accent);
    color: #fff;
    border: none;
    padding: 0.9rem 1.75rem;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font: inherit;
    font-weight: 600;
    font-size: 0.8125rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background 0.2s ease, transform 0.2s ease;
}

.btn-primary:hover {
    background: var(--color-accent-dark);
    transform: translateY(-2px);
}

.btn-outline {
    display: inline-block;
    background: transparent;
    color: #fff;
    border: 2px solid rgba(255, 255, 255, 0.8);
    padding: 0.85rem 1.75rem;
    border-radius: var(--radius-sm);
    cursor: pointer;
    font: inherit;
    font-weight: 600;
    font-size: 0.8125rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    text-decoration: none;
    transition: background 0.2s ease, border-color 0.2s ease;
}

.btn-outline:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: #fff;
}

.features {
    margin-block: var(--section-pad);
}

.features h2 {
    text-align: left;
    color: var(--color-black);
    margin-bottom: 2.5rem;
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
}

.features-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 1.5rem;
    counter-reset: feature;
}

.feature-card {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 2rem 1.75rem 1.75rem;
    transition: border-color 0.3s ease, box-shadow 0.3s ease;
    counter-increment: feature;
}

.feature-card::before {
    content: counter(feature, decimal-leading-zero);
    display: block;
    font-size: 2.5rem;
    font-weight: 800;
    color: var(--color-border);
    line-height: 1;
    margin-bottom: 1rem;
    transition: color 0.3s ease;
}

.feature-card:hover {
    border-color: var(--color-primary);
    box-shadow: var(--shadow-md);
}

.feature-card:hover::before {
    color: var(--color-primary);
}

.feature-card h3 {
    margin-top: 0;
    margin-bottom: 0.75rem;
    color: var(--color-black);
    font-size: 1.15rem;
    font-weight: 700;
}

.feature-card p {
    margin: 0;
    color: var(--color-text-muted);
}

.cta-band {
    background: var(--color-black);
    color: #fff;
    margin-inline: calc(50% - 50vw);
    margin-block-start: var(--section-pad);
    width: 100vw;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
    text-align: center;
}

.cta-band h2 {
    margin-top: 0;
    margin-bottom: 1.5rem;
    color: #fff;
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
}

.cta-band p {
    max-width: 42rem;
    margin: 0 auto 1.5rem;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1.7;
    font-size: 1.05rem;
}

.cta-band .hero-actions {
    justify-content: center;
}

/* Page hero (inner pages) */
.page-hero {
    background:
        linear-gradient(100deg, rgba(16, 16, 16, 0.85) 0%, rgba(16, 16, 16, 0.55) 55%, rgba(16, 16, 16, 0.25) 100%),
        var(--page-hero-image, none) center/cover no-repeat;
    color: #fff;
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    min-height: 46vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
    text-align: left;
    margin-bottom: var(--section-pad);
}

.page-hero--storia {
    --page-hero-image: url('../images/content/hero-storia.webp');
}

.page-hero--prodotti {
    --page-hero-image: url('../images/content/hero-prodotti.webp');
}

.page-hero--industria {
    --page-hero-image: url('../images/content/hero-industria.webp');
}

.page-hero--qualita {
    --page-hero-image: url('../images/content/hero-qualita.webp');
}

.page-hero--contatti {
    --page-hero-image: url('../images/content/hero-contatti.webp');
}

@media (max-width: 767px) {
    .hero {
        --hero-image: url('../images/content/hero-home-spezie-sm.webp');
    }

    .page-hero--storia { --page-hero-image: url('../images/content/hero-storia-sm.webp'); }
    .page-hero--prodotti { --page-hero-image: url('../images/content/hero-prodotti-sm.webp'); }
    .page-hero--industria { --page-hero-image: url('../images/content/hero-industria-sm.webp'); }
    .page-hero--qualita { --page-hero-image: url('../images/content/hero-qualita-sm.webp'); }
    .page-hero--contatti { --page-hero-image: url('../images/content/hero-contatti-sm.webp'); }
}

.page-hero .eyebrow {
    color: var(--color-primary-light);
}

.page-hero h1 {
    margin-top: 0;
    margin-bottom: 1rem;
    font-size: clamp(2rem, 6vw, 4.25rem);
    font-weight: 800;
    letter-spacing: 0;
    line-height: 0.92;
    color: #fff;
    max-width: 18ch;
}

.page-hero p {
    max-width: 42rem;
    margin: 0;
    font-size: 1.1rem;
    opacity: 0.95;
    line-height: 1.7;
}

/* Feature cards with images */
.feature-card--linked {
    padding: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.feature-card--linked::before {
    display: none;
}

.feature-card__link {
    display: flex;
    flex-direction: column;
    height: 100%;
    text-decoration: none;
    color: inherit;
}

.feature-card__image {
    overflow: hidden;
    aspect-ratio: 16 / 10;
}

.feature-card__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform 0.3s ease;
}

.feature-card--linked:hover .feature-card__image img {
    transform: scale(1.04);
}

.feature-card__body {
    padding: 1.75rem 1.75rem 1.5rem;
    flex: 1;
    display: flex;
    flex-direction: column;
}

.feature-card__body h3 {
    margin-top: 0;
    margin-bottom: 0.75rem;
    color: var(--color-black);
    font-size: 1.15rem;
    font-weight: 700;
}

.feature-card__body p {
    margin: 0 0 1rem;
    color: var(--color-text-muted);
    flex: 1;
}

.feature-card__cta {
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-primary);
    transition: color 0.2s ease;
}

.feature-card--linked:hover .feature-card__cta {
    color: var(--color-primary-dark);
}

.features-grid--editorial {
    grid-template-columns: repeat(2, 1fr);
}

.feature-card--wide {
    grid-column: 1 / -1;
}

.feature-card--wide .feature-card__link {
    flex-direction: row;
}

.feature-card--wide .feature-card__image {
    flex: 0 0 55%;
    aspect-ratio: auto;
}

.feature-card--wide .feature-card__body {
    justify-content: center;
}

.feature-card__num {
    display: block;
    font-size: 3rem;
    font-weight: 800;
    line-height: 1;
    margin-bottom: 0.75rem;
    color: var(--card-accent, var(--color-border));
}

.feature-card--b2b {
    --card-accent: var(--accent-terra);
}

.feature-card--foodservice {
    --card-accent: var(--accent-amber);
}

.feature-card--retail {
    --card-accent: var(--accent-green);
}

.feature-card--linked {
    border-top: 3px solid var(--card-accent, var(--color-border));
}

.features .eyebrow {
    margin-bottom: 0.75rem;
}

/* Stats band (home) */
.stats-band {
    background: var(--color-black);
    color: #fff;
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
    text-align: center;
}

.stats-band__items {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 1.5rem;
    max-width: var(--max-width);
    margin: 0 auto;
}

.stats-band .stat-item {
    background: transparent;
    border: 1px solid rgba(255, 255, 255, 0.15);
    padding: 1.5rem 1rem;
}

.stats-band .stat-value {
    color: #fff;
}

.stats-band .stat-label {
    color: rgba(255, 255, 255, 0.7);
}

.stats-band .section-note {
    color: rgba(255, 255, 255, 0.6);
    font-size: 0.85rem;
    margin-top: 1.5rem;
    margin-bottom: 0;
}

/* Quality teaser (home) */
.quality-teaser {
    margin: 0;
    background: var(--color-warm);
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
    border-top: none;
}

.quality-teaser h2 {
    color: var(--color-black);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
    margin-top: 0;
    margin-bottom: 1rem;
}

.quality-teaser > p {
    color: var(--color-text-muted);
    max-width: 42rem;
    margin-bottom: 1.5rem;
    line-height: 1.7;
}

.quality-teaser .hero-actions {
    margin-top: 2rem;
}

.quality-teaser .btn-primary {
    color: #fff;
}

/* Chip list */
.chip-list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin: 1rem 0;
    padding: 0;
    list-style: none;
}

.chip {
    display: inline-block;
    border: 1px solid var(--color-border);
    padding: 0.35rem 0.9rem;
    border-radius: 999px;
    font-size: 0.85rem;
    font-weight: 500;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    transition: border-color 0.2s ease, color 0.2s ease;
}

.chip:hover {
    border-color: var(--color-primary);
    color: var(--color-primary);
}

.chip-list-title {
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-black);
    margin: 1.5rem 0 0.5rem;
}

.b2b-list {
    margin: 1rem 0 0;
    padding: 0;
    list-style: none;
    columns: 2;
    column-gap: clamp(1.25rem, 3vw, 2.5rem);
}

.b2b-list li {
    position: relative;
    padding-left: 1.25rem;
    margin-bottom: 0.5rem;
    break-inside: avoid;
    color: var(--color-text-muted);
    line-height: 1.6;
}

.b2b-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.6em;
    width: 0.45rem;
    height: 0.45rem;
    background: var(--color-accent);
    border-radius: 1px;
}

@media (max-width: 479px) {
    .b2b-list {
        columns: 1;
    }
}

/* Cert items with icon */
.cert-item {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.cert-item__icon {
    flex-shrink: 0;
    width: 24px;
    height: 24px;
    color: var(--color-primary);
}

/* Expo gallery (RLB-093/095) */
.expo-gallery {
    display: grid;
    grid-template-columns: 1.1fr 1fr;
    gap: 1rem;
    margin-top: 1.5rem;
    max-width: 780px;
    margin-inline: auto;
}

.expo-gallery > img {
    width: 100%;
    height: auto;
    border-radius: var(--radius);
    display: block;
}

.expo-gallery > .expo-gallery__tall {
    grid-column: 1;
    grid-row: 1 / span 2;
    height: 100%;
    object-fit: contain;
}

.split-section__image {
    overflow: hidden;
    border-radius: var(--radius);
}

/* Contact card with icons */
.contact-card__item {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
    margin-bottom: 1.25rem;
}

.contact-card__item:last-child {
    margin-bottom: 0;
}

.contact-card__icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    margin-top: 0.15rem;
    color: var(--color-primary);
}

.contact-card__label {
    display: block;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    margin-bottom: 0.2rem;
}

.contact-card__value {
    margin: 0;
    color: var(--color-text);
}

.contact-card__value a {
    color: var(--color-primary);
    text-decoration: none;
}

.contact-card__value a:hover {
    text-decoration: underline;
}

/* About section on home */
.about-section {
    margin: var(--section-pad) 0;
}

.about-section .eyebrow {
    margin-bottom: 0.75rem;
}

.about-section .split-section__content h2 {
    margin-bottom: 1rem;
}

.about-section .hero-actions {
    margin-top: 1.5rem;
}

.about-section .btn-outline {
    color: var(--color-primary);
    border-color: var(--color-primary);
}

.about-section .btn-outline:hover {
    background: var(--color-primary);
    color: #fff;
}

.page-section h1,
.contact-section h1 {
    margin-top: 2.5rem;
    margin-bottom: 1rem;
    font-size: clamp(2.25rem, 5vw, 3.5rem);
    font-weight: 800;
    letter-spacing: 0;
    color: var(--color-black);
    position: relative;
    padding-top: 1.25rem;
}

.page-section h1::before,
.contact-section h1::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 48px;
    height: 4px;
    background: var(--color-primary);
}

.page-section > .page-intro,
.contact-section > p {
    color: var(--color-text-muted);
    max-width: 42rem;
    font-size: 1.15rem;
    line-height: 1.7;
}

.split-section {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(2rem, 5vw, 4rem);
    align-items: center;
    margin: var(--section-pad) 0;
}

.split-section-title {
    margin: 0;
    padding-bottom: 1.25rem;
}

.split-section-title + .split-section {
    margin-top: 0;
}

.split-section--image-wide {
    grid-template-columns: 1.15fr 0.85fr;
}

/* La foto segue l'altezza della colonna testo: img fuori dal flusso per non
   dettare l'altezza della riga, ritaglio gestito da object-fit. */
@media (min-width: 769px) {
    .split-section--image-wide {
        align-items: stretch;
    }

    .split-section--image-wide .split-section__image {
        position: relative;
        min-height: 18rem;
    }

    .split-section--image-wide .split-section__image img {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        object-fit: cover;
    }
}

.split-section--trio {
    grid-template-columns: 0.75fr 1.5fr 0.75fr;
    gap: clamp(1.5rem, 3.5vw, 2.75rem);
    margin-block-end: 0;
}

.split-section--trio .split-section__content h2 {
    margin: 0 0 0.85rem;
    font-size: clamp(1.75rem, 3.2vw, 2.75rem);
}

.split-section--trio .split-section__content p {
    margin: 0;
}

.split-section--reverse .split-section__image {
    order: 2;
}

.split-section--reverse .split-section__content {
    order: 1;
}

.split-section__image img {
    width: 100%;
    height: auto;
    border-radius: var(--radius);
    display: block;
}

.split-section__content h2 {
    margin-top: 0;
    color: var(--color-black);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
}

.split-section__content p {
    color: var(--color-text-muted);
}

.timeline {
    margin: clamp(1rem, 2.5vw, 1.75rem) 0 var(--section-pad);
}

.timeline h2 {
    color: var(--color-black);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
    margin-bottom: 2.5rem;
    text-align: center;
}

.timeline-card {
    position: relative;
    z-index: 1;
    display: inline-block;
    width: 100%;
    max-width: 28rem;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1.5rem 1.75rem;
    text-align: left;
    transition: transform 0.25s ease, box-shadow 0.25s ease;
}

.timeline-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-md);
}

.timeline-year {
    display: inline-block;
    font-weight: 800;
    font-size: 1.5rem;
    color: var(--color-primary);
    margin-bottom: 0.5rem;
    font-variant-numeric: tabular-nums;
    line-height: 1.2;
}

.timeline-card h3 {
    margin: 0 0 0.5rem;
    font-size: clamp(1.125rem, 2vw, 1.375rem);
    font-weight: 700;
    color: var(--color-black);
    line-height: 1.1;
}

.timeline-card p {
    margin: 0;
    color: var(--color-text-muted);
}

@keyframes timeline-ping {
    0% {
        transform: scale(1);
        opacity: 0.6;
    }
    100% {
        transform: scale(2.2);
        opacity: 0;
    }
}

.timeline--dual {
    --dual-gutter: 16%;
    --dual-merge-h: 9rem;
    --dual-node-top: 1.5rem;
}

.dual-legend {
    position: sticky;
    top: var(--header-scroll-pad, 120px);
    z-index: 3;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--dual-gutter);
    padding: 0.75rem 0;
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: blur(6px);
    border-bottom: 1px solid var(--color-border);
}

.dual-legend__col {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.dual-legend__col--almi {
    justify-content: flex-end;
    text-align: right;
}

.dual-legend__col img {
    height: 32px;
    width: auto;
    object-fit: contain;
}

.dual-legend__col--id img {
    height: 46px;
}

.dual-legend__name {
    font-size: 0.9rem;
    font-weight: 800;
    line-height: 1.15;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.dual-legend__col--id .dual-legend__name {
    color: var(--color-black);
}

.dual-legend__col--almi .dual-legend__name {
    color: var(--color-primary);
}

.dual-legend__note {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0;
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: 0;
    text-transform: none;
    color: var(--color-text-muted);
}

.dual-legend__col--almi .dual-legend__note {
    justify-content: flex-end;
}

.dual-legend__flag {
    flex: 0 0 auto;
    width: 16px;
    height: 11px;
    border-radius: 1px;
    box-shadow: 0 0 0 1px rgba(16, 16, 16, 0.15);
}

.dual-track {
    position: relative;
    padding: 1.25rem 0 0;
}

.dual-rail {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 2px;
    margin-left: -1px;
    background: var(--color-border);
    z-index: 0;
}

.dual-rail--id {
    left: calc(50% - var(--dual-gutter) / 2);
}

.dual-rail--almi {
    left: calc(50% + var(--dual-gutter) / 2);
}

.dual-rail__progress {
    position: absolute;
    inset: 0;
    transform-origin: top center;
}

.dual-rail--id .dual-rail__progress {
    background: linear-gradient(to bottom, #4A4640, var(--color-black));
}

.dual-rail--almi .dual-rail__progress {
    background: linear-gradient(to bottom, var(--color-primary-light), var(--color-primary-dark));
}

.dual-band {
    display: grid;
    grid-template-columns: 1fr var(--dual-gutter) 1fr;
    align-items: start;
    padding: 0.4rem 0;
}

.dual-band__year {
    grid-column: 2;
    grid-row: 1;
    margin-top: calc(var(--dual-node-top) - 0.8rem);
    text-align: center;
    font-size: clamp(1.5rem, 2.6vw, 2.25rem);
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.01em;
    color: var(--color-text-muted);
    font-variant-numeric: tabular-nums;
}

.dual-band__side {
    position: relative;
    grid-row: 1;
}

.dual-band__side--id {
    grid-column: 1;
    padding-right: 1.75rem;
    --dual-accent: var(--color-black);
}

.dual-band__side--almi {
    grid-column: 3;
    padding-left: 1.75rem;
    --dual-accent: var(--color-primary);
}

.dual-band__side::after {
    content: '';
    position: absolute;
    top: calc(var(--dual-node-top) + 6px);
    height: 1px;
    width: 1.75rem;
    background: var(--dual-accent);
    opacity: 0.35;
    z-index: 1;
}

.dual-band__side--id::after {
    right: 0;
}

.dual-band__side--almi::after {
    left: 0;
}

.dual-node {
    position: absolute;
    top: var(--dual-node-top);
    width: 13px;
    height: 13px;
    background: var(--dual-accent);
    border: 3px solid var(--color-bg);
    border-radius: 50%;
    box-shadow: 0 0 0 2px var(--dual-accent);
    z-index: 2;
}

.dual-band__side--id .dual-node {
    right: 0;
    transform: translateX(50%);
}

.dual-band__side--almi .dual-node {
    left: 0;
    transform: translateX(-50%);
}

.dual-node::after {
    content: '';
    position: absolute;
    inset: -4px;
    border-radius: 50%;
    border: 2px solid var(--dual-accent);
    opacity: 0;
}

.dual-node.is-inview::after {
    animation: timeline-ping 0.9s ease-out forwards;
}

.dual-card {
    max-width: none;
    padding: 1.1rem 1.3rem;
}

.dual-band__side--id .dual-card {
    border-right: 3px solid var(--dual-accent);
}

.dual-band__side--almi .dual-card {
    border-left: 3px solid var(--dual-accent);
}

.dual-card h3 {
    margin: 0 0 0.4rem;
    font-size: clamp(1.05rem, 1.7vw, 1.2rem);
}

.dual-card p {
    font-size: 0.9rem;
    line-height: 1.55;
}

.dual-card__brand {
    display: inline-block;
    margin-bottom: 0.45rem;
    padding: 0.12rem 0.45rem;
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--dual-accent);
    border: 1px solid currentColor;
    border-radius: var(--radius-sm);
}

.dual-merge {
    position: relative;
    padding-top: var(--dual-merge-h);
}

.dual-merge__svg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: var(--dual-merge-h);
    overflow: visible;
}

.dual-merge__path {
    fill: none;
    stroke-width: 2;
    stroke-dasharray: none;
    stroke-dashoffset: 0;
}

.dual-merge__path--id {
    stroke: var(--color-black);
}

.dual-merge__path--almi {
    stroke: var(--color-primary);
}

.dual-merge__path--joined {
    stroke: var(--color-primary);
    stroke-width: 3;
}

.dual-merge.is-armed .dual-merge__path {
    stroke-dasharray: 1;
    stroke-dashoffset: 1;
}

.dual-merge.is-armed.is-drawn .dual-merge__path {
    stroke-dashoffset: 0;
    transition: stroke-dashoffset 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}

.dual-merge.is-armed.is-drawn .dual-merge__path--joined {
    transition-duration: 0.45s;
    transition-delay: 0.85s;
}

.dual-merge__node {
    position: absolute;
    left: 50%;
    top: calc(var(--dual-merge-h) * 0.875);
    width: 18px;
    height: 18px;
    margin: -9px 0 0 -9px;
    background: var(--color-primary);
    border: 3px solid var(--color-bg);
    border-radius: 50%;
    box-shadow: 0 0 0 2px var(--color-primary), 0 0 0 9px rgba(203, 51, 59, 0);
    transition: box-shadow 0.55s ease;
    z-index: 2;
}

.dual-merge.is-merged .dual-merge__node {
    box-shadow: 0 0 0 2px var(--color-primary), 0 0 0 9px rgba(203, 51, 59, 0.16);
}

.dual-final {
    position: relative;
    z-index: 1;
    max-width: 48rem;
    margin: 0 auto;
    padding: 2.25rem 2.5rem;
    background: var(--color-black);
    color: #fff;
    border-top: 3px solid var(--color-primary);
    border-radius: var(--radius);
    box-shadow: var(--shadow-lg);
    text-align: center;
}

.dual-final__year {
    display: block;
    line-height: 1;
    font-size: clamp(2.5rem, 6vw, 3.75rem);
    font-weight: 800;
    color: var(--color-primary);
    font-variant-numeric: tabular-nums;
}

.dual-final h3 {
    margin: 0.5rem 0 0.75rem;
    font-size: clamp(1.25rem, 2.4vw, 1.75rem);
    color: #fff;
}

.dual-final p {
    margin: 0;
    color: rgba(255, 255, 255, 0.78);
}

.dual-continue {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    margin: 1.5rem auto 0;
}

.dual-continue__label {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.dual-continue__arrow {
    width: 13px;
    height: 13px;
}

.dual-continue__rail {
    width: 2px;
    height: 4rem;
    background: linear-gradient(to bottom, var(--color-primary), transparent);
}

.policy-block {
    margin: 0 0 var(--section-pad);
}

.policy-block h2 {
    color: var(--color-black);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
    margin-bottom: 1.5rem;
}

.policy-block p {
    color: var(--color-text-muted);
    line-height: 1.7;
    margin-bottom: 1.25rem;
    text-align: justify;
    hyphens: auto;
}

.policy-list {
    margin: 0 0 1.25rem;
    padding-left: 0;
    list-style: none;
}

.policy-list li {
    position: relative;
    padding-left: 1.5rem;
    margin-bottom: 0.5rem;
    line-height: 1.6;
    color: var(--color-text-muted);
    text-align: justify;
    hyphens: auto;
}

.policy-list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.65em;
    width: 0.5rem;
    height: 0.5rem;
    background: var(--color-accent);
    border-radius: 1px;
}

.policy-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    margin-top: 2rem;
}

.policy-btn {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
}

.policy-btn__icon {
    width: 17px;
    height: 17px;
    flex: 0 0 auto;
    transition: transform 0.2s ease;
}

.policy-btn:hover .policy-btn__icon {
    transform: translateY(2px);
}

.policy-heading span {
    display: block;
}

.policy-split {
    display: grid;
    grid-template-columns: 1.05fr 0.95fr;
    gap: clamp(1.75rem, 4vw, 3.5rem);
    align-items: center;
    margin-bottom: clamp(1rem, 2vw, 1.5rem);
}

.policy-split--reverse .policy-figure {
    order: -1;
}

.policy-split__text > *:last-child {
    margin-bottom: 0;
}

.policy-split p,
.policy-split .policy-list li {
    text-align: left;
    hyphens: manual;
}

.policy-figure {
    margin: 0;
    border-radius: var(--radius);
    overflow: hidden;
}

.policy-figure img {
    display: block;
    width: 100%;
    height: auto;
    border-radius: var(--radius);
}

.envlabel-block {
    margin: 0 0 var(--section-pad);
}

.envlabel-block--band {
    background: var(--color-bg-alt);
    margin: 0;
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
}

.envlabel-block h2 {
    color: var(--color-black);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
    margin-bottom: 1rem;
}

.envlabel-table-wrap {
    overflow-x: auto;
    margin-top: 1.5rem;
}

.envlabel-table-wrap--shipping {
    margin-top: 0.5rem;
}

.envlabel-subhead {
    font-size: 1rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--color-black);
    font-weight: 700;
    margin: 2.5rem 0 0.75rem;
}

.envlabel-table th.envlabel-sym,
.envlabel-table td.envlabel-sym {
    text-align: center;
    width: 80px;
}

.envlabel-symbol {
    height: 46px;
    width: auto;
    display: inline-block;
    vertical-align: middle;
}

.envlabel-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.envlabel-table th {
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    text-align: left;
    color: var(--color-black);
    padding: 0.75rem 1rem;
    border-bottom: 2px solid var(--color-black);
}

.envlabel-table td {
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--color-border);
    color: var(--color-text-muted);
    line-height: 1.5;
}

.envlabel-table td:first-child {
    color: var(--color-text);
    font-weight: 600;
}

.envlabel-table tbody tr:hover {
    background: var(--color-bg-alt);
}

.envlabel-disclaimer {
    margin-top: 1rem;
    font-style: italic;
}

.envlabel-toggle {
    display: none;
    align-items: center;
    gap: 0.35rem;
    margin-top: 0.75rem;
    padding: 0;
    border: none;
    background: none;
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-primary);
    cursor: pointer;
    transition: color 0.2s ease;
}

.envlabel-toggle:hover {
    color: var(--color-primary-dark);
}

.envlabel-toggle::after {
    content: '';
    display: inline-block;
    width: 0.4rem;
    height: 0.4rem;
    border-right: 2px solid currentColor;
    border-bottom: 2px solid currentColor;
    transform: rotate(45deg);
    margin-top: -0.15rem;
    transition: transform 0.2s ease;
}

.envlabel-group.is-collapsible .envlabel-toggle {
    display: inline-flex;
}

.envlabel-group.is-collapsible .envlabel-row--extra {
    display: none;
}

.envlabel-group.is-collapsible.is-expanded .envlabel-row--extra {
    display: table-row;
}

.envlabel-group.is-collapsible.is-expanded .envlabel-toggle::after {
    transform: rotate(-135deg);
    margin-top: 0.15rem;
}

.cert-grid {
    margin: var(--section-pad) 0;
}

.cert-grid--band {
    background: var(--color-cream);
    margin: 0;
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
}

.cert-grid h2 {
    color: var(--color-black);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
}

.cert-grid .section-note {
    color: var(--color-text-muted);
    font-size: 0.95rem;
    margin-bottom: 1.5rem;
}

.cert-items {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
}

.cert-item {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-left: 3px solid var(--color-primary);
    border-radius: var(--radius-sm);
    padding: 1rem 1.25rem;
    font-size: 0.95rem;
    transition: box-shadow 0.3s ease, transform 0.3s ease;
}

.cert-item:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-3px);
}

/* CTA certificati Almi -> almi.at (sostituisce cert-grid nella pagina Qualita') */
.certlink--band {
    background: var(--color-bg);
    margin: 0;
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
}

.certlink__card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: clamp(1.75rem, 4vw, 3rem);
    align-items: start;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-top: 3px solid var(--color-primary);
    border-radius: var(--radius-sm);
    padding: clamp(1.75rem, 4vw, 3rem);
    box-shadow: var(--shadow-md);
}

.certlink__seal {
    display: grid;
    place-items: center;
    width: clamp(84px, 9vw, 108px);
    aspect-ratio: 1;
    border-radius: 50%;
    background: var(--color-cream);
    border: 1px solid var(--color-border);
    color: var(--color-primary);
}

.certlink__seal svg {
    width: 56%;
    height: 56%;
}

.certlink__card h2 {
    margin: 0 0 1rem;
    color: var(--color-black);
    font-size: clamp(1.75rem, 3.4vw, 2.5rem);
    font-weight: 700;
    line-height: 0.95;
}

.certlink__text {
    max-width: 58ch;
    margin: 0 0 1.75rem;
    color: var(--color-text-muted);
    line-height: 1.7;
}

.certlink__points {
    list-style: none;
    display: grid;
    gap: 0.7rem;
    margin: 0 0 2rem;
    padding: 0;
}

.certlink__points li {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    font-size: 0.95rem;
    line-height: 1.55;
}

.certlink__check {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    margin-top: 0.15rem;
    color: var(--color-primary);
}

.certlink__actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem 1.75rem;
}

.certlink__btn {
    display: inline-flex;
    align-items: center;
    gap: 0.65rem;
}

.certlink__arrow {
    width: 16px;
    height: 16px;
    transition: transform 0.2s ease;
}

.certlink__btn:hover .certlink__arrow {
    transform: translate(2px, -2px);
}

.stats-grid {
    margin: var(--section-pad) 0;
}

.stats-grid h2 {
    color: var(--color-black);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
}

.stats-grid .section-note {
    color: var(--color-text-muted);
    font-size: 0.95rem;
    margin-bottom: 1.5rem;
}

.stats-items {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 1.5rem;
}

.stat-item {
    background: var(--color-bg-alt);
    border-radius: var(--radius-sm);
    padding: 1.5rem 1.25rem;
    text-align: center;
}

.stat-value {
    display: block;
    font-size: clamp(2.25rem, 4vw, 3rem);
    font-weight: 800;
    color: var(--color-primary);
    line-height: 1.1;
    margin-bottom: 0.5rem;
}

.stat-label {
    margin: 0;
    color: var(--color-text-muted);
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.contact-hub {
    margin: var(--section-pad) 0;
}

.contact-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    overflow: hidden;
}

.contact-panel__info {
    background: var(--color-cream);
    padding: clamp(1.75rem, 3vw, 2.75rem);
    display: flex;
    flex-direction: column;
}

.contact-panel__title {
    margin: 0;
    color: var(--color-black);
    font-size: 1.35rem;
    font-weight: 700;
    position: relative;
    padding-top: 1rem;
}

.contact-panel__title::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 40px;
    height: 3px;
    background: var(--color-primary);
}

.contact-list {
    list-style: none;
    margin: 1.75rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
}

.contact-list > li {
    margin-bottom: 0;
    padding: 1.1rem 0;
}

.contact-list > li + li {
    border-top: 1px solid var(--color-border);
}

.contact-list .contact-card__value + .contact-card__value {
    margin-top: 0.2rem;
}

.contact-panel__legal {
    margin-top: auto;
    margin-bottom: 0;
    padding-top: 1.75rem;
    font-size: 0.85rem;
    line-height: 1.5;
    color: var(--color-text-muted);
    text-align: left;
    hyphens: manual;
}

.contact-panel__map {
    position: relative;
    margin: 0;
    min-height: clamp(20rem, 34vw, 26rem);
}

.contact-map__link {
    position: absolute;
    inset: 0;
    display: block;
    overflow: hidden;
    cursor: pointer;
}

.contact-map__img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform 0.3s ease;
}

.contact-map__link:hover .contact-map__img,
.contact-map__link:focus-visible .contact-map__img {
    transform: scale(1.02);
}

.contact-map__badge {
    position: absolute;
    left: 1.25rem;
    right: 1.25rem;
    bottom: 1.25rem;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    background: rgba(255, 255, 255, 0.96);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1rem 1.25rem;
    box-shadow: var(--shadow-md);
}

.contact-map__heading {
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.contact-map__text {
    color: var(--color-text);
    font-weight: 600;
}

.contact-map__cta {
    margin-top: 0.35rem;
    color: var(--color-primary);
    font-weight: 600;
    text-decoration: none;
    width: fit-content;
}

.contact-map__cta:hover {
    text-decoration: underline;
}

.contact-map__attrib {
    margin-top: 0.15rem;
    color: var(--color-text-muted);
    font-size: 0.7rem;
}

.contact-topics {
    margin: var(--section-pad) 0;
}

.contact-topics h2 {
    margin-top: 0;
    margin-bottom: 0.75rem;
    color: var(--color-black);
    font-size: clamp(1.75rem, 3.5vw, 2.5rem);
    font-weight: 800;
    letter-spacing: 0;
}

.contact-topics__lead {
    max-width: 42rem;
    margin: 0 0 2rem;
    color: var(--color-text-muted);
    font-size: 1.1rem;
    line-height: 1.7;
    text-align: left;
    hyphens: manual;
}

.topic-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1.25rem;
}

.topic-card {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.5rem;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-top: 3px solid var(--topic-accent, var(--color-primary));
    border-radius: var(--radius);
    text-decoration: none;
    color: inherit;
    transition: box-shadow 0.2s ease, transform 0.2s ease;
    cursor: pointer;
}

.topic-card:hover {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

.topic-card:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 2px;
}

.topic-card--b2b {
    --topic-accent: var(--accent-terra);
}

.topic-card--horeca {
    --topic-accent: var(--accent-amber);
}

.topic-card--retail {
    --topic-accent: var(--accent-green);
}

.topic-card--quality {
    --topic-accent: var(--color-primary-dark);
}

.topic-card__num {
    display: block;
    font-size: 2rem;
    font-weight: 800;
    line-height: 1;
    color: var(--topic-accent, var(--color-primary));
}

.topic-card__title {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--color-black);
}

.topic-card__text {
    margin: 0;
    flex: 1;
    color: var(--color-text-muted);
    font-size: 0.95rem;
    line-height: 1.6;
    text-align: left;
    hyphens: manual;
}

.legal-content {
    max-width: 48rem;
    margin: var(--section-pad) 0;
}

.legal-content h1 {
    color: var(--color-black);
    margin-top: 2rem;
    font-size: clamp(2.25rem, 5vw, 3.5rem);
    font-weight: 800;
    letter-spacing: 0;
    position: relative;
    padding-top: 1.25rem;
}

.legal-content h1::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 48px;
    height: 4px;
    background: var(--color-primary);
}

.legal-content .privacy-updated {
    color: var(--color-text-muted);
    font-size: 0.9rem;
    margin-bottom: 2rem;
}

.legal-content h2 {
    color: var(--color-black);
    font-size: 1.15rem;
    font-weight: 700;
    margin-top: 2rem;
    margin-bottom: 0.5rem;
}

.legal-content p {
    color: var(--color-text-muted);
    margin-top: 0;
}

.legal-content ul {
    color: var(--color-text-muted);
    margin: 0.5rem 0 0;
    padding-left: 1.25rem;
}

.legal-content li {
    margin: 0.35rem 0;
}

.legal-content a {
    color: var(--color-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.legal-content a:hover {
    color: var(--color-primary-dark);
}

.site-footer {
    position: relative;
    overflow: hidden;
    background: var(--color-black);
    color: #e8e6e4;
    padding: 3.5rem 1.5rem 1.75rem;
    margin-top: var(--section-pad);
    border-top: 3px solid var(--color-primary);
}

.site-main:has(.cta-band:last-child) + .site-footer {
    margin-top: 0;
}

.footer-watermark {
    position: absolute;
    left: 50%;
    bottom: -2.25rem;
    transform: translateX(-50%);
    width: min(62%, 700px);
    height: auto;
    opacity: 0.055;
    filter: brightness(0) invert(1);
    pointer-events: none;
    user-select: none;
}

.footer-inner {
    position: relative;
    z-index: 1;
    max-width: var(--max-width);
    margin: 0 auto;
}

.footer-top {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 2rem;
    padding-bottom: 2.25rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.footer-brand {
    display: flex;
    align-items: center;
    gap: 1.5rem;
}

.footer-brand__logo {
    display: block;
    height: 40px;
    width: auto;
}

.footer-brand__sep {
    display: block;
    width: 1px;
    height: 32px;
    background: rgba(255, 255, 255, 0.18);
}

.footer-brand__id {
    display: block;
    height: 28px;
    width: auto;
    filter: brightness(0) invert(1);
    opacity: 0.85;
}

.footer-group {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    align-items: flex-end;
}

.footer-group img {
    display: block;
    width: auto;
    filter: brightness(0) invert(1);
    opacity: 0.85;
    transition: opacity 0.2s ease;
}

.footer-group__almi { height: 62px; }

.footer-group a:hover img { opacity: 1; }

.footer-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 2rem;
    padding: 2.5rem 0;
}

.footer-col__title {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    margin: 0 0 1.1rem;
    font-size: 0.8125rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #fff;
}

.footer-col__num {
    font-size: 0.75rem;
    font-weight: 800;
    color: var(--color-primary);
}

.footer-links {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.55rem;
}

.footer-links a,
.footer-address a {
    color: rgba(255, 255, 255, 0.72);
    text-decoration: none;
    font-size: 0.9rem;
    background-image: linear-gradient(var(--color-primary), var(--color-primary));
    background-size: 0 1px;
    background-position: 0 100%;
    background-repeat: no-repeat;
    transition: color 0.2s ease, background-size 0.25s ease;
}

.footer-links a:hover,
.footer-address a:hover {
    color: #fff;
    background-size: 100% 1px;
}

.footer-address {
    display: grid;
    gap: 0.55rem;
    font-style: normal;
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.72);
}

.footer-address span:first-child {
    font-weight: 700;
    color: #fff;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.footer-vat {
    margin: 1.25rem 0 0;
    font-size: 0.8rem;
    color: #8d8a86;
}

.footer-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    padding: 1.25rem 0 0;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
}

.footer-copyright {
    margin: 0;
    font-size: 0.82rem;
    color: #8d8a86;
}

.footer-lang {
    list-style: none;
    display: flex;
    gap: 1.1rem;
    margin: 0;
    padding: 0;
}

.footer-lang a {
    color: #8d8a86;
    text-decoration: none;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    transition: color 0.2s ease;
}

.footer-lang a:hover { color: #fff; }
.footer-lang a[aria-current="true"] { color: var(--color-primary-light); }

.footer-totop {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    color: rgba(255, 255, 255, 0.72);
    text-decoration: none;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    transition: color 0.2s ease;
}

.footer-totop svg { transition: transform 0.25s ease; }
.footer-totop:hover { color: #fff; }
.footer-totop:hover svg { transform: translateY(-3px); }

.hero-brand-badge {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 2.5rem;
    flex-wrap: wrap;
}

.hero-brand-badge img {
    height: 24px;
    width: auto;
    filter: brightness(0) invert(1);
}

.hero-brand-badge span {
    font-size: 0.9rem;
    opacity: 0.9;
}

.brand-section {
    background: var(--color-cream);
    border-top: 3px solid var(--color-primary);
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
}

.brand-section__inner {
    max-width: var(--max-width);
    margin: 0 auto;
    display: grid;
    grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
    gap: clamp(2.5rem, 5vw, 4.5rem);
    align-items: center;
}

.brand-lockup {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    margin-bottom: 2.25rem;
}

.brand-lockup .eyebrow {
    margin: 0;
    max-width: 24ch;
    padding-left: 1.25rem;
    border-left: 2px solid rgba(203, 51, 59, 0.35);
    line-height: 1.5;
}

.brand-section__logo {
    display: block;
    height: 88px;
    width: auto;
    flex-shrink: 0;
}

.brand-section__content h2 {
    margin-top: 0;
    margin-bottom: 1.5rem;
    color: var(--color-black);
    font-size: clamp(2rem, 4.5vw, 3.25rem);
    font-weight: 700;
    letter-spacing: 0;
}

.brand-section__content p:not(.eyebrow) {
    max-width: 46ch;
    margin: 0 0 1.25rem;
    color: var(--color-text-muted);
    line-height: 1.8;
}

.brand-section .hero-actions {
    margin-top: 1.75rem;
}

.brand-lines {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: clamp(1rem, 2vw, 1.75rem);
    row-gap: clamp(2rem, 3.5vw, 3rem);
    align-items: end;
}

.brand-line {
    margin: 0;
    text-align: center;
}

.brand-line img {
    display: block;
    width: 100%;
    max-height: 190px;
    height: auto;
    margin: 0 auto 1rem;
    object-fit: contain;
}

.brand-line figcaption {
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 1.45;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.product-strip {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 1.25rem;
    margin: 1.5rem 0 2.5rem;
}

.product-card {
    background: var(--color-bg-alt);
    border-radius: var(--radius);
    padding: 1.25rem;
    text-align: center;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.product-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-md);
}

.product-card img {
    display: block;
    max-height: 180px;
    width: auto;
    max-width: 100%;
    margin: 0 auto 0.75rem;
    object-fit: contain;
}

.product-card__label {
    display: block;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--color-text-muted);
}

.sector-panels {
    container-type: inline-size;
    display: flex;
    gap: 0.5rem;
    height: clamp(19rem, 32vw, 25rem);
    margin: 1.5rem 0 2.5rem;
}

.sector-panel {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    flex: 1 1 0;
    min-width: 0;
    overflow: hidden;
    border-radius: var(--radius);
    transition: flex-grow 0.45s ease;
}

.sector-panel__img {
    position: absolute;
    top: -6px;
    left: -6px;
    /* larghezza ancorata al contenitore, non alla card: la scala resta costante, la card scopre la foto */
    width: 40rem;
    width: calc(56cqw + 12px);
    max-width: none;
    height: calc(100% + 12px);
    object-fit: cover;
    transition: filter 0.45s ease;
}

.sector-panel::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        linear-gradient(90deg, rgba(16, 16, 16, 0.72) 0%, rgba(16, 16, 16, 0.3) 42%, rgba(16, 16, 16, 0) 78%),
        linear-gradient(180deg, rgba(16, 16, 16, 0.05) 0%, rgba(16, 16, 16, 0.72) 100%);
}

.sector-panel__tab {
    position: absolute;
    left: 1.1rem;
    bottom: 1.15rem;
    z-index: 2;
    max-height: calc(100% - 2.3rem);
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    white-space: nowrap;
    color: #fff;
    font-size: clamp(0.8rem, 0.95vw, 1rem);
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1;
    text-transform: uppercase;
    text-shadow: 0 1px 4px rgba(0, 0, 0, 0.55);
    transition: opacity 0.3s ease;
}

.sector-panel__body {
    position: relative;
    z-index: 2;
    padding: 1.25rem;
    opacity: 0;
    transition: opacity 0.35s ease;
}

.sector-panel__title {
    margin: 0 0 0.7rem;
    color: #fff;
    font-size: clamp(1rem, 1.5vw, 1.25rem);
    font-weight: 800;
    line-height: 1.15;
    text-transform: uppercase;
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.45);
}

.sector-panel__list {
    margin: 0;
    padding: 0;
    list-style: none;
}

.sector-panel__list li {
    position: relative;
    padding-left: 1.1rem;
    margin-bottom: 0.35rem;
    color: rgba(255, 255, 255, 0.92);
    font-size: 0.8rem;
    line-height: 1.45;
}

.sector-panel__list li::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0.55em;
    width: 0.4rem;
    height: 0.4rem;
    background: var(--color-primary-light);
    border-radius: 1px;
}

@media (hover: hover) and (min-width: 901px) {
    .sector-panels:hover .sector-panel {
        flex-grow: 0.62;
    }

    /* dopo la regola sopra: vince sulla card puntata */
    .sector-panels .sector-panel:hover {
        flex-grow: 3.6;
    }

    .sector-panel:hover .sector-panel__img {
        filter: blur(3px);
    }

    .sector-panel:hover .sector-panel__tab {
        opacity: 0;
    }

    .sector-panel:hover .sector-panel__body {
        opacity: 1;
    }
}

@media (hover: none), (max-width: 900px) {
    .sector-panels {
        display: grid;
        grid-template-columns: repeat(2, 1fr);
        height: auto;
    }

    .sector-panel {
        min-height: 16rem;
    }

    .sector-panel__img {
        width: calc(100% + 12px);
    }

    .sector-panel__tab {
        display: none;
    }

    .sector-panel__body {
        opacity: 1;
    }
}

@media (max-width: 560px) {
    .sector-panels {
        grid-template-columns: 1fr;
    }
}

.packaging-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1.25rem;
    margin: 1.5rem 0 2.5rem;
}

/* --- Products hub / subnav / catalog --- */

.visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.section-subnav {
    margin: 0 0 2rem;
    border-bottom: 1px solid var(--color-border);
    /* Fallback; JS sets --header-scroll-pad from live .site-header height */
    scroll-margin-top: var(--header-scroll-pad, 120px);
}

.section-subnav__list {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.25rem;
    list-style: none;
    margin: 0;
    padding: 0;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

.section-subnav__link {
    display: block;
    flex: 0 0 auto;
    scroll-snap-align: start;
    padding: 0.85rem 1rem;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    text-decoration: none;
    color: var(--color-text-muted);
    border-bottom: 3px solid transparent;
    white-space: nowrap;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.section-subnav__link:hover,
.section-subnav__link:focus-visible {
    color: var(--color-primary);
    outline: none;
}

.section-subnav__link[aria-current="page"] {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
}

.hub-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1.5rem;
    margin: 1.5rem 0 0.5rem;
}

.hub-card {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1.25rem;
    text-decoration: none;
    color: inherit;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.hub-card:hover,
.hub-card:focus-visible {
    transform: translateY(-4px);
    box-shadow: var(--shadow-md);
    outline: none;
}

.hub-card img {
    width: 100%;
    /* height:auto necessario: senza, l'attributo height="800" blocca l'altezza e aspect-ratio viene ignorato */
    height: auto;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: var(--radius);
    background: var(--color-bg-alt);
}

.hub-card h2 {
    margin: 0;
    font-size: 1.15rem;
    color: var(--color-black);
}

.hub-card p {
    margin: 0;
    flex: 1;
    color: var(--color-text-muted);
    font-size: 0.95rem;
    line-height: 1.55;
}

.hub-card__cta {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.catalog-toolbar {
    --catalog-control-h: 2.875rem;
    display: flex;
    flex-direction: column;
    gap: 1.15rem;
    margin: 0 0 1.75rem;
    padding-bottom: 1.15rem;
    border-bottom: 1px solid var(--color-border);
}

.catalog-toolbar__controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem;
}

.catalog-toolbar__categories {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem 1.5rem;
}

.catalog-search {
    position: relative;
    flex: 1 1 18rem;
    min-width: 0;
}

.catalog-search__icon {
    position: absolute;
    top: 50%;
    left: 0.95rem;
    width: 1rem;
    height: 1rem;
    transform: translateY(-50%);
    stroke: var(--color-text-muted);
    fill: none;
    stroke-width: 1.6;
    pointer-events: none;
}

.catalog-format {
    position: relative;
    flex: 0 0 15rem;
}

.catalog-category {
    display: none;
}

.catalog-search input,
.catalog-format select,
.catalog-reset {
    height: var(--catalog-control-h);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    font-family: inherit;
    font-size: 0.95rem;
    background: var(--color-bg);
    color: var(--color-text);
    box-sizing: border-box;
}

.catalog-search input {
    width: 100%;
    padding: 0 1rem 0 2.7rem;
}

.catalog-format select {
    width: 100%;
    appearance: none;
    -webkit-appearance: none;
    padding: 0 2.4rem 0 1rem;
    cursor: pointer;
}

.catalog-format__chevron {
    position: absolute;
    top: 50%;
    right: 0.95rem;
    width: 0.7rem;
    height: 0.45rem;
    transform: translateY(-50%);
    stroke: var(--color-text-muted);
    fill: none;
    stroke-width: 1.6;
    stroke-linecap: round;
    stroke-linejoin: round;
    pointer-events: none;
}

.catalog-search input:focus,
.catalog-format select:focus {
    outline: 2px solid var(--color-primary-light);
    outline-offset: 1px;
    border-color: var(--color-primary-light);
}

.catalog-reset {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 0 0.95rem;
    background: transparent;
    color: var(--color-text-muted);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    cursor: pointer;
    white-space: nowrap;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.catalog-reset svg {
    width: 0.65rem;
    height: 0.65rem;
    stroke: currentColor;
    fill: none;
    stroke-width: 1.6;
    stroke-linecap: round;
}

.catalog-reset:hover,
.catalog-reset:focus-visible {
    color: var(--color-primary);
    border-color: var(--color-primary);
    outline: none;
}

.catalog-reset[hidden] {
    display: none;
}

.catalog-line-chip {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
    padding: 0.45rem 0.55rem 0.45rem 0.9rem;
    border-radius: 999px;
    background: var(--color-bg-alt);
    border: 1px solid var(--color-primary);
    color: var(--color-primary);
    font-size: 0.85rem;
    font-weight: 600;
}

.catalog-line-chip[hidden] {
    display: none;
}

.catalog-line-chip button {
    appearance: none;
    border: 0;
    background: transparent;
    color: inherit;
    font-size: 1.15rem;
    line-height: 1;
    cursor: pointer;
    padding: 0.15rem 0.4rem;
    border-radius: 999px;
}

.catalog-line-chip button:hover,
.catalog-line-chip button:focus-visible {
    background: rgba(0, 0, 0, 0.06);
    outline: none;
}

.catalog-filters {
    display: flex;
    flex-wrap: wrap;
    flex: 1 1 auto;
    gap: 0.4rem;
    min-width: 0;
}

.catalog-filter {
    appearance: none;
    border: 1px solid var(--color-border);
    background: var(--color-bg-alt);
    color: var(--color-text-muted);
    font-family: inherit;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    line-height: 1;
    padding: 0.62rem 0.85rem;
    border-radius: 999px;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
}

.catalog-filter:hover,
.catalog-filter:focus-visible {
    color: var(--color-primary);
    border-color: var(--color-primary);
    outline: none;
}

.catalog-filter.is-active {
    background: var(--color-primary);
    border-color: var(--color-primary);
    color: #fff;
}

.catalog-filter:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

.catalog-filter:disabled:hover {
    color: var(--color-text-muted);
    border-color: var(--color-border);
}

.catalog-count {
    margin: 0 0 0 auto;
    font-size: 0.85rem;
    color: var(--color-text-muted);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.catalog-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1rem;
}

.catalog-item {
    background: var(--color-bg-alt);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 0;
    overflow: hidden;
}

.catalog-item[hidden] {
    display: none;
}

.catalog-body {
    display: flex;
    flex-direction: column;
}

.catalog-item.is-selected {
    border-color: var(--color-primary);
    box-shadow: 0 0 0 1px var(--color-primary);
    background: var(--color-bg);
}

.catalog-item__toggle {
    appearance: none;
    border: none;
    background: transparent;
    width: 100%;
    padding: 0.85rem 1.1rem;
    text-align: left;
    cursor: pointer;
    font-family: inherit;
    color: inherit;
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.85rem;
}

.catalog-item__toggle:hover,
.catalog-item__toggle:focus-visible {
    background: rgba(203, 51, 59, 0.04);
    outline: none;
}

.catalog-item__toggle:focus-visible {
    outline: 2px solid var(--color-primary-light);
    outline-offset: -2px;
}

.catalog-item__thumb {
    width: 72px;
    height: 72px;
    object-fit: cover;
    border-radius: var(--radius-sm);
    flex-shrink: 0;
    background: var(--color-bg-alt);
    border: 1px solid var(--color-border);
    display: block;
}

.catalog-item__thumb--empty {
    background: var(--color-warm);
}

.catalog-item__toggle-text {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 0;
}

.catalog-item__cat {
    display: block;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.catalog-item__name {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--color-black);
    line-height: 1.35;
}

.catalog-item__detail {
    padding: 0 1.1rem 1.15rem;
    border-top: 1px solid var(--color-border);
}

.catalog-item__detail[hidden] {
    display: none;
}

.catalog-panel {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 0.4rem 0.4rem 1.25rem;
    position: relative;
    box-shadow: var(--shadow-md);
}

.catalog-panel[hidden] {
    display: none;
}

.catalog-panel.is-anim {
    animation: catalog-panel-in 0.35s cubic-bezier(0.32, 0.72, 0, 1);
}

@keyframes catalog-panel-in {
    from {
        opacity: 0;
        transform: translateY(12px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.catalog-panel__img {
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    border-radius: var(--radius);
    display: block;
    margin-bottom: 0.85rem;
}

.catalog-panel__img[hidden] {
    display: none;
}

.catalog-panel__cat,
.catalog-panel__name,
.catalog-panel__body {
    padding-left: 0.85rem;
    padding-right: 0.85rem;
}

.catalog-panel__cat {
    margin: 0 0 0.3rem;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.catalog-panel__name {
    margin: 0 0 0.75rem;
    font-size: 1.3rem;
    line-height: 1.1;
    outline: none;
}

.catalog-panel__close {
    appearance: none;
    border: none;
    position: absolute;
    top: 0.75rem;
    right: 0.75rem;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.9);
    box-shadow: var(--shadow-md);
    color: var(--color-primary);
    font-size: 1.4rem;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: inherit;
    z-index: 1;
}

.catalog-panel__close:hover,
.catalog-panel__close:focus-visible {
    background: rgba(255, 255, 255, 1);
    outline: none;
}

.catalog-panel__close:focus-visible {
    outline: 2px solid var(--color-primary-light);
    outline-offset: 2px;
}

.catalog-panel__body .catalog-item__detail {
    padding: 0;
    border-top: none;
}

@media (min-width: 900px) {
    .catalog-body.has-panel {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 340px;
        gap: 1.5rem;
        align-items: start;
    }

    .catalog-body.has-panel .catalog-panel {
        position: sticky;
        top: 96px;
        max-height: calc(100vh - 120px);
        overflow-y: auto;
    }
}

@media (max-width: 899px) {
    .catalog-body.has-panel .catalog-panel {
        order: -1;
        margin-bottom: 1rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .catalog-panel.is-anim {
        animation: none;
    }
}

.catalog-detail-block {
    margin-top: 0.85rem;
}

.catalog-detail-block__title {
    margin: 0 0 0.5rem;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-text-muted);
}

.catalog-grind {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.catalog-grind__chip {
    display: inline-block;
    padding: 0.35rem 0.7rem;
    border-radius: 999px;
    background: var(--color-bg-alt);
    border: 1px solid var(--color-border);
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--color-text);
}

.catalog-formats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.85rem 0.75rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.catalog-formats__item {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: 0.25rem;
    min-width: 0;
    width: 100%;
    text-align: center;
}

.catalog-formats__item img {
    width: 32px;
    height: 32px;
    object-fit: contain;
}

.catalog-formats__label {
    font-size: 0.65rem;
    line-height: 1.25;
    color: var(--color-text-muted);
    max-width: 100%;
}

.catalog-item__verify {
    margin: 0.85rem 0 0;
    font-size: 0.8rem;
    font-style: italic;
    color: var(--color-text-muted);
}

.catalog-empty {
    margin: 1.5rem 0 0;
    padding: 1.25rem;
    background: var(--color-cream);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius);
    color: var(--color-text-muted);
    text-align: center;
}

.catalog-empty[hidden] {
    display: none;
}

/* --- Products page: tabs, lines, categories, formats --- */

.page-section--alt {
    background: var(--color-bg-alt);
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    padding-inline: max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
    padding-block: var(--section-pad);
}

.section-lead {
    max-width: 48rem;
    color: var(--color-text-muted);
    line-height: 1.7;
    margin: 0 0 1.75rem;
}

.tabs {
    margin-top: 1.5rem;
}

.tabs-bar {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.5rem;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
    margin-bottom: 1.75rem;
    padding-bottom: 0.25rem;
    border-bottom: 1px solid var(--color-border);
}

.tabs-bar__tab {
    flex: 0 0 auto;
    scroll-snap-align: start;
    appearance: none;
    border: none;
    background: transparent;
    color: var(--color-text-muted);
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    padding: 0.85rem 1.1rem;
    cursor: pointer;
    border-bottom: 3px solid transparent;
    margin-bottom: -1px;
    white-space: nowrap;
    transition: color 0.2s ease, border-color 0.2s ease;
}

.tabs-bar__tab:hover,
.tabs-bar__tab:focus-visible {
    color: var(--color-primary);
    outline: none;
}

.tabs-bar__tab[aria-selected="true"] {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
}

.tabs-panel[hidden] {
    display: none;
}

.segment-switch {
    margin-top: 0.5rem;
}

.segment-switch__bar {
    display: inline-flex;
    flex-wrap: nowrap;
    gap: 0.35rem;
    padding: 0.3rem;
    background: var(--color-bg-alt);
    border: 1px solid var(--color-border);
    border-radius: 999px;
    margin: 0 auto 1.75rem;
    max-width: 100%;
    overflow-x: auto;
}

.segment-switch {
    text-align: center;
}

.segment-switch__tab {
    appearance: none;
    border: none;
    background: transparent;
    color: var(--color-text-muted);
    font-family: inherit;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 0.65rem 1.25rem;
    border-radius: 999px;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.2s ease, color 0.2s ease;
}

.segment-switch__tab:hover,
.segment-switch__tab:focus-visible {
    color: var(--color-primary);
    outline: none;
}

.segment-switch__tab[aria-selected="true"] {
    background: var(--color-primary);
    color: #fff;
}

.segment-intro {
    text-align: left;
    max-width: 48rem;
    margin: 0 auto 1.75rem;
}

.segment-intro h3 {
    margin-top: 0;
}

.line-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1.25rem;
    margin: 0 0 2rem;
    text-align: left;
}

.line-card {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    color: inherit;
    text-decoration: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

a.line-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--shadow-md);
}

a.line-card:focus-visible {
    outline: 2px solid var(--color-primary-light);
    outline-offset: 2px;
}

.line-card img,
.line-card .img-placeholder {
    width: 100%;
    /* height:auto necessario: senza, l'attributo height="800" blocca l'altezza e aspect-ratio viene ignorato */
    height: auto;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: var(--radius);
    background: var(--color-bg-alt);
}

.line-card h3,
.line-card h4 {
    margin: 0;
    font-size: 1.05rem;
    color: var(--color-black);
}

.line-card p {
    margin: 0;
    color: var(--color-text-muted);
    font-size: 0.92rem;
    line-height: 1.55;
}

.img-placeholder {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--color-cream);
    border: 1px dashed var(--color-border);
    border-radius: var(--radius);
    color: var(--color-text-muted);
    text-align: center;
    min-height: 8rem;
    padding: 1rem;
}

.img-placeholder span {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.category-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1.25rem;
}

.category-card {
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.category-card.is-open {
    grid-column: 1 / -1;
}

.category-card__toggle {
    appearance: none;
    border: none;
    background: transparent;
    padding: 1rem;
    text-align: left;
    cursor: pointer;
    font-family: inherit;
    color: inherit;
    display: flex;
    flex-direction: column;
    gap: 0.65rem;
    width: 100%;
}

.category-card__toggle:focus-visible {
    outline: 2px solid var(--color-primary-light);
    outline-offset: -2px;
}

.category-card__toggle img,
.category-card__toggle .img-placeholder {
    width: 100%;
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: var(--radius);
}

.category-card__title {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--color-black);
}

.category-card__hint {
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--color-primary);
}

.category-card__detail {
    padding: 0 1rem 1.25rem;
    border-top: 1px solid var(--color-border);
}

.category-card__detail[hidden] {
    display: none;
}

.category-card__note {
    margin: 0.75rem 0 0;
    font-size: 0.85rem;
    color: var(--color-text-muted);
    font-style: italic;
}

.format-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 1.25rem;
    margin: 1.5rem 0 0.5rem;
}

.format-card {
    background: var(--color-bg-alt);
    border-radius: var(--radius);
    padding: 1.25rem;
    text-align: center;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.format-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--shadow-md);
}

.format-card__media {
    position: relative;
    display: block;
    width: 120px;
    height: 120px;
    margin: 0 auto 0.75rem;
}

.format-card__media img {
    position: absolute;
    inset: 0;
    display: block;
    width: 100%;
    height: 100%;
    margin: 0;
    object-fit: contain;
}

.format-card__photo {
    opacity: 0;
}

@media (hover: hover) {
    .format-card__icon,
    .format-card__photo {
        transition: opacity 0.25s ease;
    }

    .format-card--has-photo:hover .format-card__icon,
    .format-card--has-photo:focus-within .format-card__icon {
        opacity: 0;
    }

    .format-card--has-photo:hover .format-card__photo,
    .format-card--has-photo:focus-within .format-card__photo {
        opacity: 1;
    }
}

.format-card .img-placeholder {
    display: block;
    width: 100%;
    max-width: 100%;
    margin: 0 auto 0.75rem;
    object-fit: contain;
    aspect-ratio: 1;
}

.format-card__label {
    display: block;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--color-text-muted);
}

.page-section h3 {
    margin-top: 2.5rem;
    margin-bottom: 0;
    font-size: 1.25rem;
}

.page-section .timeline-card h3 {
    margin-top: 0;
    margin-bottom: 0.5rem;
    font-size: clamp(1.125rem, 2vw, 1.375rem);
}

/* Paragrafi di contenuto giustificati (escl. header, blocchi centrati, timeline storia) */
.site-main p {
    text-align: justify;
    hyphens: auto;
}

/* Eccezioni: mantenere i blocchi intenzionalmente centrati */
.cta-band p,
.stats-band .section-note,
.stat-item .stat-label,
p.catalog-empty {
    text-align: center;
    hyphens: manual;
}

/* Eccezioni: lead dei banner e timeline "La nostra storia" restano a sinistra */
.hero p,
.page-hero p,
.timeline-card p {
    text-align: left;
}

/* Eccezione: colonna testo brand Italdroghe (misura corta, niente giustificato) */
.brand-section__content p {
    text-align: left;
    hyphens: manual;
}

/* Eccezione: card CTA certificati almi.at (misura corta, niente giustificato) */
.certlink p {
    text-align: left;
    hyphens: manual;
}

/* Eccezione: testi pagina Contatti (legal, lead topic, card) */
.contact-panel__legal,
.contact-topics__lead,
.topic-card__text {
    text-align: left;
    hyphens: manual;
}

@media (max-width: 1024px) {
    .footer-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 2rem 1.5rem;
    }
}

@media (max-width: 768px) {
    .catalog-search {
        flex: 1 1 100%;
    }

    .catalog-format {
        flex: 1 1 auto;
    }

    .catalog-filters {
        display: none;
    }

    .catalog-category {
        display: block;
        flex: 1 1 100%;
    }

    .catalog-count {
        margin-left: 0;
        flex-basis: 100%;
    }

    .nav-toggle {
        display: block;
    }

    .nav-panel {
        display: none;
        width: 100%;
        flex-direction: column;
        gap: 1.5rem;
        padding: 1.5rem 0 0.5rem;
        border-top: 1px solid var(--color-border);
        margin-top: 0.5rem;
    }

    .nav-panel.is-open {
        display: flex;
    }

    .nav-menu {
        width: 100%;
        margin-left: 0;
        flex-direction: column;
        align-items: flex-start;
        gap: 0;
    }

    .nav-menu li {
        width: 100%;
    }

    .nav-menu a {
        display: block;
        padding: 0.75rem 0;
        font-size: 1.25rem;
        letter-spacing: 0.04em;
        border-bottom: none;
    }

    .lang-switcher {
        margin-left: 0;
        padding-left: 0;
        border-left: none;
        width: 100%;
        gap: 1rem;
    }

    .hero,
    .page-hero {
        width: auto;
        margin-inline: -1.5rem;
        padding-inline: 1.5rem;
    }

    .hero {
        min-height: 60vh;
        padding-top: 3rem;
        padding-bottom: 3rem;
    }

    .hero h1,
    .page-hero h1 {
        max-width: none;
        overflow-wrap: break-word;
    }

    .hero p,
    .page-hero p {
        max-width: 100%;
        overflow-wrap: break-word;
    }

    .hero-actions {
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .policy-actions,
    .certlink__actions {
        justify-content: center;
    }

    .certlink__card {
        grid-template-columns: 1fr;
        gap: 1.75rem;
    }

    .certlink__seal {
        width: 76px;
    }

    .topic-grid {
        grid-template-columns: 1fr;
    }

    .split-section,
    .split-section--reverse {
        grid-template-columns: 1fr;
    }

    .split-section--reverse .split-section__image,
    .split-section--reverse .split-section__content {
        order: unset;
    }

    .policy-split {
        grid-template-columns: 1fr;
    }

    .policy-split--reverse .policy-figure {
        order: 0;
    }

    .split-section__image--plain img {
        max-width: 18rem;
        margin-inline: auto;
    }

    .page-hero {
        min-height: 260px;
    }

    .expo-gallery {
        grid-template-columns: 1fr;
    }

    .expo-gallery > .expo-gallery__tall {
        grid-column: auto;
        grid-row: auto;
        height: auto;
        max-width: 22rem;
        margin-inline: auto;
    }

    .brand-section__inner {
        grid-template-columns: 1fr;
    }

    .brand-lockup {
        gap: 1rem;
        margin-bottom: 1.75rem;
    }

    .brand-lockup .eyebrow {
        padding-left: 1rem;
    }

    .brand-section__logo {
        height: 68px;
    }

    .features-grid--editorial {
        grid-template-columns: 1fr;
    }

    .feature-card--wide .feature-card__link {
        flex-direction: column;
    }

    .feature-card--wide .feature-card__image {
        flex: none;
        aspect-ratio: 16 / 10;
    }

    .packaging-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .line-grid,
    .category-grid,
    .format-grid,
    .hub-grid,
    .catalog-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .tabs-bar {
        mask-image: linear-gradient(to right, #000 85%, transparent);
    }

    .section-subnav {
        border-bottom: none;
        margin-bottom: 1.5rem;
    }

    .section-subnav__list {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.5rem;
        overflow-x: visible;
        scroll-snap-type: none;
        mask-image: none;
    }

    .section-subnav__list li:last-child:nth-child(odd) {
        grid-column: 1 / -1;
    }

    .section-subnav__link {
        display: flex;
        align-items: center;
        justify-content: center;
        min-height: 44px;
        padding: 0.6rem 0.75rem;
        text-align: center;
        white-space: normal;
        font-size: 0.72rem;
        line-height: 1.25;
        border: 1px solid var(--color-border);
        border-radius: 999px;
        background: var(--color-bg-alt);
        transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
    }

    .section-subnav__link[aria-current="page"] {
        background: var(--color-primary);
        border-color: var(--color-primary);
        color: #fff;
    }

    .footer-top {
        flex-direction: column;
        align-items: flex-start;
    }

    .footer-group {
        align-items: flex-start;
    }

    .footer-bottom {
        justify-content: flex-start;
    }

    .footer-watermark {
        width: 100%;
        bottom: -1.5rem;
    }

    .timeline--dual {
        --dual-gutter: 0%;
        --dual-merge-h: 4rem;
        --dual-node-top: 1.35rem;
    }

    .dual-legend {
        display: none;
    }

    .dual-rail--id {
        display: none;
    }

    .dual-rail--almi {
        left: 8px;
    }

    .dual-rail--almi .dual-rail__progress {
        background: linear-gradient(to bottom, var(--color-black), var(--color-primary));
    }

    .dual-band {
        grid-template-columns: 1fr;
        row-gap: 0.4rem;
        padding: 0.65rem 0;
    }

    .dual-band__year {
        grid-column: 1;
        grid-row: auto;
        margin-top: 0;
        padding-left: 2.5rem;
        text-align: left;
        font-size: 1.6rem;
    }

    .dual-band__side--id,
    .dual-band__side--almi {
        grid-column: 1;
        grid-row: auto;
        padding: 0 0 0 2.5rem;
    }

    .dual-band__side--id .dual-node,
    .dual-band__side--almi .dual-node {
        left: 1px;
        right: auto;
        transform: translateX(-50%);
    }

    .dual-band__side::after {
        display: none;
    }

    .dual-merge::before {
        content: '';
        position: absolute;
        left: 8px;
        top: 0;
        width: 2px;
        height: var(--dual-merge-h);
        margin-left: -1px;
        background: var(--color-primary);
    }

    .dual-merge__svg {
        display: none;
    }

    .dual-merge__node {
        left: 8px;
        top: 2.5rem;
    }

    .dual-final {
        padding: 1.75rem 1.5rem;
    }

    .timeline-card {
        max-width: none;
    }
}

@media (max-width: 480px) {
    .footer-grid {
        grid-template-columns: 1fr;
    }

    .footer-brand {
        gap: 1rem;
    }

    .brand-lines {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .brand-lockup {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.875rem;
    }

    .brand-lockup .eyebrow {
        max-width: none;
        padding-left: 0;
        border-left: none;
    }

    .line-grid,
    .category-grid,
    .format-grid,
    .hub-grid,
    .catalog-grid {
        grid-template-columns: 1fr;
    }
}

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

    .product-card:hover,
    .line-card:hover,
    .format-card:hover,
    .hub-card:hover,
    .cert-item:hover,
    .certlink__btn:hover .certlink__arrow,
    .policy-btn:hover .policy-btn__icon,
    .timeline-card:hover,
    .dual-card:hover {
        transform: none;
    }

    .dual-node::after {
        animation: none !important;
    }

    .dual-merge__node {
        transition: none;
    }
}

/* --- Soluzioni Industria: banda "Il tuo partner nell'industria alimentare" (RLB-091) --- */
.partner-band {
    background: var(--color-cream);
    margin: 0 0 var(--section-pad);
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    padding: var(--section-pad) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem));
}

.partner-band__inner {
    display: grid;
    grid-template-columns: 1.08fr 0.92fr;
    gap: clamp(2rem, 5vw, 4rem);
}

.partner-band__content h2 {
    margin: 0 0 1rem;
    color: var(--color-black);
    font-size: clamp(1.75rem, 3vw, 2.25rem);
    font-weight: 700;
    line-height: 0.95;
}

.partner-lead {
    max-width: 52ch;
    margin: 0 0 2rem;
    color: var(--color-text-muted);
}

.partner-list {
    list-style: none;
    margin: 0;
    padding: 0;
    counter-reset: partner;
}

.partner-item {
    counter-increment: partner;
    display: flex;
    gap: 1rem;
    padding: 0.95rem 0;
    border-top: 1px solid var(--color-border);
    transition: border-color 0.25s ease;
}

.partner-item:last-child {
    border-bottom: 1px solid var(--color-border);
}

.partner-item::before {
    content: counter(partner, decimal-leading-zero);
    flex: 0 0 2.25rem;
    font-size: 0.95rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.04em;
    line-height: 1.6;
    color: var(--color-primary);
}

.partner-item__body {
    min-width: 0;
}

.partner-item__title {
    margin: 0 0 0.15rem;
    color: var(--color-black);
    font-weight: 700;
    font-size: 1rem;
    line-height: 1.5;
    transition: color 0.25s ease;
}

.partner-item__text {
    margin: 0;
    color: var(--color-text-muted);
    font-size: 0.92rem;
    line-height: 1.6;
}

.partner-band__media {
    position: relative;
}

.partner-media {
    position: sticky;
    top: calc(var(--header-scroll-pad, 120px) + 1rem);
}

.partner-media__frame {
    position: relative;
    border-radius: var(--radius);
    overflow: hidden;
}

.partner-media__frame img {
    display: block;
    width: 100%;
    height: auto;
}

.partner-thumbs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(0.5rem, 1.2vw, 0.85rem);
    margin-top: clamp(0.5rem, 1.2vw, 0.85rem);
}

.partner-stat {
    position: absolute;
    left: 0;
    bottom: 0;
    max-width: 15rem;
    margin: 0;
    padding: 1rem 1.5rem 1.1rem;
    background: var(--color-primary);
    color: #fff;
}

.partner-stat__value {
    display: block;
    font-size: clamp(2rem, 3.6vw, 2.75rem);
    font-weight: 800;
    line-height: 1;
    letter-spacing: -0.02em;
}

.partner-stat__label {
    display: block;
    margin-top: 0.35rem;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    line-height: 1.4;
    text-transform: uppercase;
}

/* Paragrafi della banda: misura corta, niente giustificato (cfr. .certlink p) */
.partner-band p {
    text-align: left;
    hyphens: manual;
}

@media (hover: hover) {
    .partner-item:hover {
        border-top-color: var(--color-primary);
    }

    .partner-item:hover .partner-item__title {
        color: var(--color-primary);
    }
}

@media (max-width: 899px) {
    .partner-band__inner {
        grid-template-columns: 1fr;
    }

    .partner-media {
        position: static;
    }

    .contact-panel {
        grid-template-columns: 1fr;
    }

    .contact-panel__map {
        min-height: 16rem;
    }
}

@media (max-width: 480px) {
    .partner-stat {
        position: static;
        max-width: none;
    }
}

/* Fallback: se AOS non e' disponibile, i blocchi data-aos restano visibili */
html.aos-unavailable [data-aos] {
    opacity: 1 !important;
    transform: none !important;
}

/* --- Storia: timeline pinned stage (RLB-125, rullo continuo RLB-126) --- */

.dual-progress,
.dual-scrollhint {
    display: none;
}

.timeline--dual.is-pinned {
    --story-step-scroll: 36vh;
    --story-spacing: clamp(15rem, 34vh, 22rem);
    --story-count: 18;
    --dual-gutter: 16%;
    margin-inline: calc(50% - 50vw);
    width: 100vw;
    margin-block: 0 var(--section-pad);
}

.timeline--dual.is-pinned .dual-stage {
    position: relative;
    height: calc(100vh + var(--story-count) * var(--story-step-scroll));
    height: calc(100dvh + var(--story-count) * var(--story-step-scroll));
}

.timeline--dual.is-pinned .dual-stage__pin {
    position: sticky;
    top: 0;
    height: 100vh;
    height: 100dvh;
    display: flex;
    flex-direction: column;
    gap: 1rem;
    overflow: hidden;
    background: var(--color-bg);
    padding: calc(var(--header-scroll-pad, 120px) + 0.75rem) max(1.5rem, calc((100vw - var(--max-width)) / 2 + 1.5rem)) 1.5rem;
}

.timeline--dual.is-pinned .dual-legend {
    position: static;
    flex: 0 0 auto;
    background: none;
    backdrop-filter: none;
    padding-top: 0;
}

.timeline--dual.is-pinned .dual-stage__viewport {
    position: relative;
    flex: 1 1 auto;
    min-height: 0;
}

.timeline--dual.is-pinned .dual-track {
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 18%, #000 82%, transparent 100%);
    mask-image: linear-gradient(to bottom, transparent 0, #000 18%, #000 82%, transparent 100%);
}

.timeline--dual.is-pinned .dual-track,
.timeline--dual.is-pinned .dual-merge {
    position: absolute;
    inset: 0;
    padding: 0;
}

.timeline--dual.is-pinned .dual-rail {
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 var(--story-rail-start, 16%), #000 var(--story-rail-end, 84%), transparent calc(var(--story-rail-end, 84%) + 4%));
    mask-image: linear-gradient(to bottom, transparent 0, #000 var(--story-rail-start, 16%), #000 var(--story-rail-end, 84%), transparent calc(var(--story-rail-end, 84%) + 4%));
}

.timeline--dual.is-pinned .dual-rail__progress {
    transform: none;
}

.timeline--dual.is-pinned .dual-band,
.timeline--dual.is-pinned .dual-merge {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

.timeline--dual.is-pinned .dual-band.is-near {
    visibility: visible;
    opacity: calc(var(--o, 0) * var(--story-band-dim, 1));
    will-change: transform, opacity;
}

.timeline--dual.is-pinned .dual-merge.is-near {
    visibility: visible;
    opacity: var(--o, 0);
    will-change: transform, opacity;
}

.timeline--dual.is-pinned .dual-band.is-focus {
    pointer-events: auto;
}

.timeline--dual.is-pinned .dual-band {
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    align-items: center;
    padding: 0;
    transform: translateY(-50%) translateY(calc(var(--d, 0) * var(--story-spacing))) scale(var(--s, 1));
}

.timeline--dual.is-pinned .dual-band__year {
    margin-top: 0;
    align-self: center;
    font-size: clamp(2.25rem, 4.8vw, 4rem);
    color: var(--color-black);
}

.timeline--dual.is-pinned .dual-band__side--id {
    padding-right: 2.5rem;
    transform: translateX(calc(var(--ad, 0) * -2.6rem));
}

.timeline--dual.is-pinned .dual-band__side--almi {
    padding-left: 2.5rem;
    transform: translateX(calc(var(--ad, 0) * 2.6rem));
}

.timeline--dual.is-pinned .dual-node {
    top: 50%;
}

.timeline--dual.is-pinned .dual-band__side--id .dual-node {
    transform: translate(50%, -50%);
}

.timeline--dual.is-pinned .dual-band__side--almi .dual-node {
    transform: translate(-50%, -50%);
}

.timeline--dual.is-pinned .dual-band__side::after {
    top: 50%;
    width: 2.5rem;
}

.timeline--dual.is-pinned .dual-card {
    padding: 1.4rem 1.6rem;
    box-shadow: var(--shadow-md);
}

.timeline--dual.is-pinned .dual-card p {
    font-size: 0.95rem;
}

.timeline--dual.is-pinned .dual-merge {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.timeline--dual.is-pinned .dual-merge__svg {
    position: static;
    flex: 0 1 auto;
    width: 100%;
    height: 42%;
    min-height: 0;
    -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 8%, #000 var(--story-merge-reveal, 0%), transparent calc(var(--story-merge-reveal, 0%) + 1.5%));
    mask-image: linear-gradient(to bottom, transparent 0, #000 8%, #000 var(--story-merge-reveal, 0%), transparent calc(var(--story-merge-reveal, 0%) + 1.5%));
}

.timeline--dual.is-pinned .dual-merge__path {
    stroke-dasharray: none;
    stroke-dashoffset: 0;
    transition: none;
}

.timeline--dual.is-pinned .dual-merge__node {
    position: static;
    flex: 0 0 auto;
    margin: -9px 0 0;
    opacity: var(--story-final-o, 1);
}

.timeline--dual.is-pinned .dual-final {
    position: static;
    flex: 0 0 auto;
    width: min(46rem, 100%);
    max-width: none;
    margin: 0;
    padding: 1.5rem 2rem 1.65rem;
    opacity: var(--story-final-o, 1);
    transform: translateY(var(--story-final-lift, 2.5rem));
}

.timeline--dual.is-pinned .dual-final__year {
    font-size: clamp(2rem, 4.4vw, 3rem);
}

.timeline--dual.is-pinned .dual-final h3 {
    margin: 0.35rem 0 0.55rem;
}

.timeline--dual.is-pinned .dual-final p {
    font-size: 0.95rem;
}

.timeline--dual.is-pinned .dual-continue {
    position: static;
    flex: 0 0 auto;
    margin: 0.85rem 0 0;
    gap: 0.35rem;
    opacity: var(--story-final-o, 1);
    transform: translateY(var(--story-final-lift, 2.5rem));
}

.timeline--dual.is-pinned .dual-continue__rail {
    height: 2.25rem;
}

.timeline--dual.is-pinned .dual-progress {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex: 0 0 auto;
}

.timeline--dual.is-pinned .dual-progress__label {
    flex: 0 0 auto;
    font-size: 0.75rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--color-text-muted);
}

.timeline--dual.is-pinned .dual-progress__list {
    position: relative;
    flex: 1 1 auto;
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: 24px;
}

.timeline--dual.is-pinned .dual-progress__list::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    height: 2px;
    margin-top: -1px;
    background: var(--color-border);
    z-index: 0;
}

.timeline--dual.is-pinned .dual-progress__fill {
    position: absolute;
    left: 0;
    top: 50%;
    width: 100%;
    height: 2px;
    margin-top: -1px;
    background: var(--color-primary);
    transform: scaleX(0);
    transform-origin: left center;
    z-index: 1;
    pointer-events: none;
}

.timeline--dual.is-pinned .dual-progress__tick {
    position: relative;
    z-index: 2;
    width: 12px;
    height: 12px;
    padding: 0;
    border: 0;
    background: transparent;
    cursor: pointer;
}

.timeline--dual.is-pinned .dual-progress__tick::before {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    width: 7px;
    height: 7px;
    margin: -3.5px 0 0 -3.5px;
    border-radius: 50%;
    background: var(--color-border);
    transition: background 0.25s ease, transform 0.25s ease;
}

.timeline--dual.is-pinned .dual-progress__tick.is-active::before {
    background: var(--color-primary);
    transform: scale(1.75);
}

.timeline--dual.is-pinned .dual-progress__tick:focus-visible {
    outline: 2px solid var(--color-primary);
    outline-offset: 3px;
    border-radius: 50%;
}

.timeline--dual.is-pinned .dual-scrollhint {
    display: flex;
    position: absolute;
    left: 50%;
    bottom: 0.5rem;
    transform: translateX(-50%);
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.4s ease;
    z-index: 4;
}

.timeline--dual.is-pinned.is-start .dual-scrollhint {
    opacity: 1;
}

.timeline--dual.is-pinned .dual-scrollhint__arrow {
    width: 14px;
    height: 14px;
    animation: dual-scrollhint-bob 1.5s ease-in-out infinite;
}

@keyframes dual-scrollhint-bob {
    0%,
    100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(4px);
    }
}

@media (max-width: 768px) {
    .timeline--dual.is-pinned {
        --dual-gutter: 0%;
        --story-step-scroll: 42vh;
        --story-spacing: clamp(17rem, 46vh, 26rem);
    }

    .timeline--dual.is-pinned .dual-stage__pin {
        gap: 0.75rem;
        padding: calc(var(--header-scroll-pad, 96px) + 0.5rem) 1.25rem 1rem;
    }

    .timeline--dual.is-pinned .dual-track {
        -webkit-mask-image: linear-gradient(to bottom, transparent 0, #000 10%, #000 90%, transparent 100%);
        mask-image: linear-gradient(to bottom, transparent 0, #000 10%, #000 90%, transparent 100%);
    }

    .timeline--dual.is-pinned .dual-rail,
    .timeline--dual.is-pinned .dual-node,
    .timeline--dual.is-pinned .dual-band__side::after {
        display: none;
    }

    .timeline--dual.is-pinned .dual-band {
        grid-template-columns: 1fr;
        row-gap: 0.75rem;
    }

    .timeline--dual.is-pinned .dual-band__year {
        grid-column: 1;
        grid-row: 1;
        padding-left: 0;
        text-align: center;
        font-size: clamp(2.25rem, 13vw, 3.5rem);
    }

    .timeline--dual.is-pinned .dual-band__side--id,
    .timeline--dual.is-pinned .dual-band__side--almi {
        grid-column: 1;
        grid-row: auto;
        padding: 0;
    }

    .timeline--dual.is-pinned .dual-band__side--id {
        transform: translateX(calc(var(--ad, 0) * -1.6rem));
    }

    .timeline--dual.is-pinned .dual-band__side--almi {
        transform: translateX(calc(var(--ad, 0) * 1.6rem));
    }

    .timeline--dual.is-pinned .dual-card {
        padding: 1rem 1.1rem;
    }

    .timeline--dual.is-pinned .dual-card p {
        font-size: 0.85rem;
        line-height: 1.5;
    }

    .timeline--dual.is-pinned .dual-merge__svg {
        display: block;
        height: 26%;
    }

    .timeline--dual.is-pinned .dual-merge::before {
        display: none;
    }

    .timeline--dual.is-pinned .dual-final {
        padding: 1.5rem 1.25rem;
    }

    .timeline--dual.is-pinned .dual-continue__rail {
        height: 2rem;
    }

    .timeline--dual.is-pinned .dual-continue__label {
        font-size: 0.66rem;
    }

    .timeline--dual.is-pinned .dual-progress__tick {
        width: 9px;
        height: 9px;
    }

    .timeline--dual.is-pinned .dual-progress__label {
        font-size: 0.68rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .timeline--dual.is-pinned .dual-scrollhint__arrow {
        animation: none !important;
    }
}

/* --- Soluzioni Industria: dial editoriale Seasonings / Blends (RLB-153, da RLB-150/151/152) --- */
.cycle-blocks {
    margin: 0 0 var(--section-pad);
}

.cycle-block {
    display: grid;
    gap: clamp(1.5rem, 4vw, 3.5rem);
    align-items: center;
    padding-block: clamp(1rem, 2vw, 1.75rem);
}

.cycle-block:first-child {
    padding-block-start: 0;
}

.cycle-block:last-child {
    padding-block-end: 0;
}

.cycle-block + .cycle-block {
    border-top: 1px solid var(--color-border);
}

.cycle-block__intro {
    max-width: 34rem;
}

.cycle-lockup {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    margin: 0.6rem 0 1rem;
    color: var(--color-black);
    font-size: clamp(2rem, 4.2vw, 3.4rem);
    font-weight: 800;
    line-height: 0.95;
}

.cycle-lockup__line:first-child {
    margin-bottom: 0.4rem;
    padding-bottom: 0.4rem;
    border-bottom: 4px solid var(--color-primary);
}

.cycle-lead {
    max-width: 34ch;
    margin: 0;
    color: var(--color-text-muted);
    text-align: left;
    hyphens: manual;
}

.cycle-orbit {
    --cycle-orbit-size: clamp(20rem, 58vw, 30rem);
    --cycle-orbit-r: calc(var(--cycle-orbit-size) * 0.34);
    --cycle-node-w: clamp(6rem, 11vw, 8.5rem);
    /* min-height 3.1rem della pill + bordi: serve per dimensionare la scatola sul contenuto */
    --cycle-node-h: 3.2rem;
    --cycle-step: calc(360deg / var(--cycle-n));
    /* var(--color-primary) al 30%: l'anello resta sotto la soglia visiva delle pill */
    --cycle-ring-color: rgba(203, 51, 59, 0.3);
    position: relative;
    width: var(--cycle-orbit-size);
    height: calc(var(--cycle-orbit-r) * 2 + var(--cycle-node-h) + 1.4rem);
    margin: 0 auto;
}

.cycle-orbit__ring {
    position: absolute;
    top: 50%;
    left: 50%;
    width: calc(var(--cycle-orbit-r) * 2);
    height: calc(var(--cycle-orbit-r) * 2);
    border: 2px solid var(--cycle-ring-color);
    border-radius: 50%;
    transform: translate(-50%, -50%);
}

.cycle-orbit__ring::before {
    content: "";
    position: absolute;
    inset: -14px;
    border: 1px dashed rgba(203, 51, 59, 0.22);
    border-radius: 50%;
    animation: cycle-spin 44s linear infinite;
}

.cycle-display {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    width: calc(var(--cycle-orbit-size) * 0.48);
    height: calc(var(--cycle-orbit-size) * 0.48);
    padding: 0.9rem;
    background: var(--color-bg-alt);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    text-align: center;
}

.cycle-display__icon {
    flex: none;
    display: block;
    width: 20px;
    height: 20px;
    margin: 0 auto 0.5rem;
    color: var(--color-primary);
}

.cycle-display__stack {
    position: relative;
    flex: 1 1 auto;
    width: 100%;
}

.cycle-display__item {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    opacity: 0;
    transition: opacity 0.35s ease;
}

.cycle-display__item.is-active {
    opacity: 1;
}

.cycle-display__label {
    color: var(--color-primary);
    font-size: clamp(0.78rem, 1.15vw, 0.95rem);
    font-weight: 800;
    letter-spacing: 0.08em;
    line-height: 1.2;
    text-transform: uppercase;
}

.cycle-display__values {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.1rem 0.45rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.cycle-display__values li {
    color: var(--color-text-muted);
    font-size: 0.7rem;
    line-height: 1.4;
}

.cycle-display__values li:not(:last-child)::after {
    content: "·";
    margin-left: 0.45rem;
    color: var(--color-border);
}

.cycle-nodes {
    list-style: none;
    margin: 0;
    padding: 0;
}

.cycle-node {
    position: absolute;
    top: 50%;
    left: 50%;
    z-index: 1;
    width: var(--cycle-node-w);
    transform:
        translate(-50%, -50%)
        rotate(calc(var(--cycle-i) * var(--cycle-step)))
        translate(0, calc(-1 * var(--cycle-orbit-r)))
        rotate(calc(-1 * var(--cycle-i) * var(--cycle-step)));
}

.cycle-node__label {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 3.1rem;
    padding: 0.5rem 0.6rem;
    background: var(--color-bg);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
    color: var(--color-black);
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    line-height: 1.25;
    text-align: center;
    text-transform: uppercase;
    transition: border-color 0.3s ease, color 0.3s ease, box-shadow 0.3s ease, transform 0.3s ease;
}

.cycle-node.is-active .cycle-node__label {
    border-color: var(--color-primary);
    color: var(--color-primary);
    box-shadow: 0 8px 22px rgba(203, 51, 59, 0.16);
    transform: scale(1.08);
}

@keyframes cycle-spin {
    from {
        transform: rotate(0deg);
    }

    to {
        transform: rotate(360deg);
    }
}

@media (hover: hover) {
    .cycle-node:hover .cycle-node__label {
        border-color: var(--color-primary);
        color: var(--color-primary);
    }
}

@media (min-width: 1000px) {
    .cycle-block {
        grid-template-columns: 0.85fr 1.15fr;
    }

    .cycle-block--reverse {
        grid-template-columns: 1.15fr 0.85fr;
    }

    .cycle-block--reverse .cycle-block__intro {
        order: 2;
        justify-self: end;
        text-align: right;
    }

    .cycle-block--reverse .cycle-lockup {
        align-items: flex-end;
    }

    .cycle-block--reverse .cycle-lead {
        margin-left: auto;
        text-align: right;
    }

    .cycle-block--reverse .cycle-orbit {
        order: 1;
    }

    .cycle-orbit {
        --cycle-orbit-size: clamp(24rem, 38vw, 34rem);
    }
}

@media (max-width: 767px) {
    /* Il dial perde senso senza l'anello: sezione nascosta su smartphone (RLB-172) */
    .cycle-blocks {
        display: none;
    }

    .cycle-orbit {
        display: flex;
        flex-direction: column;
        gap: 0.75rem;
        width: 100%;
        height: auto;
    }

    .cycle-orbit__ring {
        display: none;
    }

    .cycle-nodes {
        order: 1;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 0.5rem;
    }

    .cycle-node {
        position: static;
        width: auto;
        transform: none;
    }

    .cycle-node.is-active .cycle-node__label {
        transform: none;
    }

    .cycle-display {
        order: 2;
        display: block;
        position: static;
        width: auto;
        height: auto;
        padding: 0;
        background: none;
        border-radius: 0;
        transform: none;
        text-align: left;
    }

    .cycle-display__icon {
        display: none;
    }

    .cycle-display__stack {
        position: static;
        display: grid;
        gap: 0.5rem;
    }

    .cycle-display__item {
        display: none;
    }

    .cycle-display__item--detail {
        position: static;
        display: grid;
        gap: 0.2rem;
        justify-items: start;
        padding: 0.6rem 0.8rem;
        background: var(--color-bg-alt);
        border-left: 2px solid var(--color-primary);
        border-radius: var(--radius);
        opacity: 1;
    }

    .cycle-display__values {
        justify-content: flex-start;
    }
}

@media (prefers-reduced-motion: reduce) {
    .cycle-orbit__ring::before {
        animation: none;
    }

    .cycle-node__label,
    .cycle-display__item {
        transition: none;
    }

    .cycle-node.is-active .cycle-node__label {
        transform: none;
    }

    .sector-panel,
    .sector-panel__img,
    .sector-panel__tab,
    .sector-panel__body {
        transition: none;
    }
}
