/* style.css — Heflin Siteworks LLC design system */

:root {
  /* Type scale */
  --text-xs: clamp(0.75rem, 0.72rem + 0.15vw, 0.8125rem);
  --text-sm: clamp(0.875rem, 0.84rem + 0.2vw, 0.9375rem);
  --text-base: clamp(1rem, 0.97rem + 0.18vw, 1.0625rem);
  --text-lg: clamp(1.125rem, 1.04rem + 0.4vw, 1.375rem);
  --text-xl: clamp(1.5rem, 1.25rem + 1vw, 2.125rem);
  --text-2xl: clamp(2rem, 1.4rem + 2.4vw, 3.25rem);
  --text-3xl: clamp(2.5rem, 1.5rem + 3.6vw, 4.25rem);

  /* Spacing */
  --space-1: 0.25rem;  --space-2: 0.5rem;   --space-3: 0.75rem;
  --space-4: 1rem;     --space-5: 1.25rem;  --space-6: 1.5rem;
  --space-8: 2rem;     --space-10: 2.5rem;  --space-12: 3rem;
  --space-16: 4rem;    --space-20: 5rem;    --space-24: 6rem;
  --space-32: 8rem;

  --radius-sm: 3px;
  --radius-md: 6px;
  --radius-lg: 10px;

  --font-display: 'Cabinet Grotesk', 'Iowan Old Style', Georgia, sans-serif;
  --font-body: 'Switzer', 'Segoe UI', system-ui, sans-serif;

  --measure: 68ch;
  --container: 1180px;
  --container-wide: 1400px;

  /* Brand constants */
  --brand-navy: #12314a;
  --brand-navy-deep: #0c2033;
  --brand-gold: #b68a3a;
  --brand-offwhite: #faf9f6;
}

/* ---------- Light theme (default) ---------- */
:root,
[data-theme='light'] {
  --color-bg: #faf9f6;
  --color-bg-alt: #f2f0ea;
  --color-surface: #ffffff;
  --color-surface-2: #f4f2ec;
  --color-ink: #12314a;
  --color-text: #17222d;
  --color-muted: #53616f;
  --color-border: rgba(18, 49, 74, 0.16);
  --color-border-strong: rgba(18, 49, 74, 0.32);
  --color-primary: #12314a;
  --color-primary-hover: #0c2033;
  --color-on-primary: #faf9f6;
  --color-accent: #b68a3a;
  --color-accent-text: #7a5a1c;
  --color-focus: #12314a;
  --color-inverse-bg: #0c2033;
  --color-inverse-text: #eef1f4;
  --color-inverse-muted: #a9bacb;
  --shadow-card: 0 1px 2px rgba(12, 32, 51, 0.06), 0 8px 24px rgba(12, 32, 51, 0.06);
  --grade-line: rgba(18, 49, 74, 0.09);
}

/* ---------- Dark theme ---------- */
[data-theme='dark'] {
  --color-bg: #0b141d;
  --color-bg-alt: #0f1b26;
  --color-surface: #12212e;
  --color-surface-2: #16293a;
  --color-ink: #e7edf3;
  --color-text: #e8edf2;
  --color-muted: #a4b4c3;
  --color-border: rgba(203, 220, 235, 0.18);
  --color-border-strong: rgba(203, 220, 235, 0.36);
  --color-primary: #d3a74f;
  --color-primary-hover: #e0b968;
  --color-on-primary: #0c2033;
  --color-accent: #d3a74f;
  --color-accent-text: #dcb264;
  --color-focus: #d3a74f;
  --color-inverse-bg: #16293a;
  --color-inverse-text: #eef3f8;
  --color-inverse-muted: #a4b4c3;
  --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.4), 0 10px 30px rgba(0, 0, 0, 0.28);
  --grade-line: rgba(203, 220, 235, 0.09);
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme='light']) {
    --color-bg: #0b141d;
    --color-bg-alt: #0f1b26;
    --color-surface: #12212e;
    --color-surface-2: #16293a;
    --color-ink: #e7edf3;
    --color-text: #e8edf2;
    --color-muted: #a4b4c3;
    --color-border: rgba(203, 220, 235, 0.18);
    --color-border-strong: rgba(203, 220, 235, 0.36);
    --color-primary: #d3a74f;
    --color-primary-hover: #e0b968;
    --color-on-primary: #0c2033;
    --color-accent: #d3a74f;
    --color-accent-text: #dcb264;
    --color-focus: #d3a74f;
    --color-inverse-bg: #16293a;
    --color-inverse-text: #eef3f8;
    --color-inverse-muted: #a4b4c3;
    --shadow-card: 0 1px 2px rgba(0, 0, 0, 0.4), 0 10px 30px rgba(0, 0, 0, 0.28);
    --grade-line: rgba(203, 220, 235, 0.09);
  }
}

