/* ═══════════════════════════════════════════════════════════════
   ARTMAN — HOMEPAGE 2026 · "Il Teatro della Mente"
   Caricato SOLO da index.html, dopo style.css.
   Tutte le regole che sovrascrivono style.css sono prefissate con
   body.home / .home per vincere sempre, indipendentemente dall'ordine
   di caricamento asincrono dei due fogli.
   Il CSS dell'hero (above the fold) è inline nel <head> di index.html.
   Scala tipografica "fine": titoli max ~2.5rem, testo corrente 0.9rem.
   ═══════════════════════════════════════════════════════════════ */

/* ───────── Base / sezioni ───────── */
body.home section {
    max-width: none;
    margin: 0;
    padding: clamp(4.5rem, 9vw, 7.5rem) clamp(1.1rem, 4vw, 3rem);
    position: relative;
}

.home .sx-inner {
    max-width: 1200px;
    margin: 0 auto;
    position: relative;
}

.home .sx-head {
    text-align: center;
    margin: 0 auto clamp(2.2rem, 5vw, 3.8rem);
    max-width: 780px;
}

.home .sx-kicker {
    display: inline-flex;
    align-items: center;
    gap: 0.9rem;
    font-family: 'Montserrat', sans-serif;
    font-size: 0.7rem;
    font-weight: 500;
    letter-spacing: 0.36em;
    text-transform: uppercase;
    color: var(--gold);
    margin-bottom: 1.1rem;
    min-height: 1em;
    white-space: nowrap;
}

.home .sx-kicker::before,
.home .sx-kicker::after {
    content: '';
    width: 34px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gold));
}

.home .sx-kicker::after {
    background: linear-gradient(90deg, var(--gold), transparent);
}

/* Le linee del kicker si disegnano quando l'intestazione entra in scena */
html.js .home .sx-kicker::before,
html.js .home .sx-kicker::after {
    transform: scaleX(0);
    transition: transform 1.1s cubic-bezier(.2,.7,.2,1) 0.35s;
}

html.js .home .sx-kicker::before { transform-origin: right; }
html.js .home .sx-kicker::after  { transform-origin: left; }

html.js .home .in .sx-kicker::before,
html.js .home .in .sx-kicker::after { transform: none; }

.home .sx-title {
    font-family: 'Cinzel', serif;
    font-weight: 500;
    font-size: clamp(1.45rem, 3.1vw, 2.45rem);
    line-height: 1.18;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    background: linear-gradient(180deg, #fff3c4 0%, #e8c75a 45%, #9a7b1a 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: var(--gold);
}

/* Titoli divisi in parole da home.js: ogni parola emerge da una maschera */
.home .sx-title.split { background: none; }

.home .sx-title .wd {
    display: inline-block;
    overflow: hidden;
    vertical-align: top;
    padding: 0.06em 0.04em 0.12em;
    margin: -0.06em -0.04em -0.12em;
}

.home .sx-title .wi {
    display: inline-block;
    background: linear-gradient(180deg, #fff3c4 0%, #e8c75a 45%, #9a7b1a 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    transform: translateY(112%) rotate(5deg);
    transform-origin: 0 100%;
    transition: transform 1s cubic-bezier(.2,.7,.2,1);
    transition-delay: calc(0.15s + var(--wi, 0) * 0.07s);
}

.home .in .sx-title .wi { transform: none; }

.home .sx-sub {
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
    font-size: clamp(1.08rem, 1.7vw, 1.3rem);
    color: #c4bdab;
    margin-top: 0.9rem;
    line-height: 1.5;
}

/* ───────── Reveal on scroll ───────── */
html.js .home .rv {
    opacity: 0;
    transform: translateY(32px);
    transition: opacity 1.1s cubic-bezier(.2,.7,.2,1), transform 1.1s cubic-bezier(.2,.7,.2,1);
    transition-delay: var(--d, 0s);
}

html.js .home .rv.in {
    opacity: 1;
    transform: none;
}

/* Comparsa a cascata dei figli di un contenitore (.stg): l'animazione usa
   fill "backwards", quindi a fine corsa restano gli stili normali (hover inclusi) */
html.js .home .stg:not(.in) > * { opacity: 0; }

html.js .home .stg.in > * {
    animation: rvRise 1s cubic-bezier(.2,.7,.2,1) backwards;
    animation-delay: calc(var(--k, 0) * 0.09s);
}

html.js .home .stg.stg--side.in > * { animation-name: rvSide; }

@keyframes rvRise {
    from { opacity: 0; transform: translateY(28px); }
}

@keyframes rvSide {
    from { opacity: 0; transform: translateX(-26px); }
}

/* Sipario: le immagini delle gallerie si svelano dal basso */
html.js .home .cvg:not(.in) > * { clip-path: inset(0 0 100% 0); }

html.js .home .cvg.in > * {
    animation: cvIn 1.3s cubic-bezier(.7,0,.2,1) backwards;
    animation-delay: calc(var(--k, 0) * 0.12s);
}

html.js .home .cvg.in > * img {
    animation: cvImg 1.9s cubic-bezier(.2,.7,.2,1) backwards;
    animation-delay: calc(var(--k, 0) * 0.12s);
}

@keyframes cvIn {
    from { clip-path: inset(0 0 100% 0); }
    to   { clip-path: inset(-80px -80px -80px -80px); }
}

@keyframes cvImg {
    from { transform: scale(1.22); }
    to   { transform: scale(1); }
}

/* ───────── Pulsanti ───────── */
.home .btn-gold,
.home .btn-ghost {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    padding: 0.95rem 1.8rem;
    font-family: 'Montserrat', sans-serif;
    font-size: 0.74rem;
    font-weight: 600;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    text-decoration: none;
    border-radius: 6px;
    overflow: hidden;
    isolation: isolate;
    transition: transform 0.35s ease, box-shadow 0.35s ease, background 0.35s ease, color 0.35s ease;
}

/* Oro in trasparenza: velo dorato + filo d'oro, niente campitura piena */
.home .btn-gold {
    color: #f3e2a6;
    background: linear-gradient(110deg, rgba(201,162,39,0.08) 0%, rgba(232,199,90,0.2) 50%, rgba(201,162,39,0.08) 100%);
    box-shadow: inset 0 0 0 1px rgba(232,199,90,0.55), inset 0 1px 0 rgba(255,241,184,0.12), 0 12px 32px -18px rgba(201,162,39,0.6);
    backdrop-filter: blur(6px);
}

.home .btn-gold::after {
    content: '';
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 55%;
    z-index: -1;
    background: linear-gradient(105deg, rgba(255,240,190,0) 0%, rgba(255,240,190,0.16) 50%, rgba(255,240,190,0) 100%);
    transform: translateX(-120%);
    animation: btnGlint 5s ease-in-out infinite;
    pointer-events: none;
}

.home .btn-gold:hover {
    transform: translateY(-3px);
    color: #fff3c4;
    background: linear-gradient(110deg, rgba(201,162,39,0.14) 0%, rgba(232,199,90,0.3) 50%, rgba(201,162,39,0.14) 100%);
    box-shadow: inset 0 0 0 1px rgba(255,223,128,0.85), inset 0 1px 0 rgba(255,241,184,0.18), 0 16px 40px -16px rgba(201,162,39,0.75);
}

.home .btn-ghost {
    color: var(--gold-light);
    background: rgba(10,10,10,0.35);
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.35);
    backdrop-filter: blur(6px);
}

.home .btn-ghost:hover {
    transform: translateY(-3px);
    background: rgba(201,162,39,0.08);
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.7);
    color: #fff3c4;
}

