/* The Pearl Lake (Signature 01): fonts, colours and the words on each realistic scene.
   Type: the approved reviews used Cormorant Garamond (italic) and Cormorant SC. Offline we carry Cormorant (upright,
   with small capitals drawn by the browser) and EB Garamond italic as its italic; Caveat is the handwriting ink.
   Sizes in cqw follow the composed reviews (390 px wide: 1 px there = 0.2564cqw). */
@font-face{font-family:'Cormorant';src:url('../assets/fonts/cormorant-latin.woff2') format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:'EB Garamond';src:url('../assets/fonts/eb-garamond-latin.woff2') format('woff2');font-weight:400 800;font-display:swap}
@font-face{font-family:'EB Garamond';src:url('../assets/fonts/eb-garamond-italic-latin.woff2') format('woff2');font-style:italic;font-weight:400 800;font-display:swap}
@font-face{font-family:'DM Sans';src:url('../assets/fonts/dm-sans-latin.woff2') format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:'Caveat';src:url('../assets/fonts/caveat-medium.ttf') format('truetype');font-weight:400 700;font-display:swap}
:root{--ink:#22304d;--ink-soft:#4f5d7a;--page:#dfe5f1;--accent:#c8b58e;--display:'EB Garamond',Georgia,serif;--serif:'Cormorant',Georgia,serif;--sans:'DM Sans',system-ui,sans-serif;--hand:'Caveat',cursive;--deep:#1b2140}
body.signature-scenes{background:linear-gradient(#e3e8f3,#d6deee 40%,#e7e9f1)}
body.signature-scenes main{gap:clamp(18px,4vw,40px)}
.scene-section[hidden]{display:none}

/* shared type on scenes */
.pl-caps{font:600 3cqw/1.5 var(--serif);letter-spacing:.32em;text-transform:uppercase;color:var(--ink-soft)}
.pl-display{font:italic 400 9cqw/1.02 var(--display);color:var(--ink);letter-spacing:-.01em}
.pl-amp{font:italic 400 5cqw/1 var(--display);color:var(--accent);margin:.6cqw 0}
.pl-rule{width:12cqw;height:1px;margin:2.4cqw auto;background:linear-gradient(90deg,transparent,var(--accent),transparent)}

/* 00 the opening: the words on the closed folio */
#opening [data-region="names"]{container-type:size;gap:0}
#opening .pl-display{font-size:19cqh;line-height:1}
#opening .pl-caps{font-size:4.6cqh;margin:0}
#opening .pl-amp{font-size:10cqh;margin:.6cqh 0}
#opening .pl-rule{margin:3.2cqh auto}
#opening [data-region]{transition:opacity .5s ease}
body.opening-playing #opening [data-region]{opacity:0}

/* 01 the hero: the invitation wording in the open sky above the gate, the names inside the pearl moon */
#hero [data-region]{container-type:size;margin:0}
#hero .wording{justify-content:center;gap:0;color:#1f2b45}
#hero .wording p{margin:0;max-width:100%;text-wrap:balance}
#hero .pl-families{font:500 min(13.5cqh,4.3cqw)/1.25 var(--serif);font-variant-caps:small-caps;letter-spacing:.2em;padding-left:.2em}
#hero .pl-invite{font:italic 400 min(17cqh,6.1cqw)/1.2 var(--display);margin-top:3.5cqh!important}
#hero .wording .pl-rule{width:min(16cqw,90px);flex:none;margin:6.5cqh auto 6cqh;background:#8f7a5c;opacity:.7}
#hero .pl-when{font:500 min(12.5cqh,5.6cqw)/1.5 var(--serif);font-variant-caps:small-caps;letter-spacing:.16em;padding-left:.16em}
#hero .pl-where{display:block;font-size:min(12.5cqh,4cqw)}
#hero .moon{justify-content:flex-end}
#hero .pl-moon-names{margin:0;font:italic 600 min(48cqh,31cqw)/.98 var(--display);color:#1c2742;letter-spacing:-.005em;text-align:center}
#hero .pl-moon-names span{display:block;white-space:nowrap}
#hero .pl-moon-names.wrap span{white-space:normal;overflow-wrap:anywhere;text-wrap:balance}
#hero .pl-moon-names span[hidden]{display:none}
@media (min-aspect-ratio:1/1){
 #hero .pl-families{font-size:min(17cqh,2.4cqw)}
 #hero .pl-invite{font-size:min(23cqh,3.4cqw);margin-top:2cqh!important}
 #hero .wording .pl-rule{margin:5cqh auto 6cqh}
 #hero .pl-when{font-size:min(16cqh,2.3cqw);line-height:1.3}
 #hero .pl-where{display:inline;font-size:inherit}
 #hero .pl-where::before{content:' \00B7  '}
}
.signature-scroll-cue{text-shadow:0 1px 6px rgba(20,28,52,.7)}
/* The guest's date style, only when the phone names no region (js/occasi-dates.js): pearl-white small caps above the
   scroll cue, laid over the scene (nothing moves); the chosen date wears a pearl hairline. */
.pl-choice{position:absolute;left:50%;bottom:70px;transform:translateX(-50%);z-index:2;width:max-content;max-width:calc(100% - 32px);display:flex;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:0 8px;font:500 13px/1.3 var(--serif);font-variant-caps:small-caps;letter-spacing:.12em;color:rgba(255,255,255,.82);text-shadow:0 1px 6px rgba(20,28,52,.75)}
.pl-choice .od-choice-k,.pl-choice .od-sep{font:italic 400 14px/1.3 var(--display);font-variant-caps:normal;letter-spacing:0}
.pl-choice .od-opt{appearance:none;border:0;border-bottom:1px solid transparent;background:none;margin:0;padding:8px 2px 4px;min-height:32px;font:inherit;letter-spacing:inherit;color:inherit;text-shadow:inherit;cursor:pointer;transition:color .2s ease,border-color .2s ease}
.pl-choice .od-opt[aria-pressed="true"]{color:#fff;border-bottom-color:rgba(255,255,255,.85)}
.pl-choice .od-opt:hover{color:#fff}
.pl-choice .od-opt:focus-visible{outline:2px solid #fff;outline-offset:2px}
.pl-choice[hidden],body.signature-opening .pl-choice{display:none}

/* 02 the date: ink on the pale far water; pearl-white numbers above their pearls */
#the-date [data-region="date"]{color:var(--deep)}
#the-date [data-region="date"] p{margin:0}
#the-date .pl-weekday{font:600 2.46cqw/1.2 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.34em;padding-left:.34em}
#the-date .pl-day{font:italic 400 10.2cqw/1.02 var(--display);letter-spacing:-.01em;margin:1.8cqw 0 2.3cqw!important;text-wrap:balance}
#the-date [data-region="date"] .pl-rule{width:11.8cqw;flex:none;margin:0 auto 2.3cqw;background:linear-gradient(90deg,transparent,#5f4f3c,transparent);opacity:.7}
#the-date .pl-place{font:600 2.72cqw/1.3 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.3em;padding-left:.3em;text-wrap:balance}
#the-date .calendar-link{display:inline-block;margin-top:1.2cqw;padding:3px 4px;font:600 2.4cqw/1 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.26em;color:var(--deep);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
#the-date [data-region^="count-"]{justify-content:flex-end;font:400 8.5cqw/.9 var(--serif);color:#fbf8f2;font-variant-numeric:lining-nums tabular-nums;text-shadow:0 1px 10px rgba(40,44,82,.55),0 0 2px rgba(40,44,82,.35)}
#the-date [data-region^="unit-"]{justify-content:flex-start;font:600 2.15cqw/1 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.26em;padding-left:.26em;color:#fbf8f2;text-shadow:0 1px 6px rgba(40,44,82,.6)}

/* 03 our story: one chapter at a time on the lantern lake */
#our-story [data-region="heading"]{margin:0;font:600 2.46cqw/1 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.38em;padding-left:.38em;color:#222a46}
#our-story [data-region="chapter"]{align-items:flex-start;justify-content:flex-start;text-align:left;gap:0}
#our-story .pl-chapter{font:600 2.31cqw/1.2 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.28em;color:#4a3c2c;margin:0}
#our-story .pl-title{font:italic 400 7.2cqw/1.04 var(--display);color:#222a46;margin:2cqw 0 2.6cqw;letter-spacing:-.01em;text-wrap:balance}
#our-story .pl-text{font:500 3.85cqw/1.38 var(--serif);color:#222a46;margin:0;max-width:50cqw;text-wrap:pretty}
#our-story [data-region="photo"] img{width:100%;height:100%;object-fit:cover;padding:1.8cqw;background:#f6f2ea;border-radius:2px;box-shadow:0 2.6cqw 6.6cqw rgba(30,32,64,.28),0 .3cqw .8cqw rgba(30,32,64,.2);transform:rotate(-1.6deg)}
#our-story [data-region="photo"] img[hidden]{display:none}
#our-story [data-region="progress"]{flex-direction:row;justify-content:flex-start;align-items:center;flex-wrap:wrap}
#our-story [data-dots]{gap:0}
#our-story [data-dot]{position:relative;width:24px;height:24px;min-width:0;min-height:0;border:0;background:none;border-radius:0}
#our-story [data-dot]::after{content:'';position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px 0 0 -4px;border-radius:50%;border:1px solid rgba(250,246,238,.85)}
#our-story [data-dot].is-on{background:none}
#our-story [data-dot].is-on::after{background:#fbf6ec;box-shadow:0 0 8px rgba(255,214,160,.9)}
#our-story [data-progress]{font:italic 400 3.1cqw/1 var(--display);color:#fbf6ec;text-shadow:0 1px 6px rgba(30,32,64,.6);margin:0 2cqw 0 1cqw}
#our-story [data-next]{min-height:32px}
/* the chapter on a white paper card (owner, 11 Oct 2026): the card hugs its words and grows down the calm water on the
   left, never past the dots and never onto the lanterns on the right; words that still do not fit continue on the
   paper under the scene (data-spill). The card fades out and in with its chapter (as the words did). An optional
   chapter photo is a small print pinned into its top corner with a pearl pin (tap: the larger photo). */
#our-story [data-region="chapter"]{display:block;height:auto!important;max-height:66.5%;box-sizing:border-box;padding:3.3cqw 3.6cqw 3.7cqw;overflow:hidden;background:#fbf8f1 linear-gradient(162deg,#fffdf9 0%,#f8f3e9 62%,#f3ede1 100%);border-radius:3px;box-shadow:inset 0 0 0 1px rgba(176,150,112,.2),inset 0 0 2.4cqw rgba(214,196,166,.22),0 1.4cqw 3.6cqw rgba(28,32,62,.26),0 .25cqw .6cqw rgba(28,32,62,.16);transform:rotate(-.7deg);transform-origin:50% 0}
#our-story [data-region="chapter"] .pl-text{max-width:none}
#our-story [data-region="chapter"] .pl-chapter{font-size:max(11px,2.31cqw)}
#our-story [data-region="photo"]{display:none!important}
#our-story .pl-card-photo{float:right;position:relative;box-sizing:border-box;width:36%;aspect-ratio:4/5;min-width:0;min-height:0;margin:.2cqw -.4cqw 1.8cqw 2.4cqw;padding:.9cqw .9cqw 2.4cqw;border:0;border-radius:1px;background:#fffefb;color:inherit;font:inherit;box-shadow:0 .55cqw 1.5cqw rgba(28,32,62,.28),0 .1cqw .3cqw rgba(28,32,62,.2);transform:rotate(3deg);cursor:zoom-in}
#our-story .pl-card-photo img{display:block;width:100%;height:100%;object-fit:cover;padding:0;background:none;box-shadow:none;transform:none}
#our-story .pl-card-photo::before{content:'';position:absolute;z-index:1;left:50%;top:-1cqw;width:2.4cqw;height:2.4cqw;margin-left:-1.2cqw;border-radius:50%;background:radial-gradient(circle at 34% 30%,#fff 0 16%,#f4efe7 38%,#d6cdc3 72%,#aaa098 100%);box-shadow:0 .3cqw .6cqw rgba(28,32,62,.38)}
#our-story .pl-card-photo:has(>img[hidden]){display:none}
#our-story .pl-card-photo:focus-visible{outline:3px solid #2b4a66;outline-offset:3px}
.pl-photo-dialog{margin:auto;padding:14px;border:0;border-radius:8px;background:#f3f1e9;color:#172a36;width:min(94vw,960px);max-height:94svh;overflow:auto}
.pl-photo-dialog::backdrop{background:#0f1c28d9}
.pl-photo-dialog img{display:block;max-width:100%;max-height:76svh;object-fit:contain;margin:auto}
.pl-photo-dialog .close{float:right;margin-bottom:8px;min-width:44px;min-height:44px;border:1px solid #344d6160;border-radius:50%;background:#e4ebee;color:#1b3549;font-size:20px;cursor:pointer}
.pl-photo-dialog p{clear:both;text-align:center;margin:14px 0 0;font:500 20px/1.35 var(--serif);overflow-wrap:anywhere}
.pl-photo-dialog p:empty{display:none}
.pl-spill{width:min(100% - 32px,560px);margin:-1px auto 0;padding:18px 22px 20px;background:#f4f1ea;box-shadow:0 14px 34px rgba(30,40,70,.12);font:500 17px/1.45 var(--serif);color:#222a46}
.pl-spill p{margin:0}

/* 04 schedule and 05 menu stacks */
.stack-title .title{font:italic 400 7.2cqw/1 var(--display);color:var(--ink);margin:0}
.stack-title .kicker{font:600 2.8cqw/1.4 var(--serif);letter-spacing:.3em;text-transform:uppercase;color:var(--ink-soft);order:-1;margin-bottom:1.2cqw}
/* 04: the approved composition's type (04_schedule_compose.cjs); the title sits low in the top panel, on two lines */
#celebration .stack-title{justify-content:flex-end}
#celebration .stack-title .title{font:italic 400 6.92cqw/1.02 var(--display);color:#2c3654;letter-spacing:-.005em;margin-top:1.3cqw;text-wrap:balance}
#celebration .stack-title .kicker{font:600 2.15cqw/1.2 var(--serif);font-variant-caps:all-small-caps;text-transform:none;letter-spacing:.32em;color:#3a2e20;margin:0}
#celebration .stack-item .time{font:600 2.46cqw/1 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.24em;color:#52422e;margin:0}
#celebration .stack-item .title{font:italic 400 5cqw/1.05 var(--display);color:#2c3654;margin-top:1cqw}
#celebration .stack-item .details{font:500 2.92cqw/1.2 var(--serif);color:#2c3654;opacity:.9;margin-top:.5cqw;letter-spacing:.01em}
#celebration .stack-day .date{font:600 2.31cqw/1.2 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.3em;color:#52422e;order:-1;margin:0}
#celebration .stack-day .day{font:italic 400 5.38cqw/1.05 var(--display);color:#2c3654;margin-top:.8cqw}
#at-our-table .stack-text{align-items:center;text-align:center}
#at-our-table .stack-title .title{font:italic 400 11.8cqw/1 var(--display);color:#2a3250;letter-spacing:.005em;margin-top:1.5cqw}
#at-our-table .stack-title .kicker{font:600 2.1cqw/1.2 var(--serif);font-variant-caps:all-small-caps;text-transform:none;letter-spacing:.34em;color:#3f3222;margin:0}
#at-our-table .stack-title::after{content:'';width:11.8cqw;height:1px;margin-top:3cqw;background:linear-gradient(90deg,transparent,#8f8a86,transparent)}
#at-our-table .stack-item .time{font:600 2.36cqw/1.2 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.28em;color:#3f3222;margin:0}
#at-our-table .stack-item .title{font:italic 400 4.36cqw/1.2 var(--display);color:#2a3250;margin-top:1.5cqw;max-width:41cqw;text-wrap:balance}
#at-our-table .stack-footer .footer{font:italic 400 3.6cqw/1.35 var(--display);color:#3f3222;max-width:41cqw;text-wrap:balance}

/* 08 dress code: the swatch cards on the ledge, laid out in the render's pixels (1080 wide) and scaled to the screen.
   On-screen sizes follow the reviews (390 px phone x 2.769). */
.pl-dress{position:relative;width:min(100%,600px);margin:0 auto;overflow:hidden;background:#aab6c9;color:#1e2944}
.pl-dress p,.pl-dress h2{margin:0}
.pl-dress .layer{position:absolute;left:0;top:0;transform-origin:0 0}
.pl-dress .plate,.pl-dress .plate-film{position:absolute;left:0;top:0;display:block;object-fit:fill}
.pl-dress .plate-film{opacity:0;transition:opacity .4s ease}.pl-dress .plate-film.is-moving{opacity:1}
.pl-dress .t{position:absolute;display:flex;flex-direction:column;align-items:center;text-align:center;z-index:20}
.pl-dress .kick{justify-content:flex-end;font:600 30.5px/1.2 var(--serif);letter-spacing:.32em;text-transform:uppercase;color:#1c2643;padding-left:.32em}
.pl-dress .title{justify-content:center;font:italic 400 99.7px/1.08 var(--display);color:#1e2944;text-wrap:balance}
.pl-dress .note{justify-content:flex-start;padding-top:5.5px;font:400 45.7px/1.5 'EB Garamond',Georgia,serif;color:#1e2944;text-wrap:balance}
.pl-dress .note p{max-width:831px}
.pl-dress .card{position:absolute;left:0;top:0;transform-origin:0 0;isolation:isolate}
.pl-dress .card .lay{position:absolute;left:0;top:0;overflow:hidden}
.pl-dress .card .lay>*{position:absolute;left:0;display:block}
.pl-dress .card .tint{mix-blend-mode:multiply;-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.pl-dress .card .sheen{mix-blend-mode:screen;mix-blend-mode:plus-lighter}
.pl-dress .card .tile{position:absolute;left:0;background-repeat:repeat-y;background-size:100% auto}
.pl-dress .fs-glint{opacity:0;mix-blend-mode:plus-lighter;background:radial-gradient(circle,rgba(255,255,255,.95) 0,rgba(255,250,240,.5) 12%,rgba(255,250,240,0) 55%);pointer-events:none}
.pl-dress .cw{position:absolute;color:#1f2742;text-align:center}
.pl-dress .cw .day{font-family:var(--serif);font-weight:600;letter-spacing:.26em;text-transform:uppercase;color:#33405e;padding-left:.26em}
.pl-dress .cw .ev{font-family:var(--display);font-style:italic;line-height:1.2}
.pl-dress .cw .rule{margin:0 auto;height:0;border-top:1px solid #9a8f80;opacity:.8}
.pl-dress .cw .ti{font-family:var(--display);font-style:italic;line-height:1.1;text-wrap:balance}
.pl-dress .cw .no{font-family:'EB Garamond',Georgia,serif;line-height:1.36;text-wrap:pretty}
.pl-dress .cw.head{font-family:var(--serif);font-weight:600;letter-spacing:.3em;text-transform:uppercase;color:#33405e;padding-left:.3em;display:flex;align-items:center;justify-content:center}
.pl-dress .ink{position:absolute;font-family:var(--hand);font-weight:500;color:#26304f;line-height:1;display:flex;align-items:center;overflow-wrap:anywhere}
@media (prefers-reduced-motion:reduce){.pl-dress .plate-film{display:none}}

/* 09 the wedding party (lily pads; a pearl drops on each place card and the name inks in) */
.pl-party{position:relative;isolation:isolate;width:min(100%,600px);margin:0 auto;min-height:100svh;container-type:inline-size;color:#142432}
.pl-party .pond{position:sticky;top:0;width:100%;height:100svh;margin-bottom:-100svh;overflow:hidden;z-index:-1;background:#9fb0c1}
.pl-party .pond img,.pl-party .pond video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 0}
.pl-party .pond video{opacity:0;transition:opacity .4s}.pl-party .pond.playing video{opacity:1}
.pl-party header{text-align:center;padding:115px 12% 6px;position:relative;transition:opacity .5s ease}
.pl-party.awaiting-first-contact header{opacity:0}
/* the sticky pond's willow can pass behind the heading as the page scrolls: a soft water-coloured halo keeps it legible */
.pl-party header>*{text-shadow:0 0 10px rgba(214,227,234,.95),0 0 3px rgba(214,227,234,.9)}
.pl-party .eyebrow{margin:0;font:600 10.5px/1.3 var(--serif);letter-spacing:.22em;text-transform:uppercase;color:#142432}
.pl-party h2{font:italic 500 clamp(33px,9cqw,46px)/1.08 var(--display);margin:8px 0 0;text-wrap:balance;color:#142432}
.pl-party .people{list-style:none;margin:0;padding:0 5% 25px;position:relative;overflow:clip}
.pl-party .person{position:relative;width:89%;margin-top:-37px;z-index:1}.pl-party .person:first-child{margin-top:-12px}
.pl-party .person:nth-child(even){margin-left:auto}.pl-party .person:nth-child(odd){margin-right:auto}
.pl-party .float{position:relative;width:100%;filter:drop-shadow(0 5px 3px #16322a30)}
.pl-party .float>img,.pl-party .float>canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.pl-party .float>canvas{opacity:0}.pl-party .person.moving .float>canvas{opacity:1}.pl-party .person.moving .float>img{opacity:0}
.pl-party .person.pending .card-text,.pl-party .person.moving .card-text{clip-path:circle(var(--ink-radius,0%) at 50% 10%)}
.pl-party .person.pending .details,.pl-party .person.moving .details{opacity:var(--ink-opacity,0)}
/* the card plane is drawn at 4x (400 x 240) and scaled down onto the card, so the letters stay sharp */
.pl-party .card-text{position:absolute;left:0;top:0;width:400px;height:240px;transform-origin:0 0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 28px 12px;gap:8px;color:#182c29;pointer-events:none;text-align:center}
.pl-party .person.inked .card-text{clip-path:none}
.pl-party .name{margin:0;font:500 56px/1.05 var(--serif);width:100%;overflow-wrap:anywhere}
.pl-party .role{margin:0;font:500 44px/1.05 var(--serif);width:100%;overflow-wrap:anywhere}
.pl-party .portrait-plane{position:absolute;inset:0 auto auto 0;width:400px;height:240px;transform-origin:0 0;pointer-events:none}
.pl-party .portrait-plane[hidden]{display:none}
.pl-party .portrait{position:absolute;margin:0;left:104px;top:216px;width:192px;height:192px;filter:drop-shadow(1.2px 4.4px 3.2px #183b3350)}
.pl-party .portrait[data-placement="beside"]{left:-188px;top:32px}
.pl-party .portrait[data-placement="corner"]{left:224px;top:-192px}
.pl-party .portrait-photo{position:absolute;inset:11.5%;border-radius:50%;overflow:hidden;background:#e8e5dc}
.pl-party .portrait-photo>img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.pl-party .portrait-photo>img[hidden]{display:none}
.pl-party .portrait-rim{position:absolute;inset:0;width:100%;height:100%}
.pl-party .details{position:relative;margin:-30px 7% 50px;padding:15px 16px 17px;background:rgba(245,245,236,.95);border:1px solid #ffffff88;border-radius:3px;text-align:center;box-shadow:0 8px 16px #152d3a0c}
.pl-party .details h3{margin:0;font:500 23px/1.15 var(--serif);overflow-wrap:anywhere}
.pl-party .details p{margin:8px 0 0;font:500 16px/1.4 var(--serif);overflow-wrap:anywhere}
.pl-party .person.extended{margin-top:0}.pl-party .person.extended+.person{margin-top:0}
.pl-party footer{text-align:center;padding:0 12% 35px}
.pl-party footer>p{margin:0;font:italic 500 17px/1.3 var(--display)}
.pl-party .demo-credit{margin:18px 0 0;padding:8px 10px;background:rgba(245,245,236,.9);font:13px/1.4 Georgia,serif;font-style:normal}
.pl-party .demo-credit a{color:inherit}
@media (prefers-reduced-motion:reduce){.pl-party .pond video,.pl-party .float>canvas{display:none}.pl-party .float>img{opacity:1!important}}

/* 10 the gallery: reflections of us */
.pl-gallery{width:min(100%,600px);margin:0 auto;container-type:inline-size;background:#b5c1d1;color:#142432}
.pl-gallery .scene{position:relative;aspect-ratio:2/3;isolation:isolate;overflow:hidden;background:center/100% 100% no-repeat}
.pl-gallery .render{position:absolute;inset:0;width:100%;height:100%;opacity:0}
.pl-gallery .scene.ready .render{opacity:1}.pl-gallery .scene.ready .photo-fallback{display:none}
.pl-gallery header{color:#091a25;position:absolute;top:12%;left:14%;width:72%;text-align:center}
.pl-gallery header p{margin:0;font:600 11px/1.3 var(--serif);letter-spacing:.19em;text-transform:uppercase}
.pl-gallery h2{font:italic 500 clamp(29px,9cqw,48px)/1.1 var(--display);margin:10px 0 0;text-wrap:balance;color:#091a25}
.pl-gallery .photo-fallback{position:absolute;left:0;top:0;transform-origin:0 0;width:200px;height:146px;mix-blend-mode:multiply;opacity:.9;-webkit-mask-image:linear-gradient(90deg,transparent,#000 13%,#000 87%,transparent),linear-gradient(transparent,#000 13%,#000 87%,transparent);-webkit-mask-composite:source-in;mask-image:linear-gradient(90deg,transparent,#000 13%,#000 87%,transparent),linear-gradient(transparent,#000 13%,#000 87%,transparent);mask-composite:intersect}
.pl-gallery .photo-fallback img{width:100%;height:100%;object-fit:cover;object-position:50% 12%}
.pl-gallery .view{position:absolute;left:50%;bottom:12%;transform:translateX(-50%);min-height:44px;padding:10px 18px;border:1px solid #ffffff70;background:#edf2f1e8;color:#172a36;font:600 17px/1 var(--serif);cursor:pointer;border-radius:30px}
.pl-gallery .gallery-info{padding:10px 8% 30px;text-align:center}
.pl-gallery .caption{margin:0;font:500 22px/1.3 var(--serif);overflow-wrap:anywhere;min-height:2.6em;color:#142432}
.pl-gallery .controls{display:flex;align-items:center;justify-content:center;gap:20px;margin:18px 0 6px}
.pl-gallery .controls button,.pl-gallery dialog button{min-width:44px;min-height:44px;border:1px solid #344d6160;border-radius:50%;background:#e4ebee;color:#1b3549;font-size:20px;cursor:pointer}
.pl-gallery .controls button:disabled{opacity:.4;cursor:default}
.pl-gallery .count{font:500 17px/1.4 var(--serif);min-width:75px;color:#142432}
.pl-gallery button:focus-visible{outline:3px solid #152f45;outline-offset:4px}
.pl-gallery dialog{margin:auto;padding:14px;border:0;border-radius:8px;background:#f3f1e9;color:#172a36;width:min(94vw,960px);max-height:94svh;overflow:auto}
.pl-gallery dialog::backdrop{background:#0f1c28d9}
.pl-gallery dialog img{display:block;max-width:100%;max-height:76svh;object-fit:contain;margin:auto}
.pl-gallery dialog button{float:right;margin-bottom:8px}
.pl-gallery dialog p{clear:both;text-align:center;margin:14px 0 0;font:500 20px/1.35 var(--serif);overflow-wrap:anywhere}

/* 11 questions: labelled bottles on the lake; tap one to unroll its note */
.pl-questions{position:relative;width:min(100%,600px);margin:0 auto;container-type:inline-size;background:#526b84;color:#152b38}
.pl-questions [hidden]{display:none!important}
.pl-questions .lakes{position:relative;isolation:isolate;min-height:150cqw}
.pl-questions .lake-extension{position:absolute;inset:110cqw 0 0;z-index:-2;background:center top/100% 100% no-repeat;opacity:.28;-webkit-mask-image:linear-gradient(transparent,black 35cqw);mask-image:linear-gradient(transparent,black 35cqw)}
.pl-questions .lake-leaves{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0}
.pl-questions .lily-leaf{position:absolute;height:auto;filter:drop-shadow(1px 4px 2px #122d444d);transform:rotate(var(--leaf-angle))}
.pl-questions .water{position:absolute;left:0;top:0;width:100%;height:150cqw;z-index:-1;-webkit-mask-image:linear-gradient(black 76%,transparent 100%);mask-image:linear-gradient(black 76%,transparent 100%)}
.pl-questions .water img,.pl-questions .water video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.pl-questions .water video{opacity:0}.pl-questions .water.playing video{opacity:1}
.pl-questions .scene-heading{position:absolute;z-index:2;text-align:center;top:12cqw;left:24%;width:45%}
.pl-questions .kicker{margin:0;font:600 clamp(9px,2.5cqw,12px)/1.4 var(--serif);letter-spacing:.1em;text-transform:uppercase}
.pl-questions h2{font:italic 500 clamp(26px,8cqw,40px)/1.08 var(--display);margin:8px 0 10px;text-wrap:balance;color:#152b38}
.pl-questions .subtitle{margin:0;font:italic 500 clamp(14px,4cqw,18px)/1.2 var(--display);text-wrap:balance}
.pl-questions .bottles{list-style:none;position:relative;height:var(--lake-height);margin:0;padding:0;z-index:1}
.pl-questions .float-item{position:absolute;left:var(--left);top:var(--top);width:var(--width);aspect-ratio:var(--ratio);transform-origin:center}
.pl-questions .bottle-target{position:relative;display:block;width:100%;height:100%;border:0;padding:0;background:none;color:#182630;cursor:pointer;isolation:isolate;text-align:center}
.pl-questions .bottle-drift{position:absolute;inset:0}
.pl-questions .bottle-art{display:block;width:100%;height:100%;overflow:hidden;pointer-events:none}
.pl-questions .bottle-art *{pointer-events:none}
.pl-questions .bottle-reflection{position:absolute;inset:0;transform:translateY(110%) scaleY(-.45);transform-origin:0 0;opacity:.18;filter:blur(1.1px);-webkit-mask-image:linear-gradient(transparent 4%,black 100%);mask-image:linear-gradient(transparent 4%,black 100%)}
.pl-questions .bottle-label{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:2px 4px;font:italic 500 var(--ink-size,34px)/1.04 var(--display);color:#182630;text-align:center;overflow-wrap:normal;box-sizing:border-box}
.pl-questions .question-text{display:block}
.pl-questions.moving .bottle-drift{animation:pl-float-note var(--duration) ease-in-out infinite;animation-delay:var(--delay)}
@keyframes pl-float-note{0%,100%{transform:translate(0,0) rotate(0deg)}45%{transform:translate(1px,-2px) rotate(.55deg)}75%{transform:translate(-1px,-1px) rotate(-.25deg)}}
.pl-questions.answer-active .bottle-drift{animation-play-state:paused}
.pl-questions .bottle-target:focus-visible{outline:2px solid #f5eddb;outline-offset:2px}
.pl-questions .bottle-target:hover .bottle-label{color:#07141d}
.pl-questions footer{position:relative;z-index:1;padding:4px 10% 28px;text-align:center}
.pl-questions footer p{margin:0;font:italic 500 17px/1.4 var(--display);color:#fffaf1}
.pl-questions .answer-view{position:relative;min-height:150cqw;background:linear-gradient(#36567b,#34537a 150cqw,#3a5677)}
.pl-questions .answer-scene{position:relative;min-height:150cqw;display:flow-root;background:center top/100% auto no-repeat}
.pl-questions .answer-media{position:absolute;inset:0 0 auto;aspect-ratio:2/3}
.pl-questions .answer-media img,.pl-questions .answer-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.pl-questions .answer-media video{opacity:0}.pl-questions .opening .answer-media video{opacity:1}.pl-questions .opening .answer-media img{opacity:0}
.pl-questions .opening-ink{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.pl-questions .opening-ink .bottle-label{font-size:40px}
.pl-questions .all-questions{position:absolute;top:8px;left:50%;transform:translateX(-50%);white-space:nowrap;z-index:6;min-height:44px;border:0;background:none;color:#152b38;font:italic 500 18px/1.2 var(--display);cursor:pointer}
.pl-questions .sheet{position:relative;width:49%;margin:25cqw auto 0;padding:44px 6px 18px;min-height:70cqw;color:#16242e;scroll-margin-top:16px}
.pl-questions .sheet h3{font:500 22px/1.1 var(--serif);margin:0 0 14px;text-wrap:balance;overflow-wrap:anywhere}
.pl-questions .answer-text{margin:0;font:500 18px/1.35 var(--serif);white-space:pre-wrap;overflow-wrap:anywhere}
.pl-questions .opening .sheet,.pl-questions .closing .sheet{visibility:hidden}
.pl-questions .sheet:focus{outline:none}
.pl-questions .close{position:absolute;z-index:5;top:0;right:0;width:44px;height:44px;border:0;background:none;color:#152b38;font:italic 500 30px/1 var(--display);cursor:pointer}
.pl-questions .long-answer .sheet{width:76%;min-height:100cqw;margin:24cqw auto 18cqw;background:#c8c2c0;padding:48px 22px 26px;box-shadow:0 3px 12px #14253722}
.pl-questions .long-answer .sheet h3{font-size:25px}
.pl-questions button:focus-visible{outline:2px solid #142b3a;outline-offset:4px}
@media (prefers-reduced-motion:reduce){.pl-questions .bottle-drift{animation:none!important}.pl-questions .water video{display:none}}
/* 11, six or more questions: real upright bottles in Blender row tiles stacked under the opening scene (9 Oct) */
.pl-questions.is-upright,.pl-questions.is-upright .lakes{background:#4d6886}
/* the opening scene is part of the first row tile (one image); the heading sits over the open water between the
   lantern's landing and the willow, centred on the rows */
.pl-questions.is-upright .scene-heading{left:30%}
.pl-questions .upright{position:absolute;left:0;top:0;width:100%;height:var(--upright-height);z-index:-1;overflow:hidden}
.pl-questions .upright .top,.pl-questions .upright .row-tile{position:absolute;left:0;width:100%}
.pl-questions .upright .top{top:0;height:150cqw;z-index:2;-webkit-mask:var(--top-mask) 0 0/100% 100% no-repeat;mask:var(--top-mask) 0 0/100% 100% no-repeat}
.pl-questions .upright img,.pl-questions .upright video{position:absolute;inset:0;width:100%;height:100%;display:block}
.pl-questions .upright video{opacity:0;transition:opacity .25s}.pl-questions .upright .playing video{opacity:1}
.pl-questions .upright .last::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:16cqw;background:linear-gradient(#4d688600,#4d6886)}
.pl-questions .upright-item .bottle-target{position:absolute;inset:0}
.pl-questions .up-ink{position:absolute;left:0;top:0;transform-origin:0 0;display:flex;align-items:center;justify-content:center;padding:0 .3cqw;box-sizing:border-box;font:italic 500 3.463cqw/1.06 var(--display);color:#1d2a33;text-align:center;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word;mix-blend-mode:multiply;pointer-events:none}
.pl-questions .up-ink.tight{line-height:.97}
.pl-questions .upright-item .bottle-target:focus-visible{outline:2px solid #f5eddb;outline-offset:-4px;border-radius:30px}
.pl-questions .upright-answer{background:linear-gradient(#627996,#627996 150cqw,#55708f)}
.pl-questions .upright-answer:not(.long-answer) .sheet{position:absolute;margin:0;left:var(--sx);top:var(--sy);width:var(--sw);min-height:var(--sh);padding:11.5cqw 2.6cqw 2cqw}
.pl-questions .opening-ink .bottle-label.film-ink{font:italic 500 44.4px/1.06 var(--display);color:#1d2a33;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word;mix-blend-mode:multiply;padding:0 3px}

/* 12 gifts: the birdcage card box; one envelope per gift list, its name inked on the paper */
.pl-gifts{position:relative;width:min(100%,600px);margin:0 auto;overflow:hidden;container-type:inline-size;background:#9fb0c6}
.pl-gifts .gifts-poster,.pl-gifts .gifts-film{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:cover}
.pl-gifts .gifts-film{opacity:0;transition:opacity .4s ease}.pl-gifts .gifts-film.is-moving{opacity:1}
.pl-gifts .t{position:absolute;margin:0;display:flex;flex-direction:column;align-items:center;text-align:center;transition:opacity .9s ease}
.pl-gifts .t.waiting{opacity:0}
.pl-gifts .kick{justify-content:flex-end;font:600 2.82cqw/1.2 var(--serif);letter-spacing:.32em;padding-left:.32em;text-transform:uppercase;color:#33405e}
.pl-gifts .title{justify-content:center;font:italic 400 9.2cqw/1.08 var(--display);color:#1e2944;text-wrap:balance}
.pl-gifts .note{justify-content:flex-start;padding-top:.5cqw;font:400 4.23cqw/1.5 'EB Garamond',Georgia,serif;color:#1e2944}
.pl-gifts .note p{margin:0;max-width:80cqw;text-wrap:balance}
.pl-gifts .envs{position:absolute;left:0;top:0;transform-origin:0 0}
.pl-gifts a.env{position:absolute;left:0;top:0;transform-origin:0 0;display:block;color:#262f4d;text-decoration:none;border-radius:8px;outline-offset:6px}
.pl-gifts a.env:focus-visible{outline:5px solid #262f4d}
.pl-gifts a.env span{position:absolute;display:flex;align-items:center;justify-content:center;text-align:center}
.pl-gifts a.env u{display:inline-block;max-width:100%;font:500 66px/1.0 var(--hand);text-wrap:balance;overflow-wrap:anywhere;text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:11px;text-decoration-color:#262f4d66}
.pl-gifts a.env i{font-style:normal;opacity:0;transition:opacity .12s linear}
.pl-gifts a.env i.on{opacity:1}

/* 13 the reply: the quill, then two stages on growing paper (local preview only) */
.pl-rsvp{position:relative;width:min(100%,600px);margin:0 auto;container-type:inline-size;background:#d6d5d1;color:#1d3545}
.pl-rsvp .hero{position:relative;width:100%;aspect-ratio:2/3;isolation:isolate;overflow:hidden}
.pl-rsvp .hero>img,.pl-rsvp .hero>video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:-1}
.pl-rsvp .hero>video{opacity:0}.pl-rsvp .hero>video.active{opacity:1}
.pl-rsvp .intro{position:absolute;top:6cqw;left:12%;width:76%;text-align:center;transition:opacity .4s ease}
.pl-rsvp .intro .kicker{margin:0;font:600 13px/1.35 var(--serif);letter-spacing:.12em;text-transform:uppercase}
.pl-rsvp .intro h2{font:italic 500 clamp(30px,9cqw,47px)/1.1 var(--display);margin:10px 0;color:#1d3545}
.pl-rsvp .intro p:last-child{margin:0;font:500 19px/1.4 var(--serif)}
.pl-rsvp .reply-sheet{display:none}
.pl-rsvp.filling .hero{display:none}.pl-rsvp.filling .reply-sheet{display:block}
.pl-rsvp .paper-top,.pl-rsvp .paper-bottom{display:block;width:100%;height:auto}
.pl-rsvp .paper{position:relative;width:100%;margin:0;padding:0 14%;background:top/100% auto repeat-y;font:400 22px/1.12 var(--hand);color:#1d3545;overflow:visible;box-sizing:border-box}
.pl-rsvp .paper-top{margin-bottom:-5cqw}.pl-rsvp .paper-bottom{margin-top:-1px}
.pl-rsvp .paper h3{font:500 36px/1.04 var(--hand);margin:2px 0 14px;overflow-wrap:anywhere}
.pl-rsvp .paper h3:focus{outline:none}
.pl-rsvp .progress{font:500 20px/1.2 var(--hand);margin:0 0 5px}
.pl-rsvp .guest{border:0;padding:0;min-width:0;margin:0 0 14px;break-inside:avoid}
.pl-rsvp .guest legend{font:500 28px/1.08 var(--hand);padding:0;margin:0 0 3px;overflow-wrap:anywhere;max-width:100%}
.pl-rsvp .choices{display:grid;gap:0}.pl-rsvp .attendance-choices{grid-template-columns:1fr 1fr;gap:10px}
.pl-rsvp .choices label{display:flex;align-items:center;gap:7px;min-height:44px;cursor:pointer;overflow-wrap:anywhere;padding:2px 0;box-sizing:border-box;font:400 22px/1.08 var(--hand)}
.pl-rsvp .choices input{appearance:none;-webkit-appearance:none;width:19px;height:19px;flex:none;margin:0;border:1.5px solid #294858;border-radius:48% 52% 46% 54%;position:relative;background:transparent}
.pl-rsvp .choices input:checked::after{content:"\2713";position:absolute;top:-11px;left:0;font:29px var(--hand);color:#1d3545}
.pl-rsvp .paper button{position:relative;min-height:44px;background:transparent;border:0;color:#1d3545;font:500 24px/1.12 var(--hand);cursor:pointer;padding:6px 0;overflow-wrap:anywhere}
.pl-rsvp .paper button::after{content:"";position:absolute;left:0;right:0;bottom:4px;border-bottom:1px solid currentColor;border-radius:50%;transform:rotate(-.6deg)}
.pl-rsvp .paper button:hover{color:#061d2b}
.pl-rsvp .paper .diet-toggle{font-size:22px}
.pl-rsvp .actions{display:flex;justify-content:space-between;gap:16px;padding-top:10px}
.pl-rsvp .reply-privacy{margin:12px 0 0;font:500 14px/1.45 var(--serif);color:#4b5463;text-align:left}.pl-rsvp .reply-privacy a{color:inherit;text-decoration:underline}.pl-rsvp .reply-privacy[hidden]{display:none}
.pl-rsvp .primary{margin-left:auto}
.pl-rsvp .field-label{display:block;margin:6px 0 0}
.pl-rsvp .paper textarea{display:block;width:100%;max-width:100%;min-height:44px;resize:none;overflow:hidden;border:0;border-bottom:1px solid #74818a;border-radius:0;padding:5px 0;color:#1d3545;background:transparent;font:400 22px/1.12 var(--hand);box-sizing:border-box}
/* a published invitation: the guest's name (open link or guest list) and a send error, on the same paper */
.pl-rsvp .paper input:not([type]),.pl-rsvp .paper .guest-name{display:block;width:100%;max-width:100%;min-height:44px;border:0;border-bottom:1px solid #74818a;border-radius:0;padding:5px 0;color:#1d3545;background:transparent;font:400 24px/1.12 var(--hand);box-sizing:border-box}
.pl-rsvp .find-field{margin:4px 0 10px}.pl-rsvp .send-error{margin:8px 0 0;font:500 16px/1.4 var(--serif);color:#8a2626}.pl-rsvp .send-error[hidden]{display:none}
.pl-rsvp .note-wrap{margin:2px 0 0}.pl-rsvp .diet-field{padding-bottom:10px}
.pl-rsvp .paper .error{font:500 22px/1.1 var(--hand);color:#7d2626;margin:4px 0 8px}
.pl-rsvp .paper p{overflow-wrap:anywhere;margin:0}
.pl-rsvp .paper .help{margin:10px 0;font-size:24px;line-height:1.2}
.pl-rsvp .paper strong{font-weight:600}
.pl-rsvp [hidden]{display:none!important}
.pl-rsvp :focus-visible{outline:2px solid #294858;outline-offset:3px}
.pl-rsvp.sending .reply-sheet{display:none}.pl-rsvp.sending .hero{display:block}.pl-rsvp.sending .intro{opacity:0}
.pl-rsvp .sheet-reveal{animation:pl-paper-arrives .45s ease-out both}
@keyframes pl-paper-arrives{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.pl-rsvp .preview-note{position:absolute;left:0;right:0;bottom:0;margin:0;padding:0 10% 12px;text-align:center;font:500 15px/1.3 var(--serif);color:#243e4c;background:none;pointer-events:none}
/* the note lies on the scene itself (the travertine, or the cloth under the paper), so the reply ends on its own art: no band */
.pl-rsvp.filling .reply-sheet{padding-bottom:34px}
.pl-rsvp .preview-note b{font-weight:600}
.pl-rsvp.writing .preview-note{visibility:hidden}
.pl-rsvp .empty-message{padding:0 0 20px}
@media (prefers-reduced-motion:reduce){.pl-rsvp .hero>video{display:none}.pl-rsvp .sheet-reveal{animation:none}}

/* 14 thank-you: a blossom falls into the swans' reflected heart and its ripple reveals the words */
.pl-thanks{position:relative;width:min(100%,600px);aspect-ratio:2/3;margin:0 auto;container-type:inline-size;isolation:isolate;overflow:hidden}
.pl-thanks .art,.pl-thanks .film{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;z-index:-2}
.pl-thanks .film{opacity:0}.pl-thanks .film.active{opacity:1}
.pl-thanks::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:-1;background:linear-gradient(transparent 74%,#0b1c3a38 92%)}
/* 14: the lily closes at night; each block glows in at its moment (words_in_s), 9 Oct */
.pl-thanks .glow{text-shadow:0 0 0 #fff2d400}.pl-thanks.revealing .glow{opacity:0;text-shadow:0 0 22px #fff2d4;transition:none}.pl-thanks.revealing .glow.lit{opacity:1;text-shadow:0 0 0 #fff2d400;transition:opacity 1.1s ease,text-shadow 2.4s ease}
.pl-thanks .title-region{position:absolute;left:11.11%;width:77.78%;top:27.78cqw;height:31.48cqw;text-align:center;display:flex;flex-direction:column;justify-content:center;gap:1.4cqw;color:#1b2140}
.pl-thanks h2{margin:0;font:italic 500 clamp(28px,8.4cqw,47px)/1.04 var(--display);overflow-wrap:anywhere;text-wrap:balance;color:#1b2140}
.pl-thanks .names{margin:0;font:500 clamp(24px,7.4cqw,41px)/1.06 var(--hand);overflow-wrap:anywhere;text-wrap:balance}
.pl-thanks .message-region{position:absolute;left:7.96%;width:84.07%;top:120.37cqw;height:26.85cqw;text-align:center;color:#fffdf6;display:flex;align-items:center;justify-content:center}
.pl-thanks .message{margin:0;font:500 clamp(18px,5.15cqw,27px)/1.2 var(--serif);white-space:pre-line;overflow-wrap:anywhere;text-wrap:pretty}
@media (prefers-reduced-motion:reduce){.pl-thanks .film{display:none}.pl-thanks .glow{transition:none}}
body.signature-scenes main{padding-bottom:0}

/* 06 the venue and 07 where to stay: "the compass and the chart" (owner's venue pick, 9 Oct). The calm cloth above the
   chart holds the live venue (06) and the section heading (07); the hotels are live rows under the 07 chart. */
.pl-venue,.pl-stay .stage{position:relative;width:min(100%,600px);aspect-ratio:2/3;margin:0 auto;container-type:inline-size;isolation:isolate;overflow:hidden;background:#e9ecee}
.pl-venue .art,.pl-venue .film,.pl-stay .art,.pl-stay .film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2}
.pl-venue .film,.pl-stay .film{opacity:0}.pl-venue .film.active,.pl-stay .film.active{opacity:1}
.pl-venue .calm,.pl-stay .calm{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#22304d;gap:1.1cqw;overflow:hidden}
.pl-venue .kicker,.pl-stay .kicker{margin:0;font:600 2.6cqw/1.2 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.34em;padding-left:.34em;color:#4f5d7a}
.pl-venue h2,.pl-stay h2{margin:0;font:500 italic clamp(22px,7.4cqw,40px)/1.05 var(--display);color:#1b2140;text-wrap:balance;overflow-wrap:anywhere}
.pl-venue .address{margin:0;font:500 clamp(15px,3.9cqw,21px)/1.3 var(--serif);color:#2c3654;text-wrap:balance;overflow-wrap:anywhere}
.pl-venue .actions{display:flex;gap:2.6cqw;justify-content:center;flex-wrap:wrap;margin:1cqw 0 0}
.pl-chart-button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 4.2cqw;border:1px solid #8a9bb8;border-radius:999px;background:#f8f6f1cc;font:600 clamp(14px,3.3cqw,18px)/1 var(--serif);letter-spacing:.06em;color:#1b2140;text-decoration:none}
.pl-chart-button:hover{background:#fffdf8}.pl-chart-button:focus-visible{outline:2px solid #1b2140;outline-offset:2px}
.pl-venue[data-overflow=true] .calm{outline:2px solid #a32a2a}
.pl-stay{width:min(100%,600px);margin:0 auto;background:#e9ecee}
.pl-stay .stays{list-style:none;margin:0;padding:6px 18px 26px;display:grid;gap:12px;counter-reset:none}
.pl-stay .stay{display:grid;grid-template-columns:30px 1fr;gap:12px;align-items:start;padding:12px 14px;background:#f6f4ef;border:1px solid #d9dde6;border-radius:6px;transition:border-color .5s ease,box-shadow .5s ease,opacity .5s ease;opacity:.72}
.pl-stay .stay.lit{opacity:1;border-color:#b9c6dc;box-shadow:0 6px 18px rgba(34,48,77,.08)}
.pl-stay .pin{display:grid;place-items:center;width:26px;height:26px;margin-top:2px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffffff,#efe8dc 55%,#d6cdbf);box-shadow:0 1px 3px rgba(34,48,77,.3);font:600 13px/1 var(--serif);color:#22304d}
.pl-stay .no-pin .pin{visibility:hidden}
.pl-stay h3{margin:0;font:600 19px/1.2 var(--serif);color:#1b2140;overflow-wrap:anywhere}
/* hotel cards (10 Oct 2026): the hotel's photo as a small deckled print on the linen, "Our pick" in pearl-grey small caps,
   the rate in italic and "Book a room" as the chart's own button */
.pl-stay .stay-photo{margin:0 0 10px;padding:5px;background:#fffdf8;border:1px solid #dfe3ea;box-shadow:0 4px 12px rgba(34,48,77,.12);aspect-ratio:16/10;overflow:hidden}
.pl-stay .stay-photo img{display:block;width:100%;height:100%;object-fit:cover}
.pl-stay .stay-pick{display:inline-block;margin:0 0 6px;padding:3px 10px 4px;border:1px solid #8a9bb8;border-radius:999px;font:600 14px/1 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.18em;color:#22304d;background:#fff}
.pl-stay .stay.is-pick{border-color:#8a9bb8}
.pl-stay .stay-rate{margin:6px 0 0;font:500 italic 15px/1.35 var(--serif);color:#4f5d7a;overflow-wrap:anywhere}
.pl-stay .stay-book{margin:12px 0 2px}
.pl-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* our favourite places: two short lists on the same linen under the stays */
.pl-guide{display:grid;gap:12px;padding:0 18px 28px}
.pl-guide-list{padding:14px 16px 6px;background:#f6f4ef;border:1px solid #d9dde6;border-radius:6px}
.pl-guide-list h3{margin:0 0 6px;font:500 italic 22px/1.15 var(--display);color:#1b2140}
.pl-guide-list ul{list-style:none;margin:0;padding:0}
.pl-guide-list li{padding:9px 0;border-top:1px solid #e1e4ea}
.pl-guide-list a,.pl-guide-name{font:600 17px/1.3 var(--serif);color:#1b2140;overflow-wrap:anywhere}
.pl-guide-list a{text-decoration:underline;text-decoration-color:#8a9bb8;text-underline-offset:3px}
.pl-guide-list a:focus-visible{outline:2px solid #1b2140;outline-offset:2px}
.pl-guide-note{display:block;margin-top:2px;font:500 15.5px/1.4 var(--serif);color:#2c3654;overflow-wrap:anywhere}
.pl-stay-guide-only{padding-top:26px}.pl-guide-head{text-align:center;padding:0 18px 14px}
.pl-guide-head .kicker{margin:0;font:600 15px/1.2 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.3em;color:#4f5d7a}
.pl-guide-head h2{margin:4px 0 0;font:500 italic clamp(26px,7vw,38px)/1.05 var(--display);color:#1b2140}
.pl-stay .distance{margin:3px 0 0;font:600 15px/1.3 var(--serif);font-variant-caps:all-small-caps;letter-spacing:.12em;color:#4f5d7a;overflow-wrap:anywhere}
.pl-stay .notes{margin:4px 0 0;font:500 16px/1.4 var(--serif);color:#2c3654;overflow-wrap:anywhere}
@media (prefers-reduced-motion:reduce){.pl-venue .film,.pl-stay .film{display:none}.pl-stay .stay{transition:none}}
.pl-venue .calm.tight .kicker{display:none}
.pl-venue .calm.tight{gap:.5cqw}.pl-venue .calm.tight .actions{margin:0;gap:2cqw}.pl-venue .calm.tight h2{line-height:1}.pl-venue .calm.tight .address{line-height:1.2}
.pl-stay .stay.walking{opacity:1;border-color:#8a9bb8;box-shadow:0 0 0 1px #8a9bb8 inset}
/* four to seven dress codes (10 Oct 2026): the day tabs above, one event card at a time on the ledge */
#dress-code .sig-tabs{margin-bottom:6px}
.pl-dress-stage{min-width:0}

/* v281: the dietary question stands out (bold), open by default */
.diet-toggle{font-weight:700}

/* v285.1 (owner 2 Nov: caps, every word 10 px or more on a phone, 'Up to 12, page 2') */
#the-date .pl-weekday{font-size:max(10px,2.46cqw)}
#the-date .pl-place{font-size:max(10.5px,2.72cqw)}
#the-date .calendar-link{font-size:max(10px,2.4cqw);position:relative}
#the-date .calendar-link::after{content:'';position:absolute;left:50%;top:50%;width:max(100%,44px);height:44px;transform:translate(-50%,-50%)}
#the-date [data-region^="unit-"]{font-size:max(10px,2.15cqw)}
#our-story [data-region="heading"]{font-size:max(10px,2.46cqw)}
#our-story [data-next]{font-size:max(10px,2.6cqw);position:relative}
#our-story [data-next]::after{content:'';position:absolute;left:50%;top:50%;width:max(100%,44px);height:44px;transform:translate(-50%,-50%)}
/* a story title of any length (cap 40) stays on its card: a word wider than the card breaks rather than run off it */
#our-story .pl-title{overflow-wrap:anywhere}
#celebration .stack-title .kicker{font-size:max(10px,2.15cqw)}
#celebration .stack-item .time{font-size:max(10px,2.46cqw)}
#celebration .stack-day .date{font-size:max(10px,2.31cqw)}
#celebration .stack-item .details{font-size:max(10px,2.92cqw)}
#at-our-table .stack-title .kicker{font-size:max(10px,2.1cqw)}
#at-our-table .stack-item .time{font-size:max(10px,2.36cqw)}
.pl-venue .kicker,.pl-stay .kicker{font-size:max(10.5px,2.6cqw)}
.pl-gifts .kick{font-size:max(10.5px,2.82cqw)}
.pl-questions .kicker{font-size:clamp(10px,2.5cqw,12px)}
/* the hero names are sized to the painted moon (wider than the moon's anchor box): the names block is their own frame */
.pl-moon-names{position:relative}
/* the dress code of each event, when eight long ones are too many for the note on the plate: on the paper under the scene */
.pl-dress-spill ul{list-style:none;margin:0;padding:0;text-align:center}
.pl-dress-spill li{margin:0;padding:4px 0;overflow-wrap:anywhere;text-wrap:balance}
.pl-dress-spill li+li{border-top:1px solid rgba(154,143,128,.35)}
.pl-dress-spill .e{font:italic 400 1.08em/1.3 var(--display)}
