:root {
    color-scheme: light;

    --background: #ffffff;
    --surface: #f6f6f6;
    --text: #171717;
    --muted: #666666;
    --border: #dedede;

    --accent: #4f46e5;
    --accent-hover: #4338ca;
    --accent-contrast: #ffffff;

    --error: #b42318;

    /* Bootstrap theme mappings */
    --bs-body-color: var(--text);
    --bs-body-bg: var(--background);
    --bs-secondary-color: var(--muted);
    --bs-tertiary-bg: var(--surface);
    --bs-border-color: var(--border);

    --bs-link-color: var(--accent);
    --bs-link-hover-color: var(--accent-hover);

    --bs-emphasis-color: var(--text);
    --bs-secondary-bg: var(--surface);

    font-family:
        Inter,
        ui-sans-serif,
        system-ui,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        sans-serif;
}

html[data-theme="dark"] {
    color-scheme: dark;

    --background: #111111;
    --surface: #191919;
    --text: #eeeeee;
    --muted: #a2a2a2;
    --border: #333333;

    --accent: #818cf8;
    --accent-hover: #a5b4fc;
    --accent-contrast: #111111;

    --error: #ff8a80;

    /* Bootstrap theme mappings */
    --bs-body-color: var(--text);
    --bs-body-bg: var(--background);
    --bs-secondary-color: var(--muted);
    --bs-tertiary-bg: var(--surface);
    --bs-border-color: var(--border);

    --bs-link-color: var(--accent);
    --bs-link-hover-color: var(--accent-hover);

    --bs-emphasis-color: var(--text);
    --bs-secondary-bg: var(--surface);
}

* {
    box-sizing: border-box;
}

html {
    min-width: 320px;
    min-height: 100%;
    color: var(--text);
    background: var(--background);
}

body {
    min-height: 100vh;
    margin: 0;
    color: var(--text);
    background: var(--background);
}

button,
input,
textarea,
select {
    font: inherit;
}

a {
    color: var(--accent);
}

a:hover {
    color: var(--accent-hover);
}

button:focus-visible,
a:focus-visible,
.btn:focus-visible {
    outline: 2px solid var(--accent);
    outline-offset: 3px;
    box-shadow: none;
}

.text-secondary {
    color: var(--muted) !important;
}

.bg-body {
    background-color: var(--background) !important;
}

.bg-body-tertiary {
    background-color: var(--surface) !important;
}

.border,
.border-top,
.border-end,
.border-bottom,
.border-start {
    border-color: var(--border) !important;
}

.card,
.list-group-item {
    color: var(--text);
    background-color: var(--surface);
    border-color: var(--border);
}

.card-header {
    color: var(--text);
    background-color: var(--surface);
    border-color: var(--border);
}

.btn-primary {
    --bs-btn-color: var(--accent-contrast);
    --bs-btn-bg: var(--accent);
    --bs-btn-border-color: var(--accent);

    --bs-btn-hover-color: var(--accent-contrast);
    --bs-btn-hover-bg: var(--accent-hover);
    --bs-btn-hover-border-color: var(--accent-hover);

    --bs-btn-focus-shadow-rgb: 0, 0, 0;

    --bs-btn-active-color: var(--accent-contrast);
    --bs-btn-active-bg: var(--accent-hover);
    --bs-btn-active-border-color: var(--accent-hover);

    --bs-btn-disabled-color: var(--accent-contrast);
    --bs-btn-disabled-bg: var(--accent);
    --bs-btn-disabled-border-color: var(--accent);

    font-weight: 600;
}

.btn-outline-secondary {
    --bs-btn-color: var(--text);
    --bs-btn-border-color: var(--border);

    --bs-btn-hover-color: var(--text);
    --bs-btn-hover-bg: var(--surface);
    --bs-btn-hover-border-color: var(--border);

    --bs-btn-focus-shadow-rgb: 0, 0, 0;

    --bs-btn-active-color: var(--text);
    --bs-btn-active-bg: var(--surface);
    --bs-btn-active-border-color: var(--border);

    --bs-btn-disabled-color: var(--muted);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--border);

    font-weight: 600;
}

.alert-danger {
    color: var(--error);
    background: transparent;
    border-color: var(--error);
}

#app {
    min-height: 100vh;
}

#blazor-error-ui {
    display: none;
    position: fixed;
    right: 1rem;
    bottom: 1rem;
    left: 1rem;
    z-index: 1000;
    padding: 1rem;

    color: var(--text);
    background: var(--surface);
    border: 1px solid var(--error);
    border-radius: 0.375rem;
}

#blazor-error-ui .reload {
    color: var(--accent);
}

#blazor-error-ui .dismiss {
    float: right;
    color: var(--text);
    cursor: pointer;
}
