/**
 * Carosello recensioni — replica di `paradise-reviews/assets/css/carousel.css` v1.1.0.
 *
 * Origine dei valori (nessuno è stato inventato o ritoccato):
 *   research/assets/plugins__paradise-reviews__assets__css__carousel.css
 *     → tutto il blocco "PLUGIN" qui sotto è quel file, regola per regola.
 *   research/assets/uploads__elementor__css__post-1064.css   (home, pagina 1064)
 *     → container f40297d: --margin 50px 0; --padding 0 20px sotto 1366px
 *     → heading dd3e70f:  Poppins 600 50px, colore var(--e-global-color-primary) = #692A98,
 *                          text-align:center; 40px ≤1024px; 35px ≤767px
 *     → text-editor 16ce32c (il wrapper del carosello): Montserrat 500 15px #777777,
 *                          text-align:center  ← è da qui che sulla home le card sono centrate
 *   research/assets/uploads__elementor__css__post-1253.css   (/testimonianze/, pagina 1253)
 *     → container 8cbc9fd: --border-radius 20px; --padding 20px; background-color #00BF630D
 *     → text-editor 5d26899: text-align:start  ← su /testimonianze/ le card sono allineate a sinistra
 *     → h1 2036cd0: Poppins 600 60px #692A98; 50px ≤1024px; 40px ≤767px
 *   research/assets/uploads__elementor__css__post-6.css      (kit Elementor)
 *     → --e-global-color-primary:#692A98 ; --widgets-spacing:20px 20px (gap fra titolo e carosello)
 *     → --container-max-width:1350px
 *
 * Unica aggiunta rispetto all'originale: gli stati `:focus-visible` (il plugin non ne aveva
 * nessuno e il carosello va usato da tastiera). Sono additivi — non cambiano nulla per chi
 * usa il mouse — e non toccano né colori né dimensioni del brand.
 * Non è replicata la sola `.screen-reader-text` del plugin: `assets/css/main.css` la
 * definisce già in modo equivalente e un doppione la sovrascriverebbe senza motivo.
 */

/* =========================================================================
 * PLUGIN — paradise-reviews/assets/css/carousel.css, valori identici
 * ====================================================================== */

.phr-carousel {
  --phr-primary: #692A98;
  --phr-primary-hover: #561f80;
  --phr-indigo: #242566;
  --phr-lavender: #B195E3;
  --phr-green: #61CE70;
  --phr-radius: 10px;
  position: relative;
  max-width: 1350px;
  margin: 0 auto;
  padding: 0 46px;
  box-sizing: border-box;
}

.phr-carousel * {
  box-sizing: border-box;
}

.phr-viewport {
  overflow: hidden;
}

.phr-track {
  display: flex;
  margin: 0;
  padding: 16px 0;
  list-style: none;
  transition: transform .5s ease;
  will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
  .phr-track {
    transition: none;
  }
}

.phr-slide {
  flex: 0 0 100%;
  max-width: 100%;
  padding: 0 12px;
  display: flex;
}

.phr-card {
  display: flex;
  flex-direction: column;
  width: 100%;
  background: #fff;
  border: 1px solid #ece8f5;
  border-radius: var(--phr-radius);
  box-shadow: 0 8px 24px rgba(36, 37, 102, .08);
  padding: 22px 22px 18px;
}

.phr-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}

.phr-badge {
  display: inline-flex;
  width: 26px;
  height: 26px;
  color: var(--phr-lavender);
}

.phr-badge svg {
  width: 100%;
  height: 100%;
  display: block;
}

.phr-stars {
  display: inline-flex;
  gap: 2px;
}

.phr-star {
  width: 18px;
  height: 18px;
  display: inline-flex;
  color: #d9d4e6;
}

.phr-star.is-on {
  color: #f5b50a;
}

.phr-star svg {
  width: 100%;
  height: 100%;
  fill: currentColor;
}

.phr-title {
  margin: 0 0 6px;
  font-size: 16px;
  line-height: 1.3;
  color: var(--phr-indigo);
  font-weight: 600;
}

