/* =========================================================================
   auth-theme.css — admin auth pages (login / register / forgot / verify)

   Append layer loaded by admin/layout/auth_default.blade.php AFTER style.css
   and responsive.css. Everything is scoped under `.ss-auth` on <body>, which
   only the four admin/auth/*.blade.php views set via @section('bodyclass').
   The three storefront views (front/auth/*) share the same layout file and
   deliberately get NO styling from here.

   Deleting the one <link> in auth_default.blade.php reverts this entirely.
   Never edit style.css for auth theming — see shescale-theme.css for the
   same convention in the admin panel.
   ========================================================================= */

.ss-auth {
    /* Greens are the login mock's palette, NOT the panel's deep-green brand.
       Kept as tokens so a future rebrand is a four-line change. */
    --ssa-green: #22c55e;
    --ssa-green-d: #16a34a;
    --ssa-green-dd: #0f7a38;
    --ssa-lime: #a3e635;

    --ssa-ink: #0f172a;
    --ssa-muted: #64748b;
    --ssa-line: #dbe7de;

    --ssa-panel: #070d0b;
    --ssa-panel-2: #0d1a14;
    --ssa-pane-bg: #eef4f0;

    --ssa-radius: 24px;
    --ssa-shadow: 0 24px 60px -20px rgba(9, 45, 25, .22), 0 4px 14px rgba(9, 45, 25, .05);

    background: var(--ssa-pane-bg);
}

/* style.css sets a hard 100vh on .h-100vh / .login-right-content; the new
   layout scrolls as one page instead, so those have to be released. */
.ss-auth .h-100vh {
    height: auto !important;
    min-height: 100vh;
}

.ss-auth .login-right-content {
    height: auto !important;
    overflow: visible !important;
    padding: 0 !important;
    margin: 0 !important;
}

.ss-auth section > .row {
    min-height: 100vh;
}

/* ---------- 1. Left brand panel ------------------------------------------ */

.ss-auth-brand {
    position: relative;
    overflow: hidden;
    min-height: 100vh;
    display: flex;
    align-items: center;
    background:
        radial-gradient(120% 80% at 12% 8%, rgba(34, 197, 94, .16), transparent 55%),
        radial-gradient(90% 70% at 95% 92%, rgba(163, 230, 53, .10), transparent 60%),
        linear-gradient(160deg, var(--ssa-panel-2) 0%, var(--ssa-panel) 60%);
    padding: 44px 48px;
    color: #fff;
}

/* Dot grid + soft edge glow. Decorative only, hence pointer-events:none. */
.ss-auth-brand::before,
.ss-auth-brand::after {
    content: "";
    position: absolute;
    pointer-events: none;
}

.ss-auth-brand::before {
    top: 96px;
    right: 84px;
    width: 132px;
    height: 92px;
    opacity: .45;
    background-image: radial-gradient(rgba(255, 255, 255, .30) 1.4px, transparent 1.4px);
    background-size: 13px 13px;
}

.ss-auth-brand::after {
    inset: auto -40% -55% auto;
    width: 78%;
    aspect-ratio: 1;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(34, 197, 94, .16), transparent 62%);
}

.ss-auth-brand-in {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 620px;
    margin-inline: auto;
}

/* Block, not inline-block — otherwise the badge flows onto the logo's line. */
.ss-auth-logo {
    display: block;
    margin-bottom: 22px;
}

/* The stored logo is a green mark + WHITE wordmark, so it is already built
   for a dark ground — do not add a light chip behind it. */
.ss-auth-logo img {
    height: 54px;
    width: auto;
    max-width: 260px;
    object-fit: contain;
}

.ss-auth-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 18px;
    margin-bottom: 22px;
    border-radius: 999px;
    font-size: 13.5px;
    font-weight: 600;
    color: #d7ffe4;
    background: rgba(34, 197, 94, .14);
    border: 1px solid rgba(34, 197, 94, .34);
}

