:root{color-scheme:light;--paper:#fbf9f5;--ink:#302d2e;--accent:#782f3e;--muted:#716b68;--line:#ded7cf;--serif:"Noto Serif KR",Batang,serif;--sans:"Noto Sans KR","Malgun Gothic",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:#27262b;color:var(--ink);font:1rem var(--serif);-webkit-font-smoothing:antialiased}p,h1,h2,figure{margin:0}a{color:inherit;-webkit-tap-highlight-color:#782f3e18}button{font:inherit;cursor:pointer}a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}[hidden]{display:none!important}
.invitation{width:min(100%,520px);margin:0 auto;background:var(--paper);overflow:clip;box-shadow:0 20px 100px #0002}.cover{text-align:center}.cover-art{position:relative;overflow:hidden;background:#252429}.hero-photo{display:block;width:100%;height:auto;transform-origin:50% 40%}.cover-title{position:absolute;top:3%;left:20px;right:20px;color:#f8f5ef;font:italic clamp(1.65rem,9vw,3.3rem)/1.2 Georgia,serif;letter-spacing:-.045em;pointer-events:none}.cover-edition{position:absolute;left:5%;top:29%;writing-mode:vertical-rl;transform:rotate(180deg);color:#e9e4df;font:.75rem/1.5 var(--sans);letter-spacing:.22em;pointer-events:none}.motion-toggle{position:absolute;right:14px;bottom:14px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 12px;border:1px solid #ffffff45;border-radius:24px;background:#1a191bd9;color:#fff;font:.875rem/1.6 var(--sans)}.motion-toggle:focus-visible{outline-color:white}.motion-state{color:#dfd3c8}
.cover-card{position:relative;padding:40px 28px 31px}.eyebrow{color:var(--accent);font:.75rem/1.9 var(--sans);letter-spacing:.2em}h1{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:0 19px;margin-top:20px;font-weight:500;font-size:clamp(1.65rem,6.5vw,2rem);line-height:1.8;letter-spacing:.11em}h1>span{white-space:nowrap}.ampersand{color:var(--accent);font:italic 1.3rem Georgia,serif;letter-spacing:0}.cover-caption{margin-top:8px;color:var(--muted);font-size:.875rem;letter-spacing:.18em}.cover-details{margin-top:29px;font-size:1rem;line-height:1.95}.cover-venue{margin-top:8px}.quiet-link{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:44px;margin-top:25px;text-decoration:none;color:var(--muted);font:.875rem/1.7 var(--sans)}.quiet-link span{display:inline-block;color:var(--accent)}
.section{text-align:center;padding:76px 34px}.section h2{margin-top:22px;font-weight:500;font-size:1.4rem;line-height:1.95;letter-spacing:-.025em;word-break:keep-all;text-wrap:balance}.letter{position:relative;margin:8px 22px 30px;padding:60px 20px 65px;border:1px solid var(--line);background:#fffdf9}.letter::before{content:"";position:absolute;top:-1px;left:50%;width:48px;height:2px;background:var(--accent);transform:translateX(-50%)}.letter-body{margin-top:34px;font-size:1rem;line-height:2.3;word-break:keep-all}.letter-body p+p{margin-top:25px}.signature{margin-top:36px;font-size:1rem;letter-spacing:.035em}.signature span{padding:0 8px;color:var(--accent)}.ceremony{padding-top:64px;background:#f1ebe5}.date-display{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:38px;color:var(--accent);font:clamp(2.5rem,18vw,4.8rem)/1 Georgia,serif;letter-spacing:-.08em}.date-display i{font-weight:400;font-size:.65em;color:#b99796}.ceremony h2{font-size:1.2rem;margin-top:25px}.event-time{font-size:1rem;line-height:2;margin-top:20px}.event-time strong{font-weight:500}
.calendar{table-layout:fixed;width:100%;margin-top:30px;border-collapse:collapse;font-family:var(--sans)}.calendar caption{padding:26px 0 23px;border-top:1px solid #d9ccc3;font:1rem/1.6 Georgia,serif;letter-spacing:.15em}.calendar caption span{margin-left:8px;font-size:.875rem;color:var(--muted)}.calendar th{padding-bottom:16px;color:var(--muted);font-size:.875rem;font-weight:400}.calendar td{height:2.9rem;font-size:1rem;text-align:center}.calendar td:first-child,.calendar th:first-child{color:var(--accent)}.wedding-date{display:inline-flex;align-items:center;justify-content:center;width:min(2.35rem,100%);height:2.35rem;border-radius:50%;color:#fff;background:var(--accent)}
.location{padding-top:74px}.venue-name{margin-top:32px;font-size:1.18rem;font-weight:500;line-height:1.8;word-break:keep-all}.venue-address{margin-top:13px;color:var(--muted);font:1rem/1.95 var(--sans)}.map-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:27px}.map-links a{display:flex;flex:1 8rem;align-items:center;justify-content:center;gap:10px;min-height:50px;padding:8px;border:1px solid #c9b8b7;border-radius:2px;text-decoration:none;font:.875rem/1.6 var(--sans);white-space:nowrap;transition:color .2s,background .2s,transform .2s}.map-links a:hover{background:var(--accent);color:white;transform:translateY(-2px)}.map-links a:active{transform:translateY(0)}.venue-guide{display:inline-flex;align-items:center;min-height:44px;margin-top:13px;color:var(--muted);font:.875rem/1.7 var(--sans);text-underline-offset:5px}
.closing{position:relative;padding:58px 25px 52px;text-align:center;color:#fbf4ee;background:#622936}.closing-script{margin-bottom:23px;color:#eee0d4;font:italic 3.25rem/1.3 Georgia,serif;letter-spacing:-.04em}.closing>p:not([class]){font-size:1rem;line-height:2.1}.closing-names{margin-top:31px;font-size:1.25rem;letter-spacing:.13em}.closing-names span{margin:0 10px;color:#e2c6bd;font:italic 1rem Georgia,serif}.closing .eyebrow{margin-top:24px;color:#e3ccc6;font-size:.75rem;letter-spacing:.15em}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;z-index:10;top:10px;left:50%;transform:translate(-50%,-180%);background:var(--ink);color:white;padding:12px;font-family:var(--sans)}.skip-link:focus{transform:translate(-50%,0)}html[data-motion="off"]{scroll-behavior:auto}html[data-motion="off"] *{transition:none!important}
@media(min-width:600px){body{padding:32px 0}.section{padding-left:45px;padding-right:45px}.letter{margin-left:28px;margin-right:28px;padding-left:26px;padding-right:26px}.cover-card{padding-top:46px}}
@media(max-width:360px){.cover-card{padding-left:19px;padding-right:19px}h1{gap:0 12px;letter-spacing:.05em}.section{padding-left:22px;padding-right:22px}.letter{margin-left:15px;margin-right:15px;padding-left:14px;padding-right:14px}.map-links{flex-direction:column}.map-links a{flex-basis:auto}.date-display{gap:15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
.layout-notice{display:flex;flex-wrap:wrap;justify-content:center;gap:3px 10px;padding:11px 16px;background:#f0e8e1;color:#6e4047;text-align:center;font:.875rem/1.65 var(--sans)}.layout-notice span{color:#706966;font-size:.75rem}.cover-photo-label{position:absolute;left:16px;bottom:24px;color:#fff;font:.75rem/1.6 var(--sans);letter-spacing:.08em;padding:4px 8px;background:#252429b3}.cover-art .motion-toggle{font-size:.875rem;padding-left:10px;padding-right:10px}
.photo-story{padding-top:36px;padding-bottom:48px;text-align:center}.story-caption{padding:0 25px 29px}.story-caption h2{font-size:1.3rem;font-weight:500;line-height:1.9;margin-top:15px}.story-note{margin-top:25px;color:var(--muted);font-size:.875rem;line-height:1.9;letter-spacing:.04em}
.photo-slot{position:relative;display:flex;align-items:center;justify-content:center;isolation:isolate;overflow:hidden;min-width:0;min-height:min-content;background:linear-gradient(135deg,#eae4dc,#d5cdc4);color:#6c5d59}.photo-slot::before{content:"";position:absolute;inset:12px;border:1px solid #ffffff8c;z-index:-1}.slot-label{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:10px;width:100%;padding:24px 12px}.slot-number{font:italic 3.5rem/1 Georgia,serif;color:#8b7672}.slot-label strong{font-family:var(--serif);font-size:1rem;font-weight:500;line-height:1.65;word-break:keep-all}.slot-label>span:last-child{font:.75rem/1.6 var(--sans);color:#6d6661;word-break:keep-all}.story-slot{aspect-ratio:4/3;background:linear-gradient(150deg,#d2c6bf,#eae2db)}.story-slot::before{inset:20px}.story-slot .slot-number{font-size:4.8rem}
.gallery{padding-top:67px;padding-bottom:59px;background:#fffdf9}.gallery-intro{margin:17px 0 32px;font-size:.875rem;line-height:1.9;color:var(--muted)}.photo-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.portrait-slot{aspect-ratio:3/4}.arch-slot{border-radius:48% 48% 0 0;background:linear-gradient(145deg,#e6d8d6,#d4bebe)}.arch-slot::before{border-radius:48% 48% 0 0}.photo-grid .slot-number{font-size:2.75rem}.photo-grid .slot-label{gap:8px;padding:28px 12px}.photo-grid .slot-label strong{font-size:.875rem}.wide-slot{grid-column:1/-1;aspect-ratio:3/2;background:linear-gradient(145deg,#d3d4ce,#e5e3da)}.square-slot{aspect-ratio:1}.square-slot[data-photo-slot="06"]{background:linear-gradient(145deg,#e7dfd2,#d6c7b2)}.square-slot[data-photo-slot="07"]{background:linear-gradient(145deg,#e6d4d4,#d8bcbc)}.final-gallery-slot{aspect-ratio:2/1;background:linear-gradient(145deg,#c7c9c7,#e0dfd8)}.gallery-afterword{margin-top:33px;font-size:1rem;line-height:2.1;color:var(--muted)}.gallery+.location{border-top:1px solid var(--line)}.ending-slot{aspect-ratio:4/3;background:linear-gradient(145deg,#635c60,#8a7478);color:#fff6ef}.ending-slot::before{border-color:#ffffff40;inset:20px}.ending-slot .slot-number{color:#d3b8b7;font-size:4.8rem}.ending-slot .slot-label>span:last-child{color:#f0e3e0}
@media(max-width:360px){.photo-grid{gap:9px}.photo-grid .slot-number{font-size:2.25rem}.photo-grid .slot-label{padding:22px 8px;gap:7px}.photo-slot::before{inset:8px}.cover-photo-label{left:10px;padding:4px 6px}.cover-art .motion-toggle{right:10px}.gallery{padding-left:17px;padding-right:17px}.gallery .square-slot{aspect-ratio:4/5}}
