/* =============================================================================
   DAPI - COMPONENTI PAGINE INTERNE (internal.css)
   Caricato SOLO dalle pagine interne: la HOME non include questo file.
   Design system derivato dalla HOME approvata. Prefisso .ip- per tutti i
   componenti nuovi; le classi condivise (band, shell, section-heading, btn,
   label, num) restano quelle globali di style.css.

   GERARCHIA DEI BOX (4 famiglie):
     A  .ip-card       standard content card  - lavanda chiarissima + bordo leggero
     B  .ip-evidence   evidentiary statement  - lavanda intensa + bordo violetto
     C  .ip-dark-box   dark emphasis          - viola scuro + testo lavanda chiara
     D  .is-yes/.is-no semantic contrast      - varianti tenui desaturate
   ============================================================================= */

/* ── INTERNAL HERO: compatta, viola scuro, decorazione astratta leggera ── */
.ip-hero {
    position: relative;
    padding: clamp(2rem, 3.5vw, 2.75rem) 0 clamp(1.75rem, 3vw, 2.5rem);
    overflow: hidden;
}
.ip-hero::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse 42% 60% at 82% 20%, rgba(83, 74, 183, .35), transparent 70%),
        radial-gradient(ellipse 30% 45% at 92% 75%, rgba(122, 110, 228, .18), transparent 70%);
    pointer-events: none;
}
.ip-hero .shell { position: relative; }
.ip-hero h1 {
    font-size: clamp(2.1rem, 4vw, 3rem);
    line-height: 1.08;
    letter-spacing: -0.03em;
    max-width: none;
    margin: .9rem 0 1.1rem;
}
.ip-hero .lead { max-width: none; }

/* ── INDICE DELLA PAGINA: superficie premium con anchor ── */
/* La banda dell'indice e la prima sezione respirano meno:
   il contenuto deve iniziare subito dopo la hero. */
.band.ip-tight { padding: clamp(1.75rem, 3vw, 2.5rem) 0; }
#section-understanding { padding-top: clamp(2.5rem, 4vw, 3.25rem); }

.ip-index {
    background: var(--lavender);
    border: 3px solid var(--indigo);
    border-radius: var(--radius);
    padding: clamp(1.75rem, 3.5vw, 2.75rem);
}
.ip-index-title {
    font-size: clamp(1.3rem, 2.2vw, 1.6rem);
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--indigo);
    margin-bottom: 1.5rem;
}
.ip-index-grid { display: grid; grid-template-columns: 1fr; gap: .6rem; }
@media (min-width: 860px) { .ip-index-grid { grid-template-columns: 1fr 1fr; gap: .75rem 2rem; } }
.ip-index a {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: center;
    column-gap: 1rem;
    padding: .8rem 1rem;
    border-radius: 10px;
    text-decoration: none;
    color: var(--ink);
    font-weight: 600;
    font-size: 1.05rem;
    border: 1px solid transparent;
    transition: border-color .18s ease, background .18s ease;
}
.ip-index a .n {
    font-family: var(--mono);
    font-size: .85rem;
    letter-spacing: .1em;
    color: var(--violet);
    border: 1px solid rgba(83, 74, 183, .45);
    border-radius: 999px;
    padding: .3rem .65rem;
}
.ip-index a:hover,
.ip-index a:focus-visible {
    background: var(--lavender-pale);
    border-color: rgba(83, 74, 183, .4);
}
.ip-index-tip {
    margin-top: 1.4rem;
    font-size: var(--fs-small);
    color: var(--ink-mute);
}

