/* Porte d'entrée publique — promotion validée depuis T-est. */

#loginView.t-entry-screen{
  --entry-ink:#063f4d;
  --entry-muted:#537780;
  --entry-cyan:#08c6da;
  --entry-cyan-2:#008fac;
  --entry-deep:#045268;
  --entry-glow:rgba(8,198,218,.34);
  min-height:100dvh;
  padding:0;
  display:block;
  overflow-x:hidden;
  background:
    radial-gradient(circle at 84% 9%,rgba(8,198,218,.18),transparent 29%),
    radial-gradient(circle at 7% 61%,rgba(4,82,104,.10),transparent 35%),
    linear-gradient(180deg,#ffffff 0%,#edf8fa 100%);
  color:var(--entry-ink);
}

#loginView *,#accessRequestDialog *{box-sizing:border-box}

#loginView .t-entry-shell{
  width:min(100%,680px);
  min-height:100dvh;
  margin:0 auto;
  padding:calc(16px + env(safe-area-inset-top)) 12px calc(16px + env(safe-area-inset-bottom));
  display:grid;
  grid-template-rows:auto auto auto;
  align-content:center;
  gap:clamp(14px,2.4dvh,22px);
}

#loginView .t-primary-access,
#loginView .t-auth-stage{
  min-height:0;
  display:block;
}

#loginView .t-primary-access{
  position:relative;
}

#loginView #accessRequestStatusHost:empty{display:none}

#loginView .t-primary-access .request-access-status{
  margin:0 0 11px;
}

#loginView .t-access-intent{
  position:relative;
  isolation:isolate;
  overflow:hidden;
  width:100%;
  min-height:clamp(118px,15dvh,150px);
  padding:20px 18px 20px 24px;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  gap:16px;
  border:1.5px solid rgba(0,143,172,.35);
  border-radius:30px;
  background:linear-gradient(128deg,#f9feff 0%,#e6fbfe 47%,#ffffff 100%);
  color:var(--entry-ink);
  text-align:left;
  box-shadow:
    0 24px 62px rgba(0,114,140,.18),
    0 0 0 6px rgba(8,198,218,.07),
    0 0 44px rgba(8,198,218,.18);
}

#loginView .t-access-intent::before{
  content:"";
  position:absolute;
  z-index:-2;
  inset:-120%;
  background:conic-gradient(
    from 205deg,
    transparent 0 30%,
    rgba(8,198,218,.82),
    rgba(69,73,226,.38),
    transparent 66% 100%
  );
  animation:entryOrbit 8s linear infinite;
}

#loginView .t-access-intent::after{
  content:"";
  position:absolute;
  z-index:-1;
  inset:2px;
  border-radius:28px;
  background:
    radial-gradient(circle at 16% 32%,rgba(8,198,218,.14),transparent 37%),
    linear-gradient(128deg,#fbfeff,#eafafd 58%,#ffffff);
}

#loginView .t-access-intent span{display:grid;gap:7px}
#loginView .t-access-intent small{
  color:#087f99;
  font-size:.67rem;
  font-weight:950;
  letter-spacing:.14em;
}
#loginView .t-access-intent strong{
  font-size:clamp(1.35rem,5.3vw,1.85rem);
  line-height:1.02;
  letter-spacing:-.035em;
  font-weight:950;
}
#loginView .t-access-intent b{
  display:block;
  justify-self:end;
  padding:0 2px;
  background:transparent;
  color:#007f9a;
  font-size:1.85rem;
  line-height:1;
  font-weight:850;
  box-shadow:none;
}
#loginView .t-access-intent:active{transform:scale(.992)}

#loginView .t-auth-focus{
  position:relative;
  isolation:isolate;
  width:100%;
  padding:clamp(15px,2.4vh,22px);
  border:1.5px solid rgba(0,143,170,.30);
  border-radius:28px;
  background:linear-gradient(180deg,rgba(229,250,253,.98),rgba(255,255,255,.99));
  box-shadow:0 22px 58px rgba(4,82,104,.17);
}

#loginView .t-auth-focus::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:16px 10% auto;
  height:54px;
  border-radius:999px;
  background:radial-gradient(ellipse,var(--entry-glow),transparent 70%);
  filter:blur(14px);
}

#loginView .t-code-form{display:grid;gap:10px}

#loginView .stip-code-wrap{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  align-items:center;
  min-height:68px;
  border:2.5px solid rgba(0,151,180,.43);
  border-radius:20px;
  background:#fff;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.9),0 9px 25px rgba(4,82,104,.11);
  transition:border-color 150ms ease,box-shadow 150ms ease;
}

