:root {
  --ink: #14211e;
  --deep: #10231f;
  --forest: #183b31;
  --sage: #a8b7a6;
  --cream: #f3efe5;
  --paper: #faf8f2;
  --sand: #d7c7ad;
  --clay: #b56f53;
  --sky: #cadbd7;
  --line: rgba(20, 33, 30, .18);
  --muted: #69736f;
  --display: "Libre Caslon Display", Georgia, serif;
  --sans: "DM Sans", Arial, sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper); color: var(--ink); font-family: var(--sans); }
body.menu-open, body.dialog-open { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
.announcement {
  min-height: 36px; background: var(--deep); color: #fff; display: flex; align-items: center; justify-content: center;
  gap: 30px; padding: 8px 24px; font-size: 11px; letter-spacing: .09em; text-transform: uppercase;
}
.announcement a { border-bottom: 1px solid rgba(255,255,255,.55); }
.site-header {
  height: 86px; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 0 4vw;
  background: rgba(250,248,242,.93); backdrop-filter: blur(12px); border-bottom: 1px solid var(--line);
  position: sticky; top: 0; z-index: 30;
}
.brand { display: inline-flex; align-items: center; gap: 11px; width: fit-content; }
.brand-mark {
  width: 38px; height: 38px; border: 1px solid var(--ink); border-radius: 50%; display: grid; place-items: center;
  font-family: var(--display); font-size: 24px;
}
.brand-word { font-size: 14px; letter-spacing: .22em; font-weight: 600; }
.desktop-nav { display: flex; gap: 28px; font-size: 12px; }
.desktop-nav a { position: relative; }
.desktop-nav a:after { content:""; position:absolute; left:0; right:100%; bottom:-7px; height:1px; background:var(--ink); transition:.25s; }
.desktop-nav a:hover:after { right:0; }
.header-actions { justify-self: end; display: flex; align-items: center; gap: 12px; }
.icon-link { font-size: 11px; border: 1px solid var(--line); width: 38px; height: 38px; border-radius: 50%; display:grid; place-items:center; }
.button {
  border: 0; padding: 12px 18px; cursor: pointer; transition: transform .2s, background .2s, color .2s;
  display: inline-flex; justify-content: center; align-items: center; gap: 8px;
}
.button:hover { transform: translateY(-1px); }
.button-dark { background: var(--deep); color: white; }
.button-cream { background: var(--cream); color: var(--deep); }
.button-outline-light { color: white; border: 1px solid rgba(255,255,255,.45); background: transparent; }
.button-ghost { background: transparent; border: 1px solid var(--line); }
.button-large { min-height: 52px; padding: 14px 24px; }
.menu-button { display:none; width:40px; height:40px; border:0; background:none; }
.menu-button span { display:block; height:1px; background:var(--ink); margin:6px 0; width:22px; }
.mobile-menu { display:none; }

.hero { min-height: calc(100vh - 122px); position: relative; background: var(--forest); color: white; overflow:hidden; }
.hero-art { position:absolute; inset:0; overflow:hidden; }
.hero-grid {
  position:absolute; inset:0;
  background-image: linear-gradient(rgba(255,255,255,.07) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.07) 1px, transparent 1px);
  background-size: 84px 84px;
  mask-image: linear-gradient(90deg, transparent, #000 40%, #000);
}
.orb { position:absolute; border-radius:50%; filter:blur(1px); }
.orb-a { width:520px; height:520px; background:radial-gradient(circle at 34% 34%, #d8c7a8 0 8%, #9db1a4 37%, #52796b 65%, rgba(82,121,107,0) 70%); right:4vw; top:5vh; opacity:.92; }
.orb-b { width:280px; height:280px; border:1px solid rgba(255,255,255,.4); right:28vw; bottom:7vh; }
.hero-line { position:absolute; height:1px; background:rgba(255,255,255,.5); transform-origin:left; }
.line-a { width:58vw; right:-12vw; top:61%; transform:rotate(-27deg); }
.line-b { width:35vw; right:8vw; top:28%; transform:rotate(64deg); }
.hero-word { position:absolute; right:-1vw; bottom:-7vh; font-size:18vw; font-family:var(--display); color:rgba(255,255,255,.055); letter-spacing:-.03em; }
.hero-copy { position:relative; z-index:2; width:min(760px, 70vw); padding: 10vh 0 0 6vw; }
.eyebrow { text-transform:uppercase; letter-spacing:.15em; font-size:11px; font-weight:600; }
.hero h1, h2 { font-family: var(--display); font-weight:400; letter-spacing:-.03em; }
.hero h1 { font-size: clamp(64px, 7.3vw, 118px); line-height:.88; margin:22px 0 32px; }
.hero h1 em { font-weight:400; color:var(--sand); }
.hero-lede { max-width:620px; font-size:17px; line-height:1.6; color:rgba(255,255,255,.82); }
.hero-buttons { display:flex; gap:26px; align-items:center; margin-top:34px; }
.text-link { border:0; background:none; padding:0 0 4px; border-bottom:1px solid currentColor; cursor:pointer; width:max-content; }
.text-link span { margin-left:10px; }
.light-link { color:white; }
.hero-foot { position:absolute; left:6vw; right:6vw; bottom:28px; display:flex; justify-content:space-between; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.6); }

.section-pad { padding: 110px 6vw; }
.intro { display:grid; grid-template-columns: .25fr 1.45fr .8fr; gap:55px; border-bottom:1px solid var(--line); }
.section-index { font-size:12px; color:var(--muted); padding-top:30px; }
.intro h2, .section-title-row h2, .faq h2 { font-size:clamp(50px,5vw,80px); line-height:.98; margin:10px 0 0; }
.intro-copy { font-size:15px; line-height:1.75; padding-top:34px; }
.intro-copy p { margin-top:0; margin-bottom:24px; }
.feature-split { display:grid; grid-template-columns:1fr 1fr; min-height:760px; }
.feature-visual { min-height:760px; position:relative; overflow:hidden; }
.visual-library { background: linear-gradient(155deg, #d9d5c9, #eee8dc 42%, #9cad9f); }
.visual-library:before {
  content:""; position:absolute; width:58%; height:76%; left:15%; top:12%; background:#f5f0e5; border-radius:46% 46% 4px 4px;
  box-shadow: inset 0 0 0 1px rgba(20,33,30,.1), 70px 20px 0 rgba(68,91,78,.25);
}
.visual-library:after {
  content:""; position:absolute; width:1px; height:88%; left:62%; top:6%; background:rgba(20,33,30,.24); transform:rotate(18deg);
}
.visual-label { position:absolute; left:30px; bottom:28px; z-index:3; font-size:11px; letter-spacing:.13em; text-transform:uppercase; }
.book-stack { position:absolute; left:24%; bottom:16%; width:42%; z-index:2; }
.book-stack span { display:block; height:36px; margin-top:7px; border:1px solid rgba(20,33,30,.25); background:#d7c3a5; transform:skewX(-4deg); }
.book-stack span:nth-child(2) { width:86%; margin-left:8%; background:#f7f1e7; }
.book-stack span:nth-child(3) { width:94%; margin-left:2%; background:#4e6f61; }
.book-stack span:nth-child(4) { width:77%; margin-left:16%; background:#b97b5f; }
.book-stack span:nth-child(5) { width:88%; margin-left:5%; background:#ece5d8; }
.feature-copy { background:var(--cream); padding:110px 8vw; display:flex; flex-direction:column; justify-content:center; }
.feature-copy h2 { font-size:clamp(54px,5vw,82px); line-height:.96; margin:12px 0 30px; }
.feature-copy > p:not(.eyebrow) { max-width:540px; line-height:1.75; color:#48534f; }
.feature-points { margin-top:38px; border-top:1px solid var(--line); }
.feature-points div { display:grid; grid-template-columns:45px 1fr; gap:14px; padding:16px 0; border-bottom:1px solid var(--line); font-size:13px; }
.feature-points b { font-size:10px; }

.section-title-row { display:grid; grid-template-columns:1fr .55fr; gap:40px; align-items:end; margin-bottom:58px; }
.section-title-row > p { max-width:480px; line-height:1.7; color:var(--muted); margin:0; }
.service-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line); border:1px solid var(--line); }
.service-card { min-height:510px; padding:32px 28px; background:var(--paper); position:relative; display:flex; flex-direction:column; overflow:hidden; }
.service-card:after { content:""; position:absolute; width:180px; height:180px; border-radius:50%; right:-50px; top:-60px; border:1px solid rgba(20,33,30,.12); transition:.4s; }
.service-card:hover:after { transform:scale(1.35); }
.service-number { font-size:10px; color:var(--muted); }
.service-icon { margin:70px 0 45px; width:76px; height:76px; border-radius:50%; display:grid; place-items:center; border:1px solid rgba(20,33,30,.25); font-family:var(--display); font-size:28px; }
.service-card h3 { font-family:var(--display); font-size:33px; font-weight:400; margin:0 0 16px; line-height:1.05; }
.service-card p { font-size:13px; line-height:1.65; color:#59635f; }
.card-link { border:0; background:none; text-align:left; padding:0; margin-top:auto; cursor:pointer; font-size:12px; }
.card-b { background:#e4e8df; }
.card-c { background:#e9ded3; }
.card-d { background:#d8e0de; }

.statement { min-height:600px; background:var(--deep); color:white; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:70px 8vw; }
.statement-mark { font-family:var(--display); font-size:120px; line-height:.6; color:var(--sand); }
.statement blockquote { max-width:1100px; font-family:var(--display); font-size:clamp(48px,6vw,90px); line-height:1.05; margin:25px auto; }
.statement em { color:var(--sand); }
.statement p { font-size:10px; letter-spacing:.16em; text-transform:uppercase; color:rgba(255,255,255,.6); }

.team-grid { display:grid; grid-template-columns:1.2fr .8fr; gap:28px; }
.portrait { aspect-ratio:1.2/1; min-height:440px; background:var(--sage); position:relative; overflow:hidden; display:grid; place-items:center; }
.portrait:before, .portrait:after { content:""; position:absolute; border-radius:50%; }
.portrait:before { width:340px; height:340px; background:var(--cream); top:12%; left:calc(50% - 170px); }
.portrait:after { width:260px; height:330px; background:var(--forest); top:43%; left:calc(50% - 130px); border-radius:130px 130px 25px 25px; }
.portrait span { z-index:2; position:absolute; top:29%; font-family:var(--display); font-size:58px; color:var(--forest); letter-spacing:.05em; }
.team-meta { display:flex; justify-content:space-between; gap:20px; align-items:center; padding:20px 0 8px; border-bottom:1px solid var(--line); }
.team-meta h3 { margin:0; font-family:var(--display); font-size:30px; font-weight:400; }
.team-meta p, .team-bio { color:var(--muted); font-size:12px; }
.round-button { width:44px; height:44px; border:1px solid var(--line); border-radius:50%; background:transparent; cursor:pointer; }
.team-invite { background:var(--forest); color:white; min-height:570px; display:flex; padding:50px; }
.team-invite-inner { margin:auto 0; }
.team-invite h3 { font-family:var(--display); font-size:55px; font-weight:400; line-height:1; margin:14px 0 24px; }
.team-invite p:not(.eyebrow) { line-height:1.7; color:rgba(255,255,255,.75); max-width:380px; }
.team-invite .text-link { color:white; margin-top:18px; }

.language-band { background:#c9d6d0; display:grid; grid-template-columns:.8fr 1.2fr; padding:90px 6vw; gap:60px; }
.language-copy h2 { font-size:clamp(48px,5vw,76px); line-height:1; margin:12px 0 0; }
.language-list { display:flex; flex-wrap:wrap; gap:12px; align-content:center; }
.language-list span { border:1px solid rgba(20,33,30,.23); border-radius:999px; padding:12px 18px; font-size:13px; background:rgba(255,255,255,.25); }

.faq { display:grid; grid-template-columns:.7fr 1.3fr; gap:9vw; }
.faq-title { position:sticky; top:135px; align-self:start; }
.accordion { border-top:1px solid var(--line); }
.faq-item { border-bottom:1px solid var(--line); }
.faq-item button { width:100%; border:0; background:none; display:flex; justify-content:space-between; align-items:center; padding:24px 0; cursor:pointer; font-size:17px; text-align:left; }
.faq-item button i { font-style:normal; font-size:26px; font-weight:300; transition:.25s; }
.faq-item button[aria-expanded="true"] i { transform:rotate(45deg); }
.faq-answer { display:grid; grid-template-rows:0fr; transition:grid-template-rows .3s ease; }
.faq-answer p { overflow:hidden; margin:0; line-height:1.7; color:var(--muted); max-width:720px; }
.faq-item.open .faq-answer { grid-template-rows:1fr; }
.faq-item.open .faq-answer p { padding-bottom:25px; }

.contact { min-height:540px; background:var(--clay); color:white; padding:95px 6vw; display:grid; grid-template-columns:1fr 1fr; gap:40px; align-items:end; }
.contact h2 { font-size:clamp(56px,6vw,92px); line-height:.92; margin:16px 0 45px; }
.contact-copy > p:not(.eyebrow) { font-size:11px; text-transform:uppercase; letter-spacing:.12em; margin:18px 0 4px; color:rgba(255,255,255,.7); }
.contact-copy > a { font-size:20px; border-bottom:1px solid rgba(255,255,255,.4); }
.contact-actions { justify-self:end; display:flex; gap:12px; flex-wrap:wrap; }

footer { background:#0b1513; color:white; padding:70px 6vw 28px; }
.footer-brand { font-family:var(--display); font-size:clamp(90px,15vw,220px); letter-spacing:-.06em; line-height:.8; color:#d4cab7; }
.footer-grid { display:grid; grid-template-columns:1.2fr .5fr .5fr; gap:30px; margin-top:70px; padding:35px 0; border-top:1px solid rgba(255,255,255,.15); }
.footer-grid p, .footer-grid a, .footer-grid button { display:block; font-size:12px; margin:0 0 11px; color:rgba(255,255,255,.72); }
.footer-grid button { border:0; background:none; padding:0; cursor:pointer; }
.footer-bottom { border-top:1px solid rgba(255,255,255,.15); padding-top:20px; display:flex; justify-content:space-between; font-size:10px; color:rgba(255,255,255,.45); text-transform:uppercase; letter-spacing:.1em; }

/* Booking */
.booking-dialog { width:min(1180px,96vw); max-height:94vh; border:0; padding:0; background:transparent; }
.booking-dialog::backdrop { background:rgba(7,14,12,.78); backdrop-filter:blur(5px); }
.booking-shell { min-height:720px; display:grid; grid-template-columns:.72fr 1.28fr; background:var(--paper); position:relative; }
.close-button { position:absolute; right:18px; top:15px; z-index:3; width:38px; height:38px; border:0; background:transparent; font-size:30px; cursor:pointer; }
.booking-aside { background:var(--forest); color:white; padding:60px 45px; display:flex; flex-direction:column; }
.booking-aside h2 { font-size:52px; line-height:.96; margin:18px 0 28px; }
.booking-aside > p:not(.eyebrow) { line-height:1.7; color:rgba(255,255,255,.72); }
.booking-assurances { margin-top:auto; display:grid; gap:10px; font-size:12px; color:rgba(255,255,255,.75); }
.booking-main { padding:48px 58px; overflow:auto; }
.stepper { display:grid; grid-template-columns:repeat(3,1fr); gap:0; margin-bottom:40px; }
.step { display:flex; align-items:center; gap:9px; color:#9aa19f; border-bottom:1px solid #d2d5d3; padding-bottom:13px; }
.step span { width:25px; height:25px; border:1px solid currentColor; border-radius:50%; display:grid; place-items:center; font-size:10px; }
.step b { font-size:11px; font-weight:500; }
.step.active { color:var(--deep); border-color:var(--deep); }
.form-step { display:none; }
.form-step.active { display:block; }
.form-heading h3, .booking-result h3 { font-family:var(--display); font-size:45px; font-weight:400; margin:8px 0 8px; }
.form-heading > p:not(.eyebrow) { color:var(--muted); font-size:12px; margin-bottom:24px; }
.field-grid { display:grid; gap:16px; }
.field-grid.two { grid-template-columns:1fr 1fr; }
label { display:block; font-size:11px; letter-spacing:.04em; margin:0 0 16px; }
input, select, textarea {
  width:100%; margin-top:7px; border:1px solid #c7ccc9; background:#fff; min-height:48px; padding:11px 12px; border-radius:0; outline:none;
}
input:focus, select:focus, textarea:focus { border-color:var(--forest); box-shadow:0 0 0 2px rgba(24,59,49,.08); }
textarea { resize:vertical; }
.form-actions { display:flex; justify-content:space-between; gap:12px; align-items:center; margin-top:28px; }
.slot-status { background:#f0ede5; padding:13px; font-size:11px; color:var(--muted); margin-top:8px; }
.slot-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin:12px 0 20px; }
.slot { border:1px solid #c7ccc9; background:white; padding:11px 6px; cursor:pointer; font-size:12px; }
.slot:hover, .slot.selected { background:var(--deep); color:white; border-color:var(--deep); }
.notes-label span { color:var(--muted); }
.payment-options { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:22px 0; }
.payment-card { border:1px solid #c7ccc9; padding:18px; display:flex; gap:12px; align-items:center; cursor:pointer; margin:0; }
.payment-card:has(input:checked) { border-color:var(--deep); background:#eef1ec; }
.payment-card input { width:auto; min-height:0; margin:0; }
.payment-card span:last-child { display:grid; gap:4px; }
.payment-card small { color:var(--muted); }
.payment-icon { width:42px; height:42px; border:1px solid var(--line); display:grid; place-items:center; }
.consent { display:flex; gap:11px; align-items:flex-start; line-height:1.5; }
.consent input { width:auto; min-height:0; margin:2px 0 0; }
.booking-summary { margin-top:22px; padding:15px; background:#f0ede5; font-size:12px; line-height:1.7; }
.form-error { color:#8a2b21; font-size:12px; min-height:18px; margin-top:12px; }
.result-reference { background:#f0ede5; padding:15px; margin:20px 0; font-family:monospace; }
.booking-result { padding-top:60px; }

@media (max-width: 1050px) {
  .desktop-nav { display:none; }
  .site-header { grid-template-columns:1fr 1fr; }
  .header-actions { grid-column:2; }
  .menu-button { display:block; }
  .mobile-menu {
    position:fixed; inset:122px 0 0; z-index:29; background:var(--deep); color:white; padding:40px 6vw; flex-direction:column; gap:24px;
    font-family:var(--display); font-size:36px;
  }
  .mobile-menu.open { display:flex; }
  .mobile-menu .button { width:max-content; font-family:var(--sans); font-size:13px; margin-top:15px; }
  .service-grid { grid-template-columns:1fr 1fr; }
  .feature-split { grid-template-columns:1fr; }
  .feature-visual { min-height:600px; }
  .booking-shell { grid-template-columns:1fr; }
  .booking-aside { display:none; }
}
@media (max-width: 720px) {
  .announcement { justify-content:space-between; gap:10px; font-size:9px; }
  .announcement span { max-width:65%; }
  .site-header { height:72px; }
  .icon-link, .header-actions > .button { display:none; }
  .mobile-menu { inset:108px 0 0; }
  .hero { min-height:calc(100vh - 108px); }
  .hero-copy { width:auto; padding:8vh 6vw 0; }
  .hero h1 { font-size:59px; }
  .hero-lede { font-size:15px; }
  .hero-buttons { align-items:flex-start; flex-direction:column; }
  .hero-foot { font-size:9px; }
  .section-pad { padding:80px 6vw; }
  .intro { grid-template-columns:1fr; gap:18px; }
  .section-index { display:none; }
  .intro h2, .section-title-row h2, .faq h2 { font-size:49px; }
  .feature-visual { min-height:460px; }
  .feature-copy { padding:75px 6vw; }
  .feature-copy h2 { font-size:52px; }
  .section-title-row { grid-template-columns:1fr; }
  .service-grid { grid-template-columns:1fr; }
  .service-card { min-height:390px; }
  .service-icon { margin:42px 0 30px; }
  .statement { min-height:510px; }
  .team-grid { grid-template-columns:1fr; }
  .portrait { min-height:390px; }
  .team-invite { min-height:430px; padding:35px; }
  .language-band { grid-template-columns:1fr; gap:30px; padding:70px 6vw; }
  .faq { grid-template-columns:1fr; gap:35px; }
  .faq-title { position:static; }
  .contact { grid-template-columns:1fr; align-items:center; }
  .contact-actions { justify-self:start; flex-direction:column; width:100%; }
  .footer-grid { grid-template-columns:1fr 1fr; }
  .footer-grid > div:first-child { grid-column:1 / -1; }
  .booking-dialog { width:100vw; max-width:100vw; max-height:100vh; height:100vh; margin:0; }
  .booking-shell { min-height:100vh; }
  .booking-main { padding:58px 20px 28px; }
  .field-grid.two, .payment-options { grid-template-columns:1fr; gap:0; }
  .slot-grid { grid-template-columns:repeat(3,1fr); }
  .step b { display:none; }
}