.phr-text {
  color: #4a4a55;
  font-size: 14.5px;
  line-height: 1.6;
  display: -webkit-box;
  -webkit-line-clamp: 6;
  line-clamp: 6;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.phr-card.is-expanded .phr-text {
  -webkit-line-clamp: unset;
  line-clamp: unset;
  overflow: visible;
}

.phr-more {
  align-self: flex-start;
  margin: 6px 0 0;
  padding: 0;
  background: none;
  border: none;
  color: var(--phr-primary);
  font-weight: 600;
  font-size: 13.5px;
  cursor: pointer;
}

.phr-more:hover {
  color: var(--phr-primary-hover);
}

.phr-card-foot {
  margin-top: auto;
  padding-top: 14px;
}

.phr-author {
  display: flex;
  align-items: center;
  gap: 10px;
}

.phr-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  object-fit: cover;
  flex: 0 0 auto;
}

.phr-author-meta {
  display: flex;
  flex-direction: column;
  line-height: 1.3;
}

.phr-name {
  font-weight: 600;
  color: var(--phr-indigo);
  font-size: 14px;
}

.phr-date {
  color: #9a96a8;
  font-size: 12.5px;
}

.phr-link {
  display: inline-block;
  margin-top: 10px;
  color: var(--phr-primary);
  font-weight: 600;
  font-size: 13.5px;
  text-decoration: none;
}

.phr-link:hover {
  color: var(--phr-primary-hover);
  text-decoration: underline;
}

/* Controlli */
.phr-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 40px;
  border: none;
  border-radius: 50%;
  background: var(--phr-primary);
  color: #fff;
  font-size: 24px;
  line-height: 1;
  cursor: pointer;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 4px 12px rgba(105, 42, 152, .30);
  transition: background .2s;
}

.phr-nav:hover {
  background: var(--phr-primary-hover);
}

.phr-nav:disabled {
  opacity: .35;
  cursor: default;
}

.phr-prev {
  left: 0;
}

.phr-next {
  right: 0;
}

.phr-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 14px;
  flex-wrap: wrap;
}

.phr-dot {
  width: 10px;
  height: 10px;
  border: none;
  border-radius: 50%;
  background: var(--phr-lavender);
  cursor: pointer;
  padding: 0;
  transition: background .2s, transform .2s;
}

.phr-dot.is-active {
  background: var(--phr-primary);
  transform: scale(1.15);
}

/* Pulsanti "vedi tutte le recensioni" */
.phr-all-links {
  --phr-primary: #692A98;
  --phr-primary-hover: #561f80;
  --phr-indigo: #242566;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 14px;
  max-width: 1350px;
  margin: 18px auto;
  padding: 0 18px;
  box-sizing: border-box;
}

.phr-all-link {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 20px;
  border: 1.5px solid #e4e1f0;
  border-radius: 999px;
  background: #fff;
  color: var(--phr-indigo);
  font-weight: 600;
  font-size: 14px;
  line-height: 1.2;
  text-decoration: none;
  transition: border-color .2s, box-shadow .2s, transform .15s;
}

.phr-all-link:hover {
  border-color: var(--phr-primary);
  box-shadow: 0 6px 16px rgba(105, 42, 152, .16);
  transform: translateY(-1px);
  color: var(--phr-indigo);
}

.phr-all-icon {
  display: inline-flex;
  width: 20px;
  height: 20px;
}

.phr-all-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

@media (max-width: 639px) {
  .phr-carousel {
    padding: 0 18px;
  }

  .phr-nav {
    width: 34px;
    height: 34px;
    font-size: 20px;
  }

  .phr-all-link {
    font-size: 13px;
    padding: 9px 16px;
  }
}

