:root {
  --wine: #59162f;
  --wine-dark: #3e1022;
  --rose: #8c3f5b;
  --rose-light: #ddb3c2;
  --ink: #2e2428;
  --muted: #6d6266;
  --paper: #ffffff;
  --blush: #f7f2f4;
  --border: #e5dce0;
  --serif: 'Iowan Old Style', Baskerville, 'Palatino Linotype', 'Book Antiqua', Palatino, Georgia, serif;
  --sans: 'Segoe UI', Arial, sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 104px; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--sans); font-size: 1rem; line-height: 1.65; -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
img { display: block; max-width: 100%; }
::selection { background: var(--rose-light); color: var(--wine-dark); }
:focus-visible { outline: 3px solid #b5728b; outline-offset: 6px; border-radius: 2px; }
h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--serif); font-weight: 400; }
em { font-weight: 400; }
.container { width: min(1240px, calc(100% - 112px)); margin-inline: auto; }
.skip-link { position: fixed; top: -100px; left: 20px; z-index: 100; background: white; color: var(--wine); padding: 12px 20px; }
.skip-link:focus { top: 10px; }
.site-header { position: sticky; top: 0; z-index: 20; background: #fff; color: var(--wine); border-bottom: 1px solid var(--border); }
.header-inner { display: flex; align-items: center; justify-content: space-between; min-height: 94px; gap: 32px; }
.brand { display: inline-flex; align-items: center; gap: 16px; flex-shrink: 0; }
.logo-crop { position: relative; display: block; overflow: hidden; width: 41px; aspect-ratio: 31 / 36; flex-shrink: 0; }
.logo-crop img { position: absolute; left: -19.67%; top: -11.15%; width: 140.47%; max-width: none; height: auto; }
.logo-light { filter: brightness(1.05) invert(1); mix-blend-mode: screen; }
.brand-type { font: 1.6rem/1.15 var(--serif); letter-spacing: -.03em; }
.brand-type > span { display: block; margin-top: 7px; font: .75rem/1.2 var(--sans); letter-spacing: .28em; }
.nav { display: flex; align-items: center; gap: 32px; font-size: .875rem; }
.nav > a:not(.button) { position: relative; padding-block: 10px; }
.nav > a:not(.button)::after { content: ''; position: absolute; bottom: 4px; left: 0; width: 100%; height: 1px; background: var(--rose-light); transform: scaleX(0); transform-origin: left; transition: transform .2s; }
.nav > a:hover::after, .nav > a:focus-visible::after { transform: scaleX(1); }
.button { border-radius: 2px; display: inline-flex; align-items: center; justify-content: center; gap: 24px; min-height: 54px; padding: 14px 24px; font: 500 .9375rem/1.45 var(--sans); border: 1px solid transparent; transition: background .2s, color .2s, border-color .2s; }
.button > span { font-size: 1.25rem; line-height: 1; }
.button-header { min-height: 46px; border-color: #b698a3; font-size: .875rem; padding: 12px 18px; gap: 18px; }
.button-header:hover { background: var(--wine); color: #fff; border-color: var(--wine); }
.button-light { background: #fff; color: var(--wine); }
.button-light:hover { background: #eedce3; border-color: #eedce3; }
.menu-toggle { display: none; }
/* Photographic opening: restrained branding, generous space, warm materials. */
.hero { position: relative; isolation: isolate; background: #2f1820; color: #fff; }
.hero-scene { position: absolute; z-index: -2; inset: 0; margin: 0; overflow: hidden; }
.hero-scene img { width: 100%; height: 100%; object-fit: cover; object-position: center 55%; }
.hero::before { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(90deg, rgba(39, 12, 24, .93) 0%, rgba(39, 12, 24, .78) 28%, rgba(39, 12, 24, .32) 53%, rgba(39, 12, 24, .03) 76%), linear-gradient(0deg, rgba(29, 13, 20, .58), transparent 24%); }
.hero-grid { position: relative; display: flex; align-items: center; min-height: 662px; padding-top: 75px; padding-bottom: 78px; }
.hero-copy { width: 610px; max-width: 58%; padding-block: 4px; }
.eyebrow { font-size: .8125rem; font-weight: 500; letter-spacing: .2em; line-height: 1.6; }
.hero .eyebrow { display: flex; align-items: center; gap: 15px; color: #f1dce4; margin-bottom: 31px; }
.eyebrow-line { width: 37px; height: 1px; background: #cead9a; flex-shrink: 0; }
.hero h1 { font-size: clamp(3.25rem, 4.55vw, 4.75rem); line-height: 1.17; letter-spacing: -.045em; text-shadow: 0 1px 16px #1a091528; }
.hero h1 em { color: #e7cbd5; }
.hero-description { color: #f0e2e8; max-width: 445px; margin-top: 30px; font-size: 1.0625rem; line-height: 1.85; }
.hero-actions { display: flex; align-items: center; gap: 29px; margin-top: 35px; flex-wrap: wrap; }
.hero .button-light { background: #fbf8f5; color: var(--wine); padding-inline: 29px; }
.hero .button-light:hover { background: #ecdce2; }
.text-link { font-size: .875rem; border-bottom: 1px solid #c5a8b4; padding-block: 5px; transition: color .2s; }
.text-link:hover { color: var(--rose-light); }
.hero-bottom { position: relative; border-top: 1px solid #ffffff35; display: flex; justify-content: space-between; align-items: center; min-height: 65px; font-size: .8125rem; color: #f0dfe6; }
.hero-bottom a { display: inline-flex; gap: 30px; align-items: center; min-height: 44px; }
.hero-bottom a span { font-size: 1.25rem; }
.section { padding-block: 108px; }
.eyebrow-wine { color: var(--rose); }
.section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 72px; margin-bottom: 52px; }
h2 { font-size: clamp(2.65rem, 3.7vw, 3.65rem); line-height: 1.14; letter-spacing: -.045em; }
h2 em { color: var(--rose); }
.section-heading h2 { margin-top: 18px; }
.section-intro { max-width: 335px; color: var(--muted); padding-bottom: 5px; line-height: 1.8; }
.practice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
.practice-card { padding: 37px 40px 0; border: 1px solid var(--border); border-top: 2px solid #b78698; background: #fff; display: flex; flex-direction: column; }
.practice-card-family { background: #fbf8f9; }
.card-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 40px; }
.card-number { font-size: .875rem; color: var(--rose); }
.area-icon { width: 34px; height: 34px; color: var(--rose); }
.card-eyebrow { color: var(--rose); font-size: .75rem; letter-spacing: .15em; margin-bottom: 10px; }
.practice-card h3 { color: var(--wine); font-size: 2.2rem; letter-spacing: -.045em; line-height: 1.25; margin-bottom: 18px; }
.practice-card > p:not(.card-eyebrow) { color: var(--muted); max-width: 430px; line-height: 1.8; }
.service-list { list-style: none; padding: 0; margin: 26px 0 32px; }
.service-list li { padding: 9px 0 9px 20px; position: relative; font-size: .9375rem; }
.service-list li::before { content: ''; position: absolute; left: 0; top: 21px; width: 6px; height: 1px; background: var(--rose); }
.card-contact { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 76px; border-top: 1px solid var(--border); color: var(--wine); font-size: .9375rem; font-weight: 500; transition: color .2s; }
.card-contact span { font-size: 1.5rem; font-weight: 400; transition: transform .2s; }
.card-contact:hover { color: var(--rose); }
.card-contact:hover span { transform: translate(3px, -3px); }
.about { background: #f6f1f3; border-top: 1px solid var(--border); }
.about-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 84px; align-items: center; }
.about-portrait { position: relative; width: 100%; max-width: 430px; margin: 0; padding: 0 12px 12px 0; }
.about-portrait::before { content: ''; position: absolute; inset: 18px 0 0 18px; border: 1px solid #b8899c; pointer-events: none; }
.about-portrait img { position: relative; width: 100%; height: auto; aspect-ratio: 2 / 3; display: block; box-shadow: 0 14px 38px #32162312; }
.about-content { min-width: 0; }
.about-title h2 { margin-top: 20px; font-size: clamp(3.15rem, 4.2vw, 4.15rem); color: var(--wine); }
.about-role { margin-top: 18px; font-size: .75rem; letter-spacing: .15em; color: var(--rose); }
.about-rule { width: 52px; height: 1px; background: var(--rose); margin-top: 25px; }
.about-copy { padding-top: 28px; }
.about-copy .about-lead { font-family: var(--serif); font-size: 2rem; line-height: 1.35; letter-spacing: -.025em; color: var(--wine); margin-bottom: 26px; max-width: 470px; }
.about-copy > p { color: var(--muted); margin-bottom: 18px; line-height: 1.85; }
.approach { display: flex; flex-wrap: wrap; gap: 10px 25px; border-top: 1px solid #dcd0d5; margin-top: 32px; padding-top: 24px; color: var(--wine); font-size: .875rem; }
.contact { background: var(--wine); color: white; }
.contact-grid { display: grid; grid-template-columns: 1.1fr 1fr; gap: 100px; align-items: center; }
.contact .eyebrow { color: #e0b5c5; margin-bottom: 23px; }
.contact h2 { font-size: clamp(2.7rem, 3.8vw, 3.9rem); }
.contact h2 em { color: var(--rose-light); }
.contact-description { margin-top: 25px; max-width: 410px; color: #ead6de; line-height: 1.85; }
.contact .button { margin-top: 30px; gap: 14px; }
.contact .button svg { width: 20px; height: 20px; flex-shrink: 0; }
.contact .button > span { margin-left: 10px; }
.contact-item { display: block; padding-block: 23px; border-bottom: 1px solid #ffffff30; }
.contact-item:first-child { border-top: 1px solid #ffffff30; }
.contact-label { display: block; font-size: .75rem; letter-spacing: .18em; color: #ddb5c5; margin-bottom: 8px; }
.contact-value { display: flex; align-items: center; justify-content: space-between; gap: 20px; font-size: 1.125rem; }
.contact-value > span { font-size: 1.25rem; }
.contact-email { overflow-wrap: anywhere; font-size: 1rem; }
a.contact-item:hover .contact-value { color: var(--rose-light); }
.site-footer { padding-top: 48px; padding-bottom: 27px; }
.footer-top { display: flex; align-items: center; justify-content: space-between; gap: 30px; padding-bottom: 35px; border-bottom: 1px solid var(--border); }
.footer-brand { color: var(--wine); }
.footer-brand .logo-crop { width: 34px; }
.footer-brand .brand-type { font-size: 1.4rem; }
.footer-brand .brand-type > span { font-size: .75rem; }
.footer-top > p, .back-top { font-size: .875rem; color: var(--muted); }
.back-top { display: inline-flex; align-items: center; gap: 24px; min-height: 44px; }
.back-top:hover { color: var(--wine); }
.footer-bottom { display: flex; justify-content: space-between; gap: 24px; margin-top: 23px; font-size: .75rem; color: var(--muted); }
@media (min-width: 1550px) { .hero-grid { min-height: 725px; padding-block: 90px; } }
@media (max-width: 1160px) {
  .container { width: calc(100% - 80px); }
  .nav { gap: 22px; }
  .nav > a { font-size: .8125rem; }
  .button-header { padding: 10px 14px; }
  .brand-type { font-size: 1.45rem; }
  .hero-grid { min-height: 622px; padding-block: 68px; }
  .hero-copy { max-width: 62%; }
  .hero h1 { font-size: 3.6rem; }
  .hero-actions { gap: 22px; }
  .contact-grid { gap: 60px; }
  .practice-card { padding-inline: 30px; }
}
@media (max-width: 960px) {
  .header-inner { min-height: 86px; }
  .menu-toggle { display: inline-flex; align-items: center; justify-content: center; gap: 12px; min-width: 86px; min-height: 44px; padding: 9px 2px 9px 12px; background: none; border: none; color: var(--wine); cursor: pointer; font-size: .875rem; }
  .menu-lines { position: relative; width: 22px; height: 16px; border-block: 1px solid currentColor; transition: border-color .2s; }
  .menu-lines::after { content: ''; position: absolute; left: 0; right: 0; top: 7px; height: 1px; background: currentColor; }
  .menu-toggle[aria-expanded='true'] .menu-lines { border-color: transparent; }
  .menu-toggle[aria-expanded='true'] .menu-lines::before, .menu-toggle[aria-expanded='true'] .menu-lines::after { content: ''; position: absolute; left: 0; right: 0; top: 7px; height: 1px; background: currentColor; transform: rotate(45deg); }
  .menu-toggle[aria-expanded='true'] .menu-lines::after { transform: rotate(-45deg); }
  .nav { position: absolute; left: 0; right: 0; top: 100%; background: #fff; display: none; padding: 24px 40px 32px; border-bottom: 1px solid var(--border); box-shadow: 0 15px 25px #23091620; }
  .nav[data-open='true'] { display: flex; align-items: stretch; flex-direction: column; gap: 8px; }
  .nav > a:not(.button) { padding-block: 12px; font-size: 1rem; }
  .nav .button { margin-top: 9px; font-size: .9375rem; align-self: flex-start; }
  .hero-grid { min-height: 610px; padding-block: 64px; }
  .hero-copy { width: 540px; max-width: 72%; }
  .hero-scene img { object-position: 59% center; }
  .hero::before { background: linear-gradient(90deg, rgba(39,12,24,.94), rgba(39,12,24,.77) 35%, rgba(39,12,24,.18) 100%), linear-gradient(0deg, rgba(29,13,20,.65), transparent 25%); }
  .hero h1 { font-size: clamp(2.65rem, 5.5vw, 3.5rem); }
  .hero-description { font-size: 1rem; }
  .hero-actions { gap: 18px; }
  .section { padding-block: 80px; }
  .section-heading { gap: 40px; }
  .section-intro { max-width: 270px; }
  .practice-grid { gap: 22px; }
  .practice-card { padding-inline: 26px; }
  .practice-card h3 { font-size: 1.95rem; }
  .about-grid { gap: 42px; align-items: start; }
  .about-title h2 { font-size: 3.1rem; }
  .contact-grid { gap: 38px; }
  .contact .button { font-size: .875rem; padding-inline: 18px; }
  .contact .button > span { margin-left: 0; }
  .footer-top > p { display: none; }
}
@media (max-width: 700px) {
  html { scroll-padding-top: 84px; }
  .container { width: calc(100% - 44px); }
  .header-inner { min-height: 80px; gap: 15px; }
  .brand { gap: 12px; }
  .logo-crop { width: 32px; }
  .brand-type { font-size: 1.4rem; }
  .brand-type > span { font-size: .75rem; letter-spacing: .2em; margin-top: 5px; }
  .nav { padding-inline: 22px; }
  .hero-grid { min-height: 665px; padding-top: 178px; padding-bottom: 38px; align-items: flex-end; }
  .hero-copy { width: 100%; max-width: none; }
  .hero-scene img { object-position: 65% top; }
  .hero::before { background: linear-gradient(0deg, rgba(37,12,24,.97) 4%, rgba(37,12,24,.88) 44%, rgba(37,12,24,.40) 75%, rgba(37,12,24,.08) 100%); }
  .hero .eyebrow { font-size: .75rem; margin-bottom: 23px; letter-spacing: .17em; }
  .hero h1 { font-size: clamp(2.65rem, 8.7vw, 3.7rem); line-height: 1.17; letter-spacing: -.045em; }
  .hero-description { font-size: 1rem; margin-top: 22px; max-width: 460px; line-height: 1.75; }
  .hero-actions { margin-top: 28px; gap: 18px 24px; }
  .hero-bottom { min-height: 68px; gap: 22px; font-size: .75rem; }
  .hero-bottom > span { max-width: 215px; }
  .hero-bottom a { gap: 16px; }
  .section { padding-block: 64px; }
  .eyebrow { font-size: .75rem; letter-spacing: .15em; }
  h2 { font-size: 2.6rem; }
  .section-heading { display: block; margin-bottom: 32px; }
  .section-heading h2 { margin-top: 17px; }
  .section-intro { margin-top: 24px; max-width: 440px; }
  .practice-grid { grid-template-columns: 1fr; gap: 20px; }
  .practice-card { padding: 28px 25px 0; }
  .card-top { margin-bottom: 28px; }
  .practice-card h3 { font-size: 2.15rem; }
  .service-list { margin-block: 20px 24px; }
  .card-contact { min-height: 72px; }
  .about-grid { grid-template-columns: 1fr; gap: 38px; }
  .about-content { display: contents; }
  .about-title { grid-row: 1; }
  .about-portrait { grid-row: 2; justify-self: center; max-width: 400px; }
  .about-copy { grid-row: 3; padding-top: 0; }
  .about-title h2 { font-size: 3.4rem; margin-top: 20px; }
  .about-role { margin-top: 20px; line-height: 1.8; }
  .about-rule { margin-top: 24px; }
  .about-copy .about-lead { font-size: 1.8rem; }
  .approach { gap: 12px 23px; }
  .contact-grid { grid-template-columns: 1fr; gap: 44px; }
  .contact h2 { font-size: 2.85rem; }
  .contact-description { margin-top: 22px; }
  .contact .button { font-size: .875rem; gap: 12px; padding-inline: 18px; }
  .contact-value { font-size: 1.0625rem; }
  .contact-email { font-size: 1rem; }
  .site-footer { padding-top: 32px; }
  .footer-top { flex-wrap: wrap; gap: 20px; padding-bottom: 25px; }
  .footer-top .brand-type { font-size: 1.3rem; }
  .footer-top .logo-crop { width: 30px; }
  .back-top { font-size: .8125rem; gap: 10px; }
  .footer-bottom { flex-direction: column; gap: 8px; font-size: .75rem; }
}
@media (max-width: 380px) {
  .container { width: calc(100% - 36px); }
  .hero h1 { font-size: 2.45rem; }
  .hero-grid { padding-top: 145px; min-height: 640px; }
  .brand-type { font-size: 1.25rem; }
  .menu-toggle { min-width: 76px; gap: 9px; }
  .hero-actions { gap: 17px; }
  .contact .button { width: 100%; font-size: .8125rem; padding-inline: 12px; gap: 9px; }
  .about-title h2 { font-size: 3rem; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
