html {
  scroll-behavior: smooth;
  /* 16px base (browser default, kept explicit) — the site's typography scale
     (below) is spec'd in exact px targets assuming Tailwind's stock rem-based
     text-* utilities (e.g. text-6xl = 60px), so the root size must stay at
     16px for those utilities to hit their intended values. */
  font-size: 16px;
}

/* Typography system — see the spec this implements: Inter (body/UI) +
   Space Grotesk (headings), 16px base body, headings weight 700 (800 for
   hero), body line-height 1.6-1.8, headings 1.1-1.2. Values here are
   defaults only — a low-specificity element selector, so any Tailwind
   text-*/font-*/leading-* utility already on an element still wins. */
:root {
  --font-body: 'Inter', ui-sans-serif, system-ui, sans-serif;
  --font-heading: 'Space Grotesk', ui-sans-serif, system-ui, sans-serif;
  --fs-body: 1rem;       /* 16px */
  --fs-small: 0.875rem;  /* 14px */
  --fs-caption: 0.75rem; /* 12px */
  --fs-h1: 3.75rem;      /* 60px desktop */
  --fs-h1-mobile: 2.25rem;  /* 36px mobile */
  --fs-h2: 3rem;         /* 48px desktop */
  --fs-h2-mobile: 2rem;  /* 32px mobile */
  --fs-h3: 2.25rem;      /* 36px */
  --fs-h4: 1.75rem;      /* 28px */
  --fs-h5: 1.375rem;     /* 22px */
  --fs-h6: 1.125rem;     /* 18px */
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-heading);
  font-weight: 700;
  line-height: 1.2;
}

p {
  line-height: 1.7;
}

/* Static equivalent of Tailwind's .hidden utility, for the one place (the
   Facebook Pixel's <noscript> fallback image in includes/header.php) that
   must stay hidden even with JavaScript off — Tailwind's CDN build needs JS
   to inject its own styles, so its .hidden class doesn't apply there. */
.hidden-static {
  display: none;
}

/* Hides the scrollbar on the Recent Works carousel (sections/recent-works.php)
   without disabling scroll — Tailwind has no core utility for this. */
.scrollbar-hide {
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.scrollbar-hide::-webkit-scrollbar {
  display: none;
}

[id] {
  scroll-margin-top: 96px;
}

::-webkit-scrollbar {
  width: 10px;
}
::-webkit-scrollbar-thumb {
  background: #cbd5e1;
  border-radius: 999px;
}

.marquee-track {
  width: max-content;
  animation: marquee 30s linear infinite;
}
@keyframes marquee {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

/* Social link icon badges (includes/footer.php, admin/social_links.php) —
   official brand colors, keyed by includes/functions.php's
   social_link_badge_class(). Instagram has no single brand color (its mark
   is a signature gradient), so it's the one gradient background here. */
.social-badge-twitter { background-color: #000000; }
.social-badge-facebook { background-color: #1877F2; }
.social-badge-linkedin { background-color: #0A66C2; }
.social-badge-youtube { background-color: #FF0000; }
.social-badge-github { background-color: #181717; }
.social-badge-other { background-color: #6B7280; }
.social-badge-instagram { background: linear-gradient(45deg, #f09433, #e6683c, #dc2743, #cc2366, #bc1888); }
.social-badge-whatsapp { background-color: #25D366; }

/* Blog post body (blog-post.php) — the content column stores raw HTML
   authored by admin/content_writer/marketing_manager staff in a plain
   textarea (admin/blog_posts.php), with no Tailwind Typography plugin
   installed to style it automatically. Dark is the site default (see
   includes/header.php's theme-init script); `.light` on <html> restores
   the original light-mode values below each rule. */
.blog-content { color: #d1d5db; font-size: 1rem; line-height: 1.75; }
.blog-content > * + * { margin-top: 1.25em; }
.blog-content h2 { font-size: 1.5rem; font-weight: 700; color: #ffffff; margin-top: 2em; }
.blog-content h3 { font-size: 1.25rem; font-weight: 700; color: #ffffff; margin-top: 1.75em; }
.blog-content p { margin-top: 1.1em; }
.blog-content ul, .blog-content ol { padding-left: 1.5em; margin-top: 1.1em; }
.blog-content ul { list-style-type: disc; }
.blog-content ol { list-style-type: decimal; }
.blog-content li + li { margin-top: 0.4em; }
.blog-content a { color: #fb3748; text-decoration: underline; text-underline-offset: 2px; }
.blog-content a:hover { color: #fca5a5; }
.blog-content img { border-radius: 1rem; margin: 1.5em 0; max-width: 100%; height: auto; }
.blog-content blockquote { border-left: 3px solid #fb3748; padding-left: 1.25em; margin: 1.5em 0; color: #9ca3af; font-style: italic; }
.blog-content code { background: #1f2937; padding: 0.15em 0.4em; border-radius: 0.3em; font-size: 0.9em; }
.blog-content strong { color: #ffffff; font-weight: 700; }

.light .blog-content { color: #374151; }
.light .blog-content h2, .light .blog-content h3, .light .blog-content strong { color: #111827; }
.light .blog-content a { color: #e2001a; }
.light .blog-content a:hover { color: #9a0015; }
.light .blog-content blockquote { border-left-color: #fca5a5; color: #6B7280; }
.light .blog-content code { background: #f3f4f6; }
