/* =========================================================================
   new ways of marketing — styles
   Versione leggibile (non minificata). Regole e ordine invariati.
   ========================================================================= */

/* ---------- Variabili / tema ---------- */
:root {
  --bg: #0f241c;
  --cream: #f4ead6;
  --green: #01abaa;
  --lime: #fedc3d;
  --ink: #10251d;
  --glass: rgba(16, 36, 29, .42);
  --line: rgba(244, 234, 214, .28);
}

/* ---------- Reset / base ---------- */
* {
  box-sizing: border-box;
}

html {
  scroll-behavior: auto;
  background: var(--bg);
  color: var(--cream);
}

body {
  margin: 0;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  overflow-x: hidden;
}

/* In WordPress il tema/Elementor applica color+font sul `body` e, caricandosi
   dopo styles.css, vincerebbe su html{color}. Qui li riaffermiamo con
   specificità maggiore (body.nwom2026 > body) così il testo resta crema.
   In locale la classe non c'è sul <body>, quindi questa regola non disturba. */
body.nwom2026 {
  color: var(--cream);
  background: var(--bg);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

body.ready .panel {
  opacity: 1;
}

/* ---------- Skip link (accessibilità) ---------- */
.skip {
  position: fixed;
  top: 10px;
  left: 10px;
  z-index: 50;
  transform: translateY(-150%);
  background: var(--cream);
  color: var(--ink);
  padding: 10px 12px;
  border-radius: 999px;
}

.skip:focus {
  transform: none;
}

/* ---------- Video di sfondo ---------- */
.video-stage {
  position: fixed;
  inset: 0;
  /* z-index 0 (non negativo): in WordPress uno sfondo opaco di un antenato
     coprirebbe gli z-index negativi e nasconderebbe video + fallback.
     I contenuti hanno z-index >= 1, quindi restano comunque sopra. */
  z-index: 0;
  /* Fallback img: se il video non carica resta visibile questa immagine.
     Path relativo al file CSS → nwom2026/assets/images/01.jpg */
  background: #07130f url("assets/images/01.jpg") center / cover no-repeat;
  overflow: hidden;
}

.scroll-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  filter: saturate(1.05) contrast(1.02);
  transform: scale(1.01);
}

.video-vignette {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 50% 30%, rgba(0, 0, 0, 0) 0 35%, rgba(0, 0, 0, .42) 84%),
    linear-gradient(180deg, rgba(7, 19, 15, .35), rgba(7, 19, 15, .16) 40%, rgba(7, 19, 15, .72));
}

.grain {
  position: absolute;
  inset: -40%;
  opacity: .08;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
  animation: grain 7s steps(9) infinite;
}

@keyframes grain {
  to {
    transform: translate3d(10%, 6%, 0);
  }
}

/* ---------- Topbar ---------- */
.topbar {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 10;
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 18px 16px;
  color: var(--cream);
  mix-blend-mode: normal;
}

.brandmark {
  font-weight: 800;
  letter-spacing: 0px; /*-0.055em;*/
  line-height: .86;
  text-transform: lowercase;
  font-size: 20px;
}

/* La CTA "Guarda l'agenda" e' la stessa pillola della .top-cta (con in piu'
   l'icona): condividono queste regole, cosi' restano allineate. La variante
   `body.nwom2026` serve a battere il kit Elementor sui <button> — vedi la nota
   nel blocco "Pop-up agenda speech" in fondo al file. */
.top-cta,
body.nwom2026 .agenda-trigger {
  color: var(--ink);
  background: var(--lime);
  text-decoration: none;
  border-radius: 999px;
  padding: 10px 13px;
  font-weight: 800;
  font-size: 13px;
  box-shadow: 0 12px 35px rgba(0, 0, 0, .22);
}

/* ---------- Layout pannelli (scroll reverse) ---------- */
main {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column-reverse;
}

.panel {
  min-height: 100svh;
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 92px 42px 56px 18px;
  opacity: 0;
  transition: opacity .55s ease;
}

.panel--first {
  justify-content: flex-end;
  padding-bottom: 42px;
}

