/*
Theme Name: Cantieri BIM
Theme URI: https://cantieribim.it
Description: Child theme di Twenty Twenty-Five per il sito vetrina Cantieri BIM — digitalizzazione dei cantieri, modellazione BIM, rilievi e monitoraggio.
Author: Cantieri BIM
Template: twentytwentyfive
Version: 1.0.18
Requires at least: 6.7
Requires PHP: 7.4
Text Domain: cantieribim
*/

/* ==========================================================================
   Il grosso dello stile vive in theme.json (palette, tipografia, elementi).
   Qui solo i dettagli che theme.json non copre: card, logo, nav CTA, footer.
   ========================================================================== */

/* --- Barra header --- */
.cb-topbar {
  border-bottom: 1px solid var(--wp--preset--color--accent-5);
  padding: 0.85rem var(--wp--preset--spacing--30);
}

/* --- Footer: spaziature --- */
.cb-footer { padding: var(--wp--preset--spacing--70) var(--wp--preset--spacing--30) var(--wp--preset--spacing--30); }
.cb-footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.14);
  margin-top: var(--wp--preset--spacing--50);
  padding-top: var(--wp--preset--spacing--30);
}

/* --- Sezioni di pagina --- */
.cb-section { padding: var(--wp--preset--spacing--70) var(--wp--preset--spacing--30); }
.cb-section-compact { padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--30); }

/* --- Logo testuale header --- */
.cb-logo {
  display: inline-flex;
  align-items: center;
  gap: 0.55rem;
  font-weight: 800;
  font-size: 1.3rem;
  letter-spacing: 0.02em;
  text-decoration: none;
  color: var(--wp--preset--color--contrast);
}
.cb-logo:hover { color: var(--wp--preset--color--accent-1); }
.cb-logo .cb-logo-bim { color: var(--wp--preset--color--accent-1); }
.cb-logo svg { display: block; }

/* --- Tendina Servizi su desktop: larga, una riga per voce, hover leggibile
       (scoped >=782px per NON toccare il menu overlay mobile) --- */
@media (min-width: 782px) {
  .wp-block-navigation .wp-block-navigation__submenu-container {
    min-width: 300px;
    padding: 0.5rem;
    border: 1px solid var(--wp--preset--color--accent-5);
    border-radius: 10px;
    box-shadow: 0 14px 34px rgba(22, 40, 62, 0.14);
  }
  .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
    padding: 0.5rem 0.85rem;
    border-radius: 6px;
    white-space: nowrap;
  }
  .wp-block-navigation .wp-block-navigation__submenu-container .wp-block-navigation-item__content:hover {
    background: var(--wp--preset--color--accent-4);
    color: var(--wp--preset--color--accent-1);
  }
}

/* --- Menu mobile (overlay hamburger): chiaro ma ordinato — allineato a
       sinistra, gerarchia con rientri e separatori, wordmark in testa --- */
.wp-block-navigation__responsive-container.is-menu-open {
  padding: 1.25rem 1.4rem 2rem;
}
.wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-content {
  padding-top: 0.25rem;
}
.wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__responsive-container-content::before {
  content: "CANTIERI BIM";
  display: block;
  width: 100%;
  text-align: left;
  font-weight: 800;
  font-size: 1.25rem;
  letter-spacing: 0.02em;
  color: var(--wp--preset--color--contrast);
  padding: 0.35rem 0 1.1rem;
  padding-left: 36px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 26 26' fill='none'%3E%3Cpath d='M13 1 24 7v12l-11 6L2 19V7l11-6z' stroke='%23244E8A' stroke-width='1.8' stroke-linejoin='round'/%3E%3Cpath d='M2 7l11 6 11-6M13 13v12' stroke='%23244E8A' stroke-width='1.8' stroke-linejoin='round'/%3E%3C/svg%3E") left 0.3rem no-repeat;
  background-size: 26px 26px;
  border-bottom: 2px solid var(--wp--preset--color--accent-1);
  margin-bottom: 0.5rem;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
  align-items: flex-start !important;
  gap: 0;
  width: 100%;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
  width: 100%;
}
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  display: block;
  width: 100%;
  padding: 0.8rem 0.15rem;
  font-size: 1.1rem;
  font-weight: 600;
  border-bottom: 1px solid var(--wp--preset--color--accent-5);
}
/* sottovoci Servizi: piu' piccole, rientrate, con filo a sinistra */
.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
  width: calc(100% - 1rem);
  margin: 0.35rem 0 0.9rem 0.25rem;
  padding-left: 0.9rem;
  border-left: 2px solid var(--wp--preset--color--accent-5);
}
.wp-block-navigation__responsive-container.is-menu-open
  .wp-block-navigation__submenu-container .wp-block-navigation-item__content {
  font-size: 0.95rem;
  font-weight: 500;
  padding: 0.5rem 0.15rem;
  border-bottom: none;
  color: var(--wp--preset--color--accent-6);
}
/* CTA Contatti: bottone pieno a tutta larghezza in fondo */
.wp-block-navigation__responsive-container.is-menu-open .cb-nav-cta {
  margin-top: 1.1rem;
}
.wp-block-navigation__responsive-container.is-menu-open .cb-nav-cta a {
  display: block;
  text-align: center;
  border-bottom: none;
  padding: 0.85rem 1rem !important;
}

