/* ============================================================
   Auth pages — 2-col split (brand left, form right).
   Pure dark, monochrome, light primary buttons.
   Animated SVG paths in the left brand panel.
   ============================================================ */

html, body { height: 100%; }

body.auth-page {
    margin: 0 !important;
    padding: 0 !important;
    min-height: 100dvh !important;
    background: #0a0a0b !important;
    background-color: #0a0a0b !important;
    background-image: none !important;
    color: #e5e7eb !important;
    /* [SG-PATCH 2026-10-04 A268-B | Felix] tolta la famiglia (con !important): scavalcava quella di piattaforma */
    -webkit-font-smoothing: antialiased;
    box-sizing: border-box !important;
    /* Native form controls (select dropdown nativo, scrollbar, ecc.)
       devono essere renderizzati con palette dark dal browser. */
    color-scheme: dark !important;
}
body.auth-page * { box-sizing: border-box; }
body.auth-page div.wrapper { display: none !important; }

/* Reset inherited backgrounds on our containers */
body.auth-page .auth-shell,
body.auth-page .auth-side,
body.auth-page .auth-main,
body.auth-page .auth-col,
body.auth-page .auth-form,
body.auth-page .auth-field,
body.auth-page .auth-input-shell {
    background: transparent !important;
    background-image: none !important;
}

/* ============================================================
   ROOT 2-COL SHELL
   ============================================================ */
body.auth-page .auth-shell {
    position: relative !important;
    width: 100% !important;
    min-height: 100dvh !important;
    display: grid !important;
    grid-template-columns: 1fr !important;
    margin: 0 !important;
    padding: 0 !important;
}
@media (min-width: 1024px) {
    body.auth-page .auth-shell {
        grid-template-columns: 1fr 1fr !important;
        height: 100dvh !important;
        overflow: hidden !important;
    }
}

/* ============================================================
   LEFT — BRAND SIDE (hidden on mobile)
   ============================================================ */
body.auth-page .auth-side {
    display: none !important;
    position: relative !important;
    height: 100dvh !important;
    background: #111114 !important;
    border-right: 1px solid rgba(255,255,255,.06) !important;
    padding: 40px !important;
    flex-direction: column !important;
    overflow: hidden !important;
}
@media (min-width: 1024px) {
    body.auth-page .auth-side { display: flex !important; }
}

