/* Calendario delle partenze (/departures): testata scura, filtri, striscia dei mesi, griglia mensile (da 820 px) con pastiglie per disponibilità,
   pannello del giorno, elenco per mese (telefono). Nessun elemento fixed/sticky più largo dell'86% dello schermo. */
.dhero { position: relative; isolation: isolate; overflow: hidden; background: var(--navy-900); color: #fff; border-radius: 0 0 var(--r-xl) var(--r-xl); }
.dhero__bg { position: absolute; inset: 0; z-index: -2; background: radial-gradient(120% 90% at 85% 0%, var(--navy-700), var(--navy-900) 55%, var(--navy-950)); }
.dhero__bg img, .dhero__bg .ph { width: 100%; height: 100%; object-fit: cover; opacity: .6; }
.dhero::after { content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(7, 24, 43, .8), rgba(7, 24, 43, .2)); }
.dhero__in { display: grid; gap: 14px; padding-block: 24px clamp(32px, 5vw, 60px); }
.dhero h1 { font-size: clamp(2.2rem, 1.3rem + 3.6vw, 3.9rem); color: #fff; }
.dhero .eyebrow { color: var(--sun); }
.dhero .lead { max-width: 640px; color: rgba(255, 255, 255, .84); }
.dhero .breadcrumbs { color: rgba(255, 255, 255, .72); } .dhero .breadcrumbs li + li::before { color: rgba(255, 255, 255, .3); }
@media (hover: hover) { .dhero .breadcrumbs a:hover { color: #fff; } }
.dhero :focus-visible { outline-color: var(--sun); }
.dhero__stats { display: flex; flex-wrap: wrap; gap: 14px 40px; margin-top: 10px; }
.dhero__stats li { display: grid; gap: 2px; } .dhero__stats strong { font: 500 clamp(1.7rem, 1.2rem + 1.6vw, 2.3rem)/1 var(--font-display); color: var(--sun); } .dhero__stats span { font-size: .84rem; color: rgba(255, 255, 255, .78); }
.dsection { padding-top: clamp(20px, 3vw, 32px); padding-bottom: clamp(24px, 4vw, 40px); }

/* filtri */
.dfilters { display: grid; gap: 12px; padding: 14px 18px; margin-bottom: 22px; background: var(--white); border: 1px solid var(--line-2); border-radius: var(--r-lg); box-shadow: var(--shadow-sm); }
.dfilters__toggle { display: none; justify-self: start; }
.dfilters__fields { display: grid; gap: 12px 14px; grid-template-columns: minmax(0, 1fr); align-items: end; }
.dfilters__checks { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 4px 24px; } .dfilters__checks .check { min-height: 44px; align-items: center; }
.dfilters__act { grid-column: 1 / -1; display: flex; flex-wrap: wrap; gap: 8px; }
.js .dfilters__act .btn-dark { display: none; }
@media (max-width: 819px) { .js .dfilters__toggle { display: inline-flex; } .js .dfilters:not(.is-open) .dfilters__fields { display: none; } }
@media (min-width: 560px) { .dfilters__fields { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .dfilters__fields { grid-template-columns: repeat(4, minmax(0, 1fr)); } .dfilters__checks { grid-column: span 3; } .dfilters__act { grid-column: span 1; justify-content: flex-end; } }

/* striscia «partenze per mese» */
.mstrip { margin-bottom: 22px; }
.mstrip__cap { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 16px; margin-bottom: 10px; font-size: .92rem; }
.mstrip__list { display: flex; gap: 8px; overflow-x: auto; padding: 4px 2px 12px; scroll-snap-type: x proximity; scrollbar-width: thin; }
.mstrip__m { position: relative; display: grid; justify-items: center; align-content: start; gap: 3px; min-width: 66px; padding: 10px 8px 12px; border: 1.5px solid var(--line); border-radius: var(--r-md); background: var(--white); scroll-snap-align: start; transition: background-color .2s, border-color .2s; }
.mstrip__t { display: grid; justify-items: center; gap: 1px; font: 700 .72rem/1 var(--font-body); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); } .mstrip__t small { font-size: .66rem; letter-spacing: .04em; }
.mstrip__m b { font: 500 1.45rem/1 var(--font-display); color: var(--ink); }
.mstrip__bar { position: relative; display: block; width: 100%; height: 5px; margin-top: 3px; border-radius: 99px; background: var(--paper-2); overflow: hidden; } .mstrip__bar::after { content: ''; position: absolute; inset: 0 auto 0 0; width: var(--h); border-radius: 99px; background: var(--aegean-500); }
.mstrip__m.is-none { border-style: dashed; background: transparent; } .mstrip__m.is-none b { color: var(--muted); }
.mstrip__m.is-on { background: var(--navy-900); border-color: var(--navy-900); } .mstrip__m.is-on .mstrip__t { color: rgba(255, 255, 255, .72); } .mstrip__m.is-on b { color: #fff; } .mstrip__m.is-on .mstrip__bar { background: rgba(255, 255, 255, .22); } .mstrip__m.is-on .mstrip__bar::after { background: var(--sun); }
@media (hover: hover) { .mstrip__m:not(.is-on):hover { border-color: var(--navy-800); } }

/* barra del mese: frecce, titolo, salto diretto, vista */
.dnav { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; margin-bottom: 14px; }
.dnav__btn { display: grid; place-items: center; flex: none; width: 48px; height: 48px; border: 1.5px solid var(--line); border-radius: 50%; background: var(--white); color: var(--navy-900); transition: background-color .2s, border-color .2s; }
.dnav__btn.is-off { opacity: .35; pointer-events: none; }
@media (hover: hover) { .dnav__btn:not(.is-off):hover { border-color: var(--navy-800); background: var(--sea-50); } }
.dnav__title { flex: 1 1 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 12px; min-width: 0; font-size: clamp(1.55rem, 1.1rem + 1.6vw, 2.2rem); }
.dnav__title small { font: 650 .88rem/1.3 var(--font-body); color: var(--muted); letter-spacing: 0; }
.dnav__jump { order: 5; flex: 1 1 100%; } .dnav__jump .select { min-height: 48px; border-radius: 999px; padding: 0 44px 0 18px; font-weight: 650; }
.dview { display: none; padding: 4px; gap: 2px; background: var(--paper-2); border-radius: 999px; }
.dview__b { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; padding: 0 16px; border-radius: 999px; font-weight: 650; font-size: .9rem; color: var(--ink-2); }
.dview__b[aria-current='true'] { background: var(--navy-900); color: #fff; }
@media (min-width: 820px) { .dnav__jump { flex: 1 1 200px; } .dnav__jump .select { width: auto; min-width: 220px; } .dview { display: inline-flex; order: 6; } }
@media (min-width: 1100px) { .dnav__jump { order: 0; flex: none; } .dview { order: 0; } }
.dlegend { display: flex; flex-wrap: wrap; gap: 8px 22px; margin-bottom: 16px; font-size: .85rem; color: var(--ink-2); }
.dlegend li { display: inline-flex; align-items: center; gap: 8px; } .dlegend .pill { display: inline-block; width: 16px; height: 16px; padding: 0; border-radius: 5px; }
@media (max-width: 819px) { .dlegend { display: none; } }
.dempty { margin-bottom: 18px; } .dempty a { font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* pastiglie colorate per disponibilità (testi scuri sul colore pieno: contrasto AA) */
.pill { display: grid; gap: 0; padding: 3px 7px; border-radius: 8px; font-size: .7rem; line-height: 1.25; text-align: left; min-width: 0; }
.pill b { font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pill i { font-style: normal; font-weight: 600; }
.pill--ok { background: var(--olive-100); color: #1d5a3b; box-shadow: inset 3px 0 0 var(--olive); }
.pill--few { background: var(--terra-100); color: #8e2f19; box-shadow: inset 3px 0 0 var(--terra); }
.pill--out { background: var(--paper-2); color: var(--ink-2); box-shadow: inset 3px 0 0 #b5ac9b; }
.pill--more { background: transparent; box-shadow: none; padding: 0 4px; color: var(--ink-2); font-weight: 700; }

/* griglia mensile: solo da 820 px; sotto, elenco */
.dgrid { display: none; }
@media (min-width: 820px) {
  .dgrid { display: grid; gap: 20px; grid-template-columns: minmax(0, 1fr); align-items: start; }
  .dcal[data-view='list'] .dgrid { display: none; }
  .js .dcal:not([data-view='list']) .dlist { display: none; }
  .dcal:not([data-view='list']) .dlist .dlist__more { display: none; }
}
@media (min-width: 1180px) { .dgrid { grid-template-columns: minmax(0, 1fr) 372px; } }
.cal { overflow: hidden; background: var(--white); border: 1px solid var(--line-2); border-radius: var(--r-lg); box-shadow: var(--shadow-sm); }
.cal__wd, .cal__row { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal__wd { background: var(--paper-2); } .cal__wd > span { padding: 11px 6px; text-align: center; font: 700 .72rem/1 var(--font-body); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.cal__cell { position: relative; display: grid; align-content: start; gap: 5px; min-width: 0; min-height: 116px; padding: 7px; border-top: 1px solid var(--line-2); border-left: 1px solid var(--line-2); } .cal__cell:first-child { border-left: 0; }
.cal__cell.has-deps { padding: 0; cursor: pointer; }
.cal__day { display: grid; align-content: start; gap: 5px; min-height: 116px; padding: 7px; }
.cal__num { font: 650 .82rem/1 var(--font-body); color: var(--ink-2); }
.cal__cell.is-out { background: var(--paper); } .is-out .cal__num { color: #6f6a5f; }
.cal__cell.is-past .cal__num { color: #6f6a5f; }
.cal__cell.is-today .cal__num { display: inline-grid; place-items: center; justify-self: start; width: 24px; height: 24px; margin: -2px 0 0 -2px; border-radius: 50%; background: var(--navy-900); color: #fff; }
.cal__pills { display: grid; gap: 3px; min-width: 0; }
.cal__cell[aria-selected='true'] { background: var(--sea-50); box-shadow: inset 0 0 0 2px var(--aegean-500); }
.cal__cell:focus-visible { outline: 3px solid var(--aegean-500); outline-offset: -3px; border-radius: 0; }
@media (hover: hover) { .cal__cell.has-deps:hover { background: var(--sea-50); } }

/* pannello del giorno scelto */
.dpanel { display: grid; gap: 12px; padding: 18px; background: var(--white); border: 1px solid var(--line-2); border-radius: var(--r-lg); box-shadow: var(--shadow-md); scroll-margin-top: 8px; }
.dpanel[hidden] { display: none; }
.dpanel__t { font-size: 1.3rem; line-height: 1.2; } .dpanel__list { display: grid; gap: 12px; }
@media (min-width: 1180px) { .dpanel { position: sticky; top: calc(var(--header-space) + 8px); max-height: calc(100svh - var(--header-space) - 24px); overflow: auto; } }
.dpanel .dep { grid-template-columns: 78px minmax(0, 1fr); }
.dpanel .dep__date { border-radius: var(--r-lg) 0 0 0; padding-inline: 4px; } .dpanel .dep__date strong { font-size: 2.1rem; }
.dpanel .dep__side { grid-column: 1 / -1; grid-template-columns: 1fr auto; justify-items: stretch; align-items: center; text-align: left; padding: 12px 16px 16px; border-top: 1px dashed var(--line); }
.dpanel .dep__price { justify-items: start; text-align: left; } .dpanel .dep__price .price { justify-content: flex-start; }
.dpanel .dep__title { font-size: 1.12rem; } .dpanel .dep__main { padding: 14px 16px; }

/* elenco per mese */
.dmonth + .dmonth { margin-top: 30px; }
.dmonth__h { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 14px; margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--line); font-size: clamp(1.4rem, 1.1rem + 1.2vw, 1.8rem); }
.dmonth__h small { font: 650 .86rem/1.3 var(--font-body); color: var(--muted); letter-spacing: 0; }
.dmonth__list { display: grid; gap: 14px; } .dmonth__none { color: var(--muted); }
@media (min-width: 1100px) { .dmonth__list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.dep__flags { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; }
.dep__price { display: grid; gap: 4px; justify-items: end; text-align: right; } .dep__price .price { justify-content: flex-end; } .dep__price .price strong { font-size: 1.5rem; }
@media (max-width: 719px) { .dep__price { justify-items: start; text-align: left; } .dep__price .price { justify-content: flex-start; } }
.dep--soldout .dep__date, .dep--closed .dep__date { background: var(--ink-2); }
.dep__title a { overflow-wrap: break-word; }
.dlist__more { display: flex; justify-content: center; margin-top: 26px; }
.dcal.is-loading { opacity: .5; pointer-events: none; transition: opacity .2s; }
.dfoot { display: flex; gap: 10px; align-items: flex-start; margin-top: 28px; font-size: .88rem; line-height: 1.5; } .dfoot .i { flex: none; margin-top: 2px; }

/* contrasto AA: testi piccoli su fondo tinto (le tinte del design system sono pensate per fondi pieni) */
.badge--red { color: #9a3a22; } .badge--green { color: #1d5a3b; } .seats--few { color: #a8412a; }
