/* Ridgetop shared styles (from the Cinematic concept) */
  :root { --ease: cubic-bezier(.28,.11,.32,1); --gutter: max(22px, calc((100vw - 1260px) / 2)); }
  html { scroll-padding-top: 84px; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }
  body { letter-spacing: -.011em; }
  .h-hero { font-size: clamp(48px, 9vw, 112px); line-height: 1.02; font-weight: 600; letter-spacing: -.035em; }
  .h-xl   { font-size: clamp(40px, 6.2vw, 80px); line-height: 1.04; font-weight: 600; letter-spacing: -.03em; }
  .h-lg   { font-size: clamp(32px, 4.4vw, 56px); line-height: 1.07; font-weight: 600; letter-spacing: -.025em; }
  .h-md   { font-size: clamp(26px, 2.8vw, 40px); line-height: 1.1; font-weight: 600; letter-spacing: -.02em; }
  .lead   { font-size: clamp(19px, 1.9vw, 24px); line-height: 1.35; font-weight: 500; letter-spacing: -.012em; }
  .eyebrow { font-size: 17px; font-weight: 600; letter-spacing: -.01em; }
  .link-more::after { content: " \203A"; font-size: 1.1em; }
  .link-more:hover { text-decoration: underline; text-underline-offset: 3px; }

  .reveal { opacity: 0; transform: translateY(40px); transition: opacity 1s var(--ease), transform 1s var(--ease); }
  .reveal.in { opacity: 1; transform: none; }
  .reveal-d1 { transition-delay: .1s } .reveal-d2 { transition-delay: .2s }

  .no-bar { scrollbar-width: none; } .no-bar::-webkit-scrollbar { display: none; }
  .snap-x-m { scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); }
  .snap-x-m > * { scroll-snap-align: start; }
  .gutter-pad { padding-inline: var(--gutter); }

  .word { color: #d2d2d7; transition: color .25s linear; }
  .word.on { color: #1d1d1f; }

  .glass { background: rgba(255,255,255,.72); backdrop-filter: saturate(180%) blur(20px); -webkit-backdrop-filter: saturate(180%) blur(20px); }

  dialog::backdrop { background: rgba(0,0,0,.45); backdrop-filter: blur(6px); }
  dialog[open] { animation: pop .45s var(--ease); }
  @keyframes pop { from { opacity: 0; transform: translateY(30px) scale(.98); } }

  .tile-img { transition: transform 1.2s var(--ease); }
  .tile:hover .tile-img { transform: translateX(-50%) scale(1.04); }



  .fade-x { -webkit-mask-image: linear-gradient(to right, transparent 0%, #000 16%, #000 84%, transparent 100%); mask-image: linear-gradient(to right, transparent 0%, #000 16%, #000 84%, transparent 100%); }

  /* In-view reveal animations */
  .rv-words .w { display: inline-block; overflow: hidden; vertical-align: bottom; padding: .12em .04em .14em 0; margin: -.12em -.04em -.14em 0; }
  .rv-words .w > span { display: inline-block; transform: translateY(110%); transition: transform 1s var(--ease); transition-delay: calc(var(--i, 0) * 45ms); }
  .rv-words.in .w > span { transform: none; }
  .rv-img { clip-path: inset(100% 0 0 0); transition: clip-path 1.3s var(--ease); transition-delay: var(--d, 0s); }
  .rv-img.in { clip-path: inset(0 0 0 0); }
  .rv-line { transform: scaleX(0); transform-origin: left center; transition: transform 1.4s var(--ease) .2s; }
  .rv-line.in { transform: scaleX(1); }
  @media (prefers-reduced-motion: reduce) {
    .rv-words .w > span, .rv-img, .rv-line { transform: none !important; clip-path: none !important; transition: none !important; }
  }
  /* Glassmorphism */
  .g-light { background: linear-gradient(135deg, rgba(255,255,255,.78), rgba(255,255,255,.42)); backdrop-filter: blur(22px) saturate(170%); -webkit-backdrop-filter: blur(22px) saturate(170%); border: 1px solid rgba(255,255,255,.8); box-shadow: inset 0 1px 0 rgba(255,255,255,.95), 0 14px 44px -18px rgba(110,38,91,.25); }
  .g-dark { background: linear-gradient(135deg, rgba(255,255,255,.13), rgba(255,255,255,.04)); backdrop-filter: blur(22px) saturate(160%); -webkit-backdrop-filter: blur(22px) saturate(160%); border: 1px solid rgba(255,255,255,.15); box-shadow: inset 0 1px 0 rgba(255,255,255,.14), 0 24px 60px -24px rgba(0,0,0,.7); }
  .g-hover { transition: opacity 1s var(--ease), transform .7s var(--ease), box-shadow .5s var(--ease); }
  .g-hover:hover { transform: translateY(-4px); box-shadow: inset 0 1px 0 rgba(255,255,255,.95), 0 24px 60px -20px rgba(110,38,91,.32); }
  select option { color: #1d1d1f; background: #fff; }
  /* Expanding solutions gallery */
  .sol-panel { flex: 1 1 0; min-width: 0; min-height: 0; transition: flex-grow .7s var(--ease); }
  .sol-panel.is-active { flex-grow: 7; }
  .sol-panel .sol-body { opacity: 0; transform: translateY(16px); transition: opacity .35s ease, transform .5s var(--ease); pointer-events: none; }
  .sol-panel.is-active .sol-body { opacity: 1; transform: none; transition-delay: .25s; pointer-events: auto; }
  .sol-panel .sol-shade { opacity: .55; }
  .sol-panel.is-active .sol-shade { opacity: 1; }
  .sol-panel.is-active img { transform: scale(1.02); }
  .sol-panel:not(.is-active):hover img { transform: scale(1.06); }
  .sol-panel .sol-label { left: 22px; top: 50%; transform: translateY(-50%); font-size: 17px; }
  .sol-panel.is-active .sol-label { opacity: 0; }
  @media (min-width: 768px) {
    .sol-panel .sol-label { left: 50%; top: auto; bottom: 28px; transform: translateX(-50%) rotate(180deg); writing-mode: vertical-rl; font-size: 18px; }
  }
  .glass-dark { background: rgba(255,255,255,.16); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
  @media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; } .word { color: #1d1d1f; } }
