/* ==========================================================================
   Typography Utility Styles  
   ONLY using: golden-green (#8B9A46), dark-red (#8B2C2C), pale-yellow (#FFF8DC)
   ========================================================================== */

/* Font Family Utilities */
.font-serif {
  font-family: var(--font-family-serif) !important;
}

.font-sans {
  font-family: var(--font-family-sans) !important;
}

.font-mono {
  font-family: var(--font-family-mono) !important;
}

/* Font Size Utilities */
.text-xs {
  font-size: var(--font-size-xs) !important;
  line-height: var(--line-height-tight) !important;
}

.text-sm {
  font-size: var(--font-size-sm) !important;
  line-height: var(--line-height-tight) !important;
}

.text-base {
  font-size: var(--font-size-base) !important;
  line-height: var(--line-height-normal) !important;
}

.text-lg {
  font-size: var(--font-size-lg) !important;
  line-height: var(--line-height-snug) !important;
}

.text-xl {
  font-size: var(--font-size-xl) !important;
  line-height: var(--line-height-snug) !important;
}

.text-2xl {
  font-size: var(--font-size-2xl) !important;
  line-height: var(--line-height-tight) !important;
}

.text-3xl {
  font-size: var(--font-size-3xl) !important;
  line-height: var(--line-height-tight) !important;
}

.text-4xl {
  font-size: var(--font-size-4xl) !important;
  line-height: var(--line-height-tight) !important;
}

.text-5xl {
  font-size: var(--font-size-5xl) !important;
  line-height: var(--line-height-tight) !important;
}

.text-6xl {
  font-size: var(--font-size-6xl) !important;
  line-height: var(--line-height-tight) !important;
}

/* Responsive Font Sizes */
@media (min-width: 640px) {
  .sm-text-xs { font-size: var(--font-size-xs) !important; }
  .sm-text-sm { font-size: var(--font-size-sm) !important; }
  .sm-text-base { font-size: var(--font-size-base) !important; }
  .sm-text-lg { font-size: var(--font-size-lg) !important; }
  .sm-text-xl { font-size: var(--font-size-xl) !important; }
  .sm-text-2xl { font-size: var(--font-size-2xl) !important; }
  .sm-text-3xl { font-size: var(--font-size-3xl) !important; }
  .sm-text-4xl { font-size: var(--font-size-4xl) !important; }
  .sm-text-5xl { font-size: var(--font-size-5xl) !important; }
  .sm-text-6xl { font-size: var(--font-size-6xl) !important; }
}

@media (min-width: 768px) {
  .md-text-xs { font-size: var(--font-size-xs) !important; }
  .md-text-sm { font-size: var(--font-size-sm) !important; }
  .md-text-base { font-size: var(--font-size-base) !important; }
  .md-text-lg { font-size: var(--font-size-lg) !important; }
  .md-text-xl { font-size: var(--font-size-xl) !important; }
  .md-text-2xl { font-size: var(--font-size-2xl) !important; }
  .md-text-3xl { font-size: var(--font-size-3xl) !important; }
  .md-text-4xl { font-size: var(--font-size-4xl) !important; }
  .md-text-5xl { font-size: var(--font-size-5xl) !important; }
  .md-text-6xl { font-size: var(--font-size-6xl) !important; }
}

@media (min-width: 1024px) {
  .lg-text-xs { font-size: var(--font-size-xs) !important; }
  .lg-text-sm { font-size: var(--font-size-sm) !important; }
  .lg-text-base { font-size: var(--font-size-base) !important; }
  .lg-text-lg { font-size: var(--font-size-lg) !important; }
  .lg-text-xl { font-size: var(--font-size-xl) !important; }
  .lg-text-2xl { font-size: var(--font-size-2xl) !important; }
  .lg-text-3xl { font-size: var(--font-size-3xl) !important; }
  .lg-text-4xl { font-size: var(--font-size-4xl) !important; }
  .lg-text-5xl { font-size: var(--font-size-5xl) !important; }
  .lg-text-6xl { font-size: var(--font-size-6xl) !important; }
}

/* Font Weight Utilities */
.font-thin {
  font-weight: 100 !important;
}

.font-light {
  font-weight: 300 !important;
}

.font-normal {
  font-weight: var(--font-weight-normal) !important;
}

.font-medium {
  font-weight: var(--font-weight-medium) !important;
}