/* ---------- Tipografia ---------- */
.kicker,
.eyebrow {
  font-size: 18px;
  letter-spacing: .16em;
  text-transform: uppercase;
  font-weight: 900;
  color: var(--lime);
  margin: 0 0 20px;
}

.hero h1,
.panel h2 {
  margin: 0;
  font-weight: 950;
  letter-spacing: 0px; /*-.095em;*/
  line-height: .78;
  text-transform: lowercase;
  text-wrap: balance;
}

/* In WordPress Elementor applica una typography globale sui titoli (spesso un
   font diverso da Inter, a volte con margini propri): l'h1 finisce in un
   carattere diverso da kicker/paragrafo e sembra disallineato. Qui riaffermiamo
   font, allineamento e margine con specificità che batte il kit di Elementor.
   In locale la classe .nwom2026 non c'è sul <body>, quindi non disturba. */
.nwom2026 .hero h1,
.nwom2026 .panel h2 {
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  text-align: left;
  margin: 0;
  padding: 0;
}

.hero h1 {
  font-size: clamp(62px, 22vw, 150px);
  max-width: 760px;
}

.hero h1 span {
  color: var(--lime);
}

.register h2 span {
  color: var(--green);
}

.hero p {
  font-size: clamp(19px, 5.6vw, 38px);
  line-height: 1.08;
  letter-spacing: 0px; /*-.015em;*/
  font-weight: 760;
  max-width: 620px;
  margin: 20px 0;
}

.event-meta {
  font-weight: 900;
  letter-spacing: .07em;
  font-size: 25px;
  margin-top: 8px;
}

.scroll-hint {
  display: none;
}

/* ---------- Hint "scroll up" verticale ---------- */
.up-hint {
  position: fixed;
  right: 18px;
  left: auto;
  top: 140px;
  bottom: auto;
  z-index: 20;
  color: var(--lime);
  background: transparent;
  border-radius: 0;
  padding: 0;
  font-size: 16px;
  font-weight: 950;
  letter-spacing: 2px;
  text-transform: uppercase;
  box-shadow: none;
  pointer-events: none;
  writing-mode: vertical-rl;
  text-orientation: upright;
  transform: none;
  transition: opacity .35s ease;
  animation: upPulse 1.6s ease-in-out infinite;
}

@media (min-width: 760px) {
  .up-hint {
    right: 32px;
    top: 160px;
    font-size: 20px;
  }
}

@keyframes upPulse {
  0%, 100% {
    opacity: .95;
    transform: translateY(0);
  }
  50% {
    opacity: .35;
    transform: translateY(-10px);
  }
}

/* ---------- Card di contenuto / sezioni con sfondo ---------- */
.content-card,
.split,
.schedule,
.location,
.register {
  background: linear-gradient(180deg, rgba(8, 23, 17, .08), rgba(8, 23, 17, .38));
  backdrop-filter: blur(1px);
}

.content-card p:not(.eyebrow),
.split > p,
.location p:not(.eyebrow):not(.marquee) {
  font-size: clamp(22px, 7vw, 52px);
  letter-spacing: 0px; /*-.02em;*/
  line-height: 1.02;
  font-weight: 760;
  max-width: 850px;
  margin: 10px 0;
}

.content-card h2,
.split h2,
.schedule h2,
.location h2,
.register h2 {
  font-size: 45px;
  max-width: 980px;
}

.content-card h2 em {
  font-style: normal;
  display: block;
  color: var(--green);
  font-size: .42em;
  letter-spacing: 0px; /*-.07em;*/
  margin-top: .14em;
}

.split {
  gap: 28px;
}

