* {
    box-sizing: border-box;
}

::selection {
    color: #ffffff;
    background: var(--accent-bright);
}

body {
    margin: 0;
    min-height: 100vh;
    font-family: var(--font-body);
    font-size: var(--fs-body);
    line-height: var(--lh-normal);
    color: var(--text-main);
    background: var(--bg-soft);
}

* {
    scrollbar-color: rgba(70, 72, 212, 0.28) transparent;
    scrollbar-width: thin;
}

*::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

*::-webkit-scrollbar-track {
    background: transparent;
}

*::-webkit-scrollbar-thumb {
    min-height: 48px;
    border: 3px solid transparent;
    border-radius: var(--radius-pill);
    background: rgba(70, 72, 212, 0.2);
    background-clip: padding-box;
}

*::-webkit-scrollbar-thumb:hover {
    background: rgba(70, 72, 212, 0.34);
    background-clip: padding-box;
}

*::-webkit-scrollbar-corner {
    background: transparent;
}

.shell {
    min-height: 100vh;
    display: flex;
    justify-content: center;
    align-items: stretch;
    padding: 0;
    background: var(--bg-soft);
}

.panel {
    width: 100%;
    background: transparent;
    border: 0;
    border-radius: 0;
    backdrop-filter: none;
}

.dashboard-panel,
.admin-panel,
.admin-methodology-panel,
.admin-reports-panel,
.admin-report-detail-panel,
.ai-welcome-panel,
.prechat-panel,
.profile-panel,
.reports-panel,
.processing-panel,
.report-panel,
.interview-panel,
.chat-panel,
.onboarding-panel {
    width: 100%;
    min-height: 100vh;
}

.auth-panel {
    position: relative;
    isolation: isolate;
    display: flex;
    flex-direction: column;
    gap: var(--space-5);
    align-self: center;
    width: min(calc(100% - 64px), 448px);
    max-width: 448px;
    min-height: auto;
    padding: var(--space-6) var(--space-7);
    border-radius: var(--radius-sm);
    background: var(--panel);
    border: 1px solid var(--panel-border);
    box-shadow: none;
    text-align: center;
}

.auth-background {
    position: fixed;
    inset: 0;
    overflow: hidden;
    z-index: -2;
    pointer-events: none;
}

.auth-background-plane {
    --auth-stripe-width: clamp(162px, 14.2vw, 226px);
    position: absolute;
    top: 50%;
    left: 50%;
    display: flex;
    width: max-content;
    height: 190vmax;
    opacity: 0.42;
    transform: translate(-50%, -50%) rotate(-45deg);
    transform-origin: center;
}

.auth-background-stripe {
    flex: 0 0 var(--auth-stripe-width);
    height: 190vmax;
    background-repeat: repeat-y;
    background-position: center top;
    background-size: 100% auto;
    will-change: transform;
    transform: translate3d(0, -18vh, 0);
    animation: auth-stripe-up 48s linear infinite alternate;
}

.auth-background-stripe + .auth-background-stripe {
    margin-left: clamp(-22px, -1.4vw, -10px);
}

.auth-background-stripe:nth-child(even) {
    transform: translate3d(0, 18vh, 0);
    animation-name: auth-stripe-down;
}

.auth-background-stripe-user-report {
    background-image: url("/web/assets/decor/auth-bg-user-report.webp");
}

.auth-background-stripe-admin-dashboard {
    background-image: url("/web/assets/decor/auth-bg-admin-dashboard.webp");
}

.auth-background-stripe-admin-cases {
    background-image: url("/web/assets/decor/auth-bg-admin-cases.webp");
}

.auth-background-stripe-user-dashboard {
    background-image: url("/web/assets/decor/auth-bg-user-dashboard.webp");
}

.auth-background-stripe-admin-prompt-lab {
    background-image: url("/web/assets/decor/auth-bg-admin-prompt-lab.webp");
}

.auth-background-stripe-admin-case-lib {
    background-image: url("/web/assets/decor/auth-bg-admin-case-lib.webp");
}

.auth-panel::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -1;
    background: rgba(247, 249, 251, 0.54);
    pointer-events: none;
}

.auth-panel::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    border-radius: inherit;
    background: var(--panel);
    pointer-events: none;
}

.auth-panel > :not(.auth-background) {
    position: relative;
    z-index: 1;
}

body:has(.auth-panel:not(.hidden)) {
    overflow: hidden;
}

@keyframes auth-stripe-up {
    0% {
        transform: translate3d(0, -18vh, 0);
    }

    100% {
        transform: translate3d(0, 18vh, 0);
    }
}

@keyframes auth-stripe-down {
    0% {
        transform: translate3d(0, 18vh, 0);
    }

    100% {
        transform: translate3d(0, -18vh, 0);
    }
}

.brand {
    font-family: var(--font-heading);
    font-size: var(--fs-body-lg);
    font-weight: var(--fw-bold);
    margin-bottom: var(--space-3);
}

h1,
h2,
h3,
h4 {
    margin: 0;
    font-family: var(--font-heading);
    color: var(--text-strong);
}

h1 {
    font-size: var(--fs-h1);
    font-weight: var(--fw-extrabold);
    line-height: var(--lh-tight);
    letter-spacing: var(--ls-tight);
}

h2 {
    font-size: var(--fs-display);
    font-weight: var(--fw-extrabold);
    line-height: var(--lh-display);
    letter-spacing: var(--ls-tight);
}

h3 {
    font-size: var(--fs-h3);
    font-weight: var(--fw-bold);
    line-height: var(--lh-tight);
}

h4 {
    font-size: var(--fs-h4);
    font-weight: var(--fw-bold);
    line-height: var(--lh-snug);
}

.subtitle {
    margin: var(--space-3) 0 0;
    color: var(--text-muted);
    font-size: var(--fs-body-lg);
    line-height: var(--lh-normal);
}

.eyebrow {
    color: var(--text-muted);
    font-family: var(--font-heading);
    font-size: var(--fs-caption);
    font-weight: var(--fw-bold);
    line-height: var(--lh-tight);
    letter-spacing: var(--ls-eyebrow);
    text-transform: uppercase;
}

.caption {
    color: var(--text-muted);
    font-size: var(--fs-caption);
    line-height: var(--lh-snug);
}

.meta {
    color: var(--text-muted);
    font-size: var(--fs-meta);
    line-height: var(--lh-snug);
}

.stack {
    display: grid;
    gap: var(--space-3);
    margin-top: var(--space-5);
}

.field {
    display: grid;
    gap: var(--space-2);
    font-size: var(--fs-body);
    font-weight: var(--fw-semibold);
}