/* ---------- Layout primitives ---------- */
.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--space-6);
}
.container--wide { max-width: var(--container-wide); }
.container--narrow { max-width: 780px; }

section { padding-block: clamp(var(--space-12), 7vw, var(--space-24)); }
section.section--tight { padding-block: clamp(var(--space-10), 4vw, var(--space-16)); }
section.section--loose { padding-block: clamp(var(--space-16), 10vw, var(--space-32)); }

.bg-alt { background: var(--color-bg-alt); }
.bg-inverse {
  background: var(--color-inverse-bg);
  color: var(--color-inverse-text);
}
.bg-inverse .card--dark {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.14);
}
.bg-inverse h2, .bg-inverse h3 { color: var(--color-inverse-text); }
.bg-inverse p, .bg-inverse li { color: var(--color-inverse-muted); }

/* Grade-line motif: fine survey ruling */
.grade-lines {
  position: relative;
  isolation: isolate;
}
.grade-lines::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background-image: repeating-linear-gradient(
    to bottom,
    var(--grade-line) 0 1px,
    transparent 1px 14px
  );
  mask-image: linear-gradient(to bottom, transparent, #000 22%, #000 78%, transparent);
}

/* ---------- Typography ---------- */
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--color-ink);
}
h1 { font-size: var(--text-2xl); }
.hero h1 {
  font-size: clamp(2.125rem, 1.25rem + 2.4vw, 3.25rem);
  letter-spacing: -0.025em;
  max-width: 19ch;
}
h2 { font-size: var(--text-xl); }
h3 { font-size: var(--text-lg); font-weight: 700; }
h4 { font-family: var(--font-body); font-size: var(--text-base); font-weight: 600; letter-spacing: 0; }

p { color: var(--color-text); }
.lead { font-size: var(--text-lg); color: var(--color-muted); max-width: 60ch; line-height: 1.5; }
.muted { color: var(--color-muted); }
.small { font-size: var(--text-sm); }

.eyebrow {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--color-accent-text);
  display: flex;
  align-items: center;
  gap: var(--space-3);
  margin-bottom: var(--space-4);
}
.eyebrow::after {
  content: '';
  flex: 1;
  max-width: 88px;
  height: 1px;
  background: var(--color-accent);
  opacity: 0.7;
}
.eyebrow--plain::after { display: none; }

a { color: var(--color-accent-text); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--color-primary); }
[data-theme='dark'] a:hover { color: var(--color-primary-hover); }