/* ---------- Chips (format evento) ---------- */
.chips {
  list-style: none;
  margin: 22px 0 0;
  padding: 0;
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.chips li {
  border: 1px solid var(--line);
  background: rgba(244, 234, 214, .08);
  border-radius: 999px;
  padding: 9px 13px;
  font-weight: 800;
}

/* ---------- Timeline / programma ---------- */
.timeline {
  display: grid;
  gap: 12px;
  margin-top: 22px;
}

.timeline article {
  border: 1px solid var(--line);
  border-radius: 24px;
  padding: 18px;
  background: rgba(15, 36, 28, .44);
  box-shadow: 0 20px 80px rgba(0, 0, 0, .18);
}

.timeline time {
  display: block;
  color: var(--lime);
  font-weight: 900;
  font-size: 12px;
  letter-spacing: .08em;
  margin-bottom: 12px;
}

.timeline strong {
  display: block;
  font-size: 25px;
  line-height: 1;
  letter-spacing: 0px; /*-.015em;*/
}

.timeline p {
  margin: 10px 0 0;
  line-height: 1.35;
  letter-spacing: .005em;
  color: rgba(244, 234, 214, .82);
}

.marquee {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: clip;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: .1em;
  color: var(--lime);
  margin: 0 0 22px;
  opacity: .9;
}

/* ---------- Location / indirizzo ---------- */
.location address {
  font-style: normal;
  font-size: 18px;
  line-height: 1.35;
  letter-spacing: .005em;
  margin: 20px 0;
  color: rgba(244, 234, 214, .88);
  font-weight: 700;
}

.inline-link {
  display: inline-block;
  color: var(--ink);
  background: var(--cream);
  text-decoration: none;
  border-radius: 999px;
  padding: 12px 16px;
  font-weight: 900;
  margin-top: 18px;
  align-self: flex-start;
}

/* ---------- Form di registrazione ---------- */
.register form {
  display: grid;
  gap: 10px;
  margin-top: 24px;
  width: min(100%, 620px);
}

label span {
  display: block;
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: .13em;
  font-weight: 900;
  margin-bottom: 6px;
  color: var(--lime);
}

input {
  width: 100%;
  border: 1px solid var(--line);
  background: rgba(244, 234, 214, .12);
  color: var(--cream);
  border-radius: 16px;
  padding: 15px 14px;
  font: inherit;
  outline: none;
}

input:focus {
  border-color: var(--lime);
  background: rgba(244, 234, 214, .18);
}

.check {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  font-size: 13px;
  color: rgba(244, 234, 214, .86);
  margin-top: 4px;
}

.check input {
  width: auto;
  margin-top: 2px;
}

.check span {
  font-size: 13px;
  line-height: 1.2;
  letter-spacing: 0;
  text-transform: none;
  font-weight: 650;
  color: inherit;
  margin: 0;
}

button {
  border: 0;
  background: var(--lime);
  color: var(--ink);
  border-radius: 999px;
  padding: 16px 18px;
  font-weight: 950;
  font-size: 16px;
  margin-top: 10px;
}

/* ---------- Footer ---------- */
footer {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 18px;
  padding: 28px 18px 40px;
  color: rgba(244, 234, 214, .72);
  font-size: 12px;
  background: rgba(7, 19, 15, .75);
}

footer nav {
  display: flex;
  align-items: flex-end;
  gap: 14px;
  color: #FFF;
}

footer nav a {
  color: #FFF!important;
}

/* ---------- Desktop (≥ 760px) — blocco principale ---------- */
@media (min-width: 760px) {
  .topbar {
    padding: 26px 32px;
  }

  .brandmark {
    font-size: 28px;
  }

  .panel {
    padding: 110px 72px 70px 42px;
  }

  .panel--first {
    padding-bottom: 64px;
  }

  .split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    align-items: center;
  }

  .split .chips {
    grid-column: 2;
  }

  .timeline {
    grid-template-columns: repeat(3, 1fr);
  }

  .location {
    padding-right: 30vw;
  }

  .register form {
    grid-template-columns: 1fr 1fr;
  }

  .register .check,
  button {
    grid-column: 1 / -1;
  }

  footer {
    padding: 20px 70px 30px;
  }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  .grain {
    animation: none;
  }

  .panel {
    transition: none;
  }

  .up-hint {
    display: none;
  }
}

/* =========================================================================
   Override / aggiunte (caricate dopo il blocco principale)
   ========================================================================= */

/* ---------- Brandmark con logo immagine ---------- */
.brandmark {
  display: flex;
  align-items: center;
  line-height: 0;
}

.brandmark img {
  display: block;
  height: 30px;
  width: auto;
}

@media (min-width: 760px) {
  .brandmark img {
    height: 40px;
  }
}

