body.access-pending { overflow:hidden; }
.access-pending #portal-shell { filter:blur(7px); pointer-events:none; user-select:none; }
.access-preview { max-width:760px; padding:76px 0; }
.access-preview h1 { font-size:clamp(38px,5vw,64px); line-height:1.12; letter-spacing:-.055em; margin:30px 0 22px; }
.access-preview p { color:#857391; font-size:17px; }
.access-preview-lines { margin:38px 0; display:grid; gap:12px; }
.access-preview-lines span { display:block; height:9px; background:#dcd2e9; border-radius:20px; width:76%; }
.access-preview-lines span:nth-child(2) { width:64%; }
.access-preview-lines span:nth-child(3) { width:45%; }
.access-preview-options { display:flex; gap:15px; flex-wrap:wrap; padding:25px 0; border-top:1px solid #ddd2eb; }
.access-preview-options div { display:flex; gap:12px; align-items:center; padding:18px; background:#ffffff80; border-radius:12px; }
.access-preview-options i { width:17px; height:17px; border:1px solid #b49bd8; border-radius:50%; }
.access-preview-step { padding:16px 2px; color:#d6cce9; display:flex; align-items:center; gap:14px; font-size:12px; }
.access-preview-step i { display:grid; place-items:center; border:1px solid #ffffff25; border-radius:50%; width:24px; height:24px; font-style:normal; font-size:10px; }
#access-gate { width:min(458px,calc(100vw - 32px)); max-width:none; max-height:calc(100dvh - 32px); margin:auto; padding:0; border:1px solid #ffffffdf; border-radius:23px; background:#fdfbff; box-shadow:0 30px 100px #21103842,0 2px 12px #35205415; color:#49315f; overflow:auto; scrollbar-width:thin; scrollbar-color:#d4c2ec transparent; }
#access-gate::backdrop { background:#2e1a4d45; backdrop-filter:blur(4px); }
.access-card { padding:34px 34px 25px; background:radial-gradient(ellipse at 100% 0%,#eee3ff,transparent 56%),#fdfbff; }
.access-brand { display:inline-flex; align-items:center; gap:20px; margin-bottom:28px; text-decoration:none; color:#49315f; }
.access-brand-logo { display:grid; gap:6px; width:106px; }
.access-brand img { display:block; width:100%; height:auto; object-fit:contain; }
.access-brand-cabinet { display:flex; align-items:center; justify-content:center; gap:9px; font-size:8px; font-weight:650; letter-spacing:.22em; text-transform:uppercase; color:#8d739d; }
.access-brand-cabinet::before,.access-brand-cabinet::after { content:''; width:16px; height:1px; background:#c9b6d8; }
.access-brand-product { border-left:1px solid #ddcfe8; padding:10px 0 10px 20px; font-size:16px; font-weight:600; letter-spacing:-.03em; color:#78529b; }
.access-eyebrow { display:block; font-size:9px; font-weight:750; letter-spacing:.13em; color:#9774bc; margin-bottom:12px; }
#access-gate h1 { margin:0 0 11px; font-size:29px; line-height:1.18; letter-spacing:-.045em; font-weight:720; padding:0; }
#access-description { margin:0 0 23px; color:#8b779c; font-size:12px; line-height:1.8; }
.access-context { background:#f0e9f8a6; padding:12px 14px; border-radius:11px; margin:0 0 20px; display:grid; gap:5px; font-size:12px; overflow-wrap:anywhere; }
.access-context strong { font-weight:700; color:#644279; }
.access-context span { color:#947ca5; font-size:10px; }
.access-form { margin:0; display:block; }
.access-form fieldset { border:0; padding:0; margin:0; min-width:0; display:grid; gap:16px; }
.access-field { display:grid; gap:7px; font-size:11px; font-weight:650; color:#6d507d; }
.access-field label { line-height:1.5; }
.access-field input { border:1px solid #e1d5ec; border-radius:9px; width:100%; min-width:0; box-sizing:border-box; padding:12px 13px; font-family:inherit; font-size:12px; color:#503566; background:#fff; outline:none; transition:border-color .18s,box-shadow .18s; }
.access-field input:focus { border-color:#9d6fd8; box-shadow:0 0 0 3px #a579e51a; }
.access-field input[readonly] { background:#f5f0f9; color:#907a9e; }
.access-field input::placeholder { color:#b4a5c0; }
.access-password { position:relative; }
.access-password input { padding-right:46px; }
.access-show-password { position:absolute; right:5px; top:50%; transform:translateY(-50%); border:0; background:transparent; color:#957aa9; padding:9px; border-radius:6px; display:grid; place-items:center; cursor:pointer; }
.access-show-password:hover { color:#7544ad; background:#f4edf9; }
.access-show-password svg { width:17px; height:17px; }
.access-password-note { font-size:10px; font-weight:400; color:#a08baa; margin:0; line-height:1.6; }
.access-required { color:#8b59bc; padding-left:2px; }
.access-submit.button { width:100%; justify-content:center; min-height:43px; font-size:11px; gap:12px; border-radius:9px; margin-top:4px; }
.access-submit:disabled { opacity:.65; cursor:wait; }
.access-form-buttons { display:grid; gap:10px; margin-top:4px; }
.access-form-buttons.has-cancel { grid-template-columns:auto minmax(0,1fr); }
.access-form-buttons .access-submit.button { margin-top:0; }
.access-cancel { min-height:43px; padding:10px 15px; border:1px solid #dfd1eb; border-radius:9px; background:#ffffffb3; color:#85629c; font-family:inherit; font-size:11px; font-weight:600; cursor:pointer; }
.access-cancel:hover { background:#f3ecfa; border-color:#bca0d3; color:#674484; }
.access-cancel:disabled { opacity:.65; cursor:wait; }
.access-error { color:#a43f68; background:#fff0f5; border:1px solid #eed3df; border-radius:8px; padding:10px 12px; font-size:11px; line-height:1.7; margin:0; overflow-wrap:anywhere; }
.access-error:empty { display:none; }
.access-notice { margin:0 0 20px; border-left:2px solid #ac88d9; padding:10px 13px; background:#f2eafa; color:#80618f; font-size:11px; line-height:1.8; }
.access-actions { display:flex; justify-content:space-between; gap:10px 16px; flex-wrap:wrap; margin:18px 0 0; }
.access-link { background:none; border:0; padding:0; font-family:inherit; font-size:10px; line-height:1.7; color:#9276a8; text-align:left; cursor:pointer; text-decoration:none; }
.access-link:hover { color:#7543ad; text-decoration:underline; }
.access-link:focus-visible,.access-show-password:focus-visible,.access-cancel:focus-visible,.access-brand:focus-visible { outline:2px solid #a576df; outline-offset:3px; }
.access-delivery { margin-top:25px; padding-top:15px; border-top:1px solid #e7ddef; font-size:9px; line-height:1.9; color:#a28caf; }
.access-delivery a { color:#8b6aa6; text-decoration:underline; text-underline-offset:2px; }
.access-loading { color:#9b7eb0; font-size:11px; padding:15px 0; }
.access-loading::before { content:''; display:inline-block; width:6px; height:6px; background:#a478da; border-radius:50%; margin-right:9px; }
.access-noscript { position:fixed; inset:35% 20%; padding:30px; border-radius:18px; background:white; color:#624978; box-shadow:0 20px 80px #39225530; text-align:center; z-index:20; }
@media(max-width:520px) { .access-card { padding:28px 24px 22px; } .access-brand { margin-bottom:25px; } #access-gate h1 { font-size:27px; } }
@media(max-width:350px) { #access-gate { width:calc(100vw - 20px); max-height:calc(100dvh - 20px); border-radius:18px; } .access-card { padding:24px 19px 20px; } #access-gate h1 { font-size:25px; } .access-actions { gap:10px; } }
@media(max-height:650px) { .access-card { padding-top:23px; } .access-brand { margin-bottom:18px; } }
@media(prefers-reduced-motion:reduce) { .access-field input { transition:none; } }

/* Dialogues d’accès : largeur et défilement restent contenus dans le viewport. */
#access-gate{box-sizing:border-box;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overscroll-behavior:contain;scroll-padding-block:20px}
#access-gate :is(.access-card,#access-content,.access-form,.access-field,.access-password,.access-context,.access-actions,.access-form-buttons){min-width:0}
#access-gate h1,.access-brand-product{overflow-wrap:anywhere}
#access-gate .access-brand{max-width:100%}
@media screen and (max-width:600px){
  #access-gate{width:calc(100vw - 24px);border-radius:18px}
  #access-gate .access-card{padding:24px 20px 22px}
  #access-gate h1{font-size:clamp(24px,6vw,29px);line-height:1.25}
  #access-description{font-size:14px;line-height:1.65;margin-bottom:20px}
  .access-field{font-size:13px;gap:8px}
  .access-field input{font-size:16px;min-height:48px;padding:12px}
  .access-password input{padding-right:54px}
  .access-show-password{width:44px;height:44px;padding:0;right:3px}
  .access-password-note{font-size:12px}
  .access-context{font-size:13px}
  .access-context span{font-size:12px}
  .access-submit.button,.access-cancel{min-height:48px;font-size:13px;line-height:1.5;white-space:normal;overflow-wrap:anywhere}
  .access-actions{gap:4px 16px;align-items:center}
  .access-link{display:inline-flex;align-items:center;min-height:44px;font-size:12px}
  .access-delivery{font-size:11px;line-height:1.7}
}
@media screen and (max-width:360px){
  #access-gate .access-card{padding:22px 16px 20px}
  .access-brand{gap:14px;margin-bottom:22px}
  .access-brand-logo{width:94px}
  .access-brand-product{padding-left:14px;font-size:15px}
  .access-form-buttons.has-cancel{grid-template-columns:minmax(0,1fr)}
  .access-form-buttons.has-cancel .access-submit{grid-row:1}
}
@media screen and (max-height:560px){
  #access-gate{max-height:calc(100dvh - 16px);margin:8px auto}
  #access-gate .access-card{padding-top:18px}
  .access-brand{margin-bottom:16px}
}
