/* ==========================================================================
   Social in Store — foglio di stile unico
   Ricostruzione in HTML/CSS/JS vanilla del design Claude Design (design/).
   Struttura:
     1. Font
     2. Token (colori, tipografia, misure, animazioni)
     3. Base e tipografia
     4. Layout (sezioni, griglia, utilità)
     5. Header e menu off-canvas
     6. Componenti del design system (bottoni, badge, accordion, form, card…)
     7. Blocco contatti, footer, tinta di fine pagina
     8. Sezioni animate allo scroll (data-fx) e sezioni di pagina
     9. Ingressi (data-in)
    10. Responsive (1300 / 999 / 690 / 1920)
    11. prefers-reduced-motion
   ========================================================================== */

/* 1. FONT ------------------------------------------------------------------ */
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/plusjakartasans-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/plusjakartasans-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.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; }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url(/assets/fonts/plusjakartasans-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 500; font-display: swap; src: url(/assets/fonts/plusjakartasans-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.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; }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url(/assets/fonts/plusjakartasans-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 600; font-display: swap; src: url(/assets/fonts/plusjakartasans-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.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; }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url(/assets/fonts/plusjakartasans-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko40yyygA.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Plus Jakarta Sans'; font-style: normal; font-weight: 700; font-display: swap; src: url(/assets/fonts/plusjakartasans-LDIoaomQNQcsA88c7O9yZ4KMCoOg4Ko20yw.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; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/poppins-pxiEyp8kv8JHgFVrJJnecmNE.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 400; font-display: swap; src: url(/assets/fonts/poppins-pxiEyp8kv8JHgFVrJJfecg.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; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 500; font-display: swap; src: url(/assets/fonts/poppins-pxiByp8kv8JHgFVrLGT9Z1JlFc-K.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 500; font-display: swap; src: url(/assets/fonts/poppins-pxiByp8kv8JHgFVrLGT9Z1xlFQ.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; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 600; font-display: swap; src: url(/assets/fonts/poppins-pxiByp8kv8JHgFVrLEj6Z1JlFc-K.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 600; font-display: swap; src: url(/assets/fonts/poppins-pxiByp8kv8JHgFVrLEj6Z1xlFQ.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; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 700; font-display: swap; src: url(/assets/fonts/poppins-pxiByp8kv8JHgFVrLCz7Z1JlFc-K.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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Poppins'; font-style: normal; font-weight: 700; font-display: swap; src: url(/assets/fonts/poppins-pxiByp8kv8JHgFVrLCz7Z1xlFQ.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; }

/* 2. TOKEN ----------------------------------------------------------------- */
:root {
  --c-bg: #f7f7f7;
  --c-text: #161616;
  --c-light-text: #fdfaeb;
  --c-pink: #ff9aba;
  --c-red: #ff4375;
  --c-orange: #ff7e01;
  --c-yellow: #ffb400;
  --c-white: #ffffff;
  --c-black: #000000;
  --c-dark: #161616;
  --c-wedding: #efe8dc;
  --c-wedding-2: #e6dccb;
  --c-tablet-bg: #ffe7ef;

  --f-head: "Plus Jakarta Sans", system-ui, sans-serif;
  --f-body: "Poppins", system-ui, sans-serif;
  --fs-body: 17px; --lh-body: 30px;
  --fs-h1: 100px; --lh-h1: 106px;
  --fs-h2: 62px;  --lh-h2: 70px;
  --fs-h3: 36px;  --lh-h3: 44px;
  --fs-h4: 22px;  --lh-h4: 32px;
  --fs-h5: 16px;  --lh-h5: 26px;

  --gutter: 60px;
  --container: 1245px;
  --header-h: 116px;
  --logo-h: 60px;
  --header-pad: 28px;
  --radius-s: 10px;
  --radius-m: 15px;
  --radius-l: 20px;

  --ease-o: cubic-bezier(.2,.8,.2,1);      /* ingressi e movimenti */
  --ease-clip: cubic-bezier(.7,0,.2,1);    /* apertura menu */
  --ease-out-cubic: cubic-bezier(.215,.61,.355,1);
  --ease-in-out-cubic: cubic-bezier(.65,0,.35,1);
  --ease-nectar: cubic-bezier(.25,1,.33,1);
  --ease-button: cubic-bezier(.12,.75,.4,1);

  --page-bg: var(--c-bg);
  --page-text: var(--c-text);
}
@media (max-width: 1300px) and (min-width: 1000px) {
  :root { --fs-h1: 78px; --lh-h1: 82px; --fs-h2: 46px; --lh-h2: 52px; --fs-h3: 32px; --lh-h3: 39px; }
}
@media (max-width: 999px) {
  :root {
    --fs-h1: 66px; --lh-h1: 70px; --fs-h2: 48px; --lh-h2: 54px; --fs-h3: 29px; --lh-h3: 35px;
    --fs-h4: 20px; --lh-h4: 29px;
    --gutter: 25px; --logo-h: 30px; --header-pad: 12px; --header-h: 54px;
  }
}
@media (max-width: 690px) {
  :root { --fs-h1: 72px; --lh-h1: 76px; --fs-h2: 49px; --lh-h2: 55px; --fs-h3: 28px; --lh-h3: 34px; }
}

/* 3. BASE E TIPOGRAFIA ------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; overflow-x: clip; scroll-behavior: smooth; }
html, body { margin: 0; padding: 0; }
html, body {
  cursor: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACpQTFRF4+PicnJxSEhGZGRjnJybqqqp1NTUOTk48fHxxsbGVlZUjo6NHR0b////2+j+CwAAAA50Uk5T/////////////////wBFwNzIAAAAs0lEQVR42ryT2xKDIAxEg7d2N/j/v9tIShULdtSZnkc9CwmTyPwD+f6khhwJ0UBbUO1IBkVL8HSMWhVElZwOBMSYz6kJooHMdYwVYZMvuxAA0/zE4AKwF9QaZz2/CIJgQpfzizAgY78tTz+lfEtHLwoZ3hDyBfNlwZvsbtcQWg/1lxqY6G10z9Tg47Yuz2Mv7KvgW4D2y30WCSzo0/KsI5eGdot+ZhKWHn1ttqC1vCUvAQYAz4UwDnifBVgAAAAASUVORK5CYII="), auto;
}
a, button, input[type="submit"], [role="button"], label[for], summary {
  cursor: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXpQTFRF5ufoWldYtbW2/Pz8/v7+9PX1/f399fb28vPz9PT16Onq8fLy+fn59fX2////+vr7+/v78vLz8/T08PHx8fHy5+jp8/P06err9/f3/Pz9VFFS+/v89/j47u/w9vf39vb3+Pj48PDx1tXV6uvs6+zt+vr6+fn6u7u8+Pj5rKur6+vs7/Dx8PHy7u/v7u7vWFVW7Ozt4+Pj7e3u7e7v+vv78fHxhYOE+Pn5WVZXuLi59/f4VlNU/f7+iIaHeHd47e7ujoyNoqGijYuM6+zstra3S0hJwsLDjoyMg4GBjo2NkI6OV1RVxMPDq6mqubm6jYyMk5KTiYeIw8LD1NTV+fr66Onpq6qqxsXFiIeH09PUj4yNiYiIiIeI8vP09vb2u7u7t7e4x8bG/f3+bGprcW9vcW9wx8bHxcTE7O3tdnN0hoWGSEVGj42Ou7q7uLe4Pzs86urrysrKj42Nm5qa7+/wnZydWVZWZWJj7O3uWVdXyMfHkY+PIx8g////OlS6+gAAAH50Uk5T//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AzD7mcgAAAdFJREFUeNp801Vz4zAUBWDJMsZ2zBTmDSdNsmVul5mZmZki5b+vJ+2kcZ34POnhm7m6oyMwOgrGeBQKmDoTQqJADVIUBWvzASYAAIIjgWVFA6fYjQa9ViMaGOIj8m44PDkX2Aznb0qGcwHn5siPi9dP+QjPBCmpTN6og+XfZ3bvY7wQBpKSJHc8tPz9Zm53MmkaKIglz9bZfx/VypUL/BqcgOH4apgkWZa8pml4HinbHf3bDixMwIvFxT9fCGJpWIjHz95G6nZHEJ+MpxwACoDND8R7Tsf90DSbPNdhtBNBAPaJR6Ol1GAMyqvTYAFv/ALWU4I4Q+R5Bq17asVlxCMwGsEEiK0QzrQFWWYEBQ2kjND8NAX8HT9fJqYtZ1Ipl9MZWdb6DhUEK/ceaIwrlRVpVebz/XoMBEANXr2R57mc4rHqUlZvtkvHgN/Yh4bNVVWWTkpZ3WzNAHfzvJwqI6RUOdto78U2X46bMQH41TVRyOakSjXDaI2t4q0EPPZYkBi88DjjZhnbTL91rBkgbWi6IOi8+bNXjIEQKAzXdhpNUTTz6d6eczpxqRD+ehtb7XS61f9bdywqXBgfvC+Wut1S/WvMArNBIDMADuSwtP8FGAD2RWkLhEpPRAAAAABJRU5ErkJggg==") 16 16, pointer;
}
body {
  font-family: var(--f-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  font-weight: 400;
  color: var(--page-text);
  background-color: var(--page-bg);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: clip;
}
img, video, svg { display: block; max-width: 100%; }
img { height: auto; }
p { margin: 0 0 27px; }
p:last-child { margin-bottom: 0; }
strong, b { font-weight: 600; }
a { color: inherit; text-decoration: none; }
a:hover { color: var(--c-red); }
ul, ol { margin: 0; padding: 0; list-style: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; }
h1, h2, h3, h4, h5, h6 { margin: 0; font-weight: 400; color: inherit; }
h1, .h1 { font-family: var(--f-head); font-size: var(--fs-h1); line-height: var(--lh-h1); font-weight: 600; }
h2, .h2 { font-family: var(--f-head); font-size: var(--fs-h2); line-height: var(--lh-h2); font-weight: 500; }
h3, .h3 { font-family: var(--f-head); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: 400; }
h4, .h4 { font-family: var(--f-body); font-size: var(--fs-h4); line-height: var(--lh-h4); font-weight: 600; }
.h1-style { font-family: var(--f-head); font-size: var(--fs-h1); line-height: var(--lh-h1); font-weight: 600; }
.text-p { font: inherit; }
.m0 { margin: 0; }
.balance { text-wrap: balance; }
.pretty { text-wrap: pretty; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; top: -100px; left: 10px; z-index: 100000; background: #fff; color: #000; padding: 8px 16px; border-radius: 6px; font-size: 14px; }
.skip-link:focus { top: 10px; }
:focus-visible { outline: 2px solid var(--c-red); outline-offset: 3px; }

/* Media a copertura (foto/video dentro un contenitore arrotondato) */
.media-cover { position: relative; overflow: hidden; border-radius: var(--radius-l); }
.media-cover > video, .media-cover > img, .cover { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.media-cover--m { border-radius: var(--radius-m); }
.shade { position: absolute; inset: 0; background: rgba(22,22,22,.38); }

/* 4. LAYOUT ----------------------------------------------------------------- */
.section { position: relative; }
.section--gutter { padding-left: var(--gutter); padding-right: var(--gutter); }
.container { max-width: calc(var(--container) + 180px); margin: 0 auto; padding: 0 90px; }
.row { display: flex; flex-wrap: nowrap; width: 100%; }
.row--middle { align-items: center; }
.row--bottom { align-items: flex-end; }
.row--top { align-items: flex-start; }
.col { position: relative; min-width: 0; }
.col-4 { width: 33.3333%; } .col-6 { width: 50%; } .col-8 { width: 66.6667%; } .col-12 { width: 100%; }
.stack-v { display: flex; flex-direction: column; }
.gap-10 { gap: 10px; } .gap-20 { gap: 20px; } .gap-30 { gap: 30px; } .gap-40 { gap: 40px; }
.flex { display: flex; }
.flex--center { align-items: center; }
.flex--wrap { flex-wrap: wrap; }
.gap-30x { gap: 30px; }
.hide-phone { }
.is-light { color: var(--c-light-text); }
/* bottoni ingranditi come nei prototipi (zoom CSS) */
.z-12 { display: flex; zoom: 1.2; } .z-13 { display: flex; zoom: 1.3; } .z-14 { display: flex; zoom: 1.4; }
.z-15 { display: flex; zoom: 1.5; } .z-16 { display: flex; zoom: 1.6; } .z-17 { display: flex; zoom: 1.7; }
.nowrap { white-space: nowrap; }

/* Intestazione di sezione (titolo + testo, link a destra) */
.services-head { padding-top: 6vw; padding-bottom: 2vw; }
.services-head__cta { display: flex; justify-content: flex-end; }

/* 5. HEADER E MENU OFF-CANVAS ----------------------------------------------- */
.site-header {
  position: fixed; top: 0; left: 0; right: 0; z-index: 9995;
  height: var(--header-h); padding: var(--header-pad) 28px;
  display: flex; align-items: center; justify-content: space-between;
  pointer-events: none; color: var(--c-text); transition: color .3s ease;
}
.site-header > * { pointer-events: auto; }
.site-header__logo { position: relative; display: block; height: var(--logo-h); line-height: 0; }
.site-header__logo img { height: 100%; width: auto; transition: opacity .3s ease; }
.site-header__logo img + img { position: absolute; left: 0; top: 0; opacity: 0; }
.site-header.is-light { color: var(--c-light-text); }
.site-header.is-light .site-header__logo img:first-child { opacity: 0; }
.site-header.is-light .site-header__logo img + img { opacity: 1; }
.site-header a:hover { color: inherit; }
/* area di tocco 44×44, linee da 30×2 centrate */
.menu-toggle { position: relative; width: 44px; height: 44px; margin: -11px -7px -11px 0; display: block; }
.menu-toggle span, .menu-toggle::before, .menu-toggle::after {
  content: ""; position: absolute; left: 7px; width: 30px; height: 2px; border-radius: 2px; background: currentColor;
  transition: transform .4s cubic-bezier(.2,.01,.16,1), opacity .2s, background-color .3s;
}
.menu-toggle::before { top: 11.5px; }
.menu-toggle span { top: 21px; }
.menu-toggle::after { bottom: 11.5px; }
.menu-toggle:hover span { transform: scaleX(.7); transform-origin: left; }

.menu {
  position: fixed; inset: 0; z-index: 2147483000;
  background: var(--c-dark); color: var(--c-light-text);
  clip-path: inset(0 0 100% 0); pointer-events: none;
  display: flex; flex-direction: column;
  transition: clip-path .9s var(--ease-clip), background-color .6s ease;
}
.menu.is-open { clip-path: inset(0 0 0 0); pointer-events: auto; }
.menu a:hover { color: inherit; }
.menu__top { height: var(--header-h); padding: var(--header-pad) 28px; display: flex; align-items: center; flex: none; }
.menu__logo { display: block; height: var(--logo-h); line-height: 0; }
.menu__logo img { height: 100%; width: auto; }
.menu__payoff {
  margin-left: 28px; padding-left: 28px; border-left: 1px solid rgba(253,250,235,.35);
  font-family: var(--f-head); font-weight: 600; font-size: 18px; letter-spacing: .01em;
  opacity: 0; transform: translate3d(0,10px,0); transition: opacity .6s ease, transform .8s var(--ease-o);
}
.menu.is-open .menu__payoff { opacity: 1; transform: none; transition-delay: .6s; }
.menu__close {
  position: absolute; top: 28px; right: 28px; width: 56px; height: 56px; border-radius: 999px;
  border: 1.5px solid rgba(253,250,235,.5); background: transparent; color: var(--c-light-text);
  display: flex; align-items: center; justify-content: center;
  transform: rotate(-90deg); transition: transform .4s var(--ease-o), border-color .3s;
}
.menu.is-open .menu__close { transform: rotate(0deg); }
.menu__close:hover { border-color: var(--c-light-text); transform: rotate(90deg) !important; }
.menu__close svg { width: 18px; height: 18px; }
.menu__grid {
  flex: 1; min-height: 0; overflow-y: auto;
  display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); gap: 6vw; padding: 2vh 60px 6vh;
}
.menu__left { display: flex; flex-direction: column; justify-content: center; gap: 5vh; min-height: 0; }
.menu__pages { display: flex; flex-direction: column; gap: .4vh; }
.menu__pages li { overflow: hidden; padding-bottom: .06em; }
.menu__pages a {
  display: flex; align-items: baseline; gap: 1.2vw;
  transform: translate3d(0,110%,0); transition: transform .9s var(--ease-o) 0s, opacity .3s ease;
}
.menu__n { font-family: var(--f-body); font-size: 14px; font-weight: 600; letter-spacing: .08em; opacity: .7; min-width: 28px; }
.menu__label { font-family: var(--f-head); font-weight: 600; font-size: max(34px, min(5.2vw, 8.2vh)); line-height: 1.02; letter-spacing: -.02em; transition: transform .5s var(--ease-o); }
.menu__pages a:hover .menu__label { transform: translateX(1.2vw); }
.menu__dot { display: none; width: 12px; height: 12px; border-radius: 99px; background: var(--c-light-text); align-self: center; }
.menu__pages a[aria-current="page"] .menu__dot { display: block; }
.menu__rule { height: 1px; background: rgba(253,250,235,.3); transform-origin: left; transform: scaleX(0); transition: transform 1s var(--ease-o) 0s; }
.menu.is-open .menu__rule { transform: scaleX(1); transition-delay: .5s; }
.menu__services { display: flex; flex-direction: column; gap: 18px; }
.menu__svc-head { overflow: hidden; }
.menu__svc-head span { display: inline-block; font-family: var(--f-body); font-size: 14px; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; opacity: .7; transform: translate3d(0,110%,0); transition: transform .9s var(--ease-o) 0s; }
.menu__svc { display: grid; grid-template-columns: repeat(2, max-content); white-space: nowrap; gap: 0 56px; }
.menu__svc li { overflow: hidden; padding: 4px 6px; margin: -4px -6px; }
.menu__svc a { padding: 8px 0;
  display: flex; align-items: center; gap: 14px;
  font-family: var(--f-head); font-size: max(18px, min(1.7vw, 3vh)); line-height: 1.3;
  transform: translate3d(0,110%,0); transition: transform .9s var(--ease-o) 0s, opacity .3s ease;
}
.menu__swatch { flex: none; width: 14px; height: 14px; border-radius: 99px; background: var(--sw, var(--c-pink)); border: 2px solid var(--c-light-text); }
.menu__swatch--orange { --sw: #ff7e01; } .menu__swatch--pink { --sw: #ff9aba; } .menu__swatch--red { --sw: #ff4375; }
.menu__swatch--yellow { --sw: #ffb400; } .menu__swatch--wedding { --sw: #efe8dc; }
.menu__new { font-family: var(--f-body); font-size: 11px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; padding: 3px 9px; border-radius: 99px; background: var(--c-light-text); color: var(--c-dark); }
.menu__here { display: none; font-family: var(--f-body); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; opacity: .7; }
.menu__svc a[aria-current="page"] .menu__here { display: inline; }
/* dimmer delle voci non in hover */
.menu.is-hovering .menu__pages a:not(:hover), .menu.is-hovering .menu__svc a:not(:hover) { opacity: .6; }
/* ingresso a cascata delle voci */
.menu.is-open .menu__pages a, .menu.is-open .menu__svc-head span, .menu.is-open .menu__svc a { transform: none; }
.menu.is-open .menu__pages li:nth-child(1) a { transition-delay: .25s, 0s; }
.menu.is-open .menu__pages li:nth-child(2) a { transition-delay: .31s, 0s; }
.menu.is-open .menu__pages li:nth-child(3) a { transition-delay: .37s, 0s; }
.menu.is-open .menu__pages li:nth-child(4) a { transition-delay: .43s, 0s; }
.menu.is-open .menu__pages li:nth-child(5) a { transition-delay: .49s, 0s; }
.menu.is-open .menu__svc-head span { transition-delay: .61s; }
.menu.is-open .menu__svc li:nth-child(1) a { transition-delay: .67s, 0s; }
.menu.is-open .menu__svc li:nth-child(2) a { transition-delay: .73s, 0s; }
.menu.is-open .menu__svc li:nth-child(3) a { transition-delay: .79s, 0s; }
.menu.is-open .menu__svc li:nth-child(4) a { transition-delay: .85s, 0s; }
.menu.is-open .menu__svc li:nth-child(5) a { transition-delay: .91s, 0s; }
.menu.is-open .menu__svc li:nth-child(6) a { transition-delay: .97s, 0s; }
.menu__preview { position: relative; display: flex; flex-direction: column; min-height: 0; padding: 2vh 0; }
.menu__shots { position: relative; flex: 1; min-height: 0; border-radius: var(--radius-l); overflow: hidden; opacity: 0; transform: scale(.9); transition: opacity .8s ease 0s, transform 1s var(--ease-o) 0s; }
.menu.is-open .menu__shots { opacity: 1; transform: none; transition-delay: .5s; }
.menu__shots img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transform: scale(1.08); transition: opacity .5s ease, transform 1.2s var(--ease-o); }
.menu__shots img.is-active { opacity: 1; transform: scale(1); }
.menu__mascot {
  position: absolute; left: -4vw; bottom: -3vh; height: min(30vh, 260px); width: auto; z-index: 2; pointer-events: none;
  transform: rotate(-30deg) scale(0); transition: transform 1s var(--ease-o) 0s;
  filter: drop-shadow(0 12px 24px rgba(22,22,22,.25));
}
.menu.is-open .menu__mascot { transform: rotate(-8deg) scale(1); transition-delay: .75s; }
html.menu-open, html.menu-open body { overflow: hidden; }

/* 6. COMPONENTI --------------------------------------------------------------- */
/* Link sottolineato */
.link-underline { position: relative; display: inline-block; color: var(--c-text); }
.link-underline::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; border-bottom: 2px solid currentColor; transform-origin: left; transition: transform .4s cubic-bezier(.23,.46,.4,1); }
.link-underline:hover::after { animation: underline-out-in .9s cubic-bezier(.15,.75,.5,1) forwards; }
@keyframes underline-out-in {
  0% { transform: scaleX(1); transform-origin: right; }
  45% { transform: scaleX(0); transform-origin: right; }
  46% { transform: scaleX(0); transform-origin: left; }
  100% { transform: scaleX(1); transform-origin: left; }
}
.link-underline--light { color: #fff; font-size: max(1.1vw, 16px); line-height: 1.5; padding: 4px 0; transition: color .3s ease; }
.link-underline--light:hover { color: var(--c-light-text); }
[data-fx] .link-underline:hover { color: inherit; }

/* Bottone pill con freccia (hero home) */
.btn-arrow {
  --btn-bg: #fff; --btn-fg: #000;
  display: inline-flex; align-items: center; gap: 30px; padding: 4px 4px 4px 20px; border-radius: 100px;
  background: var(--btn-bg); color: var(--btn-fg);
  -webkit-backdrop-filter: blur(13px); backdrop-filter: blur(13px);
  transition: background-color .55s var(--ease-button), color .55s var(--ease-button);
}
.btn-arrow:hover { color: var(--btn-fg); }
.btn-arrow__icon { position: relative; width: 35px; height: 35px; border-radius: 50%; overflow: hidden; flex: none; background: var(--btn-fg); clip-path: circle(50% at 50% 50%); transition: clip-path .55s var(--ease-button), background-color .55s var(--ease-button); }
.btn-arrow__icon svg { position: absolute; top: 50%; left: 50%; width: 50%; height: 50%; fill: var(--btn-bg); transform: translate(-50%,-50%); transition: transform .55s var(--ease-button); }
.btn-arrow__icon svg + svg { top: 100%; left: 0; }
.btn-arrow:hover .btn-arrow__icon { clip-path: circle(45% at 50% 50%); }
.btn-arrow:hover .btn-arrow__icon svg { transform: translate(50%,-150%); }

/* Bottone pill con onda di lettere (WaveButton) */
.btn-wave {
  --btn-bg: var(--c-pink); --btn-fg: #fff;
  display: inline-flex; overflow: hidden; align-items: center;
  padding: .8em 2.2em; border-radius: 241px;
  background: var(--btn-bg); color: var(--btn-fg);
  font-size: 18px; line-height: 18px; white-space: nowrap;
  transition: background-color .3s ease, box-shadow .3s ease;
}
.btn-wave:hover { color: var(--btn-fg); transition: background-color .5s cubic-bezier(.23,.46,.4,1); box-shadow: 0 9px 20px -8px rgba(0,0,0,.25); }
.btn-wave .char { display: inline-block; line-height: 1; }
.btn-wave.is-waving .char { animation: letter-wave .5s cubic-bezier(.46,.4,.56,.87) forwards; transform: translateY(110%); opacity: 0; }
@keyframes letter-wave { 0% { opacity: 0; transform: translateY(115%); } 100% { opacity: 1; transform: translateY(0); } }
.btn-wave--white { --btn-bg: #fff; --btn-fg: var(--c-text); }
.btn-wave--red { --btn-bg: var(--c-red); --btn-fg: #fff; }
.btn-wave--yellow { --btn-bg: var(--c-yellow); --btn-fg: #fff; }
/* nelle pagine servizio il bottone bianco ha il testo del colore del servizio */
.svc--orange .btn-wave--white { --btn-fg: var(--c-orange); }
.svc--pink .btn-wave--white { --btn-fg: var(--c-pink); }
.svc--red .btn-wave--white { --btn-fg: var(--c-red); }
.svc--yellow .btn-wave--white { --btn-fg: var(--c-yellow); }
.svc--wedding .btn-wave--white { --btn-fg: var(--c-text); }

/* Link con testo che scorre (TextRevealLink) */
.text-reveal { display: inline-block; overflow: hidden; vertical-align: top; position: relative; }
.text-reveal__t { display: block; position: relative; transition: transform .55s var(--ease-nectar); }
.text-reveal__t::after { content: attr(data-text); position: absolute; left: 0; bottom: -120%; transition: transform .55s var(--ease-nectar); }
a:hover > .text-reveal__t, .text-reveal:hover .text-reveal__t { transform: translateY(-100%); }
a:hover > .text-reveal__t::after, .text-reveal:hover .text-reveal__t::after { transform: translateY(-20%); }

/* Freccia "sezione successiva" (hero home) */
.next-arrow { display: block; position: relative; overflow: hidden; line-height: 0; width: 21px; height: 21px; color: #fff; }
.next-arrow svg { position: absolute; left: 0; top: 0; width: 21px; height: 21px; fill: currentColor; transition: transform .55s var(--ease-nectar); }
.next-arrow svg + svg { top: 100%; }
.next-arrow:hover { color: #fff; }
.next-arrow:hover svg:first-child { transform: translateY(100%); }
.next-arrow:hover svg + svg { transform: translateY(-100%); }

/* Badge */
.badge {
  display: inline-block; vertical-align: top;
  font-family: var(--f-head); font-size: var(--fs-h3); line-height: 1; font-weight: 400;
  color: #fff; background: rgba(255,255,255,.3); border: 1px solid #fff; border-radius: 100px; padding: .5em 1em;
  -webkit-backdrop-filter: blur(14px); backdrop-filter: blur(14px);
}
.badges { display: flex; flex-wrap: wrap; gap: 10px; }
.badge-sm { display: inline-block; font-family: var(--f-body); font-size: 15px; line-height: 1; color: #f4f2ef; background: rgba(235,233,229,.11); border-radius: 20px; padding: .5em 1em; -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }
.badge-glass { display: inline-block; font: 400 18px/18px var(--f-body); color: #fff; text-transform: uppercase; padding: 9px 18px; border-radius: 20px; background: rgba(237,233,222,.1); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.pill-dark { display: inline-flex; align-items: center; gap: 10px; padding: 10px 22px; border-radius: 999px; background: var(--c-dark); color: var(--c-light-text); font-family: var(--f-body); font-size: 15px; font-weight: 600; line-height: 1; }

/* Accordion (FAQ) */
.accordion { --acc-accent: var(--c-text); }
.accordion__item { position: relative; padding: 0 40px; border-bottom: 1px solid rgba(0,0,0,.08); transition: border-color .15s ease; }
.accordion__item::before { content: ""; position: absolute; inset: 0; pointer-events: none; box-shadow: 0 90px 70px 0 rgba(0,0,0,.04), 0 40px 35px 0 rgba(0,0,0,.03), 0 25px 15px 0 rgba(0,0,0,.03), 0 11px 7px 0 rgba(0,0,0,.03), 0 2px 5px 0 rgba(0,0,0,.03); opacity: 0; transition: opacity .15s ease; }
.accordion__item.is-open { border-color: transparent; }
.accordion__item.is-open::before { opacity: 1; transition: opacity .45s cubic-bezier(.3,.4,.2,1); }
.accordion__title { margin: 0; font: inherit; }
.accordion__btn { position: relative; display: block; width: 100%; text-align: left; padding: 30px 70px 30px 0; font-family: var(--f-head); font-size: var(--fs-h3); line-height: var(--lh-h3); font-weight: 400; color: var(--page-text); transition: color .15s ease; }
.accordion__item:hover .accordion__btn, .accordion__item.is-open .accordion__btn { color: var(--acc-accent); }
.accordion__icon { position: absolute; right: 0; top: 50%; width: 30px; height: 30px; margin-top: -15px; border: 2px solid currentColor; border-radius: 30px; transition: transform .45s cubic-bezier(.3,.4,.2,1), border-color .15s ease; }
.accordion__icon::before, .accordion__icon::after { content: ""; position: absolute; background: currentColor; transition: transform .45s cubic-bezier(.3,.4,.2,1), background-color .15s ease; }
.accordion__icon::before { top: 12px; left: 6px; width: 14px; height: 2px; }
.accordion__icon::after { top: 6px; left: 12px; width: 2px; height: 14px; }
.accordion__item.is-open .accordion__icon { transform: rotate(90deg); }
.accordion__item.is-open .accordion__icon::after { transform: scaleY(0); }
.accordion__panel { max-height: 0; overflow: hidden; transition: max-height .5s ease; }
.accordion__item.is-open .accordion__panel { max-height: 1000px; }
.no-js .accordion__panel { max-height: none; }
.accordion__inner { padding: 0 0 30px; }

/* PackItem (pacchetti) */
.pack { display: flex; flex-direction: column; flex: 1; min-width: 0; width: 100%; }
.pack p { margin: 0; padding-right: 13%; }
.pack h3 { margin: 15px 0; }
.pack__icon { position: relative; z-index: 0; display: flex; align-items: center; justify-content: center; width: 84px; height: 84px; border-radius: 150px; }
.pack__icon::before { content: ""; position: absolute; inset: 0; z-index: -1; border-radius: 100px; background: var(--icon-color); opacity: .11; }
.pack__icon svg { width: 36px; height: 36px; fill: var(--icon-color); }
.pack__icon--wide svg { width: 44px; }
.pack--orange { --icon-color: var(--c-orange); } .pack--red { --icon-color: var(--c-red); }
.pack--yellow { --icon-color: var(--c-yellow); } .pack--pink { --icon-color: var(--c-pink); }

/* Card impilate dei servizi (StackCards + ServiceStackCard) */
.stack-wrap { padding: 20px 20px 30px; }
.stack-cards { position: relative; --overlap: 20px; --stack-top: calc(5vh + var(--header-h)); }
.stack-card { position: sticky; top: var(--stack-top); height: calc(90vh - var(--header-h)); box-sizing: content-box; border-bottom: 5vh solid transparent; will-change: transform; }
.stack-card__inner { position: relative; height: 100%; overflow: hidden; border-radius: var(--radius-m); background: var(--card-bg, var(--c-orange)); display: flex; }
.stack-card--orange { --card-bg: var(--c-orange); } .stack-card--pink { --card-bg: var(--c-pink); }
.stack-card--red { --card-bg: var(--c-red); } .stack-card--yellow { --card-bg: var(--c-yellow); }
.stack-card__inner > .row { height: 100%; padding: 30px 10px; gap: 0; align-items: stretch; }
.stack-card__inner > .row > .col { display: flex; flex-direction: column; padding: 0 20px; }
.svc-text { justify-content: center; gap: 15px; padding: 0 calc(20px + 4.7vw) !important; color: #fff; }
.svc-text h2 { margin: 0; }
.svc-desc { margin: 0; }
.svc-media { flex: 1; min-height: 35vh; }

/* Card testimonianza (Contatti) */
.review-card { position: relative; flex: 1; margin: 0; display: flex; flex-direction: column; justify-content: space-between; gap: 10px; padding: 30px; border-radius: 15px; overflow: hidden; background: var(--card-bg, #fff); color: var(--c-text); }
.review-card--clear { --card-bg: transparent; color: #fff; }
.review-card__quote { margin: 0; font-family: var(--f-head); font-weight: 500; font-size: max(24px, 1.7vw); line-height: 1.3; }
.review-card__quote::after { content: ""; display: block; height: 210px; }
.review-card__foot { display: flex; align-items: flex-end; justify-content: space-between; gap: 10px; }
.review-card__who { display: flex; flex-direction: column; align-items: flex-start; gap: 5px; width: 66.667%; min-width: 0; }
.review-card__name { margin: 0; font-family: var(--f-head); font-size: 18px; line-height: 1.1; }
.review-card__role { margin: 0; font-size: 14px; line-height: 1.1; color: rgba(253,250,235,.8); }

/* Nastro infinito (Ticker) */
.ticker { position: relative; overflow: visible; touch-action: pan-y; user-select: none; }
.ticker__track { display: flex; will-change: transform; }
.ticker__cell { flex: none; width: var(--cell-w, 22.6vw); padding: 0 10px; }

/* Form contatti */
.form { display: flex; flex-direction: column; gap: 25px; max-width: 552px; }
.form__group { border: 0; margin: 0; padding: 0; min-width: 0; }
.form__label { display: block; font-weight: 700; font-size: 18px; line-height: 21px; color: rgba(0,0,0,.85); margin-bottom: 15px; padding: 0; }
.form__req { color: #d63637; font-weight: 400; }
.form__row { display: flex; gap: 20px; }
.form__row > div { flex: 1; min-width: 0; }
.form__input, .form__textarea { width: 100%; height: 43px; border-radius: 60px; border: 3px solid #242424; background: #242424; color: #fff; padding: 0 14px; font: 400 16px/1.3 var(--f-body); outline: none; transition: border-color .2s ease, box-shadow .2s ease, background-color .6s ease, color .6s ease; }
.form__textarea { height: 120px; border-radius: 20px; padding: 10px 14px; resize: vertical; }
.form__input:focus, .form__textarea:focus { border-color: #000; box-shadow: 0 0 0 1px #000; }
.form__input[aria-invalid="true"], .form__textarea[aria-invalid="true"] { border-color: #d63637; }
.form__sub { display: block; font-size: 16px; line-height: 19px; color: rgba(0,0,0,.55); margin-top: 5px; }
.form__submit { align-self: flex-start; background: #000; color: #fff; border-radius: 4px; padding: 12px 22px; font: 500 17px/17px var(--f-body); transition: background-color .2s ease, color .2s ease, opacity .2s ease; }
.form__submit:hover { background: #333; color: #fff; }
.form__submit[disabled] { opacity: .6; }
.form__msg { font-size: 16px; line-height: 1.4; margin: 0; }
.form__msg:empty { display: none; }
.form__msg.is-ok { color: #0a7a2f; }
.form__msg.is-err { color: #b00020; }
.hp-field { position: absolute; left: -9999px; }
/* consenso privacy */
.form__consent { display: flex; align-items: flex-start; gap: 12px; font-size: 14px; line-height: 1.5; color: rgba(0,0,0,.7); }
.form__consent input { -webkit-appearance: none; appearance: none; flex: none; margin: 3px 0 0; width: 16px; height: 16px; border: 1px solid rgba(0,0,0,.35); border-radius: 2px; background: #fff; transition: border-color .15s ease, background-color .15s ease; }
.form__consent input:checked { border-color: #000; background: #000 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.2l2.6 2.6L12 5.4' fill='none' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E") center/100% no-repeat; }
.form__consent input:focus-visible { outline: 2px solid #000; outline-offset: 2px; }
.form__consent a { text-decoration: underline; }
/* variante chiara (pagina Contatti) */
.form--light { max-width: none; gap: 30px; }
.form--light .form__input, .form--light .form__textarea { height: 43px; border-radius: 10px; border: 1px solid rgba(0,0,0,.25); background: #f7f7f7; color: rgba(0,0,0,.7); padding: 0 14px; }
.form--light .form__textarea { display: block; height: 120px; padding: 14px; }
.form--light ::placeholder { color: rgba(0,0,0,.35); opacity: 1; }
.form--light .form__input:focus, .form--light .form__textarea:focus { border-color: #000; box-shadow: 0 0 0 1px #000; }
.form--light .form__submit { margin-top: -4px; }
.form__checks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px 20px; }
.form__checks li { display: flex; align-items: flex-start; }
.form__checks input { -webkit-appearance: none; appearance: none; flex: none; margin: 4px 0 0 2px; width: 16px; height: 16px; border: 1px solid rgba(0,0,0,.25); border-radius: 2px; background: #fff; transition: border-color .15s ease, background-color .15s ease; }
.form__checks input:checked { border-color: #000; background: #000 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.2l2.6 2.6L12 5.4' fill='none' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E") center/100% no-repeat; }
.form__checks input:focus-visible { outline: 2px solid #000; outline-offset: 2px; }
.form__checks label { padding-left: 12px; font-size: 18px; line-height: 23.4px; color: rgba(0,0,0,.85); text-transform: uppercase; }

/* 7. BLOCCO CONTATTI, FOOTER, TINTA --------------------------------------------- */
.contact-block { position: relative; padding: 10vw var(--gutter) 5vw; }
.contact-block .row { gap: 15vw; }
.contact-block .row > .col { flex: 1; }
.contact-links { display: flex; flex-direction: column; gap: 5px; }
.contact-links > p { margin: 0 0 9px; }
.contact-links__big { font-family: var(--f-head); font-size: max(2vw, 20px); line-height: 1.1; font-weight: 400; }
.contact-links__big > a { display: table; margin-bottom: 14px; }
.contact-links__gap { height: 50px; }
.contact-social { display: flex; gap: 20px; flex-wrap: wrap; }
.contact-block__mascot { position: absolute; right: 4vw; top: -4vw; width: max(110px, 8.5vw); height: auto; z-index: 2; transform: rotate(9deg); transition: transform .6s var(--ease-o); }
.contact-block__mascot:hover { transform: rotate(-4deg) scale(1.06); }
.footer-title { padding: 0 var(--gutter) 26px; overflow: hidden; }
.footer-title p { margin: 0; font-family: var(--f-head); font-size: var(--fit-size, 18vw); line-height: 1; white-space: nowrap; font-weight: 600; }
.footer-legal { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 30px; padding: 20px 60px 28px; border-top: 1px solid rgba(22,22,22,.15); transition: border-color .7s ease; }
.footer-legal p { font-size: 14px; line-height: 1.6; margin: 0; }
.footer-legal nav { display: flex; gap: 20px; font-size: 14px; line-height: 1.6; }
.footer-legal nav a { text-decoration: underline; text-underline-offset: 3px; }

/* Fine pagina tinta del colore del servizio */
.tint { transition: background-color .7s ease, color .7s ease; }
.tint--orange { --tint: var(--c-orange); } .tint--pink { --tint: var(--c-pink); }
.tint--red { --tint: var(--c-red); } .tint--yellow { --tint: var(--c-yellow); }
.tint.is-tinted { background-color: var(--tint); color: var(--c-light-text); --c-text: var(--c-light-text); }
.tint.is-tinted .footer-legal { border-color: rgba(253,250,235,.3); }
.tint.is-tinted a:hover { color: var(--c-light-text); }
.tint.is-tinted .form__label, .tint.is-tinted .form__sub, .tint.is-tinted .form__consent, .tint.is-tinted .form__req { color: var(--c-light-text); }
.tint.is-tinted .form__input, .tint.is-tinted .form__textarea { background: transparent; border: 1px solid rgba(253,250,235,.7); color: var(--c-light-text); }
.tint.is-tinted .form__input:focus, .tint.is-tinted .form__textarea:focus { border-color: var(--c-light-text); box-shadow: 0 0 0 1px var(--c-light-text); }
.tint.is-tinted ::placeholder { color: rgba(253,250,235,.7); }
.tint.is-tinted .form__consent input { background: transparent; border-color: var(--c-light-text); }
.tint.is-tinted .form__consent input:checked { background-color: var(--c-light-text); }
.tint.is-tinted .form__submit { background: var(--c-light-text); color: var(--tint); }
.tint.is-tinted .form__submit:hover { background: #fff; }
.tint.is-tinted .form__msg.is-ok, .tint.is-tinted .form__msg.is-err { color: var(--c-light-text); }

/* 8. SEZIONI ---------------------------------------------------------------- */
/* base delle sezioni fisse */
.fx { position: relative; }
.fx__stage { position: sticky; top: 0; height: 100vh; overflow: hidden; }
.fx__stage--center { display: flex; align-items: center; }
.will { will-change: transform; backface-visibility: hidden; }

/* --- Hero video (home) --- */
.hero { position: relative; min-height: 100vh; min-height: 100svh; overflow: hidden; display: flex; flex-direction: column; justify-content: flex-end; color: var(--c-light-text); background: #111; }
.hero__media { position: absolute; inset: 0; z-index: 0; }
.hero__video { width: 100%; height: 100%; object-fit: cover; }
.hero__content { position: relative; z-index: 1; }
.hero__logo-row { padding: 0 40px 10px; border-bottom: 1px solid rgba(255,255,255,.21); }
.hero__logo-row img { width: 100%; }
.hero__bottom { display: flex; }
.hero__left { width: 50%; padding: 40px; display: flex; justify-content: space-between; align-items: flex-start; gap: 40px; }
.hero__right { width: 50%; padding: 40px; border-left: 1px solid rgba(255,255,255,.21); display: flex; justify-content: space-between; align-items: flex-start; gap: 40%; }
.hero__right p, .hero__claim h1 { margin: 0; }
.hero__claim strong { font-weight: 600; }
.hero__tag { margin: 0; white-space: nowrap; }
.hero-card { max-width: 64%; display: flex; gap: 20px; padding: 15px; border-radius: var(--radius-m); background: rgba(0,0,0,.43); -webkit-backdrop-filter: blur(16px); backdrop-filter: blur(16px); }
.hero-card__img { width: 30%; flex: none; object-fit: cover; border-radius: var(--radius-m); align-self: stretch; height: auto; }
.hero-card__body { display: flex; flex-direction: column; justify-content: space-between; gap: 20px; }
.hero-card__body p { margin: 0; }

/* --- Striscia orizzontale (hscroll) --- */
.hscroll { background: var(--c-bg); }
.hscroll--intro { height: 340vh; }
.hscroll--approach { height: 320vh; }
.hscroll--projects { height: 300vh; }
.hscroll--timeline { height: 360vh; }
.hscroll__track { display: flex; align-items: center; gap: 30px; padding: 0 60px; will-change: transform; backface-visibility: hidden; }
.hscroll--intro .hscroll__track { gap: 60px; }
.hscroll--approach .hscroll__track { gap: 40px; }
.hscroll--timeline .hscroll__track { align-items: flex-start; }
/* intro home */
.intro__title { flex: none; width: 44vw; }
.intro__shot { flex: none; position: relative; height: 68vh; aspect-ratio: 4/5; border-radius: var(--radius-l); overflow: hidden; }
.intro__text { flex: none; width: 30vw; display: flex; flex-direction: column; gap: 30px; }
.intro__text p { margin: 0; font-family: var(--f-head); font-size: max(30px, 2.6vw); line-height: 1.25; text-wrap: pretty; }
.intro__text--cta { width: max-content; max-width: none; }
.intro__text--cta p { max-width: 30vw; }
/* progetti (pagine servizio) */
.projects__intro { flex: none; width: 40vw; display: flex; flex-direction: column; gap: 24px; }
.projects__intro p { max-width: max(520px, 36.11vw); }
.projects__item { flex: none; display: flex; flex-direction: column; gap: 16px; }
.projects__media { position: relative; height: 70vh; aspect-ratio: 3/4; border-radius: var(--radius-l); overflow: hidden; }
/* approccio (servizi) */
.approach__title { flex: none; width: 38vw; }
.approach__card { flex: none; width: min(32vw, max(64vh, 26vw)); height: 78vh; border-radius: var(--radius-l); padding: 30px; display: grid; grid-template-rows: minmax(0,1fr) auto; gap: 24px; color: var(--c-light-text); }
.approach__card--pink { background: var(--c-pink); } .approach__card--orange { background: var(--c-orange); }
.approach__card--red { background: var(--c-red); } .approach__card--yellow { background: var(--c-yellow); }
.approach__media { position: relative; border-radius: var(--radius-m); overflow: hidden; }
.approach__body { display: flex; flex-direction: column; gap: 12px; }
.approach__body p { margin: 0; font-size: 16px; line-height: 1.6; }
.approach__body h3 { margin: 0; }
/* timeline wedding */
.tl__intro { flex: none; width: min(38vw, 640px); display: flex; flex-direction: column; gap: 24px; align-self: center; }
.tl__intro p { max-width: max(520px, 36.1vw); }
.tl__item { flex: none; width: min(24vw, 46vh); max-width: 46vh; min-width: min(260px, 46vh); display: flex; flex-direction: column; gap: min(16px, 2vh); }
.tl__media { position: relative; width: 100%; height: min(48vh, calc(min(24vw, 46vh) * 4 / 3)); border-radius: var(--radius-l); overflow: hidden; background: var(--c-wedding); }
.tl__meta { display: flex; align-items: center; gap: 12px; margin-right: -30px; }
.tl__dot { flex: none; width: 14px; height: 14px; border-radius: 50%; background: var(--c-dark); }
.tl__num { font-family: var(--f-head); font-weight: 700; font-size: 28px; line-height: 1; }
.tl__tag { font-size: 13px; letter-spacing: .08em; text-transform: uppercase; white-space: nowrap; }
.tl__line { flex: 1; min-width: 20px; border-top: 2px solid var(--c-dark); }
.tl__item h3 { margin: 0; font-size: min(var(--fs-h3), 4.4vh); }
.tl__item p { margin: 0; font-size: 16px; line-height: 1.6; }

/* --- Colori (card che salgono) --- */
.colors { height: 300vh; }
.colors--home { background: #161616; color: var(--c-light-text); }
.colors--about { background: var(--c-bg); }
.colors__head { position: absolute; left: 0; right: 0; top: 13vh; display: flex; flex-direction: column; align-items: center; gap: 24px; text-align: center; padding: 0 var(--gutter); will-change: transform; }
.colors--about .colors__head { top: 12vh; gap: 20px; }
.colors__head h2 { max-width: max(1100px, 76.39vw); text-wrap: balance; }
.colors__head p { max-width: max(760px, 52.78vw); }
.colors--about .colors__head h2 { max-width: max(1200px, 83.33vw); font-weight: 700; font-size: max(34px, min(7.4vw, 12vh)); line-height: 1.02; letter-spacing: -.02em; }
.colors--about .colors__head p { max-width: max(820px, 56.94vw); }
.colors__card { position: absolute; top: 100vh; width: 16vw; aspect-ratio: 9/16; border-radius: var(--radius-l); overflow: hidden; transform: translate3d(0,120vh,0); will-change: transform; backface-visibility: hidden; }
.colors--about .colors__card { width: 15vw; }
.colors__card:nth-of-type(1) { left: 3%; } .colors__card:nth-of-type(2) { left: 22%; } .colors__card:nth-of-type(3) { left: 42%; }
.colors__card:nth-of-type(4) { right: 22%; } .colors__card:nth-of-type(5) { right: 3%; }
.colors--about .colors__card:nth-of-type(2) { left: 22.5%; } .colors--about .colors__card:nth-of-type(3) { left: 42.5%; } .colors--about .colors__card:nth-of-type(4) { right: 22.5%; }

/* --- Passaggi numerati (steps) --- */
.steps { transition: background-color .7s ease; background: var(--c-orange); color: var(--c-light-text); --c-text: var(--c-light-text); }
.steps--4 { height: 400vh; } .steps--5 { height: 500vh; }
.svc .steps { color: var(--c-light-text); --c-text: var(--c-light-text); }
.svc--pink .steps { background: var(--c-pink); } .svc--red .steps { background: var(--c-red); } .svc--yellow .steps { background: var(--c-yellow); }
.steps--about { background: var(--c-pink); }
.steps__grid { position: absolute; inset: 0; display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); align-items: center; gap: 60px; padding: 0 var(--gutter); }
.steps__text { display: flex; flex-direction: column; gap: 28px; }
.steps--home .steps__text { gap: 30px; }
.steps__title { margin: 0; font-size: min(var(--fs-h2), 6vh); }
.steps__count { display: flex; align-items: flex-end; gap: 16px; }
.steps__num { font-family: var(--f-head); font-weight: 600; font-size: max(34px, min(12vw, 20vh)); line-height: .85; letter-spacing: -.04em; }
.steps__of { font-family: var(--f-head); font-weight: 600; font-size: 40px; line-height: 1; padding-bottom: 1vw; }
.steps__items { display: grid; }
.steps__item { grid-area: 1/1; display: flex; flex-direction: column; gap: 18px; opacity: 0; pointer-events: none; transform: translate3d(0,30px,0); transition: opacity .5s ease, transform .6s var(--ease-o); }
.steps--home .steps__item { gap: 20px; }
.steps__item.is-prev { transform: translate3d(0,-30px,0); }
.steps__item.is-active { opacity: 1; pointer-events: auto; transform: none; }
.steps__item h2, .steps__item h3 { margin: 0; }
.steps__item p { margin: 0; max-width: max(540px, 37.5vw); }
.steps__pile { position: relative; height: 72vh; }
.steps--home .steps__pile { height: 74vh; }
.steps__shot { position: absolute; left: 14%; right: 14%; top: 0; bottom: 0; border-radius: var(--radius-l); overflow: hidden; transform: translate3d(60vw,15vh,0) rotate(28deg); transition: transform .8s var(--ease-o); will-change: transform; backface-visibility: hidden; }
.steps--home .steps__shot, .steps--about .steps__shot { left: 10%; right: 10%; }
.reveal--about .reveal__text .w { opacity: .3; }
.steps__shot:first-child { transform: rotate(-4deg); }
.steps__cta { display: flex; }

/* --- Zoom finale --- */
.zoom { height: 240vh; background: var(--c-bg); }
.zoom--yellow { background: var(--c-yellow); }
.zoom__rows { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; gap: 1vh; pointer-events: none; }
.zoom__row { white-space: nowrap; font-family: var(--f-head); font-weight: 700; font-size: max(34px, min(10.5vw, 22vh)); line-height: 1; letter-spacing: -.03em; will-change: transform; }
.zoom__row:nth-child(even) { opacity: .55; transform: translate3d(-50%,0,0); }
.zoom__row span::after { content: ""; display: inline-block; width: .32em; height: .32em; border-radius: 50%; background: currentColor; margin: 0 .4em; vertical-align: middle; }
.zoom__media { position: absolute; inset: 0; border-radius: 40px; overflow: hidden; transform: scale(.32); will-change: transform; backface-visibility: hidden; }
.zoom__media > .shade { pointer-events: none; }
.zoom__over { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 30px; text-align: center; padding: 0 8vw; color: var(--c-light-text); opacity: 0; }
.zoom__over h2 { margin: 0; max-width: max(1100px, 76.39vw); text-wrap: balance; }
/* variante home: scritta che si apre ai lati e CTA dentro il video */
.zoom--home .zoom__media { transform: scale(.3); }
.zoom__cta { position: absolute; left: 0; right: 0; bottom: 8vh; display: flex; justify-content: center; opacity: 0; }
.zoom__words { position: absolute; inset: 0; display: flex; align-items: center; justify-content: space-between; padding: 0 60px; z-index: 2; pointer-events: none; }
.zoom__word { font-family: var(--f-head); font-size: max(110px, 9vw); font-weight: 600; line-height: 1; will-change: transform; backface-visibility: hidden; }

/* --- Nastri (home) --- */
.ribbons { height: 220vh; background: var(--c-bg); }
.ribbon { position: absolute; left: -10vw; right: -10vw; padding: 22px 0; overflow: hidden; }
.ribbon--a { top: 30vh; transform: rotate(-7deg); background: var(--c-pink); z-index: 1; }
.ribbon--b { top: 58vh; transform: rotate(5deg); background: var(--c-orange); z-index: 3; }
.ribbon__track { display: flex; white-space: nowrap; will-change: transform; backface-visibility: hidden; font-family: var(--f-head); font-weight: 600; font-size: max(56px, 5vw); line-height: 1; color: var(--c-light-text); }
.ribbons__card { position: absolute; left: 50%; top: 50%; width: 20vw; aspect-ratio: 9/16; margin: -17.8vw 0 0 -10vw; border-radius: var(--radius-l); overflow: hidden; z-index: 2; will-change: transform; backface-visibility: hidden; }

/* --- Portfolio per tipologia (home) --- */
.plist { height: 300vh; background: var(--c-bg); }
.plist__grid { position: absolute; inset: 0; display: grid; grid-template-columns: minmax(0,1.15fr) minmax(0,1fr); gap: 60px; padding: 0 var(--gutter); }
.plist__text { display: flex; flex-direction: column; justify-content: center; gap: min(30px, 2.6vh); height: 100vh; padding: 4vh 0; }
.plist__head { display: flex; flex-direction: column; gap: min(16px, 1.5vh); }
.plist__head h2 { margin: 0; text-wrap: balance; font-size: min(var(--fs-h2), 6.4vh); line-height: 1.1; }
.plist__head p { margin: 0; max-width: max(560px, 38.89vw); }
.plist__words { display: flex; flex-direction: column; border-bottom: 1px solid rgba(22,22,22,.2); }
.plist__word { font-family: var(--f-head); font-weight: 500; font-size: max(20px, min(2.9vw, 4.4vh)); line-height: 1.1; padding: min(12px, 1.2vh) 0; border-top: 1px solid rgba(22,22,22,.2); color: rgba(22,22,22,.2); transform-origin: left center; transition: opacity .35s ease, transform .5s var(--ease-o), color .35s ease; }
.plist__word.is-active { transform: translate3d(24px,0,0); }
.plist__word:nth-child(3n+1).is-active { color: var(--c-orange); }
.plist__word:nth-child(3n+2).is-active { color: var(--c-red); }
.plist__word:nth-child(3n+3).is-active { color: var(--c-pink); }
.plist__cols { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; height: 100%; }
.plist__col { display: flex; flex-direction: column; gap: 20px; will-change: transform; backface-visibility: hidden; }
.plist__cell { position: relative; flex: none; width: 100%; aspect-ratio: 9/16; border-radius: var(--radius-l); overflow: hidden; }

/* --- Hero Servizi a 5 colonne --- */
.shero { height: 200vh; background: #161616; }
.shero__cols { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(5, minmax(0,1fr)); }
.shero__col { position: relative; height: 100%; will-change: transform; backface-visibility: hidden; }
.shero__panel { position: absolute; inset: -12vh 0; transform: translate3d(0,120%,0); transition: transform 1.1s var(--ease-o); }
.shero__panel.is-in { transform: none; }
.shero__col:nth-child(1) .shero__panel { background: var(--c-orange); transition-delay: .10s; }
.shero__col:nth-child(2) .shero__panel { background: var(--c-pink); transition-delay: .19s; }
.shero__col:nth-child(3) .shero__panel { background: var(--c-red); transition-delay: .28s; }
.shero__col:nth-child(4) .shero__panel { background: var(--c-yellow); transition-delay: .37s; }
.shero__col:nth-child(5) .shero__panel { background: var(--c-orange); transition-delay: .46s; }
.shero__media { position: absolute; left: 10px; right: 10px; bottom: calc(12vh + 10px); height: 40vh; border-radius: var(--radius-l); overflow: hidden; transform: scale(.001); transform-origin: 50% 100%; transition: transform 1s var(--ease-o); }
.shero__panel.is-in .shero__media { transform: none; }
.shero__col:nth-child(1) .shero__media { transition-delay: .90s; }
.shero__col:nth-child(2) .shero__media { transition-delay: .98s; }
.shero__col:nth-child(3) .shero__media { transition-delay: 1.06s; }
.shero__col:nth-child(4) .shero__media { transition-delay: 1.14s; }
.shero__col:nth-child(5) .shero__media { transition-delay: 1.22s; }
.shero__badge { position: absolute; left: 15px; bottom: 15px; display: flex; }
.shero__head { position: absolute; left: 0; right: 0; top: 13vh; display: flex; flex-direction: column; gap: 20px; padding: 0 var(--gutter); will-change: transform; backface-visibility: hidden; }
.shero__title { margin: 0; max-width: max(1240px, 86.11vw); color: var(--c-light-text); font-size: max(34px, min(7.6vw, 10.5vh)); line-height: 1.02; }
.shero__text { margin: 0; max-width: max(900px, 62.5vw); color: var(--c-light-text); font-size: min(18px, 2.1vh); line-height: 1.7; }

/* --- Pacchetti a ventaglio (fan) --- */
.fan { height: 260vh; background: var(--c-bg); }
.fan__head { position: absolute; left: 0; right: 0; top: 11vh; display: flex; flex-direction: column; align-items: center; gap: 20px; text-align: center; padding: 0 var(--gutter); }
.fan__head h2 { margin: 0; max-width: max(1000px, 69.44vw); text-wrap: balance; font-size: min(var(--fs-h2), 7vh); line-height: 1.1; }
.fan__head p { margin: 0; max-width: max(760px, 52.78vw); font-size: min(18px, 2.6vh); line-height: 1.75; }
.fan__box { position: absolute; left: 50%; top: 42vh; width: max(260px, 22vw); transform: translateX(-50%); }
.fan__card { position: absolute; left: 0; right: 0; top: 0; min-height: min(42vh, 360px); background: #fff; border: 2px solid var(--fan-c, var(--c-pink)); border-radius: var(--radius-l); padding: 28px; display: flex; align-items: center; color: var(--c-text); --c-text: #161616; will-change: transform; backface-visibility: hidden; }
.fan__card:nth-child(1) { --fan-c: var(--c-orange); transform: rotate(-10.5deg); z-index: 4; }
.fan__card:nth-child(2) { --fan-c: var(--c-red); transform: rotate(-3.5deg); z-index: 3; }
.fan__card:nth-child(3) { --fan-c: var(--c-yellow); transform: rotate(3.5deg); z-index: 2; }
.fan__card:nth-child(4) { --fan-c: var(--c-pink); transform: rotate(10.5deg); z-index: 1; }
.fan__card ul { display: flex; flex: 1; min-width: 0; width: 100%; }

/* --- Scontrino (receipt) --- */
.receipt { height: 240vh; background: var(--c-bg); }
.receipt__grid { position: absolute; inset: 0; display: grid; grid-template-columns: minmax(0,1.1fr) minmax(0,1fr); gap: 6vw; align-items: center; padding: 0 var(--gutter); }
.receipt__text { display: flex; flex-direction: column; align-items: flex-start; gap: 24px; opacity: 0; }
.receipt__head { display: flex; flex-direction: column; gap: 10px; }
.receipt__head h2 { margin: 0; text-wrap: balance; }
.receipt__sub { margin: 0; font-family: var(--f-head); font-weight: 500; font-size: max(22px, min(1.9vw, 3.5vh)); line-height: 1.25; color: rgba(22,22,22,.55); }
.receipt__text > p { margin: 0; max-width: max(560px, 38.9vw); }
.receipt__right { position: relative; height: 100vh; display: flex; justify-content: center; }
.receipt__slot { position: absolute; top: 10vh; left: 50%; width: calc((84vh - 15px) * .46 + 40px); height: 30px; margin-left: calc(((84vh - 15px) * .46 + 40px) / -2); background: var(--c-dark); border-radius: 15px; z-index: 2; box-shadow: 0 10px 30px -10px rgba(22,22,22,.5); }
.receipt__win { position: absolute; top: calc(10vh + 15px); left: 50%; transform: translateX(-50%); height: calc(84vh - 15px); overflow: hidden; z-index: 1; display: flex; justify-content: center; }
.receipt__img { display: block; height: calc(84vh - 15px); width: auto; max-width: none; transform: translate3d(0,-100%,0); filter: drop-shadow(0 18px 24px rgba(22,22,22,.18)); will-change: transform; backface-visibility: hidden; }

/* --- Wedding dentro Servizi --- */
.wed-promo { position: relative; background: var(--c-wedding); color: var(--c-text); padding: 8vw 0; overflow: hidden; }
.wed-promo__grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 6vw; align-items: center; padding: 0 var(--gutter); }
.wed-promo__text { display: flex; flex-direction: column; align-items: flex-start; gap: 26px; }
.wed-promo__text h2 { margin: 0; text-wrap: balance; }
.wed-promo__text p { margin: 0; max-width: max(560px, 38.9vw); }
.wed-promo__shots { display: flex; gap: 16px; align-items: center; }
.wed-promo__shot { position: relative; flex: 1; min-width: 0; height: min(56vh, 520px); border-radius: var(--radius-l); overflow: hidden; transform: rotate(-3deg); transition: transform .6s var(--ease-o); }
.wed-promo__shot:nth-child(2) { height: min(64vh, 600px); transform: rotate(2deg); }
.wed-promo__shot:nth-child(3) { transform: rotate(-2deg); }
.wed-promo__shot:hover { transform: rotate(0deg) scale(1.04); }

/* --- FAQ --- */
.faq { padding: 8vw var(--gutter); background: var(--c-bg); }
.faq--wedding { padding-top: 6vw; }
.faq__grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.5fr); gap: 6vw; align-items: start; }
.faq__intro { display: flex; flex-direction: column; gap: 20px; position: sticky; top: 140px; }
.faq__intro h2, .faq__intro p { margin: 0; }
.faq__intro p { max-width: max(460px, 31.94vw); }

/* --- Hero a volo (pagine servizio) --- */
.fly { height: 230vh; color: var(--c-light-text); --c-text: var(--c-light-text); }
.svc--orange .fly { background: var(--c-orange); } .svc--pink .fly { background: var(--c-pink); }
.svc--red .fly { background: var(--c-red); } .svc--yellow .fly { background: var(--c-yellow); }
.fly__card { position: absolute; left: 50%; top: 50%; width: 12vw; transform: translate(-50%,-50%); will-change: transform; backface-visibility: hidden; }
.fly__card:nth-of-type(2), .fly__card:nth-of-type(6) { width: 11vw; }
.fly__card:nth-of-type(3), .fly__card:nth-of-type(8) { width: 9vw; }
.fly__card:nth-of-type(4), .fly__card:nth-of-type(5) { width: 10vw; }
.fly__shot { position: relative; aspect-ratio: 3/4; border-radius: var(--radius-l); overflow: hidden; }
.fly__shot--tall { aspect-ratio: 9/16; }
.fly__head { position: absolute; left: 50%; top: 50%; width: 90vw; transform: translate(-50%,-50%); display: flex; flex-direction: column; align-items: center; gap: 28px; text-align: center; z-index: 2; }
.fly__title { margin: 0; max-width: 90vw; font-size: max(34px, min(6.4vw, 12.5vh)); font-weight: 700; line-height: 1; letter-spacing: -.02em; justify-content: center; }
.fly__head p { margin: 0; max-width: max(640px, 44.44vw); }
.fly__actions { display: flex; align-items: center; gap: 30px; }

/* --- Porte (chi siamo) --- */
.doors { height: 230vh; background: #161616; color: var(--c-light-text); --c-text: var(--c-light-text); }
.doors__media { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: var(--c-tablet-bg); transform: scale(1.25); will-change: transform; backface-visibility: hidden; }
.tablet { position: relative; height: min(84vh, calc(92vw * 16 / 9)); aspect-ratio: 9/16; padding: min(1.6vh, 14px); background: var(--c-dark); border-radius: min(4.4vh, 38px); box-shadow: 0 40px 80px -30px rgba(22,22,22,.45); }
.tablet__btn { position: absolute; top: 50%; right: -3px; width: 3px; height: 9%; margin-top: -4.5%; border-radius: 0 3px 3px 0; background: var(--c-dark); }
.tablet__screen { position: relative; width: 100%; height: 100%; border-radius: min(3vh, 26px); overflow: hidden; background: var(--c-dark); }
.tablet__cam { position: absolute; top: calc(min(1.6vh, 14px) + 1.4%); left: 50%; width: 1.6%; aspect-ratio: 1; margin-left: -.8%; border-radius: 50%; background: #2a2a2a; }
.doors__door { position: absolute; top: 0; width: 50%; height: 100%; overflow: hidden; background: var(--c-yellow); will-change: transform; backface-visibility: hidden; }
.doors__door--l { left: 0; } .doors__door--r { right: 0; }
.doors__inner { position: absolute; top: 0; left: 0; width: 200%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 32px; text-align: center; padding: 0 4vw; }
.doors__door--r .doors__inner { left: -100%; }
.doors__title { margin: 0; max-width: 88vw; font-family: var(--f-head); font-size: max(34px, min(7.4vw, 15vh)); font-weight: 700; line-height: 1; letter-spacing: -.02em; justify-content: center; }
.doors__inner p { margin: 0; max-width: max(640px, 44.44vw); }

/* --- Parole che si illuminano (reveal) --- */
.reveal { height: 170vh; background: var(--c-bg); }
.reveal .fx__stage { position: sticky; top: max(90px, 12vh); height: auto; overflow: visible; }
.reveal__body { display: flex; flex-direction: column; gap: 3vh; padding: 5vh 40px; }
.reveal__body h2 { margin: 0; font-size: min(var(--fs-h2), 6vh); }
.reveal__text { margin: 0; font-family: var(--f-head); font-weight: 500; font-size: max(26px, min(4.9vw, 8.4vh)); line-height: 1.16; text-wrap: pretty; }
.reveal__text .w { opacity: .16; }
.reveal__over { margin: 0; max-width: max(900px, 62.5vw); opacity: 0; }
.reveal--manifesto { height: 240vh; background: var(--c-wedding); }
.reveal--manifesto .fx__stage { top: 0; height: 100vh; overflow: hidden; }
.reveal--manifesto .reveal__body { position: absolute; inset: 0; justify-content: center; gap: 5vh; padding: 0 40px; }
.reveal--manifesto .reveal__text { font-weight: 600; font-size: max(26px, min(5.6vw, 10vh)); line-height: 1.1; letter-spacing: -.02em; }

/* --- Hero Wedding --- */
.whero { position: relative; min-height: 100vh; background: #161616; color: var(--c-light-text); --c-text: var(--c-light-text); display: flex; flex-direction: column; justify-content: flex-end; gap: 6vh; padding: 150px 0 6vh; overflow: hidden; }
.whero__bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 60% 40%; }
.whero__veil { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22,22,22,.5) 0%, rgba(22,22,22,.38) 35%, rgba(22,22,22,.8) 100%); }
.whero__body { position: relative; z-index: 1; display: flex; flex-direction: column; gap: 3vh; padding: 0 var(--gutter); }
.whero__title { margin: 0; max-width: max(1240px, 86vw); font-size: max(34px, min(7.4vw, 13vh)); font-weight: 700; line-height: .98; letter-spacing: -.03em; }
.whero__body p { margin: 0; max-width: max(820px, 57vw); }
.whero__reels { position: relative; z-index: 1; }
/* nel prototipo i reel sono distanziati di 30vw e larghi 15vw meno i margini */
.whero .ticker__cell { --cell-w: 30vw; padding: 0; }
.whero__reel { position: relative; width: calc(15vw - 20px); aspect-ratio: 9/16; border-radius: var(--radius-l); overflow: hidden; margin: 0 10px; }

/* --- Servizi wedding (griglia con foto/video al passaggio) --- */
.wsvc { padding: 8vw var(--gutter) 4vw; display: flex; flex-direction: column; gap: 40px; }
.wsvc__head { display: flex; flex-direction: column; gap: 20px; max-width: max(900px, 62.5vw); }
.wsvc__head h2 { margin: 0; text-wrap: balance; }
.wsvc__head p { margin: 0; max-width: max(640px, 44.4vw); }
.wgrid { display: grid; grid-template-columns: repeat(6, minmax(0,1fr)); gap: 0; border-top: 1px solid rgba(22,22,22,.25); border-left: 1px solid rgba(22,22,22,.25); }
.wcard { position: relative; grid-column: span 2; aspect-ratio: 1/1; overflow: hidden; border-right: 1px solid rgba(22,22,22,.25); border-bottom: 1px solid rgba(22,22,22,.25); cursor: pointer; }
.wcard--wide { grid-column: span 3; aspect-ratio: 3/2; }
.wcard__media { position: absolute; inset: 0; opacity: 0; transform: scale(1.06); transition: opacity .5s ease, transform .8s var(--ease-o); }
.wcard__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22,22,22,.15), rgba(22,22,22,.7)); }
.wcard:hover .wcard__media { opacity: 1; transform: scale(1); }
.wcard__body { position: relative; height: 100%; padding: 28px; display: flex; flex-direction: column; justify-content: space-between; gap: 24px; color: var(--c-text); transition: color .4s ease; }
.wcard:hover .wcard__body { color: var(--c-light-text); }
.wcard__num { font-family: var(--f-head); font-weight: 700; font-size: 28px; line-height: 1; }
.wcard__text { display: flex; flex-direction: column; gap: 12px; }
.wcard__text h3 { margin: 0; color: inherit; font-size: min(var(--fs-h3), 4vh); line-height: 1.15; }
.wcard__text p { margin: 0; color: inherit; font-size: 16px; line-height: 1.6; }

/* --- Portfolio --- */
.pf { padding-top: 5vw; }
.pf__grid-wrap { padding-top: 30px; padding-bottom: 6vw; }
.pf__filters { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 40px; }
.pf__grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 40px 20px; }
.pf-item { display: flex; flex-direction: column; gap: 15px; cursor: pointer; }
.pf-item.is-hidden { display: none; }
.pf-item__media { aspect-ratio: 9/16; background: #161616; }
.pf-item__badge { position: absolute; top: 15px; left: 15px; z-index: 1; display: flex; }
.pf-item__client { margin: 0; font-size: 14px; line-height: 1.5; }

/* --- Contatti --- */
.contact-page { padding-top: max(150px, 9vw); padding-bottom: 0; }
.contact-page__stack { display: flex; flex-direction: column; gap: 80px; }
.contact-page__row { gap: 40px; align-items: center; }
.contact-photo { position: relative; border-radius: var(--radius-l); overflow: hidden; min-height: 700px; display: flex; align-items: flex-end; padding: 40px; }
.contact-photo__veil { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(22,22,22,.15) 0%, rgba(22,22,22,.35) 35%, rgba(22,22,22,.85) 100%); }
.contact-photo__quote { position: relative; max-width: max(460px, 31.94vw); --c-text: #fff; color: #fff; text-shadow: 0 1px 12px rgba(22,22,22,.45); }
.contact-page + .contact-end { margin-top: -90px; }

/* --- 404 --- */
.nf { position: relative; min-height: 100vh; padding: max(150px, 10vw) var(--gutter) 6vw; background: var(--c-red); color: var(--c-light-text); --c-text: var(--c-light-text); display: flex; align-items: center; overflow: hidden; }
.nf a:hover { color: var(--c-light-text); }
.nf__grid { width: 100%; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 420px), 1fr)); gap: 6vw; align-items: center; }
.nf__text { display: flex; flex-direction: column; gap: 32px; }
.nf__code { font-family: var(--f-head); font-weight: 700; font-size: max(140px, min(22vw, 36vh)); line-height: .82; letter-spacing: -.05em; }
.nf__copy { display: flex; flex-direction: column; gap: 20px; }
.nf__copy h1 { margin: 0; color: var(--c-light-text); text-wrap: balance; }
.nf__copy p { margin: 0; max-width: max(560px, 38.9vw); color: var(--c-light-text); }
.nf__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 20px 40px; }
.nf .btn-wave--white { --btn-fg: var(--c-red); }
.nf__links { display: flex; flex-wrap: wrap; gap: 12px 28px; }
.nf__right { display: flex; justify-content: center; }
.nf-receipt { width: min(100%, 380px); background: var(--c-light-text); color: var(--c-dark); padding: 36px 32px 28px; font-family: ui-monospace, "SFMono-Regular", Menlo, monospace; font-size: 15px; line-height: 1.7; box-shadow: 0 40px 80px -30px rgba(22,22,22,.45); clip-path: polygon(0 0,100% 0,100% 100%,95% 98%,90% 100%,85% 98%,80% 100%,75% 98%,70% 100%,65% 98%,60% 100%,55% 98%,50% 100%,45% 98%,40% 100%,35% 98%,30% 100%,25% 98%,20% 100%,15% 98%,10% 100%,5% 98%,0 100%); }
.nf-receipt__head { display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; padding-bottom: 18px; border-bottom: 2px dashed rgba(22,22,22,.35); }
.nf-receipt__head img { width: 64px; height: auto; }
.nf-receipt__brand { font-weight: 700; letter-spacing: .08em; }
.nf-receipt__addr { font-size: 13px; }
.nf-receipt__rows { display: flex; flex-direction: column; gap: 4px; padding: 18px 0; border-bottom: 2px dashed rgba(22,22,22,.35); }
.nf-receipt__row { display: flex; justify-content: space-between; gap: 16px; }
.nf-receipt__total { display: flex; justify-content: space-between; gap: 16px; padding: 18px 0 10px; font-weight: 700; font-size: 18px; }
.nf-receipt__thanks { margin: 0; padding-top: 8px; text-align: center; font-size: 13px; }
.nf-footer { color: var(--c-light-text); --c-text: var(--c-light-text); background: var(--c-red); }
.nf-footer .footer-legal { border-color: rgba(253,250,235,.3); }

/* 9. INGRESSI (data-in) --------------------------------------------------------- */
/* I titoli entrano parola per parola: .words > .w (clip) > .wi (parola) */
.words { display: flex; flex-wrap: wrap; column-gap: .22em; }
.words--h1 { column-gap: .24em; }
.words .w { display: inline-flex; overflow: hidden; padding-bottom: .08em; }
.words--h1 .w { padding-bottom: .1em; }
.words .br { flex-basis: 100%; height: 0; }
.js .wi { display: inline-block; transform: translate3d(0,110%,0); transition: transform .9s var(--ease-o); }
.js .wi.is-in { transform: none; }
.js .in-fade { opacity: 0; transform: translate3d(0,20px,0); transition: opacity .8s ease, transform .8s var(--ease-o); }
@media (max-width: 690px) { .js .in-fade, .js .in-fade--30, .js .in-fade--40 { transition-duration: .5s, .6s; } }
.js .in-fade--30 { transform: translate3d(0,30px,0); transition: opacity .8s ease, transform .9s var(--ease-o); }
.js .in-fade--40 { transform: translate3d(0,40px,0); transition: opacity .9s ease, transform 1.1s var(--ease-o); }
.js .in-fade--down { transform: translate3d(0,-60px,0) rotate(-2deg); transition: opacity .6s ease, transform 1.2s var(--ease-o); }
.js .in-scale { transform: scale(0) rotate(-8deg); transition: transform 1.1s var(--ease-o); }
.js .in-scale--r { transform: scale(0) rotate(8deg); }
.js .in-shot { transform: scale(1.08); transition: transform 2.4s var(--ease-o); }
.js .in-fade.is-in, .js .in-scale.is-in, .js .in-shot.is-in { opacity: 1; transform: none; }

/* Ingressi allo scroll: gli elementi marcati da JS con data-io entrano salendo */
.js [data-io] { opacity: 0; translate: 0 26px; transition: opacity .7s ease, translate .9s var(--ease-o); }
.js [data-io].is-in { opacity: 1; translate: 0 0; }
.no-js .reveal__text .w { opacity: 1 !important; }

/* 10. RESPONSIVE ------------------------------------------------------------ */
@media (min-width: 1000px) { .contact-block .form { margin-top: 39px; } }
@media (min-width: 1920px) {
  .hscroll__track > * { max-width: 34vw; }
  .hscroll__track > .intro__title, .hscroll__track > .projects__intro, .hscroll__track > .approach__title, .hscroll__track > .tl__intro { max-width: none; }
}

@media (max-width: 999px) {
  .row { flex-wrap: wrap; }
  .row > .col { width: 100%; }
  .site-header { padding: var(--header-pad) 18px; }
  .menu-toggle { margin: -12px -11px -12px 0; }
  .menu-toggle span, .menu-toggle::before, .menu-toggle::after { width: 22px; left: 11px; }
  .menu-toggle::before { top: 13px; }
  .menu-toggle span { top: 21px; }
  .menu-toggle::after { bottom: 13px; }
  .menu__top { padding: var(--header-pad) 18px; }
  .menu__close { top: 10px; right: 14px; width: 44px; height: 44px; }
  .menu__grid { grid-template-columns: minmax(0,1fr); padding: 2vh 25px 4vh; align-content: start; }
  .menu__preview, .menu__payoff { display: none; }
  .container { padding: 0 25px; }
  .services-head { padding-top: 15%; }
  .services-head__cta { justify-content: flex-start; margin-top: 20px; }
  .btn-wave { font-size: 14px; line-height: 14px; }
  .z-12, .z-13, .z-14, .z-15, .z-16, .z-17 { zoom: 1.15; }
  .contact-block .row { gap: 40px; }
  .contact-block .row > .col { flex: none; width: 100%; }
  .hero__left { width: 100%; padding: 20px; }
  .hero__right { display: none; }
  .hero-card { max-width: 50%; }
  .hero__logo-row { padding: 0 20px 10px; }
  .stack-card { height: auto; min-height: calc(90vh - var(--header-h)); }
  .stack-card__inner > .row { padding: 20px 0; flex-direction: column; flex-wrap: nowrap; gap: 20px; }
  .stack-card__inner > .row > .col { padding: 0 20px; width: 100%; }
  .svc-text { padding: 0 20px !important; }
  .svc-desc { font-size: 14px; }
  .stack-cards { --overlap: 40px; }
  /* griglie a due colonne → una */
  .steps__grid, .faq__grid, .receipt__grid, .plist__grid, .wed-promo__grid { grid-template-columns: minmax(0,1fr); gap: 28px; }
  .faq__intro { position: static; }
  /* ventaglio: su tablet le card diventano una griglia 2×2 */
  .fan { height: auto; padding: 100px 0 60px; }
  .fan .fx__stage { position: relative; height: auto; overflow: visible; }
  .fan__head { position: static; }
  .fan__box { position: static; width: auto; transform: none; margin: 30px 25px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
  .fan__card { position: static; min-height: 0; transform: none !important; }
  .wgrid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .wcard, .wcard--wide { grid-column: auto; aspect-ratio: 1/1; }
  .wcard:last-child { grid-column: span 2; aspect-ratio: 2/1; }
  .pf__grid { grid-template-columns: repeat(3, minmax(0,1fr)); gap: 30px 16px; }
  /* passaggi: testo sopra, media sotto */
  .steps__grid { align-content: center; gap: 20px; }
  .steps__pile, .steps--home .steps__pile { height: 36vh; }
  .steps__num { font-size: 64px; }
  /* strisce orizzontali */
  .hscroll__track { padding-left: 25px; gap: 20px; }
  .hscroll__track > * { width: 78vw; }
  .hscroll__track > .tl__item { width: min(60vw, 40vh); min-width: 0; }
  .tl__media { height: min(34vh, calc(min(60vw, 40vh) * 4 / 3)); }
  .tl__item p { font-size: 14px; line-height: 1.5; }
  .tl__item h3 { font-size: min(var(--fs-h3), 3.6vh); }
  .intro__shot { height: 56vh; }
  .approach__card { height: 56vh; }
  .projects__media { height: 56vh; }
  /* scontrino */
  .receipt__grid { align-content: center; gap: 24px; }
  .receipt__right { height: 48vh; }
  .receipt__slot { top: 0; width: calc(42vh * .46 + 40px); margin-left: calc((42vh * .46 + 40px) / -2); }
  .receipt__win { top: 15px; height: 44vh; }
  .receipt__img { height: 42vh; }
  /* home */
  .plist__cols { display: none; }
  .zoom__word { font-size: 15vw; }
  .fly__head { width: 90vw; }
  .contact-photo { min-height: 60vh; }
  .footer-legal { padding: 20px 25px 28px; }
}

@media (max-width: 690px) {
  /* Su telefono: testi più piccoli, nessuno scorrimento orizzontale, sezioni in sequenza verticale */
  :root { --fs-h1: 44px; --lh-h1: 48px; --fs-h2: 32px; --lh-h2: 38px; --fs-h3: 24px; --lh-h3: 30px; --fs-h4: 18px; --lh-h4: 26px; --fs-body: 15px; --lh-body: 25px; }
  .hide-phone { display: none !important; }
  .hero-card { max-width: 100%; gap: 15px; }
  .hero-card__img { width: 113px; }
  .menu__svc { grid-template-columns: minmax(0,1fr); }
  .z-12, .z-13, .z-14, .z-15, .z-16, .z-17 { zoom: 1; }
  .badges { gap: 8px; }
  .badge { font-size: 18px; }
  .wgrid { grid-template-columns: minmax(0,1fr); }
  .wcard, .wcard--wide, .wcard:last-child { grid-column: auto; aspect-ratio: 4/3; }
  .pf__grid { grid-template-columns: repeat(2, minmax(0,1fr)); gap: 24px 12px; }
  .form__checks { grid-template-columns: 1fr; gap: 10px; }
  .form__row { flex-direction: column; gap: 14px; }
  .contact-photo { min-height: 70vw; padding: 20px; }
  .review-card__quote::after { height: 60px; }
  .review-card { padding: 10px; }
  .contact-page { padding-top: 120px; }
  .contact-page__stack { gap: 40px; }
  .contact-page + .contact-end { margin-top: 0; }
  .nf__code { font-size: max(96px, 26vw); }
  .nf__actions { gap: 16px; }

  /* sezioni fisse → blocchi normali */
  .fx, .fx.hscroll, .fx.colors, .fx.steps, .fx.zoom, .fx.ribbons, .fx.plist, .fx.shero, .fx.fan, .fx.receipt, .fx.fly, .fx.doors, .fx.reveal { height: auto; }
  .fx__stage, .reveal .fx__stage, .reveal--manifesto .fx__stage { position: relative; top: auto; height: auto; overflow: visible; display: block; }

  /* strisce orizzontali → colonna */
  .hscroll .fx__stage { padding: 44px 25px 40px; }
  .hscroll__track { transform: none !important; display: flex; flex-direction: column; align-items: stretch; gap: 24px; padding: 0; }
  .hscroll__track > * { width: 100%; max-width: none; }
  .intro__title h2 { font-size: 30px; line-height: 1.12; }
  .intro__text p, .intro__text--cta p { max-width: none; font-size: 19px; line-height: 1.35; }
  .intro__shot { height: auto; aspect-ratio: 4/5; }
  .approach__title { padding: 0 0 4px; }
  .approach__title h2 { font-size: 28px; line-height: 1.08; }
  .hscroll--approach .hscroll__track { display: block; }
  .hscroll__track > .approach__slides { width: calc(100% + 50px); display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding: 0 25px; -webkit-overflow-scrolling: touch; scrollbar-width: none; margin: 14px -25px 0; padding: 0 25px 6px; }
  .approach__slides::-webkit-scrollbar { display: none; }
  .approach__card { flex: 0 0 82%; scroll-snap-align: start; width: auto; height: auto; display: flex; flex-direction: column; padding: 16px 14px 20px; gap: 12px; }
  .approach__card .slide__num { padding: 0; }
  .approach__media { aspect-ratio: 4/3; }
  .approach__body { padding: 0 2px; }
  .hscroll--projects .hscroll__track { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
  .projects__intro { grid-column: 1 / -1; gap: 12px; margin-bottom: 6px; }
  .projects__intro p { max-width: none; }
  .projects__media { height: auto; aspect-ratio: 3/4; }
  .tl__intro { gap: 12px; }
  .tl__intro p { max-width: none; }
  .tl__item { max-width: none; min-width: 0; gap: 10px; }
  .tl__media { height: 62vw; }
  .tl__meta { margin-right: 0; }
  .tl__item h3 { font-size: 24px; }

  /* colori: titolo e tutti i video visibili, ridotti */
  .colors { padding: 44px 0 40px; }
  .colors__head { position: static; padding: 0 25px; gap: 14px; transform: none !important; }
  .colors__head h2, .colors--about .colors__head h2 { font-size: 28px; line-height: 1.1; max-width: none; letter-spacing: 0; }
  .colors__head p { max-width: none; font-size: 14px; line-height: 1.6; }
  /* i reel scorrono in fila sotto al testo, leggermente inclinati come nelle hero dei servizi */
  .colors__cards { display: flex; gap: 12px; overflow-x: auto; scrollbar-width: none; padding: 30px 25px 12px; }
  .colors__cards::-webkit-scrollbar { display: none; }
  .colors__card, .colors--about .colors__card { position: static; flex: 0 0 31vw; width: auto; transform: rotate(-4deg) !important; }
  .colors__card:nth-of-type(even), .colors--about .colors__card:nth-of-type(even) { transform: rotate(4deg) !important; }

  /* passaggi numerati: ogni slide = testo + immagine */
  /* passaggi numerati: slider a scorrimento, una card colorata per passaggio */
  .steps, .steps--home, .steps--about, .svc .steps, .svc--orange .steps, .svc--pink .steps, .svc--red .steps, .svc--yellow .steps { background: var(--c-bg); color: var(--c-text); --c-text: #161616; }
  .steps__grid { position: static; display: flex; flex-direction: column; align-items: stretch; gap: 0; padding: 44px 25px 36px; }
  .steps__text, .steps__items, .steps__pile { display: contents; }
  .steps__title { order: 0; margin: 0 0 14px; font-size: 28px; line-height: 1.1; }
  .steps__count, .steps__cta { display: none; }
  .steps__slides { order: 2; display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding: 0 25px; -webkit-overflow-scrolling: touch; scrollbar-width: none; margin: 0 -25px; padding: 0 25px 6px; }
  .steps__slides::-webkit-scrollbar { display: none; }
  .steps__slide { flex: 0 0 84%; scroll-snap-align: start; display: flex; flex-direction: column; gap: 12px; padding: 16px 14px 18px; border-radius: var(--radius-l); background: #fff; border: 1.5px solid var(--slide-bg, var(--c-orange)); color: var(--c-text); --c-text: #161616; }
  .steps__slide .slide__num b { color: var(--slide-bg, var(--c-orange)); }
  .steps__slide .badge { font-size: 13px; padding: .45em .9em; color: var(--c-text); background: transparent; border: 1px solid rgba(22,22,22,.3); backdrop-filter: none; -webkit-backdrop-filter: none; }
  .steps__slide .badges { gap: 6px; }
  .slide__num { display: flex; align-items: flex-end; gap: 6px; padding: 0 6px; font-family: var(--f-head); font-weight: 600; line-height: .9; }
  .slide__num b { font-size: 36px; font-weight: 600; letter-spacing: -.03em; }
  .slide__num span { font-size: 15px; padding-bottom: 2px; opacity: .8; }
  .slide__cta { display: flex; padding: 6px 6px 0; margin-top: auto; }
  .steps__slide .steps__shot { position: relative; left: auto; right: auto; width: 100%; aspect-ratio: 16/11; margin: 0; border-radius: var(--radius-m); transform: none !important; }
  .steps__slide .steps__item { grid-area: auto; position: static; opacity: 1; transform: none !important; pointer-events: auto; gap: 8px; padding: 0 6px; }
  .steps__slide h2 { font-size: 22px; line-height: 1.1; }
  .steps__slide h3 { font-size: 21px; line-height: 1.15; }
  .steps__slide p { max-width: none; font-size: 14px; line-height: 1.5; }
  .steps__dots { order: 3; display: flex; justify-content: center; gap: 7px; padding: 14px 0 0; }
  .steps__dot { width: 7px; height: 7px; border-radius: 50%; background: currentColor; opacity: .25; transition: opacity .3s ease, transform .3s ease; }
  .steps__dot.is-active { opacity: 1; transform: scale(1.3); }

  /* nastri: più bassi */
  .ribbons .fx__stage { height: 36vh; overflow: hidden; }
  .ribbon { padding: 10px 0; }
  .ribbon--a { top: 22%; } .ribbon--b { top: 56%; }
  .ribbon__track { transform: none !important; font-size: 26px; }
  .ribbons__card { width: 30vw; margin: -27vw 0 0 -15vw; transform: none !important; }

  /* portfolio per tipologia */
  .plist__grid { position: static; padding: 44px 25px 40px; }
  .plist__text { height: auto; padding: 0; }
  .plist__word { color: var(--c-text); font-size: 20px; }

  /* zoom finale: video con margini, senza sfondo colorato */
  .zoom, .zoom--yellow { background: var(--c-bg); padding: 10px 25px 44px; }
  .zoom__rows, .zoom__words { display: none; }
  .zoom__media { position: relative; inset: auto; aspect-ratio: 4/5; border-radius: var(--radius-l) !important; transform: none !important; }
  .zoom--home .zoom__media { aspect-ratio: 4/3; }
  .zoom__over { position: absolute; opacity: 1 !important; transform: none !important; padding: 0 20px; gap: 14px; }
  .zoom__over h2, .zoom__over .h1-style { font-size: max(26px, 7.5vw); line-height: 1.1; }
  .zoom__over .badge-glass { font-size: 12px; line-height: 12px; }
  .zoom__cta { opacity: 1 !important; transform: none !important; bottom: 24px; }

  /* hero Servizi: 5 colonne strette con i reel */
  .shero { position: relative; padding: 72px 0 0; background: var(--c-orange); }
  .shero .fx__stage { position: static; display: block; }
  .shero .fx__stage::after { content: ""; display: block; height: 50vw; }
  .shero__cols { position: absolute; inset: 0; display: grid; grid-template-columns: repeat(5, 1fr); }
  .shero__col { height: 100%; transform: none !important; }
  .shero__panel { inset: 0; transform: none !important; }
  .shero__media { left: 4px; right: 4px; bottom: 10px; height: 36vw !important; border-radius: 8px; transform: none !important; }
  .shero__badge { display: none; }
  .shero__head { position: relative; z-index: 1; padding: 0 25px 0; gap: 12px; transform: none !important; opacity: 1 !important; text-shadow: 0 1px 14px rgba(22,22,22,.25); }
  .shero__title { font-size: 30px; line-height: 1.08; max-width: none; }
  .shero__text { font-size: 14px; line-height: 1.55; max-width: none; }
  .shero .fx__stage { display: flex; flex-direction: column; min-height: calc(100vh - 72px); }
  .shero .fx__stage::after { margin-top: auto; }

  /* ventaglio */
  .fan { padding: 44px 0 40px; }
  .fan__head { position: static; padding: 0 25px; }
  .fan__head h2 { font-size: 26px; }
  .fan__head p { font-size: 14px; line-height: 1.6; }
  .fan__box { position: static; width: auto; transform: none; margin: 22px 25px 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
  .fan__card { position: static; min-height: 0; padding: 14px; transform: none !important; align-items: flex-start; }
  .fan__card .pack__icon { width: 44px; height: 44px; }
  .fan__card .pack__icon svg { width: 20px; height: 20px; }
  .fan__card .pack__icon--wide svg { width: 24px; }
  .fan__card h3 { margin: 10px 0 6px; font-size: 14px; line-height: 1.25; }
  .fan__card p { padding-right: 0; font-size: 12px; line-height: 1.45; }

  /* scontrino */
  .receipt__grid { position: static; padding: 44px 25px 40px; gap: 20px; }
  .receipt__text { opacity: 1 !important; transform: none !important; gap: 14px; }
  .receipt__text > p { max-width: none; }
  .receipt__sub { font-size: 18px; }
  .receipt__right { height: auto; display: block; }
  .receipt__slot { display: none; }
  .receipt__win { position: static; transform: none; height: auto; overflow: visible; }
  .receipt__img { height: auto; width: min(62%, 240px); margin: 0 auto; transform: none !important; }

  /* hero a volo: griglia di anteprime sopra al titolo */
  .fly { padding: 92px 0 24px; }
  .fly .fx__stage { display: flex; flex-direction: column; }
  .fly__head { order: 0; position: static; width: auto; transform: none !important; opacity: 1 !important; padding: 0 25px; gap: 18px; }
  .fly__title { font-size: 32px; }
  .fly__head p { max-width: none; }
  .fly__actions { flex-direction: row; flex-wrap: wrap; justify-content: center; gap: 12px 18px; }
  .fly__cards { order: 1; display: flex; gap: 12px; overflow-x: auto; scrollbar-width: none; padding: 34px 25px 12px; }
  .fly__cards::-webkit-scrollbar { display: none; }
  .fly__card { position: static; flex: 0 0 31vw; width: auto !important; transform: none !important; }
  /* su telefono le card entrano in dissolvenza (non in scala) per non ritardare il primo rendering */
  .js .fly__shot.in-scale { opacity: 0; transition: opacity .7s ease; }
  .js .fly__shot.in-scale.is-in { opacity: 1; }
  .fly__shot { aspect-ratio: 3/4 !important; transform: rotate(-4deg) !important; }
  .fly__card:nth-child(even) .fly__shot { transform: rotate(4deg) !important; }

  /* porte e parole */
  .doors { background: var(--c-yellow); }
  .doors .fx__stage { display: flex; flex-direction: column-reverse; }
  .doors__door { position: static; width: auto; height: auto; transform: none !important; }
  .doors__door--r { display: none; }
  .doors__inner { position: static; width: auto; height: auto; padding: 96px 25px 10px; gap: 16px; }
  .doors__title { font-size: 32px; }
  .doors__inner p { max-width: none; }
  /* il tablet resta dentro l’hero gialla, piccolo e un po’ inclinato */
  .doors__media { position: static; background: transparent; transform: none !important; padding: 10px 25px 36px; }
  .tablet { height: auto; width: min(46vw, 210px); transform: rotate(-7deg); box-shadow: 0 24px 50px -22px rgba(22,22,22,.5); }
  .reveal__body, .reveal--manifesto .reveal__body { position: static; padding: 44px 25px; gap: 18px; }
  .reveal--about .reveal__body h2 { display: none; }
  .reveal__text { font-size: 22px; }
  .reveal--manifesto .reveal__text { font-size: 24px; }
  .reveal__over { opacity: 1 !important; transform: none !important; max-width: none; }

  /* card impilate dei servizi */
  .stack-wrap { padding: 10px 10px 20px; }
  .stack-card .h1-style { font-size: 40px; line-height: 1.05; }

  /* wedding */
  .whero { padding-top: 100px; }
  .whero__title { font-size: 30px; }
  .whero__body p { max-width: none; }
  .whero .ticker__cell { --cell-w: 44vw; }
  .whero__reel { width: auto; }
  .wsvc, .faq { padding: 44px 25px 40px; }
  .wsvc__head, .wsvc__head p { max-width: none; }
  .faq__intro p { max-width: none; }
  .accordion__item { padding: 0 16px; }
  .accordion__btn { padding: 18px 44px 18px 0; font-size: 20px; line-height: 1.3; }
  .wed-promo { padding: 44px 0; }
  .wed-promo__grid { padding: 0 25px; }
  .wed-promo__text p { max-width: none; }
  .wed-promo__shots { flex-direction: column; }
  .wed-promo__shot, .wed-promo__shot:nth-child(2) { width: 100%; height: 60vw; }

  /* contatti e footer compatti */
  .contact-block { padding: 40px 25px 20px; }
  .contact-block .row { flex-direction: column-reverse; gap: 36px; }
  .contact-block__mascot { display: none; }
  .contact-links { gap: 2px; }
  .contact-links > p { font-size: 12px; letter-spacing: .1em; text-transform: uppercase; opacity: .7; margin: 0 0 8px; }
  .contact-links__big { font-size: 18px; }
  .contact-links__big > a { margin-bottom: 6px; }
  .contact-links__gap { height: 20px; }
  .contact-social { gap: 16px; }
  .form { gap: 16px; max-width: none; }
  .form__label { font-size: 15px; line-height: 1.2; margin-bottom: 8px; }
  .form__sub { font-size: 12px; margin-top: 3px; }
  .form__textarea { height: 96px; }
  .form__consent { font-size: 12px; }
  .form__submit { padding: 11px 20px; font-size: 15px; }
  .footer-title { padding: 0 25px 16px; }
  .footer-legal { padding: 14px 25px 24px; gap: 4px; flex-direction: column; align-items: flex-start; }
  .footer-legal p, .footer-legal nav { font-size: 12px; line-height: 1.5; }
  .footer-legal nav { gap: 14px; }
}

/* 11. MOVIMENTO RIDOTTO ----------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .js .wi, .js .in-fade, .js .in-scale, .js .in-shot, .shero__panel, .shero__media { opacity: 1 !important; transform: none !important; }
  .reveal__text .w { opacity: 1 !important; }
  .zoom__media { transform: scale(1) !important; }
  .zoom__over, .zoom__cta, .receipt__text { opacity: 1 !important; }
  .receipt__img { transform: none !important; }
  .steps__item { opacity: 1; position: static; }
  .fly__card { display: none; }
}