/* ---------- Hero: override dimensione titolo e loghi ---------- */
.hero h1 {
  font-size: 55px; /*clamp(45px, 14vw, 100px); */
  letter-spacing: -2px;
} 

.hero-logos {
  display: flex;
  align-items: center;
  gap: 26px;
  margin-top: 35px;
  flex-wrap: wrap;
}

.hero-logos img {
  display: block;
  height: 42px;
  width: auto;
  filter: brightness(0) invert(1);
  opacity: .92;
  max-width: 240px;
  object-fit: contain;
}

@media (min-width: 760px) {
  .hero-logos img {
    height: 54px;
  }
}

.t2o-logo {
  display: block;
  width: min(58vw, 360px);
  max-width: 100%;
  height: auto;
  margin: 6px 0 22px;
}

@media (min-width: 760px) {
  .t2o-logo {
    width: min(40vw, 420px);
  }
}

/* ---------- Gallery orizzontale ---------- */
.gallery {
  margin-top: 28px;
  display: flex;
  gap: 14px;
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x mandatory;
  padding: 6px 2px 14px;
  -webkit-overflow-scrolling: touch;
}

.gallery::-webkit-scrollbar {
  height: 8px;
}

.gallery::-webkit-scrollbar-track {
  background: rgba(244, 234, 214, .06);
  border-radius: 999px;
}

.gallery::-webkit-scrollbar-thumb {
  background: rgba(244, 234, 214, .28);
  border-radius: 999px;
}

.gallery figure {
  flex: 0 0 auto;
  margin: 0;
  width: min(78vw, 440px);
  aspect-ratio: 4 / 3;
  border-radius: 22px;
  overflow: hidden;
  scroll-snap-align: start;
  background: rgba(7, 19, 15, .55);
  border: 1px solid var(--line);
  box-shadow: 0 24px 80px rgba(0, 0, 0, .32);
}

.gallery img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

@media (min-width: 760px) {
  .gallery figure {
    width: min(48vw, 520px);
  }
}

/* ---------- Logo t2ó ONE nel footer ---------- */
.footer-t2o-one {
  display: inline-block;
  height: 30px;
  width: auto;
  vertical-align: bottom;
  margin-right: 14px;
  filter: brightness(0) invert(1);
  opacity: .95;
}

footer .copy {
  display: inline-flex;
  align-items: flex-end;
  gap: 0;
  line-height: 1;
}

@media (min-width: 760px) {
  .footer-t2o-one {
    height: 38px;
    margin-right: 18px;
  }
}

/* ---------- Utility animazioni ---------- */
.fx {
  will-change: transform, opacity;
}

.top-cta {
  transition: opacity .35s ease, transform .35s ease;
  display: block;
}

.header-t2o-one {
  display: none;
  height: 30px;
  filter: brightness(0) invert(1);
}

body.at-top .top-cta {
  opacity: 0;
  display: none;
  pointer-events: none;
  transform: translateY(-6px);
}

body.at-top .up-hint {
  opacity: 0;
  pointer-events: none;
  animation: none;
}

body.at-top .header-t2o-one {
  opacity: 1;
  display: block;
  pointer-events: none;
}

/* Logo brandmark: visibile solo a scroll 0 (hero in cima) e a fondo pagina
   (sezione registrazione). Nascosto durante i pannelli intermedi. */
.brandmark {
  transition: opacity .35s ease, transform .35s ease;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-6px);
}

