:root{--navy:#03182b;--burgundy:#541b37;--cream:#e7dccb}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--navy);background:var(--navy);font-family:'Cormorant Garamond',Georgia,serif}h1,h2,h3,p{margin:0;font-weight:400}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}a:focus-visible{outline:3px solid currentColor;outline-offset:6px}a{transition:opacity .2s}a:hover{opacity:.8}.skip-link{position:fixed;left:1rem;top:-6rem;z-index:99;background:var(--cream);padding:1rem}.skip-link:focus{top:1rem}.scene{width:100%;margin:0;padding:0;position:relative;overflow:clip}.canvas{width:100%;aspect-ratio:16/9;position:relative;container-type:inline-size}.base{position:absolute;width:100%;height:100%;inset:0;object-fit:cover}.paper{background:url('assets/cream_paper.webp') center/cover}.navigation{position:absolute;z-index:20;right:5%;top:2.26vw;display:flex;gap:3.1vw;color:var(--cream);font:500 1.4vw/1.2 'Montserrat',Arial,sans-serif}.navigation[data-tone="dark"]{color:var(--navy)}.hero{background:#3b0d23}.hero h1{position:absolute;left:14.2%;top:8.8%;font-size:4.15cqw;line-height:.9;color:#174465}.hero h1 span{display:block}.hero h1 span+span{margin-left:5.75cqw}.profession{position:absolute;left:25.65%;top:23.4%;font:500 2.1cqw/1.2 'Montserrat',Arial,sans-serif;color:#111}.profession:after{content:'';display:block;width:105%;height:.17cqw;margin:.6cqw auto 0;background:var(--burgundy);transform:rotate(-1deg)}.hero-cta{position:absolute;left:5.3%;top:64.9%;font-size:2.65cqw;font-style:italic;color:var(--cream)}.arrow{display:block;line-height:.55;transition:transform .2s}.hero-cta .arrow{text-align:center;font-style:normal;font-size:4.7cqw}.hero-cta:hover .arrow,.service-list li:hover .arrow{transform:translateX(5px)}.brand{background:#341021}.brand-copy{position:absolute;left:22%;top:44.9%;width:27.5%;text-align:center;color:#171c19}.brand h2{font-size:3cqw;line-height:1.1}.brand p{font-size:1.9cqw;font-style:italic;margin-top:.6cqw}.about{background:var(--navy)}.about-paper{position:absolute;left:7.05%;top:8.85%;width:50.45%;height:91.15%}.about-header{position:absolute;left:7.05%;top:8.85%;width:50.45%;height:16.2%;background:#40112a;display:grid;place-items:center;color:var(--cream)}.about-header h2{font:500 1.4cqw 'Montserrat',Arial,sans-serif}.portrait-frame{position:absolute;left:57.5%;top:8.85%;width:42.5%;height:91.15%;overflow:clip}.portrait{width:100%;height:100%;object-fit:cover}.about-seal{position:absolute;left:54.1%;top:19.9%;width:5.9%;z-index:2}.about-copy{position:absolute;left:10.15%;top:36.8%;width:44%;font-size:2.16cqw;line-height:1.4;color:#171616}.about-copy .intro{font-size:2.65cqw;font-style:italic;color:var(--burgundy);white-space:nowrap;line-height:1.2;margin-bottom:.7cqw}.signature{position:absolute;left:28.5%;top:71.8%;width:18.5%;height:13%;object-fit:contain}.services{background:#42152b}.services h2{position:absolute;left:7%;top:34.8%;width:27%;text-align:center;font-size:4.35cqw;line-height:1.35;font-weight:600;color:#263c3c}.services-intro{position:absolute;left:35.55%;top:29%;width:25%;font-size:1.95cqw;line-height:1.36;color:#151513}.service-list{position:absolute;left:62.25%;right:3.5%;top:16.7%;padding:0;margin:0;list-style:none;color:#141412;display:grid;gap:3.45cqw}.service-list li{position:relative;display:flex;gap:1.2cqw;align-items:start;min-height:2.75cqw}.service-list li:before{content:'';width:2.6cqw;height:2.55cqw;flex-shrink:0;background:url('assets/medalion_pusty.webp') center/contain no-repeat}.service-number{font-weight:600;font-size:1.65cqw;line-height:1.2;letter-spacing:.18cqw;min-width:2cqw}.service-name{font-size:2.15cqw;line-height:1.1;font-weight:500;font-style:italic;white-space:nowrap}.service-name .arrow{color:var(--burgundy);font-style:normal;font-size:3cqw;margin-left:4.9cqw;line-height:.32}.before{background:#e8e1d4}.coffee-panel{position:absolute;left:0;top:0;bottom:0;width:18.5%;background:#3b132a}.coffee-panel img{width:100%;height:90%;object-fit:cover;object-position:45% center}.wordmark{position:absolute;left:26%;top:3.4%;display:flex;align-items:center;gap:.35cqw;font-size:1cqw;font-weight:600;letter-spacing:.2cqw}.wordmark img{width:4cqw}.wordmark small{display:block;color:var(--burgundy);font-size:.7cqw;letter-spacing:.15cqw}.before-intro{position:absolute;left:26.65%;top:17.8%;width:26.2%}.eyebrow{font:500 1.05cqw 'Montserrat',Arial,sans-serif}.before h2{font-size:4.1cqw;line-height:1.1;color:var(--burgundy);font-weight:500;margin:.25cqw 0 1.4cqw}.before h2:after{content:'';display:block;width:57%;height:.16cqw;background:var(--burgundy);margin:1cqw .5cqw 0;transform:rotate(-1deg)}.before-intro>p:last-child{font-size:1.65cqw;line-height:1.4}.before-note{position:absolute;left:26%;top:73%;width:31%}.before-note p:first-child{font-size:1.65cqw;font-weight:600;color:var(--burgundy)}.before-note p+p{font-size:1.2cqw;font-weight:600}.steps{position:absolute;left:60.8%;top:11.1%;right:2.5%;padding:0;margin:0;list-style:none}.steps:before{content:'';position:absolute;left:-4.45cqw;top:-.6cqw;bottom:-1.5cqw;width:1px;background:#84536b}.steps li{position:relative;min-height:12cqw}.steps li:after{content:'';position:absolute;bottom:1.25cqw;left:0;width:55%;height:1px;background:var(--burgundy)}.steps h3{font-size:2.35cqw;line-height:1.16;color:var(--burgundy);font-style:italic;font-weight:500}.steps p{font-size:1.48cqw;line-height:1.42;margin-top:.35cqw;color:#171513}.step-number{position:absolute;left:-6.75cqw;top:1.2cqw;width:5.25cqw;aspect-ratio:1;display:grid;place-items:center;background:url('assets/medalion_pusty.webp') center/contain no-repeat;font-size:2.1cqw;font-weight:600}.before-actions{position:absolute;left:60.8%;top:77.3%;width:29.5%}.primary{display:block;background:#03223c;color:var(--cream);padding:1.65cqw .7cqw;text-align:center;font:500 1.3cqw 'Montserrat',Arial,sans-serif}.secondary{display:flex;align-items:center;justify-content:space-between;margin-top:.45cqw;white-space:nowrap;color:var(--burgundy);font:500 .94cqw 'Montserrat',Arial,sans-serif}.secondary span{font-size:2.5cqw;line-height:.6}.contact{background:#3b1128}.contact h2{position:absolute;top:14.1%;left:15%;width:70%;text-align:center;color:var(--cream);font-size:3.05cqw;line-height:1.23;font-weight:500}.contact-column{position:absolute;top:36%;width:22%;height:40%;text-align:center}.contact-column h3{font-size:3.2cqw;color:var(--cream);line-height:1.2}.contact-column p,.contact-column address{position:absolute;top:67%;width:100%;font-size:2.1cqw;line-height:1.16;font-style:normal;font-weight:600}.contact-column span,.contact-column a{display:block}.address{left:11.5%}.hours{left:39%}.details{left:66.5%}.details p{font-size:1.65cqw;line-height:1.2;left:6.5%;display:grid;justify-items:center;align-content:center;text-align:center}.contact a:hover{text-decoration:underline}
@media(max-width:900px){.navigation{font-size:max(10px,1.4vw);gap:2vw}.canvas{min-height:0}.service-name{white-space:normal}}


/* Editorial discovery: one reveal per section, final composition unchanged. */
:root{--editorial-ease:cubic-bezier(.22,1,.36,1)}
.coffee-panel{overflow:clip}
.motion-enabled :is(.hero h1 span,.profession,.hero-cta,.brand-copy h2,.brand-copy p,.about-copy p,.signature,.services h2,.services-intro,.service-list li,.before-intro>*,.steps li,.before-actions,.contact h2,.contact-column){opacity:0}
.motion-enabled .hero .base{opacity:.86}
.motion-enabled :is(.brand .base,.services .base,.portrait,.coffee-panel img,.contact .base){opacity:.94}
.motion-enabled .profession:after{transform:rotate(-1deg) scaleX(0);transform-origin:left}
.motion-enabled .steps:before{transform:scaleY(0);transform-origin:top}
.motion-enabled .is-revealed :is(.hero h1 span,.profession,.hero-cta,.brand-copy h2,.brand-copy p,.about-copy p,.services h2,.services-intro,.service-list li,.before-intro>*,.steps li,.before-actions,.contact h2,.contact-column){animation:editorial-rise var(--motion-duration,1050ms) var(--editorial-ease) var(--motion-delay,0ms) both}
.motion-enabled .hero.is-revealed .base{animation:hero-base 1800ms var(--editorial-ease) both}
.hero h1 span{--motion-distance:24px;--motion-delay:300ms;--motion-duration:1050ms}
.hero h1 span+span{--motion-delay:500ms}
.profession{--motion-distance:16px;--motion-delay:700ms;--motion-duration:950ms}
.motion-enabled .hero.is-revealed .profession:after{animation:hero-line 850ms var(--editorial-ease) 1000ms both}
.hero-cta{--motion-distance:14px;--motion-delay:1450ms;--motion-duration:950ms}
.motion-enabled :is(.brand,.services).is-revealed .base{animation:visual-base 1400ms var(--editorial-ease) both}
.motion-enabled .about.is-revealed .portrait{animation:visual-base 1500ms var(--editorial-ease) both}
.motion-enabled .before.is-revealed .coffee-panel img{animation:visual-base 1500ms var(--editorial-ease) both}
/* Contact uses opacity only: the gold medallions never change size. */
.motion-enabled .contact.is-revealed .base{animation:visual-fade 1400ms var(--editorial-ease) both}
.brand-copy h2{--motion-distance:20px;--motion-duration:1100ms;--motion-delay:150ms}
.brand-copy p{--motion-distance:20px;--motion-duration:1100ms;--motion-delay:330ms}
.about-copy p{--motion-distance:20px;--motion-duration:1000ms;--motion-delay:200ms}
.about-copy p+p{--motion-delay:380ms}
.motion-enabled .about.is-revealed .signature{animation:editorial-fade 950ms var(--editorial-ease) 580ms both}
.services h2{--motion-distance:20px;--motion-duration:1050ms;--motion-delay:150ms}
.services-intro{--motion-distance:18px;--motion-delay:300ms}
.service-list li{--motion-distance:16px;--motion-delay:450ms;--motion-duration:900ms}
.service-list li:nth-child(2){--motion-delay:570ms}
.service-list li:nth-child(3){--motion-delay:690ms}
.service-list li:nth-child(4){--motion-delay:810ms}
.service-list li:nth-child(5){--motion-delay:930ms}
.service-list li:nth-child(6){--motion-delay:1050ms}
.before-intro .eyebrow{--motion-distance:12px;--motion-delay:150ms;--motion-duration:950ms}
.before-intro h2{--motion-distance:22px;--motion-delay:300ms;--motion-duration:1100ms}
.before-intro>p:last-child{--motion-distance:18px;--motion-delay:470ms;--motion-duration:1050ms}
.motion-enabled .before.is-revealed .steps:before{animation:step-line 1100ms var(--editorial-ease) 500ms both}
.steps li{--motion-distance:14px;--motion-delay:650ms;--motion-duration:1000ms}
.steps li:nth-child(2){--motion-delay:830ms}
.steps li:nth-child(3){--motion-delay:1010ms}
.before-actions{--motion-distance:14px;--motion-delay:1370ms;--motion-duration:950ms}
.contact h2{--motion-distance:20px;--motion-delay:150ms;--motion-duration:1050ms}
.contact-column{--motion-distance:16px;--motion-delay:400ms;--motion-duration:950ms}
.contact-column.hours{--motion-delay:580ms}
.contact-column.details{--motion-delay:760ms}
@keyframes editorial-rise{from{opacity:0;transform:translateY(var(--motion-distance,20px))}to{opacity:1;transform:none}}
@keyframes editorial-fade{from{opacity:0}to{opacity:1}}
@keyframes visual-base{from{opacity:.94;transform:scale(1.012)}to{opacity:1;transform:none}}
@keyframes visual-fade{from{opacity:.94}to{opacity:1}}
@keyframes hero-base{from{opacity:.86;transform:scale(1.025)}to{opacity:1;transform:none}}
@keyframes hero-line{from{transform:rotate(-1deg) scaleX(0)}to{transform:rotate(-1deg) scaleX(1)}}
@keyframes step-line{from{transform:scaleY(0)}to{transform:scaleY(1)}}
.motion-enabled :is(.hero-cta:focus-visible,.before-actions:focus-within,.contact-column:focus-within){animation:none!important;opacity:1!important;transform:none!important}
@media(prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}
 *,*:before,*:after{animation:none!important;transition:none!important}
 :is(.base,.portrait,.coffee-panel img,.hero h1 span,.profession,.profession:after,.hero-cta,.brand-copy h2,.brand-copy p,.about-copy p,.signature,.services h2,.services-intro,.service-list li,.before-intro>*,.steps:before,.steps li,.before-actions,.contact h2,.contact-column,.arrow){opacity:1!important;transform:none!important}
}