#loginView .stip-code-wrap:focus-within{
  border-color:#08c6da;
  box-shadow:0 0 0 6px rgba(8,198,218,.19),0 14px 32px rgba(4,82,104,.15);
}

#loginView #accessCode{
  width:100%;
  height:64px;
  min-width:0;
  padding:0 14px 0 22px;
  border:0;
  outline:0;
  background:transparent;
  color:var(--entry-ink);
  caret-color:var(--entry-cyan-2);
  font-size:1.48rem;
  font-weight:950;
  letter-spacing:.22em;
}

#loginView #accessCode::placeholder{
  color:#9fb6bc;
  -webkit-text-fill-color:#9fb6bc;
  letter-spacing:.33em;
}

#loginView #accessCode.stip-code-masked{
  color:transparent;
  -webkit-text-fill-color:transparent;
}

#loginView .stip-code-mask{
  position:absolute;
  left:22px;
  right:92px;
  top:50%;
  transform:translateY(-50%);
  pointer-events:none;
  color:#0d5364;
  font-size:1.28rem;
  font-weight:950;
  letter-spacing:.27em;
  white-space:nowrap;
}

#loginView .stip-code-toggle{
  z-index:2;
  min-width:74px;
  min-height:48px;
  margin-right:8px;
  padding:0 11px;
  border:1px solid rgba(4,82,104,.09);
  border-radius:15px;
  background:#e4f8fb;
  color:#063f4d;
  font-weight:950;
}

#loginView .t-login-submit{
  position:relative;
  overflow:hidden;
  min-height:62px;
  padding:0 13px 0 20px;
  display:grid;
  grid-template-columns:1fr 45px;
  align-items:center;
  border:0;
  border-radius:20px;
  background:linear-gradient(118deg,#006d89 0%,#00a8c2 48%,#18d0df 100%);
  color:#fff;
  box-shadow:0 15px 34px rgba(0,143,170,.35);
  font-size:1rem;
  font-weight:950;
}

#loginView .t-login-submit::before{
  content:"";
  position:absolute;
  inset:-2px auto -2px -45%;
  width:34%;
  transform:skewX(-20deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.31),transparent);
  animation:entryShine 4.8s ease-in-out infinite;
}

#loginView .t-login-submit b{
  width:42px;height:42px;
  display:grid;place-items:center;
  justify-self:end;
  border-radius:15px;
  background:rgba(255,255,255,.18);
  font-size:1.32rem;
}

#loginView .message{
  min-height:18px;
  margin:7px 3px 0;
  color:#5f7980;
  font-size:.76rem;
  font-weight:750;
}
#loginView .message.error{color:#a43b46}
#loginView .message.success{color:#218060}

#loginView .t-public-access{
  min-height:0;
  display:grid;
  grid-template-rows:auto auto;
  gap:12px;
  padding:15px 10px 16px;
  border:1.5px solid rgba(4,82,104,.20);
  border-radius:28px;
  background:rgba(255,255,255,.96);
  box-shadow:0 16px 38px rgba(4,82,104,.12);
}

#loginView .t-public-heading{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:24px;
}
#loginView .t-public-heading strong{
  color:#376872;
  font-size:.72rem;
  font-weight:950;
  letter-spacing:.08em;
  text-transform:uppercase;
}

#loginView .t-app-title{
  min-height:0;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  align-items:start;
  gap:7px;
}

#loginView .t-app-link{
  min-width:0;
  display:grid;
  justify-items:center;
  align-content:start;
  gap:9px;
  padding:5px 2px 7px;
  border-radius:19px;
  color:var(--entry-ink);
  text-decoration:none;
  -webkit-tap-highlight-color:transparent;
}

#loginView .t-app-link:active{transform:scale(.97)}
#loginView .t-app-icon{
  width:clamp(66px,18vw,78px);
  height:clamp(66px,18vw,78px);
  display:block;
  overflow:hidden;
  border-radius:23px;
  filter:saturate(1.03) contrast(1.04) drop-shadow(0 10px 15px rgba(4,82,104,.16));
}
#loginView .t-app-icon img{
  width:100%;height:100%;display:block;object-fit:cover;
}
#loginView .t-app-link strong{
  max-width:112px;
  font-size:.76rem;
  line-height:1.12;
  font-weight:950;
  text-align:center;
}
#loginView .t-app-link-muted{opacity:.88}

/* Clavier ouvert : aucune géométrie locale.
   Le moteur FormUX commun centre uniquement la question active,
   son champ et son action dans le visualViewport réel. */