/* ── FAMIGLIA A: standard content card ── */
.ip-card {
    background: var(--lavender-pale);
    border: 1px solid rgba(83, 74, 183, .25);
    border-radius: var(--radius);
    padding: clamp(1.5rem, 3vw, 2.25rem);
}
.ip-card h3, .ip-card h4 { color: var(--indigo); margin-bottom: .6rem; }
.ip-card h3 { font-size: 1.35rem; letter-spacing: -0.01em; }
.ip-card h4 { font-size: 1.1rem; }
.ip-card p { color: var(--ink-soft); font-size: var(--fs-body); line-height: 1.65; }
.ip-card .icon-chip {
    display: inline-grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 12px;
    background: var(--lavender);
    color: var(--violet);
    border: 1px solid rgba(83, 74, 183, .3);
    margin-bottom: 1rem;
}
.ip-card .icon-chip .icon { display: block; margin: 0; }

/* ── FAMIGLIA B: evidentiary / technical statement ── */
.ip-evidence {
    background: var(--lavender);
    border: 1.5px solid rgba(83, 74, 183, .5);
    border-radius: var(--radius);
    padding: clamp(1.75rem, 3.5vw, 2.75rem);
}
.ip-evidence > .ev-head {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: center;
    column-gap: 1rem;
    margin-bottom: 1rem;
}
.ip-evidence .ev-head .icon-chip {
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 12px;
    background: var(--lavender-pale);
    color: var(--violet);
    border: 1px solid rgba(83, 74, 183, .4);
}
.ip-evidence .ev-head .icon-chip .icon { display: block; margin: 0; }
.ip-evidence h3 { color: var(--indigo); font-size: clamp(1.3rem, 2.3vw, 1.6rem); }
.ip-evidence p { color: var(--ink-soft); line-height: 1.65; }
.ip-evidence .ev-inner {
    background: var(--lavender-pale);
    border: 1px solid rgba(83, 74, 183, .3);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-top: 1.25rem;
}

