/* tokens.css - global design system foundation */

/* Self-hosted fonts (production). Geist and JetBrains Mono are variable fonts. */
@font-face {
  font-family: 'Barlow Condensed';
  src: url('../fonts/BarlowCondensed-ExtraBold.woff2') format('woff2');
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Geist';
  src: url('../fonts/Geist-Variable.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('../fonts/JetBrainsMono-Variable.woff2') format('woff2');
  font-weight: 100 800;
  font-style: normal;
  font-display: swap;
}


/*
@font-face {
  font-family: 'Barlow Condensed';
  src: url('../fonts/BarlowCondensed-ExtraBold.woff2') format('woff2');
  font-weight: 800;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Geist';
  src: url('../fonts/Geist-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Geist';
  src: url('../fonts/Geist-Medium.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('../fonts/JetBrainsMono-Regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'JetBrains Mono';
  src: url('../fonts/JetBrainsMono-Bold.woff2') format('woff2');
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}
*/

:root {
  --td-navy:     #0F2348;
  --td-navy-mid: #162D55;
  --td-cream:    #F5F0E6;
  --td-yellow:   #FFD832;
  --td-red:      #F44736;
  --td-red-dark: #D93D2C;
  --td-white:    #ffffff;

  --font-display: 'Barlow Condensed', sans-serif;
  --font-body:    'Geist', sans-serif;
  --font-mono:    'JetBrains Mono', monospace;

  --ease-out:    cubic-bezier(0.23, 1, 0.32, 1);
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);

  --border-thin:   1px solid var(--td-cream);
  --border-thick:  2px solid var(--td-cream);
  --border-yellow: 1px solid var(--td-yellow);
}

/* SVG assets (bike.svg, logo-cream.svg) use hardcoded hex values because
   <img>-loaded SVGs cannot inherit CSS custom properties. This is intentional. */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { font-size: 16px; scroll-behavior: smooth; }

body {
  background-color: var(--td-navy);
  color: var(--td-cream);
  font-family: var(--font-body);
  font-size: 1rem;
  line-height: 1.6;
  min-height: 100vh;
}

/* Grid overlay -- applied to #td-grid-overlay div wrapping page content */
#td-grid-overlay {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background-image:
    linear-gradient(var(--td-cream) 1px, transparent 1px),
    linear-gradient(90deg, var(--td-cream) 1px, transparent 1px);
  background-size: 24px 24px;
  opacity: 0.08;
}

/* All page content sits above the grid overlay */
#td-page { position: relative; z-index: 1; }

/* Typography scale */
.td-display {
  font-family: var(--font-display);
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.01em;
  line-height: 1.0;
}
.td-display--xl { font-size: clamp(56px, 7vw, 96px); }
.td-display--lg { font-size: clamp(40px, 5vw, 64px); }
.td-display--md { font-size: clamp(28px, 3.5vw, 40px); }

.td-mono {
  font-family: var(--font-mono);
  font-weight: 400;
  letter-spacing: 0.1em;
  font-size: 12px;
}
.td-mono--bold { font-weight: 700; }
.td-mono--label {
  font-size: 10px;
  letter-spacing: 0.15em;
  color: var(--td-yellow);
  text-transform: uppercase;
}

/* Shared button */
.td-btn {
  display: inline-block;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 15px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  line-height: 1;
  color: var(--td-white);
  background: var(--td-red);
  border: none;
  border-radius: 0;
  padding: 14px 32px;
  cursor: pointer;
  text-decoration: none;
  transition: background-color 150ms var(--ease-out), transform 120ms var(--ease-out);
}
.td-btn:hover  { background-color: var(--td-red-dark); }
.td-btn:active { transform: scale(0.97); }
.td-btn:focus-visible {
  outline: 2px solid var(--td-yellow);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  .td-btn { transition: background-color 150ms linear; }
  .td-btn:active { transform: none; }
  html { scroll-behavior: auto; }
}

/* Utility */
.td-sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* Skip link: visually hidden until keyboard focus */
.td-skip-link {
  position: absolute;
  left: -9999px;
  top: 8px;
  z-index: 100;
  background: var(--color-yellow, #FFD832);
  color: #292929;
  padding: 8px 16px;
  font-family: var(--font-mono);
  font-size: 13px;
  text-decoration: none;
}
.td-skip-link:focus {
  left: 8px;
}

/* ===== Motion pass (2026-07-06): global reveals + hover responsiveness ===== */

/* Scroll reveal, global (mirrors hero.css so inner pages can use it) */
.td-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 600ms var(--ease-out), transform 600ms var(--ease-out);
}
.td-reveal.is-revealed {
  opacity: 1;
  transform: translateY(0) translateX(0);
}

/* Buttons: lift + settle */
.td-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
}
.td-btn:active {
  transform: translateY(0) scale(0.97);
  box-shadow: none;
}

/* Arrow links nudge their arrow */
.td-pricing__link, .hiw-section__note a, .td-pricing__footer a {
  transition: color 150ms var(--ease-out);
}
.td-pricing__link:hover, .hiw-section__note a:hover {
  color: var(--td-yellow, #FFD832);
}

/* Cards: blueprint highlight on hover */
.td-wyg__item, .abt-work__item, .td-pricing__card {
  transition: border-color 200ms var(--ease-out), transform 200ms var(--ease-out);
}
.td-wyg__item:hover, .abt-work__item:hover {
  border-color: var(--td-yellow, #FFD832);
  transform: translateY(-3px);
}
.td-wyg__item:hover .td-wyg__num {
  color: var(--td-yellow, #FFD832);
}

@media (prefers-reduced-motion: reduce) {
  .td-reveal { opacity: 1; transform: none; transition: none; }
  .td-btn:hover, .td-wyg__item:hover, .abt-work__item:hover { transform: none; box-shadow: none; }
}

/* Content links: yellow, readable on navy (browser-default blue is invisible here) */
a {
  color: var(--td-yellow, #FFD832);
  text-decoration-color: rgba(255, 216, 50, 0.45);
  text-underline-offset: 3px;
  transition: color 150ms var(--ease-out);
}
a:hover { color: var(--td-cream, #F5F0E6); }