#loginForm.stip-keyboard-focus-mode .stip-code-wrap{
  min-height:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

@keyframes entryShine{
  0%,68%{left:-45%}
  82%,100%{left:135%}
}
@keyframes entryOrbit{to{transform:rotate(1turn)}}

.request-field-help{display:block;margin-top:5px;color:#7b8f95;font-size:.65rem;font-weight:700}.request-access-status{margin:16px 0 0;padding:16px;border:1px solid rgba(15,145,168,.28);border-radius:20px;background:linear-gradient(145deg,#effbfc,#fff);box-shadow:0 12px 28px rgba(22,72,82,.09)}.request-access-status.pending{border-color:rgba(15,145,168,.24)}.request-access-status.approved{border-color:rgba(36,151,101,.3);background:linear-gradient(145deg,#effaf5,#fff)}.request-access-status.rejected{border-color:rgba(170,83,83,.22);background:linear-gradient(145deg,#fff6f6,#fff)}.request-status-head{display:grid;gap:3px}.request-status-head span{font-size:.58rem;font-weight:950;letter-spacing:.11em;color:#159aae}.request-access-status.approved .request-status-head span{color:#2f8b63}.request-status-head strong{font-size:1.04rem;color:#164954}.request-access-status p{margin:7px 0 0;color:#6f858c;font-size:.76rem;line-height:1.4;font-weight:700}.request-status-code{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:12px}.request-status-code span{min-height:50px;display:flex;align-items:center;padding:0 14px;border:1px solid rgba(15,145,168,.22);border-radius:14px;background:#fff;color:#164954;font-size:1.2rem;font-weight:950;letter-spacing:.2em}.request-status-code button,.request-status-use,.request-status-dismiss{border:0;border-radius:14px;font-weight:900}.request-status-code button{min-width:68px;background:#edf5f7;color:#164954}.request-status-use{width:100%;min-height:50px;margin-top:10px;background:linear-gradient(135deg,#108eaa,#22bdd0);color:#fff;box-shadow:0 8px 18px rgba(15,154,179,.18)}.request-status-dismiss{width:100%;min-height:46px;margin-top:9px;background:#fff;color:#596f76;border:1px solid rgba(22,72,82,.16)}.request-status-reminder{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:14px;padding:13px 14px;border-radius:16px;background:#fff;border:1px solid rgba(38,151,101,.2)}.request-status-reminder small{font-size:.58rem;font-weight:950;letter-spacing:.11em;color:#729087}.request-status-reminder strong{font-size:1.35rem;letter-spacing:.18em;color:#164954}.request-status-message{padding:10px 12px;border-radius:13px;background:rgba(255,255,255,.68)}.request-status-use{display:flex;align-items:center;justify-content:center;gap:12px;font-size:.84rem}.request-status-use b{font-size:1.1rem}.access-request-dialog{width:min(560px,calc(100% - 24px));height:min(88dvh,760px);max-height:min(88dvh,760px);padding:0!important;border-radius:30px!important;overflow:hidden;background:linear-gradient(180deg,#f7fcfd 0%,#fff 42%)!important}.access-request-dialog::backdrop{background:rgba(9,42,52,.48)!important;backdrop-filter:blur(8px)!important}.access-request-form-v2{height:100%;max-height:100%;display:grid!important;grid-template-rows:auto minmax(0,1fr) auto;padding:0!important;overflow:hidden}.access-request-form-v2 header{position:relative;top:auto;z-index:2;margin:0;padding:22px 22px 18px;background:linear-gradient(180deg,rgba(247,252,253,.99),rgba(247,252,253,.94));backdrop-filter:blur(12px);border-bottom:1px solid rgba(22,72,82,.08)}.access-request-form-v2 .request-form-body{min-height:0;overflow:auto;overscroll-behavior:contain;padding:0 22px 12px}.access-request-form-v2 header small{font-size:.62rem;letter-spacing:.14em}.access-request-form-v2 header h2{margin:4px 0 4px;font-size:1.8rem;line-height:1}.access-request-form-v2 header p{max-width:380px;font-size:.82rem;line-height:1.4}.access-request-form-v2 header button{flex:0 0 auto;width:42px;height:42px;border-radius:14px}.request-step{display:grid;grid-template-columns:36px minmax(0,1fr);gap:10px;align-items:center;margin:18px 0 10px}.request-step>span{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(145deg,#1098b3,#20bdd0);color:#fff;font-size:.82rem;font-weight:950;box-shadow:0 7px 16px rgba(15,154,179,.18)}.request-step strong,.request-step small{display:block}.request-step strong{font-size:.9rem;color:#164954}.request-step small{margin-top:2px;color:#7a8d93;font-size:.67rem;font-weight:700;line-height:1.25}.request-name-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.request-name-grid>.request-family-name{order:1}.request-name-grid>.request-given-name{order:2}.access-request-form-v2 label{margin-top:10px;font-size:.72rem;color:#315964}.access-request-form-v2 input{min-height:50px;border-radius:15px!important;border:1px solid rgba(18,85,99,.18)!important;background:#fff!important;box-shadow:0 5px 14px rgba(22,72,82,.04)}.access-request-form-v2 input:focus{border-color:#18a7bd!important;box-shadow:0 0 0 4px rgba(24,167,189,.09)!important}.request-role input{font-weight:800}.request-code-card{display:block!important;margin-top:0!important;padding:13px 14px 14px;border:1px solid rgba(18,85,99,.14);border-radius:18px;background:linear-gradient(145deg,#eff9fb,#fff);box-shadow:0 8px 18px rgba(22,72,82,.05)}.request-code-card>span{display:block;font-size:.62rem;font-weight:950;letter-spacing:.09em;color:#53808a}.request-code-card>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;margin-top:7px}.request-code-card input{margin:0!important;font-size:1.25rem!important;letter-spacing:.22em!important;font-weight:950!important;text-align:center}.request-code-card b{padding:7px 9px;border-radius:999px;background:#e6f5f7;color:#168da5;font-size:.58rem;white-space:nowrap}.access-request-form-v2 .message{min-height:18px;margin:10px 2px 0}.access-request-form-v2 .request-submit{width:auto;min-height:56px;margin:10px 22px 22px;padding:0 16px;border-radius:18px!important;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#0e8faa,#25bed0)!important;color:#fff;box-shadow:0 12px 24px rgba(15,154,179,.22);font-size:.9rem}.access-request-form-v2.stip-keyboard-focus-mode{grid-template-rows:auto!important;grid-auto-rows:auto!important}.access-request-form-v2.stip-keyboard-focus-mode .request-form-body.stip-keyboard-path{overflow:visible;padding:0!important}.access-request-form-v2 .request-submit b{font-size:1.35rem}.access-request-form-v2 .request-submit:disabled{opacity:.55;box-shadow:none}

@media(max-width:720px){
  #loginView .t-entry-shell{padding-inline:10px}
  #loginView .t-access-intent{border-radius:26px;padding-left:20px}
  #loginView .t-access-intent::after{border-radius:24px}
  #loginView .t-public-access{border-radius:24px;padding-inline:8px}
  #loginView .t-app-link strong{font-size:.71rem}

  .request-name-grid{grid-template-columns:1fr}
  .access-request-dialog{
    width:calc(100% - 18px);
    height:90dvh;
    max-height:90dvh;
    border-radius:26px!important;
  }
  .access-request-form-v2{padding-inline:0!important}
  .access-request-form-v2 header{margin-inline:0;padding-inline:18px}
  .access-request-form-v2 .request-form-body{padding-inline:18px}
  .access-request-form-v2 .request-submit{margin-inline:18px}
  .request-code-card>div{grid-template-columns:1fr}
  .request-code-card b{justify-self:start}
  .request-status-reminder strong{font-size:1.12rem}
}

@media(max-height:680px){
  #loginView .t-entry-shell{
    gap:9px;
    padding-top:8px;
    padding-bottom:8px;
  }
  #loginView .t-access-intent{min-height:104px}
  #loginView .t-public-access{padding-block:10px}
  #loginView .t-app-icon{width:58px;height:58px;border-radius:19px}
}