/* ── FAMIGLIA C: dark emphasis ── */
.ip-dark-box {
    background: var(--indigo-deep);
    border-radius: var(--radius);
    padding: clamp(1.75rem, 3.5vw, 2.5rem);
    color: var(--on-dark);
}
.ip-dark-box h3, .ip-dark-box strong { color: #EFEDFF; }
.ip-dark-box p { color: var(--on-dark); line-height: 1.65; }

/* ── FAMIGLIA D: semantica tenue desaturata (solo dove necessaria) ── */
.ip-duo { display: grid; grid-template-columns: 1fr; gap: 1.5rem; align-items: stretch; }
@media (min-width: 960px) { .ip-duo { grid-template-columns: 1fr 1fr; gap: 2rem; } }
.ip-semantic {
    border-radius: var(--radius);
    padding: clamp(1.5rem, 3vw, 2.25rem);
    height: 100%;
}
.ip-semantic.is-yes {
    background: #F2F6F2;
    border: 1.5px solid rgba(74, 116, 92, .35);
}
.ip-semantic.is-no {
    background: #F8F2F4;
    border: 1.5px solid rgba(146, 84, 104, .3);
}
.ip-semantic .sem-mark {
    display: inline-grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border-radius: 999px;
    font-size: 1.2rem;
    font-weight: 700;
    margin-bottom: 1rem;
}
.ip-semantic.is-yes .sem-mark { background: rgba(74, 116, 92, .14); color: #40634F; }
.ip-semantic.is-no  .sem-mark { background: rgba(146, 84, 104, .12); color: #7C4658; }
.ip-semantic h3 { color: var(--indigo); font-size: 1.45rem; margin-bottom: 1.1rem; }
.ip-semantic li { list-style: none; padding: .55rem 0; }
.ip-semantic li strong { display: block; color: var(--ink); font-size: 1.05rem; }
.ip-semantic li p { color: var(--ink-soft); font-size: var(--fs-small); line-height: 1.6; margin-top: .15rem; }

/* Liste con segno semantico tenue */
.ip-list-check li, .ip-list-cross li {
    list-style: none;
    position: relative;
    padding: .4rem 0 .4rem 1.9rem;
    color: var(--ink-soft);
    font-size: var(--fs-body);
    line-height: 1.6;
}
.ip-list-check li::before, .ip-list-cross li::before {
    position: absolute;
    left: 0;
    top: .45rem;
    font-weight: 700;
}
.ip-list-check li::before { content: "\2713"; color: #40634F; }
.ip-list-cross li::before { content: "\00D7"; color: #7C4658; font-size: 1.15rem; top: .3rem; }
.on-dark .ip-list-check li, .on-dark .ip-list-cross li { color: var(--on-dark); }
.on-dark .ip-list-check li::before { color: #B9D8C4; }
.on-dark .ip-list-cross li::before { color: #E4BCC8; }

/* Variante compatta/dimensione allineata alle altre liste della pagina:
   scoped, non altera .ip-list-check/.ip-list-cross dove gia approvate
   (es. master page, validita legale) a dimensione standard. */
.ip-list-check.is-compact li,
.ip-list-cross.is-compact li {
    font-size: var(--fs-lead);
    padding: .3rem 0 .3rem 1.9rem;
}

/* Checklist tecnica neutra (violetto) */
.ip-list li {
    list-style: none;
    position: relative;
    padding: .4rem 0 .4rem 1.7rem;
    color: var(--ink-soft);
    font-size: var(--fs-body);
    line-height: 1.6;
}
/* Variante compatta: preferenza standard per liste di fatti/riferimento
   (es. Elementi di fiducia). Spaziatura minima tra i punti, riga piu stretta
   per i wrap multi-riga. Scoped: non altera .ip-list base (es. master page). */
.ip-list.is-compact li {
    padding: 0 0 0 1.7rem;
    margin: 0 0 .3rem 0;
    line-height: 1.4;
    font-size: var(--fs-lead);
}
.ip-list.is-compact li:last-child { margin-bottom: 0; }
.ip-list.is-compact li::before { top: .5em; }
.ip-list.is-compact li a {
    text-decoration: underline;
    text-underline-offset: 3px;
}
.ip-list li::before {
    content: "";
    position: absolute;
    left: 0;
    top: .95em;
    width: 8px;
    height: 8px;
    border-radius: 2px;
    background: var(--violet);
    opacity: .75;
}

/* ── DUE PERCORSI: distinzione strutturale, stessa famiglia cromatica ── */
.ip-paths { display: grid; grid-template-columns: 1fr; gap: 1.75rem; align-items: stretch; }
@media (min-width: 960px) { .ip-paths { grid-template-columns: 1fr 1fr; gap: 2rem; } }
.ip-path {
    display: flex;
    flex-direction: column;
    border-radius: var(--radius);
    overflow: hidden;
    height: 100%;
}
.ip-path.is-ids { background: var(--lavender-pale); border: 1px solid rgba(83, 74, 183, .3); }
.ip-path.is-pub { background: var(--lavender); border: 1.5px solid rgba(83, 74, 183, .55); }
.ip-path .path-head {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: center;
    column-gap: 1rem;
    padding: 1.4rem 1.75rem 1.1rem;
    border-bottom: 1px solid rgba(83, 74, 183, .25);
}
.ip-path.is-pub .path-head { border-bottom-color: rgba(83, 74, 183, .4); }
.ip-path .path-head .icon-chip {
    display: grid;
    place-items: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--indigo-deep);
    color: #CFC8FF;
}
.ip-path .path-head .icon-chip .icon { display: block; margin: 0; }
.ip-path .path-head .kicker {
    font-family: var(--mono);
    font-size: .75rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--violet);
    display: block;
    margin-bottom: .2rem;
}
.ip-path h3 { color: var(--indigo); font-size: 1.3rem; line-height: 1.25; }
.ip-path .path-body { padding: 1.4rem 1.75rem 1.75rem; display: flex; flex-direction: column; flex: 1; }
.ip-path .path-body > p { color: var(--ink-soft); line-height: 1.6; margin-bottom: 1.1rem; }
.ip-path .path-ideal {
    margin-top: auto;
    padding-top: 1.1rem;
    border-top: 1px solid rgba(83, 74, 183, .25);
    font-size: var(--fs-small);
    color: var(--ink-mute);
}
.ip-path .path-ideal strong { color: var(--indigo); }

/* ── GRIGLIE DI CONTENUTO ── */
.ip-grid { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 760px)  { .ip-grid.cols-2 { grid-template-columns: 1fr 1fr; } }
@media (min-width: 960px)  { .ip-grid.cols-3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 760px) and (max-width: 959px) { .ip-grid.cols-3 { grid-template-columns: 1fr 1fr; } }

/* ── PROCESS STEPS ── */
.ip-step {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
    padding: clamp(1.75rem, 3.5vw, 2.5rem) 0;
    border-top: 2px solid rgba(83, 74, 183, .3);
}
@media (min-width: 900px) { .ip-step { grid-template-columns: 110px 1fr; column-gap: 2.5rem; } }
.ip-step .step-n {
    font-size: clamp(2.6rem, 5vw, 3.6rem);
    font-weight: 700;
    letter-spacing: -0.03em;
    color: var(--violet);
    opacity: .55;
    line-height: 1;
}
.ip-step h3 { color: var(--indigo); font-size: clamp(1.35rem, 2.4vw, 1.7rem); margin-bottom: .6rem; }
.ip-step > div > p { color: var(--ink-soft); line-height: 1.65; max-width: 62ch; }
.ip-step .step-block { margin-top: 1.25rem; }
.ip-step .step-block > strong {
    display: block;
    font-family: var(--mono);
    font-size: .8rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--violet);
    margin-bottom: .5rem;
}

/* ── FLOW / TIMELINE A FRECCE ── */
.ip-flow {
    display: grid;
    grid-template-columns: 1fr;
    gap: .4rem;
    margin-top: 1.5rem;
}
@media (min-width: 900px) { .ip-flow { grid-template-columns: repeat(var(--flow-n, 3), 1fr) ; gap: 1rem; } }
.ip-flow .flow-cell {
    background: var(--lavender-pale);
    border: 1px solid rgba(83, 74, 183, .3);
    border-radius: 12px;
    padding: 1rem 1.15rem;
    position: relative;
}
.ip-flow .flow-cell strong { display: block; color: var(--indigo); font-size: 1rem; margin-bottom: .2rem; }
.ip-flow .flow-cell span { color: var(--ink-soft); font-size: var(--fs-small); line-height: 1.5; }
@media (min-width: 900px) {
    .ip-flow .flow-cell:not(:last-child)::after {
        content: "\2192";
        position: absolute;
        right: -0.95rem;
        top: 50%;
        transform: translateY(-50%);
        color: var(--violet);
        font-size: 1.15rem;
        font-weight: 700;
    }
}
.on-dark .ip-flow .flow-cell {
    background: rgba(238, 237, 255, .07);
    border-color: rgba(238, 237, 255, .3);
}
.on-dark .ip-flow .flow-cell strong { color: #EFEDFF; }
.on-dark .ip-flow .flow-cell span { color: var(--on-dark); }
.on-dark .ip-flow .flow-cell:not(:last-child)::after { color: #CFC8FF; }
.ip-flow-label {
    font-family: var(--mono);
    font-size: .8rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--violet);
    margin-top: 2rem;
}
.on-dark .ip-flow-label { color: #CFC8FF; }

/* ── ECOSISTEMA ── */
.ip-eco { display: grid; grid-template-columns: 1fr; gap: 1.25rem; }
@media (min-width: 900px) { .ip-eco { grid-template-columns: 1fr 1fr; gap: 1.5rem; } }
.ip-eco .ip-card h4 { margin-bottom: .75rem; }
.ip-eco li { list-style: none; padding: .3rem 0; color: var(--ink-soft); font-size: var(--fs-body); line-height: 1.55; }
.ip-eco a { color: var(--violet); font-weight: 600; text-decoration: none; }
.ip-eco a:hover, .ip-eco a:focus-visible { text-decoration: underline; text-underline-offset: 3px; }

/* ── LINK CARD / CTA INLINE ── */
.ip-linkrow { margin-top: 1.4rem; }
.ip-linkrow a { font-weight: 700; color: var(--violet); text-decoration: none; }
.ip-linkrow a:hover, .ip-linkrow a:focus-visible { text-decoration: underline; text-underline-offset: 4px; }

/* ── SPAZIATURA INTERNA DELLE SEZIONI ── */
.ip-block { margin-top: clamp(2.75rem, 5.5vw, 4rem); }
.ip-intro { max-width: none; font-size: var(--fs-lead); }
@media (min-width: 1020px) { .ip-intro { max-width: 88%; } }

/* ── RESPONSIVE GUARDIE ── */
@media (max-width: 500px) {
    .ip-index a { font-size: .98rem; }
    .ip-step .step-n { font-size: 2.3rem; }
}


/* ── PANNELLI DI ESITO (sezione 08): tre scenari con distacco cromatico ──
   Ogni timeline vive in un pannello chiaro con accento semantico tenue,
   staccato dal blocco scuro unicolore della banda. */
.ip-outcome {
    border-radius: var(--radius);
    padding: clamp(1.25rem, 2.5vw, 1.75rem) clamp(1.25rem, 2.75vw, 2rem);
    margin-top: 1.5rem;
    border: 1.5px solid transparent;
    border-left-width: 5px;
}
.ip-outcome .outcome-label {
    font-family: var(--mono);
    font-size: .82rem;
    letter-spacing: .12em;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: .35rem;
}
.ip-outcome.is-none {
    background: #F8F2F4;
    border-color: rgba(146, 84, 104, .45);
}
.ip-outcome.is-none .outcome-label { color: #7C4658; }
.ip-outcome.is-ids {
    background: var(--lavender-pale);
    border-color: rgba(83, 74, 183, .55);
}
.ip-outcome.is-ids .outcome-label { color: var(--violet); }
.ip-outcome.is-pub {
    background: #F2F6F2;
    border-color: rgba(74, 116, 92, .5);
}
.ip-outcome.is-pub .outcome-label { color: #40634F; }

/* dentro i pannelli chiari le celle tornano al tema chiaro,
   anche se la banda esterna e scura */
.ip-outcome .ip-flow { margin-top: .9rem; }
.ip-outcome .ip-flow .flow-cell {
    background: rgba(255, 255, 255, .72);
    border-color: rgba(60, 52, 137, .25);
}
.ip-outcome .ip-flow .flow-cell span { color: var(--ink-soft); }
.ip-outcome .ip-flow .flow-cell:not(:last-child)::after { color: var(--violet); }
.ip-outcome.is-none .ip-flow .flow-cell:not(:last-child)::after { color: #7C4658; }
.ip-outcome.is-pub  .ip-flow .flow-cell:not(:last-child)::after { color: #40634F; }

/* ── Riduzione spaziatura tra sezioni: SOLO Chi siamo ──
   --pad-section (5-9rem) e' il padding top+bottom di ogni .band; tra due
   sezioni consecutive si somma (fino a 288px vuoti a 1920px). Scoped alla
   pagina per non alterare HOME o la master page, che condividono .band. */
body.page-chi-siamo .band { padding: clamp(3rem, 6vw, 5rem) 0; }

/* =============================================================================
   TABELLA DI CONFRONTO (Validita Legale e pagine future con tabelle)
   Stessa famiglia viola: header indigo scuro, righe alternate lavanda,
   righe esclusive DAPI-PUB leggermente accentate, nessun colore fuori palette.
   ============================================================================= */
.ip-table-wrap {
    overflow-x: auto;
    border-radius: var(--radius);
    border: 1px solid rgba(83, 74, 183, .3);
    -webkit-overflow-scrolling: touch;
}
.ip-table { width: 100%; min-width: 640px; border-collapse: collapse; background: var(--lavender-pale); }
.ip-table thead th {
    background: var(--indigo-deep);
    color: #EFEDFF;
    text-align: left;
    padding: 1.1rem 1.25rem;
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: -0.01em;
}
.ip-table thead th:not(:first-child) { text-align: center; }
.ip-table tbody td {
    padding: .9rem 1.25rem;
    border-bottom: 1px solid rgba(83, 74, 183, .18);
    color: var(--ink-soft);
    font-size: var(--fs-small);
}
.ip-table tbody tr:nth-child(even) { background: var(--lavender); }
.ip-table tbody td:first-child { font-weight: 600; color: var(--indigo); }
.ip-table tbody td:not(:first-child) { text-align: center; }
.ip-table .yes { color: var(--violet); font-weight: 700; font-size: 1.15em; }
.ip-table .no { color: var(--ink-mute); opacity: .55; }
.ip-table tr.is-exclusive { background: var(--lavender) !important; }
.ip-table tr.is-exclusive td:first-child { color: var(--violet); }

/* ── Liste ordinate dentro le card: passi numerati senza colore fuori palette ── */
.ip-card ol, .ip-evidence ol {
    list-style: none;
    counter-reset: ip-step;
    padding: 0;
    margin: .75rem 0 0;
}
.ip-card ol li, .ip-evidence ol li {
    counter-increment: ip-step;
    position: relative;
    padding: .5rem 0 .5rem 2.2rem;
    color: var(--ink-soft);
    font-size: var(--fs-body);
    line-height: 1.6;
}
.ip-card ol li::before, .ip-evidence ol li::before {
    content: counter(ip-step);
    position: absolute;
    left: 0;
    top: .5rem;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 999px;
    background: var(--lavender);
    color: var(--violet);
    font-size: .8rem;
    font-weight: 700;
    display: grid;
    place-items: center;
}

/* ── ip-list su fondo scuro (es. disclaimer in ip-dark-box) ── */
.ip-dark-box .ip-list li,
.on-dark .ip-list li { color: var(--on-dark); }
.ip-dark-box .ip-list li::before,
.on-dark .ip-list li::before { background: #CFC8FF; opacity: .9; }
.ip-dark-box .ip-list li strong,
.on-dark .ip-list li strong { color: #EFEDFF; }

/* Spaziatura sezioni ridotta: Validita Legale (stessa preferenza di Chi siamo) */
body.page-validita-legale .band { padding: clamp(3rem, 6vw, 5rem) 0; }

/* Spaziatura sezioni ridotta: Utilizzi DAPI-PUB (stessa preferenza standard) */
body.page-use-cases .band { padding: clamp(3rem, 6vw, 5rem) 0; }

/* Spaziatura sezioni ridotta: Condizioni di Servizio (stessa preferenza standard) */
body.page-tos .band { padding: clamp(3rem, 6vw, 5rem) 0; }

/* Spaziatura sezioni ridotta: Privacy & Cookie Policy (stessa preferenza standard) */
body.page-privacy .band { padding: clamp(3rem, 6vw, 5rem) 0; }

/* Variante FAQ per risposte con contenuto ricco (liste, box, tabelle) */
.qa-item .qa-body { padding: 0 2rem 1.75rem 0; max-width: none; }
.qa-item .qa-body p { padding: 0 0 1rem; color: var(--ink-soft); font-size: var(--fs-small); line-height: 1.7; max-width: none; }
.qa-item .qa-body p:last-child { padding-bottom: 0; }
.qa-item .qa-body ul, .qa-item .qa-body ol { margin: .5rem 0 1rem; }
.on-dark .qa-item .qa-body p { color: var(--on-dark); }

/* Spaziatura sezioni ridotta: FAQ (stessa preferenza standard) */
body.page-faq .band { padding: clamp(3rem, 6vw, 5rem) 0; }

/* =============================================================================
   FORM (Contatti, Richiedi Certificazione)
   ============================================================================= */
.ip-form { display: grid; gap: 1.5rem; }
.ip-field { display: grid; gap: .5rem; }
.ip-field label {
    font-weight: 600;
    font-size: .95rem;
    color: var(--indigo);
}
.ip-field label .req { color: var(--violet); margin-left: .2rem; }
.ip-field .hint { font-size: var(--fs-small); color: var(--ink-mute); font-weight: 400; }
.ip-field-row { display: grid; grid-template-columns: 1fr; gap: 1.5rem; }
@media (min-width: 640px) { .ip-field-row.cols-2 { grid-template-columns: 1fr 1fr; } }

.ip-form input[type="text"],
.ip-form input[type="email"],
.ip-form input[type="tel"],
.ip-form textarea,
.ip-form select {
    width: 100%;
    font-family: var(--sans);
    font-size: 1rem;
    padding: .85rem 1rem;
    border: 1.5px solid rgba(83, 74, 183, .3);
    border-radius: 10px;
    background: var(--white);
    color: var(--ink);
    transition: border-color .18s ease, box-shadow .18s ease;
}
.ip-form input:focus,
.ip-form textarea:focus,
.ip-form select:focus {
    outline: none;
    border-color: var(--violet);
    box-shadow: 0 0 0 3px rgba(83, 74, 183, .15);
}
.ip-form textarea { min-height: 140px; resize: vertical; }
.ip-form input::placeholder, .ip-form textarea::placeholder { color: var(--ink-mute); opacity: .8; }

.ip-form button[type="submit"] {
    justify-self: start;
    font-family: inherit;
    cursor: pointer;
    border: none;
}

/* Honeypot: nascosto ai visitatori umani, visibile ai bot che riempiono tutto */
.ip-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* Esito invio */
.ip-form-notice {
    padding: 1rem 1.25rem;
    border-radius: 10px;
    font-size: var(--fs-small);
    margin-bottom: 1.5rem;
}
.ip-form-notice.is-success {
    background: #F2F6F2;
    border: 1.5px solid rgba(74, 116, 92, .35);
    color: #40634F;
}
.ip-form-notice.is-error {
    background: #F8F2F4;
    border: 1.5px solid rgba(146, 84, 104, .3);
    color: #7C4658;
}

/* Riquadri contatto con icona (Sede/Email/Telefono) */
.ip-contact-item {
    display: grid;
    grid-template-columns: auto 1fr;
    column-gap: 1.1rem;
    align-items: start;
    margin-bottom: 1.75rem;
}
.ip-contact-item .icon-chip { width: 48px; height: 48px; }
.ip-contact-item h3 { font-size: 1.1rem; color: var(--indigo); margin-bottom: .3rem; }
.ip-contact-item p, .ip-contact-item a {
    color: var(--ink-soft);
    font-size: var(--fs-body);
    line-height: 1.55;
}
.ip-contact-item a { text-decoration: none; }
.ip-contact-item a:hover { text-decoration: underline; text-underline-offset: 3px; }

/* Mappa */
.ip-map-wrap {
    border-radius: var(--radius);
    overflow: hidden;
    border: 1px solid rgba(83, 74, 183, .25);
}
.ip-map-wrap iframe { display: block; width: 100%; height: 420px; border: 0; }

/* =============================================================================
   ACCORDION GRANDE (Richiedi Certificazione: tariffe, processo, sicurezza)
   Piu prominente del .qa-item delle FAQ: usato per blocchi informativi
   corposi che l'utente puo scegliere di aprire, non per singole domande.
   ============================================================================= */
.ip-accordion {
    background: var(--white);
    border: 1.5px solid rgba(83, 74, 183, .3);
    border-radius: var(--radius);
    margin-bottom: 1.5rem;
    overflow: hidden;
}
.ip-accordion summary {
    cursor: pointer;
    list-style: none;
    padding: 1.5rem 3.5rem 1.5rem 1.75rem;
    position: relative;
    display: flex;
    flex-direction: column;
    gap: .3rem;
}
.ip-accordion summary::-webkit-details-marker { display: none; }
.ip-accordion summary .ip-accordion-title {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--indigo);
    letter-spacing: -0.01em;
}
.ip-accordion summary .ip-accordion-sub {
    font-size: var(--fs-small);
    color: var(--ink-mute);
    font-weight: 400;
}
.ip-accordion summary::after {
    content: "";
    position: absolute;
    right: 1.75rem;
    top: 50%;
    width: 14px;
    height: 14px;
    border-right: 3px solid var(--violet);
    border-bottom: 3px solid var(--violet);
    transform: translateY(-70%) rotate(45deg);
    transition: transform .2s ease;
}
.ip-accordion[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.ip-accordion summary:focus-visible {
    outline: 3px solid var(--violet);
    outline-offset: -3px;
}
.ip-accordion-body {
    padding: 0 1.75rem 2rem;
    border-top: 1px solid rgba(83, 74, 183, .18);
    padding-top: 1.75rem;
}

/* ── Selettore pacchetto: due select, una sola attiva/visibile per volta ── */
.ip-package-group { display: none; }
.ip-package-group.is-active { display: block; }

/* ── DAPI NUMBER: campo molto evidente ── */
.ip-dapi-number {
    background: var(--lavender);
    border: 2px solid var(--violet);
    border-radius: var(--radius);
    padding: 1.5rem 1.75rem;
}
.ip-dapi-number label {
    display: block;
    font-weight: 700;
    color: var(--indigo);
    font-size: 1.05rem;
    margin-bottom: .5rem;
}
.ip-dapi-number input {
    font-family: var(--mono);
    font-size: 1.4rem;
    font-weight: 700;
    letter-spacing: .08em;
    color: var(--indigo-deep);
    background: var(--white);
    border: 1.5px solid rgba(83, 74, 183, .4);
    border-radius: 8px;
    padding: .7rem 1rem;
    width: 100%;
    max-width: 320px;
}
.ip-dapi-number .hint { margin-top: .6rem; font-size: var(--fs-small); color: var(--ink-mute); }

/* ── Consenso: checkbox leggibile, testo essenziale sempre vicino ── */
.ip-consent {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .9rem;
    align-items: start;
    background: var(--lavender-pale);
    border: 1px solid rgba(83, 74, 183, .25);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
}
.ip-consent input[type="checkbox"] {
    width: 22px;
    height: 22px;
    margin-top: .15rem;
    accent-color: var(--violet);
    flex-shrink: 0;
}
.ip-consent label { font-weight: 600; color: var(--ink); }
.ip-consent p { font-size: var(--fs-small); color: var(--ink-soft); margin-top: .4rem; line-height: 1.6; }
.ip-consent a { color: var(--violet); text-decoration: underline; text-underline-offset: 2px; }

/* ── Pill "Consigliato" gia esiste come .path-ideal, qui una piccola variante ── */
.ip-pill-recommended {
    display: inline-block;
    background: var(--indigo-deep);
    color: #EFEDFF;
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    padding: .3rem .8rem;
    border-radius: 999px;
    margin-bottom: .75rem;
}

@media (max-width: 500px) {
    .ip-dapi-number input { max-width: 100%; }
}

/* Richiedi Certificazione: ritmo verticale ancora piu' compatto tra
   accordion e modulo, rispetto al valore .ip-tight standard del sito. */
body.page-request .band.ip-tight { padding: clamp(1rem, 1.8vw, 1.5rem) 0; }
