:root {
    --ink: #17211b;
    --muted: #68756d;
    --line: #dfe5e1;
    --paper: #ffffff;
    --wash: #f3f6f4;
    --primary: #176b52;
    --primary-dark: #10513e;
    --danger: #b42318;
}

* {
    box-sizing: border-box;
}

html {
    -webkit-text-size-adjust: 100%;
}

body {
    margin: 0;
    color: var(--ink);
    background: var(--wash);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
    -webkit-font-smoothing: antialiased;
}

[x-cloak] {
    display: none !important;
}

button,
input,
select,
textarea {
    font: inherit;
}

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

.scroll-thin {
    scrollbar-width: thin;
    scrollbar-color: #cbd4ce transparent;
}

.scroll-thin::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

.scroll-thin::-webkit-scrollbar-thumb {
    background: #cbd4ce;
    border-radius: 999px;
}

.mobile-safe-bottom {
    padding-bottom: calc(76px + env(safe-area-inset-bottom));
}

.chart-bar {
    transition: opacity 160ms ease;
}

.chart-bar:hover {
    opacity: 0.78;
}

.loading-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
    animation: pulse 900ms infinite alternate;
}

.loading-dot:nth-child(2) {
    animation-delay: 180ms;
}

.loading-dot:nth-child(3) {
    animation-delay: 360ms;
}

@keyframes pulse {
    from { opacity: 0.25; transform: translateY(1px); }
    to { opacity: 1; transform: translateY(-1px); }
}

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