/* ============================================================
   IM-PACT — Shared Components
   Services mega-menu + practice-area page components.
   Loaded by every page. Uses only local fallbacks for tokens so
   it works against both token sets (index.html inline / style.css).
   ============================================================ */

:root {
  --c-gold:      #C9A227;
  --c-gold-l:    #E6C766;
  --c-gold-d:    #9C7B1A;
  --c-forest:    #0C2E1E;
  --c-forest-d:  #081E14;
  --c-ink:       #0E261B;
  --c-body:      #36453D;
  --c-muted:     #6E7B72;
  --c-border:    #E3DECD;
  --c-cream:     #F6F3EA;
  --c-hair-lt:   rgba(255, 255, 255, 0.10);
  --c-mono:      'JetBrains Mono', ui-monospace, SFMono-Regular, monospace;
  --c-sans:      'Inter', -apple-system, 'Segoe UI', Helvetica, sans-serif;
  --c-ease:      cubic-bezier(0.4, 0, 0.2, 1);
}

/* ── Services mega-menu ─────────────────────────────────────── */
.nav-item { position: relative; display: flex; align-items: center; }

.nav-item > a { display: inline-flex; align-items: center; gap: 6px; }

.mega-caret {
  width: 8px; height: 8px;
  flex: none;
  transition: transform 0.25s var(--c-ease);
}
.nav-item.open .mega-caret { transform: rotate(180deg); }

.mega {
  position: absolute;
  top: calc(100% + 18px);
  left: 50%;
  transform: translateX(-50%) translateY(-8px);
  width: min(1120px, calc(100vw - 48px));
  background: var(--c-forest);
  border: 1px solid var(--c-hair-lt);
  border-radius: 16px;
  padding: 40px 40px 34px;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity 0.22s var(--c-ease), transform 0.22s var(--c-ease), visibility 0.22s;
  box-shadow: 0 24px 60px rgba(8, 30, 20, 0.28);
  z-index: 1200;
}
.nav-item:hover > .mega,
.nav-item:focus-within > .mega,
.nav-item.open > .mega {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0);
}
/* hover bridge so the pointer can cross the gap to the panel */
.mega::before {
  content: '';
  position: absolute;
  left: 0; right: 0;
  top: -20px; height: 20px;
}

