/* home geometry is emitted inline on elements */

/* --- marquee hero (mqh-) — hero round winner, integrated 2026-07-15 ---------
   Kinetic Ariebella wordmark gliding behind the centered portrait; the front
   band layer is clipped to the portrait width so the type turns white where
   it crosses the photo. Section stays sticky (sticksec) like the old hero. */
.mqh-bg{
  position:absolute;inset:0;pointer-events:none;
  background:
    linear-gradient(rgba(255,255,255,.9), rgba(255,255,255,.9)),
    url("../images/uploads/JGGbRQD-0_21sizeoriginal.jpeg") center/cover no-repeat;
  background-attachment:fixed;
}
.mqh-band{position:absolute;left:0;top:50%;transform:translateY(-58%);width:100%;overflow:hidden;pointer-events:none;}
.mqh-track{display:flex;width:max-content;animation:mqh-slide 38s linear infinite;}
.mqh-track span{
  font-family:var(--f-title);font-size:238px;line-height:1;letter-spacing:.08em;
  text-transform:uppercase;white-space:nowrap;padding-right:.45em;
}
.mqh-back span{color:var(--blue);}
.mqh-front{clip-path:inset(0 calc(50% - 231px));}
.mqh-front span{color:var(--white);}
@keyframes mqh-slide{from{transform:translateX(0);}to{transform:translateX(-50%);}}

.mqh-portrait{
  position:absolute;left:50%;top:50%;transform:translate(-50%,-52%);
  width:462px;height:640px;overflow:hidden;margin:0;
  animation:mqh-rise 1.2s .15s cubic-bezier(.2,.7,.2,1) both;
}
.mqh-portrait img,
.mqh-portrait video {width:100%;height:100%;object-fit:cover;display:block;transition:transform 6s ease;}
.sec-hero-images:hover .mqh-portrait img,
.sec-hero-images:hover .mqh-portrait video {transform:scale(1.045);}
@keyframes mqh-rise{from{opacity:0;transform:translate(-50%,-48%);}to{opacity:1;transform:translate(-50%,-52%);}}

.mqh-cta{
  position:absolute;left:50%;top:calc(50% + 238px);transform:translateX(-50%);z-index:3;
  font-family:var(--f-label);font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  background:var(--taupe);color:var(--ink);padding:16px 34px;text-decoration:none;transition:.4s;
  animation:mqh-fade 1.4s .9s both;
}
.mqh-cta:hover{background:var(--ink);color:var(--cream);}
@keyframes mqh-fade{from{opacity:0;}to{opacity:1;}}

.mqh-corner{
  position:absolute;font-family:var(--f-label);font-size:12px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink);
}
.mqh-tl{top:34px;left:44px;}
.mqh-logo{position:absolute;top:26px;left:44px;width:120px;height:auto;z-index:3;
  animation:mqh-fade 1.4s .5s both;}
.mqh-tr{top:34px;right:112px;text-align:right;}
.mqh-bl{bottom:34px;left:44px;}
.mqh-br{bottom:34px;right:44px;text-align:right;}

/* --- museum hang love stories (hng-) — love-stories round 2 winner, 2026-07-15
   Four portraits sharing one baseline in open white space, each with a plaque
   of numeral + title and a caption that surfaces on hover; resting on one
   print quietly dims the others. Replaced round 1's mosaic (msc-, archived in
   staging/extra_sections/ariebella/love-stories/). Entrances ride the shared
   .reveal observer with per-piece delays. */
.hng-frame{
  position:relative;width:1320px;max-width:calc(100% - 60px);height:var(--h);margin:0 auto;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:52px;
}
.hng-head{text-align:center;}
.hng-kicker{font-family:var(--f-label);font-size:11px;letter-spacing:.28em;text-transform:uppercase;margin:0 0 14px;color:rgba(30,29,26,.65);}
/* line-height 1 cropped the descenders of "In every package" against the sub
   line below it, so the two read as one crowded block. Give the h2 enough box
   for its descenders and open the gap; both are spacing-only. */
