@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fredoka:wght@400;500;600;700&family=Kalam:wght@400;700&display=swap');
:root{--ink:#344f78;--blue:#45618d;--cream:#fffaf1;--pink:#f4bdc8;--pale:#e5edf8;--line:#38577e;--green:#d7e8aa}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--cream);color:var(--ink);font:16px/1.7 'DM Sans',sans-serif}button,input,select,textarea{font:inherit;color:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:'Fredoka','Trebuchet MS',sans-serif;font-weight:500;line-height:1.08}h2{font-size:clamp(38px,5vw,65px);letter-spacing:-1.6px;margin-bottom:28px}h2 em{font-style:normal;color:#b86178}h3{font-size:30px;letter-spacing:-.5px}p{margin-bottom:20px}img{max-width:100%;display:block}section{scroll-margin-top:25px}.preview{text-align:center;font-size:10px;letter-spacing:1.6px;background:var(--ink);color:white;padding:6px 12px}header{height:88px;display:flex;justify-content:space-between;align-items:center;max-width:1280px;padding:0 6%;margin:auto}.brand{text-decoration:none;font:600 35px 'Fredoka',sans-serif;letter-spacing:-3px}.brand span{font-size:25px;color:#b86178}.brand .star{font-size:20px;margin-left:9px}nav{display:flex;gap:32px;align-items:center}nav a{text-decoration:none;font-size:13px;font-weight:700}nav .nav-rsvp{padding:8px 20px;border:1.5px solid var(--ink);border-radius:30px}.hero{max-width:1280px;margin:auto;min-height:690px;padding:38px 6% 78px;display:grid;grid-template-columns:1fr 1fr;position:relative;align-items:center}.eyebrow{font-size:11px;font-weight:700;letter-spacing:2px}.hero h1{font-size:clamp(76px,8vw,112px);line-height:.94;letter-spacing:-4px;margin:25px 0 22px}.amp{font-size:.7em;font-family:'Kalam';font-weight:400}.pink-word{color:#b86178}.spark{font-size:70px;display:inline-block;transform:translate(20px,-20px);font-weight:400}.hero-sub{font-size:17px;line-height:1.6}.guest{border-left:3px solid var(--pink);padding:2px 0 2px 15px;margin:25px 0}.guest>span{display:block;font-size:9px;letter-spacing:1.5px}.guest strong{font-size:17px;display:block}.button{display:inline-flex;align-items:center;justify-content:space-between;gap:35px;background:var(--ink);color:white;border:1.5px solid var(--ink);border-radius:8px;padding:13px 23px;text-decoration:none;font-size:14px;font-weight:700;box-shadow:3px 4px 0 #bdc9d9;transition:transform .2s,box-shadow .2s}.button:hover{transform:translate(1px,2px);box-shadow:1px 2px 0 #bdc9d9}.button span{font-size:22px;font-weight:400}.micro{font-size:11px;margin:18px 0 0;line-height:1.6}.hero-art{position:relative;align-self:stretch;display:flex;align-items:flex-end;justify-content:center;margin:25px -5px 20px 0;min-height:465px}.hero-art>img{width:95%;position:relative;z-index:2;max-height:490px;object-fit:contain;object-position:bottom}.blob{position:absolute;inset:35px -5px 0 0;background:var(--pale);border-radius:49% 48% 16% 17% / 45% 45% 13% 15%;transform:rotate(4deg);border:1.5px solid #bdcce3}.sticker{position:absolute;z-index:3;text-align:center;line-height:1.35;font-size:11px;letter-spacing:1px;box-shadow:3px 4px 0 #344f7820}.sticker b{font-size:14px}.forever{left:-20px;top:35px;background:var(--green);padding:13px 20px;border:1.5px solid var(--ink);transform:rotate(-12deg)}.spontan{right:-18px;bottom:65px;border:1.5px solid var(--ink);background:var(--pink);padding:18px 22px;border-radius:50%;transform:rotate(12deg)}.spontan b{font-family:Fredoka;font-size:23px}.heart{position:absolute;top:-10px;right:25px;font:90px Kalam;color:#bf6782;transform:rotate(12deg)}.date-stamp{position:absolute;bottom:-26px;font:24px Kalam;transform:rotate(-5deg)}.scroll-hint{position:absolute;bottom:20px;font-size:9px;letter-spacing:2px;text-decoration:none}.ticker{background:var(--pink);border-block:1.5px solid var(--ink);overflow:hidden;transform:rotate(-1.5deg);margin:15px 0}.ticker div{white-space:nowrap;font:500 18px Fredoka;word-spacing:18px;padding:15px;min-width:max-content}.section{padding:95px max(6%,calc((100vw - 1120px)/2));}.intro{text-align:center;padding-block:100px}.intro h2{margin-top:20px}.intro>p{max-width:525px;margin:0 auto 35px}.names{display:flex;align-items:center;justify-content:center;gap:45px}.names b{display:block;font:500 26px Fredoka}.names span{font:17px Kalam;color:#b86178}.names i{font:35px Kalam}.story{background:#edf1f7;position:relative}.section-title{position:relative}.section-title h2{margin-top:15px}.tiny-note{position:absolute;right:4%;top:25px;font:23px/1.25 Kalam;transform:rotate(7deg);color:#b86178}.story-row{display:grid;grid-template-columns:1.05fr 1fr;align-items:center;gap:80px;margin-top:70px}.story-row.reverse .illustration{order:2}.illustration{position:relative;padding:30px 5px 10px}.illustration img{max-height:370px;margin:auto;object-fit:contain}.label{display:inline-block;font-size:10px;font-weight:700;letter-spacing:1.4px}.illustration>.label{position:absolute;top:0;left:20px;background:var(--cream);padding:6px 13px;transform:rotate(-4deg);border:1px solid #a8b8d0}.story-text h3{font-size:43px;margin:12px 0 20px}.story-text p{font-size:15px;line-height:1.9}.hand{font:21px Kalam;color:#aa5a73}mark{background:#f4d5dd;color:inherit;padding:1px 4px}s{text-decoration-thickness:2px}.event{background:var(--blue);color:var(--cream)}.event h2{margin-top:20px}.event h2 em{color:var(--pink)}.event h2>span{float:right;color:var(--pink);font-size:100px}.event-layout{display:grid;grid-template-columns:.8fr 1.3fr;gap:60px;margin-top:45px}.calendar{background:var(--cream);color:var(--ink);border-radius:10px;text-align:center;transform:rotate(-3deg);box-shadow:8px 9px 0 #243b6055;overflow:hidden;padding-bottom:25px}.calendar>div{background:var(--pink);padding:10px;font-size:13px;font-weight:700;letter-spacing:5px;border-bottom:2px solid var(--ink)}.calendar>b{display:block;font:500 125px/1.15 Fredoka}.calendar>span{font-weight:700;letter-spacing:3px;font-size:14px;display:block}.calendar small{display:block;line-height:1.8;margin:20px}.text-link{font-size:13px;font-weight:700;text-underline-offset:5px}.event-tickets article{display:flex;gap:25px;align-items:center;border-bottom:1px dashed #a9bedb;padding:18px 0 27px;margin-bottom:15px}.ticket-icon{font-size:52px;color:var(--pink)}.ticket-no{margin-left:auto;opacity:.35;font:60px Fredoka}.event-tickets h3{font-size:34px;margin:8px 0}.event-tickets p{margin:0}.event-tickets .eyebrow{font-size:9px}.countdown{display:flex;gap:28px;margin-top:30px}.countdown b{font:32px Fredoka;display:block}.countdown span{font-size:9px;text-transform:uppercase;letter-spacing:2px}.rundown{display:grid;grid-template-columns:1fr 1.15fr;gap:65px}.rundown h2{margin-top:18px}.timeline>div{display:flex;gap:28px;position:relative;padding-bottom:25px}.timeline time{font:500 23px Fredoka;min-width:62px;padding-top:4px}.timeline article{border-left:1.5px solid #b0c0d5;padding:2px 0 5px 25px;position:relative}.timeline article:before{content:'';width:11px;height:11px;border:2px solid var(--ink);border-radius:50%;background:var(--pink);position:absolute;left:-7px;top:8px}.timeline h3{font-size:24px;margin-bottom:8px}.timeline p{font-size:13px;margin:0}.draft-note{background:#eee8df;padding:12px;border-radius:5px;font-size:11px!important}.location{background:#f5dce2}.location h2{margin-top:20px}.location-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:45px}.map-card{background:var(--cream);padding:12px;border:1.5px solid var(--ink);border-radius:10px;box-shadow:5px 6px 0 #d1a5b2;overflow:hidden}.map-tabs{display:flex;gap:8px;padding-bottom:12px}.map-tabs button{padding:8px 15px;border:1px solid var(--ink);border-radius:30px;background:transparent;font-size:12px}.map-tabs .active{background:var(--ink);color:white}iframe{width:100%;height:360px;border:0;border-radius:5px}.map-card .micro{margin:8px 2px}.transport article{padding:5px 0 20px}.transport article+article{border-top:1px dashed #8c7890;padding-top:20px}.transport h3{margin:10px 0;font-size:28px}.transport p{font-size:13px;margin:0 0 10px}.shuttle{display:flex;gap:25px;margin:18px 0 10px}.shuttle b{display:block;font-size:10px;letter-spacing:1px}.shuttle span{font-size:14px}.interval{font-weight:700}.small-link{display:inline-block;font-size:11px;margin-top:12px}.rsvp{display:grid;grid-template-columns:1fr 1fr;gap:90px;background:#e8eef7}.rsvp h2{margin-top:18px}.rsvp-sticker{font:23px/1.2 Fredoka;border:1.5px solid var(--ink);background:var(--green);padding:20px;transform:rotate(-8deg);width:150px;margin-top:35px;position:relative}.rsvp-sticker b{font-size:30px}.rsvp-sticker span{position:absolute;right:10px;top:15px;font-size:30px}form{background:var(--cream);border:1.5px solid var(--ink);border-radius:10px;padding:30px;box-shadow:5px 6px 0 #344f7820}label{font-size:12px;font-weight:700;display:block;margin-bottom:18px}input,select,textarea{width:100%;display:block;background:white;border:1px solid #acb9cc;border-radius:5px;margin-top:7px;padding:11px 12px;font-size:14px}textarea{resize:vertical}input:focus,textarea:focus,select:focus{outline:2px solid #c47c94;outline-offset:2px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-note{font-size:10px;line-height:1.5;color:#8b5366;border-bottom:1px dashed #ddd;padding-bottom:12px}.form-response{font-size:12px;margin:15px 0 0}.wishes h2{margin-top:18px}.wish-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px;align-items:center}.empty-note{background:#f6d5df;padding:35px;transform:rotate(-4deg);box-shadow:5px 5px 0 #e8d4cd;max-width:340px;margin:auto;width:100%}.empty-note>span{font-size:10px;letter-spacing:1px}.empty-note p{font:23px/1.7 Kalam;margin-top:20px}.empty-note b{font:19px Kalam}#wish-list{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:40px}.wish-note{background:#edf1f7;padding:20px;border-radius:6px;overflow-wrap:anywhere}.wish-note p{font:20px Kalam;white-space:pre-wrap}.wish-note b{font-size:12px}.wish-note small{display:block;font-size:10px}.gift{text-align:center;background:var(--blue);color:var(--cream)}.gift h2{margin-top:20px}.gift h2 em{color:var(--pink)}.gift p{font-size:14px}.button.light{background:var(--pink);color:var(--ink)}.closing{text-align:center}.closing>p{font-size:14px;margin-top:30px}.closing h2{font-size:clamp(45px,6vw,76px)}.closing .button{background:var(--pink);color:var(--ink);font:500 28px Fredoka;padding:15px 35px}footer{border-top:1px solid #c3c9d1;padding:25px 6%;display:flex;justify-content:space-between;gap:15px;font-size:10px}footer a{text-decoration:none}dialog{background:var(--cream);color:var(--ink);padding:45px;border:2px solid var(--ink);border-radius:12px;max-width:460px;width:90%}dialog::backdrop{background:#243b60aa}dialog h2{font-size:34px;margin-top:20px}.close{position:absolute;right:14px;top:5px;border:0;background:none;font-size:30px}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;padding:12px 22px;border-radius:30px;font-size:13px;opacity:0;pointer-events:none;z-index:10;transition:opacity .2s}.confetti{position:fixed;z-index:20;top:-20px;pointer-events:none;animation:fall 2.8s linear forwards}@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}
@media(min-width:1500px){.section{padding-inline:calc((100vw - 1120px)/2)}}
@media(max-width:760px){header{height:75px;padding:0 6%}nav{gap:18px}nav a{font-size:11px}nav a:first-child{display:none}nav .nav-rsvp{padding:6px 13px}.hero{padding:30px 7% 60px;grid-template-columns:1fr;min-height:auto}.hero-copy{text-align:center}.hero .eyebrow{font-size:9px}.hero h1{font-size:78px;letter-spacing:-3px;margin:20px 0}.hero h1 br{display:none}.hero .amp{font-size:45px}.spark{display:none}.hero-sub{font-size:14px}.guest{border:0;margin:20px 0}.guest strong{font-size:16px}.hero-art{min-height:325px;max-width:380px;width:100%;margin:35px auto 30px}.hero-art>img{max-height:335px;width:87%}.blob{inset:25px 5px 0}.forever{top:18px;left:-2px;padding:9px 12px;font-size:9px}.forever b{font-size:11px}.spontan{right:-5px;bottom:30px;padding:14px}.spontan b{font-size:20px}.heart{font-size:60px;right:10px;top:-15px}.date-stamp{font-size:20px;bottom:-28px}.scroll-hint{left:50%;transform:translateX(-50%);white-space:nowrap;font-size:8px;bottom:2px}.section{padding:65px 7%}.intro h2{font-size:36px}.intro>p{font-size:14px}.names{gap:15px}.names b{font-size:20px}.names span{font-size:15px}.names i{font-size:25px}.tiny-note{display:none}.story-row,.event-layout,.rundown,.location-grid,.rsvp,.wish-grid{grid-template-columns:1fr;gap:30px}.story-row{margin-top:45px}.story-row.reverse .illustration{order:0}.illustration img{max-height:300px}.story-text h3{font-size:36px}.story-text p{font-size:14px}.hand{font-size:19px}.story-row+.story-row{border-top:1px dashed #b2c2d7;padding-top:35px}.event h2>span{font-size:60px}.calendar{max-width:320px;width:90%;margin:0 auto 20px}.event-layout{gap:20px}.event-tickets h3{font-size:30px}.countdown{justify-content:space-between;gap:10px}.rundown{gap:25px}.rundown>div>p{font-size:14px}.timeline>div{gap:15px}.timeline h3{font-size:22px}.timeline time{font-size:21px;min-width:55px}.timeline article{padding-left:20px}.location-grid{gap:30px}iframe{height:300px}.transport{display:grid;gap:15px}.rsvp-sticker{display:none}.rsvp>div>p{font-size:14px}form{padding:22px}.wishes .empty-note{max-width:280px;padding:25px;margin-bottom:15px}.empty-note p{font-size:21px}#wish-list{grid-template-columns:1fr}.gift p br{display:none}footer{flex-wrap:wrap}footer>span:last-child{width:100%}.preview{font-size:8px;letter-spacing:1px}.closing h2{font-size:47px}.button{min-height:48px}.map-tabs button{min-height:42px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.confetti{display:none}*{transition:none!important}}

.music-toggle{position:fixed;bottom:18px;right:18px;z-index:8;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 32px);padding:10px 16px;border:1.5px solid var(--ink);border-radius:40px;background:var(--cream);box-shadow:3px 4px 0 #344f7830;text-align:left}.music-toggle>span:first-child{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--pink);font-size:16px}.music-toggle b{display:block;font-size:11px}.music-toggle small{display:block;font-size:9px}.music-toggle:focus-visible{outline:3px solid #b86178;outline-offset:3px}@media(max-width:760px){.music-toggle{bottom:12px;right:12px;padding:8px 12px;gap:9px}footer{padding-bottom:95px}}

/* Keep the invitation behind its cover until the guest opens it. */
body.invitation-closed{height:100svh;overflow:hidden;overscroll-behavior:none}
.invitation-closed .preview,.invitation-closed header,.invitation-closed main>:not(#cover),.invitation-closed footer,.invitation-closed .music-toggle,.invitation-closed .scroll-hint{display:none!important}
.invitation-closed #cover{height:100svh;min-height:0;max-height:100svh;overflow:hidden;align-content:center}
@media(max-width:760px){
.invitation-closed #cover{padding:16px 7%;gap:8px;grid-template-rows:auto minmax(0,1fr)}
.invitation-closed .hero h1{font-size:clamp(44px,9svh,70px);margin:10px 0}
.invitation-closed .hero-sub{margin-bottom:10px;font-size:13px}
.invitation-closed .guest{margin:10px 0}
.invitation-closed .micro{margin:8px 0 0;font-size:10px}
.invitation-closed .hero-art{height:100%;min-height:0;max-height:32svh;margin:0 auto 12px;width:min(100%,300px)}
.invitation-closed .hero-art>img{max-height:100%;width:auto;max-width:87%;margin:auto;object-fit:contain}
.invitation-closed .date-stamp{bottom:-10px;font-size:16px}
}

.names>div{flex:1;min-width:0}.names .parents{font:400 14px/1.7 'DM Sans',sans-serif;color:var(--ink);margin:14px auto 0;max-width:340px}.names{align-items:flex-start}.names>i{padding-top:5px}
.ticker .ticker-track{display:flex;width:max-content;padding:0;word-spacing:12px;animation:wedding-marquee 28s linear infinite}.ticker-track>span{display:block;padding:15px 0;flex-shrink:0}@keyframes wedding-marquee{to{transform:translateX(-50%)}}
.cat-doodle{width:210px;max-width:65%;margin:20px 0 0 auto;transform:rotate(5deg)}
.event{position:relative}.event>h2,.event>.eyebrow{position:relative;z-index:1}.event>h2{padding-right:220px}.ultraman-doodle{position:absolute;right:6%;top:20px;width:220px;max-height:240px;object-fit:contain;opacity:.92}.transport-reminder{font-size:22px;transform:rotate(-3deg)}
@media(max-width:760px){.names{flex-direction:column;align-items:center;gap:20px}.names .parents{font-size:12px}.names>i{padding:0}.cat-doodle{width:160px;margin-top:15px}.ultraman-doodle{width:125px;top:35px;right:4%;max-height:170px}.event>h2{padding-right:95px;font-size:36px}.ticker .ticker-track{animation-duration:22s}.ticker-track>span{font-size:15px}}
@media(prefers-reduced-motion:reduce){.ticker .ticker-track{animation:none}}

/* Sparse line doodles with a playful looping dance. */
.cat-doodle{width:175px;transform-origin:50% 95%;animation:kicau-dance .72s ease-in-out infinite;will-change:transform}
@keyframes kicau-dance{0%,100%{transform:translateX(-7px) rotate(-7deg) scale(1.02,.98)}25%{transform:translateY(-7px) rotate(-2deg) scale(.98,1.02)}50%{transform:translateX(7px) rotate(7deg) scale(1.02,.98)}75%{transform:translateY(-7px) rotate(2deg) scale(.98,1.02)}}
.ultraman-doodle{height:230px;max-height:none;opacity:1;color:var(--cream)}.ultraman-doodle>img{width:85%;height:100%;object-fit:contain;margin:auto;filter:brightness(0) invert(1);opacity:.9}
.sah{position:absolute;font:700 22px/1 'Kalam',cursive;animation:sah-pop 2.4s ease-in-out infinite;--tilt:-12deg;transform:rotate(var(--tilt))}.sah-1{left:0;top:20%;font-size:28px}.sah-2{right:0;top:3%;font-size:18px;--tilt:14deg;animation-delay:.3s}.sah-3{right:-8px;top:37%;font-size:26px;--tilt:12deg;animation-delay:.6s}.sah-4{left:0;bottom:15%;font-size:18px;--tilt:-18deg;animation-delay:.9s}.sah-5{right:0;bottom:0;--tilt:8deg;animation-delay:1.2s}@keyframes sah-pop{0%,70%,100%{transform:rotate(var(--tilt)) scale(1);opacity:.8}80%{transform:rotate(var(--tilt)) scale(1.14);opacity:1}}
@media(max-width:760px){.cat-doodle{width:140px}.ultraman-doodle{width:125px;height:155px;right:5%}.sah{font-size:14px}.sah-1{font-size:19px}.sah-2{font-size:12px}.sah-3{font-size:18px}.sah-4{font-size:12px}}
@media(prefers-reduced-motion:reduce){.cat-doodle,.sah{animation:none;will-change:auto}}

/* Ultraman leans in from the page edge; torso exits naturally off screen. */
.event{overflow:hidden}.ultraman-doodle{right:-55px;top:12px;width:300px;height:280px;transform:rotate(-24deg);transform-origin:80% 85%}.ultraman-doodle>img{position:relative;z-index:1;width:88%;height:112%;margin:0 0 0 auto}.manga-rays{position:absolute;inset:-20px 0 0 -30px;width:300px;height:300px;opacity:.55;transform:rotate(24deg)}.sah{z-index:2}.sah-1{left:-12px;top:26%}.sah-2{right:55px;top:0}.sah-3{right:30px;top:44%}.sah-4{left:5px;bottom:8%}.sah-5{display:none}
.cat-sprite{height:auto;aspect-ratio:1;width:185px;max-width:65%;margin:20px 0 0 auto;background-image:url('assets/kicau-dance-sprites.png');background-size:400% 100%;background-repeat:no-repeat;transform:none;animation:kicau-frames .8s steps(1,end) infinite;will-change:background-position}
@keyframes kicau-frames{0%,100%{background-position:0% 0}25%{background-position:33.333333% 0}50%{background-position:66.666667% 0}75%{background-position:100% 0}}
@media(max-width:760px){.ultraman-doodle{right:-40px;top:22px;width:165px;height:190px}.ultraman-doodle>img{height:110%;width:100%}.manga-rays{width:200px;height:220px;inset:-15px 0 0 -30px}.event>h2{padding-right:90px}.cat-sprite{width:155px}.sah-2{right:25px}.sah-3{right:15px}}
@media(prefers-reduced-motion:reduce){.cat-sprite{animation:none;will-change:auto;background-position:0 0}}

.cat-sprite{aspect-ratio:543.0/724}
.ultraman-doodle{transform:rotate(-45deg);right:-80px}.sah-3{top:18%;right:15px}.manga-rays{transform:rotate(45deg)}
@media(max-width:760px){.ultraman-doodle{right:-52px;transform:rotate(-45deg)}}

.event-heading{display:grid;grid-template-columns:minmax(0,1fr) 280px;align-items:center;gap:24px;margin-bottom:25px}.event-heading>h2{padding:0;margin:0}.event-heading .ultraman-doodle{position:relative;inset:auto;width:280px;height:275px;transform:none;overflow:hidden;isolation:isolate}.event-heading .ultraman-doodle>img{position:absolute;right:-35px;top:12px;width:225px;height:300px;transform:rotate(-35deg);transform-origin:60% 70%;margin:0}.event-heading .manga-rays{inset:0;transform:none;width:230px;height:240px;opacity:.65}.event-heading .sah-1{top:15px;left:8px;font-size:25px;--tilt:-12deg}.event-heading .sah-2{top:8px;right:12px;font-size:17px}.event-heading .sah-3{top:auto;bottom:20px;left:20px;right:auto;font-size:23px}.event-heading .sah-4,.event-heading .sah-5{display:none}
.odong-doodle{width:310px;max-width:100%;height:auto;margin:22px auto 0;transform:rotate(-3deg)}
@media(max-width:760px){.event-heading{grid-template-columns:minmax(0,1fr) 120px;gap:6px;margin-bottom:28px}.event-heading>h2{padding:0;font-size:34px}.event-heading .ultraman-doodle{width:120px;height:215px}.event-heading .ultraman-doodle>img{width:145px;height:210px;right:-48px;top:22px}.event-heading .manga-rays{width:145px;height:190px;left:-12px}.event-heading .sah-1{font-size:18px;left:0}.event-heading .sah-2{font-size:12px;right:0;top:8px}.event-heading .sah-3{font-size:16px;left:0;bottom:8px}.odong-doodle{width:260px}}

/* Let the hero lean across the physical right page edge, within a reserved header. */
.event-heading .ultraman-doodle{width:calc(280px + 6vw);height:260px;overflow:hidden;justify-self:start}.event-heading .ultraman-doodle>img{width:300px;height:350px;max-width:none;right:-60px;top:-55px;transform:rotate(-65deg);transform-origin:50% 50%}.event-heading .sah-1{left:30px;top:25px}.event-heading .sah-2{right:35px;top:5px}.event-heading .sah-3{left:15px;bottom:22px}
.odong-wrap{width:330px;max-width:100%;margin:24px auto 0;padding-top:12px}.odong-wrap .odong-doodle{width:100%;margin:10px auto 0}.angkot-callout{display:block;text-align:center;font:700 27px/1.2 'Kalam',cursive;transform:rotate(-7deg);animation:angkot-cheer 2.8s ease-in-out infinite;transform-origin:50% 70%}@keyframes angkot-cheer{0%,70%,100%{transform:rotate(-7deg) scale(1)}80%{transform:rotate(-4deg) scale(1.06)}}
@media(max-width:760px){.event-heading .ultraman-doodle{width:calc(120px + 7vw);height:210px}.event-heading .ultraman-doodle>img{width:190px;height:250px;right:-76px;top:-16px;transform:rotate(-65deg)}.event-heading .sah-1{left:0;top:20px}.event-heading .sah-2{right:6px;top:5px}.event-heading .sah-3{left:3px;bottom:20px}.angkot-callout{font-size:25px}.odong-wrap{width:270px}}
@media(prefers-reduced-motion:reduce){.angkot-callout{animation:none}}
.event-heading .ultraman-doodle>img{right:-100px}@media(max-width:760px){.event-heading .ultraman-doodle>img{right:-96px}}

/* A circular comic cameo gives the cropped torso a deliberate frame. */
.event-heading .ultraman-doodle{width:280px;height:270px;overflow:visible}.ultra-portal{position:absolute;width:180px;height:180px;left:50px;top:45px;border:1.5px solid var(--cream);border-radius:50%;overflow:hidden;transform:rotate(-8deg)}.ultra-portal>img{position:absolute;width:180px;height:240px;max-width:none;left:0;bottom:-38px;object-fit:contain;filter:brightness(0) invert(1);opacity:.95}
.event-heading .sah{display:block;position:absolute;font-size:21px}.event-heading .sah-1{left:5px;top:40px;bottom:auto}.event-heading .sah-2{left:110px;right:auto;top:5px;font-size:17px}.event-heading .sah-3{left:auto;right:0;top:60px;bottom:auto;font-size:25px}.event-heading .sah-4{left:0;top:145px;bottom:auto;font-size:17px}.event-heading .sah-5{right:6px;top:170px;bottom:auto;font-size:20px}.event-heading .sah-6{left:100px;top:237px;font-size:23px;--tilt:9deg}.event-heading .sah-7{left:38px;top:220px;font-size:14px;--tilt:-18deg}
.nona-doodle{display:block;width:100%;height:auto;margin:12px auto -15px;position:relative;z-index:1}.odong-wrap{width:350px;max-width:100%}.odong-wrap .angkot-callout{position:relative;margin:0 auto 14px}.angkot-callout::after{content:'';position:absolute;width:25px;height:16px;border-left:2px solid var(--ink);border-bottom:2px solid var(--ink);left:62%;bottom:-17px;transform:skew(-30deg) rotate(-30deg)}
@media(max-width:760px){.event-heading{grid-template-columns:minmax(0,1fr) 135px;gap:7px}.event-heading .ultraman-doodle{width:135px;height:205px}.ultra-portal{width:100px;height:100px;left:18px;top:48px}.ultra-portal>img{width:105px;height:145px;bottom:-25px;left:-3px}.event-heading .sah{font-size:13px}.event-heading .sah-1{left:0;top:18px;font-size:15px}.event-heading .sah-2{left:78px;top:20px;font-size:11px}.event-heading .sah-3{right:0;top:150px;font-size:15px}.event-heading .sah-4{left:0;top:110px;font-size:11px}.event-heading .sah-5{right:0;top:65px;font-size:12px}.event-heading .sah-6{left:25px;top:175px;font-size:16px}.event-heading .sah-7{left:0;top:153px;font-size:10px}.odong-wrap{width:280px}}

/* Layer the hands over the circle, keeping the torso masked inside. */
.ultra-portal{overflow:visible}.ultra-body{position:absolute;inset:0;border-radius:50%;overflow:hidden}.ultra-body>img,.ultra-portal>.ultra-arm{position:absolute;max-width:none;width:230px;height:300px;left:-25px;bottom:-45px;top:auto;right:auto;margin:0;object-fit:contain;filter:brightness(0) invert(1);opacity:.95;transform:none}.ultra-arm{z-index:2;pointer-events:none}.ultra-arm-left{clip-path:polygon(0 0,43% 0,43% 57%,18% 76%,0 76%)}.ultra-arm-right{clip-path:polygon(76% 49%,100% 49%,100% 87%,76% 87%)}
.angkot-callout::after{display:none}
@media(max-width:760px){.ultra-body>img,.ultra-portal>.ultra-arm{width:132px;height:175px;left:-16px;bottom:-29px}.event-heading .sah-1{left:-5px;top:12px}}
.event-heading .sah-1{top:5px;left:0}.event-heading .sah-5{top:210px;right:-6px}@media(max-width:760px){.event-heading .sah-1{top:8px;left:-5px}.event-heading .sah-5{top:160px;right:-5px}}

.ultra-portal{border:0}.portal-ring{position:absolute;inset:0;width:100%;height:100%;stroke:var(--cream);stroke-width:1.5;z-index:0}.ultra-body>img,.ultra-portal>.ultra-arm{width:245px;height:320px;left:-32px;bottom:-45px}.ultra-head{clip-path:polygon(43% 0,78% 0,78% 58%,43% 58%)}
.bank-card{background:var(--pale);padding:22px;border-radius:14px;margin:24px 0}.bank-name{font:600 30px 'Fredoka',sans-serif}.bank-card>p{font-size:14px;margin:8px 0 18px}.bank-card label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:1px}.bank-card input{display:block;width:100%;border:0;background:transparent;font:500 27px 'DM Sans',sans-serif;letter-spacing:2px;padding:7px 0 18px;color:var(--ink)}.bank-card .button{width:100%;font-size:14px}#copy-status{min-height:22px;font-size:12px;margin:14px 0 0}#gift-dialog{max-height:90svh;overflow-y:auto}#gift-dialog>.close-gift{font-size:13px;padding:9px 18px}
@media(max-width:760px){.ultra-body>img,.ultra-portal>.ultra-arm{width:142px;height:188px;left:-21px;bottom:-29px}#gift-dialog{padding:30px 22px}.bank-card{padding:18px}}
.event-heading .sah-1{left:-10px;top:-15px}@media(max-width:760px){.event-heading .sah-1{left:-8px;top:-5px}}

.form-note{color:var(--ink);font-size:13px}form button:disabled{cursor:default;opacity:.65}form input:disabled,form select:disabled,form textarea:disabled{opacity:.8;cursor:default;-webkit-text-fill-color:var(--ink)}

/* Blindbox monogram: navy initials and rose ampersand/heart. */
.brand{display:inline-flex;align-items:center;width:110px;height:50px;flex-shrink:0;letter-spacing:normal}.brand img{width:100%;height:100%;object-fit:contain}@media(max-width:760px){.brand{width:96px;height:44px}}

/* Keep the guestbook within its own scroll area. */
#wish-list{max-height:480px;overflow-y:auto;overscroll-behavior-y:contain;align-items:start;align-content:start;grid-auto-rows:max-content;padding:4px 14px 4px 2px;scrollbar-width:thin;scrollbar-color:#b86178 #e5edf8}
#wish-list:empty{display:none}
#wish-list:focus-visible{outline:2px solid #b86178;outline-offset:5px;border-radius:6px}
.wish-scroll-hint{margin:28px 0 -24px;font-size:12px;color:var(--ink)}
.wish-scroll-hint[hidden]{display:none}
@media(max-width:760px){#wish-list{max-height:430px;gap:16px;padding-right:10px}.wish-scroll-hint{font-size:11px}}
