@font-face{font-family:CleanpointSerif;src:url('/assets/fonts/cormorant-garamond.woff2') format('woff2');font-display:swap}

@font-face{font-family:CleanpointSans;src:url('/assets/fonts/general-sans.woff2') format('woff2');font-display:swap}

:root{--ink:#122733;--ink-soft:#36505e;--linen:#f4efe5;--paper:#fffdf8;--mist:#dce9e8;--blue:#315d76;--blue-dark:#183d53;--berry:#8f3d50;--clay:#c5674e;--line:#b8c6c7;--white:#fff;--shadow:0 16px 42px rgba(18,39,51,.14);--serif:CleanpointSerif,Georgia,serif;--sans:CleanpointSans,'Segoe UI',sans-serif}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.62}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-underline-offset:.2em}
a:hover{text-decoration-thickness:2px}
::selection{background:var(--clay);color:var(--white)}
:focus-visible{outline:3px solid var(--clay);outline-offset:4px}
.skip-link{position:absolute;left:-999px;top:8px;z-index:100;background:var(--ink);color:white;padding:.7rem 1rem}
.skip-link:focus{left:8px}
.wrap{width:min(1180px,calc(100% - 40px));margin-inline:auto}
.site-header{position:sticky;top:0;z-index:30;background:rgba(255,253,248,.96);border-bottom:1px solid rgba(18,39,51,.15)}
.utility{background:var(--ink);color:var(--white);font-size:.76rem;letter-spacing:.08em;text-transform:uppercase}
.utility .wrap{display:flex;justify-content:space-between;padding:.42rem 0}
.utility a{color:inherit;text-decoration:none}
.utility a:hover{text-decoration:underline}
.mainbar{display:flex;align-items:center;min-height:78px;gap:2rem}
.brand{display:flex;align-items:center;gap:.8rem;text-decoration:none;margin-right:auto}
.brand-mark{width:42px;height:42px;display:grid;place-items:center;background:var(--berry);color:white;font-family:var(--serif);font-size:1.65rem;border-radius:50% 50% 12% 50%}
.brand-name{font-weight:700;line-height:1}
.brand-sub{display:block;margin-top:.25rem;font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}
.site-nav{display:flex;align-items:center;gap:1.35rem;font-size:.9rem;font-weight:650}
.site-nav>a,.services-nav>a{padding:.5rem 0;text-decoration:none}
.services-nav{position:relative;display:flex;align-items:center;gap:.25rem}
.services-toggle{border:0;background:none;padding:.45rem;font:inherit;cursor:pointer}
.nav-chevron{display:block;width:9px;height:9px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .22s cubic-bezier(.22,1,.36,1)}
.services-toggle[aria-expanded='true'] .nav-chevron{transform:rotate(225deg)}
.services-menu{position:absolute;top:calc(100% + 18px);left:-1rem;width:320px;background:var(--paper);box-shadow:var(--shadow),inset 0 2px 0 var(--berry);padding:1rem}
.services-menu a{display:block;padding:.55rem .6rem;text-decoration:none;border-bottom:1px solid var(--line)}
.services-menu a:last-child{border:0}
.header-cta,.button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:.72rem 1.1rem;border:1px solid transparent;background:var(--berry);color:white;text-decoration:none;font-weight:750}
.button:hover,.header-cta:hover{background:var(--blue-dark)}
.button.secondary{background:transparent;color:var(--ink);border-color:var(--ink)}
.menu-button{display:none;border:0;background:transparent;width:46px;height:46px}
.menu-button span{display:block;width:26px;height:2px;background:var(--ink);margin:6px auto}

