@import url('https://fonts.googleapis.com/css2?family=Itim&family=Roboto+Mono&display=swap');

:root {
  /* =========================================
     TIER 1: PRIMITIVES (Absolute Values)
     ========================================= */

  /* 1. COLOR PRIMITIVES */
  --gray-50: #f9fafb;
  --gray-100: #f3f4f6;
  --gray-200: #e5e7eb;
  --gray-300: #d1d5db;
  --gray-400: #9ca3af;
  --gray-500: #6b7280;
  --gray-600: #4b5563;
  --gray-700: #374151;
  --gray-800: #1f2937;
  --gray-900: #111827;

  --brand-50: #eff6ff;
  --brand-100: #dbeafe;
  --brand-200: #bfdbfe;
  --brand-300: #93c5fd;
  --brand-400: #60a5fa;
  --brand-500: #3b82f6;
  --brand-600: #2563eb;
  --brand-700: #1d4ed8;
  --brand-800: #1e40af;
  --brand-900: #1e3a8a;

  --success-50: #f0fdf4;
  --success-100: #dcfce7;
  --success-200: #bbf7d0;
  --success-300: #86efac;
  --success-400: #4ade80;
  --success-500: #22c55e;
  --success-600: #16a34a;
  --success-700: #15803d;
  --success-800: #166534;
  --success-900: #14532d;

  --warning-50: #fffbeb;
  --warning-100: #fef3c7;
  --warning-200: #fde68a;
  --warning-300: #fcd34d;
  --warning-400: #fbbf24;
  --warning-500: #f59e0b;
  --warning-600: #d97706;
  --warning-700: #b45309;
  --warning-800: #92400e;
  --warning-900: #78350f;

  --error-50: #fef2f2;
  --error-100: #fee2e2;
  --error-200: #fecaca;
  --error-300: #fca5a5;
  --error-400: #f87171;
  --error-500: #ef4444;
  --error-600: #dc2626;
  --error-700: #b91c1c;
  --error-800: #991b1b;
  --error-900: #7f1d1d;

  /* 2. TYPOGRAPHY SCALES */
  --font-sans: 'Itim', cursive;
  --font-mono: 'Roboto Mono', monospace;
  
  --text-xs: 0.75rem;
  --text-sm: 0.875rem;
  --text-base: 1rem;
  --text-lg: 1.125rem;
  --text-xl: 1.25rem;
  --text-2xl: 1.5rem;
  --text-3xl: 1.875rem;
  --text-4xl: 2.25rem;

  --font-normal: 400;
  --font-medium: 500;
  --font-semibold: 600;
  --font-bold: 700;

  --line-height-none: 1;
  --line-height-tight: 1.25;
  --line-height-snug: 1.375;
  --line-height-normal: 1.5;
  --line-height-relaxed: 1.625;
  --line-height-loose: 2;

  /* 3. DIMENSION (Spacing & Sizing) */
  --space-0: 0rem;
  --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 */

  --size-icon-sm: 1rem;
  --size-icon-md: 1.5rem;
  --size-icon-lg: 2rem;

  --max-width: 60em;

  /* 4. SHAPE & RADIUS */
  --radius-none: 0px;
  --radius-sm: 0.25rem;
  --radius-md: 0.375rem;
  --radius-lg: 0.5rem;
  --radius-full: 9999px;

  /* 5. ELEVATION & DEPTH */
  --shadow-none: none;
  --shadow-sm: 0 2px 4px 0 rgb(0 0 0 / 0.3);
  --shadow-md: 0 8px 16px -2px rgb(0 0 0 / 0.4), 0 4px 8px -4px rgb(0 0 0 / 0.35);
  --shadow-lg: 0 24px 48px -12px rgb(0 0 0 / 0.5), 0 16px 24px -8px rgb(0 0 0 / 0.45);

  --z-below: -1;
  --z-default: 1;
  --z-dropdown: 40;
  --z-modal: 50;

  /* 6. MOTION & ANIMATION */
  --duration-fast: 150ms;
  --duration-normal: 300ms;
  --duration-slow: 500ms;
  --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1);
  --ease-out-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);

  /* 7. ADDITIONAL PRIMITIVES */
  --opacity-disabled: 0.5;
  --opacity-overlay: 0.8;
  --border-width-thin: 1px;
  --border-width-thick: 2px;
  --screen-xs: 480px;
  --screen-sm: 640px;
  --screen-md: 768px;
  --screen-lg: 1024px;

  /* =========================================
     TIER 2: SEMANTICS (Contextual/Themed)
     ========================================= */

  /* A. Background / Surface */
  --surface-default: #ffffff;
  --surface-raised: var(--gray-50);
  --surface-overlay: var(--gray-100);

  /* B. Foreground / Text & Icon */
  --text-primary: var(--gray-900);
  --text-secondary: var(--gray-500);
  --text-inverse: #ffffff;
  --text-disabled: var(--gray-400);

  /* C. Border */
  --border-default: var(--gray-300);
  --border-focus: var(--brand-500);

  /* D. Action / Interactive */
  --action-primary-bg: var(--brand-500);
  --action-primary-hover: var(--brand-400);
  --action-primary-active: var(--brand-600);

  --action-secondary-hover: var(--gray-200);
  --action-secondary-active: var(--gray-300);

  --action-ghost-hover: var(--gray-100);
  --action-ghost-active: var(--gray-200);

  --action-disabled-bg: var(--gray-100);

  /* E. Status / Feedback */
  --status-success: var(--success-500);
  --status-warning: var(--warning-500);
  --status-error: var(--error-500);
}

