/*
Theme Name: LangExperts
Theme URI: https://langexperts.com
Description: Identità visiva di LangExperts Inc. Tema figlio di Twenty Twenty-Five, direzione "Dossier brevettuale": registro documentale, grazie solo nei titoli, struttura retta da righe sottili. Include due varianti tipografiche selezionabili.
Author: LangExperts Inc.
Template: twentytwentyfive
Version: 1.10.1
Requires at least: 6.7
Tested up to: 7.1
Requires PHP: 8.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: langexperts
*/

/* Colori, caratteri e scala tipografica stanno in theme.json.
   Qui c'è il ritmo verticale e la struttura a righe, che theme.json non esprime. */

/* ====================== caratteri ====================== */

/* Serviti dal dominio di LangExperts, non da Google. I file stanno in
   wp-content/uploads/fonts e sono stati caricati con la Libreria caratteri
   di WordPress il 12 ottobre 2026. */

@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/wp-content/uploads/fonts/newsreader-400.woff2") format("woff2");
}

@font-face {
  font-family: "Newsreader";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/wp-content/uploads/fonts/newsreader-600.woff2") format("woff2");
}

@font-face {
  font-family: "Source Sans 3";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/wp-content/uploads/fonts/source-sans-3-400.woff2") format("woff2");
}

@font-face {
  font-family: "Source Sans 3";
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("/wp-content/uploads/fonts/source-sans-3-600.woff2") format("woff2");
}

@font-face {
  font-family: "Courier Prime";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("/wp-content/uploads/fonts/courier-prime-400.woff2") format("woff2");
}

