:root {
    --primary: #4f46e5;
    --primary-light: #6366f1;
    --primary-dark: #4338ca;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
}

body, html {
    overflow-x: hidden;
    width: 100%;
    position: relative;
    scroll-behavior: smooth;
    text-rendering: optimizeLegibility;
    min-height: 100vh;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

body {
    margin: 0;
    padding: 0;
    background-color: #f8fafc;
    background-image: radial-gradient(circle at top left,rgba(99,102,241,.05),transparent 30%),radial-gradient(circle at bottom right,rgba(168,85,247,.05),transparent 30%);
    font-family: -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;
}

@keyframes fadeInUp {
    0% {
        opacity: 0;
        transform: translateY(20px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes loading {
    0% {
        background-position: 200% 0;
    }

    to {
        background-position: -200% 0;
    }
}

@keyframes spin {
    to {
        transform: rotate(1turn);
    }
}

@keyframes noticeSlideDown {
    0% {
        opacity: 0;
        transform: translate(-50%,-12px);
    }

    to {
        opacity: 1;
        transform: translate(-50%);
    }
}

.animate-fade-in-up {
    animation: fadeInUp .6s cubic-bezier(.16,1,.3,1) forwards;
    opacity: 0;
    will-change: transform,opacity;
}

#percentageCounter {
    background: linear-gradient(90deg,#4f46e5,#6366f1 50%,#8b5cf6);
    transition: width .1s linear;
    will-change: width;
    position: fixed;
    top: 0;
    left: 0;
    height: 3px;
    z-index: 9999;
    width: 0;
    pointer-events: none;
}

.stat-value.loading {
    background: linear-gradient(90deg,#e5e7eb 25%,#d1d5db 50%,#e5e7eb 75%);
    background-size: 200% 100%;
    animation: loading 1.5s infinite;
    color: transparent!important;
    border-radius: .5rem;
    width: 140px;
    user-select: none;
    will-change: background-position;
}

.stat-value.stat-error {
    color: #ef4444!important;
    font-size: calc(.95rem + 1px)!important;
    font-weight: 500!important;
}

.chart-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .6rem;
    background: hsla(0,0%,100%,.78);
    backdrop-filter: blur(2px);
    -webkit-backdrop-filter: blur(2px);
    border-radius: .75rem;
    transition: opacity .3s ease;
    z-index: 2;
}

.chart-overlay.chart-overlay-hidden {
    opacity: 0;
    pointer-events: none;
}

.chart-spinner {
    width: 28px;
    height: 28px;
    border: 3px solid #e0e7ff;
    border-top-color: #4f46e5;
    border-radius: 50%;
    animation: spin .8s linear infinite;
}

.chart-overlay-text {
    font-size: calc(.8rem + 1px);
    color: #64748b;
}

.chart-overlay-icon {
    font-size: calc(1.5rem + 1px);
    color: #f87171;
}

.chart-retry-btn {
    color: #4f46e5;
    background: #fff;
}

.chart-retry-btn:hover {
    background: #eef2ff;
}

#statsNotice {
    position: fixed;
    top: .75rem;
    left: 50%;
    transform: translate(-50%);
    z-index: 9998;
    display: flex;
    align-items: center;
    gap: .5rem;
    max-width: calc(100vw - 2rem);
    padding: .55rem .9rem;
    background: #fff;
    border: 1px solid #fecaca;
    border-radius: .75rem;
    box-shadow: 0 10px 25px -8px rgba(239,68,68,.25);
    color: #b91c1c;
    font-size: calc(.8rem + 1px);
    animation: noticeSlideDown .3s ease forwards;
}

#statsNotice[hidden] {
    display: none;
}

#statsNoticeRetry {
    color: #fff;
    background: #ef4444;
}

#statsNoticeRetry:hover {
    background: #dc2626;
}

#statsNoticeClose {
    display: flex;
    align-items: center;
    color: #fca5a5;
    background: none;
    border: none;
    cursor: pointer;
    font-size: calc(1rem + 1px);
    line-height: 1;
}

#statsNoticeClose:hover {
    color: #ef4444;
}

@media (max-width:640px) {
    #main-content, .sidebar-layout {
        padding-top: 0;
    }

    .stat-value {
        font-size: calc(1.25rem + 1px)!important;
    }

    #app.section-padding {
        padding-top: 1.75rem!important;
        padding-bottom: 2rem;
    }

    .stat-value.loading {
        width: 100px;
    }
}

@media (min-width:1024px) {
    .stat-value {
        font-size: calc(1.5rem + 1px)!important;
    }

    .section-padding {
        padding-top: 1rem;
        padding-bottom: 4rem;
    }
}

@media (hover:none) {
    .chart-card:hover, .stat-card:hover {
        transform: none!important;
        box-shadow: 0 1px 3px rgba(0,0,0,.02)!important;
    }

    .chart-card:hover:before, .stat-card:hover:before {
        opacity: 0!important;
    }
}

@media (prefers-reduced-motion:reduce) {
    .animate-fade-in-up, .chart-spinner, .stat-value.loading {
        animation: none!important;
    }

    .animate-fade-in-up {
        opacity: 1;
    }
}

