@font-face { font-family: "Bree Serif"; src: url("assets/fonts/bree-serif-400.ttf") format("truetype"); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: "Nunito Sans"; src: url("assets/fonts/nunito-sans-400.ttf") format("truetype"); font-style: normal; font-weight: 400; font-display: swap; }
@font-face { font-family: "Nunito Sans"; src: url("assets/fonts/nunito-sans-600.ttf") format("truetype"); font-style: normal; font-weight: 600; font-display: swap; }
@font-face { font-family: "Nunito Sans"; src: url("assets/fonts/nunito-sans-700.ttf") format("truetype"); font-style: normal; font-weight: 700; font-display: swap; }
@font-face { font-family: "Nunito Sans"; src: url("assets/fonts/nunito-sans-800.ttf") format("truetype"); font-style: normal; font-weight: 800; font-display: swap; }

:root {
  color-scheme: light;
  --blue: #3565ad;
  --blue-deep: #143b70;
  --blue-dark: #0d2d56;
  --blue-soft: #eaf1f8;
  --blue-pale: #f3f7fb;
  --terracotta: #a63a14;
  --terracotta-dark: #832d0f;
  --ink: #17243a;
  --muted: #5c6877;
  --warm: #f8f7f3;
  --white: #fff;
  --line: #d8e1ea;
  --success: #1d6c45;
  --danger: #a1271d;
  --shadow-sm: 0 .35rem 1.2rem rgba(19, 59, 108, .08);
  --shadow-lg: 0 1.2rem 3.2rem rgba(19, 59, 108, .16);
  --radius-sm: .45rem;
  --radius: .8rem;
  --radius-lg: 1.25rem;
  --shell: 76rem;
  --pad: clamp(1.15rem, 4vw, 2.4rem);
  --serif: "Bree Serif", Georgia, serif;
  --sans: "Nunito Sans", ui-sans-serif, sans-serif;
}

* { box-sizing: border-box; }

html {
  min-width: 20rem;
  scroll-behavior: smooth;
  scroll-padding-top: 7.5rem;
}

body {
  margin: 0;
  overflow-x: hidden;
  background: var(--warm);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 1rem;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body.is-locked { overflow: hidden; }

img { display: block; max-width: 100%; }
button, input, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-underline-offset: .18em; }

:focus-visible {
  outline: .18rem solid #f1a13d;
  outline-offset: .2rem;
}

.shell { width: min(100% - (2 * var(--pad)), var(--shell)); margin-inline: auto; }

.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.skip-link {
  position: fixed;
  z-index: 1000;
  top: .75rem;
  left: .75rem;
  padding: .7rem 1rem;
  background: var(--white);
  color: var(--blue-dark);
  box-shadow: var(--shadow-lg);
  transform: translateY(-160%);
}
.skip-link:focus { transform: translateY(0); }