/* Top fade gradient overlay (subtle) */
body.auth-page .auth-side::before {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    background: linear-gradient(to top, #0a0a0b 0%, transparent 60%) !important;
    z-index: 1 !important;
    pointer-events: none !important;
}

/* Brand row top-left — uses the actual wordmark logo PNG */
body.auth-page .auth-side .auth-brand {
    position: relative !important;
    z-index: 5 !important;
    display: inline-flex !important;
    align-items: center !important;
    text-decoration: none !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
    border: 0 !important;
}
body.auth-page .auth-side .auth-brand img {
    display: block !important;
    height: 44px !important;
    width: auto !important;
    max-width: 260px !important;
    background: transparent !important;
    border: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    box-shadow: none !important;
}
/* GL-003 §7.4 step 2: textual wordmark when the tenant has no logo. Sized to sit
   in the same 44px slot as the image so the panel does not shift. Not uppercased:
   a brand name is rendered as the reseller wrote it. Hidden on narrow along with
   the rest of .auth-brand (see the responsive block), where the mobile slot
   already shows the name. */
body.auth-page .auth-side .auth-brand .name {
    display: block !important;
    line-height: 44px !important;
    max-width: 260px !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    font-size: 26px !important;
    font-weight: 700 !important;
    color: #fafafa !important;
    letter-spacing: .01em !important;
}

/* Quote at bottom — explicit reset to defeat browser/core.css blockquote styling */
body.auth-page .auth-side .auth-quote {
    position: relative !important;
    z-index: 5 !important;
    margin: auto 0 0 0 !important;
    padding: 0 !important;
    color: #fafafa !important;
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    max-width: 480px !important;
}
body.auth-page .auth-side .auth-quote p {
    font-size: 18px !important;
    line-height: 1.5 !important;
    color: #f3f4f6 !important;
    margin: 0 0 12px 0 !important;
    padding: 0 !important;
    font-weight: 400 !important;
    background: transparent !important;
    border: 0 !important;
    quotes: none !important;
}
body.auth-page .auth-side .auth-quote .cite {
    font-family: ui-monospace, "SF Mono", Menlo, monospace !important;
    font-size: 13px !important;
    font-weight: 600 !important;
    color: #d1d5db !important;
    padding: 0 !important;
    margin: 0 !important;
    background: transparent !important;
    border: 0 !important;
}

/* WebGL globe — fills the brand panel behind the brand/quote.
   Square aspect, capped to ~75% of panel width, drag-rotatable. */
body.auth-page .auth-side .auth-globe-wrap {
    position: absolute !important;
    inset: 0 !important;
    z-index: 0 !important;
    overflow: hidden !important;
    pointer-events: none !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}
body.auth-page .auth-side .auth-globe-wrap canvas {
    width: min(75%, 580px) !important;
    aspect-ratio: 1 / 1 !important;
    max-height: 70vh !important;
    pointer-events: none !important;
    opacity: 0;
    transition: opacity 1.4s ease !important;
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
    display: block !important;
}


/* ============================================================
   RIGHT — MAIN FORM SIDE
   ============================================================ */
body.auth-page .auth-main {
    position: relative !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    align-items: center !important;
    min-height: 100dvh !important;
    padding: 24px 16px !important;
    overflow-y: auto !important;
}
@media (min-width: 1024px) {
    body.auth-page .auth-main { padding: 32px !important; }
}

/* Subtle radial glow background */
body.auth-page .auth-main::before {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    background:
        radial-gradient(60% 50% at 65% 35%, rgba(255,255,255,.04), transparent 70%) !important;
    pointer-events: none !important;
    z-index: 0 !important;
}

/* "Home" back link — top-left of the form column (right side of the
   screen on desktop). Borderless, light hover bg. Hidden on mobile. */
body.auth-page .auth-back {
    position: absolute !important;
    top: 40px !important;          /* matches .auth-side padding-top so it lines up with the brand logo */
    left: 22px !important;
    z-index: 5 !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 10px !important;
    height: 44px !important;       /* same height as the brand logo image */
    padding: 0 14px !important;
    background: transparent !important;
    border: 0 !important;
    color: #f3f4f6 !important;
    text-decoration: none !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    border-radius: 10px !important;
    transition: background-color .15s, color .15s !important;
}
body.auth-page .auth-back:hover {
    background: rgba(255,255,255,.06) !important;
    color: #fff !important;
}
body.auth-page .auth-back svg {
    width: 18px !important;
    height: 18px !important;
    stroke: currentColor !important;
    stroke-width: 2.5 !important;
}
@media (max-width: 1023px) {
    body.auth-page .auth-back { display: none !important; }
}

/* Form column */
body.auth-page .auth-col {
    position: relative !important;
    z-index: 1 !important;
    width: 100% !important;
    max-width: 384px !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 20px !important;
    padding: 0 !important;
    text-align: left !important;
}
body.auth-page .auth-col.is-wide { max-width: 440px !important; }

/* Mobile-only brand inside form col */
body.auth-page .auth-col .auth-brand-mobile {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    text-decoration: none !important;
    color: inherit !important;
    margin-bottom: 8px !important;
}
@media (min-width: 1024px) { body.auth-page .auth-col .auth-brand-mobile { display: none !important; } }
body.auth-page .auth-col .auth-brand-mobile img {
    width: 24px !important;
    height: 24px !important;
    object-fit: contain !important;
    background: transparent !important;
}
body.auth-page .auth-col .auth-brand-mobile .name {
    font-size: 20px !important;
    font-weight: 600 !important;
    color: #fafafa !important;
}

/* Heading + sub */
body.auth-page .auth-col h1 {
    margin: 0 !important;
    padding: 0 !important;
    font-size: 28px !important;
    font-weight: 700 !important;
    line-height: 1.15 !important;
    letter-spacing: .01em !important;
    color: #fafafa !important;
    background: transparent !important;
}
body.auth-page .auth-col .auth-sub {
    margin: 6px 0 0 0 !important;
    padding: 0 !important;
    font-size: 16px !important;
    line-height: 1.5 !important;
    color: #9ca3af !important;
    background: transparent !important;
}

/* ============================================================
   PRIMARY BUTTONS (light bg, dark text — like reference)
   ============================================================ */
body.auth-page .auth-btn {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 10px !important;
    width: 100% !important;
    height: 44px !important;
    padding: 0 18px !important;
    background: #f3f4f6 !important;
    color: #0a0a0b !important;
    border: 1px solid transparent !important;
    border-radius: 10px !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    transition: background-color .15s !important;
    text-decoration: none !important;
    font-family: inherit !important;
    box-shadow: 0 1px 0 rgba(0,0,0,.04), 0 4px 8px -4px rgba(0,0,0,.2) !important;
    margin: 0 !important;
    line-height: 1.4 !important;
}
body.auth-page .auth-btn:hover { background: #ffffff !important; }
body.auth-page .auth-btn:active { background: #e5e7eb !important; }
body.auth-page .auth-btn:disabled { opacity: .5 !important; cursor: not-allowed !important; }
body.auth-page .auth-btn .mdi { font-size: 16px !important; color: #0a0a0b !important; }
body.auth-page .auth-btn svg { color: #0a0a0b !important; }

/* "Continue with X" buttons stack */
body.auth-page .auth-socials {
    display: flex !important;
    flex-direction: column !important;
    gap: 8px !important;
}

/* SEPARATOR */
body.auth-page .auth-sep {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    margin: 4px 0 !important;
}
body.auth-page .auth-sep::before,
body.auth-page .auth-sep::after {
    content: "" !important;
    flex: 1 !important;
    height: 1px !important;
    background: rgba(255,255,255,.12) !important;
}
body.auth-page .auth-sep span {
    color: #9ca3af !important;
    font-size: 11px !important;
    font-weight: 500 !important;
    letter-spacing: .12em !important;
    text-transform: uppercase !important;
    padding: 0 8px !important;
}

/* ============================================================
   FORM
   ============================================================ */
body.auth-page .auth-form {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    margin: 0 !important;
    padding: 0 !important;
}
body.auth-page .auth-form-hint {
    color: #9ca3af !important;
    font-size: 12px !important;
    margin: 0 !important;
    line-height: 1.5 !important;
}
body.auth-page .auth-field { display: flex !important; flex-direction: column !important; margin: 0 !important; }
body.auth-page .auth-field-head {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    margin-bottom: 6px !important;
}
body.auth-page .auth-field > label,
body.auth-page .auth-field-head > label {
    font-size: 13px !important;
    font-weight: 500 !important;
    color: #fafafa !important;
    margin-bottom: 6px !important;
}
body.auth-page .auth-field-head > label { margin-bottom: 0 !important; }
body.auth-page .auth-field-head > a {
    font-size: 13px !important;
    color: #9ca3af !important;
    text-decoration: none !important;
}
body.auth-page .auth-field-head > a:hover { color: #f3f4f6 !important; }

/* Input shell with inline-SVG icon prefix */
body.auth-page .auth-input-shell { position: relative !important; display: block !important; }
body.auth-page .auth-input-shell .ico-prefix {
    position: absolute !important;
    left: 14px !important;
    top: 0 !important;
    height: 100% !important;
    width: 18px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    color: #9ca3af !important;
    pointer-events: none !important;
    z-index: 3 !important;
    line-height: 1 !important;
}
body.auth-page .auth-input-shell .ico-prefix svg {
    width: 16px !important;
    height: 16px !important;
    display: block !important;
    color: #9ca3af !important;
    stroke: currentColor !important;
}
body.auth-page .auth-input-shell .pwd-toggle {
    position: absolute !important;
    right: 4px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 36px !important;
    height: 36px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: transparent !important;
    border: 0 !important;
    cursor: pointer !important;
    padding: 0 !important;
    color: #9ca3af !important;
    transition: color .15s !important;
    z-index: 3 !important;
    border-radius: 6px !important;
}
body.auth-page .auth-input-shell .pwd-toggle:hover { color: #f3f4f6 !important; background: rgba(255,255,255,.04) !important; }
body.auth-page .auth-input-shell .pwd-toggle svg {
    width: 16px !important;
    height: 16px !important;
    color: inherit !important;
    stroke: currentColor !important;
}
body.auth-page .auth-input-shell .pwd-toggle svg.is-hidden { display: none !important; }

body.auth-page .auth-input {
    width: 100% !important;
    box-sizing: border-box !important;
    padding: 0 14px 0 40px !important;
    background: transparent !important;
    /* [SG-PATCH 2026-09-24 | B8: auth field boundary >= 3:1] was
       rgba(255,255,255,.12), ~1.3:1 on #0a0a0b. #707075 = 4.0:1, the same
       dark control boundary as the product topbar (B6). */
    border: 1px solid #7e7e7e !important; /* [SG-PATCH 2026-10-05 A276 | Felix] era #707075 */
    border-radius: 10px !important;
    color: #f3f4f6 !important;
    font-size: 15px !important;
    font-family: inherit !important;
    transition: border-color .15s, box-shadow .15s, background-color .15s !important;
    outline: none !important;
    margin: 0 !important;
    height: 44px !important;
    line-height: 1.4 !important;
}
body.auth-page .auth-input.has-suffix { padding-right: 40px !important; }
body.auth-page .auth-input.no-prefix { padding-left: 14px !important; }
body.auth-page .auth-input:focus {
    /* [SG-PATCH 2026-09-24 | B8] brighter than the resting #707075, as before
       (was .32 white, which is now DIMMER than the resting border). #b8b8b8 is
       this file's placeholder ink (9.98:1). */
    border-color: #b8b8b8 !important;
    background: rgba(255,255,255,.02) !important;
    box-shadow: 0 0 0 3px rgba(255,255,255,.08) !important;
}
/* Placeholder = FIELD INSTRUCTION, so no large-text exemption: 4.5:1 in full.
   It must also stay DISTINGUISHABLE from entered text, or the user cannot see
   whether the field is full or empty - which is why #fafafa is not the answer
   despite reaching 18.96:1: it would fix the contrast by breaking the affordance.
   #b8b8b8 is the only candidate that satisfies both (9.98:1 on #0a0a0b), and it
   is already in use for this role in reseller-panel.css. GL-003: ratified as a
   value, DOWN PAYMENT on §7.5 D2 - it sits inside the unpinned neutral ramp, so
   it does not close the debt. Do not derive siblings from it; go to Iris.
   Previous value #6b7280 measured 4.09:1 DECLARED at BOTH viewports - the 1280
   reading that passed was antialiasing on a thin stroke, not a second rule. */
body.auth-page .auth-input::placeholder { color: #b8b8b8 !important; opacity: 1 !important; }

/* Chrome/Edge autofill: ignora background-color/color sui campi precompilati e
   forza il giallino chiaro di default. Si vince con un box-shadow inset 30px
   (copre l'intera input area) + -webkit-text-fill-color sul testo.
   La transizione lunghissima è il "trick" per ritardare il ripristino del
   background nativo del browser quando l'autofill diventa "non più attivo". */
body.auth-page .auth-input:-webkit-autofill,
body.auth-page .auth-input:-webkit-autofill:hover,
body.auth-page .auth-input:-webkit-autofill:focus,
body.auth-page .auth-input:-webkit-autofill:active {
    -webkit-box-shadow: 0 0 0 1000px #0a0a0b inset !important;
    box-shadow: 0 0 0 1000px #0a0a0b inset !important;
    -webkit-text-fill-color: #f3f4f6 !important;
    caret-color: #f3f4f6 !important;
    border: 1px solid #7e7e7e !important; /* [SG-PATCH 2026-10-05 A276 | Felix] era #707075 */   /* [SG-PATCH 2026-09-24 | B8] */
    transition: background-color 99999s ease-in-out 0s, color 99999s ease-in-out 0s !important;
}
body.auth-page .auth-input:-webkit-autofill:focus {
    -webkit-box-shadow: 0 0 0 1000px #0a0a0b inset, 0 0 0 3px rgba(255,255,255,.08) !important;
    box-shadow: 0 0 0 1000px #0a0a0b inset, 0 0 0 3px rgba(255,255,255,.08) !important;
    border-color: #b8b8b8 !important;   /* [SG-PATCH 2026-09-24 | B8] */
}
/* Firefox: fill semitrasparente blu/giallo per autofill */
body.auth-page .auth-input:autofill {
    background-color: #0a0a0b !important;
    color: #f3f4f6 !important;
    box-shadow: 0 0 0 1000px #0a0a0b inset !important;
}

@media (max-width: 600px) {
    body.auth-page .auth-input { font-size: 16px !important; height: 44px !important; }
}

/* Checkbox — vertically aligned with label text via line-height: 1 trick.
   Without it, the span's default line-box (font-size × 1.5 ≈ 20px) is
   taller than the 16px box, and align-items:center pushes the text glyph
   visually below the checkbox center. */
body.auth-page .auth-check {
    display: inline-flex !important;
    align-items: center !important;
    gap: 9px !important;
    cursor: pointer !important;
    user-select: none !important;
    color: #d1d5db !important;
    font-size: 13px !important;
    line-height: 1 !important;
}
body.auth-page .auth-check span {
    line-height: 1 !important;
    display: inline-block !important;
}
body.auth-page .auth-check input[type=checkbox] {
    appearance: none !important;
    -webkit-appearance: none !important;
    width: 16px !important;
    height: 16px !important;
    border-radius: 4px !important;
    /* WCAG 1.4.11: the border IS the control boundary. At .22 alpha it composited
       to rgb(63,63,64) over the page bg = 1.88:1, under the 3:1 required. .5 gives
       5.37:1, measured on the rendered pixels, and stays a subtle grey. */
    border: 1px solid rgba(255,255,255,.5) !important;
    background: transparent !important;
    cursor: pointer !important;
    position: relative !important;
    flex: 0 0 auto !important;
    margin: 0 !important;
    vertical-align: middle !important;
}
body.auth-page .auth-check input[type=checkbox]:checked {
    background: #f3f4f6 !important;
    border-color: #f3f4f6 !important;
}
body.auth-page .auth-check input[type=checkbox]:checked::after {
    content: "" !important;
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 4px !important;
    height: 8px !important;
    border: solid #0a0a0b !important;
    border-width: 0 2px 2px 0 !important;
    transform: translate(-50%, -58%) rotate(45deg) !important;
}

/* TERMS footer */
body.auth-page .auth-terms {
    margin: 8px 0 0 0 !important;
    font-size: 13px !important;
    color: #9ca3af !important;
    line-height: 1.5 !important;
}
body.auth-page .auth-terms a {
    color: #d1d5db !important;
    text-decoration: underline !important;
    text-underline-offset: 4px !important;
    text-decoration-color: rgba(255,255,255,.32) !important;
}
body.auth-page .auth-terms a:hover { color: #fff !important; text-decoration-color: #fff !important; }

/* ALERT */
body.auth-page .auth-alert {
    display: flex !important;
    align-items: flex-start !important;
    gap: 10px !important;
    padding: 10px 12px !important;
    border-radius: 8px !important;
    font-size: 13px !important;
    line-height: 1.45 !important;
    margin: 0 !important;
}
body.auth-page .auth-alert .mdi { font-size: 16px !important; flex: 0 0 auto !important; }
body.auth-page .auth-alert.is-error {
    background: rgba(239,68,68,.10) !important;
    color: #fca5a5 !important;
    border: 1px solid rgba(239,68,68,.22) !important;
}

/* SUCCESS state */
body.auth-page .auth-success { margin: 0 !important; }
body.auth-page .auth-success-icon {
    width: 44px !important;
    height: 44px !important;
    border-radius: 12px !important;
    background: rgba(16,185,129,.14) !important;
    color: #34d399 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 22px !important;
    border: 1px solid rgba(16,185,129,.28) !important;
    margin-bottom: 14px !important;
}
body.auth-page .auth-success-icon svg {
    width: 22px !important;
    height: 22px !important;
    stroke: currentColor !important;
    color: #34d399 !important;
    display: block !important;
}
body.auth-page .auth-success h2 {
    margin: 0 0 8px 0 !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    color: #fafafa !important;
}
body.auth-page .auth-success p {
    margin: 0 0 18px 0 !important;
    color: #9ca3af !important;
    line-height: 1.5 !important;
    font-size: 14px !important;
}

/* SIGNUP — multi-col rows */
body.auth-page .auth-row-2 {
    display: grid !important;
    grid-template-columns: 1fr 1fr !important;
    gap: 12px !important;
}
@media (max-width: 480px) {
    body.auth-page .auth-row-2 { grid-template-columns: 1fr !important; gap: 12px !important; }
}

/* ============================================================
   MOBILE — globe AS BACKGROUND behind the form, visible through
   the form card's transparency
   ============================================================ */
@media (max-width: 1023px) {
    /* Shell stays a single column. Side is absolute behind everything. */
    body.auth-page .auth-shell {
        position: relative !important;
        grid-template-columns: 1fr !important;
    }

    /* Brand panel = fullscreen background layer, globe centered inside */
    body.auth-page .auth-side {
        display: flex !important;
        position: absolute !important;
        inset: 0 !important;
        z-index: 0 !important;
        height: 100% !important;
        width: 100% !important;
        min-height: 100dvh !important;
        padding: 0 !important;
        border-right: 0 !important;
    }
    body.auth-page .auth-side .auth-brand,
    body.auth-page .auth-side .auth-quote {
        display: none !important;
    }
    body.auth-page .auth-side .auth-globe-wrap {
        align-items: center !important;
        justify-content: center !important;
    }
    /* Kill the gradient overlay on mobile — was dimming the globe */
    body.auth-page .auth-side::before {
        display: none !important;
    }

    /* Form layer sits on top, transparent so the globe shows through */
    body.auth-page .auth-main {
        position: relative !important;
        z-index: 1 !important;
        padding: 32px 24px !important;
    }
    body.auth-page .auth-main::before { display: none !important; }

    /* Translucent card — globe behind shows through directly */
    body.auth-page .auth-col {
        background: rgba(10, 10, 12, 0.35) !important;
        border: 1px solid rgba(255, 255, 255, 0.10) !important;
        border-radius: 22px !important;
        padding: 28px 24px !important;
        box-shadow: 0 24px 60px -24px rgba(0, 0, 0, 0.7) !important;
    }

    /* Bigger logo, no name text */
    body.auth-page .auth-col .auth-brand-mobile {
        justify-content: center !important;
        gap: 0 !important;
        margin-bottom: 6px !important;
    }
    body.auth-page .auth-col .auth-brand-mobile img {
        width: auto !important;
        height: 40px !important;
        max-width: 220px !important;
    }
    body.auth-page .auth-col .auth-brand-mobile .name {
        display: none !important;
    }
    /* ...unless there is no logo to be bigger: a tenant without one would be left
       with an empty slot, which is the step-2 gap GL-003 §7.4 forbids. The view
       sets --textonly precisely when it emitted no <img>. */
    body.auth-page .auth-col .auth-brand-mobile--textonly .name {
        display: block !important;
        font-size: 20px !important;
        font-weight: 700 !important;
        color: #fafafa !important;
        max-width: 100% !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        white-space: nowrap !important;
    }
}

/* [SG-PATCH 2026-09-24 | B8: keyboard focus ring on the auth pages] BEGIN
   The auth pages are dark-only and do not load the product core.css, so its
   base ring never reached them: fields had `outline:none !important` and only a
   3px halo of 8% white (~1.2:1), and links/buttons got the theme's #212121 ring
   on a #0a0a0b page (~1.2:1). One ring for every focusable here: 2px #fafafa,
   offset 2px (drawn on the page, 18.96:1). Keyboard only (:focus-visible), so
   the look on mouse use is unchanged. Registry B8. */
body.auth-page :focus-visible,
body.auth-page .auth-input:focus-visible {
    outline: 2px solid #fafafa !important;
    outline-offset: 2px !important;
}
/* [SG-PATCH 2026-09-24 | B8] END */

/* [SG-PATCH 2026-10-03 A244 | Felix] BEGIN · OTP message on /signup (Vera, accessibility).
   Was: #otpStatus in the page's <style> plus a colour written inline by the script (#fca5a5, #34d399, #fbbf24): GL-003 §7.0.2.
   The element stays in the DOM, empty when silent (role="alert"), so no margin while empty. Colours: the status scale of GL-003 §7.2.
   These pages are dark-only and do not load the product core.css (see B8 above), so --status-* is not emitted here: the fallback
   is the DARK half on purpose, the page declares darkside unconditionally (GL-003 §7.4.b). On #0a0a0b (calculated): danger #ff8a80 ~8.7:1,
   success #81c995 ~10.1:1, warning #ffcc66 ~13.3:1. */
body.auth-page .auth-otp-status { text-align: center; font-size: .92em; margin: 8px 0 0; }
body.auth-page .auth-otp-status:empty { margin: 0; }
body.auth-page .auth-otp-status--danger  { color: var(--status-danger, #ff8a80); }
body.auth-page .auth-otp-status--success { color: var(--status-success, #81c995); }
body.auth-page .auth-otp-status--warning { color: var(--status-warning, #ffcc66); }
/* [SG-PATCH 2026-10-03 A244 | Felix] END */
/* stylelint-disable no-descending-specificity -- the legacy .auth-* rules above and the v5 .sg-auth rules below style disjoint markup */

/* ============================================================================================================================
   [SG-PATCH 2026-10-10 A285 | Felix, group core] v5 access pages (boards Login, Signup, SignupOtp, Recovery, ResetPassword).
   Markup root: <div class="sg-auth"> in the sg2026 theme views. The legacy .auth-* rules above stay for any view not yet
   moved to the v5 markup and never match it. Tokens only (app.css, body.darkside: the auth pages are fixed dark, GL-003 §7.7.9);
   the tenant's 8 --brand-* come from inject_brand_css(). Breakpoints = the kit's container widths as media queries (plan §3.3).
   ============================================================================================================================ */
html[data-skin="sg26"] body.auth-page { font: 400 14px/22px var(--f); }
html[data-skin="sg26"] .sg-auth { position: relative; min-height: 100dvh; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); background: var(--bg); color: var(--text); font: 400 14px/22px var(--f); font-variant-numeric: tabular-nums; }
html[data-skin="sg26"] .sg-auth :is(h1, h2, h3, p, figure, blockquote) { margin: 0; }
html[data-skin="sg26"] .sg-auth a { color: var(--brand-primary-text); text-decoration: none; transition: color .2s; }
html[data-skin="sg26"] .sg-auth a:hover { color: var(--sg-soft); }
html[data-skin="sg26"] .sg-auth a:focus-visible { outline: 2px solid var(--brand-focus-ring); outline-offset: 2px; border-radius: 4px; }
html[data-skin="sg26"] .sg-auth .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* type */
html[data-skin="sg26"] .sg-auth .sg-h1 { font: 500 28px/34px var(--f); letter-spacing: -.027em; color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-body-lg { font: 400 16px/25px var(--f); }
html[data-skin="sg26"] .sg-auth .sg-body-sm { font: 400 13px/20px var(--f); }
html[data-skin="sg26"] .sg-auth .sg-text-2 { color: var(--text-2); }
html[data-skin="sg26"] .sg-auth .sg-wordmark { font: 700 17px/24px var(--f); letter-spacing: -.02em; color: var(--text); white-space: nowrap; }
html[data-skin="sg26"] .sg-auth .sg-stack { display: flex; flex-direction: column; gap: 24px; }
html[data-skin="sg26"] .sg-auth .sg-stack-6 { display: flex; flex-direction: column; gap: 6px; }
html[data-skin="sg26"] .sg-auth .sg-stack-16 { display: flex; flex-direction: column; gap: 16px; }

/* card */
html[data-skin="sg26"] .sg-auth .sg-card { position: relative; border-radius: var(--r-lg); border: 1px solid transparent; background: var(--card-bg) padding-box, var(--card-edge) border-box; box-shadow: var(--card-shadow); }

/* icon tile (Recovery / Reset / Signup states) */
html[data-skin="sg26"] .sg-auth .sg-tile { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 13px; flex-shrink: 0; background: linear-gradient(135deg, color-mix(in srgb, var(--sg-accent-2) var(--tile-a1), transparent), color-mix(in srgb, var(--brand-primary) var(--tile-a2), transparent)); color: var(--sg-soft); box-shadow: inset 0 1px 0 var(--border); }
html[data-skin="sg26"] .sg-auth .sg-tile svg { width: 22px; height: 22px; }
html[data-skin="sg26"] .sg-auth .sg-tile.is-success { background: rgba(var(--t-success), .14); color: var(--status-success); }
html[data-skin="sg26"] .sg-auth .sg-tile.is-danger { background: rgba(var(--t-danger), .14); color: var(--status-danger); }

/* fields */
html[data-skin="sg26"] .sg-auth .sg-form { display: flex; flex-direction: column; gap: 18px; margin: 0; }
html[data-skin="sg26"] .sg-auth .sg-field { display: flex; flex-direction: column; gap: 6px; margin: 0; }
html[data-skin="sg26"] .sg-auth .sg-field label,
html[data-skin="sg26"] .sg-auth .sg-field-label { display: block; margin: 0; padding: 0; font: 500 13px/18px var(--f); color: var(--text); text-transform: none; letter-spacing: 0; }
html[data-skin="sg26"] .sg-auth .sg-field-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; }
html[data-skin="sg26"] .sg-auth .sg-ifield { position: relative; }
html[data-skin="sg26"] .sg-auth .sg-ifield > svg { position: absolute; left: 12px; top: 50%; width: 16px; height: 16px; transform: translateY(-50%); color: var(--text-3); pointer-events: none; }
html[data-skin="sg26"] .sg-auth .sg-ifield > svg.sg-chev { left: auto; right: 12px; }
html[data-skin="sg26"] .sg-auth .sg-input { display: block; height: 40px; box-sizing: border-box; width: 100%; margin: 0; padding: 0 12px; background: var(--input-bg); border: 1px solid var(--border-strong); border-radius: var(--r-md); box-shadow: none; color: var(--text); font: 400 14px/22px var(--f); transition: border-color .2s; outline: 0; }
html[data-skin="sg26"] .sg-auth .sg-input::placeholder { color: var(--text-3); opacity: 1; }
html[data-skin="sg26"] .sg-auth .sg-input:hover { border-color: var(--border-strong-hover); }
html[data-skin="sg26"] .sg-auth .sg-input:focus { border-color: var(--brand-primary-border); }
html[data-skin="sg26"] .sg-auth .sg-input:focus-visible { outline: 2px solid var(--brand-focus-ring); outline-offset: 2px; }
html[data-skin="sg26"] .sg-auth .sg-input.is-error { border-color: var(--status-danger-line); }
html[data-skin="sg26"] .sg-auth .sg-input:-webkit-autofill { -webkit-text-fill-color: var(--text); box-shadow: 0 0 0 40px var(--input-bg) inset; caret-color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-ifield .sg-input { padding-left: 38px; }
html[data-skin="sg26"] .sg-auth .sg-ifield .sg-input.sg-pr { padding-right: 44px; }
html[data-skin="sg26"] .sg-auth .sg-ifield .sg-input.sg-np { padding-left: 12px; }
html[data-skin="sg26"] .sg-auth .sg-select { appearance: none; -webkit-appearance: none; padding-right: 40px; cursor: pointer; }
html[data-skin="sg26"] .sg-auth .sg-hint { font: 400 12px/16px var(--f); color: var(--text-3); }
html[data-skin="sg26"] .sg-auth .sg-eye { position: absolute; right: 4px; top: 50%; width: 32px; height: 32px; transform: translateY(-50%); display: grid; place-items: center; padding: 0; margin: 0; border: 0; border-radius: 8px; background: transparent; color: var(--text-3); cursor: pointer; transition: var(--tr); }
html[data-skin="sg26"] .sg-auth .sg-eye:hover { color: var(--text-max); background: var(--hover-fill); }
html[data-skin="sg26"] .sg-auth .sg-eye:focus-visible { outline: 2px solid var(--brand-focus-ring); outline-offset: 0; }
html[data-skin="sg26"] .sg-auth .sg-eye svg { width: 16px; height: 16px; }
html[data-skin="sg26"] .sg-auth .sg-eye svg.is-hidden { display: none; }

/* checkbox: the native input stays (form name, value, checked state), visually replaced by the kit .sg-check */
html[data-skin="sg26"] .sg-auth .sg-remember { display: flex; align-items: center; gap: 10px; width: fit-content; min-height: 24px; margin: 0; padding: 0; cursor: pointer; color: var(--text-2); font: 400 13px/20px var(--f); }
html[data-skin="sg26"] .sg-auth .sg-remember input { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); border: 0; opacity: 0; }
html[data-skin="sg26"] .sg-auth .sg-check { display: inline-grid; place-items: center; width: 18px; height: 18px; border-radius: var(--r-sm); border: 1.5px solid var(--border-strong); color: transparent; flex-shrink: 0; box-sizing: border-box; transition: var(--tr); }
html[data-skin="sg26"] .sg-auth .sg-check svg { width: 12px; height: 12px; }
html[data-skin="sg26"] .sg-auth .sg-remember input:checked + .sg-check { background: var(--brand-primary); border-color: var(--brand-primary-border); color: var(--brand-on-primary); }
html[data-skin="sg26"] .sg-auth .sg-remember input:focus-visible + .sg-check { outline: 2px solid var(--brand-focus-ring); outline-offset: 2px; }

/* buttons */
html[data-skin="sg26"] .sg-auth .sg-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; height: 40px; margin: 0; padding: 0 18px; box-sizing: border-box; border: 1px solid transparent; border-radius: var(--r-full); background: transparent; color: var(--text); font: 500 14px/20px var(--f); white-space: nowrap; text-decoration: none; text-transform: none; letter-spacing: 0; cursor: pointer; transition: var(--tr); }
html[data-skin="sg26"] .sg-auth .sg-btn svg { flex-shrink: 0; width: 16px; height: 16px; }
html[data-skin="sg26"] .sg-auth .sg-btn .go { transition: transform .2s var(--ease); }
html[data-skin="sg26"] .sg-auth .sg-btn:hover .go { transform: translateX(3px); }
html[data-skin="sg26"] .sg-auth .sg-btn-sm { height: 32px; padding: 0 14px; font-size: 13px; line-height: 18px; }
html[data-skin="sg26"] .sg-auth .sg-btn-lg { height: 44px; padding: 0 22px; font-size: 15px; }
html[data-skin="sg26"] .sg-auth .sg-btn-block { width: 100%; }
html[data-skin="sg26"] .sg-auth .sg-btn-primary { background: var(--brand-primary); color: var(--brand-on-primary); box-shadow: var(--sg-glow-rest); }
html[data-skin="sg26"] .sg-auth .sg-btn-primary:hover { color: var(--brand-on-primary); transform: translateY(-1px); box-shadow: var(--sg-glow-hover); }
html[data-skin="sg26"] .sg-auth .sg-btn-secondary { background: var(--btn2-bg); color: var(--btn2-fg); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .12); }
html[data-skin="sg26"] .sg-auth .sg-btn-secondary:hover { background: var(--btn2-bg-hover); color: var(--btn2-fg); transform: translateY(-1px); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .12), 0 0 20px color-mix(in srgb, var(--sg-accent-2) 22%, transparent); }
html[data-skin="sg26"] .sg-auth .sg-btn-tonal { background: var(--tonal-bg); border-color: var(--border-2); box-shadow: inset 0 1px 0 var(--hi); }
html[data-skin="sg26"] .sg-auth .sg-btn-tonal:hover { color: var(--text-max); border-color: var(--border-hover); }
html[data-skin="sg26"] .sg-auth .sg-btn-ghost { color: var(--text-2); }
html[data-skin="sg26"] .sg-auth .sg-btn-ghost:hover { background: var(--hover-fill); color: var(--text-max); }
html[data-skin="sg26"] .sg-auth .sg-btn:active { transform: none; }
html[data-skin="sg26"] .sg-auth .sg-btn:disabled { opacity: .4; cursor: not-allowed; box-shadow: none; transform: none; }
html[data-skin="sg26"] .sg-auth .sg-btn:focus-visible { outline: 2px solid var(--brand-focus-ring); outline-offset: 2px; }

/* alert (server messages) */
html[data-skin="sg26"] .sg-auth .sg-alert { --t: var(--t-neutral); --tc: var(--text-2); display: flex; align-items: flex-start; gap: 12px; margin: 0; padding: 14px 16px; border-radius: var(--r-inset); border: 1px solid rgba(var(--t), .28); background: rgba(var(--t), .06); font: 400 14px/21px var(--f); color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-alert > svg { width: 18px; height: 18px; flex-shrink: 0; margin-top: 2px; color: var(--tc); }
html[data-skin="sg26"] .sg-auth .sg-alert.is-danger { --t: var(--t-danger); --tc: var(--status-danger); }
html[data-skin="sg26"] .sg-auth .sg-alert.is-success { --t: var(--t-success); --tc: var(--status-success); }
html[data-skin="sg26"] .sg-auth .sg-alert.is-warning { --t: var(--t-warning); --tc: var(--status-warning); }
html[data-skin="sg26"] .sg-auth .sg-alert.is-info { --t: var(--t-info); --tc: var(--status-info); }
html[data-skin="sg26"] .sg-auth .sg-alert:empty { display: none; }

/* or-separator (Facebook login, only when the integration is configured) */
html[data-skin="sg26"] .sg-auth .sg-or { display: flex; align-items: center; gap: 12px; color: var(--text-3); font: 500 12px/16px var(--f); letter-spacing: .02em; }
html[data-skin="sg26"] .sg-auth .sg-or::before,
html[data-skin="sg26"] .sg-auth .sg-or::after { content: ""; flex: 1; height: 1px; background: var(--border); }

/* brand panel */
html[data-skin="sg26"] .sg-auth .sg-side { position: relative; overflow: hidden; container: sgside / inline-size; box-sizing: border-box; display: flex; flex-direction: column; justify-content: space-between; gap: 24px; padding: 40px; background: var(--surface); border-right: 1px solid var(--border); }
html[data-skin="sg26"] .sg-auth .sg-side-logo { position: relative; z-index: 5; align-self: flex-start; display: inline-flex; color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-side-logo img { display: block; height: 28px; width: auto; }
html[data-skin="sg26"] .sg-auth .sg-side-logo .sg-wordmark { font-size: 26px; line-height: 32px; }
html[data-skin="sg26"] .sg-auth .sg-side-quote { position: relative; z-index: 5; margin: 0; max-width: 540px; display: flex; flex-direction: column; gap: 12px; }
html[data-skin="sg26"] .sg-auth .sg-side-quote p { font: 400 18px/28px var(--f); color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-side-quote figcaption { font: 500 13px/18px var(--f); color: var(--text-2); }
html[data-skin="sg26"] .sg-auth .sg-side-fade { position: absolute; left: 0; right: 0; bottom: 0; height: 34%; background: linear-gradient(to top, var(--surface) 22%, transparent); pointer-events: none; z-index: 3; }
html[data-skin="sg26"] .sg-auth .sg-stage { position: absolute; inset: 0; z-index: 0; pointer-events: none; }
html[data-skin="sg26"] .sg-auth .sg-globe-box { position: absolute; left: 50%; top: 50%; width: min(75cqw, 580px); aspect-ratio: 1; transform: translate(-50%, -50%); }
html[data-skin="sg26"] .sg-auth .sg-globe { position: relative; display: block; width: 100%; height: 100%; opacity: 0; transition: opacity 1.4s ease; }
html[data-skin="sg26"] .sg-auth .sg-globe.is-on { opacity: 1; }
html[data-skin="sg26"] .sg-auth .sg-globe-fallback { position: absolute; inset: 10.5%; border-radius: 50%; background: radial-gradient(circle at 38% 32%, var(--surface-alt), var(--bg) 72%); box-shadow: 0 0 0 1px var(--border), 0 0 70px 6px color-mix(in srgb, var(--brand-primary) 14%, transparent); transition: opacity .8s; }
html[data-skin="sg26"] .sg-auth .sg-globe-fallback.is-off { opacity: 0; }
html[data-skin="sg26"] .sg-auth .sg-orbits { position: absolute; left: 0; top: 50%; width: 100cqw; height: 100cqw; margin-top: -50cqw; overflow: visible; z-index: 1; }
html[data-skin="sg26"] .sg-auth .sg-orbit { position: absolute; left: 50%; top: 50%; width: 0; height: 0; z-index: 2; }
html[data-skin="sg26"] .sg-auth .sg-o1 { transform: rotate(-14deg); }
html[data-skin="sg26"] .sg-auth .sg-o2 { transform: rotate(16deg); }
html[data-skin="sg26"] .sg-auth :is(.sg-x, .sg-y) { position: absolute; left: 0; top: 0; animation-timing-function: cubic-bezier(.37, 0, .63, 1); animation-iteration-count: infinite; animation-direction: alternate; }
html[data-skin="sg26"] .sg-auth .sg-o1 .sg-x { animation-name: sg-auth-x1; animation-duration: 14s; }
html[data-skin="sg26"] .sg-auth .sg-o1 .sg-y { animation-name: sg-auth-y1; animation-duration: 14s; }
html[data-skin="sg26"] .sg-auth .sg-o2 .sg-x { animation-name: sg-auth-x2; animation-duration: 11s; }
html[data-skin="sg26"] .sg-auth .sg-o2 .sg-y { animation-name: sg-auth-y2; animation-duration: 11s; }
@keyframes sg-auth-x1 { from { transform: translateX(-44cqw); } to { transform: translateX(44cqw); } }
@keyframes sg-auth-y1 { from { transform: translateY(-9cqw) scale(.76); opacity: .32; } to { transform: translateY(9cqw) scale(1); opacity: 1; } }
@keyframes sg-auth-x2 { from { transform: translateX(-36cqw); } to { transform: translateX(36cqw); } }
@keyframes sg-auth-y2 { from { transform: translateY(-18cqw) scale(.76); opacity: .32; } to { transform: translateY(18cqw) scale(1); opacity: 1; } }
html[data-skin="sg26"] .sg-auth .sg-orbit-chip { position: absolute; left: -19px; top: -19px; width: 38px; height: 38px; box-sizing: border-box; border-radius: 12px; display: grid; place-items: center; background: var(--surface-raised); border: 1px solid var(--border-2); box-shadow: inset 0 1px 0 var(--hi), 0 12px 30px -12px var(--shadow-c); color: var(--sg-soft); }
html[data-skin="sg26"] .sg-auth .sg-orbit-chip svg { width: 18px; height: 18px; }
html[data-skin="sg26"] .sg-auth .sg-o1 .sg-orbit-chip { transform: rotate(14deg); }
html[data-skin="sg26"] .sg-auth .sg-o2 .sg-orbit-chip { transform: rotate(-16deg); }
html[data-skin="sg26"] .sg-auth .sg-toast { position: absolute; z-index: 4; display: flex; align-items: center; gap: 10px; padding: 8px 14px 8px 8px; border-radius: var(--r-inset); background: var(--surface-raised); border: 1px solid var(--border-2); box-shadow: inset 0 1px 0 var(--hi), var(--shadow-lg); font: 400 13px/18px var(--f); color: var(--text); white-space: nowrap; animation: sg-auth-float 5s ease-in-out infinite alternate; }
html[data-skin="sg26"] .sg-auth .sg-toast strong { font-weight: 500; }
html[data-skin="sg26"] .sg-auth .sg-toast-ic { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 8px; background: linear-gradient(135deg, color-mix(in srgb, var(--sg-accent-2) 18%, transparent), color-mix(in srgb, var(--brand-primary) 22%, transparent)); color: var(--sg-soft); flex-shrink: 0; }
html[data-skin="sg26"] .sg-auth .sg-toast-ic svg { width: 14px; height: 14px; }
html[data-skin="sg26"] .sg-auth .sg-t1 { right: 6cqw; top: calc(50% - 41cqw); }
html[data-skin="sg26"] .sg-auth .sg-t2 { left: 4cqw; top: calc(50% + 21cqw); animation-delay: -1.7s; }
html[data-skin="sg26"] .sg-auth .sg-t3 { right: 9cqw; top: calc(50% + 30cqw); animation-delay: -3.4s; }
@keyframes sg-auth-float { from { transform: translateY(0); } to { transform: translateY(-6px); } }

/* form column */
html[data-skin="sg26"] .sg-auth .sg-auth-main { position: relative; z-index: 1; box-sizing: border-box; min-width: 0; display: flex; flex-direction: column; padding: 32px 48px 40px; background: var(--bg); }
html[data-skin="sg26"] .sg-auth .sg-home .sg-btn { padding-left: 10px; }
html[data-skin="sg26"] .sg-auth .sg-auth-card { margin: auto; width: 100%; max-width: 420px; box-sizing: border-box; padding: 32px; display: flex; flex-direction: column; gap: 24px; }
html[data-skin="sg26"] .sg-auth .sg-auth-card.is-wide { max-width: 520px; }
html[data-skin="sg26"] .sg-auth .sg-brand-m { display: none; justify-content: center; margin-bottom: -4px; color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-brand-m img { display: block; height: 32px; width: auto; }
html[data-skin="sg26"] .sg-auth .sg-brand-m .sg-wordmark { font-size: 22px; line-height: 28px; }
html[data-skin="sg26"] .sg-auth .sg-alt { display: flex; flex-direction: column; gap: 12px; padding-top: 24px; border-top: 1px solid var(--border); text-align: center; }
html[data-skin="sg26"] .sg-auth .sg-row-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
html[data-skin="sg26"] .sg-auth .sg-terms { margin: 0; font: 400 13px/20px var(--f); color: var(--text-2); text-align: center; }
html[data-skin="sg26"] .sg-auth .sg-terms a { color: var(--brand-primary-text); text-decoration: none; }

@media (max-width: 1023.98px) {
  html[data-skin="sg26"] .sg-auth { grid-template-columns: minmax(0, 1fr); }
  html[data-skin="sg26"] .sg-auth .sg-side { position: absolute; inset: 0; padding: 0; border-right: 0; z-index: 0; }
  html[data-skin="sg26"] .sg-auth :is(.sg-side-logo, .sg-side-quote, .sg-side-fade, .sg-orbits, .sg-orbit, .sg-toast) { display: none; }
  html[data-skin="sg26"] .sg-auth .sg-auth-main { background: transparent; padding: 32px 24px; }
  html[data-skin="sg26"] .sg-auth .sg-auth-main > .sg-home { display: none; }
  html[data-skin="sg26"] .sg-auth .sg-auth-card { background: color-mix(in srgb, var(--bg) 35%, transparent); border-color: var(--border-2); border-radius: 22px; box-shadow: 0 24px 60px -24px var(--shadow-c); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); }
  html[data-skin="sg26"] .sg-auth .sg-brand-m { display: flex; }
}
@media (max-width: 767.98px) {
  html[data-skin="sg26"] .sg-auth .sg-auth-main { padding: 24px 16px 32px; }
  html[data-skin="sg26"] .sg-auth .sg-auth-card { padding: 28px 20px; }
  html[data-skin="sg26"] .sg-auth .sg-remember { min-height: 44px; }
  html[data-skin="sg26"] .sg-auth .sg-btn { height: 44px; }
  html[data-skin="sg26"] .sg-auth .sg-input { height: 44px; font-size: 16px; }
}
@media (max-width: 479.98px) {
  html[data-skin="sg26"] .sg-auth .sg-row-2 { grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) {
  html[data-skin="sg26"] .sg-auth *,
  html[data-skin="sg26"] .sg-auth *::before,
  html[data-skin="sg26"] .sg-auth *::after { animation: none !important; transition: none !important; }
}

/* Signup (boards Signup, SignupOtp): phone, OTP step, messages. The ids and the JS-driven classes (.hide, .error, .disabled,
   .auth-otp-status--*) are the original's; the inline <style> of signup.php styles #otp/#resend/.iti by id, outranked here. */
html[data-skin="sg26"] .sg-auth .sg-hint.is-error,
html[data-skin="sg26"] .sg-auth #email-validation-message { color: var(--status-danger); font: 400 12px/16px var(--f); }
html[data-skin="sg26"] .sg-auth .sg-input.error { border-color: var(--status-danger-line); }
html[data-skin="sg26"] .sg-auth #valid-msg { margin: 0; color: var(--text-2); font: 400 12px/16px var(--f); }
html[data-skin="sg26"] .sg-auth #error-msg { margin: 0; color: var(--status-danger); font: 400 12px/16px var(--f); }
html[data-skin="sg26"] .sg-auth .hide { display: none; }
/* intl-tel-input = the board's .sg-tel: one field, country button with a divider */
html[data-skin="sg26"] .sg-auth .sg-tel-field .iti { display: block; width: 100%; }
html[data-skin="sg26"] .sg-auth .sg-tel-field .iti__flag-container { padding: 0; }
html[data-skin="sg26"] .sg-auth .sg-tel-field .iti__selected-flag { padding: 0 10px 0 12px; background: transparent; border-right: 1px solid var(--border-2); border-radius: var(--r-md) 0 0 var(--r-md); color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-tel-field .iti__selected-flag:hover { background: var(--hover-fill); }
html[data-skin="sg26"] .sg-auth .sg-tel-field .iti__selected-dial-code { color: var(--text); font: 500 14px/22px var(--f); }
html[data-skin="sg26"] .sg-auth .sg-tel-field .iti__country-list { background: var(--surface-raised); border: 1px solid var(--menu-line); border-radius: var(--r-menu); box-shadow: 0 24px 60px -20px var(--shadow-c); color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-tel-field .iti__country.iti__highlight { background: var(--hover-fill); }
html[data-skin="sg26"] .sg-auth .sg-tel-field .iti__dial-code { color: var(--text-3); }
/* OTP step: an inset box only while the code field is shown (the script sets #otp to display:block) */
html[data-skin="sg26"] .sg-auth .sg-otp-box { display: flex; flex-direction: column; gap: 12px; }
html[data-skin="sg26"] .sg-auth .sg-otp-box:not(:has(> #otp[style*="block"])) { display: contents; }
html[data-skin="sg26"] .sg-auth .sg-otp-box:has(> #otp[style*="block"]) {
  padding: 16px; border-radius: var(--r-inset); background: var(--fill-3); border: 1px solid var(--inset-border); box-shadow: inset 0 1px 0 rgba(255, 255, 255, .05);
}
html[data-skin="sg26"] .sg-auth #verificacodice { margin: 0; font: 400 13px/20px var(--f); color: var(--text); text-align: left; }
html[data-skin="sg26"] .sg-auth #otp.sg-otp {
  height: 48px; padding: 0 14px; text-align: left; border-color: var(--brand-primary-border);
  font: 500 20px/26px var(--f) !important; font-variant-numeric: tabular-nums; letter-spacing: .32em;
}
html[data-skin="sg26"] .sg-auth #resend.sg-btn { align-self: flex-end; width: auto; margin: 0; padding: 0 14px; color: var(--text-2); background: transparent; text-decoration: none; font: 500 13px/18px var(--f); }
html[data-skin="sg26"] .sg-auth #resend.sg-btn.disabled { color: var(--text-3); cursor: not-allowed; pointer-events: none; }
html[data-skin="sg26"] .sg-auth #otpStatus { margin: 0; text-align: left; font: 500 13px/20px var(--f); }
html[data-skin="sg26"] .sg-auth #otpStatus:empty { display: none; }
html[data-skin="sg26"] .sg-auth .recaptcha { display: flex; justify-content: center; }
html[data-skin="sg26"] .sg-auth .recaptcha-error { color: var(--status-danger); font: 400 12px/16px var(--f); text-align: center; }
html[data-skin="sg26"] .sg-auth .recaptcha-error:empty { display: none; }
html[data-skin="sg26"] .sg-auth .sg-otp-label { display: block; margin: 0; font: 500 13px/18px var(--f); color: var(--text); }
html[data-skin="sg26"] .sg-auth .sg-otp-box:not(:has(> #otp[style*="block"])) > .sg-otp-label { display: none; }
html[data-skin="sg26"] .sg-auth #otp.sg-otp::placeholder { font: 400 14px/22px var(--f); letter-spacing: 0; }
/* B4 shared select (id-level :is) sets padding and its own chevron: keep the icon gap, use its chevron */
html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-ifield > select.sg-input { padding-left: 38px !important; padding-right: 40px !important; }
html[data-skin="sg26"] .sg-auth .sg-ifield > select + svg.sg-chev { display: none; }
/* [SG-PATCH 2026-10-10 A285 | Felix, group core] Angelo: bigger logo (desktop clearly, phone slightly) and, below 1024, a much more
   transparent form card so the globe shows through. The logo is the same <img> (tenant logo on tenant hosts) or the wordmark
   fallback: only sizes change. The logo png is 5:1 with ~14% transparent margin, so the visible mark is ~86% of the box height. */
html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-side-logo img { height: 37px; }
html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-side-logo .sg-wordmark { font-size: 30px; line-height: 36px; }
html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-brand-m img { height: 36px; }
html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-brand-m .sg-wordmark { font-size: 25px; line-height: 32px; }
@media (max-width: 1023.98px) {
  html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-auth-card {
    background: color-mix(in srgb, var(--bg) 22%, transparent); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px);
  }
  /* fields keep a stronger fill than the card, for AA text over the globe */
  html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-auth-card :is(.sg-input, .iti input, .iti__selected-flag) { background-color: color-mix(in srgb, var(--input-bg) 62%, transparent) !important; }
}
/* [SG-PATCH 2026-10-10 A285 | Felix] signup on desktop: the original field layout (Angelo); without the language field it fits
   1366x768 but for 1px, so only padding is trimmed (Angelo): page bottom, card top/bottom, title gap,
   row gaps, the «Hai già un account?» block, 2px off the fields. Layout unchanged. */
@media (min-width: 1024px) {
  html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-auth-main:has(#myForm) { padding-bottom: 28px; }
  html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-auth-card:has(#myForm) { padding-top: 24px; padding-bottom: 24px; gap: 18px; }
  html:is([data-skin="sg26"], #sg-skin) body .sg-auth #myForm.sg-form { gap: 14px; }
  html:is([data-skin="sg26"], #sg-skin) body .sg-auth #myForm .sg-field { gap: 5px; }
  html:is([data-skin="sg26"], #sg-skin) body .sg-auth #myForm :is(.sg-input, .iti input) { height: 38px; }
  html:is([data-skin="sg26"], #sg-skin) body .sg-auth .sg-auth-card:has(#myForm) > .sg-alt { gap: 8px; padding-top: 16px; }
}