/* Pulsanti "magnetici" (desktop): home.js li sposta verso il cursore */
.home .mag { transition: transform 0.5s cubic-bezier(.2,.7,.2,1), box-shadow 0.35s ease, background 0.35s ease, color 0.35s ease; }
.home .mag.is-pulled { transition: transform 0.15s ease-out, box-shadow 0.35s ease, background 0.35s ease, color 0.35s ease; }

.home .btn-ghost svg,
.home .btn-gold svg {
    width: 1em;
    height: 1em;
    flex-shrink: 0;
}

@keyframes btnGlint {
    0%       { transform: translateX(-120%); }
    35%, 100% { transform: translateX(260%); }
}

body.home .cta-button {
    border-radius: 6px;
    padding: 0.95rem 1.9rem;
    font-size: 0.74rem;
    letter-spacing: 0.22em;
}

/* ═══════════════ MARQUEE — le quattro discipline ═══════════════ */
.home .mq {
    position: relative;
    padding: 1.1rem 0;
    overflow: hidden;
    border-top: 1px solid rgba(201,162,39,0.16);
    border-bottom: 1px solid rgba(201,162,39,0.16);
    background: linear-gradient(90deg, #050505, #0c0907 50%, #050505);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
    mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
}

.home .mq-track {
    display: flex;
    align-items: center;
    width: max-content;
    animation: mqMove 70s linear infinite;
    will-change: transform;
}

.home .mq-track span {
    font-family: 'Cinzel', serif;
    font-size: clamp(0.95rem, 2vw, 1.4rem);
    font-weight: 500;
    letter-spacing: 0.32em;
    text-transform: uppercase;
    white-space: nowrap;
    padding: 0 1.5rem;
    line-height: 1.3;
    color: transparent;
    -webkit-text-stroke: 1px rgba(201,162,39,0.55);
}

.home .mq-track span:nth-child(4n+1) {
    color: var(--gold);
    -webkit-text-stroke: 0;
}

.home .mq-track span.mq-star {
    color: var(--gold);
    -webkit-text-stroke: 0;
    font-size: 0.6rem;
    letter-spacing: 0;
    padding: 0;
    opacity: 0.75;
}

@keyframes mqMove {
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* ═══════════════ ATTO I — MANIFESTO ═══════════════ */
.home .manifesto {
    text-align: center;
    overflow: hidden;
}

.home .manifesto::before {
    content: '';
    position: absolute;
    inset: 10% 0 auto;
    margin: auto;
    width: min(900px, 120vw);
    aspect-ratio: 1;
    left: 50%;
    transform: translateX(-50%);
    background: radial-gradient(circle, rgba(179,18,27,0.11) 0%, rgba(179,18,27,0) 60%);
    pointer-events: none;
}

.home .mf-text {
    font-family: 'Cormorant Garamond', serif;
    font-weight: 400;
    font-size: clamp(1.3rem, 2.7vw, 2.2rem);
    line-height: 1.35;
    color: #f4ecd6;
    max-width: 880px;
    margin: 0 auto;
    position: relative;
}

.home .mf-text .w {
    opacity: 0.14;
    transition: opacity 0.5s ease, color 0.5s ease;
}

.home .mf-text .w.on { opacity: 1; }

.home .mf-text em {
    font-style: italic;
    color: var(--gold);
}

.home .mf-text em .w.on { color: var(--gold-light); }

html:not(.js) .home .mf-text .w { opacity: 1; }

.home .mf-sign {
    margin-top: 1.9rem;
    font-family: 'Cinzel', serif;
    font-size: 0.78rem;
    letter-spacing: 0.5em;
    text-transform: uppercase;
    color: var(--gold);
}

.home .mf-bio {
    max-width: 680px;
    margin: 3rem auto 0;
    font-size: 1.02rem;
    font-weight: 300;
    line-height: 1.85;
    color: #bdb8ad;
}

.home .mf-stats {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    max-width: 980px;
    margin: 3.2rem auto 0;
    border-top: 1px solid rgba(201,162,39,0.18);
    border-bottom: 1px solid rgba(201,162,39,0.18);
}

.home .mf-stat {
    padding: 1.7rem 0.9rem;
    position: relative;
}

.home .mf-stat + .mf-stat::before {
    content: '';
    position: absolute;
    left: 0;
    top: 22%;
    bottom: 22%;
    width: 1px;
    background: rgba(201,162,39,0.25);
}

.home .mf-stat strong {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: clamp(1.45rem, 2.6vw, 2rem);
    font-weight: 500;
    color: var(--gold);
    line-height: 1;
}

.home .mf-stat span {
    display: block;
    margin-top: 0.75rem;
    font-size: 0.7rem;
    line-height: 1.6;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: #b3ad9e;
}

/* ═══════════════ ATTO II — ESPERIENZE ═══════════════ */
.home .xp-grid {
    display: grid;
    /* stessa larghezza delle card a 4 colonne, le 3 restano al centro */
    grid-template-columns: repeat(3, calc((100% - 3.3rem) / 4));
    justify-content: center;
    gap: 1.1rem;
    perspective: 1200px;
}

.home .xp-card {
    --cx: 50%;
    --cy: 50%;
    position: relative;
    display: block;
    aspect-ratio: 4 / 5.6;
    border-radius: 14px;
    overflow: hidden;
    text-decoration: none;
    color: var(--text);
    background: #0b0a09;
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.18), 0 30px 60px -30px rgba(0,0,0,0.9);
    transform-style: preserve-3d;
    transition: transform 0.6s cubic-bezier(.2,.7,.2,1), box-shadow 0.5s ease;
    will-change: transform;
}

.home .xp-card img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(1) contrast(1.15) brightness(0.55);
    transform: scale(1.08);
    transition: filter 0.8s ease, transform 1.2s cubic-bezier(.2,.7,.2,1);
}

