/* JST_STAGE3_LIVING_JAVANESE_STORY_FOLIO_STATIC_V1 */
:root{--jst-ink:#1b1511;--jst-ink-soft:#45352b;--jst-paper:#efe3cb;--jst-paper-2:#dcc9a8;--jst-paper-3:#c9b28d;--jst-brass:#b88a49;--jst-brass-2:#dfbd7a;--jst-wood:#21150f;--jst-wood-2:#3b291f;--jst-maroon:#4e2622;--jst-safe:clamp(18px,4vw,56px);--jst-max:1280px}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:#120e0b}body{margin:0}.jst-body{font-family:Georgia,'Times New Roman',serif;color:var(--jst-paper);background:#120e0b;overflow-x:hidden}.jst-body.jst-locked{overflow:hidden}.jst-app{position:relative;min-height:100vh;isolation:isolate;background:linear-gradient(180deg,#120e0b,#211712 40%,#0e0b09)}.jst-app img{max-width:100%;display:block}.jst-app button,.jst-app input,.jst-app select,.jst-app textarea{font:inherit}.jst-app a{color:inherit}.jst-app :where(h1,h2,h3,p,small,strong,a,label,span){overflow-wrap:anywhere;word-break:normal}.jst-page-atmosphere{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.jst-large,.jst-particle{position:absolute;pointer-events:none;user-select:none}.jst-large--textile-left{width:min(44vw,620px);left:-13vw;top:24vh;opacity:.78}.jst-large--textile-right{width:min(42vw,600px);right:-13vw;top:56vh;opacity:.7}.jst-large--page-left{width:min(32vw,460px);left:-14vw;top:112vh;opacity:.4}.jst-large--page-right{width:min(34vw,480px);right:-16vw;top:196vh;opacity:.36}.jst-particle{inset:0;width:100%;height:100%;object-fit:cover;opacity:.18}.jst-particle--mid{opacity:.11}.jst-primary{display:inline-flex;align-items:center;justify-content:center;gap:.8em;min-height:48px;padding:.72rem 1.25rem;border:1px solid var(--jst-brass-2);border-radius:999px;color:#f8ead1;background:linear-gradient(#4f2a21,#251712);box-shadow:inset 0 0 0 3px rgba(0,0,0,.16),0 8px 24px rgba(0,0,0,.18);text-decoration:none;cursor:pointer;position:relative;z-index:4}.jst-primary:focus-visible,.jst-app a:focus-visible,.jst-app button:focus-visible,.jst-app input:focus-visible,.jst-app select:focus-visible,.jst-app textarea:focus-visible{outline:3px solid #f2c77c;outline-offset:3px}.jst-kicker{text-transform:uppercase;letter-spacing:.16em;font-size:clamp(.72rem,1.2vw,.88rem);color:#815f36;margin:0 0 .6rem}.jst-empty{padding:1rem 1.25rem;border:1px dashed rgba(217,185,122,.4);border-radius:12px;color:#d7c7ad}.jst-reveal{opacity:1!important;transform:none!important}.jst-photo-fallback{position:absolute;inset:0;display:grid;place-items:center;background:linear-gradient(145deg,#3c2a20,#15100d);font-size:clamp(2.4rem,8vw,6rem);color:#d9b56e;z-index:1}.jst-photo-fallback--hidden{display:none!important}
/* opening */
.jst-opening{position:fixed;inset:0;z-index:120;background:radial-gradient(circle at 50% 28%,rgba(201,157,87,.18),transparent 36%),#100d0a;display:grid;place-items:center;padding:clamp(10px,2vw,28px);overflow:auto}.jst-opening.is-opening{opacity:.98}.jst-opening.is-open{opacity:0;visibility:hidden;pointer-events:none}.jst-opening-shell{position:relative;width:min(1160px,96vw);min-height:min(760px,92vh);display:grid;place-items:center}.jst-opening-folio-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 32px 38px rgba(0,0,0,.55));pointer-events:none}.jst-opening-tassel{position:absolute;width:7%;min-width:34px;left:49%;bottom:2%;transform:translateX(-50%);pointer-events:none}.jst-opening-grid{position:relative;z-index:2;display:grid;grid-template-columns:1fr 1fr;width:84%;gap:4%;align-items:center;padding:8% 5%;color:var(--jst-ink)}.jst-opening-leaf{min-width:0;text-align:center}.jst-opening-leaf--copy{padding:clamp(18px,3vw,46px)}.jst-opening-leaf h1{font-size:clamp(2.2rem,5vw,5.4rem);line-height:.88;margin:.15em 0 .18em;font-weight:500;letter-spacing:-.035em}.jst-opening-leaf h1 span{display:block;font-size:.52em;font-style:italic;margin:.16em}.jst-opening-note{max-width:28ch;margin:.7rem auto;color:#684d35;line-height:1.55}.jst-date{color:#6e5437}.jst-guest{margin:1rem auto 1.2rem;display:grid;gap:.15rem;max-width:30ch}.jst-guest small{color:#7e674a}.jst-media{position:relative;min-width:0;overflow:hidden}.jst-media-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.jst-frame-overlay{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;z-index:3}.jst-frame-overlay--paper{mix-blend-mode:multiply;opacity:.22}.jst-media--opening{aspect-ratio:560/760;width:min(360px,90%);margin:auto;border-radius:18px;background:#261c17}.jst-media--opening .jst-media-img{object-position:center 30%}.jst-cover-fallback{position:absolute;inset:0;display:grid;place-items:center;align-content:center;gap:.5rem;background:linear-gradient(rgba(26,19,15,.45),rgba(26,19,15,.75)),url('/templates/jawa-story-3d-motion/assets/backgrounds/courtyard-distant-warm.webp') center/cover;color:#f4e7cf}.jst-cover-fallback strong{font-size:clamp(2rem,5vw,4rem)}.jst-opening-marginalia{font-style:italic;color:#715538;margin:.7rem auto 0;max-width:18ch}
/* top navigation */
.jst-sitebar{position:sticky;top:0;z-index:80;height:54px;padding:0 max(16px,env(safe-area-inset-left));display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:1.5rem;background:rgba(16,12,10,.86);border-bottom:1px solid rgba(213,177,107,.26);backdrop-filter:blur(14px)}.jst-brand{text-decoration:none;color:#efdfc3;font-size:.92rem;white-space:nowrap}.jst-folio-nav{display:flex;gap:clamp(.7rem,1.8vw,1.5rem);justify-content:center;min-width:0}.jst-folio-nav a{font-size:.75rem;text-decoration:none;color:#dbc9aa;white-space:nowrap}.jst-folio-nav a.is-active{color:#fff0ce}.jst-mobile-menu{display:none;position:relative}.jst-mobile-menu summary{cursor:pointer;font-size:1.25rem;color:#f3dfba;list-style:none}.jst-mobile-menu div{position:absolute;right:0;top:36px;display:grid;min-width:180px;padding:.6rem;background:#17110e;border:1px solid #886539;box-shadow:0 14px 30px rgba(0,0,0,.45)}.jst-mobile-menu a{text-decoration:none;padding:.55rem .7rem;color:#ead8b7}.jst-music{position:fixed;right:18px;bottom:18px;z-index:90;display:flex;align-items:center;gap:.45rem;padding:.55rem .75rem;border:1px solid #af8448;border-radius:999px;background:rgba(22,16,13,.9);color:#f3e2c3;cursor:pointer;transition:opacity .2s}.jst-music img{width:20px;height:20px}.jst-music.is-playing{box-shadow:0 0 0 3px rgba(204,163,88,.16)}
/* common scene */
.jst-stage-stack{position:relative}.jst-scene{position:relative;padding:clamp(52px,7vw,100px) var(--jst-safe);scroll-margin-top:64px;overflow:visible}.jst-scene-title{text-align:center;max-width:720px;margin:0 auto clamp(24px,4vw,50px)}.jst-scene-title p{margin:0;color:#b99b6d;text-transform:uppercase;letter-spacing:.16em;font-size:.75rem}.jst-scene-title h2{font-weight:500;font-size:clamp(2rem,4vw,4rem);line-height:1;margin:.3rem 0;color:#f0e0c1}.jst-folio-stage{min-height:78vh;display:grid;place-items:center;background:linear-gradient(180deg,rgba(15,12,10,.28),rgba(15,12,10,.65)),url('/templates/jawa-story-3d-motion/assets/backgrounds/pavilion-wide-afternoon.webp') center/cover}.jst-hero-bg{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.18),transparent 22%,transparent 78%,rgba(0,0,0,.18));pointer-events:none}.jst-hero-spread{position:relative;width:min(980px,88vw);min-height:520px;display:grid;grid-template-columns:1fr .72fr;align-items:center;color:var(--jst-ink);filter:drop-shadow(0 25px 28px rgba(0,0,0,.45))}.jst-spread-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.jst-hero-copy{position:relative;z-index:2;text-align:center;padding:clamp(54px,6vw,90px) clamp(34px,5vw,78px)}.jst-hero-copy h2{font-size:clamp(3rem,7vw,6.6rem);line-height:.86;font-weight:500;margin:.1em 0;color:#2a1c16;letter-spacing:-.04em}.jst-hero-copy h2 span{display:block;font-size:.5em;font-style:italic;margin:.12em}.jst-hero-tagline,.jst-hero-date{color:#6c5137}.jst-hero-margin{position:relative;z-index:2;padding:4rem 3rem 3rem 1rem;color:#60472f;text-align:center;font-style:italic;line-height:1.6}.jst-scroll-cue{margin-top:1rem}
/* couple + countdown */
.jst-couple{background:linear-gradient(rgba(26,18,13,.82),rgba(24,17,13,.88)),url('/templates/jawa-story-3d-motion/assets/backgrounds/timber-shelf-wide.webp') center/cover}.jst-couple-spread{width:min(var(--jst-max),94vw);margin:auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,.82fr) minmax(0,1fr);align-items:center;gap:clamp(14px,2vw,30px)}.jst-person-leaf{min-width:0;position:relative;background:linear-gradient(145deg,#eadcc1,#cdb994);padding:clamp(14px,2vw,26px);box-shadow:0 20px 30px rgba(0,0,0,.32);color:var(--jst-ink);border-radius:4px}.jst-media--person{aspect-ratio:640/800;width:100%;background:#1e1713;border-radius:20px}.jst-media--person .jst-media-img{object-position:center 25%}.jst-person-copy{text-align:center;padding:1rem .75rem .3rem;min-height:0}.jst-person-copy small{color:#86643e;text-transform:uppercase;letter-spacing:.12em}.jst-person-copy h3{font-weight:500;font-size:clamp(1.4rem,2.4vw,2.5rem);line-height:1.05;margin:.4rem 0;color:#251914}.jst-person-copy p{margin:.3rem auto;color:#664b35;line-height:1.5;max-width:34ch}.jst-countdown-leaf{position:relative;min-width:0;text-align:center;color:#e8d2a6;padding:clamp(18px,2.4vw,30px);background:linear-gradient(#291c16,#120e0b);border:1px solid rgba(196,148,77,.58);box-shadow:inset 0 0 0 8px rgba(184,138,73,.08),0 18px 28px rgba(0,0,0,.3)}.jst-countdown-leaf h3{font-weight:500;margin:.15rem 0 1rem;font-size:clamp(1.4rem,2.4vw,2.5rem)}.jst-countdown-foldout{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.jst-time-panel{position:relative;aspect-ratio:1;display:grid;place-items:center;align-content:center;min-width:0}.jst-time-panel img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.88}.jst-time-panel strong,.jst-time-panel span{position:relative;z-index:2}.jst-time-panel strong{font-size:clamp(1.45rem,3.6vw,3rem);font-weight:500}.jst-time-panel span{font-size:.7rem;color:#cdb483}.jst-count-status{min-height:1.2em;margin:.6rem 0 0;color:#dbc49a;font-size:.82rem}
/* events */
.jst-events{background:linear-gradient(rgba(19,14,11,.82),rgba(19,14,11,.76)),url('/templates/jawa-story-3d-motion/assets/backgrounds/pavilion-wide-lamplight.webp') center/cover}.jst-event-spread{position:relative;width:min(1080px,92vw);margin:auto;display:grid;grid-template-columns:1fr 1fr;background:url('/templates/jawa-story-3d-motion/assets/timber/teak-shelf.webp') center/cover;padding:clamp(10px,1.5vw,18px);box-shadow:0 24px 45px rgba(0,0,0,.38)}.jst-event-leaf{position:relative;min-width:0;min-height:330px;padding:clamp(48px,5.5vw,84px) clamp(34px,4.5vw,70px);color:var(--jst-ink);display:grid;place-items:center;text-align:center;overflow:visible}.jst-paper-decoration{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:0;pointer-events:none}.jst-event-copy{position:relative;z-index:2;max-width:34ch}.jst-event-copy small{color:#896641;text-transform:uppercase;letter-spacing:.16em}.jst-event-copy h3{font-size:clamp(1.5rem,2.6vw,2.4rem);font-weight:500;margin:.4rem 0}.jst-event-copy p{line-height:1.55;margin:.4rem 0;color:#5c4331}.jst-event-copy strong{display:block;line-height:1.45;margin:.5rem 0;color:#34241c}
/* story */
.jst-story{background:linear-gradient(rgba(19,14,11,.72),rgba(19,14,11,.88)),url('/templates/jawa-story-3d-motion/assets/backgrounds/pavilion-shadow-corridor.webp') center/cover}.jst-story-intro{width:min(420px,90vw);margin:0 auto 2rem;color:var(--jst-ink);background:url('/templates/jawa-story-3d-motion/assets/paper/paper-aged-edge.webp') center/cover;padding:clamp(28px,4vw,52px);box-shadow:0 18px 28px rgba(0,0,0,.3)}.jst-story-intro h2{font-size:clamp(2rem,3.5vw,3.4rem);font-weight:500;margin:.2rem 0}.jst-story-intro p:last-child{line-height:1.6;color:#614833}.jst-story-foldout{width:min(1180px,96vw);margin:auto;display:flex;align-items:stretch;overflow-x:auto;scroll-snap-type:x mandatory;padding:1rem 0 1.5rem;overscroll-behavior-inline:contain}.jst-story-leaf{position:relative;flex:1 0 min(240px,26vw);min-width:220px;min-height:320px;color:var(--jst-ink);scroll-snap-align:center;display:grid;place-items:center;text-align:center;padding:48px 28px}.jst-story-leaf-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.jst-story-leaf>div{position:relative;z-index:2}.jst-story-leaf small{display:block;color:#805e38;margin-bottom:.8rem}.jst-story-leaf p{line-height:1.55;margin:0}
/* gallery */
.jst-gallery{background:#18110d url('/templates/jawa-story-3d-motion/assets/backgrounds/timber-shelf-wide.webp') center/cover}.jst-gallery-rail{position:relative;width:min(1240px,96vw);margin:auto;padding:clamp(30px,4vw,54px) clamp(20px,4vw,60px)}.jst-gallery-rail-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.jst-gallery-track{position:relative;z-index:2;display:flex;gap:clamp(10px,1.6vw,20px);overflow-x:auto;padding:.5rem;scroll-snap-type:x mandatory}.jst-gallery-print{border:0;background:none;padding:0;flex:0 0 clamp(190px,24vw,300px);cursor:pointer;scroll-snap-align:center}.jst-media--gallery{width:100%;background:#17110d;border-radius:8px}.jst-media--landscape{aspect-ratio:630/420}.jst-media--square{aspect-ratio:1}.jst-media--portrait{aspect-ratio:420/630}.jst-media--gallery .jst-media-img{object-position:center}.jst-gallery-print:hover{filter:brightness(1.04)}
/* map */
.jst-location{background:linear-gradient(rgba(22,16,12,.64),rgba(22,16,12,.84)),url('/templates/jawa-story-3d-motion/assets/backgrounds/courtyard-distant-evening.webp') center/cover}.jst-map-spread{width:min(1120px,92vw);margin:auto;display:grid;grid-template-columns:.72fr 1.28fr;gap:0;background:url('/templates/jawa-story-3d-motion/assets/paper/paper-map-plate.webp') center/cover;color:var(--jst-ink);box-shadow:0 20px 38px rgba(0,0,0,.35)}.jst-map-copy{padding:clamp(34px,5vw,72px);align-self:center}.jst-map-copy h2{font-size:clamp(2rem,4vw,3.8rem);font-weight:500;margin:.2rem 0 .7rem}.jst-map-copy p,.jst-map-copy strong{line-height:1.55;color:#5b4330}.jst-map-copy strong{display:block;margin:.7rem 0}.jst-map-link{margin-top:1rem}.jst-map-illustration{position:relative;min-height:360px;overflow:hidden}.jst-map-frame-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill}.jst-route-art{position:absolute;width:64%;left:18%;top:38%;opacity:.75}.jst-arrival-pin{position:absolute;width:52px;left:59%;top:31%}
/* RSVP + Gift */
.jst-actions{position:relative;padding:clamp(44px,7vw,92px) var(--jst-safe);display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,38px);background:linear-gradient(rgba(20,14,10,.88),rgba(17,12,9,.9)),url('/templates/jawa-story-3d-motion/assets/backgrounds/folio-desk-wide.webp') center/cover}.jst-action-leaf{min-width:0}.jst-action-leaf>header{text-align:center;margin-bottom:1rem}.jst-action-leaf h2{font-size:clamp(1.8rem,3vw,3rem);font-weight:500;margin:.15rem 0;color:#f1dfbf}.jst-action-leaf .jst-intro{max-width:50ch;margin:0 auto 1rem;text-align:center;color:#d9c7a7;line-height:1.6}.jst-registry,.jst-treasury{position:relative;min-height:520px;padding:clamp(52px,6vw,88px) clamp(34px,4vw,70px);color:var(--jst-ink)}.jst-action-decoration{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.jst-pen-decor{position:absolute;right:6%;top:6%;width:min(24%,140px);pointer-events:none;z-index:2}.jst-form{position:relative;z-index:3;display:grid;grid-template-columns:1fr 1fr;gap:14px;min-width:0}.jst-form label{display:grid;gap:6px;font-size:.78rem;color:#62472f;min-width:0}.jst-form input,.jst-form select,.jst-form textarea{width:100%;min-width:0;border:1px solid #a98a5c;background:rgba(250,244,230,.72);color:#2b2018;border-radius:5px;padding:.78rem .8rem}.jst-form textarea{resize:vertical;min-height:100px}.jst-form-wide{grid-column:1/-1}.jst-form-status{min-height:1.2em;margin:0;color:#6b4d34}.jst-form-status.is-success{color:#34623c}.jst-treasury-content{position:relative;z-index:3;display:grid;gap:12px}.jst-bank{position:relative;min-height:128px;display:grid;grid-template-columns:1fr;align-items:center;padding:20px 22px}.jst-bank>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;opacity:.72}.jst-bank>div{position:relative;z-index:2;display:grid;gap:4px}.jst-bank small{color:#785635}.jst-bank h3{font-size:1rem;margin:0;font-weight:500}.jst-bank strong{font-family:ui-monospace,monospace;font-size:1rem}.jst-bank button{justify-self:start;border:0;background:none;color:#6f4d2d;text-decoration:underline;cursor:pointer;padding:.25rem 0}.jst-gift-address{background:rgba(244,232,210,.62);border:1px solid #b79a6c;padding:14px 16px}.jst-gift-address p{margin:.3rem 0;line-height:1.5}.jst-copy-status{margin:.5rem 0 0;text-align:center;color:#dec9a6;min-height:1.2em}
/* wishes */
.jst-guestbook{background:linear-gradient(rgba(22,16,12,.82),rgba(21,14,10,.92)),url('/templates/jawa-story-3d-motion/assets/backgrounds/pavilion-wide-lamplight.webp') center/cover}.jst-wishes-layout{width:min(1180px,94vw);margin:auto;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(18px,4vw,48px);align-items:start}.jst-wishes-form-leaf{position:relative;min-height:520px;padding:clamp(62px,7vw,96px) clamp(40px,5vw,74px);color:var(--jst-ink)}.jst-wishes-leaf-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.jst-wishes-form-leaf .jst-form{position:relative;z-index:2;grid-template-columns:1fr}.jst-wishes-form-leaf h2{font-weight:500;font-size:clamp(1.8rem,3vw,3rem);margin:.1rem 0 1rem;text-align:center}.jst-wish-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.jst-wish{position:relative;min-height:170px;color:var(--jst-ink);display:grid;place-items:center;padding:34px 28px}.jst-wish>img{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.jst-wish>div{position:relative;z-index:2;min-width:0}.jst-wish strong{display:block;margin-bottom:.4rem;color:#65472f}.jst-wish p{margin:0;line-height:1.5;color:#4e3829}
/* closing */
.jst-closing{min-height:650px;display:grid;place-items:end center;padding-bottom:clamp(50px,7vw,90px);background:linear-gradient(rgba(22,14,10,.05),rgba(14,10,8,.55)),url('/templates/jawa-story-3d-motion/assets/backgrounds/mobile-closing-courtyard.webp') center/cover}.jst-closing-bg{position:absolute;inset:0;background:linear-gradient(180deg,transparent 45%,rgba(13,9,7,.56));pointer-events:none}.jst-closing-folio{position:relative;width:min(760px,86vw);min-height:320px;color:var(--jst-ink);display:grid;place-items:center;text-align:center}.jst-closing-page{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.jst-closing-copy{position:relative;z-index:2;padding:clamp(60px,7vw,90px) clamp(50px,8vw,110px)}.jst-closing-copy h2{font-size:clamp(2rem,4vw,4rem);font-weight:500;margin:.25rem 0}.jst-closing-copy h2 span{font-style:italic}.jst-closing-copy strong{color:#6c4d32}.jst-closing-copy p:last-child{color:#684b35}
/* lightbox */
.jst-lightbox[hidden]{display:none!important}.jst-lightbox{position:fixed;inset:0;z-index:150;background:rgba(9,7,6,.94);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:clamp(18px,4vw,50px)}.jst-lightbox figure{margin:0;min-width:0;display:grid;place-items:center}.jst-lightbox figure img{max-height:84vh;max-width:100%;object-fit:contain;box-shadow:0 20px 48px rgba(0,0,0,.5)}.jst-lightbox button{border:1px solid #b88a49;background:#1d1511;color:#f3e4c7;border-radius:999px;width:46px;height:46px;cursor:pointer}.jst-lightbox [data-lightbox-close]{position:absolute;right:18px;top:18px}
@media(max-width:1024px){.jst-folio-nav{gap:.65rem}.jst-folio-nav a{font-size:.68rem}.jst-couple-spread{grid-template-columns:1fr 1fr}.jst-countdown-leaf{grid-column:1/-1;grid-row:2}.jst-actions{grid-template-columns:1fr}.jst-wishes-layout{grid-template-columns:1fr}.jst-wish-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:768px){:root{--jst-safe:clamp(14px,4.5vw,24px)}.jst-sitebar{grid-template-columns:1fr auto}.jst-folio-nav{display:none}.jst-mobile-menu{display:block}.jst-brand{font-size:.82rem}.jst-music{right:10px;bottom:10px}.jst-music span{display:none}.jst-opening-shell{width:min(540px,96vw);min-height:auto}.jst-opening-folio-art{display:none}.jst-opening-grid{width:100%;grid-template-columns:1fr;padding:0;gap:0;background:url('/templates/jawa-story-3d-motion/assets/backgrounds/mobile-pavilion-vertical.webp') center/cover;border:1px solid rgba(206,165,94,.35);box-shadow:0 24px 40px rgba(0,0,0,.5)}.jst-opening-leaf--copy{order:2;background:rgba(240,226,198,.92);padding:32px 22px}.jst-opening-leaf--visual{order:1}.jst-media--opening{width:100%;aspect-ratio:390/520;border-radius:0}.jst-opening-marginalia{display:none}.jst-opening-leaf h1{font-size:clamp(2.4rem,13vw,4.2rem)}.jst-folio-stage{min-height:90vh;background-image:linear-gradient(rgba(15,12,10,.18),rgba(15,12,10,.56)),url('/templates/jawa-story-3d-motion/assets/backgrounds/mobile-pavilion-vertical.webp')}.jst-hero-spread{width:min(560px,94vw);grid-template-columns:1fr;min-height:520px;background:url('/templates/jawa-story-3d-motion/assets/paper/paper-warm-fibre.webp') center/cover}.jst-spread-art{opacity:.22;mix-blend-mode:multiply}.jst-hero-copy{padding:64px 28px 28px}.jst-hero-margin{padding:0 30px 58px}.jst-hero-copy h2{font-size:clamp(3.1rem,16vw,5rem)}.jst-couple{background-image:linear-gradient(rgba(26,18,13,.74),rgba(24,17,13,.86)),url('/templates/jawa-story-3d-motion/assets/backgrounds/mobile-pavilion-vertical.webp')}.jst-couple-spread{grid-template-columns:1fr;gap:22px;width:min(560px,94vw)}.jst-person-leaf{width:100%}.jst-countdown-leaf{grid-column:auto;grid-row:auto;order:3}.jst-countdown-foldout{grid-template-columns:repeat(4,minmax(60px,1fr));gap:4px}.jst-person-leaf:first-child{order:1}.jst-person-leaf:last-child{order:2}.jst-event-spread{grid-template-columns:1fr;width:min(560px,94vw);padding:8px}.jst-event-leaf{min-height:300px}.jst-story{background-image:linear-gradient(rgba(19,14,11,.76),rgba(19,14,11,.9)),url('/templates/jawa-story-3d-motion/assets/backgrounds/mobile-pavilion-vertical.webp')}.jst-story-foldout{width:100%;padding-inline:var(--jst-safe)}.jst-story-leaf{flex-basis:78vw;min-width:280px}.jst-gallery-rail{width:100%;padding:26px 14px}.jst-gallery-track{padding-inline:8px}.jst-gallery-print{flex-basis:min(72vw,300px)}.jst-map-spread{grid-template-columns:1fr;width:min(560px,94vw)}.jst-map-copy{padding:34px 28px}.jst-map-illustration{min-height:290px}.jst-actions{padding-inline:var(--jst-safe)}.jst-registry,.jst-treasury{min-height:0;padding:58px 34px}.jst-form{grid-template-columns:1fr}.jst-form-wide{grid-column:auto}.jst-wishes-layout{width:min(560px,94vw)}.jst-wish-list{grid-template-columns:1fr}.jst-wishes-form-leaf{min-height:0;padding:64px 34px}.jst-closing{min-height:560px}.jst-closing-folio{width:min(560px,92vw)}.jst-large--textile-left{width:52vw;left:-30vw}.jst-large--textile-right{width:52vw;right:-32vw}.jst-large--page-left,.jst-large--page-right{opacity:.18}}
@media(max-width:430px){.jst-scene{padding-block:48px}.jst-countdown-foldout{grid-template-columns:repeat(2,minmax(0,1fr));max-width:300px;margin:auto}.jst-time-panel{aspect-ratio:1.1}.jst-event-leaf{padding:48px 26px}.jst-registry,.jst-treasury,.jst-wishes-form-leaf{padding-left:26px;padding-right:26px}.jst-story-leaf{flex-basis:82vw;min-width:268px}.jst-hero-margin{padding-inline:24px}.jst-opening{padding:0}.jst-opening-grid{min-height:100dvh;border:0}.jst-media--opening{aspect-ratio:390/460}.jst-opening-leaf--copy{padding-bottom:42px}.jst-lightbox{grid-template-columns:1fr;padding:56px 12px 16px}.jst-lightbox [data-lightbox-prev],.jst-lightbox [data-lightbox-next]{position:absolute;top:50%}.jst-lightbox [data-lightbox-prev]{left:10px}.jst-lightbox [data-lightbox-next]{right:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.jst-app *, .jst-app *::before,.jst-app *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}.jst-reveal{opacity:1!important;transform:none!important}}
/* Stage 3 QA corrections: long names + photo/frame aperture + countdown foldout */
.jst-opening-leaf h1{font-size:clamp(2.1rem,4.3vw,4.55rem);text-wrap:balance;overflow-wrap:anywhere}
.jst-hero-copy h2{font-size:clamp(2.7rem,4.7vw,4.8rem);text-wrap:balance;overflow-wrap:anywhere}
.jst-media--opening .jst-frame-overlay{mix-blend-mode:multiply;opacity:.2}
.jst-countdown-foldout{position:relative;min-height:170px;padding:clamp(34px,4vw,54px) clamp(14px,2vw,22px);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;align-items:center;isolation:isolate}
.jst-countdown-frame,.jst-countdown-paper{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.jst-countdown-frame{z-index:0}.jst-countdown-paper{z-index:0;opacity:.18;mix-blend-mode:multiply}.jst-time-panel{position:relative;z-index:2;aspect-ratio:auto;min-height:88px;display:grid;place-items:center;align-content:center;border-inline:1px solid rgba(191,148,78,.32)}.jst-time-panel strong{font-size:clamp(1.5rem,3vw,2.7rem);line-height:1}.jst-time-panel span{margin-top:.3rem}
@media(max-width:768px){.jst-opening-leaf h1{font-size:clamp(2.1rem,10vw,3.35rem)}.jst-hero-copy h2{font-size:clamp(2.15rem,9.6vw,3.25rem)}.jst-countdown-foldout{min-height:250px;padding:36px 20px;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.jst-time-panel{min-height:82px}}
@media(max-width:430px){.jst-opening-leaf h1{font-size:clamp(2rem,9.4vw,3rem)}.jst-hero-copy h2{font-size:clamp(2rem,9vw,3rem)}}
/* Stage 3 QA refinement */
@media(min-width:769px){.jst-opening-leaf h1{font-size:clamp(2.2rem,3.8vw,3.7rem)}}
.jst-countdown-frame,.jst-countdown-paper{opacity:.06;mix-blend-mode:screen}.jst-time-panel{background:linear-gradient(180deg,#2e2018,#17100d);border:1px solid rgba(205,163,91,.72);box-shadow:inset 0 0 0 3px rgba(196,149,78,.08);border-radius:4px}.jst-time-panel strong{color:#f0dfbd}.jst-time-panel span{color:#c7a878}

/* JST_STAGE4_LUXURY_MOTION_V1
   Motion enriches Stage 3 only. Resting state remains the Stage 3 composition. */
:root{
  --jst-mx:0px;--jst-my:0px;--jst-sx:0px;--jst-sy:0px;--jst-vh:1vh;
  --jst-ambient-sweep-x:0px;--jst-left-x:0px;--jst-left-y:0px;--jst-right-x:0px;--jst-right-y:0px;--jst-page-left-x:0px;--jst-page-left-y:0px;--jst-page-right-x:0px;--jst-page-right-y:0px;--jst-far-x:0px;--jst-far-y:0px;--jst-mid-x:0px;--jst-mid-y:0px;--jst-hero-bg-x:0px;--jst-hero-bg-y:0px;--jst-hero-copy-x:0px;--jst-hero-copy-y:0px;--jst-hero-margin-x:0px;--jst-hero-margin-y:0px;--jst-closing-bg-x:0px;--jst-closing-bg-y:0px;--jst-mobile-bg-y:0px;--jst-gold-glow:rgba(231,188,110,.34);--jst-motion-ease:cubic-bezier(.2,.72,.18,1);
}
.jst-app{--jst-scroll:0;--jst-scroll-px:0px}
.jst-app::before{content:"";position:fixed;inset:-18%;z-index:0;pointer-events:none;opacity:.34;background:linear-gradient(112deg,transparent 34%,rgba(244,213,151,.07) 43%,rgba(255,239,199,.16) 48%,rgba(244,213,151,.06) 55%,transparent 66%);transform:translate3d(var(--jst-ambient-sweep-x),0,0) rotate(-3deg);mix-blend-mode:screen}
.jst-stage-stack,.jst-sitebar,.jst-opening{position:relative;z-index:2}
.jst-opening{perspective:1500px;transition:opacity .72s var(--jst-motion-ease),visibility .72s step-end}
.jst-opening-shell{transform-style:preserve-3d;will-change:transform,opacity;animation:jstOpeningBreath 7s ease-in-out infinite}
.jst-opening-folio-art{transform:translateZ(-30px) scale(1.02);transition:transform 1.15s var(--jst-motion-ease),filter 1.15s var(--jst-motion-ease)}
.jst-opening-grid{transform-style:preserve-3d}
.jst-opening-leaf{transform-origin:center center;transition:transform 1.15s var(--jst-motion-ease),opacity .85s ease,filter .85s ease}
.jst-opening-leaf--copy{transform-origin:right center}
.jst-opening-leaf--visual{transform-origin:left center}
.jst-opening-tassel{transform-origin:50% 0;animation:jstTassel 4.8s ease-in-out infinite}
.jst-opening::after{content:"";position:absolute;inset:-20%;pointer-events:none;background:linear-gradient(102deg,transparent 38%,rgba(242,205,135,.06) 45%,rgba(255,241,207,.22) 50%,rgba(242,205,135,.06) 55%,transparent 63%);transform:translateX(-44%) rotate(-4deg);animation:jstOpeningSweep 6.8s ease-in-out infinite;mix-blend-mode:screen}
.jst-opening.is-opening .jst-opening-leaf--copy{transform:perspective(1100px) rotateY(24deg) translate3d(-9vw,-1vh,35px);opacity:.12}
.jst-opening.is-opening .jst-opening-leaf--visual{transform:perspective(1100px) rotateY(-24deg) translate3d(9vw,-1vh,35px);opacity:.12}
.jst-opening.is-opening .jst-opening-folio-art{transform:translateZ(-80px) scale(1.09);filter:brightness(1.12) blur(1px)}
.jst-opening.is-opening .jst-opening-tassel{opacity:0;transform:translateX(-50%) translateY(36px) rotate(8deg)}

/* Ambient depth */
.jst-large,.jst-particle{will-change:transform,opacity}
.jst-large--textile-left{transform:translate3d(var(--jst-left-x),var(--jst-left-y),0) rotate(-2deg);animation:jstTextileLeft 11s ease-in-out infinite alternate}
.jst-large--textile-right{transform:translate3d(var(--jst-right-x),var(--jst-right-y),0) rotate(2deg);animation:jstTextileRight 13s ease-in-out infinite alternate}
.jst-large--page-left{transform:translate3d(var(--jst-page-left-x),var(--jst-page-left-y),0) rotate(-4deg)}
.jst-large--page-right{transform:translate3d(var(--jst-page-right-x),var(--jst-page-right-y),0) rotate(4deg)}
.jst-particle--far{animation:jstParticleFar 18s linear infinite alternate;transform:translate3d(var(--jst-far-x),var(--jst-far-y),0)}
.jst-particle--mid{animation:jstParticleMid 13s linear infinite alternate;transform:translate3d(var(--jst-mid-x),var(--jst-mid-y),0)}

/* Scene cinematic setup */
.jst-scene{--jst-scene-y:0px;isolation:isolate}
.jst-scene::after{content:"";position:absolute;left:-8%;right:-8%;top:4%;height:32%;pointer-events:none;z-index:0;opacity:0;background:linear-gradient(108deg,transparent 28%,rgba(248,216,156,.04) 39%,rgba(255,238,198,.13) 48%,rgba(248,216,156,.04) 57%,transparent 70%);transform:translateX(-35%) skewX(-12deg);transition:opacity 1s ease,transform 1.8s var(--jst-motion-ease);mix-blend-mode:screen}
.jst-scene.is-motion-in::after{opacity:1;transform:translateX(18%) skewX(-12deg)}
.jst-js-ready .jst-reveal{transition:opacity .85s ease,transform 1.05s var(--jst-motion-ease),filter 1.05s ease;will-change:transform,opacity;transition-delay:var(--jst-reveal-delay,0ms)}
.jst-js-ready .jst-reveal:not(.is-visible){opacity:0!important;transform:translate3d(0,34px,0) scale(.982)!important;filter:blur(2px)}
.jst-js-ready .jst-reveal.is-visible{opacity:1!important;transform:none!important;filter:none}

/* Hero: whole folio arrives like a large book laid onto the table */
.jst-folio-stage{overflow:hidden;perspective:1600px}
.jst-hero-bg{transform:scale(1.06) translate3d(var(--jst-hero-bg-x),var(--jst-hero-bg-y),0);will-change:transform}
.jst-hero-spread{transform-origin:50% 82%;transform-style:preserve-3d;transition:transform 1.5s var(--jst-motion-ease),filter 1.2s ease}
.jst-js-ready .jst-hero-spread:not(.is-visible){transform:perspective(1400px) rotateX(14deg) translateY(62px) scale(.92)!important;filter:drop-shadow(0 14px 16px rgba(0,0,0,.2)) brightness(.75)}
.jst-hero-spread.is-visible{animation:jstFolioSettle 1.55s var(--jst-motion-ease) both}
.jst-hero-copy{transform:translate3d(var(--jst-hero-copy-x),var(--jst-hero-copy-y),18px)}
.jst-hero-margin{transform:translate3d(var(--jst-hero-margin-x),var(--jst-hero-margin-y),12px)}
.jst-hero-spread.is-visible::after{content:"";position:absolute;inset:4% 7%;pointer-events:none;background:linear-gradient(105deg,transparent 34%,rgba(255,239,202,.04) 43%,rgba(255,245,218,.27) 50%,rgba(255,239,202,.04) 57%,transparent 67%);transform:translateX(-120%);animation:jstPaperSweep 6.4s 1.2s ease-in-out infinite}

/* Couple: opposing leaves + countdown foldout */
.jst-couple{perspective:1600px;overflow:clip}
.jst-person-leaf{transform-style:preserve-3d;transition:transform 1.2s var(--jst-motion-ease),opacity .9s ease,box-shadow 1.2s ease}
.jst-person-leaf:first-child{transform-origin:right center}
.jst-person-leaf:last-child{transform-origin:left center}
.jst-js-ready .jst-person-leaf:first-child:not(.is-visible){transform:perspective(1200px) rotateY(-34deg) translateX(-70px) scale(.93)!important;opacity:0!important}
.jst-js-ready .jst-person-leaf:last-child:not(.is-visible){transform:perspective(1200px) rotateY(34deg) translateX(70px) scale(.93)!important;opacity:0!important}
.jst-person-leaf.is-visible{box-shadow:0 28px 40px rgba(0,0,0,.38)}
.jst-person-leaf.is-visible .jst-media-img{animation:jstPortraitCamera 9s ease-in-out infinite alternate}
.jst-countdown-leaf{transform-origin:center bottom;transition:transform 1.15s var(--jst-motion-ease),opacity .8s ease}
.jst-js-ready .jst-countdown-leaf:not(.is-visible){transform:perspective(1200px) rotateX(-19deg) translateY(70px) scale(.9)!important;opacity:0!important}
.jst-time-panel{transition:transform .8s var(--jst-motion-ease),box-shadow .8s ease;transition-delay:var(--jst-marker-delay,0ms)}
.jst-countdown-leaf.is-visible .jst-time-panel{animation:jstMarkerRise .9s var(--jst-motion-ease) both;animation-delay:var(--jst-marker-delay,.18s)}

/* Events: book spread opens from the gutter */
.jst-events{perspective:1500px;overflow:clip}
.jst-event-spread{transform-style:preserve-3d;transform-origin:center center}
.jst-event-leaf{transition:transform 1.25s var(--jst-motion-ease),opacity .9s ease;backface-visibility:hidden}
.jst-event-leaf:first-child{transform-origin:right center}.jst-event-leaf:last-child{transform-origin:left center}
.jst-js-ready .jst-event-spread:not(.is-visible) .jst-event-leaf:first-child{transform:perspective(1200px) rotateY(54deg) translateX(8%);opacity:.08}
.jst-js-ready .jst-event-spread:not(.is-visible) .jst-event-leaf:last-child{transform:perspective(1200px) rotateY(-54deg) translateX(-8%);opacity:.08}
.jst-event-spread.is-visible .jst-event-leaf{transform:rotateY(0);opacity:1}
.jst-event-spread.is-visible::after{content:"";position:absolute;inset:4% 7%;pointer-events:none;background:linear-gradient(110deg,transparent 36%,rgba(255,242,209,.18) 49%,transparent 62%);transform:translateX(-120%);animation:jstPaperSweep 7s 1.8s ease-in-out infinite}

/* Story accordion/foldout */
.jst-story-foldout{perspective:1400px;transform-style:preserve-3d}
.jst-story-leaf{transform-origin:left center;transition:transform 1.05s var(--jst-motion-ease),opacity .7s ease,filter .8s ease}
.jst-js-ready .jst-story-leaf:not(.is-visible){transform:perspective(1100px) rotateY(-62deg) translateX(-32px)!important;opacity:.05!important;filter:brightness(.65)}
.jst-story-leaf.is-visible{animation:jstStoryLeaf .95s var(--jst-motion-ease) both;animation-delay:var(--jst-story-delay,0ms)}

/* Gallery print rail: cinematic horizontal paper tray */
.jst-gallery-rail{overflow:hidden;isolation:isolate}
.jst-gallery-track{will-change:transform;transform:translate3d(var(--jst-gallery-shift,0px),0,0);transition:transform .16s linear}
.jst-gallery-print{transform-origin:center bottom;transition:transform .9s var(--jst-motion-ease),opacity .7s ease,filter .7s ease}
.jst-js-ready .jst-gallery-print:not(.is-visible){opacity:0!important;transform:translate3d(var(--jst-gallery-x,0px),48px,0) rotate(var(--jst-gallery-rot,0deg)) scale(.91)!important}
.jst-gallery-print.is-visible{animation:jstPrintDrop .82s var(--jst-motion-ease) both;animation-delay:var(--jst-gallery-delay,0ms)}
.jst-gallery-rail::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(100deg,transparent 32%,rgba(255,236,193,.05) 42%,rgba(255,248,226,.16) 50%,rgba(255,236,193,.05) 57%,transparent 68%);transform:translateX(-110%);animation:jstGallerySweep 8s ease-in-out infinite}

/* Map: folded plate arrives, route is progressively unveiled */
.jst-map-spread{transform-origin:center 85%;transform-style:preserve-3d;transition:transform 1.2s var(--jst-motion-ease),opacity .9s ease}
.jst-js-ready .jst-map-spread:not(.is-visible){transform:perspective(1300px) rotateX(16deg) translateY(46px) scale(.94)!important;opacity:0!important}
.jst-route-art{clip-path:inset(0 100% 0 0);transition:clip-path 2.1s .35s var(--jst-motion-ease);filter:drop-shadow(0 0 4px rgba(220,177,91,.25))}
.jst-map-spread.is-visible .jst-route-art{clip-path:inset(0 0 0 0)}
.jst-arrival-pin{transform-origin:50% 100%;transition:transform .72s 1.45s var(--jst-motion-ease),opacity .5s 1.45s ease}
.jst-map-spread:not(.is-visible) .jst-arrival-pin{transform:translateY(-34px) scale(.45);opacity:0}
.jst-map-spread.is-visible .jst-arrival-pin{animation:jstPinDrop .78s 1.35s var(--jst-motion-ease) both}

/* Registry and gift */
.jst-action-leaf{perspective:1400px}
.jst-registry,.jst-treasury{transform-origin:center bottom;transition:transform 1.05s var(--jst-motion-ease),opacity .8s ease,filter .8s ease}
.jst-js-ready .jst-registry:not(.is-visible),.jst-js-ready .jst-treasury:not(.is-visible){transform:perspective(1200px) rotateX(11deg) translateY(58px) scale(.95)!important;opacity:0!important;filter:brightness(.72)}
.jst-registry.is-visible .jst-pen-decor{animation:jstPenWrite 4.5s 1s ease-in-out infinite}
.jst-treasury.is-visible .jst-treasury-content{animation:jstDrawerSettle 1s .2s var(--jst-motion-ease) both}
.jst-bank{transition:transform .35s ease,box-shadow .35s ease}.jst-bank:hover{transform:translateY(-3px);box-shadow:0 10px 22px rgba(46,28,18,.16)}

/* Wishes illuminate one note at a time */
.jst-wishes-form-leaf{transform-origin:left bottom}
.jst-wish{transition:transform .75s var(--jst-motion-ease),opacity .65s ease,box-shadow .75s ease;transition-delay:var(--jst-wish-delay,0ms)}
.jst-js-ready .jst-wish:not(.is-visible){transform:translate3d(0,32px,0) rotate(var(--jst-wish-rot,0deg)) scale(.94)!important;opacity:0!important}
.jst-wish.is-visible{animation:jstWishGlow 6s var(--jst-wish-glow-delay,0ms) ease-in-out infinite alternate}

/* Closing: the folio settles as the camera breathes backward */
.jst-closing{overflow:hidden;perspective:1500px}
.jst-closing-bg{transform:scale(1.08) translate3d(var(--jst-closing-bg-x),var(--jst-closing-bg-y),0);will-change:transform}
.jst-closing-folio{transform-origin:50% 100%;transition:transform 1.45s var(--jst-motion-ease),opacity .85s ease,filter 1s ease}
.jst-js-ready .jst-closing-folio:not(.is-visible){transform:perspective(1400px) rotateX(18deg) translateY(80px) scale(.9)!important;opacity:0!important;filter:brightness(.7)}
.jst-closing-folio.is-visible{animation:jstClosingSettle 1.5s var(--jst-motion-ease) both}
.jst-closing.is-motion-in::before{content:"";position:absolute;inset:-15%;pointer-events:none;background:radial-gradient(circle at 50% 34%,rgba(245,204,124,.2),transparent 28%);animation:jstClosingHalo 7s ease-in-out infinite}

/* Lightbox polish without changing layout */
.jst-lightbox:not([hidden]) figure{animation:jstLightboxIn .55s var(--jst-motion-ease) both}.jst-lightbox:not([hidden]){animation:jstBackdropIn .35s ease both}

/* motion keyframes */
@keyframes jstOpeningBreath{0%,100%{transform:translateY(0) rotateX(0)}50%{transform:translateY(-5px) rotateX(.6deg)}}
@keyframes jstTassel{0%,100%{transform:translateX(-50%) rotate(-1deg)}50%{transform:translateX(-50%) rotate(2.4deg)}}
@keyframes jstOpeningSweep{0%,15%{transform:translateX(-55%) rotate(-4deg);opacity:0}38%,58%{opacity:1}82%,100%{transform:translateX(55%) rotate(-4deg);opacity:0}}
@keyframes jstTextileLeft{0%{translate:0 0}100%{translate:10px -12px}}
@keyframes jstTextileRight{0%{translate:0 0}100%{translate:-12px 10px}}
@keyframes jstParticleFar{0%{translate:-10px -8px}100%{translate:12px 14px}}
@keyframes jstParticleMid{0%{translate:12px -14px}100%{translate:-16px 18px}}
@keyframes jstFolioSettle{0%{transform:perspective(1400px) rotateX(12deg) translateY(48px) scale(.94)}72%{transform:perspective(1400px) rotateX(-1.2deg) translateY(-5px) scale(1.006)}100%{transform:none}}
@keyframes jstPaperSweep{0%,15%{transform:translateX(-120%);opacity:0}42%,57%{opacity:1}85%,100%{transform:translateX(120%);opacity:0}}
@keyframes jstPortraitCamera{0%{transform:scale(1.008) translate3d(-.4%,0,0)}100%{transform:scale(1.035) translate3d(.5%,-.6%,0)}}
@keyframes jstMarkerRise{0%{transform:translateY(38px) scale(.86);opacity:.1}70%{transform:translateY(-4px) scale(1.025);opacity:1}100%{transform:none;opacity:1}}
@keyframes jstStoryLeaf{0%{transform:perspective(1100px) rotateY(-42deg) translateX(-22px);opacity:.1}75%{transform:perspective(1100px) rotateY(2deg) translateX(2px);opacity:1}100%{transform:none;opacity:1}}
@keyframes jstPrintDrop{0%{transform:translateY(44px) rotate(-2deg) scale(.9);opacity:0}72%{transform:translateY(-5px) rotate(.5deg) scale(1.01);opacity:1}100%{transform:none;opacity:1}}
@keyframes jstGallerySweep{0%,18%{transform:translateX(-110%);opacity:0}42%,58%{opacity:1}86%,100%{transform:translateX(110%);opacity:0}}
@keyframes jstPinDrop{0%{transform:translateY(-42px) scale(.38);opacity:0}66%{transform:translateY(5px) scale(1.08);opacity:1}100%{transform:none;opacity:1}}
@keyframes jstPenWrite{0%,100%{transform:translate3d(0,0,0) rotate(0)}18%{transform:translate3d(9px,-5px,0) rotate(1deg)}36%{transform:translate3d(20px,2px,0) rotate(-1deg)}54%{transform:translate3d(12px,8px,0) rotate(.8deg)}72%{transform:translate3d(28px,4px,0) rotate(-.6deg)}}
@keyframes jstDrawerSettle{0%{transform:translateY(24px);opacity:.35}75%{transform:translateY(-3px);opacity:1}100%{transform:none;opacity:1}}
@keyframes jstWishGlow{0%{box-shadow:0 10px 24px rgba(0,0,0,.18),0 0 0 rgba(213,172,94,0)}100%{box-shadow:0 14px 30px rgba(0,0,0,.24),0 0 28px rgba(213,172,94,.14)}}
@keyframes jstClosingSettle{0%{transform:perspective(1400px) rotateX(18deg) translateY(70px) scale(.9);opacity:0}70%{transform:perspective(1400px) rotateX(-1deg) translateY(-5px) scale(1.008);opacity:1}100%{transform:none;opacity:1}}
@keyframes jstClosingHalo{0%,100%{opacity:.65;transform:scale(.96)}50%{opacity:1;transform:scale(1.05)}}
@keyframes jstLightboxIn{0%{transform:translateY(18px) scale(.97);opacity:0}100%{transform:none;opacity:1}}
@keyframes jstBackdropIn{0%{background:rgba(9,7,6,0)}100%{background:rgba(9,7,6,.94)}}

/* Desktop receives the larger camera/depth language; mobile has its own restrained vertical choreography. */
@media(min-width:769px){
  .jst-scene.is-motion-in .jst-scene-title{animation:jstTitleLift .9s var(--jst-motion-ease) both}
  @keyframes jstTitleLift{0%{letter-spacing:.08em;transform:translateY(18px);opacity:.25}100%{letter-spacing:normal;transform:none;opacity:1}}
}
@media(max-width:768px){
  .jst-app::before{opacity:.2}.jst-large--textile-left,.jst-large--textile-right{animation-duration:16s}
  .jst-opening-shell{animation:none}.jst-opening.is-opening .jst-opening-leaf--copy{transform:translateY(34px) scale(.97);opacity:0}.jst-opening.is-opening .jst-opening-leaf--visual{transform:translateY(-32px) scale(1.02);opacity:0}
  .jst-hero-bg,.jst-closing-bg{transform:scale(1.03) translate3d(0,var(--jst-mobile-bg-y),0)}
  .jst-js-ready .jst-person-leaf:first-child:not(.is-visible),.jst-js-ready .jst-person-leaf:last-child:not(.is-visible){transform:translateY(42px) scale(.96)!important}
  .jst-js-ready .jst-event-spread:not(.is-visible) .jst-event-leaf:first-child,.jst-js-ready .jst-event-spread:not(.is-visible) .jst-event-leaf:last-child{transform:translateY(34px) scale(.97);opacity:.08}
  .jst-js-ready .jst-story-leaf:not(.is-visible){transform:translateX(28px) scale(.96)!important}
  .jst-gallery-track{transform:none!important}
  .jst-gallery-rail{overflow-x:auto;scroll-snap-type:x proximity}.jst-gallery-print{scroll-snap-align:center}
}
@media(max-width:430px){
  .jst-scene::after{height:22%;opacity:.45}.jst-large--textile-left,.jst-large--textile-right{opacity:.36}
  .jst-person-leaf.is-visible .jst-media-img{animation-duration:12s}
}
@media(prefers-reduced-motion:reduce){
  .jst-app::before,.jst-opening::after,.jst-opening-shell,.jst-opening-tassel,.jst-large,.jst-particle,.jst-hero-spread,.jst-person-leaf,.jst-time-panel,.jst-event-leaf,.jst-story-leaf,.jst-gallery-print,.jst-registry,.jst-treasury,.jst-wish,.jst-closing-folio,.jst-media-img{animation:none!important;transition:none!important;transform:none!important;filter:none!important}
  .jst-route-art{clip-path:none!important}.jst-arrival-pin{transform:none!important;opacity:1!important}.jst-scene::after{display:none!important}
}
/* Stage 4 containment polish discovered during browser QA */
.jst-closing-copy h2{line-height:1.12;padding-block:.06em;overflow:visible}
/* Tight display type needs enough leading for long dynamic names at every breakpoint. */
.jst-hero-copy h2{line-height:1.02;padding-block:.08em;overflow:visible}
/* Stage 4 overflow/media-fit correction: decorative sweeps never enlarge page scroll area. */
.jst-app::before{inset:0;transform:none;background-size:190% 100%;animation:jstGlobalSweep 12s ease-in-out infinite}
.jst-scene::after{left:0;right:0;transform:none;background-size:220% 100%;background-position:-100% 0;transition:opacity 1s ease,background-position 1.8s var(--jst-motion-ease)}
.jst-scene.is-motion-in::after{transform:none;background-position:100% 0}
.jst-person-leaf.is-visible .jst-media-img{animation:none!important;transform:none!important}
@keyframes jstGlobalSweep{0%,16%{background-position:-80% 0;opacity:.1}45%,58%{opacity:.34}86%,100%{background-position:180% 0;opacity:.12}}
@media(prefers-reduced-motion:reduce){.jst-app::before{animation:none!important}}
