:root {
    --ri-bg: #F7F9FD;
    --ri-surface: #FFFFFF;
    --ri-surface-soft: #EEF3FB;
    --ri-primary: #2563EB;
    --ri-primary-dark: #1D4ED8;
    --ri-navy: #0F2A5F;
    --ri-ink: #132441;
    --ri-muted: #556183;
    --ri-muted-2: #8592AE;
    --ri-line: #E2E9F5;
    --ri-line-strong: #D3DEEF;
    --ri-success: #16A34A;
    --ri-danger: #DC3545;
    --ri-warning: #D97706;
    --ri-focus: rgba(37, 99, 235, .16);
    --ri-font-display: 'Space Grotesk', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --ri-font-body: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --ri-font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
}

* {
    box-sizing: border-box;
}

html,
body {
    min-height: 100%;
    margin: 0;
}

body.ri-auth-page {
    min-height: 100vh;
    min-height: 100dvh;
    background: var(--ri-bg);
    color: var(--ri-ink);
    font-family: var(--ri-font-body);
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

button,
input {
    font: inherit;
}

a {
    color: inherit;
    text-decoration: none;
}

.ri-auth-shell {
    display: grid;
    grid-template-columns: minmax(520px, 1.08fr) minmax(500px, .92fr);
    min-height: 100vh;
    min-height: 100dvh;
    overflow: hidden;
}

.ri-auth-visual {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 100%;
    padding: clamp(34px, 4vw, 62px);
    overflow: hidden;
    color: #fff;
    background:
        radial-gradient(circle at 88% 10%, rgba(96, 165, 250, .42), transparent 32%),
        radial-gradient(circle at 5% 92%, rgba(8, 145, 178, .22), transparent 34%),
        linear-gradient(145deg, #0F2A5F 0%, #1748A5 48%, #2563EB 100%);
}

.ri-auth-visual::before {
    content: '';
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: .22;
    background-image:
        linear-gradient(rgba(255, 255, 255, .16) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, .16) 1px, transparent 1px);
    background-size: 46px 46px;
    -webkit-mask-image: radial-gradient(ellipse 88% 78% at 50% 42%, #000 18%, transparent 90%);
    mask-image: radial-gradient(ellipse 88% 78% at 50% 42%, #000 18%, transparent 90%);
}

.ri-auth-visual::after {
    content: '';
    position: absolute;
    width: 440px;
    height: 440px;
    right: -190px;
    bottom: -210px;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 50%;
    box-shadow:
        0 0 0 54px rgba(255, 255, 255, .035),
        0 0 0 108px rgba(255, 255, 255, .025);
}

.ri-auth-brand,
.ri-auth-visual-content,
.ri-auth-visual-footer {
    position: relative;
    z-index: 1;
}

.ri-auth-brand {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    padding: 10px 14px;
    border: 1px solid rgba(255, 255, 255, .72);
    border-radius: 14px;
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 16px 36px rgba(4, 25, 69, .18);
}

.ri-auth-brand img {
    display: block;
    width: auto;
    height: 38px;
}

.ri-auth-visual-content {
    width: min(100%, 620px);
    margin: auto 0;
    padding: clamp(54px, 8vh, 92px) 0;
}

.ri-auth-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 24px;
    color: rgba(255, 255, 255, .92);
    font-family: var(--ri-font-mono);
    font-size: 12px;
    letter-spacing: .1em;
    text-transform: uppercase;
}

.ri-auth-kicker::before {
    content: '';
    width: 24px;
    height: 1px;
    background: rgba(255, 255, 255, .72);
}

.ri-auth-visual h1 {
    max-width: 590px;
    margin: 0;
    color: #fff;
    font-family: var(--ri-font-display);
    font-size: clamp(42px, 4.8vw, 70px);
    font-weight: 600;
    line-height: 1.03;
    letter-spacing: -.045em;
}

.ri-auth-visual h1 span {
    color: #CFE0FF;
}

.ri-auth-visual-copy {
    max-width: 560px;
    margin: 24px 0 0;
    color: rgba(255, 255, 255, .82);
    font-size: clamp(15px, 1.3vw, 18px);
    line-height: 1.75;
}

.ri-auth-benefits {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px 24px;
    max-width: 570px;
    margin: 34px 0 0;
    padding: 0;
    list-style: none;
}

.ri-auth-benefits li {
    display: flex;
    align-items: center;
    gap: 10px;
    color: rgba(255, 255, 255, .92);
    font-size: 14px;
}

.ri-auth-benefits svg {
    width: 19px;
    height: 19px;
    flex: 0 0 19px;
    padding: 3px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .15);
}

.ri-auth-flow {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 42px;
}

.ri-auth-flow-node {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    color: rgba(255, 255, 255, .9);
    font-family: var(--ri-font-mono);
    font-size: 12px;
}

.ri-auth-flow-node span {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border: 1px solid rgba(255, 255, 255, .24);
    border-radius: 11px;
    background: rgba(255, 255, 255, .11);
    backdrop-filter: blur(8px);
}

.ri-auth-flow-node svg {
    width: 18px;
    height: 18px;
}

.ri-auth-flow-line {
    width: clamp(28px, 4vw, 64px);
    height: 1px;
    background: linear-gradient(90deg, rgba(255, 255, 255, .25), rgba(255, 255, 255, .8));
}

.ri-auth-visual-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    color: rgba(255, 255, 255, .58);
    font-family: var(--ri-font-mono);
    font-size: 11px;
}

