@import url('assets/manrope.css');
@import url('assets/cormorant.css');
@import url('assets/oswald.css');

:root {
  --paper: #f3f1eb;
  --surface: #e8e5dd;
  --ink: #272a25;
  --muted: #65695f;
  --line: #c8ccc0;
  --accent: #394d39;
  --on-accent: #f8f7f2;
  --white: #f8f7f2;
  --overlay: #14221b66;
  --sans: 'Manrope', sans-serif;
  --serif: 'Cormorant Garamond', Georgia, serif;
  --display: var(--sans);
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
  --space-8: 64px;
  --space-9: 80px;
  --space-10: 96px;
  --space-11: 128px;
  --gutter: clamp(24px, 4.45vw, 80px);
  --text-xs: 12px;
  --text-sm: 14px;
  --text-body: 16px;
  --text-lead: 20px;
  --text-h3: 24px;
  --text-h2: 56px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: var(--space-6); }
body { margin: 0; color: var(--ink); background: var(--paper); font: var(--text-sm)/1.7 var(--sans); -webkit-font-smoothing: antialiased; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; color: inherit; }
a { color: inherit; text-decoration: none; }
img { display: block; width: 100%; height: 100%; object-fit: cover; }
figure, h1, h2, h3, p { margin: 0; }
h1, h2, h3 { font-family: var(--display); font-weight: 400; text-wrap: balance; }
h1 { line-height: 1.02; letter-spacing: -.035em; word-spacing: .025em; }
h2 { font-size: var(--text-h2); line-height: 1.12; letter-spacing: -.045em; }
h3 { font-size: var(--text-h3); line-height: 1.25; letter-spacing: -.025em; }
p { text-wrap: pretty; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 2px solid currentColor; outline-offset: 6px; }
[hidden] { display: none !important; }
.skip { position: absolute; top: -100px; left: var(--gutter); padding: var(--space-3); background: var(--paper); color: var(--ink); z-index: 100; }
.skip:focus { top: var(--space-3); }
header { position: relative; z-index: 10; height: 104px; display: flex; align-items: center; justify-content: space-between; gap: var(--space-6); padding: 0 var(--gutter); }
.logo { font: 700 28px/1 var(--sans); letter-spacing: -.045em; }
header nav { display: flex; align-items: center; gap: var(--space-6); font-size: var(--text-xs); }
header nav a { padding: var(--space-3) 0; }
header nav a:hover, .footer a:hover { text-decoration: underline; text-underline-offset: 6px; }
.header-action { min-height: 44px; display: inline-flex; align-items: center; gap: var(--space-3); padding: var(--space-2) 0; border: 0; border-bottom: 1px solid currentColor; background: transparent; font-size: var(--text-xs); border-radius: 0; }
.menu-toggle { display: none; width: 44px; height: 44px; padding: var(--space-3); background: transparent; border: 0; }
.menu-toggle span { display: block; height: 1px; background: currentColor; margin: 6px 0; }
.btn { display: inline-flex; align-items: center; justify-content: space-between; gap: var(--space-6); min-height: 56px; padding: var(--space-4) var(--space-5); border: 0; border-radius: 0; color: var(--on-accent); background: var(--accent); font-size: var(--text-xs); font-weight: 600; line-height: 1.5; }
.btn:hover { filter: brightness(.9); }
.arrow { font: 400 24px/1 var(--sans); }
.text-link { display: inline-flex; align-items: center; gap: var(--space-6); min-height: 44px; border-bottom: 1px solid currentColor; padding: var(--space-2) 0; font-size: var(--text-xs); }
.text-link:hover { color: var(--accent); }
.section { padding: var(--space-10) var(--gutter); }
.section-title { display: flex; justify-content: space-between; align-items: end; gap: var(--space-6); margin-bottom: var(--space-7); }
.section-title h2 { max-width: 760px; }
.section-note { max-width: 256px; font-size: var(--text-xs); color: var(--muted); }
.image-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-6); }
.image-grid img { height: 440px; }
.image-grid figcaption { display: flex; justify-content: space-between; gap: var(--space-5); margin-top: var(--space-4); font-size: var(--text-sm); }
.image-grid figcaption span { color: var(--muted); font-size: var(--text-xs); }
.split { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: var(--space-10); }
.split > * { min-width: 0; }
.split > img { height: 560px; }
.split h2 { margin-bottom: var(--space-6); }
.split p { max-width: 480px; color: var(--muted); margin-bottom: var(--space-5); font-size: var(--text-sm); }
.cta { display: flex; justify-content: space-between; align-items: center; gap: var(--space-7); padding: var(--space-9) var(--gutter); border-top: 1px solid var(--line); }
.cta h2 { font-size: 48px; }
.footer { padding: var(--space-7) var(--gutter); border-top: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; gap: var(--space-5); }
.footer p, .footer > a:last-child { font-size: var(--text-xs); }
.footer p { color: var(--muted); }
.footer > a:last-child { min-height: 44px; display: inline-flex; align-items: center; }
dialog { width: min(544px, calc(100% - 32px)); max-height: 90dvh; overflow-y: auto; padding: var(--space-7); border: 0; color: var(--ink); background: var(--paper); }
dialog::backdrop { background: var(--overlay); }
dialog h2 { font-family: var(--sans); font-size: 32px; padding-right: var(--space-5); margin-bottom: var(--space-6); }
.dialog-close, .cart-close { position: absolute; right: var(--space-3); top: var(--space-3); width: 44px; height: 44px; background: transparent; border: 0; font-size: 28px; }
.inquiry-form { display: grid; gap: var(--space-5); }
label { display: grid; gap: var(--space-2); font-size: var(--text-xs); }
input, select, textarea { display: block; width: 100%; min-width: 0; border-radius: 0; border: 1px solid var(--muted); background: transparent; color: inherit; padding: var(--space-3); min-height: 48px; font-size: var(--text-body); }
textarea { min-height: 96px; }
.form-result, .cart-disclaimer { font-size: var(--text-xs); }
.cart-row { display: flex; align-items: center; justify-content: space-between; gap: var(--space-5); padding: var(--space-4) 0; border-bottom: 1px solid var(--line); }
.cart-row button { min-height: 44px; background: transparent; border: 0; text-decoration: underline; }
.cart-content > p, .cart-disclaimer { margin-top: var(--space-5); }
.tabs { display: flex; gap: var(--space-6); border-bottom: 1px solid var(--line); margin-bottom: var(--space-5); }
.tabs button { min-height: 56px; padding: var(--space-4) 0; border: 0; border-bottom: 2px solid transparent; background: transparent; font-size: var(--text-sm); white-space: nowrap; }
.tabs button[aria-selected=true] { border-bottom-color: currentColor; }
.dish-list { display: grid; grid-template-columns: 1fr 1fr; column-gap: var(--space-9); }
.dish { display: flex; justify-content: space-between; gap: var(--space-5); padding: var(--space-6) 0; border-bottom: 1px solid var(--line); }
.dish h3 { margin-bottom: var(--space-2); }
.dish p { font-size: var(--text-xs); color: var(--muted); max-width: 400px; }
.dish-price { font-size: var(--text-sm); white-space: nowrap; }