.ss-auth-badge i {
    color: var(--ssa-lime);
    font-size: 12.5px;
}

.ss-auth-h1 {
    font-size: clamp(28px, 3vw, 40px);
    line-height: 1.22;
    font-weight: 800;
    letter-spacing: -.02em;
    margin: 0 0 16px;
    color: #fff;
}

.ss-auth-h1 span {
    color: var(--ssa-green);
}

.ss-auth-lead {
    font-size: 16px;
    line-height: 1.65;
    max-width: 30ch;
    margin: 0 0 26px;
    color: rgba(255, 255, 255, .70);
}

/* ---------- 2. Feature chips --------------------------------------------- */

.ss-auth-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 30px;
}

.ss-auth-chip {
    display: flex;
    align-items: center;
    gap: 12px;
    max-width: 240px;
    padding: 13px 18px 13px 14px;
    border-radius: 16px;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.3;
    color: #fff;
    background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .10);
    backdrop-filter: blur(6px);
}

.ss-auth-chip i {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    display: grid;
    place-items: center;
    border-radius: 11px;
    font-size: 15px;
    color: var(--ssa-lime);
    background: rgba(163, 230, 53, .13);
}

/* ---------- 3. Storefront screenshot band -------------------------------- */

/* The uploaded admin_auth_pages_bg_image is a full designed panel (logo +
   headline + chips baked in). Only its lower screenshot band is wanted here,
   so it is cropped with object-position rather than re-cut as a new asset —
   that keeps the Settings upload working and changes no stored data. */
/* 8:3 + bottom anchoring lands the visible window on roughly the lower half
   of the source, which is where the store screenshots sit. A taller box or a
   higher object-position drags the image's own baked-in feature chips into
   view and they read as duplicates of the real ones above. */
.ss-auth-shot {
    position: relative;
    border-radius: 20px;
    overflow: hidden;
    aspect-ratio: 8 / 3;
    margin-bottom: 30px;
    -webkit-mask-image: linear-gradient(180deg, #000 76%, transparent 100%);
    mask-image: linear-gradient(180deg, #000 76%, transparent 100%);
}

/* The 1.12 zoom (anchored to the bottom edge) eats the last sliver of the
   source's own chip that bottom-anchoring alone still leaves at the top. */
.ss-auth-shot img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center bottom;
    display: block;
    transform: scale(1.12);
    transform-origin: center bottom;
}

/* ---------- 4. Trust bar -------------------------------------------------- */

.ss-auth-trust {
    display: flex;
    gap: 10px;
    padding: 16px 18px;
    border-radius: 18px;
    background: rgba(255, 255, 255, .05);
    border: 1px solid rgba(255, 255, 255, .09);
}

.ss-auth-trust-i {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 11px;
}

.ss-auth-trust-i > i {
    flex: 0 0 auto;
    width: 32px;
    height: 32px;
    display: grid;
    place-items: center;
    border-radius: 10px;
    font-size: 14px;
    color: var(--ssa-lime);
    background: rgba(163, 230, 53, .12);
}

.ss-auth-trust-i span {
    min-width: 0;
    display: flex;
    flex-direction: column;
    line-height: 1.32;
}

.ss-auth-trust-i b {
    font-size: 13.5px;
    font-weight: 700;
    color: #fff;
}

.ss-auth-trust-i em {
    font-style: normal;
    font-size: 12px;
    color: rgba(255, 255, 255, .55);
}

/* ---------- 5. Right pane + card ----------------------------------------- */

.ss-auth-pane {
    position: relative;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 32px;
    background: var(--ssa-pane-bg) !important;
}

.ss-auth-pane::before {
    content: "";
    position: absolute;
    top: 40px;
    right: 40px;
    width: 120px;
    height: 120px;
    opacity: .5;
    pointer-events: none;
    background-image: radial-gradient(rgba(22, 163, 74, .22) 1.4px, transparent 1.4px);
    background-size: 13px 13px;
}

.ss-auth-pane-in {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 430px;
}

.ss-auth-card {
    background: #fff;
    border-radius: var(--ssa-radius);
    box-shadow: var(--ssa-shadow);
    padding: 38px 34px 34px;
    text-align: center;
}

/* Register carries 8+ fields; give it room without stretching the others. */
.ss-auth-pane-in.is-wide {
    max-width: 560px;
}

.ss-auth-avatar {
    width: 74px;
    height: 74px;
    margin: 0 auto 18px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: rgba(34, 197, 94, .12);
}

.ss-auth-avatar img {
    width: 46px;
    height: 46px;
    object-fit: contain;
    border-radius: 50%;
}

.ss-auth-card h2 {
    font-size: 26px;
    font-weight: 800;
    letter-spacing: -.015em;
    color: var(--ssa-ink);
    margin: 0 0 6px;
}

.ss-auth-card > p {
    font-size: 14px;
    color: var(--ssa-muted);
    margin: 0 0 26px;
}

.ss-auth-card form {
    text-align: start;
    margin: 0 !important;
}

/* ---------- 6. Fields ----------------------------------------------------- */

.ss-auth-card .form-group {
    margin-bottom: 16px;
}

.ss-auth-card .form-label {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--ssa-ink);
    margin-bottom: 7px;
}

