/* =================================================================
   Lorenz GmbH — Component Behaviour
   Hover transitions, reveal animation, focus rings.
   All layout/typography styling stays inline on elements (preserved
   verbatim from the JSX source for 1:1 visual fidelity).
   Only hover-state changes and the reveal sequence live here.
   ================================================================= */

html { scroll-behavior: smooth; scroll-padding-top: 80px; }
body { margin: 0; }

:focus-visible { outline: 2px solid var(--accent-gold); outline-offset: 2px; }
button { font-family: var(--font-sans); }

/* Subtle text selection */
::selection { background: rgba(12,42,42,0.18); color: var(--ink-primary); }

/* Selection on dark surfaces — cream-on-cream */
.lz-on-ink ::selection,
.lz-on-rust ::selection,
.lz-footer ::selection {
  background: rgba(245, 241, 233, 0.25);
  color: var(--ink-on-dark);
}

/* -----------------------------------------------------------------
   Reveal animation — staggered fade-up applied by tiny inline JS
   ----------------------------------------------------------------- */
@keyframes lzRise {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.reveal { opacity: 0; transform: translateY(8px); }
.reveal.in { animation: lzRise 360ms cubic-bezier(0.0,0,0.2,1) forwards; }

/* -----------------------------------------------------------------
   Header — sticky nav, scroll-triggered border
   ----------------------------------------------------------------- */
.lz-header {
  transition: border-color 200ms cubic-bezier(0.4,0,0.2,1);
}
.lz-header.is-scrolled {
  border-bottom-color: rgba(12,42,42,0.10) !important;
}

/* Header nav links — underline on hover */
.lz-nav-link {
  transition: border-color 120ms cubic-bezier(0.4,0,0.2,1);
}
.lz-nav-link:hover {
  border-bottom-color: var(--ink-primary) !important;
}

/* -----------------------------------------------------------------
   Footer links — colour + gold underline on hover
   ----------------------------------------------------------------- */
.lz-footer-link {
  transition:
    color 120ms cubic-bezier(0.4,0,0.2,1),
    border-color 120ms cubic-bezier(0.4,0,0.2,1);
}
.lz-footer-link:hover {
  color: var(--ink-on-dark) !important;
  border-bottom-color: var(--accent-gold) !important;
}

/* -----------------------------------------------------------------
   Buttons — outline (ink), outline (cream), solid
   ----------------------------------------------------------------- */
.lz-btn {
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  border-radius: 2px;
  padding: 16px 22px;
  cursor: pointer;
  display: inline-block;
  text-decoration: none;
  transition:
    background 200ms cubic-bezier(0.4,0,0.2,1),
    color 200ms cubic-bezier(0.4,0,0.2,1);
}

/* Outline button — ink variant (on cream surfaces) */
.lz-btn--outline-ink {
  color: var(--ink-primary);
  background: transparent;
  border: 1px solid var(--ink-primary);
}
.lz-btn--outline-ink:hover {
  background: var(--ink-primary);
  color: var(--ink-on-dark);
}

/* Outline button — cream variant (on dark/rust surfaces) */
.lz-btn--outline-cream {
  color: var(--ink-on-dark);
  background: transparent;
  border: 1px solid var(--ink-on-dark);
}
.lz-btn--outline-cream:hover {
  background: var(--ink-on-dark);
  color: var(--ink-primary);
}

/* Solid button — ink fill */
.lz-btn--solid {
  color: var(--ink-on-dark);
  background: var(--ink-primary);
  border: 1px solid var(--ink-primary);
}
.lz-btn--solid:hover {
  background: #081F1F;
}

/* -----------------------------------------------------------------
   Caps link — gold underline, lightens on hover
   ----------------------------------------------------------------- */
.lz-caps-link {
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--accent-gold);
  text-decoration: underline;
  text-decoration-color: var(--accent-gold);
  text-underline-offset: 6px;
  display: inline-block;
  transition: color 120ms cubic-bezier(0.4,0,0.2,1),
              text-decoration-color 120ms cubic-bezier(0.4,0,0.2,1);
}
.lz-caps-link:hover {
  color: var(--accent-gold-soft);
  text-decoration-color: var(--accent-gold-soft);
}

/* -----------------------------------------------------------------
   Heritage timeline row — year shifts to rust on row hover
   ----------------------------------------------------------------- */
.lz-timeline-row {
  transition: background 200ms cubic-bezier(0.4,0,0.2,1);
}
.lz-timeline-row__year {
  transition: color 200ms cubic-bezier(0.4,0,0.2,1);
}
.lz-timeline-row:hover .lz-timeline-row__year {
  color: var(--accent-rust) !important;
}

