@import"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,600;0,700;1,500;1,600;1,700&family=Trirong:wght@600;700&family=Prompt:wght@400;500;600;700&family=Sarabun:wght@400;500;600&family=Meddon&display=swap";:root{--color-bg: #fdf8f1;--color-surface: #ffffff;--color-surface-tint: #efe9fb;--color-text: #372f45;--color-text-muted: #8f889c;--color-primary: #6b4fb0;--color-primary-dark: #543c8f;--color-primary-soft: #efe9fb;--color-primary-softer: #f6f3fb;--color-teal: #3b9e94;--color-teal-dark: #2e7d75;--color-teal-soft: #dcf2ef;--color-blush: #ef9fbd;--color-blush-soft: #fbe6ee;--color-gold: #e0a94a;--color-border: rgba(55, 47, 69, .12);--color-success: #3b9e94;--color-error: #b13a3a;--font-heading: "Playfair Display", "Trirong", serif;--font-ui: "Prompt", "Segoe UI", sans-serif;--font-body: "Sarabun", "Segoe UI", sans-serif;--font-script: "Meddon", "Playfair Display", cursive;--radius-sm: 12px;--radius-md: 18px;--radius-lg: 26px;--radius-pill: 999px;--max-width: 480px;--shadow-card: 0 4px 18px rgba(55, 47, 69, .07);--shadow-pop: 0 20px 50px rgba(55, 47, 69, .3)}*{box-sizing:border-box}[hidden]{display:none!important}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-body);font-size:16px;background:var(--color-bg);color:var(--color-text);line-height:1.6;animation:page-fade-in .4s ease both}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}@keyframes page-fade-in{0%{opacity:0}to{opacity:1}}a{color:var(--color-primary-dark)}main{max-width:var(--max-width);margin:0 auto;padding:1.25rem 1.1rem 3.5rem;position:relative}h1,h2,h3{font-family:var(--font-heading);font-style:italic;font-weight:700;line-height:1.2;color:var(--color-primary);margin:0 0 .5rem}h1{font-size:1.7rem}h2{font-size:1.3rem}p{margin:0 0 1rem}.page-subtitle{color:var(--color-text-muted);font-size:.92rem;margin-top:-.4rem}.color-text-muted{color:var(--color-text-muted)}.eyebrow{display:block;font-family:var(--font-ui);font-size:.68rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:.35rem}.divider{display:flex;align-items:center;gap:.75rem;margin:1.75rem 0}.divider:before,.divider:after{content:"";flex:1;height:0;border-top:2px dotted var(--color-border)}.divider-icon{flex:none;font-size:1.1rem;filter:saturate(1.1)}.card{background:var(--color-surface);border-radius:var(--radius-md);padding:1.35rem 1.15rem;margin-bottom:1.1rem;box-shadow:var(--shadow-card)}.card.feature{background:var(--color-primary-soft);box-shadow:none}.card-icon-heading{display:flex;align-items:center;gap:.7rem;margin-bottom:.5rem}.card-icon-heading h2{margin:0}.icon-tile{flex:none;width:42px;height:42px;border-radius:13px;background:var(--color-primary-soft);display:flex;align-items:center;justify-content:center;font-size:1.15rem}button,.btn{font:inherit;font-family:var(--font-ui);font-weight:600;font-size:.95rem;cursor:pointer;border:1.5px solid transparent;border-radius:var(--radius-pill);background:var(--color-primary);color:#fff;padding:.75rem 1.4rem;text-decoration:none;display:inline-block;text-align:center;transition:background .18s ease,transform .12s ease,box-shadow .18s ease,border-color .18s ease}button:hover,.btn:hover{background:var(--color-primary-dark)}button:active,.btn:active{transform:translateY(1px) scale(.99)}button.secondary,.btn.secondary{background:transparent;color:var(--color-primary);border-color:var(--color-primary)}button.secondary:hover,.btn.secondary:hover{background:var(--color-primary-soft)}button:disabled,.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-block{display:block;width:100%}.rsvp-status-btn{flex:1;min-width:140px;font-size:1rem;padding:.9rem 1rem;background:transparent;color:var(--color-text);border-color:var(--color-border)}.rsvp-status-btn[data-value=attending]{background:var(--color-teal);color:#fff;border-color:var(--color-teal)}.rsvp-status-btn[data-value=attending]:hover{background:var(--color-teal-dark)}.rsvp-status-btn[data-value=not_attending]{border-color:var(--color-border)}.rsvp-status-btn.selected{box-shadow:0 0 0 2px var(--color-primary)}input,select,textarea{font-family:inherit;font-size:16px;padding:.75rem .85rem;border:1.5px solid transparent;border-radius:var(--radius-sm);background:var(--color-primary-softer);color:var(--color-text);width:100%;transition:border-color .15s ease,background .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);background:#fff}label{display:flex;flex-direction:column;gap:.4rem;font-size:.7rem;font-family:var(--font-ui);font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-text-muted);margin-bottom:1rem}.th{text-transform:none;letter-spacing:0;font-weight:400;font-style:normal;font-family:var(--font-body);opacity:.8}label .th{display:block}input[type=checkbox]{width:auto;accent-color:var(--color-primary)}.field-row{display:flex;gap:.75rem;flex-wrap:wrap}.field-row>label{flex:1;min-width:160px}.notice{background:var(--color-primary-soft);border-radius:var(--radius-sm);padding:1rem 1.1rem;margin-bottom:1.25rem;color:var(--color-text)}.error-text{color:var(--color-error);font-size:.85rem;display:block;margin:-.5rem 0 1rem}#site-nav{background:#fdf8f1eb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);position:sticky;top:0;z-index:20}.nav-inner{max-width:var(--max-width);margin:0 auto;padding:.9rem 1.1rem;display:flex;align-items:center;justify-content:space-between}.nav-brand{font-family:var(--font-heading);font-style:italic;font-weight:700;font-size:1.2rem;text-decoration:none;color:var(--color-primary)}.nav-toggle{display:block;background:none;border:none;font-size:1.3rem;padding:.25rem .5rem;color:var(--color-primary)}.nav-toggle:hover{background:none}.nav-links{display:none;flex-direction:column;gap:.25rem;position:absolute;top:100%;left:0;right:0;background:var(--color-surface);box-shadow:var(--shadow-card);padding:.5rem 1.1rem 1rem;animation:dropdown-in .18s ease both}.nav-links a{text-decoration:none;color:var(--color-text-muted);font-family:var(--font-ui);font-size:.95rem;font-weight:500;padding:.6rem 0;border-bottom:1px solid var(--color-border)}.nav-links a.active{color:var(--color-primary);font-weight:600}.nav-links.open{display:flex}@keyframes dropdown-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media (min-width: 640px){.nav-toggle{display:none}.nav-links{display:flex;flex-direction:row;position:static;background:none;box-shadow:none;padding:0;gap:1.4rem;animation:none}.nav-links a{border-bottom:2px solid transparent;padding:0 0 2px}.nav-links a.active{border-bottom-color:var(--color-teal)}}.home-viewport{display:flex;flex-direction:column;min-height:100svh}.intro-hero{position:relative;flex:1;min-height:460px;overflow:hidden}.intro-hero-bg{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;object-position:center}.intro-scroll-cue{position:absolute;left:50%;bottom:1.1rem;z-index:1;transform:translate(-50%);background:#ffffff2e;border:1.5px solid rgba(255,255,255,.7);border-radius:50%;width:40px;height:40px;padding:0;display:flex;align-items:center;justify-content:center;opacity:0;animation:intro-fade-in .6s ease .8s both,intro-bounce 1.8s ease-in-out 1.4s infinite}.intro-scroll-cue:hover{background:#ffffff4d}.intro-scroll-chevron{width:10px;height:10px;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(45deg) translate(-1px,-1px)}@keyframes intro-fade-in{to{opacity:1}}@keyframes intro-bounce{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(6px)}}.details{position:relative;background:var(--color-bg);padding-bottom:1rem}.details-bg-fixed{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;background-image:linear-gradient(180deg,#fdf8f199,#fdf8f199),url(/img/hero-bg.png);background-size:cover;background-position:center 20%;background-repeat:no-repeat}.details-content{position:relative;z-index:1;max-width:var(--max-width);margin:0 auto;padding:2rem 1.1rem 1rem}.btn-line{margin-top:.6rem;background:#06c755}.btn-line:hover{background:#05a648}@media (prefers-reduced-motion: reduce){.intro-scroll-cue{animation:none!important;opacity:1}}.countdown-card{text-align:center}.countdown-card h2{font-size:1.15rem;margin-bottom:1rem}.countdown{display:flex;gap:.6rem;justify-content:center;text-align:center}.countdown .unit{min-width:62px;background:var(--color-surface);border-radius:var(--radius-sm);padding:.65rem .3rem .5rem}.countdown .value{display:inline-block;font-family:var(--font-ui);font-size:1.6rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--color-primary)}.countdown .value.flip{animation:countdown-flip .4s cubic-bezier(.22,1,.36,1)}@keyframes countdown-flip{0%{transform:rotateX(90deg);opacity:.3}60%{transform:rotateX(-12deg);opacity:1}to{transform:rotateX(0)}}.countdown .label{font-size:.65rem;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:.2rem}.dress-code-swatches{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1rem;margin-top:.9rem}.dress-code-swatch{display:flex;align-items:center;gap:.6rem}.dress-code-swatch .swatch-dot{width:32px;height:32px;border-radius:50%;flex:none;box-shadow:0 2px 6px #372f452e}.dress-code-swatch .swatch-name{font-size:.88rem;font-weight:500}.schedule-row{display:flex;align-items:flex-start;gap:.85rem;padding:.85rem 0;border-bottom:1px solid var(--color-border)}.schedule-row:last-child{border-bottom:none}.schedule-row-body{flex:1;min-width:0}.schedule-time{display:block;font-family:var(--font-ui);font-size:.7rem;font-weight:600;letter-spacing:.06em;color:var(--color-teal-dark);margin-bottom:.15rem}.schedule-title{font-weight:600}.schedule-desc{font-size:.85rem;color:var(--color-text-muted)}.gallery-grid{display:grid;grid-template-columns:1fr 1fr;gap:.85rem}@media (min-width: 640px){.gallery-grid{grid-template-columns:repeat(3,1fr)}}.gallery-grid figure{margin:0;background:var(--color-surface);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-card);opacity:0;transform:translateY(14px)}.gallery-grid figure.in-view{animation:gallery-reveal .55s ease both}@keyframes gallery-reveal{to{opacity:1;transform:translateY(0)}}.gallery-grid img{width:100%;aspect-ratio:1 / 1;object-fit:cover;display:block}.gallery-grid figcaption{font-size:.78rem;color:var(--color-text-muted);padding:.5rem .6rem}.upload-dropzone{display:block;border:2px dashed var(--color-primary);border-radius:var(--radius-sm);background:var(--color-surface);padding:1.5rem 1rem;text-align:center;cursor:pointer;color:var(--color-primary);font-size:.85rem;margin-bottom:1rem}.upload-dropzone input{display:none}.upload-dropzone.drag-over{background:var(--color-primary-soft);border-style:solid}.gallery-grid figure{cursor:zoom-in}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#14121aeb;display:flex;align-items:center;justify-content:center;padding:2rem}.lightbox figure{margin:0;max-width:min(90vw,900px);max-height:90vh;display:flex;flex-direction:column;align-items:center}.lightbox img{max-width:100%;max-height:78vh;object-fit:contain;border-radius:var(--radius-md)}.lightbox figcaption{color:#f5f2fb;margin-top:.75rem;text-align:center;font-size:.9rem}.lightbox-close{position:absolute;top:1.25rem;right:1.25rem;background:#ffffff1f;border:none;color:#fff;width:2.5rem;height:2.5rem;border-radius:50%;font-size:1.1rem;cursor:pointer}.rsvp-progress{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.rsvp-progress .step-count{font-family:var(--font-ui);font-size:.7rem;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--color-text-muted)}.rsvp-progress .step-dots{display:flex;gap:.35rem}.rsvp-progress .step-dots span{width:7px;height:7px;border-radius:50%;background:var(--color-border)}.rsvp-progress .step-dots span.done{background:var(--color-primary)}.step{display:none}.step.active{display:block;animation:step-in .32s cubic-bezier(.22,1,.36,1) both}@keyframes step-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}.step-actions{display:flex;justify-content:space-between;gap:.75rem;margin-top:1.25rem}.step-actions button,.step-actions .btn{flex:1}.summary-row{display:flex;justify-content:space-between;gap:1rem;padding:.55rem 0;border-bottom:1px solid var(--color-border);font-size:.9rem}.summary-row:last-child{border-bottom:none}.summary-row span:first-child{color:var(--color-text-muted)}.chat-identity{display:flex;align-items:center;gap:.8rem}.chat-identity img{width:44px;height:44px;flex:none}.chat-identity h2{font-size:1.05rem;margin:0}.chat-identity p{margin:0;font-size:.8rem;color:var(--color-text-muted)}.chat-log{display:flex;flex-direction:column;gap:.6rem;min-height:300px;max-height:55vh;overflow-y:auto;padding:1rem .6rem;margin-bottom:1rem;border-radius:var(--radius-md);background-color:var(--color-primary-softer);background-image:linear-gradient(180deg,#fdf8f1e0,#fdf8f1f0),url(/img/scene-band.jpg);background-repeat:no-repeat;background-position:bottom center;background-size:cover}.chat-bubble{max-width:80%;padding:.6rem .9rem;border-radius:16px;font-size:.92rem;white-space:pre-wrap;animation:bubble-in .28s cubic-bezier(.22,1,.36,1) both}@keyframes bubble-in{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.chat-bubble.user{align-self:flex-end;background:var(--color-primary-soft);color:var(--color-text);border-bottom-right-radius:4px}.chat-bubble.assistant{align-self:flex-start;background:var(--color-surface);border-bottom-left-radius:4px;box-shadow:var(--shadow-card)}.chat-bubble.typing{color:var(--color-text-muted);font-style:italic}.chat-input-row{display:flex;gap:.5rem;align-items:flex-end}.chat-input-row textarea{resize:none;flex:1;border-radius:var(--radius-pill);padding:.75rem 1.1rem}.chat-input-row button{flex:none;width:44px;height:44px;padding:0;border-radius:50%;font-size:1.1rem;line-height:1}.chat-row{display:flex;align-items:flex-end;gap:.5rem}.chat-row.user{justify-content:flex-end}.chat-avatar{width:26px;height:26px;flex:none;border-radius:50%;background:var(--color-primary-soft);display:flex;align-items:center;justify-content:center}.chat-avatar img{width:100%;height:100%}.chat-sender{display:block;font-family:var(--font-ui);font-size:.68rem;font-weight:600;color:var(--color-primary);margin-bottom:.15rem}.table-hero{text-align:center}.table-hero .table-name{font-size:1.8rem;margin:.1rem 0 1rem}.tablemate-list{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.tablemate-list li{background:var(--color-surface);border-radius:var(--radius-pill);padding:.4rem .9rem .4rem .55rem;font-size:.85rem;display:flex;align-items:center;gap:.4rem}.tablemate-list li:before{content:"";width:8px;height:8px;border-radius:50%;background:var(--color-teal)}.tablemate-list li:nth-child(3n+2):before{background:var(--color-blush)}.tablemate-list li:nth-child(3n):before{background:var(--color-primary)}.song-list{list-style:none;padding:0;margin:0 0 .9rem;display:flex;flex-direction:column;gap:.4rem}.song-list li{display:flex;align-items:center;justify-content:space-between;gap:.6rem;background:var(--color-surface);border-radius:var(--radius-md);padding:.5rem .75rem;font-size:.9rem}.song-status{border-radius:var(--radius-pill);padding:.15rem .6rem;font-size:.75rem;white-space:nowrap;background:var(--color-primary-soft);color:var(--color-text-muted)}.song-status.playing{background:var(--color-teal);color:#fff}.song-status.played{background:var(--color-blush);color:var(--color-text-muted)}.game-prompt{font-family:var(--font-heading);font-style:italic;font-size:1.35rem;text-align:center;padding:.75rem 0 1.25rem;color:var(--color-primary)}.invite-popup-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#372f458c;display:flex;align-items:center;justify-content:center;padding:1.25rem;z-index:100;animation:overlay-in .25s ease both}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.invite-card{position:relative;width:100%;max-width:380px;max-height:90vh;overflow-y:auto;border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);animation:pop-in .32s cubic-bezier(.22,1,.36,1) both}@keyframes pop-in{0%{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.invite-card img{width:100%;display:block;border-radius:var(--radius-lg)}.invite-card img+img{margin-top:.6rem}.invite-card-close{position:absolute;top:.6rem;right:.6rem;width:32px;height:32px;padding:0;border-radius:50%;background:#ffffffd9;color:var(--color-text);font-size:1.1rem;line-height:1}@media (min-width: 640px){:root{--max-width: 620px}.hero-names{font-size:3.4rem}}@media (min-width: 1000px){:root{--max-width: 720px}}
