/* Getwebup customer panel: sign-in pages (layouts/auth, scope .auth2) and error pages (layouts/bare, scope .bare).
   Loaded after hp/tokens.css, hp/base.css and hp/components.css, so it overrides the legacy pages.css auth rules
   (.auth2*, .auth-*, .mk*, .vstep*, .acc-state, .strength, .bare, .err-*) at equal or higher specificity.
   The status screen (.auth-state/.as-ico), step markers (.vnum), OTP boxes, alerts and the demo hint get their base look
   from hp/components.css; this file only lays them out inside the sign-in card. New classes use the hp-auth- prefix.
   The admin sign-in page also uses .auth2 but never loads this file. */

/* ================================================================ Brand mark (sign-in logo row, error pages, preview) */
.hp-auth-brand{display:inline-flex;align-items:center;gap:10px;min-width:0;max-width:100%;color:var(--hp-text);font-size:18px;font-weight:700;letter-spacing:-.01em;line-height:1.2}
.hp-auth-mark{width:32px;height:32px;border-radius:var(--hp-r-sm);background:var(--hp-accent);display:grid;place-items:center;flex:none}
.hp-auth-mark img{width:18px;height:18px;display:block}
.hp-auth-logo{display:block;max-height:36px;max-width:200px;width:auto;object-fit:contain}
.hp-auth-brand-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ================================================================ Sign-in layout: one column below 1024px */
.auth2{display:grid;grid-template-columns:minmax(0,1fr);gap:0;min-height:100vh;min-height:100dvh;padding:0;background:var(--hp-surface);color:var(--hp-text)}
.auth2-form{display:flex;flex-direction:column;min-width:0;min-height:100vh;min-height:100dvh;padding:24px 32px;background:var(--hp-surface)}
.auth2 .auth2-logo{align-self:flex-start;gap:10px;font-size:18px;font-weight:700;letter-spacing:-.01em}
.auth2 .auth2-logo:hover{color:var(--hp-text)}
.auth2-center{flex:1;display:flex;align-items:center;justify-content:center;min-width:0;padding:32px 0}
.auth2 .auth-card{width:100%;max-width:420px;min-width:0}
.auth2 .auth-card:focus{outline:0}
.auth2-foot{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px 16px;font-size:13px;color:var(--hp-muted)}
.auth2-foot a{color:var(--hp-muted);font-weight:500}
.auth2-foot a:hover{color:var(--hp-accent-text);text-decoration:underline;text-underline-offset:2px}
.auth2-hero{display:none}

/* the card gets its chrome from tablet width up; on phones the form sits straight on the page */
@media (min-width:768px){
  .auth2 .auth-card{padding:32px;background:var(--hp-surface);border:1px solid var(--hp-border);border-radius:var(--hp-r-lg);box-shadow:var(--hp-sh-md)}
}

/* ================================================================ Two columns from 1024px: form + brand hero */
@media (min-width:1024px){
  .auth2{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;padding:12px}
  .auth2-form{min-height:calc(100vh - 24px);min-height:calc(100dvh - 24px);padding:12px 28px 8px}
  /* the hero stays in view while a long form (register) scrolls the page */
  .auth2-hero{position:sticky;top:12px;align-self:start;display:flex;flex-direction:column;gap:40px;min-width:0;height:calc(100vh - 24px);height:calc(100dvh - 24px);overflow:hidden;padding:48px 48px 0;border-radius:20px;background:linear-gradient(160deg,var(--accent),var(--accent-dark));color:var(--hp-on-accent)}
}
.auth2-hero::before,.auth2-hero::after{background:currentColor;opacity:.06}
.auth2 .auth2-copy{position:relative;z-index:1;max-width:520px}
.auth2 .auth2-copy h2{max-width:480px;font-size:28px;font-weight:700;line-height:1.25;letter-spacing:-.02em;color:inherit}
.auth2 .auth2-copy p{max-width:440px;margin-top:12px;font-size:15px;line-height:1.55;opacity:.9}

/* ---------------------------------------------------------------- Product preview (partials/auth/preview)
   A decorative picture of the panel. It is laid out wider than the hero (width = available / scale) and scaled down from its
   bottom-left corner, so at every width it fills the hero exactly and keeps its proportions. The transform is safe here:
   no menu lives inside. Hidden on short screens so it is never cut off. */
