/* Neogenic — complete-product families (13 September 2026).
   Loads after the family stylesheets a page already uses.
     oc-*          brand optical compositions (src/pages/optical.mjs)
     pl-*          ruled rows on the About measure (Trust Center) and the
                   Pricing closing
     ov-journey, ab-principles, Home story/twin additions, link lines and
     the redirect page */

/* ======================================================================
   Optical compositions: a concept field, a soft shade, an optional static
   orb glow and a few words. Parents set the size.
   ====================================================================== */
.oc { position: absolute; inset: 0; overflow: hidden; display: flex; align-items: flex-end; padding: 40px; background: #101614; color: #FAFAFA; }
.oc__field { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.oc__shade { position: absolute; inset: 0; background: linear-gradient(200deg, rgba(13, 16, 14, 0) 30%, rgba(13, 16, 14, 0.5) 100%); }
.oc__orb { position: absolute; top: 14%; right: 12%; width: 34%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 36% 32%, rgba(191, 227, 214, 0.85) 0%, rgba(47, 111, 99, 0.5) 48%, rgba(18, 22, 20, 0) 72%); opacity: 0.8; pointer-events: none; }
.oc--mark { align-items: center; justify-content: center; }
.oc--mark .oc__orb { top: 50%; left: 50%; right: auto; width: min(46%, 280px); transform: translate(-50%, -50%); }
.oc__words { position: relative; z-index: 1; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 18px; min-width: 0; max-width: 100%; margin: 0; padding: 0; list-style: none; }
.oc__word { min-width: 0; font-weight: 300; font-size: 30px; line-height: 1.15; letter-spacing: -0.04em; overflow-wrap: anywhere; }
.oc--stack .oc__words, .oc--sequence .oc__words { flex-direction: column; align-items: flex-start; gap: 4px; }
.oc--ribbon .oc__word:not(:last-child)::after { content: "·"; margin-left: 18px; color: rgba(250, 250, 250, 0.5); }
.oc__arrow { display: inline-block; margin-right: 12px; color: rgba(250, 250, 250, 0.55); }

.bw-card__stage .oc__word { font-size: 26px; }
.sol-reason__media .oc { padding: 20px; }

/* ======================================================================
   Shared link lines
   ====================================================================== */
.be-outcome__links, .bs-benefit__links, .sol-outcome__links, .twin__links { margin-top: 16px; font-size: 14px; line-height: 21px; }
.be-outcome__links a, .bs-benefit__links a, .sol-outcome__links a, .twin__links a { text-decoration: underline; text-underline-offset: 3px; }
.be-outcome__links { color: var(--ink); }
.bs-benefit__links, .sol-outcome__links, .twin__links { color: rgba(250, 250, 250, 0.86); }
.twin__links { margin-top: 12px; font-size: 13px; }

/* ======================================================================
   Home: story rail compositions and the platform actions
   ====================================================================== */
.story__optical { position: absolute; inset: 0; }
.story__media--care { object-position: 62% 40%; }
.story__native--flows .nx-browse { grid-template-columns: 1fr; }
.platform__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 12px 24px; }
.platform__link { font-size: 16px; color: var(--on-dark); text-decoration: underline; text-underline-offset: 3px; }

/* ======================================================================
   Overview: the five-step journey
   ====================================================================== */
.ov-journey .ov-benefits__title { margin-bottom: 60px; }
.ov-journey__grid { grid-template-columns: repeat(5, minmax(0, 1fr)); margin: 0; padding: 0; list-style: none; }
.ov-journey__index { margin-right: 6px; font-size: 14px; letter-spacing: 0.04em; color: rgba(255, 255, 255, 0.5); }
.ov-rows__art { position: relative; }

/* ======================================================================
   About: the principles list
   ====================================================================== */
.ab-principles { display: flex; flex-direction: column; margin: 0; padding: 0; list-style: none; }
.ab-principles__item { padding: 16px 0; border-top: 1px solid rgba(18, 22, 20, 0.1); font-size: 17px; line-height: 21.76px; letter-spacing: -0.51px; }
.ab-principles__item:first-child { padding-top: 0; border-top: 0; }
.ab-principles__lead { font-weight: 500; }

/* ======================================================================
   Ruled rows on the About measure (Trust Center) and the Pricing closing.
   ====================================================================== */
.pl-ledger { padding: 120px; background: #FFFFFF; color: var(--ink); }
.pl-ledger__rows { margin: 0; padding: 0; list-style: none; }
.pl-row { display: grid; grid-template-columns: 570px 570px; column-gap: 60px; justify-content: space-between; align-items: start; padding: 60px 0; border-top: 1px solid rgba(18, 22, 20, 0.1); }
.pl-row:first-child { padding-top: 0; border-top: 0; }
.pl-row:last-child { padding-bottom: 0; }
.pl-row__head, .pl-row__body { min-width: 0; }
.pl-row__index { margin-bottom: 16px; font-size: 14px; letter-spacing: 0.08em; color: var(--ink-soft); }
.pl-row__title { padding-bottom: 3px; font-weight: var(--display-weight); font-size: 48px; line-height: 50.4px; letter-spacing: -1.92px; overflow-wrap: anywhere; }
.pl-row__body { padding-top: 37px; }
.pl-row__text { font-size: 20px; line-height: 28px; letter-spacing: -0.4px; color: #393939; }
.pl-closing { min-height: 640px; }

/* ======================================================================
   Home solution tabs: candid crops and the optical Performance panel
   ====================================================================== */
.panel__media--followup { object-position: 50% 30%; }
.panel__media--enquiry { object-position: 50% 45%; }
.panel__optical { position: absolute; inset: 0; }

/* ======================================================================
   Contact: the Book a call invitation on the dark photographic pane,
   above the secondary email enquiry form
   ====================================================================== */
.inq__book { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
.inq__book .inq__book-cta { background: var(--on-dark); color: var(--ink); }
.inq__book-note { min-width: 0; font-size: 15px; line-height: 22px; color: rgba(255, 255, 255, 0.82); }

/* ======================================================================
   Redirect page
   ====================================================================== */
.redirect { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 32px; padding: 60px 24px; text-align: center; background: #FFFFFF; color: var(--ink); }
.redirect__logo { height: 25px; width: auto; }
.redirect__title { max-width: 720px; font-weight: 300; font-size: 40px; line-height: 44px; letter-spacing: -1.6px; }
.redirect .pill--fill { background: var(--ink); color: var(--on-dark); }

/* ======================================================================
   Responsive
   ====================================================================== */
@media (max-width: 1439px) {
  .pl-ledger { padding: 120px 60px; }
  .pl-row { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); column-gap: 40px; }
}
@media (max-width: 1199px) {
  .ov-journey__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .oc { padding: 24px; }
  .oc__word, .bw-card__stage .oc__word { font-size: 22px; }

  .ov-journey__grid { grid-template-columns: 1fr; }

  .pl-ledger { padding: 84px 24px; }
  .pl-row { grid-template-columns: minmax(0, 1fr); row-gap: 20px; padding: 40px 0; }
  .pl-row__title { font-size: 34px; line-height: 39.1px; letter-spacing: -1.7px; }
  .pl-row__body { padding-top: 0; }
  .pl-row__text { font-size: 17px; line-height: 21.76px; letter-spacing: -0.51px; }
  .pl-closing { min-height: 640px; }

  .redirect__title { font-size: 30px; line-height: 34px; letter-spacing: -1.2px; }
}