.ri-auth-visual-footer strong {
    color: rgba(255, 255, 255, .86);
    font-weight: 500;
}

.ri-auth-form-side {
    position: relative;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 100%;
    padding: clamp(28px, 4vw, 58px) clamp(34px, 6vw, 88px);
    overflow-y: auto;
    background:
        radial-gradient(circle at 100% 0%, rgba(37, 99, 235, .075), transparent 30%),
        var(--ri-surface);
}

.ri-auth-mobile-brand {
    display: none;
}

.ri-auth-form-wrap {
    width: min(100%, 470px);
    margin: auto;
    padding: 36px 0;
}

.ri-auth-register .ri-auth-form-wrap {
    width: min(100%, 500px);
    padding: 22px 0;
}

.ri-auth-form-eyebrow {
    margin: 0 0 11px;
    color: var(--ri-primary);
    font-family: var(--ri-font-mono);
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .11em;
    text-transform: uppercase;
}

.ri-auth-form-title {
    margin: 0;
    color: var(--ri-navy);
    font-family: var(--ri-font-display);
    font-size: clamp(32px, 3vw, 44px);
    font-weight: 600;
    line-height: 1.1;
    letter-spacing: -.035em;
}

.ri-auth-form-description {
    margin: 14px 0 0;
    color: var(--ri-muted);
    font-size: 15px;
    line-height: 1.7;
}

.ri-auth-alert {
    margin-top: 24px;
    padding: 14px 16px;
    border: 1px solid #F1B8BF;
    border-radius: 12px;
    background: #FFF4F5;
    color: #9F2330;
    font-size: 13px;
}

.ri-auth-alert strong {
    display: block;
    margin-bottom: 5px;
    font-family: var(--ri-font-display);
    font-size: 14px;
}

.ri-auth-alert ul {
    margin: 0;
    padding-left: 18px;
}

.ri-auth-status {
    margin-top: 24px;
    padding: 13px 15px;
    border: 1px solid #B8E1C8;
    border-radius: 12px;
    background: #F0FBF4;
    color: #19733C;
    font-size: 13px;
}

.ri-auth-form {
    margin-top: 30px;
}

.ri-auth-field {
    margin-bottom: 18px;
}

.ri-auth-label {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 8px;
    color: var(--ri-ink);
    font-size: 13px;
    font-weight: 600;
}

.ri-auth-label a {
    color: var(--ri-primary);
    font-weight: 500;
}

.ri-auth-label a:hover {
    color: var(--ri-primary-dark);
}

.ri-auth-input-wrap {
    position: relative;
}

.ri-auth-input-icon {
    position: absolute;
    top: 50%;
    left: 16px;
    width: 19px;
    height: 19px;
    color: var(--ri-muted-2);
    transform: translateY(-50%);
    pointer-events: none;
}

