/* Contatti v2: impaginazione della pagina e del modulo. I pezzi (campi, select, bottoni, agenzia, card compatta)
   sono componenti del design system. */

@layer pages {
  .contacts { padding-top: clamp(32px, 5vw, 72px); }

  /* testo a sinistra, modulo a destra; sul telefono uno sotto l'altro, il modulo subito dopo il titolo */
  .contacts-grid {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 6fr);
    grid-template-areas: "intro panel" "flow panel";
    grid-template-rows: auto 1fr;
    column-gap: clamp(32px, 6vw, 112px);
    align-items: start;
  }
  .contacts-intro { grid-area: intro; }
  .contacts-panel { grid-area: panel; }
  .contacts-flow { grid-area: flow; }

  .contacts h1 { margin-top: 10px; font-size: var(--step-hero); max-width: 12ch; }
  .contacts .lead { margin-top: 20px; max-width: 46ch; color: var(--ink-soft); }

  .contacts-selected, .contacts-agency { margin-top: 32px; max-width: 560px; }
  .contacts-agency { pointer-events: none; }
  .contacts-agency .agency-mark {
    grid-row: span 2;
    display: grid;
    place-items: center;
    width: 88px;
    height: 88px;
    border-radius: var(--r-md);
    background: var(--ground);
    color: var(--accent);
  }
  .contacts-agency .agency-mark .icon { width: 36px; height: 36px; }

  /* ---------- Cosa succede dopo ---------- */
  .contacts-flow {
    margin-top: clamp(40px, 5vw, 72px);
    max-width: 560px;

    & h2 { margin-top: 6px; font-size: var(--step-lead); }
    & ol { display: grid; gap: 20px; margin: 24px 0 0; padding: 0; list-style: none; }
    & li { padding-left: 20px; box-shadow: inset 2px 0 0 var(--accent-soft); }
    & h3 { font-family: var(--font); font-size: var(--step-body); font-weight: 600; letter-spacing: 0; }
    & p { margin-top: 4px; font-size: var(--step-small); color: var(--ink-soft); }
  }

  /* ---------- Pannello del modulo ---------- */
  .contacts-panel {
    padding: clamp(24px, 3.4vw, 48px);
    border-radius: var(--r-lg);
    background: var(--tint);

    & > h2, & .contacts-done h2 { margin-top: 6px; font-size: var(--step-head); }
    & .note { margin-top: 12px; font-size: var(--step-small); color: var(--ink-soft); }
  }

  .contacts-form {
    display: grid;
    gap: 20px;
    margin-top: 28px;

    /* i campi stanno su fondo --tint: tornano bianchi */
    & .field input, & .field textarea, & .select { background-color: var(--ground); }

    & .row-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px var(--gap); }
    & .cell { min-width: 0; }

    & .field textarea { min-height: 140px; }
    & .field input[type="date"] { appearance: none; min-width: 0; }
    & .select.block { width: 100%; }

    /* errore dal server: anello e testo */
    & .has-error .field :is(input, textarea) { box-shadow: inset 0 0 0 2px var(--heart); }
    & .field-error { margin-top: 6px; font-size: var(--step-small); font-weight: 500; color: var(--heart); }
    & .has-error + .field-error { margin-top: -12px; }

    & .note { margin-top: -10px; }
  }

  /* ---------- Dove serve supporto: indirizzo e agenzie vicine ---------- */
  .support {
    display: grid;
    gap: 16px;
    margin: 0;
    padding: 20px;
    border: 0;
    border-radius: var(--r-md);
    background: var(--ground);

    & legend { float: left; width: 100%; padding: 0; font-weight: 600; }
    & .field input, & .select { background-color: var(--tint); }
    & .city-row { grid-template-columns: minmax(0, 1fr) 120px; }
  }

  /* lista disegnata da static/app/portal-contacts-nearest.js (radio + testo) */
  .nearest {
    display: grid;
    gap: 8px;
    font-size: var(--step-small);

    & .muted { color: var(--ink-soft); }
    & label {
      display: flex;
      align-items: center;
      gap: 12px;
      min-height: var(--field-h);
      padding: 8px 16px;
      border-radius: var(--r-pill);
      background: var(--tint);
      font-weight: 500;
      cursor: pointer;
      transition: background-color var(--dur-fast) var(--ease), box-shadow var(--dur-fast) var(--ease);
    }
    & label:hover { box-shadow: inset 0 0 0 1px var(--line); }
    & label:has(input:checked) { background: var(--accent-soft); }
    & input { flex: none; width: 18px; height: 18px; margin: 0; accent-color: var(--accent); }
  }

  /* ---------- Consenso privacy ---------- */

  .form-error { margin-top: 20px; }

  .contacts .actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
  .contacts-form .actions { margin-top: 4px; }

  /* ---------- Esito ---------- */
  .contacts-done {
    display: grid;
    justify-items: start;
    gap: 12px;

    & .done-mark {
      display: grid;
      place-items: center;
      width: 56px;
      height: 56px;
      margin-bottom: 8px;
      border-radius: 50%;
      background: var(--accent);
      color: var(--on-ink);
      font-size: 26px;
      font-weight: 600;
    }
    & > p:not(.kicker) { max-width: 52ch; }
    & .actions { margin-top: 12px; }
  }

  /* ---------- Telefono e tablet stretto ---------- */
  @media (max-width: 960px) {
    .contacts-grid {
      grid-template-columns: minmax(0, 1fr);
      grid-template-areas: "intro" "panel" "flow";
      grid-template-rows: none;
    }
    .contacts-panel { margin-top: 32px; }
    .contacts h1 { max-width: none; }
  }
  @media (max-width: 560px) {
    .contacts-form .row-2 { grid-template-columns: minmax(0, 1fr); }
    .support .city-row { grid-template-columns: minmax(0, 1fr) 96px; }
    .contacts-panel { margin-inline: calc(var(--m) * -1 + 8px); padding: 24px 18px; }
    .contacts-form .actions .btn { width: 100%; }
  }
}