.font-semibold {
  font-weight: var(--font-weight-semibold) !important;
}

.font-bold {
  font-weight: var(--font-weight-bold) !important;
}

.font-extrabold {
  font-weight: 800 !important;
}

.font-black {
  font-weight: 900 !important;
}

/* Font Style Utilities */
.italic {
  font-style: italic !important;
}

.not-italic {
  font-style: normal !important;
}

/* Line Height Utilities */
.leading-none {
  line-height: 1 !important;
}

.leading-tight {
  line-height: var(--line-height-tight) !important;
}

.leading-snug {
  line-height: var(--line-height-snug) !important;
}

.leading-normal {
  line-height: var(--line-height-normal) !important;
}

.leading-relaxed {
  line-height: var(--line-height-relaxed) !important;
}

.leading-loose {
  line-height: var(--line-height-loose) !important;
}

.leading-3 {
  line-height: 0.75rem !important;
}

.leading-4 {
  line-height: 1rem !important;
}

.leading-5 {
  line-height: 1.25rem !important;
}

.leading-6 {
  line-height: 1.5rem !important;
}

.leading-7 {
  line-height: 1.75rem !important;
}

.leading-8 {
  line-height: 2rem !important;
}

.leading-9 {
  line-height: 2.25rem !important;
}

.leading-10 {
  line-height: 2.5rem !important;
}

/* Letter Spacing Utilities */
.tracking-tighter {
  letter-spacing: -0.05em !important;
}

.tracking-tight {
  letter-spacing: -0.025em !important;
}

.tracking-normal {
  letter-spacing: 0em !important;
}

.tracking-wide {
  letter-spacing: 0.025em !important;
}

.tracking-wider {
  letter-spacing: 0.05em !important;
}

.tracking-widest {
  letter-spacing: 0.1em !important;
}

/* Text Color Utilities */
.text-primary {
  color: var(--golden-green) !important;
}

.text-secondary {
  color: var(--dark-red) !important;
}

.text-accent {
  color: var(--pale-yellow) !important;
}

.text-light {
  color: var(--pale-yellow) !important;
}

.text-dark {
  color: var(--dark-red) !important;
}

.text-muted {
  color: var(--dark-red) !important;
  opacity: 0.6;
}

.text-success {
  color: var(--golden-green) !important;
}

.text-warning {
  color: var(--dark-red) !important;
}

.text-error {
  color: var(--dark-red) !important;
}

.text-info {
  color: var(--golden-green) !important;
}

/* Text Decoration Utilities */
.underline {
  text-decoration: underline !important;
}

.overline {
  text-decoration: overline !important;
}

.line-through {
  text-decoration: line-through !important;
}

.no-underline {
  text-decoration: none !important;
}

/* Text Transform Utilities */
.uppercase {
  text-transform: uppercase !important;
}

.lowercase {
  text-transform: lowercase !important;
}

.capitalize {
  text-transform: capitalize !important;
}

.normal-case {
  text-transform: none !important;
}

/* Text Overflow Utilities */
.truncate {
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  white-space: nowrap !important;
}

.text-ellipsis {
  text-overflow: ellipsis !important;
}

.text-clip {
  text-overflow: clip !important;
}

/* White Space Utilities */
.whitespace-normal {
  white-space: normal !important;
}

.whitespace-nowrap {
  white-space: nowrap !important;
}

.whitespace-pre {
  white-space: pre !important;
}

.whitespace-pre-line {
  white-space: pre-line !important;
}

.whitespace-pre-wrap {
  white-space: pre-wrap !important;
}

/* Word Break Utilities */
.break-normal {
  overflow-wrap: normal !important;
  word-break: normal !important;
}

.break-words {
  overflow-wrap: break-word !important;
}

.break-all {
  word-break: break-all !important;
}

/* Text Selection Utilities */
.select-none {
  user-select: none !important;
}

.select-text {
  user-select: text !important;
}

.select-all {
  user-select: all !important;
}

.select-auto {
  user-select: auto !important;
}

/* Vertical Alignment Utilities */
.align-baseline {
  vertical-align: baseline !important;
}

.align-top {
  vertical-align: top !important;
}

.align-middle {
  vertical-align: middle !important;
}

.align-bottom {
  vertical-align: bottom !important;
}

.align-text-top {
  vertical-align: text-top !important;
}

.align-text-bottom {
  vertical-align: text-bottom !important;
}