.ri-auth-input {
    display: block;
    width: 100%;
    min-height: 52px;
    padding: 13px 48px 13px 48px;
    border: 1px solid var(--ri-line-strong);
    border-radius: 12px;
    outline: none;
    background: #fff;
    color: var(--ri-ink);
    font-size: 14px;
    transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}

.ri-auth-input::placeholder {
    color: #A0ACC0;
}

.ri-auth-input:hover {
    border-color: #B8CAE3;
}

.ri-auth-input:focus {
    border-color: var(--ri-primary);
    box-shadow: 0 0 0 4px var(--ri-focus);
}

.ri-auth-input:focus + .ri-auth-input-icon,
.ri-auth-input-wrap:focus-within .ri-auth-input-icon {
    color: var(--ri-primary);
}

.ri-auth-input.is-invalid {
    border-color: var(--ri-danger);
    box-shadow: 0 0 0 3px rgba(220, 53, 69, .08);
}

.ri-auth-input:-webkit-autofill,
.ri-auth-input:-webkit-autofill:hover,
.ri-auth-input:-webkit-autofill:focus {
    -webkit-text-fill-color: var(--ri-ink);
    -webkit-box-shadow: 0 0 0 1000px #F4F8FF inset;
    box-shadow: 0 0 0 1000px #F4F8FF inset;
    border-color: #8BB1F5;
    caret-color: var(--ri-ink);
}

.ri-auth-password-toggle {
    position: absolute;
    top: 50%;
    right: 8px;
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    padding: 0;
    border: 0;
    border-radius: 9px;
    background: transparent;
    color: var(--ri-muted-2);
    cursor: pointer;
    transform: translateY(-50%);
}

.ri-auth-password-toggle:hover,
.ri-auth-password-toggle:focus-visible {
    background: var(--ri-surface-soft);
    color: var(--ri-primary);
    outline: none;
}

.ri-auth-password-toggle svg {
    width: 20px;
    height: 20px;
}

.ri-auth-password-toggle .ri-eye-off {
    display: none;
}

.ri-auth-password-toggle[aria-pressed='true'] .ri-eye-on {
    display: none;
}

.ri-auth-password-toggle[aria-pressed='true'] .ri-eye-off {
    display: block;
}

.ri-auth-invalid-feedback {
    display: block;
    margin-top: 6px;
    color: var(--ri-danger);
    font-size: 12px;
}

.ri-auth-helper {
    margin: 7px 0 0;
    color: var(--ri-muted-2);
    font-size: 12px;
    line-height: 1.55;
}

.ri-auth-options {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    margin: 2px 0 22px;
}

.ri-auth-check {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    color: var(--ri-muted);
    font-size: 13px;
    cursor: pointer;
}

.ri-auth-check input {
    width: 17px;
    height: 17px;
    margin: 1px 0 0;
    flex: 0 0 17px;
    accent-color: var(--ri-primary);
}

.ri-auth-check a {
    color: var(--ri-primary);
    font-weight: 600;
}

.ri-auth-forgot {
    color: var(--ri-primary);
    font-size: 13px;
    font-weight: 600;
}

.ri-auth-forgot:hover {
    color: var(--ri-primary-dark);
}

.ri-auth-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    width: 100%;
    min-height: 52px;
    padding: 13px 20px;
    border: 1px solid transparent;
    border-radius: 12px;
    font-family: var(--ri-font-display);
    font-size: 15px;
    font-weight: 600;
    cursor: pointer;
    transition: transform .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease;
}

.ri-auth-button-primary {
    background: var(--ri-primary);
    color: #fff;
    box-shadow: 0 10px 24px -12px rgba(37, 99, 235, .8);
}

.ri-auth-button-primary:hover:not(:disabled) {
    transform: translateY(-1px);
    background: var(--ri-primary-dark);
    box-shadow: 0 16px 30px -14px rgba(37, 99, 235, .9);
}

.ri-auth-button:focus-visible {
    outline: 4px solid var(--ri-focus);
    outline-offset: 2px;
}

.ri-auth-button:disabled {
    cursor: wait;
    opacity: .72;
    transform: none;
}