/* -----------------------------------------------------------------
   Holding card — top border darkens, gold link lightens,
   arrow shifts right on hover
   ----------------------------------------------------------------- */
.lz-holding-card {
  transition: border-color 200ms cubic-bezier(0.4,0,0.2,1);
}
.lz-holding-card:hover {
  border-top-color: var(--ink-primary) !important;
}
.lz-holding-card__cta {
  transition: color 120ms cubic-bezier(0.4,0,0.2,1);
}
.lz-holding-card:hover .lz-holding-card__cta {
  color: var(--accent-gold-soft) !important;
}
.lz-holding-card__arrow {
  transition: transform 200ms cubic-bezier(0.4,0,0.2,1);
  display: inline-block;
}
.lz-holding-card:hover .lz-holding-card__arrow {
  transform: translateX(4px);
}

/* -----------------------------------------------------------------
   Press link (Investments page) — colour shift on hover
   ----------------------------------------------------------------- */
.lz-press-link {
  transition: color 120ms cubic-bezier(0.4,0,0.2,1);
}
.lz-press-link:hover {
  color: var(--accent-gold-soft) !important;
}

/* -----------------------------------------------------------------
   Holding link (Investments page, current bucket entries)
   ----------------------------------------------------------------- */
.lz-holding-link {
  transition: color 120ms cubic-bezier(0.4,0,0.2,1);
}
.lz-holding-link:hover {
  color: var(--accent-gold-soft) !important;
}
.lz-holding-link__arrow {
  transition: transform 200ms cubic-bezier(0.4,0,0.2,1);
  display: inline-block;
}
.lz-holding-link:hover .lz-holding-link__arrow {
  transform: translateX(3px);
}

/* -----------------------------------------------------------------
   Contact-page channel link — large display, ink → gold on hover
   ----------------------------------------------------------------- */
.lz-channel-link {
  transition: color 200ms cubic-bezier(0.4,0,0.2,1);
}
.lz-channel-link:hover {
  color: var(--accent-gold) !important;
}

/* =================================================================
   MOBILE RESPONSIVE
   The site uses inline styles on every element. To make it
   responsive without rewriting markup, we target the inline-style
   patterns via [style*="..."] attribute selectors and override with
   !important inside media queries.
   ================================================================= */

/* ---------- Mobile (≤760px): collapse everything to single column ---------- */
@media (max-width: 760px) {

  /* All multi-column grids → single column */
  [style*="grid-template-columns: 1fr 1.2fr"],
  [style*="grid-template-columns: 1fr 1.5fr"],
  [style*="grid-template-columns: 1fr 1fr"],
  [style*="grid-template-columns: 1.6fr 1fr 0.7fr 0.4fr"],
  [style*="grid-template-columns: 1.6fr 1fr"],
  [style*="grid-template-columns: 180px 1fr"],
  [style*="grid-template-columns: 220px 1fr"],
  [style*="grid-template-columns: repeat(2, 1fr)"],
  [style*="grid-template-columns: repeat(3, 1fr)"],
  [style*="grid-template-columns: repeat(4, 1fr)"] {
    grid-template-columns: 1fr !important;
    gap: 28px !important;
  }

  /* Heritage timeline rows — year above body, both single column */
  .lz-timeline-row {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
  .lz-timeline-row p {
    grid-column: 1 !important;
    max-width: none !important;
  }

  /* Header — stack logo above nav */
  .lz-header > div {
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: flex-start !important;
    gap: 14px !important;
    padding-top: 16px !important;
    padding-bottom: 16px !important;
  }
  .lz-header nav {
    gap: 18px !important;
    flex-wrap: wrap !important;
  }
  .lz-nav-link {
    font-size: 10px !important;
    letter-spacing: 0.16em !important;
  }
  /* GET IN TOUCH button collapses to plain text link on mobile */
  .lz-nav-link--button {
    background: transparent !important;
    color: var(--ink-primary) !important;
    padding: 0 0 3px 0 !important;
    border-radius: 0 !important;
    font-size: 10px !important;
  }

  /* Press links smaller so they wrap nicely */
  .lz-press-link {
    font-size: 10px !important;
  }

  /* Increase scroll-padding because stacked header is taller */
  html { scroll-padding-top: 130px; }
}

/* ---------- Tablet (761px–1024px): intermediate adjustments ---------- */
@media (max-width: 1024px) and (min-width: 761px) {

  /* 4-column Principles → 2 columns at tablet */
  [style*="grid-template-columns: repeat(4, 1fr)"] {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 28px !important;
  }

  /* Footer 4-col → 2 cols at tablet */
  [style*="grid-template-columns: 1.6fr 1fr 0.7fr 0.4fr"] {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 32px !important;
  }
}
