:root{color-scheme:dark;--bg:#020202;--text:#f7f4e7;--muted:#9b978b;--line:rgba(255,255,255,.18);--gold:#f5ef9b}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg)}body{overflow:hidden;color:var(--text);font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}.stage{position:relative;min-height:100svh;overflow:hidden;background:radial-gradient(circle at 50% 46%,#17130b 0,#050505 36%,#010101 78%)}#particleCanvas,.noise{position:absolute;inset:0;width:100%;height:100%}.noise{pointer-events:none;opacity:.05}.intro-screen,.show-screen{position:relative;z-index:2;min-height:100svh;width:min(100% - 40px,1100px);margin:auto}.intro-screen{display:grid;grid-template-columns:1.1fr .9fr;align-items:center;gap:8vw;padding:48px 0}.intro-copy h1{margin:0;font-size:clamp(42px,7vw,92px);font-weight:500;line-height:1.08}.intro-copy h1 span,.show-content h2 strong{color:var(--gold)}.eyebrow,.show-mark{color:#a9a48e;font:11px ui-monospace,monospace;letter-spacing:.22em}.intro{color:#b4afa3;line-height:1.8}.setup-panel{padding:28px;border:1px solid var(--line);background:rgba(7,7,7,.72)}label{display:grid;gap:8px;margin-bottom:16px;color:#a9a59a;font-size:12px}input,textarea,select{width:100%;border:1px solid #444;border-radius:2px;padding:13px;background:#111;color:var(--text);font:14px inherit}textarea{resize:vertical}.split-fields{display:grid;grid-template-columns:1fr 1fr;gap:12px}.primary-action,.share{width:100%;min-height:50px;border:0;border-radius:2px;background:var(--gold);color:#111;cursor:pointer;font-weight:700}.hint{color:#6f6c64;font-size:11px;text-align:center}.show-screen{display:flex;flex-direction:column;padding:25px 0 36px}.show-header{display:flex;align-items:center;justify-content:space-between}.ghost-button,.music-toggle{border:0;background:none;color:#aaa79d;cursor:pointer}.music-toggle{width:38px;height:38px;border:1px solid var(--line);border-radius:50%;font-size:20px;color:var(--gold)}.show-content{display:grid;place-items:center;align-content:center;flex:1;text-align:center}.show-kicker{color:#aaa586;font:12px ui-monospace,monospace}.projection-stage{position:relative;width:min(72vw,340px);height:150px;display:grid;place-items:center}.projection-number{font:clamp(100px,22vw,180px) Georgia,serif;color:#f6f1b2;text-shadow:0 0 18px #fff59a;animation:numberPulse 3.6s both}.projection-burst{position:absolute;inset:0;background-image:radial-gradient(circle,#fff5a6 0 1px,transparent 2px),radial-gradient(circle,#a982ff 0 1px,transparent 2px);background-size:16px 20px,23px 31px;opacity:0;animation:burstIn 3.6s both}.flower-card{position:absolute;width:112px;height:160px;padding:5px;border:2px solid #b9ffd2;background:#102014;box-shadow:0 0 18px #b9ffd2;opacity:0;overflow:hidden;animation:flowerReveal 8.6s 2.9s both}.flower-card img{width:100%;height:100%;object-fit:cover}.show-content h2{margin:0;font-size:clamp(34px,7vw,74px);font-weight:500;line-height:1.15;animation:titleReveal .7s 3.2s both}.cake-scene{position:relative;width:min(88vw,430px);height:240px;margin:16px auto 10px;animation:cakeReveal .9s 3.45s both}.cake{position:absolute;left:50%;bottom:38px;width:220px;height:130px;transform:translateX(-50%)}.cake-top{position:absolute;inset:28px 8px auto;height:44px;border-radius:50%;background:#d9c269;box-shadow:0 0 22px #f4dc7b}.cake-body{position:absolute;left:18px;right:18px;top:46px;height:68px;border-radius:0 0 36px 36px;background:linear-gradient(90deg,#443524,#efe08b,#33271d);box-shadow:0 0 18px #f1d66a}.candle{position:absolute;z-index:2;top:0;width:7px;height:43px;border-radius:3px;background:#fff3a5}.candle-one{left:31%}.candle-two{left:49%;height:52px}.candle-three{left:66%;height:38px}.flame{position:absolute;z-index:3;top:-15px;width:12px;height:20px;border-radius:70% 30% 70% 30%;background:#fffcc7;box-shadow:0 0 16px #f5e65f;transform:rotate(45deg);animation:flicker .8s infinite alternate}.flame-one{left:29%}.flame-two{left:47%;top:-21px}.flame-three{left:64%;top:-13px}.cake-base{position:absolute;left:50%;bottom:24px;width:300px;height:13px;border-radius:50%;transform:translateX(-50%);background:#a48c42;box-shadow:0 0 28px #dec95d}.cake-sparkles{position:absolute;inset:0;background-image:radial-gradient(circle,#fff8ba 0 1px,transparent 2px),radial-gradient(circle,#a77dff 0 1px,transparent 2px);background-size:35px 31px,47px 43px;animation:float 5s linear infinite}.wish-message{color:#d1cdbf;font-size:clamp(15px,2.4vw,20px);line-height:1.8}.show-actions{display:flex;align-items:center;gap:12px;margin-top:26px}.share{width:auto;padding:0 22px}.share-status{color:#c9bd70;font-size:12px}[hidden]{display:none!important}@keyframes flicker{to{transform:translate(1px,-2px) rotate(35deg);opacity:.72}}@keyframes float{to{background-position:0 45px,20px -35px}}@keyframes numberPulse{0%,78%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.5)}}@keyframes burstIn{0%,60%{opacity:0;transform:scale(.4)}72%{opacity:.9;transform:scale(1.1)}100%{opacity:0;transform:scale(1.8)}}@keyframes flowerReveal{0%,8%{opacity:0;transform:scale(.65)}18%,70%{opacity:1;transform:scale(1)}100%{opacity:0}}@keyframes titleReveal{from{opacity:0;transform:translateY(16px);filter:blur(8px)}to{opacity:1;transform:none;filter:none}}@keyframes cakeReveal{from{opacity:0;transform:translateY(24px) scale(.7)}to{opacity:1;transform:none}}@media(max-width:760px){.intro-screen{display:flex;flex-direction:column;justify-content:center;gap:38px;padding:32px 0}.intro-copy{text-align:center}.setup-panel{padding:22px}.show-content h2{font-size:clamp(32px,10vw,54px)}.cake-scene{height:210px}.show-actions{flex-direction:column}.share{width:min(100%,240px)}}
:root{color-scheme:dark;--bg:#020202;--text:#f7f4e7;--muted:#9b978b;--line:rgba(255,255,255,.18);--gold:#f5ef9b}.photo-picker input{padding:10px}.photo-picker small{color:#777;font-weight:400}.photo-note{color:#777;font-size:11px}.photo-preview{display:flex;gap:7px;overflow:auto}.photo-preview img{width:42px;height:50px;flex:0 0 42px;object-fit:cover;border:1px solid #777}
:root{color-scheme:dark;--bg:#020202;--text:#f7f4e7;--muted:#9b978b;--line:rgba(255,255,255,.18);--gold:#f5ef9b}.photo-picker input{padding:10px}.photo-picker small{color:#777;font-weight:400}.photo-note{color:#777;font-size:11px}.photo-preview{display:flex;gap:7px;overflow:auto}.photo-preview img{width:42px;height:50px;flex:0 0 42px;object-fit:cover;border:1px solid #777}
:root{color-scheme:dark;--bg:#020202;--text:#f7f4e7;--muted:#9b978b;--line:rgba(255,255,255,.18);--gold:#f5ef9b}.show-content h2,.show-content .cake-scene,.show-content .wish-message,.show-content .show-actions{opacity:0;pointer-events:none;transition:opacity .7s ease}.scene-phrase,.photo-orbit{position:absolute;inset:0;display:grid;place-items:center;opacity:0;pointer-events:none}.scene-phrase{font-size:clamp(30px,7vw,72px);font-weight:600;color:#ecf6c1;text-shadow:0 0 18px #c3f67e}.scene-phrase small{display:block;margin-top:8px;font-size:.35em;letter-spacing:.18em}.photo-orbit{animation:orbitSpin 18s linear infinite}.orbit-photo{position:absolute;left:50%;top:50%;width:76px;height:112px;margin:-56px 0 0 -38px;padding:4px;border:1px solid rgba(224,255,199,.65);background:#142015;box-shadow:0 0 18px rgba(210,255,150,.55);transform:rotate(calc(var(--i) * 60deg)) translateY(-103px) rotate(calc(var(--i) * -60deg));animation:photoFloat 2.8s ease-in-out calc(var(--i) * -.22s) infinite alternate}.orbit-photo img{width:100%;height:100%;display:block;object-fit:cover}.show-screen[data-phase="gallery"] .photo-orbit,.show-screen[data-phase="photos"] .photo-orbit{opacity:1}.show-screen[data-phase="gallery"] .projection-number,.show-screen[data-phase="gallery"] .scene-phrase,.show-screen[data-phase="photos"] .projection-number,.show-screen[data-phase="photos"] .scene-phrase{opacity:0}.show-screen[data-phase="countdown"] .projection-number{opacity:1}.show-screen[data-phase="greeting"] .scene-phrase{opacity:1}.show-screen[data-phase="cake"] .show-content h2,.show-screen[data-phase="cake"] .show-content .cake-scene,.show-screen[data-phase="cake"] .show-content .wish-message,.show-screen[data-phase="finale"] .show-content h2,.show-screen[data-phase="finale"] .show-content .cake-scene,.show-screen[data-phase="finale"] .show-content .wish-message,.show-screen[data-phase="finale"] .show-content .show-actions{opacity:1;pointer-events:auto}.show-screen[data-phase="cake"] .show-actions{opacity:0}.show-screen[data-phase="photos"] .show-content h2,.show-screen[data-phase="photos"] .show-content .cake-scene,.show-screen[data-phase="photos"] .show-content .wish-message,.show-screen[data-phase="photos"] .show-content .show-actions{opacity:0}@keyframes orbitSpin{to{transform:rotate(360deg)}}@keyframes photoFloat{to{margin-top:-62px;filter:brightness(1.18)}}
:root{color-scheme:dark;--bg:#020202;--text:#f7f4e7;--muted:#9b978b;--line:rgba(255,255,255,.18);--gold:#f5ef9b}.show-screen[data-phase="countdown"] .projection-number{animation:none!important;opacity:1!important;transform:none}.show-screen[data-phase="gallery"] .projection-stage,.show-screen[data-phase="photos"] .projection-stage{height:230px}.show-screen[data-phase="greeting"] .projection-stage{height:190px}.show-screen[data-phase="cake"] .projection-stage,.show-screen[data-phase="finale"] .projection-stage{height:92px}
:root{color-scheme:dark;--bg:#020202;--text:#f7f4e7;--muted:#9b978b;--line:rgba(255,255,255,.18);--gold:#f5ef9b}.show-screen[data-phase="gallery"] .show-content h2,.show-screen[data-phase="gallery"] .show-content .cake-scene,.show-screen[data-phase="gallery"] .show-content .wish-message,.show-screen[data-phase="gallery"] .show-content .show-actions,.show-screen[data-phase="countdown"] .show-content h2,.show-screen[data-phase="countdown"] .show-content .cake-scene,.show-screen[data-phase="countdown"] .show-content .wish-message,.show-screen[data-phase="countdown"] .show-content .show-actions,.show-screen[data-phase="greeting"] .show-content h2,.show-screen[data-phase="greeting"] .show-content .cake-scene,.show-screen[data-phase="greeting"] .show-content .wish-message,.show-screen[data-phase="greeting"] .show-content .show-actions,.show-screen[data-phase="photos"] .show-content h2,.show-screen[data-phase="photos"] .show-content .cake-scene,.show-screen[data-phase="photos"] .show-content .wish-message,.show-screen[data-phase="photos"] .show-content .show-actions{opacity:0!important;animation:none!important;pointer-events:none}.show-screen[data-phase="cake"] .show-content h2,.show-screen[data-phase="cake"] .show-content .cake-scene,.show-screen[data-phase="cake"] .show-content .wish-message,.show-screen[data-phase="finale"] .show-content h2,.show-screen[data-phase="finale"] .show-content .cake-scene,.show-screen[data-phase="finale"] .show-content .wish-message,.show-screen[data-phase="finale"] .show-content .show-actions{opacity:1!important;animation:none!important;pointer-events:auto}
:root{--display-accent:#eaf6ae}.show-content h2 strong{color:var(--display-accent)!important}.scene-phrase{color:transparent;background-image:radial-gradient(circle at 20% 25%,#fff7b0 0 1px,transparent 2px),radial-gradient(circle at 70% 65%,#d6f59d 0 1px,transparent 2px);background-size:13px 15px,19px 21px;-webkit-background-clip:text;background-clip:text;text-shadow:0 0 18px rgba(207,246,145,.72)}.scene-phrase small{color:var(--display-accent);text-shadow:0 0 16px rgba(207,246,145,.9)}.show-screen[data-phase="greeting"] .projection-number{opacity:0!important;animation:none!important}.show-screen[data-phase="cake"] .projection-stage,.show-screen[data-phase="finale"] .projection-stage{height:0!important;margin:0;overflow:visible}.cake-sparkles{mask-image:radial-gradient(ellipse at center,#000 0 38%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse at center,#000 0 38%,transparent 75%)}
@media (orientation:landscape) and (max-height:700px){.show-screen{padding:14px 26px 18px}.show-header{height:32px}.show-content{padding:0;align-content:center}.show-kicker{margin:0 0 3px;font-size:10px}.show-content h2{font-size:clamp(24px,5vw,46px);line-height:1.04}.cake-scene{width:min(48vw,330px);height:156px;margin:3px auto 0}.cake{transform:translateX(-50%) scale(.72);transform-origin:center bottom}.cake-base{transform:translateX(-50%) scale(.72);transform-origin:center}.wish-message{margin-top:0;font-size:14px;line-height:1.3}.show-actions{margin-top:7px}.show-actions .share{min-height:34px}.show-screen[data-phase="greeting"] .projection-stage{height:160px}.scene-phrase{font-size:clamp(26px,6vw,58px)}.show-screen[data-phase="cake"] .show-content h2{font-size:clamp(23px,4.7vw,42px)}.show-screen[data-phase="cake"] .cake-scene{height:142px}.show-screen[data-phase="finale"] .cake-scene{height:150px}}
:root{--display-accent:#eaf6ae}.scene-phrase{color:var(--display-accent)!important;background:none!important;-webkit-background-clip:border-box!important;background-clip:border-box!important;text-shadow:0 0 9px rgba(235,255,170,.95),0 0 24px rgba(198,246,125,.62)}.scene-phrase small{color:var(--display-accent)!important}
:root{--display-accent:#eaf6ae}@media (orientation:landscape) and (max-height:700px){.cake{transform:translateX(-50%) scale(.9)}.cake-base{transform:translateX(-50%) scale(.9)}.cake-scene{height:170px}.show-screen[data-phase="cake"] .cake-scene,.show-screen[data-phase="finale"] .cake-scene{height:166px}.scene-phrase{font-size:clamp(42px,9vw,76px)}}
:root{--display-accent:#eaf6ae}.cake-canvas{display:block;width:100%;height:100%;filter:drop-shadow(0 0 14px rgba(223,207,121,.38))}
:root{--display-accent:#eaf6ae}.show-screen[data-phase="cake"] .projection-number,.show-screen[data-phase="finale"] .projection-number{opacity:0!important;animation:none!important}
:root{--display-accent:#eaf6ae}.show-screen[data-phase="countdown"] .photo-orbit{opacity:0!important;visibility:hidden}.projection-number.number-pop{animation:countdownPop .8s cubic-bezier(.2,.8,.2,1) both!important}@keyframes countdownPop{0%{opacity:0;transform:scale(.48);filter:blur(10px)}35%{opacity:1;transform:scale(1.12);filter:blur(0)}100%{opacity:1;transform:scale(1)}}
:root{--display-accent:#eaf6ae}.show-tools{display:flex;align-items:center;gap:8px}.replay-button,.music-toggle{transition:opacity .25s ease,transform .25s ease}.show-header{transition:opacity .35s ease,transform .35s ease}.show-screen.ui-hidden .show-header{opacity:0;transform:translateY(-8px);pointer-events:none}.text-canvas{position:absolute;inset:0;width:100%;height:100%;visibility:hidden;opacity:0}.show-content .projection-number,.show-content .projection-burst,.show-content .scene-phrase,.show-content .text-canvas,.show-content .photo-orbit,.show-content h2,.show-content .cake-scene,.show-content .wish-message,.show-content .show-actions{visibility:hidden;opacity:0!important;animation:none!important;pointer-events:none}.show-screen[data-phase="gallery"] .photo-orbit,.show-screen[data-phase="photos"] .photo-orbit{visibility:visible;opacity:1!important;pointer-events:none}.show-screen[data-phase="countdown"] .projection-number{visibility:visible;opacity:1!important;animation:none!important;pointer-events:none}.show-screen[data-phase="countdown"] .projection-burst{visibility:visible;opacity:.5!important;animation:none!important}.show-screen[data-phase="greeting"] .text-canvas{visibility:visible;opacity:1!important}.show-screen[data-phase="cake"] .show-content h2,.show-screen[data-phase="cake"] .show-content .cake-scene,.show-screen[data-phase="cake"] .show-content .wish-message,.show-screen[data-phase="finale"] .show-content h2,.show-screen[data-phase="finale"] .show-content .cake-scene,.show-screen[data-phase="finale"] .show-content .wish-message,.show-screen[data-phase="finale"] .show-content .show-actions{visibility:visible;opacity:1!important;pointer-events:auto}.show-screen[data-phase="reset"] .show-content{opacity:0;transition:opacity .6s ease}.show-screen[data-phase="gallery"] .projection-stage{height:230px}.show-screen[data-phase="countdown"] .projection-stage{height:220px}.show-screen[data-phase="greeting"] .projection-stage{height:190px}.show-screen[data-phase="cake"] .projection-stage,.show-screen[data-phase="finale"] .projection-stage{height:0;margin:0;overflow:visible}.show-screen[data-phase="photos"] .projection-stage{height:230px}.orbit-photo{transform:rotate(calc(var(--i) * var(--angle))) translateY(-103px) rotate(calc(var(--i) * var(--angle) * -1));animation:photoFloat 2.8s ease-in-out calc(var(--i) * -.22s) infinite alternate}.scene-phrase{display:none}@keyframes photoFloat{to{margin-top:-64px;filter:brightness(1.2)}}
@media (orientation:landscape) and (min-width:800px){.show-screen{width:min(100% - 72px,1320px)}.show-content h2{font-size:clamp(44px,5.6vw,92px)}.cake-scene{width:min(62vw,560px);height:300px}.projection-stage{width:min(58vw,560px)}.show-screen[data-phase="gallery"] .projection-stage,.show-screen[data-phase="photos"] .projection-stage{height:300px}.show-screen[data-phase="countdown"] .projection-stage{height:280px}.show-screen[data-phase="greeting"] .projection-stage{height:250px}.orbit-photo{width:112px;height:164px;margin:-82px 0 0 -56px;transform:rotate(calc(var(--i) * var(--angle))) translateY(-138px) rotate(calc(var(--i) * var(--angle) * -1))}.text-canvas{inset:0}.wish-message{font-size:clamp(17px,2vw,24px)}}
:root{--display-accent:#eaf6ae}.show-screen[data-phase="countdown"] .projection-burst{visibility:hidden!important;opacity:0!important}.photo-orbit[data-count="1"] .orbit-photo{transform:none!important;margin:-82px 0 0 -56px!important}.photo-orbit[data-count="1"]{animation:none!important}
:root{--display-accent:#eaf6ae}@media (max-width:799px){.photo-orbit[data-count="1"] .orbit-photo{margin:-56px 0 0 -38px!important}}

/* Photo selection and count-aware orbit */
.photo-picker{display:grid;gap:8px;margin-bottom:16px}.photo-picker label{margin:0}.photo-picker input{padding:10px}.photo-preview{display:grid;grid-template-columns:repeat(6,42px);gap:8px;max-height:112px;overflow:auto}.photo-preview-item{position:relative;width:42px;height:52px;margin:0}.photo-preview-item img{width:100%;height:100%;display:block;object-fit:cover;border:1px solid #777}.photo-remove{position:absolute;top:-6px;right:-6px;width:19px;height:19px;padding:0;border:1px solid #777;border-radius:50%;background:#111;color:#fff;cursor:pointer;font:15px/16px Arial,sans-serif}.photo-remove:hover,.photo-remove:focus-visible{border-color:var(--gold);color:var(--gold)}.photo-picker input:disabled{opacity:.45;cursor:not-allowed}
.photo-orbit{--radius:118px}.orbit-photo{width:86px;height:120px;margin:-60px 0 0 -43px;transform:rotate(calc(var(--i) * var(--angle))) translateY(calc(var(--radius) * -1)) rotate(calc(var(--i) * var(--angle) * -1)) rotate(var(--tilt));transform-origin:center}.photo-orbit[data-count="1"]{--radius:0px}.photo-orbit[data-count="1"] .orbit-photo{width:112px;height:156px;margin:-78px 0 0 -56px!important;transform:scale(1.06)!important}.photo-orbit[data-count="2"]{--radius:78px}.photo-orbit[data-count="3"]{--radius:96px}.photo-orbit[data-count="4"]{--radius:108px}.photo-orbit[data-count="5"]{--radius:116px}.photo-orbit[data-count="6"]{--radius:122px}
@media (orientation:landscape) and (min-width:800px){.photo-orbit{--radius:174px}.orbit-photo{width:108px;height:152px;margin:-76px 0 0 -54px}.photo-orbit[data-count="1"] .orbit-photo{width:132px;height:184px;margin:-92px 0 0 -66px!important}.photo-orbit[data-count="2"]{--radius:105px}.photo-orbit[data-count="3"]{--radius:136px}.photo-orbit[data-count="4"]{--radius:154px}.photo-orbit[data-count="5"]{--radius:168px}.photo-orbit[data-count="6"]{--radius:180px}}
@media(max-width:760px){body{overflow:auto}.intro-screen{min-height:100svh}.photo-preview{grid-template-columns:repeat(6,42px)}}

.show-screen[data-phase="gallery"] .show-header,.show-screen[data-phase="photos"] .show-header,.show-screen[data-phase="gallery"] .show-kicker,.show-screen[data-phase="photos"] .show-kicker{visibility:hidden!important;opacity:0!important;pointer-events:none!important}
.show-screen[data-phase="photos"] .projection-stage{isolation:isolate}
@media (orientation:landscape) and (min-width:800px){.show-screen[data-phase="photos"] .projection-stage{width:min(70vw,620px);height:min(72vh,500px)}.show-screen[data-phase="photos"] .orbit-photo{width:100px;height:142px;margin:-71px 0 0 -50px}.show-screen[data-phase="photos"] .photo-orbit{--radius:140px}.show-screen[data-phase="photos"] .photo-orbit[data-count="2"]{--radius:104px}.show-screen[data-phase="photos"] .photo-orbit[data-count="3"]{--radius:122px}.show-screen[data-phase="photos"] .photo-orbit[data-count="4"]{--radius:132px}.show-screen[data-phase="photos"] .photo-orbit[data-count="5"]{--radius:140px}.show-screen[data-phase="photos"] .photo-orbit[data-count="6"]{--radius:148px}}

@media (orientation:landscape) and (min-width:800px){.show-screen[data-phase="photos"] .projection-stage{width:min(78vw,780px);height:min(78vh,570px)}.show-screen[data-phase="photos"] .orbit-photo{width:124px;height:176px;margin:-88px 0 0 -62px}.show-screen[data-phase="photos"] .photo-orbit{--radius:188px}.show-screen[data-phase="photos"] .photo-orbit[data-count="2"]{--radius:132px}.show-screen[data-phase="photos"] .photo-orbit[data-count="3"]{--radius:160px}.show-screen[data-phase="photos"] .photo-orbit[data-count="4"]{--radius:174px}.show-screen[data-phase="photos"] .photo-orbit[data-count="5"]{--radius:184px}.show-screen[data-phase="photos"] .photo-orbit[data-count="6"]{--radius:194px}}
@media (max-width:799px){.show-screen[data-phase="photos"] .projection-stage{width:min(94vw,520px);height:min(72svh,520px)}.show-screen[data-phase="photos"] .orbit-photo{width:88px;height:124px;margin:-62px 0 0 -44px}.show-screen[data-phase="photos"] .photo-orbit{--radius:126px}.show-screen[data-phase="photos"] .photo-orbit[data-count="2"]{--radius:88px}.show-screen[data-phase="photos"] .photo-orbit[data-count="3"]{--radius:106px}.show-screen[data-phase="photos"] .photo-orbit[data-count="4"]{--radius:116px}.show-screen[data-phase="photos"] .photo-orbit[data-count="5"]{--radius:124px}.show-screen[data-phase="photos"] .photo-orbit[data-count="6"]{--radius:132px}}

@media (orientation:landscape) and (min-width:800px){.show-screen[data-phase="photos"] .photo-orbit[data-count="7"],.show-screen[data-phase="photos"] .photo-orbit[data-count="8"],.show-screen[data-phase="photos"] .photo-orbit[data-count="9"],.show-screen[data-phase="photos"] .photo-orbit[data-count="10"],.show-screen[data-phase="photos"] .photo-orbit[data-count="11"],.show-screen[data-phase="photos"] .photo-orbit[data-count="12"]{--radius:202px}.show-screen[data-phase="photos"] [data-count="7"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="8"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="9"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="10"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="11"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="12"] .orbit-photo{width:94px;height:134px;margin:-67px 0 0 -47px}}
@media (max-width:799px){.show-screen[data-phase="photos"] .photo-orbit[data-count="7"],.show-screen[data-phase="photos"] .photo-orbit[data-count="8"],.show-screen[data-phase="photos"] .photo-orbit[data-count="9"],.show-screen[data-phase="photos"] .photo-orbit[data-count="10"],.show-screen[data-phase="photos"] .photo-orbit[data-count="11"],.show-screen[data-phase="photos"] .photo-orbit[data-count="12"]{--radius:144px}.show-screen[data-phase="photos"] [data-count="7"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="8"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="9"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="10"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="11"] .orbit-photo,.show-screen[data-phase="photos"] [data-count="12"] .orbit-photo{width:72px;height:102px;margin:-51px 0 0 -36px}}

/* Photo sequence: one orbit, then one deliberate focus pass per photo. */
.show-screen[data-phase="photos"] .photo-orbit{animation:photoOrbitOnce 3.6s cubic-bezier(.22,.72,.18,1) both}.show-screen[data-phase="photos"] .orbit-photo{animation:none;transition:transform .72s cubic-bezier(.2,.8,.2,1),margin .72s cubic-bezier(.2,.8,.2,1),filter .45s ease,opacity .45s ease;z-index:1}.show-screen[data-phase="photos"] .photo-orbit.has-focus .orbit-photo:not(.is-focus){opacity:.42;filter:brightness(.62) blur(.6px)}.show-screen[data-phase="photos"] .orbit-photo.is-focus{margin:0!important;transform:translate(-50%,-50%) scale(1.75) rotate(0deg)!important;z-index:3;filter:brightness(1.15) saturate(1.12);box-shadow:0 0 28px rgba(225,255,164,.8),0 0 72px rgba(183,255,143,.38)}
@keyframes photoOrbitOnce{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@media(max-width:799px){.show-screen[data-phase="photos"] .orbit-photo.is-focus{transform:translate(-50%,-50%) scale(1.95) rotate(0deg)!important}}

.cake-scene{width:min(82vw,360px);height:min(48vh,360px);margin:8px auto 6px;overflow:hidden;filter:drop-shadow(0 0 24px rgba(158,43,255,.3))}.cake-image{display:block;width:100%;height:100%;object-fit:contain;transform:scale(1.03);animation:cakeImageFloat 4.8s ease-in-out infinite alternate}@keyframes cakeImageFloat{to{transform:translateY(-5px) scale(1.045);filter:brightness(1.08)}}
@media (orientation:landscape) and (max-height:700px){.cake-scene,.show-screen[data-phase="cake"] .cake-scene,.show-screen[data-phase="finale"] .cake-scene{width:min(42vw,340px);height:min(48vh,300px)}}
@media(max-width:760px) and (orientation:portrait){.cake-scene{width:min(92vw,430px);height:min(42vh,340px)}}

/* Entry composition: keep the headline intentional and readable. */
.intro-copy{min-width:0}.intro-copy h1{font-size:clamp(40px,4.8vw,64px);line-height:1.12;white-space:nowrap;letter-spacing:0}.intro-copy .intro{max-width:34em}
@media(max-width:760px){.intro-copy h1{font-size:clamp(40px,10vw,58px);white-space:normal}.intro-copy .intro{max-width:none}}

@media (min-width:800px){.show-screen[data-phase="photos"] .orbit-photo.is-focus{transform:translate(-50%,-50%) scale(2) rotate(0deg)!important}}

/* Taste pass: a quieter editor surface with stronger focus states. */
.setup-panel{position:relative;border-color:rgba(228,244,174,.24);background:rgba(8,9,8,.76);backdrop-filter:blur(14px);box-shadow:0 24px 70px rgba(0,0,0,.36),inset 0 1px 0 rgba(255,255,255,.05)}.setup-panel::before{content:"";position:absolute;top:-1px;left:28px;right:28px;height:1px;background:var(--gold);opacity:.7}.setup-panel label{color:#c3c0b4}.setup-panel input,.setup-panel textarea,.setup-panel select{transition:border-color .2s ease,background .2s ease,box-shadow .2s ease}.setup-panel input:focus,.setup-panel textarea:focus,.setup-panel select:focus{outline:none;border-color:var(--gold);background:#151611;box-shadow:0 0 0 3px rgba(245,239,155,.08)}.primary-action{margin-top:4px;box-shadow:0 10px 28px rgba(245,239,155,.12);transition:transform .2s ease,box-shadow .2s ease,filter .2s ease}.primary-action:hover,.primary-action:focus-visible{transform:translateY(-2px);filter:brightness(1.04);box-shadow:0 14px 34px rgba(245,239,155,.2)}.photo-preview{padding:4px 2px 3px;max-height:136px;scrollbar-color:rgba(245,239,155,.45) transparent}.photo-preview-item{height:56px}.photo-remove{width:20px;height:20px;font-size:14px;line-height:17px;box-shadow:0 2px 8px rgba(0,0,0,.45)}

@media (orientation:landscape) and (min-width:800px){.show-screen[data-phase="gallery"] .projection-stage{width:min(76vw,760px);height:min(70vh,500px)}.show-screen[data-phase="gallery"] .photo-orbit{--radius:182px}.show-screen[data-phase="gallery"] [data-count="7"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="8"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="9"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="10"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="11"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="12"] .orbit-photo{width:94px;height:134px;margin:-67px 0 0 -47px}}
@media (max-width:799px){.show-screen[data-phase="gallery"] .projection-stage{width:min(94vw,520px);height:min(72svh,520px)}.show-screen[data-phase="gallery"] .photo-orbit{--radius:140px}.show-screen[data-phase="gallery"] [data-count="7"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="8"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="9"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="10"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="11"] .orbit-photo,.show-screen[data-phase="gallery"] [data-count="12"] .orbit-photo{width:72px;height:102px;margin:-51px 0 0 -36px}}

@media(max-width:799px){.photo-preview{grid-template-columns:repeat(6,minmax(0,1fr));overflow-x:hidden}.photo-preview-item{width:100%;min-width:0}}

@media(max-width:760px){.intro-screen{gap:24px;padding:24px 0}.setup-panel{padding:18px}.setup-panel label{gap:6px;margin-bottom:10px}.setup-panel input,.setup-panel textarea,.setup-panel select{padding:11px}.photo-picker{gap:6px;margin-bottom:10px}.photo-preview-item{height:48px}.primary-action{min-height:46px}.hint{margin:8px 0 0}}

@media(max-width:799px){.show-screen[data-phase="gallery"] .show-content h2,.show-screen[data-phase="gallery"] .show-content .cake-scene,.show-screen[data-phase="gallery"] .show-content .wish-message,.show-screen[data-phase="gallery"] .show-kicker,.show-screen[data-phase="countdown"] .show-content h2,.show-screen[data-phase="countdown"] .show-content .cake-scene,.show-screen[data-phase="countdown"] .show-content .wish-message,.show-screen[data-phase="greeting"] .show-content h2,.show-screen[data-phase="greeting"] .show-content .cake-scene,.show-screen[data-phase="greeting"] .show-content .wish-message,.show-screen[data-phase="photos"] .show-content h2,.show-screen[data-phase="photos"] .show-content .cake-scene,.show-screen[data-phase="photos"] .show-content .wish-message,.show-screen[data-phase="photos"] .show-kicker{display:none!important}.show-screen[data-phase="photos"] .show-header{display:none!important}.show-screen[data-phase="photos"] .show-content{min-height:100svh}.show-screen[data-phase="photos"]{overflow:hidden}}
@media(max-width:799px){body.is-showing{overflow:hidden}.show-screen[data-phase="photos"] .projection-stage{position:relative;left:10px;width:100vw;margin-left:calc((100% - 100vw)/2);transform:translateY(-25px)}}

.admin-link-tools{display:grid;gap:8px;margin-top:10px}.secondary-action{min-height:40px;border:1px solid rgba(245,239,155,.5);background:transparent;color:var(--gold);cursor:pointer;font:13px inherit;transition:background .2s ease,border-color .2s ease}.secondary-action:hover,.secondary-action:focus-visible{background:rgba(245,239,155,.08);border-color:var(--gold)}.user-link-panel{display:grid;grid-template-columns:1fr auto;gap:8px}.user-link-panel input{min-width:0;padding:10px;font-size:11px;color:#bcb9a8}.link-copy{min-width:58px;border:0;background:var(--gold);color:#111;cursor:pointer;font:12px inherit}.link-hint{margin:0;color:#777;font-size:11px;text-align:center}.user-link-panel[hidden]{display:none}
[data-role="user"] #formView,[data-role="user"] #backButton{display:none!important}
