:root{color-scheme:dark;--gold:#eac88a;--ink:#10191f;--cream:#fff1d5}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(ellipse at 48% -5%,#2e3b43,#0b1119 58%,#070b11);color:#f8f0e4;font:15px/1.55 system-ui,-apple-system,Segoe UI,sans-serif}button,input,textarea,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:var(--gold)}.top{max-width:1160px;margin:auto;padding:24px 22px;display:flex;justify-content:space-between;align-items:center;gap:14px}.brand{font-family:Georgia,serif;font-size:21px;color:var(--gold);letter-spacing:.04em;text-decoration:none}.tag{color:#cfbfa8;font-size:12px;text-transform:uppercase;letter-spacing:.16em}.shell{max-width:1160px;margin:0 auto;padding:14px 22px 80px}.hero{text-align:center;max-width:750px;margin:12px auto 32px}.eyebrow{color:var(--gold);letter-spacing:.18em;text-transform:uppercase;font-size:12px;font-weight:700}.hero h1{font:normal clamp(33px,5vw,60px)/1.08 Georgia,serif;margin:12px 0 14px}.hero p{color:#d6c9b9;font-size:16px}.columns{display:grid;grid-template-columns:minmax(0,430px) minmax(0,1fr);gap:36px;align-items:start;justify-content:center}.preview-shell{position:sticky;top:12px;max-width:430px;margin:auto;width:100%}.frame{position:relative;aspect-ratio:380/893;width:100%;overflow:hidden;border-radius:18px;border:1px solid #cba66b50;box-shadow:0 20px 75px #000b;background:#14202b;isolation:isolate}.scene{position:absolute;inset:0;transition:opacity .85s,transform .85s;opacity:1}.scene.hide{opacity:0;pointer-events:none;transform:scale(.98)}.scene.reveal{opacity:0;pointer-events:none;transform:scale(1.035)}.scene.reveal.active{opacity:1;pointer-events:auto;transform:scale(1)}.scene .art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;user-select:none;pointer-events:none}.tap-zone{position:absolute;left:5%;top:16%;width:90%;height:65%;border:0;background:transparent;z-index:8;cursor:pointer}.tap-zone:focus-visible{outline:3px solid var(--gold);border-radius:48%}.snow{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:7}.snow i{position:absolute;top:-10px;left:var(--x);height:var(--s);width:var(--s);background:#fff;border-radius:50%;box-shadow:0 0 7px #fff8;opacity:.8;animation:fall var(--t) linear infinite;animation-delay:var(--d)}@keyframes fall{to{transform:translate(var(--drift),1000px)}}.photo-mask{position:absolute;z-index:4;left:9%;top:21.8%;width:82%;height:32.5%;overflow:hidden;border-radius:49% 49% 43% 43%;border:2px solid #ffe5a4c7;box-shadow:0 0 18px #ffd78e80,inset 0 0 18px #f7ce7a;display:none}.photo-mask.has-photo{display:block}.photo-mask img{width:100%;height:100%;object-fit:cover;object-position:center 35%}.plaque{position:absolute;z-index:5;left:9%;top:57.3%;width:82%;height:24.4%;border-radius:46% 46% 34% 34%/29% 29% 30% 30%;background:radial-gradient(ellipse at 50% 24%,#fff6dd,#efce91 76%,#b77d35);border:2px solid #fbe1a7;box-shadow:0 0 16px 5px #f8d99a70,inset 0 0 18px #f4e5c3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-align:center;color:#3b1e16;padding:13px 19px}.plaque .heading{font:italic 20px/1.07 Georgia,serif;color:#5a281e}.plaque .name{font:600 15px/1.2 Georgia,serif}.plaque .message{font:12px/1.3 Georgia,serif;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.party-info{position:absolute;z-index:5;left:16%;top:26.2%;width:68%;height:39%;background:radial-gradient(ellipse at center,#fff3d7 20%,#eec88e 100%);box-shadow:0 0 19px 13px #f9d59bc9;border:1px solid #d8a66c;border-radius:49% 49% 45% 45%/39% 39% 33% 33%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;padding:8px 10px;color:#371b13}.party-info .party-title{font:italic 23px/1.08 Georgia,serif}.party-info .party-line{font:13px/1.24 Georgia,serif}.party-info .party-rsvp{font:600 11px/1.3 system-ui,sans-serif;color:#77322c}.frame-controls{display:flex;gap:8px;justify-content:center;margin-top:12px;flex-wrap:wrap}.btn{border:1px solid #d5b47a91;border-radius:11px;background:#1b2b31;color:#f4d9a6;padding:11px 15px;min-height:44px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:600}.btn:hover{background:#304047}.btn.primary{background:linear-gradient(135deg,#e7c17f,#c8934b);color:#23180e;border:0}.btn.primary:hover{filter:brightness(1.08)}.btn:disabled{opacity:.5;cursor:not-allowed}.panel{border:1px solid #a9916650;background:#111c25ee;border-radius:20px;padding:26px;box-shadow:0 16px 50px #0004}.panel h2{font:normal 29px/1.2 Georgia,serif;margin:0 0 7px;color:#f6e4c5}.muted{color:#bfb7aa;font-size:13px}.field{display:block;margin:15px 0}.field span{display:block;margin-bottom:6px;font-size:13px;color:#e8d9c2;font-weight:600}.field input,.field textarea,.field select{width:100%;padding:11px 12px;border-radius:9px;border:1px solid #78818a;background:#0c141c;color:#fff;min-height:44px;outline-color:var(--gold)}.field textarea{min-height:94px;resize:vertical}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.switches{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0}.switches button{border-radius:10px;padding:13px 10px;background:#15232d;border:1px solid #6b6052;color:#e4d1b2}.switches button.selected{background:#473222;border-color:#efc787;color:#ffe7b3}.price{font:normal 34px Georgia,serif;color:#f5d6a2}.price small{font:14px system-ui,sans-serif;color:#d5bda2}.action-row{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.notice{border-left:3px solid #d6b173;background:#263039;padding:12px 15px;border-radius:0 9px 9px 0;color:#e8dbc9;font-size:13px;margin-top:18px}.status{min-height:20px;color:#f4d69c;font-size:13px;margin-top:12px;overflow-wrap:anywhere}.privacy{font-size:12px;color:#b9b6b2;margin-top:12px}.footer{text-align:center;padding:25px;color:#9e9b96;font-size:12px}.sharelink{word-break:break-all;display:block;padding:12px;background:#071118;border:1px solid #52616a;border-radius:9px;margin-top:10px}.hidden{display:none!important}.viewer{max-width:470px;margin:0 auto;padding:20px 14px 60px}.viewer h1{text-align:center;font:normal 25px Georgia,serif;color:var(--gold)}.viewer .frame{max-width:420px;margin:auto}.viewer .muted{text-align:center}@media(max-width:760px){.columns{grid-template-columns:1fr;gap:26px}.preview-shell{position:static;max-width:360px}.panel{padding:19px}.shell{padding:8px 14px 55px}.top{padding:17px}.hero{margin:12px auto 22px}.hero p{font-size:14px}.two{grid-template-columns:1fr 1fr}}@media(max-width:390px){.plaque .heading{font-size:17px}.plaque .name{font-size:13px}.plaque .message{font-size:11px}.party-info .party-title{font-size:18px}.party-info .party-line{font-size:11px}}@media(prefers-reduced-motion:reduce){.snow i{animation:none}.scene{transition:none}}

.onscreen-actions{position:absolute;z-index:9;bottom:0;left:0;right:0;height:15%;background:linear-gradient(0deg,#07111de8 45%,#07111d0a);display:flex;align-items:end;justify-content:space-around;padding:12px 6px}.onscreen-actions button{background:transparent;border:0;color:#f6dfb2;font-size:11px;display:flex;flex-direction:column;align-items:center;gap:5px;min-width:28%;padding:3px}.onscreen-actions button b{border:1px solid #eac88a;border-radius:50%;width:38px;height:38px;display:grid;place-items:center;font-size:21px;font-weight:400}.onscreen-actions button:focus-visible{outline:2px solid white}

.sound-toggle{position:absolute;z-index:20;right:1.6%;top:1%;width:13.5%;min-width:44px;min-height:44px;aspect-ratio:1;border:1px solid #eac88a66;border-radius:50%;background:#081015;color:#fff;display:grid;place-items:center;padding:8px;box-shadow:0 2px 10px #0008}.sound-toggle svg{width:100%;height:100%;max-width:32px;max-height:32px}.sound-toggle:focus-visible{outline:3px solid #ffe3a3;outline-offset:3px}.audio-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