/* Dark Mode Semantic Overrides */
[data-theme='dark'] {
  --surface-default: var(--gray-900);
  --surface-raised: var(--gray-800);
  --surface-overlay: var(--gray-700);

  --text-primary: var(--gray-50);
  --text-secondary: var(--gray-400);
  --text-disabled: var(--gray-600);

  --border-default: var(--gray-500);
  --border-focus: var(--brand-400);

  --action-primary-bg: var(--brand-600);
  --action-primary-hover: var(--brand-500);
  --action-primary-active: var(--brand-700);

  --action-secondary-hover: var(--gray-700);
  --action-secondary-active: var(--gray-600);

  --action-ghost-hover: var(--gray-900);
  --action-ghost-active: var(--gray-700);
}

html {
  color-scheme: light dark;
}

body {
  font-family: var(--font-sans);
  line-height: var(--line-height-relaxed);
  font-size: var(--text-base);
  margin: auto;
  padding: 0 var(--space-4);
  max-width: var(--max-width);
  background: var(--surface-raised);
  color: var(--text-primary);
  min-height: 100vh;
}

body::-webkit-scrollbar {
  display: none;
}

p,
hr,
main,
header,
footer {
  margin: var(--space-4) 0;
}

article h1 {
  font-size: var(--text-4xl);
}

a {
  color: var(--action-primary-bg);
  text-decoration: none;
}

a:hover,
a:focus {
  text-decoration: underline;
  opacity: 0.9;
}

pre code {
  white-space: pre-wrap;
}

pre {
  padding: var(--space-4);
  border-radius: var(--radius-md);
  background: var(--surface-default);
  color: var(--text-primary);
  box-shadow: var(--shadow-sm);
}

img {
  height: auto;
  max-width: 100%;
}

input {
  vertical-align: middle;
}

blockquote {
  margin: 0;
  border-left: var(--border-width-thick) solid var(--border-default);
  padding-left: var(--space-4);
}

ul,
ol {
  padding: 0;
  list-style-position: inside;
}

ul ul,
ul ol,
ol ul,
ol ol {
  padding-inline: var(--space-4);
}

input:disabled,
button:disabled {
  opacity: var(--opacity-disabled);
}

td,
th,
table {
  border: var(--border-width-thin) solid var(--border-default);
  padding: var(--space-2);
  border-collapse: collapse;
}

input,
button,
select,
textarea {
  outline: none;
  background: none;
  padding: var(--space-1) var(--space-2);
  border: var(--border-width-thin) solid var(--border-default);
  border-radius: var(--radius-sm);
}

input[type='reset'],
input[type='button'],
input[type='submit'] {
  color: var(--text-inverse);
  background: var(--action-primary-bg);
  border: var(--border-width-thin) solid var(--action-primary-bg);
  cursor: pointer;
  transition: background-color var(--duration-fast) var(--ease-in-out), border-color var(--duration-fast) var(--ease-in-out);
}

input[type='reset']:hover,
input[type='reset']:focus,
input[type='button']:hover,
input[type='button']:focus,
input[type='submit']:hover,
input[type='submit']:focus {
  background-color: var(--action-primary-hover);
  border-color: var(--action-primary-hover);
}
