:root{--cream: #f4efe4;--paper: #fbf8f1;--ink: #2d2438;--plum: #2b2233;--gold: #a8691d;--gold-l: #e0a23a;--muted: #6f6677;--line: #e3dccb;--red: #d71920;--serif: "Cormorant Garamond", Georgia, serif;--sans: "Inter", system-ui, sans-serif}*{box-sizing:border-box;margin:0}html,body,#root{height:100%}body{background:#e9e3d4;color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}.page{min-height:calc(100vh - var(--nav-h));display:flex;flex-direction:column;position:relative}.body{padding:14px 24px 8px;display:flex;flex-direction:column;gap:10px}.body.tight{padding-bottom:0}.body.center{align-items:center;text-align:center}.foot{margin-top:auto;padding:16px 24px 26px;display:flex;flex-direction:column;gap:10px;align-items:stretch;text-align:center}.head{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;padding:8px 12px 0}.back{font-size:28px;line-height:1;color:var(--ink);padding:0 8px}.brand{font:500 15px var(--serif);letter-spacing:.38em;color:var(--ink)}.eyebrow{font:600 9.5px var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}.eyebrow.light{color:#ffd9d9}h2{font:500 29px/1.08 var(--serif)}h3{font:600 18px/1.2 var(--serif)}.display{font:500 54px/.98 var(--serif);letter-spacing:.01em}.italic{font:italic 400 17px var(--serif);color:var(--gold)}.small{font-size:12.5px;line-height:1.5;color:#4b4355}.fine{font-size:10.5px;color:var(--muted);line-height:1.4}.center{text-align:center}.light{color:#fff!important}.bigp{font:500 22px var(--serif)}.tablename{font:italic 500 20px var(--serif)}.link{font-size:12px;text-decoration:underline;color:var(--ink);text-underline-offset:3px;padding:6px}.link.tiny{font-size:11px;color:var(--muted)}.center-link{display:block;text-align:center;cursor:pointer}.link-text{font-size:12px;color:var(--gold);word-break:break-all}.btn{width:100%;padding:15px 18px;border-radius:999px;background:var(--plum);color:#fff;font:500 14px var(--sans);transition:transform .08s,opacity .15s}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--plum)}.btn.redbtn{background:var(--red)}.page.reveal .foot .btn{background:#fff;color:var(--red)}.shutter{width:64px;height:64px;border-radius:50%;margin:6px auto;border:4px solid var(--plum);background:#fff;box-shadow:inset 0 0 0 4px #fff,inset 0 0 0 40px var(--plum)}.shutter:disabled{opacity:.35}.page.hero{background:var(--cream)}.herophoto{height:58%;position:absolute;inset:0 0 auto 0;background-size:cover;background-position:center top;-webkit-mask-image:linear-gradient(#000 60%,transparent);mask-image:linear-gradient(#000 60%,transparent)}.herobody{position:relative;margin-top:auto;padding:0 24px 26px;display:flex;flex-direction:column;gap:10px;text-align:left;min-height:56%;justify-content:flex-end}.herobody>p{font-size:13px;margin-bottom:8px}.herobody .fine{text-align:center}.herobody .link{align-self:center}.photo{position:relative;margin:6px 0 0}.photo img{width:100%;height:230px;object-fit:cover;display:block}.bubble{position:absolute;right:24%;top:36%;background:#fff;border-radius:50%;padding:12px 10px;font:italic 14px var(--serif);box-shadow:0 4px 12px #0003}.cards{position:absolute;left:0;right:0;bottom:8px;display:flex;justify-content:center;gap:8px;z-index:2}.card{background:#fff;border-radius:4px;padding:4px 9px;font:500 12px var(--serif);text-align:center;box-shadow:0 2px 8px #00000040;display:flex;flex-direction:column}.card em{font:italic 9px var(--serif);color:var(--gold)}.card.you{border-bottom:2px solid var(--gold-l)}.card.saved{font-style:italic}.tablepic{position:relative;margin:10px 24px 4px;border-radius:18px;overflow:hidden}.tablepic img{display:block;width:100%;height:200px;object-fit:cover}.empties{position:absolute;top:0;right:0;bottom:40px;left:0;display:flex;justify-content:space-between;align-items:center;padding:0 22px;pointer-events:none}.empties button{pointer-events:auto;width:34px;height:34px;border-radius:50%;background:#ffffffeb;font-size:20px;line-height:1;box-shadow:0 2px 8px #0000004d}.seatbar{padding:8px 24px;text-align:center}.seatbar div{display:flex;gap:6px;justify-content:center}.seatbar i{width:28px;height:4px;border-radius:3px;background:var(--line)}.seatbar i.on{background:var(--gold-l)}.seatbar small{display:block;margin-top:6px;font-size:10.5px;color:var(--muted)}.steps{display:flex;gap:5px;justify-content:center;margin-bottom:4px}.steps i{width:26px;height:3px;border-radius:2px;background:var(--line)}.steps i.on{background:var(--plum)}.field{display:flex;flex-direction:column;gap:5px;font-size:11px;font-weight:500;color:#4b4355}.field small{font-weight:400;color:var(--muted)}input:not([type=checkbox]),select{width:100%;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--paper);font:400 14px var(--sans);color:var(--ink)}input:focus,select:focus{outline:2px solid var(--gold-l);border-color:transparent}.placecard{align-self:center;margin:4px 0;padding:12px 40px;background:#fff;border-radius:4px;font:500 22px var(--serif);box-shadow:0 2px 10px #3c280a1f;min-width:150px;text-align:center}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{padding:5px 11px;border-radius:999px;border:1px solid var(--line);background:var(--paper);font-size:11px}.chip.on{background:var(--plum);color:#fff;border-color:var(--plum)}.check{display:flex;gap:12px;padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:12px;font-size:12.5px;line-height:1.45;cursor:pointer}.check input{position:absolute;opacity:0}.check .box{flex:none;width:20px;height:20px;border-radius:5px;border:1.5px solid var(--plum);margin-top:1px;display:grid;place-items:center}.check input:checked+.box{background:var(--plum)}.check input:checked+.box:after{content:"✓";color:#fff;font-size:13px}.check input:focus-visible+.box{outline:2px solid var(--gold-l);outline-offset:2px}.tag{display:block;width:fit-content;margin-top:6px;font:700 8px var(--sans);letter-spacing:.12em;padding:3px 7px;border-radius:3px;background:var(--plum);color:#fff}.tag.opt{background:transparent;color:var(--gold);border:1px solid var(--gold)}.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:10px}.panel.dark{background:var(--plum);border:0;color:#fff}.panel.dark .small{color:#e0d9e6}.panel.dark .btn{color:#fff;border-color:#fff}.addphoto{align-self:center;width:130px;height:150px;border:1.5px dashed var(--gold);border-radius:65px 65px 12px 12px;display:grid;place-items:center;text-align:center;font-size:12px;color:var(--gold);cursor:pointer;padding:10px}.viewfinder{position:relative;aspect-ratio:4/4.2;border-radius:16px;overflow:hidden;background:#1e1a24}.viewfinder video,.viewfinder img{width:100%;height:100%;object-fit:cover;transform:scaleX(-1)}.viewfinder img{transform:none}.oval{position:absolute;top:10%;right:20%;bottom:10%;left:20%;border:2px dashed rgba(255,255,255,.85);border-radius:50%;pointer-events:none}.nocam{height:100%;display:grid;place-items:center;color:#cfc8d6;font-size:12px;text-align:center;padding:24px}.hints{list-style:none;padding:0;font-size:11.5px;color:#4b4355;display:flex;flex-direction:column;gap:3px}.hints li:before{content:"✓  ";color:var(--gold)}.seatnum{font:500 72px/1 var(--serif);letter-spacing:-.01em}.portrait{width:130px;height:160px;border-radius:65px 65px 10px 10px;background:linear-gradient(160deg,#d9cdb6,#a88f66);overflow:hidden;margin:14px 0 6px;filter:blur(14px) saturate(.6);transition:filter 1.2s;animation:pulse 1.6s infinite}.portrait.ready{filter:none;animation:none}.portrait img{width:100%;height:100%;object-fit:cover}@keyframes pulse{50%{opacity:.6}}.page.mail{background:#fff}.mailhead{padding:10px 16px;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:3px;font-size:15px}.mailhead .back{font-size:14px;color:#2a6df4;text-align:left;padding:0}.mailhead small{color:var(--muted);font-size:11px}.mailbody{margin:16px;background:var(--cream);border-radius:12px;padding:4px 0 20px;display:flex;flex-direction:column;gap:10px}.mailbody>:not(.tablepic):not(.brand){margin-inline:20px}.mailbody .tablepic{margin-inline:14px}.mailbody h2{font-size:24px}.page.reveal{background:var(--red)}.revealpic{margin:8px 20px 0;border-radius:14px;overflow:hidden;border:3px solid #fff}.revealpic img{display:block;width:100%;height:190px;object-fit:cover}.page.reveal h3{font:600 20px var(--serif);letter-spacing:.04em}.error{color:#9b2c2c;font-size:12.5px;text-align:center}label.btn{display:block;text-align:center;cursor:pointer}.addphoto-img{width:100%;height:100%;object-fit:cover;border-radius:60px 60px 8px 8px}.portrait.wide{width:min(100%,520px);height:auto;aspect-ratio:16 / 9;border-radius:14px}.portrait.wide img{width:100%;height:100%;object-fit:cover}.notice{margin:4px 24px 0;padding:14px 16px;border:1px solid var(--gold-l);background:#fbf3df;border-radius:12px;display:flex;flex-direction:column;gap:6px}.notice .codebox{display:flex;align-items:center;justify-content:space-between;gap:12px}.notice code{font:600 20px var(--sans);letter-spacing:.12em;color:var(--ink)}.bigcode{font:600 34px var(--sans);letter-spacing:.28em;color:var(--ink)}.codeform{width:min(320px,100%);margin:8px auto 0;display:grid;gap:8px}.codeform input{text-align:center;letter-spacing:.14em;text-transform:uppercase}.seatpage .notice{position:relative;z-index:4}:root{--nav-h: 60px;--max: 1120px;--read: 620px}body{background:var(--cream)}.site{min-height:100vh;background:var(--cream)}.site.red{background:var(--red)}.site main{max-width:var(--max);margin:0 auto}.nav{position:sticky;top:0;z-index:30;height:var(--nav-h);display:grid;grid-template-columns:44px 1fr 44px;align-items:center;padding:0 max(12px,calc((100vw - var(--max)) / 2 + 12px));background:color-mix(in srgb,var(--cream) 92%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.site.red .nav{background:var(--red);border-color:#ffffff40}.site.red .brand{color:#fff}.brandbtn{padding:6px 0;justify-self:center}.burger{width:44px;height:44px;display:flex;flex-direction:column;justify-content:center;gap:5px;padding:0 10px}.burger i{height:2px;background:var(--ink);border-radius:2px}.site.red .burger i{background:#fff}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#140c1e66}.drawer{position:fixed;z-index:50;top:0;left:0;bottom:0;width:min(320px,86vw);padding:24px 16px;overflow-y:auto;background:var(--paper);box-shadow:20px 0 40px -20px #00000059;display:flex;flex-direction:column;gap:2px;translate:-100% 0;transition:translate .25s ease;visibility:hidden}.drawer.open{translate:0 0;visibility:visible}.drawer p{font:600 10px var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold);padding:8px 12px 10px}.drawer button{text-align:left;padding:11px 12px;border-radius:8px;font-size:14px}.drawer button:hover{background:#0000000d}.drawer button.on{background:var(--plum);color:#fff}.drawer .reset{margin-top:12px;color:var(--gold)}.page{width:100%}.page>*{width:100%;max-width:var(--max);margin-inline:auto}.page .body,.page .foot,.page .head,.page .seatbar,.page .herobody{max-width:var(--read)}.page .body{padding:20px 24px 8px}.page .foot{padding:20px 24px 40px}.page .foot .btn{max-width:420px;align-self:center}.page.mail{background:transparent}.mailbody{max-width:520px;margin-inline:auto}@media (min-width: 900px){.site main{max-width:none}.nav{padding-inline:20px}.page>.herophoto,.page>.photo,.page>.tablepic,.page>.revealpic{max-width:none;margin:0;border-radius:0;border:0}.herophoto{height:64%;background-position:center 28%}.photo img,.tablepic img,.revealpic img{height:min(52vh,520px);width:100%;border-radius:0}.empties{padding:0 6%}.display{font-size:76px}h2{font-size:36px}.page.mail .tablepic{margin-inline:14px;border-radius:16px}.page.mail .tablepic img{height:220px}.mailbody{max-width:620px}}.seatpage{overflow:hidden}.page>.seatbg{position:absolute;top:0;right:0;bottom:0;left:0;max-width:none;height:100%;z-index:0}.seatbg:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(#f4efe480,#f4efe4d1)}.seatpage>:not(.seatbg){position:relative;z-index:1}.revealpic.vidbox{position:relative;height:260px}@media (min-width: 900px){.revealpic.vidbox{height:min(52vh,520px)}}:root{--ease: cubic-bezier(.22, .8, .24, 1)}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}.enter .page>:not(.herophoto){animation:rise .6s var(--ease) both}.enter .page>:nth-child(2){animation-delay:.06s}.enter .page>:nth-child(3){animation-delay:.12s}.enter .page>:nth-child(4){animation-delay:.18s}.enter .page>:nth-child(n+5){animation-delay:.24s}.enter .herophoto{animation:fade .9s ease both}.page.hero{overflow:hidden}.herophoto{animation:fade .9s ease both,breathe 24s ease-out .9s forwards}@keyframes breathe{to{transform:scale(1.07)}}.btn{transition:transform .2s var(--ease),box-shadow .2s,opacity .2s,background .2s}.btn:not(:disabled):hover{transform:translateY(-1px);box-shadow:0 8px 20px -8px #2b22338c}.btn:not(:disabled):active{transform:scale(.985);box-shadow:none}.link,.chip{transition:color .2s,background .2s,border-color .2s}.check{transition:border-color .2s,background .2s}.check:has(input:checked){border-color:var(--plum)}.check .box{transition:background .2s}.check input:checked+.box:after{animation:tick .25s var(--ease) both}@keyframes tick{0%{opacity:0;transform:scale(.4) rotate(-12deg)}to{opacity:1;transform:none}}input:not([type=checkbox]),select{transition:border-color .2s,box-shadow .2s}@keyframes breathe-seat{50%{transform:scale(1.1);box-shadow:0 0 0 7px #ffffff47}}.empties button{animation:breathe-seat 3.2s ease-in-out infinite}.empties button:nth-child(2){animation-delay:.5s}.empties button:nth-child(3){animation-delay:1s}.empties button:nth-child(4){animation-delay:1.5s}@keyframes settle{0%{opacity:0;transform:translateY(-14px) scale(.92)}to{opacity:1;transform:none}}.cards .card{animation:settle .7s var(--ease) both}.seatbar i{transition:background .6s}.seatnum{font-variant-numeric:tabular-nums;animation:fade .6s ease both}.scrim{animation:fade .25s ease both}.drawer.open button{animation:rise .4s var(--ease) both}.drawer.open button:nth-of-type(n+2){animation-delay:.04s}.drawer.open button:nth-of-type(n+5){animation-delay:.08s}.drawer.open button:nth-of-type(n+9){animation-delay:.12s}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}.vidbox{background-size:cover;background-position:center}.vidbox video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 1.2s ease;filter:sepia(.28) saturate(1.15) contrast(.98)}.vidbox video.ready{opacity:1}.scene{position:relative;width:100%;overflow:hidden;border-radius:18px;background:#2a1c12}.scene .frame{position:absolute;top:0;left:0;width:100%}.scene .plate{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;display:block}.scene .people{position:absolute;top:0;right:0;bottom:0;left:0}.scene .person{position:absolute;transform:translate(-50%);animation:settle .7s var(--ease) both}.scene .person.drawn{transform:none}.scene .person img{display:block;width:100%;height:auto}.scene .silhouette{display:block;width:100%;height:auto;fill:#f4efe457}.scene .silhouette.drawing{animation:pulse 1.6s infinite}.scene .silhouette.invited{fill:#f4efe42e}.scene .silhouette.failed{fill:#9b2c2c59}.scene .seatcard{position:absolute;transform:translate(-50%);white-space:nowrap;font-size:clamp(9px,1.6vw,13px);padding:3px 8px}.scene .addseat{position:absolute;top:56%;transform:translate(-50%);width:clamp(26px,4.4%,40px);aspect-ratio:1;border-radius:50%;background:#ffffffeb;font-size:20px;line-height:1;box-shadow:0 2px 8px #00000059;animation:breathe-seat 3.2s ease-in-out infinite}.page>.scene{max-width:none;margin:10px auto 4px;border-radius:0}@media (min-width: 900px){.page>.scene{width:min(100%,max(520px,calc((100vh - 340px) * var(--ratio))));border-radius:18px}}.seatcard.tap{cursor:pointer}.seatcard.tap:hover{box-shadow:0 0 0 2px var(--gold-l)}.sheetscrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#140c1e73;animation:fade .2s ease both}.seatsheet{position:fixed;z-index:61;left:50%;bottom:0;translate:-50% 0;width:min(440px,100%);background:var(--cream);border-radius:18px 18px 0 0;padding:22px 22px 26px;display:flex;flex-direction:column;gap:10px;box-shadow:0 -10px 40px #00000040;animation:rise .25s ease both}@media (min-width: 700px){.seatsheet{top:50%;bottom:auto;translate:-50% -50%;border-radius:18px;box-shadow:0 20px 60px #00000059}}.seatsheet h3{margin:0}.switcher{justify-content:center;margin-top:6px}.tablerow{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;width:100%;text-align:left;padding:11px 0;border-bottom:1px solid var(--line)}.tablerow span{color:var(--muted);font-size:12px}.tablerow i{font-style:normal;color:var(--gold);font-weight:600;font-size:12px}.reason{margin:8px 0;padding:10px 14px;border-left:3px solid var(--gold-l);background:var(--paper);font-style:italic}.reason cite{display:block;margin-top:4px;font-size:11px;font-style:normal;color:var(--muted)}textarea{width:100%;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--paper);font:400 14px var(--sans);color:var(--ink);resize:vertical}textarea:focus{outline:2px solid var(--gold-l);border-color:transparent}.seatsheet{max-height:92vh;overflow-y:auto;padding-bottom:calc(26px + env(safe-area-inset-bottom,0px))}@media (max-width: 700px){input:not([type=checkbox]),textarea,select{font-size:16px}.seatcard.tap{padding:7px 10px}}.site main:has(.find){max-width:none}.page.find{position:relative;height:calc(100vh - var(--nav-h));min-height:0;overflow:hidden;background:#0e0b12;padding:0}.page.find>*{max-width:none;margin:0;width:auto}.findstage{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;perspective:1400px;background:#0e0b12 url(/img/valley.jpg) center / cover}.findstage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;-webkit-backdrop-filter:blur(18px) brightness(.55);backdrop-filter:blur(18px) brightness(.55)}.findworld,.findreveal{position:absolute;top:0;right:0;bottom:0;left:0;transform-origin:0 0;will-change:transform,filter}.findmap,.findreveal img{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.findreveal{opacity:0;pointer-events:none}.findnames{position:absolute;left:0;right:0;bottom:calc(190px + 3%);display:flex;justify-content:space-around;flex-wrap:wrap;gap:6px;padding:0 6%;opacity:0}.findnames span{background:#fff;color:var(--ink);font:600 12px var(--sans);padding:6px 12px;border-radius:6px;box-shadow:0 2px 8px #0000004d}.findpin{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;z-index:3;animation:pindrop 1.1s cubic-bezier(.3,.1,.3,1) backwards}.findpin .dot{position:absolute;left:11px;top:11px;width:22px;height:22px;border-radius:50%;background:var(--gold-l);border:4px solid #fff;box-shadow:0 2px 10px #00000073}.findpin:not(.on) .dot{background:#d8cdb8;width:16px;height:16px;left:14px;top:14px;border-width:3px}.findpin .ring{position:absolute;left:11px;top:11px;width:22px;height:22px;border-radius:50%}.findpin.on .ring{animation:ring 2.2s ease-out infinite}.flabel{position:absolute;left:50%;bottom:40px;translate:-50% 0;white-space:nowrap;background:#1e1824e6;color:#fff;font:600 12px var(--sans);padding:5px 11px;border-radius:14px}.findpin:not(.on) .flabel{bottom:30px;font-size:10px;padding:3px 8px;opacity:.85}.flabel small{display:block;font-weight:400;font-size:10px;opacity:.75}@keyframes pindrop{0%{transform:translateY(-170px);opacity:0}55%{transform:none;opacity:1}75%{transform:translateY(-16px)}to{transform:none}}.findbar{position:absolute;z-index:6;left:0;right:0;bottom:0;padding:20px 16px calc(18px + env(safe-area-inset-bottom,0px));display:grid;gap:8px;justify-items:center;text-align:center;background:linear-gradient(transparent,#0e0b12e0 45%);color:#f3eadb}.findbar .eyebrow{color:var(--gold-l)}.findbar p{max-width:460px;font-size:13px}.findbar .btn{max-width:360px}.findbar .link{color:#fff;opacity:.8}@media (prefers-reduced-motion: reduce){.findpin{animation:none}}
