/* Keep the approved Chinese text tracks as the geometry for both languages.
   The visible English copy fits inside those tracks instead of pushing icons. */
.edition-v3 #invitation .translation-slot.stable-copy{position:relative}
.edition-v3 #invitation .stable-copy>.copy-anchor-zh{display:block!important}
.edition-v3 #invitation .stable-copy>.copy-english{
 position:absolute;inset:0 auto auto 0;width:100%;max-width:100%;
 margin:0;white-space:normal;overflow-wrap:normal;word-break:normal;
 font-size:14px;line-height:inherit;
}
.edition-v3 #invitation .stable-copy>.copy-english[aria-hidden="true"]{display:none!important}
.edition-v3 #invitation .page-dress .attire-intro .copy-english{font-size:15px}
.edition-v3 #invitation .page-dress .attire-look h2 .copy-english{font-size:17px}
.edition-v3 #invitation .page-dress .attire-look h2{width:100%}
.edition-v3 #invitation .page-dress .attire-look p .copy-english{font-size:13.5px}
.edition-v3 #invitation .page-dress .attire-palette h2 .copy-english{font-size:18px}
.edition-v3 #invitation .page-dress .attire-palette h2{width:100%}
.edition-v3 #invitation .page-dress .attire-palette>h2,
.edition-v3 #invitation .page-dress .attire-palette>.palette-lead{transform:translateY(var(--palette-copy-offset,0px))}
.edition-v3 #invitation .page-dress .palette-lead .copy-english{font-size:13px}
.edition-v3 #invitation .page-dress .attire-colour-name .copy-english{font-size:12px}
.edition-v3 #invitation .page-dress .attire-colour-name{display:block;width:100%;min-width:0}
.edition-v3 #invitation .page-dress .attire-colour-name .stable-copy{width:100%}
.edition-v3 #invitation .page-dress .attire-colour-name .copy-english{white-space:nowrap}
.edition-v3 #invitation .page-dress .attire-avoid p .copy-english{font-size:13.5px}
.edition-v3 #invitation .page-gallery .gallery-intro .copy-english{font-size:14px}
.edition-v3 #invitation .page-gallery .photo-operation-hint .copy-english{font-size:12.5px}
.edition-v3 #invitation .page-venue .transport-column h2 .copy-english{font-size:19px}
.edition-v3 #invitation .page-venue .transport-column h2>.stable-copy{flex:1;min-width:0}
.edition-v3 #invitation .page-venue .parking-option strong .copy-english{font-size:13px}
.edition-v3 #invitation .page-venue .parking-street .copy-english{font-size:12px}
.edition-v3 #invitation .page-venue .parking-directions .copy-english{font-size:11.5px}
.edition-v3 #invitation .page-venue .parking-note .copy-english{font-size:11.5px}
html[lang] .edition-v3 #invitation .page-venue .parking-column .parking-note{font-size:11px;white-space:nowrap}
@media(max-width:360px){html[lang] .edition-v3 #invitation .page-venue .parking-column .parking-note{font-size:10px}}
.edition-v3 #invitation .page-venue .transport-caption .copy-english{font-size:15.5px}
.edition-v3 #invitation .page-venue .shuttle-times .copy-english,
.edition-v3 #invitation .page-venue .shuttle-reminder .copy-english{font-size:12.5px}
/* Use the existing compact English restaurant card in both languages. */
.edition-v3 #invitation .page-venue .venue-summary{padding:7px 8px;margin-bottom:7px;gap:12px}
.edition-v3 #invitation .page-venue .venue-summary h2{font-size:20px;line-height:1.35;margin-bottom:4px}
.edition-v3 #invitation .page-venue .venue-summary .venue-street{font-size:12px;line-height:18px}
.edition-v3 #invitation .page-venue .venue-summary .venue-street .translation-slot>[lang="en"]{font-size:13px;line-height:19.5px}
/* Both real translations size the same grid cell, even while hidden.
   Venue density and every divider therefore use identical geometry in ZH/EN. */
.edition-v3 #invitation .page-venue{font-variant-east-asian:normal}
.edition-v3 #invitation .page-venue .stable-copy{grid-template-columns:minmax(0,1fr);width:100%}
.edition-v3 #invitation .page-venue .stable-copy>.copy-anchor-en{display:none!important}
.edition-v3 #invitation .page-venue .stable-copy>.copy-english{
 position:static;inset:auto;grid-area:1/1;align-self:start;
 font-variant-east-asian:proportional-width;
}
.edition-v3 #invitation .page-venue .stable-copy>.copy-english[aria-hidden="true"]{display:block!important}
.edition-v3 #invitation .page-venue .transport-column h2{flex-wrap:nowrap}
.edition-v3 #invitation .page-venue .parking-directions>.stable-copy{flex:0 0 64px;width:64px}
.edition-v3 #invitation .page-venue .parking-directions .stable-copy>span{white-space:nowrap;line-height:18px}
.edition-v3 #invitation .page-venue .parking-directions svg{flex:none}
html[lang] .edition-v3 #invitation .page-venue .parking-column .parking-note{width:100%;white-space:normal}
.edition-v3 #invitation .page-venue .shuttle-times>div{
 display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:6px;
}
.edition-v3 #invitation .page-venue .shuttle-times time{white-space:nowrap}
.edition-v3 #invitation .page-venue .shuttle-times>div>span{min-width:0}
/* Preserve the Chinese active-label width so the six dock icons do not shift. */
.edition-v3 #invitation:is([data-active-page="dress"],[data-active-page="venue"],[data-active-page="gallery"]){--dock-label-size:12px}
.edition-v3 #invitation:is([data-active-page="dress"],[data-active-page="venue"],[data-active-page="gallery"]) .tab[aria-selected="true"]>span{width:calc(var(--dock-label-size)*2.12);text-align:left}
.edition-v3 #invitation[data-active-page="gallery"] .tab[aria-selected="true"]>span{width:calc(var(--dock-label-size)*3.18)}
html[lang="en"] .edition-v3 #invitation:is([data-active-page="dress"],[data-active-page="venue"],[data-active-page="gallery"]) .tab[aria-selected="true"]>span{font-size:11px;letter-spacing:0}
@media(max-width:350px){
 .edition-v3 #invitation:is([data-active-page="dress"],[data-active-page="venue"],[data-active-page="gallery"]){--dock-label-size:11px}
 html[lang="en"] .edition-v3 #invitation:is([data-active-page="dress"],[data-active-page="venue"],[data-active-page="gallery"]) .tab[aria-selected="true"]>span{font-size:10.5px}
}

