/* ===========================================================================
   iuris-avvocati — stili globali. Gli stili specifici dei componenti
   restano inline nella view. Qui solo: reset minimo, link, selection,
   responsive grid helper. Font Spectral (serif) + Libre Franklin (sans),
   self-hosted (assets/css/fonts.css, caricato nel <head>).
   =========================================================================== */
* { box-sizing: border-box; }
/* Disattiva l'ingrandimento automatico del testo che alcuni browser mobili
   applicano nei contenitori stretti: il font-size dichiarato in CSS/inline
   resta sempre quello effettivamente mostrato. */
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body { margin: 0; }
a { color: #1E2A44; text-decoration: none; }
a:hover { color: #8C7A4B; }
::selection { background: #E7E0CF; }

/* Helper grid responsive (dal template) */
.lvr-pad { padding: 0 40px; }

/* Distanza uniforme, in tutto il sito, tra la fine del subheader (backNav)
   — o la sola testata condivisa dove assente — e la prima riga di
   contenuto. !important perché deve vincere sul padding-top inline già
   presente in molte view. */
main { padding-top: 30px !important; }

/* Eccezione mirata solo a questa pagina: spazio dimezzato rispetto allo
   standard sopra. */
.editor-page main { padding-top: 15px !important; }

/* ---- Homepage (classi hp-* dal template directory) ---- */
.hp-pad { padding: 0 40px; }

@media (max-width: 900px) {
  .hp-atlante  { grid-template-columns: 1fr !important; }
  .hp-regions  { grid-template-columns: 1fr !important; }
  .hp-cards    { grid-template-columns: 1fr !important; }
  .hp-identity { grid-template-columns: 1fr !important; }
  .hp-pad      { padding-left: 20px !important; padding-right: 20px !important; }
  .hp-title    { font-size: 34px !important; }
  .hp-chips    { overflow-x: auto; }
}

@media (max-width: 900px) {
  /* minmax(0, 1fr) e non il semplice "1fr": una traccia grid "1fr" ha un
     minimo automatico pari al min-content del proprio contenuto (non 0), per
     cui un discendente con un min-content largo può comunque forzare questa
     colonna oltre la larghezza del viewport anche se collassata a una sola
     colonna. minmax(0, 1fr) toglie quel minimo implicito: la colonna può
     restringersi fino a 0 e lasciare che il testo vada a capo. */
  .lvr-grid   { grid-template-columns: minmax(0, 1fr) !important; }
  .lvr-hero   { grid-template-columns: 1fr !important; }
  .lvr-photo  { max-width: 240px; }
  .lvr-aside  { position: static !important; }
  .lvr-pad    { padding-left: 22px !important; padding-right: 22px !important; }
  .lvr-cols2  { grid-template-columns: 1fr !important; }
  /* Griglie etichetta/valore a due colonne con la prima colonna a larghezza
     fissa (Studio e ricevimento, Lingue e modalità operative): a viewport
     stretti la colonna fissa non lascia spazio sufficiente al valore, che
     resta largo quanto il proprio min-content e sfonda la pagina. Sotto i
     900px la coppia etichetta/valore va semplicemente una sopra l'altra. */
  .lvr-kv     { grid-template-columns: 1fr !important; gap: 3px 0 !important; }
}

/* Animazione sobria focus (accessibilità) */
a:focus-visible, button:focus-visible, input:focus-visible,
textarea:focus-visible, [tabindex]:focus-visible {
  outline: 2px solid #8C7A4B;
  outline-offset: 2px;
}

/* Guide e pagine-documento: un solo template, leggibile anche a 320px. */
.lav-guide-shell {
  width: 100%;
  max-width: 900px;
  margin: 0 auto;
  padding: 48px 40px 88px;
}
.lav-guide-heading h1,
.lav-guide-approved-content h1,
.lav-document-heading h1 {
  font-family: 'Spectral', serif;
  font-weight: 500;
  font-size: clamp(30px, 5vw, 43px);
  line-height: 1.16;
  color: #1B1D22;
  margin: 0 0 16px;
}
.lav-guide-heading > p:last-child { color:#555B65; max-width:720px; margin:0; }
.lav-guide-kicker,
.lav-guide-review,
.lav-guide-card-meta {
  color:#7A6A40;
  font-size:12px;
  letter-spacing:.06em;
  text-transform:uppercase;
  margin:0 0 10px;
}
.lav-guide-list { display:grid; gap:20px; margin-top:34px; }
.lav-guide-card {
  border:1px solid #DDD6C7;
  background:#FBFAF6;
  padding:26px;
  border-radius:3px;
}
.lav-guide-card h2 { font-family:'Spectral',serif; font-size:23px; line-height:1.3; margin:0 0 10px; }
.lav-guide-card p { color:#4D515A; font-size:15px; line-height:1.7; }
.lav-guide-card-link { display:inline-block; margin-top:4px; font-weight:600; text-decoration:underline; text-underline-offset:3px; }
.lav-guide-toc {
  background:#FBFAF6;
  padding:18px 22px;
  margin:24px 0 34px;
}
.lav-guide-toc h2 { font-family:'Spectral',serif; font-size:18px; margin:0 0 8px; }
.lav-guide-toc ol { margin:0; padding-left:21px; }
.lav-guide-toc li { margin:5px 0; font-size:14px; line-height:1.5; }
.lav-guide-approved-content p,
.lav-guide-approved-content li,
.lav-document-page p,
.lav-document-page dd { overflow-wrap:anywhere; }
.lav-guide-approved-content table { min-width:650px; }
.lav-guide-related {
  margin-top:42px;
  padding:24px;
  border:1px solid #DDD6C7;
  background:#F8F5EE;
}
.lav-guide-related h2 { font-family:'Spectral',serif; font-size:20px; margin:0 0 12px; }
.lav-guide-related ul { margin:0; padding-left:20px; }
.lav-guide-related li { margin:8px 0; }
.lav-document-heading { margin-bottom:28px; }
.lav-document-facts { border-top:1px solid #DDD6C7; margin:0 0 34px; }
.lav-document-facts > div { display:grid; grid-template-columns:190px minmax(0,1fr); gap:18px; border-bottom:1px solid #E5DFD3; padding:12px 0; }
.lav-document-facts dt { color:#666A72; font-size:13px; font-weight:600; }
.lav-document-facts dd { margin:0; color:#30333A; font-size:14px; line-height:1.6; }
.lav-document-page section > h2,
.lav-document-warning h2 { font-family:'Spectral',serif; font-size:21px; font-weight:500; margin:28px 0 8px; }
.lav-document-page section > p,
.lav-document-warning p { color:#3A3D44; font-size:15px; line-height:1.75; margin:0; }
.lav-document-warning { padding:1px 0; margin:30px 0; }
.lav-document-sources { padding-left:20px; }
.lav-document-sources li { margin:8px 0; }
.lav-document-details ul { padding-left:20px; color:#3A3D44; font-size:15px; line-height:1.65; }
.lav-document-details li { margin:7px 0; }
.lav-no-download { font-size:13px !important; color:#666A72 !important; }
.lav-guide-editorial-notice { font-size:13px; color:#666A72; margin:22px 0 0; }

@media (max-width: 640px) {
  .lav-guide-shell { padding:32px 18px 64px !important; }
  .lav-guide-card { padding:20px; }
  .lav-guide-toc { padding:16px 16px; }
  .lav-document-facts > div { grid-template-columns:1fr; gap:3px; }
  .lav-guide-related { padding:20px; }
}