.ss-auth-field {
    position: relative;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 14px;
    border-radius: 13px;
    background: #fff;
    border: 1.5px solid var(--ssa-line);
    transition: border-color .18s ease, box-shadow .18s ease;
}

.ss-auth-field:focus-within {
    border-color: var(--ssa-green);
    box-shadow: 0 0 0 4px rgba(34, 197, 94, .12);
}

.ss-auth-field > i:first-child {
    flex: 0 0 auto;
    font-size: 15px;
    color: var(--ssa-green-d);
}

/* Inputs and selects sit bare inside the bordered wrapper — style.css's
   .form-control border/padding/shadow would otherwise double up. */
.ss-auth-field .form-control,
.ss-auth-field .form-select {
    flex: 1 1 auto;
    min-width: 0;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    padding: 13px 0 !important;
    font-size: 14.5px;
    color: var(--ssa-ink);
    height: auto;
}

.ss-auth-field .form-control:focus,
.ss-auth-field .form-select:focus {
    box-shadow: none !important;
    border: 0 !important;
}

.ss-auth-field .form-select {
    padding-inline-end: 20px !important;
    background-position: right .1rem center;
}

[dir="rtl"] .ss-auth-field .form-select {
    background-position: left .1rem center;
}

.ss-auth-field .form-control::placeholder {
    color: #9aa8b2;
}

.ss-auth-eye {
    flex: 0 0 auto;
    color: #94a3b8;
    line-height: 1;
    text-decoration: none;
}

.ss-auth-eye:hover {
    color: var(--ssa-green-d);
}

/* Bare inputs that are not wrapped (verify page, slug group) */
.ss-auth-card .form-control:not(.ss-auth-field .form-control),
.ss-auth-card .form-select:not(.ss-auth-field .form-select) {
    border: 1.5px solid var(--ssa-line);
    border-radius: 13px;
    padding: 13px 14px !important;
    font-size: 14.5px;
}

.ss-auth-card .form-control:not(.ss-auth-field .form-control):focus,
.ss-auth-card .form-select:not(.ss-auth-field .form-select):focus {
    border-color: var(--ssa-green);
    box-shadow: 0 0 0 4px rgba(34, 197, 94, .12);
}

.ss-auth-card .input-group-text {
    border: 1.5px solid var(--ssa-line);
    background: #f4f8f5;
    font-size: 13px;
    color: var(--ssa-muted);
    border-radius: 13px;
}

/* ---------- 7. Checkbox / links / button --------------------------------- */

.ss-auth-card .form-check-input {
    width: 18px;
    height: 18px;
    border-radius: 6px;
    border: 1.5px solid var(--ssa-line);
    cursor: pointer;
}