/* Centre both labels beneath the existing venue pin, on the same axis. */
.edition-v3 #invitation .page-venue .venue-map-compact>.stable-copy{text-align:center}

/* Emphasise the English parking and shuttle details; hidden English keeps
   the same measurements available to the Chinese page. */
.edition-v3 #invitation .page-venue .shuttle-pickup .copy-english{font-size:15px}
.edition-v3 #invitation .page-venue .parking-option strong .copy-english,
.edition-v3 #invitation .page-venue .transport-caption .copy-english,
.edition-v3 #invitation .page-venue .shuttle-pickup .copy-english{font-weight:700}

/* Parking and shuttle share two equal rows: headings + station, then pick-up.
   Both translations remain in the sizing grid, so a language switch cannot
   move a row boundary or the central rule. */
.edition-v3 #invitation .page-venue .transport-board--aligned{
 display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
 grid-template-rows:repeat(2,1fr);gap:0;
 --transport-inset:9px;--transport-row-gap:11px;
}
.edition-v3 #invitation .page-venue .transport-board--aligned>.transport-column{
 min-width:0;margin:0;border:0;padding:0 var(--transport-inset);
}
.edition-v3 #invitation .page-venue .transport-board--aligned>.shuttle-column{
 border-left:1px solid #89665348;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .transport-heading{
 padding:0;margin:0 0 8px;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .transport-heading h2{
 margin:0;min-height:27px;line-height:27px;
}
.edition-v3 #invitation .page-venue .transport-board--aligned>.transport-primary{
 padding-block:10px var(--transport-row-gap);
}
.edition-v3 #invitation .page-venue .transport-board--aligned>.transport-secondary{
 position:relative;
 padding-block:var(--transport-row-gap);
}
/* Separate inset rules leave breathing room at both edges of each column. */
.edition-v3 #invitation .page-venue .transport-board--aligned>.transport-secondary::before{
 content:"";position:absolute;top:0;
 left:var(--transport-inset);right:var(--transport-inset);
 height:1px;background:#89665348;pointer-events:none;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .shuttle-times time{
 font-size:24px;line-height:1.15;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .parking-option{
 padding:0;margin:0;border:0;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .parking-option strong,
.edition-v3 #invitation .page-venue .transport-board--aligned .transport-caption,
.edition-v3 #invitation .page-venue .transport-board--aligned .shuttle-pickup>span{
 display:block;min-height:24px;line-height:24px;margin:0;padding:0;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .transport-caption{
 font-size:13px;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .shuttle-times{
 gap:8px;margin:8px 0 0;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .shuttle-pickup{
 display:block;margin:0;padding:0;border:0;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .shuttle-pickup strong{
 margin:5px 0 0;line-height:22px;
}
.edition-v3 #invitation .page-venue .transport-board--aligned .shuttle-reminder{
 margin:10px 0 0;line-height:19px;
}
/* Compress both columns together on a short viewport. */
.edition-v3 #invitation[data-venue-density="compact"] .page-venue .transport-board--aligned{
 --transport-row-gap:9px;
}
.edition-v3 #invitation[data-venue-density="dense"] .page-venue .transport-board--aligned{
 --transport-row-gap:7px;--transport-inset:8px;
}
.edition-v3 #invitation[data-venue-density="dense"] .page-venue .transport-board--aligned>.transport-primary{
 padding-top:7px;
}
.edition-v3 #invitation[data-venue-density="dense"] .page-venue .transport-board--aligned .transport-heading{
 margin-bottom:6px;
}
.edition-v3 #invitation[data-venue-density="dense"] .page-venue .transport-board--aligned .shuttle-times time{
 font-size:22px;
}
.edition-v3 #invitation[data-venue-density="dense"] .page-venue .transport-board--aligned .shuttle-times{
 gap:6px;margin-top:6px;
}
@media(max-width:360px){
 .edition-v3 #invitation .page-venue .transport-board--aligned{--transport-inset:7px}
}
/* Reserve the full Portraits label in either language to keep dock icons still. */
.edition-v3 #invitation[data-active-page="gallery"] .tab[aria-selected="true"]>span{
 width:48px;white-space:nowrap;
}

