@font-face{font-family:Iropke Batang;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IropkeBatangM.woff)format("woff")}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fff;--ink:#243332;--muted:#63716f;--line:#d7e0de;--sage:#82cbc4;--gold:#4f9f99;--rose:#b96f69}*{box-sizing:border-box}html{background:var(--paper);min-height:100%}body{background:var(--paper);min-height:100%;color:var(--ink);margin:0;font-family:Iropke Batang,Apple SD Gothic Neo,Noto Serif KR,serif}button,input,textarea,select{font:inherit}button{cursor:pointer}.page-shell{background:var(--paper);width:min(100%,720px);min-height:100svh;margin:0 auto}.invitation{background:var(--paper);width:min(100%,720px);min-height:100svh;margin:0 auto;overflow:hidden;box-shadow:0 0 40px #2433321a}.invitation-loading{background:var(--paper);width:min(100%,720px);min-height:100svh;color:var(--muted);text-align:center;place-items:center;margin:0 auto;padding:28px;display:grid}.invitation-loading__bar{background:#82cbc42e;border-radius:999px;width:min(48vw,180px);height:3px;position:relative;overflow:hidden}.invitation-loading__bar:after{border-radius:inherit;background:var(--sage);content:"";width:42%;animation:1.05s ease-in-out infinite invitation-loading-bar;position:absolute;inset:0 auto 0 0}@keyframes invitation-loading-bar{0%{transform:translate(-110%)}to{transform:translate(250%)}}.hero{min-height:100svh;color:var(--paper);background-position:50%;background-size:cover;align-items:end;padding:48px 28px;display:grid;position:relative;overflow:hidden}.hero:before{content:"";background:linear-gradient(#24333214 0%,#24333247 52%,#243332bd 100%);position:absolute;inset:0}.hero__overlay{z-index:1;text-align:center;gap:12px;display:grid;position:relative}.hero h1{overflow-wrap:anywhere;margin:0;font-size:clamp(2.75rem,12vw,4.75rem);font-weight:300;line-height:1.05}.hero p{margin:0}.section{border-top:1px solid var(--line);text-align:center;padding:72px 28px}.reveal-on-scroll{opacity:0;will-change:opacity, transform;transition:opacity .7s,transform .7s;transform:translateY(28px)}.reveal-on-scroll.is-visible{opacity:1;transform:translateY(0)}.section h2{margin:0 0 18px;font-size:1.55rem;font-weight:500;line-height:1.35}.eyebrow{color:var(--gold);letter-spacing:.18em;margin:0 0 14px;font-size:.72rem;font-weight:700}.body-copy{max-width:34rem;color:var(--muted);word-break:keep-all;margin:0 auto 14px;font-size:1rem;line-height:1.9}.invitation-greeting{white-space:pre-line;font-size:.8rem}.family-lines{width:fit-content;max-width:100%;color:var(--ink);grid-template-columns:max-content minmax(3.5rem,max-content);justify-content:center;align-items:baseline;gap:10px 32px;margin:28px auto 0;font-size:1.08rem;line-height:1.5;display:grid}.family-lines__phrase{white-space:nowrap;align-items:baseline;gap:8px;display:inline-flex}.family-lines__parents{word-break:keep-all}.family-lines__relation{white-space:nowrap}.family-lines strong{text-align:left;white-space:nowrap;font-size:1.18rem;font-weight:800}.button-row{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:28px;display:flex}.button{border:1px solid var(--sage);background:var(--sage);min-height:44px;color:var(--ink);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:0 18px;font-weight:700;text-decoration:none;display:inline-flex}.button--ghost{color:var(--ink);background:0 0}.button--wide{width:100%;max-width:320px;margin-top:18px}.button--danger{border-color:var(--rose);background:var(--rose);color:#fff}.button:disabled,.button[aria-disabled=true]{color:#8a9492;cursor:not-allowed;background:#e7ebea;border-color:#d7dddc}.note-list{color:var(--muted);gap:8px;margin:18px 0 0;padding:0;line-height:1.7;list-style:none;display:grid}.venue-map{aspect-ratio:16/11;border:1px solid var(--line);background:#e4ecea;border-radius:8px;width:min(100%,520px);margin:26px auto 0;position:relative;overflow:hidden;box-shadow:0 18px 32px #2433321a}.venue-map__canvas{width:100%;height:100%}.venue-map__state,.venue-map__fallback{background:var(--paper);color:var(--muted);text-align:center;place-items:center;padding:18px;line-height:1.7;display:grid;position:absolute;inset:0}.venue-map__fallback{align-content:center;gap:12px}.venue-map__fallback p{margin:0}.venue-map__fallback a{color:var(--sage);text-underline-offset:3px;font-weight:700;text-decoration:underline}.venue-map-info{color:var(--ink);text-align:center;white-space:nowrap;gap:3px;padding:8px 10px;font-family:Iropke Batang,Apple SD Gothic Neo,Noto Serif KR,serif;line-height:1.45;display:grid}.venue-map-info strong,.venue-map-info span{display:block}.venue-map-info span{color:var(--muted);font-size:.86rem}.navigation-links{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;width:min(100%,520px);margin:14px auto 0;display:grid}.navigation-link{appearance:none;border:1px solid var(--line);min-height:40px;color:var(--ink);white-space:nowrap;background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:.82rem;font-weight:700;text-decoration:none;display:inline-flex}.navigation-link__icon{object-fit:contain;flex:0 0 20px;width:20px;height:20px}.directions-list{border-top:1px solid var(--line);text-align:left;width:min(100%,520px);margin:28px auto 0;display:grid}.directions-item{border-bottom:1px solid var(--line);gap:4px;padding:18px 0;display:grid}.directions-item h3{color:var(--gold);margin:0 0 4px;font-size:.95rem;font-weight:800;line-height:1.4}.directions-item p{color:var(--muted);word-break:keep-all;margin:0;font-size:.8rem;line-height:1.7}.direction-copy-line{align-items:center;gap:5px;display:inline-flex}.location-scroll-cue-sentinel{width:1px;height:1px;margin:0 auto;display:block;overflow:hidden}.location-scroll-cue{left:50%;bottom:max(18px, env(safe-area-inset-bottom));z-index:20;color:#fff;text-align:center;pointer-events:none;background:#24333299;border:1px solid #ffffff2e;border-radius:8px;width:min(100% - 36px,360px);min-height:58px;padding:10px 16px 8px;font-size:.86rem;font-weight:800;line-height:1.4;animation:.2s forwards location-scroll-cue-fade-in;display:grid;position:fixed;transform:translate(-50%);box-shadow:0 14px 32px #24333238}.location-scroll-cue__content{justify-items:center;gap:3px;min-width:0;animation:1.1s ease-in-out .2s infinite location-scroll-cue-bounce;display:grid}.location-scroll-cue span{word-break:keep-all;min-width:0}.location-scroll-cue__icon{flex:0 0 18px;width:18px;height:18px}.location-scroll-cue--fade-out{animation:.2s forwards location-scroll-cue-fade-out}@keyframes location-scroll-cue-fade-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes location-scroll-cue-fade-out{0%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,8px)}}@keyframes location-scroll-cue-bounce{0%,to{transform:translateY(0)}30%{transform:translateY(-5px)}55%{transform:translateY(2px)}74%{transform:translateY(-2px)}}.wedding-schedule{justify-items:center;display:grid}.wedding-calendar{gap:12px;width:min(100%,360px);margin-top:26px;display:grid}.wedding-calendar__weekdays,.wedding-calendar__grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;display:grid}.wedding-calendar__weekdays span{color:var(--gold);font-size:.78rem;font-weight:800}.wedding-calendar__day{min-height:38px;color:var(--muted);border-radius:8px;place-items:center;font-size:.94rem;display:grid}.wedding-calendar__day--wedding{background:var(--sage);color:var(--ink);font-weight:800;box-shadow:0 10px 24px #82cbc442}.countdown{grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;align-items:center;gap:8px;width:min(100%,380px);margin-top:34px;display:grid}.countdown__unit{justify-items:center;gap:6px;min-width:0;display:grid}.countdown__unit strong{color:var(--ink);font-variant-numeric:tabular-nums;font-size:clamp(1.4rem,8vw,2.4rem);font-weight:300;line-height:1}.countdown__unit small{color:var(--gold);letter-spacing:.12em;font-size:.66rem;font-weight:800}.countdown__divider{color:var(--line);align-self:start;padding-top:.22rem;font-size:clamp(1.2rem,6vw,2rem);font-weight:300}.wedding-schedule__message{margin-top:24px}.gallery-carousel{width:100%;position:relative}.gallery-carousel__track{scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch;grid-auto-columns:minmax(220px,72%);grid-auto-flow:column;gap:12px;padding:0 44px 10px;scroll-padding:44px;display:grid;overflow-x:auto}.gallery-carousel__track::-webkit-scrollbar{display:none}.gallery-slide{scroll-snap-align:center;background:#e4ecea;border:0;border-radius:8px;width:100%;padding:0;overflow:hidden}.gallery-slide img{aspect-ratio:3/4;object-fit:cover;width:100%;display:block}.gallery-carousel__nav{z-index:2;color:#fff;background:#243332ad;border:1px solid #ffffffb8;border-radius:999px;place-items:center;width:38px;height:38px;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.gallery-carousel__nav--prev{left:0}.gallery-carousel__nav--next{right:0}.gallery-viewer{z-index:30;background:#141514db;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0;overflow:hidden}.gallery-viewer__backdrop{background:0 0;border:0;position:absolute;inset:0}.gallery-viewer__content{z-index:1;border-radius:8px;place-items:center;width:min(100%,560px);height:min-content;max-height:calc(100dvh - 48px);display:grid;position:relative;overflow:hidden}.gallery-viewer__content img{border-radius:inherit;object-fit:contain;max-width:100%;max-height:calc(100dvh - 48px);display:block;box-shadow:0 22px 54px #00000047}.gallery-viewer__close,.gallery-viewer__nav{color:#fff;background:#141514b3;border:1px solid #ffffff47;border-radius:999px;place-items:center;width:42px;height:42px;display:grid;position:absolute}.gallery-viewer__close{top:12px;right:12px}.gallery-viewer__nav{top:50%;transform:translateY(-50%)}.gallery-viewer__nav--prev{left:10px}.gallery-viewer__nav--next{right:10px}.account-list{gap:10px;display:grid}.account-row{border:1px solid var(--line);background:#fff;border-radius:8px;padding:14px 12px}.account-row>div{text-align:center;justify-items:center;gap:4px;min-width:0;display:grid}.account-row strong,.account-row p{margin:0}.account-row p{color:var(--muted);font-size:.9rem;line-height:1.45}.account-entry-list{justify-items:center;gap:5px;display:grid}.account-value{justify-content:center;align-items:center;gap:5px;max-width:100%;display:flex}.account-value span{scrollbar-width:none;white-space:nowrap;min-width:0;overflow:auto hidden}.account-value span::-webkit-scrollbar{display:none}.account-copy-button{width:20px;height:20px;color:var(--ink);background:0 0;border:0;flex:0 0 20px;place-items:center;padding:0;line-height:1;display:inline-grid}.copy-control{flex:none;align-items:center;gap:3px;display:inline-flex}.copy-success-icon{color:var(--gold);opacity:1;transition:opacity .35s}.copy-success-icon--fade-out{opacity:0}.gift-note{white-space:pre-line;margin-top:18px;font-size:.92rem}.game-section{gap:18px;display:grid}.game-section .body-copy{text-align:center;margin:0 auto 4px}.game-canvas-wrap{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:min(100%,512px);margin:0 auto;position:relative}.game-canvas-wrap *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.game-tap-target{aspect-ratio:320/420;border:1px solid var(--line);touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;background:#fff;border-radius:8px;width:100%;display:block;position:relative;overflow:hidden;box-shadow:0 18px 32px #2433321a}.game-tap-target canvas{-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;height:100%;display:block}.game-play-target{appearance:none;color:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:0 0;border:0;padding:0;display:block;position:absolute;inset:0}.game-play-target:disabled{cursor:default}.game-play-target--ready span{color:#fff;background:#243332b8;border-radius:8px;place-items:center;min-height:42px;font-weight:800;display:grid;position:absolute;inset:auto 16px 18px}.game-ready-panel{background:linear-gradient(#f2f2f24d,#24333275);align-content:center;justify-items:center;padding:18px;display:grid;position:absolute;inset:0}.team-start-panel{text-align:center;background:#ffffffe0;border-radius:8px;gap:12px;width:min(100%,320px);padding:16px;display:grid;box-shadow:0 16px 34px #2433322e}.team-start-panel p{color:var(--ink);margin:0;font-weight:800;line-height:1.45}.team-start-panel__buttons{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.team-start-panel__buttons button{border:1px solid var(--sage);background:var(--sage);min-height:44px;color:var(--ink);border-radius:8px;font-weight:800}.game-over-panel{color:var(--ink);text-align:center;pointer-events:none;background:linear-gradient(#f2f2f247,#2433327a);align-content:center;justify-items:center;padding:20px;display:grid;position:absolute;inset:0;overflow-y:auto}.game-over-card{-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);pointer-events:auto;background:#ffffffc2;border:1px solid #ffffffc2;border-radius:8px;gap:12px;width:min(100%,332px);padding:18px;display:grid;box-shadow:0 18px 38px #24333233}.game-over-card__headline{justify-items:center;gap:7px;display:grid}.game-over-panel__title,.game-over-panel__guide{color:var(--ink);margin:0;font-weight:800;line-height:1.45}.game-over-panel__title{font-size:1.08rem}.game-over-panel__guide{color:var(--muted);font-size:.92rem}.game-over-panel__guide p{margin:0}.game-restart-button{border:1px solid var(--line);width:100%;min-height:44px;color:var(--ink);background:#ffffffc7;border-radius:8px;padding:0 14px;font-weight:800}.score-form{border:1px solid var(--line);background:#fff;border-radius:8px;justify-self:center;gap:12px;width:min(100%,420px);padding:16px;display:grid}.score-form--in-game{width:100%;color:var(--ink);box-shadow:none;background:0 0;border:0;gap:10px;padding:0}.score-form label{color:var(--ink);text-align:center;gap:6px;font-size:.92rem;font-weight:700;display:grid}.score-form input,.score-form textarea{border:1px solid var(--line);width:100%;color:var(--ink);background:#ffffffb8;border-radius:8px;padding:11px 12px;line-height:1.5}.score-form textarea{resize:vertical}.score-form--in-game textarea{resize:none;min-height:58px}.score-form--in-game .button{margin-top:12px}.form-message{color:var(--muted);word-break:keep-all;opacity:1;margin:0;line-height:1.7;transition:opacity .35s}.form-message--fade-out{opacity:0}.leaderboard{grid-template-columns:repeat(2,minmax(0,1fr));justify-self:center;gap:12px;width:min(100%,680px);margin-top:4px;display:grid}.leaderboard .form-message{grid-column:1/-1}.leaderboard-card{border:1px solid var(--line);text-align:center;background:#fff;border-radius:8px;min-width:0;padding:16px}.leaderboard-card--wide{grid-column:1/-1}.leaderboard-card h3{margin:0 0 12px;font-size:1rem;line-height:1.35}.leaderboard-empty{color:var(--muted);margin:0;line-height:1.6}.ranking-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.ranking-list li{text-align:left;grid-template-columns:44px minmax(0,1fr);align-items:start;gap:10px;display:grid}.ranking-list__rank{min-height:32px;color:var(--gold);background:#e4ecea;border-radius:8px;place-items:center;font-weight:800;display:grid}.ranking-list strong,.ranking-list small{display:block}.ranking-list strong{overflow-wrap:anywhere}.ranking-list small{color:var(--muted);overflow-wrap:anywhere;margin-top:2px;line-height:1.45}.ranking-list__toggle{color:var(--gold);background:0 0;border:0;justify-self:center;margin-top:12px;padding:5px 10px;font-size:.82rem;font-weight:800;line-height:1.4}.recent-message-list{gap:12px;margin:0;padding:0;list-style:none;display:grid}.recent-message-list li{border-top:1px solid var(--line);gap:6px;padding-top:12px;display:grid}.recent-message-list li:first-child{border-top:0;padding-top:0}.recent-message-list__meta{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;display:flex}.recent-message-list__meta strong,.recent-message-list p{overflow-wrap:anywhere}.recent-message-list__meta span{color:var(--gold);font-size:.82rem;font-weight:800}.recent-message-list p{color:var(--muted);margin:0;line-height:1.55}.recent-message-list__more{color:var(--gold);background:0 0;border:0;justify-self:center;margin-top:12px;padding:5px 10px;font-size:.82rem;font-weight:800;line-height:1.4}.recent-message-list__more:disabled{color:var(--muted)}.admin-page{align-items:start;padding:56px 22px;display:grid}.admin-card{border:1px solid var(--line);background:#fff;border-radius:8px;gap:16px;width:min(100%,560px);margin:0 auto;padding:20px;display:grid}.admin-card h1{margin:0;font-size:1.45rem;font-weight:600;line-height:1.35}.admin-card label{color:var(--ink);gap:6px;font-size:.92rem;font-weight:700;display:grid}.admin-card input{border:1px solid var(--line);background:var(--paper);width:100%;color:var(--ink);border-radius:8px;padding:11px 12px;line-height:1.5}.admin-list{gap:10px;display:grid}.admin-row{border:1px solid var(--line);background:var(--paper);border-radius:8px;justify-content:space-between;align-items:center;gap:14px;padding:14px;display:flex}.admin-row__actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.admin-row>div{gap:4px;min-width:0;display:grid}.admin-row p{overflow-wrap:anywhere;margin:0;line-height:1.55}.admin-row p:first-of-type{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.admin-row p:first-of-type span{color:var(--rose);font-weight:800}.admin-row small{color:var(--muted);overflow-wrap:anywhere;line-height:1.45}@media (max-width:520px){.hero{min-height:92svh;padding:42px 22px}.section{padding:58px 22px}.family-lines{column-gap:22px;font-size:.98rem}.family-lines__phrase{gap:6px}.family-lines strong{font-size:1.08rem}.gallery-carousel__track{grid-auto-columns:82%;padding-inline:34px;scroll-padding-inline:34px}.leaderboard{grid-template-columns:1fr}.admin-page{padding:32px 14px}.admin-card{padding:16px}.admin-row{flex-direction:column;align-items:stretch}.admin-row__actions,.admin-row .button{width:100%}}@media (max-width:420px){.navigation-link{gap:4px;padding:0 5px;font-size:.76rem}.navigation-link__icon{flex-basis:18px;width:18px;height:18px}.button-row{flex-direction:column;align-items:stretch}.button-row .button{width:100%}}@media (min-width:721px){.location-scroll-cue{display:none}}@media (prefers-reduced-motion:reduce){.reveal-on-scroll{opacity:1;transition:none;transform:none}.location-scroll-cue,.location-scroll-cue--fade-out,.location-scroll-cue__content{animation-duration:1ms}}
