@font-face{font-family:WeddingScript;src:url('wedding-script-v20.woff') format('woff');font-weight:400;font-style:normal;font-display:swap}
/* Keep the photo and its separate garden layers in the same, undistorted frame. */
.cover-art{height:100vh;height:100svh;min-height:480px}
.hero-photo,.garden-scene img{width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.cover-letter{top:7%;left:4%;right:4%}
.cover-letter-title{font:400 clamp(3.1rem,13vw,4.6rem)/1.15 WeddingScript,cursive;letter-spacing:0;text-transform:none}
.cover-letter-names{margin-top:10px;font-size:clamp(.95rem,3.8vw,1.16rem)}
.intro-enabled .music-toggle{visibility:hidden;pointer-events:none}
.profile-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;align-items:start;margin-top:32px}
.profiles{padding-left:22px;padding-right:22px}
.profile-photo{width:100%;max-width:150px;aspect-ratio:1;border-radius:50%}
.profile-photo img{width:240%}
.groom-photo img{left:-120%;top:-36%}.bride-photo img{left:-45%;top:-59%}
.profile-copy{padding-top:20px}.profile-copy h3{font-size:1.08rem;white-space:nowrap}
.profile-copy h3 span{display:block;margin:0 0 6px;font-size:.74rem;letter-spacing:.06em}
.profile-tags{font-size:.71rem;line-height:1.85;margin-top:12px;word-break:keep-all}
.profile-tags span{display:inline-block;white-space:nowrap}
.profile-story{margin-top:16px;font-size:.79rem;line-height:1.9;letter-spacing:-.035em;word-break:keep-all}
.profile-story br{display:block;content:"";margin-top:8px}
.wedding-album{margin-top:28px}.album-track{position:relative;display:grid;grid-auto-flow:column;grid-auto-columns:100%;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;border-radius:4px;outline-offset:4px}
.album-track::-webkit-scrollbar{display:none}.album-slide{scroll-snap-align:start;scroll-snap-stop:always;margin:0;min-width:0;background:#ece9e2}
.album-slide img{display:block;width:100%;height:auto;aspect-ratio:2/3;object-fit:contain}
.album-controls{display:flex;align-items:center;justify-content:center;gap:23px;margin-top:17px}.album-controls button{width:44px;height:44px;background:none;border:1px solid #d9d2c8;border-radius:50%;color:#645c54;font-size:1.1rem}.album-controls button:disabled{opacity:.3;cursor:default}
#album-counter{min-width:61px;font-size:.83rem;color:#4e5745;letter-spacing:.1em;font-variant-numeric:tabular-nums}#album-counter span{color:#a19c94}
.album-hint{font-size:.75rem;color:#8b847c;margin-top:12px}.album-thumbnails{display:flex;justify-content:center;gap:10px;margin-top:19px}.album-thumbnails button{display:block;padding:3px;background:none;border:1px solid transparent;border-radius:3px;opacity:.55}.album-thumbnails button[aria-current=true]{border-color:#738269;opacity:1}.album-thumbnails img{display:block;width:43px;height:56px;object-fit:cover;border-radius:1px}
.location{padding-left:24px;padding-right:24px}.venue-map{display:block;margin:26px 0 0;border:1px solid #e1ded3;border-radius:5px;overflow:hidden;background:white}.venue-map img{display:block;width:100%;height:auto}.map-caption{font-size:.72rem;color:#8a857a;margin-top:9px}
.map-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:22px}.map-links a{min-width:0;min-height:74px;flex-direction:column;gap:8px;padding:10px 0;border:0;background:#f3f2ec;border-radius:7px;font-size:.71rem}.map-links a:hover{background:#eaece1;color:var(--ink);transform:none}.map-icon{display:grid;place-items:center;width:29px;height:29px;border-radius:8px;font-size:1rem;font-weight:600;line-height:1}.naver-icon{background:#03c75a;color:white}.kakao-icon{background:#fee500;color:#29230b}.google-icon{background:white;color:#4285f4;border:1px solid #e3e3de}.tmap-icon{background:#ee4d93;color:white}
.transport-list{margin-top:30px;text-align:left;border-top:1px solid var(--line)}.transport-item{padding:22px 0;border-bottom:1px solid var(--line)}.transport-item h3{font-size:.9rem;font-weight:500;margin:0 0 9px;color:#485440}.transport-item p{font-size:.82rem;line-height:1.85;color:#716b62;word-break:keep-all}.transport-item p+p{margin-top:8px}.transport-item strong{font-weight:500;color:#514e45}
.gift-message{font-size:.875rem;line-height:1.95;letter-spacing:-.03em}.closing-script{font:400 3.5rem/1.1 WeddingScript,cursive;letter-spacing:0}.closing-names{letter-spacing:.05em}
@media(max-width:360px){.profiles{padding-left:18px;padding-right:18px}.profile-list{gap:16px}.profile-photo{max-width:125px}.profile-story{font-size:.75rem}.profile-copy h3{font-size:1rem}.profile-tags{font-size:.68rem}.cover-letter-title{font-size:2.9rem}.location{padding-left:20px;padding-right:20px}.map-links{gap:6px}.map-links a{font-size:.68rem}.gift-message{font-size:.81rem}}
@media(min-width:600px){body{padding-top:0}.cover-art{min-height:650px}.profile-story{font-size:.875rem}.profile-tags{font-size:.8rem}}
@media(prefers-reduced-motion:reduce){.album-track{scroll-behavior:auto}}
.album-thumbnails{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px}
.album-thumbnails button{min-width:0;min-height:44px}
.album-thumbnails img{width:100%;height:auto;aspect-ratio:2/3;object-fit:contain;background:#ece9e2}
@media(max-width:360px){.album-thumbnails{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}}
