/* ==========================================================================
   LIGHT UP OS — Base / Reset / Typography
   ========================================================================== */

*,*::before,*::after{ box-sizing:border-box; }
html,body{ height:100%; }
body{
  margin:0;
  font-family:var(--font-ui);
  background:var(--bg);
  color:var(--text-primary);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  transition:background var(--dur-base) var(--ease), color var(--dur-base) var(--ease);
}

h1,h2,h3,h4,h5,p{ margin:0; }

h1{ font-size:28px; font-weight:700; letter-spacing:-0.02em; }
h2{ font-size:22px; font-weight:700; letter-spacing:-0.015em; }
h3{ font-size:17px; font-weight:600; letter-spacing:-0.01em; }
h4{ font-size:14px; font-weight:600; }

p{ line-height:1.55; color:var(--text-secondary); }

a{ color:inherit; text-decoration:none; }

button{
  font-family:inherit;
  cursor:pointer;
  border:none;
  background:none;
  color:inherit;
}

input,textarea,select{
  font-family:inherit;
  font-size:14px;
  color:var(--text-primary);
  background:var(--surface);
}

textarea{ resize:vertical; }

ul{ margin:0; padding:0; list-style:none; }

img{ max-width:100%; display:block; }

svg{ display:block; flex-shrink:0; }

::selection{ background:var(--text-primary); color:var(--bg); }

/* Scrollbar */
::-webkit-scrollbar{ width:8px; height:8px; }
::-webkit-scrollbar-track{ background:transparent; }
::-webkit-scrollbar-thumb{ background:var(--border-strong); border-radius:var(--r-full); }
::-webkit-scrollbar-thumb:hover{ background:var(--text-tertiary); }

/* Focus */
:focus-visible{
  outline:2px solid var(--text-primary);
  outline-offset:2px;
  border-radius:4px;
}

/* Utility */
.visually-hidden{
  position:absolute; width:1px; height:1px; overflow:hidden;
  clip:rect(0 0 0 0); white-space:nowrap;
}

.u-flex{ display:flex; }
.u-between{ justify-content:space-between; }
.u-center{ align-items:center; }
.u-gap-2{ gap:8px; }
.u-gap-3{ gap:12px; }
.u-muted{ color:var(--text-secondary); }
