/* Qfit acceso — geometría compartida. Los temas contienen los acabados. */
.auth-page{min-height:100svh;letter-spacing:-.01em}
.auth-page::before,.auth-page::after{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none}
.auth-page::after{z-index:-1}
.access-shell{width:100%;min-height:100svh;display:grid;grid-template-columns:minmax(0,1.08fr) minmax(440px,.92fr)}
.access-story{position:relative;min-height:100svh;padding:clamp(28px,4vw,56px);display:flex;flex-direction:column;overflow:hidden;isolation:isolate}
.access-story-head{display:flex;align-items:center;justify-content:space-between;gap:24px;position:relative;z-index:4}
.access-brand{display:flex;align-items:center;gap:13px}
.access-mark{width:52px;height:52px;flex:0 0 auto;display:grid;place-items:center}
.qfit-glyph{display:block;font:700 27px/1 var(--font-display);letter-spacing:-.1em;transform:translateX(-1px)}
.access-brand>span:last-child{display:flex;flex-direction:column}
.access-brand b{font:700 22px/1 var(--font-display);letter-spacing:-.055em}
.access-brand small{margin-top:5px;font-size:7px;line-height:1;letter-spacing:.13em;text-transform:uppercase}
.access-back{display:flex;align-items:center;gap:8px;font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.access-story-copy{position:relative;z-index:3;margin:auto 0;max-width:720px;padding:70px 0 180px}
.access-kicker{display:flex;align-items:center;gap:10px;font-size:8px;letter-spacing:.2em;font-weight:800;text-transform:uppercase}
.access-kicker i{display:block;width:30px;height:2px}
.access-story h1{font-size:clamp(70px,8vw,124px);line-height:.82;letter-spacing:-.08em;text-transform:uppercase;margin:26px 0 30px;max-width:780px}
.access-story h1 em{font-style:normal;font-weight:400}
.access-story-copy>p{font-size:clamp(15px,1.35vw,19px);line-height:1.6;max-width:540px}
.access-visual{position:absolute;right:-30px;bottom:55px;width:min(45vw,560px);height:390px;z-index:2;pointer-events:none}
.access-orbit{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:1px solid transparent}
.orbit-a{width:370px;height:370px}.orbit-b{width:260px;height:260px}
.access-score,.access-day,.access-streak{position:absolute}
.access-score{left:38px;bottom:30px;width:178px;padding:20px;transform:rotate(-7deg)}
.access-score small,.access-score b{display:block;font-size:7px;letter-spacing:.14em;text-transform:uppercase;font-weight:800}
.access-score strong{display:block;font:700 48px/1 var(--font-display);letter-spacing:-.07em;margin:15px 0 10px}.access-score strong span{font-size:14px}.access-score>i{display:block;height:5px;margin-bottom:12px}
.access-day{right:24px;top:25px;width:96px;height:96px;display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(7deg)}
.access-day small{font-size:8px;letter-spacing:.22em;font-weight:800}.access-day strong{font:700 38px/.9 var(--font-display)}
.access-streak{right:58px;bottom:36px;width:240px;padding:18px;display:grid;grid-template-columns:1fr auto;align-items:center}
.access-streak>span{grid-column:1/-1;font-size:7px;letter-spacing:.15em;text-transform:uppercase;font-weight:800;margin-bottom:6px}.access-streak strong{font:700 27px/1 var(--font-display)}.access-streak strong small{font-size:9px}.access-streak>i{width:38px;height:38px;display:grid;place-items:center;font-style:normal;font-size:18px}
.access-story-foot{position:relative;z-index:4;display:flex;gap:20px;flex-wrap:wrap;font-size:7px;letter-spacing:.13em;text-transform:uppercase;font-weight:800}
.access-story-foot span::before{content:"✓";margin-right:7px}
.access-panel{min-height:100svh;padding:clamp(22px,4vw,52px);display:flex;flex-direction:column;justify-content:center;position:relative}
.access-panel-top{position:absolute;top:clamp(22px,4vw,42px);left:clamp(22px,4vw,52px);right:clamp(22px,4vw,52px);display:flex;align-items:center;justify-content:space-between;gap:20px}
.access-panel-top>span{font-size:8px;letter-spacing:.18em;font-weight:800}
.access-card{width:100%;max-width:470px;margin:auto;padding:clamp(26px,4vw,44px)}
.active-session{text-align:center}.active-session[hidden],#auth-flow[hidden]{display:none}.active-session-mark{width:74px;height:74px;margin:0 auto 22px;display:grid;place-items:center;border-radius:22px;font:700 37px/1 var(--font-display);letter-spacing:-.1em}.active-session h2{margin-bottom:12px}.active-session>p{font-size:14px;line-height:1.6;margin:0 0 24px}.active-session .btn{gap:6px}.active-session .btn-ghost{margin-top:10px}
.access-card-head{margin-bottom:25px}.access-step-label{display:block;font-size:8px;letter-spacing:.2em;font-weight:800;margin-bottom:14px}.access-card h2{font-size:clamp(31px,3.2vw,43px);line-height:1;letter-spacing:-.055em;margin-bottom:10px}.access-card-head p{font-size:13px;line-height:1.55}
.auth-page .auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin-bottom:28px}
.auth-page .auth-tabs button{padding:11px 8px;font-size:12px;font-weight:800;cursor:pointer}
.auth-page .auth-form[hidden],.auth-page .auth-step[hidden]{display:none}
.auth-page .auth-field{display:flex;flex-direction:column;gap:7px;margin-bottom:14px}
.auth-page .auth-field>span{font-size:9px;letter-spacing:.1em;text-transform:uppercase;font-weight:800}
.auth-page .auth-form input{box-sizing:border-box;width:100%;min-width:0;height:52px;min-height:52px;max-height:52px;padding:0 15px;font:600 14px/1 var(--font-body);margin:0;appearance:none}
.auth-page .auth-name-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}
.auth-page .auth-name-row input{width:100%;min-width:0;flex:none}
.auth-hint{display:flex;justify-content:space-between;gap:12px;font-size:10px;line-height:1.45;margin:-3px 0 15px}.auth-hint b{white-space:nowrap;font-size:9px}.auth-hint b.valid{color:var(--auth-accent)}.auth-hint b.invalid{color:var(--danger)}
.auth-page .auth-form input.field-error{border-color:var(--danger);box-shadow:0 0 0 3px color-mix(in srgb,var(--danger) 12%,transparent)}
.auth-page .btn,.auth-page .btn-ghost{width:100%;min-height:52px;display:flex;align-items:center;justify-content:center;margin-top:8px;font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.auth-page .auth-passkey{margin-top:9px}
.auth-page .auth-back{display:inline-flex;margin:0 0 18px;padding:0;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}
.auth-page .auth-step h3{font:700 29px/1 var(--font-display);letter-spacing:-.045em;margin-bottom:8px}
.auth-page .auth-step-sub{font-size:13px;margin-bottom:20px}
.auth-page .pin-input-wrap{position:relative;margin:5px 0 16px}
.auth-page .pin-real{position:absolute;left:50%;top:0;width:1px!important;height:1px!important;z-index:-1;cursor:text;margin:0!important;padding:0!important}
.auth-page .pin-cells{display:flex;justify-content:center;gap:19px;pointer-events:none;margin:12px 0 24px}
.auth-page .pin-cell{flex:0 0 16px;width:16px;height:16px;display:grid;place-items:center}
.auth-page .pin-cell .dot{width:8px;height:8px;transform:scale(0);transition:transform .18s cubic-bezier(.34,1.56,.64,1)}
.auth-page .pin-cell.filled .dot{transform:scale(1)}
.auth-page .pin-keypad{width:min(100%,294px);margin:0 auto 18px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px 22px;justify-items:center}
.auth-page .pin-keypad button,.auth-page .pin-keypad>span{width:64px;height:64px}
.auth-page .pin-keypad button{display:grid;place-items:center;padding:0;font:500 25px/1 var(--font-display);cursor:pointer;transition:transform .12s,background .15s,border-color .15s}
.auth-page .pin-keypad button:active{transform:scale(.91)}
.auth-page .pin-keypad .pin-delete{font-size:20px}
.auth-page .pin-err{min-height:20px;margin-top:14px;font-size:12px;line-height:1.45}
.auth-page .auth-credit{margin:14px 0 0;font-size:9px;line-height:1.5;text-align:center}
.auth-step.stepping{animation:accessStepIn .34s cubic-bezier(.22,.8,.25,1)}
@keyframes accessStepIn{from{opacity:0;transform:translateX(var(--step-dir,18px))}to{opacity:1;transform:none}}
.pin-cell.shake{animation:accessPinShake .38s ease}
@keyframes accessPinShake{0%,100%{transform:none}20%{transform:translateX(-6px)}40%{transform:translateX(5px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}
@media(max-width:980px){.access-shell{grid-template-columns:1fr}.access-story{min-height:360px;padding:28px 30px}.access-story-copy{padding:65px 0 45px;margin:0}.access-story h1{font-size:clamp(56px,10vw,88px);margin:22px 0 20px}.access-story-copy>p{max-width:470px}.access-visual{right:-70px;bottom:-80px;transform:scale(.72)}.access-story-foot{display:none}.access-panel{min-height:auto;padding:95px 24px 50px}.access-panel-top{top:24px;left:24px;right:24px}.access-card{max-width:560px}}
@media(max-width:600px){.access-story{min-height:270px;padding:21px 18px}.access-mark{width:42px;height:42px}.access-brand b{font-size:19px}.access-brand small,.access-back{display:none}.access-story-copy{padding:47px 0 20px}.access-kicker{font-size:7px}.access-story h1{font-size:clamp(48px,15vw,70px);margin:18px 0 0}.access-story-copy>p,.access-visual{display:none}.access-panel{padding:86px 15px 32px}.access-panel-top{top:20px;left:18px;right:18px}.access-card{padding:25px 19px}.access-card h2{font-size:31px}.auth-page .auth-name-row{grid-template-columns:1fr}.auth-hint{align-items:flex-start;flex-direction:column;gap:3px}.auth-page .pin-keypad{gap:10px 18px}.auth-page .pin-keypad button,.auth-page .pin-keypad>span{width:60px;height:60px}}
@media(prefers-reduced-motion:reduce){.auth-step.stepping,.pin-cell.shake{animation:none}.theme-toggle i{transition:none}}
