/* ============================================================
   HLRBO LandKey page ("The handshake, upgraded.") — tokens,
   keyframes, hover/focus states, scroll-story step states, FAQ
   accordion states, and responsive rules for the Claude Design
   LandKey.dc.html handoff. The Razor view keeps the design's
   inline styles verbatim (pixel fidelity); ONLY dynamic states
   and responsive overrides live here. Prefix: lk26.
   ============================================================ */

:root {
  --hlrbo-green-dark: #31420E;
  --hlrbo-green: #6E883F;
  --hlrbo-green-light: #8BA55C;
  --hlrbo-orange: #DC7001;
  --hlrbo-orange-light: #EE8A2B;
  --hlrbo-green-dark-90: #455319;
  --hlrbo-green-dark-75: #5A6A2E;
  --hlrbo-green-dark-50: #98A087;
  --hlrbo-green-dark-25: #CBD0C3;
  --hlrbo-green-dark-10: #EAECE7;
  --hlrbo-green-dark-05: #F5F6F3;
  --hlrbo-green-75: #8BA55C;
  --hlrbo-green-50: #B7C49F;
  --hlrbo-green-25: #DBE1CF;
  --hlrbo-green-15: #E8ECE0;
  --hlrbo-green-10: #F0F2EB;
  --hlrbo-green-05: #F7F9F5;
  --hlrbo-orange-75: #E48F3E;
  --hlrbo-orange-50: #EDB77F;
  --hlrbo-orange-25: #F6DBBF;
  --hlrbo-orange-10: #FBEEDC;
  --hlrbo-orange-05: #FDF7EE;
  --hlrbo-green-hover: #5A7033;
  --hlrbo-green-active: #4D6029;
  --hlrbo-orange-hover: #BB5F01;
  --hlrbo-orange-active: #A55401;
  --hlrbo-text-primary: #1A1A1A;
  --hlrbo-text-secondary: #666666;
  --hlrbo-text-tertiary: #999999;
  --hlrbo-border: #E0E0E0;
  --hlrbo-bg: #F8F9FA;
  --hlrbo-success: #28A745;
  --font-sans: 'Figtree', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

html { scroll-behavior: smooth; }
.lk26 {
  margin: 0;
  background: #fff;
  font-family: var(--font-sans);
  color: var(--hlrbo-text-primary);
  font-feature-settings: "kern" 1, "liga" 1;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  /* The How-It-Works section stays overflow:visible for its sticky panel, so
     its right:-20px "01" numeral would add page side-scroll — clip (not
     hidden) removes it without breaking position:sticky. */
  overflow-x: hidden;
  overflow-x: clip;
}
.lk26 a { color: #6E883F; text-decoration: none; }
.lk26 a:hover { color: #5A7033; text-decoration: none; }
.lk26 ::selection { background: rgba(220, 112, 1, .3); }
.lk26 p { text-wrap: pretty; }
.lk26 a:focus-visible, .lk26 button:focus-visible, .lk26 select:focus-visible {
  outline: 2px solid var(--hlrbo-orange); outline-offset: 2px; border-radius: 4px;
}

/* ---------- Keyframes (verbatim from the design) ---------- */
@keyframes lk26HeroIn { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: translateY(0); } }
@keyframes lk26Rise { from { opacity: 0; transform: translateY(32px); } to { opacity: 1; transform: translateY(0); } }
@keyframes lk26SlideDown { from { transform: translateY(-100%); } to { transform: translateY(0); } }
@keyframes lk26CuePulse { 0%, 100% { transform: scaleY(.35); opacity: .5; } 50% { transform: scaleY(1); opacity: 1; } }

.lk26-hero-in { animation: lk26HeroIn .8s ease both; }
.lk26-cue { transform-origin: top; animation: lk26CuePulse 2.2s ease-in-out infinite; }
.lk26-fixednav { animation: lk26SlideDown .35s ease both; }

/* Scroll-driven reveals (animation-timeline: view(); unsupported browsers
   drop the timeline declarations and play the keyframe once on load). */
.lk26-rise { animation: lk26Rise .8s ease both; animation-timeline: view(); animation-range: entry 0% entry 55%; }
.lk26-rise-50 { animation: lk26Rise .8s ease both; animation-timeline: view(); animation-range: entry 0% entry 50%; }
.lk26-rise-45 { animation: lk26Rise .8s ease both; animation-timeline: view(); animation-range: entry 0% entry 45%; }
.lk26-rise-film { animation: lk26Rise .9s ease both; animation-timeline: view(); animation-range: entry 25% entry 70%; }
.lk26-rise-cta { animation: lk26Rise .9s ease both; animation-timeline: view(); animation-range: entry 10% entry 60%; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .lk26 *, .lk26 *::before, .lk26 *::after {
    animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important;
  }
}

/* ---------- Hover states (from the prototype's style-hover attrs).
   All prefixed .lk26 so they outrank the page's global anchor rule. ---------- */
.lk26 .lk26-navlink { color: rgba(255,255,255,.88); }
.lk26 .lk26-navlink:hover { color: #fff; }
.lk26 .lk26-navlink-fixed { color: rgba(255,255,255,.85); }
.lk26 .lk26-navlink-fixed:hover { color: #fff; }
.lk26 .lk26-navlink-active { color: #fff; }
.lk26 .lk26-navlink-active:hover { color: #fff; }
.lk26 .lk26-btn-outline-w { color: #fff; }
.lk26 .lk26-btn-outline-w:hover { background: rgba(255,255,255,.12); color: #fff; }
/* Hero + final-CTA outline buttons use the stronger .14 hover per the design. */
.lk26 .lk26-btn-outline-w-14 { color: #fff; }
.lk26 .lk26-btn-outline-w-14:hover { background: rgba(255,255,255,.14); color: #fff; }
.lk26 .lk26-btn-orange { background: var(--hlrbo-orange); color: #fff; }
.lk26 .lk26-btn-orange:hover { background: var(--hlrbo-orange-hover); color: #fff; }
.lk26 .lk26-btn-white { background: #fff; color: var(--hlrbo-green-dark); }
.lk26 .lk26-btn-white:hover { background: var(--hlrbo-green-10); color: var(--hlrbo-green-dark); }
.lk26 .lk26-btn-ghost-green { color: var(--hlrbo-green); }
.lk26 .lk26-btn-ghost-green:hover { background: var(--hlrbo-green-05); color: var(--hlrbo-green-hover); }
.lk26 .lk26-link-green { color: var(--hlrbo-green); }
.lk26 .lk26-link-green:hover { color: var(--hlrbo-green-hover); }

/* ---------- How-It-Works scroll story (JS applies is-active per step) ---------- */
.lk26-step { border-left: 2px solid #E0E0E0; opacity: .45; transition: opacity .5s ease, border-color .5s ease; }
.lk26-step.is-active { border-left-color: #DC7001; opacity: 1; }

/* #12764: six steps on an alternating spine. Each step is its own row (flex column) and the
   side is derived from data-owner alone (landowner = left, hunter = right, done = centred astride
   the spine), so a step cannot be added without declaring its owner and whose move it is never
   depends on colour. */
.lk26-steps { position: relative; display: flex; flex-direction: column; }
.lk26-steps::before { content: ""; position: absolute; top: 0; bottom: 0; left: 50%; width: 2px; margin-left: -1px; background: #E0E0E0; }
.lk26-steps-head { display: grid; grid-template-columns: 1fr 1fr; column-gap: 40px; padding-bottom: 20px; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: #666666; }
.lk26-steps-head span:last-child { padding-left: 24px; }
.lk26-steps .lk26-step { box-sizing: border-box; width: calc(50% - 20px); padding: 8px 0 56px; }
.lk26-steps .lk26-step[data-owner="landowner"] { align-self: flex-start; border-left: 0; border-right: 2px solid #E0E0E0; padding-right: 24px; }
.lk26-steps .lk26-step[data-owner="landowner"].is-active { border-right-color: #DC7001; }
.lk26-steps .lk26-step[data-owner="hunter"] { align-self: flex-end; padding-left: 24px; }
.lk26-steps .lk26-step[data-owner="done"] { align-self: center; width: auto; max-width: 420px; text-align: center; position: relative; z-index: 1; background: #fff; border-left: 0; padding: 28px 24px 8px; }
.lk26-step-num { font-size: 13px; font-weight: 700; color: #DC7001; margin-bottom: 10px; }
.lk26-step-h { font-size: 24px; font-weight: 700; letter-spacing: -.02em; }
.lk26-step-b { font-size: 15px; line-height: 1.6; color: #666666; margin-top: 8px; }
.lk26-step-aside { margin-top: 14px; font-size: 13.5px; line-height: 1.5; color: #31420E; background: #F8F9FA; border-left: 3px solid #DC7001; border-radius: 0 8px 8px 0; padding: 10px 14px; }
.lk26-steps-ctas { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 24px; position: relative; z-index: 1; }
@media (max-width: 767px) {
  .lk26-steps::before { left: 0; margin-left: 0; }
  .lk26-steps-head { grid-template-columns: 1fr; row-gap: 6px; padding-left: 24px; }
  .lk26-steps-head span:last-child { padding-left: 24px; }
  .lk26-steps .lk26-step { width: 100%; }
  .lk26-steps .lk26-step[data-owner="landowner"] { align-self: stretch; border-right: 0; border-left: 2px solid #E0E0E0; padding-right: 0; padding-left: 24px; }
  .lk26-steps .lk26-step[data-owner="landowner"].is-active { border-left-color: #DC7001; }
  .lk26-steps .lk26-step[data-owner="hunter"] { align-self: stretch; margin-left: 24px; width: calc(100% - 24px); }
  .lk26-steps .lk26-step[data-owner="done"] { align-self: stretch; text-align: left; max-width: none; background: transparent; border-left: 2px solid #E0E0E0; padding: 8px 0 8px 24px; }
  .lk26-steps .lk26-step[data-owner="done"].is-active { border-left-color: #DC7001; }
}

/* Sticky agreement panel elements reveal as steps pass: e-threshold classes
   are applied by JS when step >= N (opacity 0->1, translateY(14px)->0). */
.lk26-e { opacity: 0; transform: translateY(14px); transition: opacity .6s ease, transform .6s ease; }
.lk26-e.is-on { opacity: 1; transform: translateY(0); }
.lk26-e-fade { opacity: 0; transition: opacity .6s ease; }
.lk26-e-fade.is-on { opacity: 1; }
.lk26-e-fade-d1 { opacity: 0; transition: opacity .6s ease .1s; }
.lk26-e-fade-d1.is-on { opacity: 1; }
.lk26-e-fade-d15 { opacity: 0; transition: opacity .6s ease .15s; }
.lk26-e-fade-d15.is-on { opacity: 1; }
.lk26-e-d15 { opacity: 0; transform: translateY(14px); transition: opacity .6s ease .15s, transform .6s ease .15s; }
.lk26-e-d15.is-on { opacity: 1; transform: translateY(0); }
/* Signatures ink in when step >= 1 (staggered delays per the design). */
.lk26-sig-1 { opacity: 0; transition: opacity .5s ease .15s; }
.lk26-sig-2 { opacity: 0; transition: opacity .5s ease .4s; }
.lk26-sig-1.is-on, .lk26-sig-2.is-on { opacity: 1; }
/* The LandKey seal pops in at step >= 2. */
.lk26-seal { transform: scale(0.6) rotate(-8deg); transition: transform .7s cubic-bezier(.2,1.4,.4,1); }
.lk26-seal.is-on { transform: scale(1) rotate(0deg); }

/* ---------- FAQ accordion (single open; JS toggles is-open) ---------- */
.lk26-faq-a { display: none; }
.lk26-faq-item.is-open .lk26-faq-a { display: block; }
.lk26-faq-chev { transform: rotate(0deg); transition: transform .25s ease; }
.lk26-faq-item.is-open .lk26-faq-chev { transform: rotate(180deg); }

/* ---------- Responsive (the prototype is desktop-only; these keep the page
   usable on tablet/phone without altering desktop pixels) ---------- */
@media (max-width: 1023px) {
  .lk26-nav-links { display: none !important; }
  .lk26-how-grid, .lk26-sides-grid, .lk26-coverage-grid, .lk26-testi-grid, .lk26-faq-grid { grid-template-columns: 1fr !important; }
  .lk26-stats-grid { grid-template-columns: repeat(2, 1fr) !important; }
  .lk26-how-sticky { position: static !important; }
}
@media (max-width: 640px) {
  .lk26-pagepad { padding-left: 20px !important; padding-right: 20px !important; }
  /* #10197: see home2026.css for the full root cause — same hero + fixed
     nav overflow (gap:28px, nowrap) clipping Sign Up. Tighten the gap here
     so the full row (pill still shown) fits down to ~521px — the pill
     itself only needs to go below that; see the ≤520px block below. This
     page has no logged-in swap class in its nav (no navLoggedIn check
     here), so there's no extra logged-in variant to hide. */
  #lk26FixedNav .lk26-pagepad,
  header#top nav.lk26-pagepad {
    gap: 12px !important;
  }
  .lk26-stats-grid { grid-template-columns: 1fr 1fr !important; gap: 20px !important; }
  .lk26-hero-h1 { font-size: clamp(44px, 13vw, 64px) !important; }
  .lk26-hero-ctas { flex-direction: column; align-items: stretch; }
  .lk26-hero-ctas a { justify-content: center; }
}
@media (max-width: 520px) {
  /* #10197: hide the outline Lease Your Land pill below the width the
     ≤640 gap fix alone can't cover. The `a.` tag + nav-scoped selectors
     leave the "Talk to the LandKey team" outline button (same class,
     further down the page) untouched. */
  #lk26FixedNav a.lk26-btn-outline-w,
  header#top nav.lk26-pagepad a.lk26-btn-outline-w {
    display: none !important;
  }
}
@media (max-width: 360px) {
  /* #10197 R3: see home2026.css — the hero nav logo is a flat 42px
     (~120px wide) at every viewport; shrink it so 320px clears with real
     margin. Fixed-nav logo (34px/~97px) is left alone. */
  header#top nav.lk26-pagepad img {
    height: 36px !important;
    width: auto !important;
  }
}
