:root {
    --primary-color: #F05E3E;
    --bg-primary: #F8F9FA;
    --bg-secondary: #ffffff;
}

html.dark-mode,
body.dark-mode {
    --bg-primary: #1a1d23;
    --bg-secondary: #23262d;
}

*,
*::before,
*::after {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
}

body.app-loading {
    background: #f8f9fa;
    margin: 0;
    overflow: hidden;
}

html.dark-mode body.app-loading,
body.app-loading.dark-mode {
    background: #1a1d23;
}

#root {
    width: 100vw;
    height: 100vh;
}

body.app-loading #root {
    opacity: 0;
}

body.app-ready #root {
    opacity: 1;
    transition: opacity 0.2s ease;
}

.initial-loader {
    position: fixed;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--bg-secondary);
    z-index: 20000;
    transition: opacity 0.25s ease, visibility 0.25s ease;
}

body.dark-mode .initial-loader {
    background: var(--bg-primary);
}

html.dark-mode .initial-loader {
    background: #1a1d23;
}

.initial-loader__content {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 24px;
    text-align: center;
}

.initial-loader__spinner {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    border: 4px solid color-mix(in srgb, var(--primary-color) 20%, transparent);
    border-top-color: var(--primary-color, #F05E3E);
    animation: initial-loader-spin 0.8s linear infinite;
    box-shadow: 0 8px 30px color-mix(in srgb, var(--primary-color) 18%, transparent);
    flex-shrink: 0;
}

.initial-loader__title {
    font-family: inherit;
    font-size: 20px;
    font-weight: 700;
    line-height: 1.2;
    color: var(--primary-color, #F05E3E);
    margin: 0;
}

body.app-ready .initial-loader {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

@keyframes initial-loader-spin {
    to {
        transform: rotate(360deg);
    }
}
