@import"https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;500;600;700&family=DM+Sans:wght@400;500;600;700&display=swap";:root{font-family:DM Sans,-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif;color:#544640;background:#f7f2ed;font-synthesis:none;font-weight:400}*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,textarea:focus-visible{outline:2px solid #b97273;outline-offset:5px}button{color:inherit}header{height:88px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #e6ddd5;margin:0 5.1%;gap:20px}.brand{text-decoration:none;color:#544640;font-family:Georgia,serif;font-size:29px;letter-spacing:-1px;display:flex;align-items:center}.brand-icon{font-size:37px;color:#b97878;margin-right:12px}.brand-dot{color:#b97878}.header-note{font-size:11px;letter-spacing:3px;color:#a2948a}.sound-button{background:transparent;border:1px solid #dfd4cb;border-radius:24px;padding:10px 17px;font-size:17px}.sound-button span{font-size:11px;margin-left:6px}.sound-button[aria-pressed=true]{background:#edddd8}main{position:relative;max-width:1600px;margin:auto;min-height:560px;display:grid;grid-template-columns:1fr 1.38fr 340px;align-items:center;padding:24px 5.1% 36px;gap:4px}.intro{z-index:1;align-self:center;padding-top:0;pointer-events:none}.eyebrow{font-size:9px;letter-spacing:2px;color:#a48b7e;white-space:nowrap;display:flex;align-items:center;gap:8px}.eyebrow>span{width:5px;height:5px;background:#c49085;border-radius:50%}h1{font-family:"Noto Serif SC",Songti SC,serif;font-weight:500;font-size:clamp(30px,2.65vw,43px);line-height:1.8;letter-spacing:1px;margin:24px 0 20px;white-space:nowrap;position:relative}.serif-accent{color:#b97a7a}.underline{position:absolute;width:185px;bottom:-2px;right:0;fill:none;stroke:#d8a398;stroke-width:2}.intro p{font-size:12px;line-height:2.2;letter-spacing:1px;color:#9a8b82}.cake-stage{height:470px;display:flex;flex-direction:column;position:relative;min-width:0;align-self:center;margin-left:-50px;margin-right:-30px}.stage-halo{position:absolute;inset:35px -30px 60px;border-radius:50%;background:radial-gradient(ellipse,#eed7d06e 0%,#f0e3da66 42%,transparent 70%);pointer-events:none}#scene{position:relative;flex:1;min-height:0;overflow:hidden;margin:0 -60px 0 -40px}#scene canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}#scene canvas:active{cursor:grabbing}.stage-label{position:absolute;top:13px;left:50%;transform:translate(-50%);font-size:8px;letter-spacing:2.3px;white-space:nowrap;color:#aa9487;pointer-events:none}.live-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#acb79c;margin-right:7px}.caption-rule{height:12px;width:1px;background:#d9cabe}.view-controls{position:absolute;bottom:7px;left:50%;transform:translate(-50%);display:flex;align-items:center;padding:9px 12px;border:1px solid #dfd4c9;border-radius:30px;background:#f9f5efc9;white-space:nowrap}.view-controls button{background:none;border:0;font-size:19px;padding:0 10px;color:#988473}.view-controls button span{font-size:10px;margin-left:3px}.view-controls button[aria-pressed=false]{opacity:.55}.divider{height:13px;width:1px;background:#dfd4c9}.drag-hint{position:absolute;bottom:-21px;left:50%;transform:translate(-50%);font-size:9px;letter-spacing:1px;color:#b2a298;white-space:nowrap}.customizer{position:relative;z-index:2;background:#fffcf6c7;border:1px solid #e6dbcf;border-radius:14px;padding:27px 26px 19px;box-shadow:0 9px 35px #9e796406;max-width:340px}.card-heading{display:flex;align-items:center;gap:10px}.tiny-star{font-size:25px;color:#af7c6c}h2{font-family:"Noto Serif SC",serif;font-size:18px;font-weight:500;margin:0;letter-spacing:1px}.card-subtitle{font-size:10px;color:#aa9a8e;margin:7px 0 28px 34px;letter-spacing:1px}.field-heading{display:flex;align-items:center;gap:10px;margin:24px 0 14px}.field-heading>span{font-family:Georgia,serif;font-size:10px;font-style:italic;color:#b8a18e}.field-heading h3,.field-heading label{font-size:11px;font-weight:500;margin:0;letter-spacing:1px}.input-wrap{position:relative}.input-wrap textarea{background:#fffdf9;border:1px solid #e5dacf;border-radius:7px;width:100%;padding:12px 11px 25px;font-size:11px;color:#7a6a5e}.input-wrap>span{position:absolute;right:10px;bottom:7px;font-size:8px;color:#b1a399}.primary-button{margin-top:23px;width:100%;display:flex;align-items:center;justify-content:space-between;border:0;border-radius:7px;background:#b87b7b;color:#fffaf5;padding:14px 16px;font-size:12px;letter-spacing:1px;transition:background .2s,transform .2s}.primary-button:hover{background:#a86768;transform:translateY(-1px)}.primary-button>span:first-child{font-size:19px}.button-note{text-align:center;font-size:8px;color:#b4a496;letter-spacing:.7px;margin:12px 0 0}.wish-card{position:absolute;bottom:46px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:22px;color:#c59a8e;max-width:90%;text-align:center}.wish-card p{font-family:"Noto Serif SC",serif;font-size:16px;letter-spacing:3px;color:#967b6e;overflow-wrap:anywhere}.wish-card>span{font-size:21px}footer{border-top:1px solid #e6ddd5;margin:0 5.1%;display:flex;justify-content:space-between;align-items:center;height:64px;font-size:9px;letter-spacing:1.5px;color:#b09f92}.footer-star{font-size:21px;color:#b88a7c;margin-left:9px;vertical-align:middle}.toast{position:fixed;z-index:9;left:50%;bottom:35px;transform:translate(-50%,20px);padding:14px 25px;border:1px solid #e5d6ca;border-radius:40px;background:#fffaf3ef;box-shadow:0 5px 35px #88664415;color:#947263;font-size:13px;opacity:0;pointer-events:none;transition:.4s;max-width:90vw;text-align:center}.toast.visible{opacity:1;transform:translate(-50%)}#scene-error{position:absolute;inset:100px 20px auto;background:#fff8ee;padding:30px;border-radius:12px;font-size:14px;line-height:2}@media(min-width:1450px){main{min-height:610px;padding-top:32px}.cake-stage{height:510px}}@media(max-width:1100px){main{grid-template-columns:1fr 300px;padding-left:5%;gap:15px;padding-top:150px;min-height:640px}.intro{position:absolute;top:20px;left:6%;padding:0}.intro h1{font-size:29px;margin:10px 0;line-height:1.65}.intro p{display:none}.cake-stage{margin:0;height:440px}.customizer{padding:23px 20px}.stage-label{top:30px}.header-note{display:none}.underline{width:150px}}@media(max-width:700px){header{height:68px;margin:0 6%}.brand{font-size:25px}.brand-icon{font-size:30px}.sound-button{padding:8px 12px}.sound-button span{font-size:10px}main{display:flex;flex-direction:column;padding:20px 6% 28px;gap:0;min-height:auto}.intro{position:relative;top:auto;left:auto;align-self:stretch;text-align:center}.eyebrow{justify-content:center;font-size:8px}.intro h1{font-size:30px;line-height:1.65;margin:17px 0 5px}.underline{right:calc(50% - 150px);width:160px}.intro p{display:block;font-size:11px;line-height:1.9}.cake-stage{width:100%;height:360px;margin:0 0 14px}.stage-label{top:23px;font-size:7px}#scene{margin:0 -6vw}.stage-halo{inset:30px 0}.customizer{width:100%;max-width:420px;padding:20px 24px}.card-subtitle{margin-bottom:20px}.field-heading{margin-top:20px}.wish-card{bottom:20px;width:90%;justify-content:center;gap:12px}.wish-card p{font-size:13px;letter-spacing:1px}footer{margin:0 6%;height:64px;font-size:8px;letter-spacing:.5px;gap:16px}footer>span:last-child{text-align:right}.toast{bottom:20px;width:max-content;font-size:12px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@font-face{font-family:Great Vibes;src:url(/fonts/GreatVibes-Regular.ttf) format("truetype");font-style:normal;font-weight:400;font-display:swap}.intro .birthday-title{font-family:Great Vibes,Snell Roundhand,Brush Script MT,cursive;font-size:clamp(68px,6vw,92px);font-weight:400;line-height:1.08;letter-spacing:0;color:#b97a7a;margin:34px 0 22px}.birthday-title span:last-child{margin-left:26px}@media(min-width:701px)and (max-width:1100px){.intro .birthday-title{font-size:52px;margin:12px 0;line-height:1}}@media(max-width:700px){.intro .birthday-title{font-size:clamp(54px,16vw,68px);margin:18px 0 8px}.birthday-title span:last-child{margin-left:0}}header .sound-button{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;flex-shrink:0;border-radius:50%;font-size:20px}.customizer .card-heading+.input-wrap{margin-top:24px}.customizer .wish-heading{justify-content:center;gap:14px;padding:5px 0 17px;position:relative}.wish-heading h2{font-family:Great Vibes,Snell Roundhand,Brush Script MT,cursive;font-size:42px;font-weight:400;line-height:1.3;letter-spacing:0;color:#b97a7a}.wish-heading .tiny-star{font-size:17px;color:#cba28c}.wish-heading:after{content:"";position:absolute;bottom:0;left:20%;right:20%;height:1px;background:linear-gradient(90deg,transparent,#ddbeb1,transparent)}.customizer .wish-heading+.input-wrap{margin-top:22px}footer{justify-content:flex-end}footer>span{display:inline-flex;align-items:center;white-space:nowrap}.primary-button:disabled{opacity:.65;cursor:wait;transform:none}@media(min-width:701px){#app{min-height:100svh;display:flex;flex-direction:column}header,footer{width:calc(100% - 80px);max-width:1280px;margin-inline:auto;flex-shrink:0}header{height:82px}main{flex:1;width:100%;max-width:1160px;min-height:0;margin:0 auto;padding:26px 40px 30px;grid-template-columns:minmax(0,1fr) minmax(290px,350px);grid-template-rows:auto auto;align-content:center;column-gap:40px;row-gap:12px}.intro{position:static;grid-column:1 / -1;align-self:auto;padding:0;text-align:center}.eyebrow{justify-content:center;font-size:8px;letter-spacing:2.4px}.intro .birthday-title{font-size:clamp(70px,7vw,96px);line-height:1.18;margin:14px 0 2px}.birthday-title span{display:inline}.birthday-title span:last-child{margin-left:0}.cake-stage{grid-column:1;width:100%;height:clamp(370px,34vw,450px);margin:0}#scene{margin:0}.stage-halo{inset:35px 0 25px}.stage-label{top:12px;font-size:7px;letter-spacing:2px}.customizer{grid-column:2;width:100%;max-width:none;padding:28px;margin:0;align-self:center}.input-wrap textarea{font-size:13px;padding:14px 13px 25px}.button-note{font-size:9px;letter-spacing:.3px}footer{height:58px;font-size:10px}}@media(min-width:701px)and (max-width:900px){header,footer{width:calc(100% - 48px)}main{padding:24px;column-gap:20px;grid-template-columns:minmax(0,1fr) 280px}.cake-stage{height:360px}.customizer{padding:22px 18px}.wish-heading h2{font-size:38px}.customizer .wish-heading{gap:10px}.intro .birthday-title{font-size:72px}}.input-wrap textarea{display:block;min-height:92px;padding:12px 13px;line-height:1.7;resize:vertical}.intro .birthday-title{font-size:clamp(54px,5.3vw,76px);line-height:1.15}.birthday-title span{display:block}.birthday-title span:last-child{margin-left:0}@media(max-width:700px){.intro .birthday-title{font-size:clamp(36px,11.5vw,56px);line-height:1.25}}