.chart-card, .stat-card {
    background: #fff;
    border: 1px solid #e2e8f0;
    border-radius: 1.25rem;
    padding: 1.5rem;
    transition: all .4s cubic-bezier(.4,0,.2,1);
    overflow: hidden;
    position: relative;
    box-shadow: 0 1px 3px rgba(0,0,0,.02);
}

.stat-card {
    cursor: pointer;
}

.stat-card:hover {
    transform: translateY(-6px);
    box-shadow: 0 20px 40px -15px rgba(79,70,229,.15),0 8px 16px -8px rgba(0,0,0,.08);
    border-color: #c7d2fe;
}

.chart-card:hover {
    transform: translateY(-4px);
    box-shadow: 0 20px 40px -15px rgba(79,70,229,.12),0 8px 16px -8px rgba(0,0,0,.06);
    border-color: #c7d2fe;
}

.chart-card:before, .stat-card:before {
    content: "";
    position: absolute;
    inset: 0;
    opacity: 0;
    transition: opacity .4s;
    pointer-events: none;
}

.stat-card:before {
    background: radial-gradient(circle at top right,rgba(99,102,241,.08),transparent 70%);
}

.chart-card:before {
    background: radial-gradient(circle at top left,rgba(99,102,241,.06),transparent 60%);
}

.chart-card:hover:before, .stat-card:hover:before {
    opacity: 1;
}

.section-padding {
    padding-top: 1rem;
    padding-bottom: 2rem;
}

.custom-scrollbar::-webkit-scrollbar {
    width: 6px;
}

.custom-scrollbar::-webkit-scrollbar-track {
    background: #f1f5f9;
    border-radius: 10px;
}

.custom-scrollbar::-webkit-scrollbar-thumb {
    background: #cbd5e1;
    border-radius: 10px;
}

.custom-scrollbar::-webkit-scrollbar-thumb:hover {
    background: #94a3b8;
}

html.dark body {
    background-image: radial-gradient(circle at top left,rgba(99,102,241,.08),transparent 30%),radial-gradient(circle at bottom right,rgba(168,85,247,.08),transparent 30%);
}

html.dark .chart-card, html.dark .stat-card {
    background: #101a2e;
    border-color: #24314e;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,.4);
}

html.dark .chart-card:hover, html.dark .stat-card:hover {
    box-shadow: 0 20px 40px -15px rgba(0,0,0,.55),0 8px 16px -8px rgba(0,0,0,.3);
    border-color: rgba(129,140,248,.5);
}

html.dark .stat-card:before {
    background: radial-gradient(circle at top right,rgba(129,140,248,.12),transparent 70%);
}

html.dark .chart-card:before {
    background: radial-gradient(circle at top left,rgba(129,140,248,.1),transparent 60%);
}

html.dark .stat-value.loading {
    background: linear-gradient(90deg,#1c2942 25%,#2b3a58 50%,#1c2942 75%);
    background-size: 200% 100%;
}

html.dark .bg-blue-50 {
    background-color: rgba(59,130,246,.15);
}

html.dark .bg-violet-50 {
    background-color: rgba(139,92,246,.16);
}

html.dark .bg-pink-50 {
    background-color: rgba(236,72,153,.14);
}

html.dark .bg-emerald-50 {
    background-color: rgba(16,185,129,.14);
}

html.dark .text-blue-600 {
    color: #60a5fa;
}

html.dark .text-violet-600 {
    color: #a78bfa;
}

html.dark .text-pink-600 {
    color: #f472b6;
}

html.dark .text-emerald-600 {
    color: #34d399;
}

html.dark .text-rose-600 {
    color: #fb7185;
}

html.dark .chart-overlay {
    background: rgba(16,26,46,.82);
}

html.dark .chart-overlay-text {
    color: #8b9bb4;
}

html.dark .chart-spinner {
    border-color: #818cf8 #24314e #24314e;
}

html.dark .chart-retry-btn {
    background: #101a2e;
    border-color: rgba(129,140,248,.45);
    color: #a5b4fc;
}

html.dark .chart-retry-btn:hover {
    background: #1c2942;
}

html.dark #statsNotice {
    background: #101a2e;
    border-color: rgba(248,113,113,.4);
    color: #fca5a5;
    box-shadow: 0 10px 25px -8px rgba(0,0,0,.5);
}

html.dark #statsNoticeClose {
    color: #7f8ca3;
}

html.dark #statsNoticeClose:hover {
    color: #f87171;
}

html.dark .custom-scrollbar::-webkit-scrollbar-track {
    background: #162136;
}

html.dark .custom-scrollbar::-webkit-scrollbar-thumb {
    background: #2b3a58;
}

html.dark .custom-scrollbar::-webkit-scrollbar-thumb:hover {
    background: #3b4e74;
}

@media (min-width:1024px) {
    #app.section-padding {
        width: auto;
        margin-left: -24px;
        margin-right: -24px;
        min-height: calc(100vh - 104px);
    }
}
