.portfolio-grid{gap:40px 28px}
.portfolio-card{align-self:start}
.portfolio-card>img{display:block;height:auto;aspect-ratio:4/3;object-fit:cover}
.portfolio-card h3{font-family:inherit;font-size:20px;font-weight:500;line-height:1.55;letter-spacing:-.025em;margin:18px 0 8px;word-break:keep-all;color:#303330}
.portfolio-card .portfolio-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin:0;font-size:14px;line-height:1.7;color:#696b64}
.portfolio-meta span+span{border-left:1px solid #d4d3cb;padding-left:12px}
.portfolio-card:focus-visible{outline:2px solid #777c70;outline-offset:7px}
.portfolio-card:hover h3{color:#626c59}
#project-body .project-design-title{font-family:inherit;font-size:clamp(25px,3vw,36px);font-weight:500;line-height:1.45;letter-spacing:-.03em;margin:12px 0 16px;word-break:keep-all}
#project-body .project-client-line{display:flex;align-items:center;gap:16px;margin:0 0 26px}
#project-body .project-client-line p{margin:0;font-size:15px;line-height:1.8;color:#64665f}
#project-body .project-client-line p span{display:block;font-size:14px;color:#74766e}
#project-body .project-client-line .project-logo{max-width:100px;max-height:44px;margin:0}
#project-body .project-cover,#project-body .project-detail-photo{display:block;width:100%;height:auto;object-fit:contain;margin:0 0 22px}
#project-body .project-description{font-size:16px;line-height:1.9;color:#565b52;margin:26px 0 32px;word-break:keep-all}
@media(max-width:760px){.portfolio-grid{gap:28px 16px}.portfolio-card h3{font-size:17px;margin-top:12px}.portfolio-card .portfolio-meta{display:block;font-size:13px}.portfolio-meta span{display:block}.portfolio-meta span+span{border:0;padding:0}.portfolio-card>img{height:auto;aspect-ratio:4/3}}

/* Client name follows the design caption, aligned to the lower right. */
.portfolio-card .portfolio-meta{display:block;text-align:right;margin-top:10px;font-size:15px;font-weight:500;line-height:1.65;color:#5f615b}
#project-body .project-client-line{justify-content:flex-end;text-align:right}
@media(max-width:760px){.portfolio-card .portfolio-meta{font-size:14px;margin-top:8px}}

/* Two desktop rows, generous single-column mobile images. */
.portfolio-page .portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.portfolio-more{display:flex;justify-content:center;margin-top:44px}
.portfolio-more:has(button[hidden]){display:none}
#load-more{display:inline-flex;align-items:center;justify-content:center;gap:36px;min-height:50px;padding:13px 28px;border:1px solid #d5d5cd;border-radius:3px;background:#eeeee8;color:#444a41;font-size:14px;letter-spacing:-.01em;transition:background-color .2s,color .2s}
#load-more:hover{background:#dbded4;color:#30382b}
#load-more:focus-visible{outline:2px solid #727b68;outline-offset:4px}
#load-more[hidden]{display:none}
@media(max-width:1100px) and (min-width:761px){.portfolio-page .portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.portfolio-page .portfolio-grid{grid-template-columns:1fr;gap:32px}.portfolio-more{margin-top:30px}#load-more{width:100%;min-height:50px;gap:24px}}
@media(prefers-reduced-motion:reduce){#load-more{transition:none}}

/* Curtain collection: photographs without captions. */
.curtain-gallery #category-tabs,.curtain-gallery #sub-tabs{display:none}
.curtain-gallery .portfolio-card{padding:0;border:0;background:transparent}
.curtain-gallery .portfolio-grid{gap:24px}
@media(max-width:760px){.curtain-gallery .portfolio-grid{gap:20px}}

/* Photo-led curtain gallery: consistent rhythm, full-size viewer. */
.curtain-gallery .portfolio-page{padding-top:64px;padding-bottom:72px}
.curtain-gallery .portfolio-page>.eyebrow{margin-bottom:14px;color:#797b73}
.curtain-gallery .portfolio-page h1{font-size:36px;line-height:1.4;margin-bottom:36px}
.curtain-gallery #result-status:empty{display:none}
.curtain-gallery .portfolio-page .portfolio-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.curtain-gallery .gallery-photo{overflow:hidden;line-height:0}
.curtain-gallery .gallery-photo img{width:100%;aspect-ratio:4/3;object-fit:cover;transition:transform .35s ease}
@media(hover:hover){.curtain-gallery .gallery-photo:hover img{transform:scale(1.025)}}
#project-view.photo-viewer{width:calc(100% - 48px);max-width:1300px;max-height:94svh;padding:20px 24px;background:#f6f5f0}
#project-view.photo-viewer .close{margin-bottom:12px;min-height:44px;padding:8px 12px}
#project-view.photo-viewer #gallery-image{display:block;width:100%;height:calc(84svh - 130px);max-height:none;object-fit:contain;margin:0}
.gallery-stage{touch-action:pan-y pinch-zoom}
.gallery-controls{display:flex;justify-content:center;align-items:center;gap:28px;margin-top:14px}
.gallery-controls button{display:grid;place-items:center;width:44px;height:44px;padding:10px;border:1px solid #d4d4cb;background:transparent;border-radius:50%}
.gallery-controls button:hover{background:#e7e6de}
.gallery-controls svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5}
#gallery-count{min-width:64px;text-align:center;font:14px/1.5 Arial,sans-serif;font-variant-numeric:tabular-nums;color:#686b61}
@media(max-width:760px){
 .curtain-gallery .portfolio-page{padding-top:36px;padding-bottom:48px}
 .curtain-gallery .portfolio-page h1{font-size:27px;margin-bottom:24px}
 .curtain-gallery .portfolio-page .portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
 .curtain-gallery .gallery-photo img{aspect-ratio:1/1}
 #project-view.photo-viewer{width:calc(100% - 16px);padding:12px;max-height:94svh}
 #project-view.photo-viewer #gallery-image{height:calc(80svh - 120px)}
}
@media(prefers-reduced-motion:reduce){.curtain-gallery .gallery-photo img{transition:none}}

/* Product introduction above the photo gallery. */
.curtain-intro{display:grid;grid-template-columns:1.45fr 1fr;align-items:center;gap:48px;margin:0 0 64px}
.curtain-intro-image{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.curtain-intro-copy>.eyebrow{font-size:11px;letter-spacing:.18em;color:#777b72;margin-bottom:20px}
.curtain-intro-copy h2{font-size:clamp(21px,2vw,29px);line-height:1.65;letter-spacing:-.03em}
.curtain-intro-description{font-size:15px;line-height:1.9;color:#686c63;margin-top:22px}
.curtain-consult-button{display:inline-flex;align-items:center;gap:10px;margin-top:30px;padding:13px 20px;min-height:48px;background:#e8e7df;color:#3c433a;border:1px solid #d3d4ca;font-size:14px;font-weight:500;transition:background .2s}
.curtain-consult-button:hover{background:#d7d9ce}
.curtain-consult-button svg{width:20px;height:20px;flex:none}
@media(max-width:1000px) and (min-width:761px){.curtain-intro{gap:28px}.curtain-intro-description br{display:none}}
@media(max-width:760px){.curtain-intro{grid-template-columns:1fr;gap:24px;margin-bottom:40px}.curtain-intro-image{aspect-ratio:4/3}.curtain-intro-copy>.eyebrow{margin-bottom:12px}.curtain-intro-copy h2{font-size:22px}.curtain-intro-description{font-size:14px;margin-top:16px}.curtain-intro-description br{display:none}.curtain-consult-button{margin-top:22px;width:100%;justify-content:center}}

/* Preserve the full selected curtain photograph. */
.curtain-intro-image{aspect-ratio:auto;height:auto;object-fit:contain}
@media(max-width:760px){.curtain-intro-image{aspect-ratio:auto}}

/* Explicit curtain gallery columns, independent of shared portfolio rules. */
body.curtain-gallery #portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:24px}
body.curtain-gallery #portfolio-grid>.gallery-photo{min-width:0;width:100%;margin:0}
@media(max-width:760px){body.curtain-gallery #portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}}

/* Spa photography: portrait framing and restrained, reversible display grading. */
.portfolio-card[data-category="aesthetic"]>img{aspect-ratio:3/4;object-fit:cover;object-position:50% 58%;filter:var(--spa-tone,none);background:#eeece6}
#project-view[data-category="aesthetic"] .project-cover,
#project-view[data-category="aesthetic"] .project-detail-photo{width:100%;height:auto;max-height:78svh;object-fit:contain;filter:var(--spa-tone,none);background:#f4f2ed}
[data-id="aesthetic-casa"],[data-project="aesthetic-casa"]{--spa-tone:brightness(1.08) saturate(.80)}
[data-id="aesthetic-gate"],[data-project="aesthetic-gate"]{--spa-tone:brightness(1.16) contrast(.94) saturate(.77)}
[data-id="aesthetic-seoulistique"],[data-project="aesthetic-seoulistique"]{--spa-tone:brightness(1.06) saturate(.82)}
[data-id="aesthetic-face"],[data-project="aesthetic-face"]{--spa-tone:brightness(1.07) saturate(.90)}
[data-id="aesthetic-nuonne"],[data-project="aesthetic-nuonne"]{--spa-tone:brightness(1.12) contrast(.98) saturate(.80)}
.portfolio-card[data-id="aesthetic-nuonne"]>img{object-position:50% 70%}
@media(max-width:760px){
 .portfolio-card[data-category="aesthetic"]>img{aspect-ratio:3/4}
 #project-view[data-category="aesthetic"] .project-cover,
 #project-view[data-category="aesthetic"] .project-detail-photo{max-height:72svh;margin-bottom:18px}
}

/* Bedding keeps full bed silhouettes and fabric drape visible. */
body.bedding-gallery .gallery-photo{background:#f0efea}
body.bedding-gallery .gallery-photo img{aspect-ratio:3/4;object-fit:contain;height:auto;background:#f0efea}
#bedding-intro[hidden]{display:none}
body.bedding-gallery #bedding-intro .curtain-intro-image{aspect-ratio:auto;object-fit:contain}

body.bedding-gallery .gallery-photo[data-orientation="landscape"] img{aspect-ratio:3/2}
body.bedding-gallery .gallery-photo[data-orientation="portrait"] img{aspect-ratio:2/3}

/* Uniform bedding thumbnails; full original remains in the photo viewer. */
body.bedding-gallery .gallery-photo img,
body.bedding-gallery .gallery-photo[data-orientation="landscape"] img,
body.bedding-gallery .gallery-photo[data-orientation="portrait"] img{aspect-ratio:4/3;object-fit:cover;object-position:center 65%;width:100%;height:auto}