/* The desktop composition above remains the source of truth. */
.mobile-navigation,.mobile-hero-seal{display:none}
@media(max-width:900px){
 .scene{overflow:clip}.canvas{aspect-ratio:auto;min-height:0;container-type:normal}
 .navigation{display:none}
 .mobile-navigation{display:block;position:absolute;z-index:30;right:24px;top:18px;color:var(--navy);font:500 14px/1.4 'Montserrat',Arial,sans-serif}
 .mobile-navigation summary{cursor:pointer;list-style:none;min-width:60px;min-height:44px;display:flex;align-items:center;justify-content:flex-end}
 .mobile-navigation summary::-webkit-details-marker{display:none}
 .mobile-navigation summary:focus-visible{outline:2px solid var(--burgundy);outline-offset:3px}
 .mobile-navigation nav{position:absolute;right:0;top:48px;min-width:230px;padding:18px 24px;background:var(--cream) url('assets/cream_paper.webp') center/cover}
 .mobile-navigation nav a{display:block;min-height:48px;padding:14px 0;font-size:15px}
 .hero .canvas{padding:78px 0 0;background:var(--cream) url('assets/cream_paper.webp') center/cover;display:flex;flex-direction:column}
 .hero h1{position:static;order:0;margin:0 24px;color:#174465;font-size:clamp(47px,12.7vw,78px);line-height:.94;letter-spacing:-.025em}
 .hero h1 span+span{margin-left:0}
 .profession{position:static;order:1;align-self:flex-start;margin:18px 24px 32px;font-size:17px;letter-spacing:.08em}
 .profession:after{height:2px;margin-top:8px}
 .hero .base{position:relative;inset:auto;order:2;width:100%;height:clamp(380px,110vw,650px);object-fit:cover;object-position:76% center}
 .mobile-hero-seal{display:block;position:absolute;z-index:2;top:238px;right:22px;width:76px;height:auto}
 .hero-cta{position:static;order:3;margin:0;padding:28px 24px 30px;background:#3b0d23;color:var(--cream);font-size:clamp(24px,6.5vw,34px);line-height:1.2;display:block;text-align:left}
 .hero-cta .arrow{font-size:48px;text-align:right;line-height:.7;margin-top:12px}
 .brand .canvas{height:440px}
 .brand .base{object-fit:cover;object-position:22% center}
 .brand-copy{left:50%;top:55%;width:265px;max-width:82%;transform:translate(-50%,-50%)}
 .brand h2{font-size:31px;line-height:1.1}
 .brand p{font-size:22px;line-height:1.25;margin-top:12px}
 .about .canvas{display:flex;flex-direction:column;padding:0 24px 42px;border-left:16px solid var(--navy);background:var(--cream) url('assets/cream_paper.webp') center/cover}
 .about-paper{display:none}
 .about-header{position:static;width:calc(100% + 48px);height:88px;margin:0 -24px 28px;flex-shrink:0}
 .about-header h2{font-size:14px;letter-spacing:.1em}
 .portrait-frame{position:relative;left:auto;top:auto;width:100%;height:auto;aspect-ratio:872/1050}
 .portrait{position:absolute;inset:0}
 .about-seal{position:relative;left:auto;top:auto;align-self:flex-end;width:70px;margin:-35px -8px 24px;z-index:2}
 .about-copy{position:static;width:auto;font-size:23px;line-height:1.4}
 .about-copy .intro{font-size:29px;line-height:1.16;white-space:normal;margin-bottom:18px}
 .signature{position:static;width:175px;max-width:72%;height:auto;margin:26px 0 0;align-self:flex-end}
 .services .canvas{padding:42px 24px 44px;background:var(--cream) url('assets/cream_paper.webp') center/cover}
 .services .base{display:none}
 .services h2{position:static;width:250px;max-width:100%;height:245px;margin:0 auto 28px;display:flex;flex-direction:column;justify-content:center;background:url('assets/medalion_pusty.webp') center/contain no-repeat;font-size:39px;line-height:1.15;font-weight:600;text-align:center}
 .services-intro{position:static;width:100%;font-size:23px;line-height:1.4}
 .service-list{position:static;display:grid;gap:15px;margin:32px 0 0;padding:0}
 .service-list li{min-height:70px;gap:12px;align-items:flex-start;padding:10px 0}
 .service-list li:before{width:20px;height:20px;margin-top:5px}
 .service-number{font-size:19px;line-height:1.4;letter-spacing:.04em;min-width:23px}
 .service-name{font-size:27px;line-height:1.08;white-space:normal;min-width:0}
 .service-name .arrow{font-size:38px;line-height:.55;margin:8px 0 0 35px}
 .before .canvas{display:flex;flex-direction:column;padding:28px 24px 48px}
 .wordmark{position:static;order:0;gap:8px;letter-spacing:.13em;font-size:12px;margin:0 0 26px;min-height:45px}
 .wordmark img{width:48px}.wordmark small{font-size:10px;letter-spacing:.12em}
 .coffee-panel{position:relative;inset:auto;order:1;width:calc(100% + 48px);height:280px;margin:0 -24px 34px}
 .coffee-panel img{width:100%;height:100%;object-fit:cover;object-position:center 61%}
 .before-intro{position:static;order:2;width:100%;margin:0 0 36px}
 .eyebrow{font-size:13px;letter-spacing:.07em}
 .before h2{font-size:clamp(40px,11.3vw,60px);line-height:1.07;margin:13px 0 24px}
 .before h2:after{height:2px;margin:20px 0 0;width:60%}
 .before-intro>p:last-child{font-size:23px;line-height:1.4}
 .steps{position:relative;inset:auto;order:3;padding:0 0 0 65px;margin:0 0 12px}
 .steps:before{left:24px;top:0;bottom:25px}
 .steps li{min-height:0;margin:0 0 26px;padding:0 0 26px}
 .steps h3{font-size:29px;line-height:1.1}
 .steps p{font-size:22px;line-height:1.38;margin-top:12px}
 .step-number{left:-65px;top:0;width:50px;font-size:24px}
 .steps li:after{bottom:0;left:0;width:75%}
 .before-note{position:static;order:4;width:100%;margin:0 0 28px}
 .before-note p:first-child{font-size:27px;line-height:1.15;margin-bottom:10px}
 .before-note p+p{font-size:21px;line-height:1.3}
 .before-actions{position:static;order:5;width:100%}
 .primary{font-size:13px;line-height:1.5;padding:20px 16px;min-height:60px}
 .secondary{font-size:11px;line-height:1.65;white-space:normal;gap:12px;min-height:60px;padding:14px 0;margin:0}
 .secondary span{font-size:32px;flex-shrink:0}
 .contact .canvas{padding:44px 20px 54px;display:flex;flex-direction:column;align-items:center;gap:30px;background:#3b1128}
 .contact .base{display:none}
 .contact h2{position:static;width:100%;max-width:460px;font-size:33px;line-height:1.16;margin:0 0 10px;text-align:center}
 .contact h2 br{display:none}
 .contact-column{position:relative;inset:auto;width:280px;max-width:100%;height:360px;flex-shrink:0}
 .contact-column:before{content:'';position:absolute;top:70px;left:0;width:280px;height:280px;border-radius:50%;background-image:url('assets/contact_base.webp');background-size:1349.27px 758.96px;background-position:var(--medal-x) -349.5px}
 .contact-column.address{--medal-x:-163px}.contact-column.hours{--medal-x:-540.6px}.contact-column.details{--medal-x:-925px}
 .contact-column h3{font-size:35px;line-height:1.2}
 .contact-column p,.contact-column address{top:205px;left:0;width:100%;font-size:26px;line-height:1.25;margin:0;z-index:1}
 .contact-column.details p{font-size:24px;line-height:1.25;left:0}
 .contact-column a{min-height:44px;display:flex;justify-content:center;align-items:center}
 .contact-column .map-link{display:block;padding:0 12px;min-height:70px}
 .mobile-motion [data-mobile-reveal]{opacity:0;--motion-delay:0ms;--motion-duration:950ms;--motion-distance:14px}
 .mobile-motion [data-mobile-reveal].is-mobile-revealed{animation:editorial-rise var(--motion-duration) var(--editorial-ease) var(--motion-delay) both}
 .mobile-motion .hero h1 span{--motion-delay:150ms}.mobile-motion .hero h1 span+span{--motion-delay:330ms}.mobile-motion .profession{--motion-delay:500ms}
 .mobile-motion :is(.portrait-frame,.coffee-panel,.signature)[data-mobile-reveal].is-mobile-revealed{animation-name:editorial-fade}
 .mobile-motion [data-mobile-reveal]:focus-within{animation:none!important;opacity:1!important;transform:none!important}
}
@media(min-width:600px) and (max-width:900px){
 .hero .canvas{padding-top:85px}.hero h1{font-size:78px;margin-left:40px}.profession{margin-left:40px}.mobile-hero-seal{top:255px;width:94px}
 .brand .canvas{height:550px}.brand .base{object-position:27% center}.brand-copy{width:330px}.brand h2{font-size:40px}.brand p{font-size:26px}
 .about .canvas,.services .canvas,.before .canvas{padding-left:54px;padding-right:54px}
 .about-header,.coffee-panel{width:calc(100% + 108px);margin-left:-54px;margin-right:-54px}
 .portrait-frame{max-width:440px;align-self:center}.about-seal{align-self:center;margin-left:350px}
}
@media(prefers-reduced-motion:reduce){.mobile-motion [data-mobile-reveal]{opacity:1!important;transform:none!important;animation:none!important}}

/* Small mobile refinements; desktop rules remain untouched. */
@media(max-width:900px){
 .hero .mobile-hero-seal{display:none}
 .brand h2{font-size:27px}
 .brand p{font-size:19px;margin-top:10px}
 .about .canvas{border-left:0;padding-bottom:32px}
 .about .signature{align-self:center;margin:24px auto 0}
 .services .canvas{padding-top:32px}
 .before .wordmark{display:none}
 .before .canvas{padding-top:0}
}
@media(min-width:600px) and (max-width:900px){
 .brand h2{font-size:35px}
 .brand p{font-size:23px}
}

/* Full-row actions preserve the existing list composition. */
.service-trigger{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;background:transparent;color:inherit;cursor:pointer;border-radius:0}
.service-trigger:focus-visible{outline:2px solid var(--burgundy);outline-offset:6px}
.service-list li:focus-within{opacity:1!important;animation:none!important;transform:none!important}
.service-list li:focus-within .arrow{transform:translateX(5px)}
.mobile-services-label{display:none}

/* Paper document dialog: fixed header and independently scrollable copy. */
html.dialog-open,html.dialog-open body{overflow:hidden;overscroll-behavior:none}
.service-dialog{padding:0;border:0;border-radius:0;margin:auto;width:min(680px,calc(100% - 64px));max-width:none;max-height:calc(100dvh - 64px);overflow:hidden;color:var(--navy);background:var(--cream) url('assets/cream_paper.webp') center/cover;font-family:'Cormorant Garamond',Georgia,serif}
.service-dialog[open]{display:flex;flex-direction:column;animation:dialog-in 220ms var(--editorial-ease) both}
.service-dialog::backdrop{background:rgba(35,9,24,.74);animation:dialog-backdrop-in 220ms ease-out both}
.dialog-header{display:flex;align-items:flex-start;gap:16px;padding:34px 30px 22px 44px;flex-shrink:0}
.dialog-header h2{flex:1;min-width:0;color:var(--burgundy);font:500 18px/1.5 'Montserrat',Arial,sans-serif;letter-spacing:.06em;padding-top:9px;overflow-wrap:anywhere}
.dialog-close{flex:0 0 44px;width:44px;height:44px;border:0;background:transparent;padding:0;color:var(--burgundy);font:400 36px/1 Georgia,serif;cursor:pointer}
.dialog-close:hover{opacity:.7}
.dialog-close:focus-visible,.dialog-content:focus-visible,.dialog-cta:focus-visible{outline:2px solid var(--burgundy);outline-offset:3px}
.dialog-content{padding:0 44px 40px;overflow-y:auto;overflow-x:hidden;min-height:0;overscroll-behavior:contain;font-size:23px;line-height:1.4;overflow-wrap:break-word;scrollbar-color:var(--burgundy) var(--cream)}
.dialog-content .dialog-lead{font-size:28px;line-height:1.2;font-style:italic;color:var(--burgundy);margin-bottom:24px}
.dialog-content h3{font:500 13px/1.6 'Montserrat',Arial,sans-serif;letter-spacing:.04em;margin:24px 0 12px}
.dialog-content ul{padding-left:24px;margin:0 0 24px}
.dialog-content li{padding-left:3px;margin-bottom:8px}
.dialog-content p+p{margin-top:18px}
.dialog-cta{display:flex;align-items:center;min-height:48px;margin-top:28px;padding:12px 0;color:var(--burgundy);font:500 14px/1.6 'Montserrat',Arial,sans-serif}
.service-dialog.is-closing{animation:dialog-out 180ms ease-out both}
.service-dialog.is-closing::backdrop{animation:dialog-backdrop-out 180ms ease-out both}
@keyframes dialog-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes dialog-out{from{opacity:1;transform:none}to{opacity:0;transform:translateY(6px)}}
@keyframes dialog-backdrop-in{from{opacity:0}to{opacity:1}}
@keyframes dialog-backdrop-out{from{opacity:1}to{opacity:0}}
@media(max-width:900px){
 /* Header occupies the existing top allowance, without adding hero height. */
 .hero .mobile-navigation{left:0;right:0;top:0;height:54px;padding:5px 24px;background:#40112a;color:var(--cream)}
 .hero .mobile-navigation summary{margin-left:auto;width:max-content}
 .hero .mobile-navigation summary:focus-visible{outline-color:var(--cream)}
 .hero .mobile-navigation nav{right:24px;top:54px;color:var(--navy)}
 .mobile-services-label{display:grid;place-items:center;height:64px;margin:-32px -24px 32px;background:#40112a;color:var(--cream);font:500 14px/1.4 'Montserrat',Arial,sans-serif;letter-spacing:.1em}
 /* Use container edges, never viewport units or intrinsic image widths. */
 .hero,.brand,.hero .canvas,.brand .canvas{width:100%;max-width:100%;margin-inline:0;border:0}
 .hero .canvas{align-items:stretch}
 .hero .base{display:block;align-self:stretch;min-width:100%;max-width:none;margin:0}
 /* Exclude the source bitmap’s thin white outer edge from the mobile crop. */
 .brand .base{display:block;inset:-2px;width:calc(100% + 4px);height:calc(100% + 4px);min-width:100%;max-width:none;margin:0}
 .hero-cta{width:100%;align-self:stretch}
 .service-dialog{width:calc(100% - 24px);max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin:auto}
 .dialog-header{padding:18px 14px 16px 22px;gap:8px}
 .dialog-header h2{font-size:14px;line-height:1.5;letter-spacing:.035em}
 .dialog-close{flex-basis:48px;width:48px;height:48px}
 .dialog-content{padding:0 22px max(26px,env(safe-area-inset-bottom));font-size:22px;line-height:1.4}
 .dialog-content .dialog-lead{font-size:26px;margin-bottom:22px}
 .dialog-content h3{font-size:12px;line-height:1.6}
 .dialog-content li{margin-bottom:10px}
 .dialog-cta{min-height:56px;font-size:13px}
}
@media(min-width:600px) and (max-width:900px){.mobile-services-label{margin-left:-54px;margin-right:-54px}}
@media(prefers-reduced-motion:reduce){.service-dialog[open],.service-dialog::backdrop{animation:none!important;opacity:1;transform:none}}

/* Only name/profession use letter fades; final text is restored intact. */
.hero :is(h1 > span,.profession)[data-letter-fade]{opacity:1!important;transform:none!important;animation:none!important}
.hero .hero-letter{display:inline;font:inherit;letter-spacing:inherit;margin:0;opacity:0}
@media(prefers-reduced-motion:reduce){.hero .hero-letter{opacity:1!important}}

/* Four-paragraph biography with reserved space for the original signature. */
.about-copy p{font-style:normal;white-space:normal}
.about-copy p+p{margin-top:.8em}
@media(min-width:901px){
 .about .canvas{aspect-ratio:auto;min-height:56.25cqw}
 .about-copy{position:relative;left:auto;top:auto;margin-left:10.15%;width:44%;padding:17cqw 0 2.5cqw;font-size:1.45cqw;line-height:1.42}
 .about-copy .signature{position:static;width:42.05%;height:7.3125cqw;margin:0 auto 0;object-fit:contain}
}
@media(max-width:900px){
 .about-copy{font-size:18px;line-height:1.5;margin-top:12px}
 .about-copy p+p{margin-top:18px}
 .about .about-copy .signature{position:static;width:175px;max-width:72%;height:auto;margin:12px auto 0}
}

/* Office interior: full photograph and a quiet editorial text column. */
.office .canvas{aspect-ratio:auto}
.office-label{height:72px;display:grid;place-items:center;background:#40112a;color:var(--cream)}
.office-label h2{font:500 14px/1.4 'Montserrat',Arial,sans-serif;letter-spacing:.1em}
.office-layout{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(0,1fr);align-items:center;gap:5%;padding:64px 5% 72px}
.office-photo{margin:0;width:100%;aspect-ratio:4/3;overflow:clip}
.office-photo img{width:100%;height:100%;object-fit:contain;object-position:center}
.office-copy{font-size:clamp(22px,1.7vw,33px);line-height:1.45;min-width:0}
.office-copy p+p{margin-top:1em}
.motion-enabled .office :is(.office-photo,.office-copy p){opacity:0}
.motion-enabled .office.is-revealed .office-photo{animation:editorial-fade 1400ms var(--editorial-ease) both}
.motion-enabled .office.is-revealed .office-copy p{animation:editorial-rise 1050ms var(--editorial-ease) 150ms both;--motion-distance:18px}
.motion-enabled .office.is-revealed .office-copy p+p{animation-delay:330ms}
.directions{margin:0;width:100%;padding:40px 5% 48px;color:var(--navy)}
.directions-header{margin-bottom:24px}
.directions-header h2{font:500 14px/1.4 'Montserrat',Arial,sans-serif;letter-spacing:.1em;color:var(--burgundy)}
.directions-header p{font-size:22px;line-height:1.4;margin-top:12px}
.directions iframe{display:block;width:100%;height:400px;border:0;background:var(--cream)}
.directions iframe:focus-visible{outline:3px solid var(--burgundy);outline-offset:4px}
@media(max-width:900px){
 .office-label{height:64px}
 .office-layout{display:flex;flex-direction:column;align-items:stretch;gap:0;padding:28px 24px 40px}
 .office-photo{margin:0 0 26px;flex-shrink:0}
 .office-copy{font-size:18px;line-height:1.5}
 .office-copy p+p{margin-top:18px}
 .mobile-motion .office-photo[data-mobile-reveal].is-mobile-revealed{animation-name:editorial-fade}
 .directions{padding:32px 16px 32px}
 .directions-header{padding:0 8px;margin-bottom:20px}
 .directions-header p{font-size:18px;line-height:1.5}
 .directions iframe{height:300px}
}
@media(prefers-reduced-motion:reduce){.office :is(.office-photo,.office-copy p){opacity:1!important;transform:none!important;animation:none!important}}

/* Technical accessibility polish; resting composition is unchanged. */
.about-seal,.wordmark img{height:auto}
.dialog-content:focus-visible{outline-offset:-3px}
