/* ── Reset / base ── */
*,*::before,*::after{ box-sizing:border-box; }
html,body{ margin:0; height:100%; }
body{
  font-family:var(--font);
  font-size:var(--fs-base);
  line-height:var(--lh-base);
  color:var(--text);
  background:var(--bg);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,p{ margin:0; }
button,input,textarea,select{ font:inherit; color:inherit; }
button{ cursor:pointer; background:none; border:none; }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
:focus-visible{ outline:2px solid var(--c1); outline-offset:2px; }

/* ── Scrollbar ── */
::-webkit-scrollbar{ width:10px; height:10px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background:var(--line-2); border-radius:var(--r-full); border:2px solid transparent; background-clip:padding-box; }
::-webkit-scrollbar-thumb:hover{ background:var(--line-3); background-clip:padding-box; }
::selection{ background:var(--glow-soft); }

/* ── Typography helpers ── */
.t-xs{font-size:var(--fs-xs)} .t-sm{font-size:var(--fs-sm)} .t-md{font-size:var(--fs-md)}
.t-lg{font-size:var(--fs-lg)} .t-xl{font-size:var(--fs-xl)} .t-2xl{font-size:var(--fs-2xl)}
.fw-med{font-weight:var(--fw-medium)} .fw-sb{font-weight:var(--fw-semibold)} .fw-b{font-weight:var(--fw-bold)}
.muted{color:var(--muted)} .text-2{color:var(--text-2)}
.tight{letter-spacing:var(--ls-tight)}
.mono{font-family:var(--font-mono)}
.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* ── Layout helpers ── */
.row{display:flex;align-items:center}
.col{display:flex;flex-direction:column}
.gap-1{gap:var(--sp-1)} .gap-2{gap:var(--sp-2)} .gap-3{gap:var(--sp-3)} .gap-4{gap:var(--sp-4)}
.grow{flex:1} .none{flex:none}
.wrap{flex-wrap:wrap}
.center{align-items:center;justify-content:center}
.between{justify-content:space-between}
.hidden{display:none !important}

/* ── Accent text ── */
.accent{color:var(--c1)}
.grad-text{background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent}
