/* =====================================================================
   INVIMPRESA - Livello di aggiornamento front-end 2026
   Caricato per ultimo: rifinisce il tema originale (2015) senza
   riscriverlo. Tipografia fluida, accessibilita' WCAG 2.2, form e
   pulsanti moderni, immagini e tabelle responsive, rispetto delle
   preferenze di sistema (motion, contrasto), stili di stampa.
   ===================================================================== */

:root {
    --inv-navy: #010B2B;
    --inv-blue: #3498db;
    --inv-blue-dark: #1f6fa8;
    --inv-gold: #c9a227;
    --inv-ink: #1e2a44;
    --inv-muted: #5b6780;
    --inv-line: #e2e6ee;
    --inv-bg-soft: #f4f6fa;
    --inv-radius: 8px;
    --inv-shadow: 0 12px 32px rgba(1, 11, 43, .12);
    --inv-focus: #ffb703;
}

/* ---------------------------------------------------------------
   1. Base
   --------------------------------------------------------------- */

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    overflow-x: hidden;
}

::selection { background: var(--inv-blue); color: #fff; }

/* Nessuna immagine deve poter sfondare il layout */
img, svg, video, iframe { max-width: 100%; }
img { height: auto; }

/* ---------------------------------------------------------------
   2. Tipografia fluida
   --------------------------------------------------------------- */

h1, .h1 { font-size: clamp(28px, 4.2vw, 52px); line-height: 1.15; }
h2, .h2 { font-size: clamp(24px, 3.2vw, 40px); line-height: 1.2; }
h3, .h3 { font-size: clamp(20px, 2.4vw, 30px); line-height: 1.25; }
h4, .h4 { font-size: clamp(18px, 1.9vw, 24px); line-height: 1.3; }
h5, .h5 { font-size: clamp(15px, 1.4vw, 18px); line-height: 1.45; }

p, li { line-height: 1.7; }

.sec-heading5 h1,
.sec-heading5 h2 { word-break: break-word; hyphens: auto; }

/* Testi lunghi: misura di riga leggibile */
.content article p,
.content-left p,
.content-right p { max-width: 72ch; }

/* ---------------------------------------------------------------
   3. Accessibilita' (WCAG 2.2)
   --------------------------------------------------------------- */

/* Focus sempre visibile e con contrasto sufficiente */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
    outline: 3px solid var(--inv-focus);
    outline-offset: 2px;
    border-radius: 3px;
}

/* Il tema originale azzerava l'outline: lo ripristiniamo solo da tastiera */
a:focus:not(:focus-visible),
button:focus:not(:focus-visible) { outline: none; }

/* Link "salta al contenuto" */
.skip-link {
    position: absolute;
    left: -9999px;
    top: 0;
    z-index: 100001;
    background: var(--inv-navy);
    color: #fff;
    padding: 12px 20px;
    border-radius: 0 0 var(--inv-radius) 0;
    font-size: 15px;
    text-decoration: none;
}
.skip-link:focus {
    left: 0;
    color: #fff;
}

/* Area di tocco minima sui dispositivi mobili (WCAG 2.5.8) */
@media (max-width: 991px) {
    .menu a,
    .cd-primary-nav a,
    .copyright-links a,
    .navbar-toggle,
    .menupush-nav-trigger { min-height: 44px; display: inline-flex; align-items: center; }
}

.sr-only-focusable:active,
.sr-only-focusable:focus { position: static; width: auto; height: auto; overflow: visible; clip: auto; }

/* ---------------------------------------------------------------
   4. Pulsanti e form
   --------------------------------------------------------------- */

.btn,
button,
input[type="submit"] {
    border-radius: var(--inv-radius);
    transition: background-color .18s ease, color .18s ease, box-shadow .18s ease, transform .12s ease;
}

.btn:active { transform: translateY(1px); }

