/* ═══════════════════════════════════════════════
   g-smarto Base & Typography
═══════════════════════════════════════════════ */

/* ── Reset ── */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; font-size: 16px; }
body {
  font-family: var(--font-sans);
  background: var(--bg);
  color: var(--ink);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
  line-height: 1.6;
}
img { max-width: 100%; height: auto; display: block; }
a { text-decoration: none; color: inherit; }
button { font-family: inherit; cursor: pointer; border: none; background: none; }
ul, ol { list-style: none; }
section { position: relative; overflow: hidden; }

/* ── Layout ── */
.wrap {
  max-width: 1140px;
  margin: 0 auto;
  padding: 0 28px;
}
.section-pad { padding: 90px 0; }
.section-pad-sm { padding: 60px 0; }

/* ── Typography Scale ── */
.display {
  font-family: var(--font-sans);
  font-weight: 800;
  line-height: 1.06;
  letter-spacing: -0.032em;
}
.serif-italic {
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
}
.mono { font-family: var(--font-mono); }

.h1 { font-size: clamp(2.6rem, 5.2vw, 4.2rem); }
.h2 { font-size: clamp(1.9rem, 3.6vw, 3rem); }
.h3 { font-size: 1.15rem; }
.h4 { font-size: .88rem; }

.text-teal   { color: var(--teal); }
.text-ink2   { color: var(--ink2); }
.text-ink3   { color: var(--ink3); }
.text-orange { color: var(--orange); }
.text-red    { color: var(--red); }
.text-purple { color: var(--purple); }

/* ── Utility ── */
.text-center { text-align: center; }
.flex        { display: flex; }
.flex-center { display: flex; align-items: center; justify-content: center; }
.flex-between{ display: flex; align-items: center; justify-content: space-between; }
.gap-8  { gap: 8px; }
.gap-12 { gap: 12px; }
.gap-16 { gap: 16px; }
.gap-24 { gap: 24px; }
.gap-32 { gap: 32px; }
.mt-8   { margin-top: 8px; }
.mt-12  { margin-top: 12px; }
.mt-16  { margin-top: 16px; }
.mt-24  { margin-top: 24px; }
.mt-32  { margin-top: 32px; }
.mt-44  { margin-top: 44px; }
.mb-8   { margin-bottom: 8px; }
.mb-16  { margin-bottom: 16px; }

/* ── Grid Helpers ── */
.grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }

/* ── Noise texture overlay ── */
.noise-overlay {
  position: absolute;
  inset: 0;
  opacity: 0.3;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
  pointer-events: none;
  z-index: 0;
}

/* ── Grid background ── */
.grid-bg {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
  background-size: 52px 52px;
  pointer-events: none;
}

/* ── Responsive ── */
@media (max-width: 900px) {
  .wrap { padding: 0 20px; }
  .section-pad { padding: 64px 0; }
  .grid-4 { grid-template-columns: 1fr 1fr; }
  .grid-3 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 600px) {
  .wrap { padding: 0 16px; }
  .section-pad { padding: 48px 0; }
  .grid-4, .grid-3, .grid-2 { grid-template-columns: 1fr; }
}
