.senger-museum-page {
    --senger-ink: oklch(12% 0.012 76);
    --senger-paper: oklch(91% 0.025 80);
    --senger-bone: oklch(83% 0.034 80);
    --senger-rust: oklch(55% 0.16 33);
    --senger-ash: oklch(43% 0.022 76);
    --senger-progress: 0;
    background: var(--senger-ink);
}

.senger-museum-page .site-header {
    transition: opacity .5s ease, transform .5s cubic-bezier(.16, 1, .3, 1);
}

.senger-museum-page .site-header:not(.scrolled) {
    opacity: 0;
    transform: translateY(-100%);
    pointer-events: none;
}

.senger-museum-page main {
    overflow: clip;
}

.senger {
    position: relative;
    background: var(--senger-ink);
    color: var(--senger-paper);
    font-family: var(--font-body);
}

.senger [data-senger-scene] {
    --scene-progress: 0;
}

.senger::before {
    content: "";
    position: fixed;
    z-index: 30;
    top: 0;
    left: 0;
    width: 3px;
    height: calc(var(--senger-progress) * 100%);
    background: var(--senger-rust);
    pointer-events: none;
}

.senger h1,
.senger h2,
.senger h3,
.senger p {
    margin: 0;
}

.senger h2 {
    max-width: 12ch;
    color: var(--senger-paper);
    font-family: var(--font-heading);
    font-size: clamp(3.2rem, 7.6vw, 8.5rem);
    font-weight: 700;
    line-height: .88;
    letter-spacing: -.055em;
}

.senger-kicker {
    color: var(--senger-rust);
    font-family: var(--font-alt);
    font-size: .76rem;
    font-weight: 600;
    letter-spacing: .23em;
    text-transform: uppercase;
}

.senger-index {
    display: block;
    margin-bottom: clamp(2rem, 5vw, 5rem);
    color: var(--senger-ash);
    font-family: var(--font-alt);
    font-size: clamp(4rem, 10vw, 10rem);
    font-weight: 300;
    line-height: .7;
}

.senger-reveal {
    opacity: 0;
    transform: translateY(60px);
    transition: opacity 1.1s cubic-bezier(.16, 1, .3, 1), transform 1.1s cubic-bezier(.16, 1, .3, 1);
}

.senger-reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.senger-hero {
    position: relative;
    min-height: 100svh;
    display: grid;
    align-items: end;
    overflow: hidden;
    isolation: isolate;
}

.senger-experience,
.senger-hero__veil,
.senger-noise,
.senger-cinema-bars,
.senger-embers {
    position: absolute;
    inset: 0;
}

.senger-experience {
    --look-x: 0;
    --look-y: 0;
    --zoom: 1;
    --push-y: 0%;
    z-index: 0;
    overflow: hidden;
    perspective: 1400px;
    perspective-origin: 50% 46%;
    transition: perspective-origin 1.7s cubic-bezier(.16, 1, .3, 1);
}

.senger-experience__camera {
    position: absolute;
    inset: -4%;
    transform:
        rotateX(calc(var(--look-y) * -2deg))
        rotateY(calc(var(--look-x) * 2.6deg))
        translateY(var(--push-y))
        scale(calc(1.04 * var(--zoom)));
    transform-origin: 50% 46%;
    transition: transform 1.7s cubic-bezier(.16, 1, .3, 1);
    transform-style: preserve-3d;
    will-change: transform;
}

.senger-hero__image {
    position: absolute;
    inset: 0;
    transform: translate3d(calc(var(--look-x) * -12px), calc(var(--look-y) * -9px), -40px) scale(1.05);
    transition: transform 1.2s cubic-bezier(.16, 1, .3, 1);
}

.senger-hero__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: 50% 50%;
    filter: saturate(.78) contrast(1.08) brightness(.82);
    animation: sengerOpening 9s cubic-bezier(.16, 1, .3, 1) both;
}

.senger-webgl__canvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;
    opacity: 0;
    transition: opacity 1.2s ease;
}

/* WebGL gestisce tutto il movimento: annullo dolly/parallax CSS per evitare doppione */
.senger-experience.has-webgl .senger-experience__camera {
    transform: none;
}

.senger-experience.has-webgl {
    --zoom: 1;
}

/* Marker posizionati via JS in spazio-immagine: centrati sul punto */
.senger-pin.is-placed,
.senger-info-dot.is-placed {
    transform: translate(-50%, -50%);
    transition: opacity .4s ease, transform .5s cubic-bezier(.16, 1, .3, 1);
}

.senger-pin.is-placed:hover,
.senger-pin.is-placed.is-active {
    transform: translate(-50%, -50%) scale(1.08);
}

.senger-info-dot.is-placed:hover,
.senger-info-dot.is-placed.is-active {
    transform: translate(-50%, -50%) scale(1.12);
}

/* fuori dal ritaglio cover (es. portrait): nascosto */
.senger-pin.is-offscreen,
.senger-info-dot.is-offscreen {
    opacity: 0 !important;
    pointer-events: none;
}

/* durante il dolly i marker non-attivi sfumano (la scena è in zoom) */
.senger-experience.is-exploring .senger-pin.is-placed:not(.is-active),
.senger-experience.is-exploring .senger-info-dot.is-placed:not(.is-active) {
    opacity: .15;
}

/* WebGL attivo: canvas visibile, img solo fallback */
.senger-hero__image.is-webgl-ready .senger-webgl__canvas {
    opacity: 1;
}

.senger-hero__image.is-webgl-ready .senger-hero__fallback {
    opacity: 0;
}