.hp-auth-mk-wrap{--mk-s:.8;position:relative;z-index:1;flex:none;width:min(calc(100% / var(--mk-s)),620px);margin-top:auto;transform:scale(var(--mk-s));transform-origin:left bottom}
@media (min-width:1280px){.hp-auth-mk-wrap{--mk-s:.92}}
@media (max-height:780px){
  .hp-auth-mk-wrap{display:none}
  .auth2-hero{justify-content:center;padding-bottom:48px}
}
.hp-auth-mk{display:grid;grid-template-columns:52px minmax(0,1fr);max-height:calc(100vh - 220px);max-height:calc(100dvh - 220px);overflow:hidden;border:1px solid rgba(255,255,255,.24);border-bottom:0;border-radius:16px 16px 0 0;background:var(--hp-bg);color:var(--hp-text);box-shadow:0 24px 56px rgba(16,24,40,.32);font-size:12px;line-height:1.35;text-align:left}
.hp-auth-mk-side{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 0;background:var(--hp-surface);border-right:1px solid var(--hp-border)}
.hp-auth-mk-side .hp-auth-mark{width:28px;height:28px;margin-bottom:6px;border-radius:7px}
.hp-auth-mk-side .hp-auth-mark img{width:15px;height:15px}
.hp-auth-mk-side i{display:block;width:28px;height:28px;border-radius:8px;background:var(--hp-surface-3)}
.hp-auth-mk-side i.on{background:var(--hp-accent-soft);box-shadow:inset 0 0 0 1.5px var(--hp-accent-line)}
.hp-auth-mk-main{display:flex;flex-direction:column;gap:12px;min-width:0;padding:14px}
.hp-auth-mk-top{display:flex;align-items:center;gap:10px}
.hp-auth-mk-search{flex:1;max-width:220px;height:26px;border:1px solid var(--hp-border);border-radius:8px;background:var(--hp-surface)}
.hp-auth-mk-av{width:26px;height:26px;margin-left:auto;border-radius:50%;background:var(--hp-accent-soft)}
.hp-auth-mk-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.hp-auth-mk-card{display:flex;flex-direction:column;gap:2px;min-width:0;padding:10px 12px;border:1px solid var(--hp-border);border-radius:10px;background:var(--hp-surface);color:var(--hp-accent-text)}
.hp-auth-mk-card small{font-size:10.5px;color:var(--hp-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hp-auth-mk-card b{font-size:19px;font-weight:700;letter-spacing:-.01em;color:var(--hp-text)}
.hp-auth-mk-card span{font-size:10px;color:var(--hp-muted)}
.hp-auth-mk-card.is-solid{border-color:var(--hp-accent);background:var(--hp-accent);color:var(--hp-on-accent)}
.hp-auth-mk-card.is-solid small,.hp-auth-mk-card.is-solid b,.hp-auth-mk-card.is-solid span{color:inherit}
.hp-auth-mk-card.is-solid small,.hp-auth-mk-card.is-solid span{opacity:.88}
.hp-auth-mk-card svg{width:100%;height:30px;margin-top:2px}
.hp-auth-mk-bars{display:flex;align-items:flex-end;gap:3px;height:30px;margin-top:2px}
.hp-auth-mk-bars i{flex:1;border-radius:2px 2px 0 0;background:var(--hp-accent);opacity:.75}
.hp-auth-mk-table{gap:0;padding:10px 12px 4px;color:var(--hp-text)}
.hp-auth-mk-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}
.hp-auth-mk-head b{font-size:12px;font-weight:600}
.hp-auth-mk-head span{font-size:10.5px;font-weight:600;color:var(--hp-accent-text)}
.hp-auth-mk-tr{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--hp-divider)}
.hp-auth-mk-tr>div{flex:1;min-width:0}
.hp-auth-mk-tr b{display:block;font-size:11.5px;font-weight:600;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hp-auth-mk-tr small{display:block;font-size:10px;color:var(--hp-muted)}
.hp-auth-mk-tr .hp-auth-mk-dot{width:26px;height:26px;flex:none;display:grid;place-items:center;border-radius:8px;background:var(--hp-accent-soft);color:var(--hp-accent-text);font-size:11px;font-weight:700}
.hp-auth-mk-tr em{flex:none;padding:2px 8px;border-radius:var(--hp-r-pill);font-size:10px;font-style:normal;font-weight:600}
.hp-auth-mk-tr em.ok{background:var(--hp-ok-soft);color:var(--hp-ok)}
.hp-auth-mk-tr em.warn{background:var(--hp-warn-soft);color:var(--hp-warn)}
.hp-auth-mk-float{position:absolute;top:-24px;right:-20px;z-index:2;width:150px;align-items:flex-start;box-shadow:var(--hp-sh-lg)}
.hp-auth-mk-donut{position:relative;width:64px;height:64px;margin:4px 0}
.hp-auth-mk-donut svg{width:64px;height:64px;margin:0}
.hp-auth-mk-donut b{position:absolute;inset:0;display:grid;place-items:center;font-size:13px}

/* ================================================================ Card content */
.auth2 .auth-title{font-size:26px;font-weight:700;line-height:1.25;letter-spacing:-.02em;color:var(--hp-text);text-align:left}
.auth2 .auth-sub{margin:6px 0 24px;font-size:14px;line-height:1.55;color:var(--hp-muted);text-align:inherit}
.auth2 .auth-sub b{font-weight:600;color:var(--hp-text-2);overflow-wrap:anywhere;word-break:normal}
.auth2 .auth-foot{margin-top:24px;font-size:14px;color:var(--hp-muted);text-align:center}
.auth2 .auth-foot .link{font-size:14px}
.auth2 .auth-foot .link svg{width:16px;height:16px}
.auth2 .demo-hint{margin-top:24px}

/* forms: slightly taller controls than the panel, sign-in is a touch screen first */
.auth2 .auth-card form .form-grid{gap:16px}
.auth2 .input{min-height:44px;border-radius:var(--hp-r-sm)}
.auth2 .affix{min-height:44px;border-radius:var(--hp-r-sm)}
.auth2 .affix .input{min-height:42px;border-radius:0}
.auth2 .pw-toggle{width:36px;height:36px}
.auth2 .btn-lg,.auth2 .btn-primary.btn-lg{min-height:48px;padding:0 20px;border-radius:var(--hp-r-sm);font-size:15px}
.auth2 .auth-card form .btn-block{margin-top:24px}
.auth2 .auth-card .row-between{margin:16px 0 0}
.auth2 .auth-card .row-between .link{font-size:14px}
.auth2 .auth-card .btn+.btn{margin-top:10px}

/* register: first and last name side by side at every width */
@media (max-width:767px){.auth2 #regForm>.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* password strength meter (partials/auth/strength), right under the password field */
.auth2 .strength,.auth2 .form-grid>.strength{grid-column:1/-1;margin:-8px 0 0}
.auth2 .s-bars{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;margin-bottom:6px}
.auth2 .s-bars i{height:4px;border-radius:var(--hp-r-pill);background:var(--hp-border)}
.auth2 .strength[data-s="1"] i.on{background:var(--hp-bad)}
.auth2 .strength[data-s="2"] i.on{background:var(--hp-warn)}
.auth2 .strength[data-s="3"] i.on{background:color-mix(in srgb,var(--hp-ok) 55%,var(--hp-warn))}
.auth2 .strength[data-s="4"] i.on{background:var(--hp-ok)}
.auth2 .strength small{font-size:12px;color:var(--hp-muted)}

/* OTP boxes (2FA, verification steps): the submit button follows the boxes directly */
.auth2 .otp{margin:4px 0 16px}
.auth2 .auth-card form .otp+.btn,.auth2 .auth-card form .otp+.btn-block{margin-top:0}

/* status screens (x-ui.auth-state): centred, icon in a soft halo */
.auth2 .auth-state .auth-title{text-align:center}
.auth2 .auth-state .auth-sub{max-width:360px;margin:8px auto 24px}
.auth2 .auth-state .as-ico{margin-bottom:20px;box-shadow:0 0 0 8px color-mix(in srgb,currentColor 8%,transparent)}
/* phones: the card has no padding and scrolls (overflow:auto), so leave room for the 8px halo or its top is cut off */
@media (max-width:767px){.auth2 .auth-state .as-ico{margin-top:8px}}
.auth2 .auth-state .btn-block{margin-top:0}
.auth2 .auth-state .btn-block+.btn-block{margin-top:10px}
.auth2 .auth-state .auth-foot{margin-top:20px}
.auth2 .auth-state .vsteps{text-align:left}

/* ---------------------------------------------------------------- Verification (verify-account, verify-signup)
   .acc-state is a status banner; .vsteps is a vertical list of steps joined by a line, the OTP form inside the open step.
   The markers (.vnum) take their done / current / locked look from hp/components.css. */
.auth2 .acc-state{display:flex;align-items:flex-start;gap:12px;margin:0 0 24px;padding:12px 14px;border:1px solid var(--hp-bad-line);border-radius:var(--hp-r-sm);background:var(--hp-bad-soft);color:var(--hp-bad);text-align:left}
.auth2 .acc-state.warn{border-color:var(--hp-warn-line);background:var(--hp-warn-soft);color:var(--hp-warn)}
.auth2 .acc-state svg{width:20px;height:20px;flex:none;margin-top:1px}
.auth2 .acc-state>div{min-width:0}
.auth2 .acc-state b{display:block;font-size:14px;font-weight:600}
.auth2 .acc-state small{display:block;margin-top:2px;font-size:13px;line-height:1.45;color:var(--hp-text-2);opacity:1}

.auth2 .vsteps{display:flex;flex-direction:column;gap:0;margin:0 0 8px;padding:0;text-align:left}
.auth2 .vsteps.compact{margin:4px 0 24px}
.auth2 .vstep{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);column-gap:14px;padding:0 0 24px;border:0;border-radius:0;background:none;box-shadow:none;opacity:1}
.auth2 .vstep:last-child{padding-bottom:0}
.auth2 .vstep:not(:last-child)::before{content:"";position:absolute;left:13px;top:34px;bottom:6px;width:2px;border-radius:2px;background:var(--hp-border)}
.auth2 .vstep.done:not(:last-child)::before{background:var(--hp-accent)}
.auth2 .vbody{min-width:0;padding-top:3px}
.auth2 .vtop{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px 10px}
.auth2 .vtop b{font-size:15px;font-weight:600;color:var(--hp-text)}
.auth2 .vstep.lock .vtop b{color:var(--hp-muted)}
.auth2 .vbody>small{display:block;margin-top:2px;font-size:13px;color:var(--hp-muted);overflow-wrap:anywhere;word-break:normal}
.auth2 .vbody .otp-block,.auth2 .vbody>.btn{margin-top:16px}
.auth2 .ob-alert .alert{margin:0 0 12px;font-size:13px}
.auth2 .ob-alert .alert b{overflow-wrap:anywhere;word-break:normal}
/* six boxes share the step's width (about 300px on a phone) */
.auth2 .vbody .otp{justify-content:flex-start;gap:6px}
.auth2 .vbody .otp input{flex:1 1 0;width:auto;min-width:0;max-width:48px}
.auth2 .otp-block .auth-foot{margin:12px 0 0;text-align:left}
.auth2 .ob-resend{min-height:32px;padding:4px 0}
.auth2 .ob-resend:disabled{color:var(--hp-muted);cursor:default;text-decoration:none}

/* ================================================================ Phones */
@media (max-width:767px){
  .auth2-form{padding:16px 16px 20px}
  .auth2-center{align-items:flex-start;padding:32px 0}
  .auth2 .auth-title,.auth2 .auth-state .auth-title{font-size:22px}
  .auth2 .auth-sub{margin-bottom:20px}
  .auth2-foot{justify-content:center;text-align:center}
  /* touch targets for the stand-alone links (links inside a sentence are exempt) */
  .auth2 .auth2-logo,.auth2-foot a,.auth2 .auth-card .row-between .link,.auth2 .ob-resend{display:inline-flex;align-items:center;min-height:40px}
}

/* ================================================================ Error pages (layouts/bare + partials/user/error-body) */
.bare{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:40px 16px;background:var(--hp-bg);color:var(--hp-text)}
.hp-auth-err{display:flex;flex-direction:column;align-items:center;gap:24px;width:100%;max-width:520px;min-width:0}
.hp-auth-err-card{width:100%;padding:40px 32px;background:var(--hp-surface);border:1px solid var(--hp-border);border-radius:var(--hp-r-lg);box-shadow:var(--hp-sh-md)}
.bare .err-page{max-width:none;margin:0;text-align:center}
.bare .err-page .as-ico{margin:0 auto 20px;box-shadow:0 0 0 8px color-mix(in srgb,currentColor 8%,transparent)}
.bare .err-code{margin:0 0 12px;font-size:48px;font-weight:800;line-height:1;letter-spacing:-.03em;color:var(--hp-accent);font-variant-numeric:tabular-nums}
:root[data-theme="dark"] .bare .err-code{color:var(--hp-accent-text)}
.bare .err-page h1{margin:0 0 8px;font-size:22px;font-weight:700;line-height:1.3;letter-spacing:-.01em;color:var(--hp-text)}
.bare .err-page p.err-text{max-width:420px;margin:0 auto;font-size:15px;line-height:1.55;color:var(--hp-muted)}
.bare .err-page .btn-row{margin-top:28px}
@media (max-width:767px){
  .bare{place-items:start center;padding:32px 16px}
  .hp-auth-err-card{padding:32px 20px}
}
@media (max-width:479px){
  .bare .err-page .btn-row>.btn{flex:1 1 100%}
}
