/* Solenne: fine rules, natural materials, a personal specialist rather than a catalogue. */
:root { --reading: 60ch; }
html { scroll-padding-top: 24px; }
p { text-wrap: pretty; }
.button, .text-link { transition: color .2s, background-color .2s, border-color .2s; }
.resort-hero .hero-content > p:not(.eyebrow):not(.hero-note) { max-width: 560px; letter-spacing: 0; }
.trust-strip { gap: 16px 48px; padding-top: 24px; padding-bottom: 24px; }
.specialist-intro { display: grid; grid-template-columns: 1fr 1fr; gap: 38px 9%; padding-bottom: 72px; }
.specialist-intro h2 { font-size: clamp(44px, 5vw, 74px); line-height: 1.02; }
.specialist-copy { padding-top: 37px; }
.specialist-copy p { font-size: 1rem; line-height: 1.85; color: var(--muted); max-width: 52ch; }
.specialist-copy p:first-child { color: var(--ink); }
.specialist-copy p + p { margin-top: 18px; }
.specialist-copy .text-link { margin-top: 22px; }
.specialist-details { grid-column: 1/-1; display: grid; grid-template-columns: 1fr 1fr 1fr; border-top: 1px solid var(--line); margin-top: 18px; }
.specialist-details > div { padding: 30px 28px 0 0; }
.specialist-details > div + div { padding-left: 30px; border-left: 1px solid var(--line); }
.specialist-details span { font-size: 12px; font-weight: 500; letter-spacing: .1em; }
.specialist-details p { font-size: .9375rem; line-height: 1.75; color: var(--muted); margin: 13px 0 0; max-width: 33ch; }
.daily-benefits { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 42px; padding-top: 36px; padding-bottom: 82px; }
.daily-benefits article { border-top: 1px solid var(--line); padding-top: 26px; }
.daily-benefits svg { width: 30px; height: 30px; margin-bottom: 25px; color: #866852; }
.daily-benefits .eyebrow { letter-spacing: .12em; margin-bottom: 12px; }
.daily-benefits h3 { font-size: clamp(26px,2.4vw,34px); line-height: 1.12; max-width: 15ch; }
.daily-benefits article > p:last-child { font-size: .9375rem; line-height: 1.8; color: var(--muted); margin-top: 16px; }
.specialist-team { background: #eee8e0; border-top: 0; }
.specialist-team .team-intro { gap: 22px 8%; align-items: start; }
.specialist-team .team-intro h2 { font-size: clamp(40px,4.3vw,64px); }
.specialist-team .team-grid { gap: 60px; }
.specialist-team .team-person { display: grid; grid-template-columns: minmax(140px,.8fr) minmax(0,1fr); gap: 26px; align-items: start; }
.specialist-team .team-portrait { aspect-ratio: 3/4; object-position: center 15%; }
.specialist-team .team-copy { padding-top: 0; }
.specialist-team .team-copy .eyebrow { font-size: 10px; letter-spacing: .12em; margin: 1px 0 10px; }
.specialist-team .team-copy h3 { font-size: 49px; margin-bottom: 10px; }
.specialist-team .team-copy .team-role { font-size: .875rem; line-height: 1.6; }
.specialist-team .team-copy > p:not(.team-role):not(.eyebrow) { font-size: .9375rem; line-height: 1.8; }
.expertise-list { list-style: none; padding: 0; margin: 24px 0 0; }
.expertise-list li { padding: 11px 0; border-top: 1px solid #d3c8bb; font-size: .8125rem; line-height: 1.65; }
.team-footnote { display: flex; align-items: center; justify-content: space-between; gap: 24px; border-top: 1px solid #d3c8bb; margin-top: 50px; padding-top: 25px; }
.team-footnote p { max-width: 55ch; color: var(--muted); font-size: .9375rem; margin: 0; }
.team-footnote .text-link { flex-shrink: 0; }
.retreat-editorial { padding-top: 100px; }
.retreat-secondary { padding-top: 125px; }
.somfy-signature { display: grid; grid-template-columns: .7fr 1.5fr 1fr; gap: 36px; align-items: center; border-top: 1px solid #8a6f725e; margin-top: 60px; padding-top: 30px; }
.somfy-name { font-family: var(--sans); font-size: 36px; font-weight: 500; letter-spacing: -.05em; }
.somfy-name span { display: block; font-size: 10px; font-weight: 400; letter-spacing: .12em; margin-top: 5px; color: #d5bcaa; }
.somfy-signature p { color: #e0d0c8; font-size: .875rem; line-height: 1.8; margin: 0; }
.somfy-signature a { font-size: .875rem; color: var(--paper); text-underline-offset: 5px; }
.somfy-signature a > span { display: block; font-size: .75rem; line-height: 1.7; color: #d5bcaa; margin-top: 9px; }
.resort-service h2 { font-size: clamp(40px,4.5vw,64px); }
.price-studio { background: #eee8e0; }
.price-intro { display: grid; grid-template-columns: 1fr 1fr; align-items: end; gap: 9%; margin-bottom: 42px; }
.price-intro h2 { font-size: clamp(40px,4.4vw,64px); line-height: 1.05; margin-bottom: 0; }
.price-intro > p { color: var(--muted); font-size: 1rem; line-height: 1.85; max-width: 46ch; margin: 0; }
.price-disclosure { border-top: 1px solid #b9a897; border-bottom: 1px solid #b9a897; }
.price-disclosure > summary { cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 24px; list-style: none; padding: 27px 0; }
.price-disclosure > summary::-webkit-details-marker { display: none; }
.price-disclosure > summary strong { font-size: 1.125rem; font-weight: 400; display: block; }
.price-disclosure > summary small { font-size: .8125rem; color: var(--muted); display: block; margin-top: 7px; line-height: 1.7; }
.disclosure-plus { flex-shrink: 0; position: relative; width: 36px; height: 36px; border: 1px solid #b9a897; border-radius: 50%; }
.disclosure-plus::before, .disclosure-plus::after { content: ''; position: absolute; width: 12px; height: 1px; background: var(--ink); top: 17px; left: 11px; }
.disclosure-plus::after { transform: rotate(90deg); }
.price-disclosure[open] .disclosure-plus::after { transform: none; }
.calculator-shell { display: grid; grid-template-columns: 1.2fr 1fr; gap: 0 8%; border-top: 1px solid #d3c8bb; padding: 38px 0 26px; }
.price-form { min-width: 0; }
.measure-help { font-size: .8125rem; line-height: 1.75; color: var(--muted); max-width: 48ch; margin: 0 0 24px; }
.price-window { border: 0; border-top: 1px solid #d3c8bb; margin: 0 0 18px; padding: 15px 0 0; min-width: 0; }
.price-window legend { font-size: .8125rem; padding: 0 12px 0 0; letter-spacing: .025em; }
.window-dimensions { display: grid; grid-template-columns: minmax(0,1fr) 14px minmax(0,1fr) 36px; align-items: end; gap: 12px; }
.window-dimensions label { display: block; font-size: .8125rem; margin: 0; min-width: 0; }
.measure-input { position: relative; display: block; margin-top: 6px; }
.measure-input input { width: 100%; height: 52px; padding: 12px 37px 12px 14px; margin: 0; font-size: 1rem; border: 1px solid #bcad9e; border-radius: 0; background: #f8f5f0; color: var(--ink); }
.measure-input input::placeholder { color: #9b9085; }
.measure-input input[aria-invalid=true] { border: 2px solid #9c352d; }
.measure-input > span { position: absolute; right: 12px; top: 14px; font-size: .8125rem; color: var(--muted); pointer-events: none; }
.dimension-times { align-self: end; line-height: 52px; text-align: center; color: var(--muted); }
.remove-window { border: 0; background: transparent; min-height: 48px; color: var(--muted); font-size: 25px; cursor: pointer; padding: 0; }
.remove-window:hover { color: var(--ink); }
.add-window { display: block; min-height: 44px; padding: 8px 0; border: 0; border-bottom: 1px solid #a5907e; background: transparent; color: var(--ink); font-size: .875rem; cursor: pointer; margin-bottom: 26px; }
.add-window:disabled { color: var(--muted); border-color: transparent; cursor: default; }
.calculate-price { width: 100%; justify-content: space-between; }
.calc-error { color: #92362f; font-size: .875rem; line-height: 1.7; margin: 0 0 20px; }
.price-result { border-left: 1px solid #d3c8bb; padding: 0 0 0 12%; min-width: 0; }
.price-amount { font-family: var(--serif); font-size: clamp(38px,4.6vw,62px); letter-spacing: -.035em; line-height: 1.15; margin: 20px 0 12px; font-variant-numeric: lining-nums; }
.price-context { color: var(--muted); font-size: .875rem; line-height: 1.8; max-width: 34ch; }
.price-breakdown { margin: 28px 0 0; font-size: .8125rem; }
.price-breakdown > div { display: flex; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid #d3c8bb; }
.price-breakdown dt { color: var(--muted); }
.price-breakdown dd { margin: 0; white-space: nowrap; }
.offer-table td::before { display: none; }
@media (max-width: 700px) {
  .journal-article .offer-table { overflow: visible; }
  .journal-article .offer-table table,
  .journal-article .offer-table tbody { display: block; width: 100%; }
  .journal-article .offer-table caption { display: block; width: 100%; padding: 20px 0; text-align: left; }
  .journal-article .offer-table thead { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; }
  .journal-article .offer-table tbody tr { display: block; padding: 18px 0; border-top: 1px solid var(--hotel-rule, #d3c8bb); }
  .journal-article .offer-table th[scope="row"],
  .journal-article .offer-table td { display: block; width: auto; min-width: 0; padding: 6px 0; border: 0; white-space: normal; }
  .journal-article .offer-table th[scope="row"] { padding-bottom: 12px; }
  .journal-article .offer-table td::before { display: block; content: attr(data-label); color: var(--muted); font-size: .75rem; margin-bottom: 3px; }
}
.price-quantity-note { font-size: .75rem; line-height: 1.7; color: var(--muted); margin-top: 15px; }
.price-result .text-link { margin-top: 22px; font-size: .8125rem; gap: 12px; }
.price-scope { grid-column: 1/-1; margin: 30px 0 0; padding-top: 20px; border-top: 1px solid #d3c8bb; font-size: .75rem; line-height: 1.8; color: var(--muted); max-width: 105ch; }
.price-understated { font-size: .8125rem; color: var(--muted); margin: 22px 0 0; }
.price-understated a { color: var(--ink); text-decoration: underline; text-underline-offset: 4px; }
.personal-contact { display: grid; grid-template-columns: 1fr 1fr; gap: 9%; text-align: left; background: #39252b; }
.personal-contact h2 { font-size: clamp(48px,5.5vw,78px); }
.contact-heading > p:not(.eyebrow) { color: #e0d0c8; font-size: 1rem; line-height: 1.85; max-width: 44ch; }
.contact-heading .text-link { color: #f8f5f0; margin-top: 22px; }
.contact-options { padding-top: 15px; }
.contact-links { display: grid; }
.contact-links > a { display: flex; align-items: center; gap: 20px; padding: 22px 0; border-top: 1px solid #aa90914d; color: inherit; min-width: 0; }
.contact-links > a:last-child { border-bottom: 1px solid #aa90914d; }
.contact-links svg { width: 26px; height: 26px; flex-shrink: 0; color: #cdb298; }
.contact-links > a > span:not(.contact-arrow) { min-width: 0; }
.contact-links strong { display: block; font-size: 1rem; font-weight: 400; }
.contact-links small { display: block; font-size: .8125rem; line-height: 1.7; margin-top: 6px; color: #d5c1b7; overflow-wrap: anywhere; }
.contact-arrow { margin-left: auto; font-size: 22px; color: #cdb298; transition: transform .2s; }
.contact-links a:hover .contact-arrow { transform: translate(3px,-3px); }
.contact-note { font-size: .75rem; color: #d5c1b7; line-height: 1.8; margin-top: 24px; max-width: 56ch; }
.advice-direct { padding-top: 0; padding-bottom: 65px; }
.advice-direct .contact-links { grid-template-columns: repeat(4,minmax(0,1fr)); gap: 28px; }
.advice-direct .contact-links > a { border-color: var(--line); align-items: start; gap: 12px; }
.advice-direct .contact-links > a:last-child { border-bottom: 0; }
.advice-direct .contact-links small { color: var(--muted); }
.advice-direct .contact-links svg, .advice-direct .contact-arrow { color: #866852; }

@media (max-width: 1150px) {
  .specialist-team .team-grid { gap: 45px; }
  .specialist-team .team-person { grid-template-columns: 1fr; gap: 25px; }
  .specialist-team .team-portrait { aspect-ratio: 1/1; object-position: center 22%; max-width: 380px; }
  .specialist-team .team-copy > p:not(.team-role):not(.eyebrow) { max-width: none; }
  .daily-benefits { gap: 28px; }
  .advice-direct .contact-links { grid-template-columns: 1fr 1fr; }
  .team-footnote { align-items: start; }
}
@media (max-width: 700px) {
  .specialist-intro { grid-template-columns: 1fr; gap: 24px; padding-bottom: 35px; }
  .specialist-intro h2 { font-size: 46px; }
  .specialist-copy { padding-top: 0; }
  .specialist-details { grid-template-columns: 1fr; margin-top: 12px; }
  .specialist-details > div, .specialist-details > div + div { padding: 22px 0; border-left: 0; border-bottom: 1px solid var(--line); }
  .specialist-details p { max-width: none; margin-top: 8px; }
  .daily-benefits { grid-template-columns: 1fr 1fr; gap: 28px 24px; padding-top: 20px; padding-bottom: 65px; }
  .daily-benefits article { padding-top: 20px; }
  .daily-benefits svg { margin-bottom: 17px; }
  .daily-benefits h3 { font-size: 28px; }
  .daily-benefits article > p:last-child { font-size: .875rem; }
  .specialist-team .team-intro h2 { font-size: 42px; }
  .specialist-team .team-grid { grid-template-columns: 1fr; gap: 44px; }
  .specialist-team .team-person { grid-template-columns: 1fr; gap: 25px; }
  .specialist-team .team-portrait { max-width: 100%; aspect-ratio: 4/4.1; }
  .team-footnote { flex-direction: column; margin-top: 35px; }
  .retreat-editorial { padding-top: 65px; }
  .retreat-secondary { padding-top: 0; }
  .somfy-signature { grid-template-columns: 1fr; gap: 22px; margin-top: 40px; }
  .price-intro { grid-template-columns: 1fr; gap: 24px; margin-bottom: 30px; }
  .price-disclosure > summary { gap: 16px; padding: 23px 0; }
  .price-disclosure > summary strong { font-size: 1rem; }
  .price-disclosure > summary small { font-size: .75rem; }
  .calculator-shell { grid-template-columns: 1fr; gap: 30px; padding-top: 26px; }
  .price-result { border-left: 0; border-top: 1px solid #d3c8bb; padding: 26px 0 0; }
  .price-amount { font-size: 50px; }
  .price-context { max-width: none; }
  .price-scope { margin-top: 0; }
  .window-dimensions { gap: 8px; grid-template-columns: minmax(0,1fr) 10px minmax(0,1fr) 28px; }
  .measure-input input { padding-left: 10px; }
  .personal-contact { grid-template-columns: 1fr; gap: 32px; }
  .personal-contact h2 { font-size: 54px; }
  .contact-options { padding-top: 0; }
  .advice-direct .contact-links { grid-template-columns: 1fr; gap: 0; }
  .advice-direct .contact-links > a:last-child { border-bottom: 1px solid var(--line); }
}
@media (prefers-reduced-motion: reduce) {
  .button, .text-link, .contact-arrow { transition: none; }
  .contact-links a:hover .contact-arrow { transform: none; }
}