.senger-hero__fallback {
    transition: opacity 1.2s ease;
}

.senger-experience__depth {
    position: absolute;
    inset: 0;
    pointer-events: none;
    transition: transform .9s cubic-bezier(.16, 1, .3, 1);
}

.senger-experience__depth--far {
    background:
        radial-gradient(circle at 50% 40%, oklch(78% .07 60 / .18), transparent 30%),
        radial-gradient(circle at 64% 24%, oklch(82% .04 75 / .12), transparent 26%);
    transform: translate3d(calc(var(--look-x) * 14px), calc(var(--look-y) * 10px), 35px);
}

.senger-experience__depth--near {
    background:
        linear-gradient(90deg, oklch(5% .01 65 / .78), transparent 30%),
        linear-gradient(270deg, oklch(5% .01 65 / .7), transparent 28%),
        linear-gradient(0deg, oklch(5% .01 65 / .82), transparent 40%);
    transform: translate3d(calc(var(--look-x) * 30px), calc(var(--look-y) * 20px), 90px) scale(1.04);
}

.senger-hero__veil {
    z-index: 1;
    background:
        linear-gradient(90deg, oklch(7% .012 76 / .86) 0%, transparent 48%),
        linear-gradient(0deg, var(--senger-ink) 0%, transparent 37%),
        radial-gradient(circle at 58% 42%, transparent 0%, oklch(7% .01 76 / .38) 76%);
    pointer-events: none;
}

.senger-noise {
    z-index: 2;
    opacity: .14;
    pointer-events: none;
    background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E");
    mix-blend-mode: soft-light;
}

.senger-cinema-bars {
    z-index: 4;
    pointer-events: none;
}

.senger-cinema-bars::before,
.senger-cinema-bars::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    height: 8vh;
    background: var(--senger-ink);
    animation: sengerBars 2.2s .2s cubic-bezier(.16, 1, .3, 1) both;
}

.senger-cinema-bars::before { top: 0; transform-origin: top; }
.senger-cinema-bars::after { bottom: 0; transform-origin: bottom; }

.senger-embers {
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}

.senger-embers i {
    position: absolute;
    left: var(--ember-x);
    bottom: -10px;
    width: var(--ember-size);
    height: var(--ember-size);
    border-radius: 50%;
    background: oklch(72% .18 45 / .78);
    box-shadow: 0 0 8px oklch(62% .2 35 / .7);
    animation: sengerEmber var(--ember-duration) var(--ember-delay) linear infinite;
}

.senger-hero__top {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: clamp(1.5rem, 3vw, 3rem) clamp(1.4rem, 5vw, 6rem);
    font-family: var(--font-alt);
    font-size: .68rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    z-index: 7;
}

.senger-back,
.senger-location {
    color: oklch(88% .018 80 / .76);
}

.senger-back:hover {
    color: var(--senger-paper);
}

.senger-hero__content {
    position: relative;
    z-index: 5;
    width: min(94%, 1500px);
    margin: 0 auto;
    padding: 8rem 0 clamp(8rem, 13vh, 11rem);
    pointer-events: none;
}

.senger-eyebrow {
    margin-bottom: 1.5rem !important;
    color: var(--senger-rust);
    font-family: var(--font-alt);
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .28em;
    text-transform: uppercase;
    animation: sengerRise 1.2s .3s cubic-bezier(.16, 1, .3, 1) both;
}

.senger-hero h1 {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    color: var(--senger-paper);
    font-family: var(--font-heading);
    font-family: var(--font-alt);
    font-size: clamp(3.5rem, 7.2vw, 7.8rem);
    font-weight: 700;
    line-height: .88;
    letter-spacing: -.045em;
    text-transform: uppercase;
    text-wrap: balance;
}

.senger-hero h1 span {
    display: block;
    animation: sengerRise 1.35s cubic-bezier(.16, 1, .3, 1) both;
}

.senger-hero h1 span:nth-child(2) {
    margin-left: 0;
    animation-delay: .08s;
}

.senger-hero h1 span:nth-child(3) {
    margin-top: 0;
    animation-delay: .16s;
}

.senger-hero__lead {
    max-width: 34ch;
    margin-top: 2.8rem !important;
    margin-left: 0 !important;
    color: oklch(91% .025 80 / .82);
    font-size: clamp(1.1rem, 2vw, 1.65rem);
    line-height: 1.35;
    animation: sengerRise 1.2s .55s cubic-bezier(.16, 1, .3, 1) both;
}

.senger-enter-experience {
    display: inline-flex;
    align-items: center;
    gap: 1.3rem;
    margin-top: 2rem;
    padding: 1rem 1.5rem;
    border: 1px solid oklch(91% .025 80 / .4);
    border-radius: 999px;
    color: var(--senger-ink);
    background: var(--senger-paper);
    font-family: var(--font-alt);
    font-size: .72rem;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    cursor: pointer;
    pointer-events: auto;
    transition: transform .4s cubic-bezier(.16, 1, .3, 1), background .3s ease;
}

.senger-enter-experience:hover {
    transform: translateX(8px);
    background: oklch(97% .015 80);
}

.senger-enter-experience i {
    font-size: 1rem;
    font-style: normal;
}

.senger-map-route {
    position: absolute;
    z-index: 3;
    left: 10%;
    right: 5%;
    bottom: 5%;
    height: 24%;
    pointer-events: none;
    transform: perspective(700px) rotateX(58deg);
    transform-origin: bottom;
    opacity: .8;
}