.rule {
  height: 2px;
  background: var(--color-accent);
  width: 56px;
  border: 0;
  margin-block: var(--space-6);
}

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  min-height: 46px;
  padding: var(--space-3) var(--space-6);
  font-size: var(--text-sm);
  font-weight: 600;
  letter-spacing: 0.02em;
  border-radius: var(--radius-sm);
  text-decoration: none;
  border: 1.5px solid transparent;
}
.btn--primary {
  background: var(--color-primary);
  color: var(--color-on-primary);
  border-color: var(--color-primary);
}
.btn--primary:hover { background: var(--color-primary-hover); border-color: var(--color-primary-hover); color: var(--color-on-primary); }
.btn--ghost {
  border-color: var(--color-border-strong);
  color: var(--color-ink);
  background: transparent;
}
.btn--ghost:hover { border-color: var(--color-accent); color: var(--color-accent-text); }
.btn--gold {
  background: var(--brand-gold);
  color: #14202b;
  border-color: var(--brand-gold);
}
.btn--gold:hover { background: #c99c4c; border-color: #c99c4c; color: #14202b; }
.bg-inverse .btn--ghost { border-color: rgba(255, 255, 255, 0.4); color: #fff; }
.bg-inverse .btn--ghost:hover { border-color: var(--brand-gold); color: var(--brand-gold); }

.btn-row { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-8); }

/* ---------- Header / nav ---------- */
.skip-link {
  position: absolute;
  left: var(--space-4);
  top: -100px;
  z-index: 100;
  background: var(--color-primary);
  color: var(--color-on-primary);
  padding: var(--space-3) var(--space-5);
  border-radius: var(--radius-sm);
  text-decoration: none;
}
.skip-link:focus { top: var(--space-3); color: var(--color-on-primary); }

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: color-mix(in srgb, var(--color-bg) 92%, transparent);
  backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--color-border);
}
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-6);
  min-height: 76px;
  padding-block: var(--space-3);
}
.brand { display: inline-flex; align-items: center; text-decoration: none; flex-shrink: 0; }
.brand img { height: 40px; width: auto; }
[data-theme='dark'] .brand img,
:root:not([data-theme='light']) .brand img {
  /* keep the supplied mark legible on dark surfaces */
  background: var(--brand-offwhite);
  padding: 3px 7px;
  border-radius: var(--radius-sm);
}
@media (prefers-color-scheme: light) {
  :root:not([data-theme='dark']) .brand img { background: none; padding: 0; }
}
[data-theme='light'] .brand img { background: none; padding: 0; }

.nav { display: flex; align-items: center; gap: var(--space-1); }
.nav a {
  font-size: var(--text-sm);
  font-weight: 500;
  color: var(--color-text);
  text-decoration: none;
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-sm);
  border-bottom: 2px solid transparent;
}
.nav a:hover { color: var(--color-accent-text); }
.nav a[aria-current='page'] {
  color: var(--color-ink);
  font-weight: 600;
  border-bottom-color: var(--color-accent);
}
.nav a.btn--primary,
.nav a.btn--primary:hover,
.nav a.btn--primary[aria-current='page'] {
  color: var(--color-on-primary);
  border-bottom: 1.5px solid var(--color-primary);
}
.nav a.btn--primary[aria-current='page'] { box-shadow: inset 0 -3px 0 0 var(--brand-gold); }

.header-actions { display: flex; align-items: center; gap: var(--space-2); }

.icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  color: var(--color-text);
  background: transparent;
}
.icon-btn:hover { border-color: var(--color-accent); color: var(--color-accent-text); }
.icon-btn svg { width: 20px; height: 20px; }
.theme-toggle .icon-moon { display: none; }
[data-theme='dark'] .theme-toggle .icon-moon { display: block; }
[data-theme='dark'] .theme-toggle .icon-sun { display: none; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme='light']) .theme-toggle .icon-moon { display: block; }
  :root:not([data-theme='light']) .theme-toggle .icon-sun { display: none; }
}

.nav-toggle { display: none; }

@media (max-width: 900px) {
  .nav-toggle { display: inline-flex; }
  .nav {
    position: fixed;
    inset: 76px 0 auto 0;
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    background: var(--color-surface);
    border-bottom: 1px solid var(--color-border);
    padding: var(--space-3) var(--space-6) var(--space-8);
    box-shadow: var(--shadow-card);
    transform: translateY(-8px);
    opacity: 0;
    visibility: hidden;
    transition: opacity 180ms ease, transform 180ms ease, visibility 180ms;
  }
  .nav[data-open='true'] { opacity: 1; visibility: visible; transform: translateY(0); }
  .nav a {
    padding: var(--space-4) var(--space-1);
    border-bottom: 1px solid var(--color-border);
    border-radius: 0;
    font-size: var(--text-base);
  }
  .nav a[aria-current='page'] { border-bottom-color: var(--color-accent); border-bottom-width: 2px; }
  .nav .btn { margin-top: var(--space-5); border-bottom: 0; }
}