.home .xp-card::before {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        radial-gradient(circle at var(--cx) var(--cy), rgba(255,223,128,0.22) 0%, rgba(255,223,128,0) 45%),
        linear-gradient(180deg, rgba(5,5,5,0.05) 25%, rgba(5,5,5,0.92) 88%);
    transition: opacity 0.5s ease;
}

.home .xp-card::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(180deg, rgba(179,18,27,0) 40%, rgba(179,18,27,0.35) 100%);
    mix-blend-mode: multiply;
    opacity: 0;
    transition: opacity 0.6s ease;
}

.home .xp-card:hover {
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.7), 0 40px 80px -30px rgba(201,162,39,0.35);
}

.home .xp-card:hover img {
    filter: grayscale(0.15) contrast(1.05) brightness(0.8);
    transform: scale(1.0);
}

.home .xp-card:hover::after { opacity: 1; }

.home .xp-num {
    position: absolute;
    top: 1.1rem;
    left: 1.2rem;
    z-index: 2;
    font-family: 'Cinzel', serif;
    font-size: 0.8rem;
    letter-spacing: 0.3em;
    color: var(--gold);
}

.home .xp-body {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2;
    padding: 1.4rem 1.3rem 1.5rem;
    transform: translateZ(40px);
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.home .xp-title {
    display: block;
    font-family: 'Cinzel', serif;
    font-size: clamp(1.05rem, 1.4vw, 1.25rem);
    font-weight: 500;
    letter-spacing: 0.08em;
    color: #fff3c4;
    line-height: 1.2;
    margin-bottom: 0.55rem;
}

.home .xp-desc {
    display: block;
    font-size: 0.9rem;
    line-height: 1.6;
    color: #d6d1c4;
    font-weight: 400;
}

.home .xp-more {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.95rem;
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.3em;
    text-transform: uppercase;
    color: var(--gold);
}

.home .xp-more i {
    display: inline-block;
    width: 22px;
    height: 1px;
    background: var(--gold);
    transition: transform 0.4s ease;
    transform-origin: left;
}

.home .xp-card:hover .xp-more i { transform: scaleX(1.8); }

/* ═══════════════ ATTO III — ESPERIMENTO ═══════════════ */
.home .exp {
    background:
        radial-gradient(ellipse 80% 60% at 50% 40%, rgba(179,18,27,0.09), transparent 70%),
        linear-gradient(180deg, #050505, #0a0706 50%, #050505);
    border-top: 1px solid rgba(201,162,39,0.12);
    border-bottom: 1px solid rgba(201,162,39,0.12);
    overflow: hidden;
}

.home .exp-stage {
    position: relative;
    max-width: 960px;
    margin: 0 auto;
    text-align: center;
}

.home .exp-steps {
    display: flex;
    justify-content: center;
    gap: 2rem;
    flex-wrap: wrap;
    margin-bottom: 2.4rem;
    counter-reset: st;
}

.home .exp-steps li {
    list-style: none;
    font-size: 0.86rem;
    letter-spacing: 0.06em;
    color: #d0c9b7;
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

.home .exp-steps li::before {
    counter-increment: st;
    content: counter(st, upper-roman);
    font-family: 'Cinzel', serif;
    color: var(--gold);
    width: 1.9rem;
    height: 1.9rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(201,162,39,0.45);
    border-radius: 50%;
    font-size: 0.72rem;
    flex-shrink: 0;
}

.home .exp-msg {
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
    font-size: clamp(1.2rem, 2.1vw, 1.6rem);
    color: #f4ecd6;
    min-height: 2.6em;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 1.4rem;
    transition: opacity 0.5s ease;
}

.home .exp-cards {
    display: flex;
    justify-content: center;
    gap: clamp(0.5rem, 1.6vw, 1.1rem);
    min-height: clamp(150px, 21vw, 220px);
    margin-bottom: 2.3rem;
    flex-wrap: nowrap;
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.home .exp-cards.vanish {
    opacity: 0;
    transform: scale(0.94);
}

.home .pc {
    width: clamp(78px, 12.5vw, 142px);
    aspect-ratio: 5 / 7.4;
    border-radius: 10px;
    background:
        radial-gradient(circle at 50% 30%, rgba(255,255,255,0.06), transparent 60%),
        linear-gradient(160deg, #f6efdc, #e4d8b8);
    box-shadow: 0 0 0 1px rgba(0,0,0,0.6), 0 0 0 3px rgba(201,162,39,0.55), 0 20px 40px -12px rgba(0,0,0,0.9);
    position: relative;
    color: #141414;
    font-family: 'Cinzel', serif;
    opacity: 0;
    transform: translateY(30px) rotate(var(--r, 0deg));
    animation: pcIn 0.8s cubic-bezier(.2,.7,.2,1) forwards;
    animation-delay: var(--d, 0s);
}

.home .pc.red { color: #b3121b; }

.home .pc-corner {
    position: absolute;
    top: 0.45rem;
    left: 0.5rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    line-height: 1;
    font-size: clamp(0.8rem, 1.4vw, 1.1rem);
    font-weight: 700;
}

.home .pc-corner.bot {
    top: auto;
    left: auto;
    bottom: 0.45rem;
    right: 0.5rem;
    transform: rotate(180deg);
}

.home .pc-corner small {
    font-size: 0.85em;
    margin-top: 0.1rem;
}

.home .pc-face {
    position: absolute;
    inset: 18% 16%;
    border: 1px solid currentColor;
    border-radius: 4px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    opacity: 0.9;
    background: repeating-linear-gradient(45deg, rgba(0,0,0,0.035) 0 4px, transparent 4px 8px);
}

.home .pc-face b {
    font-size: clamp(1.5rem, 3.3vw, 2.8rem);
    line-height: 1;
}

.home .pc-face span {
    font-size: clamp(1rem, 2vw, 1.6rem);
    line-height: 1;
}

@keyframes pcIn {
    to { opacity: 1; transform: translateY(0) rotate(var(--r, 0deg)); }
}

.home .exp-actions {
    display: flex;
    justify-content: center;
    gap: 0.9rem;
    flex-wrap: wrap;
}

.home .exp-actions [hidden] { display: none; }

/* Spirale ipnotica a schermo durante la "lettura" */
.home .exp-hypno {
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(560px, 90vw);
    aspect-ratio: 1;
    transform: translate(-50%, -50%) scale(0.6);
    border-radius: 50%;
    background: repeating-conic-gradient(from 0deg, rgba(201,162,39,0.35) 0deg 10deg, rgba(5,5,5,0) 10deg 30deg);
    -webkit-mask-image: radial-gradient(circle, #000 0%, #000 30%, transparent 70%);
    mask-image: radial-gradient(circle, #000 0%, #000 30%, transparent 70%);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.6s ease, transform 1.4s ease;
    z-index: 3;
}

.home .exp-hypno.on {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.15);
    animation: spin 2.2s linear infinite;
}

/* ═══════════════ ATTO IV — VIDEO ═══════════════ */
body.home .video-section {
    max-width: 1120px;
    margin: 0 auto;
    padding: 0;
    width: auto;
    animation: none;
}

body.home .video-wrapper {
    border: 0;
    border-radius: 16px;
    box-shadow: 0 0 0 1px rgba(201,162,39,0.35), 0 40px 120px -30px rgba(201,162,39,0.3), 0 30px 80px rgba(0,0,0,0.8);
}

.home .vid-frame {
    position: relative;
    padding: clamp(10px, 1.6vw, 18px);
}

.home .vid-frame i {
    position: absolute;
    width: 42px;
    height: 42px;
    border: 1px solid var(--gold);
    pointer-events: none;
    transition: transform 0.8s cubic-bezier(.2,.7,.2,1);
}

.home .vid-frame i:nth-child(1) { top: 0; left: 0; border-right: 0; border-bottom: 0; }
.home .vid-frame i:nth-child(2) { top: 0; right: 0; border-left: 0; border-bottom: 0; }
.home .vid-frame i:nth-child(3) { bottom: 0; left: 0; border-right: 0; border-top: 0; }
.home .vid-frame i:nth-child(4) { bottom: 0; right: 0; border-left: 0; border-top: 0; }

/* Gli angoli del mirino si chiudono sul video quando entra in scena */
html.js .home .video-section:not(.in) .vid-frame i:nth-child(1) { transform: translate(-18px, -18px); }
html.js .home .video-section:not(.in) .vid-frame i:nth-child(2) { transform: translate(18px, -18px); }
html.js .home .video-section:not(.in) .vid-frame i:nth-child(3) { transform: translate(-18px, 18px); }
html.js .home .video-section:not(.in) .vid-frame i:nth-child(4) { transform: translate(18px, 18px); }

body.home .video-facade img {
    transition: transform 1.4s cubic-bezier(.2,.7,.2,1), filter 0.8s ease;
    filter: contrast(1.1) brightness(0.85);
}

body.home .video-facade:hover img {
    transform: scale(1.04);
    filter: contrast(1.1) brightness(1);
}

body.home .video-facade-play {
    width: 84px;
    height: 84px;
    background: rgba(5,5,5,0.35);
    border: 1px solid rgba(255,223,128,0.8);
    backdrop-filter: blur(6px);
}

body.home .video-facade-play::before {
    content: '';
    position: absolute;
    inset: -1px;
    border-radius: 50%;
    border: 1px solid rgba(201,162,39,0.7);
    animation: playRing 2.4s ease-out infinite;
    pointer-events: none;
}

body.home .video-facade-play svg { fill: #fff3c4; }

body.home .video-facade-play:hover {
    background: rgba(201,162,39,0.85);
}

@keyframes playRing {
    0%        { transform: scale(1); opacity: 0.8; }
    80%, 100% { transform: scale(1.6); opacity: 0; }
}

.home .vid-caption {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-top: 1.1rem;
    font-size: 0.7rem;
    letter-spacing: 0.26em;
    text-transform: uppercase;
    color: #a8a8a8;
}

.home .vid-caption b { color: var(--gold); font-weight: 500; }

/* ═══════════════ GALLERIE (premi + locandine) ═══════════════ */
body.home .gallery-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
}

body.home .gallery-item {
    border: 0;
    border-radius: 12px;
    aspect-ratio: 4 / 5;
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.2);
}

body.home .gallery-item:nth-child(even) { margin-top: 2.5rem; }

body.home .gallery-item img {
    filter: grayscale(1) contrast(1.1) brightness(0.7);
}

body.home .gallery-item:hover {
    transform: translateY(-6px);
}

body.home .gallery-item:hover img {
    filter: grayscale(0) brightness(1);
}

body.home .gallery-caption {
    opacity: 1;
    transform: none;
    font-family: 'Cinzel', serif;
    font-size: 0.84rem;
    letter-spacing: 0.1em;
    line-height: 1.5;
    padding: 2.5rem 1rem 1rem;
}

body.home .events-grid {
    grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
    gap: 1.1rem;
    align-items: start;
}

body.home .event-card {
    border: 0;
    border-radius: 12px;
    background: #0b0a09;
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.2), 0 30px 60px -30px rgba(0,0,0,0.9);
    position: relative;
}

body.home .event-card::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(115deg, transparent 30%, rgba(255,240,190,0.18) 48%, transparent 66%);
    background-size: 250% 100%;
    background-position: 130% 0;
    transition: background-position 1s ease;
    pointer-events: none;
}

body.home .event-card:hover::after { background-position: -30% 0; }

body.home .event-card:hover {
    transform: translateY(-8px) rotate(-0.4deg);
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.75), 0 40px 80px -30px rgba(201,162,39,0.3);
}

/* ═══════════════ PROSSIME APPARIZIONI ═══════════════ */
body.home .upcoming-section {
    max-width: none;
    border-top: 0;
}

body.home .upcoming-list {
    max-width: 820px;
    counter-reset: up;
}

body.home .upcoming-item {
    grid-template-columns: 100px 1fr auto;
    padding: 1.35rem 1rem;
    border-bottom: 1px solid rgba(201,162,39,0.12);
    position: relative;
    transition: background 0.4s ease;
}

body.home .upcoming-item::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--gold), transparent);
    transform: scaleX(0);
    transition: transform 0.6s ease;
}

