/* ============================================================
   NTRA - Funzionalità attivabili (inc/features)
   Solo ciò che queste funzionalità aggiungono: bottoni, campi, card e
   colori vengono da style.css, ntra-shared-ui.css e ntra-user-area.css.
   ============================================================ */

/* ------------------------------------------------------------
   Messaggi con l'agenzia (Inbox)
   ------------------------------------------------------------ */
.ntra-conversations {margin: 0 0 24px;}
.ntra-conversations > h4 {margin: 0 0 10px;}
.ntra-conversation {margin: 0 0 10px; background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-conversation > summary {display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; padding: 10px 14px; cursor: pointer; list-style: none;}
.ntra-conversation > summary::-webkit-details-marker {display: none;}
.ntra-conversation > summary::after {content: "▾"; margin-left: auto; transition: transform 0.2s ease;}
.ntra-conversation[open] > summary::after {transform: rotate(180deg);}
.ntra-conversation > summary > span:not(.ntra-tab-badge) {color: var(--nta-text-muted); font-size: var(--nta-fs-small);}
.ntra-conversation-new > summary {color: var(--nta-teal-dark);}

ol.ntra-conversation-messages {display: flex; flex-direction: column; gap: 8px; max-height: 420px; margin: 0; padding: 4px 14px 12px; overflow-y: auto; list-style: none;}
.ntra-conversation-messages li.ntra-message {max-width: 82%; margin: 0; padding: 8px 12px; border: var(--nta-border); border-radius: 14px;}
.ntra-message p {margin: 0 0 4px; overflow-wrap: anywhere;}
.ntra-message small {color: var(--nta-text-muted); font-size: var(--nta-fs-xs);}
.ntra-message.is-agenzia {align-self: flex-start; background: rgba(113, 188, 198, 0.2); border-bottom-left-radius: 4px;}
.ntra-message.is-cliente {align-self: flex-end; background: rgba(255, 235, 159, 0.55); border-bottom-right-radius: 4px;}
.ntra-message-form {display: grid; gap: 6px; padding: 0 14px 14px;}
.ntra-message-form .bottone {justify-self: start;}

.ntra-whatsapp-optin {margin: 0 0 16px; padding: 10px 14px; background: var(--nta-cream); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-whatsapp-optin p {display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin: 0;}

/* ------------------------------------------------------------
   Il mio viaggio
   ------------------------------------------------------------ */
.ntra-my-trip {margin: 0 0 24px; padding: 16px; background: var(--nta-cream); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-my-trip + .ntra-my-trip {margin-top: 16px;}
.ntra-my-trip-header {display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px;}
.ntra-my-trip-header h4 {margin: 0;}
.ntra-my-trip-header h4 a {display: inline-block; padding: 4px 0; color: var(--nta-black);}
.ntra-my-trip-countdown {display: flex; flex-direction: column; align-items: center; min-width: 96px; padding: 8px 14px; background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius); box-shadow: var(--nta-control-shadow); text-align: center;}
.ntra-my-trip-countdown strong {font-family: var(--nta-font-title); font-size: var(--nta-fs-h2); line-height: 1.1;}
.ntra-my-trip-countdown span {font-size: var(--nta-fs-xs); font-weight: 700;}
.ntra-my-trip-grid {display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 12px;}
.ntra-my-trip-grid > * {min-width: 0;} /* un contenuto largo (tabella meteo) scorre dentro il suo riquadro invece di allargare la pagina */
.ntra-my-trip-box {display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 12px 14px; background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-my-trip-box h5 {margin: 0 0 2px; font-size: var(--nta-fs-h5);}
.ntra-my-trip-box > .ntra-trip-feedback-bar {flex: none; align-self: stretch;}
.ntra-dashboard .ntra-my-trip-box p {margin: 0;}
.ntra-my-trip-box .bottone {margin: 4px 0 0;}
.ntra-my-trip-itinerary ol {margin: 0; padding-left: 20px;}
.ntra-my-trip-itinerary li {margin: 0 0 6px;}
.ntra-my-trip-itinerary li span {display: block; color: var(--nta-text-muted); font-size: var(--nta-fs-small);}
ul.ntra-my-trip-checks, ul.ntra-my-trip-links {margin: 0; padding: 0; list-style: none;}
.ntra-my-trip-checks li, .ntra-my-trip-links li {margin: 0 0 4px;}
.ntra-my-trip-checks small {color: var(--nta-text-muted);}
.ntra-my-trip-itinerary li small.ntra-my-trip-step-meta {display: block; color: var(--nta-teal-dark); font-size: var(--nta-fs-xs); font-weight: 700;}
.ntra-my-trip-itinerary li span.ntra-my-trip-step-items {color: var(--nta-text);}
ul.ntra-my-trip-list {display: grid; gap: 8px; margin: 0; padding: 0; list-style: none; align-self: stretch;}
.ntra-my-trip-list li {padding: 0 0 8px; border-bottom: 1.5px dashed var(--nta-border-color);}
.ntra-my-trip-list li:last-child {padding-bottom: 0; border-bottom: 0;}
.ntra-my-trip-list strong, .ntra-my-trip-list span, .ntra-my-trip-list small {display: block;}
.ntra-my-trip-list span {font-size: var(--nta-fs-small);}
.ntra-my-trip-list small {color: var(--nta-text-muted); font-size: var(--nta-fs-xs);}

/* ------------------------------------------------------------
   Stato della prenotazione a tappe (scheda della prenotazione)
   ------------------------------------------------------------ */
ol.ntra-timeline {display: flex; max-width: 640px; margin: 0; padding: 0; list-style: none;}
.ntra-timeline li {position: relative; flex: 1 1 0; display: flex; flex-direction: column; align-items: center; gap: 4px; min-width: 0; margin: 0; text-align: center;}
.ntra-timeline li::before {content: ""; position: absolute; top: 10px; right: 50%; left: -50%; height: 3px; background: var(--nta-disabled);}
.ntra-timeline li:first-child::before {display: none;}
.ntra-timeline li.is-done::before, .ntra-timeline li.is-current::before {background: var(--nta-teal-dark);}
.ntra-timeline-dot {position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; color: var(--nta-white); background: var(--nta-white); border: 2px solid var(--nta-disabled); border-radius: 50%; font-size: var(--nta-fs-xs); font-weight: 700; box-sizing: border-box;}
.ntra-timeline li.is-done .ntra-timeline-dot {background: var(--nta-teal-dark); border-color: var(--nta-teal-dark);}
.ntra-timeline li.is-current .ntra-timeline-dot {background: var(--nta-gold); border-color: var(--nta-black); box-shadow: 0 0 0 3px rgba(255, 235, 159, 0.8);}
.ntra-timeline-label {color: var(--nta-text-muted); font-size: var(--nta-fs-xs); line-height: 1.25;}
.ntra-timeline li.is-done .ntra-timeline-label {color: var(--nta-text);}
.ntra-timeline li.is-current .ntra-timeline-label {color: var(--nta-black); font-weight: 700;}

/* ------------------------------------------------------------
   Documento richiesto: caricamento dalla card dell'azione
   ------------------------------------------------------------ */
.ntra-action-upload {display: grid; gap: 6px; margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--nta-disabled);}
.ntra-action-upload .bottone {justify-self: start;}

/* ------------------------------------------------------------
   Catalogo: filtri e Travel DNA
   ------------------------------------------------------------ */
.ntra-catalog-filters {display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px 12px; max-width: 890px; margin: 0 auto 8px; padding: 14px 16px; background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius); text-align: left;}
.ntra-catalog-filter {display: grid; gap: 4px; flex: 1 1 150px; min-width: 0;}
.ntra-catalog-filter--q {flex-basis: 200px;}
.ntra-catalog-filter .ntra-field-input {width: 100%; height: 40px; margin: 0; box-sizing: border-box;}
.ntra-catalog-filter-check {display: inline-flex; align-items: center; gap: 6px; min-height: 40px; font-size: var(--nta-fs-small); font-weight: 700;}
.ntra-catalog-filter-actions {display: flex; align-items: center; gap: 12px;}
.ntra-catalog-filter-actions .bottone {margin: 0;}
.ntra-catalog-dna-note {max-width: 890px; margin: 0 auto 8px; font-size: var(--nta-fs-small);}

.ntra-trip-card {position: relative;}
.ntra-dna-badge {position: absolute; z-index: 2; top: 10px; left: 10px; max-width: calc(100% - 64px); padding: 4px 8px; color: var(--nta-black); background: var(--nta-gold); border: var(--nta-border); border-radius: 799px; font-size: var(--nta-fs-xs); font-weight: 700; line-height: 1.2; text-align: left;}

/* ------------------------------------------------------------
   Preferiti (cuore)
   ------------------------------------------------------------ */
.ntra-fav-form {position: absolute; z-index: 3; top: 8px; right: 8px; margin: 0;}
.ntra-trip-card:has(> .ntra-fav-form, > a.ntra-fav) .ntra-trip-card-badge {top: 54px;} /* "Sold out"/"Ultimi posti" sotto al cuore */
.ntra-fav {display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; padding: 0; color: var(--nta-coral-dark); background: var(--nta-white); border: var(--nta-border); border-radius: 50%; box-shadow: var(--nta-control-shadow); font-size: 1.35rem; line-height: 1; cursor: pointer; text-decoration: none;}
.ntra-trip-card > a.ntra-fav {position: absolute; z-index: 3; top: 8px; right: 8px;}
.ntra-fav:hover, .ntra-fav:focus-visible {color: var(--nta-coral); transform: scale(1.06);}
.ntra-fav[aria-pressed="true"] {color: var(--nta-white); background: var(--nta-coral-dark);}
.ntra-fav:disabled {opacity: 0.6;}
.ntra-fav-form--wide {margin: 10px 0 0;}
.ntra-fav--wide {gap: 6px; width: auto; height: auto; min-height: 40px; padding: 6px 14px; border-radius: 799px; font-size: var(--nta-fs-small); font-weight: 700;}
.ntra-fav--wide .ntra-fav-icon {font-size: 1.15rem;}
a.ntra-fav--wide {margin-top: 10px;}

.ntra-dashboard .ntra-trip-card.ntra-card {padding: 0; text-align: center;}
.ntra-dashboard .ntra-trip-card.ntra-card img {width: 100%;}
.ntra-dashboard #preferiti .ntra-trips-grid {justify-content: flex-start; margin: 16px 0 24px;}
ul.ntra-fav-past {margin: 0; padding-left: 20px;}
.ntra-fav-past li {margin: 0 0 6px;}
.ntra-fav-past small {color: var(--nta-text-muted);}

/* ------------------------------------------------------------
   Lista d'attesa
   ------------------------------------------------------------ */
.ntra-waitlist {margin-top: 8px; font-size: var(--nta-fs-small);}
.ntra-waitlist form {display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 4px 10px; margin: 0;}
.ntra-waitlist .bottone {margin: 0;}
.ntra-waitlist-status {font-weight: 700;}
.ntra-waitlist-notice {margin: 0 0 6px; padding: 6px 10px; background: var(--nta-teal); border: var(--nta-border); border-radius: var(--nta-field-radius); font-weight: 700;}
.ntra-trip-ticket .ntra-waitlist form {justify-content: flex-start;}

/* ------------------------------------------------------------
   Porta un amico (scheda Travel DNA)
   ------------------------------------------------------------ */
.ntra-referral {margin-top: 24px; padding: 16px; background: var(--nta-cream); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-referral h4 {margin: 0 0 6px;}
.ntra-referral-link {display: flex; flex-wrap: wrap; gap: 8px; margin: 10px 0 0;}
.ntra-referral-link .ntra-field-input {flex: 1 1 220px; min-width: 0; margin: 0;}
.ntra-referral-link .bottone {margin: 0;}
.ntra-referral-count {margin: 10px 0 0;}

/* ------------------------------------------------------------
   Album foto (pagina del viaggio)
   ------------------------------------------------------------ */
.ntra-album {margin-top: 24px; text-align: left;}
ul.ntra-album-grid {display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 8px; margin: 12px 0; padding: 0; list-style: none;}
.ntra-album-grid li {margin: 0;}
.ntra-album-grid a {display: block; aspect-ratio: 1; overflow: hidden; border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-album.ntra-card .ntra-album-grid img {display: block; width: 100%; height: 100%; margin: 0; object-fit: cover; transition: transform 0.3s ease;}
.ntra-album-grid a:hover img {transform: scale(1.05);}
.ntra-album-upload {margin-top: 12px;}
.ntra-album-upload > summary {display: inline-flex; list-style: none; cursor: pointer;}
.ntra-album-upload > summary::-webkit-details-marker {display: none;}
.ntra-album-upload form {display: grid; gap: 8px; max-width: 520px; margin-top: 12px;}
.ntra-album-upload form .bottone {justify-self: start; margin: 0;}
.ntra-album.ntra-card p {min-height: 0;}

.ntra-album-dialog {width: min(960px, calc(100vw - 32px)); max-height: calc(100vh - 32px); margin: auto; padding: 0; overflow: visible; color: var(--nta-white); background: transparent; border: 0;}
.ntra-album-dialog::backdrop {background: rgba(0, 0, 0, 0.85);}
.ntra-album-dialog figure {margin: 0; text-align: center;}
.ntra-album-dialog img {display: block; max-width: 100%; max-height: calc(100vh - 110px); margin: 0 auto; border-radius: var(--nta-field-radius);}
.ntra-album-dialog figcaption {margin-top: 8px; font-size: var(--nta-fs-small);}
.ntra-album-dialog form {position: absolute; top: 8px; right: 8px; z-index: 2; margin: 0;}
.ntra-album-close, .ntra-album-nav {display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; color: var(--nta-black); background: var(--nta-white); border: var(--nta-border); border-radius: 50%; font-size: 1.6rem; line-height: 1; cursor: pointer;}
.ntra-album-nav {position: absolute; top: 50%; z-index: 2; transform: translateY(-50%);}
.ntra-album-prev {left: 6px;}
.ntra-album-next {right: 6px;}

/* ------------------------------------------------------------
   Wizard: "riprendi da dove eri rimasto"
   ------------------------------------------------------------ */
.ntra-wizard-resume {display: flex; flex-wrap: wrap; align-items: center; gap: 4px 12px; margin: 0 0 12px; padding: 10px 14px; color: var(--nta-black); background: var(--nta-teal); border: var(--nta-border); border-radius: var(--nta-field-radius); font-size: var(--nta-fs-small); font-weight: 700; text-align: left;}

/* ------------------------------------------------------------
   Telefono e tablet verticale
   ------------------------------------------------------------ */
@media (max-width: 480px) {
    .ntra-conversation-messages li.ntra-message {max-width: 92%;}
    .ntra-my-trip {padding: 12px;}
    .ntra-catalog-filter {flex-basis: calc(50% - 6px);} /* due scelte per riga */
    .ntra-catalog-filter--q {flex-basis: 100%;}
    /* Sei tappe in 320px: si legge solo la tappa attuale (le altre restano per i lettori di schermo). */
    .ntra-timeline-dot {width: 18px; height: 18px;}
    .ntra-timeline li::before {top: 8px;}
    .ntra-timeline li:not(.is-current) .ntra-timeline-label {position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;}
    .ntra-timeline li.is-current .ntra-timeline-label {white-space: nowrap;}
    .ntra-timeline li.is-current:first-child .ntra-timeline-label {align-self: flex-start;}
    .ntra-timeline li.is-current:last-child .ntra-timeline-label {align-self: flex-end;}
}

/* ------------------------------------------------------------
   Calendario delle partenze ([ntra_calendario_partenze])
   Griglia del mese da 641px in su, elenco sotto i 640px.
   ------------------------------------------------------------ */
.ntra-calendar {padding: 0 0 24px;}
.ntra-calendar-head {display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 8px;}
.ntra-calendar-head h1 {margin: 0;}
.ntra-calendar-switch {margin: 0 0 16px; text-align: right;}
.ntra-calendar-nav {display: flex; align-items: center; justify-content: center; gap: 10px; margin: 16px 0;}
.ntra-calendar-nav .bottone {min-width: 44px; margin: 0;}
.ntra-calendar-nav .bottone::after {display: none;}
.ntra-calendar-month {margin: 0;}
.ntra-calendar-month select {min-width: 200px; text-transform: capitalize;}

.ntra-calendar-grid {display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px;}
.ntra-calendar-weekday {padding: 4px; font-size: var(--nta-fs-small); font-weight: 700; text-align: center; text-transform: uppercase;}
.ntra-calendar-day {display: flex; flex-direction: column; gap: 4px; min-height: 96px; padding: 6px; box-sizing: border-box; background: var(--nta-white); border: 1px solid var(--nta-disabled); border-radius: var(--nta-field-radius);}
.ntra-calendar-day.is-empty {background: transparent; border-color: transparent;}
.ntra-calendar-day.is-past {opacity: 0.55;}
.ntra-calendar-day.is-today {border: var(--nta-border);}
.ntra-calendar-day.has-trips {background: var(--nta-cream); border: var(--nta-border);}
.ntra-calendar-number {font-size: var(--nta-fs-small); font-weight: 700;}
.ntra-calendar-trip {display: block; padding: 3px 6px; color: var(--nta-black); background: var(--nta-gold); border: var(--nta-border); border-radius: 6px; font-size: var(--nta-fs-xs); line-height: 1.3; overflow-wrap: anywhere;}
.ntra-calendar-trip:hover {color: var(--nta-black); background: var(--nta-pink); text-decoration: none;}
.ntra-calendar-trip.is-sold-out {background: var(--nta-disabled); text-decoration: line-through;}

.ntra-calendar-list {display: none; margin: 0; padding: 0; list-style: none;}
.ntra-calendar-item {display: flex; align-items: center; gap: 12px; margin: 0 0 10px; padding: 10px 12px; background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-calendar-item.is-sold-out {opacity: 0.7;}
.ntra-calendar-date {display: flex; flex: 0 0 52px; flex-direction: column; align-items: center; padding: 6px 0; background: var(--nta-gold); border: var(--nta-border); border-radius: var(--nta-field-radius); line-height: 1.1;}
.ntra-calendar-date strong {color: inherit; font-size: var(--nta-fs-h3);}
.ntra-calendar-date small {font-size: var(--nta-fs-xs); text-transform: uppercase;}
.ntra-calendar-info {display: flex; flex-direction: column; gap: 2px; min-width: 0;}
.ntra-calendar-info a {color: var(--nta-black);}
.ntra-calendar-info small {color: var(--nta-text-muted); font-size: var(--nta-fs-small);}

@media (max-width: 640px) {
    .ntra-calendar-grid {display: none;}
    .ntra-calendar-list {display: block;}
    .ntra-calendar-month select {min-width: 0;}
    .ntra-calendar-switch {text-align: center;}
}

/* ------------------------------------------------------------
   Checklist pre-partenza (Il mio viaggio)
   ------------------------------------------------------------ */
.ntra-my-trip-box.ntra-checklist {grid-column: 1 / -1;} /* riga intera: le voci sono frasi */
.ntra-checklist-count {margin: 6px 0 10px; font-size: var(--nta-fs-small); font-weight: 700;}
.ntra-checklist form {margin: 0;}
ul.ntra-checklist-items {margin: 0 0 8px; padding: 0; list-style: none;}
.ntra-checklist-items li {display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; align-items: start; gap: 4px 10px; margin: 0; padding: 9px 0; border-top: 1px dashed var(--nta-disabled);}
.ntra-checklist-items li:first-child {border-top: 0;}
.ntra-checklist-items input {width: 20px; height: 20px; margin: 2px 0 0; accent-color: var(--nta-teal-dark); cursor: pointer;}
.ntra-checklist-items input:disabled {cursor: default;}
.ntra-checklist-items label {display: flex; flex-direction: column; gap: 2px; cursor: pointer; font-size: var(--nta-fs-body); line-height: 1.4;}
.ntra-checklist-items label span {font-weight: 500;}
.ntra-checklist-items small {color: var(--nta-text-muted); font-size: var(--nta-fs-xs); font-weight: 700; text-transform: uppercase;}
.ntra-checklist-items li.is-soon small {color: var(--nta-black);}
.ntra-checklist-items li.is-late small {color: var(--nta-coral-dark);}
.ntra-checklist-items li.is-done label span {color: var(--nta-text-muted); text-decoration: line-through;}
.ntra-checklist-link {padding: 2px 0; font-size: var(--nta-fs-small); white-space: nowrap;}

/* ------------------------------------------------------------
   Viaggiatori (dati dei compagni di viaggio)
   ------------------------------------------------------------ */
.ntra-travelers {margin: 0; padding: 16px; background: var(--nta-cream); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-travelers-head {display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 12px; margin-bottom: 12px;}
.ntra-travelers-status {padding: 4px 10px; background: var(--nta-white); border: var(--nta-border); border-radius: 999px; font-size: var(--nta-fs-small); font-weight: 700;}
.ntra-travelers-status.is-complete {background: var(--nta-teal);}
.ntra-travelers-locked {margin: 0 0 12px; padding: 8px 12px; background: var(--nta-white); border: 1px dashed var(--nta-black); border-radius: var(--nta-field-radius); font-size: var(--nta-fs-small);}
.ntra-traveler {min-width: 0; margin: 0 0 12px; padding: 12px 14px 14px; background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-traveler.is-complete {border-color: var(--nta-teal-dark);}
.ntra-traveler legend {padding: 0 6px; font-weight: 700;}
.ntra-traveler-badge {display: inline-block; margin-left: 4px; padding: 1px 8px; background: var(--nta-gold); border-radius: 999px; font-size: var(--nta-fs-xs); font-weight: 700; vertical-align: 1px;}
.ntra-traveler-badge.is-ok {color: var(--nta-white); background: var(--nta-teal-dark);}
.ntra-traveler-badge.is-todo {background: var(--nta-pink);}
.ntra-traveler-grid {display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 14px;}
.ntra-traveler-grid .ntra-field-input {width: 100%; box-sizing: border-box;}
.ntra-traveler-invite {margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--nta-disabled);}
.ntra-traveler-invite-row {display: flex; flex-wrap: wrap; align-items: center; gap: 8px;}
.ntra-traveler-invite-row .ntra-field-input {flex: 1 1 200px; margin: 0;}
.ntra-traveler-invite-row .bottone {margin: 0;}
.ntra-traveler-invite-page {max-width: 640px; margin: 0 auto; text-align: left;}
.ntra-traveler-invite-page h1 {font-size: var(--nta-fs-h2);}
.ntra-traveler-invite-form .bottone {margin-top: 12px;}
.ntra-travel-list-thanked {display: block; color: var(--nta-teal-dark); font-size: var(--nta-fs-xs); font-weight: 700;}

@media (max-width: 560px) {
    .ntra-travelers {padding: 12px;}
    .ntra-traveler-grid {grid-template-columns: minmax(0, 1fr);}
}

/* ------------------------------------------------------------
   Cartella di viaggio
   ------------------------------------------------------------ */
ul.ntra-folder-list {margin: 6px 0 0; padding: 0; list-style: none;}
.ntra-folder-list li {display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 10px; margin: 0; padding: 7px 0; border-top: 1px dashed var(--nta-disabled);}
.ntra-folder-list li:first-child {border-top: 0;}
.ntra-folder-list a {display: inline-flex; align-items: baseline; gap: 6px; padding: 2px 0;}
.ntra-folder-list small {color: var(--nta-text-muted); font-size: var(--nta-fs-xs);}

/* ------------------------------------------------------------
   Itinerario su mappa e meteo
   ------------------------------------------------------------ */
.ntra-trip-map {margin: 16px 0;}
.ntra-trip-map .bottone {margin: 0;}
.ntra-trip-map-canvas {height: 380px; margin-top: 8px; border: var(--nta-border); border-radius: var(--nta-block-radius); overflow: hidden;}
.ntra-trip-map-canvas:focus-visible {outline-offset: 3px;}
.leaflet-marker-icon.ntra-map-pin {display: flex; box-sizing: border-box; align-items: center; justify-content: center; background: var(--nta-gold); border: var(--nta-border); border-radius: 50%; box-shadow: var(--nta-control-shadow);}
.ntra-map-pin span {font-family: var(--nta-font-text); font-size: 13px; font-weight: 700; line-height: 1;}
.ntra-trip-map-canvas .leaflet-popup-content {font-family: var(--nta-font-text); font-size: var(--nta-fs-small);}

.ntra-weather {min-width: 0; max-width: 100%; margin: 16px 0 0;}
.ntra-weather-title {margin: 0 0 8px;}
.ntra-weather-scroll {overflow-x: auto; -webkit-overflow-scrolling: touch;}
.ntra-weather-table {width: 100%; border-collapse: collapse; font-size: var(--nta-fs-small);}
.ntra-weather-table th, .ntra-weather-table td {padding: 6px 8px; border-bottom: 1px dashed var(--nta-disabled); text-align: center; white-space: nowrap;}
.ntra-weather-table thead th {font-size: var(--nta-fs-xs); text-transform: uppercase;}
.ntra-weather-table tbody th {position: sticky; left: 0; z-index: 1; max-width: 150px; overflow: hidden; text-align: left; text-overflow: ellipsis; background: inherit;}
.ntra-weather {background: var(--nta-white);} /* la colonna fissa dei luoghi copre i giorni che scorrono sotto */
.ntra-my-trip-weather .ntra-weather, .ntra-my-trip-weather {background: var(--nta-white);}
.ntra-weather-icon {display: block; font-size: 1.4em; line-height: 1.2;}
.ntra-weather-temp strong {color: inherit;}
.ntra-weather-source {margin: 6px 0 0; color: var(--nta-text-muted); font-size: var(--nta-fs-xs);}
.ntra-my-trip-box.ntra-my-trip-weather {grid-column: 1 / -1;}
.ntra-my-trip-weather .ntra-weather {margin: 0;}

@media (max-width: 480px) {
    .ntra-trip-map-canvas {height: 300px;}
    .ntra-weather-table tbody th {min-width: 84px; max-width: 104px; white-space: normal; font-size: var(--nta-fs-xs); line-height: 1.3;}
    .ntra-weather-table th, .ntra-weather-table td {padding: 6px 5px;}
}

/* ------------------------------------------------------------
   App sul telefono e notifiche push (Account > Notifiche)
   ------------------------------------------------------------ */
.ntra-app-settings {display: grid; gap: 12px; margin: 0 0 16px;}
.ntra-app-settings [hidden], [data-ntra-app] [hidden] {display: none !important;} /* i bottoni hanno un display proprio: hidden deve vincere */
.ntra-app-box {padding: 12px 14px; background: var(--nta-cream); border: var(--nta-border); border-radius: var(--nta-field-radius);}
.ntra-app-box h4 {margin: 0 0 6px;}
.ntra-app-box p {margin: 0 0 8px;}
.ntra-app-box ol {margin: 0 0 4px; padding-left: 20px;}
.ntra-app-box ol li {margin: 4px 0;}
.ntra-app-installed {color: var(--nta-teal-dark); font-weight: 700;}
.ntra-app-actions {display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px;}
.ntra-app-actions .bottone {margin: 0;}

/* ------------------------------------------------------------
   v1.16 - Esperienza cliente (inc/features/ntra-feature-*.php)
   ------------------------------------------------------------ */
/* Ricevuta del bonifico */
.ntra-bk-pay-item .ntra-receipt-upload, .ntra-bk-pay-item .ntra-receipt-state { flex-basis: 100%; margin: 6px 0 0; }
.ntra-receipt-upload summary { cursor: pointer; font-weight: 700; color: var(--nta-link); }
.ntra-receipt-upload form { display: grid; gap: 6px; max-width: 420px; margin-top: 8px; }
.ntra-receipt-state { font-size: var(--nta-fs-small); }
.ntra-receipt-state.is-rejected { color: var(--nta-coral-dark); }
/* Condizioni e voci del preventivo */
.ntra-terms-box { display: grid; gap: 8px; margin: 0 0 10px; }
.ntra-terms-text summary { cursor: pointer; font-weight: 700; color: var(--nta-link); }
.ntra-terms-text > div { max-height: 260px; overflow: auto; margin-top: 6px; padding: 10px 12px; font-size: var(--nta-fs-small); background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius); }
.ntra-terms-accept { display: flex; gap: 8px; align-items: flex-start; font-weight: 600; }
.ntra-terms-accept input { margin-top: 3px; }
.ntra-quote-items { margin: 8px 0 12px; }
.ntra-quote-items summary { cursor: pointer; font-weight: 700; }
.ntra-quote-items ul { margin: 8px 0 0; padding: 0; list-style: none; }
.ntra-quote-items li { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 12px; padding: 6px 0; border-bottom: 1.5px dashed var(--nta-border-color); }
/* Oggi in viaggio */
.ntra-trip-today { margin: 0 0 14px; padding: 14px; background: var(--nta-gold); border: var(--nta-border); border-radius: var(--nta-block-radius); box-shadow: var(--nta-control-shadow); }
.ntra-trip-today-head h5 { margin: 0 0 10px; font-family: var(--nta-font-title); font-weight: normal; font-size: var(--nta-fs-h3); }
.ntra-trip-today-head .ntra-eyebrow { margin: 0; }
.ntra-trip-today-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(230px, 100%), 1fr)); gap: 10px; }
.ntra-trip-today-box { padding: 10px 12px; background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius); }
.ntra-trip-today-box h6 { margin: 0 0 6px; font-size: var(--nta-fs-small); font-weight: 700; }
.ntra-dashboard .ntra-trip-today-box p { margin: 0 0 6px; }
.ntra-trip-today-box.is-emergency { background: var(--nta-pink); }
.ntra-trip-today-sos { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
ul.ntra-trip-today-items { margin: 0; padding-left: 18px; font-size: var(--nta-fs-small); }
/* Condivisione */
.ntra-share-link { display: flex; gap: 6px; align-self: stretch; }
.ntra-share-link input { flex: 1 1 auto; min-width: 0; font-size: var(--nta-fs-xs); }
.ntra-share-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.ntra-share-actions .is-danger { color: var(--nta-coral-dark); }
.ntra-shared-trip h1 { margin-top: 0; }
.ntra-shared-trip-dates { font-weight: 700; }
/* Extra */
ul.ntra-extras-requests { margin: 0 0 12px; padding: 0; list-style: none; }
.ntra-extras-requests li { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; padding: 8px 0; border-bottom: 1.5px dashed var(--nta-border-color); }
.ntra-extras-requests li.is-accettato .ntra-status-pill { background: var(--nta-teal); }
.ntra-extras-requests li.is-rifiutato .ntra-status-pill { background: var(--nta-pink); }
.ntra-extras-requests small { flex-basis: 100%; color: var(--nta-text-muted); }
.ntra-extras-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(220px, 100%), 1fr)); gap: 10px; }
.ntra-extra-card { display: grid; gap: 6px; align-content: start; padding: 12px; background: var(--nta-white); border: var(--nta-border); border-radius: var(--nta-field-radius); }
.ntra-extra-card h5 { margin: 0; font-size: var(--nta-fs-h5); }
.ntra-dashboard .ntra-extra-card p { margin: 0; }
.ntra-extra-price { font-weight: 700; color: var(--nta-coral-dark); }
