:root {
  --paper: #f3efe6;
  --ink: #1d1d1a;
  --muted: #777269;
  --line: #cbc4b7;
  --accent: #a96843;
}
* { box-sizing: border-box; }
html { width: 100%; max-width: 100%; overflow-x: hidden; scroll-behavior: smooth; }
body { width: 100%; max-width: 100%; margin: 0; overflow-x: hidden; background: var(--paper); color: var(--ink); font-family: 'DM Sans', sans-serif; }
@supports (overflow: clip) {
  html, body { overflow-x: clip; }
}
.grain { position: fixed; inset: 0; z-index: 20; pointer-events: none; opacity: .045; background-image: radial-gradient(#4a4035 .7px, transparent .7px); background-size: 5px 5px; }
.site-header { position: fixed; inset: 0 0 auto; z-index: 15; display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; padding: 20px 4.5vw; background: rgba(243,239,230,.86); backdrop-filter: blur(14px); border-bottom: 1px solid rgba(203,196,183,.35); }
.logo { color: var(--ink); text-decoration: none; font: 500 1.45rem 'DM Mono', monospace; letter-spacing: -.1em; }
.logo span { color: var(--accent); }
.nav { display: flex; gap: 28px; }
.nav a, .eyebrow, .gallery-tabs button, footer, .hero-bottom, .orbit-label { color: var(--ink); text-decoration: none; font: 500 .67rem 'DM Mono', monospace; letter-spacing: .08em; }
.header-talk { justify-self: end; color: var(--ink); text-decoration: none; font: 500 .65rem 'DM Mono', monospace; }
.header-talk span { display: inline-grid; place-items: center; width: 29px; height: 29px; margin-left: 8px; border-radius: 8px; background: var(--ink); color: var(--paper); font-size: 1rem; }
.menu-toggle { display: none; }
.home-float { position: fixed; right: 24px; bottom: 24px; z-index: 14; display: grid; place-items: center; width: 54px; height: 54px; border-radius: 50%; background: var(--ink); color: var(--paper); text-decoration: none; font-size: 1.4rem; box-shadow: 0 10px 25px rgba(41,37,28,.2); }
.home-float span { position: absolute; right: 65px; opacity: 0; white-space: nowrap; color: var(--ink); font: 500 .6rem 'DM Mono', monospace; transition: .2s; }
.home-float:hover span { opacity: 1; }
.hero { position: relative; height: 100svh; min-height: 700px; padding: 120px 4.5vw 40px; overflow: hidden; }
.hero:after { content: ''; position: absolute; inset: auto 0 -2px; z-index: 5; height: 25px; background: url('assets/torn-edge.png') center / 100% 100% no-repeat; opacity: .8; }
.hero:before { content: ''; position: absolute; inset: 0; z-index: 2; pointer-events: none; background: linear-gradient(100deg, transparent 35%, rgba(243,239,230,.12) 55%, rgba(243,239,230,.88) 75%, rgba(243,239,230,.3)); }
.hero-copy { position: absolute; left: 4.5vw; bottom: 14vh; z-index: 6; }
.eyebrow { margin: 0 0 24px; color: var(--muted); }
.hero-kicker { margin: 0 0 32px; font: italic 1.55rem/1.08 'Playfair Display', serif; }
.text-link { color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--ink); padding-bottom: 8px; font: 500 .77rem 'DM Mono', monospace; }
.text-link span { margin-left: 22px; }
.hero-name { position: absolute; top: 31%; right: 1vw; z-index: 1; color: #000; font: 500 clamp(10rem,25vw,28rem)/.72 'DM Mono', monospace; letter-spacing: -.18em; }
.hero-trail { position: absolute; left: 8vw; top: 19%; z-index: 4; width: min(45vw,650px); height: min(58vw,750px); pointer-events: none; }
.mobile-interaction-layer { display: none; pointer-events: none; }
.trail-photo { position: absolute; width: 28%; height: 35%; object-fit: cover; border: 10px solid #fff; box-shadow: 0 18px 34px rgba(56,49,40,.22); opacity: 0; transform: translate3d(var(--tx,0),var(--ty,0),0) rotate(var(--rot,0)); transition: opacity .35s ease, transform .5s cubic-bezier(.2,.8,.2,1); }
.trail-photo.show { opacity: 1; }
.trail-1 { left: 4%; top: 23%; --rot: -8deg; }.trail-2 { left: 27%; top: 4%; --rot: 6deg; }.trail-3 { left: 48%; top: 27%; --rot: 9deg; }.trail-4 { left: 11%; top: 53%; --rot: 4deg; }.trail-5 { left: 56%; top: 56%; --rot: -6deg; }.trail-6 { left: 35%; top: 72%; --rot: 5deg; }
.hero-trail .orbit-label { position: absolute; left: 39%; top: 48%; opacity: .75; line-height: 1.5; }
.touch-instruction { display: none; }
.hero-bottom { position: absolute; left: 4.5vw; right: 4.5vw; bottom: 4vh; z-index: 6; display: flex; justify-content: space-between; color: var(--muted); line-height: 1.5; }
.section-pad { padding: 170px 8vw; }.section-intro { margin-bottom: 90px; }.section-intro h2, .contact h2 { max-width: 1000px; margin: 0; font-size: clamp(4rem,8vw,8rem); font-weight: 500; letter-spacing: -.09em; line-height: .84; }.section-intro h2 em, .contact h2 em { font-family: 'Playfair Display', serif; font-weight: 600; letter-spacing: -.08em; }
.about { border-top: 1px solid var(--line); }.about-grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: 15vw; margin-left: 16vw; }.about-left { display: flex; flex-direction: column; gap: 50px; }.about-lead { max-width: 480px; font: italic 2.35rem/1.15 'Playfair Display', serif; }.about-photo { display: block; width: min(100%, 500px); height: 470px; object-fit: cover; border: 10px solid white; box-shadow: 0 18px 34px rgba(56,49,40,.16); transform: rotate(-2deg); }.about-detail { font-size: .94rem; line-height: 1.6; }.about-detail p { margin: 0 0 28px; padding-top: 16px; border-top: 1px solid var(--line); }.about-detail span { color: var(--accent); font: 500 .64rem 'DM Mono', monospace; }
.gallery { padding-top: 180px; }.gallery-tabs { position: sticky; top: 69px; z-index: 8; display: flex; gap: 25px; margin-bottom: 50px; padding: 16px 0; border-bottom: 1px solid var(--line); background: rgba(243,239,230,.9); backdrop-filter: blur(12px); }.gallery-tabs button { padding: 0; border: 0; background: none; color: var(--muted); cursor: pointer; }.gallery-tabs button.active { color: var(--ink); text-decoration: underline; text-underline-offset: 7px; }.gallery-grid { column-count: 3; column-gap: 22px; }.gallery-card { display: inline-block; width: 100%; margin: 0 0 30px; break-inside: avoid; vertical-align: top; opacity: 0; transform: translateY(45px); transition: opacity .8s ease, transform .8s cubic-bezier(.2,.7,.2,1); }.gallery-card.is-visible { opacity: 1; transform: translateY(0); }.gallery-card.offset { margin-top: 90px; }.gallery-card img { display: block; width: 100%; height: auto; border: 9px solid white; box-shadow: 0 12px 25px rgba(65,61,53,.14); filter: saturate(.8); }.gallery-card:nth-child(2n) img { border-width: 7px; }.gallery-card:nth-child(3n) img { border-width: 11px; }.gallery-card figcaption { margin-top: 12px; color: var(--muted); font: 500 .62rem 'DM Mono', monospace; }.subcategories { max-width: 850px; margin: 100px auto 0; padding-top: 22px; border-top: 1px solid var(--line); color: var(--muted); font: 500 .73rem/2 'DM Mono', monospace; }.subcategories span { display: block; margin-top: 18px; color: var(--ink); }
.pricing { position: relative; background: #e6dfd3; }.pricing:after { content: ''; position: absolute; inset: auto 0 -12px; height: 25px; background: url('assets/torn-edge.png') center / 100% 100% no-repeat; transform: rotate(180deg); opacity: .7; }.menu-layout { display: grid; grid-template-columns: 1.25fr .75fr; gap: 8vw; align-items: start; }.price-list { display: grid; gap: 24px; }.package-card { display: grid; grid-template-columns: 180px 1fr; min-height: 300px; border: 1px solid var(--line); background: rgba(255,255,255,.5); }.package-card > img { width: 180px; height: 100%; min-height: 300px; object-fit: cover; filter: saturate(.78); }.package-copy { padding: 25px 28px; }.package-heading { display: grid; grid-template-columns: 36px 1fr auto; gap: 14px; align-items: start; padding-bottom: 15px; border-bottom: 1px solid var(--line); }.package-heading span { color: var(--muted); font: 500 .65rem 'DM Mono', monospace; }.package-heading h3 { margin: 0; font: 500 1.05rem 'DM Mono', monospace; letter-spacing: -.05em; }.package-heading strong { color: var(--accent); font: 500 clamp(3.4rem,5vw,5.4rem)/.75 'DM Sans', sans-serif; letter-spacing: -.11em; }.package-copy h4 { margin: 18px 0 8px; font: 500 .72rem 'DM Mono', monospace; }.package-copy ul { margin: 0; padding: 0; list-style: none; color: #5c5952; font-size: .83rem; line-height: 1.55; }.package-copy li:before { content: '•'; margin-right: 8px; color: var(--accent); }.faq { position: sticky; top: 120px; margin: 0; }.faq > h3 { padding-bottom: 15px; border-bottom: 1px solid var(--ink); font: 500 1.05rem 'DM Mono', monospace; letter-spacing: -.06em; }.faq-copy { color: #5c5952; font-size: .78rem; line-height: 1.55; }.faq-copy p { padding-bottom: 14px; border-bottom: 1px solid var(--line); }.faq-copy strong { color: var(--ink); }
.contact { padding-bottom: 100px; }.contact h2 { margin-bottom: 100px; }.contact-layout { display: grid; grid-template-columns: 1.2fr .8fr; gap: 12vw; }.contact form { display: flex; flex-direction: column; gap: 24px; }label { display: flex; flex-direction: column; gap: 9px; font: 500 .64rem 'DM Mono', monospace; }input, select, textarea { padding: 6px 0 13px; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; outline: none; background: transparent; color: var(--ink); font: 400 1rem 'DM Sans', sans-serif; }textarea { resize: vertical; }.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 30px; }.submit-btn { align-self: flex-start; padding: 16px 21px; border: 0; background: var(--ink); color: var(--paper); cursor: pointer; font: 500 .7rem 'DM Mono', monospace; }.submit-btn span { margin-left: 35px; font-size: 1.1rem; }.form-success { color: var(--accent); font: 500 .72rem 'DM Mono', monospace; }.contact-aside { display: flex; flex-direction: column; justify-content: space-between; min-height: 320px; }.contact-aside p { font: italic 2rem/1.15 'Playfair Display', serif; }.contact-details { display: flex; flex-direction: column; gap: 18px; }.email { color: var(--ink); text-decoration: underline; text-underline-offset: 6px; font: 500 1rem 'DM Mono', monospace; }.socials { display: flex; gap: 18px; }.socials a { display: grid; place-items: center; width: 56px; height: 56px; border: 1px solid var(--ink); border-radius: 50%; color: var(--ink); text-decoration: none; }.socials svg { width: 27px; height: 27px; fill: none; stroke: currentColor; stroke-width: 1.7; }footer { display: flex; justify-content: space-between; gap: 20px; padding: 22px 4.5vw; border-top: 1px solid var(--line); color: var(--muted); }footer a { color: var(--ink); text-decoration: none; }
@media (max-width: 800px) {.site-header { display: flex; }.nav { display: none; }.header-talk { display: none; }.menu-toggle { display: flex; flex-direction: column; gap: 5px; margin-left: auto; border: 0; background: none; }.menu-toggle span { width: 25px; height: 1px; background: var(--ink); }.nav.open { position: absolute; top: 70px; right: 4.5vw; display: flex; flex-direction: column; align-items: flex-end; gap: 16px; padding: 20px; border: 1px solid var(--line); background: var(--paper); }.hero { min-height: 840px; padding-top: 110px; }.hero-copy { top: 17vh; bottom: auto; left: 7vw; }.hero-kicker { font-size: 1.18rem; }.hero-name { top: 28%; right: -3vw; font-size: 36vw; }.hero-trail { top: 40%; left: 2vw; width: 84vw; height: 100vw; }.hero-bottom { left: 7vw; right: 7vw; }.section-pad { padding: 125px 7vw; }.about-grid, .contact-layout { grid-template-columns: 1fr; gap: 60px; margin-left: 0; }.gallery-grid { column-count: 2; column-gap: 12px; }.gallery-card.offset { margin-top: 25px; }.gallery-tabs { top: 64px; gap: 14px; overflow: auto; }.menu-layout { grid-template-columns: 1fr; gap: 70px; }.package-card { display: block; }.package-card > img { width: 100%; height: 260px; }.package-heading { grid-template-columns: 38px 1fr; gap: 12px; }.package-heading strong { grid-column: 2; font-size: 3.4rem; }.faq { position: static; }.faq-grid { grid-template-columns: 1fr; gap: 30px; }.contact h2 { margin-bottom: 65px; }.socials a { width: 54px; height: 54px; }footer { flex-wrap: wrap; font-size: .56rem; }}
.trail-live { z-index: 8; pointer-events: none; }.trail-live.fading { opacity: 0; transform: scale(.9) rotate(var(--rot)); }.about-left { min-width: 0; }
.hero-trail { inset: 0; left: 0; top: 0; width: 100%; height: 100%; }
.trail-photo { width: clamp(135px, 14vw, 210px); height: clamp(170px, 20vw, 285px); transform: translate3d(var(--tx,0),var(--ty,0),0) scale(.9) rotate(var(--rot,0)); transition: opacity .3s ease, transform .9s cubic-bezier(.2,.8,.2,1); }
.socials a { width: 68px; height: 68px; }.socials svg { width: 34px; height: 34px; }
@media (max-width: 800px) { .hero-trail { inset: 0; } .socials a { width: 62px; height: 62px; } .socials svg { width: 31px; height: 31px; } }
.hero-name { color: #000; font-family: 'Playfair Display', serif; font-weight: 600; letter-spacing: -.16em; }
.trail-photo { pointer-events: none; border: 10px solid #fff; box-shadow: 0 16px 30px rgba(56,49,40,.2); }

/* Opening composition: one large Z is split on a forward slash, then its two paper pieces pull apart. */
.intro-tear { position: fixed; inset: 0; z-index: 100; overflow: hidden; pointer-events: none; background: var(--paper); }
.intro-paper { position: absolute; inset: -2%; display: grid; place-items: center; background: var(--paper); will-change: transform, opacity; }
.intro-paper-a { clip-path: polygon(0 0, 100% 0, 0 100%); }
.intro-paper-b { clip-path: polygon(100% 0, 100% 100%, 0 100%); }
.intro-z { display: block; color: #000; font: 600 clamp(15rem, 35vw, 36rem)/.7 'Playfair Display', serif; letter-spacing: -.12em; transform: rotate(-4deg) translate(-1%, 1%); }
.intro-paper-b .intro-z { transform: rotate(-4deg) translate(1%, 1%); }
.intro-rip { position: absolute; z-index: 3; top: -8%; height: 116%; width: 42px; background: #fffdf8; filter: drop-shadow(0 0 1px rgba(255,255,255,.8)); }
.intro-rip-a { right: 49.5%; transform: rotate(45deg); clip-path: polygon(26% 0, 76% 0, 67% 4%, 83% 8%, 61% 12%, 79% 16%, 58% 20%, 88% 24%, 63% 28%, 80% 32%, 55% 36%, 83% 40%, 60% 44%, 86% 48%, 57% 52%, 81% 56%, 62% 60%, 88% 64%, 58% 68%, 79% 72%, 56% 76%, 84% 80%, 62% 84%, 80% 88%, 56% 92%, 72% 96%, 28% 100%, 42% 96%, 22% 92%, 43% 88%, 18% 84%, 39% 80%, 14% 76%, 42% 72%, 20% 68%, 45% 64%, 17% 60%, 43% 56%, 16% 52%, 44% 48%, 13% 44%, 41% 40%, 18% 36%, 45% 32%, 20% 28%, 43% 24%, 13% 20%, 40% 16%, 19% 12%, 42% 8%, 20% 4%); }
.intro-rip-b { left: 49.5%; transform: rotate(45deg); clip-path: polygon(24% 0, 73% 0, 57% 4%, 80% 8%, 42% 12%, 84% 16%, 53% 20%, 87% 24%, 46% 28%, 78% 32%, 38% 36%, 83% 40%, 49% 44%, 88% 48%, 44% 52%, 82% 56%, 51% 60%, 84% 64%, 40% 68%, 79% 72%, 46% 76%, 86% 80%, 49% 84%, 81% 88%, 43% 92%, 74% 96%, 27% 100%, 43% 96%, 18% 92%, 40% 88%, 15% 84%, 46% 80%, 13% 76%, 44% 72%, 20% 68%, 46% 64%, 15% 60%, 41% 56%, 13% 52%, 43% 48%, 16% 44%, 40% 40%, 17% 36%, 43% 32%, 14% 28%, 45% 24%, 17% 20%, 41% 16%, 18% 12%, 44% 8%, 17% 4%); }
.intro-tear.is-opening .intro-paper-a { animation: introPaperA 2.35s cubic-bezier(.72, 0, .18, 1) forwards; }
.intro-tear.is-opening .intro-paper-b { animation: introPaperB 2.35s cubic-bezier(.72, 0, .18, 1) forwards; }
@keyframes introPaperA { 0%, 25% { transform: translate(0, 0) rotate(0); } 43% { transform: translate(-2%, -1%) rotate(-.5deg); } 100% { transform: translate(-126%, -24%) rotate(-8deg); opacity: .9; } }
@keyframes introPaperB { 0%, 25% { transform: translate(0, 0) rotate(0); } 43% { transform: translate(2%, 1%) rotate(.5deg); } 100% { transform: translate(126%, 24%) rotate(8deg); opacity: .9; } }

/* Irregular paper prints keep the trail tactile without a heavy shadow or a Polaroid frame. */
.trail-print { position: absolute; z-index: 8; width: clamp(170px, 18vw, 300px); height: clamp(220px, 25vw, 390px); margin: 0; padding: 18px; overflow: hidden; background: #fffdf8; opacity: 0; will-change: transform, opacity; filter: drop-shadow(0 12px 18px rgba(56,49,40,.13)); }
.trail-print img { display: block; width: 100%; height: 100%; object-fit: cover; }
.trail-print.torn-0 { clip-path: polygon(0 3%, 8% 0, 18% 2%, 30% 0, 44% 3%, 58% 0, 72% 2%, 86% 0, 100% 4%, 98% 18%, 100% 34%, 97% 50%, 100% 67%, 98% 84%, 100% 97%, 88% 100%, 73% 98%, 58% 100%, 43% 98%, 27% 100%, 12% 98%, 0 100%, 2% 84%, 0 68%, 2% 51%, 0 35%, 2% 18%); }
.trail-print.torn-1 { clip-path: polygon(2% 0, 17% 2%, 31% 0, 47% 2%, 63% 0, 79% 3%, 98% 0, 100% 15%, 98% 31%, 100% 47%, 97% 63%, 100% 80%, 98% 100%, 83% 98%, 67% 100%, 50% 97%, 34% 100%, 18% 98%, 0 100%, 2% 82%, 0 67%, 3% 51%, 0 34%, 2% 17%); }
.trail-print.torn-2 { clip-path: polygon(0 2%, 15% 0, 29% 3%, 45% 1%, 60% 3%, 76% 0, 100% 2%, 98% 19%, 100% 36%, 97% 53%, 100% 70%, 98% 86%, 100% 98%, 84% 100%, 69% 97%, 54% 100%, 38% 98%, 21% 100%, 0 97%, 3% 82%, 0 66%, 2% 49%, 0 32%, 3% 17%); }
.trail-print.torn-3 { clip-path: polygon(3% 0, 20% 3%, 37% 0, 53% 2%, 70% 0, 86% 3%, 100% 1%, 97% 18%, 100% 35%, 98% 50%, 100% 66%, 97% 82%, 100% 100%, 83% 97%, 67% 100%, 51% 98%, 35% 100%, 18% 97%, 0 100%, 2% 84%, 0 69%, 3% 53%, 0 37%, 2% 20%); }
.trail-print + .trail-print { z-index: 9; }

@media (max-width: 800px) {
  .trail-print { width: clamp(145px, 34vw, 220px); height: clamp(190px, 47vw, 290px); padding: 12px; }
  .intro-z { font-size: 40vw; }
}

/* Preserve uploaded gallery color and contrast without a portfolio filter. */
.gallery-card img, .package-card > img { filter: none; }
@media (prefers-reduced-motion: reduce) {
  .intro-tear { display: none; }
  .trail-print { animation: none !important; }
}

/* Gallery browsing: stable masonry columns plus independent horizontal strips. */
#gallery { scroll-margin-top: 72px; }
.gallery-grid.is-managed-view.is-all-view { display: grid; grid-template-columns: repeat(var(--gallery-columns, 3), minmax(0, 1fr)); gap: 22px; column-count: initial; }
.gallery-masonry-column { display: flex; min-width: 0; flex-direction: column; }
.gallery-grid.is-managed-view img[data-src] { background: linear-gradient(135deg, rgba(255,255,255,.72), rgba(225,218,204,.52)); }
.gallery-grid.is-managed-view.is-carousel-view { display: grid; grid-template-columns: minmax(0, 1fr); gap: 54px; column-count: initial; }
.managed-gallery-group { min-width: 0; padding-top: 24px; border-top: 1px solid var(--line); }
.managed-group-head { display: flex; justify-content: space-between; align-items: end; gap: 30px; margin-bottom: 22px; }
.managed-group-head h3 { margin: 0 0 9px; font: 500 clamp(1.3rem, 2.2vw, 2rem)/1 'DM Sans', sans-serif; letter-spacing: -.06em; }
.managed-group-head p:not(.eyebrow) { margin: 0; color: var(--muted); font: .75rem 'DM Mono', monospace; }
.managed-group-head > span { color: var(--muted); font: 500 .64rem 'DM Mono', monospace; white-space: nowrap; }
.gallery-scroller-wrap { position: relative; min-width: 0; }
.gallery-scroller { display: flex; gap: 20px; padding: 4px 2px 20px; overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x proximity; scrollbar-width: thin; scrollbar-color: var(--ink) transparent; }
.gallery-scroller::-webkit-scrollbar { height: 4px; }
.gallery-scroller::-webkit-scrollbar-track { background: transparent; }
.gallery-scroller::-webkit-scrollbar-thumb { background: rgba(29,29,26,.55); border-radius: 10px; }
.gallery-strip-card { flex: 0 0 clamp(190px, 23vw, 310px); width: clamp(190px, 23vw, 310px); margin: 0; opacity: 1; transform: none; scroll-snap-align: start; }
.gallery-strip-card img { aspect-ratio: 3 / 4; object-fit: cover; }
.gallery-arrow { position: absolute; top: 45%; z-index: 2; display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid rgba(29,29,26,.35); border-radius: 50%; background: rgba(243,239,230,.88); color: var(--ink); cursor: pointer; opacity: .35; transition: opacity .2s, transform .2s; }
.gallery-arrow:hover, .gallery-arrow:focus-visible { opacity: 1; transform: scale(1.05); }
.gallery-arrow-left { left: -18px; }.gallery-arrow-right { right: -18px; }
.gallery-load-more { display: block; margin: 72px auto 0; }
.subcategories[hidden] { display: none; }
.subcategories .subnav-heading { display: block; margin: 0 0 15px; color: var(--ink); font: 500 .68rem 'DM Mono', monospace; }
.subcategories .subnav-links { display: flex; flex-wrap: wrap; gap: 10px 24px; }
.subcategories .subnav-link { padding: 0 0 5px; border: 0; border-bottom: 1px solid transparent; background: transparent; color: var(--muted); cursor: pointer; font: 500 .7rem 'DM Mono', monospace; }
.subcategories .subnav-link.active, .subcategories .subnav-link:hover { border-color: var(--ink); color: var(--ink); }

@media (max-width: 800px) {
  .gallery-grid.is-managed-view.is-all-view { gap: 12px; }
  .gallery-grid.is-managed-view.is-carousel-view { gap: 38px; }
  .managed-group-head { align-items: start; flex-direction: column; gap: 10px; }
  .gallery-strip-card { flex-basis: 68vw; width: 68vw; }
  .gallery-arrow { width: 36px; height: 36px; }
  .gallery-arrow-left { left: 8px; }.gallery-arrow-right { right: 8px; }
  .subcategories .subnav-links { gap: 10px 17px; }
}


/* Responsive pass: one adaptive site from desktop through phone. */
img { max-width: 100%; }
button, a, input, select, textarea { -webkit-tap-highlight-color: transparent; }
.gallery-card[role="button"] { cursor: zoom-in; }
.gallery-card[role="button"]:focus-visible { outline: 2px solid var(--accent); outline-offset: 5px; }
.gallery-lightbox[hidden] { display: none; }
.gallery-lightbox { position: fixed; inset: 0; z-index: 120; display: grid; grid-template-columns: minmax(52px, 1fr) minmax(0, 1100px) minmax(52px, 1fr); align-items: center; gap: 18px; padding: 56px 3vw 28px; background: rgba(16,15,13,.94); color: #fff; }
.gallery-lightbox figure { min-width: 0; max-height: calc(100svh - 84px); margin: 0; display: grid; place-items: center; gap: 12px; }
.gallery-lightbox img { display: block; width: auto; max-width: 100%; height: auto; max-height: calc(100svh - 125px); object-fit: contain; }
.gallery-lightbox figcaption { color: rgba(255,255,255,.72); text-align: center; font: 500 .65rem/1.5 'DM Mono', monospace; }
.lightbox-close, .lightbox-arrow { display: grid; place-items: center; width: 48px; height: 48px; border: 1px solid rgba(255,255,255,.45); border-radius: 50%; background: rgba(0,0,0,.18); color: #fff; cursor: pointer; font-size: 1.3rem; }
.lightbox-close { position: absolute; top: 18px; right: 20px; z-index: 2; }
.lightbox-prev { justify-self: end; }.lightbox-next { justify-self: start; }
body.lightbox-open { overflow: hidden; }

@media (max-width: 1100px) {
  .section-pad { padding-left: 6.5vw; padding-right: 6.5vw; }
  .about-grid { gap: 9vw; margin-left: 8vw; }
  .menu-layout { grid-template-columns: 1fr; gap: 80px; }
  .price-list { max-width: 820px; }
  .package-card { grid-template-columns: minmax(190px, 28%) 1fr; }
  .package-card > img { width: 100%; }
  .faq { position: static; max-width: 820px; }
  .contact-layout { gap: 8vw; }
}

@media (max-width: 800px) {
  html { scroll-padding-top: 64px; }
  body, main, .site-header, footer, .hero, .section-pad { max-width: 100%; min-width: 0; }
  .hero { overflow-x: clip; }
  .site-header { min-height: 64px; padding: 10px 6vw; }
  .logo { font-size: 1.25rem; }
  .menu-toggle { position: relative; z-index: 2; display: grid; place-items: center; align-content: center; width: 44px; height: 44px; padding: 0; cursor: pointer; }
  .menu-toggle span { width: 26px; transition: transform .25s ease; }
  .menu-toggle.is-open span:first-child { transform: translateY(3px) rotate(45deg); }
  .menu-toggle.is-open span:last-child { transform: translateY(-3px) rotate(-45deg); }
  .nav.open { position: absolute; inset: 64px 0 auto; display: grid; gap: 0; align-items: stretch; padding: 12px 6vw 20px; border: 0; border-bottom: 1px solid var(--line); background: rgba(243,239,230,.98); box-shadow: 0 18px 30px rgba(41,37,28,.1); }
  .nav.open a { display: flex; align-items: center; min-height: 48px; border-bottom: 1px solid rgba(203,196,183,.65); font-size: .75rem; }
  .nav.open a:last-child { border-bottom: 0; }
  .hero { height: 100svh; min-height: 680px; padding: 92px 6vw 28px; }
  .hero:before { background: linear-gradient(160deg, transparent 28%, rgba(243,239,230,.76) 70%, var(--paper)); }
  .hero-copy { top: 19%; left: 6vw; right: 6vw; bottom: auto; }
  .hero-kicker { max-width: 290px; margin-bottom: 26px; font-size: clamp(1.2rem, 5.8vw, 1.55rem); }
  .hero-name { top: 43%; right: -4vw; max-width: 100%; font-size: clamp(10rem, 48vw, 18rem); line-height: .72; }
  .hero-trail { display: none; }
  .hero-bottom { left: 6vw; right: 6vw; bottom: 3.5svh; gap: 20px; font-size: .58rem; }
  .section-pad { padding: 104px 6vw; }
  .section-intro { margin-bottom: 58px; }
  .section-intro h2, .contact h2 { max-width: 100%; font-size: clamp(3.25rem, 14vw, 6.6rem); line-height: .88; }
  .about-grid, .contact-layout { grid-template-columns: minmax(0, 1fr); gap: 58px; margin-left: 0; }
  .about-grid > *, .contact-layout > *, .contact form, .contact-aside { min-width: 0; }
  .about-left { gap: 34px; }
  .about-lead { max-width: 18em; font-size: clamp(1.65rem, 6.5vw, 2.25rem); }
  .about-photo { width: min(100%, 560px); height: auto; max-height: none; }
  .about-detail { max-width: 42rem; font-size: 1rem; line-height: 1.7; }
  .gallery { padding-top: 112px; }
  .gallery-tabs { top: 63px; gap: 8px; margin: 0 -6vw 34px; padding: 10px 6vw 12px; overflow-x: auto; overscroll-behavior-inline: contain; scrollbar-width: none; }
  .gallery-tabs::-webkit-scrollbar { display: none; }
  .gallery-tabs button { flex: 0 0 auto; min-height: 44px; padding: 0 10px; font-size: .65rem; }
  .gallery-grid.is-managed-view.is-all-view { gap: 16px; }
  .gallery-card { margin-bottom: 24px; }
  .gallery-card img { border-width: 7px; }
  .gallery-card figcaption { overflow-wrap: anywhere; line-height: 1.5; }
  .gallery-grid.is-managed-view.is-carousel-view { gap: 44px; }
  .managed-gallery-group { padding-top: 19px; }
  .managed-group-head { margin-bottom: 16px; }
  .gallery-scroller { gap: 14px; margin-right: -6vw; padding-right: 6vw; scroll-snap-type: x mandatory; touch-action: pan-x; scrollbar-width: none; }
  .gallery-scroller::-webkit-scrollbar { display: none; }
  .gallery-strip-card { flex-basis: 44vw; width: 44vw; margin-bottom: 0; }
  .gallery-load-more { min-width: 150px; min-height: 48px; margin-top: 54px; }
  .subcategories { max-width: none; margin-top: 50px; }
  .subcategories .subnav-links { flex-wrap: nowrap; gap: 8px; margin-right: -6vw; padding-right: 6vw; overflow-x: auto; scrollbar-width: none; }
  .subcategories .subnav-links::-webkit-scrollbar { display: none; }
  .subcategories .subnav-link { flex: 0 0 auto; min-height: 44px; padding: 0 10px; }
  .package-card { display: block; min-height: 0; }
  .package-card > img { width: 100%; height: clamp(260px, 66vw, 410px); min-height: 0; object-fit: cover; }
  .package-copy { padding: 26px; }
  .package-heading { grid-template-columns: 34px minmax(0, 1fr); }
  .package-heading strong { grid-column: 2; margin-top: 12px; font-size: clamp(3.2rem, 15vw, 5rem); }
  .package-copy ul { font-size: .9rem; line-height: 1.65; }
  .faq-copy { font-size: .88rem; line-height: 1.65; }
  .contact h2 { margin-bottom: 62px; }
  .contact form { width: 100%; }
  .contact label, .form-row label { min-width: 0; width: 100%; }
  input, select, textarea { width: 100%; max-width: 100%; min-height: 48px; padding: 10px 0 12px; font-size: 16px; }
  textarea { min-height: 130px; }
  .submit-btn { min-height: 48px; padding: 15px 22px; }
  .contact-aside { min-height: 0; gap: 40px; }
  .contact-aside p { margin: 0; font-size: clamp(1.55rem, 6vw, 2rem); }
  .email { max-width: 100%; overflow-wrap: anywhere; font-size: clamp(.78rem, 3.4vw, 1rem); line-height: 1.6; }
  .socials a { width: 58px; height: 58px; }
  .socials svg { width: 29px; height: 29px; }
  .home-float { right: 16px; bottom: 16px; width: 48px; height: 48px; }
  footer { align-items: center; padding: 20px 6vw; }
  .intro-paper { inset: -6%; }
  .intro-z { font-size: clamp(15rem, 72vw, 24rem); transform: rotate(-4deg); }
  .intro-paper-b .intro-z { transform: rotate(-4deg); }
  .intro-rip { width: 30px; }
  .intro-rip-a { right: 48%; }.intro-rip-b { left: 48%; }
  .intro-tear.is-opening .intro-paper-a { animation-name: introPaperAMobile; }
  .intro-tear.is-opening .intro-paper-b { animation-name: introPaperBMobile; }
}

@keyframes introPaperAMobile {
  0%, 25% { transform: translate(0, 0) rotate(0); }
  43% { transform: translate(-2%, -1%) rotate(-.5deg); }
  100% { transform: translate(-145%, -42%) rotate(-10deg); opacity: .9; }
}
@keyframes introPaperBMobile {
  0%, 25% { transform: translate(0, 0) rotate(0); }
  43% { transform: translate(2%, 1%) rotate(.5deg); }
  100% { transform: translate(145%, 42%) rotate(10deg); opacity: .9; }
}

/* Package copy hierarchy. */
.package-intro { margin: 18px 0 14px; color: var(--ink); font-size: .88rem; line-height: 1.55; }
.package-best { margin: 17px 0 0; padding-top: 14px; border-top: 1px solid var(--line); color: #5c5952; font-size: .82rem; line-height: 1.55; }
.package-best strong { color: var(--ink); }
.package-availability { display: inline-flex; align-items: center; gap: 28px; margin-top: 18px; padding-bottom: 6px; border-bottom: 1px solid currentColor; color: var(--ink); font: 500 .68rem/1.4 'DM Mono', monospace; letter-spacing: .04em; text-decoration: none; }
.package-availability span { color: var(--accent); font-size: .95rem; transition: transform .2s ease; }
.package-availability:hover span, .package-availability:focus-visible span { transform: translateX(4px); }
.package-more { display: block; margin-top: 14px; color: var(--accent); font: 500 .68rem/1.5 'DM Mono', monospace; text-decoration: none; }
.package-more:hover { text-decoration: underline; text-underline-offset: 4px; }

.coverage-feature { scroll-margin-top: 90px; display: grid; grid-template-columns: 58px minmax(0, 1.08fr) minmax(320px, .92fr); gap: clamp(30px, 5vw, 78px); margin-top: 110px; padding: clamp(38px, 5vw, 72px); color: var(--paper); background: var(--ink); }
.coverage-index { color: #b8b2a8; font: 500 .72rem 'DM Mono', monospace; letter-spacing: .08em; }
.coverage-feature .eyebrow { color: #b8b2a8; }
.coverage-main h3 { margin: 0; font: 500 clamp(3.4rem, 6.5vw, 7.7rem)/.82 'DM Sans', sans-serif; letter-spacing: -.085em; }
.coverage-main h3 em { font-family: 'Playfair Display', serif; font-weight: 600; }
.coverage-lead { max-width: 560px; margin: 30px 0; font: italic clamp(1.35rem, 2vw, 2rem)/1.2 'Playfair Display', serif; }
.coverage-duration { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; padding-top: 18px; border-top: 1px solid #f3efe644; color: #d9d3c9; font: 500 .69rem 'DM Mono', monospace; letter-spacing: .07em; }
.coverage-duration b { color: var(--accent); font-size: 1rem; }
.coverage-details { align-self: end; color: #d9d3c9; font-size: .87rem; line-height: 1.55; }
.coverage-details > p:first-child { margin-top: 0; color: var(--paper); font-size: 1rem; }
.coverage-details ul { margin: 25px 0; padding: 0; list-style: none; }
.coverage-details li { padding: 8px 0; border-bottom: 1px solid #f3efe622; }
.coverage-details li:before { content: '•'; margin-right: 9px; color: var(--accent); }
.coverage-note { color: #b8b2a8; }
.coverage-cta { display: inline-flex; align-items: center; justify-content: space-between; gap: 42px; min-height: 50px; margin-top: 18px; padding: 13px 18px; border: 1px solid #f3efe677; color: var(--paper); font: 500 .7rem 'DM Mono', monospace; letter-spacing: .05em; text-decoration: none; transition: background .2s ease, color .2s ease; }
.coverage-cta:hover { color: var(--ink); background: var(--paper); }
.coverage-cta span { font-size: 1.15rem; }

@media (max-width: 800px) {
  .package-intro { font-size: .95rem; }
  .package-best { font-size: .9rem; }
  .package-more { font-size: .73rem; }
  .menu-layout > .coverage-feature { margin-top: 0; }
  .coverage-feature { grid-template-columns: 38px minmax(0, 1fr); margin-top: 76px; padding: 38px 26px; }
  .coverage-main, .coverage-details { grid-column: 2; }
  .coverage-main h3 { font-size: clamp(3.1rem, 14vw, 5.7rem); }
  .coverage-details { margin-top: 18px; }
}

@media (max-width: 480px) {
  .coverage-feature { grid-template-columns: 1fr; gap: 20px; padding: 34px 22px; }
  .coverage-main, .coverage-details { grid-column: 1; }
  .coverage-main h3 { font-size: clamp(2.75rem, 14.5vw, 4.2rem); }
  .coverage-duration { gap: 8px; font-size: .58rem; }
  .coverage-cta { display: flex; width: 100%; gap: 20px; }
}

@media (max-width: 600px) {
  .form-row { grid-template-columns: minmax(0, 1fr); gap: 24px; }
  .hero-bottom span:last-child { display: none; }
  .gallery-lightbox { grid-template-columns: 48px minmax(0, 1fr) 48px; gap: 4px; padding: 64px 8px 20px; }
  .gallery-lightbox figure { grid-column: 1 / -1; grid-row: 1; }
  .gallery-lightbox img { max-height: calc(100svh - 145px); }
  .lightbox-arrow { position: fixed; bottom: 18px; }
  .lightbox-prev { left: calc(50% - 58px); }.lightbox-next { right: calc(50% - 58px); }
}

@media (max-width: 480px) {
  .hero { min-height: 640px; }
  .hero-copy { top: 17%; }
  .hero-name { top: 45%; right: -7vw; font-size: 52vw; }
  .hero-bottom { font-size: .54rem; }
  .section-pad { padding: 88px 6vw; }
  .section-intro { margin-bottom: 46px; }
  .section-intro h2, .contact h2 { font-size: clamp(3rem, 15.5vw, 4.2rem); }
  .gallery-strip-card { flex-basis: 76vw; width: 76vw; }
  .gallery-arrow { width: 44px; height: 44px; }
  .package-copy { padding: 22px 20px 25px; }
  .package-heading { gap: 8px; }
  .package-heading h3 { font-size: .9rem; line-height: 1.35; }
  .package-heading strong { font-size: 3.45rem; }
  footer { justify-content: center; text-align: center; }
  footer span:nth-child(2) { display: none; }
}

@media (hover: none), (pointer: coarse) {
  .hero-trail { display: block; }
  .desktop-instruction { display: none; }
  .touch-instruction { position: relative; display: inline; opacity: 0; transition: opacity .25s ease; }
  body.mobile-home-active .touch-instruction { opacity: 1; }
  body.mobile-home-active .touch-instruction::after { content: ''; position: absolute; left: calc(100% + 10px); top: 50%; width: 6px; height: 6px; border: 1px solid currentColor; border-radius: 50%; opacity: .32; transform: translateY(-50%) scale(.7); animation: tapHintPulse 1.9s ease-in-out infinite; }
  .mobile-interaction-layer { position: fixed; inset: 0; z-index: 13; display: block; width: 100%; max-width: 100%; height: 100vh; height: 100dvh; overflow: hidden; overflow: clip; pointer-events: none; visibility: hidden; opacity: 0; contain: layout paint style; transition: opacity .15s ease, visibility 0s linear .15s; }
  body.mobile-home-active .mobile-interaction-layer { visibility: visible; opacity: 1; transition-delay: 0s; }
  .trail-print { width: clamp(150px, 45vw, 220px); height: clamp(200px, 60vw, 290px); padding: 12px; }
  .mobile-interaction-layer .trail-print.mobile-tap { width: clamp(185px, 56vw, 275px); height: clamp(245px, 74vw, 360px); }
  .mobile-interaction-layer .trail-print.mobile-swipe { width: clamp(150px, 45vw, 220px); height: clamp(200px, 60vw, 290px); }
  .gallery-arrow { display: none; }
  .gallery-card[role="button"] { cursor: pointer; }
}

@keyframes tapHintPulse {
  0%, 100% { opacity: .18; transform: translateY(-50%) scale(.7); }
  50% { opacity: .48; transform: translateY(-50%) scale(1.45); }
}

.contact, .contact-layout, .contact-details { position: relative; }
.contact-layout { z-index: 2; }
.contact-details a { position: relative; z-index: 3; pointer-events: auto; }
.web3forms-botcheck { display: none !important; }
.submit-btn:disabled { opacity: .62; cursor: wait; }
.form-success { max-width: 560px; line-height: 1.65; }
.form-success strong, .form-success span { display: block; }
.form-success strong { color: var(--ink); font-size: .86rem; }
.form-success span { margin-top: 5px; color: var(--muted); }
.form-success a { display: inline-block; margin-top: 20px; color: var(--ink); text-decoration: underline; text-underline-offset: 5px; }
.form-success.is-error { color: #8c3f2f; }
.form-success.is-error a { margin-top: 0; color: inherit; }
#inquiry-form.is-success > label, #inquiry-form.is-success > .form-row, #inquiry-form.is-success > .submit-btn { display: none; }
#inquiry-form.was-validated input:invalid, #inquiry-form.was-validated select:invalid, #inquiry-form.was-validated textarea:invalid { border-color: #8c3f2f; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .gallery-card { transition: none; }
  .hero-trail, .mobile-interaction-layer { display: none; }
  .touch-instruction::after { content: none !important; animation: none !important; }
}