/* Keep each language's address, map link and note in one compact flow.
   The two complete flows share a grid cell, preserving bilingual row sizing
   without inserting the hidden English address's extra lines above the map. */
.edition-v3 #invitation .page-venue .parking-details{
 display:grid;grid-template-columns:minmax(0,1fr);margin-top:5px;
}
.edition-v3 #invitation .page-venue .parking-details>.parking-detail-copy{
 display:block;grid-area:1/1;align-self:start;min-width:0;
}
.edition-v3 #invitation .page-venue .parking-details>.parking-detail-copy[aria-hidden="true"]{
 visibility:hidden;pointer-events:none;user-select:none;
}
.edition-v3 #invitation .page-venue .parking-details>.parking-detail-copy[lang="en"]{
 font-family:var(--serif);font-variant-east-asian:proportional-width;
}
.edition-v3 #invitation .page-venue .parking-details .parking-street{
 margin:0;line-height:1.6;
}
.edition-v3 #invitation .page-venue .parking-details .parking-directions{
 margin:4px 0 0;line-height:18px;
}
.edition-v3 #invitation .page-venue .parking-details .parking-directions-label{
 flex:0 0 64px;width:64px;white-space:nowrap;
}
html[lang] .edition-v3 #invitation .page-venue .parking-details .parking-note{
 margin:6px 0 0;font-size:11px;line-height:1.6;white-space:normal;
}
.edition-v3 #invitation .page-venue .parking-details>[lang="en"] .parking-street{
 font-size:12px;
}
.edition-v3 #invitation .page-venue .parking-details>[lang="en"] .parking-directions,
html[lang] .edition-v3 #invitation .page-venue .parking-details>[lang="en"] .parking-note{
 font-size:11.5px;
}
@media(max-width:360px){
 html[lang] .edition-v3 #invitation .page-venue .parking-details>[lang="zh-Hant"] .parking-note{font-size:10px}
}

/* V3.4.1: one fee box after the shared address/map track. Both translations
   size the same box; changing language only changes text visibility. */
html[lang] .edition-v3 #invitation .page-venue .parking-column .parking-note--shared{
 display:block;width:calc(100% - 8px);margin:16px 0 0;
 font-size:11px;line-height:1.6;white-space:normal;
}
@media(max-width:360px){
 html[lang] .edition-v3 #invitation .page-venue .parking-column .parking-note--shared{font-size:10px}
}