body.at-top .brandmark,
body.at-bottom .brandmark {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

/* ---------- Desktop (≥ 760px) — rifiniture tipografia e spaziature ---------- */
@media (min-width: 760px) {
  .topbar {
    padding: 32px 48px;
  }

  .top-cta,
  body.nwom2026 .agenda-trigger {
    font-size: 17px;
    padding: 18px 28px;
    letter-spacing: .02em;
    border-radius: 999px;
    box-shadow: 0 18px 48px rgba(0, 0, 0, .28);
  }

  .brandmark img {
    height: 48px;
  }
  
  .header-t2o-one {
    height: 48px;
  }

  .panel {
    padding: 140px 96px 96px 64px;
  }

  .panel--first {
    padding-bottom: 80px;
  }

  .kicker,
  .eyebrow {
    font-size: 20px;
    letter-spacing: .24em;
    margin-bottom: 20px;
  }

  .hero h1,
  .panel h2 {
    letter-spacing: 0px; /*-.085em;*/
    line-height: .84;
  }
  
  .content-card h2,
.split h2,
.schedule h2,
.location h2,
.register h2 {
  font-size: clamp(50px, 17vw, 100px);
  max-width: 980px;
}

  .hero p {
    font-size: clamp(22px, 2.8vw, 40px);
    line-height: 1.18;
    letter-spacing: -.005em;
    margin: 20px 0;
    max-width: 720px;
  }
  
  .hero h1 {
  font-size: clamp(45px, 14vw, 100px);
  letter-spacing: -2px;
} 

  .content-card p:not(.eyebrow),
  .split > p,
  .location p:not(.eyebrow) {
    line-height: 1.12;
    letter-spacing: 0px; /*-.01em;*/
    margin: 18px 0;
  }

  .event-meta {
    font-size: 27px;
    letter-spacing: .12em;
    margin-top: 10px;
  }

  .hero-logos {
    margin-top: 50px;
    gap: 42px;
  }

  .schedule .timeline {
    gap: 24px;
    margin-top: 48px;
    margin-bottom: 150px
  }

  .schedule .timeline article {
    padding: 36px 32px 40px;
    min-height: 180px;
    border-radius: 28px;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
  }

  .timeline time {
    font-size: 13px;
    letter-spacing: .14em;
    margin-bottom: 24px;
  }

  .timeline strong {
    font-size: 34px;
    line-height: 1.08;
    letter-spacing: 0px; /*-.01em;*/
  }

  .timeline p {
    font-size: 17px;
    line-height: 1.55;
    letter-spacing: .005em;
    margin-top: 22px;
    max-width: 34ch;
  }

  .location {
    padding-right: 64px;
  }

  .location address {
    font-size: 20px;
    line-height: 1.45;
    letter-spacing: .005em;
    margin: 28px 0;
  }

  .location .gallery {
    position: relative;
    left: 50%;
    right: 50%;
    margin-left: -50vw;
    margin-right: -50vw;
    width: 100vw;
    padding: 8px clamp(40px, 6vw, 80px) 18px;
    gap: 24px;
    scroll-snap-type: x mandatory;
  }

  .location .gallery figure {
    width: min(46vw, 640px);
    aspect-ratio: 4 / 3;
    border-radius: 28px;
  }

  .chips {
    margin-top: 36px;
    gap: 12px;
  }

  .chips li {
    padding: 12px 18px;
    font-size: 15px;
    letter-spacing: .02em;
  }

  .inline-link {
    padding: 16px 24px;
    font-size: 15px;
    margin-top: 32px;
    letter-spacing: .04em;
  }

  .register form {
    gap: 18px;
    margin-top: 40px;
    width: min(100%, 720px);
  }

  label span {
    font-size: 13px;
    letter-spacing: .18em;
    margin-bottom: 10px;
  }

  input {
    padding: 18px 18px;
    border-radius: 18px;
    font-size: 16px;
  }

  button {
    padding: 20px 24px;
    font-size: 18px;
    letter-spacing: .04em;
    margin-top: 20px;
  }

  footer {
    flex-direction: row;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    padding: 20px 70px 30px;
    font-size: 13px;
    letter-spacing: .04em;
  }

  footer nav {
    gap: 22px;
  }
}

/* =========================================================================
   Pop-up agenda speech (blocco Programma)
   Trigger dentro la card "Speech" + modale accessibile a livello di <body>.
   ========================================================================= */

/* ---------- CTA nella card Speech ----------
   NB sulla specificita': styles.css e' linkato PRIMA di wp_head(), quindi il
   kit Elementor si carica dopo e vince a parita' di peso. I suoi selettori sui
   pulsanti sono del tipo `.elementor-kit-N button` (0,1,1): con la sola classe
   `.agenda-trigger` (0,1,0) il bottone eredita il colore del kit (rosa).
   Il prefisso `body.nwom2026` porta la regola a (0,2,1) e vince, come gia'
   fatto per h1/h2. Stesso motivo per la X e per il CTA dentro la modale. */
body.nwom2026 .agenda-trigger {
  -webkit-appearance: none;
  appearance: none;
  display: inline-flex;
  align-items: center;
  gap: 10px;
  align-self: flex-start;
  width: auto;
  margin: 18px 0 0;
  border: 0;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  text-transform: none;
  line-height: 1.25;
  cursor: pointer;
  transition: filter .22s ease, transform .22s ease;
}

/* Icona proporzionata al testo: la pillola cambia corpo fra mobile e desktop. */
.agenda-trigger svg {
  width: 1.15em;
  height: 1.15em;
  flex: 0 0 auto;
}

body.nwom2026 .agenda-trigger:hover {
  background: var(--lime);
  color: var(--ink);
  filter: brightness(1.06);
}

body.nwom2026 .agenda-trigger:focus-visible {
  outline: 2px solid var(--cream);
  outline-offset: 3px;
}

/* Corpo del testo un gradino sotto la .top-cta solo su desktop: la colonna
   della timeline e' 1/3 della pagina e alla misura della .top-cta (17px)
   l'etichetta chiede 292px contro i 291 disponibili a 1280px, quindi andrebbe
   a capo per un pelo. A 14px la pillola sta su una riga con una dozzina di px
   di margine anche alla larghezza piu' critica, scarto che tiene anche se il
   font effettivo e' un po' piu' largo di Inter.
   Nessun `nowrap`: sotto i ~1230px la card e' troppo stretta per una riga
   sola e in quel caso due righe sono meglio di un debordamento. */
@media (min-width: 760px) {
  body.nwom2026 .agenda-trigger {
    font-size: 14px;
    padding: 14px 20px;
    gap: 8px;
  }
}

/* ---------- Blocco dello scroll con modale aperta ----------
   Lo scroll della landing avviene su <html> (il video è scrubbato sullo
   scrollY): l'overflow va bloccato su entrambi gli elementi, così la
   posizione di scroll resta invariata alla chiusura. */
html.agenda-open,
body.agenda-open {
  overflow: hidden;
}

/* ---------- Modale ---------- */
.agenda-modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: none;
  padding: 20px;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.agenda-modal.is-open {
  display: block;
}

.agenda-modal__backdrop {
  position: fixed;
  inset: 0;
  background: rgba(7, 19, 15, .72);
  backdrop-filter: blur(6px);
  animation: agendaFade .28s ease both;
}

.agenda-modal__dialog {
  position: relative;
  margin: auto;
  max-width: 720px;
  width: 100%;
  min-height: calc(100% - 40px);
  display: flex;
  align-items: center;
}

.agenda-modal__card {
  width: 100%;
  background: var(--ink);
  border: 1px solid var(--line);
  border-radius: 24px;
  padding: 26px 24px 28px;
  box-shadow: 0 40px 120px rgba(0, 0, 0, .55);
  animation: agendaPop .34s cubic-bezier(.2, .8, .2, 1) both;
}

@keyframes agendaFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes agendaPop {
  from { opacity: 0; transform: translateY(18px) scale(.985); }
  to   { opacity: 1; transform: none; }
}

body.nwom2026 .agenda-modal__close {
  position: absolute;
  top: -6px;
  right: -6px;
  width: 42px;
  height: 42px;
  margin: 0;
  padding: 0;
  border-radius: 999px;
  border: 1px solid var(--line);
  background: var(--bg);
  color: var(--cream);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 20px;
  font-weight: 700;
  line-height: 1;
  text-transform: none;
  box-shadow: none;
  cursor: pointer;
  display: grid;
  place-items: center;
  transition: background .2s ease, color .2s ease;
}

/* Rollover bianco (crema) con la X scura, come nel mock. */
body.nwom2026 .agenda-modal__close:hover,
body.nwom2026 .agenda-modal__close:focus-visible {
  background: var(--cream);
  color: var(--ink);
  border-color: var(--cream);
}

body.nwom2026 .agenda-modal__close:focus-visible {
  outline: 2px solid var(--lime);
  outline-offset: 2px;
}

.agenda-head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px 14px;
  margin-bottom: 6px;
  padding-right: 44px;
}

