@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400;1,500&display=swap";@import "https://cdn.jsdelivr.net/npm/lxgw-wenkai-webfont@1.7.0/lxgwwenkai-regular.css";@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.fixed{position:fixed}.static{position:static}.start{inset-inline-start:var(--spacing)}.block{display:block}.hidden{display:none}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}}:root{--ink:#111827;--navy:#17233b;--teal:#0f766e;--rose:#d15f7a;--marigold:#f3ba3f;--mint:#cce9df;--champagne:#fff4df;--paper:#fffaf2;--plum:#6f4e7c;--line:#11182729;--shadow:0 26px 80px #11182733;--kai:STKaiti, "Kaiti SC", KaiTi, "楷体", "LXGW WenKai";--serif:"Cormorant Garamond", var(--kai), Georgia, "Times New Roman", serif;--sans:"Avenir Next", Avenir, "Segoe UI", Helvetica, Arial, var(--kai), sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--champagne);color:var(--ink);font-family:var(--sans);margin:0;line-height:1.5}button,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.app-shell{min-height:100svh;overflow-x:hidden}.topbar{-webkit-backdrop-filter:blur(14px);z-index:20;background:#f4ead9b8;border-bottom:1px solid #17233b14;justify-content:space-between;align-items:center;min-height:70px;padding:.8rem 5vw;display:flex;position:sticky;top:0}.brand{color:var(--navy);font-family:var(--serif);letter-spacing:.02em;white-space:nowrap;align-items:center;gap:.75rem;font-size:1.45rem;font-weight:500;display:flex}.brand-mark{aspect-ratio:1;object-fit:contain;flex:none;width:42px;height:auto;display:block}.wedding-date{color:var(--navy);font-family:var(--serif);text-align:center;font-size:1.15rem;font-style:italic;font-weight:500}.topbar-actions{align-items:center;gap:.9rem;min-width:0;display:flex}.admin-manage-button,.admin-rsvp-action,.admin-cancel-button,.admin-danger-button,.admin-whitelist-save-button,.admin-whitelist-remove-button{border-radius:8px;min-height:42px;padding:.55rem .8rem;font-weight:900}.admin-manage-button{background:var(--teal);border:1px solid var(--teal);color:#fff}.access-page{background:linear-gradient(135deg, #d15f7a29, transparent 38%), linear-gradient(315deg, #0f766e2e, transparent 42%), var(--champagne);justify-content:center;align-items:center;min-height:calc(100svh - 70px);padding:2rem 5vw;display:flex}.access-panel{box-shadow:var(--shadow);background:#fffaf2f0;border:1px solid #1118271f;border-radius:8px;width:100%;max-width:620px;padding:2rem}.access-panel h1{color:var(--navy);font-family:var(--serif);letter-spacing:0;margin:0;font-size:2.7rem;font-weight:500;line-height:1.05}.access-panel p{color:#111827b3;margin:1rem 0 1.5rem}.switch-account-link{background:var(--navy);color:var(--paper);border-radius:8px;min-height:46px;padding:.75rem 1rem;font-weight:900;display:inline-flex}.intro-modal{box-shadow:var(--shadow);background:#fffaf2f5;border:1px solid #17233b1a;border-radius:14px}.eyebrow{color:#17233b9e;letter-spacing:.18em;text-transform:uppercase;margin:0 0 .75rem;font-size:.72rem;font-weight:700}.stage-copy h1,.section-heading h2,.intro-modal h2{color:var(--navy);font-family:var(--serif);letter-spacing:0;margin:0;font-weight:500;line-height:1.05}.letter-card{color:#17233bcc;font-family:var(--serif);gap:.9rem;margin-top:1.1rem;font-size:1.15rem;line-height:1.55;display:grid}.letter-card p{margin:0}.yes-button:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.no-button:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.party-avatar:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.couple-avatar:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.close-button:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-close-button:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-footer-link:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-footer-preview select:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-rsvp-action:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-cancel-button:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-danger-button:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-danger-link:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-dashboard-tab:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-whitelist-row input:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-whitelist-save-button:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.admin-whitelist-remove-button:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.account-switch-link:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.switch-account-link:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}.whatsapp-link:focus-visible{outline-offset:3px;outline:3px solid #0f766e70}@keyframes yesWriggle{0%,to{transform:translate(0)rotate(0)}16%{transform:translate(calc(var(--wriggle-shift) * -1), calc(var(--wriggle-shift) * -.18)) rotate(calc(var(--wriggle-rotate) * -1))}34%{transform:translate(var(--wriggle-shift), calc(var(--wriggle-shift) * .14)) rotate(var(--wriggle-rotate))}52%{transform:translate(calc(var(--wriggle-shift) * -.72), calc(var(--wriggle-shift) * .12)) rotate(calc(var(--wriggle-rotate) * -.7))}70%{transform:translate(calc(var(--wriggle-shift) * .62), 0) rotate(calc(var(--wriggle-rotate) * .58))}86%{transform:translate(calc(var(--wriggle-shift) * -.28), 0) rotate(calc(var(--wriggle-rotate) * -.25))}}.no-button{border:1px solid var(--line);color:#111827a8;touch-action:manipulation;-webkit-user-select:none;user-select:none;z-index:2;background:#fff;border-radius:8px;min-width:74px;min-height:48px;padding:.75rem 1rem;font-weight:900;transition:border-color .16s,color .16s,left .17s cubic-bezier(.2,.8,.2,1),top .17s cubic-bezier(.2,.8,.2,1),transform .19s;position:relative}.no-button.is-running{z-index:80;position:fixed;box-shadow:0 18px 42px #11182738}.no-button:hover{color:var(--rose);border-color:#d15f7a57}.accepted-state strong{color:var(--navy);font-size:1.05rem}.photo-frame{--fig-base:min(56cqh, calc(96cqw / var(--total-span,4.4)), calc((74cqh - 270px) / 1.15));--group-centre:calc(50% + var(--centre-shift,0) * var(--fig-base));--fig-h:var(--fig-base);--couple-h:calc(var(--fig-base) * 1.15);--shoulder:calc(var(--fig-base) * .19);--shoulder-same:calc(var(--fig-base) * .31);--couple-half:calc(var(--fig-base) * .4);background:radial-gradient(ellipse 42% 70% at var(--group-centre) var(--floor), #fffcf5f2, #fffcf500 100%), linear-gradient(180deg, #f7eedf 0%, #f3e6d3 60%, #efe0ca 100%);position:absolute;inset:0;overflow:hidden;container-type:size}.photo-frame:after{content:"";pointer-events:none;height:calc(100% - var(--floor));z-index:1;bottom:0;background:linear-gradient(#17233b14,#17233b05 35%,#0000 80%),#e8d8bf;border-top:1px solid #17233b1a;position:absolute;inset-inline:0}.couple-avatar,.party-avatar{border:0;justify-content:center;align-items:center;display:flex;position:absolute}.couple-avatar{z-index:9;background:0 0;flex-direction:column;width:94px;height:112px;padding:0;transition:transform .18s;top:53%;transform:translate(-50%,-50%)}.couple-avatar.bri{left:44%}.couple-avatar.kc{left:56%}.couple-avatar:hover{transform:translate(-50%,-50%)scale(1.05)rotate(-1deg)}.couple-monogram{background:var(--navy);border:5px solid var(--paper);box-shadow:0 0 0 3px var(--marigold), 0 12px 24px #17233b33;color:var(--paper);font-family:var(--serif);border-radius:50%;justify-content:center;align-items:center;width:76px;height:76px;font-size:1.65rem;display:flex}.kc .couple-monogram{background:var(--teal)}.couple-name{background:var(--paper);border:2px solid var(--navy);color:var(--navy);font-family:var(--serif);border-radius:6px;min-width:66px;margin-top:-6px;padding:.25rem .55rem;font-size:1rem;font-weight:700}.couple-plus{background:var(--marigold);border:3px solid var(--paper);color:var(--navy);font-family:var(--serif);z-index:12;border-radius:50%;justify-content:center;align-items:center;width:34px;height:34px;font-size:1.1rem;font-weight:900;display:flex;position:absolute;top:51%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4px 10px #17233b29}.party-avatar{color:var(--navy);--row-floor:var(--floor);height:88px;left:var(--formation-left);top:calc(var(--row-floor) - 44px);transform:translate(-50%, -50%) rotate(var(--resting-tilt));transform-origin:bottom;width:76px;z-index:var(--stage-layer);background:0 0;flex-direction:column;padding:0;transition:filter .18s,transform .18s;overflow:visible}.party-avatar:hover{filter:brightness(1.03);z-index:16;transform:translate(-50%,-50%)rotate(0)scale(1.07)}.party-avatar.teal{--avatar-color:var(--teal);--avatar-ink:var(--paper)}.party-avatar.rose{--avatar-color:var(--rose);--avatar-ink:var(--paper)}.party-avatar.gold{--avatar-color:var(--marigold);--avatar-ink:#3a2711}.party-avatar.plum{--avatar-color:var(--plum);--avatar-ink:var(--paper)}.party-avatar.mint{--avatar-color:#8bcdbd;--avatar-ink:#12332b}.party-avatar.navy{--avatar-color:var(--navy);--avatar-ink:var(--paper)}.mini-avatar.teal,.modal-avatar.teal{background:var(--teal)}.mini-avatar.rose,.modal-avatar.rose{background:var(--rose)}.mini-avatar.gold,.modal-avatar.gold{background:var(--marigold);color:#3a2711}.mini-avatar.plum,.modal-avatar.plum{background:var(--plum)}.mini-avatar.mint,.modal-avatar.mint{color:#12332b;background:#8bcdbd}.mini-avatar.navy,.modal-avatar.navy{background:var(--navy)}.avatar-face{background:var(--avatar-color);border:4px solid var(--paper);box-shadow:0 0 0 2px var(--avatar-color), 0 10px 18px #17233b2e;border-radius:50%;align-items:center}@supports (color:color-mix(in lab, red, red)){.avatar-face{box-shadow:0 0 0 2px color-mix(in srgb, var(--avatar-color), var(--navy) 22%), 0 10px 18px #17233b2e}}.avatar-face{color:var(--avatar-ink);font-family:var(--serif);text-align:center;justify-content:center;width:56px;height:56px;font-size:1rem;font-weight:900;display:flex;position:absolute;top:0}.avatar-face:before{content:"";background:#ffffff6b;border-radius:50%;width:16px;height:10px;position:absolute;top:7px;left:10px;transform:rotate(-18deg)}.avatar-name{background:var(--paper);border:2px solid var(--avatar-color);color:var(--navy);font-size:var(--avatar-name-size);overflow-wrap:anywhere;text-align:center;z-index:2;border-radius:6px;justify-content:center;align-items:center;width:78px;min-height:31px;padding:.25rem .35rem;font-weight:900;line-height:1.05;display:flex;position:absolute;top:50px;box-shadow:0 5px 12px #17233b1f}.roster-band{background:var(--paper);padding:4.5rem 5vw}.section-inner{width:100%;max-width:1160px;margin:0 auto}.section-heading{max-width:760px}.section-heading h2{font-size:2.55rem}.roster-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.8rem;margin-top:2rem;display:grid}.roster-chip{color:var(--ink);text-align:left;background:#fff;border:1px solid #1118271a;border-radius:8px;align-items:center;gap:.75rem;min-height:72px;padding:.7rem;display:flex}.roster-chip.joined{border-color:#0f766e4d;box-shadow:inset 0 0 0 2px #0f766e14}.roster-chip strong{font-size:.94rem;display:block}.roster-chip small{color:#11182794;font-size:.8rem;display:block}.mini-avatar{aspect-ratio:1;color:var(--paper);border-radius:50%;flex:none;justify-content:center;align-items:center;width:44px;font-size:.82rem;font-weight:900;display:inline-flex}.intro-backdrop{overscroll-behavior:contain;z-index:50;background:#1118277a;justify-content:center;align-items:flex-start;padding:1rem;display:flex;position:fixed;inset:0;overflow-y:auto}.admin-backdrop{z-index:90;background:#1118278f;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.admin-scrim{background:0 0;border:0;position:absolute;inset:0}.admin-modal{background:var(--paper);box-shadow:var(--shadow);z-index:1;border:1px solid #11182724;border-radius:8px;flex-direction:column;width:100%;max-width:1040px;max-height:calc(100svh - 2rem);display:flex;position:relative;overflow:hidden}.admin-modal-header{justify-content:space-between;align-items:flex-start;padding:1.2rem 1.25rem 1rem;display:flex}.admin-modal-header h2{color:var(--navy);font-family:var(--serif);margin:0;font-size:2rem;font-weight:500;line-height:1.05}.admin-modal-header p:last-child{color:#1118279e;margin:.35rem 0 0}.admin-close-button{aspect-ratio:1;background:var(--navy);color:#fff;border:0;border-radius:50%;flex:none;justify-content:center;align-items:center;width:36px;font-weight:900;display:inline-flex}.admin-error{color:#8e2940;background:#fff0f1;border-top:1px solid #a72c422e;border-bottom:1px solid #a72c422e;margin:0;padding:.7rem 1.25rem}.admin-dashboard-tabs{background:#f5ecdc;gap:0;padding:0 1.25rem;display:flex}.admin-dashboard-tab{color:#11182794;background:0 0;border:0;border-bottom:3px solid #0000;align-items:center;gap:.5rem;min-height:50px;padding:.6rem 1rem;font-weight:900;display:inline-flex}.admin-dashboard-tab span{color:inherit;font-size:.75rem}.admin-dashboard-tab.active{border-bottom-color:var(--teal);color:var(--navy)}.admin-whitelist-panel,.admin-rsvp-panel{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.admin-slot-summary{background:#fff;border-bottom:1px solid #1118271a;justify-content:space-between;align-items:center;padding:.8rem 1.25rem;display:flex}.admin-slot-summary strong{color:var(--navy)}.admin-slot-summary span{color:var(--teal);font-size:.8rem;font-weight:900}.admin-whitelist-list{flex:1;overflow-y:auto}.admin-slot-group+.admin-slot-group{border-top:6px solid #f5ecdc}.admin-slot-group-header{z-index:1;background:#f9f4eb;border-bottom:1px solid #11182714;justify-content:space-between;align-items:center;padding:.65rem 1.25rem;display:flex;position:sticky;top:0}.admin-slot-group-header strong{color:var(--navy);font-size:.84rem}.admin-slot-group-header span{color:#11182785;font-size:.72rem;font-weight:800}.admin-whitelist-row{grid-template-columns:minmax(150px,.55fr) minmax(380px,1.6fr) 68px 76px 76px;align-items:center;gap:.7rem;min-height:64px;padding:.65rem 1.25rem;display:grid}.admin-whitelist-row+.admin-whitelist-row{border-top:1px solid #11182714}.admin-whitelist-identity{align-items:center;gap:.5rem;min-width:0;display:flex}.admin-whitelist-identity strong{text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;display:block;overflow:hidden}.admin-whitelist-identity span{background:var(--mint);color:var(--teal);text-transform:uppercase;border-radius:6px;flex:none;padding:.15rem .35rem;font-size:.68rem;font-weight:900}.admin-slot-fields{grid-template-columns:minmax(140px,.7fr) minmax(210px,1.3fr);gap:.6rem;min-width:0;display:grid}.admin-slot-fields label{gap:.2rem;min-width:0;display:grid}.admin-slot-fields label>span{color:#11182785;text-transform:uppercase;font-size:.66rem;font-weight:900}.admin-whitelist-row input{background:var(--paper);color:var(--navy);border:1px solid #1118272e;border-radius:8px;width:100%;min-width:0;min-height:42px;padding:.55rem .7rem}.admin-slot-status{color:#11182775;font-size:.74rem;font-weight:900}.admin-slot-status.assigned{color:var(--teal)}.admin-whitelist-save-button{background:var(--navy);border:1px solid var(--navy);color:#fff}.admin-whitelist-save-button,.admin-whitelist-remove-button{width:100%;font-size:.78rem}.admin-whitelist-remove-button{color:#8e2940;background:#fff;border:1px solid #a72c4247}.admin-whitelist-remove-button:disabled{color:#11182759;cursor:not-allowed;opacity:1;border-color:#1118271f}.admin-empty-state{color:#11182794;text-align:center;margin:0;padding:2rem 1.25rem}.admin-rsvp-list{border-top:1px solid #1118271a;border-bottom:1px solid #1118271a;flex:1;overflow-y:auto}.admin-rsvp-row{grid-template-columns:minmax(0,1fr) 84px 132px;align-items:center;gap:.8rem;min-height:64px;padding:.7rem 1.25rem;display:grid}.admin-rsvp-row+.admin-rsvp-row{border-top:1px solid #11182714}.admin-rsvp-person{min-width:0}.admin-rsvp-person strong,.admin-rsvp-person span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.admin-rsvp-person span{color:#1118278c;text-transform:capitalize;font-size:.78rem}.admin-status{color:#11182785;font-size:.8rem;font-weight:900}.admin-status.accepted{color:var(--teal)}.admin-rsvp-action{background:var(--navy);border:1px solid var(--navy);color:#fff;width:132px;font-size:.78rem}.admin-rsvp-action.remove{color:#8e2940;background:#fff;border-color:#a72c4247}.admin-rsvp-action:disabled,.admin-cancel-button:disabled,.admin-danger-button:disabled,.admin-danger-link:disabled,.admin-whitelist-save-button:disabled{cursor:wait;opacity:.58}.admin-modal-footer{min-height:66px;padding:.75rem 1.25rem}.admin-danger-link{color:#8e2940;text-underline-offset:3px;background:0 0;border:0;min-height:40px;padding:.4rem 0;font-weight:900;text-decoration:underline}.admin-reset-confirmation{justify-content:flex-end;align-items:center;gap:.65rem;display:flex}.admin-reset-confirmation strong{color:#8e2940;margin-right:auto}.admin-cancel-button{color:var(--navy);background:#fff;border:1px solid #11182733}.admin-danger-button{color:#fff;background:#a72c42;border:1px solid #a72c42}.intro-scrim{background:0 0;border:0;position:absolute;inset:0}.intro-modal{text-align:center;z-index:1;width:100%;max-width:400px;margin:auto;padding:1.8rem 1.6rem 2rem;position:relative}.intro-modal .modal-figure{margin-inline:auto}.intro-modal h2{margin-top:.1rem}.close-button{aspect-ratio:1;background:var(--navy);color:var(--paper);border:0;border-radius:50%;justify-content:center;align-items:center;width:36px;font-weight:900;display:inline-flex;position:absolute;top:1rem;right:1rem}.modal-avatar{aspect-ratio:1;color:var(--paper);border-radius:50%;justify-content:center;align-items:center;width:72px;margin-bottom:1rem;font-size:1.2rem;font-weight:900;display:inline-flex}.intro-modal h2{font-size:2rem}.intro-modal>p:last-child{color:#17233ba8;font-family:var(--serif);margin:.35rem 0 0;font-size:1.35rem;font-style:italic;line-height:1.3}.party-avatar.has-figure{--fig-h:calc(var(--fig-base) * var(--fig-scale,1));height:var(--fig-h);top:calc(var(--row-floor) - var(--fig-h) / 2);width:calc(var(--fig-h) * .6)}.party-avatar.row-back{--fig-h:calc(var(--fig-base) * .88 * var(--fig-scale,1));--row-floor:calc(var(--floor) - 14cqh)}.avatar-figure{animation:idleBreathe var(--idle-duration,3.4s) ease-in-out var(--idle-delay,0s) infinite;filter:drop-shadow(0 5px 7px #17233b3d);object-fit:contain;pointer-events:none;transform-origin:bottom;-webkit-user-select:none;user-select:none;width:100%;height:96%;display:block;position:absolute;bottom:3%;left:50%;translate:-50%}.party-avatar.has-figure:before{animation:idleShadow var(--idle-duration,3.4s) ease-in-out var(--idle-delay,0s) infinite;content:"";z-index:-1;background:radial-gradient(#17233b4d,#17233b00 68%);width:64%;height:8%;position:absolute;bottom:1%;left:50%;transform:translate(-50%)}.party-avatar.has-figure .avatar-name{display:none}.party-avatar.has-figure:hover .avatar-figure{filter:drop-shadow(0 7px 11px #17233b4d)}@keyframes idleBreathe{0%,to{transform:translateY(0)scaleY(1)rotate(-1.2deg)}30%{transform:translateY(-5px)scaleY(1.022)rotate(.4deg)}50%{transform:translateY(-6px)scaleY(1.025)rotate(1.2deg)}80%{transform:translateY(-4px)scaleY(1.018)rotate(-.4deg)}}@keyframes idleShadow{0%,to{opacity:.9;width:58px}50%{opacity:.5;width:44px}}.party-avatar[class*=enter-]{will-change:opacity, transform;z-index:30;animation-fill-mode:both}.arrival-fx{pointer-events:none;position:absolute;inset:0;overflow:visible}.arrival-fx i,.fx-word{opacity:0;position:absolute;top:46%;left:50%;translate:-50% -50%}.arrival-fx i{font-size:1.5rem;font-style:normal;line-height:1}.arrival-fx i:before{content:var(--fx-emoji,"✨")}.arrival-fx i:first-child{--a:0deg;--d:0s;--j:-8px}.arrival-fx i:nth-child(2){--a:60deg;--d:55ms;--j:6px}.arrival-fx i:nth-child(3){--a:120deg;--d:.11s;--j:-3px}.arrival-fx i:nth-child(4){--a:180deg;--d:.165s;--j:9px}.arrival-fx i:nth-child(5){--a:240deg;--d:.22s;--j:-6px}.arrival-fx i:nth-child(6){--a:300deg;--d:.275s;--j:2px}.fx-word{color:var(--marigold);letter-spacing:.03em;text-shadow:2px 2px 0 var(--navy), -1px -1px 0 var(--navy), 1px -1px 0 var(--navy), -1px 1px 0 var(--navy);text-transform:uppercase;white-space:nowrap;z-index:5;font-family:Impact,Arial Black,Helvetica Neue,sans-serif;font-size:1.15rem;font-weight:900;top:-10px}.fx-word:before{content:var(--fx-word,"!")}.party-avatar[class*=enter-] .fx-word{animation:fxWord 1s cubic-bezier(.2, 1.4, .4, 1) var(--word-delay,0s) both}@keyframes fxWord{0%{opacity:0;transform:scale(.2)rotate(-18deg)}22%{opacity:1;transform:scale(1.5)rotate(7deg)}38%{transform:scale(1)rotate(-4deg)}78%{opacity:1;transform:scale(1.05)rotate(2deg)}to{opacity:0;transform:scale(1.1)rotate(0)translateY(-20px)}}@keyframes fxBurst{0%{opacity:0;transform:rotate(var(--a)) translateX(4px) scale(.3)}15%{opacity:1}to{opacity:0;transform:rotate(var(--a)) translateX(78px) scale(1.4)}}@keyframes fxRain{0%{opacity:0;transform:translate(calc(var(--a) / 6deg * 1px - 30px), -190px) rotate(0deg)}12%{opacity:1}to{opacity:0;transform:translate(calc(var(--a) / 6deg * 1px - 30px), 70px) rotate(220deg)}}@keyframes fxDust{0%{opacity:0;transform:translateY(46px)scale(.4)}20%{opacity:.9}to{opacity:0;transform:translate(calc(cos(var(--a)) * 62px), calc(40px - sin(var(--a)) * 26px)) scale(1.6)}}@keyframes fxOrbit{0%{opacity:1;transform:translateY(-58px) rotate(var(--a)) translateX(30px) rotate(0deg)}to{opacity:1;transform:translateY(-58px) rotate(calc(var(--a) + 360deg)) translateX(30px) rotate(-360deg)}}@keyframes fxTrail{0%{opacity:1;transform:translate(0, var(--j)) scale(1)}to{opacity:0;transform:translate(calc(var(--entry-x-near) * 2.6), calc(var(--j) + 14px)) scale(.3)}}@keyframes fxRise{0%{opacity:0;transform:translate(calc(var(--a) / 6deg * 1px - 30px), 20px) scale(.6)}20%{opacity:1}to{opacity:0;transform:translate(calc(var(--a) / 6deg * 1px - 30px), -120px) scale(1.2) rotate(40deg)}}.enter-boom{--fx-emoji:"💥";--fx-word:"BOOM!";--word-delay:.42s;animation:1.8s cubic-bezier(.2,.9,.3,1.2) joinBoom}.enter-boom .arrival-fx i{animation:fxBurst .9s ease-out calc(.38s + var(--d)) both;font-size:2.1rem}.enter-boom .avatar-figure{animation:70ms linear .64s 12 shakeGait}@keyframes joinBoom{0%,36%{opacity:0;transform:translate3d(-50%, -50%, 0) scale(.05) rotate(var(--entry-spin))}40%{opacity:1;transform:translate3d(-50%, -50%, 0) scale(.3) rotate(var(--entry-spin))}60%{transform:translate3d(-50%, -50%, 0) scale(1.45) rotate(calc(var(--resting-tilt) + 16deg))}74%{transform:translate3d(-50%, -50%, 0) scale(.88) rotate(calc(var(--resting-tilt) - 9deg))}88%{transform:translate3d(-50%, -50%, 0) scale(1.06) rotate(calc(var(--resting-tilt) + 3deg))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes shakeGait{0%,to{transform:translate(-3px)rotate(-3deg)}50%{transform:translate(3px,-2px)rotate(3deg)}}.enter-firework{--fx-emoji:"🎆";--fx-word:"WHEEEE!";--word-delay:1.15s;animation:2.6s cubic-bezier(.3,.6,.3,1) joinFirework}.enter-firework .arrival-fx i{animation:fxBurst 1s ease-out calc(1.15s + var(--d)) both;font-size:1.9rem}.enter-firework .arrival-fx i:nth-child(2n):before{content:"⭐"}@keyframes joinFirework{0%{opacity:0;transform:translate(-50%,calc(460px - 50%))scale(.3)rotate(0)}6%{opacity:1}42%{transform:translate(-50%,calc(-50% - 150px))scale(.3)rotate(1080deg)}47%{transform:translate(-50%,calc(-50% - 160px))scale(1.7)rotate(1080deg)}54%{transform:translate(-50%,calc(-50% - 140px))scale(1)rotate(1082deg)}84%{transform:translate3d(-50%, calc(-50% + 12px), 0) scale(1.08, .9) rotate(calc(1080deg + var(--resting-tilt)))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(calc(1080deg + var(--resting-tilt)))}}.enter-popsicle{--fx-emoji:"🍦";--fx-word:"SPLAT!";--word-delay:.9s;animation:2.2s cubic-bezier(.5,0,.6,1) joinPopsicle}.enter-popsicle .arrival-fx i{animation:fxRain 1.5s ease-in calc(var(--d) * 3) both;font-size:1.7rem}.enter-popsicle .arrival-fx i:nth-child(odd):before{content:"🍭"}@keyframes joinPopsicle{0%{opacity:0;transform:translate3d(-50%, calc(-50% - 420px), 0) rotate(calc(var(--resting-tilt) + 30deg))}8%{opacity:1}44%{transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt)) scale(1)}52%{transform:translate3d(-50%, calc(-50% + 22px), 0) rotate(var(--resting-tilt)) scale(1.7, .38)}68%{transform:translate3d(-50%, calc(-50% - 18px), 0) rotate(var(--resting-tilt)) scale(.72, 1.4)}82%{transform:translate3d(-50%, calc(-50% + 6px), 0) rotate(var(--resting-tilt)) scale(1.15, .9)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}.enter-confetti{--fx-emoji:"🎊";--fx-word:"YAAAY!";--word-delay:1.05s;animation:2s cubic-bezier(.2,.8,.25,1.15) joinConfetti}.enter-confetti .arrival-fx i{animation:fxRise 1.3s ease-out calc(.95s + var(--d)) both;font-size:1.8rem}.enter-confetti .arrival-fx i:nth-child(odd):before{content:"🎉"}.enter-confetti .avatar-figure{animation:.26s ease-in-out .9s 5 cheerGait}@keyframes joinConfetti{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x)), calc(-50% - 70px), 0) rotate(var(--entry-spin)) scale(.6)}14%{opacity:1}62%{transform:translate3d(-50%, calc(-50% - 40px), 0) rotate(calc(var(--resting-tilt) + 12deg)) scale(1.2)}78%{transform:translate3d(-50%, -50%, 0) rotate(calc(var(--resting-tilt) - 7deg)) scale(.94)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes cheerGait{0%,to{transform:translateY(0)scaleY(.95)}50%{transform:translateY(-16px)scaleY(1.06)}}.enter-banana{--fx-emoji:"🍌";--fx-word:"WHOOPS!";--word-delay:.95s;animation:2.3s cubic-bezier(.25,.7,.3,1) joinBanana}.enter-banana .arrival-fx i{animation:fxBurst .7s ease-out calc(.9s + var(--d)) both;font-size:1.6rem}.enter-banana .arrival-fx i:nth-child(n+3):before{content:"💫"}.enter-banana .avatar-figure{animation:.18s linear 6 dashGaitLite}@keyframes joinBanana{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x)), -50%, 0) rotate(var(--resting-tilt))}8%{opacity:1}38%{transform:translate3d(calc(-50% + var(--entry-x-near)), -50%, 0) rotate(calc(var(--resting-tilt) - 8deg))}48%{transform:translate3d(-50%, calc(-50% - 90px), 0) rotate(calc(var(--resting-tilt) + 110deg))}60%{transform:translate3d(-50%, calc(-50% - 60px), 0) rotate(calc(var(--resting-tilt) + 230deg))}72%{transform:translate3d(-50%, calc(-50% + 18px), 0) rotate(calc(var(--resting-tilt) + 360deg)) scale(1.3, .62)}86%{transform:translate3d(-50%, calc(-50% - 10px), 0) rotate(calc(var(--resting-tilt) + 360deg)) scale(.92, 1.1)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(calc(var(--resting-tilt) + 360deg))}}@keyframes dashGaitLite{0%,to{transform:rotate(-6deg)skew(4deg)translateY(-3px)}50%{transform:rotate(6deg)skew(-4deg)translateY(-11px)}}.enter-zoom{z-index:80;--fx-emoji:"‼️";--fx-word:"HI!!!";--word-delay:.9s;animation:2.1s cubic-bezier(.2,.7,.2,1) joinZoom}.enter-zoom .arrival-fx i{animation:fxBurst .6s ease-out calc(1s + var(--d)) both;font-size:1.2rem}@keyframes joinZoom{0%{opacity:0;transform:translate(-50%,calc(-50% - 50px))scale(.04)}10%{opacity:1}50%{transform:translate3d(-50%, calc(-50% - 10px), 0) scale(3.4) rotate(calc(var(--resting-tilt) - 4deg))}58%{transform:translate3d(-50%, calc(-50% - 10px), 0) scale(3.6) rotate(calc(var(--resting-tilt) + 3deg))}66%{transform:translate3d(-50%, calc(-50% - 10px), 0) scale(3.5) rotate(calc(var(--resting-tilt) - 2deg))}86%{transform:translate3d(-50%, -50%, 0) scale(.85) rotate(var(--resting-tilt))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}.enter-catapult{--fx-emoji:"💨";--fx-word:"THUNK!";--word-delay:1.25s;animation:2s cubic-bezier(.3,.5,.4,1) joinCatapult}.enter-catapult .arrival-fx i{animation:fxDust .7s ease-out calc(1.2s + var(--d) / 2) both;font-size:1.7rem}.enter-catapult .avatar-figure{animation:.24s linear 5 flailGait}@keyframes joinCatapult{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x)), calc(-50% + 40px), 0) rotate(var(--entry-spin)) scale(.8)}6%{opacity:1}32%{transform:translate3d(calc(-50% + var(--entry-x-far)), calc(-50% - 260px), 0) rotate(calc(var(--entry-spin) * .5)) scale(.9)}58%{transform:translate3d(calc(-50% + var(--entry-x-near) * .4), calc(-50% - 60px), 0) rotate(calc(var(--resting-tilt) + 20deg))}64%{transform:translate3d(-50%, calc(-50% + 20px), 0) rotate(var(--resting-tilt)) scale(1.35, .6)}76%{transform:translate3d(-50%, calc(-50% - 40px), 0) rotate(var(--resting-tilt)) scale(.9, 1.15)}86%{transform:translate3d(-50%, calc(-50% + 8px), 0) rotate(var(--resting-tilt)) scale(1.1, .92)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes flailGait{0%,to{transform:rotate(-14deg)scaleY(1.05)}50%{transform:rotate(14deg)scaleY(.95)}}.enter-smoke{--fx-emoji:"💨";--fx-word:"POOF!";--word-delay:.3s;animation:1.7s cubic-bezier(.2,.9,.3,1.1) joinSmoke}.enter-smoke .arrival-fx i{animation:fxBurst 1.1s ease-out calc(.12s + var(--d)) both;font-size:2.3rem}.enter-smoke .avatar-figure{animation:.16s ease-in-out .7s 4 ninjaGait}@keyframes joinSmoke{0%,34%{opacity:0;transform:translate3d(-50%, -50%, 0) scale(.5) rotate(var(--resting-tilt))}46%{opacity:1;transform:translate3d(-50%, -50%, 0) scale(1.25) rotate(calc(var(--resting-tilt) + 9deg))}60%{transform:translate3d(-50%, -50%, 0) scale(.9) rotate(calc(var(--resting-tilt) - 7deg))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes ninjaGait{0%,to{transform:translate(-10px)skew(8deg)}50%{transform:translate(10px)skew(-8deg)}}.enter-portal{--fx-emoji:"🌀";--fx-word:"WOOP!";--word-delay:.9s;animation:2.1s cubic-bezier(.3,.7,.3,1.1) joinPortal}.enter-portal .arrival-fx i:first-child{font-size:5rem;animation:1.6s ease-in-out both fxPortal}.enter-portal .arrival-fx i:not(:first-child){animation:fxBurst .7s ease-out calc(.9s + var(--d)) both;font-size:1.2rem}.enter-portal .arrival-fx i:not(:first-child):before{content:"✨"}@keyframes fxPortal{0%{opacity:0;transform:translateY(-10px)scale(.1)rotate(0)}25%{opacity:1;transform:translateY(-10px)scale(1)rotate(360deg)}70%{opacity:1;transform:translateY(-10px)scale(1)rotate(1080deg)}to{opacity:0;transform:translateY(-10px)scale(.1)rotate(1440deg)}}@keyframes joinPortal{0%,40%{opacity:0;transform:translate3d(-50%, calc(-50% - 30px), 0) scale(.05) rotate(var(--entry-spin))}62%{opacity:1;transform:translate3d(-50%, calc(-50% - 10px), 0) scale(1.15) rotate(calc(var(--resting-tilt) + 30deg))}78%{transform:translate3d(-50%, calc(-50% + 10px), 0) scale(1.1, .85) rotate(calc(var(--resting-tilt) - 10deg))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}.enter-elevator{--fx-emoji:"🔔";--fx-word:"DING!";--word-delay:1.5s;animation:2.4s cubic-bezier(.4,0,.3,1) joinElevator}.enter-elevator .arrival-fx i:first-child{font-size:1.8rem;animation:.9s ease-out 1.45s both fxRise}.enter-elevator .arrival-fx i:not(:first-child){display:none}.enter-elevator .avatar-figure{animation:2.4s ease-in-out elevatorGait}@keyframes joinElevator{0%{opacity:0;transform:translate3d(-50%, calc(-50% + 340px), 0) rotate(var(--resting-tilt))}4%{opacity:1}62%{transform:translate3d(-50%, calc(-50% - 6px), 0) rotate(var(--resting-tilt))}70%{transform:translate3d(-50%, calc(-50% + 4px), 0) rotate(var(--resting-tilt))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes elevatorGait{0%,60%{transform:scaleY(1)rotate(0)}66%{transform:scaleY(.92)rotate(0)}74%{transform:scaleY(1.03)rotate(0)}to{transform:scaleY(1)rotate(0)}}.enter-trampoline{--fx-emoji:"💨";--fx-word:"BOING!";--word-delay:.52s;animation:2.8s linear joinTrampoline}.enter-trampoline .arrival-fx i{animation:fxDust .5s ease-out calc(.48s + var(--d) / 3) both;font-size:1.3rem}.enter-trampoline .avatar-figure{animation:.3s ease-in-out 8 flailGait}@keyframes joinTrampoline{0%{opacity:0;transform:translate3d(-50%, calc(-50% - 400px), 0) rotate(var(--resting-tilt))}6%{opacity:1}18%{transform:translate3d(-50%, calc(-50% + 22px), 0) rotate(var(--resting-tilt)) scale(1.4, .55)}20%{transform:translate3d(-50%, calc(-50% + 22px), 0) rotate(var(--resting-tilt)) scale(1.4, .55)}40%{transform:translate3d(-50%, calc(-50% - 240px), 0) rotate(calc(var(--resting-tilt) + 180deg)) scale(.9, 1.15)}58%{transform:translate3d(-50%, calc(-50% + 18px), 0) rotate(calc(var(--resting-tilt) + 360deg)) scale(1.3, .65)}74%{transform:translate3d(-50%, calc(-50% - 110px), 0) rotate(calc(var(--resting-tilt) + 360deg)) scale(.95, 1.08)}86%{transform:translate3d(-50%, calc(-50% + 10px), 0) rotate(calc(var(--resting-tilt) + 360deg)) scale(1.15, .85)}94%{transform:translate3d(-50%, calc(-50% - 30px), 0) rotate(calc(var(--resting-tilt) + 360deg))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(calc(var(--resting-tilt) + 360deg))}}.enter-spring{--fx-emoji:"💫";--fx-word:"SPROING!";--word-delay:.95s;animation:2.3s cubic-bezier(.4,0,.4,1) joinSpring}.enter-spring .arrival-fx i{animation:fxBurst .8s ease-out calc(.95s + var(--d)) both;font-size:1.5rem}@keyframes joinSpring{0%{opacity:0;transform:translate3d(-50%, calc(-50% + 60px), 0) rotate(var(--resting-tilt)) scale(1.6, .16)}10%{opacity:1}36%{transform:translate3d(-50%, calc(-50% + 60px), 0) rotate(var(--resting-tilt)) scale(1.9, .12)}42%{transform:translate3d(-50%, calc(-50% + 60px), 0) rotate(calc(var(--resting-tilt) - 6deg)) scale(1.95, .1)}56%{transform:translate3d(-50%, calc(-50% - 230px), 0) rotate(var(--resting-tilt)) scale(.55, 1.9)}74%{transform:translate3d(-50%, calc(-50% + 14px), 0) rotate(var(--resting-tilt)) scale(1.3, .7)}84%{transform:translate3d(-50%, calc(-50% - 22px), 0) rotate(var(--resting-tilt)) scale(.9, 1.15)}92%{transform:translate3d(-50%, calc(-50% + 4px), 0) rotate(var(--resting-tilt)) scale(1.06, .95)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}.enter-dizzy{--fx-emoji:"⭐";--fx-word:"OOF!";--word-delay:.7s;animation:2.7s cubic-bezier(.45,0,.5,1) joinDizzy}.enter-dizzy .arrival-fx i{font-size:1.1rem;animation:.7s linear .8s 3 fxOrbit}.enter-dizzy .arrival-fx i:nth-child(n+4){display:none}.enter-dizzy .avatar-figure{animation:.5s ease-in-out .8s 4 dizzyGait}@keyframes joinDizzy{0%{opacity:0;transform:translate3d(-50%, calc(-50% - 420px), 0) rotate(calc(var(--resting-tilt) + 15deg))}8%{opacity:1}26%{transform:translate3d(-50%, calc(-50% + 16px), 0) rotate(var(--resting-tilt)) scale(1.3, .7)}36%{transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt)) scale(1)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes dizzyGait{0%{transform:rotate(-9deg)translate(-6px)}25%{transform:rotate(0)translate(0)translateY(-4px)}50%{transform:rotate(9deg)translate(6px)}75%{transform:rotate(0)translate(0)translateY(-4px)}to{transform:rotate(-9deg)translate(-6px)}}.enter-disco{--fx-emoji:"🪩";--fx-word:"GROOVY";--word-delay:1.3s;animation:2.6s cubic-bezier(.33,.1,.2,1) joinDisco}.enter-disco .arrival-fx i:first-child{font-size:2.4rem;animation:2.6s ease-in-out both fxDiscoBall}.enter-disco .arrival-fx i:not(:first-child){animation:fxBurst .9s ease-out calc(1.2s + var(--d) * 2) both;font-size:1.1rem}.enter-disco .arrival-fx i:not(:first-child):before{content:"✨"}.enter-disco .avatar-figure{animation:.46s ease-in-out 7 discoGait}@keyframes fxDiscoBall{0%{opacity:0;transform:translateY(-110px)rotate(0)}15%,85%{opacity:1;transform:translateY(-80px)rotate(0)}to{opacity:0;transform:translateY(-120px)rotate(60deg)}}@keyframes joinDisco{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x)), -50%, 0) rotate(calc(var(--resting-tilt) + var(--entry-spin-near) * .14))}14%{opacity:1}74%{transform:translate3d(calc(-50% + var(--entry-x-mid)), -50%, 0) rotate(calc(var(--resting-tilt) + var(--entry-spin-near) * .18))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes discoGait{0%,to{filter:hue-rotate()drop-shadow(0 5px 7px #ff008080);transform:rotate(-3deg)skew(4deg)translateY(0)}50%{filter:hue-rotate(300deg)drop-shadow(0 5px 7px #00c8ff80);transform:rotate(3deg)skew(-4deg)translateY(-6px)}}.enter-rocket{--fx-emoji:"🔥";--fx-word:"VROOOM!";--word-delay:.15s;animation:1.6s cubic-bezier(.1,.9,.2,1) joinRocket}.enter-rocket .arrival-fx i{animation:fxTrail .5s linear calc(var(--d) / 2) 3;font-size:1.6rem}.enter-rocket .arrival-fx i:nth-child(3n):before{content:"💨"}.enter-rocket .avatar-figure{animation:1.6s ease-out rocketGait}@keyframes joinRocket{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x) * 1.4), -50%, 0) rotate(calc(var(--resting-tilt) + var(--entry-spin-near) * -.5)) scale(.8)}8%{opacity:1}52%{transform:translate3d(calc(-50% + var(--entry-overshoot-x) * 4), -50%, 0) rotate(calc(var(--resting-tilt) + var(--entry-spin-near) * .3)) scale(1.05, .95)}70%{transform:translate3d(calc(-50% + var(--entry-overshoot-x) * -1.5), -50%, 0) rotate(calc(var(--resting-tilt) + var(--entry-spin-near) * -.12))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes rocketGait{0%,45%{transform:skew(0deg)scaleX(1.15)}55%{transform:skew(0deg)scaleX(.85)}to{transform:skew(0deg)scaleX(1)}}.enter-balloon{--fx-emoji:"🎈";--fx-word:"POP!";--word-delay:2s;animation:3s cubic-bezier(.4,.2,.5,1) joinBalloon}.enter-balloon .arrival-fx i:first-child{font-size:3rem;animation:2.05s ease-in-out both fxBalloon}.enter-balloon .arrival-fx i:not(:first-child){animation:fxBurst .6s ease-out calc(2s + var(--d) / 2) both;font-size:1.3rem}.enter-balloon .arrival-fx i:not(:first-child):before{content:"💥"}.enter-balloon .avatar-figure{animation:.9s ease-in-out 2 dangleGait}@keyframes fxBalloon{0%{opacity:0;transform:translateY(-130px)rotate(-8deg)}8%,96%{opacity:1}50%{transform:translateY(-118px)rotate(8deg)}to{opacity:0;transform:translateY(-114px)rotate(-6deg)scale(1.6)}}@keyframes joinBalloon{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x-mid)), calc(-50% - 400px), 0) rotate(calc(var(--resting-tilt) - 10deg))}6%{opacity:1}34%{transform:translate3d(calc(-50% + var(--entry-x-near)), calc(-50% - 240px), 0) rotate(calc(var(--resting-tilt) + 10deg))}66%{transform:translate3d(-50%, calc(-50% - 90px), 0) rotate(calc(var(--resting-tilt) - 8deg))}68%{transform:translate3d(-50%, calc(-50% - 92px), 0) rotate(calc(var(--resting-tilt) - 8deg))}78%{transform:translate3d(-50%, calc(-50% + 20px), 0) rotate(var(--resting-tilt)) scale(1.35, .6)}88%{transform:translate3d(-50%, calc(-50% - 16px), 0) rotate(var(--resting-tilt)) scale(.92, 1.1)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes dangleGait{0%,to{transform-origin:top;transform:rotate(-7deg)}50%{transform-origin:top;transform:rotate(7deg)}}.enter-tornado{--fx-emoji:"🌪️";--fx-word:"WHIRRRR";--word-delay:.3s;animation:2.4s cubic-bezier(.2,.7,.3,1) joinTornado}.enter-tornado .arrival-fx i:first-child{font-size:4rem;animation:1.5s linear both fxTornado}.enter-tornado .arrival-fx i:not(:first-child){animation:fxBurst .8s ease-out calc(1.4s + var(--d)) both;font-size:1.1rem}.enter-tornado .arrival-fx i:not(:first-child):before{content:"🍃"}@keyframes fxTornado{0%{opacity:0;transform:translate(var(--entry-x), 10px) scale(.5) rotate(0deg)}10%,80%{opacity:1}to{opacity:0;transform:translate(0)scale(1.4)rotate(-40deg)}}@keyframes joinTornado{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x)), -50%, 0) scale(.6) rotate(0deg)}10%{opacity:1}58%{filter:blur(2px);transform:translate3d(calc(-50% + var(--entry-x-near) * .5), -50%, 0) scale(1.05) rotate(calc(var(--entry-full-spin)))}66%{filter:blur();transform:translate3d(-50%, -50%, 0) scale(1.15, .9) rotate(calc(var(--entry-full-spin) + var(--resting-tilt) - 14deg))}78%{transform:translate3d(-50%, -50%, 0) rotate(calc(var(--entry-full-spin) + var(--resting-tilt) + 10deg))}90%{transform:translate3d(-50%, -50%, 0) rotate(calc(var(--entry-full-spin) + var(--resting-tilt) - 5deg))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(calc(var(--entry-full-spin) + var(--resting-tilt)))}}.enter-superhero{--fx-emoji:"💥";--fx-word:"THUD.";--word-delay:.75s;animation:2.5s cubic-bezier(.5,0,.3,1) joinSuperhero}.enter-superhero .arrival-fx i{animation:fxDust .8s ease-out calc(.7s + var(--d) / 2) both;font-size:1.9rem}.enter-superhero .arrival-fx i:nth-child(2n):before{content:"🪨"}.enter-superhero .avatar-figure{animation:2.5s cubic-bezier(.5,0,.3,1) heroGait}@keyframes joinSuperhero{0%{opacity:0;transform:translate3d(-50%, calc(-50% - 460px), 0) rotate(var(--resting-tilt)) scale(.9)}10%{opacity:1}28%{transform:translate3d(-50%, calc(-50% + 24px), 0) rotate(var(--resting-tilt)) scale(1.25, .7)}34%,72%{transform:translate3d(-50%, calc(-50% + 22px), 0) rotate(var(--resting-tilt)) scale(1.18, .74)}88%{transform:translate3d(-50%, calc(-50% - 8px), 0) rotate(var(--resting-tilt)) scale(.96, 1.05)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes heroGait{0%,26%{transform:perspective(500px)rotateX(0)}30%,70%{transform:perspective(500px)rotateX(18deg)}90%,to{transform:perspective(500px)rotateX(0)}}.enter-twinkle{--fx-emoji:"✨";--fx-word:"TA-DA!";--word-delay:1.15s;animation:2s cubic-bezier(.2,.8,.25,1.1) joinTwinkle}.enter-twinkle .arrival-fx i{animation:fxBurst 1.1s ease-out calc(.45s + var(--d) * 1.6) both;font-size:1.7rem}.enter-twinkle .arrival-fx i:nth-child(2n):before{content:"💎"}@keyframes joinTwinkle{0%{opacity:0;transform:translate3d(-50%, calc(-50% - 40px), 0) scale(.3) rotate(var(--resting-tilt))}30%{opacity:1;transform:translate3d(-50%, calc(-50% - 24px), 0) scale(.9) rotate(var(--resting-tilt))}62%{transform:translate3d(-50%, -50%, 0) scale(1.12) rotate(var(--resting-tilt))}80%{transform:translate3d(-50%, -50%, 0) scale(.96) rotate(var(--resting-tilt))}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}.enter-runway{--fx-emoji:"📸";--fx-word:"FLASH!";--word-delay:1.5s;animation:2.3s cubic-bezier(.3,.6,.3,1) joinRunway}.enter-runway .arrival-fx i{animation:fxFlash .38s ease-out calc(1.35s + var(--d) * 1.5) both;font-size:1.5rem}.enter-runway .arrival-fx i:nth-child(2n):before{content:"✦"}.enter-runway .avatar-figure{animation:.62s ease-in-out 3 struttStride}@keyframes fxFlash{0%{opacity:0;transform:rotate(var(--a)) translateX(30px) scale(.4)}30%{opacity:1;transform:rotate(var(--a)) translateX(64px) scale(1.5)}to{opacity:0;transform:rotate(var(--a)) translateX(70px) scale(1)}}@keyframes joinRunway{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x)), -50%, 0) rotate(var(--resting-tilt))}10%{opacity:1}60%{transform:translate3d(calc(-50% + var(--entry-x-near) * .4), -50%, 0) rotate(var(--resting-tilt))}66%{transform:translate3d(-50%, -50%, 0) rotate(calc(var(--resting-tilt) - 5deg)) scale(1.04)}74%{transform:translate3d(-50%, -50%, 0) rotate(calc(var(--resting-tilt) + 3deg)) scale(1.06)}88%{transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt)) scale(1.02)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}@keyframes struttStride{0%{transform-origin:38% 100%;transform:translateY(0)rotate(-4.5deg)skew(2deg)scaleY(.985)}25%{transform-origin:50% 100%;transform:translateY(-8px)rotate(0)skew(0deg)scaleY(1.02)}50%{transform-origin:62% 100%;transform:translateY(0)rotate(4.5deg)skew(-2deg)scaleY(.985)}75%{transform-origin:50% 100%;transform:translateY(-8px)rotate(0)skew(0deg)scaleY(1.02)}to{transform-origin:38% 100%;transform:translateY(0)rotate(-4.5deg)skew(2deg)scaleY(.985)}}.enter-petals{--fx-emoji:"🌸";--fx-word:"OOH LA LA";--word-delay:1.5s;animation:2.4s cubic-bezier(.3,.6,.25,1) joinPetals}.enter-petals .arrival-fx i{animation:fxRain 1.9s ease-in calc(.2s + var(--d) * 2.2) both;font-size:1.5rem}.enter-petals .arrival-fx i:nth-child(2n):before{content:"🌷"}.enter-petals .avatar-figure{animation:.76s ease-in-out 3 glideGait}@keyframes glideGait{0%,to{transform:translateY(0)rotate(-1.6deg)}50%{transform:translateY(-4px)rotate(1.6deg)}}@keyframes joinPetals{0%{opacity:0;transform:translate3d(calc(-50% + var(--entry-x)), -50%, 0) rotate(var(--resting-tilt))}12%{opacity:1}70%{transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}80%{transform:translate3d(-50%, calc(-50% + 6px), 0) rotate(var(--resting-tilt)) scale(1.02, .97)}90%{transform:translate3d(-50%, calc(-50% - 3px), 0) rotate(var(--resting-tilt)) scale(.99, 1.02)}to{opacity:1;transform:translate3d(-50%, -50%, 0) rotate(var(--resting-tilt))}}.couple-avatar.has-figure{width:108px;height:196px}.couple-figure{filter:drop-shadow(0 6px 9px #17233b42);object-fit:contain;pointer-events:none;transform-origin:bottom;-webkit-user-select:none;user-select:none;width:100%;height:160px;animation:2.9s ease-in-out infinite idleBreathe;display:block}.couple-avatar.kc .couple-figure{animation-delay:.48s}.couple-avatar.has-figure:before{content:"";z-index:-1;background:radial-gradient(#17233b52,#17233b00 68%);width:68px;height:15px;position:absolute;bottom:26px;left:50%;transform:translate(-50%)}.couple-avatar.has-figure .couple-name{margin-top:2px}.photo-frame:has(.couple-avatar.has-figure) .couple-plus{top:calc(53% + 74px)}.couple-together{height:var(--couple-h);left:var(--group-centre);top:calc(var(--floor) - var(--couple-h) / 2);z-index:14;width:max-content;position:absolute;transform:translate(-50%,-50%)}.couple-together-figure{filter:drop-shadow(0 7px 10px #17233b47);object-fit:contain;pointer-events:none;transform-origin:bottom;-webkit-user-select:none;user-select:none;width:auto;height:100%;animation:3.1s ease-in-out infinite idleBreathe;display:block}.couple-together:before{content:"";z-index:-1;background:radial-gradient(#17233b52,#17233b00 68%);width:84%;height:7%;position:absolute;bottom:-2%;left:50%;transform:translate(-50%)}.couple-half{cursor:pointer;background:0 0;border:0;width:50%;padding:0;position:absolute;top:0;bottom:0}.couple-half.bri{left:0}.couple-half.kc{right:0}.couple-half:hover~.couple-together-figure,.couple-together:hover .couple-together-figure{filter:drop-shadow(0 9px 14px #17233b57)brightness(1.03)}.modal-figure{justify-content:center;align-items:flex-end;width:92px;height:132px;margin-bottom:.6rem;display:flex}.modal-figure img{filter:drop-shadow(0 6px 10px #17233b38);object-fit:contain;width:100%;height:100%}@media (max-width:860px){.photo-frame{min-height:560px}}@media (max-width:720px){.admin-manage-button{width:100%}.admin-rsvp-row{grid-template-columns:minmax(0,1fr) auto;gap:.45rem .75rem;padding:.8rem 1rem}.admin-dashboard-tabs{padding:0 .5rem}.admin-dashboard-tab{flex:1;justify-content:center;padding-inline:.5rem}.admin-whitelist-row{grid-template-columns:minmax(0,1fr) 76px 86px;padding:.8rem 1rem}.admin-whitelist-identity,.admin-slot-fields{grid-column:1/-1}.admin-slot-fields{grid-template-columns:1fr}.admin-slot-status{align-self:center}.admin-rsvp-action{grid-column:1/-1;width:100%}.admin-reset-confirmation{flex-direction:column;align-items:stretch}.admin-reset-confirmation strong{margin:0}.photo-frame{min-height:660px}.couple-avatar{width:74px;height:88px;left:50%}.couple-avatar.bri{top:40%;left:50%}.couple-avatar.kc{top:59%;left:50%}.couple-monogram{border-width:3px;width:62px;height:62px;font-size:1.35rem}.couple-name{min-width:50px;padding:.18rem .4rem;font-size:.78rem}.couple-plus{width:27px;height:27px;top:49.5%;left:50%}.photo-frame{--fig-base:104px;--couple-h:150px;--group-centre:50%}.party-avatar{height:76px;left:var(--formation-mobile-left);top:calc(var(--row-floor) - 38px);width:62px}.party-avatar.stage-left{--row-floor:calc(var(--floor) - var(--bri-lift,150px))}.party-avatar.stage-left.row-back{--row-floor:calc(var(--floor) - var(--bri-lift,150px) - 10px)}.party-avatar.stage-right.row-back{--row-floor:calc(var(--floor) - 10px)}.couple-together{top:calc(var(--floor) - var(--couple-lift,300px) - var(--couple-h) / 2)}.avatar-face{border-width:3px;width:48px;height:48px;font-size:.88rem}.avatar-name{font-size:calc(var(--avatar-name-size) * .8);width:62px;min-height:27px;padding:.18rem .2rem;top:42px}.roster-grid{grid-template-columns:1fr}.section-heading h2{font-size:2rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important}}.stage{--floor:74%;background:#f3e6d3;height:calc(100svh - 70px);min-height:640px;position:relative;overflow:hidden}.spotlight{bottom:calc(100% - var(--floor));height:84%;left:var(--group-centre);pointer-events:none;z-index:1;background:radial-gradient(at 50% 100%,#ffffffd9,#ffffff4d 45%,#fff0 75%);width:64%;position:absolute;transform:translate(-50%)}.stage-copy{pointer-events:none;text-align:center;z-index:2;max-width:860px;margin:0 auto;position:absolute;inset:1.4rem 5vw auto}.stage-copy .eyebrow{margin-bottom:.6rem}.stage-copy h1{margin:0 0 .4rem;font-size:clamp(1.9rem,3.1vw,3rem);font-weight:500;line-height:1.06}.invite-copy{color:#17233ba8;font-family:var(--serif);max-width:640px;margin:0 auto;font-size:1.15rem;font-style:italic;line-height:1.4}.stage-rsvp{height:calc(100% - var(--floor));z-index:40;bottom:0;flex-direction:column;justify-content:flex-start;align-items:center;gap:.55rem;padding:3rem 5vw 0;display:flex;position:absolute;inset-inline:0}.button-row{justify-content:center;align-items:center;gap:.8rem;display:flex;position:relative}.yes-button{background:var(--navy);color:var(--paper);letter-spacing:.05em;border:0;border-radius:999px;min-width:220px;min-height:54px;padding:.9rem 2rem;font-size:.95rem;font-weight:600;transition:background .16s,opacity .16s,transform .18s}.yes-button:hover{background:#243556;transform:translateY(-2px)}.yes-button:disabled{cursor:wait;opacity:.78;transform:none}.yes-button.is-wriggling{animation:yesWriggle var(--wriggle-duration) ease-in-out;transform-origin:50%}.no-button{color:#17233bb8;letter-spacing:.05em;background:#fffaf2b3;border:1px solid #17233b47;border-radius:999px;min-width:96px;min-height:54px;padding:.9rem 1.4rem;font-size:.95rem;font-weight:600}.no-message{color:#17233b8c;font-family:var(--serif);text-align:center;min-height:1.4rem;margin:0;font-size:1rem;font-style:italic}.letter-link{color:var(--navy);cursor:pointer;font-family:var(--serif);text-underline-offset:.28em;background:0 0;border:0;padding:.15rem .4rem;font-size:1.08rem;font-style:italic;-webkit-text-decoration:underline #17233b59;text-decoration:underline #17233b59}.letter-link:hover{color:var(--rose);text-decoration-color:currentColor}.letter-modal{max-width:min(880px,94vw);padding:1.3rem 2.4rem}.letter-modal .letter-card{text-align:left;gap:.6rem;margin-top:.7rem;font-size:1.02rem;line-height:1.42}.letter-modal .letter-answer{margin-top:.9rem}.letter-modal h2{font-size:1.55rem}.letter-modal .eyebrow{margin-bottom:.35rem}.empty-frame{color:#17233b8c;font-family:var(--serif);text-align:center;left:50%;top:calc(var(--floor) + .45rem);z-index:2;width:min(86%,480px);margin:0;font-size:1.15rem;font-style:italic;position:absolute;transform:translate(-50%)}@media (max-width:860px){.stage{flex-direction:column;height:auto;min-height:auto;display:flex}.stage .photo-frame{order:2;height:70svh;min-height:560px;position:relative;inset:auto}.stage-copy{order:1;padding:1rem 5vw .8rem;position:static;inset:auto}.stage-rsvp{order:3;height:auto;padding:1.6rem 5vw 2.6rem;position:static;inset:auto}}.answer-dock{display:contents}.admin-footer{color:#17233b99;font-family:var(--serif);z-index:45;align-items:center;gap:1.4rem;font-size:1rem;font-style:italic;display:flex;position:absolute;bottom:1.1rem;right:5vw}.admin-footer-preview{align-items:baseline;gap:.45rem;display:inline-flex}.admin-footer-preview select{-webkit-appearance:none;appearance:none;color:var(--navy);cursor:pointer;font:inherit;background:0 0;border:0;border-bottom:1px solid #17233b59;padding:0 1.1rem .1rem .1rem;font-style:normal;position:relative}.admin-footer-preview{position:relative}.admin-footer-preview:after{color:#17233b80;content:"▾";pointer-events:none;font-size:.7rem;position:absolute;top:.2rem;right:.15rem}.admin-footer-link{color:var(--navy);cursor:pointer;font:inherit;text-underline-offset:.28em;background:0 0;border:0;padding:0;-webkit-text-decoration:underline #17233b59;text-decoration:underline #17233b59}.admin-footer-link:hover,.admin-footer-preview select:hover{color:var(--rose)}@media (max-width:860px){.admin-footer{order:4;justify-content:flex-end;padding:0 5vw 1.4rem;position:static}}.brand-text{line-height:1.05;display:grid}.brand-text small{color:#17233b99;font-family:var(--serif);letter-spacing:.04em;font-size:.82rem;font-style:italic;font-weight:500}.account-footer{color:#17233b8c;font-family:var(--serif);z-index:45;align-items:baseline;gap:.7rem;font-size:.98rem;font-style:italic;display:flex;position:absolute;bottom:1.1rem;left:5vw}.signed-in-email{text-overflow:ellipsis;white-space:nowrap;max-width:34vw;overflow:hidden}.account-switch-link{color:var(--navy);text-underline-offset:.28em;-webkit-text-decoration:underline #17233b59;text-decoration:underline #17233b59}.account-switch-link:hover{color:var(--rose);text-decoration-color:currentColor}@media (max-width:860px){.account-footer{order:5;padding:0 5vw 1.6rem;position:static}.signed-in-email{max-width:60vw}}.accepted-state{text-align:center;justify-items:center;gap:.15rem;display:grid}.accepted-state strong{color:var(--navy);font-family:var(--serif);font-size:1.5rem;font-weight:500}.accepted-state p{color:#17233b9e;font-family:var(--serif);margin:0;font-size:1.05rem;font-style:italic}.whatsapp-link{color:var(--navy);letter-spacing:.05em;border:1px solid #17233b4d;border-radius:999px;align-items:center;min-height:44px;margin-top:.6rem;padding:.65rem 1.4rem;font-size:.9rem;font-weight:600;transition:background .16s,color .16s;display:inline-flex}.whatsapp-link:hover{background:var(--navy);color:var(--paper)}.letter-answer{justify-items:center;gap:.5rem;margin-top:1.6rem;display:grid}.letter-answer .button-row{width:100%}.envelope{color:var(--navy);cursor:pointer;font-family:var(--serif);background:0 0;border:0;justify-items:center;gap:.7rem;padding:0;font-size:1.08rem;font-style:italic;animation:.7s cubic-bezier(.25,1.4,.4,1) both envelopeArrive,2.4s ease-in-out .7s infinite envelopeFloat;display:grid}.envelope-body{perspective:700px;width:134px;height:88px;display:block;position:relative}.envelope-letter,.envelope-front,.envelope-flap,.envelope-seal{display:block;position:absolute}.envelope-letter{z-index:1;background:repeating-linear-gradient(#0000 0 11px,#17233b1f 11px 12px) 12px 18px/calc(100% - 24px) 40px no-repeat,#fffdf8;border:1px solid #17233b24;border-radius:3px;height:74px;inset:10px 10px auto}.envelope-front{clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);z-index:2;background:linear-gradient(135deg,#0000 49.6%,#17233b29 50%,#0000 50.4%),linear-gradient(225deg,#0000 49.6%,#17233b29 50%,#0000 50.4%),#fbf6ec;border:1px solid #17233b47;border-radius:6px;inset:0;box-shadow:0 14px 30px #17233b29}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:top;z-index:3;background:#efe3cf;border-top:1px solid #17233b47;height:48px;inset:0 0 auto}.envelope-seal{z-index:4;background:radial-gradient(circle at 38% 32%,#9a2a3c,#6e1a29 70%);border-radius:50%;width:40px;height:40px;padding:5px;top:46px;left:50%;transform:translate(-50%,-50%);box-shadow:0 2px 6px #00000047,inset 0 0 0 2px #0000001f}.envelope-seal img{object-fit:contain;width:100%;height:100%;display:block}.envelope:hover .envelope-body{transition:transform .18s;transform:translateY(-3px)rotate(-1.5deg)}.envelope-label{text-underline-offset:.28em;-webkit-text-decoration:underline #17233b59;text-decoration:underline #17233b59}.envelope.is-opening{animation:.42s ease-in-out both envelopeShake}.envelope.is-opening .envelope-flap{animation:.52s cubic-bezier(.4,0,.3,1) .3s forwards flapOpen}.envelope.is-opening .envelope-seal{animation:.26s ease-out .3s forwards sealFade}.envelope.is-opening .envelope-letter{animation:.65s cubic-bezier(.2,.9,.2,1.1) .62s forwards letterRise}.envelope-stage{pointer-events:none;z-index:60;place-items:center;display:grid;position:absolute;inset:0}.envelope-stage .envelope{pointer-events:auto;gap:3.2rem}.envelope-stage .envelope-body{transform-origin:50%;transform:scale(1.9)}.envelope-stage .envelope:hover .envelope-body{transform:scale(1.9)}.envelope-stage .envelope-label{-webkit-backdrop-filter:blur(6px);background:#fbf6ecdb;border-radius:999px;padding:.25rem 1rem .35rem;font-size:1.35rem;box-shadow:0 4px 14px #17233b1f}@keyframes envelopeShake{0%,to{transform:rotate(0)}20%{transform:rotate(-5deg)translateY(-4px)}45%{transform:rotate(5deg)translateY(-6px)}70%{transform:rotate(-3deg)translateY(-2px)}}@keyframes envelopeArrive{0%{opacity:0;transform:translateY(-60vh)rotate(-14deg)scale(.6)}65%{opacity:1;transform:translateY(18px)rotate(4deg)scale(1.04)}85%{transform:translateY(-8px)rotate(-2deg)scale(.98)}to{opacity:1;transform:translateY(0)rotate(0)scale(1)}}@keyframes envelopeFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes flapOpen{0%{z-index:3;transform:rotateX(0)}49%{z-index:3}50%{z-index:0}to{z-index:0;transform:rotateX(-178deg)}}@keyframes sealFade{to{opacity:0;transform:translate(-50%,-50%)scale(.6)}}@keyframes letterRise{0%{z-index:1;transform:translateY(0)scale(1)}60%{z-index:5;transform:translateY(-84px)scale(1.06)}to{z-index:5;transform:translateY(-92px)scale(1.08)}}@media (max-width:720px){.envelope-stage .envelope-body,.envelope-stage .envelope:hover .envelope-body{transform:scale(1.35)}.envelope-stage .envelope{gap:2rem}}.letter-link:disabled{cursor:default;opacity:.45;text-decoration-color:#0000}.accepted-state .letter-link{margin-top:.4rem}.letter-card s{opacity:.65;text-decoration-thickness:1.5px}@media (max-width:720px){.app-shell{flex-direction:column;display:flex;overflow-x:clip}.stage{flex:1 0 auto;overflow:clip}.stage .photo-frame{--floor:calc(50% + var(--phone-frame-h,508px) / 2 - 24px);height:auto;min-height:var(--phone-frame-h,508px);flex:1 0 auto}.answer-dock{padding:.7rem 5vw calc(.6rem + env(safe-area-inset-bottom));z-index:46;background:#f7eedf;border-top:1px solid #17233b14;flex-direction:column;order:3;align-items:center;gap:.3rem;display:flex;position:sticky;bottom:0;box-shadow:0 -8px 24px #17233b14}.stage-rsvp{order:0;gap:.25rem;width:100%;height:auto;padding:0;position:static;inset:auto}.answer-dock .admin-footer,.answer-dock .account-footer{justify-content:center;gap:.9rem;padding:0;font-size:.9rem;position:static}body{background:#f7eedf}.answer-dock .admin-footer{order:1}.answer-dock .account-footer{order:2}.stage-rsvp:empty{display:none}.stage-rsvp .button-row{gap:.6rem;width:100%}.stage-rsvp .yes-button{flex:1;min-width:0;min-height:50px}.stage-rsvp .no-button{min-height:50px}.stage-rsvp .no-message{min-height:0;font-size:.9rem}.stage-rsvp .letter-link{padding-block:.1rem;font-size:1rem}.stage-rsvp .accepted-state{gap:.25rem}.stage-rsvp .whatsapp-link{justify-content:center;width:100%;margin-top:0}.topbar{gap:.6rem;min-height:60px;padding-block:.55rem}.brand{gap:.5rem;min-width:0;font-size:1.2rem}.brand-mark{width:38px}.brand-text small{font-size:.72rem}.wedding-date{flex:none;font-size:1rem}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}
