/*
 * ALR Photography – inner pages, modern design (decision D37, 2026-10-06).
 * The home page, header and footer keep the old site's look (site.css); everything inside <article class="page">
 * uses these styles. Same brand: Open Sans (light for display sizes), the lens-flare gradient (stops and ORDER never
 * change), light grey page, black ink. New: photo-led heads, generous spacing, white cards, a sticky price card.
 */

.page {
  --page-max: 1240px;
  --page-wide: 1600px;
  --page-narrow: 760px;
  --r: 10px;
  --r-sm: 6px;
  --shadow: 0 1px 2px rgb(0 0 0 / .05), 0 8px 24px rgb(0 0 0 / .06);
  --shadow-hi: 0 2px 4px rgb(0 0 0 / .06), 0 18px 40px rgb(0 0 0 / .12);
  --body-c: #484848;
  --sec-y: clamp(48px, 7vw, 96px);
  color: var(--body-c);
  font-size: 17px;
  line-height: 1.7;
}

/* ---------------------------------------------------------------- layout */
.page .container { width: 100%; max-width: calc(var(--page-max) + 2 * var(--gutter)); margin: 0 auto; padding: 0 var(--gutter); }
.page .container--wide { max-width: calc(var(--page-wide) + 2 * var(--gutter)); }
.page .block { padding: var(--sec-y) 0; }
.page .block + .block { padding-top: 0; }
.page .block--tint { background: #e7e7e7; padding-top: var(--sec-y) !important; }
.page .block--tint + .block { padding-top: var(--sec-y); }
.page .block--gallery { padding-top: 0; }
.page .block:first-of-type + .block--gallery, .page .phead + .block--gallery { padding-top: var(--sec-y); }

/* ---------------------------------------------------------------- page head */
.phead { position: relative; display: flex; align-items: flex-end; overflow: hidden; color: #fff; isolation: isolate; }
.phead--photo { min-height: clamp(340px, 58vh, 640px); background: #111; }
.phead--flare { min-height: clamp(220px, 30vh, 320px); background: var(--lens-flare); }
.phead__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.4s var(--ease); z-index: -2; }
.phead__img.is-active { opacity: 1; }
.phead--photo::after { content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(180deg, rgb(0 0 0 / .28) 0%, rgb(0 0 0 / 0) 32%, rgb(0 0 0 / .18) 55%, rgb(0 0 0 / .72) 100%); }
.phead__inner { width: 100%; max-width: calc(var(--page-max) + 2 * var(--gutter)); margin: 0 auto; padding: 0 var(--gutter) clamp(32px, 5vw, 64px); }
.phead .crumbs { color: rgb(255 255 255 / .82); margin-bottom: 14px; font-size: 13px; letter-spacing: .02em; }
.phead .crumbs li + li::before { color: rgb(255 255 255 / .5); }
.phead .crumbs a { color: #fff; }
.phead__kicker { margin: 0 0 8px; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; opacity: .85; }
.phead__title { color: #fff; font: 300 clamp(2.3rem, 5.4vw, 4.6rem)/1.05 var(--f-head); letter-spacing: -.01em; margin: 0; max-width: 18ch; text-wrap: balance; text-shadow: 0 2px 24px rgb(0 0 0 / .25); }
.phead__intro { margin: 18px 0 0; max-width: 62ch; font-size: clamp(16px, 1.4vw, 19px); line-height: 1.6; color: rgb(255 255 255 / .92); }
.phead__intro strong { color: #fff; }

/* ---------------------------------------------------------------- content (imported text) */
.page .content > :first-child { margin-top: 0; }
.page .content > :last-child { margin-bottom: 0; }
.page .content--narrow { max-width: calc(var(--page-narrow) + 2 * var(--gutter)); }
.page .content h2 { font: 300 clamp(1.8rem, 3vw, 2.5rem)/1.15 var(--f-head); color: var(--ink); margin: 1.6em 0 .55em; letter-spacing: -.005em; text-wrap: balance; }
.page .content h3 { font: 400 1.3rem/1.3 var(--f-head); color: var(--ink); margin: 1.5em 0 .45em; }
.page .content h2 + h3 { margin-top: .5em; }
.page .content p { margin: 0 0 1.05em; }
.page .content a:not(.btn) { color: var(--ink); text-decoration-color: rgb(0 0 0 / .3); }
.page .content a:not(.btn):hover { text-decoration-color: currentColor; }
.page .content strong { color: #222; font-weight: 600; }
.page .content ul:not([class]), .page .content ol { padding-left: 1.25em; margin: 0 0 1.2em; }
.page .content li { margin: 0 0 .35em; }
.page .content figure { margin: 2em 0; }
.page .content figure img { border-radius: var(--r); width: 100%; }
.page .content table { width: 100%; border-collapse: collapse; margin: 0 0 1.5em; font-size: 15px; background: var(--surface); border-radius: var(--r-sm); overflow: hidden; }
.page .content th, .page .content td { text-align: left; padding: 10px 14px; border-bottom: 1px solid #e5e5e5; vertical-align: top; }

/* ---------------------------------------------------------------- buttons */
.page .btn, .terms-sheet .btn { border-radius: 999px; padding: 13px 26px; min-height: 48px; font-weight: 600; letter-spacing: .01em; }
.page .btn--primary, .terms-sheet .btn--primary { background: var(--lens-flare); background-size: 140% 100%; background-position: 0 0; border: 0; color: #fff;
  box-shadow: 0 6px 18px rgb(50 12 59 / .22); transition: background-position .6s var(--ease), box-shadow var(--dur), transform var(--dur); }
.page .btn--primary:hover, .page .btn--primary:focus-visible, .terms-sheet .btn--primary:hover, .terms-sheet .btn--primary:focus-visible { background-position: 100% 0; color: #fff; box-shadow: 0 10px 26px rgb(50 12 59 / .32); transform: translateY(-1px); }
.page .btn--ghost, .terms-sheet .btn--ghost { background: transparent; border: 1.5px solid currentColor; color: var(--ink); }
.page .btn--ghost:hover, .terms-sheet .btn--ghost:hover { background: var(--ink); border-color: var(--ink); color: #fff; }
.page .btn--light { border-radius: 999px; border: 1.5px solid #fff; }
.page .btn--light:hover { background: #fff; color: var(--ink); }
.page .btn .icon, .page .btn .fa { width: 18px; height: 18px; flex: none; }
.page .actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 1.6em 0; }

/* ---------------------------------------------------------------- service page: text + sticky price card */
.page .service { display: grid; gap: 40px; align-items: start; }
@media (min-width: 960px) { .page .service { grid-template-columns: minmax(0, 1fr) 360px; gap: clamp(48px, 6vw, 96px); } }
.page .service__text { max-width: 72ch; }
.page .service__text > p:first-of-type { font-size: 1.12em; color: #333; }
.price-card { position: sticky; top: calc(var(--header-h) + 24px); background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow);
  padding: 28px; overflow: hidden; }
.price-card::before { content: ""; position: absolute; inset: 0 0 auto; height: 4px; background: var(--lens-flare); }
.price-card__label { margin: 0 0 4px; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.price-card__amount { margin: 0 0 18px; font: 300 2.8rem/1 var(--f-head); color: var(--ink); }
.price-card__amount span { font-size: 1rem; color: var(--muted); font-weight: 400; }
.price-card .ticks { margin: 0 0 22px; }
.price-card__note { margin: 16px 0 0; font-size: 13.5px; line-height: 1.55; color: var(--muted); }
.price-card__note a { color: inherit; }
@media (max-width: 959px) { .price-card { position: static; } }

/* tick lists */
.page .ticks { list-style: none; padding: 0; margin: 0 0 1.2em; display: grid; gap: 8px; }
.page .ticks li { display: flex; gap: 10px; align-items: flex-start; margin: 0; }
.page .ticks li .icon, .page .ticks li .fa { flex: none; width: 16px; height: 16px; margin-top: .35em; color: var(--flare-5); fill: currentColor; }

/* ---------------------------------------------------------------- cards */
.page .cards { display: grid; gap: clamp(20px, 2.4vw, 32px); grid-template-columns: 1fr; margin: 2em 0; }
.page .content > .cards:first-child, .page .block--tint .cards { margin-top: 0; }
.page .block--tint .cards { margin-bottom: 0; }
@media (min-width: 640px) { .page .cards--2, .page .cards--3, .page .cards--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1000px) { .page .cards--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .page .cards--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.page .card { position: relative; display: flex; flex-direction: column; background: var(--surface); border-radius: var(--r); overflow: hidden; box-shadow: var(--shadow);
  transition: box-shadow .35s var(--ease), transform .35s var(--ease); }
.page .card:has(a):hover { box-shadow: var(--shadow-hi); transform: translateY(-3px); }
.page .card__media { display: block; margin: 0; aspect-ratio: 4 / 3; overflow: hidden; background: #ddd; }
.page .card__media img { width: 100%; height: 100%; object-fit: cover; border-radius: 0; transition: transform 1s var(--ease); }
.page .card:hover .card__media img { transform: scale(1.04); }
.page .card__body { display: flex; flex-direction: column; flex: 1; padding: 22px 24px 24px; font-size: 15.5px; line-height: 1.65; }
.page .card__body > :last-child { margin-bottom: 0; }
.page .card__title { font: 400 1.35rem/1.25 var(--f-head) !important; color: var(--ink); margin: 0 0 10px !important; }
.page .card__title a { text-decoration: none !important; color: inherit; }
.page .card__title a::after { content: ""; position: absolute; inset: 0; z-index: 1; } /* whole card clickable */
.page .card p { margin: 0 0 .8em; }
.page .card .ticks { gap: 6px; font-size: 15px; }
.page .card__foot { margin: auto 0 0 !important; padding-top: 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid #ececec; font-size: 14.5px; }
.page .card__price { color: var(--muted); }
.page .card__price strong { color: var(--ink); font-weight: 600; font-size: 1.1em; }
.page .card__more { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; color: var(--ink); margin: auto 0 0; }
.page .card__more a { text-decoration: none; position: static; }
.page .card__more .icon { width: 14px; height: 14px; transition: transform var(--dur); }
.page .card:hover .card__more .icon { transform: translateX(3px); }
.page p.card__more { padding-top: 6px; }

/* ---------------------------------------------------------------- split: photo + text */
.page .split { display: grid; gap: 28px; align-items: center; margin: clamp(40px, 6vw, 80px) 0; }
@media (min-width: 860px) {
  .page .split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(40px, 6vw, 88px); }
  .page .split--reverse .split__media { order: 2; }
}
.page .split__media figure { margin: 0; }
.page .split__media img { width: 100%; border-radius: var(--r); box-shadow: var(--shadow); }
.page .split__body > :first-child { margin-top: 0; }
.page .split__body > :last-child { margin-bottom: 0; }
.page .content > .split:first-child { margin-top: 0; }

/* ---------------------------------------------------------------- features (equipment, rules, occasions) */
.page .features { display: grid; gap: 18px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr)); margin: 1.5em 0 2.5em; }
.page .feature { background: var(--surface); border-radius: var(--r); padding: 20px; box-shadow: var(--shadow); font-size: 15px; line-height: 1.6; text-align: center; }
.page .feature > :last-child { margin-bottom: 0; }
.page .feature__media { margin: -20px -20px 16px !important; aspect-ratio: 1; background: #fff; display: grid; place-items: center; overflow: hidden; }
.page .feature__media img { width: 100%; height: 100%; object-fit: contain; border-radius: 0 !important; padding: 12px; }
.page .feature__icon { margin: 0 0 10px; display: flex; justify-content: center; }
.page .feature__icon .fa, .page .feature__icon .icon { width: 30px; height: 30px; color: var(--flare-4); fill: currentColor; }
.page .feature__title { font: 600 1rem/1.35 var(--f-head) !important; color: var(--ink); margin: 0 0 6px !important; }
.page .feature p { margin: 0 0 .5em; }

/* ---------------------------------------------------------------- quotes (reviews) */
.page .quotes { display: grid; gap: 24px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); margin: 2em 0; }
.page .quote { margin: 0; background: var(--surface); border-radius: var(--r); padding: 30px 28px 24px; box-shadow: var(--shadow); position: relative; font-style: normal; display: flex; flex-direction: column; }
.page .quote::before { content: "\201C"; position: absolute; top: 4px; left: 20px; font: 300 64px/1 Georgia, serif; color: var(--flare-5); opacity: .5; }
.page .quote p { margin: 0 0 18px; font-size: 16px; line-height: 1.7; color: #333; }
.page .quote footer { margin-top: auto; padding-top: 14px; border-top: 1px solid #ececec; font-size: 14px; display: flex; flex-direction: column; }
.page .quote footer strong { color: var(--ink); font-weight: 600; }
.page .quote footer span, .page .quote footer a { color: var(--muted); }

/* ---------------------------------------------------------------- FAQ */
.page details.faq { background: var(--surface); border-radius: var(--r-sm); margin: 0 0 10px; box-shadow: 0 1px 2px rgb(0 0 0 / .05); }
.page details.faq summary { list-style: none; cursor: pointer; padding: 18px 56px 18px 22px; font-weight: 600; color: var(--ink); position: relative; line-height: 1.45; }
.page details.faq summary::-webkit-details-marker { display: none; }
.page details.faq summary::after { content: ""; position: absolute; right: 22px; top: 50%; width: 10px; height: 10px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor;
  transform: translateY(-70%) rotate(45deg); transition: transform var(--dur); }
.page details.faq[open] summary::after { transform: translateY(-30%) rotate(-135deg); }
.page details.faq > :not(summary) { padding: 0 22px; }
.page details.faq > :last-child { padding-bottom: 18px; margin-bottom: 0; }

/* ---------------------------------------------------------------- callout */
.page .callout { display: block; background: #121212; color: #e9e9e9; border-radius: var(--r); padding: 22px 26px; margin: 1.6em 0; position: relative; overflow: hidden; }
.page .callout::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--lens-flare); }
.page .callout strong { display: block; color: #fff; font-size: 1.05rem; margin-bottom: 4px; }
.page .callout p { margin: 0; font-size: 15px; }

/* ---------------------------------------------------------------- photo strip (old carousels) */
.page .photo-strip { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; margin: 2em 0; padding-bottom: 8px; scrollbar-width: thin; }
.page .photo-strip img { flex: 0 0 auto; height: clamp(200px, 26vw, 340px); width: auto; border-radius: var(--r-sm); scroll-snap-align: start; }

/* maps and modules */
.page .map-slot iframe, .page .map-slot .embed { border-radius: var(--r); overflow: hidden; }
.page .module-slot { margin: 2em 0; }

/* ---------------------------------------------------------------- gallery block */
.page .block--gallery .jg-credit { font-weight: 400; font-size: 13px; color: var(--muted); }
.page .block--gallery .jg-more__btn { border-radius: 999px; background: var(--ink); color: #fff; width: auto; padding: 12px 28px; font-weight: 600; font-size: 14px; }

/* ---------------------------------------------------------------- call-to-action band */
.cta-band { padding: clamp(40px, 6vw, 72px) 0; }
.cta-band__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 40px; }
.cta-band__text { margin: 0; max-width: 46ch; font: 300 clamp(1.4rem, 2.4vw, 2rem)/1.3 var(--f-head); color: #fff; }

/* ---------------------------------------------------------------- phones */
@media (max-width: 699px) {
  .page { font-size: 16px; }
  .phead--photo { min-height: 62vw; min-height: max(300px, 62vw); }
  .phead__inner { padding-bottom: 28px; }
  .price-card { padding: 24px 20px; }
  .page .card__body { padding: 18px 18px 20px; }
  .cta-band__inner .btn { width: 100%; }
}

/* ---------------------------------------------------------------- fixes after the first screenshots */
.page .card .card__media { margin: 0; }
.page .card .card__media img { border-radius: 0; }
.page .content p, .page .content h2, .page .content h3 { text-align: left !important; }
.page .feature p, .page .feature h3 { text-align: center !important; }
.page .feature ul { list-style: none; padding: 0; margin: 8px 0 0; text-align: left; font-size: 13.5px; line-height: 1.5; color: #555; }
.page .feature li { padding: 5px 0; margin: 0; border-top: 1px solid #f0f0f0; }
.page .feature li strong { color: #222; font-weight: 600; }
.page .feature__title { min-height: 2.7em; display: flex; align-items: center; justify-content: center; }
.page .content > h2 + .features, .page .content > h3 + .features { margin-top: .8em; }
.page .service + .block, .page .block + .block > .container.content > h2:first-child { margin-top: 0; }

/* photos at the top of cards / features (they come through the article photo renderer) */
.page .card > figure:first-child { margin: 0 !important; padding: 0 !important; aspect-ratio: 4 / 3; overflow: hidden; background: #ddd; max-width: none; width: 100%; }
.page .card > figure:first-child a, .page .card > figure:first-child img { display: block; width: 100%; height: 100%; }
.page .card > figure:first-child img { object-fit: cover; border-radius: 0 !important; box-shadow: none; transition: transform 1s var(--ease); }
.page .card:hover > figure:first-child img { transform: scale(1.04); }
.page .feature > figure:first-child { margin: -20px -20px 16px !important; padding: 0 !important; aspect-ratio: 1; background: #fff; overflow: hidden; max-width: none; }
.page .feature > figure:first-child a, .page .feature > figure:first-child img { display: block; width: 100%; height: 100%; }
.page .feature > figure:first-child img { object-fit: contain; padding: 14px; border-radius: 0 !important; box-shadow: none; }
.page .features { grid-template-columns: repeat(auto-fill, minmax(min(100%, 210px), 1fr)); }
/* readable measure: text and single photos stay narrow even in full-width sections; grids and galleries use the width */
.page .content:not(.content--narrow) > :is(p, ul:not([class]), ol, h2, h3, aside, details, blockquote, table, figure, .actions) { max-width: var(--page-narrow); }
.page .content:not(.content--narrow) > figure img { width: auto; max-width: 100%; max-height: 80vh; }

/* ---------------------------------------------------------------- press */
.page .card__meta { margin: 0 0 6px !important; font-size: 12.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); }
.page .card--post .card__media { aspect-ratio: 3 / 2; }
.page .block__title { font: 300 clamp(1.6rem, 2.6vw, 2.2rem)/1.2 var(--f-head); color: var(--ink); margin: 0 0 28px; }
.page .post-text.layout { padding: 0 var(--gutter); }
.page .post-text .el { padding: 0 !important; }
.share-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding-bottom: 28px; border-bottom: 1px solid #ddd; }
.share-row__label { font-size: 12.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); margin-right: 6px; }
.share-row a { width: 42px; height: 42px; border-radius: 50%; display: grid; place-items: center; background: var(--surface); color: var(--ink); box-shadow: var(--shadow); transition: background var(--dur), color var(--dur); }
.share-row a:hover { background: var(--ink); color: #fff; }
.share-row .fa { width: 16px; height: 16px; margin: 0; fill: currentColor; }
.pager { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; padding-top: 28px; }
.pager a { display: flex; flex-direction: column; gap: 4px; text-decoration: none; color: var(--ink); padding: 18px 22px; background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); transition: box-shadow var(--dur), transform var(--dur); }
.pager a:hover { box-shadow: var(--shadow-hi); transform: translateY(-2px); }
.pager small { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--muted); }
.pager span { font-size: 1.1rem; line-height: 1.35; }
.pager__next { text-align: right; align-items: flex-end; }
@media (max-width: 600px) { .pager { grid-template-columns: 1fr; } .pager__next { text-align: left; align-items: flex-start; } }
.page .pagination { margin-top: 40px; }
/* press post text: the old Gutenberg columns flow as one readable column */
.page .post-text .el, .page .post-text .el-w { display: block !important; width: auto !important; max-width: none !important; min-height: 0 !important;
  padding: 0 !important; margin: 0 !important; background: none !important; border: 0 !important; font-size: inherit !important; color: inherit !important; }
.page .post-text .el + .el { margin-top: 1.4em !important; }
.page .post-text p, .page .post-text li { font-size: inherit !important; line-height: 1.7 !important; color: var(--body-c) !important; }
.page .post-text h2, .page .post-text h3 { font-size: clamp(1.4rem, 2.2vw, 1.8rem) !important; }
.page .post-text small { font-size: .85em; color: var(--muted); }

/* Press articles: keep the imported editorial structure, but give it a deliberate hierarchy. */
.page--post .post-copy { padding: clamp(58px, 7vw, 105px) 0 clamp(48px, 6vw, 82px); }
.page--post .post-text { max-width: calc(var(--page-max) + 2 * var(--gutter)); }
.page--post .press-intro--pubs { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(300px, .65fr); gap: clamp(48px, 7vw, 110px); align-items: start; }
.page--post .press-intro__text > p:first-child { margin-top: 0; color: var(--ink) !important; font-size: clamp(19px, 1.45vw, 23px) !important; line-height: 1.72 !important; }
.page--post .press-pubs { padding-top: 5px; border-top: 1px solid var(--line-2); }
.page--post .press-pubs h2 { margin: 0 !important; padding: 20px 0 15px; color: var(--ink); font-size: 13px !important; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.page--post .press-pubs ul { margin: 0; padding: 0; list-style: none; }
.page--post .press-pubs li { position: relative; margin: 0; padding: 11px 28px 11px 0; border-top: 1px solid var(--line-2); font-size: 14px !important; line-height: 1.45 !important; }
.page--post .press-pubs li:last-child { border-bottom: 1px solid var(--line-2); }
.page--post .press-pubs li::after { content: '↗'; position: absolute; top: 11px; right: 2px; color: var(--muted); }
.page--post .press-pubs a { color: var(--ink); text-decoration: none; }
.page--post .press-pubs a::before { content: ""; position: absolute; inset: 0; }   /* the whole row is the link */
.page--post .press-pubs a:hover { color: var(--copper, #b06b56); }
.page--post .press-pubs small { display: block; margin-top: 2px; color: var(--muted); font-size: 12px; }
.page--post .press-notice { display: grid; grid-template-columns: minmax(170px, .55fr) minmax(0, 2fr); gap: clamp(22px, 4vw, 60px); margin-top: clamp(48px, 6vw, 82px); padding-top: 27px; border-top: 1px solid var(--line-2); }
.page--post .press-notice__title { margin: 0; color: var(--ink); font-size: 12px !important; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.page--post .press-notice__text { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: clamp(14px, 3vw, 44px); }
.page--post .press-notice__text p { margin: 0 !important; color: var(--muted) !important; font-size: 14px !important; line-height: 1.65 !important; }
.page--post .press-notice__text a { color: inherit; }
.page--post .post-gallery { padding: 0 0 clamp(55px, 6vw, 82px); }
.page--post .post-gallery .container--wide { max-width: none; padding-inline: clamp(6px, 1vw, 16px); }
.page--post .post-gallery .jg { gap: clamp(3px, .35vw, 7px); }
.page--post .post-gallery .jg__img { transition: transform .55s ease, filter .55s ease; }
.page--post .post-gallery .jg__link:hover .jg__img { opacity: 1; transform: scale(1.018); filter: brightness(.85); }
.page--post .post-gallery .jg-more { margin-top: 30px; }
.page--post .post-footer { padding: clamp(52px, 6vw, 85px) 0; border-top: 1px solid var(--line-2); }
.page--post .post-footer .share-row { padding-bottom: 32px; }
.page--post .post-footer .pager a { background: transparent; border: 1px solid var(--line-2); box-shadow: none; }
.page--post .post-footer .pager a:hover { border-color: var(--ink); box-shadow: none; }
.page--post .post-related { padding-block: clamp(65px, 7vw, 105px) !important; }
.page--post .post-related .block__title { margin-bottom: clamp(28px, 4vw, 48px); font-size: clamp(32px, 4vw, 58px); }
@media (max-width: 860px) {
  .page--post .press-intro--pubs, .page--post .press-notice { grid-template-columns: 1fr; }
  .page--post .press-intro--pubs { gap: 38px; }
  .page--post .press-notice { gap: 14px; }
}
@media (max-width: 699px) {
  .page .features { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
  .page .feature { padding: 14px; font-size: 13.5px; }
  .page .feature > figure:first-child, .page .feature__media { margin: -14px -14px 12px !important; }
  .page .feature ul { font-size: 12.5px; }
  .phead--photo { min-height: max(360px, 88vw); }
  .phead__title { font-size: 2.2rem; }
  .phead__intro { font-size: 15px; }
}

/* ---------------------------------------------------------------- landing (Socials, QR-code page) */
.landing { position: relative; min-height: 100svh; display: grid; place-items: center; padding: 48px var(--gutter); background: #111; isolation: isolate; color: #fff; text-align: center; }
.landing__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: -2; }
.landing::after { content: ""; position: absolute; inset: 0; z-index: -1; background: radial-gradient(ellipse at center, rgb(0 0 0 / .35), rgb(0 0 0 / .7)); }
.landing__inner { width: 100%; max-width: 520px; }
.page .landing__inner h2 { color: #fff; text-transform: uppercase; letter-spacing: .12em; font-size: 1.4rem; text-align: center !important; margin: 0 0 16px; }
.page .landing__inner p { text-align: center !important; color: rgb(255 255 255 / .92); }
.page .landing__inner figure { margin: 0 auto 20px; max-width: 320px; }
.page .landing__inner figure img { border-radius: 0; }
.page .landing__inner .actions { flex-direction: column; margin-top: 24px; }
.page .landing__inner .btn--ghost { color: #fff; border-color: rgb(255 255 255 / .85); width: 100%; }
.page .landing__inner .btn--ghost:hover { background: #fff; color: var(--ink); }
.page .landing__inner strong, .page .landing__inner a:not(.btn) { color: #fff; }
@media (max-width: 699px) { .page--post .phead .crumbs { display: none; } }

/* ---------------------------------------------------------------- price card: estimate your total */
.estimate { margin: 18px 0 0; border-top: 1px solid #ececec; padding-top: 14px; }
.estimate__toggle { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px; font-weight: 600; font-size: 15px; color: var(--ink); padding: 4px 0; }
.estimate__toggle::-webkit-details-marker { display: none; }
.estimate__toggle::after { content: ""; margin-left: auto; width: 8px; height: 8px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg) translateY(-2px); transition: transform var(--dur); }
.estimate[open] .estimate__toggle::after { transform: rotate(-135deg) translateY(-2px); }
.estimate__toggle .icon { width: 16px; height: 16px; color: var(--flare-4); }
.estimate__body { padding-top: 14px; font-size: 14.5px; }
.estimate__choice { border: 0; margin: 0 0 14px; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.estimate__choice label { position: relative; cursor: pointer; }
.estimate__choice input { position: absolute; opacity: 0; inset: 0; }
.estimate__choice span { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border: 1.5px solid #ddd; border-radius: var(--r-sm); font-weight: 600; color: var(--ink); line-height: 1.3; transition: border-color var(--dur), background var(--dur); }
.estimate__choice small { font-weight: 400; color: var(--muted); font-size: 12.5px; }
.estimate__choice input:checked + span { border-color: var(--flare-4); background: #f2f6fb; box-shadow: inset 0 0 0 1px var(--flare-4); }
.estimate__choice input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.estimate__row { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 10px; }
.estimate__row label { color: var(--ink); }
.stepper { display: inline-flex; align-items: center; border: 1.5px solid #ddd; border-radius: 999px; overflow: hidden; }
.stepper button { width: 34px; height: 34px; border: 0; background: #f4f4f4; font-size: 18px; line-height: 1; color: var(--ink); }
.stepper button:hover { background: #e9e9e9; }
.stepper input { width: 52px; height: 34px; border: 0; text-align: center; font-weight: 600; -moz-appearance: textfield; appearance: textfield; background: #fff; }
.stepper input::-webkit-outer-spin-button, .stepper input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.estimate__sum { margin: 14px 0 0; padding: 12px 14px; background: #f7f7f7; border-radius: var(--r-sm); }
.estimate__sum > div { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; }
.estimate__sum dt { color: var(--muted); }
.estimate__sum dd { margin: 0; color: var(--ink); font-weight: 600; text-align: right; }
.estimate__total { margin-top: 6px; padding-top: 9px !important; border-top: 1px solid #e3e3e3; font-size: 16px; }
.estimate__total dt { color: var(--ink); font-weight: 600; }
.estimate__note { margin: 10px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--muted); }
.price-card__amount .price-card__value { font-size: inherit; color: inherit; font-weight: inherit; }

/* ---------------------------------------------------------------- 2026-10-06: less boxed, less stumpy (owner feedback) */
.page { --page-max: clamp(1240px, 82vw, 1480px); --sec-y: clamp(44px, 5vw, 80px); }
/* taller photo heads, so the photo carries the page */
.phead--photo { min-height: clamp(420px, 66vh, 780px); }
.phead__title { max-width: 20ch; }
/* service: wider text, card closer */
@media (min-width: 960px) {
  .page .service { grid-template-columns: minmax(0, 1fr) 380px; gap: clamp(40px, 4.5vw, 80px); }
  .page .service__text { max-width: 820px; }
}
/* galleries: edge to edge with a slim margin, close to the text above */
.page .block--gallery .container--wide { max-width: none; padding: 0 clamp(8px, 1vw, 16px); }
.page .block:not(.block--gallery):has(+ .block--gallery) { padding-bottom: clamp(36px, 4vw, 56px); }
.page .block--gallery { padding-bottom: clamp(40px, 5vw, 72px); }
.page .block + .block--gallery { padding-top: 0 !important; }
/* ---------------------------------------------------------------- packages (Day / Night events) */
.price-card .options { list-style: none; margin: 4px 0 20px; padding: 0; }
.price-card .options li { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 12px 0; border-bottom: 1px solid #ececec; }
.price-card .options li:first-child { padding-top: 6px; }
.options__name { display: flex; flex-direction: column; color: var(--ink); font-weight: 600; line-height: 1.3; }
.options__name small { font-weight: 400; color: var(--muted); font-size: 13px; margin-top: 2px; }
.options__price { font: 300 1.45rem/1.1 var(--f-head); color: var(--ink); white-space: nowrap; }
/* the option cards below: banner photos at their own wide shape, so the cards stay compact */
.page .card--package .card__media, .page .card--package > figure:first-child { aspect-ratio: 3 / 1; }
.page .card--package .card__body > p:first-of-type { color: var(--muted); font-size: 14px; }
.price-card__from { font-size: 1rem; color: var(--muted); font-weight: 400; }
.price-card .ticks li { font-size: 14.5px; line-height: 1.5; }
.price-card .ticks li strong { font-weight: 600; }
/* option cards: one row of times + price under the title */
.page .card--package .package__meta { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; margin: -2px 0 12px !important; padding-bottom: 12px; border-bottom: 1px solid #ececec; }
.page .card--package .package__meta span { color: var(--muted); font-size: 14px; }
.page .card--package .package__meta strong { font: 300 1.5rem/1 var(--f-head); color: var(--ink); white-space: nowrap; }
.page .card--package .card__body > p:first-of-type { color: var(--muted); font-size: inherit; }
/* package pages: the cards follow the intro closely */
.page--default .service + * , .page .block:has(.service) + .block { padding-top: 0; }
.page .service__text .cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; margin: 2em 0 0; }
@media (max-width: 640px) { .page .service__text .cards--2 { grid-template-columns: 1fr; } }
.page .service__text .card--package .card__body { padding: 18px 20px 20px; font-size: 15px; }
.page .service__text .card--package .card__title { font-size: 1.2rem !important; }
.page .service__text .card--package .package__meta strong { font-size: 1.3rem; }
/* 2026-10-06: content width = text (≈820) + gap + price card (380), so nothing floats in leftover space; galleries stay full width */
.page { --page-max: 1280px; }
@media (min-width: 960px) { .page .service { grid-template-columns: minmax(0, 1fr) 380px; gap: 80px; } .page .service__text { max-width: none; } }
.page .service__text.content > * { max-width: none; }
.page .service__text.content:not(.content--narrow) > :is(p, ul:not([class]), ol, h2, h3, aside, details, blockquote, table, figure, .actions) { max-width: none; }
/* estimate: travel */
.estimate [hidden] { display: none !important; }
.estimate__place { margin: 4px 0 6px; }
.estimate__place label { display: block; color: var(--ink); margin-bottom: 6px; }
.estimate__place-field { position: relative; }
.estimate__place input { width: 100%; height: 40px; padding: 0 12px; border: 1.5px solid #ddd; border-radius: var(--r-sm); background: #fff; font-size: 14.5px; }
.estimate__place input:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: transparent; }
.estimate__suggest { position: absolute; z-index: 20; left: 0; right: 0; top: calc(100% + 4px); margin: 0; padding: 4px 0; list-style: none; background: #fff; border-radius: var(--r-sm); box-shadow: var(--shadow-hi); max-height: 260px; overflow: auto; }
.estimate__suggest li { padding: 8px 12px; cursor: pointer; line-height: 1.35; }
.estimate__suggest li strong { display: block; font-weight: 600; color: var(--ink); font-size: 14px; }
.estimate__suggest li span { display: block; color: var(--muted); font-size: 12.5px; }
.estimate__suggest li:hover, .estimate__suggest li.is-active { background: #f2f6fb; }
.estimate__hint { margin: 5px 0 0; font-size: 12px; color: var(--muted); }

/* ================================================================ booking wizard */
.booking { display: grid; gap: 32px; align-items: start; }
@media (min-width: 960px) { .booking { grid-template-columns: minmax(0, 1fr) 360px; gap: 64px; } }
.booking__card { position: sticky; top: calc(var(--header-h) + 24px); }
.booking__svc { margin: 0 0 4px; font: 400 1.25rem/1.3 var(--f-head); color: var(--ink); }
.booking__when { margin: 0 0 14px; color: var(--muted); font-size: 14.5px; }
.booking__lines { border-top: 1px solid #ececec; }
.booking__line { display: flex; justify-content: space-between; gap: 12px; margin: 0; padding: 8px 0; font-size: 14px; border-bottom: 1px solid #f2f2f2; }
.booking__line b { font-weight: 600; color: var(--ink); white-space: nowrap; }
.booking__total { margin: 14px 0 6px; font-size: 2.2rem; }
.booking__steps { list-style: none; display: flex; gap: 8px; margin: 0 0 28px; padding: 0; counter-reset: s; flex-wrap: wrap; }
.booking__steps li { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--muted); padding: 8px 14px 8px 8px; border-radius: 999px; background: #e9e9e9; }
.booking__steps li span { width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; background: #fff; font-weight: 700; font-size: 12px; }
.booking__steps li.is-current { background: var(--ink); color: #fff; }
.booking__steps li.is-current span { color: var(--ink); }
.booking__steps li.is-done span { background: var(--flare-5); color: #fff; }
.booking__h { font: 300 1.8rem/1.2 var(--f-head); color: var(--ink); margin: 0 0 18px; }
.booking__h3 { font: 600 1rem/1.3 var(--f-body); color: var(--ink); margin: 28px 0 12px; text-transform: uppercase; letter-spacing: .08em; font-size: 13px; }
.booking__nav { display: flex; gap: 12px; justify-content: space-between; margin: 28px 0 0; }
.booking__nav .btn--primary:only-child { margin-left: auto; }
.booking__error { background: #fdecea; color: #8a1c13; border-radius: var(--r-sm); padding: 12px 16px; margin: 16px 0 0; font-size: 14.5px; }
.booking__secure { font-size: 13px; color: var(--muted); text-align: right; margin: 10px 0 0; }

.cal { background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); padding: 18px; }
.cal__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.cal__title { margin: 0; font: 400 1.2rem var(--f-head); color: var(--ink); text-transform: capitalize; }
.cal__nav { width: 40px; height: 40px; border-radius: 50%; border: 0; background: #f2f2f2; display: grid; place-items: center; color: var(--ink); }
.cal__nav:disabled { opacity: .3; cursor: default; }
.cal__grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; }
.cal__grid[aria-busy="true"] { opacity: .5; }
.cal__dow { text-align: center; font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; padding: 4px 0; }
.cal__day { aspect-ratio: 1 / .9; border: 0; border-radius: var(--r-sm); background: #f6f6f6; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; color: #b5b5b5; padding: 2px; }
.cal__day b { font-weight: 600; font-size: 15px; }
.cal__day small { font-size: 10.5px; line-height: 1.1; text-align: center; }
.cal__day.is-free { background: #eef4f3; color: var(--ink); cursor: pointer; }
.cal__day.is-free small { color: #217a74; }
.cal__day.is-free:hover { background: #dcecea; }
.cal__day.is-selected { background: var(--ink); color: #fff; }
.cal__day.is-selected small { color: #fff; }
.slots { margin-top: 22px; }
.slots__title { margin: 0; font: 400 1.2rem var(--f-head); color: var(--ink); text-transform: capitalize; }
.slots__hint { margin: 2px 0 12px; font-size: 13.5px; color: var(--muted); }
.slots__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; }
.slot { border: 1.5px solid #d9d9d9; background: #fff; border-radius: var(--r-sm); padding: 11px 8px; font-weight: 600; font-size: 14.5px; color: var(--ink); }
.slot:hover { border-color: var(--ink); }
.slot.is-on { background: var(--ink); border-color: var(--ink); color: #fff; }
.slots__none { color: var(--muted); }

.fgrid { display: flex; flex-wrap: wrap; gap: 14px 16px; }
.field { flex: 1 1 100%; margin: 0; border: 0; padding: 0; min-width: 0; }
@media (min-width: 640px) { .field.w25 { flex-basis: calc(25% - 12px); } .field.w33 { flex-basis: calc(33.3% - 11px); } .field.w50 { flex-basis: calc(50% - 8px); } .field.w75 { flex-basis: calc(75% - 4px); } }
.field label, .field legend { display: block; font-size: 14px; font-weight: 600; color: var(--ink); margin: 0 0 6px; padding: 0; }
.field input:not([type=checkbox]):not([type=radio]), .field select, .field textarea { width: 100%; min-height: 46px; padding: 10px 12px; border: 1.5px solid #d6d6d6; border-radius: var(--r-sm); background: #fff; font-size: 15px; }
.field input:focus, .field select:focus, .field textarea:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: transparent; }
.field.has-err input, .field.has-err select, .field.has-err textarea { border-color: #c0392b; }
.field__err { margin: 4px 0 0; color: #b03224; font-size: 13px; min-height: 0; }
.field__err:empty { display: none; }
.field__desc { margin: 4px 0 0; font-size: 12.5px; color: var(--muted); line-height: 1.45; }
.check { display: flex; gap: 10px; align-items: flex-start; font-size: 15px; margin: 14px 0 0; cursor: pointer; }
.check input { width: 20px; height: 20px; margin-top: 1px; flex: none; accent-color: var(--flare-4); }
.field .check { margin: 0; font-weight: 400; }
.choices { display: flex; flex-wrap: wrap; gap: 4px 18px; }
.seg { display: inline-flex; background: #e6e6e6; border-radius: 999px; padding: 4px; margin: 0 0 16px; }
.seg label { position: relative; cursor: pointer; }
.seg input { position: absolute; opacity: 0; }
.seg span { display: block; padding: 8px 18px; border-radius: 999px; font-size: 14px; font-weight: 600; color: var(--muted); }
.seg input:checked + span { background: #fff; color: var(--ink); box-shadow: 0 1px 3px rgb(0 0 0 / .12); }
.seg input:focus-visible + span { outline: 2px solid var(--accent); }
.swatches { display: flex; flex-wrap: wrap; gap: 12px; }
.swatch { display: flex; flex-direction: column; align-items: center; gap: 4px; cursor: pointer; width: 70px; text-align: center; }
.swatch input { position: absolute; opacity: 0; }
.swatch span { width: 44px; height: 44px; border-radius: 50%; background: var(--sw); box-shadow: inset 0 0 0 1px rgb(0 0 0 / .15); }
.swatch small { font-size: 11.5px; line-height: 1.2; color: var(--muted); }
.swatch input:checked + span { box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--ink); }
.swatch input:focus-visible + span { box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--accent); }
.swatch.is-off { opacity: .35; cursor: not-allowed; }
.booking__review { margin: 0 0 18px; background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); padding: 6px 20px; }
.booking__review > div { display: grid; grid-template-columns: 160px 1fr; gap: 12px; padding: 10px 0; border-bottom: 1px solid #f0f0f0; font-size: 15px; }
.booking__review > div:last-child { border-bottom: 0; }
.booking__review dt { color: var(--muted); }
.booking__review dd { margin: 0; color: var(--ink); overflow-wrap: anywhere; }
@media (max-width: 600px) { .booking__review > div { grid-template-columns: 1fr; gap: 2px; } }
.booking-result { max-width: 640px; margin: 0 auto; text-align: center; }
.booking-result h2 { font: 300 2rem/1.2 var(--f-head); color: var(--ink); margin: 0 0 10px; }
.booking-result__icon { width: 72px; height: 72px; border-radius: 50%; display: grid; place-items: center; margin: 0 auto 18px; background: #eee; color: var(--muted); }
.booking-result__icon.is-ok { background: var(--lens-flare); color: #fff; }
.booking-result__icon.is-bad { background: #f3d6d2; color: #8a1c13; }
.booking-result__facts { text-align: left; background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); padding: 6px 22px; margin: 26px 0; }
.booking-result__facts > div { display: flex; justify-content: space-between; gap: 16px; padding: 11px 0; border-bottom: 1px solid #f0f0f0; }
.booking-result__facts > div:last-child { border-bottom: 0; }
.booking-result__facts dt { color: var(--muted); }
.booking-result__facts dd { margin: 0; font-weight: 600; color: var(--ink); text-align: right; }
.booking-result .actions { justify-content: center; }
.eventpick__busy { list-style: none; margin: 12px 0 0; padding: 0; font-size: 13.5px; color: #8a1c13; } .eventpick__busy li { padding: 3px 0; }

/* booking: choose a service */
.page .pick { list-style: none; margin: 0 0 40px; padding: 0; display: grid; gap: 10px; }
.pick__link { display: grid; grid-template-columns: 1fr auto; gap: 4px 20px; align-items: center; padding: 18px 22px; background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); text-decoration: none; color: var(--ink); transition: box-shadow var(--dur), transform var(--dur); }
.pick__link:hover { box-shadow: var(--shadow-hi); transform: translateY(-2px); }
.pick__title { font: 400 1.15rem/1.3 var(--f-head); }
.pick__meta { grid-column: 1; font-size: 14px; color: var(--muted); display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; }
.pick__meta strong { color: var(--ink); }
.pick__tag { font-size: 12px; padding: 2px 8px; border-radius: 999px; background: #eef4f3; color: #217a74; }
.pick__go { grid-column: 2; grid-row: 1 / span 2; display: inline-flex; align-items: center; gap: 6px; font-weight: 600; white-space: nowrap; }
.pick__other { color: var(--muted); }
/* swatches: beat the generic ".field label" rule */
.field .swatch { display: flex; flex-direction: column; align-items: center; gap: 4px; font-weight: 400; margin: 0; position: relative; }
.field .swatch span { display: block; }
.field .seg label, .field .check { display: flex; }

/* booking inside the lightbox */
body.is-embed { background: var(--bg); }
body.is-embed .page--booking .block { padding: 20px 0 40px; }
.bk-head { padding: 22px var(--gutter) 0; max-width: calc(var(--page-max) + 2 * var(--gutter)); margin: 0 auto; }
.bk-head__kicker { margin: 0; font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); }
.bk-head__title { margin: 2px 0 0; font: 300 clamp(1.6rem, 3vw, 2.2rem)/1.15 var(--f-head); color: var(--ink); }
.seg--where { display: flex; margin: 0 0 18px; }
.seg--where a { flex: 1; text-decoration: none; text-align: center; }
.seg--where a span { display: block; padding: 9px 16px; border-radius: 999px; font-size: 14px; font-weight: 600; color: var(--muted); }
.seg--where a small { display: block; font-weight: 400; font-size: 12px; }
.seg--where a.is-on span { background: #fff; color: var(--ink); box-shadow: 0 1px 3px rgb(0 0 0 / .12); }
/* the lightbox itself (site.js) */
.bk-overlay { position: fixed; inset: 0; z-index: 200; display: grid; place-items: center; background: rgb(10 10 10 / .62); backdrop-filter: blur(4px); opacity: 0; transition: opacity .25s; }
.bk-overlay.is-open { opacity: 1; }
.bk-overlay__box { position: relative; width: min(1180px, 94vw); height: min(92vh, 1000px); background: var(--bg); border-radius: 12px; overflow: hidden; box-shadow: 0 30px 80px rgb(0 0 0 / .35);
  transform: translateY(16px); transition: transform .3s var(--ease); }
.bk-overlay.is-open .bk-overlay__box { transform: none; }
.bk-overlay iframe { width: 100%; height: 100%; border: 0; display: block; }
.bk-overlay__close { position: absolute; top: 12px; right: 12px; z-index: 2; width: 42px; height: 42px; border-radius: 50%; border: 0; background: #fff; box-shadow: 0 2px 10px rgb(0 0 0 / .2);
  display: grid; place-items: center; color: #000; }
.bk-overlay__load { position: absolute; inset: 0; display: grid; place-items: center; color: var(--muted); font-size: 14px; }
@media (max-width: 767px) { .bk-overlay__box { width: 100vw; height: 100dvh; border-radius: 0; } }
html.bk-lock, html.bk-lock body { overflow: hidden; }
.inline-btn { display: flex; gap: 8px; } .inline-btn input { flex: 1; min-width: 0; } .inline-btn .btn { min-height: 46px; padding: 0 16px; border-radius: var(--r-sm); }
.field.has-suggest, .field .has-suggest { position: relative; } .field .estimate__suggest { top: 74px; }
.bk-overlay { z-index: 10000; }
.bk-head { padding-right: 64px; }
@media (max-width: 600px) { .booking__steps li { padding: 6px 10px 6px 6px; font-size: 13px; } .bk-head__title { font-size: 1.5rem; } }

/* booking: the page's own question above the Studio / On-Location choice */
.seg-heading { margin: 0 0 .5rem; font-weight: 600; font-size: .95rem; color: var(--ink, #1f1a24); }

/* booking lightbox: quote request form (Quotation required services) */
/* quote request (booking.php ?quote=): the service on the left, the form in a card on the right */
.bk-quote { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(28px, 5vw, 72px); align-items: start; }
.bk-quote__about { position: sticky; top: calc(var(--header-h, 60px) + 24px); }
.bk-quote__img { aspect-ratio: 4 / 3; overflow: hidden; border-radius: 14px; margin-bottom: 26px; background: var(--tint); }
.bk-quote__img img { width: 100%; height: 100%; object-fit: cover; }
.bk-quote__kicker { margin: 0 0 10px; color: var(--copper, #873949); font-size: 12px; font-weight: 750; letter-spacing: .17em; text-transform: uppercase; }
.bk-quote__service { margin: 0; font: 300 clamp(32px, 3.2vw, 46px)/1.05 var(--f-head); letter-spacing: -.035em; }
.bk-quote__service a { color: var(--ink); text-decoration: none; }
.bk-quote__price { margin: 12px 0 0; color: var(--muted); font-size: 15px; } .bk-quote__price strong { color: var(--ink); font-size: 20px; }
.bk-quote__facts { list-style: none; margin: 18px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.bk-quote__facts li { padding: 6px 12px; border: 1px solid var(--line-2); border-radius: 999px; color: var(--muted); font-size: 13px; }
.bk-quote__facts strong { color: var(--ink); }
.bk-quote__path { list-style: none; margin: 30px 0 0; padding: 0 0 0 22px; border-left: 1px solid var(--line-2); display: grid; gap: 18px; }
.bk-quote__path li { position: relative; }
.bk-quote__path li::before { content: ""; position: absolute; left: -28px; top: 6px; width: 11px; height: 11px; border-radius: 50%; background: var(--copper, #955425); box-shadow: 0 0 0 4px var(--bg); }
.bk-quote__path strong { display: block; color: var(--ink); font: 400 19px/1.3 var(--f-head); }
.bk-quote__path span { display: block; margin-top: 2px; color: var(--muted); font-size: 14.5px; line-height: 1.55; }
.bk-quote__card { padding: clamp(22px, 3vw, 38px); border-radius: 16px; background: var(--surface); box-shadow: var(--shadow); }
.bk-quote__card .btn--primary { width: 100%; justify-content: center; min-height: 52px; font-size: 16px; }
.bk-quote__intro { margin: 0 0 22px; color: var(--ink); font: 400 clamp(19px, 1.5vw, 22px)/1.5 var(--f-head); }
.bk-quote--embed { grid-template-columns: 1fr; gap: 18px; }
.bk-quote--embed .bk-quote__about { position: static; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 16px; }
.bk-quote--embed .bk-quote__kicker { width: 100%; margin: 0; }
.bk-quote--embed .bk-quote__service { font-size: 26px; }
.bk-quote--embed .bk-quote__facts { margin: 0; width: 100%; }
@media (max-width: 900px) { .bk-quote { grid-template-columns: 1fr; } .bk-quote__about { position: static; } .bk-quote__img { aspect-ratio: 16 / 9; } }
.bk-quote .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 18px; }
.bk-quote .field--wide { grid-column: 1 / -1; }
.bk-quote__done { padding: 24px 0; }
@media (max-width: 640px) { .bk-quote .form-grid { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------- price card (2026-10-07): one family for every service */
.price-card { padding: 26px 26px 22px; }
.price-card__badge { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 16px; padding: 4px 10px; border-radius: 999px;
  font-size: 11.5px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; background: #f3f1f4; color: var(--ink); }
.price-card__badge::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--flare-5, #22968f); }
.price-card--request .price-card__badge::before { background: #e0a100; }
.price-card--quote .price-card__badge::before { background: var(--flare-2, #640d2c); }
.price-card__amount { display: flex; align-items: baseline; flex-wrap: wrap; gap: 6px; margin: 0 0 20px; font: 300 3rem/1 var(--f-head); }
.price-card__amount .price-card__from { font: 400 .95rem/1 var(--f-body, inherit); color: var(--muted); }
.price-card__amount .price-card__unit { font: 400 1rem/1 var(--f-body, inherit); color: var(--muted); }
.price-card__lead { margin: 0 0 20px; color: var(--ink); line-height: 1.55; }
/* two choices (In the Studio / On-Location): side-by-side tiles */
.price-tiles { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 0 0 20px; }
.price-tile { display: flex; flex-direction: column; gap: 6px; padding: 14px 14px 12px; border: 1px solid #e8e6ea; border-radius: var(--r-sm); background: #fbfafb; }
.price-tile__name { font-size: 13px; font-weight: 600; color: var(--muted); line-height: 1.3; }
.price-tile__amount { font: 300 1.9rem/1 var(--f-head); color: var(--ink); }
.price-tile__amount span, .price-list__amount span { font-size: .55em; color: var(--muted); }
.price-tile__amount b, .price-list__amount b, .price-card__amount b { font-weight: 300; }
.price-tile__unit { font-size: 12.5px; color: var(--muted); }
/* a price list (Day / Night …) */
.price-list { list-style: none; margin: 0 0 20px; padding: 0; }
.price-list li { display: flex; justify-content: space-between; align-items: center; gap: 14px; padding: 13px 0; border-bottom: 1px solid #eeecef; }
.price-list li:first-child { padding-top: 2px; }
.price-list li:last-child { border-bottom: 0; }
.price-list__name { display: flex; flex-direction: column; font-weight: 600; color: var(--ink); line-height: 1.3; }
.price-list__name small { font-weight: 400; color: var(--muted); font-size: 13px; margin-top: 3px; }
.price-list__price { display: flex; flex-direction: column; align-items: flex-end; white-space: nowrap; }
.price-list__amount { font: 300 1.6rem/1 var(--f-head); color: var(--ink); }
.price-list__price small { font-size: 12.5px; color: var(--muted); margin-top: 3px; }
/* what's on offer, without prices (Commercial) */
.offer-list { list-style: none; margin: 4px 0 20px; padding: 0; display: grid; gap: 10px; }
.offer-list li { display: flex; gap: 10px; align-items: flex-start; font-weight: 600; color: var(--ink); line-height: 1.35; }
.offer-list li .icon { flex: none; margin-top: 2px; color: var(--flare-5, #22968f); }
.offer-list small { display: block; font-weight: 400; color: var(--muted); font-size: 13px; }
/* reassurance under the button */
.price-card__assure { list-style: none; margin: 16px 0 0; padding: 0; display: grid; gap: 7px; font-size: 13.5px; color: var(--muted); }
.price-card__assure li { display: flex; gap: 8px; align-items: center; }
.price-card__assure .icon { flex: none; color: var(--flare-5, #22968f); }
.price-card .estimate { margin-top: 16px; }
.price-card__note { margin: 14px 0 0; font-size: 13px; }
@media (max-width: 420px) { .price-tiles { grid-template-columns: 1fr; } }
.price-card__value span { font-size: .45em; color: var(--muted); font-family: var(--f-body, inherit); }

/* ---------------------------------------------------------------- lists (Admin → Lists), e.g. studio equipment */
.list-block { margin: 8px 0 32px; }
.list-block__group { font: 400 1.3rem/1.3 var(--f-head); color: var(--ink); margin: 28px 0 14px; }
.list-block__group:first-child { margin-top: 0; }
.list-block__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 18px; }
.list-item { display: flex; flex-direction: column; background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); overflow: hidden; }
.list-item__media { aspect-ratio: 1 / 1; background: #f4f3f5; }
.list-item__media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.list-item__body { padding: 14px 16px 16px; }
.list-item__name { margin: 0 0 6px; font-weight: 600; color: var(--ink); line-height: 1.35; }
.list-item__qty { display: inline-block; margin-right: 2px; padding: 1px 7px; border-radius: 999px; background: #f1eef2; font-size: 12.5px; font-weight: 700; color: var(--flare-2, #640d2c); vertical-align: 1px; }
.list-item__note { margin: 0; font-size: 13.5px; color: var(--muted); line-height: 1.5; }
.list-item__specs { list-style: none; margin: 0; padding: 0; display: grid; gap: 3px; font-size: 13px; line-height: 1.45; color: var(--muted); }
.list-item__specs span { color: var(--ink); font-weight: 600; }
.list-block__checks { list-style: none; margin: 0 0 8px; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px 24px; }
.list-block__checks li { display: flex; gap: 10px; align-items: flex-start; }
.list-block__checks .icon { flex: none; margin-top: 4px; color: var(--flare-5, #22968f); }
.list-block__checks small { display: block; color: var(--muted); font-size: 13px; }
.list-block__qty { color: var(--flare-2, #640d2c); }
@media (max-width: 520px) { .list-block__grid { grid-template-columns: 1fr 1fr; gap: 12px; } .list-item__body { padding: 10px 12px 12px; } }

/* ---------------------------------------------------------------- legal pages (privacy, cookies) */
.legal .toc { background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); padding: 18px 22px; margin: 0 0 28px; }
.legal .toc ol { margin: 0; padding-left: 1.2em; columns: 2 260px; column-gap: 28px; }
.legal .toc li { margin: 0 0 6px; break-inside: avoid; }
.legal h2 { scroll-margin-top: calc(var(--header-h, 70px) + 16px); }
.legal .table-wrap { overflow-x: auto; margin: 0 0 18px; }
.legal .cookie-table { font-size: 14px; min-width: 560px; }
.legal .cookie-table code { font-size: 12.5px; word-break: break-all; }
.legal .legal__updated { margin-top: 32px; color: var(--muted); font-size: 14px; }

/* ---------------------------------------------------------------- cost calculator page */
.calc { max-width: 760px; background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); padding: 26px 28px; }
.calc .estimate { margin: 0 0 20px; border-top: 0; padding-top: 0; }
.calc .estimate--open .estimate__toggle { pointer-events: none; font-size: 1.2rem; }
.calc .estimate--open .estimate__toggle::after { display: none; }
.calc .estimate__choice { grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); }
.calc__note { margin: 12px 0 0; font-size: 13.5px; color: var(--muted); }

/* ---------------------------------------------------------------- gift cards */
.gc { max-width: 900px; }
.gc-form, .gc-share { background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); padding: 26px 28px; }
.gc-h { display: flex; align-items: center; gap: 10px; font: 400 1.35rem/1.3 var(--f-head) !important; margin: 26px 0 14px !important; }
.gc-h:first-of-type { margin-top: 4px !important; }
.gc-h span { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--lens-flare); color: #fff; font: 600 14px/1 var(--f-body, inherit); }
.gc-presets { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: 12px; margin: 0 0 14px; }
.gc-card { position: relative; display: flex; flex-direction: column; justify-content: space-between; aspect-ratio: 1.586 / 1; padding: 14px 16px; border-radius: 12px; cursor: pointer;
  background: linear-gradient(var(--gc-angle, 135deg), var(--gc-a, #955425), var(--gc-b, #640d2c)); color: #fff; box-shadow: 0 4px 14px rgb(0 0 0 / .15); transition: transform .15s, box-shadow .15s; }
.gc-card input[type=radio] { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.gc-card:has(input:checked) { outline: 3px solid var(--ink); outline-offset: 3px; transform: translateY(-2px); }
.gc-card:has(input:focus-visible) { outline: 3px solid var(--accent, #22968f); outline-offset: 3px; }
.gc-card__brand { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; opacity: .85; }
.gc-card__amount { font: 300 1.9rem/1 var(--f-head); }
.gc-card__label { font-size: 12.5px; opacity: .9; }
.gc-card--custom { background: #f4f2f5; color: var(--ink); box-shadow: none; border: 1.5px dashed #cfc6d1; }
.gc-custom { display: flex; align-items: center; gap: 6px; font-weight: 600; }
.gc-custom input { width: 100%; position: relative; z-index: 1; padding: 6px 8px; border: 1px solid #d5ccd6; border-radius: 8px; font-size: 1.1rem; }
.gc-services { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 6px 18px; margin: 10px 0 0; }
.gc-form .form-grid, .gc-share .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 18px; margin: 12px 0; }
.gc-form .field--wide, .gc-share .field--wide { grid-column: 1 / -1; }
.gc-anon { align-self: end; padding-bottom: 12px; }
.gc-pay { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 20px 0 0; }
.gc-secure, .gc-note { color: var(--muted); font-size: 14px; }
.gc-done { text-align: center; background: var(--surface); border-radius: var(--r); box-shadow: var(--shadow); padding: 36px 28px; }
.gc-done__icon { font-size: 44px; margin: 0; }
.gc-card--big { max-width: 420px; margin: 0 0 22px; cursor: default; }
.gc-card--big .gc-card__amount { font-size: 3rem; }
.gc-card__code { font: 600 1.05rem/1 ui-monospace, monospace; letter-spacing: .12em; }
.gc-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; margin: 0 0 18px; }
.gc-facts div { background: var(--surface); border-radius: var(--r-sm); padding: 10px 14px; box-shadow: var(--shadow); }
.gc-facts dt { font-size: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: .08em; }
.gc-facts dd { margin: 4px 0 0; font-weight: 600; color: var(--ink); }
.gc-message { margin: 0 0 18px; padding: 14px 18px; border-left: 3px solid var(--flare-2, #640d2c); background: var(--surface); font-style: italic; }
.gc-share { margin-top: 24px; } .gc-ok { color: #1d7a52; font-weight: 600; }
@media (max-width: 640px) { .gc-form .form-grid, .gc-share .form-grid { grid-template-columns: 1fr; } .gc-form, .gc-share { padding: 20px 16px; } }

/* booking: gift card / voucher code */
.bk-voucher { margin: 4px 0 14px; }
.bk-voucher summary { cursor: pointer; color: var(--flare-2, #640d2c); font-weight: 600; font-size: 15px; }
.bk-voucher__row { display: flex; gap: 8px; margin-top: 10px; max-width: 420px; }
.bk-voucher__row input { flex: 1; min-width: 0; text-transform: uppercase; letter-spacing: .06em; padding: 10px 12px; border: 1px solid #d5ccd6; border-radius: 8px; }
.bk-voucher__on { margin: 4px 0 14px; color: #1d7a52; font-weight: 600; }
.bk-voucher__on .linkish { background: none; border: 0; padding: 0; margin-left: 8px; color: var(--muted); text-decoration: underline; cursor: pointer; font: inherit; font-weight: 400; }
.booking__line--discount b, .booking__line--discount span { color: #1d7a52; }
.gc-form .check input[type=checkbox] { width: 20px; height: 20px; min-height: 0; padding: 0; flex: none; margin: 2px 0 0; }
.gc-anon .check { display: flex; gap: 8px; align-items: center; text-transform: none; letter-spacing: 0; font-weight: 400; font-size: 15px; }

/* ---------------------------------------------------------------- service pages: editorial refresh (2026-10-08)
 * The service family keeps the shared booking/price logic above. This layer gives it the more photographic,
 * editorial treatment approved on the Studio Portraits prototype. */
.page--service {
  --service-paper: #f4f1eb;
  --service-ink: #171717;
  --service-muted: #68645e;
  background: var(--service-paper);
  color: var(--service-ink);
}
.page--service .phead { min-height: clamp(620px, 82vh, 880px); background: #151515; }
.page--service .phead::after {
  z-index: 1;
  background:
    linear-gradient(90deg, rgb(8 8 8 / .82) 0%, rgb(8 8 8 / .48) 38%, rgb(8 8 8 / .08) 72%),
    linear-gradient(0deg, rgb(8 8 8 / .62) 0%, transparent 48%);
}
.page--service .phead__img { z-index: 0; filter: saturate(.84) contrast(1.04); }
.page--service .phead__inner {
  position: relative;
  z-index: 2;
  max-width: calc(1280px + 2 * var(--gutter));
  padding-bottom: clamp(64px, 9vh, 110px);
}
.page--service .phead .crumbs { display: none; }
.page--service .phead__kicker {
  margin: 0 0 18px;
  color: rgb(255 255 255 / .74);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .16em;
}
.page--service .phead__title {
  max-width: 820px;
  font-size: clamp(52px, 6.7vw, 104px);
  font-weight: 300;
  line-height: .94;
  letter-spacing: -.045em;
}
.page--service .phead__intro {
  max-width: 650px;
  margin-top: 28px;
  color: rgb(255 255 255 / .88);
  font-size: clamp(18px, 1.5vw, 23px);
  line-height: 1.55;
}
.phead__actions { display: flex; align-items: center; gap: 24px; margin-top: 34px; }
.page .btn--hero {
  min-height: 52px;
  padding: 0 25px;
  border: 0;
  border-radius: 999px;
  color: #171717;
  background: #fff;
  box-shadow: 0 10px 30px rgb(0 0 0 / .15);
  font-size: 14px;
  font-weight: 700;
}
.page .btn--hero:hover, .page .btn--hero:focus-visible { color: #171717; background: #fff; transform: translateY(-2px); }
.phead__work {
  padding: 8px 0;
  color: #fff;
  border-bottom: 1px solid rgb(255 255 255 / .55);
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
}
.phead__work:hover { color: #fff; border-color: #fff; }
.phead__facts { display: flex; flex-wrap: wrap; gap: 12px 34px; margin-top: 38px; color: rgb(255 255 255 / .72); font-size: 13px; }
.phead__facts strong { color: #fff; font-weight: 700; }

.page--service > .block:first-of-type { padding: clamp(80px, 10vw, 140px) 0; }
.page--service .service { max-width: calc(1240px + 2 * var(--gutter)); gap: clamp(60px, 9vw, 130px); }
.page--service .service__text { max-width: 750px; }
.page--service .service__text.content > .service-section-label {
  margin: 0 0 18px;
  color: var(--flare-2, #640d2c);
  font-size: 12px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.page--service .service__text.content > h2 {
  max-width: 700px;
  margin: 0 0 28px;
  color: var(--service-ink);
  font-size: clamp(40px, 4.3vw, 67px);
  font-weight: 300;
  line-height: 1.02;
  letter-spacing: -.04em;
}
.page--service .service__text.content > .service-lead {
  max-width: 670px;
  margin: 0;
  color: var(--service-muted);
  font-size: clamp(18px, 1.55vw, 22px);
  line-height: 1.65;
}
.service-process { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px; margin-top: 58px; }
.service-step { padding-top: 18px; border-top: 1px solid #c8c2b8; }
.service-step > span { color: var(--flare-2, #640d2c); font-size: 12px; font-weight: 700; letter-spacing: .12em; }
.page .service-step h3 { margin: 22px 0 10px; color: var(--service-ink); font-size: 18px; font-weight: 600; }
.page .service-step p { margin: 0; color: var(--service-muted); font-size: 15px; line-height: 1.6; }
.page .service-note { margin: 38px 0 0; color: var(--service-muted); font-size: 15px; line-height: 1.65; }
.page .service-note a { color: var(--service-ink); font-weight: 600; text-underline-offset: 5px; }
.page--service .price-card {
  top: calc(var(--header-h) + 30px);
  width: min(100%, 390px);
  padding: 34px 30px 28px;
  border-radius: 3px;
  box-shadow: 0 24px 70px rgb(42 34 25 / .12);
}
.page--service .price-card::before { height: 3px; }
.page--service .price-card .btn--primary { min-height: 54px; border-radius: 3px; }
.page--service > .block:nth-of-type(2) { padding-bottom: clamp(80px, 9vw, 130px); }
.page--service > .block:nth-of-type(2) > .content > h2:first-child { margin-top: 0; }

.page.page--service .block + .block--gallery { padding: clamp(72px, 6vw, 96px) 0 !important; background: #191919; }
.service-gallery-head {
  display: grid;
  grid-template-columns: 1.2fr .8fr;
  gap: 60px;
  width: min(1500px, calc(100% - 2 * var(--gutter)));
  margin: 0 auto 58px;
  color: #fff;
}
.service-gallery-head__label { margin: 0 0 18px; color: #d3a78e; font-size: 12px; font-weight: 700; line-height: 1; letter-spacing: .16em; text-transform: uppercase; }
.service-gallery-head h2 { margin: 0; color: #fff; font: 300 clamp(45px, 5vw, 76px)/1 var(--f-head); letter-spacing: -.04em; }
.service-gallery-head > p { align-self: end; max-width: 500px; margin: 0 0 5px; color: rgb(255 255 255 / .64); font-size: 17px; line-height: 1.65; }
.page--service .block--gallery .container--wide { width: min(1500px, calc(100% - 40px)); padding: 0; }
.page--service .jg__item { overflow: hidden; background: #282828; }   /* justified rows like every other gallery */
.page--service .jg__img { object-fit: cover; transition: transform .55s cubic-bezier(.2,.7,.2,1), filter .55s ease; }
.page--service .jg__link:hover .jg__img { transform: scale(1.025); filter: brightness(.88); }
.page--service .block--gallery .jg-more__btn { color: #fff; border: 1px solid rgb(255 255 255 / .5); background: transparent; }
.page--service .block--gallery .jg-credit { color: rgb(255 255 255 / .5); }
.page--service .cta-band {
  padding: clamp(70px, 8vw, 110px) 0;
  background: var(--lens-flare);   /* identity gradient – colour order never changes */
}
.service-mobile-book { display: none; }

@media (max-width: 1000px) {
  .page--service .service { grid-template-columns: 1fr; }
  .page--service .price-card { position: relative; top: auto; width: 100%; }
}
@media (max-width: 700px) {
  body:has(.page--service) { padding-bottom: 70px; }
  .page--service .phead { min-height: 78svh; }
  .page--service .phead::after { background: linear-gradient(0deg, rgb(8 8 8 / .92) 0%, rgb(8 8 8 / .28) 72%); }
  .page--service .phead__inner { padding-bottom: 42px; }
  .page--service .phead__title { font-size: clamp(46px, 13.5vw, 68px); }
  .page--service .phead__intro { font-size: 17px; }
  .phead__actions { align-items: flex-start; flex-direction: column; gap: 12px; margin-top: 25px; }
  .phead__facts { display: none; }
  .service-process, .service-gallery-head { grid-template-columns: 1fr; }
  .service-process { gap: 28px; }
  .service-gallery-head { gap: 20px; }
  .page--service .block--gallery .container--wide { width: calc(100% - 10px); }
  .service-mobile-book {
    position: fixed;
    z-index: 9999;
    right: 10px;
    bottom: 10px;
    left: 10px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 58px;
    padding: 0 19px;
    border-radius: 4px;
    color: #fff;
    background: #171717;
    box-shadow: 0 12px 35px rgb(0 0 0 / .28);
    font-size: 13px;
    text-decoration: none;
  }
  .service-mobile-book:hover { color: #fff; }
}
@media (prefers-reduced-motion: reduce) {
  .page--service .jg__img, .page--service .phead__img { transition: none; }
}

/* ---------------------------------------------------------------- The Studio: editorial room tour (D53) */
.page-studio {
  --studio-ink: #171716;
  --studio-paper: #f0ede6;
  --studio-line: #c8c1b6;
  color: var(--studio-ink);
  background: var(--studio-paper);
}
.page-studio *, .page-studio *::before, .page-studio *::after { box-sizing: border-box; }
.studio-wrap { width: min(1420px, calc(100% - 2 * clamp(24px, 5vw, 88px))); margin-inline: auto; }
.studio-hero {
  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: calc(100svh - var(--header-h, 120px));
  overflow: hidden;
  color: #fff;
  background: #171716;
}
.studio-hero::after {
  position: absolute;
  z-index: 1;
  inset: 0;
  content: '';
  background: linear-gradient(90deg, rgb(10 10 9 / .84) 0%, rgb(10 10 9 / .5) 44%, rgb(10 10 9 / .08) 78%), linear-gradient(0deg, rgb(10 10 9 / .7), transparent 48%);
}
.studio-hero__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 48%; filter: saturate(.82) contrast(1.03); }
.studio-hero__body { position: relative; z-index: 2; width: min(900px, calc(100% - 2 * clamp(24px, 5vw, 88px))); padding-top: clamp(80px, 10vw, 155px); padding-bottom: clamp(56px, 7vw, 100px); }
.studio-kicker, .studio-label { margin: 0 0 22px; color: #8b3b49; font-size: 12px; font-weight: 700; letter-spacing: .17em; text-transform: uppercase; }
.studio-kicker { color: #edb497; }
.page-studio .studio-hero h1 { max-width: 880px; margin: 0; color: #fff; font: 300 clamp(58px, 7.2vw, 116px)/.91 var(--f-head); letter-spacing: -.055em; text-wrap: balance; }
.studio-hero__intro { max-width: 680px; margin: 30px 0 0; color: rgb(255 255 255 / .78); font-size: clamp(18px, 1.45vw, 23px); line-height: 1.55; }
.studio-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 35px; }
.studio-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 54px; padding: 0 25px; border: 1px solid rgb(255 255 255 / .65); border-radius: 2px; color: #fff; font-size: 14px; font-weight: 650; text-decoration: none; transition: transform .2s ease, background .2s ease; }
.studio-btn:hover, .studio-btn:focus-visible { color: #fff; transform: translateY(-2px); }
.studio-btn--solid, .studio-btn--solid:hover, .studio-btn--solid:focus-visible { color: #151515; border-color: #fff; background: #fff; }
.studio-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 55px; border-top: 1px solid rgb(255 255 255 / .28); }
.studio-facts > div { padding: 20px 26px 0 0; }
.studio-facts > div + div { padding-left: 26px; border-left: 1px solid rgb(255 255 255 / .22); }
.studio-facts strong { display: block; color: #fff; font-size: 18px; font-weight: 500; }
.studio-facts span { display: block; margin-top: 5px; color: rgb(255 255 255 / .55); font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }

.studio-intro { padding: clamp(84px, 10vw, 150px) 0; }
.studio-intro__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(300px, .65fr); gap: clamp(55px, 9vw, 145px); align-items: start; }
.page-studio .studio-intro h2, .page-studio .studio-visit h2 { margin: 0; color: var(--studio-ink); font: 300 clamp(44px, 5.3vw, 82px)/1 var(--f-head); letter-spacing: -.045em; text-wrap: balance; }
.studio-intro__copy { padding-top: 42px; }
.studio-intro__copy p { margin: 0 0 22px; color: #595751; font-size: clamp(17px, 1.35vw, 21px); line-height: 1.72; }
.studio-text-link { color: var(--studio-ink); font-weight: 700; text-underline-offset: 5px; }
.studio-text-link:hover { color: var(--studio-ink); }

.studio-gallery { display: grid; grid-template-columns: 1.22fr .78fr; grid-template-rows: repeat(2, minmax(260px, 42vw)); gap: 10px; padding: 10px; background: #171716; }
.studio-gallery figure { position: relative; margin: 0; overflow: hidden; background: #252523; }
.studio-gallery figure:first-child { grid-row: 1 / 3; }
.studio-gallery img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .8s cubic-bezier(.2, .7, .2, 1); }
.studio-gallery figure:hover img { transform: scale(1.018); }
.studio-gallery figcaption { position: absolute; right: 20px; bottom: 18px; padding: 7px 10px; color: rgb(255 255 255 / .78); background: rgb(10 10 10 / .72); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; }

.studio-capabilities { padding: clamp(88px, 10vw, 150px) 0; color: #fff; background: #191918; }
.studio-capabilities__head { display: grid; grid-template-columns: 1fr .72fr; gap: 70px; align-items: end; }
.studio-capabilities .studio-label { color: #d9a28a; }
.page-studio .studio-capabilities h2 { margin: 0; color: #fff; font: 300 clamp(44px, 5.3vw, 82px)/1 var(--f-head); letter-spacing: -.045em; text-wrap: balance; }
.studio-capabilities__head > p { max-width: 540px; margin: 0 0 6px; color: rgb(255 255 255 / .6); font-size: 18px; line-height: 1.65; }
.studio-capabilities__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 26px; margin-top: 72px; }
.studio-capabilities__grid article { padding-top: 22px; border-top: 1px solid rgb(255 255 255 / .28); }
.studio-capabilities__grid span { color: #d9a28a; font-size: 12px; font-weight: 700; letter-spacing: .13em; }
.page-studio .studio-capabilities__grid h3 { margin: 22px 0 10px; color: #fff; font-size: 20px; }
.studio-capabilities__grid p { margin: 0; color: rgb(255 255 255 / .58); font-size: 15px; line-height: 1.65; }

.studio-plan { display: grid; grid-template-columns: .88fr 1.12fr; min-height: 720px; background: #e9e4dc; }
.studio-plan__image { display: flex; align-items: center; justify-content: center; padding: clamp(36px, 5vw, 90px); background: #f8f7f4; }
.studio-plan__image img { display: block; width: min(100%, 700px); height: auto; mix-blend-mode: multiply; }
.studio-plan__copy { display: flex; align-items: center; padding: clamp(60px, 8vw, 135px); }
.studio-plan__copy > div { max-width: 570px; }
.page-studio .studio-plan h2 { margin: 0 0 30px; color: var(--studio-ink); font: 300 clamp(45px, 5vw, 78px)/1 var(--f-head); letter-spacing: -.045em; }
.studio-plan__copy p { margin: 0 0 28px; color: #595751; font-size: 18px; line-height: 1.7; }

.studio-visit { padding: clamp(88px, 9vw, 140px) 0; }
.studio-visit__grid { display: grid; grid-template-columns: 1fr .82fr; gap: clamp(60px, 9vw, 140px); align-items: end; }
.studio-address { padding: 32px 0 5px; border-top: 1px solid var(--studio-line); }
.studio-address strong { display: block; margin-bottom: 12px; font-size: 13px; letter-spacing: .12em; text-transform: uppercase; }
.studio-address p { margin: 0; color: #5c5953; font-size: 18px; line-height: 1.6; }
.studio-address .studio-address__note { margin-top: 18px; font-size: 15px; }
.studio-address a { display: inline-block; margin-top: 24px; color: var(--studio-ink); font-weight: 700; text-underline-offset: 5px; }

.studio-cta { padding: clamp(72px, 9vw, 125px) 0; color: #fff; }
.studio-cta__inner { display: flex; align-items: end; justify-content: space-between; gap: 50px; }
.page-studio .studio-cta h2 { max-width: 930px; margin: 0; color: #fff; font: 300 clamp(42px, 5vw, 76px)/1 var(--f-head); letter-spacing: -.04em; }
.studio-cta .studio-btn { flex: none; }

@media (max-width: 850px) {
  .studio-hero { min-height: 82svh; }
  .studio-hero::after { background: linear-gradient(0deg, rgb(10 10 9 / .92) 0%, rgb(10 10 9 / .24) 76%); }
  .page-studio .studio-hero h1 { font-size: clamp(46px, 12.4vw, 68px); }
  .studio-actions { align-items: flex-start; flex-direction: column; }
  .studio-facts { grid-template-columns: 1fr; }
  .studio-facts > div, .studio-facts > div + div { padding: 14px 0; border-right: 0; border-bottom: 1px solid rgb(255 255 255 / .16); border-left: 0; }
  .studio-intro__grid, .studio-capabilities__head, .studio-visit__grid { grid-template-columns: 1fr; gap: 30px; }
  .studio-intro__copy { padding-top: 0; }
  .studio-gallery { grid-template-columns: 1fr 1fr; grid-template-rows: 68vw 58vw; gap: 5px; padding: 5px; }
  .studio-gallery figure:first-child { grid-column: 1 / 3; grid-row: auto; }
  .studio-capabilities__head > p { margin-top: 10px; }
  .studio-capabilities__grid { grid-template-columns: 1fr; gap: 34px; }
  .studio-plan { grid-template-columns: 1fr; min-height: 0; }
  .studio-plan__image { padding: 50px 25px; }
  .studio-cta__inner { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) {
  .studio-gallery img, .studio-btn { transition: none; }
}

/* ---------------------------------------------------------------- Studio Hire: booking, gallery, plan, equipment and map (D54) */
.page-studio-hire { --hire-ink: #181817; --hire-paper: #f1eee8; --hire-muted: #65615b; color: var(--hire-ink); background: var(--hire-paper); }
.page-studio-hire *, .page-studio-hire *::before, .page-studio-hire *::after { box-sizing: border-box; }
.hire-wrap { width: min(1380px, calc(100% - 2 * clamp(24px, 5vw, 84px))); margin-inline: auto; }
.hire-label { margin: 0 0 20px; color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .17em; text-transform: uppercase; }
.page-studio-hire h2 { margin: 0; color: var(--hire-ink); font: 300 clamp(46px, 5.4vw, 82px)/1 var(--f-head); letter-spacing: -.045em; }
.hire-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 54px; padding: 0 25px; border: 1px solid rgb(255 255 255 / .62); border-radius: 2px; color: #fff; font-size: 14px; font-weight: 700; text-decoration: none; transition: transform .2s ease; }
.hire-btn:hover, .hire-btn:focus-visible { color: #fff; transform: translateY(-2px); }
.hire-btn--solid, .hire-btn--solid:hover, .hire-btn--solid:focus-visible { color: #171717; border-color: #fff; background: #fff; }

.hire-hero { position: relative; display: flex; align-items: flex-end; min-height: calc(100svh - var(--header-h, 120px)); overflow: hidden; color: #fff; background: #171716; }
.hire-hero::after { position: absolute; z-index: 1; inset: 0; content: ''; background: linear-gradient(90deg, rgb(8 8 8 / .85), rgb(8 8 8 / .48) 48%, rgb(8 8 8 / .08) 78%), linear-gradient(0deg, rgb(8 8 8 / .72), transparent 52%); }
.hire-hero__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hire-hero__body { position: relative; z-index: 2; padding-top: clamp(82px, 10vw, 150px); padding-bottom: clamp(58px, 7vw, 96px); }
.hire-hero .hire-label { color: #dca78f; }
.page-studio-hire .hire-hero h1 { max-width: 900px; margin: 0; color: #fff; font: 300 clamp(62px, 7.4vw, 116px)/.9 var(--f-head); letter-spacing: -.055em; }
.hire-hero__intro { max-width: 680px; margin: 28px 0 0; color: rgb(255 255 255 / .8); font-size: clamp(18px, 1.5vw, 23px); line-height: 1.58; }
.hire-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 35px; }
.hire-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 900px; margin-top: 55px; border-top: 1px solid rgb(255 255 255 / .28); }
.hire-facts div { padding: 20px 25px 0 0; }
.hire-facts div + div { padding-left: 25px; border-left: 1px solid rgb(255 255 255 / .22); }
.hire-facts strong { display: block; color: #fff; font-size: 18px; }
.hire-facts span { display: block; margin-top: 5px; color: rgb(255 255 255 / .56); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }

.hire-intro { padding: clamp(85px, 10vw, 145px) 0; }
.hire-intro__grid { display: grid; grid-template-columns: 1fr minmax(330px, .48fr); gap: clamp(60px, 10vw, 150px); align-items: start; }
.hire-lead { margin: 28px 0 0; color: var(--hire-muted); font-size: clamp(18px, 1.5vw, 22px); line-height: 1.7; }
.hire-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 25px; margin-top: 58px; }
.hire-steps article { padding-top: 18px; border-top: 1px solid #c5beb3; }
.hire-steps span { color: #873949; font-size: 12px; font-weight: 700; }
.page-studio-hire .hire-steps h3 { margin: 21px 0 10px; font-size: 19px; }
.hire-steps p { margin: 0; color: var(--hire-muted); font-size: 15px; line-height: 1.65; }
.hire-book { position: sticky; top: calc(var(--header-h, 100px) + 28px); padding: 34px 30px; border-top: 3px solid #743149; background: #fff; box-shadow: 0 24px 70px rgb(42 34 25 / .12); }
.hire-rate { margin: 0; font: 300 54px/1 var(--f-head); }
.hire-rate small { color: var(--hire-muted); font: 400 15px/1 var(--f-body); }
.hire-book ul { margin: 28px 0; padding: 0; list-style: none; }
.hire-book li { position: relative; margin: 12px 0; padding-left: 22px; color: #57534e; font-size: 14px; }
.hire-book li::before { position: absolute; left: 0; color: #3c8d82; content: '✓'; }
.hire-book .hire-btn { width: 100%; border: 0; background: var(--lens-flare); }
.hire-book > p:last-child { margin: 18px 0 0; font-size: 13px; text-align: center; }
.hire-book > p:last-child a { color: var(--hire-ink); text-underline-offset: 4px; }

.hire-gallery { padding: clamp(88px, 9vw, 135px) 0 8px; }
.hire-section-head { display: grid; grid-template-columns: 1fr .7fr; gap: 70px; align-items: end; margin-bottom: 58px; }
.hire-section-head > p { margin: 0 0 5px; color: var(--hire-muted); font-size: 18px; line-height: 1.65; }
.hire-gallery__grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-template-rows: repeat(2, minmax(280px, 30vw)); gap: 8px; padding: 8px; background: #171716; }
.hire-gallery figure { position: relative; margin: 0; overflow: hidden; background: #222; }
.hire-gallery figure:first-child { grid-column: span 2; grid-row: span 2; }
.hire-gallery figure:nth-child(4) { grid-column: span 2; }
.hire-gallery img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; }
.hire-gallery figure:hover img { transform: scale(1.018); }
.hire-gallery figcaption { position: absolute; right: 16px; bottom: 14px; padding: 6px 8px; color: rgb(255 255 255 / .8); background: rgb(0 0 0 / .65); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; }

.hire-floorplan { display: grid; grid-template-columns: .92fr 1.08fr; min-height: 720px; background: #e8e3da; }
.hire-floorplan__image { display: flex; align-items: center; justify-content: center; padding: clamp(40px, 6vw, 100px); background: #faf9f6; }
.hire-floorplan__image img { display: block; width: min(100%, 680px); height: auto; mix-blend-mode: multiply; }
.hire-floorplan__copy { display: flex; align-items: center; padding: clamp(60px, 8vw, 135px); }
.hire-floorplan__copy > div { max-width: 590px; }
.hire-floorplan__copy > div > p:not(.hire-label) { margin: 28px 0 0; color: var(--hire-muted); font-size: 18px; line-height: 1.7; }
.hire-floorplan__copy .hire-floorplan__note { font-size: 15px; font-weight: 700; }
.hire-floorplan__copy a { display: inline-block; margin-top: 27px; color: var(--hire-ink); font-weight: 700; text-underline-offset: 5px; }

.hire-equipment { padding: clamp(88px, 10vw, 145px) 0; color: #fff; background: #191918; }
.hire-equipment .hire-section-head .hire-label { color: #dca78f; }
.page-studio-hire .hire-equipment h2 { color: #fff; }
.hire-equipment .hire-section-head > p { color: rgb(255 255 255 / .6); }
.hire-equipment__group { border-top: 1px solid rgb(255 255 255 / .25); }
.hire-equipment__group:last-child { border-bottom: 1px solid rgb(255 255 255 / .25); }
.hire-equipment__group > summary { display: grid; grid-template-columns: 1fr auto 28px; gap: 24px; align-items: center; padding: 27px 0; cursor: pointer; list-style: none; }
.hire-equipment__group > summary::-webkit-details-marker, .hire-specs > summary::-webkit-details-marker { display: none; }
.hire-equipment__group > summary span { font-size: clamp(23px, 2vw, 31px); }
.hire-equipment__group > summary em { color: rgb(255 255 255 / .5); font-size: 12px; font-style: normal; letter-spacing: .1em; text-transform: uppercase; }
.hire-equipment__group > summary b { color: #dca78f; font-size: 24px; font-weight: 300; transition: transform .2s; }
.hire-equipment__group[open] > summary b { transform: rotate(45deg); }
.hire-equipment__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; padding: 4px 0 36px; }
.hire-equipment-card { min-width: 0; overflow: hidden; border: 1px solid rgb(255 255 255 / .13); background: #242423; }
.hire-equipment-card__image { aspect-ratio: 1.18 / 1; overflow: hidden; background: #eee; }
.hire-equipment-card__image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.hire-equipment-card:hover img { transform: scale(1.025); }
.hire-equipment-card__body { padding: 19px; }
.page-studio-hire .hire-equipment-card h3 { min-height: 42px; margin: 0; color: #fff; font-size: 16px; line-height: 1.35; }
.hire-equipment-card h3 span { color: #e1a88f; }
.hire-specs { margin-top: 15px; border-top: 1px solid rgb(255 255 255 / .14); }
.hire-specs > summary { display: flex; justify-content: space-between; padding-top: 12px; color: #dca78f; cursor: pointer; font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; list-style: none; }
.hire-specs > summary::after { content: '+'; font-size: 17px; }
.hire-specs[open] > summary::after { content: '−'; }
.hire-specs ul { margin: 0; padding: 12px 0 0; color: rgb(255 255 255 / .55); font-size: 11px; line-height: 1.55; list-style: none; }
.hire-specs li { margin: 3px 0; }
.hire-specs strong { color: rgb(255 255 255 / .8); }
.hire-specs p { margin: 12px 0 0; color: rgb(255 255 255 / .58); font-size: 12px; }

.hire-conditions { padding: clamp(90px, 10vw, 145px) 0; }
.hire-conditions__grid { display: grid; grid-template-columns: .75fr 1.25fr; gap: clamp(60px, 10vw, 155px); align-items: start; }
.hire-conditions__intro { position: sticky; top: calc(var(--header-h, 100px) + 30px); }
.hire-conditions__intro > p:last-child { margin: 30px 0 0; color: var(--hire-muted); font-size: 18px; line-height: 1.7; }
.hire-term-list { border-top: 1px solid #bdb6ab; }
.hire-term-list article { display: grid; grid-template-columns: 90px 1fr; gap: 20px; padding: 28px 0; border-bottom: 1px solid #bdb6ab; }
.hire-term-list article > span { padding-top: 3px; color: #873949; font-size: 11px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.page-studio-hire .hire-term-list h3 { margin: 0 0 8px; font-size: 20px; }
.hire-term-list p { margin: 0; color: var(--hire-muted); font-size: 15px; line-height: 1.65; }
.hire-rules-note { margin: 34px 0 0; color: var(--hire-muted); font-size: 15px; }
.hire-rules-note a { color: var(--hire-ink); font-weight: 700; text-underline-offset: 5px; }

.hire-location { display: grid; grid-template-columns: .72fr 1.28fr; min-height: 650px; background: #e8e3da; }
.hire-location__copy { display: flex; align-items: center; padding: clamp(60px, 7vw, 115px); }
.hire-location__copy > div { max-width: 540px; }
.hire-location address { margin: 32px 0 0; padding-top: 25px; border-top: 1px solid #bdb6ab; color: #504d48; font-size: 18px; font-style: normal; line-height: 1.65; }
.hire-location__copy > div > p:not(.hire-label) { color: var(--hire-muted); line-height: 1.65; }
.hire-location__copy a { display: inline-block; margin-top: 23px; color: var(--hire-ink); font-weight: 700; text-underline-offset: 5px; }
.hire-location__map { display: flex; min-height: 650px; padding: 18px; background: #d7d4cc; }
.hire-location__map .embed { width: 100%; min-height: 100%; margin: 0; border-radius: 0; }
.hire-location__map .embed__notice { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 100%; padding: 45px; text-align: center; }
.hire-location__map .embed iframe { width: 100%; height: 100%; min-height: 614px; border: 0; }

.hire-cta { padding: clamp(74px, 8vw, 120px) 0; color: #fff; }
.hire-cta__inner { display: flex; align-items: end; justify-content: space-between; gap: 50px; }
.page-studio-hire .hire-cta h2 { max-width: 930px; color: #fff; }
.hire-cta .hire-btn { flex: none; }
.hire-mobile-book { display: none; }

@media (max-width: 1050px) { .hire-equipment__grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 900px) {
  .hire-intro__grid, .hire-conditions__grid { grid-template-columns: 1fr; }
  .hire-book, .hire-conditions__intro { position: relative; top: auto; }
  .hire-equipment__grid { grid-template-columns: repeat(2, 1fr); }
  .hire-floorplan { grid-template-columns: 1fr; min-height: 0; }
}
@media (max-width: 700px) {
  body:has(.page-studio-hire) { padding-bottom: 70px; }
  .hire-hero { min-height: 86svh; }
  .hire-hero::after { background: linear-gradient(0deg, rgb(8 8 8 / .93), rgb(8 8 8 / .22) 78%); }
  .page-studio-hire .hire-hero h1 { font-size: clamp(48px, 13vw, 66px); }
  .hire-actions { align-items: flex-start; flex-direction: column; }
  .hire-facts { grid-template-columns: 1fr; }
  .hire-facts div, .hire-facts div + div { padding: 14px 0; border-bottom: 1px solid rgb(255 255 255 / .16); border-left: 0; }
  .hire-steps, .hire-section-head { grid-template-columns: 1fr; gap: 28px; }
  .hire-gallery__grid { grid-template-columns: 1fr 1fr; grid-template-rows: 72vw repeat(2, 55vw); gap: 5px; padding: 5px; }
  .hire-gallery figure:first-child { grid-column: span 2; grid-row: auto; }
  .hire-gallery figure:nth-child(4) { grid-column: span 2; }
  .hire-equipment__group > summary { grid-template-columns: 1fr 24px; }
  .hire-equipment__group > summary em { display: none; }
  .hire-location { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  .hire-location__copy, .hire-location__map { min-width: 0; }
  .hire-location__copy { padding: 60px clamp(24px, 7vw, 48px); }
  .hire-location__map { min-height: 480px; }
  .hire-location__map .embed__notice { min-width: 0; padding: 32px 20px; }
  .hire-location__map .embed__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }
  .hire-location__map .embed__btn { margin-right: 0; }
  .hire-location__map .embed iframe { min-height: 444px; }
  .hire-cta__inner { align-items: flex-start; flex-direction: column; }
  .hire-mobile-book { position: fixed; z-index: 9999; right: 10px; bottom: 10px; left: 10px; display: flex; align-items: center; justify-content: space-between; min-height: 58px; padding: 0 19px; border-radius: 4px; color: #fff; background: #171717; box-shadow: 0 12px 35px rgb(0 0 0 / .28); font-size: 13px; text-decoration: none; }
  .hire-mobile-book:hover { color: #fff; }
}
@media (max-width: 520px) {
  .hire-equipment__grid { grid-template-columns: 1fr; }
  .hire-term-list article { grid-template-columns: 64px 1fr; }
}
@media (prefers-reduced-motion: reduce) { .hire-gallery img, .hire-equipment-card img, .hire-btn { transition: none; } }

/* Studio Hire Rules — editorial, plain-language companion to the dedicated hire page. */
.page-hire-rules { --hire-ink: #181817; --hire-paper: #f1eee8; --hire-muted: #65615b; color: var(--hire-ink); background: var(--hire-paper); }
.page-hire-rules *, .page-hire-rules *::before, .page-hire-rules *::after { box-sizing: border-box; }
.page-hire-rules h2 { margin: 0; color: var(--hire-ink); font: 300 clamp(45px, 5vw, 78px)/1.02 var(--f-head); letter-spacing: -.045em; }
.rules-confirmation { padding: clamp(34px, 4vw, 58px) 0; color: #fff; background: #173d38; }
.rules-confirmation > div { display: grid; grid-template-columns: 64px minmax(0, 1fr); gap: clamp(22px, 3vw, 42px); align-items: center; }
.rules-confirmation__icon { display: grid; place-items: center; width: 58px; height: 58px; border: 1px solid rgb(255 255 255 / .42); border-radius: 50%; color: #fff; font-size: 27px; }
.rules-confirmation .hire-label { margin-bottom: 9px; color: #b9ddd3; }
.page-hire-rules .rules-confirmation h2 { color: #fff; font-size: clamp(31px, 3vw, 48px); }
.rules-confirmation p:last-child { max-width: 780px; margin: 12px 0 0; color: rgb(255 255 255 / .72); font-size: 16px; line-height: 1.65; }
.rules-hero { position: relative; display: flex; min-height: calc(92svh - var(--header-h, 120px)); overflow: hidden; color: #fff; background: #171716; }
.rules-hero::after { position: absolute; z-index: 1; inset: 0; content: ''; background: linear-gradient(90deg, rgb(8 8 8 / .88), rgb(8 8 8 / .48) 52%, rgb(8 8 8 / .08) 84%), linear-gradient(0deg, rgb(8 8 8 / .84), transparent 54%); }
.rules-hero__image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.rules-hero__inner { position: relative; z-index: 2; align-self: center; padding-top: clamp(80px, 10vw, 145px); padding-bottom: 185px; }
.rules-hero .hire-label { color: #e0a992; }
.page-hire-rules .rules-hero h1 { max-width: 1000px; margin: 0; color: #fff; font: 300 clamp(61px, 7.2vw, 112px)/.91 var(--f-head); letter-spacing: -.055em; }
.rules-hero__intro { max-width: 700px; margin: 30px 0 0; color: rgb(255 255 255 / .8); font-size: clamp(18px, 1.45vw, 23px); line-height: 1.6; }
.rules-hero__actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 36px; }
.rules-facts { position: absolute; z-index: 2; right: 0; bottom: 0; left: 0; display: grid; grid-template-columns: repeat(3, 1fr); border-top: 1px solid rgb(255 255 255 / .28); }
.rules-facts div { padding: 26px 28px 30px 0; }
.rules-facts div + div { padding-left: 28px; border-left: 1px solid rgb(255 255 255 / .22); }
.rules-facts strong, .rules-facts span { display: block; }
.rules-facts strong { color: #fff; font-size: 18px; }
.rules-facts span { margin-top: 6px; color: rgb(255 255 255 / .58); font-size: 11px; letter-spacing: .1em; text-transform: uppercase; }

.rules-intro { padding: clamp(90px, 11vw, 155px) 0; }
.rules-intro__grid { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(60px, 10vw, 150px); align-items: start; }
.rules-intro__copy > p { margin: 39px 0 0; color: var(--hire-muted); font-size: 19px; line-height: 1.75; }
.rules-intro__copy aside { display: grid; gap: 8px; margin-top: 45px; padding: 25px 0 0; border-top: 1px solid #bdb6ab; }
.rules-intro__copy aside strong { color: #873949; font-size: 12px; letter-spacing: .13em; text-transform: uppercase; }
.rules-intro__copy aside span { color: #4f4c47; font-size: 15px; line-height: 1.65; }

.rules-jump { position: sticky; z-index: 10; top: var(--header-h, 100px); border-top: 1px solid #c9c3b8; border-bottom: 1px solid #c9c3b8; background: rgb(241 238 232 / .94); backdrop-filter: blur(12px); }
.rules-jump .hire-wrap { display: flex; align-items: stretch; }
.rules-jump span { align-self: center; margin-right: auto; color: #77716a; font-size: 10px; font-weight: 750; letter-spacing: .13em; text-transform: uppercase; }
.rules-jump a { display: flex; align-items: center; gap: 12px; min-height: 64px; padding: 0 clamp(18px, 2.5vw, 38px); border-left: 1px solid #c9c3b8; color: #302e2b; font-size: 13px; font-weight: 700; text-decoration: none; }
.rules-jump a:hover { color: #873949; background: #e7e2d9; }
.rules-jump b { color: #873949; font-size: 10px; letter-spacing: .1em; }

.rules-group { scroll-margin-top: calc(var(--header-h, 100px) + 64px); padding: clamp(88px, 10vw, 145px) 0; }
.rules-group--dark { color: #fff; background: #1b1b1a; }
.rules-group__head { display: grid; grid-template-columns: .55fr 1fr .8fr; gap: clamp(35px, 6vw, 95px); align-items: end; padding-bottom: 55px; border-bottom: 1px solid #bbb4a9; }
.rules-group--dark .rules-group__head { border-color: #464540; }
.rules-group__head > p { margin: 0; color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .15em; text-transform: uppercase; }
.rules-group--dark .rules-group__head > p { color: #dfa98f; }
.rules-group__head > p span { display: block; margin-bottom: 13px; color: #8f8981; font: 300 38px/1 var(--f-head); letter-spacing: -.02em; }
.rules-group--dark .rules-group__head h2 { color: #fff; }
.rules-group__head > div { color: var(--hire-muted); font-size: 17px; line-height: 1.7; }
.rules-group--dark .rules-group__head > div { color: #aaa79f; }
.rules-list { border-bottom: 1px solid #bbb4a9; }
.rules-group--dark .rules-list { border-color: #464540; }
.rule-row { display: grid; grid-template-columns: 70px minmax(170px, 260px) minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); align-items: center; padding: 38px 0; border-top: 1px solid #c9c2b8; }
.rule-row:first-child { border-top: 0; }
.rules-group--dark .rule-row { border-color: #464540; }
.rule-row__number { align-self: start; padding-top: 6px; color: #8c857c; font-size: 11px; font-weight: 750; letter-spacing: .15em; }
.rule-row figure { aspect-ratio: 1; margin: 0; overflow: visible; background: transparent; }
.rule-row img { display: block; width: 100%; height: 100%; object-fit: contain; background: transparent; transition: transform .5s ease; }
.rule-row:hover img { transform: scale(1.025); }
.rule-row__copy { max-width: 720px; padding-right: clamp(0px, 4vw, 60px); }
.rule-row__copy h3 { margin: 0 0 15px; color: var(--hire-ink); font: 400 clamp(25px, 2.4vw, 38px)/1.12 var(--f-head); letter-spacing: -.025em; }
.rules-group--dark .rule-row__copy h3 { color: #fff; }
.rule-row__copy p { margin: 0; color: var(--hire-muted); font-size: 16px; line-height: 1.75; }
.rules-group--dark .rule-row__copy p { color: #aaa79f; }

.rules-question { padding: clamp(75px, 8vw, 115px) 0; background: #e4dfd6; }
.rules-question__inner { display: flex; align-items: end; justify-content: space-between; gap: 55px; }
.rules-question h2 { max-width: 920px; font-size: clamp(38px, 4.3vw, 65px); }
.rules-question .hire-btn { flex: none; color: var(--hire-ink); border-color: #77716a; }
.rules-question .hire-btn:hover { color: var(--hire-ink); }

@media (max-width: 900px) {
  .rules-intro__grid, .rules-group__head { grid-template-columns: 1fr; gap: 28px; }
  .rules-intro__copy > p { margin-top: 0; }
  .rules-group__head > div { max-width: 620px; }
  .rule-row { grid-template-columns: 48px minmax(140px, 220px) 1fr; gap: 28px; }
}
@media (max-width: 700px) {
  .rules-confirmation > div { grid-template-columns: 46px minmax(0, 1fr); gap: 17px; }
  .rules-confirmation__icon { width: 44px; height: 44px; font-size: 21px; }
  .page-hire-rules .rules-confirmation h2 { font-size: 29px; }
  .rules-hero { min-height: 86svh; }
  .rules-hero::after { background: linear-gradient(0deg, rgb(8 8 8 / .94), rgb(8 8 8 / .23) 82%); }
  .rules-hero__inner { align-self: flex-end; padding-top: 100px; padding-bottom: 245px; }
  .page-hire-rules .rules-hero h1 { font-size: clamp(49px, 13vw, 66px); }
  .rules-hero__actions { align-items: flex-start; flex-direction: column; }
  .rules-facts { grid-template-columns: 1fr; }
  .rules-facts div, .rules-facts div + div { padding: 11px 0; border-bottom: 1px solid rgb(255 255 255 / .15); border-left: 0; }
  .rules-facts span { margin-top: 2px; }
  .rules-jump { position: relative; top: auto; }
  .rules-jump .hire-wrap { width: 100%; overflow-x: auto; }
  .rules-jump span { display: none; }
  .rules-jump a { flex: 0 0 auto; min-height: 57px; }
  .rules-group { scroll-margin-top: var(--header-h, 70px); }
  .rule-row { grid-template-columns: 38px 94px minmax(0, 1fr); gap: 15px; align-items: start; padding: 28px 0; }
  .rule-row__copy h3 { font-size: 23px; }
  .rule-row__copy p { font-size: 14px; line-height: 1.65; }
  .rules-question__inner { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 470px) {
  .rule-row { grid-template-columns: 28px 72px minmax(0, 1fr); gap: 11px; }
  .rule-row__number { font-size: 9px; }
  .rule-row__copy h3 { margin-bottom: 10px; font-size: 20px; }
}
@media (prefers-reduced-motion: reduce) { .rule-row img { transition: none; } }
/* rules page: the booking just paid (shown after Studio Hire checkout) */
.rules-confirmation > div { align-items: start; }
.rules-confirmation__facts { display: flex; flex-wrap: wrap; gap: 10px 34px; margin: 22px 0 0; padding: 18px 0 0; border-top: 1px solid rgb(255 255 255 / .18); }
.rules-confirmation__facts dt { color: #b9ddd3; font-size: 11px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.rules-confirmation__facts dd { margin: 4px 0 0; color: #fff; font-size: 17px; }
.rules-confirmation p.rules-confirmation__actions { margin: 18px 0 0; }
.rules-confirmation__actions a { color: #fff; text-underline-offset: 3px; }
/* ---------------------------------------------------------------- About – editorial profile (design about-profile, app/views/about-profile.php) */
.page-about-profile { --about-ink: #191918; --about-paper: #f0ede6; --about-muted: #625f59; color: var(--about-ink); background: var(--about-paper); }
.page-about-profile *, .page-about-profile *::before, .page-about-profile *::after { box-sizing: border-box; }
.about-wrap { width: min(1360px, calc(100% - 2 * clamp(24px, 5vw, 84px))); margin-inline: auto; }
.about-label { margin: 0 0 21px; color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .17em; text-transform: uppercase; }
.page-about-profile h2 { margin: 0; color: var(--about-ink); font: 300 clamp(46px, 5.2vw, 80px)/1 var(--f-head); letter-spacing: -.047em; }

.about-hero { display: grid; grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr); min-height: calc(100svh - var(--header-h, 120px)); background: #171716; }
.about-hero__copy { display: flex; align-items: center; color: #fff; }
.about-hero__copy .about-wrap { width: min(650px, calc(100% - 2 * clamp(28px, 7vw, 100px))); padding: clamp(75px, 9vw, 140px) 0; }
.about-hero .about-label { color: #e4af97; }
.page-about-profile .about-hero h1 { max-width: 760px; margin: 0; color: #fff; font: 300 clamp(62px, 6.4vw, 105px)/.91 var(--f-head); letter-spacing: -.055em; }
.about-hero__intro { max-width: 620px; margin: 31px 0 0; color: rgb(255 255 255 / .75); font-size: clamp(18px, 1.35vw, 22px); line-height: 1.65; }
.about-facts { display: grid; grid-template-columns: 1fr 1fr; margin-top: 54px; border-top: 1px solid rgb(255 255 255 / .28); }
.about-facts div { padding: 21px 24px 0 0; }
.about-facts div + div { padding-left: 24px; border-left: 1px solid rgb(255 255 255 / .22); }
.about-facts strong, .about-facts span { display: block; }
.about-facts strong { color: #fff; font-size: 17px; }
.about-facts span { margin-top: 5px; color: rgb(255 255 255 / .52); font-size: 10px; letter-spacing: .11em; text-transform: uppercase; }
.about-hero__portrait { min-height: 650px; margin: 0; overflow: hidden; background: #2a2927; }
.about-hero__portrait img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center; }

.about-story { padding: clamp(95px, 11vw, 165px) 0; }
.about-story__grid { display: grid; grid-template-columns: 1fr .8fr; gap: clamp(60px, 10vw, 160px); align-items: start; }
.about-story__copy { padding-top: 42px; }
.about-story__copy > p { margin: 0 0 24px; color: var(--about-muted); font-size: clamp(17px, 1.25vw, 20px); line-height: 1.77; }
.about-story blockquote { margin: 49px 0 0; padding: 28px 0 0; border-top: 1px solid #bbb4a9; color: #393633; font: 300 clamp(25px, 2.4vw, 37px)/1.35 var(--f-head); }

.about-approach { padding: clamp(95px, 10vw, 150px) 0; color: #fff; background: #191918; }
.about-approach header { display: grid; grid-template-columns: 1fr .72fr; gap: 70px; align-items: end; }
.about-approach .about-label { color: #dfa78e; }
.page-about-profile .about-approach h2 { color: #fff; }
.about-approach header > p { max-width: 560px; margin: 0 0 5px; color: rgb(255 255 255 / .58); font-size: 18px; line-height: 1.7; }
.about-approach__points { display: grid; grid-template-columns: repeat(3, 1fr); gap: 35px; margin-top: 76px; }
.about-approach__points article { padding-top: 20px; border-top: 1px solid rgb(255 255 255 / .26); }
.about-approach__points span { color: #dfa78e; font-size: 11px; font-weight: 750; letter-spacing: .14em; }
.about-approach__points h3 { margin: 22px 0 12px; color: #fff; font-size: 20px; }
.about-approach__points p { margin: 0; color: rgb(255 255 255 / .56); font-size: 15px; line-height: 1.7; }

.about-work { padding: clamp(92px, 10vw, 150px) 0 10px; }
.about-work__head { display: grid; grid-template-columns: 1fr .72fr; gap: 70px; align-items: end; margin-bottom: 58px; }
.about-work__head > p { margin: 0 0 5px; color: var(--about-muted); font-size: 18px; line-height: 1.65; }
.about-work__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 9px; padding: 9px; background: #191918; }
.about-work figure { position: relative; aspect-ratio: 1; margin: 0; overflow: hidden; background: #282725; }
.about-work figure a { display: block; width: 100%; height: 100%; color: #fff; }
.about-work img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .65s ease; }
.about-work figure:hover img { transform: scale(1.022); }
.about-work figcaption { position: absolute; right: 18px; bottom: 17px; left: 18px; display: flex; justify-content: space-between; padding-top: 45px; color: #fff; background: linear-gradient(0deg, rgb(0 0 0 / .72), transparent); font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }

.about-contact { padding: clamp(90px, 10vw, 145px) 0; background: #e2ddd4; }
.about-contact__grid { display: grid; grid-template-columns: 1fr .78fr; gap: clamp(60px, 10vw, 150px); align-items: start; }
.about-contact__grid > div:last-child > p { margin: 40px 0 0; color: var(--about-muted); font-size: 18px; line-height: 1.72; }
.about-contact__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.about-btn { display: inline-flex; align-items: center; justify-content: center; min-height: 53px; padding: 0 24px; border: 1px solid #6e6962; border-radius: 2px; color: var(--about-ink); font-size: 14px; font-weight: 700; text-decoration: none; transition: transform .2s ease; }
.about-btn:hover, .about-btn:focus-visible { color: var(--about-ink); transform: translateY(-2px); }
.about-btn--solid, .about-btn--solid:hover, .about-btn--solid:focus-visible { color: #fff; border-color: #1b1b1a; background: #1b1b1a; }
.about-social { display: flex; gap: 9px; margin: 29px 0 0; padding: 0; list-style: none; }
.about-social a { display: grid; place-items: center; width: 41px; height: 41px; border: 1px solid #aaa39a; border-radius: 50%; color: #282624; }
.about-social a:hover, .about-social a:focus-visible { color: #fff; border-color: #873949; background: #873949; }
.about-social--hero { margin-top: 24px; }
.about-social--hero a { border-color: rgb(255 255 255 / .42); color: #fff; }
.about-social--hero a:hover, .about-social--hero a:focus-visible { border-color: #fff; background: rgb(255 255 255 / .14); }

/* FAQ — structured reference page */
.faq-page { background: #f1eee8; color: #242321; }
.faq-wrap { width: min(1360px, calc(100% - 2 * clamp(24px, 6vw, 100px))); margin-inline: auto; }
.faq-label { margin: 0 0 22px; color: #8b3d4f; font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; }
.faq-hero { padding: clamp(80px, 9vw, 145px) 0 clamp(70px, 8vw, 125px); color: #fff; }
.faq-hero__grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(330px, .75fr); gap: clamp(60px, 9vw, 150px); align-items: end; }
.faq-hero .faq-label { color: #e4af97; }
.faq-hero h1 { max-width: 850px; margin: 0; color: #fff; font: 300 clamp(64px, 7vw, 118px)/.92 var(--f-head); letter-spacing: -.055em; }
.faq-hero__intro { max-width: 680px; margin: 34px 0 0; color: rgb(255 255 255 / .75); font-size: clamp(18px, 1.35vw, 22px); line-height: 1.65; }
.faq-hero__nav { border-top: 1px solid rgb(255 255 255 / .28); }
.faq-hero__nav a { display: grid; grid-template-columns: 38px 1fr auto; gap: 14px; align-items: center; padding: 17px 0; border-bottom: 1px solid rgb(255 255 255 / .22); color: #fff; text-decoration: none; }
.faq-hero__nav a span { color: #e4af97; font-size: 11px; font-weight: 700; letter-spacing: .12em; }
.faq-hero__nav a svg { transition: transform .2s ease; }
.faq-hero__nav a:hover svg, .faq-hero__nav a:focus-visible svg { transform: translateX(5px); }
.faq-main { padding: clamp(85px, 10vw, 155px) 0; }
.faq-main__grid { display: grid; grid-template-columns: 250px minmax(0, 820px); gap: clamp(70px, 9vw, 150px); justify-content: center; align-items: start; }
.faq-index { position: sticky; top: calc(var(--header-h, 110px) + 34px); }
.faq-index nav { border-top: 1px solid #c9c2b8; }
.faq-index a { display: grid; grid-template-columns: 34px 1fr; gap: 12px; padding: 15px 0; border-bottom: 1px solid #d7d0c7; color: #393633; font-size: 14px; line-height: 1.35; text-decoration: none; }
.faq-index a span { color: #8b3d4f; font-size: 10px; font-weight: 700; letter-spacing: .12em; }
.faq-index a:hover, .faq-index a:focus-visible { color: #8b3d4f; }
.faq-groups.content { max-width: none; }
.faq-groups.content > h2 { max-width: none; margin: 0 0 28px; padding-top: 28px; color: #242321; font: 300 clamp(38px, 4vw, 59px)/1 var(--f-head); letter-spacing: -.04em; scroll-margin-top: calc(var(--header-h, 110px) + 28px); }
.faq-groups.content > h2:first-child { padding-top: 0; }
.faq-groups.content details.faq { max-width: none; margin: 0; padding: 0; border-top: 1px solid #c9c2b8; border-radius: 0; background: transparent; box-shadow: none; }
.faq-groups.content details.faq:last-of-type { margin-bottom: clamp(65px, 8vw, 110px); border-bottom: 1px solid #c9c2b8; }
.faq-groups.content details.faq summary { padding: 23px 64px 23px 0; font-size: clamp(17px, 1.35vw, 20px); font-weight: 600; line-height: 1.4; }
.faq-groups.content details.faq summary::after { right: 8px; }
.faq-groups.content details.faq[open] summary { margin-bottom: 0; border-bottom: 0; color: #8b3d4f; }
.faq-groups.content details.faq > :not(summary) { max-width: 680px; padding: 0 52px 0 0; color: #5b5651; font-size: 16px; line-height: 1.8; }
.faq-groups.content details.faq > :last-child { padding-bottom: 25px; }
.faq-contact { padding: clamp(75px, 9vw, 130px) 0; background: #1d1d1b; color: #fff; }
.faq-contact__grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(55px, 9vw, 145px); align-items: start; }
.faq-contact .faq-label { color: #e4af97; }
.faq-contact h2 { max-width: 700px; margin: 0; color: #fff; font: 300 clamp(48px, 5.2vw, 82px)/.98 var(--f-head); letter-spacing: -.045em; }
.faq-contact__grid > div:last-child > p { max-width: 560px; margin: 7px 0 30px; color: rgb(255 255 255 / .68); font-size: 18px; line-height: 1.7; }
.faq-contact__button { display: inline-flex; gap: 18px; align-items: center; padding: 15px 20px; border: 1px solid rgb(255 255 255 / .55); color: #fff; font-weight: 700; text-decoration: none; }
.faq-contact__button:hover, .faq-contact__button:focus-visible { border-color: #fff; background: #fff; color: #1d1d1b; }
@media (max-width: 900px) {
  .faq-hero__grid, .faq-contact__grid { grid-template-columns: 1fr; }
  .faq-hero__grid { gap: 55px; }
  .faq-main__grid { grid-template-columns: 1fr; gap: 0; }
  .faq-index { display: none; }
}
@media (max-width: 560px) {
  .faq-hero { padding-top: 65px; }
  .faq-hero h1 { font-size: clamp(52px, 15vw, 70px); }
  .faq-hero__nav a { grid-template-columns: 32px 1fr auto; }
  .faq-main { padding-block: 70px; }
  .faq-groups.content > h2 { font-size: 40px; }
  .faq-groups.content details.faq summary { padding-right: 44px; }
  .faq-groups.content details.faq > :not(summary) { padding-right: 18px; }
}

@media (max-width: 900px) {
  .about-hero { grid-template-columns: 1fr; }
  .about-hero__copy { min-height: 72svh; }
  .about-hero__portrait { min-height: 78vw; }
  .about-story__grid, .about-approach header, .about-work__head, .about-contact__grid { grid-template-columns: 1fr; gap: 30px; }
  .about-story__copy { padding-top: 0; }
  .about-approach__points { grid-template-columns: 1fr; gap: 34px; }
}
@media (max-width: 700px) {
  .page-about-profile .about-hero h1 { font-size: clamp(51px, 14vw, 68px); }
  .about-facts { grid-template-columns: 1fr; }
  .about-facts div, .about-facts div + div { padding: 13px 0; border-bottom: 1px solid rgb(255 255 255 / .15); border-left: 0; }
  .about-work__grid { grid-template-columns: 1fr; gap: 6px; padding: 6px; }
}
@media (prefers-reduced-motion: reduce) { .about-work img, .about-btn { transition: none; } }

/* ---------------------------------------------------------------- legal documents (partials/document.php) */
.page-doc { --doc-ink: #181817; --doc-paper: #f1eee8; --doc-muted: #65615b; --doc-line: #d6cfc4; color: var(--doc-ink); background: var(--doc-paper); }
.doc-wrap { width: min(1240px, calc(100% - 2 * clamp(20px, 5vw, 84px))); margin-inline: auto; }
.doc-label { margin: 0 0 18px; color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .17em; text-transform: uppercase; }
.doc-hero { padding: clamp(70px, 9vw, 130px) 0 clamp(44px, 5vw, 70px); color: #fff; background: #171716; position: relative; overflow: hidden; }
.doc-hero::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 4px; background: var(--lens-flare); }
.doc-hero .doc-label { color: #e0a992; }
.page-doc .doc-hero h1 { max-width: 980px; margin: 0; color: #fff; font: 300 clamp(44px, 6vw, 88px)/.98 var(--f-head); letter-spacing: -.045em; }
.doc-hero__intro { max-width: 720px; margin: 26px 0 0; color: rgb(255 255 255 / .78); font-size: clamp(17px, 1.4vw, 21px); line-height: 1.6; }
.doc-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 22px; margin: 34px 0 0; color: rgb(255 255 255 / .62); font-size: 14px; }
.doc-print { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border: 1px solid rgb(255 255 255 / .3); border-radius: 999px; background: none; color: #fff; font: inherit; cursor: pointer; }
.doc-print:hover, .doc-print:focus-visible { background: rgb(255 255 255 / .1); }

.doc-body { display: grid; grid-template-columns: 250px minmax(0, 760px); gap: clamp(30px, 5vw, 80px); padding: clamp(50px, 6vw, 90px) 0 clamp(60px, 7vw, 110px); justify-content: center; }
.doc-body--single { grid-template-columns: minmax(0, 820px); }
.doc-toc { position: relative; }
.doc-toc details { position: sticky; top: calc(var(--header-h, 70px) + 24px); }
.doc-toc summary { list-style: none; margin: 0 0 14px; color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .15em; text-transform: uppercase; cursor: default; }
.doc-toc summary::-webkit-details-marker { display: none; }
.doc-toc ol { margin: 0; padding: 0; list-style: none; counter-reset: doc; border-left: 1px solid var(--doc-line); }
.doc-toc li { counter-increment: doc; }
.doc-toc a { display: block; padding: 7px 0 7px 16px; margin-left: -1px; border-left: 2px solid transparent; color: var(--doc-muted); font-size: 14px; line-height: 1.4; text-decoration: none; }
.doc-toc a::before { content: counter(doc, decimal-leading-zero) "  "; color: #a59c90; font-size: 11px; font-weight: 700; margin-right: 4px; }
.doc-toc a:hover { color: var(--doc-ink); }
.doc-toc a.is-current { color: var(--doc-ink); font-weight: 600; border-left-color: #873949; }

.doc-text { color: #2d2b28; font-size: 17px; line-height: 1.75; }
.doc-text > :first-child { margin-top: 0; }
.doc-text p, .doc-text ul, .doc-text ol { margin: 0 0 1.1em; }
.doc-text h2 { margin: 2.2em 0 .7em; padding-top: 1.1em; border-top: 1px solid var(--doc-line); color: var(--doc-ink); font: 300 clamp(26px, 2.4vw, 34px)/1.15 var(--f-head); letter-spacing: -.02em; scroll-margin-top: calc(var(--header-h, 70px) + 20px); }
.doc-text > h2:first-child, .doc-text .legal > h2:first-child { margin-top: 0; padding-top: 0; border-top: 0; }
.doc-text h3 { margin: 1.8em 0 .5em; color: var(--doc-ink); font-size: 19px; font-weight: 700; line-height: 1.35; }
.doc-text h4 { margin: 1.4em 0 .4em; color: var(--doc-ink); font-size: 16px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.doc-text a { color: #873949; text-decoration: underline; text-underline-offset: 3px; }
.doc-text strong { color: var(--doc-ink); }
.doc-text ul li, .doc-text ol li { margin-bottom: .4em; }
.doc-text table { width: 100%; border-collapse: collapse; margin: 0 0 1.6em; font-size: 15px; background: #fff; border-radius: 10px; overflow: hidden; box-shadow: 0 1px 0 var(--doc-line); }
.doc-text th, .doc-text td { padding: 12px 16px; border-bottom: 1px solid #ece6dc; text-align: left; vertical-align: top; }
.doc-text th { background: #e9e3d9; color: var(--doc-ink); font-size: 13px; letter-spacing: .04em; text-transform: uppercase; }
.doc-text td h3 { margin: 0; font-size: 16px; }
.doc-text details.faq { margin: 0 0 10px; border: 1px solid var(--doc-line); border-radius: 10px; background: #fff; }
.doc-text details.faq summary { padding: 14px 18px; font-weight: 700; cursor: pointer; }
.doc-text details.faq > :not(summary) { padding: 0 18px; }
.doc-text details.faq[open] { padding-bottom: 6px; }
.doc-text figure { margin: 0 0 1.4em; } .doc-text img { max-width: 100%; height: auto; border-radius: 8px; }
.doc-text .actions { display: inline-block; margin: 0 10px 10px 0; }
.doc-text .btn { text-decoration: none; }
.doc-text .legal__updated { color: var(--doc-muted); font-size: 14px; }

.doc-related { padding: clamp(50px, 6vw, 80px) 0; border-top: 1px solid var(--doc-line); }
.doc-related__grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.doc-related__grid a { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 18px 20px; border-radius: 10px; background: #fff; color: var(--doc-ink); font-weight: 600; text-decoration: none; box-shadow: 0 1px 0 var(--doc-line); transition: transform .15s, box-shadow .15s; }
.doc-related__grid a:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgb(0 0 0 / .08); }
.doc-related__grid b { color: #873949; }
.doc-question { padding: clamp(60px, 7vw, 100px) 0; color: #fff; }
.doc-question__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; }
.page-doc .doc-question h2 { margin: 0; color: #fff; font: 300 clamp(32px, 3.6vw, 54px)/1.05 var(--f-head); letter-spacing: -.035em; }
.doc-btn { display: inline-flex; align-items: center; gap: 8px; padding: 14px 24px; border-radius: 999px; background: #fff; color: #111; font-weight: 700; text-decoration: none; }
.doc-btn:hover { color: #111; background: #f1eee8; }   /* keep the dark text – the general a:hover would make it light-on-light */

@media (max-width: 980px) {
  .doc-body { grid-template-columns: minmax(0, 1fr); gap: 24px; padding-top: 30px; }
  .doc-toc details { position: static; padding: 14px 18px; border: 1px solid var(--doc-line); border-radius: 10px; background: #fff; }
  .doc-toc summary { margin: 0; cursor: pointer; list-style: revert; }
  .doc-toc details[open] summary { margin-bottom: 10px; }
}
@media (max-width: 640px) { .doc-text { font-size: 16px; } .doc-text th, .doc-text td { padding: 10px 12px; } }
@media print {
  .site-header, .site-footer, .doc-toc, .doc-related, .doc-question, .doc-print, .consent, .back-to-top { display: none !important; }
  .page-doc, .doc-hero { background: #fff !important; color: #000 !important; }
  .page-doc .doc-hero h1, .doc-hero__intro, .doc-meta { color: #000 !important; }
  .doc-body { display: block; padding: 0; } .doc-hero { padding: 0 0 20px; } .doc-hero::after { display: none; }
}

/* extra-photos calculator (partials/extra-photos-calculator.php) */
.xpc { margin: 6px 0 1.2em; padding: 18px 20px; border-radius: 10px; background: #f7f4ef; border: 1px solid #e6dfd4; }
.xpc__fields { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.xpc label { display: grid; gap: 6px; margin: 0; font-size: 13px; font-weight: 700; color: #4a4741; }
.xpc select, .xpc input { width: 100%; height: 42px; padding: 0 12px; border: 1px solid #d6cfc4; border-radius: 8px; background: #fff; font: inherit; font-size: 16px; font-weight: 400; }
.xpc__result { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 14px 0 6px; }
.xpc__result div { padding: 10px 12px; border-radius: 8px; background: #fff; }
.xpc__result dt { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: #8a8378; }
.xpc__result dd { margin: 2px 0 0; font-size: 20px; font-weight: 700; color: #181817; }
.xpc__total { background: #181817 !important; } .xpc__total dt { color: #e0a992; } .xpc__total dd { color: #fff; }
.xpc__breakdown { margin: 4px 0 0 !important; font-size: 13px; color: #6b665e; }
@media (max-width: 560px) { .xpc__fields, .xpc__result { grid-template-columns: 1fr; } }

/* ---------------------------------------------------------------- section hubs (app/views/hub.php) */
.page-hub { --hub-ink: #181817; --hub-paper: #f1eee8; --hub-muted: #65615b; color: var(--hub-ink); background: var(--hub-paper); }
.hub-wrap { width: min(1380px, calc(100% - 2 * clamp(20px, 5vw, 84px))); margin-inline: auto; }
.hub-label { margin: 0 0 18px; color: #e0a992; font-size: 12px; font-weight: 750; letter-spacing: .17em; text-transform: uppercase; }
.hub-label--dark { color: #873949; }
.hub-hero { position: relative; display: flex; align-items: flex-end; min-height: calc(88svh - var(--header-h, 70px)); overflow: hidden; color: #fff; background: #171716; }
.hub-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hub-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgb(8 8 8 / .86), rgb(8 8 8 / .5) 55%, rgb(8 8 8 / .15) 85%), linear-gradient(0deg, rgb(8 8 8 / .85), rgb(8 8 8 / .45) 28%, transparent 55%); }
.hub-hero__body { position: relative; z-index: 1; padding: clamp(80px, 10vw, 140px) 0 clamp(36px, 4vw, 56px); }
.page-hub .hub-hero h1 { max-width: 1000px; margin: 0; color: #fff; font: 300 clamp(52px, 7vw, 108px)/.94 var(--f-head); letter-spacing: -.05em; }
.hub-hero__intro { max-width: 680px; margin: 26px 0 0; color: rgb(255 255 255 / .9); text-shadow: 0 1px 12px rgb(0 0 0 / .35); font-size: clamp(17px, 1.45vw, 22px); line-height: 1.6; }
.hub-actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.hub-btn { display: inline-flex; align-items: center; gap: 8px; padding: 14px 26px; border: 1px solid rgb(255 255 255 / .5); border-radius: 999px; color: #fff; font-weight: 700; text-decoration: none; }
.hub-btn:hover { background: rgb(255 255 255 / .1); }
.hub-btn--solid { background: #fff; color: #111; border-color: #fff; } .hub-btn--solid:hover { background: #f1eee8; color: #111; }
.hub-facts { display: flex; flex-wrap: wrap; gap: 0; margin-top: clamp(40px, 5vw, 70px); border-top: 1px solid rgb(255 255 255 / .35); text-shadow: 0 1px 10px rgb(0 0 0 / .4); }
.hub-facts div { padding: 20px 34px 4px 0; margin-right: 34px; }
.hub-facts div + div { padding-left: 34px; border-left: 1px solid rgb(255 255 255 / .2); }
.hub-facts strong, .hub-facts span { display: block; } .hub-facts strong { font-size: 18px; } .hub-facts span { color: rgb(255 255 255 / .82); font-size: 13px; margin-top: 2px; }

.hub-options { padding: clamp(80px, 9vw, 140px) 0; }
.hub-head { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 30px 60px; align-items: end; margin-bottom: clamp(36px, 4vw, 60px); }
.page-hub h2 { margin: 0; color: var(--hub-ink); font: 300 clamp(40px, 4.6vw, 70px)/1 var(--f-head); letter-spacing: -.045em; }
.hub-head > p { margin: 0; color: var(--hub-muted); font-size: 18px; line-height: 1.65; }
.hub-cards { display: grid; gap: 18px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.hub-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.hub-card { display: flex; flex-direction: column; overflow: hidden; border-radius: 14px; background: #fff; color: var(--hub-ink); text-decoration: none; box-shadow: 0 1px 0 #ddd5c9; transition: transform .2s, box-shadow .2s; }
.hub-card:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgb(0 0 0 / .12); }
.hub-card__img { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: #e6e0d6; }
.hub-card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.hub-card:hover .hub-card__img img { transform: scale(1.04); }
.hub-card__body { display: flex; flex-direction: column; flex: 1; padding: 22px 24px 20px; }
.hub-card__num { color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .14em; }
.hub-card__title { margin: 8px 0 8px; font: 400 clamp(24px, 2vw, 30px)/1.15 var(--f-head); letter-spacing: -.02em; }
.hub-card__text { color: var(--hub-muted); font-size: 15px; line-height: 1.6; }
.hub-card__foot { display: flex; align-items: center; justify-content: space-between; margin-top: auto; padding-top: 18px; border-top: 1px solid #eee8de; font-size: 14px; color: var(--hub-muted); }
.hub-card__foot strong { color: var(--hub-ink); font-size: 16px; }
.hub-card__foot b { font-size: 20px; color: #873949; transition: transform .2s; } .hub-card:hover .hub-card__foot b { transform: translateX(4px); }
.hub-card__body > span:not(.hub-card__foot) { display: block; }

.hub-how { padding: clamp(80px, 9vw, 130px) 0; background: #171716; color: #fff; }
.hub-how__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 40px clamp(40px, 7vw, 120px); align-items: start; }
.page-hub .hub-how h2 { color: #fff; }
.hub-how .hub-label--dark { color: #e0a992; }
.hub-text { margin-top: 28px; color: rgb(255 255 255 / .75); font-size: 17px; line-height: 1.75; }
.hub-text p { margin: 0 0 1em; } .hub-text a { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.hub-text h2, .hub-text h3 { color: #fff; font: 400 24px/1.2 var(--f-head); margin: 1.4em 0 .5em; }
.hub-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.hub-steps li { padding: 26px 0; border-top: 1px solid rgb(255 255 255 / .18); }
.hub-steps li:last-child { border-bottom: 1px solid rgb(255 255 255 / .18); }
.hub-steps span { color: #e0a992; font-size: 12px; font-weight: 750; letter-spacing: .14em; }
.hub-steps h3 { margin: 8px 0 6px; color: #fff; font: 400 26px/1.2 var(--f-head); }
.hub-steps p { margin: 0; color: rgb(255 255 255 / .7); font-size: 16px; line-height: 1.6; }

.hub-cta { padding: clamp(70px, 8vw, 120px) 0; color: #fff; }
.hub-cta__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 26px; }
.page-hub .hub-cta h2 { max-width: 880px; color: #fff; font-size: clamp(34px, 3.8vw, 58px); }

@media (max-width: 1000px) { .hub-cards, .hub-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .hub-head, .hub-how__grid { grid-template-columns: 1fr; } }
@media (max-width: 640px) {
  .hub-cards, .hub-cards--2 { grid-template-columns: 1fr; }
  .hub-facts div, .hub-facts div + div { padding: 16px 0 0; margin-right: 0; border-left: 0; width: 50%; }
  .hub-hero { min-height: auto; }
}
/* hub: sub-pages as full-width rows */
.hub-rows { margin-top: clamp(10px, 2vw, 30px); }
.hub-row { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); min-height: min(86svh, 860px); background: var(--hub-paper); color: var(--hub-ink); }
.hub-row--flip { grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); }
.hub-row--flip .hub-row__media { order: 2; }
.hub-row--dark { background: #171716; color: #fff; }
.hub-row__media { position: relative; display: grid; grid-template-rows: minmax(0, 1fr) auto; gap: 8px; padding: 8px; background: inherit; min-height: 420px; }
.hub-row__cover { display: block; overflow: hidden; border-radius: 4px; min-height: 0; }
.hub-row__cover img { width: 100%; height: 100%; object-fit: cover; transition: transform 1s ease; }
.hub-row:hover .hub-row__cover img { transform: scale(1.03); }
.hub-row__strip { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.hub-row__strip a { display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: 4px; }
.hub-row__strip img { width: 100%; height: 100%; object-fit: cover; }
.hub-row__body { display: flex; flex-direction: column; justify-content: center; padding: clamp(40px, 6vw, 110px) clamp(24px, 5vw, 96px); }
.hub-row__num { margin: 0 0 18px; color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .15em; text-transform: uppercase; }
.hub-row__num span { color: #6f675e; }
.hub-row--dark .hub-row__num { color: #e0a992; } .hub-row--dark .hub-row__num span { color: rgb(255 255 255 / .66); }
.page-hub .hub-row h3 { margin: 0; font: 300 clamp(44px, 5vw, 80px)/.98 var(--f-head); letter-spacing: -.045em; }
.hub-row h3 a { color: inherit; text-decoration: none; }
.hub-row__headline { margin: 16px 0 0; font: 400 clamp(20px, 1.7vw, 26px)/1.3 var(--f-head); color: #873949; }
.hub-row--dark .hub-row__headline { color: #e0a992; }
.hub-row__text { max-width: 560px; margin: 18px 0 0; color: var(--hub-muted); font-size: 17px; line-height: 1.7; }
.hub-row--dark .hub-row__text { color: rgb(255 255 255 / .72); }
.hub-row__facts { display: flex; flex-wrap: wrap; margin-top: 30px; border-top: 1px solid #d6cfc4; }
.hub-row--dark .hub-row__facts { border-top-color: rgb(255 255 255 / .2); }
.hub-row__facts div { padding: 16px 28px 0 0; margin-right: 28px; }
.hub-row__facts div + div { padding-left: 28px; border-left: 1px solid #d6cfc4; }
.hub-row--dark .hub-row__facts div + div { border-left-color: rgb(255 255 255 / .2); }
.hub-row__facts strong, .hub-row__facts span { display: block; } .hub-row__facts strong { font-size: 17px; }
.hub-row__facts span { margin-top: 2px; font-size: 13px; color: var(--hub-muted); } .hub-row--dark .hub-row__facts span { color: rgb(255 255 255 / .55); }
.hub-row__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 34px; }
.hub-row .hub-btn--solid { background: #181817; color: #fff; border-color: #181817; }
.hub-row .hub-btn--solid:hover { background: #2c2b29; color: #fff; }
.hub-row .hub-btn--line { color: var(--hub-ink); border-color: #7d756b; } .hub-row .hub-btn--line:hover { background: rgb(0 0 0 / .05); }
.hub-row--dark .hub-btn--solid { background: #fff; color: #111; border-color: #fff; }
.hub-row--dark .hub-btn--solid:hover { background: #f1eee8; color: #111; }
.hub-row--dark .hub-btn--line { color: #fff; border-color: rgb(255 255 255 / .5); } .hub-row--dark .hub-btn--line:hover { background: rgb(255 255 255 / .1); }
@media (max-width: 900px) {
  .hub-row, .hub-row--flip { grid-template-columns: 1fr; min-height: 0; }
  .hub-row--flip .hub-row__media { order: 0; }
  .hub-row__media { min-height: 0; } .hub-row__cover { aspect-ratio: 4 / 3; }
  .hub-row__body { padding: 34px 20px 50px; }
}
@media (max-width: 560px) { .hub-row__facts div, .hub-row__facts div + div { padding: 14px 0 0; margin-right: 0; border-left: 0; width: 50%; } }
/* hub header: readable text over any photo */
.hub-hero .hub-label { color: #f8dccf; text-shadow: 0 1px 10px rgb(0 0 0 / .45); }
.page-hub .hub-hero h1 { text-shadow: 0 2px 24px rgb(0 0 0 / .3); }
@media (max-width: 900px) {   /* the text runs the full width here, so the whole photo is toned down */
  .hub-hero::after { background: linear-gradient(0deg, rgb(8 8 8 / .9), rgb(8 8 8 / .7) 55%, rgb(8 8 8 / .62)); }
}
.page-hub .hub-row h3 { color: var(--hub-ink); } .page-hub .hub-row--dark h3 { color: #fff; }

/* ---------------------------------------------------------------- guides (app/views/guide.php) */
.page-guide { --gd-ink: #181817; --gd-paper: #f1eee8; --gd-muted: #5f5b55; color: var(--gd-ink); background: var(--gd-paper); }
.gd-wrap { width: min(1280px, calc(100% - 2 * clamp(20px, 5vw, 84px))); margin-inline: auto; }
.gd-label { margin: 0 0 16px; color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .17em; text-transform: uppercase; }
.gd-label--light { color: #f8dccf; text-shadow: 0 1px 10px rgb(0 0 0 / .45); }
.gd-hero { position: relative; display: flex; align-items: flex-end; min-height: min(72svh, 720px); overflow: hidden; color: #fff; background: #171716; }
.gd-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.gd-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgb(8 8 8 / .85), rgb(8 8 8 / .5) 55%, rgb(8 8 8 / .2)), linear-gradient(0deg, rgb(8 8 8 / .8), transparent 60%); }
.gd-hero__body { position: relative; z-index: 1; padding: clamp(90px, 10vw, 150px) 0 clamp(44px, 5vw, 72px); }
.page-guide .gd-hero h1 { max-width: 960px; margin: 0; color: #fff; font: 300 clamp(48px, 6.4vw, 96px)/.96 var(--f-head); letter-spacing: -.05em; text-shadow: 0 2px 24px rgb(0 0 0 / .3); }
.gd-hero__intro { max-width: 640px; margin: 24px 0 0; color: rgb(255 255 255 / .9); font-size: clamp(17px, 1.4vw, 21px); line-height: 1.6; text-shadow: 0 1px 12px rgb(0 0 0 / .35); }

.gd-glance { background: #171716; color: #fff; }
.gd-glance__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gd-glance__grid div { padding: clamp(26px, 3vw, 40px) clamp(16px, 2.4vw, 36px); border-left: 1px solid rgb(255 255 255 / .16); }
.gd-glance__grid div:first-child { border-left: 0; padding-left: 0; }
.gd-glance strong { display: block; font: 300 clamp(28px, 2.8vw, 42px)/1.1 var(--f-head); letter-spacing: -.03em; }
.gd-glance span { display: block; margin-top: 6px; color: rgb(255 255 255 / .74); font-size: 15px; }

.gd-journey { padding: clamp(80px, 9vw, 140px) 0; }
/* faint photo "chapters" behind the steps (design field step_bgs; site.js cross-fades them while scrolling) */
.gd-journey--ambient { position: relative; isolation: isolate; }
.gd-ambient { position: absolute; inset: 0; z-index: -1; overflow: clip; pointer-events: none; }
.gd-ambient__stage { position: sticky; top: 0; height: 100vh; height: 100svh; }
.gd-ambient__img { position: absolute; inset: 0; opacity: 0; transition: opacity 1.4s ease; }
.gd-ambient__img.is-on { opacity: 1; }
.gd-ambient__img img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.7) blur(2px); transform: scale(1.03); }
.gd-ambient__stage::after { content: ""; position: absolute; inset: 0; background: color-mix(in srgb, var(--gd-paper) 86%, transparent); }
.page-guide--sensual .gd-ambient__stage::after { background: linear-gradient(90deg, color-mix(in srgb, var(--gd-paper) 95%, transparent) 0%, color-mix(in srgb, var(--gd-paper) 86%, transparent) 60%, color-mix(in srgb, var(--gd-paper) 90%, transparent) 100%); }
@media (prefers-reduced-motion: reduce) { .gd-ambient__img { transition: none; } }
.gd-journey__grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 50px clamp(40px, 7vw, 120px); align-items: start; }
.gd-journey__intro { position: sticky; top: calc(var(--header-h, 70px) + 30px); }
.page-guide h2 { margin: 0; color: var(--gd-ink); font: 300 clamp(40px, 4.4vw, 66px)/1 var(--f-head); letter-spacing: -.045em; }
.gd-lead { margin-top: 26px; color: var(--gd-muted); font-size: 18px; line-height: 1.7; }
.gd-lead p { margin: 0 0 1em; }
.gd-steps { list-style: none; margin: 0; padding: 0; position: relative; }
.gd-steps::before { content: ""; position: absolute; left: 27px; top: 10px; bottom: 10px; width: 1px; background: #d3cbbf; }
.gd-step { position: relative; display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 26px; padding-bottom: clamp(40px, 4vw, 60px); }
.gd-step:last-child { padding-bottom: 0; }
.gd-step__num { position: relative; display: grid; place-items: center; width: 56px; height: 56px; border-radius: 50%; background: #181817; color: #fff; font-size: 15px; font-weight: 750; letter-spacing: .06em; }
.gd-step:nth-child(6n+1) .gd-step__num { background: #955425; } .gd-step:nth-child(6n+2) .gd-step__num { background: #640d2c; }
.gd-step:nth-child(6n+3) .gd-step__num { background: #320c3b; } .gd-step:nth-child(6n+4) .gd-step__num { background: #13355c; }
.gd-step:nth-child(6n+5) .gd-step__num { background: #1b7a74; } .gd-step:nth-child(6n+6) .gd-step__num { background: #071429; }
.gd-step__body { padding: 12px 0 0; }
.page-guide .gd-step h3 { margin: 0 0 12px; color: var(--gd-ink); font: 400 clamp(26px, 2.2vw, 34px)/1.15 var(--f-head); letter-spacing: -.02em; }
.gd-step .content { color: var(--gd-muted); font-size: 17px; line-height: 1.75; }
.gd-step .content p { margin: 0 0 1em; } .gd-step .content p:last-child { margin-bottom: 0; }
.gd-step .content a, .gd-lead a { color: #873949; text-decoration: underline; text-underline-offset: 3px; }
.gd-step .content img { border-radius: 8px; }
.gd-step .content .split { display: grid; gap: 20px; margin: 0; }

.gd-related { padding: 0 0 clamp(80px, 9vw, 130px); }
.gd-related__grid { display: grid; gap: 18px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gd-related__grid--1 { grid-template-columns: minmax(0, 1fr); max-width: 520px; } .gd-related__grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gd-rel { display: flex; flex-direction: column; overflow: hidden; border-radius: 14px; background: #fff; color: var(--gd-ink); text-decoration: none; box-shadow: 0 1px 0 #ddd5c9; transition: transform .2s, box-shadow .2s; }
.gd-rel:hover { transform: translateY(-4px); box-shadow: 0 18px 40px rgb(0 0 0 / .12); }
.gd-rel__img { display: block; aspect-ratio: 16 / 10; overflow: hidden; } .gd-rel__img img { width: 100%; height: 100%; object-fit: cover; }
.gd-rel__body { position: relative; display: block; padding: 20px 56px 22px 22px; }
.gd-rel__title { display: block; font: 400 24px/1.2 var(--f-head); letter-spacing: -.02em; }
.gd-rel__text { display: block; margin-top: 6px; color: var(--gd-muted); font-size: 15px; line-height: 1.55; }
.gd-rel b { position: absolute; right: 22px; top: 22px; color: #873949; font-size: 20px; transition: transform .2s; } .gd-rel:hover b { transform: translateX(4px); }

.gd-cta { padding: clamp(70px, 8vw, 120px) 0; color: #fff; }
.gd-cta__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 26px; }
.page-guide .gd-cta h2 { max-width: 860px; color: #fff; font-size: clamp(34px, 3.8vw, 58px); }
.gd-btn { display: inline-flex; padding: 14px 26px; border-radius: 999px; background: #fff; color: #111; font-weight: 700; text-decoration: none; }
.gd-btn:hover { background: #f1eee8; color: #111; }   /* the general a:hover would turn it light-on-light */

@media (max-width: 900px) {
  .gd-journey__grid { grid-template-columns: 1fr; } .gd-journey__intro { position: static; }
  .gd-related__grid, .gd-related__grid--2 { grid-template-columns: 1fr; }
  .gd-hero::after { background: linear-gradient(0deg, rgb(8 8 8 / .9), rgb(8 8 8 / .7) 55%, rgb(8 8 8 / .6)); }
}
@media (max-width: 640px) {
  .gd-glance__grid { grid-template-columns: 1fr; } .gd-glance__grid div { border-left: 0; padding: 20px 0; border-top: 1px solid rgb(255 255 255 / .16); } .gd-glance__grid div:first-child { border-top: 0; }
  .gd-step { grid-template-columns: 44px minmax(0, 1fr); gap: 16px; } .gd-step__num { width: 44px; height: 44px; font-size: 13px; } .gd-steps::before { left: 21px; }
  .gd-step__body { padding-top: 6px; }
}
.gd-step--end { padding-top: 4px; }
.gd-step__end { justify-self: center; width: 14px; height: 14px; margin-top: 12px; z-index: 1; border-radius: 50%; background: var(--gd-paper); border: 2px solid #b5ab9e; position: relative; }
.gd-note { padding-top: 0; color: var(--gd-ink); font: 400 clamp(19px, 1.5vw, 22px)/1.6 var(--f-head); }
.gd-note p { margin: 0 0 .8em; } .gd-note p:last-child { margin-bottom: 0; }
.gd-step--end::before { content: ""; position: absolute; left: 20px; width: 16px; top: 30px; bottom: 0; background: var(--gd-paper); }   /* the line stops at the end dot */
@media (max-width: 640px) { .gd-step--end::before { left: 14px; } .gd-note { font-size: 17px; } }
/* guide: an introduction with photos (Boudoir tips) */
.gd-intro { padding: clamp(80px, 9vw, 130px) 0 0; }
.gd-intro__inner > h2 { max-width: 900px; margin-bottom: clamp(30px, 4vw, 50px); }
.gd-intro .split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(30px, 6vw, 100px); align-items: center; margin: 0; }
.gd-intro .split--reverse .split__media { order: 2; }
.gd-intro .split__media figure { margin: 0; } .gd-intro .split__media img { width: 100%; max-height: 760px; object-fit: cover; border-radius: 10px; }
.gd-intro .split__body { color: var(--gd-muted); font-size: 18px; line-height: 1.75; }
.gd-intro .split__body p { margin: 0 0 1em; } .gd-intro .split__body p:first-child { color: var(--gd-ink); font: 400 clamp(21px, 1.7vw, 25px)/1.5 var(--f-head); }
@media (max-width: 900px) { .gd-intro .split { grid-template-columns: 1fr; } .gd-intro .split--reverse .split__media { order: 0; } .gd-intro .split__media img { max-height: 520px; } }

/* guide: photos halfway through the steps */
.gd-band { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 0 0 clamp(40px, 4vw, 60px) 82px; }
.gd-band--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gd-band figure { margin: 0; aspect-ratio: 3 / 4; overflow: hidden; border-radius: 8px; }
.gd-band img { width: 100%; height: 100%; object-fit: cover; }
@media (max-width: 640px) { .gd-band { margin-left: 0; gap: 8px; } }

/* guide: "dark, sensual" look (Boudoir) – plum-black, copper and burgundy from the lens flare, light italic headings */
.page-guide--sensual { --gd-ink: #f3e7df; --gd-paper: #120b0f; --gd-muted: rgb(243 231 223 / .74); --gd-copper: #e3b08f;
  background: radial-gradient(1200px 700px at 85% 20%, rgb(100 13 44 / .28), transparent 70%), radial-gradient(900px 600px at 10% 75%, rgb(149 84 37 / .16), transparent 70%), #120b0f; }
.page-guide--sensual h1, .page-guide--sensual h2, .page-guide--sensual h3 { font-style: italic; }
.page-guide--sensual .gd-hero h1 { font-weight: 300; letter-spacing: -.035em; }
.page-guide--sensual .gd-hero::after { background: linear-gradient(90deg, rgb(18 6 12 / .88), rgb(18 6 12 / .45) 55%, rgb(18 6 12 / .1)), linear-gradient(0deg, #120b0f, rgb(18 6 12 / .35) 40%, transparent 70%); }
.page-guide--sensual .gd-hero { min-height: min(92svh, 920px); }
.page-guide--sensual .gd-hero__img { animation: gd-drift 26s ease-in-out infinite alternate; transform-origin: 60% 40%; }
@keyframes gd-drift { from { transform: scale(1); } to { transform: scale(1.08); } }
.page-guide--sensual .gd-label { color: var(--gd-copper); }
.page-guide--sensual .gd-glance { background: linear-gradient(90deg, rgb(100 13 44 / .55), rgb(50 12 59 / .35) 60%, transparent), transparent; border-block: 1px solid rgb(227 176 143 / .18); }
.page-guide--sensual .gd-glance strong { font-style: italic; }
.page-guide--sensual h2 { color: var(--gd-ink); }
.page-guide--sensual .gd-intro .split__media img { border-radius: 400px 400px 14px 14px; max-height: 720px; }
.page-guide--sensual .gd-intro .split__body p:first-child { color: var(--gd-ink); font-style: italic; font-weight: 300; font-size: clamp(22px, 1.9vw, 28px); }
.page-guide--sensual .gd-steps::before { background: linear-gradient(180deg, rgb(227 176 143 / .7), rgb(100 13 44 / .8) 60%, rgb(227 176 143 / .15)); }
.page-guide--sensual .gd-step .gd-step__num, .page-guide--sensual .gd-step:nth-child(n) .gd-step__num { background: #120b0f; border: 1px solid rgb(227 176 143 / .6); color: var(--gd-copper); font-weight: 400; font-style: italic; letter-spacing: .02em; }
.page-guide--sensual .gd-step h3 { color: var(--gd-ink); font-weight: 300; }
.page-guide--sensual .gd-step .content a, .page-guide--sensual .gd-lead a { color: var(--gd-copper); }
.page-guide--sensual .gd-band figure { border-radius: 200px 200px 8px 8px; }
.page-guide--sensual .gd-band figure:nth-child(2) { transform: translateY(28px); }
.page-guide--sensual .gd-step--end::before { background: #120b0f; }
.page-guide--sensual .gd-step__end { background: #120b0f; border-color: var(--gd-copper); }
.page-guide--sensual .gd-cta { background: linear-gradient(115deg, #2a0a16, #640d2c 45%, #320c3b 75%, #120b0f); }
.page-guide--sensual .gd-band figure:nth-child(2).rv.is-in { transform: translateY(28px); }
@media (prefers-reduced-motion: reduce) { .page-guide--sensual .gd-hero__img { animation: none; } }
.page-guide--sensual .gd-hero h1, .page-guide--sensual .gd-step h3, .page-guide--sensual .gd-glance strong, .page-guide--sensual .gd-cta h2, .page-guide--sensual .gd-journey h2 { font-style: italic; }
@media (max-width: 900px) { .page-guide--sensual .gd-hero::after { background: linear-gradient(0deg, #120b0f, rgb(18 6 12 / .72) 45%, rgb(18 6 12 / .62)); } }

/* ---------------------------------------------------------------- no "01 / 02 / 03" step numbers anywhere (owner's choice, 2026-10-10) */
.service-step > span:first-child { display: none; }                         /* numbers written into page content */
.rule-row { grid-template-columns: minmax(170px, 260px) minmax(0, 1fr); }
@media (max-width: 1100px) { .rule-row { grid-template-columns: minmax(140px, 220px) 1fr; } }
@media (max-width: 760px) { .rule-row { grid-template-columns: 94px minmax(0, 1fr); } }
@media (max-width: 420px) { .rule-row { grid-template-columns: 72px minmax(0, 1fr); } }
.faq-hero__nav a { grid-template-columns: 1fr auto; }
.faq-index a { grid-template-columns: 1fr; }
@media (max-width: 760px) { .faq-hero__nav a { grid-template-columns: 1fr auto; } }
/* guide timeline: plain dots on the line instead of numbered circles */
.gd-step { grid-template-columns: 56px minmax(0, 1fr); }
.gd-step .gd-step__num, .gd-step:nth-child(n) .gd-step__num { justify-self: center; width: 13px; height: 13px; margin-top: 22px; border: 0; }
.page-guide--sensual .gd-step:nth-child(n) .gd-step__num { width: 11px; height: 11px; background: var(--gd-copper); border: 0; }
@media (max-width: 640px) { .gd-step { grid-template-columns: 44px minmax(0, 1fr); } .gd-step .gd-step__num, .gd-step:nth-child(n) .gd-step__num { width: 11px; height: 11px; margin-top: 14px; } }

/* ---------------------------------------------------------------- booking hub (app/views/book-hub.php, partials/book-services.php) */
.page-bookhub { --bh-ink: var(--ink); --bh-muted: var(--muted); }
.bh-wrap { width: min(1380px, calc(100% - 2 * clamp(20px, 5vw, 84px))); margin-inline: auto; }
.bh-label { margin: 0 0 16px; color: #873949; font-size: 12px; font-weight: 750; letter-spacing: .17em; text-transform: uppercase; }
.bh-label--light { color: #f8dccf; text-shadow: 0 1px 10px rgb(0 0 0 / .45); }
.bh-hero { position: relative; display: flex; align-items: flex-end; min-height: min(78svh, 780px); overflow: hidden; color: #fff; background: #171716; }
.bh-hero__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.bh-hero::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, rgb(8 8 8 / .86), rgb(8 8 8 / .5) 55%, rgb(8 8 8 / .15)), linear-gradient(0deg, rgb(8 8 8 / .85), rgb(8 8 8 / .4) 30%, transparent 60%); }
.bh-hero__body { position: relative; z-index: 1; padding: clamp(90px, 10vw, 150px) 0 clamp(36px, 4vw, 56px); }
.page-bookhub .bh-hero h1 { max-width: 960px; margin: 0; color: #fff; font: 300 clamp(50px, 6.6vw, 100px)/.95 var(--f-head); letter-spacing: -.05em; text-shadow: 0 2px 24px rgb(0 0 0 / .3); }
.bh-hero__intro { max-width: 660px; margin: 24px 0 0; color: rgb(255 255 255 / .9); font-size: clamp(17px, 1.4vw, 21px); line-height: 1.6; text-shadow: 0 1px 12px rgb(0 0 0 / .35); }
.bh-hero__actions { margin-top: 30px; }
.bh-facts { display: flex; flex-wrap: wrap; margin-top: clamp(36px, 5vw, 64px); border-top: 1px solid rgb(255 255 255 / .35); text-shadow: 0 1px 10px rgb(0 0 0 / .4); }
.bh-facts div { padding: 18px 32px 2px 0; margin-right: 32px; }
.bh-facts div + div { padding-left: 32px; border-left: 1px solid rgb(255 255 255 / .2); }
.bh-facts strong, .bh-facts span { display: block; } .bh-facts strong { font-size: 17px; } .bh-facts span { margin-top: 2px; color: rgb(255 255 255 / .82); font-size: 13px; }
.bh-btn { display: inline-flex; align-items: center; gap: 8px; padding: 13px 24px; border-radius: 999px; font-weight: 700; font-size: 15px; text-decoration: none; border: 1px solid transparent; }
.bh-btn--solid { background: var(--ink); color: var(--bg); }
.bh-hero .bh-btn--solid { background: #fff; color: #111; }
.bh-btn--solid:hover { opacity: .88; color: var(--bg); }
.bh-hero .bh-btn--solid:hover { color: #111; }
.bh-btn--text { padding-inline: 4px; color: var(--ink); text-decoration: underline; text-underline-offset: 4px; text-decoration-color: var(--line-2); }
.bh-choose, .bh-journey { padding: clamp(70px, 8vw, 120px) 0; }
.bh-head { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); gap: 24px 60px; align-items: end; margin-bottom: clamp(30px, 4vw, 54px); }
.bh-head h2, .bh-help h2 { margin: 0; color: var(--ink); font: 300 clamp(38px, 4.4vw, 66px)/1 var(--f-head); letter-spacing: -.045em; }
.bh-head > p { margin: 0; color: var(--muted); font-size: 18px; line-height: 1.65; }
.bh-group + .bh-group { margin-top: clamp(40px, 5vw, 70px); }
.bh-group__title { margin: 0 0 18px; padding-bottom: 12px; border-bottom: 1px solid var(--line-2); color: var(--ink); font: 400 clamp(22px, 1.9vw, 28px)/1.2 var(--f-head); }
.bh-cards { display: grid; gap: 18px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.bh-cards--1 { grid-template-columns: minmax(0, 1fr); } .bh-cards--1 .bh-card { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); }
.bh-cards--1 .bh-card__img { aspect-ratio: auto; min-height: 280px; }
.bh-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.bh-card { display: flex; flex-direction: column; overflow: hidden; border-radius: 14px; background: var(--surface); box-shadow: var(--shadow); }
.bh-card__img { display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--tint); }
.bh-card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s; }
.bh-card:hover .bh-card__img img { transform: scale(1.03); }
.bh-card__body { display: flex; flex-direction: column; flex: 1; padding: 20px 22px 22px; }
.bh-card__title { margin: 0; font: 400 clamp(22px, 1.8vw, 27px)/1.2 var(--f-head); letter-spacing: -.02em; }
.bh-card__title a { color: var(--ink); text-decoration: none; }
.bh-card__text { margin: 8px 0 0; color: var(--muted); font-size: 15px; line-height: 1.6; }
.bh-card__meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 6px 14px; margin: auto 0 0; padding-top: 16px; color: var(--muted); font-size: 14px; }
.bh-card__meta strong { color: var(--ink); font-size: 16px; }
.bh-card__confirm { font-weight: 700; font-size: 12.5px; letter-spacing: .02em; }
.bh-card__confirm--automatic { color: #1f7a5a; }
.theme-dark .bh-card__confirm--automatic { color: #7fd1ae; }
.bh-card__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--line-2); }
.bh-stages { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 28px; position: relative; }
.bh-stages::before { content: ""; position: absolute; left: 6px; right: 6px; top: 6px; height: 1px; background: linear-gradient(90deg, #955425, #640d2c 25%, #320c3b 45%, #13355c 65%, #22968f 85%, #071429); }
.bh-stage { position: relative; padding-top: 34px; }
.bh-stage__dot { position: absolute; top: 0; left: 0; width: 13px; height: 13px; border-radius: 50%; background: var(--copper, #955425); box-shadow: 0 0 0 5px var(--bg); }
.bh-stage h3 { margin: 0 0 8px; color: var(--ink); font: 400 22px/1.2 var(--f-head); }
.bh-stage p { margin: 0; color: var(--muted); font-size: 15px; line-height: 1.6; }
.bh-stage a { display: inline-block; margin-top: 12px; color: var(--copper, #873949); font-size: 14px; font-weight: 700; text-decoration: none; }
.bh-stage a:hover { text-decoration: underline; text-underline-offset: 3px; }
.bh-help { padding: 0 0 clamp(80px, 9vw, 130px); }
.bh-help h2 { font-size: clamp(30px, 3vw, 44px); margin-bottom: 24px; }
.bh-help__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.bh-help__link { position: relative; display: block; padding: 22px 56px 22px 22px; border-radius: 12px; background: var(--surface); color: var(--ink); text-decoration: none; box-shadow: var(--shadow); }
.bh-help__link strong { display: block; font: 400 21px/1.2 var(--f-head); }
.bh-help__link span { display: block; margin-top: 6px; color: var(--muted); font-size: 14.5px; line-height: 1.5; }
.bh-help__link b { position: absolute; right: 22px; top: 22px; color: var(--copper, #873949); }
/* compact, in the booking overlay */
.bh-overlay-intro { margin: 0 0 22px; color: var(--muted); }
.bh-groups--compact .bh-cards { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 12px; }
.bh-groups--compact .bh-cards--1 .bh-card { display: flex; }
.bh-groups--compact .bh-card__img, .bh-groups--compact .bh-cards--1 .bh-card__img { aspect-ratio: 16 / 9; min-height: 0; }
.bh-groups--compact .bh-card__body { padding: 14px 16px 16px; }
.bh-groups--compact .bh-card__title { font-size: 19px; }
.bh-groups--compact .bh-group + .bh-group { margin-top: 30px; }
.bh-groups--compact .bh-group__title { font-size: 19px; }
@media (max-width: 1100px) { .bh-stages { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 40px; } .bh-stages::before { display: none; } }
@media (max-width: 900px) { .bh-cards, .bh-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .bh-head { grid-template-columns: 1fr; } .bh-cards--1 .bh-card { display: flex; } .bh-cards--1 .bh-card__img { aspect-ratio: 3 / 2; min-height: 0; } .bh-help__grid { grid-template-columns: 1fr; } .bh-hero::after { background: linear-gradient(0deg, rgb(8 8 8 / .9), rgb(8 8 8 / .7) 55%, rgb(8 8 8 / .6)); } }
@media (max-width: 640px) { .bh-cards, .bh-cards--2 { grid-template-columns: 1fr; } .bh-stages { grid-template-columns: 1fr; } .bh-facts div, .bh-facts div + div { padding: 14px 0 0; margin-right: 0; border-left: 0; width: 50%; } }

/* ---------------------------------------------------------------- galleries: full width everywhere (owner's choice, 2026-10-10) */
.page .block--gallery .container--wide, .page--service .block--gallery .container--wide, .page--post .post-gallery .container--wide {
  width: auto; max-width: none; margin-inline: 0; padding-inline: clamp(6px, 1vw, 16px);
}
.page .block--gallery .jg { gap: clamp(3px, .35vw, 7px); }

/* closing band (service and standard pages): label, sentence, a solid button and a quiet second way in */
.cta-band__inner { align-items: flex-end; }
.cta-band__copy { flex: 1 1 520px; }
.cta-band__kicker { margin: 0 0 14px; color: rgb(255 255 255 / .82); font-size: 12px; font-weight: 750; letter-spacing: .17em; text-transform: uppercase; }
.page .cta-band__text { max-width: 22ch; font: 300 clamp(30px, 3.6vw, 54px)/1.08 var(--f-head); letter-spacing: -.035em; color: #fff; }
.cta-band__actions { display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }
.cta-band__btn { display: inline-flex; align-items: center; gap: 12px; padding: 17px 30px; border-radius: 999px; background: #fff; color: #111 !important; font-weight: 700; font-size: 16px; text-decoration: none; box-shadow: 0 12px 30px rgb(0 0 0 / .22); transition: transform .2s, box-shadow .2s; }
.cta-band__btn span { transition: transform .2s; }
.cta-band__btn:hover { transform: translateY(-2px); box-shadow: 0 16px 36px rgb(0 0 0 / .3); }
.cta-band__btn:hover span { transform: translateX(4px); }
.cta-band__alt { color: rgb(255 255 255 / .9) !important; font-size: 14px; text-decoration: underline; text-underline-offset: 4px; text-decoration-color: rgb(255 255 255 / .45); }
.cta-band__alt:hover { color: #fff !important; text-decoration-color: #fff; }
@media (max-width: 700px) { .cta-band__actions, .cta-band__btn { width: 100%; } .cta-band__btn { justify-content: center; } .cta-band__actions { align-items: center; } }
.bk-quote--embed .bk-quote__kicker, .bk-quote--embed .bk-quote__service { display: none; }
.cta-band__actions { align-items: center; text-align: center; }
.hire-gallery figure > a { display: block; width: 100%; height: 100%; cursor: zoom-in; }
/* studio hire mosaic: one large photo + a 2×2 block (5 photos fill it exactly); the wide 4th tile only when there are 4 */
.hire-gallery figure:nth-child(4) { grid-column: auto; }
.hire-gallery figure:nth-child(4):last-child { grid-column: span 2; }
@media (min-width: 701px) { .hire-gallery__grid:has(> figure:nth-child(6)) { grid-template-rows: repeat(2, minmax(280px, 30vw)) auto; } }

/* ---------------------------------------------------------------- booking overlay: full screen, moving lens flare behind, one scroll
   The gradient lives on the overlay (it keeps moving while the steps change); the booking page inside is transparent,
   its panel centred when short and growing up and down when longer – the whole screen scrolls once it's taller. */
.bk-overlay {
  place-items: stretch; backdrop-filter: none;
  background:
    linear-gradient(rgb(11 7 10 / .38), rgb(11 7 10 / .38)),
    linear-gradient(120deg, #955425 0%, #640d2c 20%, #320c3b 40%, #13355c 60%, #22968f 80%, #071429 100%);
  background-size: 100% 100%, 300% 300%;
  animation: bk-flare 24s ease-in-out infinite alternate;
  transition: opacity .45s ease;
}
@keyframes bk-flare { from { background-position: 0 0, 0% 50%; } to { background-position: 0 0, 100% 50%; } }
.bk-overlay__box, .bk-overlay.is-open .bk-overlay__box { width: 100vw; height: 100dvh; border-radius: 0; box-shadow: none; background: transparent; }
.bk-overlay__box { opacity: 0; transform: translateY(28px) scale(.985); transition: opacity .5s ease .12s, transform .6s cubic-bezier(.2, .7, .2, 1) .12s; }
.bk-overlay.is-open .bk-overlay__box.is-ready { opacity: 1; transform: none; }
.bk-overlay iframe { background: transparent; color-scheme: normal; }
.bk-overlay__close { position: fixed; top: 18px; right: 22px; width: 46px; height: 46px; }
.bk-overlay__load { color: rgb(255 255 255 / .75); }
@media (prefers-reduced-motion: reduce) { .bk-overlay { animation: none; } .bk-overlay__box { transform: none; transition: opacity .2s; } }
/* the booking page inside the overlay */
body.is-embed, body.theme-dark.is-embed { background: transparent; min-height: 100vh; display: flex; flex-direction: column; }
body.is-embed > main { flex: 1; display: flex; flex-direction: column; }
body.is-embed .page--booking { width: min(1180px, calc(100% - 48px)); margin: auto; padding: 4px 0 8px; border-radius: 16px;   /* auto margins: centred when short */
  background: rgb(17 12 16 / .9); box-shadow: 0 30px 90px rgb(0 0 0 / .45); }
body.is-embed > main { padding-block: clamp(28px, 5vh, 60px); }
body.is-embed .bk-head { padding-top: 34px; }
body.is-embed:not(.theme-dark) .page--booking { background: rgb(244 241 235 / .97); }
.bk-overlay > .bk-overlay__load { position: fixed; inset: 0; margin: 0; display: grid; place-items: center; font-size: 28px; letter-spacing: .2em; color: rgb(255 255 255 / .75); pointer-events: none; }
/* booking: Stripe's payment form inside the review step */
.bk-stripe { margin-top: 22px; }
.bk-stripe__form { min-height: 300px; }
/* The payment form on the page (pay.js – Stripe Payment Element in the page's colours) */
.pay { display: grid; gap: 14px; max-width: 560px; }
.pay__express:empty { display: none; }
.pay__or { display: flex; align-items: center; gap: 12px; margin: 2px 0; color: var(--muted); font-size: 13px; }
.pay__or::before, .pay__or::after { content: ""; flex: 1; height: 1px; background: var(--line); }
.pay__element { min-height: 140px; }
.pay__error { margin: 0; color: var(--danger); font-size: 14px; }
.theme-dark .pay__error, .pay--dark .pay__error { color: #ff8a7a; }
.pay__btn { width: 100%; justify-content: center; min-height: 50px; font-size: 16px; }
.pay__secure { display: flex; align-items: center; gap: 6px; margin: 0; color: var(--muted); font-size: 12.5px; }
.gc-payform { margin-top: 18px; scroll-margin-top: calc(var(--header-h) + 16px); }
.bk-stripe { scroll-margin-top: calc(var(--header-h) + 16px); }
.gc-payform__back { margin: 12px 0 0; font-size: 14px; }
.bk-stripe__back .linkish, .gc-payform__back .linkish { background: none; border: 0; padding: 0; color: var(--muted); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; font: inherit; }
.bk-stripe__back .linkish:hover, .gc-payform__back .linkish:hover { color: var(--ink); }
.bk-stripe__back { margin: 14px 0 0; font-size: 14px; }
/* forms: fields in a row line up at the top – a message or help text under one field never moves its neighbours */
.fgrid { align-items: flex-start; }
.fgrid > .field, .form-grid > .field { align-self: start; align-content: start; }
.form-grid { align-items: start; }
.booking-result__again { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 10px 16px; margin: 18px 0 0; }
.booking-result__again span { color: var(--muted); font-size: 14px; }

/* Booking: a page's Studio / On-Location question before the calendar */
.bk-choose { max-width: 760px; }
.bk-choose__q { margin: 0 0 20px; font-size: clamp(1.25rem, 2.4vw, 1.6rem); font-weight: 500; }
.bk-choose__opts { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; }
.bk-choose__opt { display: flex; flex-direction: column; gap: 6px; padding: 26px 24px; border: 1px solid var(--line, #e3dde2); border-radius: 18px;
  background: var(--surface, #fff); color: var(--ink); text-decoration: none; transition: border-color .2s, transform .2s, box-shadow .2s; }
.bk-choose__opt:hover, .bk-choose__opt:focus-visible { border-color: var(--accent, #640d2c); transform: translateY(-2px); box-shadow: 0 10px 30px rgb(0 0 0 / .12); }
.bk-choose__label { font-size: 1.25rem; font-weight: 600; }
.bk-choose__rate { color: var(--muted); font-size: .95rem; }
.bk-choose__go { margin-top: 14px; display: inline-flex; align-items: center; gap: 6px; font-weight: 600; font-size: .9rem; }

/* Booking: leaving the payment form (Cancel booking / closing the window) */
.bk-stripe__back span { margin: 0 8px; color: var(--muted); }
.bk-leave { margin: 8px 0 0; padding: 26px 24px; border: 1px solid var(--line, #e3dde2); border-radius: 18px; background: var(--surface, #fff); }
.bk-leave__t { margin: 0 0 8px; font-size: 1.2rem; font-weight: 600; color: var(--ink); }
.bk-leave__d { margin: 0 0 20px; color: var(--ink-2); max-width: 52ch; }
.bk-leave__a { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }
.booking__error.is-note { background: var(--tint, #f3eef1); color: var(--ink); }

/* "Cancellation terms" modal (partials/terms-sheet) */
.terms-sheet { border: 0; padding: 0; width: min(560px, calc(100vw - 32px)); max-height: calc(100dvh - 48px); border-radius: 18px;
  background: var(--surface, #fff); color: var(--ink); box-shadow: 0 30px 80px rgb(0 0 0 / .35); }
.terms-sheet::backdrop { background: rgb(10 8 10 / .66); backdrop-filter: blur(3px); }
.terms-sheet[open] { animation: terms-in .28s cubic-bezier(.2, .7, .2, 1); }
@keyframes terms-in { from { opacity: 0; transform: translateY(14px); } }
.terms-sheet__in { position: relative; padding: 30px 28px 26px; }
.terms-sheet__x { position: absolute; top: 14px; right: 14px; width: 38px; height: 38px; display: grid; place-items: center; border: 0; border-radius: 50%; background: transparent; color: var(--muted); cursor: pointer; }
.terms-sheet__x:hover { background: var(--tint, #f3eef1); color: var(--ink); }
.terms-sheet__k { margin: 0 0 6px; font-size: 12px; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); }
.terms-sheet__t { margin: 0 0 4px; font-size: 1.45rem; font-weight: 500; }
.terms-sheet__type { margin: 0 0 16px; color: var(--ink-2); font-size: .95rem; }
.terms-sheet__table { width: 100%; border-collapse: collapse; font-size: 14.5px; margin: 0 0 18px; }
.terms-sheet__table th { text-align: left; font-size: 12px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); padding: 0 12px 8px 0; }
.terms-sheet__table td { padding: 10px 12px 10px 0; border-top: 1px solid var(--line, #e7e1e5); vertical-align: top; }
.terms-sheet__table td:first-child { white-space: nowrap; font-weight: 600; width: 1%; padding-right: 18px; }
.terms-sheet__points { margin: 0 0 22px; padding-left: 18px; color: var(--ink-2); font-size: 14.5px; }
.terms-sheet__points li + li { margin-top: 6px; }
.terms-sheet__a { display: flex; flex-wrap: wrap; gap: 12px; margin: 0; }
@media (max-width: 520px) { .terms-sheet__in { padding: 26px 20px 22px; } .terms-sheet__table td:first-child { white-space: normal; width: 38%; } }
@media (prefers-reduced-motion: reduce) { .terms-sheet[open] { animation: none; } }

/* ---------------------------------------------------------------- Gift cards: product page (partials/giftcards)
   The card on the left follows the choices (amount, colours, names, message); the purchase in short steps on the right. */
.gcp { position: relative; padding: calc(var(--header-h, 64px) + 48px) 0 72px; isolation: isolate; overflow: hidden; }
.gcp::before { content: ""; position: absolute; inset: 0 0 auto; height: 520px; z-index: -1; background: var(--lens-flare-soft, var(--lens-flare)); opacity: .22; filter: blur(60px); }
.gcp__grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "show intro" "show buy"; column-gap: clamp(32px, 5vw, 80px); align-items: start; }
.gcp__intro { grid-area: intro; } .gcp__buy { grid-area: buy; }
.gcp__show { grid-area: show; grid-row: 1 / span 2; align-self: start; position: sticky; top: calc(var(--header-h, 64px) + 32px); perspective: 1200px; }
.gcp-card { --rx: 0deg; --ry: 0deg; --sx: 30%; --sy: 20%; position: relative; display: flex; flex-direction: column; aspect-ratio: 1.586 / 1; padding: clamp(20px, 3vw, 34px);
  border-radius: 22px; overflow: hidden; background: linear-gradient(var(--gc-angle, 135deg), var(--gc-a, #955425), var(--gc-b, #640d2c)); color: #fff;
  box-shadow: 0 30px 60px -20px rgb(0 0 0 / .55), 0 10px 24px rgb(0 0 0 / .25); transform: rotateX(var(--rx)) rotateY(var(--ry)); transition: transform .25s ease, background .5s ease; }
.gcp-card__shine { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle at var(--sx) var(--sy), rgb(255 255 255 / .28), transparent 45%),
  linear-gradient(115deg, transparent 40%, rgb(255 255 255 / .10) 50%, transparent 60%); mix-blend-mode: soft-light; }
.gcp-card__top { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.gcp-card__brand { display: block; width: clamp(108px, 42%, 176px); line-height: 0; }
.gcp-card__brand svg { display: block; width: 100%; height: auto; }
.gcp-card__kind { font-size: 11px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; opacity: .85; }
.gcp-card__amount { margin-top: auto; font: 300 clamp(2.6rem, 6vw, 4.2rem)/1 var(--f-head); letter-spacing: -.01em; }
.gcp-card__to { margin-top: 6px; font-size: clamp(.95rem, 1.5vw, 1.1rem); font-weight: 600; }
.gcp-card__msg { margin-top: 6px; font-size: .9rem; font-style: italic; opacity: .92; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.gcp-card__msg[hidden] { display: none; }
.gcp-card__bottom { display: flex; justify-content: space-between; align-items: flex-end; gap: 12px; margin-top: 14px; font-size: 13px; }
.gcp-card__from { opacity: .9; }
.gcp-card__code { font: 600 13px/1 ui-monospace, monospace; letter-spacing: .2em; opacity: .7; }
.gcp__covers { margin: 22px 0 0; min-height: 1.5em; font-size: 1.05rem; font-weight: 600; color: var(--ink); text-align: center; }
.gcp__trust { list-style: none; margin: 18px auto 0; padding: 0; display: grid; gap: 8px; max-width: 420px; color: var(--ink-2); font-size: 14.5px; }
.gcp__trust li { display: flex; gap: 10px; align-items: flex-start; }
.gcp__trust .icon { flex: none; margin-top: 3px; color: var(--accent); }

.gcp__kicker { margin: 0 0 10px; font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.gcp__title { margin: 0 0 14px; font: 300 clamp(2.2rem, 4.4vw, 3.4rem)/1.05 var(--f-head); color: var(--ink); }
.gcp__lead { margin: 0 0 28px; font-size: 1.08rem; color: var(--ink-2); max-width: 46ch; }

.gcp-form.gc-form { padding: 0; background: none; box-shadow: none; }
.gcp-step { border-top: 1px solid var(--line); }
.gcp-step:last-child { border-bottom: 1px solid var(--line); }
.gcp-step__h { margin: 0 !important; font: inherit !important; }
.gcp-step__h button { display: flex; width: 100%; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 2px; border: 0; background: none; color: var(--ink); cursor: pointer; text-align: left; }
.gcp-step__t { font: 400 1.3rem/1.2 var(--f-head); }
.gcp-step__sum { color: var(--muted); font-size: 14px; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 60%; }
.gcp-step.is-done:not(.is-open) .gcp-step__t::after { content: "✓"; display: inline-grid; place-items: center; width: 22px; height: 22px; margin-left: 10px; border-radius: 50%;
  background: var(--lens-flare); color: #fff; font: 700 12px/1 var(--f-body); vertical-align: 3px; }
.gcp-step:not(.is-open):not(.is-done) .gcp-step__h button { cursor: default; opacity: .55; }
.gcp-step__body { padding: 0 2px 26px; }
.gcp-amounts { display: grid; grid-template-columns: repeat(auto-fill, minmax(108px, 1fr)); gap: 10px; }
.gcp-amount { position: relative; display: block; cursor: pointer; }
.gcp-amount input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.gcp-amount span { display: grid; place-items: center; min-height: 64px; padding: 10px; border-radius: 14px; border: 1.5px solid var(--line-2, var(--line)); background: var(--surface);
  color: var(--ink); font: 400 1.25rem/1 var(--f-head); transition: border-color .2s, transform .2s, background .2s; }
.gcp-amount:hover span { border-color: var(--ink-2); }
.gcp-amount input:checked + span { border-color: transparent; color: #fff; background: linear-gradient(135deg, var(--gc-a, #955425), var(--gc-b, #640d2c)); transform: translateY(-2px);
  box-shadow: 0 10px 22px -10px rgb(0 0 0 / .55); }
.gcp-amount--custom input:checked + span { background: var(--ink); color: var(--bg); }
.gcp-amount input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 3px; }
.gcp-custom { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: 14px 0 0; }
.gcp-custom label { font-weight: 600; }
.gcp-custom__in { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; }
.gcp-custom__in input { width: 130px; min-height: 46px; padding: 8px 12px; border: 1.5px solid var(--line-2, #d6d6d6); border-radius: 10px; background: var(--surface); color: var(--ink); font-size: 1.15rem; }
.gcp-sub { margin: 22px 0 10px; font-weight: 600; color: var(--ink); }
.gcp-step__body > .seg:first-child { margin-top: 2px; }
.gcp-next { margin: 22px 0 0; }
.gcp-review { display: grid; gap: 0; margin: 0 0 18px; padding: 6px 18px; border-radius: 14px; background: var(--surface); }
.gcp-review div { display: grid; grid-template-columns: 9em minmax(0, 1fr); gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--line); }
.gcp-review div:last-child { border-bottom: 0; }
.gcp-review dt { color: var(--muted); font-size: 14px; }
.gcp-review dd { margin: 0; color: var(--ink); font-weight: 600; overflow-wrap: anywhere; }
.gcp-form .gc-pay .btn { gap: 8px; }

@media (max-width: 900px) {
  .gcp { padding-top: calc(var(--header-h, 64px) + 28px); }
  .gcp__grid { grid-template-columns: 1fr; grid-template-areas: "intro" "show" "buy"; row-gap: 22px; }
  .gcp__show { grid-row: auto; position: relative; top: auto; max-width: 460px; width: 100%; margin: 0 auto; }
  .gcp__lead { margin-bottom: 0; }
  .gcp__covers { margin-top: 16px; }
  .gcp__trust { margin-top: 12px; }
}
@media (prefers-reduced-motion: reduce) { .gcp-card { transition: none; transform: none; } }

/* Gift cards page: the top (what it is + the way to the purchase) and the purchase further down, its steps all open */
.gcp-hero { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(32px, 6vw, 96px); align-items: center; min-height: min(62vh, 620px); }
.gcp-hero__card { perspective: 1200px; }
.gcp-hero__card .gcp-card { max-width: 480px; margin: 0 auto; transform: rotate(-4deg) rotateX(var(--rx)) rotateY(var(--ry)); }
.gcp-hero__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; margin: 0 0 26px; }
.gcp__trust--left { margin: 0; max-width: none; }
.gcp--buy { padding: clamp(64px, 8vw, 104px) 0 clamp(56px, 7vw, 88px); }
.gcp--buy::before { top: 0; height: 100%; opacity: .12; }
.gcp__title--section { font-size: clamp(1.9rem, 3.4vw, 2.6rem); margin-bottom: 20px; }
.gcp-step { padding-top: 6px; }
.gcp-step__h { display: flex; align-items: center; gap: 12px; padding: 20px 0 14px; }
.gcp-step__n { flex: none; display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; background: var(--lens-flare, var(--accent)); color: #fff; font: 600 14px/1 var(--f-body, inherit); }
.gcp-step__body { padding: 0 0 26px 42px; }
/* one step at a time: step bar, the current step, Back / Step n of 4 / Next */
.gcp-stepper { list-style: none; display: grid; grid-template-columns: repeat(4, 1fr); margin: 4px 0 26px; padding: 0; counter-reset: none; }
.gcp-stepper li { position: relative; display: flex; justify-content: center; }
.gcp-stepper li + li::before { content: ""; position: absolute; top: 15px; right: calc(50% + 22px); width: calc(100% - 44px); height: 1px; background: var(--line); }
.gcp-stepper li.is-done + li::before, .gcp-stepper li.is-done + li.is-current::before { background: var(--lens-flare); }
.gcp-stepper button { display: flex; flex-direction: column; align-items: center; gap: 8px; border: 0; background: none; padding: 0 4px; color: var(--muted); font: inherit; font-size: 13px; cursor: pointer; text-align: center; }
.gcp-stepper__n { display: inline-grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; font-weight: 600; font-size: 13px; }
.gcp-stepper li:not(.is-current):not(.is-done) .gcp-stepper__n { opacity: .5; }
.gcp-stepper li.is-current button, .gcp-stepper li.is-done button { color: var(--ink); }
.gcp-stepper li.is-current .gcp-stepper__t { font-weight: 600; }
.gcp-stepper li.is-current .gcp-stepper__n { box-shadow: 0 0 0 4px color-mix(in srgb, var(--ink) 10%, transparent); }
.gcp-stepper li.is-done .gcp-stepper__n { font-size: 0; }
.gcp-stepper li.is-done .gcp-stepper__n::after { content: "✓"; font-size: 14px; }
.gcp-form.is-wizard .gcp-step { display: none; border: 0; padding-top: 0; }
.gcp-form.is-wizard .gcp-step.is-current { display: block; animation: gcpStepIn .25s ease; }
.gcp-form.is-wizard .gcp-step__body { padding: 0; }
@keyframes gcpStepIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .gcp-form.is-wizard .gcp-step.is-current { animation: none; } }
.gcp-nav { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 22px; padding-top: 18px; border-top: 1px solid var(--line); }
.gcp-nav__count { color: var(--muted); font-size: 13.5px; margin-left: auto; }
.gcp-nav__back[hidden] + .gcp-nav__count { margin-left: 0; }
.gcp-nav__next { margin-left: 0; gap: 8px; }
.gcp-nav__next[hidden] { display: none; }
.gcp-nav__back { gap: 6px; }
@media (max-width: 560px) {
  .gcp-stepper__t { font-size: 11.5px; }
  .gcp-nav { flex-wrap: wrap; } .gcp-nav__count { order: -1; width: 100%; margin: 0; text-align: center; }
  .gcp-nav__next { margin-left: auto; }
}
.gcp-form .gc-pay { margin-top: 18px; }
@media (max-width: 900px) {
  .gcp-hero { grid-template-columns: 1fr; min-height: 0; }
  .gcp-hero__text { order: -1; }
  .gcp-hero__card .gcp-card { max-width: 380px; transform: rotate(-3deg) rotateX(var(--rx)) rotateY(var(--ry)); }
  .gcp-step__body { padding-left: 0; }
}
.gcp-amount--custom span { font-size: 1.05rem; text-align: center; }

/* Gift cards page below the product block (design "giftcards"): story, occasions, how it works, questions, closing */
.gcx-label { margin: 0 0 14px; font-size: 12px; font-weight: 700; letter-spacing: .18em; text-transform: uppercase; color: var(--muted); }
.gcx-h { margin: 0 0 22px !important; font: 300 clamp(2rem, 3.6vw, 3rem)/1.08 var(--f-head) !important; color: var(--ink); letter-spacing: -.01em; }
.gcx-h--center { text-align: center; margin-bottom: 44px !important; }
.gcx-ico { display: inline-grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; background: var(--lens-flare); color: #fff; flex: none; }
.gcx-ico svg { width: 20px; height: 20px; }
.gcx-ico--lg { width: 64px; height: 64px; } .gcx-ico--lg svg { width: 26px; height: 26px; }

.gcx-story { padding: clamp(64px, 9vw, 120px) 0; }
.gcx-story__grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(32px, 6vw, 96px); align-items: center; }
.gcx-story__text p:not(.gcx-label) { margin: 0 0 16px; font-size: 1.08rem; line-height: 1.7; color: var(--ink-2); max-width: 54ch; }
.gcx-story__photo { margin: 0; border-radius: 22px; overflow: hidden; aspect-ratio: 4 / 5; box-shadow: 0 30px 60px -24px rgb(0 0 0 / .5); }
.gcx-story__photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

.gcx-occ { padding: clamp(64px, 8vw, 104px) 0; background: var(--panel, var(--surface)); }
.gcx-occ__list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px clamp(24px, 4vw, 56px); }
.gcx-occ__list li { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 18px; align-items: start; }
.gcx-occ__list .gcx-ico { grid-row: 1 / span 2; }
.gcx-occ__list strong { font: 400 1.2rem/1.3 var(--f-head); color: var(--ink); padding-top: 2px; }
.gcx-occ__list span:not(.gcx-ico) { margin-top: 6px; color: var(--ink-2); font-size: .98rem; line-height: 1.6; }

.gcx-how { padding: clamp(64px, 9vw, 120px) 0; }
.gcx-how__list { position: relative; list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); gap: 28px; text-align: center; }
.gcx-how__list::before { content: ""; position: absolute; top: 32px; left: calc(100% / var(--n, 4) / 2); right: calc(100% / var(--n, 4) / 2); height: 1px; background: linear-gradient(90deg, transparent, var(--line-2, var(--line)) 10%, var(--line-2, var(--line)) 90%, transparent); }
.gcx-how__list li { position: relative; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.gcx-how__list .gcx-ico { box-shadow: 0 0 0 8px var(--bg); margin-bottom: 8px; }
.gcx-how__list strong { font: 400 1.12rem/1.3 var(--f-head); color: var(--ink); }
.gcx-how__list span:not(.gcx-ico) { color: var(--ink-2); font-size: .95rem; line-height: 1.6; max-width: 26ch; }

.gcx-faq { padding: clamp(64px, 8vw, 104px) 0; background: var(--panel, var(--surface)); }
.gcx-faq__grid { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(32px, 6vw, 88px); align-items: start; }
.gcx-faq__head { position: sticky; top: calc(var(--header-h, 64px) + 32px); }
.gcx-faq__head p { color: var(--ink-2); margin: 0 0 14px; }
.gcx-link { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--ink); text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 2px; }
.gcx-faq__list.content { max-width: none; }

.gcx-close { padding: clamp(56px, 7vw, 88px) 0; background: var(--lens-flare); color: #fff; }
.gcx-close__in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 22px 40px; }
.gcx-close__t { margin: 0; font: 300 clamp(1.7rem, 3.2vw, 2.6rem)/1.15 var(--f-head); max-width: 22ch; }
.page .gcx-close .btn--light, .theme-dark .page .gcx-close .btn--light { border-radius: 999px; padding: 14px 28px; font-weight: 600; background: #fff; color: #1a1218; border-color: #fff; }
.page .gcx-close .btn--light:hover, .theme-dark .page .gcx-close .btn--light:hover { background: rgb(255 255 255 / .86); color: #1a1218; }

@media (max-width: 900px) {
  .gcx-story__grid, .gcx-faq__grid { grid-template-columns: 1fr; }
  .gcx-story__photo { aspect-ratio: 4 / 3; order: -1; }
  .gcx-occ__list { grid-template-columns: 1fr 1fr; }
  .gcx-how__list { grid-template-columns: 1fr; gap: 30px; text-align: left; }
  .gcx-how__list::before { top: 32px; bottom: 32px; left: 32px; right: auto; width: 1px; height: auto; background: var(--line-2, var(--line)); }
  .gcx-how__list li { display: grid; grid-template-columns: auto minmax(0, 1fr); grid-template-rows: auto auto; column-gap: 18px; align-items: start; }
  .gcx-how__list .gcx-ico { grid-row: 1 / span 2; margin-bottom: 0; }
  .gcx-how__list strong { padding-top: 8px; }
  .gcx-how__list span:not(.gcx-ico) { max-width: none; }
  .gcx-faq__head { position: static; }
}
@media (max-width: 560px) { .gcx-occ__list { grid-template-columns: 1fr; gap: 28px; } }
.gcp { scroll-margin-top: 0; } #giftcard { scroll-margin-top: calc(var(--header-h, 64px) - 40px); }
html:has(.gcx-close) { scroll-behavior: smooth; }
.bk-turnstile:not(:empty) { margin: 16px 0 0; min-height: 65px; }