.senger-map-route svg {
    width: 100%;
    height: 100%;
    overflow: visible;
}

.senger-map-route path {
    fill: none;
    stroke: oklch(65% .2 35);
    stroke-width: 3;
    stroke-dasharray: .035 .018;
    filter: drop-shadow(0 0 7px oklch(65% .2 35));
    animation: sengerRouteFlow 8s linear infinite;
}

.senger-hotspot {
    position: absolute;
    z-index: 6;
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: 0;
    border: 0;
    color: oklch(94% .02 80);
    background: transparent;
    font-family: var(--font-alt);
    font-size: .62rem;
    letter-spacing: .15em;
    text-transform: uppercase;
    cursor: pointer;
    transition: opacity .3s ease, transform .5s cubic-bezier(.16, 1, .3, 1);
}

.senger-hotspot i {
    position: relative;
    width: 22px;
    height: 22px;
    border: 1px solid oklch(94% .04 80 / .8);
    border-radius: 50%;
    background: oklch(65% .14 45 / .25);
    box-shadow: 0 0 0 6px oklch(92% .06 70 / .08), 0 0 18px oklch(75% .12 55 / .55);
}

.senger-hotspot i::after {
    content: "";
    position: absolute;
    inset: 7px;
    border-radius: 50%;
    background: var(--senger-paper);
    animation: sengerHotspotPulse 1.8s ease-in-out infinite;
}

.senger-hotspot:hover,
.senger-hotspot.is-active {
    transform: scale(1.08);
    color: var(--senger-paper);
}

.senger-hotspot--pico { left: 31%; bottom: 14%; }
.senger-hotspot--line { left: 58%; bottom: 17%; }
.senger-hotspot--trench { left: 49%; top: 55%; }
.senger-hotspot--objects { right: 8%; top: 53%; }

.senger-story-panel {
    position: absolute;
    z-index: 9;
    top: 12%;
    right: clamp(1.4rem, 5vw, 6rem);
    width: min(360px, calc(100% - 2.8rem));
    padding: 2rem;
    border: 1px solid oklch(90% .03 80 / .14);
    color: oklch(98% .005 85);
    background: oklch(8% .01 65);
    box-shadow: 0 30px 80px oklch(2% .01 70 / .85);
    opacity: 0;
    transform: translateX(35px);
    visibility: hidden;
    transition: opacity .5s ease, transform .7s cubic-bezier(.16, 1, .3, 1), visibility .5s;
}

.senger-story-panel.is-open {
    opacity: 1;
    transform: translateX(0);
    visibility: visible;
}

.senger-story-panel__close {
    position: absolute;
    top: .7rem;
    right: .9rem;
    border: 0;
    color: var(--senger-paper);
    background: transparent;
    font-size: 1.6rem;
    cursor: pointer;
}

.senger-story-panel__index,
.senger-story-panel__kicker {
    color: var(--senger-rust);
    font-family: var(--font-alt);
    font-size: .65rem;
    letter-spacing: .18em;
    text-transform: uppercase;
}

.senger-story-panel__kicker {
    margin-top: 2.6rem !important;
}

.senger-story-panel__title {
    margin-top: .7rem !important;
    font-size: clamp(2.5rem, 4vw, 4rem) !important;
}

.senger-story-panel__text {
    margin-top: 1.3rem !important;
    color: oklch(97% .008 85);
    font-size: 1.02rem;
    font-weight: 400;
    line-height: 1.62;
}

.senger-story-panel__next {
    width: 100%;
    display: flex;
    justify-content: space-between;
    margin-top: 2rem;
    padding: 1rem 0;
    border: 0;
    border-top: 1px solid oklch(90% .03 80 / .25);
    color: oklch(98% .005 85);
    background: transparent;
    font-family: var(--font-alt);
    font-size: .66rem;
    letter-spacing: .13em;
    text-transform: uppercase;
    cursor: pointer;
}

.senger-experience.has-story .senger-pin:not(.is-active),
.senger-experience.has-story .senger-info-dot:not(.is-active) {
    opacity: .3;
}

/* ===== Modalità esplorazione: dolly-in cinematografico ===== */
.senger-experience.is-exploring {
    --zoom: 1.5;
    --push-y: -5%;
}

.senger-experience.is-exploring .senger-hero__image img {
    filter: saturate(.92) contrast(1.14) brightness(.92);
    transition: filter 1.7s ease;
}

/* punto di fuga scivola verso la porta della trincea */
.senger-experience.is-exploring {
    perspective-origin: 50% 52%;
}

/* marker si accendono in esplorazione */
.senger-experience.is-exploring .senger-pin i,
.senger-experience.is-exploring .senger-info-dot {
    box-shadow: 0 0 0 6px oklch(75% .16 50 / .14), 0 0 24px oklch(70% .2 45 / .85);
}

/* UI del hero sfuma quando si entra nel viaggio */
.senger-hero.is-immersive .senger-hero__content {
    opacity: 0;
    transform: translateY(-24px);
    pointer-events: none;
    transition: opacity .7s ease, transform 1s cubic-bezier(.16, 1, .3, 1);
}

.senger-hero.is-immersive .senger-hero__top,
.senger-hero.is-immersive .senger-scroll-cue {
    opacity: 0;
    pointer-events: none;
    transition: opacity .6s ease;
}