.mega-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 24px;
  padding-bottom: 22px;
  margin-bottom: 26px;
  border-bottom: 1px solid var(--c-hair-lt);
}
.mega-head .mega-kicker {
  font-family: var(--c-mono);
  font-size: 0.635rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--c-gold-l);
}
.mega-head .mega-all {
  font-family: var(--c-sans);
  font-size: 0.79rem;
  font-weight: 500;
  letter-spacing: -0.006em;
  color: #A9BCAE;
  white-space: nowrap;
  transition: color 0.2s;
}
.mega-head .mega-all:hover { color: #FFFFFF; }

.mega-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 30px 36px;
}
.mega-col { min-width: 0; }
.mega-col > .mega-idx {
  display: block;
  font-family: var(--c-mono);
  font-size: 0.6rem;
  letter-spacing: 0.12em;
  color: rgba(255, 255, 255, 0.34);
  margin-bottom: 8px;
}
.mega-col > .mega-title {
  display: block;
  font-family: var(--c-sans);
  font-size: 0.955rem;
  font-weight: 600;
  letter-spacing: -0.022em;
  line-height: 1.3;
  color: #FFFFFF;
  padding-bottom: 12px;
  margin-bottom: 12px;
  border-bottom: 1px solid var(--c-hair-lt);
  transition: color 0.2s;
}
.mega-col > .mega-title:hover { color: var(--c-gold-l); }
.mega-links { list-style: none; margin: 0; padding: 0; }
.mega-links li { margin: 0; }
.mega-links a {
  display: block;
  font-family: var(--c-sans);
  font-size: 0.815rem;
  letter-spacing: -0.004em;
  line-height: 1.45;
  color: #97AC9D;
  padding: 5px 0;
  transition: color 0.18s, padding-left 0.18s;
}
.mega-links a:hover { color: #FFFFFF; padding-left: 5px; }
.mega-links .mega-more { color: var(--c-gold-d); }
.mega-links .mega-more:hover { color: var(--c-gold-l); }

@media (max-width: 1180px) {
  .mega { padding: 32px 30px 28px; }
  .mega-grid { grid-template-columns: repeat(2, 1fr); gap: 26px 30px; }
}
@media (max-width: 900px) {
  .mega { display: none; }
}

/* ── Mobile services accordion ──────────────────────────────── */
.nav-mobile .m-acc { border-bottom: 1px solid rgba(255, 255, 255, 0.09); }
.nav-mobile .m-acc-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  width: 100%;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: var(--c-sans);
  font-size: 1.55rem;
  font-weight: 600;
  letter-spacing: -0.03em;
  color: #EAF0E8;
  padding: 20px 0;
}
.nav-mobile .m-acc-btn .mega-caret { width: 12px; height: 12px; color: var(--c-gold-l); }
.nav-mobile .m-acc.open .m-acc-btn .mega-caret { transform: rotate(180deg); }
.nav-mobile .m-acc-panel { display: none; padding: 0 0 18px 2px; }
.nav-mobile .m-acc.open .m-acc-panel { display: block; }
.nav-mobile .m-acc-panel a {
  display: block;
  font-family: var(--c-sans);
  font-size: 0.95rem;
  font-weight: 450;
  letter-spacing: -0.006em;
  color: #A9BCAE;
  padding: 10px 0;
  border-bottom: none;
}
.nav-mobile .m-acc-panel a:hover { color: #FFFFFF; }

/* light-surface mobile menu (inner pages use a cream nav-mobile) */
.nav-mobile.on-light .m-acc { border-bottom-color: var(--c-border); }
.nav-mobile.on-light .m-acc-btn { color: var(--c-ink); }
.nav-mobile.on-light .m-acc-btn .mega-caret { color: var(--c-gold-d); }
.nav-mobile.on-light .m-acc-panel a { color: var(--c-muted); }
.nav-mobile.on-light .m-acc-panel a:hover { color: var(--c-ink); }

/* ── Practice-area index cards (services hub) ───────────────── */
.practice-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--c-border);
  border: 1px solid var(--c-border);
  border-radius: 14px;
  overflow: hidden;
  counter-reset: prac;
}
.practice-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: #FFFFFF;
  padding: 38px 32px 34px;
  transition: background 0.25s var(--c-ease);
}
.practice-card:hover { background: #FCFBF6; }
.practice-card::before {
  counter-increment: prac;
  content: '/' counter(prac, decimal-leading-zero);
  position: absolute;
  top: 24px; right: 28px;
  font-family: var(--c-mono);
  font-size: 0.6rem;
  letter-spacing: 0.08em;
  color: #B9B29C;
}
.practice-card h3 {
  font-family: var(--c-sans);
  font-size: 1.12rem;
  font-weight: 650;
  letter-spacing: -0.026em;
  line-height: 1.28;
  color: var(--c-ink);
  margin: 0 0 10px;
  padding-right: 44px;
}
.practice-card p {
  font-size: 0.9rem;
  line-height: 1.7;
  letter-spacing: -0.006em;
  color: var(--c-body);
  margin: 0 0 22px;
}
.practice-card .practice-count {
  margin-top: auto;
  padding-top: 18px;
  border-top: 1px solid var(--c-border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  font-family: var(--c-mono);
  font-size: 0.635rem;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: var(--c-muted);
}
.practice-card .practice-count b {
  font-weight: 500;
  color: var(--c-gold-d);
}
@media (max-width: 1024px) { .practice-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 700px)  { .practice-grid { grid-template-columns: 1fr; } .practice-card { padding: 32px 26px 30px; } }

/* ── Service detail rows (practice pages) ──────────────────── */
.svc-rows {
  display: grid;
  gap: 1px;
  background: var(--c-border);
  border: 1px solid var(--c-border);
  border-radius: 14px;
  overflow: hidden;
  counter-reset: row;
}
.svc-row {
  display: grid;
  grid-template-columns: 88px 1fr 1.05fr;
  gap: 32px;
  align-items: start;
  background: #FFFFFF;
  padding: 34px 34px 36px;
  transition: background 0.25s var(--c-ease);
  scroll-margin-top: 120px;
}
.svc-row:hover { background: #FCFBF6; }
.svc-row > .svc-row-idx {
  counter-increment: row;
  font-family: var(--c-mono);
  font-size: 0.665rem;
  font-weight: 500;
  letter-spacing: 0.14em;
  color: #B9B29C;
  padding-top: 5px;
}
.svc-row > .svc-row-idx::before { content: '/'; }
.svc-row h3 {
  font-family: var(--c-sans);
  font-size: 1.14rem;
  font-weight: 650;
  letter-spacing: -0.026em;
  line-height: 1.3;
  color: var(--c-ink);
  margin: 0;
}
.svc-row .svc-row-body p {
  font-size: 0.925rem;
  line-height: 1.74;
  letter-spacing: -0.006em;
  color: var(--c-body);
  margin: 0;
}
.svc-row .svc-row-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 16px;
}
.svc-row .svc-row-meta span {
  font-family: var(--c-mono);
  font-size: 0.62rem;
  letter-spacing: 0.06em;
  color: var(--c-muted);
  background: var(--c-cream);
  border: 1px solid var(--c-border);
  border-radius: 6px;
  padding: 4px 10px;
}
@media (max-width: 900px) {
  .svc-row { grid-template-columns: 52px 1fr; gap: 18px 20px; padding: 28px 24px 30px; }
  .svc-row h3 { grid-column: 2; }
  .svc-row .svc-row-body { grid-column: 2; }
  .svc-row > .svc-row-idx { grid-row: 1; }
}

/* ── Scope strip (practice pages) ───────────────────────────── */
.scope-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--c-hair-lt);
  border: 1px solid var(--c-hair-lt);
  border-radius: 12px;
  overflow: hidden;
  margin-top: 44px;
}
.scope-cell { background: rgba(255, 255, 255, 0.035); padding: 22px 22px 24px; }
.scope-cell b {
  display: block;
  font-family: var(--c-sans);
  font-size: 1.28rem;
  font-weight: 700;
  letter-spacing: -0.032em;
  line-height: 1;
  color: #FFFFFF;
}
.scope-cell small {
  display: block;
  font-family: var(--c-mono);
  font-size: 0.6rem;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: #7C9280;
  margin-top: 10px;
}
@media (max-width: 760px) { .scope-strip { grid-template-columns: 1fr 1fr; } }