.hero{position:relative;display:flex;align-items:flex-end;min-height:clamp(620px,78vh,820px);overflow:hidden;background:var(--ink)}
.hero-background{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 48%;animation:hero-drift 14s ease-out both}
.hero-scrim{position:absolute;inset:0;background:linear-gradient(90deg,rgba(10,29,40,.94) 0%,rgba(10,29,40,.82) 42%,rgba(10,29,40,.28) 72%,rgba(10,29,40,.08) 100%)}
.hero-copy{position:relative;z-index:1;padding:clamp(6rem,12vh,9rem) 0 clamp(4.5rem,9vh,7rem)}
.hero h1,.page-hero h1{font-family:var(--serif);font-weight:600;letter-spacing:-.03em;line-height:.87;margin:0;max-width:920px;font-size:clamp(3.6rem,8vw,6rem)}
.hero h1{max-width:820px;color:var(--white);text-wrap:balance;animation:hero-reveal .72s cubic-bezier(.22,1,.36,1) both}
.hero h1 span{display:block;color:inherit}
.hero-intro{max-width:560px;margin-top:2rem;font-size:1.08rem;color:rgba(255,255,255,.9)}
.hero-intro>p{margin:0;animation:hero-reveal .72s .1s cubic-bezier(.22,1,.36,1) both}
.hero .actions{animation:hero-reveal .72s .2s cubic-bezier(.22,1,.36,1) both}
.hero .button.secondary{color:var(--white);border-color:rgba(255,255,255,.8)}
.hero .button.secondary:hover{background:var(--white);color:var(--ink)}
.actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.4rem}
@keyframes hero-reveal{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes hero-drift{from{transform:scale(1.035)}to{transform:scale(1)}}

.section{padding:clamp(4rem,7vw,6.5rem) 0}
.section.soft{background:var(--mist)}
.section.dark{background:var(--ink);color:white}
.section-head{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(260px,.7fr);gap:clamp(2rem,8vw,7rem);align-items:end;margin-bottom:2.8rem}
.section-head h2,.chapter h2,.cta-panel h2,.page-hero h1{font-family:var(--serif);font-weight:600;letter-spacing:-.025em;line-height:.95}
.section-head h2,.chapter h2,.cta-panel h2{font-size:clamp(2.5rem,5vw,4.6rem);margin:0}
.section-head p{margin:0;color:var(--ink-soft)}
.dark .section-head p{color:#c9d5d8}
.service-index{border-top:1px solid var(--line)}
.service-row{display:grid;grid-template-columns:66px minmax(220px,.65fr) 1fr 30px;gap:1.3rem;align-items:center;padding:1.15rem 0;border-bottom:1px solid var(--line);text-decoration:none}
.service-row img{width:34px;height:34px;object-fit:contain}
.service-row strong{font-family:var(--serif);font-size:1.55rem;line-height:1}
.service-row span{color:var(--ink-soft);font-size:.92rem}
.service-row:hover strong{color:var(--berry)}
.room-story{display:grid;grid-template-columns:.85fr 1.15fr;min-height:600px}
.room-story .photo{min-height:520px}
.room-story .photo img{width:100%;height:100%;object-fit:cover}
.room-story .chapter{display:flex;flex-direction:column;justify-content:center;padding:clamp(2rem,7vw,7rem);background:var(--blue-dark);color:white}
.chapter p{max-width:62ch}
.room-list{margin:2rem 0 0;padding:0;list-style:none}
.room-list li{padding:.75rem 0;border-bottom:1px solid rgba(255,255,255,.25)}
.steps{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.step{padding:1.6rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.step strong{display:block;font-family:var(--serif);font-size:1.65rem;margin-bottom:.5rem}
.local-grid{display:grid;grid-template-columns:repeat(5,1fr);border-top:1px solid var(--line);border-left:1px solid var(--line)}
.local-grid a{padding:1.1rem;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-decoration:none}
.local-grid a:hover{background:var(--paper)}
.faq-list{max-width:860px}
.faq-list details{border-top:1px solid var(--line)}
.faq-list details:last-child{border-bottom:1px solid var(--line)}
.faq-list summary{cursor:pointer;font-weight:700;padding:1.1rem 2.5rem 1.1rem 0;position:relative}
.faq-list summary::after{content:'+';position:absolute;right:.2rem;font-size:1.4rem}
.faq-list details[open] summary::after{content:'–'}
.faq-list details p{max-width:70ch;margin:0;padding:0 0 1.2rem}
.cta-panel{display:grid;grid-template-columns:1.2fr .8fr;gap:2rem;background:var(--berry);color:white;padding:clamp(2rem,6vw,5rem)}
.cta-panel h2{max-width:720px}
.cta-panel .cta-side{align-self:end}
.cta-panel .button{background:white;color:var(--ink)}

.page-hero{padding:clamp(4rem,8vw,7rem) 0 3rem;background:var(--linen)}
.page-hero-grid{display:grid;grid-template-columns:1fr 360px;gap:3rem;align-items:end}
.page-hero p{font-size:1.1rem;max-width:54ch;color:var(--ink-soft)}
.page-photo{height:min(45vw,520px);min-height:320px}
.page-photo img{width:100%;height:100%;object-fit:cover}
.prose{max-width:780px}
.prose h2{font-family:var(--serif);font-size:clamp(2rem,4vw,3.4rem);line-height:1;margin-top:2.6rem}
.prose h3{font-size:1.25rem;margin-top:2rem}
.prose table{width:100%;border-collapse:collapse;margin:1.5rem 0}
.prose th,.prose td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:.8rem}
.prose th{background:var(--mist)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,7vw,6rem);align-items:start}
.detail-photo img{width:100%;aspect-ratio:4/3;object-fit:cover}
.checklist{list-style:none;padding:0}
.checklist li{position:relative;padding:.65rem 0 .65rem 2rem;border-bottom:1px solid var(--line)}
.checklist li::before{content:'✓';position:absolute;left:0;color:var(--berry);font-weight:900}
.guide-list{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.guide-card{background:var(--paper);padding:1.5rem;text-decoration:none}
.guide-card h2,.guide-card h3{font-family:var(--serif);font-size:1.8rem;line-height:1;margin-top:0}
.guide-card:hover{background:var(--linen)}
.policy{max-width:820px}
.notice{padding:1rem 1.2rem;background:var(--mist);box-shadow:inset 0 2px 0 var(--blue);margin:1.4rem 0}
.site-footer{background:var(--linen);border-top:1px solid var(--line);padding:4rem 0 2rem}
.footer-grid{display:grid;grid-template-columns:1.3fr repeat(3,1fr);gap:2.5rem}
.footer-grid h2{font-size:.8rem;text-transform:uppercase;letter-spacing:.12em}
.footer-grid a{display:block;margin:.45rem 0;text-decoration:none;font-size:.9rem}
.footer-bottom{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:1.5rem;margin-top:2.5rem;font-size:.78rem}
.article-meta{color:var(--ink-soft);font-size:.9rem}
.breadcrumbs{font-size:.82rem;margin-bottom:1.5rem}
.not-found{min-height:70vh;display:grid;place-items:center;text-align:center}
.not-found h1{font-family:var(--serif);font-size:clamp(5rem,20vw,12rem);line-height:.7;margin:0;color:var(--blue)}

@media(max-width:900px){.menu-button{display:block}
.site-nav{display:none;position:absolute;top:100%;left:0;right:0;background:var(--paper);padding:1rem 20px 1.5rem;box-shadow:var(--shadow);align-items:stretch}
.site-nav[data-open='true']{display:flex;flex-direction:column}
.header-cta{display:none}
.services-nav{display:block}
.services-menu{position:static;width:auto;box-shadow:none;margin-top:.5rem;border-top-width:2px}
.hero-copy,.page-hero-grid,.section-head,.split,.cta-panel{grid-template-columns:1fr}
.hero h1,.page-hero h1{font-size:clamp(3.2rem,12vw,5rem)}
.room-story{grid-template-columns:1fr}
.room-story .photo{min-height:360px}
.steps{grid-template-columns:1fr 1fr}
.local-grid{grid-template-columns:repeat(2,1fr)}
.footer-grid{grid-template-columns:1fr 1fr}
.service-row{grid-template-columns:48px 1fr 24px}
.service-row span{display:none}
.guide-list{grid-template-columns:1fr}
}

@media(max-width:560px){body{font-size:16px}
.wrap{width:min(100% - 28px,1180px)}
.utility .wrap{justify-content:center}
.utility span:first-child{display:none}
.mainbar{min-height:66px}
.brand-mark{width:38px;height:38px}
.brand-name{font-size:.92rem}
.hero{min-height:700px;align-items:flex-end}
.hero-background{object-position:62% center}
.hero-scrim{background:linear-gradient(180deg,rgba(10,29,40,.08) 0%,rgba(10,29,40,.36) 34%,rgba(10,29,40,.94) 66%,rgba(10,29,40,.98) 100%)}
.hero-copy{padding:11rem 0 3.5rem}
.hero h1{font-size:clamp(3rem,13vw,3.5rem);line-height:.9}
.hero-intro{font-size:1rem;margin-top:1.5rem}
.service-row strong{font-size:1.35rem}
.steps,.local-grid{grid-template-columns:1fr}
.room-story .chapter{padding:3rem 20px}
.page-photo{min-height:280px;height:72vw}
.footer-grid{grid-template-columns:1fr}
.footer-bottom{display:block}
.footer-bottom span{display:block;margin-top:.5rem}
.prose th,.prose td{padding:.6rem;font-size:.9rem}
}

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

.dark .service-row span{color:#d6e0e2}
.dark .service-row img{filter:brightness(0) invert(1)}
.dark .service-row:hover strong{color:#ffcfbf}