/* pulsante per uscire dall'esplorazione */
.senger-exit-experience {
    position: absolute;
    z-index: 8;
    top: clamp(1.5rem, 3vw, 3rem);
    left: clamp(1.4rem, 5vw, 6rem);
    display: inline-flex;
    align-items: center;
    gap: .7rem;
    padding: .6rem 1.1rem;
    border: 1px solid oklch(91% .025 80 / .35);
    border-radius: 999px;
    color: var(--senger-paper);
    background: oklch(8% .015 70 / .5);
    backdrop-filter: blur(4px);
    font-family: var(--font-alt);
    font-size: .64rem;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    cursor: pointer;
    opacity: 0;
    transform: translateX(-12px);
    pointer-events: none;
    transition: opacity .6s ease, transform .7s cubic-bezier(.16, 1, .3, 1), background .3s ease;
}

.senger-hero.is-immersive .senger-exit-experience {
    opacity: 1;
    transform: translateX(0);
    pointer-events: auto;
    transition-delay: .5s;
}

.senger-exit-experience:hover {
    background: oklch(12% .02 70 / .7);
}

/* ===== Mini-mappa route, alto a destra ===== */
.senger-route-map {
    position: absolute;
    z-index: 6;
    top: clamp(5.5rem, 13vh, 9rem);
    right: clamp(1.4rem, 4vw, 4rem);
    width: clamp(170px, 20vw, 250px);
    pointer-events: none;
    opacity: 0;
    transform: translateY(-12px);
    animation: sengerRise 1.1s 1.1s cubic-bezier(.16, 1, .3, 1) both;
}

.senger-route-map__head {
    display: flex;
    flex-direction: column;
    line-height: 1.1;
    text-align: right;
}

.senger-route-map__title {
    color: var(--senger-paper);
    font-family: var(--font-alt);
    font-size: clamp(1rem, 1.6vw, 1.35rem);
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.senger-route-map__sub {
    margin-top: .15rem;
    color: oklch(88% .018 80 / .7);
    font-family: var(--font-alt);
    font-size: .62rem;
    letter-spacing: .22em;
    text-transform: uppercase;
}

.senger-route-map__years {
    margin-top: .2rem;
    color: var(--senger-rust);
    font-family: var(--font-alt);
    font-size: .58rem;
    letter-spacing: .2em;
}

.senger-route-map__svg {
    width: 100%;
    height: auto;
    margin-top: .6rem;
    overflow: visible;
}

.senger-route-map__line {
    stroke: oklch(65% .2 35);
    stroke-width: 1.5;
    stroke-dasharray: 3 4;
    filter: drop-shadow(0 0 5px oklch(65% .2 35 / .8));
    animation: sengerRouteFlow 6s linear infinite;
}

.senger-route-map__node circle {
    fill: oklch(72% .18 45);
    filter: drop-shadow(0 0 6px oklch(65% .2 35));
    transform-box: fill-box;
    transform-origin: center;
    animation: sengerHotspotPulse 2.4s var(--node-delay, 0s) ease-in-out infinite;
}

.senger-route-map__label {
    position: absolute;
    color: oklch(90% .02 80 / .85);
    font-family: var(--font-alt);
    font-size: .54rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    white-space: nowrap;
}

.senger-route-map__label--difensa { top: 16%; right: -4%; }
.senger-route-map__label--cavalli { top: 50%; right: 32%; }
.senger-route-map__label--pico { bottom: -2%; left: 6%; }

/* ===== Pin geografici sul plastico ===== */
.senger-pin {
    position: absolute;
    z-index: 6;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .45rem;
    padding: 0;
    border: 0;
    color: oklch(94% .02 80);
    background: transparent;
    font-family: var(--font-alt);
    font-size: .6rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    cursor: pointer;
    pointer-events: auto;
    transition: opacity .3s ease, transform .5s cubic-bezier(.16, 1, .3, 1);
}

.senger-pin i {
    position: relative;
    width: 13px;
    height: 13px;
    border-radius: 50%;
    background: oklch(75% .16 50);
    box-shadow: 0 0 0 4px oklch(75% .16 50 / .18), 0 0 14px oklch(70% .18 45 / .7);
}

.senger-pin i::after {
    content: "";
    position: absolute;
    inset: -4px;
    border: 1px solid oklch(80% .12 55 / .6);
    border-radius: 50%;
    animation: sengerPulse 2.4s ease-in-out infinite;
}

.senger-pin span {
    padding: .12rem .45rem;
    background: oklch(8% .015 70 / .55);
    backdrop-filter: blur(2px);
}

.senger-pin:hover,
.senger-pin.is-active {
    transform: translateY(-3px) scale(1.06);
    color: var(--senger-paper);
}

.senger-pin--pico { left: 30%; bottom: 13%; }
.senger-pin--senger { left: 51%; bottom: 17%; }
.senger-pin--cavalli { left: 67%; bottom: 21%; }
.senger-pin--difensa { right: 13%; bottom: 16%; }

/* ===== Punti informativi (i) ===== */
.senger-info-dot {
    position: absolute;
    z-index: 6;
    width: 30px;
    height: 30px;
    padding: 0;
    border: 1px solid oklch(94% .04 80 / .8);
    border-radius: 50%;
    background: oklch(10% .015 70 / .35);
    backdrop-filter: blur(2px);
    box-shadow: 0 0 0 5px oklch(92% .06 70 / .07), 0 0 16px oklch(75% .12 55 / .5);
    cursor: pointer;
    pointer-events: auto;
    transition: transform .4s cubic-bezier(.16, 1, .3, 1), background .3s ease;
}

.senger-info-dot::before {
    content: "i";
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    color: var(--senger-paper);
    font-family: var(--font-alt);
    font-size: .8rem;
    font-style: italic;
    font-weight: 600;
}

.senger-info-dot::after {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: 50%;
    border: 1px solid oklch(80% .1 55 / .5);
    animation: sengerPulse 2.6s ease-in-out infinite;
}

.senger-info-dot:hover,
.senger-info-dot.is-active {
    transform: scale(1.12);
    background: oklch(55% .16 33 / .35);
}

.senger-info-dot--trench { left: 45%; top: 56%; }
.senger-info-dot--objects { right: 9%; top: 52%; }
.senger-info-dot--life { left: 6%; top: 60%; }

.senger-scroll-cue {
    position: absolute;
    left: 50%;
    bottom: 2rem;
    transform: translateX(-50%);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .85rem;
    color: oklch(91% .025 80 / .8);
    font-family: var(--font-alt);
    font-size: .64rem;
    letter-spacing: .2em;
    text-transform: uppercase;
    z-index: 7;
    transition: color .3s ease;
}

.senger-scroll-cue:hover {
    color: var(--senger-paper);
}

.senger-scroll-cue__mouse {
    position: relative;
    width: 22px;
    height: 34px;
    border: 1.5px solid oklch(91% .025 80 / .55);
    border-radius: 12px;
}

.senger-scroll-cue__mouse::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 7px;
    width: 3px;
    height: 7px;
    margin-left: -1.5px;
    border-radius: 2px;
    background: var(--senger-rust);
    animation: sengerScrollDot 1.8s ease-in-out infinite;
}

