/* ========================================================
   Formulaires publics hors funnel (contact, connexion portail...).
   Champs conformes au contrat (docs/DESIGN_CONTRACT.md) : label au-dessus,
   fond blanc chaud, bordure encre, rayon 12px, focus rouge, erreur sous le champ.
   Partiel : views/partials/champ.ejs. Scopé .form-public.
   ======================================================== */
/* Reset box-sizing scopé : les pages d'auth ne chargent pas styles.css (Tailwind). */
.form-public, .form-public *, .form-public *::before, .form-public *::after { box-sizing: border-box; }
.form-public { color: var(--ink-warm, #241F17); font-family: var(--font-sans-v5, 'Instrument Sans', system-ui, sans-serif); }

.form-page { background: var(--paper-warm, #F2ECE0); }
.form-page .form-wrap { max-width: 620px; margin: 0 auto; padding: clamp(2.2rem, 6vw, 3.6rem) clamp(18px, 5vw, 28px) clamp(3rem, 6vw, 4.5rem); }
.form-page h1 { font-family: var(--font-serif-v5, 'Young Serif', Georgia, serif); font-weight: 400; font-size: clamp(1.9rem, 4.5vw, 2.6rem); line-height: 1.12; letter-spacing: -.01em; margin: 0 0 .5rem; }
.form-page .form-intro { color: var(--ink-warm-soft, #5C5346); font-size: 1.05rem; margin: 0 0 2rem; }
.form-card { background: var(--white-warm, #FFFDF8); border: 2.5px solid var(--ink-warm, #241F17); border-radius: 16px; box-shadow: var(--hard, 4px 4px 0 #241F17); padding: clamp(1.4rem, 3vw, 2rem); }

/* Champ conforme */
.form-public .champ { margin-bottom: 1.1rem; }
.form-public label { display: block; font-size: .9rem; font-weight: 600; color: var(--ink-warm-soft, #5C5346); margin-bottom: .4rem; }
.form-public .champ-requis { color: var(--rouge, #C25438); }
.form-public input, .form-public textarea, .form-public select {
  width: 100%; font-family: inherit; font-size: 1rem; color: var(--ink-warm, #241F17);
  background: var(--white-warm, #FFFDF8); border: 2px solid var(--ink-warm, #241F17); border-radius: 12px; padding: .7em .85em;
}
.form-public textarea { resize: vertical; min-height: 8rem; }
.form-public input:focus-visible, .form-public textarea:focus-visible, .form-public select:focus-visible { outline: 3px solid var(--rouge, #C25438); outline-offset: 2px; }
.form-public input:disabled, .form-public textarea:disabled, .form-public select:disabled { opacity: .55; cursor: not-allowed; background: var(--neutre, #EAE2D0); }
.form-public .champ-invalide input, .form-public .champ-invalide textarea, .form-public .champ-invalide select { border-color: var(--rouge, #C25438); }
.form-public .champ-erreur { color: var(--rouge, #C25438); background: var(--rouge-soft, #F3E0D4); border-radius: 8px; padding: .4em .7em; font-size: .86rem; margin: .4rem 0 0; }
.form-public .champ-aide { color: var(--ink-warm-soft, #5C5346); font-size: .86rem; margin: .4rem 0 0; }

/* Bouton de soumission (un seul vert par vue) */
.form-public .form-submit { width: 100%; font-family: inherit; font-weight: 700; font-size: 1rem; background: var(--green, #1C7A53); color: var(--white-warm, #FFFDF8); border: 2.5px solid var(--ink-warm, #241F17); border-radius: 12px; padding: .85em; box-shadow: var(--hard-sm, 3px 3px 0 #241F17); cursor: pointer; transition: background-color .15s ease; }
.form-public .form-submit:hover { background: var(--green-dark, #12523A); }
.form-public .form-submit:disabled { opacity: .6; cursor: default; }

/* Bandeaux de résultat */
.form-public .form-flash { border-radius: 12px; padding: .9rem 1.1rem; font-size: .95rem; margin: 0 0 1.4rem; border: 2px solid var(--ink-warm, #241F17); box-shadow: var(--hard-sm, 3px 3px 0 #241F17); }
.form-public .form-flash.ok { background: var(--green-tint, #E2ECE4); }
.form-public .form-flash.err { background: var(--rouge-soft, #F3E0D4); }

/* Pages d'auth (connexion portail, lien invalide) : carte centrée */
.auth-page { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 2rem 1rem; background: var(--paper-warm, #F2ECE0); }
.auth-card { width: 100%; max-width: 26rem; background: var(--white-warm, #FFFDF8); border: 2.5px solid var(--ink-warm, #241F17); border-radius: 16px; box-shadow: var(--hard, 4px 4px 0 #241F17); padding: clamp(1.6rem, 4vw, 2.2rem); }
.auth-card.centre { text-align: center; }
.auth-logo { text-align: center; margin-bottom: 1.6rem; }
.auth-logo a { text-decoration: none; color: var(--ink-warm, #241F17); }
.auth-logo img { height: 44px; width: auto; }
.auth-logo .wm { display: block; font-family: var(--font-serif-v5, 'Young Serif', Georgia, serif); font-size: 1.1rem; color: var(--ink-warm, #241F17); margin-top: .5rem; }
.auth-card h1 { font-family: var(--font-serif-v5, 'Young Serif', Georgia, serif); font-weight: 400; font-size: 1.7rem; margin: 0 0 .5rem; color: var(--ink-warm, #241F17); }
.auth-card .sub { color: var(--ink-warm-soft, #5C5346); font-size: .95rem; margin: 0 0 1.4rem; }
.auth-icone { font-size: 2.4rem; line-height: 1; margin-bottom: .8rem; display: inline-block; }
.auth-note { color: var(--ink-warm-soft, #5C5346); font-size: .84rem; margin: 1rem 0 0; }
.auth-retour { text-align: center; margin-top: 1.4rem; }
.auth-retour a { color: var(--green, #1C7A53); font-weight: 600; text-decoration: underline; text-underline-offset: 3px; font-size: .9rem; }
.auth-page .form-submit, .auth-page .btn-vert { display: inline-flex; justify-content: center; align-items: center; }

/* Coordonnées + sujets (contact) */
.form-public .coords { margin-top: 2rem; padding-top: 1.6rem; border-top: 2px dashed var(--line-warm, #DFD5C1); font-size: .96rem; color: var(--ink-warm-soft, #5C5346); }
.form-public .coords a { color: var(--green, #1C7A53); text-decoration: underline; text-underline-offset: 3px; }
.form-public .delai { color: var(--ink-warm-soft, #5C5346); font-size: .92rem; margin-top: 1rem; }
