/* =========================================================
   DLocker Software LABS — Colors & Type
   Palette: BLACK / WHITE / CYAN. Nothing else. Never green.
   ========================================================= */

@import url('https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap');

:root {
  /* ---------- Base palette (the only three colors that exist) ---------- */
  --black: #000000;
  --white: #FFFFFF;
  --cyan:  #00CFCF;

  /* ---------- Semantic foreground ---------- */
  --fg1: var(--black);   /* primary text on light */
  --fg2: var(--black);   /* secondary text — same color, modulated by weight/size */
  --fg-on-dark: var(--white);
  --fg-accent: var(--cyan);

  /* ---------- Semantic background ---------- */
  --bg: var(--white);
  --bg-inverse: var(--black);
  --bg-accent: var(--cyan);

  /* ---------- Borders ---------- */
  --border: var(--black);
  --border-inverse: var(--white);
  --border-w: 2px;       /* default stroke */
  --border-w-thick: 3px; /* hero / emphasis */

  /* ---------- Type ----------
     Headings: Space Grotesk (geometric, lightly characterful)
     Body:     Inter (neutral, optimized for UI legibility)
     Mono:     JetBrains Mono (eyebrows, numbers, code) */
  --font-display: 'Space Grotesk', ui-sans-serif, system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
  --font-sans:    'Inter', ui-sans-serif, system-ui, -apple-system, 'Helvetica Neue', Arial, sans-serif;
  --font-mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;

  /* ---------- Type scale (modular, tight) ---------- */
  --fs-xs:   12px;
  --fs-sm:   14px;
  --fs-base: 16px;
  --fs-md:   18px;
  --fs-lg:   22px;
  --fs-xl:   28px;
  --fs-2xl:  36px;
  --fs-3xl:  48px;
  --fs-4xl:  64px;
  --fs-5xl:  88px;
  --fs-6xl:  128px;

  /* ---------- Line heights ---------- */
  --lh-tight: 1.0;
  --lh-snug:  1.15;
  --lh-base:  1.5;
  --lh-loose: 1.7;

  /* ---------- Tracking ---------- */
  --ls-tight: -0.02em;
  --ls-normal: 0;
  --ls-wide:   0.08em;
  --ls-mega:   0.16em;  /* eyebrow / label caps */

  /* ---------- Spacing (4-pt grid) ---------- */
  --s-1: 4px;
  --s-2: 8px;
  --s-3: 12px;
  --s-4: 16px;
  --s-5: 24px;
  --s-6: 32px;
  --s-7: 48px;
  --s-8: 64px;
  --s-9: 96px;
  --s-10: 128px;

  /* ---------- Radii — extreme minimalism = mostly 0 ---------- */
  --r-0: 0px;
  --r-1: 2px;     /* hairline rounding for inputs / pills */
  --r-2: 4px;
  --r-pill: 999px;

  /* ---------- Motion ---------- */
  --dur-1: 80ms;
  --dur-2: 140ms;
  --dur-3: 240ms;
  --ease: cubic-bezier(0.2, 0, 0, 1);

  /* NO shadows. NO gradients. By design. */
}

/* =========================================================
   Base reset / typography defaults
   ========================================================= */

html, body {
  background: var(--bg);
  color: var(--fg1);
  font-family: var(--font-sans);
  font-size: var(--fs-base);
  line-height: var(--lh-base);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

::selection { background: var(--cyan); color: var(--black); }

/* ---------- Headings (Space Grotesk) ---------- */
h1, .h1, h2, .h2, h3, .h3, h4, .h4, .display {
  font-family: var(--font-display);
}
h1, .h1 {
  font-weight: 700;
  font-size: var(--fs-4xl);
  line-height: var(--lh-tight);
  letter-spacing: var(--ls-tight);
  margin: 0;
}
h2, .h2 {
  font-weight: 700;
  font-size: var(--fs-2xl);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-tight);
  margin: 0;
}
h3, .h3 {
  font-weight: 600;
  font-size: var(--fs-xl);
  line-height: var(--lh-snug);
  letter-spacing: var(--ls-tight);
  margin: 0;
}
h4, .h4 {
  font-weight: 600;
  font-size: var(--fs-lg);
  line-height: var(--lh-snug);
  margin: 0;
}