.senger-prologue {
    position: relative;
    min-height: 110vh;
    padding: clamp(8rem, 16vw, 16rem) clamp(1.4rem, 8vw, 9rem);
    overflow: hidden;
}

.senger-prologue__year {
    position: absolute;
    top: 4%;
    right: -3vw;
    color: oklch(88% .02 80 / .035);
    font-family: var(--font-alt);
    font-size: clamp(11rem, 34vw, 38rem);
    font-weight: 700;
    line-height: .8;
    letter-spacing: -.08em;
    user-select: none;
    transform: translateX(calc((var(--scene-progress) - .5) * -7vw));
}

.senger-prologue__copy {
    position: relative;
    z-index: 2;
    max-width: 1050px;
}

.senger-prologue__copy > p:last-child,
.senger-chapter__copy > p:last-child,
.senger-archive__content > p {
    max-width: 54ch;
    margin-top: 3rem;
    color: var(--senger-bone);
    font-size: clamp(1.05rem, 1.45vw, 1.35rem);
    line-height: 1.65;
}

.senger-prologue__copy .senger-kicker,
.senger-chapter__copy .senger-kicker,
.senger-objects__intro .senger-kicker,
.senger-archive__content .senger-kicker {
    margin-bottom: 1.4rem;
}

.senger-route {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 9%;
    height: 260px;
}

.senger-route svg {
    width: 100%;
    height: 100%;
    overflow: visible;
}

.senger-route path {
    fill: none;
    vector-effect: non-scaling-stroke;
}

.senger-route__ghost {
    stroke: oklch(78% .02 80 / .14);
    stroke-width: 1;
}

.senger-route__live {
    stroke: var(--senger-rust);
    stroke-width: 3;
    stroke-dasharray: 1;
    stroke-dashoffset: calc(1 - var(--route-progress, 0));
    filter: drop-shadow(0 0 8px oklch(55% .16 33 / .45));
}

.senger-route__label {
    position: absolute;
    color: oklch(82% .02 80 / .6);
    font-family: var(--font-alt);
    font-size: .62rem;
    letter-spacing: .18em;
    text-transform: uppercase;
}

.senger-route__label::before {
    content: "";
    display: inline-block;
    width: 7px;
    height: 7px;
    margin-right: .6rem;
    border-radius: 50%;
    background: var(--senger-rust);
    box-shadow: 0 0 0 5px oklch(55% .16 33 / .12);
    animation: sengerPulse 2.4s ease-in-out infinite;
}

.senger-route__label--gustav { left: 12%; top: 42%; }
.senger-route__label--senger { left: 56%; top: 12%; }
.senger-route__label--pico { right: 13%; bottom: 21%; }

.senger-chapter {
    min-height: 130vh;
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(320px, .65fr);
    align-items: center;
    gap: clamp(3rem, 7vw, 9rem);
    padding: clamp(7rem, 12vw, 12rem) clamp(1.4rem, 6vw, 7rem);
    background: oklch(15% .016 76);
}

.senger-chapter__visual {
    position: relative;
    height: min(78vh, 850px);
}

.senger-chapter__visual::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(130deg, transparent 45%, oklch(9% .01 76 / .42));
    pointer-events: none;
}

.senger-chapter__visual img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(1) sepia(.18) contrast(1.24);
    transform: scale(calc(1.12 - var(--camera-progress, 0) * .09)) translateX(calc((var(--camera-progress, 0) - .5) * -3%));
    transition: transform .1s linear;
}

.senger-focus-ring {
    position: absolute;
    z-index: 3;
    left: calc(25% + var(--camera-progress, 0) * 36%);
    top: calc(62% - var(--camera-progress, 0) * 24%);
    width: clamp(70px, 10vw, 150px);
    aspect-ratio: 1;
    border: 1px solid oklch(88% .03 80 / .65);
    border-radius: 50%;
    opacity: calc(.12 + var(--camera-progress, 0) * .65);
    transform: scale(calc(.7 + var(--camera-progress, 0) * .3));
    box-shadow: 0 0 0 999px oklch(7% .01 76 / .12);
    pointer-events: none;
}