/* --- Voce di menu "Contatti" resa come bottone CTA --- */
.cb-nav-cta a {
  background: var(--wp--preset--color--accent-3);
  color: var(--wp--preset--color--base) !important;
  padding: 0.5rem 1.05rem !important;
  border-radius: 6px;
  font-weight: 600;
}
.cb-nav-cta a:hover { background: var(--wp--preset--color--accent-1); }

/* --- Card (servizi, progetti, metodo) --- */
.cb-card {
  background: var(--wp--preset--color--base);
  border: 1px solid var(--wp--preset--color--accent-5);
  border-radius: 12px;
  padding: 1.75rem !important;
  /* NIENTE height:100%: nei flex row lo stretch vale solo con height auto —
     un'altezza esplicita la annulla e le card tornano diseguali */
  box-sizing: border-box;
  transition: box-shadow 0.18s ease, transform 0.18s ease;
}
.cb-card:hover {
  box-shadow: 0 10px 28px rgba(22, 40, 62, 0.10);
  transform: translateY(-2px);
}
.cb-card h3 { margin-top: 0.9rem; }
.cb-card-icon img { width: 52px; height: 52px; }

/* --- Card sempre a pari altezza nella stessa fila --- */
.wp-block-columns:has(> .wp-block-column.cb-card) { align-items: stretch; }

/* --- Card compatte (griglia 10 servizi) --- */
.cb-card-compact { padding: 1.15rem !important; }
.cb-card-compact .cb-card-icon img { width: 38px; height: 38px; }
.cb-card-compact h3 {
  font-size: 1.02rem;
  line-height: 1.3;
  margin-top: 0.55rem;
  margin-bottom: 0;
}
.cb-card-compact h3 a { text-decoration: none; color: inherit; }
.cb-card-compact h3 a:hover { color: var(--wp--preset--color--accent-1); }
/* tesserina interamente cliccabile: il link dell'h3 si estende a tutta la
   card (griglie servizi e home). Vale SOLO dove l'h3 e' l'unico link della
   card: una card con altri link nel corpo (es. interventi) non deve avere
   l'h3 linkato, o l'overlay li coprirebbe. */
.cb-card { position: relative; }
.cb-card h3 a::after { content: ""; position: absolute; inset: 0; }
.cb-card-compact p { margin: 0.4rem 0 0; }

/* --- Hero pagine interne: H1 un po' piu' contenuto del hero home, cosi'
       i titoli lunghi stanno in 1-2 righe nella colonna dei contenuti --- */
.cb-section-compact h1 { font-size: clamp(1.9rem, 3.4vw, 2.4rem); }

/* --- Icona nel hero delle pagine servizio: ancorata a destra, un filo
       piu' grande delle icone card --- */
.cb-hero-icon { display: flex; justify-content: flex-end; }
.cb-hero-icon img { width: 64px; height: 64px; }

/* --- Etichetta sopra i titoli di sezione --- */
.cb-eyebrow {
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.8rem;
  font-weight: 700;
  color: var(--wp--preset--color--accent-3);
}

/* --- Testo attenuato --- */
.cb-muted { color: var(--wp--preset--color--accent-6); }

/* --- Numeri grandi (sezione dati) --- */
.cb-num {
  font-size: 2.6rem;
  font-weight: 800;
  color: var(--wp--preset--color--accent-1);
  line-height: 1.1;
}

/* --- Liste con spunte (pagine servizio) --- */
ul.cb-check { list-style: none; padding-left: 0; }
ul.cb-check li {
  padding-left: 1.7rem;
  position: relative;
  margin-bottom: 0.55rem;
}
ul.cb-check li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.28em;
  width: 1.05em;
  height: 1.05em;
  border-radius: 50%;
  background: var(--wp--preset--color--accent-4);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8.5l2.6 2.6L12 5.5' fill='none' stroke='%23244E8A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-size: 70%;
  background-position: center;
  background-repeat: no-repeat;
}

