:root{--primary:#667662;--bg:#f5f3ea;--card:#fffefb;--text:#3a3631;--text-body:#4a463e;--text-sub:#716d63;--muted:#716d5e;--muted-2:#69705c;--surface:#f2f4ec;--surface-2:#eef1e8;--surface-3:#f7f9f3;--input-bg:#fbfcf8;--input-border:#e6e8dd;--on-surface:#5f7060;--on-primary:#f7f8f1;--on-primary-sub:#f6f8f2;--on-primary-title:#f6f8f2;--overlay:#282e26f0;--error:#a4453a;--type-scale:1;--text-size-bar-h:68px;--font-script:"Parisienne", cursive;--font-serif:"Nanum Myeongjo", serif;--font-caption:"Gowun Dodum", sans-serif;--page-max:430px;--radius-card:24px;--radius-control:14px;--shadow-card:0 16px 40px #505f4b14;--shadow-green-card:0 18px 44px #6e806947}*{box-sizing:border-box}html,body{margin:0;padding:0}html{scroll-padding-bottom:calc(var(--text-size-bar-h) + env(safe-area-inset-bottom,0px) + 12px)}body{background:#eceae1}.page{max-width:var(--page-max);background:var(--bg);color:var(--text);font-family:var(--font-serif);min-height:100vh;margin:0 auto;overflow:hidden;box-shadow:0 0 70px #3c46372e}.has-bottom-bar{padding-bottom:calc(var(--text-size-bar-h) + env(safe-area-inset-bottom,0px))}.card{background:var(--card);border-radius:var(--radius-card);box-shadow:var(--shadow-card);text-align:center;padding:40px 26px}.script-title{font-family:var(--font-script);color:var(--primary);font-size:24px}.skeleton{background:var(--surface);position:relative;overflow:hidden}.skeleton:after{content:"";background:linear-gradient(100deg, #fffefb00 25%, var(--card) 50%, #fffefb00 75%);opacity:.62;animation:2.6s linear infinite skeleton-shimmer;position:absolute;inset:0;transform:translate(-100%)}@keyframes skeleton-shimmer{0%{transform:translate(-100%)}40%{transform:translate(100%)}to{transform:translate(100%)}}.skeleton.is-loaded:after{content:none}@media (prefers-reduced-motion:reduce){.skeleton:after{display:none}}.image-pending{opacity:0}.image-fade{transition:opacity .45s ease-out}@media (prefers-reduced-motion:reduce){.image-fade{transition:none}}.gallery-track{scrollbar-width:none}.gallery-track::-webkit-scrollbar{display:none}.venue-map,.venue-map *{touch-action:pan-y!important}.map-links{gap:8px;margin-top:14px;display:flex}.map-links a,.map-links button{background:var(--surface);border-radius:var(--radius-control);color:var(--on-surface);font-family:inherit;font-size:calc(13px * var(--type-scale));white-space:nowrap;cursor:pointer;border:none;flex:1;justify-content:center;align-items:center;gap:5px;padding:11px 6px;text-decoration:none;display:flex}.map-links img{flex-shrink:0;width:18px;height:18px;display:block}@media (width<=359px){.map-links{gap:6px}.map-links a,.map-links button{font-size:calc(12px * var(--type-scale));gap:4px;padding:11px 4px}.map-links img{width:16px;height:16px}}[data-text-size=large] .map-links{flex-direction:column}[data-text-size=large] .notice-line{display:block}.calendar{table-layout:fixed;border-collapse:collapse;width:100%;margin-top:22px}.calendar th{font-weight:400;font-size:calc(12px * var(--type-scale));letter-spacing:.06em;color:var(--text-body);padding-bottom:12px}.calendar td{padding:2px 0}.calendar .day{width:34px;height:34px;line-height:34px;font-size:calc(14.5px * var(--type-scale));color:var(--text-body);border-radius:50%;display:inline-block}.calendar .day.wedding{background:var(--primary);color:var(--on-primary);font-weight:700}.heart-rule{align-items:center;gap:12px;margin:28px 0 22px;display:flex}.heart-rule:before,.heart-rule:after{content:"";border-top:1px dashed var(--input-border);flex:1}.heart-rule svg{color:var(--primary);opacity:.45;display:block}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.todo{font-size:calc(13px * var(--type-scale));color:var(--muted);margin:18px 0 0}.rsvp-form{text-align:left;flex-direction:column;display:flex}.pick-group{border:0;gap:8px;margin:0;padding:0;display:flex}.pick-btn{border:1px solid var(--input-border);border-radius:var(--radius-control);background:var(--surface);color:var(--on-surface);font-family:var(--font-serif);font-size:calc(14px * var(--type-scale));cursor:pointer;flex:1;padding:13px 4px}.pick-btn[aria-pressed=true]{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.rsvp-label,.gb-label{font-size:calc(13.5px * var(--type-scale));color:var(--text-body);margin:0 0 6px 2px;display:block}.rsvp-input,.gb-input{border:1px solid var(--input-border);border-radius:var(--radius-control);background:var(--input-bg);width:100%;color:var(--text);font-family:var(--font-serif);font-size:calc(16px * var(--type-scale));padding:14px 16px}.rsvp-input::placeholder,.gb-input::placeholder{color:var(--text-sub)}.rsvp-help,.gb-help{font-size:calc(13px * var(--type-scale));color:var(--text-sub);word-break:keep-all;margin:0 0 7px 2px;line-height:1.6;display:block}.rsvp-invalid,.gb-invalid{border-color:var(--error);border-width:1.5px}.rsvp-invalid:focus-visible,.gb-invalid:focus-visible{outline:2px solid var(--error);outline-offset:2px}.rsvp-error,.gb-error{font-size:calc(13px * var(--type-scale));color:var(--error);margin:6px 2px 0;line-height:1.6}.rsvp-submit{border-radius:var(--radius-control);background:var(--primary);color:var(--on-primary);font-family:var(--font-serif);font-size:calc(15px * var(--type-scale));cursor:pointer;border:none;margin-top:4px;padding:16px 0}.rsvp-submit:disabled{background:var(--surface);color:var(--on-surface);cursor:not-allowed}.privacy{background:var(--surface-3);border-radius:16px;margin-top:4px;padding:16px 16px 14px}.privacy-title{font-size:calc(13.5px * var(--type-scale));color:var(--text);margin:0 0 10px}.privacy-summary{font-size:calc(13.5px * var(--type-scale));color:var(--text-body);margin:0;line-height:1.85}.privacy-summary dt{font-weight:400;display:inline}.privacy-summary dt:after{content:": "}.privacy-summary dd{margin:0;display:inline}.privacy-summary dd:after{content:"";display:block}.privacy-consent{font-size:calc(13px * var(--type-scale));color:var(--text);cursor:pointer;align-items:flex-start;gap:9px;margin-top:14px;line-height:1.6;display:flex}.privacy-consent input{width:17px;height:17px;accent-color:var(--primary);flex:none;margin:1px 0 0}.privacy-toggle{color:var(--on-surface);font-family:var(--font-serif);font-size:calc(13px * var(--type-scale));cursor:pointer;background:0 0;border:0;align-items:center;gap:5px;margin-top:10px;padding:6px 0;display:flex}.privacy-toggle span:first-child{text-decoration:underline}.privacy-toggle-arrow{font-size:calc(12px * var(--type-scale));line-height:1;transition:transform .25s}.privacy-toggle-arrow[data-open=true]{transform:rotate(180deg)}.privacy-policy{border-top:1px solid var(--input-border);max-height:220px;font-size:calc(13px * var(--type-scale));color:var(--text-body);overscroll-behavior:contain;margin-top:12px;padding:12px 12px 0 0;line-height:1.8;overflow-y:auto}.privacy-policy:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.privacy-policy-wrap{position:relative}.privacy-policy-wrap:after{content:"";background:linear-gradient(to top, var(--surface-3), #f7f9f300);pointer-events:none;height:30px;position:absolute;bottom:0;left:0;right:0}.privacy-policy h4{font-size:calc(13.5px * var(--type-scale));color:var(--text);margin:14px 0 4px;font-weight:400}.privacy-policy h4:first-of-type{margin-top:10px}.privacy-policy p{margin:0 0 4px}.privacy-policy ul{margin:0 0 6px;padding-left:16px}.privacy-policy .privacy-label{color:var(--text);margin-top:6px}.rsvp-confirm-overlay,.gb-dialog-overlay{z-index:90;background:var(--overlay);justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.rsvp-confirm,.gb-dialog{overscroll-behavior:contain;border-radius:var(--radius-card);background:var(--card);width:100%;max-width:390px;max-height:100%;box-shadow:var(--shadow-card);text-align:left;padding:26px 22px 22px;position:relative;overflow-y:auto}.rsvp-confirm:focus-visible,.gb-dialog:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.rsvp-confirm-close,.gb-dialog-close{width:32px;height:32px;color:var(--text-sub);font-family:var(--font-serif);font-size:calc(17px * var(--type-scale));cursor:pointer;background:0 0;border:0;line-height:1;position:absolute;top:14px;right:14px}.rsvp-confirm-title,.gb-dialog-title{font-size:calc(17px * var(--type-scale));color:var(--text);text-align:center;margin:0 0 4px}.rsvp-confirm-lead,.gb-dialog-lead{font-size:calc(13.5px * var(--type-scale));color:var(--text-body);text-align:center;margin:0 0 18px;line-height:1.7}.rsvp-confirm-summary{background:var(--surface-3);border-radius:16px;grid-template-columns:78px 1fr;gap:9px 12px;margin:0 0 20px;padding:16px;display:grid}.rsvp-confirm-summary dt{font-size:calc(13.5px * var(--type-scale));color:var(--text-body);font-weight:400}.rsvp-confirm-summary dd{font-size:calc(14px * var(--type-scale));color:var(--text);word-break:break-all;margin:0;line-height:1.5}.rsvp-confirm-actions,.gb-dialog-actions{gap:10px;display:flex}.rsvp-confirm-btn,.gb-dialog-btn{border-radius:var(--radius-control);font-family:var(--font-serif);font-size:calc(15px * var(--type-scale));cursor:pointer;border:none;flex:1;padding:15px 0}.rsvp-confirm-back,.gb-dialog-cancel{border:1px solid var(--input-border);background:var(--surface-2);color:var(--on-surface)}.rsvp-confirm-send,.gb-dialog-send{background:var(--primary);color:var(--on-primary)}.gb-dialog-danger{background:var(--error);color:var(--on-primary)}.rsvp-confirm-send:disabled,.gb-dialog-send:disabled,.gb-dialog-danger:disabled{background:var(--surface);color:var(--on-surface);cursor:not-allowed}.rsvp-done{background:var(--surface-3);text-align:center;border-radius:18px;padding:30px 16px}.rsvp-done p{font-size:calc(14px * var(--type-scale));color:var(--text-body);white-space:pre-line;margin:10px 0 0;line-height:1.8}.gb-lead{font-size:calc(14px * var(--type-scale));color:var(--text-body);word-break:keep-all;margin:0;line-height:1.9}.gb-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.gb-message{font-size:calc(14.5px * var(--type-scale));color:var(--text-body);word-break:keep-all;white-space:pre-line;margin:0;line-height:1.95}.gb-meta{justify-content:center;align-items:baseline;gap:8px;margin-top:12px;display:flex}.gb-name{font-size:calc(14px * var(--type-scale));color:var(--text);font-weight:700}.gb-date{font-size:calc(12.5px * var(--type-scale));color:var(--text-sub)}.gb-remove{color:var(--text-sub);font-family:var(--font-serif);font-size:calc(12.5px * var(--type-scale));cursor:pointer;background:0 0;border:0;margin:-12px -8px;padding:12px 8px}.gb-actions{flex-direction:column;gap:10px;margin-top:30px;display:flex}.gb-btn{border:1px solid var(--input-border);border-radius:var(--radius-control);background:var(--surface-2);color:var(--on-surface);font-family:var(--font-serif);font-size:calc(15px * var(--type-scale));cursor:pointer;padding:15px 0}.gb-btn-primary{background:var(--primary);color:var(--on-primary);border:none;padding:16px 0}.gb-btn:disabled{color:var(--text-sub);cursor:not-allowed}.gb-note{font-size:calc(13.5px * var(--type-scale));color:var(--text-body);word-break:keep-all;white-space:pre-line;margin:24px 0 0;line-height:1.8}.gb-counter{font-size:calc(12.5px * var(--type-scale));color:var(--text-sub);text-align:right;margin:6px 2px 0}.gb-textarea{resize:none;line-height:1.8;display:block}.gb-page{z-index:80;overscroll-behavior:contain;background:var(--bg);position:fixed;inset:0;overflow-y:auto}.gb-page-column{max-width:var(--page-max);background:var(--bg);min-height:100%;margin:0 auto}.gb-page-bar{border-bottom:1px solid var(--input-border);align-items:center;gap:10px;padding:18px 20px 14px;display:flex}.gb-page-close{width:44px;height:44px;color:var(--text-sub);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;margin-right:-10px;display:flex}.floating-controls{z-index:70;max-width:var(--page-max);pointer-events:none;justify-content:flex-end;margin:0 auto;padding:14px 18px 0;display:flex;position:fixed;top:0;left:0;right:0}.bgm-toggle{width:44px;height:44px;color:var(--on-primary);cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent;background:0 0;border:0;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.bgm-toggle:before{content:"";background:var(--primary);border-radius:50%;width:36px;height:36px;position:absolute;box-shadow:0 6px 16px #505f4b47}.bgm-toggle svg{position:relative}.bgm-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:50%}.text-size-bar{z-index:70;max-width:var(--page-max);min-height:var(--text-size-bar-h);padding:0 20px env(safe-area-inset-bottom,0px);background:var(--card);border-top:1px solid var(--input-border);align-items:center;margin:0 auto;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -8px 24px #505f4b1a}.text-size-bar-button{border-radius:var(--radius-control);background:var(--surface);width:100%;min-height:48px;color:var(--on-surface);font-family:var(--font-serif);cursor:pointer;-webkit-tap-highlight-color:transparent;border:0;justify-content:center;align-items:center;gap:9px;padding:12px 16px;font-size:15.5px;display:flex}.text-size-bar-mark{color:var(--on-surface);align-items:baseline;gap:2px;line-height:1;display:inline-flex}.text-size-bar-mark-small{font-size:13px;font-weight:400}.text-size-bar-mark-large{font-size:21px;font-weight:800}.text-size-bar-button[aria-pressed=true] .text-size-bar-mark{flex-direction:row-reverse}.text-size-bar-button:focus-visible{outline:2px solid var(--primary);outline-offset:2px}