:root {
  --lx-rule: var(--wp--preset--color--rule, #D7D3C8);
  --lx-rule-fine: var(--wp--preset--color--rule-fine, #E8E5DC);
  --lx-gutter: clamp(1.25rem, 4vw, 3rem);
}

/* ====================== superficie della pagina ====================== */

/* Grana: una velatura di rumore su tutta la pagina. Non è un'immagine
   scaricata, è disegnata dal browser, quindi non pesa niente. Serve a
   togliere alla carta l'aspetto di schermo vuoto. */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
  opacity: 0.5;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.82' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='0.26'/%3E%3C/svg%3E");
}

/* Margine numerato: nelle descrizioni brevettuali le righe sono numerate
   di cinque in cinque, perché l'esaminatore ci si riferisce. Qui è la
   stessa convenzione, non un ornamento. Compare solo dove c'è spazio
   vero a sinistra della colonna di testo. */
.lx-hero { position: relative; }

@media (min-width: 1240px) {
  .lx-hero::before {
    content: "5\A 10\A 15\A 20\A 25\A 30\A 35\A 40\A 45\A 50\A 55\A 60\A 65\A 70\A 75\A 80\A 85\A 90\A 95\A 100\A 105\A 110\A 115\A 120";
    white-space: pre;
    position: absolute;
    top: clamp(3.25rem, 7vw, 6rem);
    left: calc((100vw - 1080px) / 2 - 4.4rem);
    width: 2.2rem;
    height: calc(100% - clamp(3.25rem, 7vw, 6rem) - 1.5rem);
    overflow: hidden;
    text-align: right;
    font-family: var(--wp--preset--font-family--data-mono);
    font-size: 0.7rem;
    line-height: 2.05;
    letter-spacing: -0.01em;
    font-variant-numeric: tabular-nums;
    color: var(--wp--preset--color--ink-faint);
    opacity: 0.55;
    pointer-events: none;
    user-select: none;
  }
}

/* ====================== intestazione ====================== */

.lx-header {
  border-bottom: 1px solid var(--lx-rule);
  padding-block: 1.4rem;
}
.lx-header-inner { align-items: baseline; }

/* Il marchio: timbro di deposito. Prende il colore dal contesto, così
   la stessa figura vive su carta in testata e su inchiostro in fondo. */
.lx-brand { align-items: center; }
.lx-mark {
  display: block;
  flex: 0 0 auto;
  width: 3.1rem;
  height: 2.13rem;
  color: var(--wp--preset--color--ink);
}
.lx-mark-rule { stroke: var(--wp--preset--color--seal); }
.lx-footer .lx-mark { color: var(--wp--preset--color--paper); }
.lx-footer .lx-mark-rule { stroke: #C46A62; }

.lx-wordmark,
.lx-wordmark a {
  font-family: var(--wp--preset--font-family--display-serif);
  font-size: 1.32rem;
  font-weight: 600;
  letter-spacing: -0.005em;
  text-decoration: none;
  color: var(--wp--preset--color--ink);
}

.lx-nav { font-size: 0.9rem; }
.lx-nav .wp-block-navigation-item__content {
  text-decoration: none;
  padding-bottom: 2px;
  border-bottom: 1px solid transparent;
  color: var(--wp--preset--color--ink-soft);
}
.lx-nav .wp-block-navigation-item__content:hover {
  border-bottom-color: var(--wp--preset--color--seal);
  color: var(--wp--preset--color--ink);
}
.lx-nav .wp-block-navigation__responsive-container.is-menu-open {
  background: var(--wp--preset--color--paper);
  padding: 2.5rem var(--lx-gutter);
}
.lx-nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
  font-size: 1.3rem;
  font-family: var(--wp--preset--font-family--display-serif);
  color: var(--wp--preset--color--ink);
}

/* ====================== sezioni ====================== */

.lx-hero { padding-block: clamp(3.25rem, 7vw, 6rem) 0; }
.lx-section { padding-block: clamp(3rem, 6vw, 5rem); border-bottom: 1px solid var(--lx-rule-fine); }
.lx-band {
  padding-block: clamp(3rem, 6vw, 5rem);
  background: var(--wp--preset--color--paper-warm);
  border-block: 1px solid var(--lx-rule);
}
.lx-closing { padding-block: clamp(3.5rem, 7vw, 5.5rem); }
.lx-closing h2 { max-width: 16ch; }

/* Un'etichetta di sezione sottile, con la riga sopra: è la struttura
   del documento, non un ornamento. */
.lx-eyebrow {
  margin-bottom: 0.65rem;
  padding-top: 0.75rem;
  border-top: 1px solid var(--wp--preset--color--ink);
  display: inline-block;
  letter-spacing: 0.01em;
}

/* ====================== misure di lettura ====================== */

.lx-display { letter-spacing: -0.024em; max-width: 14ch; }
.lx-deck { max-width: 44ch; }
.lx-lede { max-width: 58ch; }
.lx-narrow { max-width: 52ch; }

/* ====================== barra dei dati ====================== */

.lx-specbar {
  margin-top: clamp(2.5rem, 5vw, 4rem);
  border-top: 1px solid var(--wp--preset--color--ink);
  border-bottom: 1px solid var(--lx-rule);
  padding-block: 1.4rem 1.5rem;
  gap: 0;
}
.lx-specbar .wp-block-column {
  border-right: 1px solid var(--lx-rule-fine);
  padding-right: 1.6rem;
}
.lx-specbar .wp-block-column:last-child { border-right: 0; padding-right: 0; }
.lx-specbar p { margin-block: 0; }
.lx-specbar p + p { margin-top: 0.5rem; }

/* ====================== colonne separate da righe ====================== */

.lx-cols { margin-top: 2.25rem; gap: 0; }
.lx-cols .wp-block-column {
  border-top: 1px solid var(--wp--preset--color--ink);
  border-right: 1px solid var(--lx-rule-fine);
  padding: 1.5rem 2rem 0 0;
}
.lx-cols .wp-block-column:last-child { border-right: 0; padding-right: 0; }
.lx-cols .wp-block-column > :first-child { margin-top: 0; }

.lx-steps { margin-top: 2.25rem; gap: 0; }
.lx-steps .wp-block-column {
  border-top: 1px solid var(--lx-rule);
  border-right: 1px solid var(--lx-rule);
  padding: 1.2rem 1.5rem 0 0;
}
.lx-steps .wp-block-column:last-child { border-right: 0; padding-right: 0; }
.lx-steps .wp-block-column > :first-child { margin-top: 0; }

@media (max-width: 781px) {
  .lx-specbar .wp-block-column,
  .lx-cols .wp-block-column,
  .lx-steps .wp-block-column {
    border-right: 0;
    padding-right: 0;
    padding-bottom: 1.5rem;
  }
  .lx-specbar .wp-block-column { border-bottom: 1px solid var(--lx-rule-fine); }
  .lx-specbar .wp-block-column:last-child { border-bottom: 0; padding-bottom: 0; }
  .lx-cols .wp-block-column:last-child,
  .lx-steps .wp-block-column:last-child { padding-bottom: 0; }
}

/* ====================== dati e elenchi ====================== */

/* Il carattere da macchina per scrivere è una citazione del fascicolo
   brevettuale: vive solo su stringhe brevi, mai su testo corrente. */
.lx-data {
  font-family: var(--wp--preset--font-family--data-mono);
  font-variant-numeric: tabular-nums;
  line-height: 1.55;
  letter-spacing: -0.01em;
}

/* Gli elenchi di documenti restano nel carattere del testo: in Courier
   diventavano un blocco pesante e il minimalismo sembrava trascuratezza. */
.lx-list { line-height: 1.85; margin-top: 0.9rem; }
.lx-list br { line-height: inherit; }

/* ====================== tabella del flusso di lavoro ====================== */

.lx-table { margin-top: 0.5rem; }
.lx-table table { border-collapse: collapse; width: 100%; }
.lx-table td, .lx-table th {
  border: 0;
  border-bottom: 1px solid var(--lx-rule-fine);
  padding: 0.85rem 1.25rem 0.85rem 0;
  vertical-align: top;
  text-align: left;
}
.lx-table tr:first-child td, .lx-table tr:first-child th {
  border-top: 1px solid var(--wp--preset--color--ink);
}
.lx-table td:first-child, .lx-table th:first-child {
  width: 38%;
  color: var(--wp--preset--color--ink-faint);
  font-weight: 400;
}
.lx-table td:last-child, .lx-table th:last-child {
  font-family: var(--wp--preset--font-family--data-mono);
  font-size: 0.88rem;
  padding-right: 0;
}
@media (max-width: 600px) {
  .lx-table td:first-child, .lx-table th:first-child { width: 42%; }
  .lx-table td, .lx-table th { padding-right: 0.75rem; font-size: 0.92rem; }
}

/* ====================== pulsanti ====================== */

.wp-block-buttons { gap: 0.75rem; }

.wp-block-button.is-style-outline > .wp-block-button__link {
  background: transparent;
  color: var(--wp--preset--color--ink);
  border-color: var(--lx-rule);
}
.wp-block-button.is-style-outline > .wp-block-button__link:hover {
  border-color: var(--wp--preset--color--ink);
  background: transparent;
  color: var(--wp--preset--color--ink);
}

/* L'indirizzo di contatto: non un pulsante, una riga sottolineata.
   È un collegamento vero: un clic apre il programma di posta del visitatore. */
.lx-mail {
  font-family: var(--wp--preset--font-family--data-mono);
  display: inline-block;
  border-bottom: 1px solid var(--wp--preset--color--seal);
  padding-bottom: 3px;
}
.lx-mail a {
  color: inherit;
  text-decoration: none;
}
.lx-mail:hover { border-bottom-width: 2px; }

/* ====================== piè di pagina ====================== */

.lx-footer {
  background: var(--wp--preset--color--ink);
  color: #D9DEE8;
  padding-block: 3rem 2.25rem;
}
.lx-footer .lx-wordmark,
.lx-footer .lx-wordmark a,
.lx-footer h2, .lx-footer h3 { color: var(--wp--preset--color--paper); }
.lx-footer p, .lx-footer li { color: #AAB4C6; }
.lx-footer a { color: #D9DEE8; text-decoration: none; }
.lx-footer a:hover { color: #FFFFFF; text-decoration: underline; }
.lx-footer-meta {
  margin-top: 2rem;
  padding-top: 1.25rem;
  border-top: 1px solid #2B3752;
}

/* ====================== allineamento ====================== */

/* WordPress centra automaticamente ogni elemento a cui diamo una larghezza
   massima dentro un contenitore "constrained". Qui il registro è documentale:
   tutto si allinea al margine sinistro, come su un foglio. */
.is-layout-constrained > .lx-eyebrow,
.is-layout-constrained > .lx-display,
.is-layout-constrained > .lx-deck,
.is-layout-constrained > .lx-lede,
.is-layout-constrained > .lx-narrow,
.lx-closing.is-layout-constrained > h2 {
  margin-left: max(0px, calc((100% - 1080px) / 2)) !important;
  margin-right: auto !important;
}

/* Ogni pagina porta il proprio titolo dentro il contenuto, composto con
   sommario e sottotitolo. Quello del tema padre non viene più stampato
   (lo toglie functions.php, così la pagina ha un solo titolo principale).
   Questa riga resta come rete di sicurezza. */
.wp-block-post-title { display: none; }

/* lx-pagine-interne: il tema padre aggiunge spazio sopra il contenuto per
   far respirare il titolo della pagina. Qui il titolo non viene stampato,
   quindi quello spazio diventa un buco. Le sezioni hanno già il loro respiro. */
body.page:not(.home) main { margin-top: 0 !important; }
body.page:not(.home) main > .wp-block-group:first-child { padding-top: 0 !important; }
body.page:not(.home) .wp-block-post-content { margin-top: 0 !important; }

/* ====================== dettagli ====================== */

.lx-section a:where(:not(.wp-element-button)),
.lx-band a:where(:not(.wp-element-button)),
.lx-hero a:where(:not(.wp-element-button)),
.lx-closing a:where(:not(.wp-element-button)) {
  text-decoration-color: var(--wp--preset--color--seal);
  text-underline-offset: 0.18em;
  text-decoration-thickness: 1px;
}

:where(a, button, input, select, textarea):focus-visible {
  outline: 2px solid var(--wp--preset--color--seal);
  outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}