@media(prefers-reduced-motion:reduce){
  #loginView *,#accessRequestDialog *{
    transition:none!important;
    animation:none!important;
    scroll-behavior:auto!important;
  }
}


/* Accès personnel : dès que le code prend le focus, le champ et son action
   deviennent l'unique contenu utile au-dessus du clavier. */
#loginView.stip-keyboard-focus-mode .t-access-intent,
#loginView.stip-keyboard-focus-mode #accessRequestStatusHost{
  display:none!important;
}
#loginView.stip-keyboard-focus-mode .t-primary-access{
  display:block!important;
  width:min(100%,620px)!important;
}


/* Focus code d’accès : le moteur commun centre uniquement le bloc de connexion
   dans le visualViewport. La demande d’accès reste accessible depuis l’icône dédiée. */
#loginView .t-primary-access.stip-keyboard-focus-mode .t-auth-stage{
  width:100%;
  max-width:620px;
  margin:0 auto;
}
#loginView .t-primary-access.stip-keyboard-focus-mode .t-auth-focus{
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
  box-shadow:none;
}
#loginView .t-primary-access.stip-keyboard-focus-mode .stip-code-wrap{
  min-height:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

#loginView .t-primary-access.stip-keyboard-focus-mode .stip-code-toggle{
  width:auto!important;
  min-width:74px!important;
  max-width:92px!important;
  margin:0 8px 0 0!important;
  padding:0 11px!important;
}


