:root{color-scheme:dark;--paper:#eee8d6;--gold:#d9b77b;--red:#bd453d;--ink:#161b20;--muted:#aba99f;--serif:Georgia,'Times New Roman',serif;--display:Impact,'Arial Narrow','Arial Black',sans-serif}
*{box-sizing:border-box}html,body{margin:0;min-width:320px;min-height:100%;background:var(--ink);color:var(--paper);font-family:Arial,sans-serif}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button:disabled{cursor:wait;opacity:.7}[hidden]{display:none!important}.art-library{position:absolute;width:0;height:0;overflow:hidden}#app{position:relative;min-height:100svh;isolation:isolate;overflow:hidden}.paper-grain{position:absolute;inset:0;pointer-events:none;z-index:10;opacity:.075;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath d='M0 0H160V160H0' filter='url(%23n)' opacity='.7'/%3E%3C/svg%3E");mix-blend-mode:screen}.cover{position:relative;min-height:100svh;overflow:hidden;background:radial-gradient(ellipse at 73% 43%,#50555855,transparent 50%),#171c20}.cover:after,.film:after{content:'';position:absolute;inset:14px;border:1px solid #dcd9bf35;pointer-events:none;z-index:11}.cover-top{position:relative;z-index:3;display:flex;align-items:center;gap:18px;padding:34px 4.8%;font-size:9px;letter-spacing:1.7px;line-height:1.8}.cover-top b{font-weight:400;color:var(--muted)}.brand-mark{display:inline-block;font-family:var(--serif);font-size:34px;letter-spacing:-12px;border:1px solid #d8bd8b77;padding:0 16px 2px 4px;line-height:1.2;color:var(--gold)}.brand-mark>span{color:var(--paper)}.edition{margin-left:auto;color:var(--muted);font-size:9px}.cover-copy{position:relative;z-index:3;padding:7vh 0 15vh 7.5%;width:59%;pointer-events:none}.eyebrow{font-size:10px;font-weight:700;letter-spacing:2.5px;color:var(--gold);line-height:1.7}.eyebrow>span{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--red);margin-right:9px;box-shadow:0 0 14px #e4614a}.cover h1{font-family:var(--display);font-size:clamp(65px,9vw,157px);font-weight:900;line-height:.94;letter-spacing:-.045em;margin:30px 0 26px;transform:scaleX(.88);transform-origin:left}.cover h1>span{display:block;color:var(--gold)}.title-dot{color:var(--red)}.cover-sub{font-family:var(--serif);font-size:clamp(16px,1.5vw,22px);line-height:1.6;color:#c8c7bd;margin:0 0 32px}.cover-sub em{color:var(--paper);font-style:normal}.start-button{pointer-events:auto;display:flex;align-items:center;gap:17px;text-align:left;border:1px solid #eacb95;background:var(--gold);color:#171c20;padding:21px 25px;width:348px;max-width:94%;text-transform:uppercase;font-size:11px;letter-spacing:.9px;font-weight:800;box-shadow:5px 5px 0 #0e1418,6px 6px 0 #d9b77b66;transition:background .2s,transform .2s}.start-button:hover{background:#f0d59e;transform:translateY(-2px)}.play-icon{font-size:14px}.button-arrow{margin-left:auto;font-size:20px}.sound-note{font-size:8px;letter-spacing:1.2px;margin:22px 0;color:#a6a69c}.sound-note span{color:var(--red);padding:0 6px}.cover-bottom{position:absolute;bottom:37px;left:4.8%;right:4.8%;display:flex;justify-content:space-between;gap:15px;font-size:9px;letter-spacing:2px;z-index:4}.cover-bottom span:nth-child(2){color:var(--gold)}.folio{color:var(--muted)}
.cover-art{position:absolute;right:0;top:0;width:62%;height:100%;overflow:hidden;background:linear-gradient(90deg,#171c20,transparent 26%);pointer-events:none}.red-disc{position:absolute;width:75%;aspect-ratio:1;right:-2%;top:13%;border-radius:50%;background:radial-gradient(circle at 40% 25%,#c2614e,#9e3c35 60%,#4f242a);box-shadow:0 0 0 18px #b6644533,0 0 0 19px #d5b67e55}.red-disc:after{content:'';position:absolute;inset:0;border-radius:50%;background:repeating-linear-gradient(0deg,transparent 0 5px,#20172230 5px 6px)}.poster-word{font-family:var(--display);position:absolute;right:-3%;top:15%;font-size:19vw;line-height:1;color:#ebbc8350;transform:rotate(-90deg) translateX(-35%);transform-origin:right center;letter-spacing:-.06em}.cover-beam{position:absolute;inset:0;background:linear-gradient(115deg,transparent 40%,#efdcac12 41%,transparent 80%);clip-path:polygon(30% 0,90% 0,100% 100%,0 100%)}.cover-city{position:absolute;bottom:0;width:100%;height:100%;opacity:.7}.cover-groom,.cover-bride{position:absolute;width:50%;height:90%;bottom:-13%;filter:drop-shadow(0 8px 9px #03080bb3)}.cover-groom{left:4%;transform:rotate(-7deg);filter:brightness(.75) drop-shadow(0 0 2px #e6c489);height:82%;bottom:-9%}.cover-bride{--dress:1;--tiara:1;--cape:1;--cape-spread:.85;width:63%;right:0;bottom:-7%;height:99%;filter:drop-shadow(-12px 9px 18px #07090db3)}.art-stamp{position:absolute;right:6%;top:17%;transform:rotate(7deg);font-size:8px;letter-spacing:1px;text-align:center;border-top:1px solid var(--gold);border-bottom:1px solid var(--gold);padding:9px 0;line-height:1.8;color:#e9d7b1}.art-stamp b{font-size:9px}
.film{position:relative;height:100svh;min-height:540px;overflow:hidden;background:#151b21}.film-top{position:absolute;left:4.5%;right:4.5%;top:max(28px,env(safe-area-inset-top));height:48px;display:flex;align-items:center;justify-content:space-between;gap:16px;z-index:15}.film-brand{display:flex;align-items:center;gap:17px;font-size:10px;letter-spacing:1.6px;font-weight:700}.film-brand small{display:block;font-size:8px;color:var(--muted);margin-top:7px;letter-spacing:1.4px;font-weight:400}.film-brand .brand-mark{font-weight:400;font-size:28px}.controls{display:flex;gap:6px}.controls button,.invitation button{color:var(--paper);border:1px solid #d7ccb447;background:#13191ee6;padding:11px 14px;font-size:10px;letter-spacing:.4px;min-height:36px}.controls button:hover,.invitation button:hover{border-color:var(--gold);color:var(--gold)}.controls button:last-child{color:var(--gold)}.film-bottom{position:absolute;bottom:max(30px,env(safe-area-inset-bottom));left:4.5%;right:4.5%;height:15px;display:flex;align-items:center;gap:14px;font:10px/1 monospace;color:#b4b1a5;z-index:15}.progress{height:2px;background:#e1d5ae27;flex:1}.progress>span{display:block;height:100%;width:0;background:var(--gold)}.film-folio{margin-left:30px;letter-spacing:1.5px;font:8px Arial,sans-serif}.stage{position:absolute;inset:0;overflow:hidden;background:radial-gradient(ellipse at 65% 40%,#68665c44,transparent 49%),linear-gradient(125deg,#161c23,#2d272c 65%,#151c22)}.stage-wall{position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 15.4%,#d2b17c15 15.5%,transparent 15.6%);mask-image:linear-gradient(#000,transparent)}.stage-lettering{position:absolute;top:15%;left:35%;font-size:clamp(140px,25vw,420px);font-family:var(--display);letter-spacing:-.04em;line-height:1;color:#cfb27b0b;white-space:nowrap}.spotlight{position:absolute;top:-10%;width:40%;height:110%;background:linear-gradient(#eed6a449,transparent 86%);clip-path:polygon(49% 0,51% 0,100% 100%,0 100%);filter:blur(9px);transform-origin:50% 0;pointer-events:none}.spotlight-a{left:31%;transform:rotate(19deg)}.spotlight-b{right:-5%;transform:rotate(-23deg);opacity:.5}.stage-floor{position:absolute;inset:76% 0 0;background:repeating-linear-gradient(0deg,transparent 0 24px,#dbc5a513 25px 26px),linear-gradient(#11181f22,#0a111be6);border-top:1px solid #ceaa6e33;transform:perspective(500px) rotateX(24deg);transform-origin:top}.stage-floor:after{content:'';position:absolute;width:55%;height:35%;border-radius:50%;background:#d3b7831c;top:-10%;right:0;filter:blur(14px)}.city{position:absolute;inset:0;width:100%;height:100%;opacity:0}.smoke{position:absolute;width:75%;height:30%;border-radius:50%;background:radial-gradient(ellipse,#999d9340,transparent 68%);filter:blur(22px);bottom:7%;pointer-events:none}.smoke-a{left:-20%}.smoke-b{right:-20%;bottom:12%;opacity:.6}.comic-panel{position:absolute;left:4.5%;top:18%;bottom:15%;width:7%;border-left:1px solid #d1b07c50}.comic-panel span{display:block;color:var(--gold);font-family:var(--serif);font-size:38px;position:absolute;left:-1px;top:0;background:#20232a;padding:0 15px 12px 0}.comic-panel i{position:absolute;left:-3px;bottom:0;width:5px;height:5px;background:var(--gold)}.character{position:absolute;height:100%;width:45%;left:49%;top:10%;transform-origin:50% 80%;filter:drop-shadow(-16px 13px 11px #03090bb3);will-change:transform}.character svg{width:100%;height:100%;overflow:visible}.character-tag{position:absolute;left:28%;bottom:15%;border-left:2px solid var(--red);padding:9px 12px;font-family:var(--display);font-size:22px;background:#10171eec;letter-spacing:1px;white-space:nowrap}.character-tag span{display:block;font-family:Arial,sans-serif;font-size:7px;letter-spacing:1px;margin-top:4px;color:var(--muted)}.bride{opacity:0;left:49%;width:46%;--mouth:.08;--dress:0;--tiara:0;--cape:0}.story-copy{position:absolute;left:11.5%;top:25%;width:46%;z-index:3}.story-copy .eyebrow{font-size:9px}.story-copy h2{font-family:var(--display);font-weight:900;letter-spacing:-.035em;font-size:clamp(55px,7.7vw,124px);line-height:.97;margin:24px 0;transform:scaleX(.9);transform-origin:left;max-width:100%}.story-copy h2 em{font-style:normal;color:var(--gold)}.story-copy>p:last-child{font:italic 17px/1.5 var(--serif);color:#c0bdb1;max-width:310px}.dialogue{position:absolute;left:11.5%;bottom:11%;width:47%;max-width:620px;z-index:5;background:#eae4d4;color:#25262a;padding:17px 44px 18px 22px;box-shadow:5px 5px 0 #070d1455;transform:rotate(-1deg)}.dialogue:after{content:'';position:absolute;right:-18px;top:16px;border-top:15px solid transparent;border-bottom:5px solid transparent;border-left:22px solid #eae4d4}.dialogue>span:first-child{font-size:8px;letter-spacing:1.8px;color:#9b463c;font-weight:800}.dialogue p{font-family:var(--serif);font-size:clamp(16px,1.65vw,25px);line-height:1.3;margin:7px 0 0}.dialogue-quote{position:absolute;right:17px;top:5px;font-family:var(--serif);font-size:48px;color:#bdb3a1}.power-index{position:absolute;left:11.5%;top:17%;display:none;gap:18px;font-size:8px;color:#727879;z-index:4;letter-spacing:1px}.power-index span{border-top:1px solid #b9b5a043;padding-top:10px}.power-index b{font-weight:400;margin-left:5px}.power-index .equipped{color:var(--gold);border-color:var(--gold)}.impact{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 70% 50%,#e7c79d65,transparent 70%);opacity:0;mix-blend-mode:screen;z-index:4}.particles{position:absolute;inset:0;pointer-events:none;z-index:4}.particles i{position:absolute;display:block;width:3px;height:10px;background:var(--gold);opacity:0;will-change:transform}.invitation{position:absolute;z-index:8;left:8%;top:25%;width:54%;text-align:center}.invitation .eyebrow{font-size:8px;letter-spacing:3px}.invitation h2{font:400 clamp(23px,3.2vw,48px)/1.2 var(--serif);color:var(--paper);margin:26px 0}.couple{font:400 clamp(40px,6vw,92px)/1.05 var(--serif);letter-spacing:-.05em;color:var(--gold);margin:30px 0}.couple i{font-style:italic;font-size:.65em;color:var(--paper);display:inline-block;margin:0 .09em}.date-line{display:flex;align-items:center;gap:18px;justify-content:center;font:400 clamp(14px,1.5vw,21px)/1.5 var(--serif);letter-spacing:1px}.date-line>span{width:40px;height:1px;background:#d4b48066}.invitation button{margin:36px 0 0;font-size:9px;background:#111920b3;border-color:#d8b77e60;padding:13px 20px}.error-toast{position:fixed;left:20px;right:20px;bottom:64px;margin:auto;max-width:600px;padding:17px;background:#eee4d0;color:#5b262d;border-left:4px solid #b84944;z-index:30;font-size:13px;line-height:1.5}.debug-panel{position:fixed;bottom:60px;left:20px;z-index:25;background:#10151aee;color:#e8dec8;padding:15px;max-width:340px;max-height:40vh;overflow:auto;border:1px solid #ccb17b66;font:11px/1.5 monospace}.debug-panel input{display:block;width:280px;max-width:70vw}.debug-panel button{background:#282f36;color:var(--paper);border:1px solid #c8b48c50;margin:3px;padding:5px;font-size:10px}.debug-panel output{display:block;margin:8px 0}.noscript{position:fixed;z-index:40;background:var(--paper);color:var(--ink);inset:40% 10% auto;padding:30px}
#app[data-scene="interrupt"] .stage,#app[data-scene="starlight"] .stage{background:radial-gradient(ellipse at 73% 45%,#a5453c55,transparent 55%),#1e1d25}#app[data-scene="interrupt"] .stage-lettering{color:#d7725233}#app[data-scene="starlight"] .groom .character-tag{display:none}#app[data-scene="transform"] .power-index{display:flex}#app[data-scene="transform"] .story-copy{top:30%}#app[data-scene="transform"] .stage{background:radial-gradient(ellipse at 74% 49%,#a5814d60,transparent 48%),#1c2028}#app[data-scene="flight"] .city,#app[data-scene="reveal"] .city{opacity:1}#app[data-scene="flight"] .stage,#app[data-scene="reveal"] .stage{background:radial-gradient(ellipse at 73% 30%,#ba8d6266,transparent 51%),linear-gradient(#253744,#543333 65%,#111e27)}#app[data-scene="flight"] .stage-wall,#app[data-scene="reveal"] .stage-wall,#app[data-scene="flight"] .stage-floor,#app[data-scene="reveal"] .stage-floor,#app[data-scene="reveal"] .comic-panel{opacity:0}#app[data-scene="flight"] .character-tag,#app[data-scene="reveal"] .character-tag{display:none}#app[data-scene="reveal"] .stage:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#10202de6,#11212c55 65%,transparent);pointer-events:none}#app[data-scene="reveal"] .stage-lettering{color:#deb8760d;left:8%;top:15%}
@media(min-width:1700px){.cover-copy{padding-top:11vh}.cover-bride{right:5%}.story-copy{top:28%}}
@media(max-width:1000px){.cover-copy{width:69%;padding-left:7%}.cover h1{font-size:12vw}.cover-art{width:75%;right:-13%}.cover-groom{left:9%;width:49%;bottom:-2%}.cover-bride{right:-9%;width:75%;height:90%;bottom:-5%}.cover-top .edition{font-size:7px}.cover-copy{padding-top:12vh}.story-copy h2{font-size:9vw}.character{left:43%;width:60%}.bride{left:44%;width:60%}.story-copy{left:10%;width:53%}.dialogue{left:10%;width:54%}.invitation{left:6%;width:61%}.couple{font-size:6.5vw}.power-index{left:10%;gap:10px;font-size:7px}.power-index b{margin-left:2px}.film-folio{margin-left:10px}}
@media(max-width:600px){.cover{min-height:850px;min-height:max(780px,100svh)}.cover:after,.film:after{inset:9px}.cover-top{padding:26px 7%;gap:14px;font-size:8px}.cover-top .brand-mark{font-size:29px}.edition{display:none}.cover-copy{padding:24px 7% 380px;width:100%;pointer-events:none}.cover h1{font-size:18vw;margin:21px 0 19px;line-height:.96;transform:scaleX(.94);position:relative;z-index:2}.cover-copy>.eyebrow{font-size:8px;letter-spacing:1.7px}.cover-sub{font-size:16px;line-height:1.5;margin-bottom:24px}.start-button{font-size:10px;padding:17px 19px;width:310px;position:relative;z-index:4}.sound-note{font-size:7px;letter-spacing:.6px;margin-top:17px}.cover-art{width:100%;height:53%;top:auto;bottom:0;right:-4%;background:none}.red-disc{top:4%;right:4%;width:77%;box-shadow:0 0 0 12px #b6644533,0 0 0 13px #d5b67e55}.cover-groom{left:-3%;height:112%;width:61%;bottom:-26%}.cover-bride{width:73%;height:129%;bottom:-31%;right:0}.poster-word{font-size:36vw;top:35%;right:2%}.cover-city{opacity:.8}.art-stamp{right:9%;top:7%;font-size:6px}.art-stamp b{font-size:7px}.cover-bottom{left:7%;right:7%;bottom:25px;font-size:7px;letter-spacing:1px;z-index:5}.cover-bottom span:nth-child(2){display:none}.film{height:100svh;min-height:560px}.film-top{left:7%;right:7%;top:24px;align-items:flex-start;height:auto;gap:4px}.film-brand{font-size:8px;gap:10px;letter-spacing:1px}.film-brand .brand-mark{font-size:24px}.film-brand small{font-size:6px;letter-spacing:.5px;margin-top:5px}.controls{gap:4px;flex-wrap:wrap;justify-content:flex-end;width:46%;max-width:200px}.controls button{font-size:8px;padding:7px 8px;min-height:30px}.controls button:last-child{width:100%;text-align:right;border:0;background:none;padding:6px 1px}.stage-lettering{top:35%;left:3%;font-size:43vw}.story-copy{top:17%;left:9%;width:85%;pointer-events:none}.story-copy .eyebrow{font-size:7px;letter-spacing:2px}.story-copy h2{font-size:16vw;line-height:.94;margin:17px 0 12px;max-width:100%}.story-copy>p:last-child{font-size:13px;max-width:66%}.character,.bride{width:85%;height:78%;left:28%;top:28%;filter:drop-shadow(-10px 7px 8px #03090ba1)}.character-tag{left:29%;bottom:19%;font-size:14px;padding:7px 9px}.character-tag span{font-size:5px}.dialogue{left:8%;bottom:11%;width:82%;padding:13px 31px 15px 16px;max-width:100%;transform:rotate(-1deg)}.dialogue p{font-size:19px;line-height:1.25}.dialogue>span:first-child{font-size:7px}.dialogue-quote{font-size:36px;right:10px}.dialogue:after{right:22px;top:-15px;border-left:14px solid transparent;border-right:4px solid transparent;border-bottom:20px solid #eae4d4;border-top:0}.comic-panel{left:5%;top:16%;bottom:11%}.comic-panel span{font-size:18px;padding:0 7px 8px 0}.power-index{left:9%;top:15%;gap:11px;font-size:6px}.power-index b{margin-left:2px}#app[data-scene="transform"] .story-copy{top:21%}#app[data-scene="transform"] .story-copy h2{font-size:15vw}.film-bottom{left:8%;right:8%;bottom:30px;font-size:8px;gap:9px}.film-folio{display:none}.invitation{left:7%;top:48%;width:86%}.invitation .eyebrow{font-size:7px;letter-spacing:2px}.invitation h2{font-size:27px;margin:17px 0}.couple{font-size:46px;margin:21px 0}.date-line{font-size:16px;letter-spacing:.3px;gap:12px}.date-line>span{width:20px}.invitation button{margin:23px 0 0;padding:12px 19px;font-size:8px}#app[data-scene="reveal"] .stage:after{background:linear-gradient(0deg,#10202d 0%,#10202dd9 42%,transparent 73%)}.spotlight-a{width:80%;left:15%}.spotlight-b{width:90%;right:-25%}.smoke{width:120%;height:40%;bottom:4%}}
@media(max-height:650px) and (min-width:601px){.cover-copy{padding-top:3vh;padding-bottom:110px}.cover h1{font-size:8vw;margin:15px 0}.cover-sub{font-size:16px;margin-bottom:20px}.cover-top{padding-top:25px;padding-bottom:15px}.start-button{padding:16px 20px}.story-copy{top:24%}.story-copy h2{font-size:7vw;margin:12px 0}.story-copy>p:last-child{font-size:14px}.dialogue{padding:11px 40px 13px 18px}.dialogue p{font-size:18px}.invitation{top:22%}.invitation h2{font-size:28px;margin:17px 0}.couple{font-size:55px;margin:20px 0}.invitation button{margin-top:23px}}
@media(max-height:740px) and (max-width:600px){.invitation{top:44%}.invitation h2{font-size:24px;margin:12px 0}.couple{font-size:41px;margin:15px 0}.date-line{font-size:14px}.invitation button{margin-top:18px}.story-copy h2{font-size:14vw}.dialogue p{font-size:16px}.character-tag{display:none}}
.character .mouth-overlay{position:absolute;inset:0;pointer-events:none;overflow:visible}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.start-button{transition:none}.impact{display:none}.particles{display:none}}
#weddingSky{position:absolute;inset:0;pointer-events:none;display:none;overflow:hidden;background:radial-gradient(ellipse at 71% 20%,#fff2c2cf 0%,#efbf7780 13%,transparent 49%),linear-gradient(150deg,#41485d55,#7d899565 55%,#cd9a6955);opacity:var(--ascent,0)}
#app:is([data-scene="flight"],[data-scene="reveal"]) #weddingSky{display:block}
.guest-bank{position:absolute;bottom:-3%;height:46%;width:42%;background:url(assets/guests.svg) left bottom/contain no-repeat;transform:translateY(calc((1 - var(--ascent))*15%))}
.left-guests{left:-3%}.right-guests{right:-3%;scale:-1 1}
@media(max-width:600px){.guest-bank{width:54%;height:28%;bottom:8%}.left-guests{left:-9%}.right-guests{right:-11%}}
@media(max-width:600px){#app[data-scene="reveal"] .guest-bank{bottom:49%;width:47%;height:21%}#app[data-scene="reveal"] .left-guests{left:-4%}#app[data-scene="reveal"] .right-guests{right:-4%}}
.guest-bank{mask-image:linear-gradient(to bottom,#000 0 65%,transparent 94%)}

/* Art-directed performance layers share the character's original SVG coordinates. */
.bride .bride-standing{opacity:calc(1 - var(--pose,0))}
.character .bride-triumph,.character .expression-overlay{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.bride .bride-triumph{opacity:var(--pose,0)}
#eyeGlow{opacity:0;filter:drop-shadow(0 0 5px #ff2020)}
#app[data-emotion="furious"] .bride{filter:drop-shadow(0 0 16px #bb25254a)}
#weddingSky{background:#586470 url(assets/wedding-sky.png) center center/cover no-repeat;transform-origin:50% 30%;will-change:transform,opacity}
#app:is([data-scene="flight"],[data-scene="reveal"]) .city,
#app:is([data-scene="flight"],[data-scene="reveal"]) .spotlight,
#app:is([data-scene="flight"],[data-scene="reveal"]) .stage-lettering,
#app:is([data-scene="flight"],[data-scene="reveal"]) .comic-panel{visibility:hidden}
#app[data-scene="flight"] .story-copy{opacity:0}
#app[data-scene="reveal"] .stage:after{background:linear-gradient(90deg,#0c1b2bd9,transparent 65%)}
#app[data-scene="reveal"] .invitation{text-shadow:0 2px 16px #091420}
@media(min-width:601px){
 #weddingSky{background-size:auto 125%;background-color:#66767c}
 #app[data-scene="reveal"] .invitation{top:34%;left:7%;width:48%}
}
@media(max-width:600px){
 #weddingSky{background-position:center bottom}
 #app[data-scene="reveal"] .stage:after{background:linear-gradient(0deg,#0c1926d9,transparent 56%)}
 #app[data-scene="reveal"] .invitation{top:49%;left:7%;width:86%}
 #app[data-emotion="furious"] .story-copy h2{font-size:12vw}
 #app[data-emotion="furious"] .story-copy{top:14%}
}
@media(min-width:601px){#weddingSky{background-image:url(assets/wedding-sky-wide.png);background-size:cover}}
#app[data-scene="reveal"] .invitation h2,#app[data-scene="reveal"] .couple,#app[data-scene="reveal"] .date-line{text-shadow:0 2px 5px #091420,0 0 24px #091420cc}
#app[data-scene="groom"] .story-copy h2{font-size:clamp(36px,5.6vw,85px)}
.story-copy>p:last-child{display:none}
@media(max-width:600px){#app[data-scene="groom"] .story-copy h2{font-size:10.2vw}#app[data-scene="starlight"] .story-copy h2{font-size:12vw}}

/* A single illustrated identity; costume flight shares the soundtrack clock. */
.bride .bride-standing{opacity:1}
.cover-bride{--dress-visible:0;--veil-visible:0}
.bride-standing{will-change:transform}
.groom[data-emotion="alarmed"]{filter:drop-shadow(8px 0 13px #ff292950)}
#app[data-scene="transform"] .groom .character-tag{display:none}
#app[data-scene="transform"] .groom{z-index:0}
.dress-layer,.veil-layer{will-change:transform}

.head-motion{transform:translateY(var(--head-lift,0px)) rotate(var(--head-turn,0deg));transform-origin:300px 137px}

.arm-left{transform:rotate(var(--arm-spread,0deg));transform-origin:218px 179px}
.arm-right{transform:rotate(calc(-1 * var(--arm-spread,0deg)));transform-origin:381px 179px}
.head-rig{transform:translateX(var(--no-x,0px)) rotate(var(--no-turn,0deg));transform-origin:300px 139px}

.character .concept-flight{position:absolute;inset:0;pointer-events:none;opacity:var(--flight-pose,0);overflow:visible}
.bride .bride-standing{opacity:1}

.flowing-skirt{transform:rotate(var(--fabric-sway,0deg)) scale(var(--skirt-width,1),var(--skirt-length,1));transform-origin:300px 350px}

.veil-layer{filter:drop-shadow(0 0 2px #fff1cc55)}

.character .flight-sequence{position:absolute;inset:0;overflow:visible;opacity:var(--sequence-visible,0);pointer-events:none}
.character .flight-sequence .flight-cell{width:1080px;height:1080px;overflow:hidden}
.bride .bride-standing{opacity:calc(1 - var(--sequence-visible,0))}

/* Final poster: large lettering behind the heroine, readable credits around her. */
.final-backdrop{position:absolute;inset:0;z-index:1;display:none;pointer-events:none;text-align:center}
#app[data-scene="reveal"] .final-backdrop{display:block}
.final-backdrop span{position:absolute;left:3%;right:3%;top:27%;font:900 clamp(100px,17vw,280px)/.9 var(--display);letter-spacing:-.045em;color:#f2e8d0;text-shadow:0 4px 22px #111c29b3;opacity:.88;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='160'%3E%3Crect width='240' height='160' fill='white'/%3E%3Cg fill='black' opacity='.7'%3E%3Cpath d='M12 17h2v4h-2zM40 99h3v1h-3zM120 50h1v5h-1zM215 130h3v3h-3zM76 145h2v3h-2zM160 25h1v2h-1zM188 80h2v1h-2z'/%3E%3C/g%3E%3C/svg%3E");mask-size:120px 80px}
#app[data-scene="reveal"] .bride{z-index:3}
#app[data-scene="reveal"] .stage:after{z-index:0;background:linear-gradient(0deg,#091422e8,transparent 43%,#101a2866)}
#app[data-scene="reveal"] .invitation{inset:0;width:100%;height:100%;text-align:center;pointer-events:none}
#app[data-scene="reveal"] .invitation .eyebrow{position:absolute;top:11%;left:5%;right:5%;margin:0;font-size:9px;letter-spacing:4px;color:#ffe3ac}
#app[data-scene="reveal"] .invitation h2{position:absolute;top:15%;left:5%;right:5%;margin:0;font:900 clamp(20px,2.4vw,36px)/1.12 var(--display);text-transform:uppercase;letter-spacing:.035em;color:#fff7e8}
#app[data-scene="reveal"] .invitation h2 br{display:none}
#app[data-scene="reveal"] .invitation h2 strong{font-weight:900}
#app[data-scene="reveal"] .couple{position:absolute;top:47%;left:8%;right:8%;margin:0;display:flex;justify-content:space-between;align-items:center;font:900 clamp(48px,7.4vw,112px)/1 var(--display);letter-spacing:-.025em;text-transform:uppercase;color:#f7e4bf}
#app[data-scene="reveal"] .couple i{position:absolute;top:28vh;left:49%;margin:0;font:italic 18px Georgia;opacity:.75}
#app[data-scene="reveal"] .date-line{position:absolute;bottom:14%;left:5%;right:5%;font:700 clamp(18px,2vw,28px)/1.2 var(--display);text-transform:uppercase;letter-spacing:1px;color:#fff2d7}
#app[data-scene="reveal"] .invitation button{position:absolute;bottom:7.5%;left:50%;transform:translateX(-50%);margin:0;pointer-events:auto;background:#091521da}
@media(max-width:600px){
 .final-backdrop span{top:30%;font-size:19vw;letter-spacing:-.045em;left:2%;right:2%}
 #app[data-scene="reveal"] .invitation .eyebrow{top:13.5%;font-size:6px;letter-spacing:2.2px}
 #app[data-scene="reveal"] .invitation h2{top:16.5%;font-size:6.5vw;line-height:1.05;left:7%;right:7%}
 #app[data-scene="reveal"] .invitation h2 br{display:block}
 #app[data-scene="reveal"] .couple{top:auto;bottom:23%;left:8%;right:8%;font-size:10.3vw}
 #app[data-scene="reveal"] .couple i{position:static;font-size:5vw}
 #app[data-scene="reveal"] .date-line{bottom:17%;font-size:5.3vw;letter-spacing:.5px;gap:10px}
 #app[data-scene="reveal"] .date-line>span{width:18px}
 #app[data-scene="reveal"] .invitation button{bottom:10%;font-size:8px;white-space:nowrap}
}

#app[data-scene="reveal"] .couple i{opacity:0}
@media(max-width:600px){#app[data-scene="reveal"] .couple i{opacity:1}}

#app[data-scene="reveal"] .final-actions{position:absolute;bottom:7.5%;left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:10px;white-space:nowrap;pointer-events:auto}
#app[data-scene="reveal"] .final-actions button{position:static;transform:none;margin:0}
#app[data-scene="reveal"] .final-actions #attendButton{background:#ebd3a4;color:#15202a;border-color:#ebd3a4;font-weight:800;padding:13px 32px;min-width:120px}
#attendanceStatus{position:absolute;top:100%;left:0;right:0;margin:8px 0 0;color:#fff3da;font:11px/1.3 Arial,sans-serif;text-shadow:0 1px 5px #000}
@media(max-width:600px){#app[data-scene="reveal"] .final-actions{bottom:10%;gap:7px}#app[data-scene="reveal"] .final-actions #attendButton{padding:12px 20px;min-width:100px}}
/* Text-free cover artwork with independently rendered HTML typography. */
.cover{min-height:680px;height:100svh;background:#0c1722}
.cover-art{inset:0;width:100%;height:100%;display:block;background:none;overflow:hidden}
.cover-art img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.cover-top{position:absolute;inset:0 0 auto;padding:35px 5%;font-size:11px;gap:24px}
.cover-top .brand-mark{font-size:39px}.cover-top b{color:#f0ddba;letter-spacing:3px}
.cover-top .edition{color:#e5d6bb;font-size:10px;letter-spacing:2.5px}
.cover-copy{position:absolute;left:5.6%;top:20%;width:42%;padding:0}
.cover-copy>.eyebrow{display:none}
.cover h1{font-size:clamp(90px,11vw,190px);line-height:.88;margin:0 0 28px;letter-spacing:-.045em;transform:scaleX(.88)}
.cover h1>span{color:#ebbd69}.cover h1 .title-dot{color:#b72e24}
.cover-sub{font-size:clamp(17px,1.7vw,27px);line-height:1.45;color:#f0e5d0;margin:0 0 32px}
.start-button{width:430px;max-width:100%;min-height:68px;padding:20px 25px;font-size:13px;letter-spacing:1px;background:linear-gradient(115deg,#efd49a,#e6ad5c);border-color:#ffe4a6;box-shadow:5px 5px 0 #101821,6px 6px 0 #b88a48}
.button-arrow{display:none}.sound-note{font-size:8px;letter-spacing:1.5px;color:#e2d5bf;margin-top:24px}
.cover-bottom{bottom:25px;font-size:8px;color:#ddd0b9}
@media(min-width:601px) and (max-height:730px){.cover{min-height:600px}.cover-copy{top:21%}.cover h1{font-size:min(10vw,140px);margin-bottom:20px}.cover-sub{font-size:19px;margin-bottom:24px}.start-button{min-height:57px}.cover-top{padding-top:25px}.sound-note{margin-top:18px}}
@media(min-width:601px) and (max-width:1000px){.cover-copy{width:47%;left:5%}.cover-art img{object-position:57% center}.cover h1{font-size:12vw}.cover-sub{font-size:18px}.start-button{font-size:10px;padding:18px 15px}.cover-top .edition{font-size:8px}}
@media(max-width:600px){
 .cover{height:auto;min-height:max(900px,100svh);padding-bottom:65px}
 .cover:after{inset:9px}
 .cover-top{position:relative;padding:25px 7%;gap:14px;font-size:8px;height:85px;align-items:center}
 .cover-top .brand-mark{font-size:30px}.cover-top b{letter-spacing:2px}.cover-top .edition{display:block;max-width:105px;font-size:6px;letter-spacing:1.1px;line-height:1.6;text-align:right}
 .cover-art{position:absolute;top:62px;left:0;right:0;bottom:auto;width:100%;height:540px;mask-image:linear-gradient(#000 0 76%,transparent 100%)}
 .cover-art img{object-fit:cover;object-position:center top}
 .cover-copy{position:relative;left:auto;top:auto;width:auto;margin:390px 7% 0;padding:0;text-align:center}
 .cover h1{font-size:22vw;line-height:.9;letter-spacing:-.045em;margin:0 0 20px;transform:none;text-align:left}
 .cover-sub{font-size:16px;line-height:1.5;margin:0 0 24px}
 .start-button{width:100%;max-width:100%;min-height:62px;justify-content:center;font-size:11px;padding:17px 12px;gap:13px}
 .sound-note{font-size:6px;letter-spacing:1.1px;white-space:nowrap;margin:23px -3% 0}.sound-note span{padding:0 4px}
 .cover-bottom{left:7%;right:7%;bottom:24px;font-size:7px;letter-spacing:1px}
 /* One reserved row for chapter and equipment, below the playback controls. */
 .comic-panel{top:122px;left:8%;bottom:auto;width:auto;border:0}
 .comic-panel span{position:static;display:block;padding:0;background:none;font-size:15px;line-height:20px}
 .comic-panel i{display:none}
 .power-index{top:122px;left:17%;right:8%;gap:12px;align-items:flex-start;font-size:6px;line-height:12px}
 .power-index span{padding-top:4px;white-space:nowrap}.power-index b{margin-left:2px}
 .story-copy{top:165px;left:8%;width:85%}
 .story-copy .eyebrow{margin:0;font-size:7px;line-height:1.5;letter-spacing:1.6px}
 .story-copy h2{margin-top:12px}
 #app[data-scene="transform"] .story-copy,#app[data-emotion="furious"] .story-copy{top:165px}
 #app[data-emotion="furious"] .story-copy h2{font-size:13vw}
 #app[data-scene="transform"] .power-index{top:122px;left:17%}
}
@media(max-width:600px) and (max-height:760px){.cover{min-height:max(820px,100svh)}.cover-art{height:465px}.cover-copy{margin-top:315px}}
@media(min-width:601px) and (max-width:1000px){.cover-art img{object-position:80% center}.cover-art:after{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#0b1722b3,transparent 70%)}}
/* Mobile first-screen height is allocated, not a fixed tall poster. */
.scene-meta{display:contents}.scene-meta-label{display:none}
#app[data-scene="cover"] .case-return{display:none}
@media(max-width:600px){
 html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
 .cover{display:grid;grid-template-columns:1fr;grid-template-rows:64px minmax(100px,1fr) auto;height:100svh;min-height:560px;padding:0}
 .cover-top{grid-row:1;height:64px;padding:13px 7%;z-index:4}
 .cover-top .brand-mark{font-size:28px}
 .cover-art{grid-row:2;position:relative;inset:auto;width:100%;height:100%;min-height:0;mask-image:linear-gradient(#000 0 83%,transparent 100%)}
 .cover-art img{object-fit:cover;object-position:center 20%}
 .cover-copy{grid-row:3;display:flex;flex-direction:column;position:relative;inset:auto;width:100%;margin:0;padding:0 7% max(22px,env(safe-area-inset-bottom));text-align:center}
 .cover h1{order:0;font-size:clamp(58px,19vw,86px);line-height:.87;margin:0 0 12px;letter-spacing:-.04em}
 .cover-sub{order:1;font-size:14px;line-height:1.35;margin:0 0 12px}
 .cover .sound-note{order:2;font-size:8px;line-height:1.5;letter-spacing:.7px;white-space:normal;margin:0 0 12px;color:#f5e1bc}
 .cover .start-button{order:3;min-height:52px;padding:14px 10px;font-size:10px}
 .cover-bottom{display:none}
 #app .scene-meta{position:absolute;z-index:4;top:132px;left:8%;right:8%;display:grid;grid-template-columns:26px minmax(0,1fr);gap:12px 10px;align-items:start}
 #app .scene-meta .comic-panel{position:static;inset:auto;width:auto;border:0}
 #app .scene-meta .comic-panel span{position:static;padding:0;background:none;font-size:15px;line-height:20px}
 #app .scene-meta .power-index{position:static;inset:auto;gap:10px;font-size:6px;line-height:12px;min-width:0}
 #app .scene-meta .scene-meta-label{display:block;grid-column:1/-1;margin:0;color:var(--gold);font-size:7px;letter-spacing:1.5px;line-height:1.5;font-weight:700}
 #app .story-copy .eyebrow{display:none}
 #app .story-copy,#app[data-scene="transform"] .story-copy,#app[data-emotion="furious"] .story-copy{top:187px}
 #app:is([data-scene="flight"],[data-scene="reveal"]) .scene-meta{display:none}
 #app .case-return{top:96px;bottom:auto;left:8%;right:auto;padding:4px 8px;font-size:9px;line-height:14px}
}
@media(max-width:600px){#app[data-scene="starlight"] .story-copy h2{font-size:9vw;line-height:.98;width:52vw;max-width:52vw;letter-spacing:-.025em}}

.case-return{position:fixed;bottom:8px;right:20px;z-index:50;color:#f2dbac;background:#111b24dc;padding:7px 11px;font:10px Arial,sans-serif;text-decoration:none;border:1px solid #c9ad7366}
