:root{color:#1f2933;background:#f3f5f2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}body{margin:0}a{color:inherit}button,select,textarea{font:inherit}button{cursor:pointer}.preview-shell{min-height:100vh;display:grid;grid-template-columns:minmax(250px,320px) minmax(360px,1fr) minmax(320px,420px);gap:18px;padding:18px}.runtime-page,.editor-runtime-shell{min-height:100vh;background:#f3f5f2;color:#1f2933}.runtime-page{display:grid;place-items:center;padding:20px}.editor-runtime-shell{display:grid;grid-template-columns:minmax(320px,440px) minmax(360px,1fr);gap:18px;padding:18px}.consumer-home,.consumer-page,.composer-shell{min-height:100vh;background:#f3f5f2;color:#1f2933}.consumer-home,.consumer-page{display:grid;gap:18px;align-content:start;padding:max(18px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom))}.consumer-hero{display:grid;gap:12px;max-width:760px}.consumer-hero h1,.composer-header h1{margin:0;font-size:clamp(2rem,8vw,4.8rem);line-height:.95;letter-spacing:0}.consumer-hero p,.composer-header p,.consumer-action-panel p{margin:0;color:#52636a;line-height:1.5}.template-picker{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.template-card{display:grid;grid-template-rows:220px auto;overflow:hidden;border:2px solid #d7dedb;border-radius:8px;background:#fff;padding:0;text-align:left}.template-card.is-selected{border-color:#d96c4a;box-shadow:0 0 0 4px #d96c4a29}.template-card__preview{height:220px;overflow:hidden;pointer-events:none}.template-card__preview .gift-runtime{min-height:100%;transform:scale(.62);transform-origin:top center}.template-card__body,.consumer-action-panel{display:grid;gap:8px;padding:14px}.template-card__body strong,.consumer-action-panel h2{color:#203038;font-size:1.08rem}.consumer-action-panel{align-items:center;border:1px solid #d7dedb;border-radius:8px;background:#fff}.turnstile-box{min-height:65px}.composer-shell{display:grid;grid-template-columns:minmax(320px,520px) minmax(360px,1fr);gap:18px;padding:18px 18px 96px}.composer-panel{display:grid;gap:16px;align-content:start}.composer-header{display:grid;gap:8px}.composer-tabs,.composer-actions{display:flex;gap:10px}.composer-tabs button,.composer-actions button,.qr-panel button{min-height:44px;border:1px solid #cfd8dc;border-radius:8px;background:#fff;padding:0 14px;color:#203038;font-weight:800}.composer-tabs button.is-active,.composer-actions button:last-child{border-color:transparent;background:#d96c4a;color:#fff}.composer-form{display:grid;gap:14px}.composer-section,.publish-review,.advanced-json{display:grid;gap:12px;border:1px solid #d7dedb;border-radius:8px;background:#ffffffe6;padding:14px}.composer-section h2,.publish-review h2{margin:0;font-size:1.1rem}.composer-field{display:grid;gap:8px}.composer-field input,.composer-field textarea,.field select{width:100%;min-height:44px;border:1px solid #cfd8dc;border-radius:8px;background:#fff;padding:10px 12px;color:#203038}.composer-field textarea{resize:vertical;line-height:1.45}.composer-field small{color:#52636a;line-height:1.4}.field-row{display:flex;justify-content:space-between;gap:12px}.composer-actions{position:fixed;left:18px;right:18px;bottom:max(18px,env(safe-area-inset-bottom));z-index:20;justify-content:center;padding:10px;border:1px solid #d7dedb;border-radius:8px;background:#fffffff0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.composer-actions button{min-width:140px}.composer-phone-stage{position:sticky;top:18px;align-self:start}.qr-grid--separated .qr-panel--private{border-width:3px}.owner-edit-link{position:fixed;top:max(14px,env(safe-area-inset-top));right:14px;z-index:30;min-height:40px;display:inline-grid;place-items:center;border-radius:999px;background:#ffffffeb;padding:0 14px;color:#203038;font-weight:800;text-decoration:none;box-shadow:0 8px 24px #1f293329}.runtime-panel{width:min(720px,100%);display:grid;gap:14px;border:1px solid #d7dedb;border-radius:8px;background:#ffffffd1;padding:18px}.editor-runtime-panel{align-self:start}.runtime-panel h1{margin:0;font-size:1.9rem;letter-spacing:0}.runtime-actions{display:flex;flex-wrap:wrap;gap:10px}.runtime-actions button,.runtime-actions a,.runtime-panel>a{min-height:42px;display:inline-grid;place-items:center;border:1px solid #cfd8dc;border-radius:8px;background:#fff;padding:0 14px;color:#203038;font-weight:800;text-decoration:none}.runtime-actions button:first-child,.runtime-actions a:first-child,.runtime-panel>.primary-action{border-color:transparent;background:#d96c4a;color:#fff}.qr-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.qr-panel{display:grid;gap:10px;align-content:start;border:2px solid #d7dedb;border-radius:8px;background:#fff;padding:14px}.qr-panel--private{border-color:#c74468;background:#fff5f7}.qr-panel h2,.qr-panel p{margin:0}.qr-panel h2{font-size:1rem}.qr-panel p{color:#52636a;font-size:.9rem;line-height:1.45}.qr-panel img,.qr-placeholder{width:100%;max-width:220px;aspect-ratio:1;justify-self:center;border:1px solid #e2e7e5;border-radius:8px;background:#fff}.qr-placeholder{background:linear-gradient(45deg,#f1f4f3 25%,transparent 25%),linear-gradient(-45deg,#f1f4f3 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#f1f4f3 75%),linear-gradient(-45deg,transparent 75%,#f1f4f3 75%);background-position:0 0,0 10px,10px -10px,-10px 0;background-size:20px 20px}.qr-panel a{min-height:38px;display:inline-grid;place-items:center;border-radius:8px;background:#203038;color:#fff;text-decoration:none;font-weight:800}.qr-panel code{max-width:100%;overflow-wrap:anywhere;border-radius:6px;background:#1f293314;padding:8px;color:#38464d;font-size:.72rem}.runtime-meta{display:grid;grid-template-columns:96px 1fr;gap:8px 12px;margin:0;color:#52636a;font-size:.9rem}.runtime-meta dt{font-weight:800}.runtime-meta dd{margin:0;overflow-wrap:anywhere}.runtime-json{width:100%;min-height:340px;resize:vertical;border:1px solid #cfd8dc;border-radius:8px;background:#121a1f;color:#e8f1f2;padding:12px;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.78rem;line-height:1.5}.media-panel{display:grid;gap:14px;border:1px solid #d7dedb;border-radius:8px;background:#f9fbfa;padding:14px}.media-panel__header,.asset-list li,.music-preview{display:flex;align-items:center;justify-content:space-between;gap:10px}.media-panel h2,.media-panel h3,.media-panel figure,.asset-list{margin:0}.media-panel h2{font-size:1.08rem}.media-panel h3{font-size:.95rem}.media-panel__header span{color:#52636a;font-size:.86rem;font-weight:800}.media-group{display:grid;gap:10px}.media-upload{min-height:40px;display:inline-grid;place-items:center;justify-self:start;border:1px solid #cfd8dc;border-radius:8px;background:#fff;padding:0 12px;color:#203038;font-weight:800;cursor:pointer}.media-upload input{width:1px;height:1px;position:absolute;opacity:0;pointer-events:none}.media-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:10px}.media-thumb{display:grid;gap:8px}.media-placeholder{min-height:132px;display:grid;align-content:center;gap:6px;padding:14px;border:1px dashed #9eb1b8;border-radius:8px;background:#f8fbfa;color:#52636a}.media-placeholder strong{color:#253238}.media-placeholder span{font-size:.82rem;line-height:1.35}.choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:8px}.choice-grid button{min-height:44px;display:flex;align-items:center;gap:8px;padding:8px 10px;border:1px solid #cfd8dc;border-radius:8px;background:#fff;color:#253238;text-align:left}.choice-grid button.is-selected{border-color:#2d7c93;box-shadow:0 0 0 3px #2d7c9324}.choice-swatch{width:20px;height:20px;flex:0 0 auto;border:1px solid rgba(0,0,0,.16);border-radius:999px}.media-thumb img{width:100%;aspect-ratio:1;display:block;border-radius:8px;background:#eef2f0;object-fit:cover}.media-thumb figcaption,.asset-list span{min-width:0;color:#52636a;font-size:.78rem;line-height:1.35;overflow-wrap:anywhere}.media-row-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.media-row-actions button,.asset-list button,.music-preview button{min-height:32px;border:1px solid #cfd8dc;border-radius:7px;background:#fff;color:#203038;font-size:.78rem;font-weight:800}.media-row-actions button:disabled{cursor:not-allowed;opacity:.45}.music-preview audio{width:min(260px,100%)}.asset-list{display:grid;gap:8px;padding:0;list-style:none}.runtime-note,.runtime-error{margin:0;font-size:.92rem;line-height:1.45}.runtime-note{color:#52636a}.runtime-error{color:#9d2b2b}.preview-sidebar,.preview-editor{display:flex;min-width:0;flex-direction:column;gap:14px}.preview-eyebrow,.scene-kicker{margin:0 0 8px;color:#2d7c93;font-size:.76rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.preview-sidebar h1{margin:0;font-size:1.8rem;letter-spacing:0}.field{display:grid;gap:8px;font-weight:700}.field select,.editor-panel textarea{width:100%;border:1px solid #cfd8dc;border-radius:8px;background:#fff;color:#172126}.field select{min-height:42px;padding:0 12px}.template-summary{margin:-4px 0 0;color:#52636a;font-size:.88rem;line-height:1.45}.toolbar{display:grid;grid-template-columns:repeat(3,44px);gap:8px}.toolbar button,.audio-toggle{width:44px;height:44px;display:inline-grid;place-items:center;border:1px solid #cfd8dc;border-radius:8px;background:#fff;color:#26343a}.inspector-panel,.validation-panel,.editor-panel{border:1px solid #d7dedb;border-radius:8px;background:#ffffffc7;padding:14px}.panel-title{display:flex;align-items:center;gap:8px;margin-bottom:10px}.panel-title h2{margin:0;font-size:.95rem}.scene-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.scene-list button{width:100%;min-height:48px;display:grid;grid-template-columns:28px 1fr;align-items:center;column-gap:10px;border:1px solid #d5dedb;border-radius:8px;background:#fff;text-align:left}.scene-list button span{grid-row:span 2;width:28px;height:28px;display:grid;place-items:center;border-radius:50%;background:#edf7f7;color:#24646f;font-size:.78rem;font-weight:800}.scene-list button strong,.scene-list button small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scene-list button small{color:#617076}.scene-list button.is-selected{border-color:#d96c4a;box-shadow:0 0 0 3px #d96c4a24}.package-summary{display:grid;grid-template-columns:max-content 1fr;gap:6px 10px;margin:0;color:#425057;font-size:.85rem;line-height:1.35}.package-summary dt{color:#617076}.package-summary dd{min-width:0;margin:0;overflow-wrap:anywhere}.validation-panel.is-pass{border-color:#8bc3a1}.validation-panel.is-fail{border-color:#e68a8a}.validation-panel p,.validation-panel ul,.registry-panel p{margin:0;color:#425057;font-size:.9rem}.validation-panel ul{display:grid;gap:6px;padding-left:18px}.phone-stage{display:grid;place-items:center;min-width:0;padding:16px 0}.phone-frame{width:min(390px,100%);aspect-ratio:390 / 844;max-height:calc(100vh - 44px);overflow:hidden;border:12px solid #1f2933;border-radius:32px;background:#111;box-shadow:0 18px 60px #1f293347}.editor-panel textarea,.editor-panel pre{min-height:260px;max-height:38vh;margin:0;overflow:auto;padding:12px;border-radius:8px;background:#121a1f;color:#e8f1f2;font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.78rem;line-height:1.5}.editor-panel textarea{resize:vertical}.gift-runtime{position:relative;width:100%;height:100%;overflow:hidden;background:radial-gradient(circle at 18% 18%,rgba(255,255,255,.74),transparent 30%),linear-gradient(160deg,var(--gift-bg),var(--gift-surface));color:var(--gift-text)}.gift-runtime--error{display:grid;align-content:center;gap:12px;padding:28px;background:#fff5f5;color:#7a2525}.gift-runtime--error h2{margin:0;font-size:1.2rem}.gift-runtime--error ul{margin:0;padding-left:18px}.audio-toggle{position:absolute;z-index:6;top:14px;right:14px;background:#ffffffb8;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.scene{position:relative;min-height:100%;display:grid;align-content:center;justify-items:center;gap:18px;padding:42px 26px;text-align:center}.scene h1{max-width:11ch;margin:0;font-size:clamp(2rem,14vw,4.4rem);line-height:.95;letter-spacing:0}.scene p{max-width:28ch;margin:0;color:color-mix(in srgb,var(--gift-text),white 16%);font-size:1rem;line-height:1.55}.primary-action{min-width:132px;min-height:44px;border:0;border-radius:8px;background:var(--gift-accent);color:#fff;font-weight:800;box-shadow:0 10px 24px #242d322e}.primary-action:disabled{cursor:default;opacity:.48}.presentation-countdown{width:min(240px,100%);min-height:150px;display:grid;place-items:center;border:1px solid rgba(0,0,0,.08);border-radius:8px;background:#ffffff75}.presentation-countdown strong{color:var(--gift-accent);font-size:6rem;line-height:1}.countdown-complete{max-width:12ch;color:var(--gift-text);font-size:1.45rem;font-weight:800;line-height:1.18}.countdown-grid{width:100%;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.countdown-cell{min-height:78px;display:grid;place-items:center;border:1px solid rgba(0,0,0,.08);border-radius:8px;background:#ffffff7a}.countdown-cell strong{font-size:1.8rem}.countdown-cell span{color:#65757c;font-size:.72rem;font-weight:800;text-transform:uppercase}.gift-box{position:relative;width:170px;height:170px;border:0;background:transparent}.gift-body,.gift-lid{position:absolute;left:18px;width:134px;border-radius:8px;background:var(--gift-accent);box-shadow:inset -14px 0 #00000014}.gift-body{bottom:12px;height:104px}.gift-lid{top:26px;height:42px;transition:transform .46s ease}.gift-ribbon{position:absolute;left:76px;top:28px;z-index:2;width:18px;height:132px;background:var(--gift-secondary)}.gift-box.is-open .gift-lid{transform:rotate(-15deg) translate(-24px,-34px)}.gift-confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.gift-confetti span{--particle-index: 0;position:absolute;left:50%;top:58px;width:7px;height:12px;border-radius:3px;background:var(--gift-secondary);opacity:0;transform:translate(-50%) rotate(0)}.gift-box.is-open .gift-confetti span{animation:gift-pop .76s ease-out forwards;animation-delay:calc(var(--particle-index) * 18ms)}.gift-box.is-open .gift-confetti span:nth-child(3n){background:#ffd166}.gift-box.is-open .gift-confetti span:nth-child(3n+1){background:#06d6a0}.gift-box.is-open .gift-confetti span:nth-child(3n+2){background:#f783ac}.cake{position:relative;width:220px;height:190px;border:0;background:transparent}.cake-layer,.cake-candles{position:absolute;left:50%;transform:translate(-50%)}.cake-layer{border-radius:18px 18px 10px 10px;background:var(--gift-accent);box-shadow:inset 0 -14px #00000014}.cake-layer-top{bottom:92px;width:136px;height:42px}.cake-layer-mid{bottom:52px;width:176px;height:48px;background:var(--gift-secondary)}.cake-layer-bottom{bottom:8px;width:216px;height:54px}.cake-candles{bottom:128px;z-index:3;display:flex;gap:10px}.candle{position:relative;width:9px;height:34px;border-radius:6px;background:#fff5c7}.flame{position:absolute;left:50%;top:-16px;width:12px;height:18px;border-radius:50% 50% 45% 45%;background:#ffd166;transform:translate(-50%);animation:flicker .62s ease-in-out infinite alternate}.cake--quiet .flame{opacity:0}.photo-carousel{width:100%;display:flex;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:thin;padding:4px 14px 12px}.polaroid{aspect-ratio:1;flex:0 0 72%;margin:0;overflow:hidden;border:7px solid #fff;border-bottom-width:18px;border-radius:6px;background:#fff;box-shadow:0 8px 18px #20242829;scroll-snap-align:center}.polaroid:nth-child(2n){transform:rotate(2deg)}.polaroid:nth-child(odd){transform:rotate(-2deg)}.polaroid img{width:100%;height:100%;display:block;object-fit:cover}.envelope{position:relative;width:250px;min-height:220px;border:0;background:transparent}.envelope:before{content:"";position:absolute;top:74px;right:0;bottom:0;left:0;border-radius:8px;background:var(--gift-secondary)}.envelope-flap{position:absolute;left:0;top:72px;z-index:2;width:250px;height:88px;clip-path:polygon(0 0,50% 80%,100% 0);background:color-mix(in srgb,var(--gift-secondary),black 8%);transform-origin:top;transition:transform .42s ease}.letter-paper{position:absolute;left:18px;right:18px;top:24px;z-index:1;display:grid;gap:10px;padding:16px;border-radius:8px;background:#fffdf7;color:#3a302a;text-align:left;box-shadow:0 10px 24px #00000029;transform:translateY(58px);transition:transform .42s ease}.letter-paper span,.letter-paper em{font-size:.86rem;line-height:1.45}.envelope.is-open .envelope-flap{transform:rotateX(180deg)}.envelope.is-open .letter-paper{transform:translateY(-26px)}.scene-fireworks{background:#111923;color:#f8fbff}.fireworks-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.scene-fireworks h1,.scene-fireworks .primary-action{position:relative;z-index:1}.signature{color:var(--gift-secondary)!important;font-weight:800}@keyframes flicker{0%{transform:translate(-50%) scale(.92)}to{transform:translate(-50%) scale(1.08)}}@keyframes gift-pop{0%{opacity:0;transform:translate(-50%) rotate(0) scale(.6)}18%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--particle-x)),var(--particle-y)) rotate(var(--particle-r)) scale(1)}}@media(max-width:1180px){.preview-shell{grid-template-columns:300px minmax(340px,1fr)}.preview-editor{grid-column:1 / -1;display:grid;grid-template-columns:1fr 1fr}.registry-panel{grid-column:1 / -1}}@media(max-width:760px){.preview-shell{grid-template-columns:1fr;padding:12px}.preview-editor{display:flex}.phone-frame{width:min(390px,calc(100vw - 24px));max-height:none}.editor-runtime-shell{grid-template-columns:1fr;padding:12px}.consumer-page,.consumer-home{padding:14px 12px 88px}.consumer-hero h1,.composer-header h1{font-size:2.35rem;line-height:1}.template-picker{grid-template-columns:1fr}.template-card{grid-template-columns:116px 1fr;grid-template-rows:auto}.template-card__preview{height:148px}.template-card__preview .gift-runtime{width:220px;transform:scale(.38);transform-origin:top left}.composer-shell{grid-template-columns:1fr;padding:14px 12px 94px}.composer-phone-stage{display:none;position:static}.composer-shell.is-previewing .composer-panel{display:none}.composer-shell.is-previewing .composer-phone-stage{display:grid}.composer-actions{left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom))}.composer-actions button{min-width:0;flex:1}}