#loginView .stip-code-toggle:disabled{
  opacity:.42!important;
  cursor:default!important;
}


/* Unified public access request — one flow, adaptive by profile. */
.request-profile-grid{display:grid;grid-template-columns:1fr;gap:8px;margin:2px 0 4px}
.request-profile-choice{position:relative!important;margin:0!important;display:block!important;cursor:pointer}
.request-profile-choice input{position:absolute!important;opacity:0!important;pointer-events:none;width:1px!important;height:1px!important;min-height:0!important}
.request-profile-choice>span{min-height:62px;padding:12px 14px;display:grid;align-content:center;gap:3px;border:1.5px solid rgba(18,85,99,.15);border-radius:17px;background:#fff;box-shadow:0 6px 16px rgba(22,72,82,.045);transition:.16s ease}
.request-profile-choice>span strong{color:#164954;font-size:.86rem;line-height:1.15}
.request-profile-choice>span small{color:#7a8d93;font-size:.67rem;font-weight:750;line-height:1.25}
.request-profile-choice:has(input:checked)>span{border-color:#14acc3;background:linear-gradient(145deg,#eafafd,#fff);box-shadow:0 0 0 4px rgba(20,172,195,.10),0 9px 20px rgba(22,72,82,.07)}
.request-profile-choice:has(input:checked)>span strong{color:#087f99}
.request-external-fields[hidden],#requestSharedFields[hidden],#requestRoleWrap[hidden],.access-request-form-v2 .request-submit[hidden]{display:none!important}
.request-upload-card{position:relative!important;display:block!important;margin-top:8px!important;padding:15px;border:1.5px dashed #a9cbd2;border-radius:17px;background:#f5fbfc;text-align:center;cursor:pointer;overflow:hidden}
.request-upload-card input{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-height:0!important;opacity:0!important;cursor:pointer}
.request-upload-card b{display:block;color:#174f61;font-size:.88rem}
.request-upload-card span{display:block;margin-top:4px;color:#71878e;font-size:.68rem;line-height:1.3}
.request-upload-name{min-height:18px;margin:7px 2px 0;color:#137653;font-size:.7rem;font-weight:850}
.request-external-fields textarea{width:100%;min-height:78px;padding:11px 12px;border:1px solid rgba(18,85,99,.18);border-radius:15px;background:#fff;color:#173e55;font:inherit;resize:vertical;outline:none;box-shadow:0 5px 14px rgba(22,72,82,.04)}
.request-external-fields textarea:focus{border-color:#18a7bd;box-shadow:0 0 0 4px rgba(24,167,189,.09)}
@media(max-width:720px){.request-profile-choice>span{min-height:58px;padding:11px 12px}}


/* Planning source chooser: camera, photo library, PDF/file. */
.request-upload-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:8px}
.request-upload-choice{position:relative!important;display:grid!important;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:9px;min-height:66px;margin:0!important;padding:11px 12px;border:1.5px solid rgba(18,85,99,.16);border-radius:17px;background:linear-gradient(145deg,#f7fcfd,#fff);box-shadow:0 7px 17px rgba(22,72,82,.05);cursor:pointer;overflow:hidden}
.request-upload-choice-wide{grid-column:1/-1}
.request-upload-choice input{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-height:0!important;opacity:0!important;cursor:pointer}
.request-upload-choice-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:#e6f6f8;font-size:1.15rem;line-height:1}
.request-upload-choice strong{min-width:0;color:#174f61;font-size:.78rem;line-height:1.18;font-weight:950}
.request-upload-choice:active{transform:scale(.985);border-color:#14acc3;background:#eefbfc}
.request-upload-name:not(:empty){margin-top:9px;padding:9px 11px;border:1px solid rgba(25,139,103,.16);border-radius:13px;background:#f1faf6;color:#176f53}
@media(max-width:380px){.request-upload-actions{grid-template-columns:1fr}.request-upload-choice-wide{grid-column:auto}}
