:root {
  --ink: #0c2340;
  --ink-soft: #40536b;
  --blue: #087fc2;
  --blue-deep: #086eaf;
  --green: #11945a;
  --green-soft: #6f9975;
  --red: #e53b33;
  --sky: #eaf7ff;
  --sky-strong: #d9f1ff;
  --cream: #fbfaf6;
  --cream-deep: #f4f1e8;
  --white: #ffffff;
  --border: rgba(12, 35, 64, 0.12);
  --serif: "Libre Caslon Display", Georgia, "Times New Roman", serif;
  --sans: "DM Sans", Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --shadow-sm: 0 8px 24px rgba(16, 52, 78, 0.08);
  --shadow-md: 0 18px 48px rgba(16, 52, 78, 0.14);
  --ease: cubic-bezier(.22, 1, .36, 1);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 86px; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--cream);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.6;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}
body.menu-open { overflow: hidden; }
img { display: block; width: 100%; }
a { color: inherit; text-decoration: none; }
button, a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; }
svg { width: 1.25rem; height: 1.25rem; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.svg-sprite { position: absolute; width: 0; height: 0; overflow: hidden; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; left: 1rem; top: -4rem; z-index: 1000; background: var(--ink); color: white; padding: .75rem 1rem; border-radius: 0 0 .6rem .6rem; transition: top .2s ease; }
.skip-link:focus { top: 0; }
.shell { width: min(1180px, calc(100% - 48px)); margin-inline: auto; }
.section { padding-block: clamp(4.5rem, 7vw, 7.5rem); }

.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(251, 250, 246, .92);
  backdrop-filter: blur(16px) saturate(150%);
  border-bottom: 1px solid transparent;
  transition: box-shadow .35s ease, border-color .35s ease, background .35s ease;
}
.site-header.is-scrolled { background: rgba(255,255,255,.96); border-color: var(--border); box-shadow: 0 8px 30px rgba(17, 48, 72, .08); }
.header-inner { min-height: 86px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 1.5rem; }
.brand { justify-self: start; display: flex; align-items: center; gap: .65rem; transition: transform .35s var(--ease); }
.brand:hover { transform: translateY(-2px); }
.brand img { width: 54px; height: 54px; object-fit: cover; border-radius: 50%; box-shadow: 0 5px 16px rgba(8,127,194,.13); }
.brand-copy { display: grid; line-height: .9; letter-spacing: .015em; }
.brand-copy strong { font-size: 1.22rem; font-weight: 800; color: #111; }
.brand-copy small { margin-top: .32rem; font-size: .78rem; font-weight: 800; letter-spacing: .08em; color: var(--red); }
.main-nav { display: flex; align-items: center; gap: 2.2rem; }
.nav-link { position: relative; padding-block: 1.8rem; font-family: var(--serif); font-size: 1.05rem; color: var(--ink); transition: color .25s ease; }
.nav-link::after { content: ""; position: absolute; left: 0; right: 100%; bottom: 1.25rem; height: 2px; background: var(--blue); transition: right .3s var(--ease); }
.nav-link:hover, .nav-link.is-active { color: var(--blue-deep); }
.nav-link:hover::after, .nav-link.is-active::after { right: 0; }
.button { display: inline-flex; align-items: center; justify-content: center; gap: .6rem; min-height: 48px; padding: .75rem 1.45rem; border: 1px solid transparent; border-radius: 999px; font-weight: 600; line-height: 1; transition: transform .28s var(--ease), box-shadow .28s ease, color .28s ease, background .28s ease, border-color .28s ease; }
.button:hover { transform: translateY(-3px); }
.button:active { transform: translateY(-1px) scale(.98); }
.button-call, .button-primary { color: white; background: linear-gradient(135deg, var(--green), #11864f); box-shadow: 0 10px 22px rgba(17,148,90,.19); }
.button-call:hover, .button-primary:hover { box-shadow: 0 16px 28px rgba(17,148,90,.26); }
.button-secondary { color: var(--blue-deep); background: rgba(255,255,255,.72); border-color: rgba(8,127,194,.45); }
.button-secondary:hover { color: white; background: var(--blue); border-color: var(--blue); box-shadow: 0 14px 28px rgba(8,127,194,.18); }
.header-call { justify-self: end; min-height: 44px; padding-inline: 1.35rem; }
.menu-toggle { display: none; width: 44px; height: 44px; border: 0; background: transparent; align-items: center; justify-content: center; flex-direction: column; gap: 5px; cursor: pointer; }
.menu-toggle span:not(.sr-only) { width: 24px; height: 2px; border-radius: 2px; background: var(--ink); transition: transform .25s ease, opacity .25s ease; }

.hero { position: relative; display: grid; grid-template-columns: minmax(0, 42%) minmax(0, 58%); min-height: 600px; overflow: hidden; background: radial-gradient(circle at 15% 40%, #fff 0, var(--cream) 53%, #f7f5ee 100%); }
.hero-copy { width: min(492px, calc(100% - 48px)); margin-right: clamp(1.5rem, 5vw, 5.2rem); padding: clamp(4rem, 7vw, 6.5rem) 0 3.5rem; justify-self: end; position: relative; z-index: 2; }
.eyebrow { margin: 0 0 1rem; text-transform: uppercase; letter-spacing: .25em; color: #47756a; font-size: .72rem; font-weight: 600; }
.eyebrow i { display: inline-block; width: 3px; height: 3px; margin: 0 .65rem .18rem; border-radius: 50%; background: #7ca38f; }
h1, h2 { font-family: var(--serif); font-weight: 400; letter-spacing: -.025em; }
h1 { margin: 0; max-width: 620px; font-size: clamp(4.3rem, 6.25vw, 6.4rem); line-height: .91; color: #0a1f3b; }
.hero-tagline { margin: 1.25rem 0 .6rem; font-family: var(--serif); font-size: clamp(2rem, 3vw, 3rem); line-height: 1; color: var(--green-soft); }
.hero-support { margin: 0; max-width: 33rem; font-family: var(--serif); font-size: 1.18rem; line-height: 1.45; color: #43566e; }
.hero-actions { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 2rem; }
.hero-rule, .section-rule { width: 44px; height: 1px; margin: 2.1rem 0 1.1rem; background: var(--green); }
.microcopy { margin: 0; text-transform: uppercase; letter-spacing: .26em; color: #5d867a; font-size: .68rem; font-weight: 500; }
.hero-media { position: relative; min-width: 0; overflow: hidden; }
.hero-media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(251,250,246,.25), transparent 18%, transparent 80%, rgba(251,250,246,.08)); pointer-events: none; }
.hero-media img { height: 100%; object-fit: cover; object-position: center 34%; transform: scale(1.015); transition: transform 9s var(--ease); }
.hero:hover .hero-media img { transform: scale(1.055); }
.handwritten { position: absolute; right: 5%; bottom: 9%; z-index: 2; margin: 0; color: #17314d; font-family: "Brush Script MT", cursive; font-size: clamp(1.5rem, 2.4vw, 2.4rem); line-height: .9; transform: rotate(-5deg); text-align: center; }
.handwritten span { color: var(--green); }

.quick-contact { position: relative; z-index: 5; background: linear-gradient(90deg, var(--sky), #e7f8ff 55%, #edf9ff); border-block: 1px solid rgba(8,127,194,.06); }
.quick-contact-grid { min-height: 112px; display: grid; grid-template-columns: .9fr 1.1fr 1.45fr; align-items: center; }
.quick-item { min-width: 0; display: flex; align-items: center; gap: 1rem; padding: 1rem 2rem; transition: background .3s ease, transform .3s var(--ease); }
.quick-item + .quick-item { border-left: 1px solid rgba(8,127,194,.16); }
.quick-item:hover { background: rgba(255,255,255,.5); transform: translateY(-2px); }
.quick-icon { flex: 0 0 auto; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; color: var(--blue-deep); background: rgba(255,255,255,.64); transition: transform .35s var(--ease), background .35s ease; }
.quick-item:hover .quick-icon { transform: scale(1.08) rotate(-4deg); background: white; }
.quick-icon svg { width: 1.45rem; height: 1.45rem; }
.quick-item > span:last-child { min-width: 0; display: grid; }
.quick-item strong { overflow-wrap: anywhere; color: #0b5794; font-family: var(--serif); font-size: 1.28rem; line-height: 1.1; }
.quick-item small { margin-top: .22rem; color: #3176a5; font-family: var(--serif); font-size: .95rem; line-height: 1.25; }

.welcome { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); align-items: center; gap: clamp(3rem, 7vw, 7rem); }
.welcome-media {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  aspect-ratio: 16 / 9;
  border-radius: 2px;
  background: #e7eef0;
  box-shadow: var(--shadow-sm);
}
.welcome-slide {
  position: absolute;
  inset: 0;
  z-index: 0;
  margin: 0;
  opacity: 0;
  clip-path: inset(0 0 0 10%);
  transform: translateX(2.25%) scale(1.055);
  filter: saturate(.88) brightness(.98);
  pointer-events: none;
  will-change: opacity, clip-path, transform;
  transition:
    opacity .82s ease,
    clip-path 1.05s var(--ease),
    transform 1.25s var(--ease),
    filter 1s ease;
}
.welcome-slide::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, rgba(255,255,255,.14), transparent 42%, rgba(12,35,64,.04));
  opacity: 0;
  transition: opacity 1.1s ease;
}
.welcome-slide.is-active {
  z-index: 2;
  opacity: 1;
  clip-path: inset(0);
  transform: translateX(0) scale(1);
  filter: saturate(1) brightness(1);
}
.welcome-slide.is-active::after { opacity: 1; }
.welcome-slide.is-leaving {
  z-index: 1;
  opacity: 1;
  clip-path: inset(0);
  transform: translateX(-1.5%) scale(1.025);
  filter: saturate(.92) brightness(.97);
}
.welcome-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 4.8s var(--ease);
}
.welcome-slide--exterior img { object-position: center 43%; }
.welcome-slide--laboratory img { object-position: center 55%; }
.welcome-media:hover .welcome-slide.is-active img { transform: scale(1.025); }
.welcome-copy { max-width: 520px; }
.welcome-copy h2, .section-heading h2, .trust-copy h2, .contact h2 { margin: 0; font-size: clamp(2.7rem, 4.4vw, 4.6rem); line-height: 1; }
.welcome-copy > p:not(.eyebrow):not(.microcopy), .trust-copy > p:not(.eyebrow):not(.microcopy), .contact-copy > p:not(.eyebrow) { margin: 1.2rem 0 0; color: var(--ink-soft); font-family: var(--serif); font-size: 1.16rem; line-height: 1.55; }

.services { background: linear-gradient(180deg, #f9f8f3, #f4f1e8); border-block: 1px solid rgba(70, 76, 63, .04); }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 2rem; margin-bottom: 2.6rem; }
.section-heading h2 { font-size: clamp(2.5rem, 4.1vw, 4.2rem); }
.heading-aside { min-width: 310px; padding-bottom: .5rem; }
.heading-aside span { display: block; width: 48px; height: 1px; margin-bottom: 1rem; background: var(--green); }
.heading-aside p { margin: 0; color: #608076; text-transform: uppercase; letter-spacing: .22em; font-size: .67rem; }
.service-grid { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: .65rem; }
.service-card { display: grid; justify-items: center; gap: .75rem; min-width: 0; text-align: center; }
.service-card span { display: grid; place-items: center; width: 78px; height: 78px; border-radius: 50%; color: #05747d; background: #eaf1df; border: 1px solid rgba(17,148,90,.05); transition: transform .35s var(--ease), background .35s ease, box-shadow .35s ease; }
.service-card svg { width: 2.4rem; height: 2.4rem; stroke-width: 1.7; }
.service-card span.red { color: var(--red); }
.service-card h3 { margin: 0; font-family: var(--serif); font-size: 1rem; font-weight: 400; overflow-wrap: anywhere; }
.service-card:hover span { transform: translateY(-8px) scale(1.05); background: white; box-shadow: 0 14px 26px rgba(25, 67, 77, .12); }
.service-card:hover h3 { color: var(--green); }

.trust { display: grid; grid-template-columns: 1.15fr .85fr; min-height: 500px; background: radial-gradient(circle at 90% 30%, #edf4df, #fbfaf6 52%); overflow: hidden; }
.trust-media { min-height: 500px; overflow: hidden; }
.trust-media img { height: 100%; object-fit: cover; object-position: center; transition: transform 1s var(--ease); }
.trust-media:hover img { transform: scale(1.035); }
.trust-copy { align-self: center; width: min(500px, calc(100% - 64px)); padding: 4rem 0 4rem clamp(3rem, 6vw, 7rem); }
.trust-copy h2 { font-size: clamp(3rem, 4.6vw, 4.8rem); }

.site-footer { background: #fff; }
.contact { display: grid; grid-template-columns: .9fr 1.1fr; align-items: center; gap: clamp(3rem, 7vw, 7rem); }
.contact-copy > p:not(.eyebrow) { margin-top: .6rem; }
.contact-card { display: grid; gap: 1.1rem; margin-top: 1.7rem; padding: 1.4rem; font-style: normal; background: #f6f7f4; border: 1px solid rgba(75,106,93,.06); border-radius: 8px; }
.contact-card a { display: flex; align-items: center; gap: 1rem; color: var(--ink); font-family: var(--serif); line-height: 1.45; transition: color .25s ease, transform .25s var(--ease); }
.contact-card a:hover { color: var(--green); transform: translateX(4px); }
.contact-icon { flex: 0 0 auto; display: grid; place-items: center; width: 42px; height: 42px; color: var(--green); background: #e8f1dd; border-radius: 50%; }
.map-card { position: relative; overflow: hidden; min-height: 390px; border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow-sm); background: #edf3f5; }
.map-card iframe { width: 100%; height: 390px; border: 0; filter: saturate(.78) contrast(.95); }
.map-button { position: absolute; right: 1rem; bottom: 1rem; display: inline-flex; align-items: center; gap: .5rem; padding: .75rem 1rem; color: white; background: var(--blue); border-radius: 999px; font-size: .9rem; font-weight: 600; box-shadow: 0 10px 24px rgba(8,127,194,.25); transition: transform .25s var(--ease), box-shadow .25s ease; }
.map-button:hover { transform: translateY(-3px); box-shadow: 0 15px 30px rgba(8,127,194,.32); }
.footer-main { display: grid; grid-template-columns: 1fr 1.4fr .6fr; align-items: center; gap: 2rem; padding-block: 2rem; border-top: 1px solid var(--border); }
.footer-brand { padding-right: 2rem; border-right: 1px solid rgba(12,35,64,.2); }
.footer-address { margin: 0; font-family: var(--serif); font-size: .95rem; line-height: 1.45; }
.footer-tagline { margin: 0; padding-left: 2rem; border-left: 1px solid rgba(12,35,64,.2); color: #78987f; font-family: var(--serif); font-style: italic; font-size: 1.05rem; line-height: 1.25; }
.footer-bottom { background: linear-gradient(90deg, #f2f6f5, #f9f8f3); }
.footer-bottom .shell { min-height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.footer-bottom p { margin: 0; color: #68788b; font-family: var(--serif); font-size: .8rem; }
.leaf { color: var(--green); }
.mobile-call { display: none; }

.reveal { opacity: 0; transform: translateY(28px); transition: opacity .75s var(--ease), transform .75s var(--ease); }
.reveal.reveal-delay { transition-delay: .12s; }
.reveal.is-visible { opacity: 1; transform: none; }
.service-card:nth-child(2) { transition-delay: .04s; }
.service-card:nth-child(3) { transition-delay: .08s; }
.service-card:nth-child(4) { transition-delay: .12s; }
.service-card:nth-child(5) { transition-delay: .16s; }
.service-card:nth-child(6) { transition-delay: .2s; }
.service-card:nth-child(7) { transition-delay: .24s; }
.service-card:nth-child(8) { transition-delay: .28s; }
.service-card:nth-child(9) { transition-delay: .32s; }
.service-card:nth-child(10) { transition-delay: .36s; }

:focus-visible { outline: 3px solid rgba(8,127,194,.42); outline-offset: 4px; }

@media (max-width: 1100px) {
  .hero { grid-template-columns: 47% 53%; min-height: 560px; }
  .hero-copy { margin-right: 2rem; }
  h1 { font-size: clamp(3.8rem, 6.7vw, 5.4rem); }
  .quick-item { padding-inline: 1rem; }
  .service-grid { grid-template-columns: repeat(5, 1fr); row-gap: 2rem; }
  .trust-copy { padding-left: 3.5rem; }
}

@media (max-width: 860px) {
  html { scroll-padding-top: 74px; }
  .shell { width: min(100% - 32px, 720px); }
  .section { padding-block: 4rem; }
  .header-inner { min-height: 74px; grid-template-columns: 1fr auto auto; }
  .brand img { width: 46px; height: 46px; }
  .brand-copy strong { font-size: 1rem; }
  .brand-copy small { font-size: .66rem; }
  .menu-toggle { display: flex; z-index: 2; }
  .menu-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .menu-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .main-nav { position: fixed; inset: 74px 0 auto 0; display: grid; gap: 0; padding: 1.25rem 16px 1.5rem; background: rgba(255,255,255,.98); border-top: 1px solid var(--border); box-shadow: var(--shadow-md); opacity: 0; visibility: hidden; transform: translateY(-12px); transition: opacity .25s ease, transform .25s var(--ease), visibility .25s ease; }
  .main-nav.is-open { opacity: 1; visibility: visible; transform: none; }
  .nav-link { padding: .9rem 1rem; border-radius: 8px; font-size: 1.15rem; }
  .nav-link::after { display: none; }
  .nav-link:hover, .nav-link.is-active { background: var(--sky); }
  .header-call { padding-inline: 1rem; }
  .hero { grid-template-columns: 1fr; min-height: 0; }
  .hero-copy { grid-row: 1; width: min(100% - 32px, 720px); margin: auto; padding: 4.3rem 0 3.5rem; }
  h1 { font-size: clamp(4rem, 11vw, 6.5rem); }
  .hero-media { grid-row: 2; height: min(68vw, 540px); }
  .quick-contact-grid { grid-template-columns: 1fr; padding-block: .6rem; }
  .quick-item { padding: .9rem .7rem; }
  .quick-item + .quick-item { border-left: 0; border-top: 1px solid rgba(8,127,194,.14); }
  .welcome, .contact { grid-template-columns: 1fr; gap: 2.4rem; }
  .welcome-copy { max-width: none; }
  .section-heading { align-items: flex-start; flex-direction: column; }
  .heading-aside { min-width: 0; }
  .trust { grid-template-columns: 1fr; }
  .trust-media { min-height: 430px; }
  .trust-copy { width: min(100% - 32px, 720px); margin-inline: auto; padding: 3.8rem 0; }
  .contact-copy { order: 1; }
  .map-card { order: 2; }
  .footer-main { grid-template-columns: 1fr; text-align: center; }
  .footer-brand { justify-self: center; padding: 0; border: 0; }
  .footer-tagline { padding: 1.3rem 0 0; border-left: 0; border-top: 1px solid var(--border); }
}

@media (max-width: 600px) {
  body { padding-bottom: 70px; }
  .shell { width: min(100% - 28px, 560px); }
  .header-call { display: none; }
  .header-inner { grid-template-columns: 1fr auto; }
  .hero-copy { width: min(100% - 28px, 560px); padding-top: 3.4rem; }
  h1 { font-size: clamp(3.65rem, 18vw, 5.1rem); }
  .hero-tagline { font-size: clamp(2rem, 9vw, 2.6rem); }
  .hero-support { font-size: 1.07rem; }
  .desktop-break { display: none; }
  .hero-actions { align-items: stretch; }
  .hero-actions .button { flex: 1 1 145px; padding-inline: 1rem; }
  .hero-media { height: 78vw; min-height: 350px; max-height: 470px; }
  .handwritten { font-size: 1.5rem; right: 4%; bottom: 7%; }
  .quick-icon { width: 48px; height: 48px; }
  .quick-item { gap: .8rem; }
  .quick-item strong { font-size: 1.12rem; }
  .quick-item small { font-size: .85rem; }
  .welcome-copy h2, .section-heading h2, .trust-copy h2, .contact h2 { font-size: clamp(2.6rem, 12vw, 3.7rem); }
  .welcome { gap: 2rem; }
  .welcome-copy { text-align: left; }
  .section-heading { margin-bottom: 2rem; }
  .service-grid { grid-template-columns: repeat(2, 1fr); gap: 1.5rem 1rem; }
  .service-card span { width: 72px; height: 72px; }
  .service-card h3 { font-size: 1.03rem; }
  .trust-media { min-height: 350px; }
  .contact-card { padding: 1rem; }
  .contact-card a { align-items: flex-start; font-size: .92rem; }
  .contact-icon { width: 38px; height: 38px; }
  .map-card, .map-card iframe { min-height: 330px; height: 330px; }
  .footer-bottom .shell { min-height: 84px; flex-direction: column; justify-content: center; text-align: center; }
  .mobile-call { position: fixed; z-index: 90; left: 50%; bottom: 12px; display: inline-flex; align-items: center; justify-content: center; gap: .55rem; min-width: 160px; min-height: 50px; padding: .8rem 1.3rem; color: white; background: linear-gradient(135deg, var(--green), #11864f); border: 1px solid rgba(255,255,255,.5); border-radius: 999px; box-shadow: 0 14px 36px rgba(17,70,48,.3); transform: translateX(-50%); font-weight: 700; transition: transform .25s var(--ease); }
  .mobile-call:active { transform: translateX(-50%) scale(.96); }
}

@media (max-width: 360px) {
  .brand-copy { display: none; }
  h1 { font-size: 3.35rem; }
  .hero-actions { display: grid; }
  .service-grid { grid-template-columns: 1fr 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .reveal { opacity: 1; transform: none; }
  .welcome-slide { clip-path: inset(0); transform: none; }
}