.architecture { --display: var(--sans); }
.arch-hero { display: grid; grid-template-columns: .9fr 1.25fr; gap: var(--space-7); min-height: 664px; align-items: center; padding: var(--space-5) var(--gutter) var(--space-8); }
.arch-heading { padding-bottom: var(--space-7); }
.arch-heading h1 { font-size: clamp(56px, 5.15vw, 88px); }
.arch-intro { margin-top: var(--space-7); }
.arch-intro p { max-width: 320px; color: var(--muted); margin-bottom: var(--space-5); }
.arch-visual { align-self: stretch; min-height: 584px; position: relative; }
.arch-visual img { object-position: 58% center; }
.arch-visual figcaption { position: absolute; bottom: var(--space-5); right: var(--space-5); color: var(--white); background: var(--ink); padding: var(--space-3) var(--space-4); font-size: var(--text-xs); }
.arch-index { display: flex; justify-content: space-between; gap: var(--space-5); margin: 0 var(--gutter); padding: var(--space-5) 0; border-top: 1px solid var(--line); font-size: var(--text-xs); }
.project-grid { grid-template-columns: 1.2fr 1fr; align-items: end; gap: var(--space-8); }
.project-grid figure:first-child img { height: 520px; }
.project-grid figure:last-child img { height: 400px; }
.architecture .about { background: var(--surface); }
.architecture .about > img { height: 560px; }
.architecture .about h2 { font-size: 52px; }