.agenda-head .kicker {
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--lime);
  margin: 0;
}

/* Come per h1/h2: la typography globale del tema/Elementor sovrascriverebbe
   font, dimensione e margini del titolo della modale. */
body.nwom2026 .agenda-modal h3 {
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  color: var(--cream);
  text-align: left;
  margin: 0;
  padding: 0;
  font-size: clamp(26px, 5vw, 34px);
  font-weight: 900;
  line-height: 1.02;
  letter-spacing: -.01em;
  text-transform: lowercase;
}

.agenda-list {
  list-style: none;
  margin: 22px 0 0;
  padding: 0;
}

.agenda-list li {
  display: grid;
  grid-template-columns: 78px 1fr;
  gap: 0 18px;
  padding: 16px 0;
  border-top: 1px solid rgba(244, 234, 214, .14);
}

.agenda-list li:first-child {
  border-top: 0;
  padding-top: 4px;
}

.agenda-list .t {
  font-size: 19px;
  font-weight: 900;
  letter-spacing: .01em;
  font-variant-numeric: tabular-nums;
}

/* Evidenziatore sul titolo: essendo un elemento inline, ogni riga si porta
   dietro la propria banda (background + spread di 4px dell'ombra), quindi la
   banda e' alta circa 1.15em + 8px. Con line-height 1.3 le righe erano piu'
   vicine dell'altezza della banda e su mobile, dove i titoli vanno a capo, le
   bande si sovrapponevano creando la fascia piu' scura. Il line-height qui
   sotto tiene le righe piu' distanti della banda. */
