:root {
    color-scheme: dark;

    --font-sans: "PingFang SC", "Microsoft YaHei", -apple-system, BlinkMacSystemFont,
        "Segoe UI", sans-serif;
    --font-display: "Songti SC", "STSong", "Noto Serif CJK SC", serif;

    --color-bg: #120f15;
    --color-bg-soft: #19141b;
    --color-surface: rgba(31, 25, 33, 0.9);
    --color-surface-strong: rgba(40, 31, 41, 0.96);
    --color-surface-soft: rgba(53, 41, 53, 0.72);
    --color-text: #f8f2f5;
    --color-text-soft: #d8cbd2;
    --color-text-muted: #a6959e;
    --color-accent: #ce829f;
    --color-accent-strong: #ad607e;
    --color-accent-soft: rgba(206, 130, 159, 0.16);
    --color-gold: #d4b27b;
    --color-border: rgba(226, 202, 213, 0.18);
    --color-border-strong: rgba(226, 202, 213, 0.32);
    --color-danger: #efadb4;

    --radius-sm: 8px;
    --radius-md: 12px;
    --radius-lg: 18px;
    --radius-xl: 24px;
    --radius-pill: 999px;

    --shadow-sm: 0 8px 24px rgba(5, 3, 7, 0.22);
    --shadow-md: 0 18px 50px rgba(5, 3, 7, 0.34);
    --shadow-lg: 0 28px 80px rgba(5, 3, 7, 0.48);
    --focus-ring: 0 0 0 3px rgba(206, 130, 159, 0.22);

    --space-1: 4px;
    --space-2: 8px;
    --space-3: 12px;
    --space-4: 16px;
    --space-5: 20px;
    --space-6: 24px;
}

html {
    background: var(--color-bg);
}

body {
    font-family: var(--font-sans);
    color: var(--color-text);
    text-rendering: optimizeLegibility;
    -webkit-font-smoothing: antialiased;
}

button,
input {
    font: inherit;
}

button,
a,
input {
    -webkit-tap-highlight-color: transparent;
}

button:focus-visible,
a:focus-visible,
input:focus-visible {
    outline: 2px solid var(--color-accent);
    outline-offset: 2px;
}

::selection {
    background: rgba(206, 130, 159, 0.34);
    color: var(--color-text);
}

/* Authentication pages */
body.page-auth {
    background:
        radial-gradient(circle at 18% 14%, rgba(173, 96, 126, 0.2), transparent 34%),
        radial-gradient(circle at 82% 82%, rgba(106, 82, 117, 0.18), transparent 38%),
        linear-gradient(145deg, #171119, var(--color-bg) 56%, #0e0b11);
    color: var(--color-text);
}

body.page-auth main {
    padding: 30px 28px 26px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xl);
    background: linear-gradient(155deg, rgba(45, 34, 45, 0.92), rgba(27, 22, 29, 0.96));
    box-shadow: var(--shadow-lg);
    backdrop-filter: blur(18px);
}

body.page-auth h1 {
    color: var(--color-text);
    font-family: var(--font-display);
    font-size: 26px;
    font-weight: 600;
    letter-spacing: 0.08em;
}

body.page-auth label {
    color: var(--color-text-soft);
    font-size: 13px;
}

body.page-auth input {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    background: rgba(17, 13, 19, 0.72);
    color: var(--color-text);
    transition: border-color 0.16s ease, background 0.16s ease, box-shadow 0.16s ease;
}

body.page-auth input:hover {
    border-color: var(--color-border-strong);
}

body.page-auth input:focus {
    border-color: var(--color-accent);
    background: rgba(20, 15, 22, 0.9);
    box-shadow: var(--focus-ring);
    outline: none;
}

body.page-auth button {
    border-radius: var(--radius-md);
    background: linear-gradient(135deg, var(--color-accent-strong), var(--color-accent));
    color: #fff9fb;
    font-weight: 600;
    letter-spacing: 0.04em;
    box-shadow: 0 10px 26px rgba(126, 61, 86, 0.28);
    transition: transform 0.16s ease, filter 0.16s ease, box-shadow 0.16s ease;
}

body.page-auth button:hover {
    filter: brightness(1.06);
    box-shadow: 0 13px 30px rgba(126, 61, 86, 0.36);
    transform: translateY(-1px);
}

body.page-auth .link,
body.page-auth .status,
body.page-auth a {
    color: var(--color-text-muted);
}

body.page-auth a {
    color: #dfabc0;
    text-underline-offset: 3px;
}

body.page-auth .status {
    color: var(--color-danger);
}

/* Role selection page */
body.role-select-page {
    background:
        radial-gradient(circle at 12% 12%, rgba(173, 96, 126, 0.18), transparent 36%),
        radial-gradient(circle at 88% 4%, rgba(101, 78, 111, 0.2), transparent 34%),
        linear-gradient(160deg, #171119, var(--color-bg) 58%, #0d0a0f);
    color: var(--color-text);
}

body.role-select-page .top-nav {
    color: var(--color-text-soft);
}

body.role-select-page .user-pill,
body.role-select-page .btn-small {
    border-color: var(--color-border);
    background: rgba(35, 27, 36, 0.7);
    color: var(--color-text-soft);
    backdrop-filter: blur(12px);
}

body.role-select-page .btn-small {
    border-radius: var(--radius-pill);
    transition: border-color 0.16s ease, background 0.16s ease, color 0.16s ease;
}

body.role-select-page .btn-small:hover {
    border-color: var(--color-accent);
    background: var(--color-surface-strong);
    color: var(--color-text);
}

body.role-select-page .page-title {
    color: var(--color-text);
    font-family: var(--font-display);
    font-weight: 600;
    letter-spacing: 0.06em;
}

body.role-select-page .page-subtitle,
body.role-select-page .status-bar,
body.role-select-page .empty-tip {
    color: var(--color-text-muted);
}

body.role-select-page .status-bar.error {
    color: var(--color-danger);
}

body.role-select-page .role-card {
    border-color: var(--color-border);
    border-radius: var(--radius-lg);
    background: linear-gradient(155deg, rgba(43, 33, 43, 0.9), rgba(26, 21, 29, 0.96));
    box-shadow: var(--shadow-md);
}

body.role-select-page .role-card:hover {
    border-color: rgba(206, 130, 159, 0.62);
    box-shadow: 0 24px 58px rgba(5, 3, 7, 0.5);
}

body.role-select-page .role-cover {
    background:
        radial-gradient(circle at 28% 18%, rgba(206, 130, 159, 0.26), transparent 54%),
        #151017;
}

body.role-select-page .role-cover img {
    filter: saturate(0.88) contrast(1.03);
}

body.role-select-page .role-chip,
body.role-select-page .role-id-badge {
    border-color: var(--color-border-strong);
    background: rgba(24, 18, 25, 0.74);
    color: var(--color-text-soft);
    backdrop-filter: blur(10px);
}

body.role-select-page .role-name {
    color: var(--color-text);
    font-family: var(--font-display);
    letter-spacing: 0.04em;
}

body.role-select-page .role-code,
body.role-select-page .role-meta {
    color: var(--color-text-muted);
}

body.role-select-page .role-desc {
    color: var(--color-text-soft);
}

body.role-select-page .meta-tag {
    border-color: var(--color-border);
    background: var(--color-accent-soft);
    color: #ddb4c4;
}

body.role-select-page .btn-chat {
    border-radius: var(--radius-pill);
    background: linear-gradient(135deg, var(--color-accent-strong), var(--color-accent));
    color: #fff9fb;
    box-shadow: 0 8px 22px rgba(126, 61, 86, 0.28);
}

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