.restaurant { --paper: #f5ebdb; --surface: #eadfcf; --ink: #641e25; --accent: #641e25; --muted: #80645d; --line: #cdb8aa; --on-accent: #f8efdf; --overlay: #35121899; --display: var(--serif); }
.restaurant .header-action { background: var(--accent); color: var(--on-accent); border: 0; padding: var(--space-3) var(--space-5); }
.rest-hero { padding: var(--space-5) var(--gutter) 0; }
.rest-heading { display: flex; align-items: end; justify-content: space-between; gap: var(--space-8); padding-bottom: var(--space-7); }
.rest-heading h1 { font-size: clamp(88px, 9.1vw, 144px); line-height: .89; letter-spacing: -.055em; }
.rest-heading h1 em { font-weight: 400; }
.rest-intro { padding-bottom: var(--space-3); max-width: 312px; }
.rest-intro p { max-width: 288px; margin-bottom: var(--space-5); }
.rest-photo { height: 520px; }
.rest-photo img { object-position: center 54%; }
.rest-strip { display: flex; justify-content: space-between; gap: var(--space-5); margin: 0 var(--gutter); padding: var(--space-5) 0; border-bottom: 1px solid var(--line); font-size: var(--text-xs); }
.restaurant .section-title h2 { font-size: 72px; letter-spacing: -.035em; }
.restaurant .dish h3 { font-family: var(--sans); font-size: var(--text-lead); letter-spacing: -.025em; }
.restaurant .atmosphere { --paper: #641e25; --ink: #f5ebdb; --muted: #e0c4b8; --accent: #f5ebdb; background: var(--paper); color: var(--ink); }
.restaurant .atmosphere h2 { font-size: 80px; letter-spacing: -.035em; }
.restaurant .atmosphere img { height: 560px; }
.restaurant .cta h2 { font-size: 64px; letter-spacing: -.035em; }

.objects { --paper: #dfe6ea; --surface: #d2dce1; --ink: #1234a6; --accent: #1234a6; --muted: #42576c; --line: #a9bbc6; --on-accent: #f5f6f7; --display: var(--sans); }
.objects .header-action { border: 0; gap: var(--space-2); }
.object-hero { display: grid; grid-template-columns: .8fr 1.2fr; align-items: center; gap: var(--space-5); padding: var(--space-5) var(--gutter) var(--space-8); }
.object-copy { position: relative; z-index: 1; padding-bottom: var(--space-6); }
.object-copy h1 { font-size: clamp(72px, 7.1vw, 112px); line-height: .99; font-weight: 500; }
.object-copy p { margin: var(--space-6) 0; color: var(--muted); max-width: 272px; }
.object-picture { height: 624px; position: relative; }
.object-picture img { object-position: 42% center; }
.object-picture .caption { position: absolute; bottom: var(--space-5); right: var(--space-5); min-width: 160px; padding: var(--space-5); background: var(--accent); color: var(--on-accent); font-size: var(--text-xs); }
.object-picture .caption strong { display: block; font-size: var(--text-lead); font-weight: 400; line-height: 1.4; margin-bottom: var(--space-4); }
.object-categories { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--space-6); margin: 0 var(--gutter); padding: var(--space-5) 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.object-categories a { display: flex; align-items: center; justify-content: space-between; min-height: 44px; font-size: var(--text-sm); }
.products { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-6); }
.product-image { height: 400px; background: var(--surface); }
.product-meta { display: flex; justify-content: space-between; gap: var(--space-4); padding: var(--space-5) 0 var(--space-3); }
.product h3 { font-family: var(--sans); font-size: var(--text-sm); font-weight: 600; letter-spacing: -.015em; }
.product p { margin-top: var(--space-2); font-size: var(--text-xs); color: var(--muted); }
.product-meta > span { font-size: var(--text-sm); white-space: nowrap; }
.product button { width: 100%; min-height: 48px; padding: var(--space-3) 0; background: transparent; border: 0; border-bottom: 1px solid currentColor; text-align: left; font-size: var(--text-xs); }
.product button:hover { text-decoration: underline; text-underline-offset: 4px; }
.objects .story { background: var(--surface); }
.objects .split h2 { font-size: 52px; }

.festival { --paper: #20221f; --surface: #2c2f29; --ink: #f2f1e8; --accent: #dfff00; --on-accent: #20221f; --muted: #b8bcb0; --line: #585e50; --display: 'Oswald', var(--sans); --overlay: #11160dcc; }
.festival header { color: var(--accent); border-bottom: 1px solid var(--line); margin: 0 var(--gutter); padding: 0; }
.festival .header-action { border: 0; background: var(--accent); color: var(--on-accent); padding: var(--space-3) var(--space-5); }
.fest-hero { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-7); padding: var(--space-7) var(--gutter) var(--space-8); align-items: center; }
.fest-copy h1 { color: var(--accent); font-size: clamp(112px, 10.3vw, 168px); font-weight: 600; line-height: .95; letter-spacing: -.05em; text-transform: uppercase; }
.fest-copy > p { margin: var(--space-6) 0; color: var(--ink); font-size: var(--text-sm); max-width: 288px; }
.fest-image { height: 624px; }
.fest-image img { object-position: 55% center; filter: grayscale(1); }
.festival .marquee { display: flex; justify-content: space-between; gap: var(--space-5); padding: var(--space-5) var(--gutter); background: var(--accent); color: var(--on-accent); font-size: var(--text-sm); font-weight: 600; }
.festival .section-title h2 { font-size: 72px; text-transform: uppercase; letter-spacing: -.03em; }
.festival .program { padding-bottom: var(--space-8); }
.festival .tabs { color: var(--accent); }
.schedule-row { display: grid; grid-template-columns: 112px 1fr 224px; gap: var(--space-6); align-items: center; padding: var(--space-6) 0; border-bottom: 1px solid var(--line); }
.schedule-row time { color: var(--accent); font-size: var(--text-sm); font-variant-numeric: tabular-nums; }
.schedule-row h3 { font-family: var(--sans); font-size: var(--text-h3); }
.schedule-row p { font-size: var(--text-xs); color: var(--muted); }
.festival .split { padding-top: var(--space-8); }
.festival .split h2 { font-size: 72px; text-transform: uppercase; letter-spacing: -.03em; }
.festival .split img { height: 520px; object-position: 50% center; filter: grayscale(1); }
.festival .dish h3 { font-family: var(--sans); font-size: var(--text-lead); }
.festival .cta { background: var(--accent); color: var(--on-accent); border: 0; }
.festival .cta h2 { font-size: 72px; text-transform: uppercase; letter-spacing: -.03em; }
.festival .cta .btn { background: var(--on-accent); color: var(--accent); }

.retreat { --paper: #f1f0e8; --surface: #e3e7dc; --ink: #293d30; --accent: #293d30; --muted: #5b6759; --line: #c4cbbb; --on-accent: #f8f7f2; --display: var(--serif); }
.retreat-top { position: relative; min-height: 880px; background: var(--accent); color: var(--white); }
.retreat-top > img { position: absolute; inset: 0; object-position: center 58%; }
.retreat-top:after { content: ''; position: absolute; inset: 0; background: var(--overlay); pointer-events: none; }
.retreat header { position: relative; z-index: 3; }
.retreat-hero { position: relative; z-index: 2; padding: 104px var(--gutter) 224px; text-align: center; }
.retreat-hero h1 { font-size: clamp(104px, 9.75vw, 156px); line-height: .92; letter-spacing: -.04em; font-weight: 400; }
.retreat-hero p { font-family: var(--sans); font-size: var(--text-sm); margin: var(--space-6) auto 0; max-width: 336px; }
.booking { position: absolute; z-index: 3; bottom: var(--space-7); left: var(--gutter); right: var(--gutter); display: grid; grid-template-columns: 1fr 1fr .7fr auto; align-items: end; gap: var(--space-6); background: var(--paper); color: var(--ink); padding: var(--space-5) var(--space-6); }
.booking input, .booking select { padding: var(--space-2) 0; border: 0; border-bottom: 1px solid var(--muted); background: transparent; min-height: 48px; font-size: var(--text-sm); }
.booking label { font-size: var(--text-xs); }
.booking .btn { align-self: end; }
.retreat .intro { text-align: center; padding: var(--space-10) var(--gutter); }
.retreat .intro h2 { font-size: 72px; line-height: 1; letter-spacing: -.03em; }
.retreat .intro p { max-width: 520px; margin: var(--space-6) auto 0; color: var(--muted); }
.retreat .rooms { padding-top: 0; }
.retreat .section-title h2 { font-size: 72px; letter-spacing: -.03em; }
.retreat .image-grid img { height: 480px; }
.retreat .split { background: var(--surface); }
.retreat .split h2 { font-size: 72px; letter-spacing: -.03em; }
.retreat .cta { background: var(--accent); color: var(--white); border: 0; }
.retreat .cta h2 { font-size: 72px; letter-spacing: -.03em; }
.retreat .cta .btn { background: var(--paper); color: var(--ink); }

.gallery { padding: var(--space-8) var(--gutter); }
.gallery header { padding: 0; height: auto; margin-bottom: var(--space-10); }
.gallery header > span { font-size: var(--text-xs); color: var(--muted); }
.gallery h1 { font-size: 88px; margin-bottom: var(--space-6); }
.gallery .lead { max-width: 480px; color: var(--muted); }
.gallery-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-8) var(--space-6); margin-top: var(--space-8); }
.gallery-item .preview { display: block; aspect-ratio: 1.44; overflow: hidden; background: var(--surface); }
.gallery-item .preview img { object-position: top; }
.gallery-item .info { display: flex; justify-content: space-between; align-items: start; gap: var(--space-5); margin-top: var(--space-5); }
.gallery-item h2 { font-size: var(--text-h3); margin-bottom: var(--space-2); }
.gallery-item p { font-size: var(--text-xs); color: var(--muted); }
.gallery-item .links { display: flex; gap: var(--space-4); flex-shrink: 0; font-size: var(--text-xs); }
.gallery-item .links a { min-height: 44px; display: inline-flex; align-items: center; text-decoration: underline; text-underline-offset: 4px; }
.gallery-item:last-child { grid-column: 1 / -1; width: calc(50% - 12px); }
.gallery footer { margin-top: var(--space-10); font-size: var(--text-xs); color: var(--muted); }

@media (min-width: 1720px) {
  body:not(.gallery) { --gutter: max(64px, calc((100vw - 1440px)/2)); }
  .arch-heading h1 { font-size: 88px; }
  .object-copy h1 { font-size: 112px; }
}
@media (max-width: 1100px) {
  :root { --gutter: 32px; --text-h2: 48px; }
  header { gap: var(--space-5); height: 96px; }
  header nav { gap: var(--space-5); }
  .arch-hero { grid-template-columns: 1fr 1fr; gap: var(--space-6); min-height: 576px; }
  .arch-heading h1 { font-size: 56px; }
  .arch-visual { min-height: 520px; }
  .split { gap: var(--space-7); }
  .split > img { height: 480px; }
  .object-picture { height: 560px; }
  .object-copy h1 { font-size: 72px; }
  .product-image { height: 320px; }
  .fest-hero { gap: var(--space-6); }
  .fest-copy h1 { font-size: 104px; }
  .fest-image { height: 560px; }
  .festival .split h2 { font-size: 56px; }
  .booking { gap: var(--space-5); }
  .booking .btn { gap: var(--space-4); }
  .gallery-item .info { flex-direction: column; gap: var(--space-2); }
}
@media (max-width: 760px) {
  :root { --gutter: 24px; --text-h2: 36px; }
  header { height: 80px; gap: var(--space-4); }
  .logo { font-size: 26px; }
  header .header-action { margin-left: auto; font-size: 12px; min-height: 44px; }
  header nav { display: none; position: absolute; top: 80px; left: 0; right: 0; padding: var(--space-5); background: var(--paper); color: var(--ink); border-bottom: 1px solid var(--line); flex-direction: column; align-items: stretch; gap: var(--space-2); }
  header nav.open { display: flex; }
  header nav a { min-height: 44px; display: flex; align-items: center; font-size: var(--text-sm); }
  .menu-toggle { display: block; flex-shrink: 0; }
  .section { padding: var(--space-8) var(--gutter); }
  .section-title { align-items: start; flex-direction: column; gap: var(--space-4); margin-bottom: var(--space-6); }
  .section-note { max-width: 272px; }
  .split { grid-template-columns: 1fr; gap: var(--space-7); }
  .split > img { height: 400px; }
  .split p { font-size: var(--text-sm); }
  .image-grid { grid-template-columns: 1fr; gap: var(--space-7); }
  .image-grid img { height: 360px; }
  .image-grid figcaption { font-size: var(--text-sm); gap: var(--space-4); }
  .image-grid figcaption span { font-size: var(--text-xs); }
  .cta { padding: var(--space-8) var(--gutter); flex-direction: column; align-items: start; gap: var(--space-6); }
  .cta h2 { font-size: 36px; }
  .footer { flex-wrap: wrap; padding: var(--space-6) var(--gutter); }
  .footer > p { order: 3; width: 100%; }
  .arch-hero { grid-template-columns: 1fr; min-height: 0; gap: var(--space-6); padding: var(--space-6) var(--gutter) var(--space-6); }
  .arch-heading { padding: 0; }
  .arch-heading h1 { font-size: clamp(38px, 10.8vw, 72px); line-height: 1.08; }
  .arch-intro { margin-top: var(--space-5); }
  .arch-intro p { margin-bottom: var(--space-4); }
  .arch-visual { min-height: 0; height: 400px; margin: 0 calc(-1 * var(--gutter)); }
  .arch-visual img { object-position: 58% center; }
  .arch-visual figcaption { right: var(--space-4); bottom: var(--space-4); padding: var(--space-2) var(--space-3); }
  .arch-index { padding: var(--space-4) 0; font-size: var(--text-xs); }
  .arch-index span:last-child { display: none; }
  .project-grid { grid-template-columns: 1fr; gap: var(--space-7); }
  .project-grid figure:first-child img, .project-grid figure:last-child img { height: 360px; }
  .architecture .about > img { height: 400px; }
  .architecture .about h2 { font-size: 36px; }
  .restaurant .header-action { padding: var(--space-2) var(--space-3); }
  .rest-hero { padding-top: var(--space-6); }
  .rest-heading { display: block; padding-bottom: var(--space-6); }
  .rest-heading h1 { font-size: clamp(76px, 20vw, 128px); line-height: .95; }
  .rest-intro { margin-top: var(--space-6); max-width: 320px; }
  .rest-intro p { margin-bottom: var(--space-5); }
  .rest-photo { height: 400px; margin: 0 calc(-1 * var(--gutter)); }
  .rest-photo img { object-position: 62% center; }
  .rest-strip { font-size: var(--text-xs); gap: var(--space-4); }
  .rest-strip span:last-child { display: none; }
  .restaurant .section-title h2 { font-size: 52px; }
  .dish-list { grid-template-columns: 1fr; }
  .dish { padding: var(--space-5) 0; }
  .tabs { gap: var(--space-5); overflow-x: auto; }
  .tabs button { font-size: var(--text-xs); }
  .restaurant .atmosphere h2, .restaurant .cta h2 { font-size: 56px; }
  .restaurant .atmosphere img { height: 400px; }
  .object-hero { grid-template-columns: 1fr; gap: var(--space-6); padding-top: var(--space-6); padding-bottom: var(--space-6); }
  .object-copy { padding: 0; }
  .object-copy h1 { font-size: clamp(60px, 17.4vw, 104px); }
  .object-copy p { margin: var(--space-5) 0; }
  .object-picture { height: 400px; margin: 0 calc(-1 * var(--gutter)); }
  .object-picture img { object-position: 40% center; }
  .object-picture .caption { right: var(--space-4); bottom: var(--space-4); min-width: 136px; padding: var(--space-4); }
  .object-picture .caption strong { font-size: var(--text-body); margin-bottom: var(--space-2); }
  .object-categories { grid-template-columns: 1fr 1fr; gap: var(--space-3) var(--space-6); padding: var(--space-3) 0; }
  .objects .section-title h2, .objects .split h2 { font-size: 36px; }
  .products { grid-template-columns: 1fr; gap: var(--space-7); }
  .product-image { height: 400px; }
  .product-meta { padding-top: var(--space-4); }
  .festival header nav { left: calc(-1 * var(--gutter)); right: calc(-1 * var(--gutter)); }
  .festival .header-action { padding: var(--space-2) var(--space-3); }
  .fest-hero { grid-template-columns: 1fr; padding-top: var(--space-6); padding-bottom: var(--space-6); gap: var(--space-7); }
  .fest-copy h1 { font-size: clamp(64px, 20vw, 128px); line-height: .95; }
  .fest-copy > p { margin: var(--space-5) 0; }
  .fest-image { height: 360px; margin: 0 calc(-1 * var(--gutter)); }
  .festival .marquee { font-size: var(--text-xs); padding: var(--space-4) var(--gutter); }
  .festival .marquee span:last-child { display: none; }
  .festival .section-title h2 { font-size: 52px; }
  .schedule-row { grid-template-columns: 56px 1fr; gap: var(--space-3) var(--space-5); padding: var(--space-5) 0; }
  .schedule-row h3 { font-size: var(--text-lead); }
  .schedule-row p { grid-column: 2; }
  .festival .split h2 { font-size: clamp(40px, 12.5vw, 56px); }
  .festival .cta h2 { font-size: 56px; }
  .festival .split img { height: 400px; }
  .retreat-top { min-height: 844px; }
  .retreat-top > img { object-position: 95% center; }
  .retreat header nav { color: var(--ink); }
  .retreat-hero { padding: var(--space-9) var(--gutter) 224px; }
  .retreat-hero h1 { font-size: clamp(64px, 21vw, 128px); line-height: .95; }
  .retreat-hero p { margin-top: var(--space-5); max-width: 272px; }
  .booking { grid-template-columns: 1fr 1fr; gap: var(--space-4); left: var(--gutter); right: var(--gutter); bottom: var(--space-5); padding: var(--space-5); }
  .booking input, .booking select { font-size: var(--text-body); }
  .booking .btn { font-size: var(--text-xs); gap: var(--space-2); padding: var(--space-3); min-height: 48px; }
  .booking .arrow { font-size: 20px; }
  .retreat .intro { padding: var(--space-8) var(--gutter); }
  .retreat .intro h2 { font-size: 52px; }
  .retreat .section-title h2, .retreat .split h2, .retreat .cta h2 { font-size: 52px; }
  .retreat .image-grid img { height: 400px; }
  .gallery { padding-top: var(--space-6); padding-bottom: var(--space-6); }
  .gallery header { height: auto; margin-bottom: var(--space-8); }
  .gallery h1 { font-size: 52px; }
  .gallery-grid { grid-template-columns: 1fr; gap: var(--space-7); margin-top: var(--space-7); }
  .gallery-item:last-child { grid-column: auto; width: 100%; }
  .gallery-item .info { gap: var(--space-2); margin-top: var(--space-4); }
  .gallery-item h2 { font-size: var(--text-lead); }
  dialog { padding: var(--space-7) var(--space-5) var(--space-5); }
  dialog h2 { font-size: 28px; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *:before, *:after { transition: none !important; animation: none !important; }
}
