:root{color:#1f1518;font-family:Microsoft YaHei,PingFang SC,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;font-weight:400}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:1100px;overflow-x:hidden;background-color:#1a1215;background-image:url(/page-bg.jpg);background-size:cover;background-position:center;background-repeat:no-repeat;background-attachment:fixed}button,input{font:inherit}.card{--card-w: 280px;--card-h: 370px;--border: #2f6fed;width:var(--card-w);height:var(--card-h);perspective:1100px}.card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;border-radius:18px}.face{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:10px solid var(--border);box-sizing:border-box;overflow:hidden;background:#fff}.back{display:grid;place-items:center;background:#2a1a20}.back-pattern{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#2a1a20;background-image:url(/card-back.jpg);background-size:cover;background-position:center;background-repeat:no-repeat}.front{transform:rotateY(180deg);display:flex;flex-direction:column}.front-media{flex:1;min-height:0;background:#f4f0ea}.front-media img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.front-placeholder{flex:1;display:grid;place-items:center;color:#9a6574;font-size:1rem}.card.is-loading .card-inner{animation:pulse-wait 1.2s ease-in-out infinite}@keyframes pulse-wait{0%,to{filter:brightness(1)}50%{filter:brightness(.92)}}.card.is-face{perspective:none}.card.is-face .card-inner{transform:none!important;transform-style:flat;animation:none!important}.card.is-face .back{display:none}.card.is-face .front{transform:none;backface-visibility:visible}.card-delete{position:absolute;top:.4rem;right:.4rem;width:1.75rem;height:1.75rem;border:none;border-radius:50%;background:#140a0e8c;color:#fff;font-size:1.05rem;line-height:1;cursor:pointer;opacity:0;transition:opacity .2s ease;z-index:2}.card.is-face:hover .card-delete,.card.is-face:focus-within .card-delete{opacity:1}.card.is-clickable{cursor:zoom-in}.card.is-clickable:hover{filter:brightness(1.04)}.board{position:relative;width:100%;flex:1;min-height:680px;margin:0;overflow:hidden}.board-slot{position:absolute;left:50%;top:36px;z-index:var(--z, 1);transform:translate3d(calc(-50% + var(--x)),var(--y),0) rotate(var(--rotate));transform-origin:center bottom;transition:transform .35s ease;will-change:transform}.board-slot.is-active{filter:drop-shadow(0 14px 18px rgba(80,20,40,.16))}.board-slot.is-reserved{opacity:.35;filter:grayscale(.2)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:2rem;background:#12080cb8;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:lightbox-in .22s ease}@keyframes lightbox-in{0%{opacity:0}to{opacity:1}}.lightbox-card{width:min(580px,calc(100vw - 4rem));aspect-ratio:280 / 370;border-radius:28px;border:14px solid #2f6fed;overflow:hidden;background:#fff;box-shadow:0 28px 80px #0006;animation:lightbox-pop .28s cubic-bezier(.2,.8,.2,1)}@keyframes lightbox-pop{0%{transform:scale(.86);opacity:.4}to{transform:scale(1);opacity:1}}.lightbox-card img{width:100%;height:100%;object-fit:cover;display:block}.lightbox-close{position:absolute;top:1.25rem;right:1.5rem;width:2.75rem;height:2.75rem;border:none;border-radius:50%;background:#ffffffeb;color:#1f1518;font-size:1.8rem;line-height:1;cursor:pointer}.lightbox-close:hover{background:#fff}.composer{display:grid;gap:.6rem;width:100%}.composer-row{display:grid;grid-template-columns:1fr auto auto;gap:.7rem}.composer-row input{width:100%;border:2px solid rgba(194,30,86,.28);border-radius:16px;padding:1rem 1.15rem;font:inherit;font-size:1.05rem;color:#1f1518;background:#ffffffeb;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.composer-row input:focus{border-color:#c21e56;box-shadow:0 0 0 4px #c21e561f}.composer-row button{border:none;border-radius:16px;padding:0 1.35rem;font:inherit;font-size:1rem;font-weight:700;cursor:pointer;white-space:nowrap}.composer-row button:disabled{opacity:.55;cursor:not-allowed}.mic{background:#fff;color:#c21e56;border:2px solid #c21e56!important;min-width:6rem}.mic.is-on{background:#c21e56;color:#fff;animation:mic-glow 1.1s ease-in-out infinite}@keyframes mic-glow{0%,to{box-shadow:0 0 #c21e5659}50%{box-shadow:0 0 0 8px #c21e5600}}.generate{background:#c21e56;color:#fff;min-width:7.25rem}.generate:not(:disabled):hover{background:#a51848}.speech-result{display:flex;align-items:center;gap:.75rem;margin:0;padding:.7rem .85rem .7rem .7rem;border-radius:18px;background:linear-gradient(90deg,#c21e561a,#fff0 42%),#fff8faf5;border:1px solid rgba(194,30,86,.22);box-shadow:0 10px 28px #300c1829;animation:speech-in .32s ease}.speech-result-label{flex:none;padding:.28rem .7rem;border-radius:999px;background:#c21e56;color:#fff;font-size:.78rem;font-weight:700;letter-spacing:.06em}.speech-result.is-pending .speech-result-text{font-weight:600;color:#7a3044}.speech-pulse{flex:none;width:.55rem;height:.55rem;border-radius:50%;background:#c21e56;animation:speech-pulse 1s ease-in-out infinite}.speech-result-text{min-width:0;font-size:1.15rem;font-weight:700;line-height:1.4;color:#1f1518}@keyframes speech-pulse{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1)}}@keyframes speech-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.composer-hint{margin:0;font-size:.88rem;color:#7a5560}.composer-hint.error{color:#b42318}.reveal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;display:grid;place-items:center;pointer-events:none}.reveal-overlay.is-loading,.reveal-overlay.is-showcase{background:#0c080a8c;pointer-events:auto}.reveal-overlay.is-fly{background:transparent}.reveal-stage{display:grid;justify-items:center;gap:1.25rem}.reveal-summon{margin:0;display:flex;align-items:center;gap:.7rem;animation:summon-pop .45s cubic-bezier(.2,.9,.3,1.25)}.reveal-summon-text{font-size:2.1rem;font-weight:700;letter-spacing:.12em;background:linear-gradient(100deg,#f3c56b,#ffe9b8,#fff8e0,#ffe9b8,#f3c56b);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 16px rgba(255,205,95,.55)) drop-shadow(0 2px 6px rgba(0,0,0,.35));animation:summon-shimmer 1.8s linear infinite}.reveal-summon-sparkle{color:#ffd76a;font-size:1.5rem;text-shadow:0 0 12px rgba(255,205,95,.8);animation:summon-twinkle 1.2s ease-in-out infinite}.reveal-summon-sparkle--late{animation-delay:.6s}@keyframes summon-pop{0%{transform:scale(.7) translateY(12px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}@keyframes summon-shimmer{0%{background-position:220% 0}to{background-position:-220% 0}}@keyframes summon-twinkle{0%,to{opacity:.25;transform:scale(.8) rotate(0)}50%{opacity:1;transform:scale(1.2) rotate(20deg)}}.reveal-spin-wrap{perspective:1200px;width:220px;height:290px}.reveal-spin-card{width:100%;height:100%;border-radius:18px;border:10px solid #2f6fed;overflow:hidden;box-shadow:0 24px 60px #0006;animation:reveal-spin 1.1s linear infinite;transform-style:preserve-3d}.reveal-spin-face{width:100%;height:100%;background:#2a1a20 url(/card-back.jpg) center / cover no-repeat}@keyframes reveal-spin{0%{transform:rotateY(0)}to{transform:rotateY(360deg)}}.reveal-hero{width:min(420px,calc(100vw - 4rem));aspect-ratio:280 / 370;border-radius:26px;border:12px solid #2f6fed;overflow:hidden;background:#fff;box-shadow:0 28px 80px #00000073;animation:reveal-pop .35s cubic-bezier(.2,.8,.2,1)}@keyframes reveal-pop{0%{transform:scale(.88);opacity:.3}to{transform:scale(1);opacity:1}}.reveal-hero img,.reveal-flyer img{width:100%;height:100%;object-fit:cover;display:block}.reveal-flyer{position:fixed;z-index:950;border-radius:18px;border:10px solid #2f6fed;overflow:hidden;background:#fff;box-shadow:0 18px 40px #00000059;transition:left .55s cubic-bezier(.4,.1,.2,1),top .55s cubic-bezier(.4,.1,.2,1),width .55s cubic-bezier(.4,.1,.2,1),height .55s cubic-bezier(.4,.1,.2,1),transform .55s cubic-bezier(.4,.1,.2,1);transform-origin:center center;pointer-events:none}.app{width:100%;min-height:100vh;margin:0;padding:1.25rem 1.5rem 1.75rem;display:grid;grid-template-rows:1fr auto;gap:1.25rem;box-sizing:border-box}.table{background:#fff8fa2e;border:1px solid rgba(255,255,255,.28);border-radius:28px;padding:.75rem 1.25rem 1.25rem;box-shadow:0 18px 40px #140a102e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);min-height:0;display:flex;flex-direction:column;overflow:hidden}.table-head{display:flex;align-items:center;justify-content:flex-end;margin-bottom:.35rem;padding:0 .75rem}.clear{border:none;background:transparent;color:#fff5f8eb;font:inherit;font-size:.95rem;cursor:pointer;text-decoration:underline;text-underline-offset:3px;text-shadow:0 1px 4px rgba(0,0,0,.35)}.clear:disabled{opacity:.4;cursor:not-allowed}.muted{color:#8a6570;font-size:.95rem;padding:0 .75rem}.dock{display:grid;gap:.75rem;width:min(1100px,100%);justify-self:center}.banner{margin:0;padding:.85rem 1rem;border-radius:12px;font-size:.95rem}.banner.error{background:#ffe8e4;color:#9b1c1c}
