/* File tickets : tokens charte seule, pas de couleur en dur, pas de :root local.
   Les fallbacks hex restent pour les pages qui n’importent pas kolytica-charte.css
   (formations, cours, jobs partiels). */
/* Remise a zero du bouton seulement. Couleur, taille, graisse, soulignement et
   hauteur tactile viennent de la regle des liens de pied de page, etendue a
   .ft-improve dans la charte : les deux ne peuvent donc plus diverger. */
.ft-improve{
  appearance:none; background:none; border:0;
  cursor:pointer; text-underline-offset:3px; padding:0;
}
.ft-improve:focus-visible{outline:2px solid var(--teal,#0F9D8C); outline-offset:3px; border-radius:4px}

.imp-dialog{
  width:min(38rem, calc(100vw - 1.25rem)); max-height:min(90vh, 40rem);
  overflow:auto; border:1px solid var(--line,#E7E1D2); border-radius:var(--r-card,16px);
  padding:1.4rem 1.35rem 1.1rem; background:var(--white,#fff); color:var(--ink,#141413);
  box-shadow:var(--sh-3,0 18px 40px rgba(20,34,79,.12));
}
.imp-dialog::backdrop{background:rgba(14,24,54,.48)}
.imp-form{position:relative; display:grid; gap:1.05rem}
.imp-form h2{margin:0; color:var(--navy,#14224F); font-size:1.5rem; line-height:1.2; letter-spacing:-.015em; text-wrap:balance}
.imp-lead,.imp-note{margin:0; color:var(--slate,#5B6473); font-size:.95rem; line-height:1.55}
.imp-form label{display:grid; gap:.4rem; font-weight:700; color:var(--navy,#14224F); font-size:1.05rem; line-height:1.35}
.imp-form label .imp-hint{font-weight:500; color:var(--slate,#5B6473); font-size:.88rem}
.imp-form label.imp-inline{display:flex; flex-direction:row; align-items:center; gap:.65rem; min-height:48px; font-weight:600; color:var(--navy,#14224F); font-size:1.05rem; white-space:nowrap}
.imp-notify{display:flex; flex-wrap:wrap; align-items:center; gap:.75rem 1rem}
.imp-notify .imp-email{flex:1 1 14rem; min-width:min(100%,14rem); margin:0}
.imp-notify .imp-email input{min-height:48px}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.imp-form input:not([type="radio"]):not([type="checkbox"]),
.imp-form textarea,
.imp-form select{
  width:100%; box-sizing:border-box;
  border:1.5px solid var(--line,#E7E1D2); border-radius:var(--r-btn,12px);
  padding:.8rem .9rem; font:inherit; font-size:1.05rem; line-height:1.5;
  color:var(--ink,#141413); background:var(--white,#fff);
  transition:border-color .18s ease, box-shadow .18s ease;
}
.imp-form textarea{min-height:6rem; resize:vertical}
.imp-form input:not([type="radio"]):not([type="checkbox"]):hover,
.imp-form textarea:hover,
.imp-form select:hover{border-color:rgba(15,157,140,.45)}
.imp-form input:not([type="radio"]):not([type="checkbox"]):focus-visible,
.imp-form textarea:focus-visible,
.imp-form select:focus-visible{
  outline:2px solid var(--teal,#0F9D8C); outline-offset:2px;
  border-color:var(--teal,#0F9D8C);
  box-shadow:0 0 0 3px rgba(15,157,140,.16);
}
.imp-form input[type="radio"],
.imp-form input[type="checkbox"]{
  width:1.15rem; height:1.15rem; flex:none; accent-color:var(--teal,#0F9D8C);
}
.imp-location-other{padding:.1rem 0 .35rem}
.imp-location-other[hidden],.imp-email[hidden],.imp-success[hidden],.imp-sheet form[hidden]{display:none !important}
.imp-here{margin:0; color:var(--slate,#5B6473); font-size:1rem; line-height:1.45}
.imp-field-error{color:#8a1f1f; font-size:.95rem; font-weight:650; line-height:1.4}
.imp-field-error[hidden]{display:none !important}
.imp-form [aria-invalid="true"]{border-color:#8a1f1f}
.imp-hp{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); clip-path:inset(50%); border:0;
}
.imp-form fieldset{
  border:1px solid rgba(15,157,140,.34); border-radius:var(--r-card,16px);
  padding:.75rem .95rem; margin:0; display:grid; gap:.15rem;
  background:linear-gradient(145deg,#fff 0%,rgba(238,250,247,.72) 100%);
}
.imp-form legend{font-weight:800; color:var(--navy,#14224F); padding:0 .3rem; font-size:.95rem; letter-spacing:.01em}
.imp-actions{
  position:sticky; bottom:0; z-index:1;
  display:flex; gap:.6rem; justify-content:flex-end; flex-wrap:wrap;
  padding:12px 0 0; margin-top:.2rem;
  background:var(--white,#fff); border-top:1px solid var(--line,#E7E1D2);
  box-shadow:0 -12px 16px -12px rgba(14,24,54,.16);
}
.imp-actions-row{display:flex; gap:.6rem; justify-content:flex-end; flex-wrap:wrap; width:100%}
.imp-actions .btn{min-height:48px; padding:.7rem 1.15rem; font-size:1.05rem}
.imp-status{
  margin:0; padding:.7rem .85rem;
  border:1px solid rgba(15,157,140,.34); border-radius:var(--r-btn,12px);
  background:rgba(15,157,140,.08);
  color:var(--teal-dark,#0B6F62); font-size:1.05rem; font-weight:700; line-height:1.4;
}
.imp-status[hidden]{display:none !important}
.imp-status.is-success{border-color:rgba(15,157,140,.42); background:rgba(15,157,140,.1)}
.imp-status.is-error{color:#8a1f1f; border-color:rgba(138,31,31,.28); background:rgba(138,31,31,.06)}
.imp-queue{display:grid; gap:.9rem}
.imp-card{
  background:var(--white,#fff); border:1px solid var(--line,#E7E1D2); border-radius:var(--r-card,16px);
  padding:1rem 1.05rem; box-shadow:var(--sh-1,0 8px 24px rgba(20,34,79,.04)); display:grid; gap:.45rem;
}
.imp-card h2{margin:0; color:var(--navy,#14224F); font-size:1.02rem; line-height:1.3}
.imp-card-meta{display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; font-size:.78rem; color:var(--slate,#5B6473)}
.imp-card-meta .pill{font-size:.72rem; min-height:26px; padding:.2rem .55rem}
.imp-drawers{display:flex; gap:.5rem; flex-wrap:wrap}
.imp-drawers .btn{min-height:44px}
.imp-drawers button[aria-pressed="true"]{background:var(--navy,#14224F); color:var(--on-navy,#fff); border-color:var(--navy,#14224F)}
.imp-empty{margin:0; padding:1rem; border:1px dashed var(--line,#E7E1D2); border-radius:var(--r-card,16px); color:var(--slate,#5B6473); background:rgba(255,255,255,.6)}
@media (max-width:390px){
  .imp-dialog{width:calc(100vw - 1rem); padding:1rem}
  .imp-actions,.imp-actions-row{justify-content:stretch}
  .imp-actions .btn{flex:1 1 0}
}
.imp-sheet-page{margin:0;background:var(--ivory,#FBF7EC);color:var(--ink,#141413)}
.imp-sheet-page .skip-link{position:absolute;left:8px;top:-48px;z-index:20;padding:8px 12px;background:var(--navy,#14224F);color:var(--on-navy,#fff)}
.imp-sheet-page .skip-link:focus{top:8px}
.vb-top{padding:22px 0 6px}
.vb-hint{color:var(--slate,#5B6473);font-size:.88rem;margin:8px 0 14px;max-width:62ch}
.sheet{margin:8px auto 28px;max-width:720px}
.sheet-inner{padding:clamp(22px,4vw,40px);display:grid;gap:0}
.sheet h1,.sheet h2{font-size:clamp(1.75rem,4.2vw,2.4rem);margin:10px 0 12px;color:var(--navy,#14224F);line-height:1.12}
.sheet .lead{margin:0 0 18px;color:var(--slate,#5B6473);max-width:58ch}
.sheet-body{max-width:58ch;margin:0 0 24px;font-size:1.02rem;line-height:1.6}
.sheet-gold{width:48px;height:3px;background:var(--gold,#D99521);border:0;margin:0 0 18px}
.sheet-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.sheet-actions .btn{min-height:44px}
.others{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 48px}
.others button{appearance:none;border:0;background:transparent;padding:0;cursor:pointer}
.others .pill{min-height:36px;color:var(--navy,#14224F)}
.count{margin-left:auto;color:var(--slate,#5B6473);font-size:.9rem;font-weight:700}
@media (max-width:390px){.count{margin-left:0;width:100%}}
body.imp-sheet-lock{overflow:hidden}
/* La voile de consentement (cookies) ne doit jamais recouvrir la feuille de proposition */
body.imp-sheet-lock .kc-consent{display:none !important}

.imp-backdrop,
.imp-sheet,
.imp-sheet *{box-sizing:border-box}
.imp-backdrop{
  position:fixed; inset:0; z-index:99;
  background:rgba(14,24,54,.38);
  backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px);
}
.imp-backdrop[hidden],.imp-sheet[hidden]{display:none !important}
.imp-sheet{
  position:fixed; z-index:101;
  right:max(18px, env(safe-area-inset-right));
  bottom:max(18px, env(safe-area-inset-bottom));
  width:min(560px, calc(100vw - 36px));
  max-height:min(720px, calc(100dvh - 36px));
  display:flex; flex-direction:column;
  margin:0; padding:0; overflow:hidden;
  border:1px solid rgba(15,157,140,.42);
  border-radius:22px;
  background:var(--white,#fff);
  box-shadow:
    var(--sh-4,0 28px 68px rgba(20,34,79,.13)),
    0 0 0 5px rgba(15,157,140,.06),
    inset 0 1px 0 rgba(255,255,255,.98);
  color:var(--ink,#141413);
  font-family:var(--font,"Segoe UI",system-ui,-apple-system,"Aptos",Roboto,Arial,sans-serif);
  font-size:17px;
  line-height:1.6;
  -webkit-tap-highlight-color:transparent;
}
.imp-sheet[tabindex="-1"]{outline:none}
.imp-sheet-head{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  min-height:72px; padding:14px 14px 14px 20px;
  border-bottom:1px solid var(--line,#E7E1D2);
  background:linear-gradient(145deg,#fff 0%,rgba(238,250,247,.94) 100%);
}
.imp-sheet-brand{min-width:0}
.imp-sheet-title{
  margin:0;
  color:var(--navy,#14224F);
  font-size:clamp(1.2rem, 3.4vw, 1.38rem);
  font-weight:750;
  line-height:1.2;
  letter-spacing:-.015em;
  text-wrap:balance;
}
.imp-sheet-close{
  flex:none; width:48px; height:48px; border:1px solid var(--line,#E7E1D2); border-radius:var(--r-btn,12px);
  padding:0; background:var(--white,#fff); color:var(--navy,#14224F); cursor:pointer;
  transition:background .18s ease, border-color .18s ease, color .18s ease;
}
.imp-sheet-close:hover{
  border-color:rgba(15,157,140,.45);
  background:rgba(15,157,140,.08);
  color:var(--teal-dark,#0B6F62);
}
.imp-sheet-close:focus-visible{outline:2px solid var(--teal,#0F9D8C); outline-offset:2px}
.imp-sheet-close svg{width:20px; height:20px; display:block; margin:auto}
.imp-sheet-body{
  overflow:auto; overscroll-behavior:contain;
  padding:18px 20px 20px;
  display:flex; flex-direction:column;
  background:linear-gradient(145deg,#fff 0%,rgba(238,250,247,.74) 100%);
}
.imp-sheet .imp-form{gap:1.15rem}
.imp-sheet-pair{display:grid; gap:1.15rem}
.imp-sheet textarea{min-height:14rem; font-size:1.05rem; line-height:1.55; padding:.9rem 1rem}
.imp-sheet select,
.imp-sheet input[type="email"],
.imp-sheet input[name="locationOther"]{min-height:48px}
.imp-sheet .imp-actions{
  display:grid; gap:.7rem;
  margin-top:auto;
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%, #fff 18%);
  border-top:1px solid var(--line,#E7E1D2);
}
.imp-success{
  display:flex; flex-direction:column; justify-content:center; gap:1.15rem;
  flex:1 1 auto; min-height:0;
  padding:28px 20px 22px;
  background:linear-gradient(145deg,#fff 0%,rgba(238,250,247,.74) 100%);
}
.imp-success .imp-status{font-size:1.12rem}

/* Boutons autonomes : mêmes tokens que la charte, pour les pages sans kolytica-charte.css */
.imp-sheet .btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.5em;
  min-height:48px; font:inherit; font-weight:700; font-size:1.05rem;
  padding:.7rem 1.2rem; border-radius:var(--r-btn,12px); cursor:pointer;
  border:1.5px solid transparent; background-color:transparent; text-align:center;
  transition:transform .18s ease, background-color .18s ease, color .18s ease,
             border-color .18s ease, box-shadow .18s ease;
}
.imp-sheet .btn:focus-visible{outline:2px solid var(--teal,#0F9D8C); outline-offset:3px}
.imp-sheet .btn-teal{
  background-color:var(--teal,#0F9D8C);
  color:var(--on-teal,#052a25);
  box-shadow:var(--sh-2,0 14px 30px rgba(15,157,140,.26));
  background-image:
    radial-gradient(circle 1.4px at 22% 32%, rgba(255,255,255,.36) 99%, transparent),
    radial-gradient(circle 1px   at 72% 22%, rgba(255,255,255,.26) 99%, transparent),
    radial-gradient(circle 1.6px at 46% 76%, rgba(127,216,203,.4) 99%, transparent),
    radial-gradient(circle 1px   at 86% 62%, rgba(255,255,255,.22) 99%, transparent);
  background-size:170% 170%,230% 230%,200% 200%,260% 260%;
  animation:imp-btnnet 14s ease-in-out infinite alternate;
}
.imp-sheet .btn-teal:hover{
  background-color:var(--teal-dark,#0B6F62);
  color:#fff;
  transform:translateY(-1px);
  box-shadow:0 18px 36px rgba(11,111,98,.30);
  text-decoration:none;
}
.imp-sheet .btn-ghost{
  border-color:var(--line,#E7E1D2);
  color:var(--navy,#14224F);
  background:var(--white,#fff);
}
.imp-sheet .btn-ghost:hover{border-color:var(--navy,#14224F)}
.imp-sheet .btn:disabled{opacity:.55; cursor:not-allowed; transform:none}
@keyframes imp-btnnet{
  0%{background-position:0% 0%,100% 0%,0% 100%,50% 50%}
  100%{background-position:100% 100%,0% 100%,100% 0%,50% 0%}
}

@media (min-width:701px){
  .imp-sheet-pair{grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:start}
}
@media (max-width:700px){
  .imp-sheet{
    right:0; left:0; bottom:0; width:100%;
    max-height:min(92dvh, 760px);
    border-radius:22px 22px 0 0;
  }
  .imp-sheet-head{padding:14px 12px 12px 16px}
  .imp-sheet-body{padding:16px 16px 18px}
  .imp-success{padding:22px 16px max(18px, env(safe-area-inset-bottom))}
  .imp-sheet .imp-actions{
    margin:0 -16px -18px;
    padding:12px 16px max(14px, env(safe-area-inset-bottom));
  }
  .imp-actions-row{justify-content:stretch}
  .imp-sheet .imp-actions .btn,
  .imp-success .btn{flex:1 1 0}
}

@media (prefers-reduced-motion:reduce){
  .imp-sheet .btn,
  .imp-sheet-close,
  .imp-form input,
  .imp-form textarea,
  .imp-form select{transition:none !important}
  .imp-sheet .btn-teal{animation:none}
  .imp-sheet .btn-teal:hover{transform:none}
}

@media (forced-colors:active){
  .imp-sheet,
  .imp-sheet-head,
  .imp-sheet-close,
  .imp-form fieldset,
  .imp-status{
    border:1px solid CanvasText;
    background:Canvas;
    box-shadow:none;
    color:CanvasText;
  }
  .imp-backdrop{background:Canvas}
}

@media print{
  .imp-backdrop,
  .imp-sheet{display:none !important}
}
