@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;1,400&family=Nanum+Pen+Script&family=Noto+Serif+KR:wght@300;400;500&display=swap');
:root{--paper:#ffffff;--ink:#403e37;--muted:#88847b;--line:#e8e5df;--accent:#627F96;--soft:#f6f8fa;--serif:'Noto Serif KR','Batang',serif;--english:'Cormorant Garamond',Georgia,serif}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:#eeede9;color:var(--ink);font-family:var(--serif);font-size:14px;line-height:2;-webkit-font-smoothing:antialiased}main,footer,.demo-bar{max-width:480px;margin:auto;background:var(--paper)}main{box-shadow:0 0 60px #32302605}h1,h2,h3,p,figure{margin:0}h2{font-size:22px;line-height:1.9;font-weight:400;letter-spacing:-.6px}h3{font-weight:400;font-size:20px}p{word-break:keep-all}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}button,a,input,select{outline-offset:4px;-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid var(--accent)}button:disabled{opacity:.55;cursor:wait}.demo-bar{padding:12px 24px;background:#e8e7e2;text-align:center;font-family:-apple-system,BlinkMacSystemFont,sans-serif}.demo-bar>span{display:none}.switch{display:flex;justify-content:center;gap:24px}.switch a{font-size:10px;color:#96938b;letter-spacing:.1px;padding:3px 0}.switch a[aria-current]{color:#47483f;border-bottom:1px solid var(--accent)}.hero{padding:48px 34px 0;text-align:center}.cover-kicker{font-size:12px;letter-spacing:5px;padding-left:5px;color:#747367}.cover-title{font-family:var(--english);font-size:56px;line-height:.98;font-weight:400;letter-spacing:-1.8px;margin:24px 0 28px}.cover-title em{font-weight:400;font-style:italic;color:var(--accent)}.cover-photo{position:relative}.cover-photo img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover}.cover-photo figcaption{position:absolute;bottom:15px;left:0;width:100%;font-family:var(--english);font-size:10px;letter-spacing:2.5px;color:#68685e;text-shadow:0 0 10px #fff}.cover-names{display:flex;justify-content:center;align-items:center;gap:28px;font-size:22px;letter-spacing:4px;margin:34px 0 17px}.name-divider{font-family:var(--english);font-size:18px;font-style:italic;color:#a6a697;letter-spacing:0}.cover-details{font-size:12px;line-height:2.1;color:#78766e;letter-spacing:-.3px}.cover-scroll{display:block;width:40px;margin:18px auto 0;padding:3px;color:#aaa79b;font-size:23px}.eyebrow{font-family:var(--english);font-size:11px;letter-spacing:3px;color:#999988;margin-bottom:18px}.invitation{text-align:center;padding:70px 32px 65px}.little-flower{display:block;font-size:32px;line-height:1.4;color:var(--accent);margin:0 0 25px}.invitation h2{font-size:21px;margin-bottom:30px}.invitation>p:not(.eyebrow){color:#77756d;font-size:13px;line-height:2.4}.parents{border-top:1px solid var(--line);padding-top:28px;margin:37px auto 0;font-size:13px;line-height:2.7}.parents span{font-size:10px;margin:0 12px;color:#97958c}.parents b{font-weight:500;font-size:16px}.interlude{text-align:center;background:#ffffff;padding:42px 25px}.interlude>span{font-family:var(--english);font-style:italic;font-size:31px;color:var(--accent)}.interlude p{font-size:12px;line-height:2.1;margin-top:15px;color:#8c8b7f}.date-section{text-align:center;padding:65px 37px}.date-section>p:not(.eyebrow){font-size:12px;color:#7c7a72}.date-display{font-family:var(--english);font-size:33px;letter-spacing:2px;line-height:1.4;margin:28px 0 9px}.date-display span{font-size:20px;padding:0 13px;color:#c6c3b8}.calendar{max-width:295px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:22px 0;margin:28px auto}.week,#days{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}.week{font-family:var(--english);font-size:12px;color:#a49f92;margin-bottom:14px}#days span{height:30px;display:grid;place-content:center;font-family:var(--english);font-size:16px}#days span:nth-child(7n+1){color:#bc8b80}#days .selected{background:var(--accent);color:#fff;border-radius:50%}.countdown{font-size:12px}.countdown b{font-weight:500;color:var(--accent)}.outline,.dark{border:1px solid #d9dbcf;background:transparent;color:var(--accent);font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo',sans-serif;min-height:44px;padding:11px 19px;border-radius:3px;display:inline-flex;align-items:center;justify-content:center;gap:14px;font-size:12px;line-height:1.5}.dark{background:var(--accent);color:#fff;border-color:var(--accent)}.dark:hover{background:color-mix(in srgb,var(--accent) 85%,black)}.outline:hover{background:color-mix(in srgb,var(--accent) 6%,white)}.date-section .outline{margin-top:24px;min-width:180px}.location{padding:60px 30px;background:#ffffff;text-align:center}.section-heading{text-align:center;margin-bottom:24px}.location-grid{display:block}.venue-en{font-family:var(--english);font-size:12px;letter-spacing:2px;color:#9e9b8e}.venue h3{margin:12px 0;font-size:22px}.venue>p{font-size:12px;line-height:2.1;color:#807d72}.map-actions{display:flex;gap:6px;justify-content:center;margin:24px 0 30px;flex-wrap:wrap}.map-actions .outline{font-size:10px;padding:10px 12px;min-height:40px;background:#ffffff}.venue-info{text-align:left;border-top:1px solid #e2e0d7}.venue-info p{padding:18px 0;display:flex;gap:20px;border-bottom:1px solid #e2e0d7;font-size:11px;line-height:1.9}.venue-info b{white-space:nowrap;font-weight:500;color:var(--accent)}.venue-info span{color:#8f8b80}.closing{padding:70px 30px 55px;text-align:center}.closing h2{font-size:20px;margin-bottom:20px}.closing>p{font-size:12px;color:#878479;line-height:2.2}.closing .dark{margin:28px 0 16px;min-width:210px}.closing #share-note{font-size:9px;color:#aaa69a}footer{text-align:center;padding:28px 25px 38px;border-top:1px solid #eeece5}footer p{font-size:11px;letter-spacing:2px;color:#8c8a7c}footer code{display:block;font-size:9px;margin:12px 0;color:#aba89c}footer>span{font-family:var(--english);font-size:13px;letter-spacing:3px;color:#a3a091}footer small{display:block;margin-top:20px;font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:9px;line-height:1.7;color:#b2aea4}.garden-section{padding:65px 24px 45px;text-align:center}.garden-section h2{font-size:21px}.section-intro{font-size:12px;color:#89877d;line-height:2.1;margin-bottom:26px}.garden{position:relative;min-height:250px;background:#f1f3eb;border-radius:140px 140px 8px 8px;overflow:hidden}.garden-sun{position:absolute;right:70px;top:30px;font-size:30px;color:#d6c291}.garden-hill{position:absolute;bottom:-65px;left:-15%;width:130%;height:150px;border-radius:50%;background:#dfe7d5}.garden-hill:after{content:'';position:absolute;width:65%;height:170px;left:50%;bottom:0;background:#e8eddd;border-radius:50%}#garden-guests{position:relative;z-index:1;display:flex;gap:15px;flex-wrap:wrap;justify-content:center;padding:100px 16px 65px;max-height:380px;overflow:auto}.guest{background:transparent;border:0;display:flex;flex-direction:column;align-items:center;gap:8px;min-width:58px}.guest span:first-child{font-size:34px}.guest span:last-child{font-size:10px;background:#ffffffb3;border-radius:15px;padding:2px 8px;color:#7c826c;max-width:95px;overflow:hidden;text-overflow:ellipsis}.garden #garden-status{position:absolute;bottom:17px;width:100%;font-size:10px;color:var(--accent);padding:0 10px}.guest-form{margin-top:22px;padding:24px 18px;background:#ffffff;text-align:left}.form-top h3{font-size:15px;text-align:center;margin-bottom:20px}.avatars{display:flex;justify-content:center;gap:12px;padding:0;border:0;margin:0 0 23px}.avatars input{position:absolute;opacity:0;width:1px}.avatars span{display:grid;place-content:center;width:38px;height:38px;border:1px solid transparent;border-radius:50%;font-size:22px;cursor:pointer}.avatars input:checked+span{border-color:#9da98e;background:#e8eddf}.avatars input:focus-visible+span{outline:2px solid var(--accent)}.guest-fields{display:grid;gap:13px}label{display:flex;flex-direction:column;gap:7px;font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo',sans-serif;font-size:11px;color:#8c8b7d}input,select{border:1px solid #e0e2d6;background:#ffffff;color:#595d50;border-radius:2px;padding:11px 12px;min-height:44px;width:100%;font-size:12px}input::placeholder{color:#b2b4a6}.fine{font-family:-apple-system,BlinkMacSystemFont,sans-serif;font-size:10px;color:#aaa99b;margin-top:13px;line-height:1.8}.form-status{font-size:11px;line-height:1.8;color:var(--accent);margin-top:12px}.extras{display:flex;flex-direction:column;padding:0 24px 15px;gap:35px}.fortune{text-align:center;padding:35px 25px;background:#ffffff}.fortune-icon{display:block;color:#b5a983;font-size:29px;line-height:1.3;margin:0 0 18px}.fortune h2{font-size:20px}.fortune>p:not(.eyebrow){font-size:12px;color:#a09a86;margin:12px 0 23px}.fortune-result{border-top:1px solid #e4dece;padding-top:20px;margin-top:25px}.fortune-result h3{font-size:19px;margin-top:12px}.fortune-result p{font-size:12px;line-height:2;color:#8e8876;margin:14px 0}.fortune-result small{font-size:9px;color:#a69d89}.rsvp{text-align:center;padding:30px 15px}.rsvp h2{font-size:22px}.rsvp>p:not(.eyebrow){font-size:11px;color:#989487;margin:12px 0 26px}.rsvp form{text-align:left}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:16px}.rsvp .dark{width:100%;margin-top:22px}dialog{max-width:360px;width:90%;border:1px solid var(--line);padding:40px 28px;background:var(--paper);color:var(--ink);border-radius:5px}dialog::backdrop{background:#34372b66;backdrop-filter:blur(3px)}.close{position:absolute;right:13px;top:7px;background:transparent;border:0;font-size:26px;color:#999c8b}#message-content{text-align:center}#message-content .big-avatar{font-size:48px}#message-content p{margin:20px 0;font-size:14px;overflow-wrap:anywhere}#message-content small{font-size:10px;color:var(--muted)}#message-content button{margin-top:25px}#toast{position:fixed;left:50%;bottom:25px;transform:translateX(-50%);background:var(--accent);color:#fff;font:12px/1.7 -apple-system,sans-serif;padding:12px 20px;border-radius:5px;max-width:90%;width:max-content;z-index:20;opacity:0;pointer-events:none;transition:opacity .2s}#toast.visible{opacity:1}.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}.text-link{display:inline-block;font-size:12px;padding:10px;color:var(--accent)}
@media(max-width:380px){.hero{padding:38px 25px 0}.cover-title{font-size:50px}.cover-names{font-size:20px;gap:23px}.cover-details{font-size:11px}.invitation{padding:60px 24px}.invitation h2{font-size:19px}.parents{font-size:12px}.parents span{margin:0 8px}.date-section{padding:55px 28px}.date-display{font-size:29px}.date-display span{padding:0 8px}.location{padding:50px 23px}.garden-section{padding-left:18px;padding-right:18px}.extras{padding-left:18px;padding-right:18px}.two-fields{gap:8px}footer,main,.demo-bar{width:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Shared color and ten-photo layout */
:root{--accent-soft:color-mix(in srgb,var(--accent) 7%,white);--accent-line:color-mix(in srgb,var(--accent) 25%,white)}
[hidden]{display:none!important}.cover-photo-button{display:block;padding:0;border:0;background:white;width:100%;cursor:zoom-in}.cover-photo-button:disabled{opacity:1;cursor:default}.cover-photo img.temporary-illustration{aspect-ratio:1;object-fit:contain}.cover-photo figcaption{position:static;font-size:9px;padding-top:15px;color:var(--accent)}
.interlude{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.outline{color:var(--accent);border-color:var(--accent-line)}.dark{background:var(--accent);border-color:var(--accent)}.venue-info b,.fortune-icon,.fortune-result small{color:var(--accent)}.garden{background:var(--accent-soft)}.garden-hill{background:color-mix(in srgb,var(--accent) 20%,white)}.garden-hill:after{background:color-mix(in srgb,var(--accent) 12%,white)}.guest span:last-child{color:var(--accent)}.guest-form,.fortune{background:white;border:1px solid var(--accent-line)}.avatars input:checked+span{background:var(--accent-soft);border-color:var(--accent)}.fortune-result{border-color:var(--accent-line)}
.story-photo{padding:0 28px 45px}.photo-gallery{padding:45px 25px 65px;text-align:center}.photo-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:28px}.photo-tile{display:block;width:100%;padding:0;border:0;background:transparent;overflow:hidden;cursor:zoom-in}.photo-tile img{display:block;width:100%;height:auto}.photo-grid .photo-tile img{aspect-ratio:3/4;object-fit:cover}.story-photo img{max-height:620px;object-fit:cover}#photo-dialog{max-width:900px;width:94vw;padding:40px 12px 12px;background:#fff;border:0;border-radius:4px;max-height:94dvh}#photo-dialog>img{display:block;max-width:100%;width:auto;height:auto;max-height:73dvh;object-fit:contain;margin:auto}.photo-close{position:absolute;right:12px;top:4px;border:0;background:none;color:#444;font-size:28px}.photo-controls{display:flex;justify-content:center;align-items:center;gap:28px;padding:12px}.photo-nav{min-width:44px;min-height:44px;background:transparent;border:1px solid var(--accent-line);color:var(--accent);font-size:26px}.photo-position{font:12px sans-serif;color:#666}#photo-dialog::backdrop{background:#000b}
/* One invitation, quiet typography and compact guestbook */
body{font-family:-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;color:#34383c;background:#f5f5f5}.hero{padding:44px 26px 0}.cover-kicker{font-size:11px;letter-spacing:3px;color:var(--accent)}.cover-title{font-family:inherit;font-size:27px;font-weight:400;letter-spacing:3px;line-height:1.5;margin:18px 0 30px}.cover-title span{color:var(--accent);padding:0 8px}.cover-photo img.temporary-illustration{aspect-ratio:3/4;object-fit:contain}.cover-details{margin-top:25px;font-size:12px}.eyebrow{font-family:inherit;font-size:10px;letter-spacing:2px;color:var(--accent)}.invitation h2{font-family:var(--serif);font-size:20px}.date-section{padding:40px 30px 55px}.date-display{font-family:inherit;font-size:25px}.countdown{margin-top:18px}.countdown b{font-size:13px;letter-spacing:1px}.rsvp,.guestbook{padding:48px 28px;text-align:center}.rsvp> .dark{width:auto;margin:0;min-width:210px}.guestbook{border-top:1px solid var(--line)}.guestbook .section-intro{margin:12px 0 24px}#guestbook-status{font-size:11px;color:var(--muted);margin-bottom:18px}#guestbook-list{max-height:430px;overflow-y:auto;text-align:left;margin-bottom:24px}.guest-entry{position:relative;padding:20px 0;border-bottom:1px solid var(--line)}.guest-entry:first-child{border-top:1px solid var(--line)}.guest-entry h3{font-family:inherit;font-size:12px;font-weight:600;padding-right:45px}.guest-entry p{font-size:13px;color:#62676b;line-height:1.9;margin-top:8px;overflow-wrap:anywhere;white-space:pre-wrap}.delete-message{position:absolute;top:14px;right:0;background:none;border:0;font-size:11px;color:var(--muted);min-height:40px;padding:8px}.guestbook>.outline{min-width:210px}dialog{max-height:88dvh;overflow:auto;padding:38px 24px 28px;border-radius:12px}dialog.rsvp{padding:38px 24px 28px}dialog h2{font-size:20px;margin-bottom:24px}dialog form{text-align:left}textarea{font:inherit;resize:vertical;width:100%;min-height:110px;border:1px solid var(--line);border-radius:4px;padding:12px;color:var(--ink);background:white}input,select{border-color:var(--line);color:var(--ink)}.dark,.outline{border-radius:6px;font-size:12px}.closing{padding-top:55px}.little-flower{display:none}
/* Single-tap choices; native radios retain keyboard and screen-reader support. */
#rsvp-form .name-field{margin-bottom:22px}.choice-field{border:0;padding:0;margin:0 0 20px;min-width:0}.choice-field legend{font:12px/1.5 -apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo',sans-serif;color:#62676b;margin-bottom:10px;padding:0}.choice-options{display:flex;gap:8px}.choice{position:relative;flex:1;min-width:0;cursor:pointer}.choice input{position:absolute;opacity:0;inset:0;width:100%;height:100%;margin:0;cursor:pointer}.choice span{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--line);border-radius:6px;color:#636970;font-size:12px;transition:background .15s,border-color .15s}.choice input:checked+span{color:var(--accent);border-color:var(--accent);background:var(--accent-soft);font-weight:600}.choice input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}.count-choice .choice-options{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}#rsvp-form>.dark{margin-top:0}#rsvp-form .fine{font-size:10px}
/* Transport guide: category labels and aligned prose, without bullet markers. */
.directions-info{margin:6px 0 0;text-align:left;border-top:1px solid var(--line)}.direction-row{display:grid;grid-template-columns:86px minmax(0,1fr);gap:16px;padding:24px 0;border-bottom:1px solid var(--line)}.direction-row dt{font-size:11px;font-weight:500;color:var(--accent);line-height:1.9}.direction-row dd{margin:0;min-width:0;font-size:12px;line-height:1.9;color:#6a6e72}.direction-row strong{display:block;font-size:12px;font-weight:500;color:#42474b;word-break:keep-all}.direction-row p{margin:3px 0 0}.direction-row small{display:block;font-size:11px;color:#878c90;line-height:1.8;margin-top:3px}.transport-route+.transport-route{margin-top:20px}.direction-row .route-numbers{color:var(--accent);font-variant-numeric:tabular-nums;margin-top:1px}@media(max-width:380px){.direction-row{grid-template-columns:75px minmax(0,1fr);gap:12px}.direction-row dt{font-size:10px}}
/* Bus route badges use transport colors rather than the wedding accent. */
.bus-line{margin-top:10px;display:flex;flex-wrap:wrap;align-items:center;gap:7px 10px}.bus-kind{font-size:11px;color:#737a80;min-width:23px;line-height:1.6}.bus-badges{display:flex;flex-wrap:wrap;gap:6px}.bus-badge{display:inline-flex;align-items:center;justify-content:center;min-width:42px;min-height:27px;padding:2px 8px;border:1px solid currentColor;border-radius:5px;font-size:13px;font-weight:600;line-height:1.5;font-variant-numeric:tabular-nums;letter-spacing:.2px}.bus-trunk{color:#2459a6;background:#f0f5fd}.bus-branch{color:#247346;background:#eff8f2}
.form-actions{display:flex;gap:10px;margin-top:20px}.form-actions button{flex:1}.rsvp-note{margin:0 0 20px}.rsvp-note>span{font-size:10px;color:var(--muted)}.guest-entry h3{padding-right:85px}.guest-date{display:block;font-size:10px;color:#92979b;margin-top:3px}.guest-actions{position:absolute;top:12px;right:0;display:flex;gap:6px}.guest-actions button{border:0;background:none;color:#70787e;font-size:11px;padding:8px;min-height:40px}#manage-password-label{margin-top:18px}#delete-prompt{font-size:13px;line-height:1.8}.guest-fields textarea{font-size:13px}#manage-form .guest-fields{margin-bottom:10px}
/* Cover section: soft color today, edge-to-edge background photo when configured. */
.hero{background-color:var(--cover-background,#edf2f5);background-size:cover;background-repeat:no-repeat;padding-bottom:18px;border-bottom:1px solid var(--accent-line)}.hero .cover-photo-button{background:transparent}.hero .cover-photo-button:has(.temporary-illustration){mix-blend-mode:multiply}.hero .cover-details{color:#5c6872}.hero .cover-scroll{color:var(--accent)}.hero.has-cover-background{color:#fff}.hero.has-cover-background .cover-kicker,.hero.has-cover-background .cover-title span,.hero.has-cover-background .cover-details,.hero.has-cover-background .cover-scroll{color:#fff;text-shadow:0 1px 10px #0005}.hero.has-cover-background .cover-photo{visibility:hidden}
/* Subtle interaction feedback; content remains visible without JavaScript. */
@media(prefers-reduced-motion:no-preference){
.dark,.outline,.guest-actions button,.photo-nav,.close,.photo-close{transition:transform 150ms ease,background-color 150ms ease,border-color 150ms ease,color 150ms ease}
.dark:active:not(:disabled),.outline:active:not(:disabled),.guest-actions button:active,.photo-nav:active,.close:active,.photo-close:active{transform:scale(.97)}
.choice span{transition:background-color 150ms ease,border-color 150ms ease,color 150ms ease,transform 150ms ease}.choice:active span{transform:scale(.97)}
dialog[open]{animation:dialog-enter 320ms cubic-bezier(.22,.61,.36,1)}dialog[open]::backdrop{animation:backdrop-enter 180ms ease-out}
html.motion-ready main > section:not(.section-revealed){opacity:0}
.gently-enter{animation:gentle-enter 760ms cubic-bezier(.22,.61,.36,1) both}
.cover-scroll.arrow-visible{animation:scroll-hint 2s ease-in-out infinite}
#toast{transition:opacity 180ms ease,translate 180ms ease;translate:0 4px}#toast.visible{translate:0 0}
}
@keyframes gentle-enter{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
@keyframes dialog-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
@keyframes scroll-hint{0%,35%,100%{transform:translateY(0)}60%{transform:translateY(10px)}80%{transform:translateY(0)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}html{scroll-behavior:auto}}
/* Wedding day: countdown, simple date line, December calendar. */
.date-section .countdown{margin:0 0 14px}.date-section .countdown b{font-size:15px;letter-spacing:0;font-weight:500}.date-section .wedding-datetime{font-size:12px;color:#626c74;line-height:1.8;letter-spacing:-.3px}.wedding-calendar{width:100%;max-width:322px;margin:27px auto 0;border-collapse:collapse;table-layout:fixed;font-variant-numeric:tabular-nums}.wedding-calendar caption{font-family:var(--serif);font-size:20px;font-weight:500;color:var(--ink);padding-bottom:20px}.wedding-calendar th{font-weight:400;font-size:11px;color:#8b9297;padding:0 0 12px}.wedding-calendar td{height:44px;padding:0;text-align:center;font-size:13px;color:#525d65}.wedding-calendar .day-number{width:42px;height:42px;display:inline-flex;align-items:center;justify-content:center;position:relative}.wedding-calendar .wedding-day .day-number{color:var(--accent);font-weight:600}.calendar-heart{position:absolute;width:48px;height:46px;left:-3px;top:-2px;transform:rotate(-9deg);overflow:visible}.calendar-heart path{fill:var(--accent-soft);stroke:var(--accent);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.wedding-day .day-number>span{position:relative;z-index:1}.date-section .outline{margin-top:28px}@media(max-width:360px){.date-section{padding-left:18px;padding-right:18px}.date-section .countdown b{font-size:14px}.date-section .wedding-datetime{font-size:11px}}
.closing .closing-signature{margin-top:24px;color:var(--ink);font-size:14px;letter-spacing:1px}
/* Layered, grainy crayon strokes; keep the date outside the texture filter. */
.calendar-heart .heart-wash{fill:var(--accent-soft);stroke:none}.calendar-heart .crayon-strokes path{fill:none;stroke:var(--accent);stroke-width:4;stroke-linecap:round;stroke-linejoin:round}.calendar-heart .crayon-strokes path+path{stroke-width:2;opacity:.65}

.calendar-options{display:grid;gap:12px;margin-top:24px}.calendar-options .fine{margin:0 0 12px;line-height:1.8}

.date-section .countdown #dday{font-size:15px;letter-spacing:0;font-weight:400;color:var(--ink)}
.date-section .countdown .dday-days{display:inline-block;white-space:nowrap;font-size:1.55em;font-weight:800;color:color-mix(in srgb,var(--accent) 55%,#17232d);letter-spacing:-.04em;margin:0 .14em}

@media(max-width:360px){.date-section .countdown #dday{font-size:14px}}

/* Venue details follow the same label/content rhythm as transport rows. */
.place-row .map-actions{grid-column:2;display:flex;flex-wrap:wrap;justify-content:flex-start;gap:6px;margin:0}
.place-row dd>strong{font-weight:700;color:var(--ink)}
.place-row .map-actions .outline{min-height:28px;padding:5px 7px;font-size:10px;gap:4px;white-space:nowrap;border-color:var(--line);border-radius:5px}
.map-icon{display:inline-block;width:15px;height:15px;flex:0 0 15px}


/* RSVP stays open in the invitation, using the existing single-tap controls. */
section.rsvp #rsvp-form{margin:28px auto 0;max-width:360px;padding-top:26px;border-top:1px solid var(--line)}
section.rsvp #rsvp-form input[name="name"]{font-size:16px}
section.rsvp #rsvp-form textarea{font-size:16px}
section.rsvp #rsvp-form .fine{line-height:1.8;margin-top:16px}

.cover-title .cover-and{display:inline-block;font-size:12px;font-weight:400;letter-spacing:0;vertical-align:middle;padding:0 3px}

.closing-cats{display:block;width:140px;max-width:60%;height:auto;margin:16px auto 4px}
footer .closing-cats{width:116px;margin:0 auto 18px}

.place-row .map-actions .map-icon{width:14px;height:14px;flex-basis:14px;object-fit:contain}

#rsvp-form fieldset[hidden]{display:none!important}


/* Family introductions: keep each relationship together and align the couple's names. */
.parents{max-width:320px;padding-top:22px;margin-top:34px;line-height:1.5}.parents p{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:12px;text-align:left;padding:8px 0}.parents .parent-line{display:inline;font-size:13px;color:#666b70;margin:0;white-space:nowrap}.parents .parent-line small{display:inline;margin-left:4px;color:#808790;font-size:11px}.parents b{font-size:16px;font-weight:600;color:var(--ink);white-space:nowrap}
@media(max-width:360px){.parents .parent-line{font-size:12px}.parents .parent-line small{font-size:10px}}

/* Keep the cover, including the scroll cue, within one mobile viewport. */
.hero{display:flex;flex-direction:column;height:100svh;min-height:560px;padding-top:clamp(18px,4svh,40px);padding-bottom:clamp(10px,2svh,18px)}
.hero .cover-kicker,.hero .cover-title,.hero .cover-details,.hero .cover-scroll{flex:none}
.hero .cover-title{margin:clamp(6px,1.5svh,16px) 0 clamp(8px,2svh,20px)}
.hero .cover-photo{flex:1 1 auto;min-height:0;overflow:hidden}
.hero .cover-photo-button{height:100%}
.hero .cover-photo img{height:100%;aspect-ratio:auto;object-fit:cover}
.hero .cover-photo img.temporary-illustration{height:100%;aspect-ratio:auto;object-fit:contain}
.hero .cover-details{margin-top:clamp(8px,1.5svh,18px)}
.hero .cover-scroll{margin:clamp(3px,1svh,10px) auto 0;line-height:1.3}

/* The first swipe settles on the invitation; later sections scroll normally. */
html{scroll-snap-type:y proximity;scroll-padding-top:0}
.hero,.invitation{scroll-snap-align:start}
.hero{scroll-snap-stop:always}

/* Compact share chooser inspired by the supplied reference. */
#share-dialog{width:min(92vw,440px);max-width:none;max-height:none;padding:0;border:0;border-radius:18px;box-shadow:0 18px 60px #26303a35;overflow:hidden;color:#303b45}
#share-dialog::backdrop{background:#222a30a3}
.share-head{position:relative;text-align:center;padding:19px 50px 17px;border-bottom:1px solid #edf0f2}
.share-head h2{font:600 18px/1.4 -apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo',sans-serif;letter-spacing:-.4px}
.share-close{position:absolute;right:10px;top:8px;width:44px;height:44px;border:0;background:none;color:#303b45;font-size:29px;line-height:1}
.share-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:23px 13px 25px}
.share-options button{border:0;background:none;padding:0;display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0;color:#505d68;font:12px/1.3 -apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo',sans-serif;white-space:nowrap}
.share-icon{display:grid;place-items:center;width:clamp(52px,14vw,66px);height:clamp(52px,14vw,66px);border-radius:50%}
.share-icon svg{width:30px;height:30px}
.share-icon.kakao{background:#fee500;color:#191919}.share-icon.sms{background:#2ac451;color:white}.share-icon.neutral{background:#f1f3f5;color:#4e5861}
.share-icon.neutral circle{fill:currentColor}
.share-options button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:8px}
@media(max-width:350px){.share-options{padding-inline:7px;gap:0}.share-options button{font-size:11px}}

/* Guestbook composer opens in place below the list. */
.guest-compose{margin:26px auto 0;max-width:360px;padding:24px 20px;text-align:left;border:1px solid var(--line);border-radius:10px;background:#fff}
.guest-compose-head h3{text-align:center;font:500 17px/1.5 -apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo',sans-serif;margin:0 0 23px}
.guest-compose .guest-fields{gap:16px}
.guest-compose input,.guest-compose textarea{font-size:16px}
.guest-compose .form-actions{margin-top:24px}
.guest-compose .fine{font-size:10px;color:#81888d;margin-top:20px}

/* Venue sketch uses the full guide width so its labels stay legible. */
.place-row .venue-map{grid-column:1/-1;margin-top:2px}
.venue-map a{display:block;line-height:0;border:1px solid var(--line);border-radius:5px;overflow:hidden}
.venue-map img{display:block;width:100%;height:auto}
.venue-map a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* Quiet, initially collapsed account details. */
.gift-section{padding:58px 28px 54px;text-align:center;background:#fff}
.gift-section h2{font-family:var(--serif);font-size:21px;font-weight:400}
.gift-intro{margin:18px auto 30px;color:#777e84;font-size:12px;line-height:2}
.gift-groups{max-width:360px;margin:auto;border-top:1px solid var(--line);text-align:left}
.gift-group{border-bottom:1px solid var(--line)}
.gift-group summary{display:flex;align-items:center;justify-content:space-between;min-height:62px;padding:12px 5px;cursor:pointer;list-style:none;font-size:13px;font-weight:500;color:#48535c}
.gift-group summary::-webkit-details-marker{display:none}
.gift-chevron{width:9px;height:9px;border-right:1.5px solid var(--accent);border-bottom:1.5px solid var(--accent);transform:rotate(45deg);margin-right:8px;transition:transform .2s}
.gift-group[open] .gift-chevron{transform:rotate(225deg)}
.gift-account{padding:0 5px 24px;color:#5e6870;font-size:12px}
.gift-account>p{margin-bottom:10px}
.gift-bank{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.gift-bank strong{font-weight:500;color:#37434d;white-space:nowrap}
.account-copy{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--accent-line);border-radius:5px;background:#fff;color:var(--accent);font-size:11px;min-height:32px;padding:4px 8px}
.account-copy svg{width:15px;height:15px}
.gift-group summary:focus-visible,.account-copy:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* Keep the cover date and time together on one line. */
.hero .cover-details{white-space:nowrap;font-size:clamp(10px,2.8vw,12px);letter-spacing:-.04em}

/* Center the two family introductions as a tighter unit. */
.parents{max-width:232px}

/* Replace decorative rules with two small, water-like dividers. */
.parents{border-top:0;padding-top:0}
.parents::before,.guestbook::before{content:"";display:block;width:7px;height:7px;margin:0 auto 23px;border-radius:50%;background:var(--accent);box-shadow:-15px 0 0 -1px var(--accent),15px 0 0 -1px var(--accent);opacity:.62;animation:drop-divider 2.8s ease-in-out infinite}
.guestbook{border-top:0}
section.rsvp #rsvp-form{border-top:0;padding-top:8px}
.directions-info{border-top:0}
@keyframes drop-divider{0%,100%{transform:translateY(0) scale(.9);opacity:.5}45%{transform:translateY(-4px) scale(1.08);opacity:.85}70%{transform:translateY(1px) scale(.96);opacity:.62}}
@media(prefers-reduced-motion:reduce){.parents::before,.guestbook::before{animation:none}}

/* Keep the venue sketch centered without a visible frame. */
.venue-map a{width:100%;max-width:360px;margin:0 auto;border:0;border-radius:0}

/* Inline guestbook form without a card border. */
.guest-compose{border:0;border-radius:0;padding:20px 0 0}
.freeze-note{margin:12px auto 0;max-width:320px;color:var(--muted);font-size:12px;line-height:1.8;text-align:center}
.is-frozen section.rsvp{padding-bottom:18px}
.is-frozen .guestbook{padding-top:18px}

/* Readable copy over the already-blurred photographic cover. */
.hero.has-cover-background .cover-title{text-shadow:0 2px 12px #0009}
.hero.has-cover-background .cover-kicker,.hero.has-cover-background .cover-details,.hero.has-cover-background .cover-scroll{text-shadow:0 2px 9px #000a}

/* The photographic cover leaves its upper area open and groups all copy below. */
.hero .cover-title{margin:0 0 7px}
.hero .cover-kicker{padding:0;font-size:12px;letter-spacing:0;line-height:1.8}
.hero .cover-details{margin-top:18px}
.hero.has-cover-background .cover-kicker{color:#fff}

/* Carry the gift section's restrained serif heading across the invitation. */
.invitation h2,.location h2,.rsvp h2,.guestbook h2,.closing h2,.photo-gallery h2,.gift-section h2{font-family:var(--serif);font-size:21px;font-weight:400;letter-spacing:-.5px}

/* Static, short accent marks in place of loading-like dots. */
.parents::before,.guestbook::before{width:24px;height:2px;border-radius:2px;box-shadow:none;opacity:.5;animation:none}

/* Muted weekend colors in the December calendar. */
.wedding-calendar th:first-child,.wedding-calendar td:first-child{color:#A77875}
.wedding-calendar th:last-child,.wedding-calendar td:last-child,.wedding-calendar .wedding-day .day-number{color:#6F8BA0}

/* Give the cover a quiet invitation-card hierarchy. */
.hero .cover-title{font-family:var(--serif);font-size:clamp(23px,6.6vw,30px);font-weight:400;letter-spacing:-.055em;line-height:1.5}
.hero .cover-title .cover-and{font-family:inherit;font-size:.45em;letter-spacing:0;vertical-align:middle;padding:0 .45em}
.hero .cover-kicker{font-family:'Nanum Pen Script',var(--serif);font-size:clamp(21px,5.8vw,27px);line-height:1.12;letter-spacing:0;color:#536a7c}
.hero .cover-details{font-family:var(--serif);font-size:clamp(10px,2.8vw,12px);letter-spacing:-.065em}

/* Size the cover around the full image instead of stretching its image slot. */
.hero{height:auto;min-height:0;max-height:none}
.hero .cover-photo{flex:none;min-height:0;overflow:visible}
.hero .cover-photo-button{height:auto}
.hero .cover-photo img,.hero .cover-photo img.temporary-illustration{display:block;width:auto;max-width:100%;height:auto;max-height:min(480px,calc(100svh - 210px));aspect-ratio:auto;object-fit:contain;margin-inline:auto}

/* Show the venue sketch directly beneath the location heading as a static image. */
.location>.venue-map{width:100%;max-width:360px;margin:0 auto 28px;line-height:0}
.location>.venue-map img{width:100%;height:auto;border:0}