.hng-head h2{font-family:var(--f-title);font-weight:400;font-size:64px;line-height:1.08;margin:0;}
/* Two classes on purpose: style.css's `.sec p{margin:0}` is (0,1,1) and
   outranks a bare `.hng-sub`, which is why the original 18px never applied and
   the sub line sat against the h2's descenders. */
.hng-head .hng-sub{margin:28px 0 0;font-size:14px;letter-spacing:.04em;color:rgba(30,29,26,.7);}
.hng-wall{display:flex;align-items:center;gap:64px;}
.hng-piece{width:236px;text-decoration:none;color:inherit;transition:opacity .7s ease;}
.hng-wall:hover .hng-piece:not(:hover){opacity:.45;}
.hng-piece figure{margin:0;overflow:hidden;height:312px;}
.hng-piece img,
.hng-piece video {width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.6s ease;}
.hng-piece:hover img,
.hng-piece:hover video {transform:scale(1.035);}
.hng-plaque{border-top:1px solid var(--line);margin-top:18px;padding-top:14px;}
.hng-no{font-family:var(--f-label);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:rgba(30,29,26,.55);display:block;margin-bottom:7px;}
.hng-piece h3{font-family:var(--f-title);font-weight:400;font-size:22px;line-height:1.2;margin:0;}
.hng-piece .hng-note{
  margin:8px 0 0;font-size:12.5px;line-height:1.6;letter-spacing:.03em;color:rgba(30,29,26,.7);
  opacity:0;transform:translateY(6px);transition:opacity .7s ease, transform .7s ease;
}
.hng-piece:hover .hng-note{opacity:1;transform:none;}
.hng-cta{
  font-family:var(--f-label);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ink);text-decoration:none;padding-bottom:7px;border-bottom:1px solid var(--line);
  transition:border-color .5s ease;
}
.hng-cta:hover{border-color:var(--ink);}

/* entrance stagger via the shared reveal observer */
.hng-frame .hng-head,.hng-frame .hng-piece,.hng-frame .hng-cta{opacity:0;transform:translateY(22px);transition:opacity 1s ease,transform 1s ease;}
.hng-frame.in .hng-head,.hng-frame.in .hng-piece,.hng-frame.in .hng-cta{opacity:1;transform:none;}
.hng-frame.in .hng-head{transition-delay:.05s}
.hng-frame.in .hng-piece:nth-child(1){transition-delay:.18s}
.hng-frame.in .hng-piece:nth-child(2){transition-delay:.32s}
.hng-frame.in .hng-piece:nth-child(3){transition-delay:.46s}
.hng-frame.in .hng-piece:nth-child(4){transition-delay:.6s}
.hng-frame.in .hng-cta{transition-delay:.78s}

/* --- curator showcase (scw-) — showcase round winner, integrated 2026-07-15 --
   One large spotlight frame with a thumbnail rail to its right; hovering or
   clicking a thumbnail crossfades the stage image and updates the caption and
   counter (swap JS in script.js). Entrances ride the shared .reveal observer
   with per-piece transition delays. Geometry lives here, not inline. */
.scw-copy{left:0;top:186px;width:300px;}
.scw-copy .scw-kicker{font-family:var(--f-label);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:rgba(30,29,26,.55);margin:0 0 26px;}
.scw-copy .scw-title{font-family:var(--f-title);font-weight:400;font-size:58px;line-height:1.12;letter-spacing:.06em;text-transform:uppercase;margin:0 0 30px;}
.scw-copy .scw-para{font-size:15px;line-height:1.75;letter-spacing:.04em;color:rgba(30,29,26,.82);margin:0 0 36px;}

.scw-stage{left:372px;top:110px;width:540px;height:680px;background:var(--taupe);overflow:hidden;}
.scw-stage img,
.scw-stage video {position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .9s ease;}
.scw-stage img.active,
.scw-stage video.active {opacity:1;}
.scw-stage::after{content:"";position:absolute;inset:14px;border:1px solid rgba(255,255,255,.45);pointer-events:none;}

