*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--surface-page);color:var(--text-body);font:var(--type-body);letter-spacing:var(--tracking-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
h1,h2,h3,h4,h5,h6{margin:0;color:var(--text-strong);font-family:var(--font-display);letter-spacing:var(--tracking-heading);text-wrap:balance}
p{margin:0;text-wrap:pretty}
a{color:var(--text-accent);text-decoration:none;transition:var(--transition-control)}
a:hover{color:var(--accent-hover);text-decoration:underline;text-underline-offset:3px}
a:active{color:var(--accent-press)}
:focus-visible{outline:none;box-shadow:var(--focus-ring)}
button,input,select,textarea{font-family:inherit}
::selection{background:var(--blue-200);color:var(--ink-900)}
@keyframes ostra-spin{to{transform:rotate(360deg)}}
@keyframes ostra-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes ostra-fade{from{opacity:0}to{opacity:1}}
.ostra-mono-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion:reduce){*{animation-duration:0.01ms !important;transition-duration:0.01ms !important}}