.ss-auth-card .form-check-input:checked {
    background-color: var(--ssa-green-d);
    border-color: var(--ssa-green-d);
}

.ss-auth-card .form-check-input:focus {
    box-shadow: 0 0 0 4px rgba(34, 197, 94, .14);
    border-color: var(--ssa-green);
}

.ss-auth-card .form-check-label,
.ss-auth-meta {
    font-size: 13.5px;
    color: var(--ssa-muted);
}

.ss-auth-link {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--ssa-green-d) !important;
    text-decoration: none !important;
}

.ss-auth-link:hover {
    color: var(--ssa-green-dd) !important;
    text-decoration: underline !important;
}

/* Beats style.css's .btn-primary, which follows the store's DB primary
   colour (#000000 on these stores) and would render a black button. */
.ss-auth-card .btn-primary,
.ss-auth-card .btn-secondary {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    padding: 15px 22px !important;
    border: 0 !important;
    border-radius: 14px;
    font-size: 15.5px;
    font-weight: 700;
    color: #fff !important;
    background: linear-gradient(90deg, var(--ssa-green-d), var(--ssa-green-dd)) !important;
    box-shadow: 0 12px 24px -10px rgba(15, 122, 56, .55);
    transition: transform .16s ease, box-shadow .16s ease, filter .16s ease;
}

.ss-auth-card .btn-primary:hover,
.ss-auth-card .btn-secondary:hover {
    filter: brightness(1.06);
    transform: translateY(-1px);
    box-shadow: 0 16px 30px -10px rgba(15, 122, 56, .6);
}

/* Register's "Login" button is the secondary action of a two-button row. */
.ss-auth-card .ss-auth-btn-ghost,
.ss-auth-card .ss-auth-btn-ghost:hover {
    background: #fff !important;
    color: var(--ssa-green-d) !important;
    border: 1.5px solid var(--ssa-line) !important;
    box-shadow: none;
}

.ss-auth-btn-arrow {
    margin-inline-start: auto;
}

[dir="rtl"] .ss-auth-btn-arrow {
    transform: scaleX(-1);
}

/* ---------- 8. Divider + footer ------------------------------------------ */

.ss-auth-div {
    position: relative;
    margin: 26px 0 18px;
    text-align: center;
}

.ss-auth-div::before {
    content: "";
    position: absolute;
    inset: 50% 0 auto;
    height: 1px;
    background: var(--ssa-line);
}

.ss-auth-div i {
    position: relative;
    display: inline-grid;
    place-items: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    font-size: 11px;
    color: #fff;
    background: var(--ssa-green-d);
    box-shadow: 0 0 0 5px var(--ssa-pane-bg);
}

.ss-auth-foot {
    text-align: center;
    font-size: 13.5px;
    color: var(--ssa-muted);
    margin: 0;
}

/* ---------- 9. Security note --------------------------------------------- */

.ss-auth-note {
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: flex-start;
    gap: 13px;
    margin-top: 18px;
    padding: 18px 20px;
    border-radius: 18px;
    background: #fff;
    border: 1px solid rgba(22, 163, 74, .16);
    box-shadow: 0 10px 26px -18px rgba(9, 45, 25, .35);
}

.ss-auth-note > i {
    flex: 0 0 auto;
    font-size: 20px;
    color: var(--ssa-green-d);
    margin-top: 2px;
}

.ss-auth-note div {
    position: relative;
    z-index: 1;
}

.ss-auth-note b {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--ssa-ink);
    margin-bottom: 3px;
}

.ss-auth-note span {
    display: block;
    font-size: 12.5px;
    line-height: 1.55;
    color: var(--ssa-muted);
    max-width: 34ch;
}

.ss-auth-note-bg {
    position: absolute;
    inset-inline-end: 18px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 54px;
    color: rgba(22, 163, 74, .09);
    pointer-events: none;
}

/* ---------- 10. Language switcher ---------------------------------------- */