/* =========================================================================
 * DOVE IL CSS DEL PLUGIN PERDE — la cascata reale del sito
 *
 * `carousel.css` non era l'ultima parola. Sul sito il carosello vive dentro un body con
 * classe `elementor-kit-6`, e `research/assets/uploads__elementor__css__post-6.css`
 * contiene:
 *     .elementor-kit-6 h3{color:var(--e-global-color-primary);
 *                         font-family:"Poppins", Sans-serif;font-size:26px;font-weight:600;}
 * con --e-global-color-primary:#692A98. Quella è specificità (0,1,1) e batte la classe
 * singola `.phr-title` (0,1,0) del plugin.
 *
 * Quindi il titolo delle card, sul sito reale, NON è 16px #242566 come dichiara il
 * plugin: è Poppins 600 26px #692A98. Si replica quello che si vede, non quello che il
 * foglio del plugin chiedeva. `line-height:1.3` e `margin:0 0 6px` restano suoi: il kit
 * non li tocca, e nel tema `h1..h6` di main.css è specificità (0,0,1), che perde.
 *
 * Il peso 600 coincide fra le due regole, quindi non serve ripeterlo.
 * ====================================================================== */

.phr-title {
  font-family: var(--ph-font-heading, "Poppins", sans-serif);
  font-size: 26px;
  color: #692A98;
}

/* =========================================================================
 * CORNICE DELLA SEZIONE — non è del plugin, è il container Elementor che lo
 * ospitava. Valori da post-1064.css (home) e post-1253.css (/testimonianze/).
 * ====================================================================== */

.phr-sezione {
  /* container f40297d: --margin-top/bottom:50px, laterali 0 */
  margin: 50px 0;
}

.phr-sezione__inner {
  /* e-con-boxed + --container-max-width:1350px del kit */
  max-width: 1350px;
  margin-inline: auto;
  /* container 37212b5: --display:flex, gap dai --widgets-spacing:20px 20px del kit */
  display: flex;
  flex-direction: column;
  gap: 20px;
}

@media (max-width: 1366px) {
  /* post-1064.css @media(max-width:1366px): f40297d --padding-left/right:20px */
  .phr-sezione {
    padding-inline: 20px;
  }
}

.phr-sezione__titolo {
  /* heading dd3e70f */
  margin: 0;
  font-family: var(--ph-font-heading, "Poppins", sans-serif);
  font-size: 50px;
  font-weight: 600;
  line-height: 1.2;
  color: #692A98;
  text-align: center;
}

@media (max-width: 1024px) {
  .phr-sezione__titolo {
    font-size: 40px;
  }
}

@media (max-width: 767px) {
  .phr-sezione__titolo {
    font-size: 35px;
  }
}

/*
 * Il contesto decide allineamento e tipografia ereditati dalle card: sull'originale
 * arrivavano dal widget text-editor che conteneva lo shortcode, e i due widget erano
 * configurati in modo diverso. Replicare la differenza, non uniformarla.
 */

/* home, widget 16ce32c */
.phr-contesto--home {
  font-family: var(--ph-font-body, "Montserrat", sans-serif);
  font-size: 15px;
  font-weight: 500;
  color: #777777;
  text-align: center;
}

/* /testimonianze/, widget 5d26899 */
.phr-contesto--pagina {
  text-align: start;
}

/* container 8cbc9fd: il riquadro verde chiaro attorno al carosello su /testimonianze/ */
.phr-riquadro {
  background-color: #00BF630D;
  border-radius: 20px;
  padding: 20px;
}