.scw-caption{left:372px;top:806px;width:540px;display:flex;justify-content:space-between;align-items:baseline;}
.scw-cap-name{font-family:var(--f-label);font-size:12px;letter-spacing:.18em;text-transform:uppercase;}
.scw-cap-count{font-family:var(--f-title);font-size:20px;letter-spacing:.1em;color:rgba(30,29,26,.5);}

.scw-rail{left:990px;top:110px;width:210px;display:flex;flex-direction:column;gap:22px;}
.scw-thumb{position:relative;width:132px;height:132px;margin-left:39px;cursor:pointer;border:0;padding:0;background:none;}
.scw-thumb img,
.scw-thumb video {width:100%;height:100%;object-fit:cover;filter:grayscale(35%);opacity:.65;transition:opacity .5s, filter .5s;}
.scw-thumb.active img,
.scw-thumb:hover img,
.scw-thumb.active video,
.scw-thumb:hover video {filter:none;opacity:1;}
.scw-thumb::before{content:"";position:absolute;inset:-7px;border:1px solid var(--line);opacity:0;transition:opacity .5s;}
.scw-thumb.active::before{opacity:1;}
.scw-rail-label{left:1176px;top:130px;font-family:var(--f-label);font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:rgba(30,29,26,.45);writing-mode:vertical-rl;}

.scw-stage.reveal{transition-delay:.12s;}
.scw-caption.reveal{transition-delay:.24s;}
.scw-rail.reveal{transition-delay:.36s;}

/* --- numeral service suite (svn-) — services round winner, integrated 2026-07-15
   Ledger of three rows led by giant outlined digits with each collection's
   photo clipped inside the glyphs; hovering a row floods it white (section is
   cream) and slowly pans the photo within the numeral. Entrances ride the
   shared .reveal observer. Flow layout inside the .sec, no .cv canvas. */
.svn-wrap{width:1200px;margin:0 auto;padding:40px 0 32px;}

.svn-hdr{display:flex;align-items:center;justify-content:space-between;padding:0 22px 20px;}
.svn-hdr p{margin:0;}
.svn-label{font-family:var(--f-label);font-size:12px;letter-spacing:.28em;text-transform:uppercase;}
.svn-intro{font-size:14px;letter-spacing:.04em;max-width:380px;color:rgba(30,29,26,.72);line-height:1.6;}

.svn-rows{border-top:1px solid var(--line);}
.svn-row{
  position:relative;display:grid;grid-template-columns:320px 1fr auto;align-items:center;
  gap:44px;height:186px;padding:0 22px;border-bottom:1px solid var(--line);
  text-decoration:none;color:inherit;
}
.svn-row::after{content:"";position:absolute;inset:0;background:var(--white);opacity:0;transition:opacity .5s ease;}
.svn-row:hover::after{opacity:1;}
.svn-row > *{position:relative;z-index:1;}
.svn-row:nth-child(2).reveal{transition-delay:.15s;}
.svn-row:nth-child(3).reveal{transition-delay:.3s;}

.svn-num{
  font-family:var(--f-title);font-size:160px;line-height:1;letter-spacing:.02em;
  /* resting fill = the hairline gray (--line) composited opaque; it paints over
     the text-clipped photo, so fading it to transparent reveals the image */
  color:#d2d1ce;
  background-size:auto 130%;background-position:50% 40%;
  -webkit-background-clip:text;background-clip:text;
  transition:background-size 1.2s ease,color .5s ease;
  user-select:none;
}
.svn-row:hover .svn-num{background-size:auto 150%;color:transparent;}

.svn-meta{max-width:520px;}
.svn-meta p{margin:0;}
.svn-title{font-family:var(--f-title);font-size:30px;line-height:1.15;margin-bottom:8px!important;}
.svn-desc{font-size:14px;letter-spacing:.03em;color:rgba(30,29,26,.7);}

