/* ==========================================================================
   Base — typography, utilities, buttons, section helpers
   ========================================================================== */

html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-sans);
  color: var(--ink-3);
  background-color: var(--bg);
  transition: background-color 0.25s ease, color 0.25s ease;
}

a {
  text-decoration: none;
  color: var(--brand-600);
}

/* Never steal .btn text color (on noir brand-700 ≈ white = invisible on hover fill) */
a:hover:not(.btn) {
  color: var(--brand-700);
}

h1, h2, h3, h4, h5, h6,
.display-1, .display-2, .display-3, .display-4, .display-5, .display-6 {
  font-family: var(--font-display);
  color: var(--ink);
  font-weight: 700;
  letter-spacing: -0.02em;
}

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

/* --- Color utilities --- */
.text-brand { color: var(--brand-600) !important; }
.text-brand-50 { color: var(--brand-50) !important; }
.text-brand-100 { color: var(--brand-100) !important; }
.text-brand-300 { color: var(--brand-300) !important; }
.text-brand-500 { color: var(--brand-500) !important; }
.text-brand-600 { color: var(--brand-600) !important; }
.text-brand-700 { color: var(--brand-700) !important; }

/* Follows current theme/accent brand tokens in the scope */
.text-accent { color: var(--brand-600) !important; }
.text-accent-soft { color: var(--brand-300) !important; }
.text-accent-strong { color: var(--brand-700) !important; }

.text-ink { color: var(--ink) !important; }
.text-ink-2 { color: var(--ink-2) !important; }
.text-ink-3 { color: var(--ink-3) !important; }
.text-muted-2 { color: var(--muted) !important; }
.text-on-inverse { color: var(--on-inverse) !important; }
.text-on-inverse-muted { color: var(--on-inverse-muted) !important; }