.align-sub {
  vertical-align: sub !important;
}

.align-super {
  vertical-align: super !important;
}

/* List Style Utilities */
.list-none {
  list-style-type: none !important;
}

.list-disc {
  list-style-type: disc !important;
}

.list-decimal {
  list-style-type: decimal !important;
}

.list-inside {
  list-style-position: inside !important;
}

.list-outside {
  list-style-position: outside !important;
}

/* Text Formatting Utilities */
.prose {
  color: var(--dark-red);
  opacity: 0.9;
  max-width: 65ch;
}

.prose h1 {
  color: var(--dark-red);
  font-weight: var(--font-weight-bold);
  font-size: var(--font-size-3xl);
  margin-top: 0;
  margin-bottom: var(--spacing-6);
  line-height: var(--line-height-tight);
}

.prose h2 {
  color: var(--dark-red);
  font-weight: var(--font-weight-bold);
  font-size: var(--font-size-2xl);
  margin-top: var(--spacing-8);
  margin-bottom: var(--spacing-4);
  line-height: var(--line-height-tight);
}

.prose h3 {
  color: var(--dark-red);
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-xl);
  margin-top: var(--spacing-6);
  margin-bottom: var(--spacing-3);
  line-height: var(--line-height-snug);
}

.prose h4 {
  color: var(--dark-red);
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-lg);
  margin-top: var(--spacing-5);
  margin-bottom: var(--spacing-2);
  line-height: var(--line-height-snug);
}

.prose p {
  margin-bottom: var(--spacing-4);
  line-height: var(--line-height-relaxed);
}

.prose a {
  color: var(--golden-green);
  text-decoration: underline;
  font-weight: var(--font-weight-medium);
}

.prose a:hover {
  color: var(--dark-red);
}

.prose strong {
  color: var(--dark-red);
  font-weight: var(--font-weight-semibold);
}

.prose em {
  color: var(--dark-red);
  opacity: 0.9;
  font-style: italic;
}

.prose code {
  color: var(--dark-red);
  font-weight: var(--font-weight-semibold);
  font-size: var(--font-size-sm);
  background-color: rgba(139, 154, 70, 0.1);
  padding: 0.125rem 0.25rem;
  border-radius: 5px;
  font-family: var(--font-family-mono);
}

.prose pre {
  color: var(--pale-yellow);
  background-color: var(--dark-red);
  overflow-x: auto;
  font-size: var(--font-size-sm);
  line-height: var(--line-height-relaxed);
  border-radius: 15px;
  padding: var(--spacing-4);
  margin-bottom: var(--spacing-4);
}

.prose pre code {
  background-color: transparent;
  border-width: 0;
  border-radius: 0;
  padding: 0;
  font-weight: 400;
  color: inherit;
  font-size: inherit;
  font-family: inherit;
  line-height: inherit;
}

.prose ol {
  counter-reset: list-counter;
  margin-bottom: var(--spacing-4);
  padding-left: var(--spacing-6);
}

.prose ol > li {
  position: relative;
  counter-increment: list-counter;
  padding-left: var(--spacing-2);
  margin-bottom: var(--spacing-2);
}

.prose ol > li::before {
  content: counter(list-counter) ".";
  position: absolute;
  font-weight: var(--font-weight-bold);
  color: var(--dark-red);
  opacity: 0.7;
  left: calc(var(--spacing-6) * -1);
}

.prose ul {
  margin-bottom: var(--spacing-4);
  padding-left: var(--spacing-6);
}

.prose ul > li {
  position: relative;
  padding-left: var(--spacing-2);
  margin-bottom: var(--spacing-2);
}

.prose ul > li::before {
  content: "";
  position: absolute;
  background-color: var(--golden-green);
  border-radius: 50%;
  width: 0.375rem;
  height: 0.375rem;
  top: calc(0.875rem - 0.1875rem);
  left: calc(var(--spacing-6) * -1 + 0.125rem);
}

.prose blockquote {
  font-weight: var(--font-weight-medium);
  font-style: italic;
  color: var(--dark-red);
  border-left-width: 0.25rem;
  border-left-color: var(--golden-green);
  border-left-style: solid;
  quotes: "\201C""\201D""\2018""\2019";
  margin-bottom: var(--spacing-4);
  padding-left: var(--spacing-4);
}

.prose blockquote p:first-of-type::before {
  content: open-quote;
}

