body.auth-page .nav,body.auth-page .tabbar,body.auth-page .footer,body.auth-page .intro-skip{display:none!important}
body.auth-page main[data-page]{padding:0!important}
body.auth-page::before{display:none}

.auth-root{position:fixed;inset:0;z-index:60;background:#05070b;overflow:hidden;animation:authIn .9s var(--ease) both;transition:opacity .5s var(--ease),transform .6s var(--ease),filter .6s}
.auth-root.leaving{opacity:0;transform:scale(1.04);filter:blur(6px);pointer-events:none}
@keyframes authIn{from{opacity:0}}

.wall{position:absolute;inset:-22%;display:flex;justify-content:center;gap:clamp(10px,1.4vw,20px);transform:rotate(-11deg) scale(1.08);pointer-events:none}
.wcol{flex:0 0 clamp(120px,13vw,210px);display:flex;flex-direction:column;gap:clamp(10px,1.4vw,20px);animation:wallUp var(--d,70s) linear var(--o,0s) infinite;will-change:transform}
.wcol:nth-child(even){animation-direction:reverse}
.wcol img{width:100%;aspect-ratio:2/3;object-fit:cover;border-radius:14px;display:block;box-shadow:0 14px 34px -14px rgba(0,0,0,.9);filter:saturate(1.05) brightness(.82)}
@keyframes wallUp{to{transform:translate3d(0,-50%,0)}}
.wall-shade{position:absolute;inset:0;pointer-events:none;
  background:
    radial-gradient(ellipse 70% 80% at 28% 50%,rgba(5,7,11,.88) 0%,rgba(5,7,11,.55) 55%,rgba(5,7,11,.15) 100%),
    linear-gradient(to bottom,rgba(5,7,11,.7) 0%,rgba(5,7,11,0) 22%,rgba(5,7,11,0) 70%,rgba(5,7,11,.85) 100%),
    radial-gradient(60vmax 40vmax at 90% 100%,rgba(20,120,235,.2),transparent 70%)}

.auth-scroll{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;padding:0 max(18px,4vw)}
.auth-top{padding:28px 0 0;flex:none}.auth-top img{height:40px;width:auto;display:block}
.auth-stage{flex:1;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(360px,460px);gap:clamp(30px,6vw,110px);align-items:center;max-width:1280px;width:100%;margin:0 auto;padding:30px 0}
.auth-copy{animation:rise 1s var(--ease) .15s backwards}
.auth-kicker{display:inline-block;padding:7px 15px;border-radius:99px;background:var(--glass);border:1px solid var(--glass-line);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);font-size:.74rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#cfe8ff;box-shadow:var(--glass-edge)}
.auth-copy h1{font-size:clamp(2.5rem,5.6vw,5rem);font-weight:760;letter-spacing:-.05em;line-height:.98;margin:20px 0 18px;text-shadow:0 6px 40px rgba(0,0,0,.6)}
.auth-copy h1 em{font-style:normal;background:linear-gradient(100deg,#7fd0ff,#2f9bff 50%,#53e0ff);-webkit-background-clip:text;background-clip:text;color:transparent}
.auth-copy>p{max-width:46ch;font-size:clamp(1rem,1.3vw,1.2rem);line-height:1.55;color:#d3d9e4}
.auth-feats{list-style:none;display:grid;gap:12px;margin:28px 0 0;padding:0}
.auth-feats li{display:flex;align-items:center;gap:14px;color:#e6eaf2;font-weight:500}
.auth-feats li span{flex:none;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;color:#7fd0ff;background:var(--glass);border:1px solid var(--glass-line);box-shadow:var(--glass-edge);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.auth-stats{display:flex;gap:34px;margin-top:34px}
.auth-stats b{display:block;font-size:2rem;font-weight:750;letter-spacing:-.04em;line-height:1}
.auth-stats span{color:#9aa4b6;font-size:.82rem}

.auth-panel{position:relative;padding:30px 30px 26px;border-radius:30px;background:var(--glass-dark);border:1px solid var(--glass-line);
  backdrop-filter:blur(30px) saturate(190%);-webkit-backdrop-filter:blur(30px) saturate(190%);box-shadow:var(--glass-edge),0 40px 90px -20px rgba(0,0,0,.85);animation:sheetIn .9s var(--ease) .1s backwards}
.auth-panel.shake{animation:shake .5s var(--ease)}
@keyframes shake{20%{transform:translateX(-9px)}40%{transform:translateX(8px)}60%{transform:translateX(-5px)}80%{transform:translateX(3px)}}
.auth-tabs{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:99px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.1);margin-bottom:24px}
.auth-tabs button{position:relative;z-index:1;height:40px;border-radius:99px;font-weight:600;font-size:.92rem;color:#aab3c4;transition:color .3s}
.auth-tabs button.on{color:#fff}
.auth-thumb{position:absolute;z-index:0;top:4px;bottom:4px;left:4px;width:calc(50% - 4px);border-radius:99px;background:linear-gradient(180deg,rgba(255,255,255,.26),rgba(255,255,255,.13));box-shadow:inset 0 1px 0 rgba(255,255,255,.5),0 6px 16px -6px rgba(0,0,0,.5);transition:transform .55s var(--ease)}
.auth-root[data-mode=register] .auth-thumb{transform:translateX(100%)}
.auth-head h2{font-size:1.65rem;font-weight:720;letter-spacing:-.035em}
.auth-head p{color:#9aa4b6;margin:6px 0 22px;font-size:.95rem}
#af{display:grid;gap:14px}
#aerr .err{padding:11px 14px;border-radius:12px;background:rgba(255,90,90,.14);border:1px solid rgba(255,110,110,.35);color:#ffb4b4;font-size:.9rem}
.auth-root[data-mode=login] .reg-only{display:none}
.auth-root[data-mode=register] .log-only{display:none}
.reg-only{display:grid;gap:14px}

.af{position:relative}
.af input{width:100%;height:56px;padding:22px 48px 6px 46px;border-radius:16px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);color:#fff;font-size:1rem;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.35);transition:border-color .3s,box-shadow .3s,background .3s}
.af input:hover{background:rgba(255,255,255,.09)}
.af input:focus{border-color:rgba(88,188,255,.95);background:rgba(255,255,255,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.35),0 0 0 4px rgba(40,150,255,.25)}
.af label{position:absolute;left:46px;top:50%;transform:translateY(-50%);color:#8d98ab;font-size:1rem;pointer-events:none;transform-origin:left;transition:transform .35s var(--ease),color .3s}
.af input:focus+label,.af input:not(:placeholder-shown)+label{transform:translateY(-118%) scale(.74);color:#9fd6ff}
.af-ic{position:absolute;left:16px;top:50%;transform:translateY(-50%);color:#8d98ab;display:grid;pointer-events:none;transition:color .3s}
.af:focus-within .af-ic{color:#7fd0ff}
.af-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:#9aa4b6;transition:background .2s,color .2s}
.af-eye:hover{background:rgba(255,255,255,.1);color:#fff}
.af-msg{display:block;max-height:0;overflow:hidden;color:#ff9a9a;font-size:.78rem;padding-left:6px;opacity:0;transition:max-height .35s var(--ease),opacity .3s,margin .3s}
.af.bad .af-msg{max-height:64px;opacity:1;margin-top:6px;line-height:1.35}
.af.bad input{border-color:rgba(255,110,110,.8);box-shadow:0 0 0 4px rgba(255,80,80,.14)}
.pw-meter{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:-2px}
.pw-meter i{height:4px;border-radius:99px;background:rgba(255,255,255,.12);transition:background .35s}
.pw-meter[data-s="1"] i:nth-child(-n+1){background:#ff6b6b}.pw-meter[data-s="2"] i:nth-child(-n+2){background:#ffb454}
.pw-meter[data-s="3"] i:nth-child(-n+3){background:#7ed957}.pw-meter[data-s="4"] i{background:#3ddc84}
.pw-hint{font-size:.78rem;color:#8d98ab;margin:-4px 0 0 6px}
.auth-row{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:22px}
.auth-check{display:flex;align-items:center;gap:10px;font-size:.88rem;color:#c3cad8;cursor:pointer;user-select:none}
.auth-check input{position:absolute;opacity:0;pointer-events:none}
.auth-check span{width:20px;height:20px;border-radius:7px;display:grid;place-items:center;border:1.5px solid rgba(255,255,255,.3);background:rgba(255,255,255,.06);color:transparent;transition:background .25s,border-color .25s,color .25s,transform .35s var(--ease)}
.auth-check input:checked+span{background:linear-gradient(180deg,#58bcff,#0b66c9);border-color:rgba(255,255,255,.5);color:#fff}
.auth-check:active span{transform:scale(.88)}
.auth-check input:focus-visible+span{box-shadow:0 0 0 3px rgba(88,188,255,.5)}
.caps{color:#ffcf7a;font-size:.78rem}
.auth-submit{position:relative;height:54px;border-radius:99px;font-size:1.02rem;font-weight:650;color:#fff;margin-top:4px;background:linear-gradient(180deg,#58bcff 0%,#1a8cf0 52%,#0b66c9 100%);border:1px solid rgba(255,255,255,.4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 -10px 18px rgba(0,50,130,.35),0 14px 34px -10px rgba(25,140,255,.8);transition:transform .45s var(--ease),box-shadow .3s,filter .3s}
.auth-submit:hover{transform:translateY(-1px) scale(1.015);filter:brightness(1.07)}
.auth-submit:active{transform:scale(.97)}
.auth-submit:disabled{cursor:progress}
.auth-submit .spin{position:absolute;left:50%;top:50%;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;opacity:0;animation:spin .8s linear infinite;transition:opacity .2s}
.auth-submit.busy .lbl{opacity:0}.auth-submit.busy .spin{opacity:1}
@keyframes spin{to{transform:rotate(360deg)}}
.auth-alt{margin-top:20px;text-align:center;color:#9aa4b6;font-size:.92rem}
.auth-link{color:#7fd0ff;font-weight:650;margin-left:4px}.auth-link:hover{text-decoration:underline}
.auth-foot{flex:none;text-align:center;color:#6f7a8c;font-size:.76rem;padding:8px 0 22px}
.auth-foot a{color:#8fa3bf}.auth-foot a:hover{text-decoration:underline}

@media (max-width:980px){
  .auth-stage{grid-template-columns:minmax(0,480px);justify-content:center;gap:28px}
  .auth-copy h1{font-size:clamp(2.2rem,9vw,3.2rem)}.auth-feats,.auth-stats{display:none}
  .auth-copy>p{display:none}.auth-copy{text-align:center}
  .wall-shade{background:linear-gradient(to bottom,rgba(5,7,11,.72),rgba(5,7,11,.6) 50%,rgba(5,7,11,.88))}
}
@media (max-width:520px){.auth-panel{padding:22px 18px 20px;border-radius:26px}.auth-top img{height:34px}.auth-top{padding-top:20px}}
@media (prefers-reduced-motion:reduce){.wcol{animation:none}.auth-root,.auth-copy,.auth-panel{animation:none}}

.hp{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none}
.captcha{display:grid;gap:6px}
.captcha[hidden]{display:none}
#capWidget{min-height:65px;border-radius:14px;overflow:hidden}
.cap-msg{display:block;max-height:0;overflow:hidden;opacity:0;color:#ff9a9a;font-size:.78rem;padding-left:6px;transition:max-height .35s var(--ease),opacity .3s}
.cap-msg.on{max-height:30px;opacity:1}

.tfa{text-align:center;display:grid;gap:12px}
.tfa-ic{width:54px;height:54px;border-radius:18px;margin:4px auto 0;display:grid;place-items:center;color:#7fd0ff;background:var(--glass);border:1px solid var(--glass-line);box-shadow:var(--glass-edge)}
.tfa h2{font-size:1.5rem;font-weight:720;letter-spacing:-.03em}.tfa>p{color:#9aa4b6;font-size:.93rem;line-height:1.5}
.tfa form{display:grid;gap:14px;text-align:left}
#tfa-code{letter-spacing:.25em;font-weight:700;padding-left:16px}
.tfa .af label{left:16px}
.tfa-sheet{width:min(520px,100%);padding:30px}
.tfa-sheet h2{font-size:1.4rem;margin-bottom:8px}.tfa-sheet .field{margin-top:8px}
.tfa-qr{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin:16px 0}
.tfa-qr img{border-radius:14px;background:#fff;padding:8px}
.tfa-key{display:block;margin-top:8px;padding:10px 12px;border-radius:10px;background:rgba(255,255,255,.07);font-size:.95rem;letter-spacing:.08em;word-break:break-all;user-select:all}
.tfa-codes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:16px 0}
.tfa-codes code{padding:10px;border-radius:10px;text-align:center;background:rgba(255,255,255,.07);font-size:1rem;letter-spacing:.06em;user-select:all}

#v-code{letter-spacing:.5em;font-weight:700;font-size:1.3rem;padding-left:16px}
.tfa .auth-alt .auth-link:disabled{color:#6f7a8c;cursor:default;text-decoration:none}
#vInfo b{color:#e8edf6}

/* Règles du mot de passe affichées en direct */
.pwbox{display:grid;gap:8px}
.pw-rules{list-style:none;margin:0;padding:0 0 0 6px;display:grid;gap:3px;font-size:.78rem;color:#8d98ab}
.pw-rules li{display:flex;gap:8px;align-items:baseline;transition:color .25s}
.pw-rules b{width:14px;text-align:center;font-weight:800}
.pw-rules li.ok{color:#7ee0a3}.pw-rules li.ko{color:#ffb4a8}
.pw-hint{line-height:1.35}
.pwbox-wrap{margin-top:10px}
.acc-card .pw-rules,.acc-card .pw-hint{font-size:.82rem}