/* ---------- Hero ---------- */
.hero { position: relative; padding-block: clamp(var(--space-12), 8vw, var(--space-24)); overflow: hidden; }
.hero-grid {
  display: grid;
  gap: clamp(var(--space-8), 5vw, var(--space-16));
  grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  align-items: center;
}
@media (max-width: 900px) { .hero-grid { grid-template-columns: 1fr; } }
.hero p.lead { margin-top: var(--space-6); }
.hero-figure { position: relative; }
.hero-figure img {
  width: 100%;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  aspect-ratio: 16 / 10;
  object-fit: cover;
}
.hero-figure figcaption {
  font-size: var(--text-xs);
  color: var(--color-muted);
  margin-top: var(--space-3);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.hero-mark {
  max-width: 340px;
  margin-bottom: var(--space-8);
}
.hero-mark img { width: 100%; }

.stat-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--space-1);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}
.stat-strip div { padding: var(--space-6) var(--space-6) var(--space-6) 0; }
.stat-strip dt {
  font-size: var(--text-xs);
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--color-muted);
  margin-bottom: var(--space-2);
}
.stat-strip dd { font-family: var(--font-display); font-weight: 700; font-size: var(--text-lg); color: var(--color-ink); }

/* ---------- Cards & grids ---------- */
.grid { display: grid; gap: var(--space-6); }
.grid--2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.grid--3 { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }

.card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-8);
  box-shadow: var(--shadow-card);
}
.card h3 { margin-bottom: var(--space-3); }
.card p + ul { margin-top: var(--space-4); }
.card--flat { box-shadow: none; background: transparent; }
.card--dark {
  background: #16293a;
  color: var(--color-inverse-text);
  border-color: transparent;
}
.card--dark h3 { color: #fff; }
.card--dark p, .card--dark li { color: var(--color-inverse-muted); }

.list-check { list-style: none; display: grid; gap: var(--space-3); }
.list-check li {
  position: relative;
  padding-left: var(--space-6);
  color: var(--color-muted);
  font-size: var(--text-sm);
}
.list-check li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.6em;
  width: 10px;
  height: 2px;
  background: var(--color-accent);
}
.card--dark .list-check li::before { background: var(--brand-gold); }

/* Editorial split */
.split {
  display: grid;
  gap: clamp(var(--space-8), 5vw, var(--space-16));
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  align-items: center;
}
.split--reverse .split__media { order: 2; }
@media (max-width: 860px) {
  .split { grid-template-columns: 1fr; }
  .split--reverse .split__media { order: 0; }
}
.split__media img {
  width: 100%;
  border-radius: var(--radius-md);
  border: 1px solid var(--color-border);
  object-fit: cover;
}

/* Numbered narrative rows */
.rows { border-top: 1px solid var(--color-border); }
.rows > article {
  display: grid;
  grid-template-columns: 88px minmax(0, 1fr) minmax(0, 1.1fr);
  gap: var(--space-6);
  padding-block: var(--space-8);
  border-bottom: 1px solid var(--color-border);
  align-items: start;
}
@media (max-width: 780px) {
  .rows > article { grid-template-columns: 1fr; gap: var(--space-3); }
}
.rows .index {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  color: var(--color-accent-text);
  font-weight: 700;
}

/* Spec table */
.spec-table { font-size: var(--text-sm); }
.spec-table caption {
  text-align: left;
  font-size: var(--text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-muted);
  padding-bottom: var(--space-3);
}
.spec-table th, .spec-table td {
  text-align: left;
  padding: var(--space-4) var(--space-4) var(--space-4) 0;
  border-bottom: 1px solid var(--color-border);
  vertical-align: top;
}
.spec-table th { font-weight: 600; color: var(--color-ink); width: 34%; }
.spec-table td { color: var(--color-muted); }

/* Field / status list (federal profile) */
.field-list { display: grid; gap: 0; }
.field-list div {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: var(--space-3);
  padding-block: var(--space-4);
  border-bottom: 1px solid var(--color-border);
}
.field-list dt { font-weight: 600; color: var(--color-ink); font-size: var(--text-sm); }
.field-list dd { color: var(--color-muted); font-size: var(--text-sm); }
.card--dark .field-list dt { color: #fff; }
.card--dark .field-list div { border-bottom-color: rgba(255, 255, 255, 0.16); }

.badge {
  display: inline-block;
  font-size: var(--text-xs);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 4px 10px;
  border: 1px solid var(--color-accent);
  color: var(--color-accent-text);
  border-radius: 100px;
}
.card--dark .badge, .bg-inverse .badge { color: var(--brand-gold); border-color: var(--brand-gold); }

.note {
  border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-md);
  padding: var(--space-5) var(--space-6);
  background: var(--color-surface-2);
  font-size: var(--text-sm);
  color: var(--color-muted);
}
.note strong { color: var(--color-ink); }

