:root,[data-theme=dark]{--bg:#0a0a0a;--bg-subtle:#0f0f0f;--panel:#131313;--card:#1b1b1b;--card-hover:#222;--ink:#f2f1ed;--ink-secondary:#d4d3cf;--muted:#8c8c86;--muted-light:#a8a8a2;--line:#f2f1ed1a;--line-strong:#f2f1ed2e;--accent:#f2f1ed;--shutter:#e5423a;--shutter-glow:#e5423a59;--success:#2e9e5b;--success-bg:#2e9e5b1f;--info:#3e6fe0;--info-bg:#3e6fe01f;--warning:#e5a23a;--warning-bg:#e5a23a1f;--overlay:#000000a6;--glass:#131313d9;--glass-border:#f2f1ed0f;--radius-sm:8px;--radius-md:12px;--radius-lg:20px;--radius-xl:28px;--radius-full:999px;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 32px #00000080;--shadow-glow:0 0 20px #f2f1ed0f;--transition-fast:.15s cubic-bezier(.4, 0, .2, 1);--transition-base:.25s cubic-bezier(.4, 0, .2, 1);--transition-spring:.35s cubic-bezier(.34, 1.56, .64, 1);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", "SF Mono", "Fira Code", monospace}[data-theme=light]{--bg:#f7f6f2;--bg-subtle:#efefea;--panel:#fff;--card:#f2f1ec;--card-hover:#e8e7e0;--ink:#181816;--ink-secondary:#3c3c38;--muted:#73736c;--muted-light:#52524e;--line:#18181617;--line-strong:#1818162e;--accent:#181816;--shutter:#e5423a;--shutter-glow:#e5423a40;--success:#1e8246;--success-bg:#1e82461f;--info:#2b57b8;--info-bg:#2b57b81f;--warning:#d4881a;--warning-bg:#d4881a1f;--overlay:#00000073;--glass:#ffffffe0;--glass-border:#18181614;--shadow-sm:0 1px 3px #0000000f;--shadow-md:0 4px 16px #00000014;--shadow-lg:0 10px 30px #0000001f;--shadow-glow:0 0 20px #0000000d}*,:before,:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);min-height:100dvh;line-height:1.5;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.03'/%3E%3C/svg%3E");position:fixed;inset:0}a{color:var(--ink);text-decoration:none}img,video{max-width:100%;display:block}input,button,select,textarea{font-family:inherit;font-size:inherit}.mono{font-family:var(--font-mono)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-shell{z-index:1;width:100%;max-width:480px;min-height:100dvh;margin:0 auto;padding:24px 16px 80px;position:relative}.brand{margin-bottom:28px}.brand-logo{letter-spacing:-.03em;background:linear-gradient(135deg, var(--ink) 0%, var(--muted) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin:0 0 4px;font-size:26px;font-weight:800}.brand-tagline{color:var(--muted);margin:0;font-size:14px;font-weight:400}.brand-sub{color:var(--muted);letter-spacing:.04em;font-size:11px;font-family:var(--font-mono);opacity:.7;margin-top:4px}.sheet{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:28px 22px 32px;position:relative;overflow:hidden}.sheet:before{content:"";background:linear-gradient(90deg,#0000,#f2f1ed14,#0000);height:1px;position:absolute;top:0;left:0;right:0}.dial{background:var(--card);border-radius:var(--radius-full);border:1px solid var(--line);margin-bottom:28px;padding:4px;display:flex;position:relative}.dial button{color:var(--muted);font-family:var(--font-sans);border-radius:var(--radius-full);cursor:pointer;z-index:2;transition:color var(--transition-base);background:0 0;border:none;flex:1;padding:10px 0;font-size:13.5px;font-weight:600;position:relative}.dial button.active{color:var(--bg)}.dial .thumb{background:var(--ink);border-radius:var(--radius-full);z-index:1;width:calc(50% - 4px);box-shadow:var(--shadow-sm);transition:transform .3s cubic-bezier(.65,0,.35,1);position:absolute;top:4px;bottom:4px;left:4px}.dial .thumb.right{transform:translate(calc(100% + 4px))}label{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;margin:16px 0 6px;font-size:11.5px;font-weight:600;display:block}label:first-of-type{margin-top:0}input,select{border-radius:var(--radius-md);border:1px solid var(--line);background:var(--card);width:100%;font-family:var(--font-sans);color:var(--ink);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);padding:12px 14px;font-size:14px}input::placeholder{color:var(--muted);opacity:.6}input:focus,select:focus{border-color:#f2f1ed4d;outline:none;box-shadow:0 0 0 3px #f2f1ed0f}.row2{gap:12px;display:flex}.row2>div{flex:1}.swatchrow{gap:12px;margin-top:4px;display:flex}.cswatch{cursor:pointer;width:36px;height:36px;transition:transform var(--transition-spring), border-color var(--transition-fast);box-shadow:var(--shadow-sm);border:2.5px solid #0000;border-radius:50%}.cswatch:hover{transform:scale(1.12)}.cswatch.active{border-color:var(--ink);box-shadow:0 0 0 2px var(--bg), 0 0 0 4px var(--ink)}.filterpick{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.fchip{border-radius:var(--radius-full);border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer;transition:all var(--transition-fast);padding:8px 16px;font-size:13px;font-weight:500}.fchip:hover{border-color:var(--line-strong);color:var(--ink-secondary)}.fchip.active{background:var(--ink);color:var(--bg);border-color:var(--ink);font-weight:600}.btn{border-radius:var(--radius-md);width:100%;font-family:var(--font-sans);cursor:pointer;transition:transform var(--transition-fast), filter var(--transition-fast), box-shadow var(--transition-fast);border:none;justify-content:center;align-items:center;gap:8px;margin-top:22px;padding:14px 18px;font-size:14px;font-weight:600;display:flex;position:relative;overflow:hidden}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--ink);color:var(--bg)}.btn-primary:hover:not(:disabled){box-shadow:var(--shadow-glow);filter:brightness(1.05)}.btn-danger{background:var(--shutter);color:#fff}.btn-danger:hover:not(:disabled){box-shadow:0 0 20px var(--shutter-glow)}.btn-outline{color:var(--ink);border:1px solid var(--line);background:0 0}.btn-outline:hover:not(:disabled){border-color:var(--line-strong);background:#f2f1ed0a}.btn-ghost{color:var(--muted);text-underline-offset:3px;background:0 0;margin-top:12px;padding:10px;font-size:13px;text-decoration:underline}.btn-ghost:hover{color:var(--ink-secondary)}.note{border:1px solid var(--line);color:var(--muted);border-radius:var(--radius-md);background:#f2f1ed0a;margin-bottom:22px;padding:12px 14px;font-size:12.5px;line-height:1.6}.note b{color:var(--ink)}.qrbox{border-radius:var(--radius-lg);text-align:center;box-shadow:var(--shadow-lg);background:#fff;margin-bottom:18px;padding:24px}.qrbox canvas{margin:0 auto 14px}.link-row{border-radius:var(--radius-sm);background:#f5f5f0;border:1px dashed #00000026;align-items:center;gap:8px;padding:10px 12px;display:flex}.link-row span{color:#555;text-overflow:ellipsis;white-space:nowrap;text-align:left;font-size:11px;font-family:var(--font-mono);flex:1;overflow:hidden}.link-row button{color:#fff;font-family:var(--font-mono);cursor:pointer;transition:opacity var(--transition-fast);background:#111;border:none;border-radius:6px;padding:7px 14px;font-size:10.5px;font-weight:600}.link-row button:hover{opacity:.85}.counterwrap{background:var(--card);border-radius:var(--radius-lg);border:1px solid var(--line);justify-content:space-between;align-items:center;margin-bottom:18px;padding:18px 20px;display:flex}.counterwrap .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11.5px;font-weight:600}.counterwrap .sub{color:var(--ink);margin-top:3px;font-size:14px;font-weight:500}.counterwrap .num{font-family:var(--font-mono);letter-spacing:.5px;font-variant-numeric:tabular-nums;color:var(--ink);font-size:28px;font-weight:600}@keyframes numPulse{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}.num-pulse{animation:.3s numPulse}.phone{background:#000;border:1px solid #ffffff14;border-radius:38px;padding:10px;box-shadow:0 20px 60px #0009}.screen{aspect-ratio:3/4;background:#000;border-radius:28px;position:relative;overflow:hidden}.screen video{object-fit:contain;background:#000;width:100%;height:100%;position:absolute;inset:0}.camera-full-container{box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;width:100%;max-width:440px;min-height:100dvh;margin:0 auto;padding:16px 12px;display:flex}.camera-full-container .animate-slide-up{width:100%}.statusbar{z-index:5;font-family:var(--font-sans);color:#fff;text-shadow:0 1px 4px #00000080;justify-content:space-between;align-items:center;padding:14px 22px 0;font-size:13px;font-weight:600;display:flex;position:absolute;top:0;left:0;right:0}.eventbar{z-index:5;text-align:center;color:#fff;text-shadow:0 1px 4px #00000080;position:absolute;top:36px;left:0;right:0}.eventbar .evn{font-size:13px;font-weight:600}.eventbar .evd{color:#ffffffb3;margin-top:1px;font-size:10.5px}.flash{opacity:0;pointer-events:none;z-index:6;background:#fff;position:absolute;inset:0}.flash.go{animation:.3s flashpop}@keyframes flashpop{0%{opacity:.9}to{opacity:0}}.camfooter{z-index:5;flex-direction:column;align-items:center;gap:14px;padding:0 0 22px;display:flex;position:absolute;bottom:0;left:0;right:0}.zoomrow{-webkit-backdrop-filter:blur(10px);border-radius:var(--radius-full);background:#0006;border:1px solid #ffffff14;gap:16px;padding:6px 16px;display:flex}.zoomrow span{font-family:var(--font-mono);color:#ffffff80;font-size:11px}.zoomrow span.active{color:#fff;font-weight:600}.sisarow{font-family:var(--font-mono);color:#fffc;letter-spacing:.04em;font-size:11.5px}.shutterrow{justify-content:center;align-items:center;gap:44px;width:100%;display:flex}.lenslabel{font-family:var(--font-mono);color:#ffffff80;text-align:center;width:52px;font-size:9.5px;line-height:1.3}.shutterbtn{cursor:pointer;width:68px;height:68px;transition:transform var(--transition-fast);background:0 0;border:3.5px solid #fff;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex}.shutterbtn:active{transform:scale(.93)}.shutterbtn:after{content:"";width:56px;height:56px;transition:background var(--transition-fast);background:#fff;border-radius:50%}.shutterbtn:disabled{opacity:.3;cursor:not-allowed}.shutterbtn:disabled:after{background:#666}.shuttercaption{text-align:center;color:var(--muted);margin:14px 0 4px;font-size:12px;line-height:1.5}.toast{text-align:center;color:var(--ink);border-radius:var(--radius-md);border:1px solid var(--line);min-height:20px;transition:all var(--transition-base);background:#f2f1ed0f;margin-top:8px;padding:10px 14px;font-size:12.5px}.toast:empty{background:0 0;border-color:#0000}.gridwrap{grid-template-columns:1fr 1fr;gap:12px;margin-top:8px;display:grid}.frame{background:var(--card);border-radius:var(--radius-md);border:1px solid var(--line);transition:transform var(--transition-spring), box-shadow var(--transition-base);padding:6px 6px 24px;position:relative;overflow:hidden}.frame:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.frame img{border-radius:var(--radius-sm);aspect-ratio:3/4;object-fit:cover;width:100%;display:block}.frame .fnum{text-align:center;font-family:var(--font-mono);color:var(--muted);letter-spacing:.2px;white-space:nowrap;text-overflow:ellipsis;font-size:9px;position:absolute;bottom:5px;left:6px;right:6px;overflow:hidden}.dl{text-align:center;font-family:var(--font-mono);color:var(--ink);transition:opacity var(--transition-fast);margin-top:2px;font-size:9.5px;text-decoration:none;display:block}.dl:hover{opacity:.7}.empty{text-align:center;color:var(--muted);padding:40px 16px;font-size:13px;line-height:1.6}.status-badge{border-radius:var(--radius-full);font-size:11px;font-weight:600;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:6px;padding:5px 12px;display:inline-flex}.status-badge:before{content:"";border-radius:50%;width:6px;height:6px}.status-badge.active{background:var(--success-bg);color:var(--success)}.status-badge.active:before{background:var(--success);box-shadow:0 0 6px var(--success);animation:2s infinite statusPulse}.status-badge.revealed{background:var(--info-bg);color:var(--info)}.status-badge.revealed:before{background:var(--info)}.status-badge.ended{background:var(--warning-bg);color:var(--warning)}.status-badge.ended:before{background:var(--warning)}@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.4}}.spinner{border:2.5px solid var(--line);border-top-color:var(--ink);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-center{justify-content:center;align-items:center;padding:60px 0;display:flex}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes revealBounce{0%{opacity:0;transform:scale(.3)rotate(-5deg)}60%{transform:scale(1.05)rotate(1deg)}to{opacity:1;transform:scale(1)rotate(0)}}.animate-fade-in{animation:.4s both fadeIn}.animate-slide-up{animation:.5s both slideUp}.animate-reveal{animation:.6s cubic-bezier(.34,1.56,.64,1) both revealBounce}.stagger>*{animation:.4s both fadeIn}.stagger>:first-child{animation-delay:50ms}.stagger>:nth-child(2){animation-delay:.1s}.stagger>:nth-child(3){animation-delay:.15s}.stagger>:nth-child(4){animation-delay:.2s}.stagger>:nth-child(5){animation-delay:.25s}.stagger>:nth-child(6){animation-delay:.3s}.stagger>:nth-child(7){animation-delay:.35s}.stagger>:nth-child(8){animation-delay:.4s}.stagger>:nth-child(9){animation-delay:.45s}.stagger>:nth-child(10){animation-delay:.5s}.guest-entry{text-align:center;padding:20px 0}.guest-entry .event-name{letter-spacing:-.02em;margin:0 0 4px;font-size:22px;font-weight:700}.guest-entry .event-date{color:var(--muted);font-size:13px;font-family:var(--font-mono)}.guest-entry .invite-text{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:20px 0 6px;font-size:13px;font-weight:600}.reveal-header{text-align:center;padding:20px 0 10px}.reveal-header h2{letter-spacing:-.02em;margin:0 0 4px;font-size:20px;font-weight:700}.reveal-header p{color:var(--muted);margin:0;font-size:13px}@media (max-width:480px){.app-shell{padding:16px 12px 60px}.sheet{border-radius:16px;padding:22px 16px 26px}.phone{border-radius:32px}.screen{border-radius:24px}.camera-full-container{background:#000;flex-direction:column;justify-content:stretch;max-width:100%;height:100dvh;min-height:100dvh;padding:0;display:flex;overflow:hidden}.camera-full-container .animate-slide-up{flex-direction:column;width:100%;height:100%;display:flex}.camera-full-container .phone{box-shadow:none;background:#000;border:none;border-radius:0;flex-direction:column;width:100%;height:100%;padding:0;display:flex}.camera-full-container .screen{aspect-ratio:auto;border-radius:0;flex:1;width:100%;position:relative;overflow:hidden}.camera-full-container .screen video{object-fit:cover}.camera-full-container .shuttercaption{display:none}}@media (min-width:768px){.gridwrap{grid-template-columns:repeat(3,1fr)}}.skeleton{background:linear-gradient(90deg, var(--card) 25%, var(--card-hover) 50%, var(--card) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.section-hidden{display:none!important}.divider{background:var(--line);height:1px;margin:20px 0}@keyframes slideUpModal{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}