.senger-focus-ring::before,
.senger-focus-ring::after {
    content: "";
    position: absolute;
    background: oklch(88% .03 80 / .55);
}

.senger-focus-ring::before { left: 50%; top: -10px; width: 1px; height: calc(100% + 20px); }
.senger-focus-ring::after { top: 50%; left: -10px; height: 1px; width: calc(100% + 20px); }

.senger-frame-mark {
    position: absolute;
    z-index: 2;
    width: 55px;
    height: 55px;
    border-color: var(--senger-rust);
    pointer-events: none;
}

.senger-frame-mark--one {
    top: -16px;
    left: -16px;
    border-top: 2px solid;
    border-left: 2px solid;
}

.senger-frame-mark--two {
    right: -16px;
    bottom: -16px;
    border-right: 2px solid;
    border-bottom: 2px solid;
}

.senger-chapter__copy {
    padding-right: 2vw;
}

.senger-chapter__copy h2 {
    font-size: clamp(3rem, 5.8vw, 6.7rem);
}

.senger-objects {
    display: grid;
    grid-template-columns: 1.12fr .88fr;
    gap: clamp(2rem, 6vw, 7rem);
    padding: clamp(8rem, 14vw, 15rem) clamp(1.4rem, 8vw, 9rem);
}

.senger-objects__intro {
    grid-column: 1 / -1;
    margin-bottom: clamp(3rem, 7vw, 7rem);
}

.senger-object {
    position: relative;
    overflow: hidden;
}

.senger-object img {
    width: 100%;
    object-fit: cover;
    filter: saturate(.5) contrast(1.13);
    transition: filter .8s ease, transform 1.2s cubic-bezier(.16, 1, .3, 1);
}

.senger-object:hover img {
    filter: saturate(.82) contrast(1.07);
    transform: scale(1.015);
}

.senger-object__scan {
    position: absolute;
    z-index: 2;
    top: 0;
    left: -30%;
    width: 18%;
    height: 78%;
    opacity: 0;
    transform: skewX(-12deg);
    background: linear-gradient(90deg, transparent, oklch(94% .05 75 / .22), transparent);
    pointer-events: none;
}

.senger-object.is-visible .senger-object__scan {
    animation: sengerScan 2.4s .55s cubic-bezier(.16, 1, .3, 1) both;
}

.senger-object--wide img {
    aspect-ratio: 1.42;
}

.senger-object--portrait {
    padding-top: 18vh;
}

.senger-object--portrait img {
    aspect-ratio: .82;
}

.senger-object > div {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: .7rem 2rem;
    align-items: end;
    padding-top: 1.2rem;
    border-top: 1px solid oklch(85% .02 80 / .2);
}

.senger-object > div span {
    color: var(--senger-rust);
    font-family: var(--font-alt);
    font-size: .62rem;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.senger-object h3 {
    grid-row: 1 / 3;
    grid-column: 2;
    color: var(--senger-paper);
    font-size: clamp(2rem, 3vw, 3.3rem);
}

.senger-object p {
    max-width: 38ch;
    color: var(--senger-bone);
    line-height: 1.6;
}

.senger-quote {
    grid-column: 1 / -1;
    margin: clamp(8rem, 16vw, 17rem) 0 2rem;
    padding: 0;
    border: 0;
}

.senger-quote p {
    max-width: 14ch;
    margin-left: auto;
    color: var(--senger-paper);
    font-family: var(--font-heading);
    font-size: clamp(3rem, 7vw, 8rem);
    font-weight: 700;
    line-height: .94;
    letter-spacing: -.055em;
}

.senger-archive {
    min-height: 110vh;
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--senger-paper);
    color: var(--senger-ink);
}

.senger-archive__image {
    min-height: 80vh;
    overflow: hidden;
    position: relative;
}

.senger-archive__image img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(1) contrast(1.14);
    transform: scale(calc(1.14 - var(--camera-progress, 0) * .1)) translateY(calc((var(--camera-progress, 0) - .5) * -3%));
}

.senger-archive__coordinates {
    position: absolute;
    left: 2rem;
    bottom: 2rem;
    padding: .65rem .85rem;
    color: oklch(93% .02 80 / .8);
    background: oklch(8% .01 76 / .7);
    font-family: var(--font-alt);
    font-size: .62rem;
    letter-spacing: .17em;
}

.senger-archive__content {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: clamp(5rem, 9vw, 10rem);
}

.senger-archive__content h2 {
    color: var(--senger-ink);
    font-size: clamp(3.2rem, 6vw, 7rem);
}

.senger-archive__content > p {
    color: oklch(29% .016 76);
}

.senger-archive dl {
    margin-top: 4rem;
}

.senger-archive dl div {
    display: grid;
    grid-template-columns: 8rem 1fr;
    gap: 1.5rem;
    padding: 1rem 0;
    border-top: 1px solid oklch(20% .01 76 / .22);
}

.senger-archive dt {
    color: var(--senger-rust);
    font-family: var(--font-alt);
    font-size: .68rem;
    letter-spacing: .15em;
    text-transform: uppercase;
}

.senger-archive dd {
    margin: 0;
    font-weight: 600;
}

.senger-memory {
    position: relative;
    min-height: 110svh;
    display: flex;
    align-items: center;
    overflow: hidden;
    isolation: isolate;
}

.senger-memory__image,
.senger-memory__shade {
    position: absolute;
    inset: 0;
}

.senger-memory__image {
    z-index: -2;
    transform: translateY(var(--parallax-y, 0)) scale(1.12);
}