.project-note { background: #271e17; color: #eee3d2; }
.project-note__inner { min-height: 3rem; display: flex; align-items: center; }
.kostylev-back { display: inline-flex; min-height: 2.75rem; align-items: center; gap: .7rem; font-size: .76rem; font-weight: 700; letter-spacing: .025em; text-decoration: none; }
.kostylev-back img { width: 2rem; height: 2rem; object-fit: contain; filter: sepia(.15) brightness(1.12); }
.kostylev-back:hover span { text-decoration: underline; }

.site-header {
  position: sticky;
  z-index: 100;
  top: 0;
  background: rgba(255, 255, 255, .97);
  border-bottom: 1px solid rgba(20, 59, 112, .12);
  backdrop-filter: blur(1rem);
  transition: box-shadow 180ms ease;
}
.site-header.is-scrolled { box-shadow: var(--shadow-sm); }

.utility-bar { background: var(--blue); color: var(--white); font-size: .78rem; }
.utility-bar__inner { min-height: 2.1rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.utility-bar__links { display: flex; gap: 1.25rem; }
.utility-bar a { font-weight: 650; text-decoration: none; }
.utility-bar a:hover { text-decoration: underline; }

.nav-shell { min-height: 6.4rem; display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
.brand { flex: 0 0 auto; border-radius: var(--radius-sm); }
.brand img { width: 11.5rem; height: 4.8rem; object-fit: contain; object-position: left center; }
.main-nav { display: flex; align-items: center; gap: clamp(.5rem, 1.5vw, 1.4rem); }
.main-nav > a { padding: .75rem .25rem; color: #344050; font-size: .92rem; font-weight: 650; text-decoration: none; }
.main-nav > a:hover { color: var(--blue); }
.main-nav > a[aria-current="true"] { color: var(--blue); box-shadow: inset 0 -.14rem var(--blue); }

.menu-toggle { display: none; min-width: 3rem; min-height: 3rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--white); color: var(--blue-dark); }
.menu-toggle__label { font-size: .86rem; font-weight: 750; }
.menu-toggle__lines { width: 1.15rem; display: grid; gap: .2rem; }
.menu-toggle__lines i { display: block; height: 2px; background: currentColor; transition: transform 180ms ease, opacity 180ms ease; }

.button {
  display: inline-flex;
  min-height: 3rem;
  align-items: center;
  justify-content: center;
  gap: .55rem;
  padding: .72rem 1.2rem;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  font-size: .92rem;
  font-weight: 760;
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: transform 160ms ease, box-shadow 160ms ease, background-color 160ms ease, border-color 160ms ease;
}
.button:hover { transform: translateY(-2px); }
.button:active { transform: translateY(0); }
.button--primary { background: var(--terracotta); color: var(--white); box-shadow: 0 .5rem 1.25rem rgba(166, 58, 20, .17); }
.button--primary:hover { background: var(--terracotta-dark); box-shadow: 0 .7rem 1.5rem rgba(166, 58, 20, .24); }
.button--secondary { border-color: var(--blue); background: var(--white); color: var(--blue-deep); }
.button--secondary:hover { background: var(--blue-soft); }
.button--full { width: 100%; }
.nav-cta { margin-left: .3rem; }

.hero { background: var(--white); }
.hero__grid {
  position: relative;
  display: grid;
  min-height: 39rem;
  grid-template-columns: minmax(0, .95fr) minmax(28rem, 1.2fr);
  align-items: center;
}
.hero__copy { position: relative; z-index: 3; padding: clamp(4rem, 8vw, 7rem) clamp(1rem, 6vw, 5rem) clamp(4rem, 7vw, 6rem) 0; }
.hero h1 { max-width: 11ch; margin: 0 0 1.5rem; color: var(--blue-dark); font-family: var(--serif); font-size: clamp(3.2rem, 5.7vw, 5.5rem); font-weight: 400; letter-spacing: -.025em; line-height: .98; }
.hero__lead { max-width: 38rem; margin: 0; color: #334154; font-size: clamp(1.05rem, 1.5vw, 1.24rem); line-height: 1.65; }
.hero__actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.hero__address { margin: 1.45rem 0 0; color: var(--blue-deep); font-size: .9rem; font-weight: 650; }
.hero__media { position: absolute; z-index: 1; inset-block: 0; right: 0; width: 58%; margin: 0; overflow: hidden; }
.hero__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, var(--white) 0%, rgba(255,255,255,.9) 11%, transparent 42%); }
.hero__media .image-action, .hero__media img { width: 100%; height: 100%; }
.hero__media img { object-fit: cover; object-position: 60% center; }

.image-action { position: relative; display: block; width: 100%; padding: 0; overflow: hidden; border: 0; background: transparent; color: inherit; cursor: zoom-in; text-align: inherit; }
.image-action__hint { position: absolute; right: .65rem; bottom: .65rem; padding: .38rem .58rem; border-radius: .25rem; background: rgba(13,45,86,.84); color: #fff; font-size: .68rem; font-weight: 700; opacity: 0; transform: translateY(.3rem); transition: opacity 160ms ease, transform 160ms ease; }
.image-action:hover .image-action__hint, .image-action:focus-visible .image-action__hint { opacity: 1; transform: none; }

.hours-card { position: absolute; z-index: 4; right: 1rem; bottom: -2.4rem; width: min(22rem, 36%); overflow: hidden; border-radius: var(--radius); background: var(--white); box-shadow: var(--shadow-lg); }
.hours-card__heading { display: flex; align-items: center; justify-content: space-between; gap: .75rem; padding: 1rem 1.2rem; background: var(--blue); color: var(--white); }
.hours-card__heading h2 { margin: 0; font-family: var(--serif); font-size: 1.25rem; }
.hours-card__heading span { font-size: .7rem; font-weight: 760; }
.hours-card > p { margin: 0; padding: .85rem 1.2rem 1rem; border-top: 1px solid var(--line); color: var(--muted); font-size: .75rem; }

.hours-list { display: grid; gap: 0; margin: 0; }
.hours-list > div { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr); gap: .75rem; padding: .68rem 0; border-bottom: 1px solid var(--line); }
.hours-list > div:last-child { border-bottom: 0; }
.hours-list dt { font-weight: 740; }
.hours-list dd { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .2rem .8rem; margin: 0; text-align: right; }
.hours-list--compact { padding: .8rem 1.2rem .3rem; font-size: .78rem; line-height: 1.25; }
.hours-list--compact > div { grid-template-columns: 2.4rem minmax(0,1fr); padding: .42rem 0; }

.values { padding: 5rem 0 3rem; background: var(--blue-pale); }
.values__grid { display: grid; grid-template-columns: repeat(3, 1fr); }
.values article { display: grid; grid-template-columns: 3.2rem 1fr; gap: 1rem; padding: 1.1rem clamp(1rem, 3vw, 2.2rem); border-right: 1px solid var(--line); }
.values article:first-child { padding-left: 0; }
.values article:last-child { padding-right: 0; border-right: 0; }
.values h3 { margin: 0 0 .35rem; color: var(--blue-deep); font-family: var(--serif); font-size: 1.55rem; }
.values p { margin: 0; color: var(--muted); font-size: .88rem; line-height: 1.55; }
.value-number { color: var(--blue); font-family: var(--serif); font-size: 1.15rem; font-weight: 700; }

.section { padding-block: clamp(4.5rem, 9vw, 8rem); }
.section-heading { margin-bottom: clamp(2rem, 5vw, 4rem); }
.section-heading--split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(18rem, .78fr); gap: clamp(2rem, 6vw, 6rem); align-items: end; }
.section-heading h2, .section h2 { margin: 0; color: var(--blue-dark); font-family: var(--serif); font-size: clamp(2.35rem, 4vw, 4rem); font-weight: 400; letter-spacing: -.02em; line-height: 1.05; }
.section-heading > p { max-width: 37rem; margin: 0; color: var(--muted); }
.section-kicker { margin: 0 0 .65rem; color: var(--terracotta); font-size: .75rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase; }

.services { background: var(--white); }
.service-click-hint { display: flex; width: fit-content; align-items: center; gap: .55rem; margin: -1.5rem 0 1.25rem; padding: .55rem .75rem; border: 1px solid #cad8e6; border-radius: var(--radius-sm); background: var(--blue-pale); color: var(--blue-deep); font-size: .78rem; font-weight: 700; }
.service-click-hint span { display: grid; width: 1.55rem; height: 1.55rem; place-items: center; border-radius: 50%; background: var(--blue); color: var(--white); }
.service-feature-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.service-feature { position: relative; overflow: hidden; border: 1px solid transparent; border-bottom: .18rem solid var(--blue); background: var(--warm); cursor: pointer; transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; }
.service-feature > img { width: 100%; height: clamp(14rem, 18vw, 17rem); object-fit: cover; transition: transform 500ms ease; }
.service-feature:hover { border-color: #b8cce1; border-bottom-color: var(--blue); box-shadow: var(--shadow-sm); transform: translateY(-2px); }
.service-feature:hover > img { transform: scale(1.025); }
.service-feature div { padding: 1.4rem; }
.service-feature h3 { margin: 0 0 .4rem; color: var(--blue-dark); font-family: var(--serif); font-size: 1.45rem; line-height: 1.2; }
.service-feature p { margin: 0; color: var(--muted); font-size: .9rem; }
.service-card-cta { display: inline-flex; align-items: center; gap: .45rem; margin-top: 1rem; color: var(--terracotta); font-size: .78rem; font-weight: 800; }
.service-card-cta__mobile { display: none; }
.service-card-hit { position: absolute; z-index: 2; inset: 0; width: 100%; border: 0; background: transparent; cursor: pointer; }
.service-card-hit:focus-visible { outline: .18rem solid #f1a13d; outline-offset: -.35rem; }

details { border-top: 1px solid var(--line); }
details:last-child { border-bottom: 1px solid var(--line); }
summary { display: flex; min-height: 3.6rem; align-items: center; justify-content: space-between; gap: 1rem; color: var(--blue-deep); font-weight: 760; cursor: pointer; list-style: none; }
summary::-webkit-details-marker { display: none; }
details[open] summary > span:last-child { transform: rotate(45deg); }
summary > span:last-child { font-size: 1.5rem; transition: transform 180ms ease; }
.service-details { max-width: 60rem; margin: 2.5rem auto 0; }
.service-details summary { padding-inline: .8rem; }
.service-details__body { padding: 0 .8rem 1.5rem; }
.service-details ul { columns: 2; column-gap: 3rem; margin: .5rem 0 0; padding-left: 1.2rem; }
.service-details li { margin: 0 0 .7rem; break-inside: avoid; color: var(--muted); }

.senior { background: var(--blue-soft); }
.senior__grid { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); align-items: stretch; }
.senior__media { min-height: 34rem; margin: 0; overflow: hidden; }
.senior__media .image-action, .senior__media img { width: 100%; height: 100%; }
.senior__media img { object-fit: cover; }
.senior__copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(2rem, 6vw, 5rem); background: var(--white); }
.senior__copy > p:not(.section-kicker) { color: var(--muted); }
.senior__facts { display: grid; gap: .7rem; margin: 1.25rem 0; }
.senior__facts div { display: flex; justify-content: space-between; gap: 1rem; padding-bottom: .55rem; border-bottom: 1px solid var(--line); }
.senior__facts strong { color: var(--blue-deep); }
.senior__facts span { color: var(--muted); text-align: right; }
.senior details { margin-bottom: 1rem; }
.senior details ul { margin-top: 0; padding: 0 0 1rem 1.2rem; color: var(--muted); }
.text-link { width: fit-content; padding: .4rem 0; border: 0; border-bottom: 1px solid currentColor; background: transparent; color: var(--terracotta); font-weight: 760; cursor: pointer; text-decoration: none; }

.philosophy { background: var(--white); }
.philosophy__grid { display: grid; grid-template-columns: minmax(0, .85fr) minmax(32rem, 1.15fr); gap: clamp(3rem, 7vw, 7rem); align-items: center; }
.philosophy__copy > p:not(.section-kicker) { color: var(--muted); }
.philosophy blockquote { margin: 2rem 0 0; padding: 1.2rem 0 1.2rem 1.5rem; border-left: .2rem solid var(--terracotta); color: var(--blue-deep); font-family: var(--serif); font-size: 1.35rem; font-weight: 700; line-height: 1.4; }
.practice-gallery { position: relative; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto auto; gap: .75rem; }
.practice-gallery figure { margin: 0; overflow: hidden; background: var(--blue-pale); }
.practice-gallery figure:not(.practice-gallery__wide) { aspect-ratio: 3 / 2; }
.practice-gallery .image-action, .practice-gallery img { width: 100%; height: 100%; }
.practice-gallery img { object-fit: cover; }
.practice-gallery__wide { grid-column: 1 / -1; aspect-ratio: 16 / 9; }
.practice-gallery__people { background: #ebe8e3; }
.practice-gallery__people img { object-fit: contain; object-position: center; }

.team { background: var(--warm); }
.team-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.4rem; }
.team-card { display: grid; grid-template-columns: minmax(11rem, .72fr) minmax(0, 1fr); min-height: 22rem; overflow: hidden; border: 1px solid var(--line); background: var(--white); box-shadow: var(--shadow-sm); }
.team-card--lead { min-height: 27rem; }
.team-card__media { position: relative; width: 100%; height: 100%; background: var(--blue-pale); }
.team-card__media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 34%; transition: opacity 220ms ease; }
.team-card__media .team-card__secondary { object-fit: cover; object-position: center; opacity: 0; }
.team-card:nth-child(4) .team-card__secondary { object-position: 56% center; }
@media (hover: hover) and (pointer: fine) {
  .team-card:hover .team-card__primary { opacity: 0; }
  .team-card:hover .team-card__secondary { opacity: 1; }
}
.team-card.is-previewing .team-card__primary { opacity: 0; }
.team-card.is-previewing .team-card__secondary { opacity: 1; }
.team-card.is-mobile-previewing .team-card__primary { opacity: 0; }
.team-card.is-mobile-previewing .team-card__secondary { opacity: 1; }
.team-card__body { display: flex; flex-direction: column; padding: clamp(1.25rem, 3vw, 2rem); }
.team-card__role { margin: 0 0 .35rem; color: var(--terracotta); font-size: .69rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.team-card h3 { margin: 0; color: var(--blue-dark); font-family: var(--serif); font-size: clamp(1.65rem, 2.5vw, 2.35rem); font-weight: 400; line-height: 1.05; }
.team-card__body > p:not(.team-card__role) { color: var(--muted); font-size: .88rem; }
.team-companion { display: grid; margin-top: auto; padding: .8rem 0 0; border: 0; border-top: 1px solid var(--line); background: transparent; color: var(--blue-deep); cursor: zoom-in; text-align: left; }
.team-companion span { color: var(--muted); font-size: .72rem; }
.team-companion strong { font-size: .78rem; }
.team-note { display: flex; align-items: center; justify-content: space-between; gap: 2rem; margin-top: 1.4rem; padding: 1.5rem 1.8rem; background: var(--blue-soft); }
.team-note h3 { margin: 0; color: var(--blue-dark); font-family: var(--serif); font-size: 1.55rem; font-weight: 400; }
.team-note p { margin: .25rem 0 0; color: var(--muted); }

.insights { background: var(--white); }
.gallery-choices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.gallery-choice { position: relative; display: grid; min-height: 12rem; grid-template-columns: auto 1fr; align-content: space-between; gap: .8rem 1.1rem; padding: 1.6rem; border: 1px solid #c5d5e4; border-bottom: .2rem solid var(--blue); background: var(--blue-pale); color: var(--blue-dark); cursor: pointer; text-align: left; transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; }
.gallery-choice--warm { border-color: #e1d4ca; border-bottom-color: var(--terracotta); background: #fbf5f1; }
.gallery-choice:hover { border-color: var(--blue); box-shadow: var(--shadow-sm); transform: translateY(-2px); }
.gallery-choice--warm:hover { border-color: var(--terracotta); }
.gallery-choice__number { display: grid; width: 2.2rem; height: 2.2rem; place-items: center; border-radius: 50%; background: var(--blue); color: var(--white); font-size: .68rem; font-weight: 800; }
.gallery-choice--warm .gallery-choice__number { background: var(--terracotta); }
.gallery-choice > span:nth-child(2) { display: grid; gap: .35rem; }
.gallery-choice strong { font-family: var(--serif); font-size: clamp(1.45rem, 2.4vw, 2rem); font-weight: 400; line-height: 1.08; }
.gallery-choice small { max-width: 30rem; color: var(--muted); font-size: .8rem; }
.gallery-choice__action { grid-column: 2; color: var(--terracotta); font-size: .78rem; font-weight: 800; }
.gallery-dialog { width: min(100% - 2rem, 76rem); max-height: 90vh; }
.gallery-dialog .dialog__body { padding-top: 1rem; }
.gallery-dialog .image-gallery { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.image-gallery-heading { display: flex; align-items: baseline; gap: .8rem; margin-bottom: 1rem; }
.image-gallery-heading span { color: var(--terracotta); font-size: .75rem; font-weight: 800; }
.image-gallery-heading h3 { margin: 0; color: var(--blue-dark); font-family: var(--serif); font-size: 1.8rem; font-weight: 400; }
.image-gallery { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: .85rem; }
.rail-card { border-bottom: .16rem solid var(--blue); background: var(--warm); cursor: zoom-in; transition: border-color 180ms ease, box-shadow 180ms ease, transform 180ms ease; }
.rail-card:hover { border-color: var(--terracotta); box-shadow: var(--shadow-sm); transform: translateY(-2px); }
.rail-card img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.rail-card > span:not(.image-action__hint) { display: block; padding: .75rem .85rem; color: var(--blue-deep); font-size: .8rem; font-weight: 700; }

.reviews { overflow: hidden; background: var(--blue-dark); color: var(--white); }
.reviews .section-kicker { color: #f5a16f; }
.reviews h2 { color: var(--white); }
.reviews__heading { text-align: center; }
.review-stage { position: relative; min-height: 17rem; }
.review { max-width: 57rem; margin-inline: auto; text-align: center; }
.review[hidden] { display: none; }
.review__stars { color: #f2a04f; font-size: 1.2rem; letter-spacing: .22em; }
.review blockquote { margin: 1.1rem 0; font-family: var(--serif); font-size: clamp(1.6rem, 3vw, 2.55rem); line-height: 1.32; }
.review p { color: #b9c8d8; font-size: .85rem; }
.review-controls { display: flex; align-items: center; justify-content: center; gap: 1.2rem; }
.review-controls button { min-width: 5rem; min-height: 2.8rem; border: 1px solid rgba(255,255,255,.35); border-radius: var(--radius-sm); background: transparent; color: var(--white); cursor: pointer; }
.review-controls button:hover { background: rgba(255,255,255,.1); }
.review-controls span { color: #b9c8d8; font-size: .82rem; }

.contact { background: var(--white); }
.contact-grid { display: grid; grid-template-columns: .8fr .9fr 1.2fr; gap: 1.25rem; align-items: start; }
.contact-details, .contact-hours, .map-consent { padding: clamp(1.25rem, 3vw, 2rem); border: 1px solid var(--line); background: var(--warm); }
.contact-grid h3 { margin: 0 0 1rem; color: var(--blue-dark); font-family: var(--serif); font-size: 1.45rem; }
.contact-details { display: flex; flex-direction: column; gap: .45rem; }
.contact-details address { margin-bottom: .5rem; font-style: normal; }
.contact-details > a { color: var(--blue-deep); font-weight: 700; }
.emergency-note { margin-top: 1rem; padding: 1rem; background: #fff1ed; color: #70220f; }
.emergency-note p { margin: .2rem 0 0; }
.contact-hours { display: flex; flex-direction: column; }
.contact-hours .hours-list { margin-bottom: 1.25rem; font-size: .87rem; }
.contact-hours .hours-list > div { grid-template-columns: 6.7rem 1fr; }
.contact-hours .button { margin-top: 1rem; }
.map-consent { position: relative; height: 30rem; min-height: 0; display: grid; place-items: center; overflow: hidden; padding: 0; background: linear-gradient(145deg, #e8f0f8, #d9e6f1); }
.map-consent::before { content: ""; position: absolute; inset: 0; opacity: .32; background: linear-gradient(32deg, transparent 48%, #91a9bf 49%, #91a9bf 50%, transparent 51%) 0 0/5rem 5rem, linear-gradient(145deg, transparent 47%, #afbfcd 48%, #afbfcd 50%, transparent 51%) 0 0/8rem 8rem; }
.map-consent__placeholder { position: relative; z-index: 2; width: min(100% - 2rem, 24rem); padding: 2rem; border: 1px solid rgba(20,59,112,.12); background: rgba(255,255,255,.96); text-align: center; box-shadow: var(--shadow-lg); }
.map-consent__placeholder p { color: var(--muted); font-size: .88rem; }
.map-consent__placeholder a { display: block; margin-top: .85rem; color: var(--blue-deep); font-size: .82rem; font-weight: 700; }
.map-consent__placeholder .section-kicker { margin-bottom: .35rem; color: var(--terracotta); }
.map-pin { position: relative; display: block; width: 2.5rem; height: 2.5rem; margin: 0 auto 1rem; border: .18rem solid var(--blue); border-radius: 50% 50% 50% 0; transform: rotate(-45deg); }
.map-pin::after { content: ""; position: absolute; inset: .62rem; border-radius: 50%; background: var(--terracotta); }
.map-consent iframe { position: absolute; z-index: 3; inset: 0; width: 100%; height: 100%; border: 0; }

.parking-guide { margin-top: 3rem; }
.parking-guide__heading { display: grid; grid-template-columns: 1fr minmax(17rem, .7fr); gap: 3rem; align-items: end; margin-bottom: 1.2rem; }
.parking-guide h3 { margin: 0; color: var(--blue-dark); font-family: var(--serif); font-size: clamp(1.8rem, 3vw, 2.6rem); font-weight: 400; line-height: 1.1; }
.parking-guide__heading > p { margin: 0; color: var(--muted); }
.parking-series { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1rem; margin: 0; padding: 0; list-style: none; }
.parking-series li { border: 1px solid var(--line); background: var(--warm); }
.parking-series .image-action, .parking-series img { width: 100%; aspect-ratio: 3 / 1.65; }
.parking-series img { object-fit: cover; }
.parking-series li > div { display: grid; grid-template-columns: 2rem 1fr; gap: .6rem; padding: 1rem; }
.parking-series li > div > span { color: var(--terracotta); font-size: .75rem; font-weight: 800; }
.parking-series p { margin: 0; color: var(--muted); font-size: .82rem; }
.parking-series strong { display: block; color: var(--blue-dark); font-size: .9rem; }

.contact-form { display: grid; grid-template-columns: minmax(15rem, .7fr) minmax(0, 1.3fr); gap: clamp(2rem, 6vw, 6rem); margin-top: 3rem; padding: clamp(1.5rem, 5vw, 4rem); background: var(--blue-soft); }
.contact-form__intro h3 { margin: 0; color: var(--blue-dark); font-family: var(--serif); font-size: clamp(2rem, 3vw, 3rem); line-height: 1.1; }
.contact-form__intro p:last-child { color: var(--muted); }
.form-fields { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 1.1rem; }
.field { display: flex; flex-direction: column; }
.field--wide { grid-column: 1 / -1; }
.field label { margin-bottom: .35rem; color: var(--blue-dark); font-size: .84rem; font-weight: 760; }
.field input, .field textarea { width: 100%; min-height: 3.1rem; padding: .75rem .85rem; border: 1px solid #b9c6d3; border-radius: var(--radius-sm); background: var(--white); color: var(--ink); }
.field textarea { resize: vertical; }
.field input[aria-invalid="true"], .field textarea[aria-invalid="true"] { border-color: var(--danger); box-shadow: 0 0 0 1px var(--danger); }
.field-error { min-height: 1.2rem; color: var(--danger); font-size: .75rem; }
.checkbox { display: flex; gap: .7rem; align-items: flex-start; color: var(--muted); font-size: .82rem; }
.checkbox input { flex: 0 0 auto; width: 1.2rem; height: 1.2rem; margin-top: .18rem; accent-color: var(--blue); }
.form-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 1rem; }
.form-status { margin: 0; color: var(--success); font-size: .85rem; font-weight: 700; }
.form-status.is-error { color: var(--danger); }
.form-status.is-success { color: var(--success); }

.site-footer { padding-top: 4rem; background: var(--blue-dark); color: var(--white); }
.footer-main { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: clamp(2rem, 5vw, 5rem); padding-bottom: 3rem; }
.footer-brand > a { display: inline-block; color: var(--white); font-family: var(--serif); font-size: 1.5rem; line-height: 1.08; text-decoration: none; }
.footer-brand p { max-width: 17rem; color: #b9c8d8; }
.footer-main nav, .footer-contact { display: flex; flex-direction: column; align-items: flex-start; gap: .45rem; }
.footer-main h2 { margin: 0 0 .6rem; font-family: var(--serif); font-size: 1.15rem; }
.footer-main a, .footer-main button { padding: .2rem 0; border: 0; background: none; color: #c9d5e1; font-size: .84rem; text-align: left; cursor: pointer; }
.footer-main a:hover, .footer-main button:hover { color: var(--white); }
.footer-meta { display: flex; justify-content: space-between; gap: 1rem; padding-block: 1rem 1.5rem; border-top: 1px solid rgba(255,255,255,.16); color: #9fb2c5; font-size: .76rem; }
.footer-meta p { margin: 0; }

.header-actions { display: none; grid-template-columns: repeat(2, 3.35rem); gap: .35rem; }
.header-actions > * { display: flex; min-width: 0; min-height: 2.8rem; flex-direction: column; align-items: center; justify-content: center; gap: .18rem; border-radius: .5rem; font-size: .61rem; font-weight: 800; line-height: 1; text-align: center; text-decoration: none; transition: background-color 160ms ease, color 160ms ease, box-shadow 160ms ease, transform 160ms ease; }
.header-actions svg { flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.header-actions button { border: 1px solid var(--terracotta); background: var(--terracotta); color: var(--white); box-shadow: 0 .2rem .55rem rgba(166,58,20,.14); cursor: pointer; }
.header-actions a { border: 1px solid #b8cadc; background: var(--blue-pale); color: var(--blue-deep); }
.header-actions button:hover { background: var(--terracotta-dark); }
.header-actions a:hover { border-color: var(--blue); background: #edf4fb; }
.header-actions > *:active { transform: translateY(1px); }

.dialog { width: min(100% - 2rem, 42rem); max-height: min(88vh, 46rem); padding: 0; overflow: auto; border: 0; border-radius: var(--radius); background: var(--white); color: var(--ink); box-shadow: var(--shadow-lg); }
.dialog::backdrop { background: rgba(8, 24, 47, .72); backdrop-filter: blur(.25rem); }
.dialog__close { position: sticky; z-index: 2; top: .75rem; float: right; min-height: 2.75rem; margin: .75rem .75rem 0 0; padding: .45rem .8rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--white); color: var(--blue-deep); font-size: .8rem; font-weight: 750; cursor: pointer; }
.dialog__body { padding: clamp(1.4rem, 5vw, 3rem); clear: both; }
.dialog h2 { margin: 0; color: var(--blue-dark); font-family: var(--serif); font-size: clamp(2rem, 4vw, 3rem); line-height: 1.08; }
.dialog h2 + p { color: var(--muted); }
.booking-options { display: grid; gap: .75rem; margin-top: 1.5rem; }
.booking-option { display: grid; padding: 1rem 1.1rem; border: 1px solid var(--line); border-radius: var(--radius-sm); color: var(--ink); text-decoration: none; }
.booking-option:hover { border-color: var(--blue); background: var(--blue-pale); }
.booking-option strong { color: var(--blue-deep); font-family: var(--serif); font-size: 1.2rem; }
.booking-option span { color: var(--muted); font-size: .85rem; }
.booking-option small { margin-top: .35rem; color: var(--blue); font-weight: 750; }
.booking-option--primary { border-color: #f1cabb; background: #fff4f0; }
.booking-option--primary strong, .booking-option--primary small { color: var(--terracotta); }
.former-booking { margin-top: 1.4rem; }
.former-booking > div { padding-bottom: 1rem; }
.former-booking p { color: var(--muted); font-size: .82rem; }
.former-booking__images { display: grid; grid-template-columns: 1fr 8rem; gap: .8rem; align-items: stretch; }
.former-booking__images .image-action { min-height: 8rem; border: 1px solid var(--line); background: var(--blue-pale); }
.former-booking__images img { width: 100%; height: 100%; max-height: 15rem; object-fit: contain; }
.dialog__emergency { margin: 1.25rem 0 0; padding: .8rem; background: #fff1ed; color: #70220f; font-size: .82rem; }
.privacy-setting { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1rem 0; border-top: 1px solid var(--line); }
.privacy-setting div { display: grid; }
.privacy-setting span { color: var(--muted); font-size: .8rem; }
.privacy-setting > span { color: var(--success); font-weight: 750; white-space: nowrap; }
.privacy-setting button { min-height: 2.6rem; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--warm); color: var(--blue-deep); font-size: .8rem; font-weight: 750; cursor: pointer; }
.privacy-setting button:disabled { cursor: default; opacity: .58; }
.service-dialog__content { margin: 1.4rem 0; color: var(--muted); }
.service-dialog__content ul { display: grid; gap: .45rem; padding-left: 1.15rem; }
.lightbox { width: min(100% - 2rem, 72rem); height: min(90vh, 52rem); max-height: 90vh; background: #0b1726; }
.lightbox figure { display: grid; height: calc(100% - 4rem); grid-template-rows: minmax(0, 1fr) auto; margin: 0; padding: 0 1rem 1rem; clear: both; }
.lightbox img { width: 100%; height: 100%; min-height: 0; object-fit: contain; }
.lightbox figcaption { padding: .8rem 0 0; color: #dce6ef; font-size: .85rem; text-align: center; }

@media (max-width: 68rem) {
  .utility-bar__inner > span { display: none; }
  .utility-bar__inner { justify-content: flex-end; }
  .menu-toggle { display: inline-flex; align-items: center; justify-content: center; gap: .55rem; }
  .main-nav { position: absolute; top: 100%; right: 0; left: 0; display: none; padding: 1rem var(--pad) 1.4rem; border-top: 1px solid var(--line); background: var(--white); box-shadow: var(--shadow-lg); }
  .main-nav.is-open { display: grid; }
  .main-nav > a { min-height: 3rem; display: flex; align-items: center; border-bottom: 1px solid var(--line); }
  .nav-cta { margin: .5rem 0 0; }
  .menu-toggle[aria-expanded="true"] .menu-toggle__lines i:nth-child(1) { transform: translateY(.38rem) rotate(45deg); }
  .menu-toggle[aria-expanded="true"] .menu-toggle__lines i:nth-child(2) { opacity: 0; }
  .menu-toggle[aria-expanded="true"] .menu-toggle__lines i:nth-child(3) { transform: translateY(-.38rem) rotate(-45deg); }
  .hero__grid { min-height: 42rem; grid-template-columns: minmax(0, 1fr) minmax(22rem, .85fr); }
  .hero h1 { font-size: clamp(3.2rem, 7vw, 4.6rem); }
  .hours-card { bottom: -3rem; width: min(21rem, 44%); }
  .philosophy__grid { grid-template-columns: 1fr 1fr; gap: 3rem; }
  .image-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gallery-dialog .image-gallery { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .team-card { grid-template-columns: minmax(10rem, .65fr) minmax(0, 1fr); }
  .contact-grid { grid-template-columns: 1fr 1fr; }
  .map-consent { grid-column: 1 / -1; height: 24rem; }
  .footer-main { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 48rem) {
  html { scroll-padding-top: 5.5rem; }
  .project-note__inner { min-height: 2.8rem; }
  .utility-bar { display: none; }
  .nav-shell { min-height: 5.2rem; gap: .55rem; }
  .brand { margin-right: auto; }
  .brand img { width: 8.3rem; height: 3.8rem; }
  .hero__grid { min-height: auto; display: flex; flex-direction: column; align-items: stretch; }
  .hero__copy { order: 2; padding: 2rem 0 2.5rem; }
  .hero h1 { max-width: 12ch; font-size: clamp(2.65rem, 12vw, 4rem); }
  .hero__lead { font-size: 1rem; }
  .hero__actions .button { flex: 1 1 10rem; }
  .hero__media { position: relative; order: 1; inset: auto; width: calc(100% + (2 * var(--pad))); height: 20rem; margin-inline: calc(-1 * var(--pad)); }
  .hero__media::after { background: linear-gradient(0deg, var(--white) 0%, transparent 28%); }
  .hero__media img { object-position: 70% center; }
  .hours-card { position: relative; order: 3; right: auto; bottom: auto; width: 100%; margin-bottom: -2rem; box-shadow: var(--shadow-sm); }
  .hours-card__heading span { display: inline; }
  .values { padding-top: 4.5rem; }
  .values__grid { grid-template-columns: 1fr; }
  .values article, .values article:first-child, .values article:last-child { padding: 1.2rem 0; border-right: 0; border-bottom: 1px solid var(--line); }
  .values article:last-child { border-bottom: 0; }
  .section { padding-block: 4.5rem; }
  .section-heading--split { grid-template-columns: 1fr; gap: 1rem; }
  .section-heading h2, .section h2 { font-size: clamp(2.2rem, 10vw, 3.2rem); }
  .service-click-hint { margin-top: -.5rem; }
  .service-feature-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .55rem; }
  .service-feature { display: block; }
  .service-feature > img { height: auto; aspect-ratio: 1 / 1; }
  .service-feature div { padding: .8rem .65rem; }
  .service-feature h3 { font-size: clamp(.88rem, 3.8vw, 1.1rem); }
  .service-feature p { display: none; }
  .service-card-cta { margin-top: .55rem; font-size: .65rem; }
  .service-details ul { columns: 1; }
  .senior__grid { grid-template-columns: 1fr; }
  .senior__media { min-height: 20rem; }
  .senior__copy { padding: 2rem var(--pad) 2.5rem; }
  .senior__facts div { display: grid; gap: .1rem; }
  .senior__facts span { text-align: left; }
  .philosophy__grid { grid-template-columns: 1fr; gap: 2.5rem; }
  .team-grid { grid-template-columns: 1fr; }
  .team-card, .team-card--lead { min-height: 26rem; grid-template-columns: minmax(10rem, .78fr) minmax(0, 1fr); }
  .team-note { align-items: flex-start; flex-direction: column; }
  .gallery-choices { grid-template-columns: 1fr; }
  .gallery-choice { min-height: 10rem; padding: 1.2rem; }
  .image-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
  .gallery-dialog .image-gallery { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .rail-card > span:not(.image-action__hint) { padding: .65rem; font-size: .72rem; }
  .review-stage { min-height: 22rem; }
  .contact-grid { grid-template-columns: 1fr; }
  .map-consent { grid-column: auto; height: 22rem; }
  .contact-form { grid-template-columns: 1fr; padding: 1.4rem; }
  .parking-guide__heading { grid-template-columns: 1fr; gap: .6rem; }
  .parking-series { grid-template-columns: 1fr; }
  .parking-series li { display: grid; grid-template-columns: minmax(8rem, .72fr) 1fr; }
  .parking-series .image-action, .parking-series img { height: 100%; aspect-ratio: auto; }
  .form-fields { grid-template-columns: 1fr; }
  .field--wide { grid-column: auto; }
  .footer-main { grid-template-columns: 1fr 1fr; }
  .footer-brand { grid-column: 1 / -1; }
  .footer-meta { flex-direction: column; padding-bottom: 1.5rem; }
  .header-actions { display: grid; }
}

@media (max-width: 31rem) {
  .project-note a { font-size: .72rem; }
  .brand img { width: 6.5rem; height: 3.25rem; }
  .header-actions { grid-template-columns: repeat(2, 2.85rem); gap: .25rem; }
  .header-actions > * { font-size: .56rem; }
  .menu-toggle__label { display: none; }
  .service-click-hint { align-items: flex-start; margin-bottom: .9rem; line-height: 1.35; }
  .service-click-hint span { flex: 0 0 auto; }
  .service-feature-grid { gap: .35rem; }
  .service-feature div { padding: .65rem .45rem; }
  .service-feature h3 { font-size: .82rem; line-height: 1.15; }
  .service-card-cta { font-size: .58rem; }
  .service-card-cta > span { display: none; }
  .team-card, .team-card--lead { min-height: auto; grid-template-columns: 1fr; }
  .team-card__media, .team-card__media img { height: 19rem; }
  .parking-series li { grid-template-columns: 1fr; }
  .parking-series .image-action, .parking-series img { aspect-ratio: 3 / 1.65; }
  .former-booking__images { grid-template-columns: 1fr; }
  .footer-main { grid-template-columns: 1fr; }
  .footer-brand { grid-column: auto; }
  .privacy-setting { align-items: flex-start; flex-direction: column; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; }
}

@media print {
  .project-note, .site-header, .header-actions, .review-controls, .button, .dialog { display: none !important; }
  body { background: #fff; color: #000; }
  .section { padding-block: 2rem; }
}

.legal-page { background: var(--warm); }
.legal-header { background: var(--white); border-bottom: 1px solid var(--line); }
.legal-header > div { min-height: 6.5rem; display: flex; align-items: center; justify-content: space-between; gap: 2rem; }
.legal-header img { width: 10rem; height: 5.4rem; object-fit: contain; object-position: left center; }
.legal-main { padding-block: clamp(3rem, 8vw, 7rem); }
.legal-layout { display: grid; grid-template-columns: 13rem minmax(0, 48rem); gap: clamp(2rem, 8vw, 8rem); align-items: start; }
.legal-layout aside { position: sticky; top: 2rem; display: grid; border-top: 1px solid var(--line); }
.legal-layout aside p { margin: 0; padding: 1rem 0; color: var(--muted); font-size: .75rem; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.legal-layout aside a { padding: .75rem 0; border-top: 1px solid var(--line); color: var(--blue-deep); font-weight: 700; text-decoration: none; }
.legal-layout aside a[aria-current="page"] { color: var(--terracotta); }
.legal-layout article h1 { margin: 0 0 2rem; color: var(--blue-dark); font-family: var(--serif); font-size: clamp(2.6rem, 6vw, 4.8rem); letter-spacing: -.04em; line-height: 1; }
.legal-layout article h2 { margin: 2.5rem 0 .65rem; color: var(--blue-dark); font-family: var(--serif); font-size: 1.55rem; }
.legal-layout article p { color: #4f5c6b; }
.legal-layout article a { color: var(--blue); font-weight: 650; }
.legal-notice { margin: 0 0 2.5rem; padding: 1.2rem 1.4rem; border-left: .22rem solid var(--terracotta); background: var(--white); box-shadow: var(--shadow-sm); }
.legal-notice p { margin: .35rem 0 0; }
.legal-source { margin-top: 3rem; padding-top: 1rem; border-top: 1px solid var(--line); font-size: .82rem; }
.legal-footer { padding-block: 1.3rem; background: var(--blue-dark); color: var(--white); }
.legal-footer > div { display: flex; flex-wrap: wrap; gap: 1.2rem; }
.legal-footer a { color: #d7e0e9; font-size: .82rem; }

@media (max-width: 48rem) {
  .legal-header > div { min-height: 5rem; }
  .legal-header img { width: 7rem; height: 3.8rem; }
  .legal-header .button { min-height: 2.7rem; padding-inline: .8rem; font-size: .78rem; }
  .legal-layout { grid-template-columns: 1fr; gap: 2rem; }
  .legal-layout aside { position: static; grid-template-columns: repeat(2, 1fr); }
  .legal-layout aside p { grid-column: 1 / -1; }
  .legal-layout article h1 { max-width: 100%; font-size: clamp(2.25rem, 10vw, 2.6rem); overflow-wrap: break-word; }
}

/* Editorial refinement: Apple-like clarity, unmistakably Kleintierpraxis Urbach. */
:root {
  --blue: #386ab2;
  --blue-deep: #123f78;
  --blue-dark: #092f5d;
  --blue-soft: #edf4fb;
  --blue-pale: #f4f7fa;
  --terracotta: #b33d14;
  --terracotta-dark: #8d2f0f;
  --ink: #152238;
  --muted: #5f6978;
  --warm: #f5f5f7;
  --line: #d9dfe6;
  --shadow-sm: 0 .35rem 1.35rem rgba(9, 47, 93, .07);
  --shadow-lg: 0 1.25rem 3.5rem rgba(9, 47, 93, .15);
  --radius-sm: .8rem;
  --radius: 1.25rem;
  --radius-lg: 1.9rem;
  --shell: 78rem;
}

body { background: var(--white); font-size: 1.02rem; line-height: 1.58; }
.shell { width: min(100% - (2 * var(--pad)), var(--shell)); }

.project-note { background: #251e19; }
.project-note__inner { min-height: 2.35rem; }
.kostylev-back { min-height: 2.35rem; font-size: .72rem; }
.kostylev-back img { width: 1.65rem; height: 1.65rem; }

.site-header { background: #fff; border-bottom-color: rgba(9, 47, 93, .1); }
.site-header.is-scrolled { box-shadow: 0 .25rem 1.5rem rgba(9, 47, 93, .08); }
.utility-bar { background: var(--blue-deep); font-size: .7rem; }
.utility-bar__inner { min-height: 1.8rem; }
.utility-bar__links { gap: 1rem; }
.nav-shell { min-height: 4.9rem; gap: 1.5rem; }
.brand img { width: 8.8rem; height: 3.6rem; }
.main-nav { gap: clamp(.3rem, 1.2vw, 1.15rem); }
.main-nav > a { padding: .85rem .2rem; font-size: .82rem; font-weight: 700; }
.main-nav > a[aria-current="true"] { box-shadow: none; }
.main-nav > a[aria-current="true"]::after { content: ""; display: block; height: .12rem; margin-top: .22rem; border-radius: 999px; background: currentColor; }
.nav-cta { min-height: 2.65rem; margin-left: .4rem; padding-inline: 1.15rem; font-size: .8rem; }

.button { min-height: 3.05rem; padding: .76rem 1.35rem; border-radius: 999px; font-size: .9rem; box-shadow: none; }
.button:hover { transform: translateY(-1px); }
.button--primary { box-shadow: 0 .5rem 1.3rem rgba(179, 61, 20, .15); }
.button--secondary { border-color: #b8c8dc; }

.hero { padding: .75rem 0 4.2rem; background: var(--white); }
.hero__grid { min-height: 41rem; grid-template-columns: minmax(0, .93fr) minmax(31rem, 1.07fr); gap: clamp(2.5rem, 5vw, 4.5rem); }
.hero__copy { grid-column: 1; grid-row: 1; padding: 2.5rem 0; }
.hero h1 { max-width: 10.5ch; margin-bottom: 1.25rem; font-size: clamp(3.55rem, 5.1vw, 4.85rem); letter-spacing: -.035em; line-height: .96; }
.hero__lead { max-width: 34rem; font-size: clamp(1.05rem, 1.45vw, 1.2rem); line-height: 1.58; }
.hero__actions { margin-top: 1.7rem; }
.hero__address { margin-top: 1.2rem; font-size: .82rem; }
.hero__media { position: relative; inset: auto; grid-column: 2; grid-row: 1; width: 100%; aspect-ratio: 4 / 3; border-radius: var(--radius-lg); background: var(--blue-pale); box-shadow: none; }
.hero__media::after { display: none; }
.hero__media img { object-position: 61% center; transition: transform 650ms cubic-bezier(.2, .7, .2, 1); }
@media (hover: hover) and (pointer: fine) { .hero__media:hover img { transform: scale(1.015); } }
.hours-card { right: 1.15rem; bottom: 1.15rem; width: min(22rem, 43%); border: 1px solid rgba(255,255,255,.7); border-radius: 1.15rem; background: rgba(255,255,255,.95); box-shadow: 0 1rem 2.75rem rgba(9,47,93,.17); backdrop-filter: blur(1rem); }
.hours-card__heading { padding: .85rem 1rem; border-radius: 1rem 1rem 0 0; background: var(--blue-deep); }
.hours-card__heading h2 { font-size: 1.05rem; }
.hours-list--compact { padding: .55rem 1rem .2rem; font-size: .7rem; }
.hours-list--compact > div { padding: .32rem 0; }
.hours-card > p { padding: .65rem 1rem .75rem; font-size: .68rem; }

.values { padding: 2.6rem 0; border-block: 1px solid #e5e8ec; background: var(--warm); }
.values__grid { gap: 0; }
.values article { grid-template-columns: 2.25rem 1fr; padding-block: .35rem; }
.values h3 { font-size: 1.35rem; }
.values p { max-width: 19rem; font-size: .83rem; }
.value-number { color: var(--terracotta); font-size: .8rem; }

.section { padding-block: clamp(5.25rem, 8vw, 7.5rem); }
.section-heading { margin-bottom: clamp(2.25rem, 4.5vw, 3.75rem); }
.section-heading--split { grid-template-columns: minmax(0, 1.15fr) minmax(18rem, .65fr); gap: clamp(2rem, 6vw, 5.5rem); }
.section-heading h2, .section h2 { font-size: clamp(2.65rem, 4.4vw, 4.35rem); letter-spacing: -.035em; line-height: .99; }
.section-heading > p { line-height: 1.65; }
.section-kicker { margin-bottom: .55rem; font-family: var(--serif); font-size: 1rem; font-weight: 400; letter-spacing: 0; text-transform: none; }

.services { background: var(--white); }
.service-click-hint { margin: -1rem 0 1.5rem; padding: 0; border: 0; background: transparent; color: var(--muted); font-size: .78rem; }
.service-click-hint span { width: 1.45rem; height: 1.45rem; background: var(--terracotta); }
.service-feature-grid { gap: .75rem; }
.service-feature { border: 0; border-radius: 1.55rem; background: var(--warm); box-shadow: none; }
.service-feature > img { height: auto; aspect-ratio: 4 / 3; }
.service-feature:hover { border: 0; box-shadow: none; transform: translateY(-3px); }
.service-feature div { padding: 1.35rem 1.45rem 1.5rem; }
.service-feature h3 { font-size: clamp(1.4rem, 2vw, 1.75rem); }
.service-card-cta { color: var(--blue-deep); }
.service-details { max-width: none; margin-top: 1.25rem; padding: 0 1.25rem; overflow: hidden; border: 0; border-radius: 1.2rem; background: var(--blue-pale); }
.service-details:last-child { border-bottom: 0; }
.service-details summary { min-height: 4rem; padding-inline: 0; }
.service-details__body { padding-inline: 0; }

.senior { background: var(--warm); }
.senior__grid { overflow: hidden; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); border-radius: var(--radius-lg); background: var(--white); }
.senior__media { min-height: 36rem; }
.senior__copy { padding: clamp(2.5rem, 5.5vw, 4.75rem); }
.senior__copy h2 { max-width: 9ch; }
.senior__facts { margin-block: 1.35rem; }
.senior__facts div { padding: .2rem 0 .75rem; }

.philosophy { background: var(--white); }
.philosophy__grid { grid-template-columns: minmax(0, .84fr) minmax(34rem, 1.16fr); gap: clamp(3rem, 7vw, 6.5rem); }
.philosophy blockquote { max-width: 31rem; padding-block: .75rem; font-size: clamp(1.3rem, 2vw, 1.65rem); }
.practice-gallery { gap: .65rem; }
.practice-gallery figure { border-radius: 1.15rem; }

.team { background: var(--warm); }
.team-grid { gap: .8rem; }
.team-card, .team-card--lead { min-height: 25rem; grid-template-columns: minmax(13rem, .95fr) minmax(0, 1.05fr); border: 0; border-radius: 1.55rem; box-shadow: none; }
.team-card__body { padding: clamp(1.35rem, 2.6vw, 2rem); }
.team-card__role { letter-spacing: .055em; }
.team-card h3 { font-size: clamp(1.7rem, 2.4vw, 2.2rem); }
.team-companion { padding-top: .8rem; }
.team-note { margin-top: .8rem; padding: 1.55rem 1.75rem; border-radius: 1.35rem; background: var(--blue-soft); }

.insights { background: var(--white); }
.gallery-choices { gap: .75rem; }
.gallery-choice { min-height: 13.5rem; padding: 1.65rem; border: 0; border-radius: 1.55rem; background: var(--blue-pale); }
.gallery-choice--warm { border: 0; background: #fbf3ee; }
.gallery-choice:hover, .gallery-choice--warm:hover { border: 0; box-shadow: none; transform: translateY(-3px); }
.gallery-choice__number { width: 2rem; height: 2rem; }
.gallery-choice__action { color: var(--blue-deep); }
.gallery-choice--warm .gallery-choice__action { color: var(--terracotta); }
.gallery-dialog, .dialog { border-radius: 1.5rem; }
.gallery-dialog.dialog { width: min(100% - 2rem, 76rem); }
.rail-card { overflow: hidden; border: 0; border-radius: 1rem; background: var(--warm); }
.rail-card:hover { border: 0; box-shadow: none; transform: translateY(-2px); }

.reviews { background: #0c2d55; }
.reviews__heading { max-width: 48rem; margin-inline: auto; }
.review-stage { min-height: 16rem; }
.review blockquote { max-width: 52rem; margin-inline: auto; font-size: clamp(1.8rem, 3.4vw, 3rem); line-height: 1.22; }
.review-controls button { min-width: 5.5rem; border-radius: 999px; }

.contact { background: var(--white); }
.contact-grid { grid-template-columns: minmax(0, .82fr) minmax(0, 1.18fr); gap: .75rem; }
.contact-details, .contact-hours, .map-consent { border: 0; border-radius: 1.55rem; background: var(--warm); }
.contact-details, .contact-hours { min-height: 100%; padding: clamp(1.5rem, 3vw, 2.25rem); }
.contact-grid h3 { font-size: 1.65rem; }
.emergency-note { border-radius: 1rem; }
.map-consent { grid-column: 1 / -1; height: 27rem; }
.map-consent__placeholder { border: 0; border-radius: 1.25rem; box-shadow: 0 1rem 3rem rgba(9,47,93,.14); }
.parking-guide { margin-top: 4rem; }
.parking-series { gap: .75rem; }
.parking-series li { overflow: hidden; border: 0; border-radius: 1.25rem; background: var(--warm); }
.contact-form { margin-top: 4rem; border-radius: var(--radius-lg); background: var(--blue-soft); }
.field input, .field textarea { border-color: #c4d0dd; border-radius: .9rem; }

.site-footer { background: #092747; }
.footer-main { padding-bottom: 3.5rem; }
.footer-meta { padding-block: 1.15rem 1.5rem; }

.dialog__close { border-radius: 999px; }
.booking-option { border-radius: 1rem; }
.privacy-setting button { border-radius: 999px; }

@media (max-width: 68rem) {
  .nav-shell { min-height: 4.7rem; }
  .main-nav { border-radius: 0 0 1.25rem 1.25rem; background: rgba(255,255,255,.98); }
  .hero__grid { min-height: 38rem; grid-template-columns: minmax(0, .95fr) minmax(25rem, 1.05fr); gap: 2rem; }
  .hero h1 { font-size: clamp(3.25rem, 6.3vw, 4.25rem); }
  .hours-card { width: min(20rem, 44%); }
  .philosophy__grid { grid-template-columns: minmax(0, .9fr) minmax(27rem, 1.1fr); gap: 2.5rem; }
  .contact-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 48rem) {
  html { scroll-padding-top: 5rem; }
  .project-note__inner { min-height: 2.3rem; }
  .nav-shell { min-height: 4.65rem; }
  .brand img { width: 7rem; height: 3.25rem; }
  .header-actions { grid-template-columns: repeat(2, 3rem); }
  .header-actions > * { min-height: 3rem; border-radius: .8rem; }
  .menu-toggle { min-width: 3rem; min-height: 3rem; border-radius: .8rem; }

  .hero { padding: 0 0 3.75rem; }
  .hero__grid { min-height: auto; display: flex; gap: 0; padding-top: 2.5rem; }
  .hero__copy { order: 1; padding: 0; }
  .hero h1 { max-width: 10ch; font-size: clamp(3rem, 14.2vw, 4rem); line-height: .95; }
  .hero__lead { font-size: 1rem; }
  .hero__media { order: 2; width: 100%; height: auto; margin: 2.25rem 0 0; aspect-ratio: 4 / 3; border-radius: 1.45rem; }
  .hero__media img { object-position: 62% center; }
  .hours-card { position: relative; order: 3; right: auto; bottom: auto; width: 100%; margin: .75rem 0 0; border-color: var(--line); box-shadow: none; }
  .hours-list--compact { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
  .hours-list--compact > div { grid-template-columns: 1.8rem minmax(0, 1fr); }

  .values { padding-block: 2.3rem; }
  .values article, .values article:first-child, .values article:last-child { grid-template-columns: 2rem 1fr; padding-block: 1rem; }
  .values p { max-width: none; }
  .section { padding-block: 4.75rem; }
  .section-heading { margin-bottom: 2.25rem; }
  .section-heading--split { grid-template-columns: 1fr; align-items: start; }
  .section-heading h2, .section h2 { font-size: clamp(2.55rem, 11.5vw, 3.35rem); }
  .section-heading--split { gap: .85rem; }

  .service-click-hint { margin-top: -.4rem; }
  .service-feature-grid { gap: .45rem; }
  .service-feature { border-radius: 1rem; }
  .service-feature div { padding: .78rem .62rem .9rem; }
  .service-feature h3 { font-size: clamp(.92rem, 4.15vw, 1.08rem); }
  .service-card-cta { margin-top: .6rem; color: var(--terracotta); font-size: .73rem; }
  .service-card-cta__desktop { display: none; }
  .service-card-cta > .service-card-cta__mobile { display: inline; }
  .service-details { padding-inline: 1rem; }

  .senior__grid { grid-template-columns: 1fr; border-radius: 1.45rem; }
  .senior__media { min-height: 0; aspect-ratio: 4 / 3; }
  .senior__copy { padding: 1.75rem 1.35rem 2rem; }
  .senior__copy h2 { max-width: 10ch; }

  .philosophy__grid { grid-template-columns: 1fr; gap: 2.25rem; }
  .practice-gallery figure { border-radius: .85rem; }

  .team-grid { gap: .7rem; }
  .team-card, .team-card--lead { min-height: auto; grid-template-columns: 1fr; border-radius: 1.25rem; }
  .team-card__media { height: auto; aspect-ratio: 4 / 3; }
  .team-card__media img { height: 100%; }
  .team-card__body { padding: 1.35rem; }
  .team-note { align-items: flex-start; margin-top: .7rem; padding: 1.35rem; border-radius: 1.2rem; }

  .gallery-choices { gap: .65rem; }
  .gallery-choice { min-height: 10.5rem; border-radius: 1.2rem; }
  .dialog { border-radius: 1.2rem; }

  .review-stage { min-height: 21rem; }
  .review blockquote { font-size: clamp(1.65rem, 7.7vw, 2.25rem); }

  .contact-grid { grid-template-columns: 1fr; gap: .65rem; }
  .contact-details, .contact-hours, .map-consent { border-radius: 1.25rem; }
  .map-consent { height: 28rem; }
  .map-consent__placeholder { width: calc(100% - 1.5rem); padding: 1.4rem 1.15rem; }
  .map-consent__placeholder p { margin-block: .65rem; }
  .map-pin { margin-bottom: .7rem; }
  .parking-guide { margin-top: 3rem; }
  .parking-series { gap: .65rem; }
  .parking-series li { border-radius: 1.1rem; }
  .contact-form { margin-top: 3rem; border-radius: 1.35rem; }
  .hero__media .image-action__hint, .practice-gallery .image-action__hint, .team-card__media .image-action__hint, .parking-series .image-action__hint { opacity: 1; transform: none; }
}

@media (max-width: 23rem) {
  .brand img { width: 6.25rem; }
  .header-actions { grid-template-columns: repeat(2, 2.8rem); }
  .hours-list--compact { grid-template-columns: 1fr; }
}
