:root{--pink: #F8D1D6;--warm-gray: #F0EBEA;--blue: #6D9BCC;--dark: #2A2220;--mid: #6B5E5A;--white: #FFFFFF;--pink-deep: #e8a8b2;--blue-deep: #4a7aab}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}section,#hero,#story,#party,#cakes,#shop,#catering{scroll-margin-top:72px}body{font-family:Noto Sans TC,sans-serif;background:var(--warm-gray);color:var(--dark);overflow-x:hidden}.sprinkle{position:absolute;border-radius:99px;opacity:.6;animation:fall linear infinite;pointer-events:none}@keyframes fall{0%{transform:translateY(-20px) rotate(0);opacity:0}10%{opacity:.7}90%{opacity:.5}to{transform:translateY(110vh) rotate(720deg);opacity:0}}@keyframes fadeUp{0%{opacity:0;transform:translateY(36px)}to{opacity:1;transform:translateY(0)}}.fade-up{opacity:0;transform:translateY(36px);transition:opacity .7s ease,transform .7s ease}.fade-up.visible{opacity:1;transform:translateY(0)}.btn{display:inline-block;padding:.85rem 2rem;border-radius:99px;font-size:.88rem;font-weight:700;letter-spacing:.04em;cursor:pointer;transition:all .3s ease;text-decoration:none;border:none;font-family:Nunito,sans-serif}.btn:active{transform:scale(.95)}.btn-pink{background:var(--pink);color:var(--dark);box-shadow:0 4px 20px #f8d1d699}.btn-pink:hover{background:var(--blue);color:var(--white);box-shadow:0 8px 28px #6d9bcc73;transform:translateY(-2px)}.btn-outline{background:transparent;color:var(--dark);border:2px solid var(--dark)}.btn-outline:hover{background:var(--pink);border-color:var(--pink);transform:translateY(-2px)}.btn-blue{background:var(--blue);color:var(--white);box-shadow:0 4px 20px #6d9bcc66}.btn-blue:hover{background:var(--pink);color:var(--dark);transform:translateY(-2px)}section{padding:6rem 4rem}.section-label{font-size:.7rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--blue);margin-bottom:.75rem}.section-title{font-family:Nunito,sans-serif;font-size:clamp(2rem,4.5vw,3.2rem);font-weight:900;line-height:1.1;letter-spacing:-.01em;margin-bottom:1.2rem;color:var(--dark)}.section-body{font-size:.95rem;line-height:1.85;color:var(--mid);max-width:500px}.marquee-wrap{background:var(--pink);padding:.85rem 0;overflow:hidden;white-space:nowrap;border-top:1px solid var(--pink-deep);border-bottom:1px solid var(--pink-deep)}.marquee-wrap.dark{background:var(--blue);border-color:var(--blue-deep)}.marquee-track{display:inline-flex;animation:marquee 45s linear infinite}.marquee-item{font-family:Nunito,sans-serif;font-size:.9rem;font-weight:800;color:var(--dark);padding:0 2rem;letter-spacing:.06em;text-transform:uppercase}.marquee-wrap.dark .marquee-item{color:#fff}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}@keyframes modalIn{0%{opacity:0;transform:scale(.88) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}#contactModal.open{display:flex!important}@media(max-width:768px){nav{padding:1rem 1.5rem}.nav-links,.nav-contact-btn .btn-label{display:none}.nav-contact-btn{background:none;border:none;padding:.4rem;box-shadow:none;color:var(--dark)}.nav-contact-btn:hover{background:none;color:var(--blue);transform:none}.nav-contact-btn svg{display:inline-block}.cart-btn svg{width:22px;height:22px}section{padding:4rem 1.5rem}#story,#catering{grid-template-columns:1fr;gap:3rem}.party-cards,.cakes-grid,.products-grid{grid-template-columns:1fr 1fr}.catering-gallery{height:320px}}@media(max-width:480px){.party-cards,.cakes-grid,.products-grid,.form-row{grid-template-columns:1fr}.checkout-modal{padding:1.8rem 1.4rem}}nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:1rem 4rem;background:#f0ebea;border-bottom:1.5px solid #e8d8da}.nav-logo img{height:42px;width:auto;display:block;transition:opacity .3s}.nav-logo img:hover{opacity:.8}.nav-links{display:flex;gap:2.5rem;list-style:none}.nav-links a{font-size:.82rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mid);text-decoration:none;transition:color .2s;position:relative}.nav-links a:after{content:"";position:absolute;bottom:-3px;left:0;right:0;height:2px;background:var(--blue);transform:scaleX(0);transition:transform .25s;border-radius:2px}.nav-links a:hover{color:var(--blue)}.nav-links a:hover:after{transform:scaleX(1)}#hero{min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;padding-top:80px;background:#fff}.hero-blob{display:none}.blob-1{width:500px;height:500px;background:var(--pink);top:-80px;left:-120px}.blob-2{width:450px;height:450px;background:#c8dff0;bottom:-80px;right:-80px}.blob-3{width:280px;height:280px;background:var(--pink);top:50%;left:52%}.hero-content{position:relative;z-index:2;text-align:center;animation:fadeUp 1s ease .2s both;max-width:700px;padding:0 2rem}.hero-tag{display:inline-block;font-size:.75rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--blue);border:1.5px solid var(--blue);border-radius:99px;padding:.35rem 1.2rem;margin-bottom:2.5rem;background:#6d9bcc14}.hero-logo-wrap{margin-bottom:1.5rem}.hero-logo-wrap img{height:clamp(90px,18vw,200px);width:auto;mix-blend-mode:multiply;transition:opacity .3s}.hero-sub{font-family:Nunito,sans-serif;font-size:clamp(1rem,2.2vw,1.35rem);font-weight:600;font-style:italic;color:var(--mid);margin:1.2rem 0 2.8rem;letter-spacing:.02em}.hero-btns{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.hero-slogan{margin-top:3rem;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--mid);opacity:.7}#story{display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:center;background:#fff}.brand-quote{display:block;margin:2rem 0;padding:1.2rem 1.8rem;border-left:4px solid var(--blue);background:var(--warm-gray);border-radius:0 16px 16px 0;font-family:Nunito,sans-serif;font-style:italic;font-size:1rem;color:var(--dark);line-height:1.6}#party{background:var(--warm-gray);position:relative}.party-header{text-align:center;margin-bottom:3.5rem}.party-header .section-body{margin:0 auto}.party-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem;margin-bottom:2.5rem}.party-card{background:#fff;border-radius:20px;padding:2rem;transition:transform .3s,box-shadow .3s;position:relative;overflow:hidden}.party-card:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--pink),var(--blue))}.party-card:hover{transform:translateY(-6px);box-shadow:0 16px 40px #6d9bcc33}.party-card h3{font-family:Nunito,sans-serif;font-weight:800;font-size:1.1rem;margin-bottom:.5rem;color:var(--dark)}.party-card p{font-size:.86rem;color:var(--mid);line-height:1.65}.party-features{display:flex;flex-wrap:wrap;gap:.7rem;justify-content:center;margin-bottom:2.5rem}.feature-tag{padding:.45rem 1.1rem;background:#fff;border-radius:99px;font-size:.8rem;font-weight:600;border:1.5px solid var(--pink);color:var(--dark);transition:all .25s}.feature-tag:hover{background:var(--blue);color:#fff;border-color:var(--blue)}.party-ctas{text-align:center;display:flex;gap:1rem;justify-content:center}.party-card--photo{padding:0;overflow:hidden}.party-card-img{position:relative;width:100%;height:100%;min-height:220px}.party-card-img img{width:100%;height:100%;object-fit:cover;display:block;min-height:220px;transition:transform .5s ease}.party-card--photo:hover .party-card-img img{transform:scale(1.06)}.party-card-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(30,18,24,.78) 0%,rgba(30,18,24,.1) 55%,transparent 100%);display:flex;flex-direction:column;justify-content:flex-end;padding:1.5rem}.party-card-overlay h3{color:#fff;font-size:1.05rem;margin-bottom:.35rem}.party-card-overlay p{color:#ffffffd1;font-size:.85rem;line-height:1.5;margin:0}#cakes{background:var(--dark)}#cakes .section-title{color:#fff}#cakes .section-body{color:#b8a09a}.cakes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem;margin-top:3rem}.cake-card{border:1px solid rgba(255,255,255,.1);border-radius:20px;padding:2.5rem 2rem;transition:transform .3s,border-color .3s,box-shadow .3s;background:#ffffff0a}.cake-card:hover{transform:translateY(-6px);border-color:var(--pink);box-shadow:0 0 30px #f8d1d633}.cake-label{display:inline-block;margin-bottom:1.5rem;width:48px;height:48px;border-radius:14px;background:#f8d1d626;border:1.5px solid rgba(248,209,214,.3);display:flex;align-items:center;justify-content:center;font-size:1.5rem}.cake-card h3{font-family:Nunito,sans-serif;font-weight:800;font-size:1.3rem;color:#fff;margin-bottom:.75rem}.cake-card p{font-size:.87rem;color:#b8a09a;line-height:1.7}.cake-tag{display:inline-block;margin-top:1.2rem;font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);border:1px solid var(--blue);padding:.22rem .8rem;border-radius:99px}#shop{background:#fff}.shop-header{text-align:center;margin-bottom:3.5rem}.products-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1.25rem}.product-card{background:var(--warm-gray);border-radius:20px;overflow:hidden;transition:transform .3s,box-shadow .3s;cursor:pointer}.product-card:hover{transform:translateY(-6px);box-shadow:0 20px 40px #00000014}.product-img{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:3.5rem;position:relative;overflow:hidden;transition:background .4s}.product-ribbon{position:absolute;top:1rem;right:-2.2rem;background:var(--blue);color:#fff;font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:.22rem 2.6rem;transform:rotate(35deg)}.product-info{padding:1.4rem}.product-info h3{font-family:Nunito,sans-serif;font-weight:800;font-size:1rem;margin-bottom:.3rem}.product-info p{font-size:.8rem;color:var(--mid);margin-bottom:.9rem}.product-footer{display:flex;align-items:center;justify-content:space-between}.product-price{font-family:Nunito,sans-serif;font-weight:900;font-size:1.1rem;color:var(--blue)}.btn-sm{padding:.45rem 0;font-size:.76rem;border-radius:99px;background:var(--dark);color:#fff;border:none;cursor:pointer;font-weight:700;font-family:Nunito,sans-serif;transition:background .25s,transform .15s;width:96px;flex-shrink:0;text-align:center}.btn-sm:hover{background:var(--blue);transform:scale(1.05)}.shop-note{margin-top:2.5rem;text-align:center;display:flex;justify-content:center;gap:1.5rem;flex-wrap:wrap}.shop-badge{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--mid);font-weight:600;background:var(--warm-gray);padding:.5rem 1.2rem;border-radius:99px}#catering{background:var(--warm-gray);display:grid;grid-template-columns:1fr 1fr;gap:5rem;align-items:center}.catering-gallery{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:1rem;height:480px}.catering-photo{border-radius:20px;display:flex;align-items:center;justify-content:center;font-size:2.5rem;overflow:hidden}.cp-1{background:linear-gradient(135deg,var(--pink),#f0b8c0);grid-row:1/3}.cp-2{background:linear-gradient(135deg,#c8dff0,var(--blue))}.cp-3{background:linear-gradient(135deg,#ffe4b0,#ffd080)}footer{background:var(--dark);color:#fff;padding:4rem;text-align:center}.footer-logo img{height:72px;width:auto;mix-blend-mode:multiply;filter:invert(1) brightness(1.8) saturate(.8);margin-bottom:1rem}.footer-slogan{font-family:Nunito,sans-serif;font-style:italic;font-size:1rem;color:#b8a09a;margin-bottom:2.5rem}.footer-links{display:flex;gap:2rem;justify-content:center;flex-wrap:wrap;list-style:none;margin-bottom:2.5rem}.footer-links a{color:#b8a09a;text-decoration:none;font-size:.83rem;letter-spacing:.05em;font-weight:500;transition:color .2s}.footer-links a:hover{color:var(--pink)}.footer-social{display:flex;gap:1rem;justify-content:center;margin-bottom:2.5rem}.social-btn{width:42px;height:42px;border-radius:50%;background:#f8d1d61f;border:1px solid rgba(248,209,214,.35);display:flex;align-items:center;justify-content:center;color:var(--pink);font-size:1.1rem;text-decoration:none;transition:background .2s,transform .2s}.social-btn:hover{background:var(--pink);color:var(--dark);transform:scale(1.1)}.footer-copy{font-size:.73rem;color:#5a4a46;letter-spacing:.05em}.film-strip-wrap{position:relative;background:#1a1410;padding:12px 0;overflow:hidden}.sprocket-row{display:flex;gap:0;position:absolute;left:0;right:0;justify-content:space-around;padding:0 8px}.sprocket-row.top{top:6px}.sprocket-row.bottom{bottom:6px}.hole{width:18px;height:14px;background:var(--dark);border-radius:3px;border:1.5px solid #3a3028;flex-shrink:0}.film-track-outer{overflow:hidden;margin:28px 0}.film-track{display:flex;gap:12px;padding:0 24px;animation:filmScroll 28s linear infinite;width:max-content}.film-track:hover{animation-play-state:paused}@keyframes filmScroll{0%{transform:translate(0)}to{transform:translate(-50%)}}.film-frame{flex-shrink:0;width:240px;cursor:pointer;transition:transform .3s}.film-frame:hover{transform:scale(1.04)}.frame-img{width:240px;height:220px;border-radius:6px;border:3px solid #3a3028;overflow:hidden;position:relative;display:flex;align-items:center;justify-content:center}.frame-caption{display:flex;align-items:center;gap:.6rem;padding:.6rem .2rem}.frame-num{font-family:Nunito,monospace;font-weight:900;font-size:.7rem;color:#5a4a3a;letter-spacing:.05em}.frame-title{font-size:.75rem;font-weight:600;color:#b8a09a;font-family:Noto Sans TC,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cart-btn{position:relative;background:none;border:none;cursor:pointer;padding:.4rem;display:flex;align-items:center;justify-content:center;color:var(--dark);transition:color .2s}.cart-btn:hover{color:var(--blue)}.cart-btn svg{width:26px;height:26px}.cart-badge{position:absolute;top:-4px;right:-4px;background:var(--blue);color:#fff;font-family:Nunito,sans-serif;font-weight:800;font-size:.6rem;min-width:18px;height:18px;border-radius:99px;display:flex;align-items:center;justify-content:center;padding:0 3px;pointer-events:none;transition:transform .2s}.cart-badge.pop{transform:scale(1.4)}.cart-overlay{position:fixed;inset:0;background:#2a222073;z-index:900;opacity:0;pointer-events:none;transition:opacity .3s}.cart-overlay.open{opacity:1;pointer-events:all}.cart-drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,100vw);background:#fff;z-index:901;display:flex;flex-direction:column;transform:translate(100%);transition:transform .35s cubic-bezier(.4,0,.2,1);box-shadow:-8px 0 40px #0000001f}.cart-drawer.open{transform:translate(0)}.cart-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:1.4rem 1.6rem;border-bottom:1px solid var(--warm-gray)}.cart-drawer-header h2{font-family:Nunito,sans-serif;font-weight:900;font-size:1.2rem;color:var(--dark);display:flex;align-items:center;gap:.5rem}.cart-close{background:none;border:none;cursor:pointer;color:var(--mid);font-size:1.4rem;line-height:1;padding:.3rem;border-radius:50%;transition:background .2s}.cart-close:hover{background:var(--warm-gray)}.cart-items{flex:1;overflow-y:auto;padding:1.2rem 1.6rem}.cart-empty{text-align:center;padding:3rem 0;color:var(--mid);font-size:.9rem}.cart-empty-icon{font-size:3rem;margin-bottom:.8rem}.cart-item{display:flex;align-items:center;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--warm-gray)}.cart-item-thumb{width:60px;height:60px;border-radius:12px;background:var(--warm-gray);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.6rem;overflow:hidden}.cart-item-thumb img{width:100%;height:100%;object-fit:cover}.cart-item-info{flex:1;min-width:0}.cart-item-name{font-family:Nunito,sans-serif;font-weight:800;font-size:.92rem;color:var(--dark)}.cart-item-price{font-size:.82rem;color:var(--blue);font-weight:700;margin-top:.1rem}.cart-item-qty{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.qty-btn{width:24px;height:24px;border-radius:50%;border:1.5px solid var(--pink-deep);background:none;cursor:pointer;font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center;color:var(--dark);transition:background .2s}.qty-btn:hover{background:var(--pink)}.qty-num{font-family:Nunito,sans-serif;font-weight:800;font-size:.88rem;min-width:20px;text-align:center}.cart-item-del{background:none;border:none;cursor:pointer;color:#ccc;font-size:1rem;padding:.2rem;transition:color .2s}.cart-item-del:hover{color:#e57}.cart-footer{padding:1.4rem 1.6rem;border-top:1.5px solid var(--warm-gray)}.cart-total{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;font-family:Nunito,sans-serif;font-weight:900;font-size:1.05rem}.cart-total span:last-child{color:var(--blue);font-size:1.2rem}.btn-checkout{width:100%;padding:.9rem;border-radius:99px;background:var(--dark);color:#fff;border:none;cursor:pointer;font-family:Nunito,sans-serif;font-weight:800;font-size:.95rem;letter-spacing:.04em;transition:background .25s}.btn-checkout:hover{background:var(--blue)}.btn-checkout:disabled{opacity:.4;cursor:not-allowed}.checkout-overlay{position:fixed;inset:0;background:#2a22208c;z-index:1000;display:none;align-items:center;justify-content:center;padding:1.5rem}.checkout-overlay.open{display:flex}.checkout-modal{background:#fff;border-radius:24px;width:min(560px,100%);max-height:90vh;overflow-y:auto;padding:2.5rem;animation:fadeUp .3s ease both}.checkout-modal h2{font-family:Nunito,sans-serif;font-weight:900;font-size:1.5rem;color:var(--dark);margin-bottom:.3rem}.checkout-modal .co-sub{font-size:.85rem;color:var(--mid);margin-bottom:2rem}.co-section-title{font-family:Nunito,sans-serif;font-weight:800;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--blue);margin:1.6rem 0 .8rem}.form-group{margin-bottom:1rem}.form-group label{display:block;font-size:.8rem;font-weight:700;color:var(--dark);margin-bottom:.35rem}.form-group label .req{color:var(--blue);margin-left:2px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:.7rem 1rem;border-radius:10px;border:1.5px solid #e8e0de;font-family:Noto Sans TC,sans-serif;font-size:.88rem;color:var(--dark);background:var(--warm-gray);transition:border-color .2s,box-shadow .2s;outline:none}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--blue);box-shadow:0 0 0 3px #6d9bcc26;background:#fff}.form-group textarea{resize:vertical;min-height:80px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}.co-order-summary{background:var(--warm-gray);border-radius:14px;padding:1rem 1.2rem;margin-bottom:1.5rem}.co-order-item{display:flex;justify-content:space-between;font-size:.85rem;color:var(--mid);padding:.25rem 0}.co-order-item.total{border-top:1px solid #ddd;margin-top:.5rem;padding-top:.7rem;font-family:Nunito,sans-serif;font-weight:900;color:var(--dark);font-size:1rem}.co-order-item.total span:last-child{color:var(--blue)}.co-btns{display:flex;gap:.8rem;margin-top:1.5rem}.btn-co-back{flex:0 0 auto;padding:.85rem 1.5rem;border-radius:99px;background:none;border:1.5px solid #ddd;cursor:pointer;font-family:Nunito,sans-serif;font-weight:700;color:var(--mid);transition:border-color .2s}.btn-co-back:hover{border-color:var(--dark);color:var(--dark)}.btn-co-submit{flex:1;padding:.85rem;border-radius:99px;background:var(--dark);color:#fff;border:none;cursor:pointer;font-family:Nunito,sans-serif;font-weight:800;font-size:.95rem;transition:background .25s}.btn-co-submit:hover{background:var(--blue)}.success-overlay{position:fixed;inset:0;background:#2a22208c;z-index:1100;display:none;align-items:center;justify-content:center;padding:1.5rem}.success-overlay.open{display:flex}.success-modal{background:#fff;border-radius:24px;padding:3rem 2.5rem;text-align:center;max-width:420px;width:100%;animation:fadeUp .3s ease both}.success-icon{font-size:3.5rem;margin-bottom:1rem}.success-modal h2{font-family:Nunito,sans-serif;font-weight:900;font-size:1.4rem;color:var(--dark);margin-bottom:.5rem}.success-modal p{font-size:.88rem;color:var(--mid);line-height:1.7;margin-bottom:1.8rem}.btn-success-close{padding:.85rem 2.5rem;border-radius:99px;background:var(--pink);color:var(--dark);border:none;cursor:pointer;font-family:Nunito,sans-serif;font-weight:800;font-size:.95rem;transition:background .25s}.btn-success-close:hover{background:var(--blue);color:#fff}