.agenda-list .title {
  display: inline;
  font-size: 17px;
  font-weight: 800;
  line-height: 1.85;
  background: rgba(1, 171, 170, .32);
  box-shadow: 0 0 0 4px rgba(1, 171, 170, .32);
}

.agenda-list .speakers {
  margin: 12px 0 0;
  font-size: 14px;
  line-height: 1.55;
  color: rgba(244, 234, 214, .86);
}

.agenda-list .speakers b {
  color: var(--lime);
  font-weight: 800;
}

.agenda-list .extra {
  margin: 12px 0 0;
  font-size: 14px;
  font-weight: 800;
  color: var(--cream);
}

.agenda-list .extra em {
  color: var(--lime);
  font-style: normal;
}

.agenda-foot {
  margin-top: 22px;
  padding-top: 16px;
  border-top: 1px solid rgba(244, 234, 214, .14);
  font-size: 14px;
}

.agenda-foot .host {
  margin: 0;
  color: rgba(244, 234, 214, .82);
}

.agenda-foot .host b {
  color: var(--lime);
  font-weight: 800;
}

body.nwom2026 .agenda-foot .cta {
  display: inline-flex;
  align-items: center;
  margin-top: 18px;
  padding: 13px 20px;
  border: 0;
  border-radius: 999px;
  background: var(--lime);
  color: var(--ink);
  text-decoration: none;
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-weight: 900;
  font-size: 14px;
  text-transform: none;
  box-shadow: none;
}

body.nwom2026 .agenda-foot .cta:hover {
  background: var(--lime);
  color: var(--ink);
  filter: brightness(1.05);
}

@media (max-width: 560px) {
  .agenda-modal {
    padding: 12px;
  }

  .agenda-modal__card {
    padding: 22px 18px 24px;
    border-radius: 20px;
  }

  body.nwom2026 .agenda-modal__close {
    position: sticky;
    top: 8px;
    right: 8px;
    float: right;
    margin-left: 12px;
  }

  .agenda-head {
    padding-right: 0;
  }

  .agenda-list li {
    grid-template-columns: 1fr;
    gap: 6px;
  }

  .agenda-list .t {
    color: var(--lime);
    font-size: 15px;
    letter-spacing: .06em;
  }
}

@media (prefers-reduced-motion: reduce) {
  .agenda-modal__backdrop,
  .agenda-modal__card {
    animation: none;
  }

  body.nwom2026 .agenda-trigger {
    transition: none;
  }
}