.svn-go{
  font-family:var(--f-label);font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  display:inline-flex;align-items:center;gap:12px;white-space:nowrap;
}
.svn-go::after{content:"";width:34px;height:1px;background:var(--ink);transition:width .5s ease;}
.svn-row:hover .svn-go::after{width:58px;}

.svn-ftr{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:24px 22px 0;}
.svn-note{margin:0;font-family:var(--f-label);font-size:11px;letter-spacing:.14em;text-transform:uppercase;max-width:560px;line-height:1.8;color:rgba(30,29,26,.75);}
.svn-ftr .btn{padding:16px 34px;}

/* --- stat-band about (stb-) — about/photographer-bio round winner, 2026-07-15
   Two-column bio: copy, a three-cell metric row whose numbers count up when the
   row scrolls into view (count-up JS in script.js), the statement and CTA on the
   left; a tall portrait with an uppercase caption plate on the right. Flow
   layout inside the .sec, no .cv canvas. Entrances ride the shared .reveal
   observer with per-piece delays. */
.stb-wrap{
  width:1200px;margin:0 auto;min-height:760px;
  display:grid;grid-template-columns:1fr 430px;align-items:center;gap:72px;padding:64px 0;
}
.stb-left{max-width:640px;}
.stb-left p{margin:0;}
.stb-kicker{font-family:var(--f-label);font-size:12px;letter-spacing:.28em;text-transform:uppercase;color:var(--blue);margin-bottom:24px!important;}
.stb-title{font-family:var(--f-title);font-weight:400;font-size:66px;line-height:1;letter-spacing:.02em;margin-bottom:14px!important;}
.stb-copy{font-size:16px;line-height:1.85;letter-spacing:.04em;color:rgba(30,29,26,.82);max-width:520px;margin-bottom:44px!important;}

.stb-stats{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.stb-stat{position:relative;padding:28px 8px 26px;}
.stb-stat + .stb-stat::before{content:"";position:absolute;left:0;top:22px;bottom:22px;width:1px;background:var(--line);}
.stb-num{display:block;font-family:var(--f-title);font-size:52px;line-height:1;letter-spacing:.01em;margin-bottom:10px;}
.stb-lab{font-family:var(--f-label);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:rgba(30,29,26,.6);line-height:1.5;}

.stb-statement{font-family:var(--f-title);font-size:24px;line-height:1.45;max-width:560px;margin:40px 0 34px!important;}
.stb-cta{
  display:inline-flex;align-items:center;gap:13px;font-family:var(--f-label);font-size:11px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--white);text-decoration:none;padding:16px 34px;background:var(--ink);transition:.4s;
}
.stb-cta::after{content:"\2192";}
.stb-cta:hover{background:var(--taupe);color:var(--ink);gap:19px;}

.stb-media{position:relative;height:600px;}
.stb-media img,
.stb-media video {width:100%;height:100%;object-fit:cover;}
.stb-cap{
  position:absolute;left:0;bottom:26px;background:var(--cream);padding:11px 20px;
  font-family:var(--f-label);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink);
}

/* staggered entrance via the shared reveal observer */
.stb-title.reveal{transition-delay:.08s;}
.stb-copy.reveal{transition-delay:.16s;}
.stb-media.reveal{transition-delay:.2s;}
.stb-stats.reveal{transition-delay:.28s;}
.stb-statement.reveal{transition-delay:.4s;}
.stb-cta.reveal{transition-delay:.5s;}

/* --- cinematic testimonials (cin-): moved to style.css 2026-07-21 (shared with
   occasion.html's reviews section). JS in script.js. */

/* --- feature-split blog favorites (bfx-) — blog-favorites round winner,
   integrated 2026-07-15. One large lead post with its title set over the photo,
   beside a slim column: the "Reader Favorites" head, two text-forward thumbnail
   rows, and the journal button. Flow layout inside the .sec, no .cv canvas.
   Entrances ride the shared .reveal observer with per-piece delays. */