/* --- Footer --- */
.cb-footer a { color: var(--wp--preset--color--accent-5); text-decoration: none; }
.cb-footer a:hover { color: var(--wp--preset--color--base); text-decoration: underline; }
.cb-footer h4 {
  color: var(--wp--preset--color--base);
  font-size: 0.95rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 0.9rem;
}
.cb-footer ul { list-style: none; padding-left: 0; margin: 0; }
.cb-footer li { margin-bottom: 0.45rem; }

/* --- Giochi di parole cantiere -> CantieriBIM (cicli da 10s: sequenza come
       prima, ~7s fermi su CantieriBIM, dissolvenza e si ricomincia) --- */
.cb-gioco {
  text-align: center;
  font-size: 1.45rem;
  font-weight: 700;
  line-height: 1.5;
  color: var(--wp--preset--color--base);
}
.cb-gioco p { margin: 0.15rem 0; }

/* swap inline (usato nel titolo contatti e nella CTA home): parole
   sovrapposte in inline-grid (la cella prende la larghezza della parola
   piu' lunga: zero salti) */
.cb-swap { display: inline-grid; text-align: left; }
.cb-swap > span { grid-area: 1/1; white-space: nowrap; }
.cb-swap-old { position: relative; animation: cb-esce-ciclo 10s ease infinite; }
.cb-swap-old::after {
  content: "";
  position: absolute;
  left: 0;
  top: 56%;
  height: 3px;
  width: 0;
  background: var(--wp--preset--color--accent-3);
  animation: cb-barra-swap 10s ease-out infinite;
}
.cb-swap-new {
  opacity: 0;
  transform: translateY(0.3em);
  animation: cb-swap-entra-ciclo 10s ease-out infinite;
}
.cb-swap-new b { color: var(--wp--preset--color--accent-3); }

/* percentuali su ciclo 10s: 12%=1.2s ecc. La coda 92-100% e' la dissolvenza
   di reset; i "salti" di width avvengono sempre a parola invisibile. */
@keyframes cb-esce-ciclo {           /* parola vecchia ("cantiere") */
  0%, 16%   { opacity: 1; }
  21%, 94%  { opacity: 0; }
  99%, 100% { opacity: 1; }
}
@keyframes cb-barra-swap {           /* barra che sbarra la parola vecchia */
  0%, 12%   { width: 0; }
  17%, 50%  { width: 100%; }
  51%, 100% { width: 0; }            /* reset mentre la parola e' invisibile */
}
@keyframes cb-swap-entra-ciclo {     /* parola nuova ("CantieriBIM") */
  0%, 20%   { opacity: 0; transform: translateY(0.3em); }
  25%, 92%  { opacity: 1; transform: none; }
  97%       { opacity: 0; transform: none; }
  100%      { opacity: 0; transform: translateY(0.3em); }
}

@media (prefers-reduced-motion: reduce) {
  .cb-swap-new { animation: none; opacity: 1; transform: none; }
  .cb-swap-old { animation: none; opacity: 0; }
  .cb-swap-old::after { animation: none; width: 0; }
}

/* --- Form richieste (CF7 store-only) --- */
.wpcf7 label { font-weight: 600; }
.wpcf7 input[type="text"],
.wpcf7 input[type="email"],
.wpcf7 input[type="tel"],
.wpcf7 textarea {
  width: 100%;
  box-sizing: border-box;
  margin-top: 0.3rem;
  padding: 0.65rem 0.8rem;
  border: 1px solid var(--wp--preset--color--accent-5);
  border-radius: 6px;
  background: var(--wp--preset--color--base);
  font: inherit;
  color: var(--wp--preset--color--contrast);
}
.wpcf7 input:focus,
.wpcf7 textarea:focus {
  outline: none;
  border-color: var(--wp--preset--color--accent-2);
  box-shadow: 0 0 0 2px rgba(56, 98, 159, 0.25);
}
.wpcf7 textarea { min-height: 8rem; }
.wpcf7 input[type="submit"],
.wpcf7 button[type="submit"] {
  background: var(--wp--preset--color--accent-3);
  color: var(--wp--preset--color--base);
  border: none;
  border-radius: 6px;
  padding: 0.7rem 1.4rem;
  font: inherit;
  font-weight: 600;
  cursor: pointer;
}
.wpcf7 input[type="submit"]:hover,
.wpcf7 button[type="submit"]:hover { background: var(--wp--preset--color--accent-1); }
.wpcf7 .cb-recapiti-nota {
  font-size: 0.9rem;
  color: var(--wp--preset--color--accent-6);
  margin-bottom: 0.2rem;
}
.wpcf7 .cb-privacy { font-size: 0.9rem; font-weight: 400; }
.wpcf7 .cb-privacy label { font-weight: 400; }
/* con acceptance_as_validation la checkbox mostra la stessa tip rossa degli
   altri obbligatori: a capo, come sotto gli input */