.ss-auth-lang {
    position: absolute;
    top: 26px;
    inset-inline-end: 26px;
    z-index: 3;
}

.ss-auth-lang .btn {
    width: 42px;
    height: 42px;
    padding: 0;
    display: grid;
    place-items: center;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 6px 18px -8px rgba(9, 45, 25, .35);
}

.ss-auth-lang .btn::after {
    display: none;
}

.ss-auth-lang .btn i {
    color: var(--ssa-green-d) !important;
    font-size: 16px;
}

/* ---------- 11. Sandbox demo-login block ---------------------------------- */

.ss-auth-demo {
    margin-top: 22px;
    padding-top: 18px;
    border-top: 1px dashed var(--ssa-line);
}

.ss-auth-demo p {
    font-size: 12.5px;
    text-align: center;
    margin-bottom: 10px;
    color: var(--ssa-muted);
}

.ss-auth-demo .btn {
    padding: 11px 14px !important;
    font-size: 13.5px !important;
    border-radius: 12px;
}

/* ---------- 12. Motion ---------------------------------------------------- */

/* All CSS-only: no JS hook to break, and nothing here changes layout, so a
   browser that ignores it still gets the finished page. Every rule is undone
   under prefers-reduced-motion at the end of this section. */

@keyframes ssaUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

@keyframes ssaCard {
    from {
        opacity: 0;
        transform: translateY(28px) scale(.975);
    }

    to {
        opacity: 1;
        transform: none;
    }
}

@keyframes ssaPop {
    0% {
        opacity: 0;
        transform: scale(.4);
    }

    65% {
        transform: scale(1.14);
    }

    100% {
        opacity: 1;
        transform: scale(1);
    }
}

@keyframes ssaFloat {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-9px);
    }
}

@keyframes ssaGlow {

    0%,
    100% {
        opacity: .5;
        transform: scale(1);
    }

    50% {
        opacity: 1;
        transform: scale(1.09);
    }
}

@keyframes ssaRing {
    0% {
        opacity: .75;
        transform: scale(.92);
    }

    100% {
        opacity: 0;
        transform: scale(1.32);
    }
}

@keyframes ssaSheen {
    from {
        transform: translateX(-130%) skewX(-18deg);
    }

    to {
        transform: translateX(320%) skewX(-18deg);
    }
}

@keyframes ssaRocket {

    0%,
    82%,
    100% {
        transform: translate(0, 0);
    }

    88% {
        transform: translate(2px, -3px);
    }

    94% {
        transform: translate(0, -1px);
    }
}

/* -- entrance: left panel, staggered top to bottom -- */
.ss-auth-brand-in > * {
    opacity: 0;
    animation: ssaUp .7s cubic-bezier(.22, .8, .3, 1) forwards;
}

.ss-auth-brand-in > *:nth-child(1) { animation-delay: .05s; }
.ss-auth-brand-in > *:nth-child(2) { animation-delay: .13s; }
.ss-auth-brand-in > *:nth-child(3) { animation-delay: .21s; }
.ss-auth-brand-in > *:nth-child(4) { animation-delay: .29s; }
.ss-auth-brand-in > *:nth-child(5) { animation-delay: .37s; }
.ss-auth-brand-in > *:nth-child(6) { animation-delay: .45s; }
.ss-auth-brand-in > *:nth-child(7) { animation-delay: .53s; }

/* -- entrance: right pane -- */
.ss-auth-card {
    opacity: 0;
    animation: ssaCard .8s cubic-bezier(.22, .8, .3, 1) .18s forwards;
}

.ss-auth-note {
    opacity: 0;
    animation: ssaUp .7s cubic-bezier(.22, .8, .3, 1) .5s forwards;
}

/* Fields cascade in behind the card so the form assembles rather than blinks.
   Targets every direct child of the form (not just .form-group) so the
   remember-me row, button and footer join the cascade instead of popping in
   fully formed; register nests one more level for its .row columns. The @csrf
   hidden input counts as child 1 — harmless, it has nothing to show. */