.senger-memory__image img {
    width: 100%;
    height: 110%;
    object-fit: cover;
    filter: grayscale(.5) saturate(.55) brightness(.58);
    transform: scale(calc(1.08 - var(--scene-progress) * .05));
}

.senger-memory__shade {
    z-index: -1;
    background: linear-gradient(90deg, oklch(8% .01 76 / .92), oklch(8% .01 76 / .25) 72%);
}

.senger-memory__content {
    width: min(86%, 1450px);
    margin: 0 auto;
}

.senger-memory__content h2 {
    margin-top: 1.5rem;
}

.senger-memory__content > p:last-child {
    max-width: 52ch;
    margin-top: 2.5rem;
    color: var(--senger-bone);
    font-size: clamp(1.05rem, 1.5vw, 1.35rem);
    line-height: 1.65;
}

.senger-visit {
    position: relative;
    min-height: 100svh;
    display: grid;
    grid-template-columns: 1fr minmax(270px, .55fr);
    align-items: end;
    gap: 4rem;
    padding: clamp(8rem, 14vw, 15rem) clamp(1.4rem, 8vw, 9rem) 5rem;
    overflow: hidden;
    background: var(--senger-rust);
    color: oklch(96% .015 76);
}

.senger-visit__number {
    position: absolute;
    top: -8vw;
    right: -4vw;
    color: oklch(97% .015 76 / .09);
    font-family: var(--font-alt);
    font-size: clamp(22rem, 54vw, 65rem);
    font-weight: 700;
    line-height: .75;
    letter-spacing: -.1em;
    transform: translateY(calc((var(--scene-progress) - .5) * -8vh));
}

.senger-visit__content,
.senger-visit__credits {
    position: relative;
    z-index: 1;
}

.senger-visit .senger-kicker {
    color: oklch(96% .015 76 / .7);
}

.senger-visit h2 {
    max-width: 11ch;
    margin-top: 1.5rem;
    color: oklch(97% .015 76);
}

.senger-visit__content > p:not(.senger-kicker) {
    max-width: 48ch;
    margin-top: 2.5rem;
    font-size: 1.12rem;
    line-height: 1.65;
}

.senger-cta {
    width: min(100%, 420px);
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 3rem;
    padding: 1.4rem 0;
    border-top: 1px solid oklch(97% .015 76 / .55);
    border-bottom: 1px solid oklch(97% .015 76 / .55);
    color: oklch(97% .015 76);
    font-family: var(--font-alt);
    font-size: .82rem;
    letter-spacing: .16em;
    text-transform: uppercase;
}

.senger-cta:hover {
    padding-left: .8rem;
    padding-right: .8rem;
    color: oklch(97% .015 76);
}

.senger-cta i {
    font-size: 1.4rem;
    font-style: normal;
}

.senger-visit__credits {
    padding-bottom: .4rem;
    color: oklch(97% .015 76 / .75);
    font-size: .78rem;
    line-height: 1.7;
}

.senger-visit__credits p + p {
    margin-top: .65rem;
}

.senger-word {
    opacity: .18;
    color: var(--senger-bone);
    transition: opacity .22s ease;
}

.senger-chapter-indicator {
    position: fixed;
    z-index: 25;
    left: clamp(1rem, 2.5vw, 2.5rem);
    top: 50%;
    display: grid;
    grid-template-columns: 1px auto;
    grid-template-rows: auto auto;
    gap: .35rem .8rem;
    opacity: 0;
    transform: translate(-20px, -50%);
    transition: opacity .5s ease, transform .7s cubic-bezier(.16, 1, .3, 1);
    pointer-events: none;
}

.senger-chapter-indicator.is-visible {
    opacity: 1;
    transform: translate(0, -50%);
}

.senger-chapter-indicator__line {
    grid-row: 1 / 3;
    width: 1px;
    height: 54px;
    background: linear-gradient(to bottom, var(--senger-rust) calc(var(--senger-progress) * 100%), oklch(80% .02 80 / .18) 0);
}

.senger-chapter-indicator__number,
.senger-chapter-indicator__name {
    font-family: var(--font-alt);
    line-height: 1;
    text-transform: uppercase;
}

.senger-chapter-indicator__number {
    color: var(--senger-rust);
    font-size: .64rem;
    letter-spacing: .14em;
}

.senger-chapter-indicator__name {
    max-width: 8rem;
    color: oklch(88% .02 80 / .72);
    font-size: .57rem;
    letter-spacing: .18em;
}

.senger-museum-page .site-footer {
    margin-top: 0;
}

@keyframes sengerOpening {
    from { transform: scale(1.13); filter: saturate(.15) contrast(1.3) brightness(.45); }
    to { transform: scale(1); filter: saturate(.62) contrast(1.12) brightness(.82); }
}