.contact-actions { display: grid; gap: var(--space-4); grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.contact-action {
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  padding: var(--space-5) var(--space-6);
  border: 1.5px solid var(--color-border-strong);
  border-radius: var(--radius-md);
  text-decoration: none;
  background: var(--color-surface);
}
.contact-action:hover { border-color: var(--color-accent); }
.contact-action span:first-child {
  font-size: var(--text-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--color-muted);
}
.contact-action span:last-child {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: 700;
  color: var(--color-ink);
}

/* ---------- Forms ---------- */
.form-grid { display: grid; gap: var(--space-6); grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.field { display: flex; flex-direction: column; gap: var(--space-2); }
.field--full { grid-column: 1 / -1; }
label { font-size: var(--text-sm); font-weight: 600; color: var(--color-ink); }
.hint { font-size: var(--text-xs); color: var(--color-muted); font-weight: 400; }
input[type='text'],
input[type='email'],
input[type='tel'],
input[type='date'],
input[type='number'],
select,
textarea {
  width: 100%;
  padding: var(--space-3) var(--space-4);
  min-height: 46px;
  background: var(--color-surface);
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  color: var(--color-text);
  font-size: var(--text-base);
}
textarea { min-height: 130px; resize: vertical; }
input:focus, select:focus, textarea:focus { border-color: var(--color-accent); }
input::placeholder, textarea::placeholder { color: color-mix(in srgb, var(--color-muted) 75%, transparent); }

fieldset { border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: var(--space-6); }
legend { font-family: var(--font-display); font-size: var(--text-base); font-weight: 700; padding-inline: var(--space-2); color: var(--color-ink); }

.checkbox-row { display: flex; align-items: flex-start; gap: var(--space-3); }
.checkbox-row input[type='checkbox'] { width: 22px; height: 22px; min-height: 0; accent-color: var(--color-primary); margin-top: 2px; }
.checkbox-row label { font-weight: 500; }

.form-status {
  margin-top: var(--space-6);
  padding: var(--space-5) var(--space-6);
  border: 1.5px solid var(--color-accent);
  border-radius: var(--radius-md);
  background: var(--color-surface-2);
}
.form-status[hidden] { display: none; }
.form-status h3 { margin-bottom: var(--space-2); }
.error-text { color: #a32020; font-size: var(--text-sm); font-weight: 600; }
[data-theme='dark'] .error-text { color: #ff9b8a; }
input[aria-invalid='true'], select[aria-invalid='true'] { border-color: #a32020; }

/* ---------- Footer ---------- */
.site-footer {
  background: var(--color-inverse-bg);
  color: var(--color-inverse-text);
  padding-block: var(--space-16) var(--space-8);
  margin-top: var(--space-4);
}
.footer-grid {
  display: grid;
  gap: var(--space-10);
  grid-template-columns: minmax(0, 1.4fr) repeat(auto-fit, minmax(180px, 1fr));
}
.site-footer h2 { font-size: var(--text-base); color: #fff; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: var(--space-4); font-family: var(--font-body); }
.site-footer p, .site-footer li, .site-footer address { color: var(--color-inverse-muted); font-size: var(--text-sm); font-style: normal; }
.site-footer ul { list-style: none; display: grid; gap: var(--space-3); }
.site-footer a { color: var(--color-inverse-text); text-decoration: none; }
.site-footer a:hover { color: var(--brand-gold); }
.footer-mark img { max-width: 220px; background: var(--brand-offwhite); padding: var(--space-3); border-radius: var(--radius-sm); }
.footer-bottom {
  margin-top: var(--space-12);
  padding-top: var(--space-6);
  border-top: 1px solid rgba(255, 255, 255, 0.16);
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  justify-content: space-between;
  font-size: var(--text-xs);
  color: var(--color-inverse-muted);
}

/* ---------- Utility ---------- */
.stack > * + * { margin-top: var(--space-4); }
.stack-lg > * + * { margin-top: var(--space-8); }
.mt-8 { margin-top: var(--space-8); }
.mt-12 { margin-top: var(--space-12); }
.max-measure { max-width: var(--measure); }
.text-inverse { color: var(--color-inverse-text); }