.wpcf7 .cb-privacy .wpcf7-not-valid-tip { display: block; margin-top: 0.3rem; }

/* --- Selettore tipo richiesta: card grandi con titolo + descrizione.
       Le descrizioni sono ::after agganciati al value del radio: il dato
       registrato (Cliente/Fornitore/Vuoi lavorare con noi) resta invariato. --- */
.cb-tipo .wpcf7-radio {
  display: flex;
  gap: 0.7rem;
  flex-wrap: wrap;
}
.cb-tipo .wpcf7-list-item {
  margin: 0;
  flex: 1 1 200px;
  display: flex;
}
.cb-tipo .wpcf7-list-item label {
  display: block;
  width: 100%;
  padding: 1rem 1.15rem;
  border: 1.5px solid var(--wp--preset--color--accent-5);
  border-radius: 10px;
  cursor: pointer;
  transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}
.cb-tipo .wpcf7-list-item-label {
  display: block;
  font-weight: 700;
  font-size: 1.05rem;
}
.cb-tipo .wpcf7-list-item label::after {
  display: block;
  margin-top: 0.3rem;
  font-size: 0.85rem;
  font-weight: 400;
  line-height: 1.45;
  color: var(--wp--preset--color--accent-6);
}
.cb-tipo label:has(input[value="Cliente"])::after {
  content: "Ho un progetto, una pratica o un immobile da seguire";
}
.cb-tipo label:has(input[value="Fornitore"])::after {
  content: "Sono un fornitore e vorrei proporre una collaborazione";
}
.cb-tipo label:has(input[value="Vuoi lavorare con noi"])::after {
  content: "Vorrei candidarmi per lavorare nello studio";
}
.cb-tipo input[type="radio"] {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.cb-tipo .wpcf7-list-item label:hover {
  border-color: var(--wp--preset--color--accent-2);
  box-shadow: 0 6px 18px rgba(22, 40, 62, 0.08);
}
.cb-tipo .wpcf7-list-item label:has(input:checked) {
  border-color: var(--wp--preset--color--accent-1);
  background: var(--wp--preset--color--accent-4);
}
.cb-tipo .wpcf7-list-item label:has(input:checked) .wpcf7-list-item-label {
  color: var(--wp--preset--color--accent-1);
}

/* --- Schermata di conferma richiesta --- */
.cb-conferma-card {
  max-width: 620px;
  margin: var(--wp--preset--spacing--70) auto;
  padding: 2.5rem 2rem;
  text-align: center;
  background: var(--wp--preset--color--base);
  border: 1px solid var(--wp--preset--color--accent-5);
  border-radius: 14px;
  box-shadow: 0 14px 34px rgba(22, 40, 62, 0.10);
}
.cb-conferma-card h2 { margin: 1rem 0 0.5rem; }
.cb-conferma-card p { color: var(--wp--preset--color--accent-6); }
.cb-conferma-btn {
  display: inline-block;
  margin-top: 1rem;
  background: var(--wp--preset--color--accent-3);
  color: var(--wp--preset--color--base);
  padding: 0.7rem 1.4rem;
  border-radius: 6px;
  font-weight: 600;
  text-decoration: none;
}
.cb-conferma-btn:hover { background: var(--wp--preset--color--accent-1); }

/* --- Hero: illustrazione mai oltre la colonna --- */
.cb-hero-art img { max-width: 100%; height: auto; }

/* --- Aggiustamenti mobile (colonne impilate sotto i 782px) --- */
@media (max-width: 781px) {
  .cb-num { font-size: 2.1rem; }
  /* hero pagine servizio: l'icona da sola sotto il testo e' un orfano — via */
  .cb-hero-icon,
  .cb-section-compact .wp-block-column .cb-card-icon { display: none; }
  /* checklist "Le prestazioni" su 2 colonne: impilata deve leggersi come
     un elenco unico, senza vuoto a meta' */
  .wp-block-columns:has(.cb-check) { gap: 0.3rem; }
}