@keyframes sengerRise {
    from { opacity: 0; transform: translateY(55px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes sengerScroll {
    0% { transform: translateY(-100%); }
    45%, 55% { transform: translateY(0); }
    100% { transform: translateY(100%); }
}

@keyframes sengerBars {
    from { transform: scaleY(1); }
    to { transform: scaleY(0); }
}

@keyframes sengerEmber {
    0% { opacity: 0; transform: translate3d(0, 0, 0); }
    12% { opacity: .85; }
    100% { opacity: 0; transform: translate3d(35px, -62vh, 0); }
}

@keyframes sengerPulse {
    0%, 100% { box-shadow: 0 0 0 5px oklch(55% .16 33 / .1); }
    50% { box-shadow: 0 0 0 10px oklch(55% .16 33 / 0); }
}

@keyframes sengerScan {
    0% { left: -30%; opacity: 0; }
    20% { opacity: 1; }
    100% { left: 118%; opacity: 0; }
}

@keyframes sengerRouteFlow {
    to { stroke-dashoffset: -1; }
}

@keyframes sengerHotspotPulse {
    0%, 100% { opacity: .45; transform: scale(.7); }
    50% { opacity: 1; transform: scale(1.15); }
}

@keyframes sengerScrollDot {
    0% { opacity: 0; transform: translateY(0); }
    25% { opacity: 1; }
    75% { opacity: 1; transform: translateY(9px); }
    100% { opacity: 0; transform: translateY(12px); }
}

@media (max-width: 900px) {
    .senger-hero__lead {
        margin-left: 0 !important;
    }

    .senger-chapter,
    .senger-archive {
        grid-template-columns: 1fr;
    }

    .senger-chapter {
        padding-left: 0;
        padding-right: 0;
    }

    .senger-chapter__visual {
        width: 92%;
        height: 66vh;
    }

    .senger-chapter__copy {
        padding: 2rem 1.4rem 0;
    }

    .senger-objects {
        grid-template-columns: 1fr;
    }

    .senger-object--portrait {
        width: 76%;
        margin-left: auto;
        padding-top: 3rem;
    }

    .senger-archive__image {
        min-height: 70vh;
    }

    .senger-visit {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 600px) {
    .senger-hero__top {
        align-items: flex-start;
    }

    .senger-location {
        max-width: 12ch;
        text-align: right;
    }

    .senger-hero__content {
        width: min(92%, 1500px);
        padding-top: 5rem;
        padding-bottom: 7rem;
    }

    .senger-eyebrow {
        margin-bottom: .9rem !important;
        font-size: .62rem;
    }

    .senger-hero h1 {
        max-width: 11ch;
        font-size: clamp(2rem, 9.5vw, 2.9rem);
        line-height: .95;
        letter-spacing: -.03em;
    }

    .senger-hero h1 span:nth-child(2) {
        margin-left: 0;
    }

    .senger-hero__lead {
        max-width: 30ch;
        margin-top: 1.4rem !important;
        font-size: 1rem;
    }

    .senger-enter-experience {
        margin-top: 1.4rem;
        padding: .8rem 1.2rem;
    }

    .senger-scroll-cue {
        bottom: 1.2rem;
    }

    .senger-scroll-cue span {
        display: none;
    }

    .senger-prologue {
        min-height: 100vh;
    }

    .senger-route {
        bottom: 4%;
    }

    .senger-route__label--gustav { left: 4%; }
    .senger-route__label--senger { left: 48%; }
    .senger-route__label--pico { right: 4%; }

    .senger-object--portrait {
        width: 88%;
    }

    .senger-object > div {
        grid-template-columns: 1fr;
    }

    .senger-object h3 {
        grid-row: auto;
        grid-column: auto;
    }

    .senger-quote p {
        margin-left: 0;
    }

    .senger-archive__content {
        padding-left: 1.4rem;
        padding-right: 1.4rem;
    }

    .senger-archive dl div {
        grid-template-columns: 6.5rem 1fr;
    }

    .senger-memory__content {
        width: calc(100% - 2.8rem);
    }

    .senger-chapter-indicator {
        display: none;
    }

    .senger-focus-ring {
        width: 76px;
    }

    .senger-experience__camera {
        inset: 0;
    }

    .senger-hero__image {
        transform: none;
    }

    .senger-hero__image img {
        object-position: 52% center;
    }

    .senger-map-route {
        left: -10%;
        right: -25%;
        bottom: 4%;
    }

    /* Mini-mappa route: ingombrante su mobile, nascosta */
    .senger-route-map {
        display: none;
    }

    .senger-pin span {
        display: none;
    }

    .senger-pin--pico { left: 22%; bottom: 12%; }
    .senger-pin--senger { left: 48%; bottom: 16%; }
    .senger-pin--cavalli { left: 68%; bottom: 19%; }
    .senger-pin--difensa { right: 9%; bottom: 14%; }

    .senger-info-dot {
        width: 26px;
        height: 26px;
    }

    .senger-info-dot--trench { left: 44%; top: 52%; }
    .senger-info-dot--objects { right: 7%; top: 48%; }
    .senger-info-dot--life { left: 5%; top: 56%; }

    /* Bottom-sheet compatto: niente testo tagliato, "Prossima tappa" sempre visibile */
    .senger-story-panel {
        top: auto;
        right: .7rem;
        bottom: .7rem;
        left: .7rem;
        width: auto;
        max-height: 64svh;
        overflow-y: auto;
        padding: 1.1rem 1.2rem 1.2rem;
        transform: translateY(30px);
    }

    .senger-story-panel.is-open {
        transform: translateY(0);
    }

    .senger-story-panel__index {
        font-size: .58rem;
    }

    .senger-story-panel__kicker {
        margin-top: .6rem !important;
    }

    .senger-story-panel__title {
        margin-top: .35rem !important;
        font-size: 2rem !important;
    }

    .senger-story-panel__text {
        margin-top: .8rem !important;
        font-size: .9rem;
        line-height: 1.5;
    }

    .senger-story-panel__next {
        margin-top: 1.1rem;
        padding: .8rem 0;
    }
}

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

    .senger-reveal {
        opacity: 1;
        transform: none;
    }

    .senger-hero__image,
    .senger-memory__image {
        transform: scale(1.04);
    }
}