.ss-auth-card form > *,
.ss-auth-card form .row > [class*="col-"] {
    opacity: 0;
    animation: ssaUp .55s cubic-bezier(.22, .8, .3, 1) forwards;
}

.ss-auth-card form > *:nth-child(1),
.ss-auth-card form .row > [class*="col-"]:nth-child(1) { animation-delay: .32s; }
.ss-auth-card form > *:nth-child(2),
.ss-auth-card form .row > [class*="col-"]:nth-child(2) { animation-delay: .38s; }
.ss-auth-card form > *:nth-child(3),
.ss-auth-card form .row > [class*="col-"]:nth-child(3) { animation-delay: .44s; }
.ss-auth-card form > *:nth-child(4),
.ss-auth-card form .row > [class*="col-"]:nth-child(4) { animation-delay: .50s; }
.ss-auth-card form > *:nth-child(5),
.ss-auth-card form .row > [class*="col-"]:nth-child(5) { animation-delay: .56s; }
.ss-auth-card form > *:nth-child(6),
.ss-auth-card form .row > [class*="col-"]:nth-child(6) { animation-delay: .62s; }
.ss-auth-card form > *:nth-child(7),
.ss-auth-card form .row > [class*="col-"]:nth-child(7) { animation-delay: .68s; }
.ss-auth-card form > *:nth-child(n+8),
.ss-auth-card form .row > [class*="col-"]:nth-child(n+8) { animation-delay: .74s; }

/* -- ambient: background glow + floating screenshot band -- */
.ss-auth-brand::after {
    animation: ssaGlow 9s ease-in-out infinite;
}

/* Entrance first, then hand off to the endless float — the float's delay
   equals the entrance's delay + duration, so neither fights for `transform`.
   Selector must be `.ss-auth-brand-in > .ss-auth-shot`: the bare class loses
   to the :nth-child stagger above, which would override this delay. */
.ss-auth-brand-in > .ss-auth-shot {
    animation:
        ssaUp .7s cubic-bezier(.22, .8, .3, 1) .45s forwards,
        ssaFloat 7s ease-in-out 1.15s infinite;
}

.ss-auth-badge i {
    animation: ssaRocket 5s ease-in-out 1.2s infinite;
}

/* -- avatar: pop in, then a slow outward ring -- */
.ss-auth-avatar {
    position: relative;
    animation: ssaPop .6s cubic-bezier(.34, 1.4, .5, 1) .34s backwards;
}

.ss-auth-avatar::before {
    content: "";
    position: absolute;
    inset: -7px;
    border-radius: 50%;
    border: 2px solid rgba(34, 197, 94, .38);
    animation: ssaRing 2.8s ease-out 1s infinite;
    pointer-events: none;
}

.ss-auth-div i {
    animation: ssaPop .5s cubic-bezier(.34, 1.4, .5, 1) .7s backwards;
}

/* -- hover: chips, trust items, card -- */
.ss-auth-chip,
.ss-auth-trust-i {
    transition: transform .25s cubic-bezier(.22, .8, .3, 1),
                background-color .25s ease,
                border-color .25s ease;
}

.ss-auth-chip:hover {
    transform: translateY(-4px);
    background: rgba(255, 255, 255, .10);
    border-color: rgba(163, 230, 53, .38);
}

.ss-auth-chip i,
.ss-auth-trust-i > i {
    transition: transform .3s cubic-bezier(.34, 1.4, .5, 1);
}

.ss-auth-chip:hover i,
.ss-auth-trust-i:hover > i {
    transform: scale(1.12) rotate(-6deg);
}

.ss-auth-trust-i:hover {
    transform: translateY(-2px);
}

.ss-auth-note {
    transition: transform .25s ease, box-shadow .25s ease;
}

.ss-auth-note:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 34px -18px rgba(9, 45, 25, .45);
}