.ri-auth-button-google {
    border-color: var(--ri-line-strong);
    background: #fff;
    color: var(--ri-navy);
    box-shadow: 0 3px 10px rgba(15, 42, 95, .04);
}

.ri-auth-button-google:hover {
    border-color: #9EBCEF;
    background: #F7FAFF;
    color: var(--ri-primary-dark);
}

.ri-auth-button-google svg {
    width: 20px;
    height: 20px;
    flex: 0 0 20px;
}

.ri-auth-spinner {
    display: none;
    width: 17px;
    height: 17px;
    border: 2px solid rgba(255, 255, 255, .45);
    border-top-color: #fff;
    border-radius: 50%;
    animation: ri-auth-spin .7s linear infinite;
}

.ri-auth-button.is-loading .ri-auth-spinner {
    display: inline-block;
}

@keyframes ri-auth-spin {
    to { transform: rotate(360deg); }
}

.ri-auth-divider {
    display: flex;
    align-items: center;
    gap: 13px;
    margin: 24px 0;
    color: var(--ri-muted-2);
    font-size: 12px;
}

.ri-auth-divider::before,
.ri-auth-divider::after {
    content: '';
    height: 1px;
    flex: 1;
    background: var(--ri-line);
}

.ri-auth-switch {
    margin: 24px 0 0;
    color: var(--ri-muted);
    text-align: center;
    font-size: 13px;
}

.ri-auth-switch a {
    color: var(--ri-primary);
    font-weight: 700;
}

.ri-auth-switch a:hover {
    color: var(--ri-primary-dark);
}

.ri-auth-legal {
    width: min(100%, 500px);
    margin: 0 auto;
    padding-top: 22px;
    border-top: 1px solid var(--ri-line);
    color: var(--ri-muted-2);
    font-family: var(--ri-font-mono);
    font-size: 10.5px;
    line-height: 1.7;
    text-align: center;
}

.ri-auth-legal a {
    color: var(--ri-muted);
}

.ri-auth-legal a:hover {
    color: var(--ri-primary);
}

.ri-auth-strength {
    margin-top: 9px;
}

.ri-auth-strength-track {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 5px;
}

.ri-auth-strength-track span {
    height: 4px;
    border-radius: 999px;
    background: var(--ri-line);
    transition: background .16s ease;
}

.ri-auth-strength[data-level='1'] .ri-auth-strength-track span:nth-child(-n+1),
.ri-auth-strength[data-level='2'] .ri-auth-strength-track span:nth-child(-n+2) {
    background: var(--ri-danger);
}

.ri-auth-strength[data-level='3'] .ri-auth-strength-track span:nth-child(-n+3) {
    background: var(--ri-warning);
}

.ri-auth-strength[data-level='4'] .ri-auth-strength-track span:nth-child(-n+4) {
    background: var(--ri-success);
}

.ri-auth-strength-label {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    margin-top: 6px;
    color: var(--ri-muted-2);
    font-size: 11px;
}

.ri-auth-strength-label strong {
    color: var(--ri-muted);
    font-weight: 600;
}

.ri-auth-register .ri-auth-field {
    margin-bottom: 15px;
}

.ri-auth-register .ri-auth-divider {
    margin: 20px 0;
}

.ri-auth-register .ri-auth-form {
    margin-top: 24px;
}

.ri-auth-noscript {
    margin-top: 18px;
    padding: 10px 12px;
    border-radius: 10px;
    background: #FFF8E8;
    color: #8A5A00;
    font-size: 12px;
}

@media (max-width: 1060px) {
    .ri-auth-shell {
        grid-template-columns: minmax(410px, .9fr) minmax(500px, 1.1fr);
    }

    .ri-auth-benefits {
        grid-template-columns: 1fr;
    }

    .ri-auth-flow-node b {
        display: none;
    }
}

