:root { color-scheme:light; --brand:#123b46; --action:#197278; --accent:#2a9d8f; --ink:#243238; --muted:#56686b; --ground:#f4f7f6; --surface:#fff; --line:#d5dfdd; --focus:#123b46; --radius:6px; --shadow:0 6px 20px rgb(18 59 70 / 10%); --shadow-hover:0 10px 24px rgb(18 59 70 / 16%); }
* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body { margin:0; min-width:320px; background:var(--surface); color:var(--ink); font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; font-size:1rem; line-height:1.55; }
img { max-width:100%; }
a { color:var(--action); text-underline-offset:3px; }
a:hover { color:var(--brand); }
a:focus-visible, button:focus-visible, summary:focus-visible { outline:3px solid var(--focus); outline-offset:3px; }
button, summary, .button { min-height:44px; }
.icon { width:1.25rem; height:1.25rem; flex:0 0 auto; }
.site-shell { width:min(100% - 2rem, 70rem); margin-inline:auto; }
.site-header { position:relative; z-index:5; border-bottom:1px solid var(--line); background:var(--surface); }
.site-header .site-shell { display:flex; align-items:center; justify-content:space-between; gap:1rem; min-height:4.5rem; }
.site-brand { display:inline-flex; align-items:center; gap:.5rem; color:var(--brand); font-size:1.0625rem; font-weight:750; text-decoration:none; }
.site-brand__mark { width:2.25rem; height:2.25rem; object-fit:contain; }
.desktop-nav { display:none; }
.mobile-nav { display:block; position:relative; flex:0 0 auto; }
.mobile-nav__toggle { display:grid; place-items:center; min-width:44px; padding-inline:.5rem; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--brand); cursor:pointer; font:inherit; font-weight:700; }
.mobile-nav nav { position:absolute; top:calc(100% + .5rem); right:0; display:grid; width:min(19rem, calc(100vw - 2rem)); padding:.5rem; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); }
.mobile-nav nav[hidden] { display:none; }
.mobile-nav nav a { display:flex; align-items:center; min-height:44px; padding:.5rem .75rem; text-decoration:none; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:.5rem; padding:.65rem 1rem; border:1px solid transparent; border-radius:var(--radius); font:inherit; font-weight:700; line-height:1.2; text-align:center; text-decoration:none; transition:background-color .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease, transform .18s ease; }
.button--primary { background:var(--action); color:#fff; }
.button--primary:hover { background:var(--brand); color:#fff; box-shadow:0 3px 10px rgb(18 59 70 / 18%); transform:translateY(-1px); }
.button--secondary { border-color:var(--action); background:var(--surface); color:var(--action); }
.button--secondary:hover { border-color:var(--brand); background:var(--ground); }
.page-hero { padding:3.5rem 0; background:var(--ground); }
.page-hero h1, .home-hero h1 { max-width:18ch; margin:0; color:var(--brand); font-size:2.25rem; line-height:1.08; }
.page-hero p, .home-hero p { max-width:58ch; margin:1rem 0 0; font-size:1.125rem; }
.page-hero .button { margin-top:1.25rem; }
.home-hero { position:relative; isolation:isolate; min-height:35rem; overflow:hidden; background:var(--brand); border-bottom:1px solid var(--line); }
.home-hero::before { position:absolute; z-index:-1; inset:0; content:""; background:linear-gradient(180deg, rgb(18 59 70 / 95%) 0%, rgb(18 59 70 / 82%) 58%, rgb(18 59 70 / 42%) 100%); }
.home-hero__background { position:absolute; z-index:-2; inset:0; display:block; width:100%; height:100%; object-fit:cover; object-position:68% center; }
.home-hero__grid { position:relative; display:grid; min-height:35rem; align-content:center; gap:2rem; padding-block:4.5rem; }
.home-hero__eyebrow { display:block; margin-bottom:.75rem; color:rgb(255 255 255 / 82%); font-size:.8125rem; font-weight:750; letter-spacing:.06em; text-transform:uppercase; }
.home-hero h1 { max-width:13ch; color:#fff; }
.home-hero p { max-width:48ch; color:rgb(255 255 255 / 92%); }
.home-hero__actions { display:flex; flex-wrap:wrap; align-items:center; gap:1rem; margin-top:1.5rem; }
.home-hero__actions .button { width:100%; }
.home-hero__services-link { display:inline-flex; align-items:center; gap:.4rem; min-height:44px; color:#fff; font-weight:700; text-decoration:none; }
.home-hero__services-link .icon { width:1rem; height:1rem; }
.home-hero .button--primary:hover { border-color:#2a9d8f; background:#155f64; color:#fff; }
.home-hero .button--primary:focus-visible { outline-color:#fff; box-shadow:0 0 0 3px rgb(42 157 143 / 72%); }
.home-hero .button--primary:active { background:#155f64; color:#fff; }
.home-hero__services-link:hover, .home-hero__services-link:active { color:#fff; text-decoration:underline; text-underline-offset:4px; }
.home-hero__services-link:focus-visible { outline-color:#fff; color:#fff; text-decoration:underline; text-underline-offset:4px; }
.section { padding:3.5rem 0; }
.section--muted { background:var(--ground); }
.section--needs { background:var(--surface); }
.section h2 { margin:0 0 1rem; color:var(--brand); font-size:1.75rem; line-height:1.2; }
.section-kicker { display:block; margin-bottom:.5rem; color:inherit; font-size:.875rem; font-weight:750; letter-spacing:.04em; text-transform:uppercase; }
.card-grid { display:grid; gap:1rem; }
.service-card { height:100%; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:0 1px 0 rgb(18 59 70 / 3%); transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.service-card:hover { border-color:var(--accent); box-shadow:var(--shadow-hover); transform:translateY(-2px); }
.service-card__link { display:grid; align-content:start; gap:.75rem; height:100%; padding:1.25rem; color:inherit; text-decoration:none; }
.service-card__topline { display:flex; align-items:center; justify-content:space-between; gap:1rem; color:var(--action); }
.service-card__icon { display:grid; width:2.5rem; height:2.5rem; place-items:center; background:#e4f0ee; color:var(--action); }
.service-card h3, .service-card p { margin:0; }
.service-card h3 { color:var(--brand); font-size:1.125rem; }
.service-card__action, .need-card__action, .text-link { display:inline-flex; align-items:center; gap:.35rem; color:var(--action); font-weight:700; text-decoration:none; }
.service-card__action { margin-top:auto; padding-top:.25rem; }
.service-card__action .icon, .need-card__action .icon, .text-link .icon { width:1rem; height:1rem; }
.needs-grid { display:grid; gap:.75rem; }
.need-card { display:flex; align-items:center; gap:.875rem; min-height:5.5rem; padding:1rem; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); color:var(--ink); text-decoration:none; transition:border-color .18s ease, box-shadow .18s ease, transform .18s ease; }
.need-card:hover { border-color:var(--accent); box-shadow:var(--shadow); transform:translateY(-1px); }
.need-card__icon { display:grid; width:2.5rem; height:2.5rem; place-items:center; background:#e4f0ee; color:var(--action); }
.need-card__content { display:grid; gap:.25rem; min-width:0; }
.need-card__title { color:var(--brand); font-weight:750; }
.need-card__action { font-size:.9375rem; }
.section--orientation { background:var(--brand); color:#fff; }
.section--orientation h2 { color:#fff; }
.orientation-panel { display:grid; gap:1.25rem; align-items:center; }
.orientation-panel p { max-width:54ch; margin:0; }
.pillar-grid { display:grid; gap:1rem; }
.pillar { padding:1.25rem 0 0; border-top:3px solid var(--accent); }
.pillar h3 { margin:.5rem 0; color:var(--brand); font-size:1.125rem; }
.pillar p { margin:0; }
.client-logo-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:1px; overflow:hidden; border:1px solid var(--line); background:var(--line); }
.client-logo { display:grid; min-height:6rem; place-items:center; margin:0; padding:1rem; background:var(--surface); }
.client-logo img { display:block; max-width:100%; max-height:3.75rem; width:auto; height:auto; object-fit:contain; }
.testimonials__subtitle { margin:2rem 0 1rem; color:var(--brand); font-size:1.25rem; }
.testimonial-grid { display:grid; grid-auto-columns:minmax(16rem, 84%); grid-auto-flow:column; gap:1rem; overflow-x:auto; padding-bottom:.5rem; scroll-snap-type:x mandatory; }
.testimonial-card { display:grid; grid-template-columns:auto 1fr; gap:.75rem; min-height:100%; padding:1.25rem; border:1px solid var(--line); border-top:3px solid var(--action); border-radius:var(--radius); background:var(--surface); scroll-snap-align:start; }
.testimonial-card__quote-mark { color:var(--action); font-family:Georgia,serif; font-size:2.5rem; line-height:.9; }
.testimonial-card blockquote { display:grid; align-content:space-between; gap:1rem; margin:0; }
.testimonial-card blockquote p { margin:0; }
.testimonial-card cite { color:var(--brand); font-style:normal; font-weight:700; }
.about-panel { display:grid; gap:1.5rem; align-items:center; }
.about-panel__content p { max-width:55ch; margin:0 0 1rem; }
.about-panel img { display:block; width:100%; height:auto; aspect-ratio:3 / 2; object-fit:cover; border-bottom:5px solid var(--accent); }
.faq-list { display:grid; gap:.75rem; }
.faq-list details { border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.faq-list summary { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.875rem 1rem; color:var(--brand); cursor:pointer; font-weight:700; list-style:none; }
.faq-list summary::-webkit-details-marker { display:none; }
.faq-list summary::after { flex:0 0 auto; color:var(--action); content:"+"; font-size:1.5rem; font-weight:400; line-height:1; }
.faq-list details[open] summary::after { content:"−"; }
.faq-list p { margin:0; padding:0 1rem 1rem; }
.section--contact { background:var(--surface); }
.contact-panel__heading { max-width:60ch; }
.contact-panel__heading p { margin:0 0 1.5rem; }
.contact-details { display:grid; gap:.75rem; }
.contact-detail { display:grid; grid-template-columns:auto 1fr; gap:.875rem; padding:1rem; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.contact-detail__icon { display:grid; width:2.25rem; height:2.25rem; place-items:center; background:#e4f0ee; color:var(--action); }
.contact-detail h3, .contact-detail p, .contact-detail address { margin:0; }
.contact-detail h3 { margin-bottom:.2rem; color:var(--brand); font-size:1rem; }
.contact-detail address { font-style:normal; }
.contact-panel__actions { display:flex; flex-wrap:wrap; align-items:center; gap:1rem; margin-top:1.5rem; }
.map-loader { display:grid; min-height:12rem; place-items:center; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.map-loader iframe { width:100%; min-height:20rem; border:0; border-radius:var(--radius); }
.privacy-copy { max-width:48rem; }
.privacy-copy h2 { margin-top:2rem; color:var(--brand); }
.consent-banner { position:fixed; z-index:20; right:0; bottom:0; left:0; padding:1rem 0; border-top:1px solid var(--line); background:var(--surface); box-shadow:0 -3px 12px rgb(18 59 70 / 10%); }
.consent-banner__content { display:grid; gap:1rem; }
.consent-banner h2, .consent-banner p { margin:0; }
.consent-banner h2 { color:var(--brand); font-size:1.125rem; }
.consent-banner__actions { display:flex; flex-wrap:wrap; gap:.5rem; }
.trust-list { display:grid; gap:.75rem; margin:0; padding:0; list-style:none; }
.check-list { display:grid; gap:.6rem; max-width:65ch; margin:0; padding:0; list-style:none; }
.check-list li { position:relative; padding-left:1.5rem; }
.check-list li::before { position:absolute; left:0; color:var(--action); content:"•"; font-weight:800; }
.site-footer { margin-top:0; padding:2.5rem 0 1rem; background:var(--brand); color:#fff; }
.site-footer p { margin:.25rem 0; }
.site-footer a { color:#fff; }
.site-footer a:hover { color:#d9f2ee; }
.footer-grid { display:grid; gap:2rem; }
.footer-brand { display:flex; align-items:center; gap:.5rem; margin:0 0 .75rem; font-size:1.125rem; font-weight:750; }
.footer-brand img { width:2.5rem; height:2.5rem; object-fit:contain; }
.footer-intro p:not(.footer-brand) { max-width:31ch; }
.footer-nav, .footer-contact { display:grid; align-content:start; gap:.45rem; }
.footer-nav h2, .footer-contact h2 { margin:0 0 .25rem; color:#fff; font-size:1rem; }
.footer-nav a { text-decoration:none; }
.footer-legal { margin-top:2rem; padding-top:1rem; border-top:1px solid rgb(255 255 255 / 25%); font-size:.875rem; }
.skip-link { position:absolute; top:-5rem; left:1rem; z-index:10; padding:.75rem 1rem; background:var(--surface); color:var(--brand); }
.skip-link:focus { top:1rem; }
@media (min-width: 42rem) { .needs-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } .contact-details { grid-template-columns:repeat(2, minmax(0,1fr)); } .client-logo-grid { grid-template-columns:repeat(4, minmax(0,1fr)); } .testimonial-grid { grid-auto-flow:row; grid-template-columns:repeat(2, minmax(0,1fr)); overflow:visible; padding-bottom:0; } .footer-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (min-width: 56rem) { .site-shell { width:min(100% - 3rem, 70rem); } .mobile-nav { display:none; } .desktop-nav { display:flex; align-items:center; gap:.25rem; } .desktop-nav > a, .service-menu > summary { display:flex; align-items:center; min-height:44px; padding:.5rem .75rem; color:var(--brand); cursor:pointer; font-weight:650; list-style:none; text-decoration:none; } .service-menu { position:relative; } .service-menu > summary::-webkit-details-marker { display:none; } .service-menu__panel { position:absolute; top:calc(100% + .25rem); left:0; display:grid; width:16rem; padding:.5rem; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); box-shadow:var(--shadow); } .service-menu__panel a { padding:.65rem .75rem; text-decoration:none; } .desktop-nav .button { margin-left:.5rem; color:#fff; } .page-hero h1, .home-hero h1 { font-size:3.5rem; } .home-hero { padding:5.5rem 0 5rem; } .home-hero__grid { grid-template-columns:minmax(0,.8fr) minmax(24rem,1fr); gap:4rem; } .home-hero__actions .button { width:auto; } .home-hero__media, .hero-media { min-height:27rem; } .section { padding:5rem 0; } .section h2 { font-size:2.25rem; } .card-grid--services { grid-template-columns:repeat(4, minmax(0,1fr)); } .card-grid:not(.card-grid--services) { grid-template-columns:repeat(2, minmax(0,1fr)); } .needs-grid { grid-template-columns:repeat(3, minmax(0,1fr)); } .orientation-panel { grid-template-columns:1fr auto; gap:3rem; } .pillar-grid { grid-template-columns:repeat(3, minmax(0,1fr)); gap:2rem; } .client-logo-grid { grid-template-columns:repeat(8, minmax(0,1fr)); } .client-logo { min-height:7rem; } .testimonial-grid { grid-auto-flow:row; grid-template-columns:repeat(2, minmax(0,1fr)); overflow:visible; padding-bottom:0; } .about-panel { grid-template-columns:minmax(0,1fr) minmax(20rem,.9fr); gap:3rem; } .consent-banner__content { grid-template-columns:1fr auto; align-items:center; } .footer-grid { grid-template-columns:1.25fr .75fr .9fr 1.25fr; gap:1.5rem; } }
@media (min-width:56rem) { .home-hero { min-height:40rem; padding:0; } .home-hero::before { background:linear-gradient(90deg, rgb(18 59 70 / 96%) 0%, rgb(18 59 70 / 90%) 34%, rgb(18 59 70 / 60%) 57%, rgb(18 59 70 / 14%) 100%); } .home-hero__grid { grid-template-columns:minmax(0,35rem); min-height:40rem; gap:0; padding-block:6rem; } }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; } .button, .service-card, .need-card { transition:none; } }

/* Shared interior-page language: hierarchy and composition instead of alternating bands. */
.page-hero { border-bottom:1px solid var(--line); background:var(--surface); }
.page-hero h1 { font-size:2.25rem; }
.page-eyebrow { display:block; margin-bottom:.65rem; color:var(--action); font-size:.8125rem; font-weight:750; letter-spacing:.06em; text-transform:uppercase; }
.interior-hero { padding:3.5rem 0; border-bottom:1px solid var(--line); background:var(--surface); }
.interior-hero__grid { display:grid; gap:1.5rem; align-items:center; }
.interior-hero h1 { max-width:18ch; margin:0; color:var(--brand); font-size:2.35rem; line-height:1.08; }
.interior-hero p { max-width:58ch; margin:1rem 0 0; font-size:1.125rem; }
.interior-hero .button { margin-top:1.25rem; }
.hero-graphic { display:grid; min-height:12rem; place-items:center; overflow:hidden; border:1px solid var(--line); background:var(--ground); color:var(--action); }
.interior-hero--category .hero-graphic, .interior-hero--contact .hero-graphic { border-radius:var(--radius); }
.hero-graphic__image { display:block; width:100%; height:100%; min-height:inherit; object-fit:cover; }
.hero-graphic__icon { width:5rem; height:5rem; }
.about-hero__image { display:block; width:100%; height:auto; aspect-ratio:3 / 2; object-fit:cover; border-bottom:5px solid var(--accent); }
.interior-section { background:var(--surface); }
.section--soft { background:var(--ground); }
.section-heading { max-width:47rem; margin-bottom:1.5rem; }
.section-heading h2 { margin-bottom:.5rem; }
.section-heading p { margin:.5rem 0 0; }
.diagnostic-grid { display:grid; gap:.75rem; }
.diagnostic-item { display:grid; grid-template-columns:auto 1fr; gap:.75rem; align-items:start; min-height:5.25rem; padding:1rem; border:1px solid var(--line); border-radius:var(--radius); background:var(--surface); }
.diagnostic-item__icon { display:grid; width:1.75rem; height:1.75rem; place-items:center; background:#e4f0ee; color:var(--action); }
.diagnostic-item__icon .icon { width:1rem; height:1rem; }
.diagnostic-item p { margin:0; color:var(--brand); font-weight:700; }
.editorial-list { display:grid; margin:0; padding:0; border-top:1px solid var(--line); list-style:none; }
.editorial-list li { display:grid; grid-template-columns:auto 1fr; gap:.75rem; align-items:center; min-height:4.75rem; border-bottom:1px solid var(--line); }
.editorial-list__icon { display:grid; width:1.5rem; height:1.5rem; place-items:center; color:var(--action); }
.editorial-list__icon .icon { width:1rem; height:1rem; }
.editorial-list p { margin:0; color:var(--brand); font-weight:700; }
.process-section { border-block:1px solid var(--line); }
.process-list { display:grid; gap:1.25rem; margin:0; padding:0; list-style:none; }
.process-list li { display:grid; grid-template-columns:2rem 1fr; gap:.875rem; align-items:start; }
.process-list > li > span { display:grid; width:1.75rem; height:1.75rem; place-items:center; border:1px solid var(--line); border-radius:50%; color:var(--muted); font-size:.75rem; font-weight:750; }
.process-list h3 { margin:0 0 .25rem; color:var(--brand); font-size:1.0625rem; }
.process-list p { margin:0; }
.inclusion-grid { display:grid; gap:.75rem; }
.inclusion-item { display:grid; grid-template-columns:auto 1fr; gap:.75rem; align-items:start; padding:1rem; border:1px solid var(--line); border-radius:var(--radius); }
.inclusion-item > span { display:grid; width:2rem; height:2rem; place-items:center; background:#e4f0ee; color:var(--action); }
.inclusion-item p { margin:0; color:var(--brand); font-weight:700; }
.landing-editorial__grid { display:grid; gap:1.5rem; align-items:center; }
.landing-editorial__grid p { max-width:53ch; margin:0; }
.landing-editorial__marker { display:grid; gap:.75rem; align-content:center; min-height:9rem; padding:1.25rem; border-left:4px solid var(--accent); background:var(--ground); color:var(--brand); font-weight:700; }
.landing-editorial__marker .icon { width:2rem; height:2rem; color:var(--action); }
.landing-start { background:var(--surface); }
.start-panel { display:grid; gap:1.25rem; align-items:center; padding:1.5rem; border:1px solid var(--line); background:var(--ground); }
.start-panel h2 { margin-bottom:.5rem; }
.start-panel p { max-width:50ch; margin:0; }
.conversion-section { background:var(--brand); color:#fff; }
.conversion-panel { display:grid; gap:1.25rem; align-items:center; }
.conversion-panel .section-kicker, .conversion-panel h2 { color:#fff; }
.conversion-panel h2 { margin:0 0 .5rem; }
.conversion-panel p { max-width:48ch; margin:0; }
.conversion-panel .button--primary { background:#fff; color:var(--brand); }
.conversion-panel .button--primary:hover { background:#d9f2ee; }
.desktop-nav > a[aria-current="page"], .service-menu--active > summary, .mobile-nav nav a[aria-current="page"] { color:var(--action); font-weight:750; }
.desktop-nav > a[aria-current="page"], .service-menu--active > summary { box-shadow:inset 0 -2px 0 var(--action); }
.faq-list details { transition:border-color .18s ease, box-shadow .18s ease; }
.faq-list details:hover { border-color:var(--accent); }
.contact-map > .site-shell > p { max-width:55ch; }
@media (min-width:42rem) { .diagnostic-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } .inclusion-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } }
@media (min-width:56rem) { .page-hero h1, .interior-hero h1 { font-size:3.5rem; } .interior-hero { padding:5rem 0; } .interior-hero__grid { grid-template-columns:minmax(0,1.15fr) minmax(18rem,.85fr); gap:3rem; } .hero-graphic { min-height:18rem; } .interior-section { padding-block:5rem; } .diagnostic-grid { grid-template-columns:repeat(4, minmax(0,1fr)); } .diagnostic-item { grid-template-columns:auto 1fr; } .inclusion-grid { grid-template-columns:repeat(3, minmax(0,1fr)); } .process-list { grid-template-columns:repeat(3, minmax(0,1fr)); gap:2rem; } .process-list li { grid-template-columns:1fr; } .landing-editorial__grid { grid-template-columns:minmax(0,1.15fr) minmax(16rem,.85fr); gap:3rem; } .start-panel, .conversion-panel { grid-template-columns:1fr auto; gap:3rem; padding:2.25rem; } .card-grid--related { grid-template-columns:repeat(3, minmax(0,1fr)); } }
@media (prefers-reduced-motion: reduce) { .faq-list details { transition:none; } }