body.home .upcoming-item:hover { background: linear-gradient(90deg, rgba(201,162,39,0), rgba(201,162,39,0.06), rgba(201,162,39,0)); }
body.home .upcoming-item:hover::before { transform: scaleX(1); }

body.home .upcoming-date-block { border-right-color: rgba(201,162,39,0.3); }

body.home .upd-day {
    font-size: 2.1rem;
    background: linear-gradient(180deg, #fff3c4, #c9a227);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

body.home .upd-day--range { font-size: 1.35rem; }

body.home .upd-name {
    font-family: 'Cinzel', serif;
    font-size: 1.1rem;
    font-weight: 500;
    letter-spacing: 0.05em;
}

body.home .upd-location { font-size: 0.95rem; color: #b5b0a4; }
body.home .upd-time { font-size: 0.85rem; color: var(--gold); }
body.home .upd-month { font-size: 0.72rem; }
body.home .upd-year { font-size: 0.68rem; color: #a8a8a8; }
body.home .upd-badge { font-size: 0.68rem; color: var(--gold); }

body.home .upd-status {
    align-self: center;
    font-size: 0.64rem;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    padding: 0.4rem 0.8rem;
    border-radius: 999px;
    white-space: nowrap;
    color: #0a0805;
    background: var(--gold);
}

body.home .upcoming-item.is-past .upd-status {
    color: #9d9d9d;
    background: transparent;
    box-shadow: inset 0 0 0 1px rgba(157,157,157,0.35);
}

body.home .upcoming-item.is-past .upcoming-date-block { opacity: 0.7; }
body.home .upcoming-item.is-past .upcoming-body { opacity: 0.84; }

.home .up-empty {
    max-width: 820px;
    margin: 0 auto 2rem;
    padding: 1.4rem 1.2rem;
    text-align: center;
    border-radius: 14px;
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.3);
    background: radial-gradient(ellipse at center, rgba(201,162,39,0.08), transparent 70%);
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
    font-size: 1.28rem;
    line-height: 1.5;
    color: #f4ecd6;
}

.home .up-empty a { color: var(--gold); }

body.home .upcoming-item.is-folded { display: none; }

.home .up-more {
    display: block;
    margin: 1.4rem auto 0;
    background: none;
    border: 0;
    cursor: pointer;
    font-family: 'Montserrat', sans-serif;
    font-size: 0.72rem;
    letter-spacing: 0.26em;
    text-transform: uppercase;
    color: var(--gold-light);
    border-bottom: 1px dotted rgba(201,162,39,0.5);
    padding: 0.3rem 0;
}

.home .up-more:hover { color: var(--gold); }

/* ═══════════════ RECENSIONI ═══════════════ */
body.home .reviews-section { max-width: none; }

body.home .reviews-panel {
    max-width: 1080px;
    margin: 0 auto;
    background: transparent;
    border: 0;
}

body.home .review-card {
    border-radius: 14px;
    background: linear-gradient(180deg, rgba(20,17,12,0.9), rgba(10,9,8,0.9));
    border: 0;
    box-shadow: inset 0 0 0 1px rgba(201,162,39,0.2);
    position: relative;
    overflow: hidden;
}

body.home .review-card::before {
    content: '\201C';
    position: absolute;
    right: 1rem;
    top: -0.9rem;
    font-family: 'Cormorant Garamond', serif;
    font-size: 6rem;
    color: rgba(201,162,39,0.12);
    line-height: 1;
    pointer-events: none;
}

body.home .review-text {
    font-family: 'Cormorant Garamond', serif;
    font-size: 1.14rem;
    line-height: 1.55;
    color: #e6dfcd;
}

body.home .review-author { font-size: 0.95rem; }
body.home .review-date { font-size: 0.78rem; color: #9d9d9d; }
body.home .reviews-source { font-size: 0.82rem; color: #b5b0a4; }

body.home .reviews-source { justify-content: center; }

/* ═══════════════ PARTNER ═══════════════ */
body.home .partner-section { max-width: none; }

body.home .partner-grid { max-width: 940px; margin: 0 auto; }

body.home .partner-item {
    border-radius: 14px;
    opacity: 0.82;
    transition: transform 0.4s ease, box-shadow 0.4s ease, background 0.4s ease, opacity 0.4s ease;
}

body.home .partner-item:hover { opacity: 1; }

body.home .partner-item strong { font-size: 1rem; }
body.home .partner-item small { font-size: 0.72rem; letter-spacing: 0.14em; }
body.home .partner-item img { filter: grayscale(1) brightness(1.1); transition: filter 0.5s ease; }
body.home .partner-item img.partner-logo-invert { filter: grayscale(1) invert(1) brightness(1.1); }
body.home .partner-item:hover img { filter: none; }
body.home .partner-item:hover img.partner-logo-invert { filter: invert(1); }

/* ═══════════════ FINALE ═══════════════ */
.home .finale {
    text-align: center;
    overflow: hidden;
    min-height: 86vh;
    display: flex;
    align-items: center;
    justify-content: center;
}

.home .finale-bg {
    position: absolute;
    inset: 0;
    opacity: 0.1;
    -webkit-mask-image: radial-gradient(ellipse at center, #000 0%, transparent 70%);
    mask-image: radial-gradient(ellipse at center, #000 0%, transparent 70%);
    pointer-events: none;
}

.home .finale-rings {
    position: absolute;
    left: 50%;
    top: 50%;
    width: min(900px, 140vw);
    aspect-ratio: 1;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background: repeating-radial-gradient(circle, rgba(201,162,39,0.10) 0 1px, transparent 1px 38px);
    -webkit-mask-image: radial-gradient(circle, #000 20%, transparent 70%);
    mask-image: radial-gradient(circle, #000 20%, transparent 70%);
    animation: ringBreath 7s ease-in-out infinite;
    pointer-events: none;
}

.home .finale.near .finale-bg { background: url('../img/home/sfondo-finale.webp') center / 520px auto repeat; }

@keyframes ringBreath {
    0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 0.7; }
    50%      { transform: translate(-50%, -50%) scale(1.08); opacity: 1; }
}

.home .finale-inner {
    position: relative;
    z-index: 1;
    max-width: 860px;
}

.home .finale-title {
    font-family: 'Cinzel', serif;
    font-weight: 500;
    font-size: clamp(1.8rem, 4.6vw, 3.5rem);
    line-height: 1.08;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #f4ecd6;
}

/* Le due righe del titolo emergono da una maschera */
.home .finale-title .ln {
    display: block;
    overflow: hidden;
    padding: 0.04em 0 0.1em;
    font-style: normal;
}

.home .finale-title .ln > span {
    display: inline-block;
    transition: transform 1.2s cubic-bezier(.2,.7,.2,1);
}

html.js .home .finale-inner:not(.in) .finale-title .ln > span { transform: translateY(110%); }

.home .finale-title em.ln > span {
    transition-delay: 0.18s;
    background: linear-gradient(90deg, #bf9b30, #ffdf80, #e8c75a, #ffdf80, #bf9b30);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.home .finale-lead {
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
    font-size: clamp(1.15rem, 1.9vw, 1.42rem);
    line-height: 1.5;
    color: #d2cbb9;
    margin: 1.4rem auto 2.4rem;
    max-width: 580px;
}

.home .finale-actions {
    display: flex;
    justify-content: center;
    gap: 0.9rem;
    flex-wrap: wrap;
}

.home .finale-quote {
    margin-top: 3.6rem;
    font-family: 'Cormorant Garamond', serif;
    font-style: italic;
    font-size: 1.08rem;
    color: #a3a3a3;
}

.home .finale-quote span {
    display: block;
    margin-top: 0.4rem;
    font-style: normal;
    font-size: 0.7rem;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: #b4942f;
}

/* ═══════════════ FOOTER ═══════════════ */
body.home .footer {
    background: linear-gradient(180deg, rgba(5,5,5,0), #050505 30%);
    border-top: 1px solid rgba(201,162,39,0.18);
    padding-bottom: calc(7rem + env(safe-area-inset-bottom, 0px));
}

body.home .footer-social a { color: var(--gold-light); }

/* ═══════════════ CURSORE + SCINTILLE + PROGRESS ═══════════════ */
.cur-dot,
.cur-ring {
    position: fixed;
    top: 0;
    left: 0;
    pointer-events: none;
    z-index: 10000;
    border-radius: 50%;
    opacity: 0;
    transition: opacity 0.4s ease;
}

.cur-dot {
    width: 6px;
    height: 6px;
    margin: -3px 0 0 -3px;
    background: #ffdf80;
}

.cur-ring {
    width: 38px;
    height: 38px;
    margin: -19px 0 0 -19px;
    border: 1px solid rgba(255,223,128,0.7);
}

.cur-ring::after {
    content: '';
    position: absolute;
    inset: -1px;
    border-radius: 50%;
    border: 1px solid rgba(255,223,128,0.9);
    transform: scale(0.4);
    opacity: 0;
    transition: transform 0.35s ease, opacity 0.35s ease;
}

html.has-cursor .cur-dot,
html.has-cursor .cur-ring { opacity: 1; }

html.has-cursor .cur-ring.hot::after { transform: scale(1.6); opacity: 1; }
html.has-cursor .cur-ring.hot { border-color: transparent; }

/* Scia di polvere d'oro (cursore su desktop, tocco su mobile) — canvas creato da home.js */
.fx-sparks {
    position: fixed;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 9500;
}

.scroll-prog {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 2px;
    z-index: 200;
    background: linear-gradient(90deg, #9a7b1a, #ffdf80, #b3121b);
    transform-origin: left;
    transform: scaleX(0);
    pointer-events: none;
}

/* ═══════════════ TABLET ═══════════════ */
@media (max-width: 1100px) {
    .home .xp-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 769px) and (max-width: 1100px) {
    .home .xp-grid .xp-card:last-child:nth-child(odd) { grid-column: 1 / -1; justify-self: center; width: calc(50% - 0.55rem); }
}

@media (max-width: 900px) {
    .home .mf-stats { grid-template-columns: repeat(2, 1fr); }
    .home .mf-stat:nth-child(3)::before { display: none; }
    .home .mf-stat:nth-child(n+3) { border-top: 1px solid rgba(201,162,39,0.14); }
}

/* ═══════════════ MOBILE ═══════════════ */
@media (max-width: 768px) {
    body.home section { padding: 4.2rem 1.1rem; }

    .home .sx-head { margin-bottom: 2rem; }
    .home .sx-kicker { font-size: 0.64rem; letter-spacing: 0.28em; gap: 0.7rem; }
    .home .sx-kicker::before,
    .home .sx-kicker::after { width: 22px; }
    .home .sx-title { font-size: clamp(1.3rem, 6vw, 1.6rem); letter-spacing: 0.06em; }
    .home .sx-sub { font-size: 1rem; padding: 0 0.4rem; }

    .home .mq { padding: 0.85rem 0; }
    .home .mq-track span { padding: 0 1.1rem; letter-spacing: 0.26em; }

    .home .mf-text { font-size: 1.3rem; line-height: 1.4; }
    .home .mf-bio { font-size: 0.96rem; line-height: 1.8; margin-top: 2.4rem; }
    .home .mf-stats { margin-top: 2.6rem; }
    .home .mf-stat { padding: 1.3rem 0.6rem; }
    .home .mf-stat span { font-size: 0.62rem; letter-spacing: 0.12em; }

    .home .xp-grid {
        display: flex;
        overflow-x: auto;
        scroll-snap-type: x mandatory;
        gap: 0.8rem;
        margin: 0 -1.1rem;
        padding: 0 1.1rem 0.5rem;
        scrollbar-width: none;
    }

    .home .xp-grid::-webkit-scrollbar { display: none; }

    .home .xp-card {
        flex: 0 0 72vw;
        max-width: 300px;
        scroll-snap-align: center;
    }

    .home .xp-card img { filter: grayscale(0.4) contrast(1.1) brightness(0.7); }

    .home .exp-steps { flex-direction: column; align-items: flex-start; gap: 0.75rem; max-width: 300px; margin: 0 auto 2rem; }
    .home .exp-msg { font-size: 1.15rem; padding: 0 0.5rem; }
    .home .exp-cards { gap: 0.45rem; flex-wrap: wrap; min-height: 0; }
    .home .pc { width: calc((100vw - 3.4rem) / 3.25); max-width: 112px; }

    body.home .gallery-item:nth-child(even) { margin-top: 0; }
    body.home .gallery-item { aspect-ratio: 4 / 5; }

    body.home .upcoming-item { grid-template-columns: 64px 1fr; padding: 1.1rem 0.3rem; }
    body.home .upd-status { grid-column: 2; justify-self: start; margin: 0.55rem 0 0 1.1rem; }
    body.home .upd-day { font-size: 1.65rem; }
    body.home .upd-day--range { font-size: 1.1rem; }
    body.home .upd-name { font-size: 1rem; }
    body.home .upd-location { font-size: 0.9rem; }
    .home .up-empty { font-size: 1.12rem; }

    body.home .review-text { font-size: 1.06rem; }
    body.home .reviews-actions .cta-button { padding: 0.85rem 1.4rem; letter-spacing: 0.16em; white-space: nowrap; }

    body.home .partner-item { opacity: 0.85; }

    body.home .video-facade-play { width: 64px; height: 64px; }
    .home .vid-frame i { width: 24px; height: 24px; }
    .home .vid-caption { flex-direction: column; align-items: center; gap: 0.3rem; text-align: center; letter-spacing: 0.24em; }

    .home .finale { min-height: 0; padding-top: 5rem; padding-bottom: 5rem; }
    .home .finale-title { font-size: clamp(1.6rem, 7.6vw, 2.1rem); }
    .home .finale-actions { flex-direction: column; align-items: center; }
    .home .finale-actions a { width: 100%; max-width: 290px; }
    .home .finale-quote { margin-top: 2.8rem; font-size: 0.95rem; padding: 0 0.5rem; }
}

@media (max-width: 380px) {
    .home .sx-kicker { letter-spacing: 0.24em; }
    .home .sx-kicker::before,
    .home .sx-kicker::after { width: 14px; }
    .home .mf-stat span { letter-spacing: 0.1em; }
}

/* ═══════════════ RIDUZIONE MOVIMENTO ═══════════════ */
@media (prefers-reduced-motion: reduce) {
    .home *,
    .home *::before,
    .home *::after {
        animation-duration: 0.001s !important;
        animation-delay: 0s !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.001s !important;
        transition-delay: 0s !important;
    }

    html.js .home .rv { opacity: 1; transform: none; }
    html.js .home .stg:not(.in) > * { opacity: 1; }
    html.js .home .cvg:not(.in) > * { clip-path: none; }
    .home .sx-title .wi { transform: none; }
    .home .mf-text .w { opacity: 1; }
    .cur-dot, .cur-ring, .fx-sparks { display: none; }
}
