:root {
  --ink: #2d2521;
  --paper: #faf8f3;
  --paper-deep: #f0ebe1;
  --sage: #a7afa1;
  --sage-deep: #7e8a7d;
  --sand: #cdbda8;
  --serif: 'Playfair Display', Georgia, serif;
  --sans: 'Noto Sans TC', Arial, sans-serif;
  --line: rgba(45, 37, 33, .22);
}

/* Wedding overview and independent collection pages. */
.wedding-nav { display:flex; flex-wrap:wrap; justify-content:center; gap:10px 24px; padding:22px 6vw; border-bottom:1px solid var(--line); }
.wedding-nav a { color:var(--ink); text-decoration:none; font-size:12px; line-height:2; }
.wedding-nav a[aria-current] { color:var(--sage-deep); box-shadow:0 1px currentColor; }
.wedding-nav a:focus-visible,.home-category:focus-visible,.back-home:focus-visible { outline:2px solid var(--sage-deep); outline-offset:5px; }
.sub-page main.wedding-home,.sub-page main.category-page { max-width:1400px; padding:70px 6vw 90px; }
.wedding-home .wedding-hero h1 { font-size:clamp(42px,6vw,80px); line-height:1.2; letter-spacing:.02em; }
.home-categories { display:grid; gap:46px; }
.home-category { display:grid; grid-template-columns:1.25fr 1fr; color:var(--ink); text-decoration:none; border:1px solid var(--line); background:var(--paper); min-width:0; }
.home-category-media { position:relative; aspect-ratio:16/10; overflow:hidden; background:var(--paper-deep); min-width:0; }
.home-category-media img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; }
.home-category-copy { padding:clamp(24px,4vw,56px); display:flex; flex-direction:column; align-items:flex-start; }
.category-number { font:italic 18px var(--serif); color:var(--sage-deep); }
.home-category h2 { margin:18px 0 25px; font-size:clamp(23px,3vw,38px); font-weight:500; letter-spacing:.06em; }
.copy-placeholder { width:100%; min-height:115px; padding:18px 0; color:var(--sage-deep); }
.copy-placeholder span { font-size:12px; letter-spacing:.15em; }
.copy-placeholder i { display:block; height:1px; background:var(--line); margin-top:19px; width:90%; }
.copy-placeholder i:last-child { width:60%; }
.category-description { display:grid; gap:8px; max-width:520px; margin:18px 0 20px; color:var(--sage-deep); }
.category-description p { margin:0; font-size:13px; line-height:1.9; letter-spacing:.025em; }
.category-price { display:block; margin-bottom:22px; color:var(--ink); font-size:11px; letter-spacing:.1em; }
.home-pricing-note { max-width:900px; margin:36px auto 0; color:var(--sage-deep); font-size:11px; line-height:1.8; letter-spacing:.06em; text-align:center; }
.home-process-feature { display:grid; grid-template-columns:minmax(280px,.78fr) minmax(0,1.35fr); gap:clamp(42px,7vw,100px); align-items:center; margin-top:clamp(90px,13vw,180px); padding:clamp(54px,8vw,100px) 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.home-process-copy h2 { max-width:520px; margin:24px 0 30px; font:500 clamp(38px,5vw,68px)/1.08 var(--serif); letter-spacing:-.045em; }
.home-process-lead { margin:0; color:var(--sage-deep); font-size:14px; line-height:2; }
.home-process-steps { display:grid; gap:0; margin:36px 0 38px; padding:0; list-style:none; border-top:1px solid var(--line); }
.home-process-steps li { display:flex; align-items:center; gap:18px; padding:16px 0; border-bottom:1px solid var(--line); font:500 16px var(--serif); letter-spacing:.06em; }
.home-process-steps span { color:var(--sage-deep); font:italic 12px var(--serif); }
.home-process-link { display:inline-flex; align-items:center; gap:28px; padding-bottom:9px; color:var(--ink); border-bottom:1px solid var(--ink); text-decoration:none; font-size:12px; }
.home-process-gallery { display:grid; grid-template-columns:1.15fr .85fr; grid-template-rows:repeat(2,minmax(180px,1fr)); gap:14px; min-height:590px; }
.home-process-gallery figure { min-width:0; min-height:0; margin:0; overflow:hidden; background:var(--paper-deep); }
.home-process-gallery figure:first-child { grid-row:1 / 3; }
.home-process-gallery img { display:block; width:100%; height:100%; object-fit:cover; }
.category-enter { margin-top:auto; padding-top:28px; width:100%; font-size:12px; display:flex; justify-content:space-between; align-items:center; }
.category-enter b { font-size:26px; font-weight:400; transition:transform .2s; }
.home-category:hover .category-enter b { transform:translate(3px,-3px); }
.photo-placeholder { min-height:0; height:100%; display:flex; flex-direction:column; justify-content:center; align-items:center; color:var(--sage-deep); border:1px dashed var(--sand); margin:0; }
.photo-placeholder span { font:italic 60px var(--serif); opacity:.5; }
.photo-placeholder p { font-size:13px; letter-spacing:.18em; }
.category-page-intro { margin-bottom:42px; }
.category-page-intro .eyebrow { margin-top:45px; }
.sub-page .category-page-intro h1 { font-size:clamp(38px,6vw,75px); line-height:1.3; letter-spacing:.06em; }
.back-home { font-size:12px; color:var(--sage-deep); text-decoration:none; }
.pending-content { display:grid; grid-template-columns:1.2fr 1fr; gap:50px; align-items:center; }
.pending-content h2,.contact-content h2 { font-size:clamp(24px,3vw,38px); font-weight:500; }
.gifts-grid { grid-template-columns:minmax(0,760px); justify-content:center; grid-auto-rows:auto; }
.gifts-grid .decor-card { aspect-ratio:4/5; grid-row:auto; }
.contact-content { padding:35px 0 100px; }
.contact-email { display:inline-flex; gap:30px; color:var(--ink); font:clamp(18px,3vw,32px) var(--serif); text-decoration:none; border-bottom:1px solid var(--line); padding:20px 0; overflow-wrap:anywhere; }
.contact-content > p:last-child { font-size:14px; line-height:2; }
footer a { color:var(--ink); text-decoration:none; }
@media(max-width:820px) { .wedding-nav { gap:8px 17px; } .home-category-copy { padding:25px; } .home-process-feature { grid-template-columns:1fr; } .home-process-gallery { min-height:520px; } }
@media(max-width:560px) { .sub-page main.wedding-home,.sub-page main.category-page { padding:40px 6vw 65px; } .home-category,.pending-content { grid-template-columns:1fr; } .home-categories { gap:28px; } .home-category h2 { margin:14px 0; } .home-category-media img { max-height:420px; } .photo-placeholder { min-height:260px; } .wedding-nav { justify-content:flex-start; padding:16px 6vw; } .wedding-nav a { font-size:11px; } .category-page-intro { margin-bottom:35px; } }
@media(max-width:560px) {
  .category-description { margin:14px 0 17px; }
  .category-description p { font-size:12px; line-height:1.8; }
  .category-price { margin-bottom:18px; }
  .home-pricing-note { margin-top:28px; text-align:left; }
  .home-process-feature { margin-top:72px; padding:58px 0; gap:42px; }
  .home-process-copy h2 { margin:20px 0 24px; font-size:2.65rem; }
  .home-process-lead { font-size:12px; }
  .home-process-gallery { grid-template-columns:1fr 1fr; grid-template-rows:240px 150px; min-height:0; gap:8px; }
  .home-process-gallery figure:first-child { grid-column:1 / 3; grid-row:1; }
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: var(--sans);
  font-weight: 400;
}

body::before {
  content: '';
  position: fixed;
  inset: 0;
  pointer-events: none;
  opacity: .36;
  background-image: radial-gradient(rgba(45,37,33,.12) .55px, transparent .55px);
  background-size: 5px 5px;
  mix-blend-mode: multiply;
  z-index: 10;
}

.site-header {
  height: 104px;
  padding: 0 6vw;
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px solid var(--line);
  position: relative;
  z-index: 2;
}
.brand { display: flex; align-items: center; gap: 13px; color: var(--ink); text-decoration: none; }
.brand-logo { width: 61px; height: 61px; object-fit: contain; display: block; background: var(--paper); mix-blend-mode: multiply; }
.brand strong, .brand small { display: block; letter-spacing: .23em; }
.brand strong { font-size: 11px; }
.brand small { font-size: 8px; margin-top: 5px; opacity: .68; }
.nav-cta {
  color: var(--ink); text-decoration: none; font-size: 11px; letter-spacing: .08em;
  padding: 13px 18px; border: 1px solid var(--ink); border-radius: 0;
}
.nav-cta span { font-size: 18px; margin-left: 8px; }

.eyebrow {
  display: flex; align-items: center; gap: 12px;
  margin: 0 0 30px; font-size: 9px; font-weight: 700; letter-spacing: .24em;
}
.eyebrow span { width: 32px; height: 1px; display: inline-block; background: var(--ink); }

.entry-page { min-height: 100vh; overflow-x: hidden; background: var(--paper); }
.entry-page .site-header { height: 112px; }
.entry-home {
  min-height: calc(100vh - 160px); max-width: 1400px; margin: auto;
  padding: 3vh 6vw 5vh; display: grid;
  grid-template-columns: .92fr 1.55fr; grid-template-rows: auto auto;
  gap: 5vh 7vw; align-items: start;
  position: relative;
}
.entry-home::before {
  content: ''; position: absolute; width: 38vw; height: 38vw; max-width: 520px; max-height: 520px;
  border: 1px solid rgba(126,138,125,.38); border-radius: 50%; left: -17vw; top: 14%;
}
.entry-home::after {
  content: '✦'; position: absolute; right: 5vw; top: 7%; color: var(--sage-deep); font-size: 25px;
}
.entry-intro { position: relative; z-index: 1; grid-column: 1; grid-row: 1; padding-top: 1vh; }
.entry-intro h1 {
  max-width: 520px; margin: 0; font: 500 clamp(2.7rem, 4.1vw, 4.8rem)/1.08 var(--serif);
  letter-spacing: -.06em;
}
.entry-intro h1 em { color: var(--sage-deep); font-weight: 500; }
.entry-intro > p:last-child { max-width: 380px; margin: 28px 0 0; font: italic 500 clamp(1.25rem, 1.7vw, 1.7rem)/1.55 var(--serif); letter-spacing: 0; color: var(--ink); }
.entry-intro > p:last-child em { color: var(--sage-deep); font-style: italic; font-weight: 500; }

.brand-film { max-width: none; margin: 0; position: relative; z-index: 1; grid-column: 2; grid-row: 1; }
.brand-film-heading { display: flex; align-items: center; gap: 12px; margin-bottom: 13px; font-size: 8px; letter-spacing: .2em; }
.film-kicker { font-family: var(--serif); font-size: 13px; font-style: italic; letter-spacing: .08em; }
.film-line { height: 1px; flex: 1; background: var(--line); }
.film-label { opacity: .7; white-space: nowrap; }
.brand-film-video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--paper-deep); border: 1px solid var(--line); box-shadow: 0 20px 50px rgba(68,54,40,.13); }
.brand-film-caption { margin: 13px 0 0; font: italic 15px/1.7 var(--serif); color: var(--sage-deep); }

