:root {
  --black: #050505;
  --cream: #f0eddc;
  --soft: #c9c6bc;
  --accent: #cc0436;
  --accent-rgb: 204,4,54;
  --line: rgba(240, 237, 220, .19);
  --display: "Space Grotesk", sans-serif;
  --body: Inter, sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; background: var(--black); overflow-x: clip; }
@view-transition { navigation: auto; }
::view-transition-group(root) { animation: none; }
::view-transition-old(root) { animation: page-fade-out .38s ease both; }
::view-transition-new(root) { animation: page-fade-in .62s cubic-bezier(.22,1,.36,1) both; }
@keyframes page-fade-out { to { opacity: 0; } }
@keyframes page-fade-in { from { opacity: 0; } to { opacity: 1; } }
body {
  margin: 0;
  min-height: 100vh;
  position: relative;
  isolation: isolate;
  background: transparent;
  color: var(--cream);
  font: 15px/1.6 var(--body);
}
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: .36;
  background:
    radial-gradient(ellipse at 15% 40%, rgba(75,72,68,.26), transparent 38%),
    radial-gradient(ellipse at 85% 78%, rgba(73,67,67,.2), transparent 42%);
  background-position: center;
}
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: linear-gradient(180deg,rgba(0,0,0,.18),rgba(0,0,0,.32));
}
.site-background-media { position: fixed; inset: 0; z-index: -2; overflow: hidden; pointer-events: none; background: #050505 url("images/ambient-background-desktop-poster.jpg") center / cover no-repeat; }
.site-background-media::after { content: ""; position: absolute; inset: 0; background: rgba(0,0,0,.18); }
.site-background-media.booking-background::after { background: rgba(0,0,0,.68); }
.site-background-video { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }
@media (max-width: 760px) { .site-background-media { background-image: url("images/ambient-background-mobile-poster.jpg"); } }
.site-background-image { position: fixed; inset: 0; z-index: -2; overflow: hidden; pointer-events: none; transform: scale(1.025); animation: ambient-background-breathe 9s ease-in-out infinite alternate; will-change: transform; }
.site-background-image::before,.site-background-image::after { content: ""; position: absolute; inset: 0; }
.site-background-image::before { background: url("images/ambient-pattern.jpg") center / cover no-repeat; opacity: .56; filter: brightness(.95) saturate(.82); animation: ambient-pattern-glow 9s ease-in-out infinite alternate; }
.site-background-image::after { opacity: .72; background: linear-gradient(116deg,transparent 35%,rgba(230,237,255,0) 44%,rgba(230,237,255,.9) 49%,rgba(204,4,54,.38) 52%,transparent 60%); background-size: 260% 100%; background-position: 0% 50%; mix-blend-mode: screen; -webkit-mask: url("images/ambient-pattern-edges.png") center / cover no-repeat; mask: url("images/ambient-pattern-edges.png") center / cover no-repeat; animation: ambient-metal-glint 7s ease-in-out infinite alternate; }
@keyframes ambient-background-breathe { from { transform: scale(1.025) translate3d(-.35%,.2%,0); } to { transform: scale(1.14) translate3d(.35%,-.2%,0); } }
@keyframes ambient-pattern-glow { from { opacity: .5; } to { opacity: .66; } }
@keyframes ambient-metal-glint { from { background-position: 0% 50%; } to { background-position: 100% 50%; } }
@media (max-width: 760px) { .site-background-image::before { background-position: left center; } .site-background-image::after { -webkit-mask-position: left center; mask-position: left center; } }
a { color: inherit; text-decoration: none; }
h1, h2, h3, p { margin-top: 0; }

.site-header {
  height: 138px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 15px;
  padding: 14px 20px 12px;
  position: relative;
  z-index: 2;
  background: rgba(0,0,0,.78);
}
.brand { display: flex; align-items: center; flex-direction: column; line-height: 1; }
.site-header .brand { transition: transform 2.5s cubic-bezier(.16,1,.3,1); }
.site-header .brand:hover,.site-header .brand:focus-visible { transform: scale(1.09); }
.brand > span {
  color: var(--cream);
  font: 800 25px/1 var(--display);
  letter-spacing: .08em;
  -webkit-text-stroke: 0;
  text-shadow: 0 0 12px rgba(240,237,220,.1);
}
.brand small { margin-top: 5px; color: var(--accent); font: 700 8px/1.2 var(--body); letter-spacing: .12em; }
.site-header .brand > .brand-wordmark { display: inline-flex; align-items: center; gap: 10px; white-space: nowrap; }
.site-header .brand .brand-letter { display: inline-block; color: var(--cream); font: inherit; -webkit-text-stroke: 0; --neon: #fff; filter: none; transition: color 1.1s ease,filter 1.1s ease; }
.site-header .brand-emblem { display: block; width: 25px; height: 25px; flex: 0 0 25px; background: var(--accent); -webkit-mask: url("images/majin-emblem.png") center / contain no-repeat; mask: url("images/majin-emblem.png") center / contain no-repeat; filter: drop-shadow(0 0 0 rgba(255,255,255,0)); transition: filter 1.1s ease,transform 2.5s cubic-bezier(.16,1,.3,1); }
.site-header .brand .brand-space { width: .25em; }
.site-header .brand small { color: var(--accent); }
.site-header .brand:hover .brand-letter,.site-header .brand:focus-visible .brand-letter { color: #fff; filter: drop-shadow(0 0 4px var(--neon)) drop-shadow(0 0 12px var(--neon)); }
.site-header .brand:hover .brand-emblem,.site-header .brand:focus-visible .brand-emblem { filter: drop-shadow(0 0 5px rgba(255,255,255,.8)) drop-shadow(0 0 13px rgba(255,255,255,.68)); }
.site-header .brand:hover small,.site-header .brand:focus-visible small { text-shadow: 0 0 5px rgba(255,255,255,.72); }
.language-switch { position: absolute; top: 13px; right: 18px; z-index: 5; font: 700 8px/1 var(--body); letter-spacing: .1em; }
.language-switch summary { list-style: none; cursor: pointer; padding: 5px 7px; border: 1px solid rgba(var(--accent-rgb),.75); color: var(--cream); background: rgba(0,0,0,.72); box-shadow: 0 0 8px rgba(var(--accent-rgb),.14); }
.language-switch summary::-webkit-details-marker { display: none; }
.language-switch summary::after { content: "⌄"; margin-left: 4px; color: var(--accent); }
.language-switch[open] summary { border-color: var(--accent); box-shadow: 0 0 12px rgba(var(--accent-rgb),.3); }
.language-options { position: absolute; top: calc(100% + 5px); right: 0; min-width: 118px; padding: 5px; border: 1px solid rgba(var(--accent-rgb),.65); background: rgba(10,10,10,.97); box-shadow: 0 8px 22px rgba(0,0,0,.55); }
.language-options span,.language-options button { display: block; width: 100%; padding: 8px; border: 0; background: none; text-align: left; font: 700 9px/1.2 var(--body); letter-spacing: .08em; }
.language-options span { color: var(--cream); }
.language-options button { color: #777; cursor: not-allowed; }
.language-options button::after { content: " · PRÓXIMAMENTE"; display: block; margin-top: 4px; color: var(--accent); font-size: 7px; }
.tabs { display: flex; align-items: center; justify-content: center; gap: 32px; }
.tab { padding: 9px 14px; border: 1px solid transparent; border-radius: 2px; color: #77777a; font: 700 14px/1 var(--body); transition: color .2s,border-color .2s,background .2s,box-shadow .2s,text-shadow .2s,transform .2s; }
.tab:hover,.tab:focus-visible { color: #fff8f6; border-color: rgba(var(--accent-rgb),.8); background: rgba(var(--accent-rgb),.12); box-shadow: 0 0 14px rgba(var(--accent-rgb),.28),inset 0 0 10px rgba(var(--accent-rgb),.1); text-shadow: 0 0 2px #fff,0 0 6px var(--accent),0 0 12px var(--accent),0 0 22px rgba(var(--accent-rgb),.95); transform: translateY(-1px); outline: none; }
.tab.active { color: var(--cream); }
.tab-booking { border-color: rgba(var(--accent-rgb),.2); color: var(--accent); background: rgba(var(--accent-rgb),.045); }
.tab-booking:hover,.tab-booking:focus-visible { border-color: rgba(var(--accent-rgb),.8); color: var(--accent); background: rgba(var(--accent-rgb),.16); box-shadow: 0 0 14px rgba(var(--accent-rgb),.34),inset 0 0 10px rgba(var(--accent-rgb),.13); text-shadow: 0 0 6px rgba(var(--accent-rgb),.8),0 0 12px rgba(var(--accent-rgb),.8),0 0 22px rgba(var(--accent-rgb),.95); transform: translateY(-1px); outline: none; }
.tab-booking.active { border-color: rgba(var(--accent-rgb),.86); color: var(--accent); background: rgba(var(--accent-rgb),.14); box-shadow: 0 0 12px rgba(var(--accent-rgb),.2),inset 0 0 9px rgba(var(--accent-rgb),.07); }
main { padding-bottom: 50px; }

.available-intro { padding-bottom: 28px; }
.available-intro h1 { font-size: clamp(58px, 10vw, 118px); }
.available-empty {
  position: relative;
  max-width: 760px;
  margin: 28px auto 72px;
  padding: 56px 42px 52px;
  border: 1px solid rgba(var(--accent-rgb),.48);
  background: linear-gradient(145deg, rgba(var(--accent-rgb),.09), rgba(8,8,8,.92) 42%, rgba(8,8,8,.78));
  box-shadow: 0 22px 60px rgba(0,0,0,.45), inset 0 0 34px rgba(var(--accent-rgb),.045);
  text-align: center;
}
.available-mark { display: grid; place-items: center; width: 54px; height: 54px; margin: 0 auto 26px; border: 1px solid rgba(var(--accent-rgb),.68); color: var(--cream); font: 700 15px/1 var(--display); letter-spacing: .08em; box-shadow: 0 0 24px rgba(var(--accent-rgb),.16); }
.available-empty .eyebrow { margin-bottom: 12px; color: var(--accent); }
.available-empty h2 { margin: 0 0 16px; color: var(--cream); font: 800 clamp(25px,4vw,38px)/1.1 var(--display); letter-spacing: -.035em; }
.available-empty > p:not(.eyebrow) { max-width: 540px; margin: 0 auto; color: #b8b5b0; font: 400 15px/1.8 var(--body); }
.available-actions { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 25px; margin-top: 30px; }
.available-secondary { color: var(--cream); font: 700 11px/1.4 var(--body); letter-spacing: .08em; transition: color .2s,text-shadow .2s; }
.available-secondary:hover,.available-secondary:focus-visible { color: #fff; text-shadow: 0 0 10px rgba(var(--accent-rgb),.8); }
.available-secondary span { color: var(--accent); }

.page-intro { position: relative; overflow: hidden; padding: 58px 20px 36px; text-align: center; }
.page-intro::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: radial-gradient(ellipse at 50% 25%, rgba(125,116,108,.12), transparent 53%);
}
.eyebrow { margin: 0 0 20px; color: #bbb8af; font: 700 10px/1.4 var(--body); letter-spacing: .12em; }
.accent-dot { display: inline-block; width: 7px; height: 7px; margin-right: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 10px rgba(var(--accent-rgb),.6); }
.page-intro h1 {
  margin: 0 auto 27px;
  color: var(--cream);
  font: 900 clamp(74px, 14vw, 160px)/.9 var(--display);
  letter-spacing: -.055em;
  text-shadow: 0 2px 20px rgba(255,255,255,.08);
}
.page-intro h1 span { color: inherit; -webkit-text-stroke: 0; }
.lead { max-width: 760px; margin: 0 auto 17px; color: var(--soft); font: 700 clamp(16px,2vw,21px)/1.55 var(--body); }
.micro-copy { margin: 25px auto 0; color: var(--accent); font: 700 10px/1.4 var(--body); letter-spacing: .11em; }
.portfolio-intro { padding-top: 46px; }
.portfolio-intro h1 { font-size: clamp(58px,12vw,142px); }
.portfolio-intro .lead { max-width: 620px; }

.portfolio-carousel {
  --visible: 4;
  max-width: 1400px;
  margin: 20px auto 0;
  padding: 0 8px;
  display: block;
}
.portfolio-viewport { min-width: 0; overflow-x: clip; overflow-y: visible; clip-path: inset(-250px 0); cursor: grab; touch-action: pan-y; user-select: none; -webkit-user-select: none; }
.portfolio-viewport:active { cursor: grabbing; }
.portfolio-track { display: flex; gap: 10px; transition: transform .42s cubic-bezier(.4,0,.2,1); will-change: transform; }
.portfolio-card {
  min-width: 0;
  flex: 0 0 calc((100% - 30px) / 4);
  height: clamp(380px, 34vw, 500px);
  position: relative;
  overflow: hidden;
  margin: 0;
  border: 1px solid rgba(255,255,255,.13);
  background: #101010;
  transition: transform .72s cubic-bezier(.4,0,.2,1),box-shadow .72s cubic-bezier(.4,0,.2,1);
  will-change: transform;
}
.portfolio-card:hover { cursor: zoom-in; }
.portfolio-card:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.portfolio-card.is-zoomed { cursor: zoom-out; }
.portfolio-viewport.is-dragging .portfolio-card:hover { z-index: auto; transform: none; border-color: rgba(255,255,255,.13); box-shadow: none; }
.portfolio-image { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .72s cubic-bezier(.4,0,.2,1); will-change: transform; }
.portfolio-card:hover .portfolio-image { transform: scale(1); }
.portfolio-zoom-overlay { position: fixed; z-index: 100; flex: none; pointer-events: none; transform: translate(var(--zoom-shift-x, 0px), var(--zoom-shift-y, 0px)) scale(var(--zoom-start)); opacity: 0; transform-origin: center; will-change: transform, opacity; transition: transform .72s cubic-bezier(.45,0,.2,1),opacity .72s ease-in-out,box-shadow .72s ease-in-out; }
.portfolio-zoom-overlay.is-visible { transform: translate(0,0) scale(1); opacity: 1; border-color: rgba(255,255,255,.72); box-shadow: 0 0 0 2px rgba(var(--accent-rgb),.38),0 0 34px rgba(var(--accent-rgb),.42); }
.portfolio-controls { display: flex; justify-content: center; gap: 14px; margin-top: 18px; }
.portfolio-arrow { width: 34px; height: 34px; display: grid; place-items: center; padding: 0 0 3px 1px; border: 1px solid rgba(240,237,220,.22); border-radius: 50%; color: rgba(240,237,220,.62); background: rgba(255,255,255,.035); cursor: pointer; font: 300 25px/1 var(--body); transition: color .25s,border-color .25s,background .25s,box-shadow .25s,transform .25s; }
.portfolio-arrow:hover,.portfolio-arrow:focus-visible { color: #fff; border-color: var(--accent); background: rgba(var(--accent-rgb),.16); box-shadow: 0 0 18px rgba(var(--accent-rgb),.28); outline: none; }
.portfolio-next:hover,.portfolio-next:focus-visible { transform: translateX(2px); }
.portfolio-prev:hover,.portfolio-prev:focus-visible { transform: translateX(-2px); }
@media (hover: none), (pointer: coarse) {
  .portfolio-card:hover { z-index: auto; transform: none; border-color: rgba(255,255,255,.13); box-shadow: none; }
  .portfolio-card:hover .portfolio-image { transform: none; }
  .portfolio-card.is-zoomed { transform: none; }
}
.cta-band { max-width: 900px; margin: 85px auto 25px; padding: 22px 28px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); display: flex; align-items: center; justify-content: space-between; gap: 20px; }
.cta-band p { margin: 0; font: 700 18px var(--body); }
.button-link { display: inline-flex; align-items: center; gap: 22px; padding: 13px 17px; border: 1px solid rgba(240,237,220,.48); font: 700 10px/1 var(--body); letter-spacing: .08em; transition: background .2s,color .2s; }
.button-link span { color: var(--accent); font-size: 14px; }
.button-link:hover { background: var(--cream); color: var(--black); }

.about-panel { position: relative; max-width: 1000px; margin: 10px auto 100px; padding: 0 30px; display: grid; grid-template-columns: .9fr 1.1fr; gap: 75px; align-items: center; }
.about-panel::before { content: ""; position: absolute; z-index: 2; inset: -18px 8px; pointer-events: none; opacity: .8; background: linear-gradient(90deg,transparent,rgba(240,237,220,.2) 12%,rgba(240,237,220,.32) 43%,transparent 48%,transparent 52%,rgba(240,237,220,.32) 57%,rgba(240,237,220,.2) 88%,transparent) top / 100% 1px no-repeat,linear-gradient(90deg,transparent,rgba(240,237,220,.2) 12%,rgba(240,237,220,.32) 43%,transparent 48%,transparent 52%,rgba(240,237,220,.32) 57%,rgba(240,237,220,.2) 88%,transparent) bottom / 100% 1px no-repeat,linear-gradient(180deg,transparent,rgba(240,237,220,.25) 18%,rgba(240,237,220,.25) 82%,transparent) left / 1px 100% no-repeat,linear-gradient(180deg,transparent,rgba(240,237,220,.25) 18%,rgba(240,237,220,.25) 82%,transparent) right / 1px 100% no-repeat,linear-gradient(180deg,rgba(240,237,220,.32),transparent) center top / 1px 10px no-repeat,linear-gradient(0deg,rgba(240,237,220,.32),transparent) center bottom / 1px 10px no-repeat; }
.portrait-frame { position: relative; isolation: isolate; width: min(100%,350px); aspect-ratio: 1; justify-self: center; overflow: visible; border: 1px solid rgba(240,237,220,.58); box-shadow: 0 0 0 5px var(--black), 0 0 0 6px rgba(var(--accent-rgb),.7), 0 18px 42px rgba(0,0,0,.42); transition: transform 2.5s cubic-bezier(.2,.7,.2,1),box-shadow 2.5s cubic-bezier(.2,.7,.2,1); }
.portrait-frame::before { content: ""; position: absolute; z-index: -1; inset: -9%; background: radial-gradient(ellipse,rgba(var(--accent-rgb),.3),rgba(var(--accent-rgb),.12) 42%,transparent 72%); filter: blur(15px); opacity: 0; transition: opacity 2.5s ease; pointer-events: none; }
.portrait-photo { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 42% center; }
.portrait-frame:hover { z-index: 1; transform: scale(1.09); box-shadow: 0 0 0 5px var(--black), 0 0 0 6px rgba(var(--accent-rgb),.86), 0 18px 42px rgba(0,0,0,.42),0 0 22px rgba(var(--accent-rgb),.2); }
.portrait-frame:hover::before { opacity: 1; }
.about-copy h2 { margin: 0 0 27px; font: 800 clamp(43px,6vw,72px)/.98 var(--display); letter-spacing: -.05em; }
.about-copy h2 span,.faq-heading h2 span { color: var(--accent); }
.about-copy>p:not(.eyebrow) { max-width: 430px; color: #bab7ae; font-size: 14px; line-height: 1.8; }
.about-copy .button-link { margin-top: 17px; }
@media(min-width:761px) {
  .about-copy .eyebrow { text-align: left; }
  .about-copy .button-link { display: flex; width: max-content; margin: 17px 0 0 auto; }
}
.faq-section { max-width: 990px; margin: 0 auto; padding: 0 30px; display: grid; grid-template-columns: .82fr 1.18fr; gap: 70px; align-items: start; }
.faq-heading .eyebrow { color: var(--accent); }
.faq-heading h2 { margin: 0 0 23px; font: 800 clamp(45px,6vw,76px)/.98 var(--display); letter-spacing: -.05em; }
.faq-heading>p:last-child { max-width: 300px; color: #aaa79e; font-size: 13px; line-height: 1.7; }
.faq-list { border-top: 1px solid var(--line); }
.faq-list details { border-bottom: 1px solid var(--line); }
.faq-list summary { list-style: none; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 17px 0; color: var(--cream); font-weight: 700; font-size: 13px; }
.faq-list summary::-webkit-details-marker { display: none; }
.faq-list summary span { color: var(--accent); font: 20px var(--body); transition: transform .2s; }
.faq-list details[open] summary span { transform: rotate(45deg); }
.faq-list details p { margin: 0; padding: 0 40px 18px 0; color: #aaa79e; font-size: 12px; line-height: 1.75; }
.faq-list p a { color: var(--accent); font-weight: 600; text-decoration: underline; text-decoration-color: rgba(var(--accent-rgb),.5); text-underline-offset: 3px; transition: color .2s,text-shadow .2s; }
.faq-list p a:hover,.faq-list p a:focus-visible { color: #fff; text-shadow: 0 0 8px rgba(var(--accent-rgb),.55); }
.faq-list>.faq-topic { border-bottom: 1px solid var(--line); }
.faq-list>.faq-topic>summary { padding: 19px 0; color: var(--accent); font-size: 11px; letter-spacing: .12em; }
.faq-list>.faq-topic>summary span { font-size: 19px; }
.faq-topic-questions { padding: 0 0 8px 14px; border-left: 1px solid rgba(var(--accent-rgb),.28); }
.faq-topic-questions .faq-question { border-bottom: 1px solid rgba(255,255,255,.07); }
.faq-topic-questions .faq-question:last-child { border-bottom: 0; }
.faq-topic-questions .faq-question>summary { padding: 12px 0; font-size: 12px; }
.faq-topic-questions .faq-question>summary span { font-size: 17px; }
.faq-topic-questions .faq-question>p { padding: 0 30px 14px 0; }
@supports selector(details::details-content) {
  .faq-list details { interpolate-size: allow-keywords; }
  .faq-list details::details-content {
    display: block;
    block-size: 0;
    overflow: clip;
    opacity: 0;
    transition: block-size .38s cubic-bezier(.22,1,.36,1), opacity .24s ease, content-visibility .38s allow-discrete;
  }
  .faq-list details[open]::details-content { block-size: auto; opacity: 1; }
  @starting-style {
    .faq-list details[open]::details-content { block-size: 0; opacity: 0; }
  }
}

.booking-gallery { max-width: 980px; margin: 18px auto 0; padding: 0 28px; display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 6px; }
.booking-photo { height: 260px; position: relative; overflow: hidden; margin: 0; background: #111; transition: transform .45s cubic-bezier(.4,0,.2,1),box-shadow .45s cubic-bezier(.4,0,.2,1); }
.booking-photo img { display: block; width: 100%; height: 100%; object-fit: cover; transform: scale(1.24); transition: transform .45s cubic-bezier(.4,0,.2,1); }
.booking-photo:hover img { transform: scale(1.38); }
.booking-photo:hover,.booking-photo:focus-within { z-index: 2; transform: scale(1.06); box-shadow: 0 0 0 1px rgba(0,0,0,.9),0 10px 28px rgba(0,0,0,.82),0 0 44px rgba(0,0,0,.58); }
.photo-b { background-image: radial-gradient(ellipse at 55% 30%,rgba(var(--accent-rgb),.78),transparent 39%),linear-gradient(20deg,#0b0a0a,#342b18); }
.photo-c { background-image: radial-gradient(ellipse at 48% 54%,rgba(var(--accent-rgb),.72),transparent 33%),linear-gradient(135deg,#080808,#3b3020); }
.photo-d { background-image: radial-gradient(ellipse at 37% 47%,rgba(var(--accent-rgb),.72),transparent 38%),linear-gradient(145deg,#19150d,#080808); }
.photo-e { background-image: radial-gradient(ellipse at 52% 46%,rgba(var(--accent-rgb),.68),transparent 38%),linear-gradient(25deg,#080808,#3e3119); }
.photo-f { background-image: radial-gradient(ellipse at 50% 32%,rgba(var(--accent-rgb),.78),transparent 34%),linear-gradient(145deg,#17120a,#080808); }
.booking-intro { max-width: 900px; margin: 13px auto 0; padding: 20px 30px 16px; text-align: center; }
.booking-intro h1 { margin-bottom: 11px; color: var(--cream); font-size: clamp(65px,11vw,135px); -webkit-text-stroke: 0; }
.booking-intro .lead { margin-bottom: 11px; font-size: 16px; }
.booking-note { max-width: 570px; margin: 0 auto; color: #aaa79e; font-size: 12px; line-height: 1.7; }
.form-section { max-width: 720px; margin: 13px auto 75px; padding: 0 28px; }
.booking-form { padding-top: 22px; border-top: 1px solid var(--line); }
.form-intro { display: flex; justify-content: space-between; gap: 15px; margin: 0 0 22px; color: #aaa79e; font: 700 9px var(--body); letter-spacing: .12em; }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 25px; }
.booking-form label { display: block; margin: 0 0 21px; color: #ccc9c0; font-size: 11px; font-weight: 700; }
.booking-form label[hidden] { display: none; }
.booking-form #project { min-height: 190px; }
.booking-form input[type="file"] { cursor: pointer; }
.booking-form input[type="file"]::file-selector-button { margin-right: 12px; padding: 8px 11px; border: 1px solid rgba(var(--accent-rgb),.6); border-radius: 3px; color: var(--cream); background: rgba(var(--accent-rgb),.16); font: 700 11px var(--body); cursor: pointer; }
.file-help { margin: -14px 0 20px; color: #96918b; font-size: 10px; line-height: 1.6; }
.reference-file-list { display: grid; gap: 7px; margin: -9px 0 20px; padding: 0; list-style: none; }
.reference-file-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; padding: 9px 11px; border: 1px solid rgba(240,237,220,.12); border-radius: 3px; background: rgba(255,255,255,.025); }
.reference-file-preview { display: grid; flex: 0 0 54px; width: 54px; height: 54px; place-items: center; overflow: hidden; border: 1px solid rgba(240,237,220,.14); border-radius: 3px; color: #aaa79e; background: rgba(255,255,255,.04); font: 700 10px var(--body); }
.reference-file-preview img { display: block; width: 100%; height: 100%; object-fit: cover; }
.reference-file-preview.is-unavailable { color: var(--accent); }
.reference-file-preview.is-document { color: #c9c5bb; }
.reference-file-info { flex: 1 1 auto; min-width: 0; }
.reference-file-details { min-width: 0; overflow-wrap: anywhere; color: #c9c5bb; font-size: 11px; line-height: 1.5; }
.reference-file-remove { flex: 0 0 auto; padding: 6px 8px; border: 1px solid rgba(var(--accent-rgb),.45); border-radius: 3px; color: var(--cream); background: transparent; font: 700 10px var(--body); cursor: pointer; }
.reference-file-remove:hover,.reference-file-remove:focus-visible { background: rgba(var(--accent-rgb),.16); }
.booking-form input:not([type=checkbox]):not([type=hidden]),.booking-form textarea,.booking-form select { display: block; width: 100%; margin-top: 6px; padding: 13px 12px; border: 1px solid rgba(240,237,220,.16); border-radius: 4px; outline: none; resize: vertical; color: var(--cream); background: rgba(255,255,255,.035); font: 13px var(--body); }
.booking-form input::placeholder,.booking-form textarea::placeholder { color: #77746e; }
.booking-form input:focus,.booking-form textarea:focus,.booking-form select:focus { border-color: var(--accent); }
.booking-form select option { color: var(--cream); background: #121212; }
.body-map-picker { margin-bottom: 21px; }
.body-map-label { display: block; margin-bottom: 6px; color: #ccc9c0; font-size: 11px; font-weight: 700; }
.body-map-trigger { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; padding: 13px 12px; border: 1px solid rgba(240,237,220,.16); border-radius: 4px; color: var(--cream); background: rgba(255,255,255,.035); font: 13px var(--body); text-align: left; cursor: pointer; }
.body-map-trigger:hover,.body-map-trigger:focus-visible,.body-map-trigger[aria-expanded="true"] { border-color: var(--accent); outline: none; }
.body-map-trigger[aria-invalid="true"] { border-color: var(--accent); }
.body-map-trigger [aria-hidden="true"] { font-size: 17px; line-height: 12px; }
.body-map-panel { margin-top: 8px; padding: 10px; border: 1px solid rgba(240,237,220,.16); border-radius: 5px; background: #111010; }
.body-map-groups { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.body-map-group,.body-map-back { padding: 13px 12px; border: 1px solid rgba(240,237,220,.17); border-radius: 4px; color: var(--cream); background: rgba(255,255,255,.035); font: 700 11px var(--body); text-align: left; cursor: pointer; }
.body-map-group[data-zone] { grid-column: 1 / -1; text-align: center; }
.body-map-group:hover,.body-map-group:focus-visible,.body-map-back:hover,.body-map-back:focus-visible { border-color: var(--accent); outline: none; }
.body-map-back { margin-bottom: 10px; color: var(--accent); }
.body-map-choices { display: grid; grid-template-columns: repeat(auto-fill,minmax(128px,1fr)); gap: 9px; max-height: 435px; overflow-y: auto; padding: 3px 4px 4px 0; scrollbar-color: rgba(var(--accent-rgb),.55) #181616; }
.body-map-panel[hidden],.body-map-groups[hidden],.body-map-choices[hidden],.body-map-back[hidden] { display: none; }
.body-map-choice { display: flex; flex-direction: column; align-items: stretch; gap: 7px; padding: 8px; border: 1px solid rgba(240,237,220,.17); border-radius: 5px; background: rgba(18,18,18,.88); color: var(--cream); text-align: left; cursor: pointer; transition: border-color .2s,box-shadow .2s,background .2s; }
.body-map-choice:hover,.body-map-choice:focus-visible { border-color: rgba(var(--accent-rgb),.7); box-shadow: 0 0 16px rgba(var(--accent-rgb),.15); outline: none; }
.body-map-choice[aria-pressed="true"] { border-color: var(--accent); background: rgba(var(--accent-rgb),.13); box-shadow: 0 0 0 1px rgba(var(--accent-rgb),.35); }
.body-map-choice-art { display: grid; place-items: center; height: 148px; overflow: hidden; border-radius: 3px; background: #0e0e0e; }
.body-map-choice-art svg { width: 100%; height: 100%; max-width: 130px; }
.body-map-choice-name { font: 700 11px/1.3 var(--body); }
.body-map-choice-detail { color: #96918b; font: 10px/1.3 var(--body); }
.consent { display: flex!important; align-items: flex-start; gap: 9px; color: #aaa79e!important; font-weight: 400!important; line-height: 1.6; }
.consent input { margin: 2px 0 0; accent-color: var(--accent); }
.consent b { color: var(--accent); }
.submit-button { width: 100%; display: flex; align-items: center; justify-content: space-between; padding: 15px 16px; border: 1px solid var(--accent); cursor: pointer; color: var(--cream); background: var(--accent); font: 700 11px var(--body); letter-spacing: .07em; }
.submit-button span { font-size: 15px; }
.submit-button:hover { color: var(--accent); background: transparent; }
.form-status { margin-top: 10px; color: #85827b; font-size: 10px; }
.form-status[data-state="success"] { color: #a9c99c; }
.form-status[data-state="error"] { color: var(--accent); }
.privacy-note { margin: 0 0 12px; color: #88857d; font-size: 10px; line-height: 1.6; }
.form-honeypot { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); clip-path: inset(50%); white-space: nowrap; }
.submit-button:disabled { cursor: wait; opacity: .65; }
.site-footer { max-width: 1100px; margin: auto; padding: 25px 30px; border-top: 1px solid var(--line); display: grid; grid-template-columns: minmax(0,1fr) auto; grid-template-rows: auto auto; align-items: center; column-gap: 24px; row-gap: 8px; color: #77756f; font: 700 9px var(--body); letter-spacing: .08em; }
.footer-social-row { grid-column: 1; grid-row: 1; display: flex; align-items: center; gap: 14px; }
.footer-brand { flex-direction: row; align-items: center; gap: 8px; }
.footer-brand .footer-wordmark { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; font-size: 16px; }
.footer-brand small { margin: 0; }
.footer-emblem { display: block; width: 25px; height: 25px; background: var(--accent); -webkit-mask: url("images/majin-emblem.png") center / contain no-repeat; mask: url("images/majin-emblem.png") center / contain no-repeat; transition: transform 2.5s cubic-bezier(.16,1,.3,1),filter 1.1s ease; }
.footer-brand:hover .footer-emblem,.footer-brand:focus-visible .footer-emblem { transform: scale(1.09); filter: drop-shadow(0 0 5px rgba(255,255,255,.8)) drop-shadow(0 0 13px rgba(255,255,255,.68)); }
.instagram-link { display: grid; width: 28px; height: 28px; place-items: center; color: var(--cream); transition: transform 2.5s cubic-bezier(.16,1,.3,1),filter 1.1s ease; }
.instagram-icon { display: block; width: 24px; height: 24px; }
.instagram-link:hover,.instagram-link:focus-visible { transform: scale(1.09); filter: drop-shadow(0 0 5px rgba(255,255,255,.8)) drop-shadow(0 0 13px rgba(255,255,255,.68)); outline: none; }
.footer-contact > a:first-child { color: var(--accent); }
.site-footer>span { grid-column: 1; grid-row: 2; }
.footer-contact { grid-column: 2; grid-row: 1; flex-direction: column; align-items: flex-end; gap: 5px; }
.footer-legal { grid-column: 2; grid-row: 2; align-self: center; justify-content: flex-end; }

@media (prefers-reduced-motion: reduce) {
  .site-background-video { display: none; }
  .site-background-image,.site-background-image::before,.site-background-image::after { animation: none; }
  ::view-transition-old(root),::view-transition-new(root) { animation-duration: .01ms; }
  .site-header .brand,.site-header .brand .brand-letter,.footer-emblem,.instagram-link { transition: none; }
  .portfolio-card,.portfolio-image,.portfolio-track,.portfolio-arrow,.portrait-frame,.portrait-frame::before,.portrait-photo,.booking-photo,.booking-photo img { transition: none; }
  .tab { transition: none; }
  .faq-list details::details-content { transition: none; }
}

@media(max-width:760px) {
  .site-header { height: 124px; }
  .tabs { gap: 7px; }
  .tab { padding: 8px 7px; font-size: 10px; }
  .page-intro { padding-top: 52px; }
  .portfolio-carousel { --visible: 3; padding: 0 14px; }
  .portfolio-card { flex-basis: calc((100% - 20px) / 3); height: clamp(300px, 50vw, 400px); }
  .about-panel { gap: 35px; }
  .faq-section { gap: 34px; }
  .booking-photo { height: 220px; }
  .cta-band { margin-left: 20px; margin-right: 20px; }
}
@media(max-width:560px) {
  html,body { width: 100%; max-width: 100%; overflow-x: hidden; }
  .site-header { height: 138px; gap: 14px; }
  .language-switch { top: 8px; right: 10px; }
  .site-header .brand { margin-top: 18px; }
  .brand span { font-size: 22px; }
  .site-header .brand-emblem { width: 21px; height: 21px; flex-basis: 21px; }
  .site-header .brand > .brand-wordmark { gap: 7px; }
  .tabs { gap: 3px; }
  .tab { padding: 9px 5px; font-size: 10px; }
  .page-intro { padding: 47px 15px 26px; }
  .page-intro h1,.portfolio-intro h1,.booking-intro h1 { font-size: clamp(40px,11vw,64px); }
  .eyebrow { font-size: 9px; }
  .lead { font-size: 15px; }
  .portfolio-carousel { --visible: 3; padding: 0 8px; }
  .portfolio-track { gap: 8px; }
  .portfolio-card { flex-basis: calc((100% - 16px) / 3); height: clamp(230px, 68vw, 320px); }
  .portfolio-arrow { width: 28px; height: 28px; font-size: 22px; }
  .cta-band { margin: 58px 12px 18px; padding: 18px 0; align-items: center; flex-direction: column; text-align: center; }
  .cta-band p { font-size: 16px; }
  .about-panel { max-width: 520px; grid-template-columns: minmax(145px,.9fr) minmax(0,1.1fr); grid-auto-flow: row; gap: 30px; margin: 42px auto 100px; padding: 0 22px; align-items: start; }
  .portrait-frame { grid-column: 1; grid-row: 2; width: 100%; max-width: none; height: auto; aspect-ratio: 1; justify-self: stretch; align-self: start; }
  .about-copy { display: contents; }
  .about-copy .eyebrow { grid-column: 1 / -1; grid-row: 1; margin-bottom: 0; font-size: 8px; line-height: 1.55; }
  .about-copy>p:nth-of-type(2) { grid-column: 2; grid-row: 2; align-self: center; transform: translateY(10px); }
  .about-copy>p:nth-of-type(3) { grid-column: 1 / -1; }
  .about-copy>p:nth-of-type(n+4),.about-copy .button-link { grid-column: 1 / -1; }
  .about-copy>p:not(.eyebrow) { margin: 0; font-size: 12px; line-height: 1.8; }
  .about-copy .button-link { gap: 10px; margin-top: 14px; padding: 13px 12px; font-size: 8px; letter-spacing: .04em; }
  .faq-section { grid-template-columns: 1fr; gap: 20px; padding: 0 18px; }
  .faq-heading h2 { font-size: 58px; }
  .faq-heading>p:last-child { max-width: 420px; }
  .available-empty { margin: 20px 15px 55px; padding: 38px 22px 36px; }
  .available-empty > p:not(.eyebrow) { font-size: 14px; }
  .available-actions { gap: 18px; }
  .booking-gallery { width: 100%; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 3px; padding: 0 8px; }
  .booking-photo { height: clamp(96px,36vw,140px); min-height: 0; }
  .booking-intro { padding: 26px 18px 12px; }
  .form-section { margin-top: 12px; padding: 0 18px; }
  .form-row { grid-template-columns: 1fr; gap: 0; }
  .site-footer { grid-template-columns: minmax(0,1fr); grid-template-rows: auto auto auto auto; justify-items: center; padding: 22px 18px; row-gap: 12px; }
  .footer-social-row { width: 100%; grid-column: 1; grid-row: 1; display: grid; grid-template-columns: 28px auto 28px; justify-content: center; align-items: center; column-gap: 14px; }
  .footer-brand { display: contents; }
  .footer-brand .footer-emblem { grid-column: 1; grid-row: 1; justify-self: center; }
  .footer-brand .footer-wordmark { grid-column: 2; grid-row: 1; align-items: center; text-align: center; font-size: 15px; }
  .footer-brand small { text-align: center; }
  .footer-social-row .instagram-link { grid-column: 3; grid-row: 1; justify-self: center; }
  .site-footer>span { grid-column: 1; grid-row: 4; justify-self: center; }
  .footer-contact { grid-column: 1; grid-row: 2; justify-self: center; flex-direction: row; align-items: center; justify-content: center; gap: 12px; text-align: center; }
  .footer-legal { grid-column: 1; grid-row: 3; justify-content: center; text-align: center; }
}
@media(max-width:360px) {
  .about-panel { grid-template-columns: minmax(0,1fr); gap: 32px; }
  .portrait-frame { grid-column: 1; grid-row: 2; width: min(100%,220px); justify-self: center; }
  .about-copy .eyebrow,.about-copy>p:nth-of-type(2),.about-copy>p:nth-of-type(3),.about-copy>p:nth-of-type(n+4),.about-copy .button-link { grid-column: 1; grid-row: auto; }
}

/* Available designs: native scrolling keeps touch gestures and links independent. */
.design-gallery { max-width: 1400px; margin: 0 auto 70px; padding: 0 24px; min-width: 0; }
.design-preview-note { margin: 0 0 24px; text-align: center; color: #a5a29f; font: 400 12px/1.7 var(--body); }
.design-track { display: flex; gap: 20px; overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 4px 0 16px; }
.design-track::-webkit-scrollbar { display: none; }
.design-track:focus-visible { outline: 1px solid var(--accent); outline-offset: 6px; }
.design-card { flex: 0 0 calc((100% - 60px) / 4); min-width: 0; scroll-snap-align: start; }
.design-media { height: clamp(300px, 31vw, 440px); overflow: hidden; border: 1px solid rgba(255,255,255,.18); background: #101010; transition: border-color .3s, box-shadow .3s; }
.design-media img { display: block; width: 100%; height: 100%; object-fit: contain; transition: transform .4s; }
.design-placeholder { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 24px; background: radial-gradient(ellipse at center, #252222 0%, #111 75%); }
.design-placeholder > span { color: rgba(240,237,220,.16); font: 500 clamp(60px,8vw,110px)/1 var(--display); letter-spacing: -.07em; }
.design-placeholder > p { margin: 0; color: #85817e; font: 500 9px/1.5 var(--body); letter-spacing: .16em; }
.design-caption { padding: 20px 0 0; }
.design-reference { color: var(--accent); font: 500 10px/1.5 var(--body); letter-spacing: .12em; }
.design-caption h2 { margin: 6px 0 18px; color: var(--cream); font: 500 22px/1.3 var(--display); }
.design-enquiry { display: flex; justify-content: center; text-align: center; width: 100%; padding: 13px 8px; font-size: 10px; letter-spacing: .025em; }
.selected-design-note { margin: 0 0 22px; padding: 16px 18px; border-left: 2px solid var(--accent); background: rgba(var(--accent-rgb),.07); color: var(--cream); font: 400 13px/1.7 var(--body); }
@media (hover: hover) and (pointer: fine) {
  .design-card:hover .design-media { border-color: rgba(var(--accent-rgb),.65); box-shadow: 0 8px 24px rgba(0,0,0,.35); }
  .design-card:hover img { transform: scale(1.04); }
}
@media (max-width: 1000px) {
  .design-card { flex-basis: calc((100% - 40px) / 3); }
}
@media (max-width: 760px) {
  .design-gallery { padding: 0 16px; margin-bottom: 45px; }
  .design-track { gap: 14px; }
  .design-card { flex-basis: calc((100% - 14px) / 2); }
  .design-media { height: clamp(230px, 68vw, 360px); }
  .design-caption { padding-top: 15px; }
  .design-caption h2 { font-size: 19px; }
  .design-enquiry { font-size: 10px; min-height: 48px; }
}
@media (prefers-reduced-motion: reduce) {
  .design-media,.design-media img { transition: none; }
}

.design-guide { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; margin: 0 0 18px; }
.design-category { padding: 11px 17px; border: 1px solid rgba(240,237,220,.2); color: #b8b5b0; background: rgba(5,5,5,.35); font: 500 11px/1.4 var(--body); cursor: pointer; transition: color .25s,border-color .25s,background .25s; }
.design-category[aria-current="true"] { color: var(--cream); border-color: rgba(var(--accent-rgb),.7); background: rgba(var(--accent-rgb),.12); }
.design-category:hover,.design-category:focus-visible { color: var(--cream); border-color: var(--accent); outline: none; }
.design-progress { margin: 0 0 20px; text-align: center; color: #aaa6a2; font: 400 11px/1.6 var(--body); letter-spacing: .04em; }
.design-caption h2 { min-height: 2.6em; }
.design-reference { display: block; min-height: 3em; }
@media (max-width: 760px) {
  .design-guide { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
  .design-category { min-height: 44px; padding: 9px 7px; font-size: 10px; }
  .design-caption h2 { font-size: 17px; min-height: 3.9em; }
  .design-reference { font-size: 9px; min-height: 3em; }
}
@media (prefers-reduced-motion: reduce) { .design-category { transition: none; } }

/* Extend the grid behind the complete artwork; every frame keeps the same size. */
.design-media {
  width: 100%;
  height: clamp(300px, 31vw, 440px);
  background-color: rgb(var(--design-background, 39 39 39));
  background-image: linear-gradient(to right, rgb(var(--design-grid, 47 47 47) / .7) 1px, transparent 1px), linear-gradient(to bottom, rgb(var(--design-grid, 47 47 47) / .7) 1px, transparent 1px);
  background-size: var(--grid-size, 8px) var(--grid-size, 8px);
  background-position: var(--grid-x, 0px) var(--grid-y, 0px);
}
.design-media img {
  mask-image: linear-gradient(to right, transparent calc(50% - var(--art-width) / 2), #000 calc(50% - var(--art-width) / 2 + 4px), #000 calc(50% + var(--art-width) / 2 - 4px), transparent calc(50% + var(--art-width) / 2)), linear-gradient(to bottom, transparent calc(50% - var(--art-height) / 2), #000 calc(50% - var(--art-height) / 2 + 4px), #000 calc(50% + var(--art-height) / 2 - 4px), transparent calc(50% + var(--art-height) / 2));
  mask-composite: intersect;
}
@media (hover: hover) and (pointer: fine) { .design-card:hover img { transform: none; } }
.design-disclaimer { max-width: 760px; margin: 38px auto 0; padding: 24px 20px; border-top: 1px solid rgba(240,237,220,.18); color: #b8b5b0; text-align: center; font: 400 13px/1.9 var(--body); }
@media (max-width: 760px) {
  .design-media { height: clamp(230px, 68vw, 360px); }
  .design-disclaimer { margin-top: 28px; padding-inline: 8px; font-size: 12px; }
}

button.design-media { display: block; padding: 0; border-radius: 0; cursor: zoom-in; appearance: none; }
button.design-media:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.design-click-zoom { position: fixed; z-index: 100; margin: 0; pointer-events: none; transform: translate(var(--zoom-shift-x, 0px), var(--zoom-shift-y, 0px)) scale(var(--zoom-start)); transform-origin: center; opacity: 0; will-change: transform, opacity; transition: transform .72s cubic-bezier(.45,0,.2,1), opacity .72s ease-in-out, box-shadow .72s ease-in-out; }
.design-click-zoom.is-visible { transform: translate(0, 0) scale(1); opacity: 1; border-color: rgba(255,255,255,.72); box-shadow: 0 0 0 2px rgba(var(--accent-rgb),.38),0 0 34px rgba(var(--accent-rgb),.42); }
button.design-media[aria-pressed="true"] { cursor: zoom-out; }
@media (prefers-reduced-motion: reduce) { .design-click-zoom { transition: none; } }

.design-track { cursor: grab; user-select: none; -webkit-user-select: none; touch-action: pan-x pan-y pinch-zoom; }
.design-track .design-media { cursor: grab; }
.design-track.is-dragging,.design-track.is-dragging * { cursor: grabbing; }
.design-track img { -webkit-user-drag: none; }

@media (prefers-reduced-motion: reduce) { .portfolio-zoom-overlay { transition: none; } }

.footer-contact { display: flex; flex-direction: column; align-items: flex-end; gap: 10px; min-width: 0; }
.site-footer .footer-contact { flex-direction: row; align-items: center; gap: 14px; }
.footer-contact .footer-email { color: #96938d; font: 400 11px/1.6 var(--body); letter-spacing: 0; overflow-wrap: anywhere; transition: color .2s; }

@media (max-width: 480px) {
  .footer-contact { flex-basis: auto; align-items: flex-end; }
  .site-footer .footer-contact { flex-direction: column; align-items: center; gap: 3px; }
}

.portfolio-card { display: flex; flex-direction: column; }
.portfolio-zoom-trigger { display: block; flex: 1; min-height: 0; width: 100%; padding: 0; border: 0; background: transparent; cursor: zoom-in; overflow: hidden; }
.portfolio-zoom-trigger:focus-visible { outline: 2px solid var(--accent); outline-offset: -3px; }
.portfolio-zoom-trigger[aria-pressed="true"] { cursor: zoom-out; }
.portfolio-controls { align-items: center; }
.design-caption { display: flex; flex-direction: column; gap: 12px; padding-top: 16px; }
.design-caption h2 { display: flex; align-items: baseline; gap: 8px; min-height: 0; margin: 0; font-size: clamp(16px,1.7vw,22px); line-height: 1.35; }
.design-caption h2::before { content: ""; flex: none; width: 5px; height: 5px; border-radius: 50%; background: var(--accent); transform: translateY(-3px); }
.design-enquiry { justify-content: space-between; gap: 12px; padding: 13px 17px; font: 700 10px/1.4 var(--body); letter-spacing: .08em; }
.portfolio-zoom-hint { margin: 16px 12px 0; opacity: .55; color: #a5a29f; text-align: center; font: 400 11px/1.6 var(--body); }
.portfolio-zoom-hint span { color: var(--accent); margin-right: 5px; }
.portfolio-zoom-enquiry { position: fixed; z-index: 101; justify-content: space-between; min-height: 44px; background: rgba(8,8,8,.9); color: var(--cream); opacity: 0; transform: translateY(6px); transition: opacity .72s ease-in-out,transform .72s cubic-bezier(.45,0,.2,1),background .2s,color .2s; }
.portfolio-zoom-enquiry.is-visible { opacity: 1; transform: translateY(0); }
@media (max-width: 760px) {
  .design-caption { gap: 10px; padding-top: 13px; }
  .design-enquiry { font-size: 9px; padding: 12px 10px; gap: 8px; }
  .portfolio-zoom-enquiry { font-size: 9px; padding: 12px 10px; gap: 8px; }
}
@media (prefers-reduced-motion: reduce) { .portfolio-zoom-enquiry { transition: none; } }

.availability-calendar { min-width: 0; margin: 0 0 28px; padding: 20px; border: 1px solid rgba(240,237,220,.16); border-radius: 4px; background: rgba(10,10,10,.35); }
.availability-calendar legend { padding: 0 8px; color: #ccc9c0; font: 700 11px/1.5 var(--body); }
.availability-help,.availability-notice { margin: 0 0 18px; color: #aaa6a2; font: 400 12px/1.75 var(--body); }
.availability-month-nav { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 15px; }
.availability-month-nav h3 { margin: 0; color: var(--cream); font: 500 17px/1.4 var(--display); }
.availability-month-nav button,.availability-day,.availability-remove { min-height: 44px; padding: 0; border: 1px solid rgba(240,237,220,.18); border-radius: 3px; color: var(--cream); background: rgba(255,255,255,.025); font: 500 13px/1 var(--body); cursor: pointer; }
.availability-month-nav button { width: 44px; font-size: 24px; }
.availability-weekdays,.availability-days { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 6px; }
.availability-weekdays { margin-bottom: 8px; color: #96938d; text-align: center; font: 500 10px/1.5 var(--body); }
.availability-day { position: relative; }
.availability-day[aria-current="date"]::after { content: ""; position: absolute; bottom: 5px; left: calc(50% - 2px); width: 4px; height: 4px; border-radius: 50%; background: var(--accent); }
.availability-day[aria-pressed="true"] { background: rgba(var(--accent-rgb),.2); border-color: var(--accent); color: #fff; }
.availability-calendar button:disabled { opacity: .23; cursor: default; }
.availability-calendar button:not(:disabled):hover { border-color: var(--accent); }
.availability-calendar button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.availability-slot { margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); }
.availability-slot[hidden] { display: none; }
.availability-slot label { margin-bottom: 0; line-height: 1.7; }
.availability-summary { list-style: none; margin: 0; padding: 0; }
.availability-summary li { display: flex; align-items: center; gap: 12px; padding: 7px 0; border-bottom: 1px solid rgba(255,255,255,.07); }
.availability-summary-date { flex: 1; min-width: 0; padding: 8px 0; border: 0; background: transparent; color: #ccc9c0; text-align: left; font: 400 12px/1.7 var(--body); cursor: pointer; }
.availability-remove { flex-shrink: 0; width: 44px; font-size: 20px; }
.availability-error { margin: 12px 0 0; color: var(--accent); font: 500 12px/1.7 var(--body); }
.availability-error:empty { display: none; }
.availability-notice { margin: 18px 0 0; font-size: 11px; }
@media (max-width: 480px) {
  .availability-calendar { padding: 16px 10px; }
  .availability-weekdays,.availability-days { gap: 4px; }
  .availability-day { font-size: 12px; }
  .availability-month-nav h3 { font-size: 16px; }
}

.availability-summary:not(:empty) { margin-top: 18px; }

.availability-grid-help { margin: 0 0 20px; color: #aaa6a2; font: 400 11px/1.8 var(--body); }
.availability-weekdays,.availability-days { grid-template-columns: 36px repeat(7,minmax(0,1fr)); }
.availability-week-label { display: grid; place-items: center; font-size: 9px; color: #77746e; }
.availability-quick-button { min-height: 44px; padding: 9px 12px; border: 1px solid rgba(240,237,220,.2); border-radius: 3px; background: rgba(255,255,255,.025); color: #ccc9c0; font: 500 11px/1.5 var(--body); cursor: pointer; }
.availability-quick-button[aria-pressed="true"] { background: rgba(var(--accent-rgb),.18); border-color: var(--accent); color: #fff; }
.availability-weekdays .availability-quick-button,.availability-week-toggle { padding: 0; min-width: 0; }
.availability-weekdays .availability-quick-button { min-height: 34px; color: #b8b5b0; }
.availability-week-toggle { font-size: 15px; border-color: transparent; color: #96938d; }
.availability-day.is-other-month:not([aria-pressed="true"]) { color: #77746e; background: rgba(255,255,255,.01); }
.availability-day[data-editing="true"] { z-index: 1; border-color: var(--accent); background: rgba(var(--accent-rgb),.35); box-shadow: 0 0 0 2px var(--accent),0 0 18px rgba(var(--accent-rgb),.3); color: #fff; }
.availability-slot { padding: 18px 12px 12px; border: 1px solid rgba(var(--accent-rgb),.6); border-radius: 4px; background: rgba(var(--accent-rgb),.04); }
.availability-slot [data-calendar-slot-label]::before { content: ""; display: inline-block; width: 5px; height: 5px; border-radius: 50%; margin-right: 8px; background: var(--accent); }
.availability-summary li[data-editing="true"] { border-left: 2px solid var(--accent); padding-left: 10px; background: rgba(var(--accent-rgb),.05); }
.availability-selection-tools { margin-top: 20px; }
.availability-selection-tools label { margin-bottom: 12px; line-height: 1.8; }
.availability-bulk-actions { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 480px) {
  .availability-weekdays,.availability-days { grid-template-columns: 25px repeat(7,minmax(0,1fr)); gap: 4px; }
  .availability-quick-button { padding: 8px 9px; font-size: 10px; }
  .availability-weekdays .availability-quick-button,.availability-week-toggle { padding: 0; }
  .availability-week-toggle { font-size: 13px; }
}

/* Distinguish group controls from individual dates, including their selected state. */
.availability-weekdays .availability-quick-button,.availability-week-toggle { background: #33302e; border: 1px solid #625a55; color: #eee8df; box-shadow: inset 0 1px 0 rgba(255,255,255,.06); }
.availability-weekdays .availability-quick-button:not(:disabled):hover,.availability-week-toggle:not(:disabled):hover { background: #443b38; border-color: #a38b80; }
.availability-weekdays .availability-quick-button[aria-pressed="true"],.availability-week-toggle[aria-pressed="true"] { background: #51403d; border-color: #bb8179; color: #fff; }
.availability-summary-date > span,.availability-summary-date > small { display: block; }
.availability-summary-date > small { margin-top: 4px; color: #96938d; font: 400 10px/1.7 var(--body); }

.availability-grid-help { margin: 12px 0 0; color: rgba(170,166,162,.58); font-size: 10px; line-height: 1.7; }
.availability-summary { overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: #74645e transparent; padding-right: 8px; }
.availability-summary::-webkit-scrollbar { width: 4px; }
.availability-summary::-webkit-scrollbar-track { background: transparent; }
.availability-summary::-webkit-scrollbar-thumb { background: #74645e; border-radius: 4px; }

.location-picker { min-width: 0; margin: 0 0 21px; padding: 0; border: 0; }
.location-picker legend { margin-bottom: 12px; color: var(--cream); font: 400 12px/1.7 var(--body); }
.location-options { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.booking-form .location-option { position: relative; display: block; margin: 0; cursor: pointer; }
.location-option input[type="radio"] { position: absolute; width: 1px; height: 1px; padding: 0; margin: 0; opacity: 0; }
.location-option span { display: block; padding: 16px 12px; border: 1px solid rgba(240,237,220,.17); border-radius: 4px; background: rgba(255,255,255,.035); color: var(--cream); text-align: center; font: 700 11px/1.5 var(--body); transition: background .2s ease,border-color .2s ease; }
.location-option:hover span,.location-option input:focus-visible + span { border-color: var(--accent); }
.location-option input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 3px; }
.location-option input:checked + span { border-color: var(--accent); background: rgba(var(--accent-rgb),.16); color: #fff; }

.location-options[hidden] { display: none; }
.location-options { margin-top: 10px; padding: 12px; border: 1px solid rgba(240,237,220,.12); border-radius: 4px; background: rgba(255,255,255,.015); }

.size-options { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; }
.size-options .location-option span { height: 100%; text-align: left; }
.size-options small { display: block; margin-top: 5px; color: #9c9892; font: 400 10px/1.6 var(--body); }
.size-options small + small { margin-top: 3px; font-size: 9px; }
.size-picker #size-custom-field { margin: 14px 0 0; }

.size-options[hidden] { display: none; }
.size-options { margin-top: 10px; padding: 12px; border: 1px solid rgba(240,237,220,.12); border-radius: 4px; background: rgba(255,255,255,.015); }

.body-map-group { text-align: center; }

.size-options { grid-template-columns: 1fr; transition: opacity .36s ease, transform .36s ease; }
.size-options.is-closing { opacity: 0; transform: translateY(-5px); pointer-events: none; }
.size-options .location-option { display: grid; grid-template-columns: minmax(0,1fr) 0fr; align-items: center; gap: 0; transition: grid-template-columns .4s ease,gap .4s ease; }
.size-options .location-option > span { display: flex; flex-direction: column; justify-content: center; }
.size-example { display: block; width: 100%; min-width: 0; height: 180px; object-fit: contain; border-radius: 4px; opacity: 0; transform: translateY(5px); transition: opacity .4s ease,transform .4s ease; }
.size-options .location-option:has(.size-example):is(:hover,:focus-within,.is-previewing) { grid-template-columns: minmax(0,1fr) minmax(0,150px); gap: 12px; }
.size-options .location-option:is(:hover,:focus-within,.is-previewing) .size-example { opacity: 1; transform: translateY(0); }
@starting-style { .size-options:not([hidden]) { opacity: 0; transform: translateY(-5px); } }
@media (hover: none) {
  .size-options .location-option:has(.size-example):hover:not(.is-previewing) { grid-template-columns: minmax(0,1fr) 0fr; gap: 0; }
}
@media (max-width: 480px) {
  .size-options .location-option { grid-template-columns: 1fr !important; }
  .size-example { height: 0; transition: height .4s ease,opacity .4s ease,transform .4s ease; }
  .size-options .location-option.is-previewing .size-example,.size-options .location-option:focus-within .size-example { height: 220px; }
}
@media (prefers-reduced-motion: reduce) {
  .size-options,.size-options .location-option,.size-example { transition: none; }
}
.size-example { height: 0; transition: height .4s ease,opacity .4s ease,transform .4s ease; }
@media (min-width: 481px) {
  .size-options .location-option:is(:hover,:focus-within,.is-previewing) .size-example { height: 180px; }
}
@media (prefers-reduced-motion: reduce) { .size-example { transition: none; } }

/* Quiet progress cues for completed booking fields. */
.booking-form label.is-complete > input:not([type="radio"]):not([type="checkbox"]),
.booking-form label.is-complete > textarea,
.body-map-picker.is-complete .body-map-trigger,
.style-picker.is-complete > .body-map-trigger,
.size-picker.is-complete > .body-map-trigger,
#location-trigger.is-complete {
  border-color: rgba(var(--accent-rgb),.18);
  background: rgba(var(--accent-rgb),.018);
  box-shadow: inset 2px 0 0 rgba(var(--accent-rgb),.24);
  transition: border-color .3s ease,background .3s ease,box-shadow .3s ease;
}
.availability-calendar.is-complete { border-color: rgba(var(--accent-rgb),.18); box-shadow: inset 2px 0 0 rgba(var(--accent-rgb),.22); transition: border-color .3s ease,box-shadow .3s ease; }

/* Prevent iOS focus zoom while preserving manual page zoom. */
@media (max-width: 767px) {
  .booking-form input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),
  .booking-form textarea,
  .booking-form select { font-size: 16px; }
}

.footer-legal { display: flex; flex-wrap: wrap; gap: 12px; font: 11px/1.5 var(--body); }
.legal-page { max-width: 820px; margin: 45px auto 70px; padding: 0 28px; }
.legal-page h1 { margin: 0 0 18px; font: 700 clamp(30px,6vw,48px)/1.15 var(--display); color: var(--cream); }
.legal-page h2 { margin: 30px 0 10px; font: 700 20px/1.3 var(--display); color: var(--cream); }
.legal-page p { color: #ccc9c0; font-size: 15px; line-height: 1.8; overflow-wrap: anywhere; }
.legal-page a,.privacy-note a,.consent a { text-decoration: underline; text-underline-offset: 3px; }
.legal-page .legal-updated { color: #96918b; font-size: 12px; }
.privacy-note p { margin: 0 0 10px; }
.reference-file-list[hidden] { display: none; }