/* Display — for hero numbers / mega lockups */
.display {
  font-weight: 700;
  font-size: var(--fs-6xl);
  line-height: 0.92;
  letter-spacing: -0.04em;
}

/* ---------- Body / paragraph ---------- */
p, .p {
  font-size: var(--fs-base);
  line-height: var(--lh-base);
  margin: 0;
  text-wrap: pretty;
}
.p-lg { font-size: var(--fs-md); line-height: var(--lh-base); }
.p-sm { font-size: var(--fs-sm); line-height: var(--lh-base); }

/* ---------- Eyebrow / label ---------- */
.eyebrow, .label {
  font-family: var(--font-mono);
  font-size: var(--fs-xs);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: var(--ls-mega);
  line-height: 1;
}

/* ---------- Code / mono ---------- */
code, kbd, pre, .mono {
  font-family: var(--font-mono);
  font-size: 0.95em;
}
pre.code {
  background: var(--black);
  color: var(--white);
  padding: var(--s-5);
  font-size: var(--fs-sm);
  line-height: var(--lh-base);
  border: var(--border-w) solid var(--black);
  overflow-x: auto;
}
code.inline {
  background: var(--black);
  color: var(--cyan);
  padding: 2px 6px;
  font-size: 0.9em;
}

/* ---------- Links ---------- */
a, .link {
  color: var(--black);
  text-decoration: underline;
  text-underline-offset: 3px;
  text-decoration-thickness: 2px;
  transition: color var(--dur-2) var(--ease);
}
a:hover, .link:hover { color: var(--cyan); }

/* ---------- Horizontal rule ---------- */
hr {
  border: 0;
  border-top: var(--border-w) solid var(--black);
  margin: var(--s-6) 0;
}

/* =========================================================
   Mobile-First Responsive — Shared Patterns
   Breakpoints: 767px (mobile), 1023px (tablet)
   ========================================================= */

/* Hamburger button — hidden on desktop, shown on mobile */
.nav-hamburger {
  display: none;
  flex-direction: column;
  gap: 5px;
  background: none;
  border: 2px solid #000;
  padding: 8px 10px;
  cursor: pointer;
  min-height: 44px;
  min-width: 44px;
  justify-content: center;
  align-items: center;
}
.nav-hamburger span {
  display: block;
  width: 22px;
  height: 2px;
  background: #000;
  transition: transform 140ms cubic-bezier(.2,0,0,1), opacity 140ms;
}
.nav-hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-hamburger.open span:nth-child(2) { opacity: 0; }
.nav-hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Ensure tap targets are at least 44px */
.btn { min-height: 44px; }
.nav .cta { min-height: 44px; }
.chip { min-height: 44px; display: inline-flex; align-items: center; }

@media (max-width: 767px) {
  /* Nav hamburger */
  .nav-hamburger { display: flex; }
  .nav ul {
    display: none;
    position: fixed;
    top: 61px;
    left: 0;
    right: 0;
    bottom: 0;
    background: #fff;
    flex-direction: column;
    border-top: 2px solid #000;
    padding: 32px;
    gap: 0;
    z-index: 9;
    overflow-y: auto;
    margin: 0;
  }
  .nav ul.open { display: flex; }
  .nav ul li { border-bottom: 1px solid #eee; }
  .nav ul li a {
    font-size: 16px;
    letter-spacing: 0.1em;
    min-height: 52px;
    display: flex;
    align-items: center;
    padding: 0 4px;
  }
  .nav .cta { display: none; }

  /* Footer columns stack on mobile */
  footer .top {
    grid-template-columns: 1fr 1fr !important;
    gap: 24px;
  }
  footer .bot {
    flex-direction: column;
    gap: 8px;
  }

  /* Cookie banner stacks vertically */
  #cookie-banner {
    flex-direction: column;
    gap: 12px;
    align-items: flex-start;
    padding: 16px 20px;
  }
}

@media (max-width: 479px) {
  footer .top { grid-template-columns: 1fr !important; }
}