/*
 * Il monospazio delle card.
 *
 * Non è una scelta del plugin: sull'originale lo shortcode è incollato dentro un
 * `<p><code class="phr-code">` di un widget text-editor, e
 * `themes__hello-elementor__assets__css__reset.css` contiene
 *     code,kbd,samp{font-family:monospace,monospace;font-size:1em}
 *
 * A prima vista il `<code>` non dovrebbe contare: `<p>` non può contenere `<section>`,
 * quindi il parser chiude il paragrafo — e con lui il `<code>` — appena incontra il
 * carosello. Ma `code` è un *formatting element*: resta nella lista degli elementi di
 * formattazione attivi e viene ricostruito dentro la `<section>` al primo carattere che
 * segue. Verificato eseguendo l'algoritmo di parsing HTML5 (html5lib) sul markup reale:
 * l'albero che ne esce è
 *     section.phr-carousel > code.phr-code > div.phr-viewport, button.phr-nav ×2,
 *                                            div.phr-dots, div.phr-live
 * più un secondo code.phr-code che avvolge div.phr-all-links.
 *
 * Nessuna regola più specifica annulla il monospazio (verificato su tutti i 157 file in
 * research/assets/ e sugli <style> inline delle pagine), e nessuna delle classi del
 * carosello — .phr-text, .phr-name, .phr-date, .phr-link, .phr-all-link, .phr-more —
 * dichiara un font-family proprio; i `button` lo ereditano perché il reset di
 * hello-elementor ha `button,input,optgroup,select,textarea{font-family:inherit}`.
 * L'unica eccezione è .phr-title, che è un `h3` e prende Poppins direttamente dal kit
 * (regola qui sopra). Risultato: su nuovo.paradisehome.it tutto il resto del carosello è
 * servito in monospazio, sia in home sia su /testimonianze/.
 *
 * È un effetto collaterale di un errore di redazione, ma è l'aspetto reale del sito da
 * replicare, non un difetto da correggere di iniziativa: sostituirlo con Montserrat
 * sarebbe un cambio di resa tipografica che nessuno ha chiesto. L'HTML non valido non
 * viene replicato (vedi template-parts/recensioni-carosello.php), il suo unico effetto
 * visibile sì.
 *
 * Per togliere il monospazio basta una riga: `add_filter( 'ph_recensioni_monospazio',
 * '__return_false' );` — il template smette di mettere la classe `phr-code`.
 */
.phr-code {
  font-family: monospace, monospace;
  font-size: 1em;
}

/* =========================================================================
 * AGGIUNTA: focus da tastiera. Il plugin non aveva stati di focus — qui servono
 * perché frecce, puntini e "leggi tutto" sono l'unico modo di usare il carosello
 * senza mouse. Nessun colore o dimensione del brand è stato modificato.
 * ====================================================================== */

.phr-nav:focus-visible {
  outline: 2px solid #fff;
  outline-offset: -5px;
  box-shadow: 0 4px 12px rgba(105, 42, 152, .30), 0 0 0 3px rgba(105, 42, 152, .45);
}

.phr-dot:focus-visible {
  outline: 2px solid #692A98;
  outline-offset: 3px;
}

.phr-more:focus-visible,
.phr-link:focus-visible,
.phr-all-link:focus-visible {
  outline: 2px solid #692A98;
  outline-offset: 2px;
}

/* =========================================================================
 * DIFESA DENTRO `.entry-content`
 *
 * Il carosello arriva anche dal contenuto, via shortcode `[paradise-reviews]`: è la via
 * per cui compariva sull'originale, e i contenuti importati possono ancora contenerlo.
 * Lì `main.css` ha regole di tipografia editoriale a specificità (0,1,1) e (0,1,2) —
 * `.entry-content ul{margin-block:1em 1.4em;padding-left:1.5em}`,
 * `.entry-content li + li{margin-top:.45em}`, `.entry-content h3{margin-top:1.8em}`,
 * `.entry-content img{border-radius:var(--ph-radius-lg)}` — che batterebbero le classi
 * singole del plugin e sfascerebbero la pista: schede staccate, titoli spinti in basso,
 * elenco rientrato.
 *
 * Sull'originale il problema non esisteva (il carosello stava in un widget Elementor,
 * senza tipografia editoriale intorno). Queste righe non aggiungono stile: ripetono i
 * valori del plugin a specificità sufficiente perché vincano di nuovo.
 * ====================================================================== */

.entry-content .phr-track {
  margin: 0;
  padding: 16px 0;
}

.entry-content .phr-slide,
.entry-content .phr-slide + .phr-slide {
  margin: 0;
  padding: 0 12px;
}

.entry-content .phr-title {
  margin: 0 0 6px;
}

.entry-content .phr-avatar {
  border-radius: 50%;
}
