@font-face {
font-family: "Plus Jakarta Sans";
font-style: normal;
font-weight: 200 800;
font-display: swap;
src: url("../fonts/plus-jakarta-sans.woff2") format("woff2");
}
:root {
--space-1: 4px;
--space-2: 8px;
--space-3: 12px;
--space-4: 16px;
--space-5: 24px;
--space-6: 32px;
--space-7: 48px;
--radius-card: 16px;
--radius-control: 12px;
--radius-pill: 999px;
--tap: 48px;                 /* minimum tap target */
--tabbar-h: 64px;
--content-max: 560px;
--gutter: 16px;
--safe-top: env(safe-area-inset-top, 0px);
--safe-bottom: env(safe-area-inset-bottom, 0px);
--safe-left: env(safe-area-inset-left, 0px);
--safe-right: env(safe-area-inset-right, 0px);
--font: "Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
"Helvetica Neue", Arial, sans-serif;
--ease: cubic-bezier(0.2, 0.8, 0.2, 1);
--speed: 220ms;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
}
body {
margin: 0;
min-height: 100vh;
min-height: 100dvh;
background-color: var(--color-bg);
background-image:
radial-gradient(700px 420px at 100% -10%, var(--tone-teal-soft), transparent 70%),
radial-gradient(600px 380px at -10% 110%, var(--tone-coral-soft), transparent 70%);
background-attachment: fixed;
color: var(--color-text);
font-family: var(--font);
font-size: 1rem;              /* 16px */
line-height: 1.5;
-webkit-font-smoothing: antialiased;
-webkit-tap-highlight-color: transparent;
overflow-x: hidden;           /* never scroll sideways */
}
h1, h2, h3, p, ul, ol {
margin: 0;
}
ul, ol {
padding: 0;
list-style: none;
}
img, svg {
display: block;
max-width: 100%;
}
button, input, select, textarea {
font: inherit;
color: inherit;
}
button {
cursor: pointer;
}
h1 { font-size: 1.5rem;  line-height: 1.25; font-weight: 800; letter-spacing: -0.02em; }
h2 { font-size: 1.25rem; line-height: 1.3;  font-weight: 700; letter-spacing: -0.01em; }
h3 { font-size: 1.0625rem; line-height: 1.35; font-weight: 700; }
.text-muted { color: var(--color-text-muted); }
.text-small { font-size: 0.9375rem; }   /* 15px — smallest text we use */
.money { font-variant-numeric: tabular-nums; white-space: nowrap; }
.truncate {
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
[hidden] {
display: none !important;
}
fieldset {
min-width: 0;
margin: 0;
padding: 0;
border: 0;
}
legend {
padding: 0;
}
:focus-visible {
outline: 3px solid var(--color-primary);
outline-offset: 2px;
}
[tabindex="-1"]:focus {
outline: none;
}
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0 0 0 0);
white-space: nowrap;
border: 0;
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
