/* ══════════════════════════════════════════════════════════
   OCEAN — BASE / RESET
══════════════════════════════════════════════════════════ */
*,*::before,*::after { box-sizing:border-box; }
* { margin:0; padding:0; -webkit-tap-highlight-color:transparent; }

html { -webkit-text-size-adjust:100%; text-size-adjust:100%; }

body {
  font-family:var(--font-body);
  background:var(--bg);
  color:var(--text);
  line-height:1.5;
  font-size:15px;
  letter-spacing:-.01em;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
  min-height:100dvh;
  transition:background var(--t) var(--ease), color var(--t) var(--ease);
}

h1,h2,h3,h4 { font-family:var(--font-head); font-weight:800; letter-spacing:-.02em; line-height:1.2; }

button,input,textarea,select { font:inherit; color:inherit; }
button { background:none; border:none; cursor:pointer; }
a { color:var(--accent); text-decoration:none; }
input,textarea { background:none; border:none; outline:none; }
textarea { resize:none; font-family:var(--font-body); }

.num { font-family:var(--font-num); font-variant-numeric:tabular-nums; font-feature-settings:"tnum"; letter-spacing:0; }

/* icons */
.ic { width:1.25em; height:1.25em; fill:none; stroke:currentColor; stroke-width:1.8;
      stroke-linecap:round; stroke-linejoin:round; flex:0 0 auto; display:inline-block; vertical-align:-.15em; }
.ic-fill { fill:currentColor; stroke:none; }

/* scrollbars */
::-webkit-scrollbar { width:8px; height:8px; }
::-webkit-scrollbar-thumb { background:var(--hairline); border-radius:99px; }
::-webkit-scrollbar-track { background:transparent; }

/* selection */
::selection { background:var(--accent-soft); }

/* utility */
.hidden { display:none !important; }
.row { display:flex; align-items:center; }
.col { display:flex; flex-direction:column; }
.gap1{gap:var(--s1)} .gap2{gap:var(--s2)} .gap3{gap:var(--s3)} .gap4{gap:var(--s4)}
.grow { flex:1 1 auto; min-width:0; }
.center { display:flex; align-items:center; justify-content:center; }
.between { display:flex; align-items:center; justify-content:space-between; }
.wrap { flex-wrap:wrap; }
.muted { color:var(--text-2); }
.dim { color:var(--text-3); }
.truncate { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tabular { font-variant-numeric:tabular-nums; }

/* focus ring (keyboard only) */
:focus-visible { outline:2.5px solid var(--accent); outline-offset:2px; border-radius:6px; }

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{ animation-duration:.001ms!important; transition-duration:.001ms!important; }
}