.bfx-wrap{
  width:1200px;margin:0 auto;padding:88px 0 100px;
  display:grid;grid-template-columns:718px 1fr;gap:64px;align-items:stretch;
}
.bfx-wrap p{margin:0;}

.bfx-feature{position:relative;height:660px;overflow:hidden;background:var(--taupe);display:block;text-decoration:none;}
.bfx-feature img,
.bfx-feature video {width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s ease;}
.bfx-feature:hover img,
.bfx-feature:hover video {transform:scale(1.04);}
.bfx-scrim{position:absolute;inset:0;background:linear-gradient(to top,rgba(30,29,26,.66) 0%,rgba(30,29,26,.12) 46%,rgba(30,29,26,0) 70%);}
.bfx-fbody{position:absolute;left:0;right:0;bottom:0;padding:44px 46px;color:#fff;}
.bfx-fcat{font-family:var(--f-label);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:rgba(255,255,255,.85);}
.bfx-ftitle{font-family:var(--f-title);font-size:44px;line-height:1.1;margin:14px 0 12px!important;max-width:560px;}
.bfx-fmeta{font-family:var(--f-label);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.72);}

.bfx-side{display:flex;flex-direction:column;}
.bfx-head{margin-bottom:30px;}
.bfx-kicker{font-family:var(--f-label);font-size:12px;letter-spacing:.26em;text-transform:uppercase;color:var(--blue);}
.bfx-h1{font-family:var(--f-title);font-size:46px;line-height:1.04;margin-top:12px!important;}

.bfx-row{display:grid;grid-template-columns:124px 1fr;gap:22px;align-items:center;
  padding:26px 0;border-top:1px solid var(--line);text-decoration:none;color:inherit;transition:opacity .3s;}
.bfx-row:hover{opacity:.68;}
.bfx-row figure{width:124px;height:124px;overflow:hidden;background:var(--taupe);margin:0;}
.bfx-row img,
.bfx-row video {width:100%;height:100%;object-fit:cover;display:block;}
.bfx-scat{font-family:var(--f-label);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--blue);}
.bfx-stitle{font-family:var(--f-title);font-size:22px;line-height:1.18;margin:7px 0 8px!important;}
.bfx-smeta{font-family:var(--f-label);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:rgba(30,29,26,.5);}

.bfx-cta{align-self:flex-start;margin-top:auto;}

/* staggered entrance via the shared reveal observer */
.bfx-head.reveal{transition-delay:.05s;}
.bfx-feature.reveal{transition-delay:.12s;}
.bfx-row.reveal{transition-delay:.22s;}
.bfx-row + .bfx-row.reveal{transition-delay:.34s;}
.bfx-cta.reveal{transition-delay:.44s;}

/* --- cta: framed invitation card over a fixed, B&W photo with a blue wash ---
   Three stacked layers under the card:
     .cta-bg    the couple's photo pinned to the viewport (attachment:fixed,
                same technique as the testimonials block).
     .cta-desat a flat gray plate in mix-blend-mode:saturation, which strips the
                photo's colour to black and white. We do this with a blend layer
                rather than filter:grayscale, because putting a filter on the
                fixed-bg element would turn attachment:fixed back into scroll.
     .cta-tint  the house dusty blue (--blue #afbec5) as a translucent wash,
                laid over the now-monochrome photo.
   isolation:isolate keeps the saturation blend from reaching the page behind. */