.entry-portals { display: grid; grid-column: 1 / -1; grid-row: 2; grid-template-columns: repeat(3, 1fr); gap: 18px; height: min(42vh, 430px); position: relative; z-index: 1; }
.entry-card {
  position: relative; overflow: hidden; color: var(--ink); text-decoration: none;
  border: 1px solid rgba(45,37,33,.22); background: var(--paper-deep);
  box-shadow: 0 20px 50px rgba(68,54,40,.12); transition: transform .35s ease, box-shadow .35s ease;
}
.entry-portals { margin-top: 14vh; height: min(65vh, 540px); }
.entry-card:nth-child(2) { margin-top: 28px; }
.entry-card:nth-child(3) { margin-top: 56px; }
.entry-card:hover { transform: translateY(-12px); box-shadow: 0 28px 60px rgba(68,54,40,.18); }
.entry-card-image { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 52%; display: block; filter: saturate(.82) sepia(.05); transition: transform .5s ease, filter .5s ease; }
.entry-pet .entry-card-image { object-position: center 63%; }
.entry-card:hover .entry-card-image { transform: scale(1.035); filter: saturate(.98) sepia(0); }
.entry-wedding { background: #d5d3c8; }
.entry-bouquet { background: #e4d9ca; }
.entry-pet { background: #d9ded5; }
.portal-number { position: absolute; top: 17px; left: 17px; font: italic 15px var(--serif); z-index: 1; }
.entry-label {
  position: absolute; bottom: 0; left: 0; right: 0; padding: 68px 18px 20px;
  background: linear-gradient(transparent, rgba(250,248,243,.95) 32%); display: grid; gap: 9px;
}
.entry-label .entry-title { font: 500 clamp(16px, 1.32vw, 20px)/1.28 var(--serif); }
.entry-label .entry-title i { color: var(--sage-deep); font-style: normal; padding: 0 .12em; }
.entry-label .entry-meta { order: -1; font-size: 8px; letter-spacing: .14em; opacity: .78; }
.entry-label b { position: absolute; right: 18px; bottom: 18px; font-size: 24px; font-weight: 400; }

.arch { position: absolute; width: 65%; height: 62%; left: 50%; bottom: 0; transform: translateX(-50%); border: 17px solid rgba(250,248,243,.8); border-bottom: 0; border-radius: 110px 110px 0 0; }
.arch-flower { position: absolute; top: 28%; right: 19%; width: 95px; height: 120px; background: #8d9a8c; border-radius: 60% 40% 55% 45%; box-shadow: -25px 25px #bdc3b4, 28px 32px #707d72; transform: scale(.7); }
.bouquet-shape { position: absolute; width: 70%; height: 48%; left: 50%; top: 17%; transform: translateX(-50%); border-radius: 48% 55% 42% 50%; background: #b7a48f; box-shadow: -67px 37px #d0bfa9, 63px 38px #8d9a8c, 4px -22px #d8cdbd; }
.bouquet-stem { position: absolute; height: 42%; width: 22px; bottom: -12%; left: 50%; background: #7e8a7d; transform: rotate(12deg); }
.pet-sun { position: absolute; width: 95%; height: 45%; right: -24%; top: 13%; border-radius: 50%; background: #d2bd9f; }
.pet-head { position: absolute; bottom: 16%; left: 50%; transform: translateX(-50%); width: 65%; height: 30%; border-radius: 48%; background: #806f63; }
.pet-head::before, .pet-head::after { content: ''; position: absolute; top: -30px; width: 70px; height: 75px; background: #806f63; }
.pet-head::before { left: -5px; transform: rotate(-28deg); border-radius: 10px 70px 12px 70px; }
.pet-head::after { right: -5px; transform: rotate(28deg); border-radius: 70px 10px 70px 12px; }
.pet-head i { position: absolute; top: 39%; width: 9px; height: 12px; border-radius: 50%; background: var(--ink); z-index: 1; }
.pet-head i:first-child { left: 27%; }.pet-head i:nth-child(2) { right: 27%; }
.pet-head b { position: absolute; bottom: 21%; left: 46%; width: 14px; height: 10px; border-radius: 50%; background: #c4a99e; z-index: 1; }

footer { padding: 25px 6vw; display: flex; justify-content: space-between; font-size: 9px; letter-spacing: .18em; border-top: 1px solid var(--line); }

.sub-page { min-height: 100vh; overflow-x: clip; background: var(--paper); }
.sub-page main { max-width: 1100px; margin: auto; padding: 18vh 6vw; position: relative; }
.sub-page main::after { content: ''; position: absolute; right: 4vw; top: 10vh; width: 32vw; height: 32vw; border: 1px solid rgba(126,138,125,.42); border-radius: 50%; z-index: 0; }
.sub-page main > * { position: relative; z-index: 1; }
.sub-page h1 { margin: 0 0 32px; font: 500 clamp(4rem, 9vw, 8rem)/.95 var(--serif); letter-spacing: -.06em; }
.sub-page h1 em { color: var(--sage-deep); font-weight: 500; }
.sub-page main > p:not(.eyebrow) { max-width: 420px; line-height: 2; margin-bottom: 40px; }
.text-link { display: inline-block; padding-bottom: 8px; color: var(--ink); border-bottom: 1px solid var(--ink); text-decoration: none; font-size: 13px; }

.wedding-main { max-width: 1240px; padding: 12vh 6vw 8vh; }
.wedding-hero { max-width: none; display: grid; grid-template-columns: minmax(300px, .82fr) minmax(460px, 1.25fr); gap: 7vw; align-items: center; margin-bottom: 15vh; }
.wedding-hero-copy { min-width: 0; }
.wedding-hero h1 { margin-bottom: 28px; }
.wedding-lead { max-width: 420px; line-height: 2; margin: 0 0 34px; }
.wedding-hero-film { position: relative; }
.wedding-hero-film::before { content: 'WEDDING FILM'; position: absolute; top: -24px; right: 0; color: var(--sage-deep); font-size: 8px; letter-spacing: .2em; }
.wedding-hero-film video { display: block; width: 100%; aspect-ratio: 16 / 9; object-fit: cover; background: var(--paper-deep); border: 1px solid var(--line); box-shadow: 0 22px 55px rgba(68,54,40,.14); }
.decor-sections { display: grid; gap: 18vh; }
.decor-sections > .decor-section:nth-child(1) { order: 1; }
.decor-sections > .decor-section:nth-child(2) { order: 2; }
.decor-sections > .decor-section:nth-child(3) { order: 3; }
.decor-sections > .decor-section:nth-child(4) { order: 5; }
.decor-sections > .decor-section:nth-child(5) { order: 4; }
.decor-sections > .decor-section:nth-child(6) { order: 6; }
.decor-section-heading { display: grid; grid-template-columns: 70px 1fr; gap: 20px; align-items: start; margin-bottom: 42px; }
.section-number { padding-top: 10px; color: var(--sage-deep); font: italic 18px var(--serif); border-top: 1px solid var(--sage-deep); }
.decor-section-heading h2 { margin: 0 0 12px; font: 500 clamp(2.3rem, 4vw, 4.2rem)/1 var(--serif); letter-spacing: -.05em; }
.decor-section-heading p { max-width: 480px; margin: 0; color: var(--sage-deep); line-height: 1.9; }
.decor-grid { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: 260px; gap: 18px; }
.decor-card { min-width: 0; margin: 0; overflow: hidden; background: var(--paper-deep); position: relative; }
.decor-card:has(img) { cursor: zoom-in; }
.decor-card-wide { grid-column: span 2; }
.decor-card-tall { grid-row: span 2; }
.decor-grid-options, .decor-grid-classic-lite { grid-auto-flow: dense; }
.decor-card img, .decor-card video { display: block; width: 100%; height: 100%; object-fit: cover; filter: saturate(.84) sepia(.04); transition: transform .45s ease, filter .45s ease; }
.decor-card-contain { background: #e9e3db; }
.decor-card-contain img { object-fit: contain; }
.decor-card:hover video { transform: scale(1.025); filter: saturate(1) sepia(0); }
/* Keep portfolio photographs faithful and avoid extra resampling on hover. */
.decor-card img, .decor-card:hover img { filter: none; transform: none; transition: none; }
.decor-card figcaption { position: absolute; right: 0; bottom: 0; left: 0; padding: 42px 18px 17px; color: #fff; font: 500 16px var(--serif); background: linear-gradient(transparent, rgba(45,37,33,.72)); }
.decor-grid-custom { display: flex; align-items: flex-start; }
.decor-grid-custom .decor-card:not(.decor-card-video) { flex: 1; aspect-ratio: 4 / 3; }
.decor-grid-custom .decor-card-wide { flex: 1.35; }
.design-process-list { display: grid; gap: 72px; }
.design-process-group { display: grid; gap: 18px; }
.design-process-title { display: flex; align-items: baseline; gap: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.design-process-title span { color: var(--sage-deep); font: italic 12px var(--serif); }
.design-process-title h3 { margin: 0; font: 500 26px var(--serif); letter-spacing: .03em; }
.design-process-pair { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; align-items: stretch; }
.design-process-card { aspect-ratio: 4 / 3; background: #e9e3db; }
.design-process-card img { object-fit: contain; }
.design-process-card::before { position: absolute; inset: 0; z-index: 0; display: grid; place-items: center; color: var(--sage-deep); font-size: 11px; letter-spacing: .12em; pointer-events: none; }
.design-process-card.is-loading::before { content: '圖稿載入中…'; }
.design-process-card.image-load-failed::before { content: '圖稿載入中斷，請重新整理頁面'; }
.design-process-card img { position: relative; z-index: 1; }
.decor-card-video { flex: .85; aspect-ratio: 9 / 16; align-self: start; background: #25221f; cursor: zoom-in; }
.decor-card-video video { object-fit: cover; }
.decor-card-video::after { content: '點擊觀看影片'; position: absolute; top: 14px; right: 14px; z-index: 2; padding: 8px 10px; color: #fff; background: rgba(45,37,33,.68); font-size: 9px; letter-spacing: .12em; pointer-events: none; }
.cinematic-portfolio .decor-grid { display: grid; grid-template-columns: 1fr; grid-auto-rows: auto; gap: clamp(54px, 7vw, 105px); }
.cinematic-portfolio .portfolio-row { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(260px, .72fr); gap: clamp(34px, 6vw, 92px); align-items: center; }
.cinematic-portfolio .portfolio-row:nth-child(even) { grid-template-columns: minmax(260px, .72fr) minmax(0, 1.55fr); }
.cinematic-portfolio .portfolio-row:nth-child(even) .decor-card { grid-column: 2; grid-row: 1; }
.cinematic-portfolio .portfolio-row:nth-child(even) .portfolio-copy { grid-column: 1; grid-row: 1; }
.cinematic-portfolio .decor-card { width: 100%; aspect-ratio: 16 / 10; grid-column: auto; grid-row: auto; }
.cinematic-portfolio .decor-card img,
.cinematic-portfolio .decor-card video { object-fit: cover; }
.cinematic-portfolio .decor-card figcaption { display: none; }
.cinematic-portfolio .portfolio-row:has(.decor-card-video) .decor-card { width: min(100%, 430px); aspect-ratio: 9 / 16; justify-self: center; }
.portfolio-copy { min-width: 0; padding: 26px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.portfolio-index { color: var(--sage-deep); font: italic 13px var(--serif); letter-spacing: .12em; }
.portfolio-copy h3 { margin: 18px 0 30px; font: 500 clamp(2rem, 3.7vw, 4.1rem)/1.08 var(--serif); letter-spacing: -.045em; }
.portfolio-detail,
.portfolio-quote p { margin: 0; }
.portfolio-detail { display: grid; gap: 11px; color: var(--sage-deep); font-size: 13px; line-height: 1.9; }
.portfolio-detail b,
.portfolio-quote b { color: var(--ink); font-size: 9px; font-weight: 700; letter-spacing: .16em; }
.portfolio-quote { display: grid; gap: 16px; margin-top: 34px; padding-top: 24px; border-top: 1px solid var(--line); }
.portfolio-quote p { display: grid; gap: 8px; font-size: 12px; line-height: 1.7; }
.portfolio-note span { color: var(--sage-deep); }
.decor-pricing-note { margin: 12vh 0 0; padding-top: 24px; border-top: 1px solid var(--line); color: var(--sage-deep); font-size: 12px; letter-spacing: .08em; }
.floating-line-cta { position: fixed; right: clamp(16px, 2.4vw, 34px); bottom: calc(18px + env(safe-area-inset-bottom)); z-index: 80; display: inline-flex; align-items: center; gap: 10px; padding: 12px 17px; border: 1px solid rgba(111,128,112,.55); border-radius: 999px; color: var(--ink); background: rgba(247,244,237,.94); box-shadow: 0 10px 30px rgba(39,34,30,.12); backdrop-filter: blur(10px); text-decoration: none; font-size: 11px; letter-spacing: .12em; transition: transform .2s ease, background .2s ease, box-shadow .2s ease; }
.floating-line-cta:hover,
.floating-line-cta:focus-visible { transform: translateY(-2px); background: #fff; box-shadow: 0 14px 36px rgba(39,34,30,.17); outline: none; }
.line-mark { display: block; width: 28px; height: 28px; flex: 0 0 auto; overflow: visible; color: #718577; }
.image-lightbox { position: fixed; inset: 0; z-index: 100; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 4vh 5vw 3vh; background: rgba(30,25,22,.94); opacity: 0; visibility: hidden; transition: opacity .25s ease, visibility .25s ease; }
.image-lightbox.is-open { opacity: 1; visibility: visible; }
.image-lightbox-media { position: relative; display: grid; place-items: center; max-width: 90vw; max-height: 88vh; }
.image-lightbox img { display: block; max-width: 90vw; max-height: 88vh; object-fit: contain; box-shadow: 0 24px 70px rgba(0,0,0,.32); touch-action: pinch-zoom; }
.image-lightbox video { display: none; max-width: 90vw; max-height: 88vh; object-fit: contain; background: #000; box-shadow: 0 24px 70px rgba(0,0,0,.32); }
.image-lightbox.is-video img { display: none; }
.image-lightbox.is-video video { display: block; aspect-ratio: 9 / 16; }
.image-magnifier { position: absolute; z-index: 2; width: 150px; height: 150px; border: 1px solid rgba(255,255,255,.78); border-radius: 50%; background-repeat: no-repeat; box-shadow: 0 10px 30px rgba(0,0,0,.32), inset 0 0 0 1px rgba(39,34,30,.18); opacity: 0; visibility: hidden; pointer-events: none; transition: opacity .14s ease, visibility .14s ease; }
@media (hover: hover) and (pointer: fine) {
  .image-lightbox:not(.is-video) .image-magnifier.is-visible { opacity: 1; visibility: visible; }
}
.image-lightbox-close { position: absolute; top: 22px; right: 28px; width: 44px; height: 44px; padding: 0; border: 1px solid rgba(255,255,255,.55); border-radius: 50%; color: #fff; background: transparent; font-size: 26px; line-height: 1; cursor: pointer; }
body.lightbox-open { overflow: hidden; }

@media (prefers-reduced-motion: reduce) {
  .floating-line-cta,
  .image-magnifier { transition: none; }
}

@media (max-width: 820px) {
  .entry-home { min-height: calc(100vh - 130px); display: block; padding-top: 60px; }
  .entry-intro { padding-top: 0; }
  .entry-intro > p:last-child { margin-left: auto; margin-right: auto; }
  .entry-intro { margin-bottom: 55px; }
  .brand-film { margin-bottom: 55px; }
  .brand-film-video { max-height: none; }
  .wedding-main { padding-top: 10vh; }
  .wedding-hero { grid-template-columns: 1fr; gap: 70px; }
  .wedding-hero { margin-bottom: 12vh; }
  .decor-sections { gap: 13vh; }
  .decor-grid { grid-auto-rows: 220px; }
  .entry-portals { margin-top: 12vh; height: 58vh; min-height: 380px; }
  .entry-card:nth-child(2) { margin-top: 22px; }.entry-card:nth-child(3) { margin-top: 44px; }
}
@media (max-width: 560px) {
  .site-header, .entry-page .site-header { height: 82px; padding: 0 6vw; }
  .brand-logo { width: 48px; height: 48px; }.nav-cta { padding: 10px 12px; font-size: 10px; }
  .entry-intro h1 { font-size: 2.65rem; }
  .entry-intro > p:last-child { max-width: 300px; font-size: 1.25rem; }
  .brand-film-heading { gap: 8px; }.film-label { font-size: 7px; }.brand-film-caption { font-size: 13px; }
  .entry-portals { height: auto; grid-template-columns: 1fr; gap: 14px; }
  .entry-card, .entry-card:nth-child(2), .entry-card:nth-child(3) { height: 250px; margin-top: 0; }
  .wedding-main { padding-top: 9vh; }
  .wedding-hero { gap: 55px; }
  .wedding-hero-film video { aspect-ratio: 16 / 9; max-height: none; }
  .wedding-hero { margin-bottom: 10vh; }
  .decor-section-heading { grid-template-columns: 42px 1fr; gap: 12px; margin-bottom: 26px; }
  .decor-section-heading h2 { font-size: 2.7rem; }
  .decor-grid { grid-template-columns: repeat(2, 1fr); grid-auto-rows: 170px; gap: 10px; }
  .decor-grid-custom { display: grid; grid-template-columns: repeat(2, 1fr); grid-auto-rows: auto; }
  .decor-grid-custom .decor-card:not(.decor-card-video) { aspect-ratio: 4 / 3; }
  .decor-grid-custom .decor-card-wide { grid-column: span 2; }
  .decor-grid-custom .decor-card-video { width: 100%; }
  .cinematic-portfolio .decor-grid { gap: 48px; }
  .cinematic-portfolio .portfolio-row,
  .cinematic-portfolio .portfolio-row:nth-child(even) { grid-template-columns: 1fr; gap: 22px; }
  .cinematic-portfolio .portfolio-row:nth-child(even) .decor-card,
  .cinematic-portfolio .portfolio-row:nth-child(even) .portfolio-copy { grid-column: 1; }
  .cinematic-portfolio .portfolio-row:nth-child(even) .decor-card { grid-row: 1; }
  .cinematic-portfolio .portfolio-row:nth-child(even) .portfolio-copy { grid-row: 2; }
  .cinematic-portfolio .portfolio-row:has(.decor-card-video) .decor-card { width: min(82vw, 390px); }
  .portfolio-copy { padding: 22px 0; }
  .portfolio-copy h3 { margin: 14px 0 22px; font-size: 2.35rem; }
  .portfolio-quote { margin-top: 24px; padding-top: 19px; }
  .design-process-list { gap: 50px; }
  .design-process-pair { grid-template-columns: 1fr; gap: 10px; }
  .design-process-card { aspect-ratio: 4 / 3; }
  .decor-card figcaption { padding: 35px 10px 10px; font-size: 13px; }
  .floating-line-cta { right: 14px; bottom: calc(14px + env(safe-area-inset-bottom)); padding: 10px 14px; }
  .image-lightbox { padding: 5vh 4vw; }
  .image-lightbox-media,
  .image-lightbox img,
  .image-lightbox video { max-width: 92vw; max-height: 90vh; }
  .image-magnifier { display: none; }
  .sub-page main { padding-top: 12vh; }.sub-page main::after { width: 65vw; height: 65vw; right: -20vw; }
  footer { flex-direction: column; gap: 12px; }
}

.contact-channels { display:grid; gap:16px; max-width:880px; margin-top:32px; }
.contact-channel { position:relative; display:grid; gap:10px; padding:26px 64px 26px 28px; border:1px solid var(--line); border-radius:4px; color:var(--ink); text-decoration:none; transition:background .2s,border-color .2s; }
.contact-channel:hover, .contact-channel:focus-visible { background:var(--paper-deep); border-color:#718577; }
.contact-channel-label { font-family:var(--serif); font-size:clamp(21px,3vw,28px); }
.contact-channel-detail { font-size:14px; line-height:1.7; opacity:.75; overflow-wrap:anywhere; }
.contact-channel-arrow { position:absolute; right:26px; top:30px; font-size:24px; }
@media(max-width:600px) { .contact-channel { padding:22px 48px 22px 20px; } .contact-channel-arrow { right:18px; top:25px; } }

/* Preserve the corrected photographic colors on covers and entry images. */
.decor-card video, .decor-card:hover video, .entry-card-image, .entry-card:hover .entry-card-image { filter: none; }

/* Keep the complete vertical gallery board and its floral base visible. */
.cinematic-portfolio .decor-card.gallery-board-portrait { width: min(100%, 560px); aspect-ratio: 3 / 4; justify-self: center; }
.cinematic-portfolio .decor-card.gallery-board-portrait img { object-fit: contain; object-position: center; }

/* The two gallery photographs retain their native proportions at every width. */
.cinematic-portfolio .decor-card.gallery-natural-photo { width: min(100%, 540px); height: auto; aspect-ratio: auto; justify-self: center; align-self: center; background: transparent; }
.cinematic-portfolio .decor-card.gallery-natural-photo img { display: block; width: 100%; height: auto; object-fit: contain; object-position: center; }
/* SeeYou editorial refinement — 2026-10-22 */
:root { --sage-deep:#59695b; --line:rgba(45,37,33,.15); --chinese-serif:'Noto Serif TC',serif; }
body::before { opacity:.09; }
.sub-page main::after { display:none; }
.site-header { height:90px; }
.wedding-nav { padding:15px 6vw; gap:8px 22px; }
.wedding-nav a { font-size:12px; }
.wedding-menu-toggle { display:none; }
h1,h2,h3 { text-wrap:balance; }
.sub-page main.wedding-home,.sub-page main.category-page { max-width:1320px; padding-top:42px; }
.category-page-intro { margin-bottom:24px; }
.category-page-intro .eyebrow { margin-top:24px; }
.sub-page .category-page-intro h1,.decor-section-heading h1 { margin:16px 0 18px; font:400 clamp(30px,4vw,52px)/1.45 var(--chinese-serif); letter-spacing:.035em; }
.decor-section-heading { margin-bottom:40px; }
.decor-section-heading p { font-size:14px; color:#62645d; }
.decor-section-heading h2 { font-family:var(--chinese-serif); font-weight:400; }
.wedding-home .editorial-hero { grid-template-columns:minmax(0,.85fr) minmax(0,1.2fr); gap:clamp(36px,5vw,80px); margin:22px 0 100px; }
.wedding-home .editorial-hero h1 { font:400 clamp(34px,4.1vw,62px)/1.65 var(--chinese-serif); letter-spacing:.04em; margin:22px 0; }
.hero-service { font-size:12px; letter-spacing:.13em; color:var(--sage-deep); margin-bottom:24px; }
.editorial-hero .wedding-lead { font-size:15px; line-height:2.1; color:#62645d; margin-bottom:28px; }
.editorial-hero-image { margin:0; min-width:0; }
.editorial-hero-image img { display:block; width:100%; height:auto; }
.editorial-hero-film video { display:block; width:100%; aspect-ratio:3/2; object-fit:cover; background:#24231f; }
.editorial-hero-image figcaption { display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px; font-size:10px; padding-top:14px; color:#64665f; letter-spacing:.06em; }
.editorial-hero-image figcaption span { font-size:9px; letter-spacing:.15em; }
.hero-actions { display:flex; flex-wrap:wrap; align-items:center; gap:22px; }
.solid-link { display:inline-block; background:#566855; color:#fff; text-decoration:none; padding:16px 23px; font-size:13px; letter-spacing:.07em; border:1px solid #566855; }
.solid-link:hover { background:#384b3a; }
.solid-link:focus-visible,.contact-channel:focus-visible { outline:2px solid #566855; outline-offset:5px; }
.hero-service-note { margin-top:24px; font-size:11px; color:#686b62; line-height:1.8; }
.editorial-section { margin:100px 0; padding-top:55px; border-top:1px solid var(--line); }
.section-topline { display:flex; justify-content:space-between; align-items:end; gap:30px; margin-bottom:42px; }
.section-topline h2,.brand-story h2,.home-invitation h2,.visit-section h2,.consult-preparation h2 { margin:20px 0 0; font:400 clamp(25px,3vw,40px)/1.6 var(--chinese-serif); letter-spacing:.035em; }
.section-topline > p { font-size:13px; color:#62645d; line-height:2; }
.selected-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; align-items:start; }
.selected-work > a { text-decoration:none; color:var(--ink); display:block; }
.selected-work img { width:100%; aspect-ratio:4/3; object-fit:cover; display:block; }
.selected-work h3 { font:400 25px/1.6 var(--chinese-serif); margin:23px 0 10px; }
.selected-work > a > p { font-size:13px; color:#62645d; line-height:1.9; margin-bottom:18px; }
.selected-work .text-link { font-size:12px; }
.pending-photo { display:flex; flex-direction:column; justify-content:center; align-items:flex-start; gap:12px; border:1px dashed #babdb0; padding:26px; min-height:150px; background:rgba(232,233,224,.32); box-sizing:border-box; }
.pending-code { font-size:10px; letter-spacing:.13em; color:#67755f; }
.pending-photo strong { font:400 18px/1.6 var(--chinese-serif); }
.pending-photo p,.pending-copy p,.pending-review p { font-size:13px; color:#64665f; line-height:1.9; margin:0; }
.selected-work .pending-photo { margin-top:28px; min-height:150px; padding:21px; }
.brand-story { display:grid; grid-template-columns:1fr 1fr; gap:8%; align-items:center; }
.brand-story-heading h2 { line-height:1.45; }
.brand-story-signature { margin:28px 0 0; color:#657261; font:400 14px/1.9 var(--chinese-serif); letter-spacing:.06em; }
.brand-story-copy { padding-left:8%; border-left:1px solid var(--line); }
.brand-story-copy p { margin:0; color:#5f625b; font-size:14px; line-height:2.2; }
.brand-story-copy p + p { margin-top:22px; }
.pending-copy { border-left:2px solid #bbc3b2; padding:20px 24px; margin-top:25px; }
.pending-copy p { margin-top:14px; }
.services-heading { padding-top:30px; }
.home-categories { grid-template-columns:1fr 1fr; gap:46px 32px; }
.home-category { display:block; border:0; border-top:1px solid var(--line); background:transparent; padding-top:18px; }
.home-category-media { aspect-ratio:16/10; }
.home-category-media img { width:100%; height:100%; max-height:none; object-fit:cover; object-position:center; }
.selected-work img[src*="photo-06-clean-balanced"],
.home-category-media img[src*="photo-06-clean-balanced"],
.decor-card img[src*="photo-06-clean-balanced"] { filter:brightness(.94) contrast(1.03) saturate(.97); }
.home-category-copy { padding:24px 0 0; }
.category-number { font-size:14px; }
.category-scope { font-size:11px; color:#64715e; letter-spacing:.1em; margin-top:12px; }
.home-category h2 { font:400 clamp(24px,2.6vw,34px)/1.6 var(--chinese-serif); margin:12px 0; }
.category-description { margin:4px 0 20px; gap:5px; }
.category-description p { color:#62645d; font-size:13px; }
.category-fit { display:block; margin:2px 0 11px; color:#4f6250; font-size:12px; line-height:1.7; }
.category-price { font-size:12px; margin-bottom:14px; letter-spacing:.02em; }
.category-enter { margin-top:10px; }
.home-process-feature { margin-top:100px; }
.home-process-copy h2 { font-family:var(--chinese-serif); font-weight:400; font-size:clamp(28px,3.3vw,44px); line-height:1.65; letter-spacing:.01em; }
.reviews-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:28px; }
.review-card { margin:0; overflow:visible; background:transparent; cursor:zoom-in; }
.review-card img,.review-card:hover img { display:block; width:100%; height:auto; aspect-ratio:4 / 5; object-fit:cover; object-position:top center; background:#f0ebe1; transform:none; }
.review-card figcaption { position:static; display:grid; gap:8px; padding:18px 0 0; color:var(--ink); background:none; font-family:var(--sans); }
.review-card figcaption span { font-size:10px; color:#657261; letter-spacing:.13em; }
.review-quote { margin:4px 0 0; color:#2f302c; font:400 20px/1.7 var(--chinese-serif); quotes:'「' '」'; }
.review-card figcaption strong { font:400 18px/1.65 var(--chinese-serif); }
.review-card figcaption small { font-size:10px; color:#777; letter-spacing:.08em; }
.pending-review { padding:28px 23px; border-top:1px solid #9aa58f; background:rgba(232,233,224,.25); }
.pending-review h3 { font:400 21px/1.6 var(--chinese-serif); margin:24px 0 14px; }
.home-invitation { text-align:center; padding:65px 20px 35px; }
.home-invitation .eyebrow { justify-content:center; }
.home-invitation p:not(.eyebrow) { font-size:14px; line-height:2; color:#62645d; margin:24px 0 30px; }
.cinematic-portfolio .portfolio-row { gap:clamp(28px,5vw,72px); }
.story-group-nav { display:flex; flex-wrap:wrap; gap:10px 24px; margin:12px 0 58px; padding:18px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.story-group-nav a { color:#4f5f4d; font-size:12px; letter-spacing:.08em; text-decoration:none; }
.story-grouped-grid { display:block; }
.portfolio-group { margin:0 0 clamp(90px,12vw,160px); scroll-margin-top:120px; }
.portfolio-group-heading { display:flex; align-items:baseline; gap:18px; margin-bottom:42px; padding-bottom:17px; border-bottom:1px solid var(--line); }
.portfolio-group-heading span { color:#73816d; font:italic 13px var(--serif); }
.portfolio-group-heading h2 { margin:0; font:400 clamp(28px,3vw,42px)/1.4 var(--chinese-serif); }
.portfolio-group-body { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:clamp(42px,5vw,76px) clamp(24px,4vw,54px); }
.portfolio-group-body .portfolio-row { display:grid; grid-template-columns:1fr; gap:16px; align-content:start; }
.portfolio-group-body .portfolio-row:nth-child(even) { grid-template-columns:1fr; }
.portfolio-group-body .portfolio-row:nth-child(even) .decor-card,
.portfolio-group-body .portfolio-row:nth-child(even) .portfolio-copy { grid-column:1; }
.portfolio-group-body .portfolio-row:nth-child(even) .decor-card { grid-row:1; }
.portfolio-group-body .portfolio-row:nth-child(even) .portfolio-copy { grid-row:2; }
.story-grouped-grid .decor-card { width:100% !important; aspect-ratio:4 / 3 !important; max-width:none !important; justify-self:stretch !important; }
.story-grouped-grid .decor-card-tall,
.story-grouped-grid .gallery-natural-photo,
.story-grouped-grid .stage-portrait { width:100%; aspect-ratio:4 / 3 !important; justify-self:stretch; }
.portfolio-group-body .portfolio-copy { padding:8px 0 0; }
.portfolio-group-body .portfolio-copy h3 { margin:8px 0 14px; font-size:clamp(23px,2.2vw,32px); }
.portfolio-group-body .portfolio-detail { line-height:1.85; }
.portfolio-group-body .portfolio-quote { margin-top:18px; padding-top:14px; }
.story-grouped-grid img[src*="entrance-photographic"] { filter:brightness(1.04) contrast(1.06) saturate(.92); }
.decor-card img[src*="pastel-photographic"] { filter:brightness(1.03) contrast(1.08) saturate(.86); }
.portfolio-copy { border:0; padding:20px 0; }
.portfolio-copy h3 { font:400 clamp(26px,3.1vw,42px)/1.6 var(--chinese-serif); letter-spacing:.02em; margin:12px 0 22px; }
.portfolio-index { font-size:12px; }
.portfolio-detail { font-size:14px; line-height:2.1; color:#5f645b; }
.portfolio-quote { border-top:1px solid var(--line); padding-top:20px; margin-top:26px; }
.portfolio-quote > p { display:flex; flex-wrap:wrap; align-items:baseline; gap:15px; }
.portfolio-quote > p b { font-size:11px; font-weight:400; color:#64715e; }
.portfolio-quote > p span { font-size:14px; }
.portfolio-note { margin:18px 0; font-size:12px; color:#62645d; line-height:1.9; }
.portfolio-note summary { cursor:pointer; color:#4e604b; padding:6px 0; }
.portfolio-note > span { display:block; padding:10px 0; }
.work-inquiry { margin-top:15px; font-size:12px; }
.contact-editorial { padding:10px 0 45px; }
.contact-content h2 { font-family:var(--chinese-serif); font-weight:400; }
.contact-channels { max-width:none; grid-template-columns:1.3fr 1fr 1fr; align-items:stretch; gap:18px; }
.contact-channel { padding:25px 40px 25px 22px; }
.contact-channel-label { font-family:var(--chinese-serif); font-size:21px; }
.contact-channel-detail { font-size:12px; }
.contact-channel-arrow { right:16px; font-size:18px; }
.contact-primary { border-color:#64745d; background:rgba(225,231,218,.42); }
.visit-section { display:grid; grid-template-columns:minmax(0,1.15fr) minmax(0,1fr); gap:8%; align-items:center; padding:60px 0; margin-top:20px; border-top:1px solid var(--line); }
.visit-section:not(:has(.pending-photo, .storefront-photo)) { display:block; max-width:760px; }
.visit-facts { display:grid; gap:25px; margin:30px 0; }
.visit-facts dt { font-size:11px; color:#65735e; letter-spacing:.1em; margin-bottom:9px; }
.visit-facts dd { margin:0; font-size:15px; line-height:1.9; }
.visit-section .pending-photo { align-self:center; min-height:260px; }
.consult-preparation { margin:35px 0 10px; border-top:1px solid var(--line); padding-top:45px; }
.consult-preparation ol { display:grid; grid-template-columns:1fr 1fr; gap:0 40px; padding:0; list-style:none; margin-top:30px; counter-reset:prep; }
.consult-preparation li { display:grid; gap:12px; position:relative; padding:26px 0 26px 34px; border-top:1px solid var(--line); counter-increment:prep; }
.consult-preparation li::before { content:'0' counter(prep); position:absolute; left:0; top:28px; font:italic 12px var(--serif); color:#64715e; }
.consult-preparation b { font-size:15px; font-weight:500; }
.consult-preparation li span { font-size:13px; line-height:1.8; color:#62645d; }
.brand-footer { align-items:start; gap:25px; flex-wrap:wrap; padding:35px 6vw; font-size:11px; letter-spacing:.02em; }
.brand-footer a { color:var(--ink); text-decoration:none; }
.brand-footer p { margin:8px 0; line-height:1.8; }
.brand-footer > div:first-child > a { letter-spacing:.15em; }
@media(max-width:900px) {
 .wedding-home .editorial-hero { grid-template-columns:1fr; gap:32px; margin-bottom:65px; }
 .editorial-hero-image { max-width:750px; }
 .editorial-hero .wedding-lead { max-width:560px; }
 .selected-grid { gap:18px; }
 .contact-channels { grid-template-columns:1fr; }
 .contact-channel { padding:24px; }
 .editorial-section { margin:70px 0; }
}
@media(max-width:600px) {
 .site-header { height:80px; padding:0 6vw; }
 .brand-logo { width:44px; height:44px; }
 .nav-cta { padding:11px 12px; font-size:11px; }
 .wedding-menu-toggle { display:block; width:100%; text-align:left; padding:16px 6vw; background:transparent; border:0; border-bottom:1px solid var(--line); font:13px var(--sans); color:var(--ink); }
 .wedding-nav { display:none; grid-template-columns:1fr 1fr; gap:10px 20px; padding:18px 6vw; }
 .wedding-nav.nav-expanded { display:grid; }
 .wedding-nav a { padding:7px 0; font-size:12px; }
 .sub-page main.wedding-home,.sub-page main.category-page { padding-top:26px; }
 .wedding-home .editorial-hero { margin-top:10px; }
 .wedding-home .editorial-hero h1 { font-size:32px; line-height:1.7; }
 .hero-service { font-size:11px; letter-spacing:.07em; }
 .hero-actions { gap:20px; }
 .editorial-section { padding-top:35px; }
 .section-topline { display:block; margin-bottom:30px; }
 .section-topline > p { margin-top:20px; }
 .selected-grid,.brand-story,.reviews-grid,.home-categories,.visit-section { grid-template-columns:1fr; gap:35px; }
 .selected-work .pending-photo { min-height:110px; }
 .brand-story-copy { padding:26px 0 0; border-left:0; border-top:1px solid var(--line); }
 .brand-story-copy p:first-child { display:none; }
 .home-category-media { aspect-ratio:16 / 9; }
 .home-category-copy { padding-top:14px; }
 .home-categories { gap:28px; }
 .home-category h2 { margin:8px 0; font-size:23px; }
 .category-scope { margin-top:8px; }
 .category-description { margin:2px 0 12px; }
 .category-description p { font-size:13px; line-height:1.75; }
 .category-description p + p { display:none; }
 .category-fit { margin:1px 0 8px; font-size:11px; }
 .category-price { margin-bottom:8px; font-size:11px; }
 .category-enter { margin-top:5px; font-size:11px; }
 .home-process-gallery { min-height:360px; }
 .review-card img,.review-card:hover img { aspect-ratio:4 / 3; }
 .review-quote { font-size:18px; }
 .story-group-nav { position:sticky; top:0; z-index:4; margin:0 0 38px; padding:13px 0; background:rgba(247,244,237,.96); gap:8px 16px; }
 .story-group-nav a { font-size:11px; }
 .portfolio-group-body { grid-template-columns:1fr; gap:42px; }
 .portfolio-group-body .portfolio-row { gap:12px; }
 .portfolio-group-body .portfolio-copy { padding-top:4px; }
 .portfolio-group-body .portfolio-copy h3 { margin:6px 0 12px; font-size:2rem; }
 .portfolio-group { margin-bottom:82px; }
 .portfolio-group-heading { margin-bottom:28px; }
 .portfolio-group-body { gap:48px; }
 .consult-preparation ol { grid-template-columns:1fr; }
 .visit-facts dd { font-size:14px; }
 .home-invitation { padding:40px 0; }
 .brand-footer { flex-direction:column; padding-bottom:85px; }
 .floating-line-cta { padding:10px 13px; font-size:10px; }
}
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } }

.home-film { margin:-65px 0 60px; max-width:820px; }
.home-film summary { display:flex; justify-content:space-between; padding:17px 0; border-bottom:1px solid var(--line); cursor:pointer; color:#58694f; font-size:12px; letter-spacing:.06em; }
.home-film video { display:block; width:100%; aspect-ratio:16 / 9; margin-top:20px; background:#24231f; }
@media(max-width:600px) { .home-film { margin:-32px 0 50px; } }

/* Portraits retain their native height; people must never be cropped by a landscape card. */
.cinematic-portfolio .decor-card.bouquet-full-photo { width:min(100%,520px); height:auto; aspect-ratio:auto; justify-self:center; align-self:center; background:transparent; }
.cinematic-portfolio .decor-card.bouquet-full-photo img { display:block; width:100%; height:auto; object-fit:contain; object-position:center; max-height:none; }
.storefront-photo { margin:0; max-width:500px; align-self:center; justify-self:center; width:100%; }
.storefront-photo img { display:block; width:100%; height:auto; }
.storefront-photo figcaption { margin-top:14px; font-size:11px; line-height:1.8; color:#62645d; }
/* Mobile story collections: quick overview first, full portraits on demand. */
.story-mobile-overview { display:none; }
.story-detail-dialog { width:min(92vw,600px); max-width:600px; max-height:90dvh; padding:0; border:0; background:var(--paper); color:var(--ink); overflow:auto; overscroll-behavior:contain; box-shadow:0 25px 80px #0005; }
.story-detail-dialog::backdrop { background:rgba(25,25,22,.76); }
.story-dialog-bar { display:flex; justify-content:space-between; align-items:center; padding:15px 20px; background:var(--paper); position:sticky; top:0; z-index:1; border-bottom:1px solid var(--line); }
.story-dialog-bar > span { font-size:9px; letter-spacing:.15em; }
.story-dialog-close { min-height:44px; padding:8px 12px; border:0; color:var(--ink); background:transparent; font:13px var(--sans); cursor:pointer; }
.story-detail-image { display:block; width:100%; height:auto; max-height:52dvh; object-fit:contain; background:#e9e7df; }
.story-dialog-copy { padding:22px; }
.story-dialog-copy h2 { font:400 27px/1.5 var(--chinese-serif); margin:0 0 18px; }
.story-dialog-copy p { font-size:13px; line-height:1.9; margin:14px 0; }
.story-dialog-copy .story-detail-price { border-top:1px solid var(--line); padding-top:16px; }
.story-detail-note { color:#62645d; }
.story-dialog-copy .solid-link { margin-top:12px; }
body.story-dialog-open { overflow:hidden; }
@media(max-width:820px) {
 .story-compact-ready .decor-grid-options { display:none; }
 .story-mobile-overview { display:block; }
 .story-browse-hint { font-size:13px; line-height:1.9; color:#62645d; margin:0 0 20px; }
 .story-filters { display:flex; flex-wrap:wrap; gap:8px; padding-bottom:24px; border-bottom:1px solid var(--line); }
 .story-filters button { min-height:42px; padding:9px 14px; border:1px solid var(--line); border-radius:22px; font:12px var(--sans); background:transparent; color:var(--ink); cursor:pointer; }
 .story-filters button[aria-pressed="true"] { background:#566855; color:#fff; border-color:#566855; }
 .story-group { margin:32px 0 42px; }
 .story-group[hidden],.story-thumbnail[hidden] { display:none; }
 .story-group h2 { display:flex; align-items:baseline; justify-content:space-between; font:400 23px/1.6 var(--chinese-serif); margin:0 0 18px; }
 .story-group h2 span { font:italic 12px var(--serif); color:#67755f; }
 .story-thumbnail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 14px; }
 .story-thumbnail { display:block; min-width:0; padding:0; border:0; background:transparent; color:var(--ink); text-align:left; cursor:pointer; }
 .story-thumbnail img { display:block; width:100%; height:auto; aspect-ratio:4 / 3; object-fit:contain; background:#eeeae2; }
 .story-thumbnail > span { display:block; padding-top:11px; font:400 15px/1.7 var(--chinese-serif); }
 .story-thumbnail:focus-visible,.story-filters button:focus-visible,.story-show-more:focus-visible { outline:2px solid #566855; outline-offset:4px; }
 .story-show-more { display:block; width:100%; margin-top:24px; min-height:44px; border:1px solid var(--line); padding:12px; background:transparent; color:#4e604b; font:12px var(--sans); cursor:pointer; }
}

@media(max-width:820px) { .story-compact-ready .story-group-nav { display:none; } .story-compact-ready .decor-section-heading { margin-bottom:24px; } }

/* Full original scenes on a quiet beige desktop canvas. */
@media(min-width:821px) {
 body.story-full-desktop.cinematic-portfolio .decor-card { width:100%!important; max-width:none!important; height:520px!important; aspect-ratio:auto!important; background:#e9e3db; justify-self:stretch!important; }
 body.story-full-desktop.cinematic-portfolio .decor-card img { display:block; width:100%!important; height:100%!important; max-height:none!important; object-fit:contain!important; object-position:center!important; transform:none!important; }
}
@media(max-width:600px) {
 .wedding-home .home-category { display:grid; grid-template-columns:100px minmax(0,1fr); gap:17px; align-items:center; padding:18px 0; border-bottom:1px solid var(--line); }
 .wedding-home .home-category-media { width:100px; height:132px; aspect-ratio:auto; background:var(--paper-deep); }
 .wedding-home .home-category-media img { width:100%; height:100%; object-fit:contain; }
 .wedding-home .home-category-copy { padding:0; }
 .wedding-home .home-category h2 { font-size:19px; margin:5px 0 9px; }
 .wedding-home .category-description,.wedding-home .category-scope { display:none; }
 .wedding-home .category-fit { display:block; }
 .wedding-home .category-price { line-height:1.7; margin-bottom:5px; }
 .wedding-home .home-categories { gap:0; }
 .wedding-home .selected-grid,.wedding-home .reviews-grid { display:flex; overflow-x:auto; gap:18px; scroll-snap-type:x mandatory; padding-bottom:16px; }
 .wedding-home .selected-work,.wedding-home .review-card { flex:0 0 85%; min-width:0; scroll-snap-align:start; }
 .wedding-home .home-process-gallery { display:flex; overflow-x:auto; min-height:0; gap:12px; scroll-snap-type:x mandatory; }
 .wedding-home .home-process-gallery figure { flex:0 0 85%; height:220px; scroll-snap-align:start; }
 .wedding-home .home-process-gallery img { object-fit:contain; }
 .wedding-home .editorial-section { margin-bottom:36px; }
}

.brand-story-english { margin:12px 0 0; color:#657261; font:400 13px/1.7 var(--serif); letter-spacing:.08em; }

.portfolio-note-visible { margin-top:14px; font-size:14px; line-height:1.9; }
.portfolio-note-visible b,.portfolio-note-visible span { display:block; }
.portfolio-note-visible b { margin-bottom:5px; font-size:12px; font-weight:500; }
.selected-inquiry { margin:26px 0; padding:22px; border:1px solid var(--line); }
.selected-inquiry label { display:block; font-size:14px; line-height:1.8; }
.selected-inquiry textarea { display:block; box-sizing:border-box; width:100%; margin:14px 0; padding:12px; font:14px/1.8 var(--sans); color:var(--ink); background:var(--paper); border:1px solid var(--line); }
.selected-inquiry button { cursor:pointer; padding:12px 18px; border:1px solid var(--ink); background:var(--ink); color:var(--paper); font:14px var(--sans); }
.selected-inquiry [role=status] { font-size:13px; line-height:1.8; }
@media(max-width:600px) { .wedding-home .category-fit { display:block; font-size:14px; line-height:1.85; margin:6px 0 12px; } }

/* Keep size-specific quotation rows readable on desktop and in mobile details. */
.portfolio-quote > p span,.story-dialog-copy .story-detail-price { white-space:pre-line; line-height:1.9; }

/* Center the header CTA independently of text and arrow font baselines. */
.site-header .nav-cta { display:inline-flex; align-items:center; justify-content:center; gap:8px; line-height:1; white-space:nowrap; box-sizing:border-box; text-align:center; }
.site-header .nav-cta span { display:block; flex:none; margin:0; line-height:1; }

/* Two complementary green actions on the home hero. */
.wedding-home .hero-actions { gap:14px; align-items:stretch; }
.wedding-home .hero-actions > a { display:inline-flex; align-items:center; justify-content:center; box-sizing:border-box; min-height:52px; padding:16px 23px; line-height:1.4; }
.wedding-home .hero-actions > .text-link { background:#d8e1d2; border:1px solid #d8e1d2; color:#30452f; font-size:13px; letter-spacing:.07em; text-decoration:none; }
.wedding-home .hero-actions > .text-link:hover { background:#c4d2bc; border-color:#c4d2bc; }
.wedding-home .hero-actions > .text-link:focus-visible { outline:2px solid #566855; outline-offset:5px; }
@media(max-width:600px) { .wedding-home .hero-actions { gap:10px; } .wedding-home .hero-actions > a { flex:1 1 auto; padding:14px 16px; font-size:12px; min-height:48px; } }

/* Approved SeeYou wordmark: preserve its staggered composition at every size. */
.site-header { height:126px; }
.site-header .brand { display:block; flex:none; line-height:0; }
.site-header .brand-logo { display:block; width:174px; height:auto; aspect-ratio:1160 / 655; object-fit:contain; background:transparent; mix-blend-mode:multiply; }
.footer-brand { display:inline-block; line-height:0; }
.footer-logo { display:block; width:216px; max-width:100%; height:auto; mix-blend-mode:multiply; }
.brand:focus-visible,.footer-brand:focus-visible { outline:2px solid #566855; outline-offset:6px; }
@media(max-width:600px) {
 .site-header { height:106px; gap:18px; }
 .site-header .brand-logo { width:144px; height:auto; }
 .brand-footer .footer-logo { width:190px; }
}

.mobile-work-browser { display:none; }
.mobile-work-dialog { width:min(92vw,640px); max-height:90dvh; padding:18px; border:0; background:var(--paper); color:var(--ink); overflow:auto; }
.mobile-work-dialog::backdrop { background:rgba(27,31,24,.7); }
.mobile-work-close { display:block; margin:0 0 14px auto; padding:10px 14px; background:transparent; border:1px solid var(--line); font:13px var(--sans); color:var(--ink); cursor:pointer; }
.mobile-work-media img,.mobile-work-media video { display:block; width:100%; height:auto; max-height:52dvh; object-fit:contain; background:#e9e3db; }
.mobile-work-details { padding:18px 4px; }.mobile-work-details h2 { font:400 26px/1.6 var(--chinese-serif); margin:0 0 14px; }.mobile-work-details p { font-size:14px; line-height:1.9; white-space:pre-line; }.mobile-work-details .solid-link { margin-top:16px; }
.mobile-work-open { overflow:hidden; }
@media(max-width:820px) {
 .mobile-work-ready .decor-grid:not(.decor-grid-options) { display:none!important; }
 .mobile-work-browser { display:block; margin-bottom:30px; }
 .mobile-work-bar { display:flex; justify-content:space-between; align-items:center; gap:10px; margin:0 0 16px; font-size:11px; color:#53634e; }
 .mobile-work-counter { white-space:nowrap; font-variant-numeric:tabular-nums; }
 .mobile-work-track { position:relative; display:flex; gap:16px; overflow-x:auto; scroll-snap-type:x mandatory; overscroll-behavior-x:contain; padding:0 0 18px; scrollbar-width:thin; }
 .mobile-work-card { flex:0 0 89%; min-width:0; padding:0 0 18px; border:0; border-bottom:1px solid var(--line); background:transparent; color:var(--ink); text-align:left; scroll-snap-align:start; cursor:pointer; }
 .mobile-work-card:last-child { margin-right:11%; }
 .mobile-work-card img { display:block; width:100%; height:clamp(220px,42dvh,380px); object-fit:contain; background:#e9e3db; }
 .mobile-work-title { display:block; margin:18px 0 10px; font:400 24px/1.5 var(--chinese-serif); }
 .mobile-work-card-price { display:block; font:13px/1.8 var(--sans); white-space:pre-line; }
 .mobile-work-card-hint { display:block; margin-top:16px; color:#53634e; font:12px/1.6 var(--sans); }
 .mobile-work-controls { display:flex; justify-content:space-between; gap:20px; margin-top:8px; }
 .mobile-work-controls button { min-height:44px; padding:10px 16px; background:transparent; border:1px solid var(--line); color:var(--ink); font:12px var(--sans); cursor:pointer; }
 .mobile-work-controls button:disabled { opacity:.35; cursor:default; }
 .mobile-work-card:focus-visible,.mobile-work-controls button:focus-visible { outline:2px solid #566855; outline-offset:3px; }
}

@media(max-width:820px) { .mobile-work-ready .decor-sections,.mobile-work-ready .decor-section,.mobile-work-ready .mobile-work-browser,.mobile-work-ready .mobile-work-track { min-width:0; max-width:100%; width:100%; box-sizing:border-box; } }

/* Consistent photo canvases preserve the real scene and original colors. */
.editorial-hero-still { background:#e9e3db; }.editorial-hero-still img { width:100%; height:auto; aspect-ratio:3/2; object-fit:contain; }.editorial-hero-still figcaption { background:var(--paper); }
.cinematic-portfolio .decor-card:not(.decor-card-video) { background:#e9e3db; }
.cinematic-portfolio .decor-card img,.cinematic-portfolio .decor-card:hover img { object-fit:contain!important; object-position:center!important; transform:none!important; filter:none!important; }
.cinematic-portfolio .decor-card video { object-fit:contain!important; background:#e9e3db; }
.wedding-home .selected-work img,.wedding-home .home-category-media img { object-fit:contain; background:#e9e3db; transform:none; filter:none; }
.mobile-work-card img,.story-thumbnail img { background:#e9e3db; }
.home-film video { object-fit:contain; background:#e9e3db; }

.home-process-gallery.process-six-gallery { grid-template-columns:repeat(3,minmax(0,1fr)); grid-template-rows:repeat(2,220px); min-height:0; align-self:center; }
.home-process-gallery.process-six-gallery figure:first-child { grid-column:auto; grid-row:auto; }
.home-process-gallery.process-six-gallery img { width:100%; height:100%; object-fit:contain; background:#e9e3db; }
@media(min-width:601px) and (max-width:1000px) { .home-process-gallery.process-six-gallery { grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:repeat(3,230px); } }
@media(max-width:600px) { .wedding-home .home-process-gallery.process-six-gallery { display:flex; min-height:0; } .wedding-home .home-process-gallery.process-six-gallery figure { flex:0 0 85%; height:290px; } }