.btn-default {
    background: var(--inv-navy);
    border-color: var(--inv-navy);
    color: #fff;
    padding: 12px 26px;
    font-weight: 600;
    letter-spacing: .03em;
}
.btn-default:hover,
.btn-default:focus {
    background: var(--inv-blue);
    border-color: var(--inv-blue);
    color: #fff;
    box-shadow: var(--inv-shadow);
}

.form-control {
    border: 1px solid var(--inv-line);
    border-radius: var(--inv-radius);
    box-shadow: none;
    min-height: 46px;
    font-size: 15px;
    color: var(--inv-ink);
    background-color: #fff;
}
.form-control:focus {
    border-color: var(--inv-blue);
    box-shadow: 0 0 0 3px rgba(52, 152, 219, .18);
}
textarea.form-control { min-height: 140px; }

.form-group label { font-weight: 600; color: var(--inv-ink); margin-bottom: 6px; }

/* Campi obbligatori non compilati, solo dopo l'interazione */
.form-control:required:user-invalid { border-color: #c0392b; }

.form-privacy {
    background: var(--inv-bg-soft);
    border: 1px solid var(--inv-line);
    border-left: 4px solid var(--inv-gold);
    border-radius: var(--inv-radius);
    padding: 16px 18px;
    margin-top: 18px;
}
.form-privacy label { font-weight: 400; line-height: 1.5; }
.form-privacy input[type="checkbox"] { width: 18px; height: 18px; margin-right: 8px; vertical-align: -3px; }

/* ---------------------------------------------------------------
   5. Contenuti responsive
   --------------------------------------------------------------- */

/* Tabelle: scorrimento orizzontale invece di sfondare il layout */
table { max-width: 100%; }
@media (max-width: 767px) {
    .content table,
    .legal-page table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* Le mappe e i video incorporati diventano fluidi */
iframe[src*="google.com/maps"],
iframe[data-inv-src*="google.com/maps"],
.inv-cc-placeholder {
    width: 100% !important;
    max-width: 100%;
    border-radius: var(--inv-radius);
}
iframe[src*="google.com/maps"],
iframe[data-inv-src*="google.com/maps"] { min-height: 320px; border: 0; }

/* Il footer del tema su mobile andava a capo male */
@media (max-width: 767px) {
    .copyright .inner { text-align: center; }
    .copyright h5 { float: none !important; text-align: center; line-height: 1.6; }
    .copyright-links { text-align: center !important; margin-top: 10px; }
    .copyright-links a { display: inline-block; margin: 4px 8px; }
}

.copyright a { color: inherit; text-decoration: underline; }
.copyright a:hover,
.copyright a:focus { color: var(--inv-gold); }

/* ---------------------------------------------------------------
   6. Preferenze dell'utente
   --------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *,
    *::before,
    *::after {
        animation-duration: .001ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .001ms !important;
        scroll-behavior: auto !important;
    }
    /* wow.js lascia gli elementi invisibili se le animazioni sono disattivate */
    .wow,
    .animated,
    .animated2 { visibility: visible !important; opacity: 1 !important; transform: none !important; }
    .parallax,
    [data-bottom-top],
    [data-center],
    [data-top-bottom] { transform: none !important; }
}

@media (prefers-contrast: more) {
    body { color: #10182b; }
    a { text-decoration: underline; }
    .form-control { border-color: #10182b; }
}

/* ---------------------------------------------------------------
   7. Stampa
   --------------------------------------------------------------- */

@media print {
    header,
    .menu-bar,
    .social-bar,
    .menupush-nav,
    .menupush-nav-trigger,
    .cd-top,
    .footer-bg,
    .inv-cc-banner,
    .inv-cc-overlay,
    iframe { display: none !important; }

    body { background: #fff !important; color: #000 !important; font-size: 12pt; }
    .legal-page { max-width: none; }
    .legal-page a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; word-break: break-all; }
    .container { width: auto !important; max-width: none !important; }
    h1, h2, h3 { page-break-after: avoid; }
    table, figure, .legal-table-wrap { page-break-inside: avoid; }
}