/* Fixed accent hues — paint a single title/label without changing section data-accent */
.text-crimson { color: #e11d48 !important; }
.text-ember { color: #ea580c !important; }
.text-safety { color: #ca8a04 !important; }
.text-volt { color: #84cc16 !important; }
.text-teal { color: #0d9488 !important; }
.text-sky { color: #0284c7 !important; }
.text-forest { color: #059669 !important; }
.text-violet { color: #7c3aed !important; }
.text-copper { color: #d97706 !important; }
.text-rose { color: #e11d48 !important; }

.bg-brand { background-color: var(--brand-600) !important; }
.bg-brand-700 { background-color: var(--brand-700) !important; }
.bg-inverse { background-color: var(--inverse) !important; }
.bg-inverse-2 { background-color: var(--inverse-2) !important; }
.bg-surface { background-color: var(--surface) !important; }
.bg-surface-2 { background-color: var(--surface-2) !important; }
.bg-surface-3 { background-color: var(--surface-3) !important; }
.bg-page { background-color: var(--bg) !important; }

.border-line { border-color: var(--line) !important; }
.border-line-strong { border-color: var(--line-strong) !important; }

/* Border style utilities — apply where needed (no global select) */
.border-solid { border-style: solid !important; }
.border-dashed { border-style: dashed !important; }
.border-dotted { border-style: dotted !important; }

/* Ready-made framed surfaces for cards / panels */
.frame-dashed,
.frame-dotted {
  border-width: 1px;
  border-color: var(--line);
  background: var(--surface);
  border-radius: var(--radius-2xl);
  transition: border-color 0.25s ease;
}

.frame-dashed { border-style: dashed; }
.frame-dotted { border-style: dotted; }

.frame-dashed:hover,
.frame-dotted:hover {
  border-color: var(--brand-600);
}

.rounded-2xl { border-radius: var(--radius-2xl) !important; }
.rounded-3xl { border-radius: var(--radius-3xl) !important; }
.rounded-xl { border-radius: var(--radius-xl) !important; }

/* --- Section --- */
.section-py {
  padding-top: var(--section-py-sm);
  padding-bottom: var(--section-py-sm);
}

@media (min-width: 992px) {
  .section-py {
    padding-top: var(--section-py);
    padding-bottom: var(--section-py);
  }
}

.section-wash {
  position: relative;
  isolation: isolate;
}

.section-wash::before {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: min(28rem, 55%);
  z-index: -1;
  pointer-events: none;
  background: radial-gradient(ellipse 70% 100% at 50% 0%, var(--ambient-1), transparent 70%);
}

.eyebrow {
  display: inline-block;
  font-size: 0.8125rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--brand-600);
}

.eyebrow-inverse {
  color: var(--brand-300);
}

.fw-black { font-weight: 800; }

.hover-lift {
  transition: border-color 0.25s ease, transform 0.2s ease, box-shadow 0.2s ease;
}

.hover-lift:hover {
  border-color: var(--brand-600);
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}

/* --- Buttons --- */
.btn-brand {
  --bs-btn-color: var(--on-brand, #fff);
  --bs-btn-bg: var(--brand-600);
  --bs-btn-border-color: var(--brand-600);
  --bs-btn-hover-color: var(--on-brand, #fff);
  --bs-btn-hover-bg: var(--brand-hover, var(--brand-700));
  --bs-btn-hover-border-color: var(--brand-hover, var(--brand-700));
  --bs-btn-active-color: var(--on-brand, #fff);
  --bs-btn-active-bg: var(--brand-hover, var(--brand-700));
  --bs-btn-active-border-color: var(--brand-hover, var(--brand-700));
  --bs-btn-disabled-color: var(--on-brand, #fff);
  --bs-btn-disabled-bg: var(--brand-600);
  --bs-btn-disabled-border-color: var(--brand-600);
  background-color: var(--brand-600);
  border: 1px solid var(--brand-600);
  color: var(--on-brand, #fff);
  font-weight: var(--skin-btn-weight, 700);
  letter-spacing: var(--skin-btn-tracking, 0);
  border-radius: var(--radius-md);
  font-size: var(--control-fs);
  padding: var(--control-py) var(--control-px);
  box-shadow: var(--skin-shadow-brand, var(--shadow-brand));
  transition: background-color 0.15s ease, border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}

.btn.btn-brand:hover,
.btn.btn-brand:focus,
.btn.btn-brand:focus-visible {
  background-color: var(--brand-hover, var(--brand-700));
  border-color: var(--brand-hover, var(--brand-700));
  color: var(--on-brand, #fff);
  transform: translateY(-1px);
}

.btn-brand-outline {
  --bs-btn-color: var(--ink);
  --bs-btn-hover-color: var(--brand-600);
  --bs-btn-hover-bg: var(--brand-50);
  --bs-btn-hover-border-color: var(--brand-600);
  background: transparent;
  border: 1px solid var(--line-strong);
  color: var(--ink);
  font-weight: 600;
  letter-spacing: var(--skin-btn-tracking, 0);
  border-radius: var(--radius-md);
  font-size: var(--control-fs);
  padding: var(--control-py) var(--control-px);
}

.btn.btn-brand-outline:hover,
.btn.btn-brand-outline:focus {
  border-color: var(--brand-600);
  color: var(--brand-600);
  background: var(--brand-50);
}

.btn-brand-outline-inverse {
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: #fff;
  font-weight: 600;
  letter-spacing: var(--skin-btn-tracking, 0);
  border-radius: var(--radius-md);
  font-size: var(--control-fs);
  padding: var(--control-py) var(--control-px);
}

.btn.btn-brand-outline-inverse:hover,
.btn.btn-brand-outline-inverse:focus {
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
}

.btn-white-on-brand {
  --bs-btn-color: #0f172a;
  --bs-btn-hover-color: #0f172a;
  --bs-btn-hover-bg: #f8fafc;
  background: #fff;
  /* Always dark text on white — brand-700 is near-white on noir/carbon */
  color: #0f172a;
  font-weight: var(--skin-btn-weight, 700);
  letter-spacing: var(--skin-btn-tracking, 0);
  border: none;
  border-radius: var(--radius-md);
  font-size: var(--control-fs);
  padding: var(--control-py) var(--control-px);
}

.btn.btn-white-on-brand:hover,
.btn.btn-white-on-brand:focus {
  background: #f8fafc;
  color: #0f172a;
}

.btn-ghost {
  background: transparent;
  border: none;
  color: var(--brand-600);
  font-weight: 700;
  font-size: var(--control-fs);
  padding: var(--control-py) 0.5rem;
}

.btn-ghost:hover {
  color: var(--brand-500);
}

/* --- Forms --- */
.form-control-brand {
  border-radius: var(--radius-md);
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--ink);
  font-size: var(--control-fs);
  padding: var(--control-input-py) var(--control-input-px);
}

.form-control-brand:focus {
  border-color: var(--brand-600);
  box-shadow: 0 0 0 4px var(--brand-100);
  background: var(--surface);
  color: var(--ink);
}

.form-control-brand::placeholder {
  color: var(--muted);
}

/* --- Theme switcher chip --- */
.theme-switcher {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
}

.theme-switcher button {
  border: 1px solid var(--line);
  background: var(--surface);
  color: var(--ink-3);
  font-size: 0.75rem;
  font-weight: 600;
  border-radius: var(--radius-pill);
  padding: 0.35rem 0.75rem;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
}

.theme-switcher button:hover {
  border-color: var(--brand-600);
  color: var(--brand-600);
}

.theme-switcher button.is-active {
  background: var(--brand-600);
  border-color: var(--brand-600);
  color: var(--on-brand, #fff);
}
