/* ============================================================
   Alex Ghit — shared design system (base.css)
   Source of truth for tokens, topbar, buttons, toggles, footer.
   Drop this into each tool's repo and link it BEFORE the tool's
   own stylesheet. App-specific CSS overrides only the middle.
   ============================================================ */

:root{
  /* surfaces */
  --bg:#0c0c0e;
  --surface:#141416;
  --surface-2:#1c1c1f;
  --line:rgba(255,255,255,.08);
  --line-strong:rgba(255,255,255,.14);
  --field-bg:#131315;

  /* ink */
  --ink:rgba(255,255,255,.94);
  --muted:rgba(255,255,255,.5);
  --faint:rgba(255,255,255,.3);
  --accent:rgba(255,255,255,.30);

  /* type */
  --sans:'Geist',-apple-system,BlinkMacSystemFont,sans-serif;
  --mono:'Geist Mono',ui-monospace,monospace;
  --serif:'Instrument Serif',Georgia,serif;

  /* motion */
  --ease:cubic-bezier(.22,1,.36,1);
  --t:200ms;

  --radius:14px;
}

*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
html{height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  min-height:100vh;
  min-height:100svh;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
}
::selection{background:var(--accent);color:var(--bg)}
button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}

/* ---------- topbar ---------- */
.topbar{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding:32px 40px;
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--muted);
}
.wordmark{
  font:inherit;
  letter-spacing:inherit;
  text-transform:inherit;
  color:var(--muted);
  background:none;
  border:none;
  padding:0;
  cursor:pointer;
  transition:color var(--t);
}
.wordmark:hover{color:rgba(255,255,255,.85)}
.topbar-tag{color:var(--faint)}

/* ---------- primary button (white pill) ---------- */
.btn-primary{
  cursor:pointer;
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--bg);
  background:rgba(255,255,255,.94);
  border:none;
  border-radius:999px;
  padding:11px 20px;
  transition:opacity var(--t),transform 140ms var(--ease),background 140ms;
}
.btn-primary:hover{opacity:.85}
.btn-primary:active{transition:none;transform:scale(.94)}
.btn-primary:disabled{opacity:.35;pointer-events:none}

/* ---------- secondary button (outline pill) ---------- */
.btn-ghost{
  cursor:pointer;
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--ink);
  background:transparent;
  border:1px solid var(--line-strong);
  border-radius:999px;
  padding:11px 20px;
  transition:border-color var(--t),background var(--t),transform 140ms var(--ease);
}
.btn-ghost:hover{border-color:rgba(255,255,255,.4)}
.btn-ghost:active{transition:none;transform:scale(.94)}
.btn-ghost:disabled{opacity:.35;pointer-events:none}

/* ---------- segmented toggle ---------- */
.segs{
  display:inline-flex;
  gap:4px;
  background:rgba(255,255,255,.05);
  border:1px solid var(--line);
  border-radius:999px;
  padding:4px;
}
.segs button{
  cursor:pointer;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.04em;
  white-space:nowrap;
  border:none;
  border-radius:999px;
  padding:8px 14px;
  background:transparent;
  color:var(--muted);
  transition:background 220ms,color 220ms,transform 140ms var(--ease);
}
.segs button:hover{color:rgba(255,255,255,.85)}
.segs button:active{transition:none;transform:scale(.94)}
.segs button[aria-pressed="true"]{background:rgba(255,255,255,.92);color:var(--bg)}

/* ---------- hint / kbd ---------- */
.hint{
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.06em;
  color:var(--faint);
}
.hint kbd{
  font-family:var(--mono);
  font-size:inherit;
  padding:2px 6px;
  border-radius:5px;
  border:1px solid var(--line-strong);
  background:rgba(255,255,255,.05);
  color:var(--muted);
}

/* ---------- footer ---------- */
.footer{
  flex-shrink:0;
  display:flex;
  flex-wrap:wrap;
  justify-content:center;
  align-items:center;
  gap:8px;
  padding:28px 24px 32px;
  font-family:var(--mono);
  font-size:11px;
  letter-spacing:.04em;
  color:var(--faint);
  text-align:center;
}
.footer a{
  color:var(--muted);
  text-decoration:none;
  border-bottom:1px solid var(--line-strong);
  transition:color var(--t),border-color var(--t);
}
.footer a:hover{color:rgba(255,255,255,.85);border-bottom-color:rgba(255,255,255,.4)}
.footer .dot{opacity:.5}

/* ---------- focus ---------- */
.btn-primary:focus-visible,
.btn-ghost:focus-visible,
.segs button:focus-visible,
.footer a:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:2px;
}

@media (max-width:600px){
  .topbar{padding:24px 20px;font-size:11px}
  .footer{flex-direction:column;gap:14px;padding:24px 20px 30px;line-height:1.5}
  .footer .dot{display:none}
}

@media (prefers-reduced-motion:reduce){
  *{animation:none !important;transition-duration:.01ms !important}
}
