@font-face{font-family:GiftHappy;src:url('assets/fonts/ZCOOLKuaiLe-Regular.ttf') format('truetype');font-display:swap}
.gift-page{margin:0;background:#eee2d1;color:#805039;font-family:GiftHappy,'Microsoft YaHei',sans-serif;min-height:100svh;padding:26px 16px 40px;box-sizing:border-box;background-image:repeating-linear-gradient(0deg,transparent 0 23px,#986c3c07 24px 25px)}
.gift-page *,.gift-editor *{box-sizing:border-box}.gift-page button,.gift-page a,.gift-editor button{font:inherit}.gift-page button:focus-visible,.gift-page a:focus-visible,.gift-editor button:focus-visible{outline:3px solid #447f84;outline-offset:5px}
.gift-page main{max-width:650px;margin:auto}.gift-home{display:block;width:max-content;margin:28px auto 0;color:#805039;text-underline-offset:5px;font-size:14px}.gift-loading{padding:70px 20px;text-align:center;line-height:1.8}.gift-loading button{padding:12px 24px;background:#fff9ec;border:1px solid #805039;border-radius:14px}
.gift-view{--gift-paper:#fff3dc;--gift-ink:#805039;--gift-accent:#dba4a4;background:var(--gift-paper);color:var(--gift-ink);border:1px solid #85583938;border-radius:140px 140px 26px 26px;padding:32px 22px 26px;box-shadow:0 9px 0 #77512b0a,0 18px 40px #77512b12;text-align:center;isolation:isolate;overflow:hidden;font-family:GiftHappy,Happy,'Microsoft YaHei',sans-serif}
.gift-view h1{font-size:clamp(22px,4vw,32px);font-weight:400;line-height:1.45;margin:12px auto;max-width:23ch;overflow-wrap:anywhere}.gift-eyebrow{font-size:12px;letter-spacing:2px;line-height:1.7;margin:0}.gift-hint{font-size:14px;line-height:1.6;margin:10px 0 0;min-height:24px}.gift-stage{position:relative;width:100%;margin:-46px auto 0;aspect-ratio:1;touch-action:manipulation}.gift-cake{display:block;width:100%;height:100%;object-fit:contain;user-select:none}.gift-candle{position:absolute;transform:translate(-50%,-95%);padding:0!important;border:0!important;background:transparent!important;border-radius:0!important;box-shadow:none!important;aspect-ratio:700/2048;min-height:0!important;min-width:0!important;cursor:pointer;overflow:visible!important;z-index:1}.gift-candle:before{content:'';position:absolute;inset:-5px -16px;min-width:44px;min-height:44px}.gift-candle-body{width:100%;height:100%;display:block;pointer-events:none}.gift-flame{position:absolute;width:48%;height:18%;left:50%;top:16%;transform:translate(-50%,-95%) rotate(7deg);border-radius:65% 35% 55% 45%;background:radial-gradient(ellipse at 50% 80%,#fffde6 10%,#ffe68a 44%,#ffb352 70%,#f88739 100%);box-shadow:0 0 18px 7px #ffd776aa,0 0 60px 22px #ffcb5b33;opacity:0;pointer-events:none}.is-lit .gift-flame{opacity:1;animation:gift-flicker 1.7s ease-in-out infinite alternate}.gift-status{height:1px;overflow:hidden;margin:0}.gift-letter{position:relative;text-align:left;padding:26px 26px 24px;margin:12px 0 0;background:#fffdf4d9;border:1px solid #80503927;box-shadow:0 4px 0 #80503908;border-radius:4px 12px 8px 4px;animation:gift-unfold .65s ease both}.gift-letter:before{content:'';display:block;width:60px;height:17px;background:var(--gift-accent);opacity:.65;position:absolute;top:-9px;left:calc(50% - 30px);transform:rotate(-4deg)}.gift-letter h2{font-size:25px;line-height:1.5;font-weight:400;overflow-wrap:anywhere}.gift-message{font-size:19px;line-height:1.95;white-space:pre-wrap;overflow-wrap:anywhere;margin:20px 0}.gift-signature{text-align:right;font-size:15px;line-height:1.8;overflow-wrap:anywhere}.gift-replay{margin-top:24px;background:transparent;border:0;border-bottom:1px solid currentColor;color:inherit;padding:10px;cursor:pointer}.gift-view [hidden]{display:none!important}
.gift-editor{width:100%}.gift-editor-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(260px,1fr);gap:24px;align-items:start}.gift-editor .gift-view{padding:26px 12px 20px;border-radius:90px 90px 20px 20px}.gift-editor .gift-view h1{font-size:23px}.gift-editor form{display:grid;gap:12px}.gift-editor label{display:grid;gap:7px;font-size:14px}.gift-editor input,.gift-editor textarea,.gift-editor select{width:100%;min-width:0;font:inherit;color:#805039;background:#fffdf5;border:1px solid #bd966c;border-radius:10px;padding:10px}.gift-editor textarea{min-height:130px;resize:vertical;line-height:1.7}.gift-editor input[type=color]{height:42px;padding:4px}.gift-editor .gift-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}.gift-editor .gift-disclosure{font-family:'Microsoft YaHei',sans-serif;font-size:12px;line-height:1.8;background:#f3e9d8;padding:12px;border-radius:10px}.gift-editor .gift-result{padding:18px;border:1px dashed #bc9467;border-radius:14px;margin-top:18px;overflow-wrap:anywhere}.gift-editor .gift-result:empty{display:none}.gift-editor .gift-result input{margin:10px 0}.gift-editor .gift-preview-tools{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;margin:16px 0}.gift-editor button,.gift-editor a.gift-button{min-height:44px;padding:10px 15px;border:1px solid #ba9468;border-radius:12px;background:#fff9ed;color:#805039;text-decoration:none;text-align:center;cursor:pointer}.gift-editor button.gold{background:#f5dca5}.gift-editor button:disabled{opacity:.5;cursor:wait}.gift-editor .gift-error{color:#a7463c;line-height:1.6}.gift-editor .gift-list{display:grid;gap:12px}.gift-editor .gift-list article{padding:16px;border:1px solid #d8bca1;border-radius:12px;background:#fffbef}.gift-editor .gift-list h3{margin:0 0 8px;overflow-wrap:anywhere}.gift-editor .gift-list p{font-size:13px}.gift-editor .gift-list .community-actions{margin:0}
@keyframes gift-flicker{from{transform:translate(-50%,-95%) rotate(5deg) scale(1,.96)}to{transform:translate(-50%,-95%) rotate(-5deg) scale(.94,1.06)}}@keyframes gift-unfold{from{opacity:0;transform:translateY(16px) rotate(-1deg)}to{opacity:1;transform:none}}
@media(max-width:700px){.gift-page{padding:18px 10px 30px}.gift-view{padding:30px 16px 24px;border-radius:110px 110px 22px 22px}.gift-editor-layout{grid-template-columns:1fr}.gift-editor .gift-view{max-width:440px;margin:auto}.gift-letter{padding:24px 18px 18px}.gift-message{font-size:18px}.gift-editor .gift-options{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){.gift-flame,.gift-letter{animation:none!important}}

#community-dialog:has(.gift-editor){width:min(960px,calc(100vw - 24px));max-width:960px}

/* Birthday ritual: reuse the studio's small paper-confetti visual language. */
.gift-ritual{position:relative;z-index:2;margin:0 auto 24px;padding:16px 12px 20px;max-width:480px;border-bottom:1px dashed #80503935}
.gift-ritual-note{font-size:15px;line-height:1.8;margin:0 0 12px;overflow-wrap:anywhere}
.gift-view .gift-wish{min-height:48px;padding:12px 23px;border:1px solid #bc926b;border-radius:18px;background:#f4d9a2;color:#704727;box-shadow:0 3px 0 #ba88513d;font:inherit;cursor:pointer;max-width:100%;line-height:1.5}
.gift-view .gift-wish:active{transform:translateY(2px);box-shadow:none}.gift-view .gift-wish:focus-visible{outline:3px solid #447f84;outline-offset:4px}
.gift-smoke{position:absolute;left:50%;top:16%;width:1px;height:1px;pointer-events:none}
.gift-smoke i{position:absolute;bottom:0;left:-4px;width:9px;height:17px;border:2px solid #9e9287;border-left-color:transparent;border-bottom-color:transparent;border-radius:50%;opacity:0;filter:blur(1.1px);transform-origin:bottom center;animation:gift-smoke-rise 2.5s var(--puff-delay) ease-out both}
.gift-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:3}
.gift-confetti i{position:absolute;top:-18px;width:7px;height:12px;border-radius:1px;opacity:0;animation:gift-confetti-fall 3.3s var(--fall-delay) cubic-bezier(.22,.6,.4,1) both}
.gift-confetti i.rounded{border-radius:50%;height:7px}
.is-blown .gift-flame{opacity:0;animation:none;transition:opacity .16s ease-out}
@keyframes gift-smoke-rise{0%{opacity:0;transform:translate(0,0) scale(.45)}15%{opacity:.6}60%{opacity:.26}100%{opacity:0;transform:translate(var(--puff-drift),-72px) rotate(-22deg) scale(2.1)}}
@keyframes gift-confetti-fall{0%{opacity:0;transform:translate(0,-10px) rotate(0)}8%{opacity:.9}78%{opacity:.8}100%{opacity:0;transform:translate(var(--fall-drift),620px) rotate(var(--fall-turn))}}
@media(max-width:700px){@keyframes gift-confetti-fall{0%{opacity:0;transform:translate(0,-10px) rotate(0)}8%{opacity:.9}78%{opacity:.8}100%{opacity:0;transform:translate(var(--fall-drift),410px) rotate(var(--fall-turn))}}}
@media(prefers-reduced-motion:reduce){.gift-smoke,.gift-confetti{display:none}.is-blown .gift-flame{transition:none}}

.gift-mic-area{margin:16px auto 0;max-width:380px;padding-top:14px;border-top:1px dotted #80503933}
.gift-view .gift-mic-button{min-height:46px;max-width:100%;padding:10px 15px;border:1px solid #b6a58b;border-radius:14px;background:#fffaf0;color:var(--gift-ink);font:inherit;font-size:15px;line-height:1.5;cursor:pointer}
.gift-view .gift-mic-button[aria-pressed=true]{background:#e2eee5;border-color:#9bb6a4}
.gift-mic-note{font-family:'Microsoft YaHei',sans-serif;font-size:11px;line-height:1.8;color:#806d5c;margin:10px 0}
.gift-mic-status{font-size:14px;line-height:1.8;margin:8px 0;overflow-wrap:anywhere}.gift-mic-status:empty{display:none}
.gift-mic-meter{display:block;width:100%;height:16px;accent-color:#9abfa9}