.prose blockquote p:last-of-type::after {
  content: close-quote;
}

.prose hr {
  border-color: rgba(139, 154, 70, 0.3);
  border-top-width: 1px;
  margin-top: var(--spacing-8);
  margin-bottom: var(--spacing-8);
}

.prose table {
  width: 100%;
  table-layout: auto;
  text-align: left;
  margin-bottom: var(--spacing-4);
  font-size: var(--font-size-sm);
  line-height: var(--line-height-relaxed);
}

.prose thead {
  color: var(--dark-red);
  font-weight: var(--font-weight-semibold);
  border-bottom-width: 1px;
  border-bottom-color: rgba(139, 154, 70, 0.3);
}

.prose thead th {
  vertical-align: bottom;
  padding-right: var(--spacing-2);
  padding-bottom: var(--spacing-2);
  padding-left: var(--spacing-2);
}

.prose tbody tr {
  border-bottom-width: 1px;
  border-bottom-color: rgba(139, 154, 70, 0.2);
}

.prose tbody tr:last-child {
  border-bottom-width: 0;
}

.prose tbody td {
  vertical-align: top;
  padding-top: var(--spacing-2);
  padding-right: var(--spacing-2);
  padding-bottom: var(--spacing-2);
  padding-left: var(--spacing-2);
}

/* Typography Scale for Components */
.display-1 {
  font-size: clamp(3rem, 8vw, 6rem);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
  letter-spacing: -0.02em;
}

.display-2 {
  font-size: clamp(2.5rem, 6vw, 4.5rem);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
  letter-spacing: -0.01em;
}

.display-3 {
  font-size: clamp(2rem, 5vw, 3.5rem);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
}

.headline-1 {
  font-size: clamp(1.75rem, 4vw, 2.5rem);
  font-weight: var(--font-weight-bold);
  line-height: var(--line-height-tight);
}

.headline-2 {
  font-size: clamp(1.5rem, 3vw, 2rem);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-snug);
}

.headline-3 {
  font-size: clamp(1.25rem, 2.5vw, 1.75rem);
  font-weight: var(--font-weight-semibold);
  line-height: var(--line-height-snug);
}

.body-large {
  font-size: var(--font-size-lg);
  line-height: var(--line-height-relaxed);
}

.body-medium {
  font-size: var(--font-size-base);
  line-height: var(--line-height-normal);
}

.body-small {
  font-size: var(--font-size-sm);
  line-height: var(--line-height-normal);
}

.caption {
  font-size: var(--font-size-xs);
  line-height: var(--line-height-tight);
  color: var(--dark-red);
  opacity: 0.6;
}

.overline {
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: var(--tracking-wider);
  line-height: var(--line-height-tight);
}

/* Utility Classes for Special Text Effects */
.text-gradient {
  background: linear-gradient(135deg, var(--golden-green), var(--dark-red));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  color: transparent;
}

.text-shadow-sm {
  text-shadow: 0 1px 2px rgba(139, 44, 44, 0.05);
}

.text-shadow {
  text-shadow: 0 1px 3px rgba(139, 44, 44, 0.12), 0 1px 2px rgba(139, 44, 44, 0.24);
}

.text-shadow-lg {
  text-shadow: 0 10px 15px rgba(139, 44, 44, 0.1), 0 4px 6px rgba(139, 44, 44, 0.05);
}

.text-shadow-none {
  text-shadow: none;
}

/* Responsive Typography */
@media (max-width: 640px) {
  .prose {
    font-size: var(--font-size-sm);
  }
  
  .prose h1 {
    font-size: var(--font-size-2xl);
  }
  
  .prose h2 {
    font-size: var(--font-size-xl);
  }
  
  .prose h3 {
    font-size: var(--font-size-lg);
  }
}

/* Print Typography */
@media print {
  .prose {
    font-size: 12pt;
    line-height: 1.4;
    color: var(--dark-red);
  }
  
  .prose h1,
  .prose h2,
  .prose h3,
  .prose h4,
  .prose h5,
  .prose h6 {
    color: var(--dark-red);
    page-break-after: avoid;
  }
  
  .prose p,
  .prose blockquote,
  .prose ul,
  .prose ol {
    orphans: 3;
    widows: 3;
  }
  
  .prose blockquote,
  .prose pre {
    page-break-inside: avoid;
  }
}