@import "https://fonts.googleapis.com/css2?family=Allura&family=Bodoni+Moda:opsz,wght@6..96,400;6..96,500;6..96,600&family=Cormorant+Garamond:wght@400;500;600;700&family=Great+Vibes&family=Libre+Baskerville:wght@400;700&family=Montserrat:wght@400;500;600&family=Parisienne&family=Playfair+Display:wght@400;500;600;700&display=swap";*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{background:#f9f4ef}.app{background:radial-gradient(circle at 0 0,#fffaf7 0%,#0000 35%),radial-gradient(circle at 100% 100%,#f1d7ca 0%,#0000 30%),linear-gradient(135deg,#fffaf6,#f6eee8);justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:relative;overflow:hidden}.card{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffe6;border:1px solid #d6b5a061;border-radius:34px;flex-direction:column;justify-content:center;align-items:center;gap:28px;width:calc(100vw - 32px);max-width:760px;height:calc(100dvh - 32px);max-height:1160px;padding:72px 56px;display:flex;position:relative;overflow-y:hidden;box-shadow:0 30px 90px #52372a21,inset 0 0 0 1px #ffffff8c}.card:before{content:"";pointer-events:none;z-index:0;border:1px solid #c5977c2e;border-radius:26px;position:absolute;inset:18px}.card--relationship{gap:12px;padding:32px 48px 36px}.monogram-pill{color:#b47c67;letter-spacing:6px;background:#fffaf7cc;border:1.5px solid #d8b39f;border-radius:999px;justify-content:center;align-items:center;padding:10px 28px;font-family:Cormorant Garamond,serif;font-size:20px;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:5px;color:#b88770;text-align:center;font-family:Cormorant Garamond,serif;font-size:13px}h1{color:#49362e;text-align:center;font-family:Great Vibes,cursive;font-size:clamp(72px,10vw,120px);font-weight:400;line-height:1}h2{color:#49362e;text-align:center;font-family:Cormorant Garamond,serif;font-size:clamp(32px,4vw,52px);font-weight:500;line-height:1.15}.date{color:#9b7563;letter-spacing:5px;text-transform:uppercase;text-align:center;font-family:Cormorant Garamond,serif;font-size:15px}.divider{color:#bf796d;align-items:center;gap:14px;width:300px;margin:4px 0;display:flex}.divider span{background:linear-gradient(90deg,#0000,#bf796d73,#0000);flex:1;height:1px}.divider small{font-size:18px}.subtitle{text-align:center;color:#5f4a42;max-width:600px;font-family:Cormorant Garamond,serif;font-size:clamp(18px,2.2vw,24px);line-height:1.5}.start-btn{color:#fff;letter-spacing:.5px;cursor:pointer;background:linear-gradient(135deg,#c9897a,#b06b5e);border:none;border-radius:999px;flex-shrink:0;min-width:280px;padding:22px 76px;font-family:Cormorant Garamond,serif;font-size:28px;font-weight:700;transition:transform .2s,box-shadow .2s;box-shadow:0 14px 32px #bf796d47,inset 0 1px #ffffff59}.start-btn:hover{transform:translateY(-2px);box-shadow:0 18px 38px #bf796d59}.start-btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.secondary-btn{color:#9b7563;cursor:pointer;background:#ffffffa6;border:1.5px solid #bf796d61;border-radius:999px;flex-shrink:0;min-width:180px;padding:20px 54px;font-family:Cormorant Garamond,serif;font-size:26px;font-weight:700;transition:background .2s}.action-row{flex-shrink:0;align-items:center;gap:16px;margin-top:6px;display:flex}.relationship-grid{grid-template-columns:repeat(3,1fr);gap:14px;width:100%;max-width:680px;display:grid}.relationship-card{aspect-ratio:1.6;color:#5f4a42;cursor:pointer;background:#fffaf7c7;border:1px solid #bf796d38;border-radius:20px;flex-direction:column;justify-content:center;align-items:center;gap:10px;font-family:Cormorant Garamond,serif;font-size:20px;font-weight:600;transition:all .2s;display:flex;box-shadow:0 8px 20px #52372a0f}.relationship-card:hover{border-color:#bf796d73;transform:translateY(-2px)}.relationship-card.selected{background:linear-gradient(135deg,#fff4ee,#f3d6c9);border-color:#bf796d;box-shadow:0 12px 30px #bf796d2e}.relationship-icon{font-size:30px}.name-input{color:#49362e;background:#ffffffd9;border:1px solid #bf796d47;border-radius:18px;outline:none;width:100%;max-width:560px;padding:18px 26px;font-family:Cormorant Garamond,serif;font-size:22px}.small-text{color:#8d6e61;text-align:center;font-family:Cormorant Garamond,serif;font-size:clamp(16px,2vw,21px)}.instruction-list{color:#5f4a42;text-align:center;flex-direction:column;gap:10px;font-family:Cormorant Garamond,serif;font-size:clamp(18px,2.2vw,23px);display:flex}.guest-summary{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.guest-summary span{color:#9b7563;background:#fff4eee6;border:1px solid #bf796d33;border-radius:999px;padding:9px 22px;font-family:Cormorant Garamond,serif;font-size:18px}.countdown-number{color:#bf796d;font-family:Cormorant Garamond,serif;font-size:clamp(100px,18vw,160px);line-height:1}.floral-line{opacity:.38;z-index:0;width:140px;height:140px;position:absolute}.floral-line:before,.floral-line:after{content:"";border:2px solid #bf796d52;border-radius:50%;position:absolute}.floral-line:before{width:80px;height:38px;transform:rotate(-28deg)}.floral-line:after{width:38px;height:80px;transform:rotate(28deg)}.floral-top-left{top:38px;left:44px}.floral-bottom-right{bottom:38px;right:44px;transform:rotate(180deg)}.petal{color:#bf796d47;pointer-events:none;font-size:26px;animation:9s ease-in-out infinite floatPetal;position:absolute}.petal-one{top:14%;left:17%}.petal-two{animation-delay:1.5s;top:23%;right:19%}.petal-three{animation-delay:3s;bottom:18%;left:23%}@keyframes floatPetal{0%{opacity:.22;transform:translateY(0)rotate(0)}50%{opacity:.5;transform:translateY(-22px)rotate(12deg)}to{opacity:.22;transform:translateY(0)rotate(0)}}.app--recording{align-items:center;overflow:hidden}.recording-card{background:#fffffff5;border:1px solid #d6b5a06b;border-radius:24px;width:min(99vw,1600px);height:calc(100dvh - 20px);padding:12px 20px 14px;position:relative;overflow:hidden;box-shadow:0 30px 90px #52372a24,inset 0 0 0 1px #ffffffa6}.recording-card:before{content:"";pointer-events:none;z-index:0;border:1px solid #c5977c33;border-radius:18px;position:absolute;inset:12px}.recording-flower{color:#bf796d2e;pointer-events:none;z-index:1;font-size:52px;position:absolute;top:20px;left:28px;transform:rotate(-20deg)}.recording-layout{z-index:2;grid-template-rows:auto 1fr auto;gap:8px;height:100%;display:grid;position:relative}.recording-header{flex-shrink:0;justify-content:center;align-items:center;gap:20px;padding:2px 0 0;display:flex}.recording-couple{color:#49362e;font-family:Great Vibes,cursive;font-size:clamp(34px,4vw,58px);line-height:1}.recording-monogram{color:#b47c67;letter-spacing:3px;border:1.5px solid #d8b39f;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:58px;height:58px;font-family:Cormorant Garamond,serif;font-size:15px;display:flex}.video-frame{background:#1a1110;border:2px solid #bf796d66;border-radius:14px;width:100%;max-width:calc(177.778dvh - 284.444px);height:100%;margin:0 auto;position:relative;overflow:hidden;box-shadow:0 10px 30px #52372a2e}.camera-preview{object-fit:cover;width:100%;height:100%;display:block;transform:scaleX(-1)}.rec-pill,.timer-pill{color:#fff;letter-spacing:1px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#1e1614c7;border-radius:999px;padding:8px 18px;font-family:Arial,sans-serif;font-size:20px;position:absolute;top:18px}.rec-pill{align-items:center;gap:9px;display:flex;left:18px}.timer-pill{font-weight:700;right:18px}.red-dot{background:#e74343;border-radius:50%;width:12px;height:12px;animation:1.2s ease-in-out infinite blink;display:inline-block}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.recording-stop-row{flex-shrink:0;justify-content:center;align-items:center;padding:8px 0 4px;display:flex}.stop-btn{color:#fff;letter-spacing:.5px;cursor:pointer;background:linear-gradient(135deg,#c9897a,#b06b5e);border:none;border-radius:999px;padding:9px 52px;font-family:Cormorant Garamond,serif;font-size:19px;font-weight:700;transition:transform .2s;box-shadow:0 10px 28px #bf796d42,inset 0 1px #ffffff59}.stop-btn:hover{transform:translateY(-2px)}.format-badge{gap:8px;display:flex;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.format-tag{color:#ffffffd9;letter-spacing:1px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1e1614a6;border-radius:999px;padding:5px 14px;font-family:Cormorant Garamond,serif;font-size:14px}.camera-error{color:#7a5b50;text-align:center;justify-content:center;align-items:center;height:100%;padding:40px;font-family:Cormorant Garamond,serif;font-size:24px;display:flex}@media (width<=768px){.card{border-radius:24px;gap:12px;padding:28px 24px}h1{font-size:68px}.subtitle{font-size:18px}.divider{width:220px}.relationship-grid{grid-template-columns:repeat(3,1fr);gap:10px;max-width:100%}.relationship-card{font-size:17px}.relationship-icon{font-size:26px}.recording-card{border-radius:14px;width:99vw;height:calc(100dvh - 16px);padding:8px 8px 10px}.recording-couple{font-size:30px}.recording-monogram{display:none}.recording-flower{font-size:36px}.video-frame{max-width:calc(177.778dvh - 234.667px)}}@media (width>=768px) and (width<=1180px){.card{width:calc(100vw - 32px);max-width:760px;height:calc(100dvh - 32px);padding:72px 56px}h1{font-size:clamp(64px,9vw,96px)}.relationship-grid{max-width:580px}.recording-card{width:98vw;height:calc(100dvh - 18px);padding:10px 14px 12px}.video-frame{max-width:calc(177.778dvh - 259.556px)}}.card--getcopy{gap:14px}.getcopy-header{justify-content:center;align-items:center;gap:18px;display:flex}.getcopy-couple{color:#49362e;font-family:Great Vibes,cursive;font-size:clamp(48px,6vw,72px);line-height:1}.qr-box{aspect-ratio:1;background:#fffaf7b3;border:1.5px solid #bf796d47;border-radius:20px;justify-content:center;align-items:center;width:100%;max-width:320px;display:flex;overflow:hidden;box-shadow:0 12px 30px #52372a14}.qr-image{object-fit:contain;border-radius:8px;width:88%;height:88%}.qr-status{color:#8d6e61;text-align:center;flex-direction:column;align-items:center;gap:14px;padding:20px;font-family:Cormorant Garamond,serif;font-size:19px;display:flex}.qr-spinner{border:3px solid #bf796d33;border-top-color:#bf796d;border-radius:50%;width:42px;height:42px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (width<=768px){.start-btn{min-width:0;max-width:100%;padding:16px 26px;font-size:21px}.secondary-btn{min-width:0;max-width:100%;padding:15px 22px;font-size:20px}.action-row{gap:10px;width:100%}.action-row .start-btn,.action-row .secondary-btn{white-space:nowrap;flex:1 1 0;padding-left:12px;padding-right:12px}.card>.start-btn,.card>.secondary-btn{width:100%}.app{align-items:flex-start;height:auto;min-height:100dvh;padding:16px 0 24px;overflow-y:auto}.card{justify-content:flex-start;gap:14px;height:auto;max-height:none;padding:26px 18px 30px;overflow:visible}.card>*{box-sizing:border-box;max-width:100%}.relationship-grid{grid-template-columns:repeat(2,1fr);gap:10px;width:100%;max-width:100%}.relationship-card{aspect-ratio:auto;min-width:0;min-height:76px;padding:10px 6px;font-size:16px}.relationship-icon{font-size:24px}}.floral-line,.floral-line:before,.floral-line:after,.card:before,.recording-flower{pointer-events:none}@media (width<=768px){html,body{overscroll-behavior-y:none;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;height:auto;min-height:100%;overflow:hidden auto}.app{justify-content:flex-start;align-items:stretch;width:100%;height:auto;min-height:100dvh;padding:0;overflow:visible}.card{width:100%;max-width:none;height:auto;min-height:100dvh;max-height:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;padding:calc(env(safe-area-inset-top,0px) + 26px) 20px calc(env(safe-area-inset-bottom,0px) + 34px);background:0 0;border:none;border-radius:0;justify-content:center;gap:14px;overflow:visible}.card:before{display:none}button,.relationship-card,a{touch-action:manipulation}.getcopy-couple,.card h1,.card h2{text-align:center;width:100%}.getcopy-couple{padding:0 6px;font-size:clamp(34px,10vw,52px)}.card h1{padding:0 6px;font-size:clamp(42px,13vw,64px);line-height:1.05}.getcopy-header{width:100%}.floral-line{opacity:.26;width:96px;height:96px}.floral-top-left{top:calc(env(safe-area-inset-top,0px) + 8px);left:6px}.floral-bottom-right{right:6px;bottom:calc(env(safe-area-inset-bottom,0px) + 8px)}.petal{opacity:.6;font-size:20px}.petal-one{top:8%;left:5%}.petal-two{top:16%;right:6%}.petal-three{bottom:10%;left:8%}}.upload-progress{accent-color:#bf796d;width:min(320px,78vw);height:8px}.wedding-processing{text-align:center;width:100%;max-width:540px;margin:0 auto}.wedding-processing-scene{width:100%;height:190px;position:relative;overflow:visible}.wedding-path{background:linear-gradient(90deg,#0000,#bf796d2e 15%,#bf796d6b 50%,#bf796d2e 85%,#0000);border-radius:999px;height:2px;position:absolute;bottom:34px;left:8%;right:8%}.wedding-character{z-index:2;width:44px;height:108px;transition:left 1.2s cubic-bezier(.22,1,.36,1),right 1.2s cubic-bezier(.22,1,.36,1),transform 1.2s cubic-bezier(.22,1,.36,1);position:absolute;bottom:34px}.wedding-bride{animation:18s ease-out forwards brideApproach;left:calc(50% - 40px);transform:translate(-50%)}.wedding-groom{animation:18s ease-out forwards groomApproach;right:calc(50% - 40px);transform:translate(50%)}@keyframes brideApproach{0%{left:9%}to{left:calc(50% - 40px)}}@keyframes groomApproach{0%{right:9%}to{right:calc(50% - 40px)}}.wedding-person-svg{width:100%;height:100%;animation:2.8s ease-in-out infinite weddingFigureFloat;display:block;overflow:visible}.wedding-groom .wedding-person-svg{animation-delay:.45s}@keyframes weddingFigureFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.wedding-line{fill:none;stroke:#49362e;stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round}.wedding-line--thin{stroke-width:2px}.bride-veil{fill:none;stroke:#c9897a;stroke-width:1.8px;stroke-linecap:round;opacity:.7}.bride-dress{fill:#fff7f3;stroke:#b8796c;stroke-width:1.8px;stroke-linejoin:round}.bride-bouquet{fill:#c9897c;stroke:none}.bouquet-stem{fill:none;stroke:#836c5e;stroke-width:1.3px;stroke-linecap:round}.groom-body{fill:#44342e;stroke:#44342e;stroke-width:1.5px;stroke-linejoin:round}.groom-shirt{fill:#fffaf7;stroke:#fffaf7;stroke-width:1.2px;stroke-linejoin:round}.groom-leg{stroke-width:2.8px}.wedding-processing--complete .wedding-bride{animation:none;left:50%;transform:translate(-100%)}.wedding-processing--complete .wedding-groom{animation:none;right:50%;transform:translate(100%)}.wedding-processing--complete .wedding-person-svg{animation:.75s ease-out weddingMeet}@keyframes weddingMeet{0%{transform:translateY(0)}45%{transform:translateY(-5px)}to{transform:translateY(0)}}.heart-burst{z-index:4;pointer-events:none;width:1px;height:1px;position:absolute;bottom:104px;left:50%}.heart-particle{font-size:var(--heart-size);color:#c97f78;opacity:0;animation:heartFirework 1.25s cubic-bezier(.17, .67, .32, 1.15) var(--heart-delay) forwards;line-height:1;position:absolute;top:0;left:0;transform:translate(-50%,-50%)scale(.2)}@keyframes heartFirework{0%{opacity:0;transform:translate(-50%,-50%)scale(.15)rotate(0)}15%{opacity:1}65%{opacity:1;transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) scale(1) rotate(8deg)}to{opacity:0;transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y) - 15px)) scale(.75) rotate(16deg)}}.celebration-particle--hearts{color:var(--wedding-accent)}.celebration-particle--petals{color:var(--wedding-primary);animation:weddingPetalBurst 1.45s ease-out var(--heart-delay) forwards}@keyframes weddingPetalBurst{0%{opacity:0;transform:translate(-50%,-50%)scale(.3)rotate(0)}12%{opacity:1}55%{opacity:1;transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) scale(1) rotate(140deg)}to{opacity:0;transform:translate(calc(-50% + var(--heart-x) + 12px), calc(-50% + var(--heart-y) + 34px)) scale(.8) rotate(270deg)}}.celebration-particle--sparkles{color:var(--wedding-accent);animation:weddingSparkleBurst 1.3s ease-out var(--heart-delay) forwards}@keyframes weddingSparkleBurst{0%{opacity:0;transform:translate(-50%,-50%)scale(0)}22%{opacity:1;transform:translate(calc(-50% + var(--heart-x) * .45), calc(-50% + var(--heart-y) * .45)) scale(1.35)}70%{opacity:1;transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) scale(.85) rotate(45deg)}to{opacity:0;transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) scale(.15) rotate(90deg)}}.celebration-particle--confetti{color:var(--wedding-primary);animation:weddingConfettiBurst 1.5s cubic-bezier(.2, .75, .3, 1) var(--heart-delay) forwards}.celebration-particle--confetti:nth-child(3n+2){color:var(--wedding-accent)}.celebration-particle--confetti:nth-child(3n+3){color:var(--wedding-text)}@keyframes weddingConfettiBurst{0%{opacity:0;transform:translate(-50%,-50%)scale(.35)rotate(0)}12%{opacity:1}55%{opacity:1;transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y))) scale(1) rotate(220deg)}to{opacity:0;transform:translate(calc(-50% + var(--heart-x)), calc(-50% + var(--heart-y) + 55px)) scale(.75) rotate(480deg)}}.wedding-processing-copy{min-height:90px;margin-top:4px}.processing-status{color:#49362e;font-family:Cormorant Garamond,serif;font-size:clamp(23px,6vw,30px);font-weight:600;line-height:1.2}.processing-elapsed{color:#a77b69;font-variant-numeric:tabular-nums;margin-top:8px;font-family:Cormorant Garamond,serif;font-size:18px}.processing-note{color:#9b7563;max-width:390px;margin:9px auto 0;font-family:Cormorant Garamond,serif;font-size:16px;line-height:1.35}@media (width<=480px){.wedding-processing-scene{height:170px}.wedding-character{width:40px;height:98px;bottom:32px}.heart-burst{bottom:95px}.processing-status{font-size:25px}.processing-note{padding:0 16px}}@media (prefers-reduced-motion:reduce){.wedding-bride,.wedding-groom{animation:none}.wedding-bride{left:calc(50% - 40px)}.wedding-groom{right:calc(50% - 40px)}.wedding-person-svg{animation:none}.heart-particle{animation-duration:.4s}}:root{--wedding-background:#fbf5f1;--wedding-surface:#fffaf7;--wedding-primary:#c98172;--wedding-primary-dark:#9f6257;--wedding-text:#49362e;--wedding-muted:#9d7767;--wedding-accent:#d9a296;--wedding-border:#e8d0c9;--wedding-bride:#fff9f5;--wedding-bride-outline:#b9786c;--wedding-groom:#49362e;--wedding-button-text:#fffaf7;--floral-primary:var(--wedding-primary);--floral-secondary:var(--wedding-accent);--floral-accent:var(--wedding-primary-dark);--floral-light:var(--wedding-surface);--floral-dark:var(--wedding-text)}html,body{background:var(--wedding-background);color:var(--wedding-text)}.app{color:var(--wedding-text);background:radial-gradient(circle at top left, color-mix(in srgb, var(--wedding-surface) 94%, white 6%) 0%, transparent 35%), radial-gradient(circle at bottom right, color-mix(in srgb, var(--wedding-accent) 24%, var(--wedding-background)) 0%, transparent 30%), linear-gradient(135deg, var(--wedding-surface), var(--wedding-background));transition:background .35s,color .35s}.card{color:var(--wedding-text);background:color-mix(in srgb, var(--wedding-surface) 90%, transparent);border-color:color-mix(in srgb, var(--wedding-primary) 32%, transparent);box-shadow:0 30px 90px color-mix(in srgb, var(--wedding-text) 13%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--wedding-surface) 72%, white 28%)}.card:before{border-color:color-mix(in srgb, var(--wedding-primary) 20%, transparent)}.monogram-pill{border-color:var(--wedding-border);color:var(--wedding-primary-dark);background:color-mix(in srgb, var(--wedding-surface) 82%, transparent)}.eyebrow{color:var(--wedding-primary)}h1,h2,.card h1,.card h2,.card h3,.getcopy-couple,.recording-couple{color:var(--wedding-text)}.date,.small-text,.processing-note,.processing-elapsed,.qr-status{color:var(--wedding-muted)}.subtitle,.instruction-list{color:color-mix(in srgb, var(--wedding-text) 90%, var(--wedding-muted) 10%)}.divider{color:var(--wedding-primary)}.divider span{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--wedding-primary) 48%, transparent), transparent)}.start-btn,.stop-btn{background:linear-gradient(135deg, var(--wedding-primary), var(--wedding-primary-dark));color:var(--wedding-button-text);box-shadow:0 14px 32px color-mix(in srgb, var(--wedding-primary) 30%, transparent), inset 0 1px 0 #ffffff57}.start-btn:hover{box-shadow:0 18px 38px color-mix(in srgb, var(--wedding-primary) 38%, transparent)}.stop-btn{box-shadow:0 10px 28px color-mix(in srgb, var(--wedding-primary) 28%, transparent), inset 0 1px 0 #ffffff52}.secondary-btn{color:var(--wedding-primary-dark);border-color:var(--wedding-border);background:color-mix(in srgb, var(--wedding-surface) 78%, transparent)}.secondary-btn:hover{background:color-mix(in srgb, var(--wedding-surface) 96%, transparent)}.relationship-card{color:color-mix(in srgb, var(--wedding-text) 88%, var(--wedding-muted) 12%);border-color:color-mix(in srgb, var(--wedding-primary) 25%, transparent);background:color-mix(in srgb, var(--wedding-surface) 82%, transparent);box-shadow:0 8px 20px color-mix(in srgb, var(--wedding-text) 7%, transparent)}.relationship-card:hover{border-color:color-mix(in srgb, var(--wedding-primary) 50%, transparent)}.relationship-card.selected{color:var(--wedding-text);background:linear-gradient(135deg, color-mix(in srgb, var(--wedding-surface) 80%, var(--wedding-primary) 20%), color-mix(in srgb, var(--wedding-surface) 58%, var(--wedding-accent) 42%));border-color:var(--wedding-primary);box-shadow:0 12px 30px color-mix(in srgb, var(--wedding-primary) 20%, transparent)}.name-input{color:var(--wedding-text);border-color:var(--wedding-border);background:color-mix(in srgb, var(--wedding-surface) 88%, transparent)}.name-input::placeholder{color:color-mix(in srgb, var(--wedding-muted) 66%, transparent)}.name-input:focus{border-color:var(--wedding-primary);box-shadow:0 0 0 4px color-mix(in srgb, var(--wedding-primary) 12%, transparent)}.guest-summary span{color:var(--wedding-muted);background:color-mix(in srgb, var(--wedding-surface) 76%, var(--wedding-primary) 8%);border-color:color-mix(in srgb, var(--wedding-primary) 22%, transparent)}.countdown-number{color:var(--wedding-primary)}.floral-line:before,.floral-line:after{border-color:color-mix(in srgb, var(--wedding-accent) 48%, transparent)}.petal{color:color-mix(in srgb, var(--wedding-accent) 42%, transparent)}.recording-card{background:color-mix(in srgb, var(--wedding-surface) 96%, transparent);border-color:color-mix(in srgb, var(--wedding-primary) 34%, transparent);box-shadow:0 30px 90px color-mix(in srgb, var(--wedding-text) 14%, transparent), inset 0 0 0 1px color-mix(in srgb, var(--wedding-surface) 70%, white 30%)}.recording-card:before{border-color:color-mix(in srgb, var(--wedding-primary) 22%, transparent)}.recording-flower{color:color-mix(in srgb, var(--wedding-accent) 32%, transparent)}.recording-monogram{border-color:var(--wedding-border);color:var(--wedding-primary-dark)}.video-frame{border-color:color-mix(in srgb, var(--wedding-primary) 48%, transparent);box-shadow:0 10px 30px color-mix(in srgb, var(--wedding-text) 20%, transparent)}.camera-error{color:var(--wedding-muted)}.qr-box{border-color:var(--wedding-border);background:color-mix(in srgb, var(--wedding-surface) 78%, transparent);box-shadow:0 12px 30px color-mix(in srgb, var(--wedding-text) 8%, transparent)}.qr-status--error{color:color-mix(in srgb, #b84444 72%, var(--wedding-text) 28%)}.qr-spinner{border-color:color-mix(in srgb, var(--wedding-primary) 20%, transparent);border-top-color:var(--wedding-primary)}.upload-progress{accent-color:var(--wedding-primary)}.wedding-path{background:linear-gradient(90deg, transparent, color-mix(in srgb, var(--wedding-primary) 22%, transparent) 15%, color-mix(in srgb, var(--wedding-primary) 52%, transparent) 50%, color-mix(in srgb, var(--wedding-primary) 22%, transparent) 85%, transparent)}.wedding-head{fill:var(--wedding-text)}.wedding-line{stroke:var(--wedding-text)}.bride-veil{stroke:var(--wedding-bride-outline)}.bride-dress{fill:var(--wedding-bride);stroke:var(--wedding-bride-outline)}.bride-bouquet{fill:var(--wedding-accent)}.bouquet-stem{stroke:var(--wedding-muted)}.groom-body{fill:var(--wedding-groom);stroke:var(--wedding-groom)}.groom-shirt{fill:var(--wedding-surface);stroke:var(--wedding-surface)}.groom-bow{fill:var(--wedding-primary-dark)}.heart-particle{color:var(--wedding-accent)}.processing-status{color:var(--wedding-text)}.processing-status--ready{color:var(--wedding-primary)}@media (width<=768px){.card{background:0 0}.app{background:radial-gradient(circle at top left, color-mix(in srgb, var(--wedding-surface) 94%, white 6%) 0%, transparent 34%), radial-gradient(circle at bottom right, color-mix(in srgb, var(--wedding-accent) 22%, var(--wedding-background)) 0%, transparent 30%), linear-gradient(135deg, var(--wedding-surface), var(--wedding-background))}}:root{--wedding-display-font:"Great Vibes", cursive;--wedding-body-font:"Cormorant Garamond", serif}h1,.getcopy-couple,.recording-couple{font-family:var(--wedding-display-font)}body,button,input,textarea,select,h2,h3,.subtitle,.small-text,.eyebrow,.date,.monogram-pill,.relationship-card,.name-input,.instruction-list,.guest-summary span,.recording-monogram,.stop-btn,.qr-status,.processing-status,.processing-elapsed,.processing-note{font-family:var(--wedding-body-font)}.designer-page{width:100%;min-height:100dvh;color:var(--wedding-text);background:linear-gradient(135deg, var(--wedding-surface), var(--wedding-background));padding:38px max(20px,50vw - 640px);overflow-y:auto}.designer-shell{width:100%;max-width:1280px;margin:0 auto}.designer-header{text-align:center;max-width:700px;margin:0 auto 34px}.designer-header h2{margin-top:8px}.designer-header .small-text{margin-top:12px}.designer-layout{grid-template-columns:minmax(0,1fr) minmax(330px,430px);align-items:start;gap:42px;display:grid}.designer-controls{flex-direction:column;gap:24px;min-width:0;display:flex}.designer-section{border:1px solid var(--wedding-border);background:color-mix(in srgb, var(--wedding-surface) 90%, transparent);border-radius:24px;padding:24px}.designer-section-heading{margin-bottom:18px}.designer-label{font-family:var(--wedding-body-font);letter-spacing:2px;text-transform:uppercase;color:var(--wedding-muted);font-size:12px;font-weight:700}.designer-selection{font-family:var(--wedding-body-font);color:var(--wedding-text);margin-top:4px;font-size:22px;font-weight:600}.theme-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.theme-choice{border:1.5px solid var(--wedding-border);background:var(--wedding-surface);color:var(--wedding-text);cursor:pointer;border-radius:18px;flex-direction:column;gap:9px;padding:10px;transition:transform .18s,border-color .18s,box-shadow .18s;display:flex}.theme-choice:hover{transform:translateY(-2px)}.theme-choice--selected{border-color:var(--wedding-primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--wedding-primary) 15%, transparent)}.theme-swatch{border:1px solid color-mix(in srgb, var(--wedding-text) 10%, transparent);border-radius:12px;width:100%;height:58px}.theme-choice-name{font-family:var(--wedding-body-font);text-align:left;font-size:14px;font-weight:600}.font-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.font-choice{border:1.5px solid var(--wedding-border);background:var(--wedding-surface);min-height:108px;color:var(--wedding-text);cursor:pointer;border-radius:18px;flex-direction:column;justify-content:center;align-items:flex-start;gap:7px;padding:18px;transition:transform .18s,border-color .18s,box-shadow .18s;display:flex}.font-choice:hover{transform:translateY(-2px)}.font-choice--selected{border-color:var(--wedding-primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--wedding-primary) 15%, transparent)}.font-preview-name{font-size:29px;line-height:1.1}.font-choice-name{color:var(--wedding-muted);font-size:13px}.designer-logo-layout{grid-template-columns:170px minmax(0,1fr);align-items:center;gap:22px;display:grid}.designer-logo-preview-card{border:1px solid var(--wedding-border);background:var(--wedding-surface);border-radius:20px;justify-content:center;align-items:center;height:170px;display:flex}.designer-uploaded-logo{flex-shrink:0}.designer-logo-large{width:115px;height:115px}.designer-logo-phone{width:90px;height:70px}.designer-generated-monogram{min-width:82px;min-height:58px;font-family:var(--wedding-display-font);text-align:center;justify-content:center;align-items:center;font-size:34px;line-height:1;display:flex}.designer-logo-phone.designer-generated-monogram{font-size:30px}.designer-logo-controls{min-width:0}.designer-helper{font-family:var(--wedding-body-font);color:var(--wedding-muted);margin-bottom:14px;font-size:14px;line-height:1.45}.designer-file-input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.designer-upload-btn{border:1.5px solid var(--wedding-primary);min-height:44px;color:var(--wedding-primary-dark);background:color-mix(in srgb, var(--wedding-primary) 7%, var(--wedding-surface));font-family:var(--wedding-body-font);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:10px 20px;font-weight:700;display:inline-flex}.designer-file-name{overflow-wrap:anywhere;font-family:var(--wedding-body-font);color:var(--wedding-muted);margin-top:10px;font-size:13px}.designer-logo-error{font-family:var(--wedding-body-font);color:#a24e45;margin-top:10px;font-size:13px}.designer-text-btn{color:var(--wedding-primary-dark);font-family:var(--wedding-body-font);cursor:pointer;background:0 0;border:none;margin-top:10px;padding:0;font-size:13px;text-decoration:underline}.designer-logo-colours{margin-top:20px}.designer-segmented{border:1px solid var(--wedding-border);background:color-mix(in srgb, var(--wedding-background) 65%, var(--wedding-surface));border-radius:999px;margin-top:9px;padding:4px;display:flex}.designer-segmented button{min-height:40px;color:var(--wedding-muted);font-family:var(--wedding-body-font);cursor:pointer;background:0 0;border:none;border-radius:999px;flex:1}.designer-segmented button.selected{background:var(--wedding-primary);color:var(--wedding-button-text)}.designer-preview-only-note{font-family:var(--wedding-body-font);color:var(--wedding-muted);margin-top:14px;font-size:12px;line-height:1.4}.designer-coming-soon{opacity:.8}.designer-coming-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px;display:grid}.designer-coming-grid div{background:color-mix(in srgb, var(--wedding-primary) 7%, var(--wedding-surface));min-height:72px;color:var(--wedding-muted);font-family:var(--wedding-body-font);text-align:center;border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:12px;font-size:13px;display:flex}.designer-coming-grid span{color:var(--wedding-primary);font-size:20px}.designer-preview-column{flex-direction:column;align-items:center;gap:12px;display:flex;position:sticky;top:24px}.designer-preview-label{font-family:var(--wedding-body-font);text-transform:uppercase;letter-spacing:2px;color:var(--wedding-muted);font-size:12px;font-weight:700}.designer-phone{background:#181817;border-radius:42px;width:min(100%,390px);padding:8px;box-shadow:0 28px 70px #0000002e}.designer-phone-screen{background:radial-gradient(circle at top left, var(--wedding-surface), transparent 38%), radial-gradient(circle at bottom right, color-mix(in srgb, var(--wedding-accent) 24%, var(--wedding-background)), transparent 32%), var(--wedding-background);border-radius:34px;min-height:690px;position:relative;overflow:hidden}.designer-preview-content{z-index:2;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:20px;min-height:690px;padding:54px 28px 44px;display:flex;position:relative}.designer-preview-content h1{font-size:clamp(50px,6vw,74px)}.designer-preview-content .subtitle{font-size:18px}.designer-preview-content .start-btn{width:90%;min-width:0;padding:16px 22px;font-size:21px}.designer-current{font-family:var(--wedding-body-font);color:var(--wedding-muted);font-size:14px}.designer-current-dot{color:var(--wedding-primary);margin:0 7px}.designer-actions{justify-content:center;gap:14px;margin-top:32px;display:flex}.designer-actions .start-btn,.designer-actions .secondary-btn{min-width:190px}.designer-save-note{text-align:center;font-family:var(--wedding-body-font);color:var(--wedding-muted);margin-top:12px;font-size:13px}@media (width<=900px){.designer-page{padding:calc(env(safe-area-inset-top,0px) + 24px) 16px calc(env(safe-area-inset-bottom,0px) + 34px)}.designer-layout{grid-template-columns:1fr}.designer-preview-column{order:-1;position:static}.designer-phone{max-width:340px}.designer-phone-screen,.designer-preview-content{min-height:600px}}@media (width<=600px){.theme-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.font-grid,.designer-logo-layout{grid-template-columns:1fr}.designer-logo-preview-card{height:140px}.designer-logo-large{width:100px;height:100px}.designer-coming-grid{grid-template-columns:1fr}.designer-section{padding:18px}.designer-actions{flex-direction:column}.designer-actions .start-btn,.designer-actions .secondary-btn{width:100%;min-width:0}}.wedding-floral-frame{pointer-events:none;z-index:1;position:absolute;inset:0;overflow:hidden}.wedding-floral-svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.wedding-floral{opacity:.78;pointer-events:none;width:150px;height:150px;transition:opacity .25s,color .25s;display:block;position:absolute;overflow:visible}.wedding-floral--top{top:8px;left:8px}.wedding-floral--bottom{bottom:8px;right:8px;transform:none}@media (width<=600px){.wedding-floral{opacity:.68;width:112px;height:112px}.wedding-floral--top{top:3px;left:3px}.wedding-floral--bottom{bottom:3px;right:3px}}.floral-choice-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.floral-choice{border:1.5px solid var(--wedding-border);background:var(--wedding-surface);min-width:0;color:var(--wedding-text);cursor:pointer;text-align:left;border-radius:18px;flex-direction:column;align-items:stretch;gap:7px;padding:10px;transition:transform .18s,border-color .18s,box-shadow .18s;display:flex}.floral-choice:hover{transform:translateY(-2px)}.floral-choice--selected{border-color:var(--wedding-primary);box-shadow:0 0 0 3px color-mix(in srgb, var(--wedding-primary) 15%, transparent)}.floral-choice-preview{background:linear-gradient(135deg, var(--wedding-surface), var(--wedding-background));border:1px solid color-mix(in srgb, var(--wedding-border) 72%, transparent);border-radius:12px;width:100%;height:100px;position:relative;overflow:hidden}.floral-choice-preview .wedding-floral{opacity:.7;width:70px;height:70px}.floral-choice-preview .wedding-floral--top{top:2px;left:2px}.floral-choice-preview .wedding-floral--bottom{bottom:2px;right:2px}.floral-choice-name{font-family:var(--wedding-body-font);color:var(--wedding-text);font-size:15px;font-weight:700}.floral-choice-description{font-family:var(--wedding-body-font);color:var(--wedding-muted);font-size:12px;line-height:1.3}.floral-none-preview{width:100%;height:100%;font-family:var(--wedding-body-font);color:var(--wedding-border);justify-content:center;align-items:center;font-size:36px;font-weight:300;display:flex}.designer-live-floral{z-index:1}@media (width<=700px){.floral-choice-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=430px){.floral-choice-grid{grid-template-columns:1fr}.floral-choice-preview{height:88px}}.guest-app-floral{z-index:0}.app>.card,.app>.recording-card,.app>:not(.wedding-floral-frame){z-index:2;position:relative}html[data-wedding-floral] .floral-line,html[data-wedding-floral] .petal,html[data-wedding-floral] .recording-flower{display:none}@media (width>=769px){.designer-page{height:100dvh;overflow:hidden auto}}