.sec-cta{overflow:hidden;isolation:isolate;}
.sec-cta .cta-bg{
  position:absolute;inset:0;z-index:0;
  background:url('../images/hv-guests-pizza.jpg') center/cover no-repeat fixed;
}
.sec-cta .cta-desat{position:absolute;inset:0;z-index:1;background:#808080;mix-blend-mode:saturation;}
.sec-cta .cta-tint{position:absolute;inset:0;z-index:2;background:rgba(255,255,255,.72);}
.cta-invite{
  position:absolute;inset:0;z-index:3;
  display:flex;align-items:center;justify-content:center;padding:48px 24px;
}
.sec-cta .inv{
  position:relative;width:640px;max-width:100%;background:var(--blue-lt);
  padding:14px;box-shadow:0 40px 90px rgba(30,29,26,.28);
}
.sec-cta .inv-frame{border:1px solid rgba(255,255,255,.75);padding:56px 66px 60px;text-align:center;position:relative;}
.sec-cta .inv-frame::before{content:"";position:absolute;inset:8px;border:1px solid rgba(255,255,255,.3);pointer-events:none;}
.sec-cta .inv-crest{font-family:var(--f-script);font-size:70px;line-height:1;color:var(--cream);}
.sec-cta .inv-over{font-family:var(--f-label);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:rgba(255,255,255,.7);margin-top:14px;}
.sec-cta .inv-title{font-family:var(--f-title);font-weight:400;font-size:58px;line-height:1.08;margin:14px 0 0;color:var(--cream);}
.sec-cta .inv-orn{display:flex;align-items:center;justify-content:center;gap:14px;margin:22px 0;color:var(--cream);}
.sec-cta .inv-orn::before,.sec-cta .inv-orn::after{content:"";width:70px;height:1px;background:rgba(255,255,255,.3);}
.sec-cta .inv-para{font-size:15.5px;line-height:1.85;letter-spacing:.04em;color:rgba(255,255,255,.85);max-width:420px;margin:0 auto;}
.sec-cta .inv-btn{display:inline-block;margin-top:32px;padding:15px 42px;background:var(--cream);color:var(--ink);
  font-family:var(--f-label);font-size:11px;letter-spacing:.26em;text-transform:uppercase;text-decoration:none;transition:.45s;
}
.sec-cta .inv-btn:hover{background:var(--white);color:var(--ink);}
.sec-cta .inv-foot{margin-top:24px;font-family:var(--f-label);font-size:10.5px;letter-spacing:.28em;
  text-transform:uppercase;color:rgba(255,255,255,.6);
}

/* ===========================================================================
   MOBILE LAYER (additive; desktop above 900px untouched). Home sections.
   =========================================================================== */
@media (max-width: 900px){

  /* --- marquee hero (mqh) --------------------------------------------------- */
  .sec-hero-images{height:100svh; min-height:540px; max-height:820px;}
  /* pin the photo to the viewport on mobile (background-attachment:fixed is a
     no-op on phones); clip-path keeps the fixed layer inside the section */
  .sec-hero-images{clip-path:inset(0);}
  .mqh-bg{position:fixed;background-attachment:scroll;}
  .mqh-track span{font-size:min(23vw, 110px);}
  .mqh-portrait{width:min(72vw, 300px); height:min(99.7vw, 415px);}
  .mqh-front{clip-path:inset(0 calc(50% - min(36vw, 150px)));}
  .mqh-cta{top:auto; bottom:34px; white-space:nowrap; padding:14px 26px;}
  .mqh-corner{font-size:9px; letter-spacing:.14em;}
  .mqh-tl{top:18px; left:16px; max-width:180px;}
  .mqh-logo{top:14px; left:16px; width:82px;}
  .mqh-tr, .mqh-bl, .mqh-br{display:none;}

  /* paper divider keeps its band height (blanket zeroes --h sections) */
  .sec-paper-texture{height:62px;}

  /* --- intro statement (canvas) --------------------------------------------- */
  .sec-intro-statement .cv{text-align:center; padding:56px 22px; gap:18px;}
  .sec-intro-statement .cv > img,
  .sec-intro-statement .cv > video {order:1; width:130px !important; align-self:center;}
  .sec-intro-statement .cv > .t-subheading{order:2;}
  .sec-intro-statement .cv > .t-title{order:3;}
  .sec-intro-statement .cv > .t-paragraph{order:4;}
  .sec-intro-statement .cv > .btn{order:5; margin-top:8px;}
  /* the canvas nudges are desktop-coordinate tweaks (inline translate from the
     visual editor); on the flattened mobile stack they drag copy into the
     heading above it, so neutralise them here. */
  .sec-intro-statement .cv > *{transform:none !important;}

  /* --- curator showcase (scw) ------------------------------------------------ */
  .sec-showcase .cv{padding:56px 20px; gap:0;}
  .sec-showcase .scw-copy{order:1;}
  .scw-copy .scw-title{font-size:clamp(32px, 9vw, 42px);}
  .scw-copy .scw-para{margin:0 0 26px;}
  .scw-copy .btn{margin-bottom:30px;}
  .sec-showcase .scw-stage{
    order:2; position:relative !important;
    width:100% !important; height:auto !important; aspect-ratio:54/68;
  }
  .sec-showcase .scw-caption{order:3; display:flex; margin-top:12px;}
  .sec-showcase .scw-rail{
    order:4; flex-direction:row; justify-content:center;
    width:100% !important; gap:14px; margin-top:24px;
  }
  .scw-thumb{width:60px; height:60px; margin-left:0;}
  .sec-showcase .scw-rail-label{display:none !important;}

  /* --- numeral service suite (svn) ------------------------------------------- */
  .svn-wrap{width:auto; padding:48px 18px 42px;}
  .svn-hdr{flex-direction:column; align-items:flex-start; gap:12px; padding:0 4px 18px;}
  .svn-row{grid-template-columns:92px 1fr; gap:18px; height:auto; padding:18px 4px;}
  .svn-num{font-size:60px;}
  .svn-title{font-size:21px;}
  .svn-go{display:none;}
  .svn-ftr{flex-direction:column; align-items:flex-start; gap:18px; padding:22px 4px 0;}

  /* --- museum hang (hng) ------------------------------------------------------ */
  .hng-frame{width:auto; max-width:none; height:auto; padding:56px 20px; gap:36px;}
  .hng-head h2{font-size:clamp(32px, 9vw, 44px);}
  .hng-wall{flex-direction:column; align-items:stretch; gap:40px; width:100%;}
  .hng-piece{width:100%;}
  .hng-piece figure{height:auto; aspect-ratio:236/312;}
  .hng-piece .hng-note{opacity:1; transform:none;}

  /* --- stat-band about (stb) --------------------------------------------------- */
  .stb-wrap{width:auto; grid-template-columns:1fr; gap:44px; padding:56px 20px; min-height:0;}
  .stb-title{font-size:clamp(34px, 10vw, 46px);}
  .stb-copy{max-width:none;}
  .stb-num{font-size:32px;}
  .stb-lab{font-size:9px; letter-spacing:.12em;}
  .stb-stat{padding:18px 4px 16px;}
  .stb-statement{font-size:19px;}
  .stb-media{height:auto; aspect-ratio:43/60;}

  /* cinematic testimonials (cin): mobile rules moved to style.css with the block */
  .cin-rail{bottom:30px;}
  .cin-lines button{width:54px;}

  /* --- blog favorites (bfx) ------------------------------------------------------ */
  .bfx-wrap{width:auto; grid-template-columns:1fr; gap:40px; padding:56px 20px 64px;}
  .bfx-feature{height:440px;}
  .bfx-fbody{padding:26px 22px;}
  .bfx-ftitle{font-size:27px;}
  .bfx-h1{font-size:34px;}
  .bfx-row{grid-template-columns:96px 1fr; gap:16px;}
  .bfx-row figure{width:96px; height:96px;}
  .bfx-cta{align-self:stretch; text-align:center; margin-top:12px;}

  /* --- invitation cta ------------------------------------------------------------ */
  .sec-cta{clip-path:inset(0);}
  .sec-cta .cta-bg{position:fixed;background-attachment:scroll;}
  .cta-invite{position:relative; inset:auto; padding:64px 16px;}
  .sec-cta .inv-frame{padding:38px 20px 42px;}
  .sec-cta .inv-title{font-size:clamp(30px, 9vw, 42px);}
  .sec-cta .inv-para{font-size:14px;}
  .sec-cta .inv-crest{font-size:52px;}
}
