:root{--plum:#3b1f3a;--lotus:#e8789a;--petal:#fceef2;--gold:#c9a24b;--leaf:#4f7a5a;--paper:#fffbfc;--ui:"Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",sans-serif;--display:"Playfair Display",Georgia,"Times New Roman",serif;--script:"Dancing Script","Brush Script MT",cursive;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}*,:before,:after{box-sizing:inherit}html,body{margin:0}body{font-family:var(--ui);color:var(--plum);background:var(--petal);-webkit-font-smoothing:antialiased;line-height:1.55}button,input,textarea,select{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--lotus);outline-offset:2px}html.pointer :focus{outline:none}button,a,[role=button]{-webkit-tap-highlight-color:transparent}.hidden{display:none!important}.wrap{max-width:1040px;margin:0 auto;padding:28px 20px 60px}.hero h1{font-family:var(--display);letter-spacing:-.01em;margin:0 0 10px;font-size:clamp(2.6rem,9vw,4.4rem);font-weight:700;line-height:1}.hero h1 em{color:var(--lotus);font-style:italic;font-weight:500}.hero p{max-width:34em;margin:0 0 28px;font-size:1.05rem}.grid{gap:28px;display:grid}.grid>*{min-width:0}.preview-col{z-index:5;background:var(--petal);margin:0 -20px;padding:10px 20px 12px;position:sticky;top:0;box-shadow:0 10px 16px -14px #3b1f3a80}.preview-box{scroll-behavior:smooth;border-radius:18px;max-height:40vh;overflow:auto}@media (max-width:859px){.preview-col{position:relative}html.editing .preview-col{position:sticky}.preview-box .card{min-height:0;padding:18px 18px 52px}.preview-box .card .flower{width:52px;height:44px;margin-bottom:2px}.preview-box .card[data-figure] .flower{width:60px;height:90px}.preview-box .card .deco{width:96px;height:88px}.preview-box .card .to{margin-bottom:8px;font-size:1.2rem}.preview-box .card .msg{font-size:1.25rem}.preview-box .card .from{margin-top:10px}.preview-box .card .big-date{font-size:6rem;bottom:-24px}.preview-label{flex-wrap:nowrap;margin-bottom:6px;font-size:.82rem}.preview-label .hint{display:none}html.editing .preview-box{max-height:26vh}}@media (min-width:860px){.grid{grid-template-columns:1fr 1fr;align-items:start}.form-col{grid-area:1/1}.preview-col{box-shadow:none;background:0 0;grid-area:1/2;margin:0;padding:0;top:20px}.preview-box{max-height:none;overflow:visible}}#preview .card>*{transition:opacity .25s}#preview[data-focus] .card>:not(.big-date){opacity:.28}#preview[data-focus=to] .card .to,#preview[data-focus=msg] .card .msg,#preview[data-focus=from] .card .from,#preview[data-focus=rel] .card .to,#preview[data-focus=rel] .card .msg,#preview[data-focus=rel] .card .from{opacity:1;outline:2px dashed var(--accent);outline-offset:5px;border-radius:6px;animation:1.2s ease-in-out infinite hl}@keyframes hl{50%{outline-color:#0000}}.card .ph{opacity:.45}.where{color:#c8285e;margin-left:6px;font-size:.78rem;font-weight:500}.rels{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.rel-btn{cursor:pointer;text-align:center;background:#fff;border:1.5px solid #e6c9d3;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:10px 4px;font-size:.8rem;line-height:1.25;display:flex}.rel-btn .ic{font-size:1.45rem}.rel-btn[aria-pressed=true]{border-color:var(--lotus);box-shadow:inset 0 0 0 1px var(--lotus);background:#fff0f4;font-weight:600}.field{margin-bottom:18px}.field label{margin-bottom:6px;font-size:.92rem;font-weight:600;display:block}.field input,.field textarea,.field select{background:#fff;border:1.5px solid #e6c9d3;border-radius:10px;width:100%;padding:12px 14px}.field textarea{resize:vertical;min-height:130px}.row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.hint{color:#7a5a6c;margin-top:4px;font-size:.85rem}.link-btn{color:var(--lotus);cursor:pointer;text-underline-offset:3px;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.tpls{grid-template-columns:repeat(6,1fr);gap:12px 8px;display:grid}.tpl{cursor:pointer;text-align:center;color:var(--plum);background:0 0;border:0;flex-direction:column;gap:6px;padding:0;font-size:.76rem;line-height:1.25;display:flex;position:relative}.tpl-thumb{aspect-ratio:3/4;background:var(--bg);border:1.5px solid #3b1f3a1f;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;transition:transform .2s,box-shadow .2s;display:flex;position:relative;overflow:hidden}.tpl-thumb svg{width:58%;height:auto}.tpl-thumb svg.tall{width:40%}.tpl-mini{font-family:var(--script);color:var(--sc);font-size:1rem}.tpl:hover .tpl-thumb{transform:translateY(-3px);box-shadow:0 10px 18px -10px #3b1f3a80}.tpl[aria-pressed=true] .tpl-thumb{border-color:var(--plum);box-shadow:0 0 0 2px var(--plum)}.tpl[aria-pressed=true] .tpl-thumb:after{content:"✓";background:var(--plum);color:#fff;border-radius:50%;place-items:center;width:20px;height:20px;font-size:.72rem;display:grid;position:absolute;bottom:6px;right:6px}.tpl[aria-pressed=true] .tpl-name{font-weight:700}.tpl-badge{color:var(--plum);white-space:nowrap;background:#fff;border-radius:999px;padding:2px 6px;font-size:.58rem;font-weight:700;position:absolute;top:5px;left:5px;box-shadow:0 1px 3px #00000026}.tpl-badge.pro{color:#3b2a0a;background:linear-gradient(135deg,#f3d891,#c9a24b)}.swipe{display:none}.tryout{z-index:50;background:#000;position:fixed;inset:0}.tryout iframe{background:#07030c;border:0;width:100%;height:100%;position:absolute;inset:0}html.viewing{scrollbar-width:none;background:var(--page-bg)}html.viewing::-webkit-scrollbar{display:none}html.viewing body{background:var(--page-bg)}.pv-bar{z-index:60;padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));color:#fff;background:linear-gradient(#0009,#0000);align-items:center;gap:10px;font-size:.82rem;display:flex;position:fixed;top:0;left:0;right:0}.pv-bar span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.pv-bar a{color:#fff;text-decoration:none}.try-bar{padding:10px 14px;padding-top:max(10px,env(safe-area-inset-top));color:#fff;pointer-events:none;background:linear-gradient(#0009,#0000);align-items:center;gap:10px;font-size:.82rem;display:flex;position:absolute;top:0;left:0;right:0}.try-close{pointer-events:auto;color:#fff;cursor:pointer;background:#fff3;border:0;border-radius:50%;flex:none;width:38px;height:38px;font-size:1.1rem}.try-bar span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.try-open{pointer-events:auto;color:#fff;font:600 .82rem var(--ui);cursor:pointer;white-space:nowrap;background:#ffffff24;border:1px solid #fff6;border-radius:999px;flex:none;padding:9px 14px}.try-gift{pointer-events:auto;color:#fff;font:700 .88rem var(--ui);cursor:pointer;white-space:nowrap;background:linear-gradient(135deg,#ff5c8a,#d6246a);border:0;border-radius:999px;flex:none;padding:10px 16px;box-shadow:0 6px 18px -6px #d6246ae6}.panel{scroll-margin-top:20px}@media (max-width:859px){.panel{scroll-margin-top:calc(40vh + 76px)}}.perks{gap:8px;margin:4px 0 16px;padding:0;font-size:.95rem;list-style:none;display:grid}.offer-price{margin:0 0 14px;font-size:1rem}.offer-price b{color:#c8285e;font-size:1.6rem}.offer-price span{color:#7a5a6c;font-size:.9rem}.opt-group .field:last-child{margin-bottom:0}.opt-group.is-fx{background:linear-gradient(#f6eefb,#fff 70%);border:1.5px solid #cdb3e0;border-radius:14px;margin:-8px 0 22px;padding:16px 14px;position:relative}.opt-group.is-fx:before{content:"";background:#f6eefb;border-top:1.5px solid #cdb3e0;border-left:1.5px solid #cdb3e0;width:16px;height:16px;position:absolute;top:-9px;right:24%;transform:rotate(45deg)}.opt-group:not(.is-fx){margin-bottom:18px}.fxlive{background:#07030c;border:0;border-radius:18px;width:100%;display:block;box-shadow:0 18px 40px -20px #14051ecc}.fxlive-wrap{position:relative}.fxlive-tag{z-index:2;color:#ffe3f0;font:600 .7rem var(--ui);letter-spacing:.06em;pointer-events:none;background:#00000073;border-radius:999px;padding:4px 10px;position:absolute;top:10px;left:12px}.check{cursor:pointer;align-items:center;gap:10px;margin:0 0 16px;font-size:.92rem;display:flex}.check input{accent-color:#c8285e;flex:none;width:18px;height:18px;margin:0}.story{scrollbar-width:none;align-items:stretch;gap:4px;margin-top:10px;display:flex;overflow-x:auto}.story::-webkit-scrollbar{display:none}.story-step{text-align:center;background:#fff;border:1.5px solid #e6c9d3;border-radius:12px;flex-direction:column;flex:1 0 74px;align-items:center;gap:3px;padding:8px 4px;font-size:.72rem;line-height:1.25;display:flex}.story-step b{font-size:1.25rem;line-height:1}.story-arrow{color:#c9a3b6;align-self:center;font-size:.8rem}.kinds{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:26px;display:grid}.kind{cursor:pointer;text-align:left;background:#fff;border:1.5px solid #e6c9d3;border-radius:14px;flex-direction:column;gap:2px;padding:14px 14px 12px;line-height:1.3;display:flex;position:relative}.kind .ic{font-size:1.6rem}.kind b{font-size:1.02rem}.kind small{color:#7a5a6c;font-size:.78rem}.kind .price{color:#2f6b3e;background:#e9f5ec;border-radius:999px;padding:2px 8px;font-size:.7rem;font-weight:700;position:absolute;top:10px;right:10px}.kind .price.paid{color:#3b2a0a;background:linear-gradient(135deg,#f3d891,#c9a24b)}.kind{transition:transform .18s,box-shadow .18s,opacity .18s,filter .18s}.kind[aria-pressed=false]{opacity:.6;filter:saturate(.6)}.kind[aria-pressed=false]:hover{opacity:.9;filter:none}.kind[aria-pressed=true]{background:#fff0f5;border:2.5px solid #c8285e;transform:translateY(-3px);box-shadow:0 0 0 4px #e8789a47,0 12px 24px -12px #c8285e99}.kind.kind-fx[aria-pressed=true]{color:#fff;background:linear-gradient(160deg,#3a1650,#6a2c82);border-color:#b07cff;box-shadow:0 0 0 4px #b07cff59,0 12px 24px -12px #5a1e78d9}.kind.kind-fx[aria-pressed=true] small{color:#e6ccf5}.kind[aria-pressed=true]:after{content:"✓ Đang chọn";color:#fff;font:700 .66rem/1.5 var(--ui);letter-spacing:.02em;background:#c8285e;border-radius:999px;padding:2px 9px;position:absolute;bottom:-11px;left:12px;box-shadow:0 2px 6px #0003}.kind.kind-fx[aria-pressed=true]:after{background:#b07cff}.ops{grid-template-columns:repeat(2,1fr);gap:8px;display:grid}.ops .op[data-kind=fx]{padding:10px 4px}.ops:has(.op[data-kind=fx]:not([hidden])){grid-template-columns:repeat(2,1fr)}.ops .op[data-kind=fx] b{font-size:.88rem}.ops .op[data-kind=fx] small{font-size:.7rem}.op{cursor:pointer;text-align:center;background:#fff;border:1.5px solid #e6c9d3;border-radius:12px;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;line-height:1.3;display:flex}.op .ic{font-size:1.8rem}.op b{font-size:.95rem;display:block}.op small{color:#7a5a6c;font-size:.78rem}.op[hidden]{display:none}.op[data-kind=fx]{transition:transform .15s,box-shadow .15s;position:relative}.op[data-kind=fx][aria-pressed=true]{color:#fff;background:linear-gradient(160deg,#3a1650,#6a2c82);border-color:#6a2c82;transform:translateY(-2px);box-shadow:0 0 0 3px #b07cff59,0 10px 22px -10px #5a1e78cc}.op[data-kind=fx][aria-pressed=true] small{color:#e6ccf5}.op[data-kind=fx][aria-pressed=true]:after{content:"✓";color:#6a2c82;width:20px;height:20px;font:700 .72rem/20px var(--ui);text-align:center;background:#fff;border-radius:50%;position:absolute;top:6px;right:6px}.op[aria-pressed=true]{border-color:var(--plum);box-shadow:inset 0 0 0 1px var(--plum)}@media (max-width:859px){.tpls{scroll-snap-type:x mandatory;scrollbar-width:none;margin:0 -20px;padding:4px 20px 10px;display:flex;overflow-x:auto}.tpls::-webkit-scrollbar{display:none}.tpl{scroll-snap-align:start;flex:0 0 92px}.swipe{display:inline}}.btn{background:var(--plum);color:#fff;cursor:pointer;border:0;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:14px 22px;font-size:1rem;font-weight:600;display:inline-flex}.btn:hover{background:#52294f}.btn.alt{color:var(--plum);border:1.5px solid var(--plum);background:#fff}.btn.full{width:100%}.panel{background:#fff;border:1.5px solid #e6c9d3;border-radius:14px;margin-top:22px;padding:20px}.panel h3{font-family:var(--display);margin:0 0 10px;font-size:1.35rem;font-weight:500}.linkbox{gap:8px;margin:10px 0 14px;display:flex}.linkbox input{background:var(--paper);border:1.5px solid #e6c9d3;border-radius:10px;flex:1;min-width:0;padding:10px 12px;font-size:.85rem}.actions{flex-wrap:wrap;gap:10px;display:flex}.upsell{border:1px dashed var(--gold);background:#fff6e5;border-radius:10px;margin-top:16px;padding:14px;font-size:.95rem}.qr{aspect-ratio:1;background:#f6f6f6;border-radius:10px;width:220px;max-width:100%;margin:12px auto;display:block}.code{font-family:var(--display);letter-spacing:.06em;font-weight:700}.msg-ok{color:var(--leaf);font-weight:600}.msg-err{color:#b3122e;font-weight:600}.footer{color:#7a5a6c;text-align:center;margin-top:48px;font-size:.85rem}.card{--bg:#fceef2;--ink:#5a1e3a;--accent:#e8789a;--sc:#8e2453;--f1:#f7b5c8;--f2:#e8789a;--f3:#8db48e;background:var(--bg);color:var(--ink);border-radius:18px;flex-direction:column;min-height:440px;padding:30px 28px 84px;display:flex;position:relative;overflow:hidden;box-shadow:0 18px 40px -20px #3b1f3a73}.card[data-theme=vang]{box-shadow:inset 0 0 0 1px #c9a24b8c,0 18px 40px -20px #0009}.card[data-theme=dem]{background-image:radial-gradient(1.5px 1.5px at 12% 18%,#fff8 50%,#0000 51%),radial-gradient(1px 1px at 72% 12%,#fff9 50%,#0000 51%),radial-gradient(1.5px 1.5px at 86% 46%,#fff6 50%,#0000 51%),radial-gradient(1px 1px at 30% 70%,#fff7 50%,#0000 51%),radial-gradient(1px 1px at 58% 88%,#fff8 50%,#0000 51%)}.card>.to,.card>.msg,.card>.from{z-index:1;position:relative}.card:before,.card:after{content:"";pointer-events:none;position:absolute;inset:0}.card:before{opacity:.22;background:radial-gradient(55% 38% at 0 0,var(--f1),transparent 70%),radial-gradient(50% 34% at 100% 100%,var(--accent),transparent 70%),radial-gradient(30% 22% at 100% 0,var(--f3),transparent 70%)}.card:after{opacity:.5;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .45 0 0 0 0 .38 0 0 0 0 .32 0 0 0 .09 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.card[data-figure] .flower{width:104px;height:156px}.card[data-theme=ep] .flower{width:96px;height:96px}.card[data-theme=ep]{box-shadow:inset 0 0 0 9px var(--bg),inset 0 0 0 10px #7a523247,0 18px 40px -20px #4a3b2a80}.card[data-theme=toigian]:before,.card[data-theme=toigian] .deco{display:none}.card[data-theme=toigian]{padding-top:40px;box-shadow:0 1px 2px #0000000f,0 14px 30px -18px #00000040}.card[data-theme=toigian] .flower{width:60px;height:60px;margin-bottom:18px}.card[data-theme=toigian] .to{font-family:var(--ui);letter-spacing:.25em;text-transform:uppercase;margin-bottom:24px;font-size:.85rem;font-weight:500}.card[data-theme=toigian] .msg{font-family:var(--display);text-align:center;font-size:1.1rem;line-height:1.95}.card[data-theme=toigian] .from{font-family:var(--ui);letter-spacing:.08em;text-align:center;font-size:.85rem;font-style:normal}.card[data-theme=toigian] .big-date{font-family:var(--ui);letter-spacing:.3em;opacity:.5;color:var(--ink);font-size:.8rem;font-style:normal;font-weight:400;top:20px;bottom:auto;right:22px}.card .flower{width:78px;height:66px;margin:0 auto 8px;display:block;overflow:visible}.card .deco{opacity:.15;pointer-events:none;width:130px;height:120px;position:absolute}.card .deco-tl{top:-34px;left:-38px;transform:rotate(-28deg)}.card .deco-tr{top:-34px;right:-38px;transform:rotate(28deg)scaleX(-1)}.card .lock-tag{z-index:2;color:#3b2a0a;font:700 .72rem/1.3 var(--ui);background:linear-gradient(135deg,#f3d891,#c9a24b);border-radius:999px;padding:4px 10px;position:absolute;top:12px;right:12px}.card .big-date{font-family:var(--display);color:var(--accent);opacity:.13;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:9.5rem;font-style:italic;line-height:1;position:absolute;bottom:-26px;right:-8px}.card .to{font-family:var(--display);text-align:center;margin:0 0 18px;font-size:1.5rem}.card .msg{font-family:var(--script);color:var(--sc);white-space:pre-wrap;word-break:break-word;flex:1;margin:0;font-size:1.6rem;line-height:1.45}.card .from{font-family:var(--display);text-align:right;margin:18px 0 0;font-size:1.1rem;font-style:italic}.preview-label{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin-bottom:8px;font-size:.92rem;font-weight:600;display:flex}.view-as{border:1.5px solid var(--lotus);color:#c8285e;font:600 .8rem var(--ui);white-space:nowrap;cursor:pointer;background:#fff;border-radius:999px;flex:none;padding:6px 12px}.view-as:hover{background:#fff0f5}.viewer{min-height:100svh;color:var(--vink,var(--plum));background:radial-gradient(circle at 50% 35%,var(--v1,#ffe3ec),var(--v2,#fceef2) 70%);flex-direction:column;justify-content:center;align-items:center;padding:28px 18px;display:flex;position:relative;overflow:hidden}.stage{z-index:2;flex-direction:column;align-items:center;display:flex;position:relative}.env-kicker{font-family:var(--script);color:var(--sc,#c8285e);text-align:center;text-wrap:balance;margin:0 0 54px;font-size:1.8rem}.env{aspect-ratio:4/3;perspective:1000px;cursor:pointer;-webkit-tap-highlight-color:transparent;width:min(320px,80vw);position:relative}.env-back{z-index:1;background:linear-gradient(160deg,var(--e1,#e46f92),var(--e3,#c9507a));border-radius:10px;position:absolute;inset:0;box-shadow:0 28px 40px -18px #5a14328c}.letter{z-index:3;text-align:center;background:var(--paper) repeating-linear-gradient(transparent 0 26px,#f6d9e2 26px 27px);height:88%;font-family:var(--script);color:var(--sc,#c8285e);white-space:nowrap;text-overflow:ellipsis;border-radius:6px;padding:16px 14px;font-size:1.45rem;position:absolute;top:6%;left:7%;right:7%;overflow:hidden;box-shadow:0 2px 10px #00000014}.env-front{z-index:4;background:linear-gradient(200deg,var(--e2,#f7b0c5),var(--e1,#ee8baa));clip-path:polygon(0 0,50% 56%,100% 0,100% 100%,0 100%);border-radius:10px;position:absolute;inset:0}.env-flap{z-index:5;transform-origin:50% 0;position:absolute;inset:0}.env-flap svg{width:100%;height:100%;display:block;overflow:visible}.env-seal{z-index:6;color:#fff;width:62px;height:62px;font-family:var(--display);text-shadow:0 1px 1px #00000040;background:radial-gradient(circle at 35% 30%,#f3d891,#c9a24b 55%,#9c7a2e);border-radius:50%;place-items:center;margin:-31px 0 0 -31px;font-size:.95rem;font-weight:700;display:grid;position:absolute;top:56%;left:50%;box-shadow:0 4px 12px #50320059,inset 0 0 0 3px #ffffff40}.bq{aspect-ratio:3/4;cursor:pointer;-webkit-tap-highlight-color:transparent;width:min(250px,66vw);position:relative}.bq-back{clip-path:polygon(0 0,100% 0,50% 100%);background:linear-gradient(#a97f55,#7e5b38);position:absolute;inset:30% 8% 0}.bq-fl{position:absolute;inset:0}.bq-fl svg{position:absolute;overflow:visible}.bq-paper{background:repeating-linear-gradient(100deg,#ffffff12 0 2px,#0000 2px 9px),linear-gradient(160deg,#ddb98e,#b98e62);position:absolute;inset:34% 0 0}.bq-l{clip-path:polygon(0 0,54% 10%,50% 100%)}.bq-r{clip-path:polygon(100% 0,46% 10%,50% 100%);background:repeating-linear-gradient(80deg,#ffffff12 0 2px,#0000 2px 9px),linear-gradient(200deg,#e6c69e,#c49a6c)}.bq-bow{z-index:3;filter:drop-shadow(0 3px 4px #0003);width:76px;margin-left:-38px;position:absolute;top:64%;left:50%}.bq-tag{z-index:4;text-overflow:ellipsis;white-space:nowrap;max-width:56%;font-family:var(--script);color:var(--sc);background:#fffbf2;border-radius:4px;padding:5px 10px;font-size:1.1rem;position:absolute;top:80%;left:54%;overflow:hidden;transform:rotate(-8deg);box-shadow:0 3px 8px #0003}.env-to{font-family:var(--display);text-align:center;margin:28px 0 16px;font-size:1.6rem}.viewer:not(.gx-mode) #openEnv{background:var(--sc);background:color-mix(in srgb,var(--sc) 88%,#000);border-radius:999px;padding:14px 28px}.viewer.gx-mode #openEnv{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff1a;border:1px solid #ffffff59;border-radius:999px;padding:13px 28px}.glow{z-index:4;pointer-events:none;opacity:0;background:radial-gradient(circle,#fff 0,#fff0f5f7 28%,#ffe4ec99 45%,#0000 62%);border-radius:50%;width:150vmax;height:150vmax;margin:-75vmax 0 0 -75vmax;position:absolute;top:45%;left:50%;transform:scale(.2)}.view-card{z-index:3;flex-direction:column;align-items:center;width:100%;display:flex;position:relative}.viewer .card{width:min(460px,100%)}.card .msg .w{white-space:nowrap;display:inline-block}.card .msg .ch{display:inline-block}.view-actions{z-index:3;flex-direction:column;align-items:center;gap:12px;margin-top:26px;display:flex;position:relative}.view-actions.pending{visibility:hidden}.btn.reply{text-align:center;background:linear-gradient(135deg,#e8789a,#c8285e);border-radius:999px;padding:15px 26px;text-decoration:none;box-shadow:0 12px 26px -10px #c8285ebf}.act-row{flex-wrap:wrap;justify-content:center;gap:10px;display:flex}.act{border:1.5px solid color-mix(in srgb,var(--sc,#c8285e) 35%,transparent);color:var(--sc,#c8285e);font:600 .88rem var(--ui);cursor:pointer;background:#ffffffb3;border-radius:999px;align-items:center;gap:6px;padding:9px 16px;display:inline-flex}.act:disabled{opacity:.6;cursor:progress}.make-link{color:inherit;opacity:.7;text-underline-offset:3px;font-size:.82rem}.fx{z-index:9;pointer-events:none;position:fixed;top:0;left:0}.fx.behind{z-index:2}.petal{background:linear-gradient(135deg,#fac6d5,#ee8baa);border-radius:70% 0;width:14px;height:18px;display:block;box-shadow:0 1px 2px #0000001f}.petal.long{border-radius:50%;width:7px;height:18px}.petal.dot{border-radius:50%;width:9px;height:9px}.spark{line-height:1;display:block}.tap-hint{opacity:.7;margin:0;font-size:.82rem}.view-actions.compact{left:0;right:0;bottom:max(22px,env(safe-area-inset-bottom));flex-direction:row;justify-content:center;gap:10px;margin:0;padding:0 16px;position:fixed}.view-actions.compact .tap-hint,.view-actions.compact .make-link{display:none}.view-actions.compact .act-row{flex-wrap:nowrap;order:1}.view-actions.compact .reply{white-space:nowrap;order:2;padding:12px 18px;font-size:.9rem}.view-actions.compact .act{color:#fff;background:#ffffff1f;border:1px solid #ffffff40;border-radius:50%;justify-content:center;width:46px;height:46px;padding:0;font-size:1.2rem}.view-actions.compact .act b{display:none}.music-btn{top:max(10px,env(safe-area-inset-top));z-index:46;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);opacity:.85;cursor:pointer;background:#ffffff8c;border:1px solid #3b1f3a26;border-radius:50%;place-items:center;width:34px;height:34px;padding:0;font-size:.85rem;display:grid;position:fixed;right:10px}.viewer.gx-mode .music-btn{background:#ffffff1f;border-color:#ffffff40}html.has-pv .music-btn{top:max(64px,calc(env(safe-area-inset-top) + 52px))}.intro{z-index:45;cursor:pointer;-webkit-tap-highlight-color:transparent;background:radial-gradient(circle,#12061c,#030106 75%);position:fixed;inset:0}.intro canvas{width:100%;height:100%;position:absolute;inset:0}.intro-line{text-align:center;font-family:var(--script);color:#ffe6f2;text-shadow:0 0 12px #ff5ca0bf,0 0 30px #ff5ca059;margin:0;padding:0 28px;font-size:clamp(1.7rem,7.5vw,2.6rem);font-weight:600;line-height:1.3;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.intro.ice .intro-line{color:#e2f4ff;text-shadow:0 0 12px #3fa9ffcc,0 0 30px #3fa9ff66}.gift-scene{perspective:1000px;width:0;height:0;position:absolute;top:50%;left:50%}.gift-cube{transform-style:preserve-3d;position:absolute;top:0;left:0}.gift-face{backface-visibility:visible;position:absolute}.gift-lid{transform-style:preserve-3d;position:absolute;top:0;left:0}.gift-light{pointer-events:none;opacity:0;transform-origin:50% 100%;filter:blur(4px);background:radial-gradient(30% 60% at 50% 100%,#fffffff2,#ffd6eb8c 40%,#0000 75%);width:340px;height:520px;margin:-470px 0 0 -170px;position:absolute;top:50%;left:50%}.intro.ice .gift-light{background:radial-gradient(30% 60% at 50% 100%,#fffffff2,#bee6ff8c 40%,#0000 75%)}.gift-title{text-align:center;font-family:var(--script);color:#ffe6f2;text-shadow:0 0 12px #ff5ca0bf;text-wrap:balance;margin:0;padding:0 20px;font-size:clamp(1.8rem,8vw,2.6rem);font-weight:600;position:absolute;top:14vh;left:0;right:0}.intro.ice .gift-title{color:#e2f4ff;text-shadow:0 0 12px #3fa9ffcc}.gift-tap{text-align:center;color:#fff;width:max-content;max-width:calc(100% - 40px);font:600 1rem var(--ui);letter-spacing:.04em;text-shadow:0 0 10px #ffffff73;background:#ffffff1a;border:1px solid #ffffff59;border-radius:999px;margin:0 auto;padding:10px 22px;position:absolute;bottom:16vh;left:0;right:0}.intro-skip{left:0;right:0;bottom:max(26px,env(safe-area-inset-bottom));text-align:center;color:#fff6;letter-spacing:.05em;margin:0;font-size:.8rem;position:absolute}.viewer.mini .view-actions,.viewer.mini .stage{display:none!important}.viewer.gx-mode{--vink:#fff;background:radial-gradient(circle at 50% 45%,#22102a,#07030c 70%)}.gx-mode .env-kicker{color:#ffb3c6}.hg-mode .stage{position:absolute;bottom:6vh;left:0;right:0}.hg-mode .env-kicker{margin:0;position:fixed;top:7vh;left:16px;right:16px}.viewer.ice-mode{background:radial-gradient(circle at 50% 45%,#0a1a33,#020610 70%)}.ice-mode .env-kicker{color:#9fdcff;text-shadow:0 0 10px #3fa9ff,0 0 26px #3fa9ffb3;font-size:2.6rem}.viewer.float-mode{background:radial-gradient(circle at 50% 55%,#03202a,#010608 70%)}.viewer.aur-mode{background:linear-gradient(#030a22,#0a2038 60%,#02060a)}.aur-mode .env-kicker{color:#c8ffe9;text-shadow:0 0 10px #2bffb0,0 0 26px #2bffb08c;font-size:2.1rem}.aur-mode .fxm-to,.aur-mode .fxm-from{color:#d4fff0;text-shadow:0 0 12px #2bffb0}.aur-mode .fxm-msg{color:#f2fffa;text-shadow:0 0 6px #2bffb0cc}.viewer.sol-mode{background:radial-gradient(circle at 50% 45%,#1a0e05,#030104 70%)}.sol-mode .env-kicker{color:#ffe3a3;text-shadow:0 0 10px #ffb020,0 0 26px #ffb02099;font-size:2.1rem}.float-mode .env-kicker{color:#9ff7ff;text-shadow:0 0 10px #22e4ff,0 0 26px #22e4ff99;font-size:2.3rem}.float-mode .fxm-to,.float-mode .fxm-from{color:#c9fbff;text-shadow:0 0 12px #22e4ff}.float-mode .fxm-msg{color:#f0feff;text-shadow:0 0 6px #22e4ffd9}.ice-mode .fxm-to,.ice-mode .fxm-from{color:#cfefff;text-shadow:0 0 12px #3fa9ff,0 0 28px #3fa9ff99}.ice-mode .fxm-msg{color:#f2faff;text-shadow:0 0 6px #3fa9ffcc,0 0 1px #fff}.gx-canvas{z-index:1;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.gx-heart{cursor:pointer;-webkit-tap-highlight-color:transparent;filter:drop-shadow(0 0 12px #ff2d55)drop-shadow(0 0 30px #ff2d558c);width:88px;height:80px}.card[data-theme=fx3d]{background:radial-gradient(circle at 50% 40%,#2a1236,#0b0410 75%);box-shadow:0 18px 40px -20px #14051ecc}.card[data-theme=fx3d]:before,.card[data-theme=fx3d] .deco{display:none}.card[data-theme=fx3d] .flower{filter:drop-shadow(0 0 8px #ff2d55)drop-shadow(0 0 18px #ff2d5580)}.card[data-theme=fx3d]:after{opacity:1;mix-blend-mode:normal;background-image:radial-gradient(1.5px 1.5px at 12% 18%,#fff9 50%,#0000 51%),radial-gradient(1px 1px at 72% 12%,#fff9 50%,#0000 51%),radial-gradient(1.5px 1.5px at 86% 56%,#fff7 50%,#0000 51%),radial-gradient(1px 1px at 30% 80%,#fff8 50%,#0000 51%),radial-gradient(1px 1px at 58% 92%,#fff8 50%,#0000 51%),radial-gradient(1px 1px at 8% 60%,#fff7 50%,#0000 51%)}.card[data-theme=fx3d] .to,.card[data-theme=fx3d] .msg,.card[data-theme=fx3d] .from{text-shadow:0 0 10px #ff4d8dcc}.card[data-theme=fx3d] .big-date{opacity:.08}.card .fx-tag{z-index:2;font:600 .68rem/1 var(--ui);letter-spacing:.16em;text-transform:uppercase;color:#ffb3c6;position:absolute;top:12px;left:14px}.fxm{z-index:3;text-align:center;color:#fff;width:min(460px,100%);padding:20px 18px 90px;position:relative}.fxm-to{font-family:var(--script);color:#ffd1dc;text-shadow:0 0 12px #ff4d8d,0 0 28px #ff4d8d99;text-wrap:balance;margin:0 0 18px;font-size:clamp(2rem,9vw,2.8rem);font-weight:600;line-height:1.15}.fxm-msg{font-family:var(--script);word-break:break-word;color:#fff4f8;text-shadow:0 0 6px #ff4d8db3,0 0 1px #fff;margin:0;font-size:1.5rem;font-weight:600;line-height:1.45}.fxm-line{margin:0 0 .45em;display:block}.fxm .w{white-space:nowrap;display:inline-block}.fxm .ch{display:inline-block}.fxm-next{color:#fff;font:600 .92rem var(--ui);cursor:pointer;background:#ffffff14;border:1px solid #ffffff59;border-radius:999px;margin-top:26px;padding:10px 22px}.fxm-from{font-family:var(--display);color:#ffd1dc;text-shadow:0 0 8px #ff4d8dcc;margin:20px 0 0;font-size:1.15rem;font-style:italic}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.boot{place-items:center;font-size:2.4rem;animation:1.2s ease-in-out infinite boot-pulse;display:grid;position:fixed;inset:0}@keyframes boot-pulse{50%{opacity:.55;transform:scale(1.15)}}