/* -- submit button: light sweeps across on hover -- */
.ss-auth-card .btn-primary,
.ss-auth-card .btn-secondary {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

.ss-auth-card .btn-primary::after,
.ss-auth-card .btn-secondary::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 45%;
    z-index: -1;
    pointer-events: none;
    background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .32), transparent);
    transform: translateX(-130%) skewX(-18deg);
}

.ss-auth-card .btn-primary:hover::after,
.ss-auth-card .btn-secondary:hover::after {
    animation: ssaSheen .85s ease-out;
}

.ss-auth-card .ss-auth-btn-ghost::after {
    display: none;
}

.ss-auth-card .btn-primary:active,
.ss-auth-card .btn-secondary:active {
    transform: translateY(0);
}

/* The arrow nudges forward on hover. */
.ss-auth-btn-arrow,
.ss-auth-link i {
    transition: transform .25s cubic-bezier(.22, .8, .3, 1);
}

.ss-auth-card .btn:hover .ss-auth-btn-arrow,
.ss-auth-link:hover i {
    transform: translateX(4px);
}

[dir="rtl"] .ss-auth-card .btn:hover .ss-auth-btn-arrow {
    transform: scaleX(-1) translateX(4px);
}

/* -- field icon reacts to focus -- */
.ss-auth-field > i:first-child {
    transition: transform .25s cubic-bezier(.34, 1.4, .5, 1), color .2s ease;
}

.ss-auth-field:focus-within > i:first-child {
    transform: scale(1.15);
    color: var(--ssa-green);
}

@media (prefers-reduced-motion: reduce) {

    .ss-auth *,
    .ss-auth *::before,
    .ss-auth *::after {
        animation: none !important;
        transition-duration: .01ms !important;
    }

    /* Anything that animates in from opacity:0 must be forced visible. */
    .ss-auth-brand-in > *,
    .ss-auth-card,
    .ss-auth-note,
    .ss-auth-card form > *,
    .ss-auth-card form .row > [class*="col-"] {
        opacity: 1 !important;
    }
}

/* ---------- 13. Responsive ------------------------------------------------ */

@media (max-width: 1199.98px) {
    .ss-auth-brand {
        padding: 36px 32px;
    }

    .ss-auth-trust {
        flex-direction: column;
        gap: 13px;
    }
}

@media (max-width: 991.98px) {
    .ss-auth-h1 {
        font-size: 30px;
    }

    .ss-auth-shot {
        aspect-ratio: 16 / 9;
    }

    .ss-auth-chip {
        max-width: 100%;
    }
}

/* Below md the brand column is display:none (Bootstrap d-none d-md-block),
   so the card gets the panel background behind it instead of flat grey. */
@media (max-width: 767.98px) {
    .ss-auth-pane {
        min-height: 100vh;
        padding: 26px 16px;
        background:
            radial-gradient(120% 60% at 50% 0%, rgba(34, 197, 94, .10), transparent 60%),
            var(--ssa-pane-bg) !important;
    }

    .ss-auth-card {
        padding: 30px 22px 26px;
    }

    .ss-auth-card h2 {
        font-size: 23px;
    }

    .ss-auth-pane::before {
        display: none;
    }
}

/* ---------- 13. Compact register card on short screens --------------------
   The register form carries six field rows plus terms, buttons and the
   security note — roughly 1040px, so it scrolled on any laptop-height window.
   Below 900px of viewport height the whole card tightens: smaller avatar and
   heading block, shorter field padding, less space between rows. Nothing is
   removed, so on a tall screen the original proportions still apply.
   -------------------------------------------------------------------------- */
