*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}@font-face{font-family:"Noto Serif TC";src:url(/fonts/NotoSerifTC-Bold-sb.woff2) format("woff2");font-weight:400 900;font-display:swap}:root{--pink: #E8467C;--gold: #C9A063;--ink-cream: #EDE4D2;--ink-mute: #8E8579;--serif: "Noto Serif TC", "Songti TC", "PingFang TC", serif;--sans: "Noto Serif TC", "Songti TC", "PingFang TC", -apple-system, serif;--mono: ui-monospace, "SF Mono", Menlo, monospace}body{background:#c9b0bc;font-family:var(--sans);font-size:15px;line-height:1.85;-webkit-font-smoothing:antialiased;overflow-x:hidden}.bgwrap{position:fixed;inset:0;z-index:-2;overflow:hidden;pointer-events:none}.bgwrap img{width:100%;height:100%;object-fit:cover;filter:blur(4px) saturate(1.02) brightness(1.09);transform:scale(1.1);will-change:transform}.bgwrap:after{content:"";position:absolute;inset:0;background:radial-gradient(70% 44% at 50% 5%,#fff6fa66,#fff6fa00 58%),linear-gradient(180deg,#d6b0c233,#be94aa3d 55%,#9e748e4d),radial-gradient(112% 90% at 50% 46%,#fff0 40%,#583a4a57)}.app{position:relative;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:1.25rem calc(1.25rem + env(safe-area-inset-right)) calc(1.25rem + env(safe-area-inset-bottom)) calc(1.25rem + env(safe-area-inset-left))}.scene{--card-h: min(84svh, 40rem);perspective:1200px;aspect-ratio:1200 / 1896;width:min(100%,calc(var(--card-h) * 1200 / 1896));touch-action:none}.tilt{width:100%;height:100%;transform-style:preserve-3d;will-change:transform}.card{position:relative;width:100%;height:100%;transform-style:preserve-3d;cursor:pointer;transition:transform .8s cubic-bezier(.2,.8,.25,1)}.card.is-flipped{transform:rotateY(180deg)}.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:.75rem;box-shadow:0 2px 4px #78285033,0 16px 38px #7828504d}.face .clip{position:absolute;inset:0;border-radius:.75rem;overflow:hidden}.front{transform:rotateY(0)}.back{transform:rotateY(180deg);background:#261c20}.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:1}.frame-photo{position:absolute;left:15.91%;top:17.17%;width:68.42%;height:37.95%;z-index:2;overflow:hidden;background:#fff}.frame-photo img{width:100%;height:100%;display:block;object-fit:cover;object-position:center 70%}.frame-photo:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 4px 9px #4e2c206b,inset 0 -2px 6px #4e2c2033,inset 3px 0 7px #4e2c202b,inset -3px 0 7px #4e2c202b,inset 0 0 0 1px #4e2c2038}.photo-stamp{position:absolute;left:15.91%;top:17.17%;width:68.42%;height:37.95%;z-index:4;pointer-events:none;display:flex;align-items:flex-end;justify-content:center;font-size:14px}.photo-stamp .stamp{display:flex;justify-content:center;width:100%;padding:.34em 0;font-family:var(--serif);font-weight:700;line-height:1.05;color:#fff;letter-spacing:.3em;text-indent:.3em;background:linear-gradient(90deg,#c62b3300,#c62b33cc 16% 84%,#c62b3300);text-shadow:0 1px 2px rgba(90,10,20,.5)}.photo-stamp .stamp b{font-weight:inherit}.photo-stamp .stamp b+b{margin-left:.32em}.name-tag{position:absolute;left:50%;top:64.5%;transform:translate(-50%,-50%);z-index:3;width:84%;text-align:center}.name-tag span{font-family:var(--serif);font-weight:700;letter-spacing:.06em;line-height:1.38;color:#fff;text-shadow:0 1px 3px rgba(140,45,85,.55),0 0 10px rgba(140,45,85,.3);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;overflow-wrap:anywhere}.holo{position:absolute;inset:0;pointer-events:none;z-index:6;background:linear-gradient(115deg,#fff0 18%,#ffc4de8c 30%,#ff8ab7a6,#ffffffd9,#ff96c3a6,#ffcde48c 66%,#fff0 80%);background-size:250% 250%;background-position:var(--hx, 50%) var(--hy, 50%);mix-blend-mode:soft-light;opacity:.6}.holo-b{position:absolute;inset:0;pointer-events:none;z-index:7;background:linear-gradient(115deg,#fff0 30%,#ffffff80,#fff0 64%);background-size:250% 250%;background-position:var(--hx, 50%) var(--hy, 50%);mix-blend-mode:screen;opacity:.34}.glare{position:absolute;inset:0;pointer-events:none;z-index:9;background:radial-gradient(32% 26% at var(--gx,50%) var(--gy,50%),rgba(255,255,255,.55),rgba(255,255,255,0) 70%);mix-blend-mode:soft-light}.bc{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;overflow:hidden;font-size:13px;padding:1.15em .95em .8em;gap:.75em}.bc h3,.bc .bmeta{flex-shrink:0}.bc h3{margin:0 0 .15em;font-family:var(--serif);font-weight:600;font-size:1.28em;letter-spacing:.22em;text-indent:.22em;line-height:1.2;text-align:center;color:var(--gold)}.bc h3:after{content:"";display:block;margin:.5em auto 0;width:2.2em;height:1px;text-indent:0;background:linear-gradient(90deg,#c9a06300,#c9a063cc,#c9a06300)}.zone{display:flex;flex-direction:column;align-items:center;justify-content:space-evenly;padding:.85em .6em;text-align:center;min-height:0}.zone-gift{flex:1 1 0}.zone-price{flex:1.85 1 0}.zone-gift{background:#ede4d20b;border:1px solid rgba(201,160,99,.3)}.zone-price{background:#ede4d212;border:1.5px solid rgba(201,160,99,.65)}.zdate{font-family:var(--serif);font-weight:700;font-size:1.34em;letter-spacing:.06em;color:var(--gold)}.ztitle{font-family:var(--serif);font-weight:600;font-size:1.2em;letter-spacing:.12em;color:var(--ink-cream)}.zdesc{font-size:.86em;line-height:1.85;color:#a9a296}.zdesc b{display:inline-block;margin-top:.22em;font-family:var(--serif);font-weight:700;font-size:1.34em;line-height:1.4;letter-spacing:.06em;color:var(--ink-cream)}.zprice{font-family:var(--serif);font-weight:700;color:var(--gold);font-size:2.75em;line-height:1.1;letter-spacing:.01em}.zspec{font-size:.82em;letter-spacing:.04em;color:var(--ink-cream);line-height:1.6;font-weight:600}.zpay{font-size:.8em;letter-spacing:.04em;color:var(--ink-mute);line-height:1.8}.zpay b{color:var(--gold);font-weight:600}.zlock{padding-top:.7em;border-top:1px dashed rgba(201,160,99,.3);width:100%;font-size:.74em;line-height:1.75;color:var(--ink-mute)}.zlock b{color:var(--gold);font-weight:600}.bmeta{margin-top:auto;padding-top:.5em;display:flex;align-items:center;gap:.6em}.bmeta:before,.bmeta:after{content:"";flex:1;height:1px;background:#c9a06347}.bmeta span{font-family:var(--mono);font-size:.66em;letter-spacing:.14em;color:#c9a063b3;font-variant-numeric:tabular-nums;white-space:nowrap}.veil{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.875rem;padding:2rem;background:#281c24b8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#fff;text-align:center;transition:opacity .5s ease}.veil.gone{opacity:0;pointer-events:none}.spin{width:1.75rem;height:1.75rem;border-radius:50%;border:2px solid rgba(255,255,255,.25);border-top-color:#fff;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.veil p{margin:0;font-size:.875rem;line-height:1.9}.veil .sub{font-size:.75rem;color:#ffffffb3}.veil button{margin-top:.5rem;background:transparent;border:1px solid rgba(255,255,255,.5);color:#fff;font-family:var(--sans);font-size:.8125rem;letter-spacing:.08em;padding:.5rem 1.125rem;border-radius:.25rem;cursor:pointer}.coach{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;align-items:center;justify-content:space-evenly;padding:calc(2rem + env(safe-area-inset-top)) 2rem calc(1.5rem + env(safe-area-inset-bottom));background:#281c24a8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);cursor:pointer;transition:opacity .45s ease}.coach.gone{opacity:0;pointer-events:none}.coach-panel{display:flex;flex-direction:column;align-items:center;gap:.25rem;text-align:center;color:#fff}.coach-ico{width:3rem;height:3rem;margin-bottom:.5rem;color:#ffffffeb}.coach-t{margin:0;font-family:var(--serif);font-weight:600;font-size:1.125rem;letter-spacing:.14em;text-indent:.14em}.coach-s{margin:0;font-size:.8125rem;letter-spacing:.05em;color:#ffffffb8}.coach-go{margin:0;font-size:.75rem;letter-spacing:.14em;text-indent:.14em;color:#fff9;animation:coach-breathe 2.2s ease-in-out infinite}@keyframes coach-breathe{0%,to{opacity:.55}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.coach-go{animation:none}}@media(prefers-reduced-motion:reduce){.card,.bgwrap img{transition:none}.tilt{will-change:auto}.spin{animation:none}}
