*,*::before,*::after{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--surface-page);color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--leading-base);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4,h5,h6{margin:0;font-family:var(--font-display);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-tight);line-height:1.15}
p{margin:0}
a{color:var(--brand-text);text-decoration:none}
a:hover{color:var(--blue-800);text-decoration:underline}
[data-theme="dark"] a{color:var(--brand)}
[data-theme="dark"] a:hover{color:var(--blue-200)}
button,input,select,textarea{font-family:inherit;color:inherit}
::selection{background:var(--brand);color:var(--text-on-brand)}
:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:var(--radius-full)}

.ds-interactive{transition:filter var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}
.ds-interactive:hover{filter:brightness(1.08)}
.ds-interactive:active{transform:scale(0.97);filter:brightness(0.96)}
.ds-interactive:disabled,.ds-interactive[aria-disabled="true"]{opacity:0.45;pointer-events:none;filter:none;transform:none}

@keyframes ds-spin{to{transform:rotate(360deg)}}
@keyframes ds-pulse{0%,100%{opacity:1}50%{opacity:0.35}}
@keyframes ds-shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes ds-fade-up{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