/* ── Photography ────────────────────────────────────────────
   Flat, hairline-framed, no rounded-corner drop shadows.
   Every figure degrades to a branded panel if the file 404s
   (see the onerror handler in the markup).
   ─────────────────────────────────────────────────────────── */
.photo-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: var(--c-border);
  border: 1px solid var(--c-border);
  border-radius: 14px;
  overflow: hidden;
  margin-top: 56px;
}
.photo-figure {
  position: relative;
  margin: 0;
  background: #FFFFFF;
}
.photo-frame {
  position: relative;
  display: block;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  background: linear-gradient(162deg, #0E3322, #0A2618);
}
.photo-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.7s var(--c-ease), opacity 0.4s var(--c-ease);
}
.photo-figure:hover .photo-frame img { transform: scale(1.03); }
/* graceful fallback: hidden image leaves the branded panel + a mono label */
.photo-frame.is-empty img { opacity: 0; }
.photo-frame.is-empty::after {
  content: attr(data-fallback);
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  text-align: center;
  font-family: var(--c-mono);
  font-size: 0.6rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(230, 199, 102, 0.65);
}
.photo-figure figcaption {
  padding: 18px 22px 20px;
  font-family: var(--c-mono);
  font-size: 0.635rem;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: var(--c-muted);
  line-height: 1.5;
}
.photo-figure figcaption b {
  display: block;
  font-family: var(--c-sans);
  font-size: 0.925rem;
  font-weight: 600;
  letter-spacing: -0.02em;
  text-transform: none;
  color: var(--c-ink);
  margin-bottom: 6px;
}
@media (max-width: 900px) { .photo-strip { grid-template-columns: 1fr; } }

/* wide chapter-break image */
.photo-band { margin: 0; }
.photo-band .photo-frame {
  aspect-ratio: 21 / 8;
  border: 1px solid var(--c-border);
  border-radius: 14px;
}
.photo-band figcaption {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
  margin-top: 16px;
  font-family: var(--c-mono);
  font-size: 0.635rem;
  letter-spacing: 0.11em;
  text-transform: uppercase;
  color: var(--c-muted);
}
.photo-band figcaption span:last-child { color: #A8A08A; }
@media (max-width: 700px) { .photo-band .photo-frame { aspect-ratio: 4 / 3; } }

.photo-note {
  margin-top: 18px;
  font-family: var(--c-mono);
  font-size: 0.6rem;
  letter-spacing: 0.1em;
  color: #A8A08A;
}

/* ── Cross-links to sibling practices ──────────────────────── */
.sibling-rail {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 32px;
}
.sibling-rail a {
  font-family: var(--c-sans);
  font-size: 0.815rem;
  font-weight: 500;
  letter-spacing: -0.006em;
  color: var(--c-body);
  background: #FFFFFF;
  border: 1px solid var(--c-border);
  border-radius: 8px;
  padding: 9px 15px;
  transition: border-color 0.2s, color 0.2s;
}
.sibling-rail a:hover { border-color: var(--c-ink); color: var(--c-ink); }
