/**
 * Colégio Harmonia — Design System Tokens
 * Base color and typography CSS custom properties
 */

:root {
  /* ── Brand Colors ── */
  --color-primary:         #008649;
  --color-primary-dark:    #006a3a;
  --color-primary-darker:  #005530;
  --color-primary-light:   #33a86e;
  --color-primary-tint:    #e8f5ee;
  --color-primary-tint-2:  #c8e8d5;

  --color-secondary:       #3c424f;
  --color-secondary-dark:  #272b34;
  --color-secondary-light: #6b7280;
  --color-secondary-tint:  #f3f4f6;

  /* ── Neutrals ── */
  --color-white:           #ffffff;
  --color-gray-50:         #f9fafb;
  --color-gray-100:        #f3f4f6;
  --color-gray-200:        #e5e7eb;
  --color-gray-300:        #d1d5db;
  --color-gray-400:        #9ca3af;
  --color-gray-500:        #6b7280;
  --color-gray-600:        #4b5563;
  --color-gray-700:        #374151;
  --color-gray-800:        #1f2937;
  --color-gray-900:        #111827;

  /* ── Semantic Colors ── */
  --color-bg:              #ffffff;
  --color-bg-alt:          #f9fafb;
  --color-bg-inverted:     #008649;
  --color-surface:         #ffffff;
  --color-surface-raised:  #ffffff;
  --color-border:          #e5e7eb;
  --color-border-strong:   #008649;

  --color-fg-1:            #3c424f;   /* primary text */
  --color-fg-2:            #6b7280;   /* secondary text */
  --color-fg-3:            #9ca3af;   /* disabled/caption */
  --color-fg-inverted:     #ffffff;   /* text on green */

  --color-accent:          #008649;
  --color-accent-hover:    #006a3a;

  --color-success:         #008649;
  --color-warning:         #d97706;
  --color-error:           #dc2626;
  --color-info:            #2563eb;

  /* ── Typography ── */
  --font-sans:             'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;
  --font-display:          'Roboto', 'Helvetica Neue', Helvetica, Arial, sans-serif;

  --font-weight-light:     300;
  --font-weight-regular:   400;
  --font-weight-medium:    500;
  --font-weight-bold:      700;

  /* Type scale — fluid, base 16px */
  --text-xs:               0.75rem;    /* 12px */
  --text-sm:               0.875rem;   /* 14px */
  --text-base:             1rem;       /* 16px */
  --text-lg:               1.125rem;   /* 18px */
  --text-xl:               1.25rem;    /* 20px */
  --text-2xl:              1.5rem;     /* 24px */
  --text-3xl:              1.875rem;   /* 30px */
  --text-4xl:              2.25rem;    /* 36px */
  --text-5xl:              3rem;       /* 48px */
  --text-6xl:              3.75rem;    /* 60px */

  --leading-tight:         1.25;
  --leading-snug:          1.375;
  --leading-normal:        1.5;
  --leading-relaxed:       1.625;

  --tracking-tight:        -0.02em;
  --tracking-normal:       0;
  --tracking-wide:         0.04em;
  --tracking-wider:        0.08em;

  /* ── Semantic Type Roles ── */
  --h1-size:               var(--text-5xl);
  --h1-weight:             var(--font-weight-bold);
  --h1-leading:            var(--leading-tight);
  --h1-tracking:           var(--tracking-tight);

  --h2-size:               var(--text-4xl);
  --h2-weight:             var(--font-weight-bold);
  --h2-leading:            var(--leading-tight);
  --h2-tracking:           var(--tracking-tight);

  --h3-size:               var(--text-3xl);
  --h3-weight:             var(--font-weight-medium);
  --h3-leading:            var(--leading-snug);

  --h4-size:               var(--text-2xl);
  --h4-weight:             var(--font-weight-medium);
  --h4-leading:            var(--leading-snug);

  --h5-size:               var(--text-xl);
  --h5-weight:             var(--font-weight-medium);

  --h6-size:               var(--text-lg);
  --h6-weight:             var(--font-weight-medium);

  --body-size:             var(--text-base);
  --body-weight:           var(--font-weight-regular);
  --body-leading:          var(--leading-relaxed);

  --body-sm-size:          var(--text-sm);
  --caption-size:          var(--text-xs);
  --label-size:            var(--text-sm);
  --label-weight:          var(--font-weight-medium);

  /* ── Spacing ── */
  --space-1:   0.25rem;   /* 4px */
  --space-2:   0.5rem;    /* 8px */
  --space-3:   0.75rem;   /* 12px */
  --space-4:   1rem;      /* 16px */
  --space-5:   1.25rem;   /* 20px */
  --space-6:   1.5rem;    /* 24px */
  --space-8:   2rem;      /* 32px */
  --space-10:  2.5rem;    /* 40px */
  --space-12:  3rem;      /* 48px */
  --space-16:  4rem;      /* 64px */
  --space-20:  5rem;      /* 80px */
  --space-24:  6rem;      /* 96px */

  /* ── Border Radius ── */
  --radius-sm:   4px;
  --radius-md:   6px;
  --radius-lg:   8px;
  --radius-xl:   12px;
  --radius-2xl:  16px;
  --radius-full: 9999px;

  /* ── Shadows ── */
  --shadow-sm:   0 1px 3px rgba(0,0,0,0.07);
  --shadow-md:   0 2px 8px rgba(0,0,0,0.08);
  --shadow-lg:   0 4px 16px rgba(0,0,0,0.12);
  --shadow-xl:   0 8px 24px rgba(0,0,0,0.14);
  --shadow-focus: 0 0 0 3px rgba(0,134,73,0.25);

  /* ── Transitions ── */
  --ease-out:     cubic-bezier(0.16, 1, 0.3, 1);
  --duration-fast:   150ms;
  --duration-normal: 250ms;
  --duration-slow:   400ms;

  /* ── Layout ── */
  --max-width:     1200px;
  --header-height: 72px;
}

/* ── Base Resets ── */
*, *::before, *::after { box-sizing: border-box; }

body {
  font-family: var(--font-sans);
  font-size: var(--body-size);
  font-weight: var(--body-weight);
  line-height: var(--body-leading);
  color: var(--color-fg-1);
  background: var(--color-bg);
  -webkit-font-smoothing: antialiased;
}

h1 { font-size: var(--h1-size); font-weight: var(--h1-weight); line-height: var(--h1-leading); letter-spacing: var(--h1-tracking); }
h2 { font-size: var(--h2-size); font-weight: var(--h2-weight); line-height: var(--h2-leading); letter-spacing: var(--h2-tracking); }
h3 { font-size: var(--h3-size); font-weight: var(--h3-weight); line-height: var(--h3-leading); }
h4 { font-size: var(--h4-size); font-weight: var(--h4-weight); line-height: var(--h4-leading); }
h5 { font-size: var(--h5-size); font-weight: var(--h5-weight); }
h6 { font-size: var(--h6-size); font-weight: var(--h6-weight); }

a { color: var(--color-primary); text-decoration: none; transition: color var(--duration-fast) var(--ease-out); }
a:hover { color: var(--color-primary-dark); }
