/* SWISS TYPOGRAPHIC SYSTEM
 * Inspired by International Typographic Style (Swiss Style)
 * Principles: Clarity, precision, objectivity, grid-based layouts
 */

/* === BASE TYPOGRAPHY === */
body {
  font-family: var(--font-sans);
  font-size: var(--text-base);
  font-weight: var(--font-normal);
  line-height: var(--leading-normal);
  letter-spacing: var(--tracking-normal);
  color: var(--color-gray-900);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: 'kern' 1, 'liga' 1, 'calt' 1;
}

/* === HEADING HIERARCHY === */
/* Swiss style: Clear hierarchy through size, weight, and spacing */

h1, h2, h3, h4, h5, h6 {
  font-weight: var(--font-semibold);
  line-height: var(--leading-tight);
  margin: 0 0 var(--space-4) 0;
  color: var(--color-gray-900);
}

/* Display heading - Hero sections */
h1 {
  font-size: var(--text-4xl);
  font-weight: var(--font-bold);
  letter-spacing: var(--tracking-tighter);
  line-height: 1.1;
  margin-bottom: var(--space-6);
}

/* Page heading */
h2 {
  font-size: var(--text-3xl);
  font-weight: var(--font-semibold);
  letter-spacing: var(--tracking-tight);
  margin-bottom: var(--space-5);
}

/* Section heading */
h3 {
  font-size: var(--text-2xl);
  font-weight: var(--font-semibold);
  letter-spacing: var(--tracking-tight);
}

/* Subsection heading */
h4 {
  font-size: var(--text-xl);
  font-weight: var(--font-medium);
  letter-spacing: var(--tracking-normal);
}

/* Minor heading */
h5 {
  font-size: var(--text-lg);
  font-weight: var(--font-medium);
  letter-spacing: var(--tracking-normal);
}

/* Small heading */
h6 {
  font-size: var(--text-base);
  font-weight: var(--font-medium);
  letter-spacing: var(--tracking-wide);
  text-transform: uppercase;
  color: var(--color-gray-700);
}

/* === BODY TEXT === */
p {
  margin: 0 0 var(--space-4) 0;
  max-width: 65ch; /* Optimal reading width */
  line-height: var(--leading-relaxed);
}

/* Lead paragraph - Introductory text */
.lead {
  font-size: var(--text-lg);
  font-weight: var(--font-light);
  line-height: var(--leading-relaxed);
  color: var(--color-gray-700);
  max-width: 60ch;
}

/* Small text */
small, .text-small {
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
}

/* Fine print */
.text-fine {
  font-size: var(--text-xs);
  color: var(--color-gray-600);
  line-height: var(--leading-normal);
}

/* === EMPHASIS & SEMANTICS === */
strong, b {
  font-weight: var(--font-semibold);
}

em, i {
  font-style: italic;
}

mark {
  background-color: #fef3c7;
  color: var(--color-gray-900);
  padding: 0.125em 0.25em;
  border-radius: var(--border-radius-sm);
}

/* === LINKS === */
a {
  color: var(--color-primary);
  text-decoration: none;
  font-weight: var(--font-medium);
  transition: color var(--transition-fast);
  letter-spacing: inherit;
}

a:hover {
  color: var(--color-primary-dark);
  text-decoration: underline;
  text-underline-offset: 0.2em;
  text-decoration-thickness: 0.0625em;
}

a:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
  border-radius: var(--border-radius-sm);
}

/* === CODE & MONOSPACE === */
code, kbd, samp {
  font-family: var(--font-mono);
  font-size: 0.9em;
  background: var(--color-gray-100);
  padding: 0.125em 0.375em;
  border-radius: var(--border-radius-sm);
  border: 1px solid var(--color-gray-200);
  letter-spacing: 0;
}

pre {
  font-family: var(--font-mono);
  font-size: var(--text-sm);
  line-height: var(--leading-normal);
  background: var(--color-gray-900);
  color: var(--color-gray-100);
  padding: var(--space-4);
  border-radius: var(--border-radius-md);
  overflow-x: auto;
  margin: var(--space-4) 0;
}

pre code {
  background: none;
  border: none;
  padding: 0;
  color: inherit;
  font-size: inherit;
}

/* === LISTS === */
ul, ol {
  margin: 0 0 var(--space-4) 0;
  padding-left: var(--space-6);
}

li {
  margin-bottom: var(--space-2);
  line-height: var(--leading-relaxed);
}

/* Unstyled list utility */
.list-none {
  list-style: none;
  padding-left: 0;
}

/* === BLOCKQUOTE === */
blockquote {
  margin: var(--space-6) 0;
  padding-left: var(--space-6);
  border-left: 4px solid var(--color-primary);
  font-size: var(--text-lg);
  font-weight: var(--font-light);
  font-style: italic;
  color: var(--color-gray-700);
  line-height: var(--leading-relaxed);
}

blockquote cite {
  display: block;
  margin-top: var(--space-3);
  font-size: var(--text-sm);
  font-style: normal;
  font-weight: var(--font-medium);
  color: var(--color-gray-600);
}

/* === UTILITY CLASSES === */

/* Font weights */
.font-light { font-weight: var(--font-light); }
.font-normal { font-weight: var(--font-normal); }
.font-medium { font-weight: var(--font-medium); }
.font-semibold { font-weight: var(--font-semibold); }
.font-bold { font-weight: var(--font-bold); }

/* Font styles */
.italic { font-style: italic; }
.not-italic { font-style: normal; }

/* Text alignment */
.text-left { text-align: left; }
.text-center { text-align: center; }
.text-right { text-align: right; }
.text-justify { text-align: justify; }

/* Text transform */
.uppercase { text-transform: uppercase; letter-spacing: var(--tracking-wide); }
.lowercase { text-transform: lowercase; }
.capitalize { text-transform: capitalize; }

/* Letter spacing */
.tracking-tight { letter-spacing: var(--tracking-tight); }
.tracking-normal { letter-spacing: var(--tracking-normal); }
.tracking-wide { letter-spacing: var(--tracking-wide); }

/* Line height */
.leading-tight { line-height: var(--leading-tight); }
.leading-normal { line-height: var(--leading-normal); }
.leading-relaxed { line-height: var(--leading-relaxed); }

/* Text colors */
.text-primary { color: var(--color-primary); }
.text-muted { color: var(--color-gray-600); }
.text-subtle { color: var(--color-gray-500); }

/* Optical balance for large text */
@media screen and (min-width: 1024px) {
  h1 {
    font-size: var(--text-5xl);
    letter-spacing: -0.03em;
  }
  
  h2 {
    font-size: var(--text-4xl);
  }
  
  .lead {
    font-size: var(--text-xl);
  }
}