@media (max-height: 1040px) {

    .ss-auth-pane-in.is-wide .ss-auth-card {
        padding: 20px 26px 22px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-avatar {
        width: 48px;
        height: 48px;
        margin-bottom: 8px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-avatar img {
        width: 28px;
        height: 28px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card h2 {
        font-size: 21px;
        margin-bottom: 2px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card > p {
        font-size: 12.5px;
        margin-bottom: 12px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card .form-group {
        margin-bottom: 9px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card .form-label {
        font-size: 12.5px;
        margin-bottom: 3px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-field .form-control,
    .ss-auth-pane-in.is-wide .ss-auth-field .form-select {
        padding: 8px 0 !important;
        font-size: 13.5px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-field .card-icon,
    .ss-auth-pane-in.is-wide .ss-auth-field > i:first-child {
        font-size: 13.5px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card .btn-primary,
    .ss-auth-pane-in.is-wide .ss-auth-card .btn-secondary {
        padding: 11px 18px !important;
        font-size: 14.5px;
        border-radius: 11px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-note {
        margin-top: 10px;
        padding: 11px 16px;
        border-radius: 14px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-note b {
        font-size: 13px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-note span {
        font-size: 11.5px;
        max-width: none;
    }

    .ss-auth-pane-in.is-wide .ss-auth-note-bg {
        font-size: 26px;
    }
}

/* The brand panel is the taller half on a short window — 840px against an
   800px viewport — so the page scrolled even once the form card fitted.
   Tighten its rhythm on the same breakpoint. Shared by all four auth views. */
@media (max-height: 1040px) {

    .ss-auth-brand {
        padding: 28px 48px;
    }

    .ss-auth-logo {
        margin-bottom: 14px;
    }

    .ss-auth-badge {
        margin-bottom: 14px;
        padding: 6px 16px;
    }

    .ss-auth-h1 {
        font-size: 32px;
        margin-bottom: 12px;
    }

    .ss-auth-lead {
        margin-bottom: 16px;
    }

    .ss-auth-chips {
        margin-bottom: 18px;
    }

    .ss-auth-shot {
        margin-bottom: 18px;
    }

    .ss-auth-trust {
        padding: 12px 18px;
    }
}

/* Second tier for netbook-height windows: the first tier lands the register
   card at exactly 768px, which leaves no margin on a 768px screen once a
   bookmarks bar or a zoom level eats into it. Tighten once more. */
@media (max-height: 790px) {

    .ss-auth-pane-in.is-wide .ss-auth-card {
        padding: 16px 24px 18px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-avatar {
        width: 40px;
        height: 40px;
        margin-bottom: 6px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-avatar img {
        width: 24px;
        height: 24px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card h2 {
        font-size: 19px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card > p {
        margin-bottom: 10px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card .form-group {
        margin-bottom: 6px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-field .form-control,
    .ss-auth-pane-in.is-wide .ss-auth-field .form-select {
        padding: 6px 0 !important;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card .btn-primary,
    .ss-auth-pane-in.is-wide .ss-auth-card .btn-secondary {
        padding: 9px 16px !important;
    }

    .ss-auth-pane-in.is-wide .ss-auth-note {
        margin-top: 8px;
        padding: 9px 14px;
    }

    .ss-auth-h1 {
        font-size: 28px;
    }

    .ss-auth-shot {
        margin-bottom: 14px;
    }

    .ss-auth-brand {
        padding: 22px 48px;
    }
}

/* Third tier for very short windows (a laptop with a bookmarks bar and the
   dev tools docked, or 125% zoom). Past this the form genuinely cannot fit
   without shrinking controls below a usable tap size, so it will scroll. */
@media (max-height: 705px) {

    .ss-auth-pane-in.is-wide .ss-auth-card {
        padding: 12px 22px 14px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card .form-group {
        margin-bottom: 4px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-field .form-control,
    .ss-auth-pane-in.is-wide .ss-auth-field .form-select {
        padding: 5px 0 !important;
    }

    .ss-auth-pane-in.is-wide .ss-auth-card > p {
        margin-bottom: 8px;
    }

    .ss-auth-pane-in.is-wide .ss-auth-note {
        margin-top: 6px;
    }

    .ss-auth-brand {
        padding: 18px 48px;
    }
}
