/* Shared corporate identity for Origine Labs and Astrotechnica */
.ol-site-header{background:#050505;color:#fff}.ol-site-header .ol-logo{color:#fff}.ol-site-header .ol-logo span{color:#f00020}.ol-site-header nav a{color:#fff}.ol-site-header nav .ol-outline{border-color:#f00020}.ol-site-header .ol-head{padding-top:20px;padding-bottom:20px}.astro-hero{padding-top:60px;padding-bottom:58px}.astro-hero>img{height:410px}.astro-intro{font-size:21px!important;color:#111827!important;line-height:1.5;margin-bottom:20px!important}.astro-split{display:grid;grid-template-columns:1.25fr 1fr;gap:80px}.astro-feature{background:#f8f9fb;padding:28px 30px;border:1px solid #e2e5ea}.astro-single{columns:1}.astro-projects{margin-top:30px}.astro-card{border:1px solid #e2e5ea;padding-bottom:22px}.astro-card img{height:205px}.astro-card h3,.astro-card p,.astro-card .astro-link,.astro-card .astro-note{margin-left:20px;margin-right:20px}.astro-card p{font-size:14px}.astro-card .astro-meta{font-size:10px;letter-spacing:1.4px;color:#e40022;margin-top:22px;margin-bottom:5px}.astro-link{color:#d9001d!important;font-weight:600;font-size:14px}.astro-note{font-size:13px;color:#6b7280}.astro-focus{margin-top:28px}.astro-panel{border-top:2px solid #f00020;padding:10px 4px}.astro-store,.astro-bottom{display:flex;justify-content:space-between;align-items:center;gap:45px}.astro-store>div,.astro-bottom>div{max-width:690px}.astro-store .ol-button,.astro-bottom .ol-outline{white-space:nowrap}.astro-bottom{padding-bottom:65px}@media(max-width:850px){.astro-split{grid-template-columns:1fr;gap:20px}.astro-hero{padding-top:35px}.astro-hero>img{height:300px}.astro-store,.astro-bottom{align-items:flex-start;flex-direction:column;gap:12px}}@media(max-width:550px){.astro-hero>img{height:230px}.astro-card img{height:190px}.ol-site-header .ol-head{padding-top:18px;padding-bottom:18px}.ol-site-header nav{gap:13px}}

/* V3 project detail pages */
.ol-project-detail{padding-top:64px;padding-bottom:72px;max-width:1050px}
.ol-project-detail h1{font-size:clamp(2.5rem,6vw,4.5rem);margin:10px 0 24px}
.ol-project-detail .project-content{padding-top:20px;padding-bottom:24px}
.ol-project-detail .project-content .container{max-width:860px;margin:0 auto}
.ol-project-detail img{max-width:100%;height:auto;display:block;margin:24px auto}
.ol-project-detail a{color:inherit;text-decoration:underline;text-underline-offset:4px}
.astro-card h3 a{color:inherit;text-decoration:none}
.astro-card h3 a:hover{text-decoration:underline;text-underline-offset:4px}
.astro-card a[href$=".html"]:not(:first-child){margin-right:12px}

/* Expertise navigation and technical service pages */
.ol-list a{color:inherit;text-decoration:none}.ol-list a:hover,.ol-grid h3 a:hover{color:#d9001d;text-decoration:underline;text-underline-offset:4px}.ol-grid h3 a{color:inherit;text-decoration:none}.ol-mini-link{display:inline-block;margin-top:8px;color:#d9001d;font-size:13px;text-decoration:none;font-weight:600}.ol-mini-link:hover{text-decoration:underline}.ol-service-page{max-width:1120px}.ol-service-page h1{font-size:clamp(2.5rem,5vw,4.4rem);line-height:1.12;margin:18px 0}.ol-service-lead{max-width:780px;font-size:20px!important;line-height:1.65!important}.ol-service-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:34px 60px;margin-top:50px}.ol-service-grid article{border-top:1px solid #d9dfe7;padding-top:20px}.ol-service-grid h2{font-size:21px;margin:0 0 12px}.ol-service-grid p{font-size:15px;line-height:1.8}.ol-service-grid a{color:#c6001a}.ol-service-contact{border-top:1px solid #d9dfe7}.ol-service-contact .ol-outline{display:inline-block;margin:16px 0}.ol-social{display:flex;gap:9px;align-items:center;justify-content:center;flex-basis:100%;margin:16px auto 8px}.ol-social a{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;background:#0b1d3b;color:white!important;text-decoration:none;font-size:14px;font-weight:800;border-radius:3px;font-family:Arial,sans-serif}.ol-social a:hover{background:#d9001d}.ol-social .social-youtube{font-size:12px}.ol-social .social-pinterest{font-family:Georgia,serif;font-style:italic;font-size:18px}.ol-social .social-facebook{font-size:18px}@media(max-width:700px){.ol-service-grid{grid-template-columns:1fr;gap:18px}.ol-service-page h1{font-size:2.6rem}}

/* V4.1 — centered footer across every page */
.ol .ol-foot.ol-foot-centered{display:flex;flex-direction:column;align-items:center;justify-content:center;flex-wrap:nowrap;gap:0;text-align:center;border-top:1px solid #d9dde3;padding:38px 20px 35px;margin-top:24px}
.ol-foot-centered .ol-logo{display:inline-block;font-size:25px;line-height:1.1;letter-spacing:-.8px;margin:0 0 11px;text-decoration:none}
.ol-foot-centered .ol-foot-tagline{font-size:13px;color:#56647a;margin:0 0 20px}
.ol-foot-centered nav{display:flex;align-items:center;justify-content:center;gap:23px;flex-wrap:wrap;margin:0 0 23px;font-size:13px}
.ol-foot-centered nav a{color:#15253d;text-decoration:none}
.ol-foot-centered nav a:hover{color:#d9001d;text-decoration:underline;text-underline-offset:4px}
.ol-foot-centered .ol-social{display:flex;flex-basis:auto;justify-content:center;align-items:center;gap:10px;margin:0 0 19px;width:auto}
.ol-foot-centered .ol-social a{width:23px;height:23px;display:inline-flex;align-items:center;justify-content:center}
.ol-foot-centered .ol-foot-copy{display:block;color:#68758a;font-size:12px;line-height:1.5}
@media(max-width:550px){.ol .ol-foot.ol-foot-centered{padding:30px 15px}.ol-foot-centered nav{gap:13px 19px}}

/* V4 footer refinement: two rows, original social network pictograms */
.ol .ol-foot.ol-foot-two-row{display:block;text-align:left;border-top:1px solid #d9dde3;padding-top:22px;padding-bottom:25px;margin-top:24px}
.ol-footer-top{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:45px}
.ol-footer-brand{font-size:20px;line-height:1.1;white-space:nowrap;color:#ed001d!important;font-weight:400;letter-spacing:-.6px;text-decoration:none}
.ol-footer-brand strong{color:#0b1d3b;font-weight:700}
.ol-footer-top nav{display:flex;justify-content:flex-end;align-items:center;flex-wrap:wrap;gap:12px 24px;font-size:13px}
.ol-footer-top nav a{color:#0b1d3b;text-decoration:none}
.ol-footer-top nav a:hover{color:#d9001d;text-decoration:underline}
.ol-footer-social{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:18px}
.ol-footer-social a{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:#0b1d3b;border-radius:2px;transition:background .15s}
.ol-footer-social a:hover{background:#d9001d}
.ol-footer-social img{width:17px;height:17px;display:block;filter:brightness(0) invert(1)}
@media(max-width:600px){.ol .ol-foot.ol-foot-two-row{padding-left:16px;padding-right:16px}.ol-footer-top{gap:12px}.ol-footer-brand{font-size:16px}.ol-footer-top nav{gap:8px 11px;font-size:11px}.ol-footer-social{margin-top:20px}}

/* Expertise keywords on consultancy page */
.ol-service-keywords { font-size: .85rem; line-height: 1.65; margin-top: .85rem; color: #52627d; }
.ol-service-keywords strong { color: #0b1d3b; font-weight: 600; }

/* OL-SH16P development page */
.wfs-subtitle{font-size:clamp(1.15rem,2vw,1.6rem);color:#455c7d;margin:-10px 0 34px}
.wfs-figure{margin:26px 0 36px}.wfs-figure img{width:100%;height:auto}
.wfs-figure figcaption,.wfs-gallery figcaption{font-size:.85rem;color:#53647a;line-height:1.6;margin-top:8px}
.wfs-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;margin:20px 0 30px}
.wfs-gallery figure{margin:0;min-width:0}.wfs-gallery img{width:100%;height:auto;border:1px solid #e1e5eb}
.wfs-notice{border-left:3px solid #c72a36;background:#f6f7f9;padding:16px 20px;line-height:1.7}
.wfs-links{line-height:2;padding-left:22px}

/* V4.1 — OL-SH16P engineering gallery and development updates */
.wfs-hero-figure { margin: 0; }
.wfs-hero-figure img { display:block; width:100%; height:auto; border:1px solid #e1e5ea; }
.wfs-hero-figure figcaption, .wfs-photo-grid figcaption { margin-top:9px; color:#53647c; font-size:0.88rem; line-height:1.5; }
.wfs-slide-wide { margin: 22px 0 30px; }
.wfs-slide-wide img { display:block; max-width:100%; height:auto; }
.wfs-photo-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px; margin:24px 0 32px; }
.wfs-photo-grid figure { margin:0; min-width:0; }
.wfs-photo-grid img { display:block; width:100%; height:200px; object-fit:cover; border:1px solid #e1e5ea; }
.wfs-photo-grid a:hover img, .wfs-hero-figure a:hover img { opacity:0.9; }
.wfs-links li { margin-bottom:17px; }
.wfs-post-desc { display:block; margin-top:4px; color:#53647c; line-height:1.55; }
@media(max-width:780px) { .wfs-photo-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; } .wfs-photo-grid img {height:170px;} }
@media(max-width:460px) { .wfs-photo-grid { grid-template-columns:1fr; } .wfs-photo-grid img {height:auto; max-height:320px;} }

/* V4.2 – C8 accessory project */
.c8-lead{font-size:1.18rem;max-width:740px;line-height:1.65}.c8-status{border-left:3px solid #db123a;background:#f7f8fa;padding:18px 22px;margin:24px 0}.c8-status strong{color:#0e1a30}.c8-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:24px 0}.c8-card{border:1px solid #e0e5ea;padding:20px;background:#fff}.c8-card h3{margin:0 0 10px}.c8-card p{margin:0 0 10px}.c8-card small{color:#58677c}.c8-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:22px 0}.c8-gallery figure{margin:0;border:1px solid #e0e5ea;background:#fafafa}.c8-gallery a{display:block}.c8-gallery img{display:block;width:100%;height:210px;object-fit:contain;background:#eceff2}.c8-gallery figcaption{padding:12px;font-size:.85rem;color:#48566b}.c8-callout{padding:18px 22px;border:1px solid #d7dce3;background:#f8f9fa}.c8-links a{display:inline-block;margin:8px 20px 8px 0}.c8-meta{color:#5b6c83}.c8-warning{border-left:3px solid #b82020;padding:12px 18px;background:#fff6f5}.ol-project-detail .c8-section{padding-top:25px;padding-bottom:25px;border-top:1px solid #e0e5ea}.ol-project-detail .c8-section p{line-height:1.7}@media(max-width:720px){.c8-grid{grid-template-columns:1fr}.c8-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.c8-gallery img{height:160px}}@media(max-width:440px){.c8-gallery{grid-template-columns:1fr}}

/* V4.3 — Heartly product case study */
.heartly-feature{margin-top:32px;padding:26px;border:1px solid #e0e4e9;border-left:3px solid #df193a;background:#fafbfc}
.heartly-feature h2{margin-top:0}.heartly-feature-img{display:block;max-width:540px;width:100%;max-height:280px;object-fit:contain;margin-top:22px;background:#f4f4f4}
.heartly-page{padding-top:50px;padding-bottom:50px}.heartly-lead{font-size:1.18rem;color:#45536b;max-width:780px}.heartly-status{padding:20px 24px;background:#f6f7f9;border-left:3px solid #d81b3b;margin:25px 0 38px}.heartly-status p{margin:8px 0 0}.heartly-section{padding:25px 0;border-top:1px solid #e2e5ea}.heartly-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:18px;margin-top:22px}.heartly-gallery figure{margin:0;border:1px solid #e0e4e9;background:#fff}.heartly-gallery img{display:block;width:100%;height:190px;object-fit:contain;background:#f6f7f8}.heartly-gallery figcaption{font-size:.8rem;color:#58657a;padding:9px 12px;overflow-wrap:anywhere}.heartly-gallery a:hover img{opacity:.88}@media(max-width:600px){.heartly-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.heartly-gallery img{height:125px}.heartly-gallery figcaption{font-size:.72rem}}

/* Release 5.00: prevent logo underline on hover; retain navigation link hover styling. */
.ol-site-header a.ol-logo,
.ol-site-header a.ol-logo:hover,
.ol-site-header a.ol-logo:focus,
.ol-site-header a.ol-logo:active,
.ol-site-header a.ol-logo *,
.ol-site-header a.ol-logo:hover * { text-decoration: none !important; }


/* Release 5.00.1 — logo must not inherit link underline or bottom border. */
.ol .ol-site-header a.ol-logo,
.ol .ol-site-header a.ol-logo:hover,
.ol .ol-site-header a.ol-logo:focus,
.ol .ol-site-header a.ol-logo:active,
.ol .ol-site-header a.ol-logo span,
.ol .ol-site-header a.ol-logo:hover span,
.ol .ol-site-header a.ol-logo:focus span {
    text-decoration: none !important;
    border-bottom: 0 !important;
    box-shadow: none !important;
    background-image: none !important;
}
.ol .ol-site-header a.ol-logo::before,
.ol .ol-site-header a.ol-logo::after,
.ol .ol-site-header a.ol-logo span::before,
.ol .ol-site-header a.ol-logo span::after {
    text-decoration: none !important;
    border-bottom: 0 !important;
    box-shadow: none !important;
}

/* Release 5.00.3 — Logo hover correction */
.ol-logo,
.ol-logo *,
.ol-logo:hover,
.ol-logo:hover * {
    text-decoration: none !important;
    border-bottom: none !important;
    box-shadow: none !important;
}


/* Release 5.00.10 — Homepage hero: photograph under text, protected by white fade. */
@media (min-width: 851px) {
  .ol .ol-hero {
    position: relative;
    display: block;
    isolation: isolate;
    min-height: 525px;
    padding-top: 48px;
    padding-bottom: 48px;
    overflow: hidden;
  }
  .ol .ol-hero > img {
    position: absolute;
    z-index: 0;
    inset: 0 0 0 auto;
    width: 76%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
    max-width: none;
    margin: 0;
  }
  /* White overlay sits ABOVE the photo and BELOW all text. */
  .ol .ol-hero::before {
    content: "";
    position: absolute;
    z-index: 1;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(to right,
      #fff 0%,
      #fff 30%,
      rgba(255,255,255,.99) 40%,
      rgba(255,255,255,.96) 48%,
      rgba(255,255,255,.83) 57%,
      rgba(255,255,255,.30) 68%,
      rgba(255,255,255,0) 80%);
  }
  .ol .ol-hero > div {
    position: relative;
    z-index: 2;
    width: 63%;
  }
  .ol .ol-hero h1 {
    max-width: 680px;
    font-size: clamp(32px, 3.65vw, 47px);
  }
  .ol .ol-hero > div > p:not(.ol-kicker) {
    max-width: 540px;
  }
}

/* Release 5.00.11 — Homepage overlapping photographic hero */
@media (min-width: 851px) {
  .ol .ol-hero.ol-hero-overlap {
    position: relative;
    isolation: isolate;
    display: flex;
    align-items: center;
    min-height: 440px;
    padding: 38px 0 44px;
    overflow: hidden;
  }
  .ol .ol-hero.ol-hero-overlap > img {
    position: absolute;
    inset: 0 0 0 auto;
    width: 82%;
    height: 100%;
    object-fit: cover;
    object-position: 53% center;
    z-index: -2;
    margin: 0;
    max-width: none;
  }
  .ol .ol-hero.ol-hero-overlap::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    pointer-events: none;
    background: linear-gradient(90deg,
      #fff 0%, #fff 17%,
      rgba(255,255,255,.99) 25%,
      rgba(255,255,255,.94) 35%,
      rgba(255,255,255,.78) 45%,
      rgba(255,255,255,.35) 55%,
      rgba(255,255,255,0) 68%);
  }
  .ol .ol-hero.ol-hero-overlap > div {
    position: relative;
    z-index: 1;
    width: 55%;
    max-width: 625px;
  }
  .ol .ol-hero.ol-hero-overlap h1 {
    font-size: clamp(32px, 3.15vw, 44px);
    line-height: 1.17;
    max-width: 620px;
  }
  .ol .ol-hero.ol-hero-overlap > div > p:not(.ol-kicker) {
    max-width: 510px;
  }
}

/* OL-SH16P: accessible hover/focus TRL definitions */
.ol .ol-trl {
  position: relative; display: inline-block; cursor: help;
  border-bottom: 1px dotted #697b91; line-height: 1.15;
  outline-offset: 3px;
}
.ol .ol-trl:hover, .ol .ol-trl:focus-visible { border-bottom-color: #ee0028; }
.ol .ol-trl-tip {
  position: absolute; left: 50%; bottom: calc(100% + 12px);
  transform: translate(-50%, 5px); width: min(310px, 80vw);
  box-sizing: border-box; padding: 14px 16px;
  background: #101b2b; color: #fff; border-radius: 4px;
  box-shadow: 0 8px 26px rgba(0,0,0,.22);
  font-size: 13px; line-height: 1.55; text-align: left;
  opacity: 0; visibility: hidden; pointer-events: none;
  transition: opacity .15s ease, transform .15s ease, visibility .15s;
  z-index: 20; white-space: normal; font-weight: 400;
}
.ol .ol-trl-tip strong, .ol .ol-trl-tip span, .ol .ol-trl-tip em { display: block; }
.ol .ol-trl-tip strong { color: #fff; margin-bottom: 7px; font-weight: 600; }
.ol .ol-trl-tip em { color: #c6d1de; margin-top: 8px; font-style: normal; font-size: 12px; }
.ol .ol-trl:hover .ol-trl-tip, .ol .ol-trl:focus .ol-trl-tip {
  opacity: 1; visibility: visible; transform: translate(-50%, 0);
}
@media (max-width: 600px) {
  .ol .ol-trl-tip { left: 0; transform: translate(0, 5px); width: min(290px, 75vw); }
  .ol .ol-trl:hover .ol-trl-tip, .ol .ol-trl:focus .ol-trl-tip { transform: translate(0, 0); }
}