@media (max-width: 860px) {
    .ri-auth-shell {
        display: block;
        min-height: 100dvh;
        overflow: visible;
    }

    .ri-auth-visual {
        display: none;
    }

    .ri-auth-form-side {
        min-height: 100dvh;
        padding: 24px clamp(20px, 7vw, 58px) 28px;
        background:
            linear-gradient(180deg, rgba(37, 99, 235, .075) 0, rgba(37, 99, 235, 0) 220px),
            var(--ri-surface);
    }

    .ri-auth-mobile-brand {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 20px;
        width: min(100%, 500px);
        margin: 0 auto;
        padding-bottom: 20px;
    }

    .ri-auth-mobile-brand img {
        display: block;
        width: auto;
        height: 38px;
    }

    .ri-auth-mobile-brand a:last-child {
        color: var(--ri-primary);
        font-size: 12px;
        font-weight: 700;
    }

    .ri-auth-form-wrap,
    .ri-auth-register .ri-auth-form-wrap {
        width: min(100%, 500px);
        margin: auto;
        padding: 44px 0 34px;
    }
}

@media (max-width: 520px) {
    .ri-auth-form-side {
        padding-right: 20px;
        padding-left: 20px;
    }

    .ri-auth-form-wrap,
    .ri-auth-register .ri-auth-form-wrap {
        padding-top: 28px;
    }

    .ri-auth-form-title {
        font-size: 32px;
    }

    .ri-auth-options {
        align-items: flex-start;
    }

    .ri-auth-legal {
        font-family: var(--ri-font-body);
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }
}

/* Canonical registration paths are links because Personal and School use
   separate server endpoints. No form fields are switched or hidden by JS. */
.ri-auth-registration-paths {
    margin-top: 22px;
}

.ri-auth-registration-paths > p {
    margin: 0 0 9px;
    color: var(--ri-ink);
    font-size: 13px;
    font-weight: 700;
}

.ri-auth-account-types {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.ri-auth-account-card {
    position: relative;
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) 20px;
    align-items: center;
    gap: 10px;
    padding: 13px 14px;
    border: 1px solid var(--ri-line);
    border-radius: 13px;
    background: #fff;
    color: var(--ri-ink);
    cursor: pointer;
    transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}

.ri-auth-account-card:hover,
.ri-auth-account-card:focus-visible {
    border-color: rgba(37, 99, 235, .35);
    box-shadow: 0 7px 18px rgba(15, 42, 95, .06);
    outline: none;
}

.ri-auth-account-icon {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: #F1F5F9;
    color: var(--ri-muted);
}

.ri-auth-account-icon svg { width: 20px; height: 20px; }
.ri-auth-account-card strong { display: block; font-size: 13px; font-weight: 700; }
.ri-auth-account-card small { display: block; margin-top: 2px; color: var(--ri-muted-2); font-size: 10.5px; line-height: 1.35; }
.ri-auth-account-check { opacity: 0; display: grid; place-items: center; width: 19px; height: 19px; border-radius: 50%; background: var(--ri-primary); color: #fff; font-size: 11px; font-weight: 700; }

.ri-auth-account-card.is-active {
    border-color: rgba(37, 99, 235, .68);
    background: #F8FBFF;
    box-shadow: 0 0 0 3px rgba(37, 99, 235, .08);
}

.ri-auth-account-card.is-active .ri-auth-account-icon {
    background: #EAF2FF;
    color: var(--ri-primary);
}

.ri-auth-account-card.is-active .ri-auth-account-check { opacity: 1; }

.ri-auth-invitation-note {
    margin-top: 10px;
    padding: 10px 12px;
    border: 1px solid #DCE8FB;
    border-radius: 11px;
    background: #F7FAFF;
    color: #52647D;
    font-size: 11px;
    line-height: 1.55;
}

.ri-auth-invitation-note strong { color: var(--ri-navy); }

.ri-auth-field-help {
    display: block;
    margin-top: 6px;
    color: var(--ri-muted-2);
    font-size: 10.5px;
    line-height: 1.45;
}

.ri-auth-school-note {
    margin: -1px 0 17px;
    padding: 11px 12px;
    border: 1px solid #DCE8FB;
    border-radius: 11px;
    background: #F7FAFF;
    color: #52647D;
    font-size: 11px;
    line-height: 1.55;
}

@media (max-width: 560px) {
    .ri-auth-account-types { grid-template-columns: 1fr; }
}
