/* Shared rhythm and continuous chapter colors. */
main>section:not(.cover){padding:54px 6% 90px;background:linear-gradient(var(--start),var(--middle) 50%,var(--end));color:#43564b;isolation:isolate;overflow:hidden}
main>section:not(.cover)>:not(.scene):not(.foam-motion){position:relative;z-index:2}
main>section:not(.cover)::before{inset:0;background-size:cover;background-position:center;mask-image:linear-gradient(transparent,#000 18%,#000 78%,transparent);pointer-events:none;z-index:0;animation:none}
.cover::after{content:'';position:absolute;bottom:0;left:0;right:0;height:110px;background:linear-gradient(transparent,#e1e9df);pointer-events:none}
.sky{--start:#e1e9df;--middle:#dde8e8;--end:#e9ece3}
.breakfast-edit{--start:#e9ece3;--middle:#f1eee2;--end:#f1eee5}
.bright-edit{--start:#f1eee5;--middle:#f4efe4;--end:#e8ece3}
.editorial{--start:#e8ece3;--middle:#dfe9e2;--end:#eee3e3}
.lip-edit{--start:#eee3e3;--middle:#f2d7e0;--end:#f2e2db}
.content-edit{--start:#f2e2db;--middle:#f5e5d8;--end:#e8eae3}
.more-edit{--start:#e8eae3;--middle:#dfebeb;--end:#e7ece8}
.beach-edit{--start:#e7ece8;--middle:#eee9de;--end:#e1e9df}
.photo-edit,.rates{--start:#e1e9df;--middle:#e2e9df;--end:#e1e9df}
main>section:not(.cover) .chapter-title{display:flex;align-items:center;justify-content:center;width:100%;height:clamp(155px,23vw,260px);max-width:780px;margin:30px auto 24px;line-height:1}
main>section:not(.cover) .chapter-title img{width:100%;height:100%;max-height:none;object-fit:contain;animation:title-float 13s ease-in-out infinite}
.sky .chapter-title>img:first-child{filter:grayscale(1) sepia(.2) brightness(1.25);opacity:.94}
.bright-edit .chapter-title img{filter:saturate(.35) brightness(1.04)}
.more-edit .chapter-title img{filter:saturate(.18) brightness(1.06)}
.chapter-copy{font:italic clamp(23px,2.6vw,33px)/1.35 Georgia,serif;text-align:center;max-width:780px;margin:0 auto 38px;min-height:92px}
.chapter-copy span{display:inline-block;font:13px/1.7 Arial,sans-serif;letter-spacing:.35px;margin-top:14px}
.type-title{font:clamp(52px,7vw,92px)/1.08 Georgia,serif;letter-spacing:-2px;text-align:center;margin:30px auto 24px;min-height:155px;display:block}
.type-title em{font-weight:normal;color:#9d7b84}
.scene{position:absolute!important;inset:0;pointer-events:none;overflow:hidden;z-index:1!important}
.scene img{position:absolute;object-fit:contain}
/* The original rounded four-pane window, with only fine molding lines. */
.french-window{width:min(610px,100%);margin:0 auto 30px;border:9px solid #faf7ee;border-radius:150px 150px 8px 8px;overflow:hidden;background:#faf7ee;box-shadow:0 0 0 2px #d1d5c9,0 0 0 5px #f4f3e9,0 17px 36px #53625120}
.window-panes{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.film-card{position:relative;min-width:0;margin:0;align-self:start}
.frame-stage{position:relative;width:100%}
main>section:not(.cover) .film-card .video-wrap{position:relative;inset:auto;border-radius:12px;background:transparent;box-shadow:0 10px 25px #52615112;overflow:hidden}
main>section:not(.cover) .film-card video{display:block;width:100%;height:auto;aspect-ratio:auto;object-fit:cover;background:transparent}
.frame-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none;z-index:2}
main>section:not(.cover) .film-card>.video-controls{position:relative;inset:auto;display:flex;gap:5px;justify-content:center;flex-wrap:wrap;margin:10px auto 0;transform:none;opacity:1;z-index:4;max-width:100%}
main>section:not(.cover) .video-controls button{font-size:12px;min-height:32px;padding:6px 9px;background:#fffaf0df;color:#43564b}
.film-card figcaption{text-align:center;font-size:12px;line-height:1.5;letter-spacing:.2px;margin:9px 0 0}
.window-panes .film-card{height:auto}
.window-panes .frame-stage{aspect-ratio:9/16;height:auto}
main>section:not(.cover) .theme-window .video-wrap{position:absolute;inset:0;border-radius:0;box-shadow:none}
main>section:not(.cover) .theme-window video{height:100%;object-fit:cover}
.window-panes figcaption{display:none}
main>section:not(.cover) .theme-window>.video-controls{position:absolute;bottom:6px;left:0;right:0;margin:0;gap:3px}
main>section:not(.cover) .theme-window>.video-controls button{font-size:11px;padding:5px 6px;min-height:29px}
.sky .cloud-scene{z-index:1!important}
.cloud-scene img{width:65%;left:-45%;top:3%;opacity:.67;animation:cloud-pass 65s linear infinite;animation-delay:calc(var(--i)*-23s)}
.cloud-scene img:nth-child(n+3){top:auto;bottom:0;animation-duration:78s}
@keyframes cloud-pass{from{transform:translateX(-20%)}to{transform:translateX(250%)}}
.staggered-gallery,.plate-gallery,.beach-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:36px 26px;max-width:960px;margin:0 auto;align-items:start}
/* Plates sit directly on one continuous tablecloth, with video filling each well. */
.breakfast-edit::before{background-image:url('assets/lace-tablecloth.png');background-size:720px auto;background-repeat:repeat;opacity:.76}
.plate-gallery{max-width:1120px;gap:40px 22px}
.theme-plate .frame-stage{aspect-ratio:1;filter:drop-shadow(0 12px 16px #5d5a4a24)}
.theme-plate .frame-art{mask-image:radial-gradient(ellipse closest-side,#000 91%,transparent 97%);z-index:0}
main>section:not(.cover) .theme-plate .video-wrap{position:absolute;inset:18%;border-radius:50%;z-index:1;box-shadow:none}
main>section:not(.cover) .theme-plate video{width:100%;height:100%;object-fit:cover;object-position:center}
/* Cotton pillows and large drifting white feathers. */
.bright-edit::before{background-image:url('assets/cotton-bedding.png');opacity:.64}
.bright-edit .staggered-gallery{max-width:1120px;gap:26px 18px}
.bright-edit .film-card:first-child{grid-column:1/-1;width:56%;margin:0 auto}
.theme-pillow .frame-stage,.theme-shell .frame-stage{aspect-ratio:3/4;filter:drop-shadow(0 12px 18px #5b5d5025)}
main>section:not(.cover) .theme-pillow .video-wrap,main>section:not(.cover) .theme-shell .video-wrap{position:absolute;left:18%;right:18%;top:8%;bottom:8%;border-radius:8px;box-shadow:none}
main>section:not(.cover) .theme-pillow video,main>section:not(.cover) .theme-shell video{height:100%;width:100%;object-fit:cover}
.feather-scene img{width:clamp(100px,15vw,210px);height:300px;left:calc(mod(var(--i),5)*23% - 5%);top:-25%;opacity:.65;animation:feather-fall calc(27s + var(--i)*2s) linear infinite;animation-delay:calc(var(--i)*-7s)}
.feather-scene img:nth-child(5n+1){left:0}.feather-scene img:nth-child(5n+2){left:22%}.feather-scene img:nth-child(5n+3){left:44%}.feather-scene img:nth-child(5n+4){left:66%}.feather-scene img:nth-child(5n){left:84%}
@keyframes feather-fall{0%{transform:translate(-20px,-200px) rotate(-25deg);opacity:0}12%,85%{opacity:.7}100%{transform:translate(45px,2300px) rotate(55deg);opacity:0}}
/* Moving gloss texture and macro soap foam. */
.lip-edit::before{background-image:url('assets/lip-gloss-bg.png');opacity:.75;animation:gloss-flow 15s ease-in-out infinite alternate!important;background-size:125% 120%}
@keyframes gloss-flow{from{background-position:0% 0%;filter:brightness(1)}to{background-position:100% 100%;filter:brightness(1.13)}}
.editorial::before{background-image:url('assets/hero-mint.png');opacity:.24}
.bubble-scene img{width:110px;left:calc(8% + var(--i)*37%);bottom:-15%;opacity:.3;animation:bubble-rise 38s linear infinite;animation-delay:calc(var(--i)*-13s)}
.more-edit::before{background-image:url('assets/soap-foam.png');opacity:.6;animation:foam-breathe 9s ease-in-out infinite alternate!important;background-size:120% 110%}
.foam-motion{position:absolute;inset:0;z-index:1;pointer-events:none;background:url('assets/soap-foam.png') 70% 40%/145% 125%;opacity:.2;mix-blend-mode:screen;mask-image:linear-gradient(transparent,#000 25%,#000 70%,transparent);animation:foam-breathe 7s ease-in-out infinite alternate-reverse}
@keyframes foam-breathe{from{background-position:10% 10%;filter:brightness(1);opacity:.35}to{background-position:80% 85%;filter:brightness(1.15);opacity:.65}}
.content-edit::before{background-image:none}
.content-edit .chapter-title.candle-title{width:100%;max-width:780px;margin:30px auto 24px}
.wide-gallery{max-width:960px;margin:0 auto 36px}
.three-gallery{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:24px;max-width:1060px;margin:0 auto 36px;align-items:center}
.three-gallery .film-card:nth-child(2){margin-top:0}
#candle-bottom{width:78%;margin:0 auto}
/* Tide advances and retreats while the chapter edges stay blended. */
.beach-edit::before{background-image:url('assets/beach-bg.png');background-size:125% 115%;opacity:.9;animation:ocean-tide 13s ease-in-out infinite alternate!important}
@keyframes ocean-tide{0%,15%{background-position:100% 0%}85%,100%{background-position:0% 100%}}
.beach-gallery{max-width:1100px;gap:30px}
.photo-edit::before,.rates::before{background-image:url('assets/hero-mint.png');opacity:.76;animation:gloss-flow 25s ease-in-out infinite alternate!important}
.photo-edit .photo-layout{display:grid;grid-template-columns:1fr 1fr;gap:30px;max-width:1050px;margin:auto;align-items:start}
.photo-frame{position:relative}
.photo-edit .photo-layout .photo-original{position:relative;inset:auto;aspect-ratio:3/4;object-fit:cover;width:100%;height:auto;border-radius:12px;box-shadow:0 14px 28px #52615120}
.photo-card figcaption{margin:12px 0;text-align:center}
.rates .services{background:#f7f4ebba;border:1px solid #fff8;border-radius:24px;padding:32px;backdrop-filter:blur(6px)}
@media(max-width:760px){
 main>section:not(.cover){padding:35px 6% 64px}
 main>section:not(.cover) .chapter-title,main>section:not(.cover) .chapter-title.candle-title{height:180px;width:100%;margin:22px auto 22px}
 .chapter-copy{font-size:23px;min-height:100px;margin:0 auto 30px}.chapter-copy span{font-size:12px;letter-spacing:.1px}
 .french-window{border-width:7px;border-radius:100px 100px 7px 7px}.window-panes{gap:6px}
 .staggered-gallery{gap:28px 16px}
 main>section:not(.cover) .video-controls button{padding:5px 6px;font-size:12px}
 main>section:not(.cover) .theme-window>.video-controls .expand{display:none}
 .plate-gallery{grid-template-columns:1fr;max-width:510px;gap:35px}
 .bright-edit .staggered-gallery{grid-template-columns:1fr;max-width:510px;gap:32px}
 .bright-edit .film-card:first-child{grid-column:auto;width:100%}
 .three-gallery{grid-template-columns:1fr 1fr;gap:26px 16px}.three-gallery .film-card:nth-child(2){margin-top:40px}.three-gallery .film-card:last-child{grid-column:1/-1;width:65%;margin:auto}
 #candle-bottom{width:100%}
 .beach-gallery{grid-template-columns:1fr;max-width:510px;gap:36px}
 .photo-edit .photo-layout{gap:16px}.photo-edit h2.type-title{font-size:43px}
 .rates h2{font-size:58px}.rates .services{padding:24px}
 .feather-scene img{width:145px;height:250px}
}
.motion-paused .scene img,.motion-paused main>section::before,.motion-paused .foam-motion{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.scene img,main>section::before,.foam-motion{animation:none!important}.cloud-scene img{left:calc(var(--i)*20% - 10%)}.feather-scene img{top:calc(8% + var(--i)*8%);opacity:.35}}
/* Aperture measured from the cotton frame: underlap the seam slightly. */
main>section:not(.cover) .theme-pillow .video-wrap{left:22.5%;right:22%;top:14.5%;bottom:13%;border-radius:9px}
main>section:not(.cover) .theme-shell .video-wrap{left:21.5%;right:21.5%;top:17%;bottom:18%;border-radius:9px}
/* Larger chapter artwork, a shorter consistent rhythm, and stronger atmosphere. */
.editorial{--start:#f1eee5;--middle:#e3ebe2;--end:#e8ece3}
.bright-edit{--start:#e8ece3;--middle:#f4efe4;--end:#eee3e3}
main>section:not(.cover) .chapter-title,main>section:not(.cover) .chapter-title.candle-title{height:clamp(190px,25vw,310px);max-width:850px;margin:22px auto 8px}
.chapter-copy{min-height:0;margin:0 auto 28px;font-size:clamp(25px,2.8vw,36px)}
.chapter-copy span{margin-top:10px;font-size:14px}
main>section:not(.cover) .portfolio-heading{position:relative;isolation:isolate}
main>section:not(.cover) .portfolio-heading>img:first-child{position:relative;z-index:2}
main>section:not(.cover) .portfolio-heading .title-cloud{position:absolute;width:72%;height:auto;max-height:none;left:14%;bottom:-22%;z-index:0;filter:none;opacity:.67;animation:heading-cloud 25s ease-in-out infinite alternate;pointer-events:none}
@keyframes heading-cloud{from{transform:translateX(-9%)}to{transform:translateX(9%)}}
main>section.breakfast-edit::before{background-size:340px auto;background-repeat:repeat;opacity:.82}
.content-edit .candle-smoke img{top:-12%;height:112%;width:105%;left:-27%;filter:contrast(1.3);animation:smoke-full-height 31s ease-in-out infinite;animation-delay:-9s}
.content-edit .candle-smoke img:nth-child(2){left:27%;top:-18%;height:115%;width:100%;animation-duration:39s;animation-delay:-23s}
.content-edit .candle-smoke img:nth-child(3){left:5%;top:-26%;height:125%;width:92%;animation-duration:46s;animation-delay:-34s}
@keyframes smoke-full-height{0%{transform:translate3d(-3%,13%,0) scale(.96);opacity:.25}30%{opacity:.76}70%{opacity:.65}100%{transform:translate3d(7%,-24%,0) scale(1.12);opacity:.25}}
main>section.more-edit::before{opacity:.92;filter:contrast(1.23);background-size:105% 105%;animation:foam-texture 12s ease-in-out infinite alternate!important}
.more-edit .foam-motion{opacity:.36;filter:contrast(1.18);animation:foam-detail 8s ease-in-out infinite alternate}
@keyframes foam-texture{from{background-position:0% 10%;filter:contrast(1.2) brightness(1)}to{background-position:100% 90%;filter:contrast(1.3) brightness(1.04)}}
@keyframes foam-detail{from{background-position:20% 20%;opacity:.15}to{background-position:80% 80%;opacity:.4}}
@media(max-width:760px){
 main>section:not(.cover){padding-top:30px;padding-bottom:48px}
 main>section:not(.cover) .chapter-title,main>section:not(.cover) .chapter-title.candle-title{height:215px;width:100%;margin:16px auto 8px}
 .chapter-copy{font-size:25px;min-height:0;margin:0 auto 24px}
 .chapter-copy span{font-size:13px;margin-top:10px}
 main>section.breakfast-edit::before{background-size:300px auto}
 .french-window{margin-bottom:20px}
}
.motion-paused .title-cloud{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.content-edit .candle-smoke img{animation:none!important;opacity:.55}.title-cloud{animation:none!important}}
/* Reserve video geometry before metadata loads; keep video layers free of parent filters. */
main>section:not(.cover) .film-card video{aspect-ratio:var(--video-ratio,9 / 16)}
.theme-plate .frame-stage,.theme-pillow .frame-stage,.theme-shell .frame-stage{filter:none}
.theme-plate .frame-art,.theme-pillow .frame-art,.theme-shell .frame-art{filter:drop-shadow(0 10px 14px #5b5d5022)}
.video-controls .play{min-width:54px}
/* A static cover stays visible until the first video frame has actually rendered. */
main>section:not(.cover) .video-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;z-index:1;opacity:1;transition:opacity .18s linear}
main>section:not(.cover) .has-played .video-poster{opacity:0}
/* Hidden chapters consume no animation frames. */
main>section:not(.scene-visible)::before,main>section:not(.scene-visible)::after,
main>section:not(.scene-visible) .scene img,main>section:not(.scene-visible) .foam-motion,
main>section:not(.scene-visible) .chapter-title img{animation-play-state:paused!important}
/* Move texture layers without repainting the full chapter each frame. */
@keyframes gloss-flow{from{transform:translate3d(-1%,0,0) scale(1.04)}to{transform:translate3d(1%,1%,0) scale(1.04)}}
@keyframes foam-texture{from{transform:translate3d(-1%,-1%,0) scale(1.04)}to{transform:translate3d(1%,1%,0) scale(1.04)}}
@keyframes foam-detail{from{transform:translate3d(1%,0,0) scale(1.03);opacity:.28}to{transform:translate3d(-1%,1%,0) scale(1.03);opacity:.4}}
.rates .contact-button,.rates .email,.rates .copy-email,footer a{position:relative;z-index:5;pointer-events:auto;touch-action:manipulation}
footer{position:relative;z-index:2}footer a{display:inline-block;min-height:44px;padding:8px 0}
.copy-email{display:block;margin:14px auto 0;padding:8px 18px;border:1px solid #52615155;border-radius:22px;background:#faf6ef;color:#43564b;font-size:14px}
.email-address{max-width:100%;margin:12px auto;padding:10px;font-size:16px}

/* Keep scrolling video surfaces independent of backdrop sampling. */
header{backdrop-filter:none;-webkit-backdrop-filter:none;background:#faf6ef}
main>section:not(.cover) .video-controls button{backdrop-filter:none;-webkit-backdrop-filter:none}
main>section:not(.cover) .film-card .video-wrap{transform:translateZ(0);isolation:isolate}
main>section:not(.cover) .film-card video{backface-visibility:hidden;-webkit-backface-visibility:hidden}
main>section:not(.cover) .has-played .video-poster{visibility:hidden;transition:none}
main>section:not(.scene-visible) .scene img,main>section:not(.scene-visible) .chapter-title img{will-change:auto}

/* Stationary edge veils keep moving textures from exposing a hard section seam. */
main>section:not(.cover){--edge-fade:clamp(130px,18vw,220px)}
main>section:not(.cover)::after{
 content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
 background:linear-gradient(to bottom,var(--start) 0,transparent var(--edge-fade),transparent calc(100% - var(--edge-fade)),var(--end) 100%);
 animation:none;transform:none;
}
main>section:not(.cover)::before{
 -webkit-mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 78%,transparent);
 mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 78%,transparent);
}
/* A dedicated moving image restores visible motion without moving the edge fade. */
main>section.photo-edit::before,main>section.rates::before{content:none;animation:none!important}
.closing-atmosphere{
 -webkit-mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 78%,transparent);
 mask-image:linear-gradient(to bottom,transparent,#000 18%,#000 78%,transparent);
}
.closing-atmosphere img{
 position:absolute;inset:-6%;width:112%;height:112%;object-fit:cover;
 opacity:.76;animation:closing-float 18s ease-in-out infinite alternate;
 animation-delay:-6s;transform-origin:center;
}
.rates .closing-atmosphere img{animation-direction:alternate-reverse;animation-delay:-12s}
@keyframes closing-float{
 from{transform:translate3d(-2.5%,-2%,0) scale(1.01)}
 to{transform:translate3d(2.5%,2%,0) scale(1.045)}
}
footer{background:linear-gradient(#e1e9df,#faf6ef)}

/* Open video cards; the table and bedding are the setting, not the frame. */
.plate-gallery,.beach-gallery{grid-template-columns:repeat(2,minmax(0,1fr));max-width:780px;gap:30px 24px}
.bright-edit .staggered-gallery{grid-template-columns:repeat(2,minmax(0,1fr));max-width:780px;gap:30px 24px}
.bright-edit .film-card:first-child{grid-column:1/-1;width:54%;margin:0 auto}
@media(max-width:760px){
 .plate-gallery,.beach-gallery,.bright-edit .staggered-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 16px}
 .bright-edit .film-card:first-child{grid-column:1/-1;width:66%;margin:0 auto}
}

main>section.breakfast-edit::before{
 background-image:linear-gradient(#f7f5ed30,#f7f5ed30),url('assets/breakfast-table-setting.png');
 background-size:cover;background-repeat:no-repeat;background-position:center;opacity:.82;
}
main>section.bright-edit::before{
 background-image:url('assets/morning-made-bed.png');
 background-size:cover;background-repeat:no-repeat;background-position:center top;opacity:.86;
}
