:root{font-family:-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic","Noto Sans CJK KR",sans-serif;font-synthesis:none;color:#303c35;--accent:#397b63;--accent-soft:#edf5eb;--ink:#303c35;--muted:#748075;--canvas:#fbfaf5;--line:#e8ece4;--card:#fff;--warm:#f4db97;line-height:1.55;background:#eeefe9;color-scheme:light}
*{box-sizing:border-box}body{margin:0}button,input,textarea{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:.55}button:focus-visible,a:focus-visible,.scene-surface:focus-visible{outline:3px solid #cf9344;outline-offset:4px}button{touch-action:manipulation}svg{vertical-align:middle}a{color:inherit}h1,h2,h3,p{margin:0}h1{font-size:29px;font-weight:800;line-height:1.36;letter-spacing:-1.25px}h2{font-size:23px;line-height:1.4;letter-spacing:-.7px}h3{font-size:17px;letter-spacing:-.3px}.muted{color:var(--muted)}.small{font-size:12px;line-height:1.7}.label{font-size:11px;font-weight:750;letter-spacing:1.8px}.caps{letter-spacing:2.7px;font-size:11px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
body[data-app="fortune"]{--accent:#8262ac;--accent-soft:#f4eef9;--ink:#43394f;--muted:#847b8d;--canvas:#fcfafe;--line:#ede7f2;color:var(--ink);background:#eee9f1}
.demo-layout{display:grid;grid-template-columns:350px 430px;gap:100px;align-items:center;justify-content:center;min-height:100vh;padding:42px 24px 30px}.editorial{position:sticky;top:80px;align-self:center}.editorial .eyebrow{font-size:11px;letter-spacing:3px;color:var(--accent);font-weight:800;margin-bottom:28px}.editorial h1{font-size:47px;letter-spacing:-2.5px;line-height:1.24;margin-bottom:22px}.editorial .lede{color:#687365;font-size:16px;line-height:1.9;max-width:295px}.editorial hr{border:0;border-top:1px solid #d9dfd4;margin:30px 0;width:295px}.editorial .meta{display:flex;gap:10px;flex-wrap:wrap;max-width:300px}.editorial .meta span{font-size:12px;border:1px solid #d5ddcf;border-radius:100px;padding:7px 13px;background:#f5f6ef}.editorial .build-note{font-size:12px;line-height:1.9;color:var(--muted);margin-top:32px;max-width:295px}.editorial .series{font-family:Georgia,serif;font-size:96px;line-height:1;color:#cddacb;position:absolute;right:-5px;top:-49px;opacity:.55;z-index:-1}
[data-app="fortune"] .editorial .lede{color:#83758b}[data-app="fortune"] .editorial .meta span{background:#f9f5fc;border-color:#ddcfe8}[data-app="fortune"] .editorial .series{color:#d8c9e3}
.device{width:430px;min-height:840px;background:var(--canvas);border-radius:38px;overflow:hidden;box-shadow:0 24px 90px #37473816,0 0 0 8px #ffffffb3;border:1px solid #dce4d5;position:relative}.device-frame-note{font-size:10px;text-align:center;background:#fffef9;color:#899285;padding:7px 0;letter-spacing:.4px;border-bottom:1px solid var(--line)}[data-app="fortune"] .device{border-color:#e1d9e9}[data-app="fortune"] .device-frame-note{background:#fff;color:#948a9d}#app{min-height:808px;display:flex;flex-direction:column}.app-header{display:flex;justify-content:space-between;align-items:center;height:63px;padding:0 23px;flex-shrink:0}.brandline{display:flex;align-items:center;gap:9px;font-size:15px;letter-spacing:-.5px}.brand-dot{width:31px;height:31px;border-radius:11px;background:var(--accent-soft);display:grid;place-items:center;color:var(--accent)}.prototype-tag{font-size:10px;border:1px solid var(--line);padding:2px 7px;border-radius:6px;color:var(--muted)}.icon-button{border:0;background:transparent;color:var(--ink);width:40px;height:44px;display:inline-grid;place-items:center;border-radius:12px;flex-shrink:0}.main{padding:13px 23px 23px;flex:1}.introline{display:flex;justify-content:space-between;align-items:center;margin:0 0 9px}.date-chip{background:#eaf2e5;color:var(--accent);font-size:11px;font-weight:700;padding:4px 10px;border-radius:7px}.tiny-dots{color:#bfcbb7;letter-spacing:3px;font-size:14px}.subtitle{color:var(--muted);font-size:13px;line-height:1.75;margin-top:9px}.hero-card{border-radius:27px;background:linear-gradient(140deg,#eef4e4,#e5efdc);margin-top:22px;position:relative;overflow:hidden;height:250px;border:1px solid #e3ecd9;display:flex;align-items:center;justify-content:center}.hero-card:before,.hero-card:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;background:#ffffff50;right:-40px;top:-40px}.hero-card:after{left:-90px;top:100px;width:230px;height:230px;background:#ffffff38}.mascot-svg{width:100%;height:100%;display:block}.hero-card .mascot{position:relative;z-index:1;width:247px;height:242px;transform:translate(9px,4px)}.hero-badge{position:absolute;top:20px;left:18px;font-size:10px;background:#fffffff0;border-radius:20px;padding:5px 10px;color:#75866d;z-index:2}.hero-note{position:absolute;bottom:22px;left:15px;background:white;border-radius:12px 12px 12px 3px;font-size:11px;padding:8px 10px;z-index:3;box-shadow:0 3px 12px #00000005;color:#6f7f61}.floating-leaf{position:absolute;right:16px;bottom:21px;color:#a5b890;transform:rotate(20deg)}.button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:13px 18px;border:0;border-radius:16px;font-size:15px;line-height:1.5;font-weight:750;width:100%;text-decoration:none;color:var(--ink);transition:transform .12s,background .12s}.button:active:not(:disabled){transform:scale(.982)}.primary{background:var(--accent);color:white;box-shadow:0 4px 0 #1b513b0e}.secondary{background:var(--accent-soft);color:var(--accent);border:1px solid var(--line)}.outline{background:transparent;border:1px solid var(--line)}.text-button{background:none;color:var(--muted);box-shadow:none}.cta-stack{margin-top:18px}.cta-caption{text-align:center;font-size:11px;color:var(--muted);margin-top:8px}.rule-row{display:flex;justify-content:space-between;margin:20px 0 24px;gap:8px}.rule-item{display:flex;gap:5px;align-items:center;color:var(--muted);font-size:11px;white-space:nowrap}.section-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.section-label small{font-size:11px;color:var(--muted)}.case-list{display:flex;gap:9px;overflow:hidden}.case-mini{flex:1;border-radius:14px;background:white;border:1px solid var(--line);padding:5px;min-width:0}.case-mini svg{width:100%;height:auto;display:block;border-radius:10px}.case-mini .mini-title{font-size:10px;padding:7px 3px 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bottom-nav{display:flex;justify-content:space-around;align-items:center;min-height:77px;border-top:1px solid var(--line);background:#ffffffef;padding:9px 13px max(13px,env(safe-area-inset-bottom));margin-top:auto}.nav-item{border:0;background:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:#a2aaa0;min-width:80px;min-height:51px;border-radius:14px;font-size:10px}.nav-item.active{color:var(--accent)}.nav-item.active svg{stroke-width:2.2}.content-disclosure{color:var(--muted);font-size:10px;line-height:1.6;text-align:center;margin:19px 0 0}.panel{padding:19px;border:1px solid var(--line);border-radius:19px;background:white}.panel+.panel{margin-top:12px}.panel p{font-size:13px;line-height:1.8}.spaced{margin-top:20px}.stack{display:grid;gap:12px}.between{display:flex;justify-content:space-between;align-items:center;gap:12px}.topline{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px}.eyebrow-chip{font-size:11px;color:var(--accent);background:var(--accent-soft);padding:5px 9px;border-radius:7px;font-weight:700}.clock-label{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:5px;font-variant-numeric:tabular-nums}.progress{display:flex;gap:5px;margin:16px 0 17px}.progress span{height:5px;flex:1;background:#e2e8df;border-radius:10px}.progress span.done{background:var(--accent)}.progress span.current{background:#adc4a5}.game-title{font-size:22px;line-height:1.35}.scene-surface{position:relative;width:100%;aspect-ratio:360/220;overflow:hidden;border-radius:18px;border:1px solid #dddfd3;touch-action:manipulation;cursor:crosshair;background:#f5ecd9}.scene-surface>svg{display:block;width:100%;height:100%}.scene-gap{height:12px;position:relative;display:flex;justify-content:center;align-items:center;gap:3px}.scene-gap i{height:3px;width:3px;border-radius:50%;background:#c9d2c0}.scene-corner{position:absolute;top:9px;left:11px;background:#ffffffdb;color:#6b7565;border-radius:5px;font-size:9px;padding:2px 6px;pointer-events:none}.marker{position:absolute;border:3px solid var(--accent);border-radius:50%;width:13.4%;aspect-ratio:1;transform:translate(-50%,-50%);pointer-events:none;box-shadow:0 0 0 2px #ffffffd4}.marker:after{content:'✓';position:absolute;right:-5px;bottom:-3px;font-size:11px;line-height:18px;width:18px;height:18px;background:var(--accent);color:white;border-radius:50%;text-align:center;font-weight:700}.hint-marker{border:3px dashed #d79b41;box-shadow:0 0 0 4px #f3d48a66;animation:pulse 1.2s infinite}.hint-marker:after{display:none}.keyboard-cursor{position:absolute;width:15px;height:15px;border:1px dashed #5c6174;transform:translate(-50%,-50%);pointer-events:none}.keyboard-cursor:before,.keyboard-cursor:after{content:'';position:absolute;background:#5c6174}.keyboard-cursor:before{width:19px;height:1px;left:-3px;top:6px}.keyboard-cursor:after{width:1px;height:19px;left:6px;top:-3px}.clue-progress{display:flex;justify-content:space-between;align-items:center;margin:14px 1px}.clue-dots{display:flex;gap:6px}.clue-dot{width:28px;height:28px;border-radius:50%;background:#ecefe4;display:grid;place-items:center;font-size:12px;color:#b9c1ad}.clue-dot.found{background:var(--accent);color:white}.hint-row{display:flex;gap:10px}.hint-row .button{min-height:49px;font-size:12px;border-radius:13px;padding:11px}.hint-row .button:first-child{width:42%}.hint-row .button:last-child{width:58%}.game-tip{font-size:10px;line-height:1.6;text-align:center;color:var(--muted);margin-top:11px}.reaction{display:flex;gap:10px;align-items:center;background:white;border:1px solid var(--line);padding:10px 12px;border-radius:14px;margin:13px 0}.reaction .mini-mascot{width:40px;height:40px;flex-shrink:0}.reaction p{font-size:12px}.result-hero{text-align:center;padding-top:7px}.result-hero .mascot{width:170px;height:166px;margin:7px auto}.result-hero h1{font-size:27px}.result-number{font-size:52px;line-height:1.2;letter-spacing:-2px;font-weight:800;color:var(--accent);margin:13px 0 5px}.result-number span{font-size:20px;color:var(--muted);font-weight:400;letter-spacing:-.7px}.metrics{display:flex;justify-content:space-around;text-align:center;margin:18px 0}.metrics strong{display:block;font-size:19px}.metrics small{color:var(--muted);font-size:11px}.answer-list{padding:0;list-style:none;display:grid;gap:11px;margin:12px 0}.answer-list li{font-size:12px;display:flex;gap:8px;align-items:flex-start}.answer-list .num{display:inline-grid;place-items:center;min-width:20px;height:20px;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-size:10px}.history-row{padding:16px;border:1px solid var(--line);border-radius:15px;background:#fff;margin-top:10px;display:flex;align-items:center;justify-content:space-between;gap:13px;width:100%;color:var(--ink);text-align:left}.history-row h3{font-size:14px}.history-row small{font-size:11px;color:var(--muted)}.history-badge{width:41px;height:41px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);border-radius:14px;flex-shrink:0}.history-info{flex:1}.empty{text-align:center;padding:22px 10px}.empty .mascot{width:152px;height:152px;margin:0 auto 12px}.empty p{font-size:13px;color:var(--muted);line-height:1.9}.settings-row{padding:16px 0;border-bottom:1px solid var(--line)}.settings-row h3{font-size:14px;margin-bottom:4px}.settings-row p{font-size:12px;color:var(--muted);line-height:1.8}.danger{color:#a55858}.inline-link{background:none;border:0;padding:10px 0;color:var(--accent);font-size:13px;font-weight:700}.storage-note{background:#fff1d8;padding:10px 14px;font-size:12px;border-radius:12px;margin:9px 0;color:#8b6629}
/* Fortune: a light-mode service shell, with character art confined to content. */
.fortune-hero{background:linear-gradient(135deg,#f0e9f8 0%,#eee2f8 52%,#fff0e8 100%);border-color:#ebe0f2;height:257px;margin-top:21px}.fortune-hero .mascot{width:252px;height:252px;transform:translate(14px,5px)}.fortune-hero .hero-badge{color:#997eac}.fortune-hero .hero-note{color:#958196;left:auto;right:16px;bottom:20px;border-radius:12px 12px 3px 12px}.date-chip.purple{background:#f1e9f7}.topic-tabs{display:flex;gap:7px;margin:17px 0 0;flex-wrap:wrap}.topic-tab{flex:1;min-width:0;border:1px solid var(--line);background:white;color:#9987a4;border-radius:13px;padding:10px 3px;font-size:11px;display:flex;align-items:center;justify-content:center;gap:4px;min-height:44px}.topic-tab.active{background:var(--accent-soft);border-color:#cdb9df;color:var(--accent);font-weight:750}.fortune-heading{padding-top:4px}.little-letter{display:flex;gap:13px;background:#fff;border:1px solid var(--line);padding:16px;border-radius:16px;align-items:center;margin-top:19px}.letter-icon{width:41px;height:41px;background:#f8f1df;border-radius:13px;display:grid;place-items:center;color:#b2945d;flex-shrink:0}.little-letter h3{font-size:13px;margin-bottom:3px}.little-letter p{font-size:11px;color:var(--muted)}.disclaimer-box{font-size:11px;line-height:1.8;color:#92879b;background:#f7f3fa;padding:13px 15px;border-radius:13px;margin-top:16px}.draw-title{text-align:center;margin-top:20px}.draw-title .small{display:block;margin-top:10px}.draw-mascot{width:150px;height:150px;margin:15px auto}.card-fan{display:flex;justify-content:center;gap:10px;position:relative;margin:22px 0 30px;padding-top:12px}.fortune-back{width:103px;aspect-ratio:.63;border-radius:15px;border:1px solid #bda3d3;background:linear-gradient(140deg,#a88bc6,#8b6dad);box-shadow:0 9px 14px #69557c18;padding:9px;transition:transform .15s;color:#f7e4aa;position:relative}.fortune-back:first-child{transform:rotate(-9deg) translateY(8px)}.fortune-back:last-child{transform:rotate(9deg) translateY(8px)}.fortune-back:hover{transform:translateY(-10px)}.fortune-back .card-inner{border:1px solid #d3bbe89c;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;width:100%;height:100%}.fortune-back .moon-symbol{font:50px/1 Georgia,serif}.fortune-back .star-corner{position:absolute;top:15px;left:15px;font-size:12px}.fortune-back small{letter-spacing:2px;font-size:7px;font-family:Georgia,serif}.card-result{background:linear-gradient(155deg,#f5edfc,#fff7ee);border:1px solid #e4d8ed;border-radius:25px;text-align:center;padding:21px 19px 20px;position:relative;overflow:hidden;margin-top:13px}.card-result .mascot{width:166px;height:166px;margin:-1px auto}.card-result .label{color:#a58ab6;font-size:9px}.card-result h2{font-size:25px;margin:4px 0 9px}.card-result .card-quote{font-size:13px;line-height:1.85;color:#87738d;max-width:260px;margin:auto}.card-serial{position:absolute;top:19px;right:20px;font-size:9px;color:#b29dc0}.reading{margin-top:18px}.reading p{font-size:13px;color:#7c7086;line-height:1.9;margin-top:9px}.luck-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:17px}.luck-item{border-radius:16px;padding:13px;background:#fff;border:1px solid var(--line);display:flex;gap:9px;align-items:center}.luck-item .luck-icon{color:#b89bc7}.luck-item small{display:block;font-size:10px;color:var(--muted)}.luck-item b{font-size:12px;font-weight:700}.action-task{width:100%;display:flex;align-items:center;gap:11px;text-align:left;border:1px solid #e5d7ec;border-radius:15px;padding:14px;background:#fff;margin-top:16px;color:var(--ink)}.action-task .check-square{height:24px;width:24px;display:grid;place-items:center;border:1px solid #cfbbdf;border-radius:8px;flex-shrink:0}.action-task.complete{background:#f2edf7}.action-task.complete .check-square{background:var(--accent);color:#fff;border-color:var(--accent)}.action-task small{font-size:10px;color:var(--muted);display:block}.action-task b{font-size:12px}.letter-reveal{margin-top:14px;background:#fffaf0;border:1px solid #eadfc4;border-radius:16px;padding:18px;font-size:13px;line-height:1.9;color:#857356}.letter-reveal h3{font-size:14px;margin-bottom:9px}.ad-caption{font-size:10px;line-height:1.7;color:var(--muted);margin-top:7px;text-align:center}.subtle-heading{font-size:12px;color:var(--muted);margin:20px 0 5px}
/* Shared feedback and overlays. */
#toast{position:fixed;bottom:max(30px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%,15px);max-width:calc(100vw - 40px);width:max-content;padding:13px 20px;border-radius:15px;background:#354137ee;color:white;font-size:12px;box-shadow:0 8px 30px #0002;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:1000}#toast.visible{opacity:1;transform:translate(-50%,0)}.app-dialog{max-width:375px;width:calc(100vw - 35px);border:1px solid var(--line);border-radius:24px;padding:27px 23px 22px;color:var(--ink);background:var(--canvas);box-shadow:0 18px 70px #0002}.app-dialog::backdrop{background:#28263455;backdrop-filter:blur(4px)}.app-dialog h2{font-size:21px;padding-right:28px;margin-bottom:18px}.dialog-x{position:absolute;top:13px;right:12px}.dialog-copy p{font-size:13px;color:var(--muted);line-height:1.9;margin:12px 0}.dialog-actions{display:grid;gap:8px;margin-top:19px}.dialog-actions .button{font-size:13px;min-height:46px}.preview-label{letter-spacing:.2px;background:#f2e8c9;color:#8e7940;padding:5px 8px;border-radius:6px;display:inline-block}.share-copy{width:100%;min-height:120px;border-radius:12px;border:1px solid var(--line);padding:12px;background:#fff;font-size:12px;line-height:1.8;color:var(--ink)}@keyframes pulse{50%{opacity:.6}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
@media(max-width:950px){.demo-layout{gap:48px;grid-template-columns:280px 410px}.device{width:410px}.editorial h1{font-size:40px}.editorial .lede{font-size:14px}.editorial .series{font-size:80px}.editorial{max-width:280px}.editorial hr{width:260px}}
@media(max-width:760px){.demo-layout{display:block;padding:0;min-height:100vh}.editorial{display:none}.device{width:100%;max-width:480px;margin:auto;border:0;border-radius:0;box-shadow:none;min-height:100dvh}.device-frame-note{padding-top:max(7px,env(safe-area-inset-top))}#app{min-height:calc(100dvh - 31px)}.main{padding:12px 22px 22px}.app-header{padding:0 22px}.hero-card{height:245px}.hero-card .mascot{height:236px;width:242px}.hero-card.fortune-hero .mascot{height:243px;width:245px}.hero-card.fortune-hero{height:248px}.bottom-nav{position:relative}.scene-surface{border-radius:16px}}
@media(max-width:360px){h1{font-size:25px}.main{padding:10px 17px 19px}.app-header{padding:0 17px}.hero-card{height:225px}.hero-card .mascot{height:220px;width:220px}.rule-item{font-size:10px}.hero-badge{left:12px;top:14px;font-size:9px}.hero-note{font-size:10px;left:9px}.card-fan{gap:8px}.fortune-back{width:85px}.topic-tab{font-size:10px;gap:3px}.topic-tab svg{width:15px}.game-title{font-size:20px}.brandline{font-size:14px}}
/* Preview uses a floating tab shape. Production still needs the official UX review. */
.bottom-nav{margin-left:16px;margin-right:16px;margin-bottom:max(16px,env(safe-area-inset-bottom));border:1px solid var(--line);border-radius:23px;min-height:66px;padding:6px 10px;box-shadow:0 5px 22px #40375007}.nav-item{min-height:49px}.main{padding-bottom:20px}
/* v0.2: explicit difficulty, paired zoom and character feedback. */
.difficulty-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.difficulty-option{border:1px solid var(--line);border-radius:15px;background:white;text-align:left;padding:13px 14px;color:var(--ink);min-height:71px}.difficulty-option.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.difficulty-option b{font-size:14px;display:block}.difficulty-option span{font-size:10px;color:var(--muted);display:block;margin-top:4px}.live-reaction{padding:7px 10px;min-height:76px}.live-reaction .mini-mascot{width:62px;height:62px}.live-reaction p{flex:1;font-size:11px;line-height:1.6}.zoom-toggle{background:var(--accent-soft);border:1px solid var(--line);padding:8px;border-radius:10px;color:var(--accent);font-size:10px;min-height:44px}.scene-scroll{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;border-radius:16px}.scene-scroll.zoomed .scene-surface{width:160%;max-width:none;touch-action:pan-x pan-y}.game-main .clue-dot{width:23px;height:23px;font-size:11px}.game-main .clue-dots{gap:4px}.over-target{color:#a16637}.daily-update{display:flex;justify-content:space-between;gap:8px;font-size:10px;line-height:1.6;padding:10px 12px;margin-top:14px;border-radius:11px;background:var(--accent-soft);color:var(--accent)}.daily-update b{font-weight:700}.daily-badge{font-size:10px;color:var(--muted);text-align:center;margin-top:12px}.today-update-button{font-size:12px;min-height:44px}.daily-summary p{font-size:12px;color:var(--muted);line-height:1.8}
/* Approved 3.5s draw: 1s slow spin, 1.5s acceleration, contraction, one local pulse, 420ms result. */
.card-fan{perspective:900px;isolation:isolate}.fortune-back{transform-style:preserve-3d;--rest:0deg;--center-x:0px}.fortune-back:first-child{--rest:-9deg}.fortune-back:last-child{--rest:9deg}
.fortune-back.is-opening,.fortune-back.is-opening:disabled{z-index:3;opacity:1;animation:fortune-card-open 3.08s linear both;will-change:transform}
.card-fan.is-revealing .fortune-back:not(.is-opening){animation:fortune-neighbor-yield .4s ease-out both}
.card-fan::before,.card-fan::after{content:"";position:absolute;left:50%;top:50%;width:230px;height:230px;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%);z-index:4}
.card-fan.is-revealing::before{background:radial-gradient(circle,#fff 0%,#eedcffab 24%,#d6b8ed40 48%,transparent 70%);animation:fortune-light-gather 2.8s ease-in both}
.card-fan.is-impact::after{background:radial-gradient(circle,#fff 0%,#fff 18%,#f5eaffbd 38%,transparent 70%);animation:fortune-white-pulse .28s ease-out both}
.reveal-sparkles{position:absolute;width:0;height:0;z-index:5;pointer-events:none}.reveal-sparkle{position:absolute;left:-7px;top:-7px;font-size:16px;color:#ecd18b;opacity:0}.is-impact .reveal-sparkle{animation:fortune-spark .27s ease-out var(--delay) both}
.card-result.is-revealing{animation:fortune-result-reveal .42s cubic-bezier(.2,.7,.2,1) both;transform-origin:50% 22%;will-change:transform,opacity}
@keyframes fortune-card-open{
0%{transform:translate(0,8px) rotate(var(--rest)) rotateY(0deg) scale(1)}
10%{transform:translate(var(--center-x),-10px) rotate(0) rotateY(90deg) scale(1.05)}
32.4675%{transform:translate(var(--center-x),-16px) rotateY(360deg) scale(1.08);animation-timing-function:cubic-bezier(.6,0,1,1)}
81.1688%{transform:translate(var(--center-x),-16px) rotateY(2520deg) scale(1.12)}
90.9091%{transform:translate(var(--center-x),-12px) rotateY(2880deg) scale(.82)}
96%{opacity:1;transform:translate(var(--center-x),-20px) rotateY(2880deg) scale(1.15)}
100%{opacity:0;transform:translate(var(--center-x),-20px) rotateY(2880deg) scale(1.2)}}
@keyframes fortune-neighbor-yield{to{opacity:.22;transform:rotate(var(--rest)) translateY(14px) scale(.94)}}
@keyframes fortune-light-gather{0%,35%{opacity:0;transform:translate(-50%,-50%) scale(1.2)}70%{opacity:.35}89%{opacity:.8;transform:translate(-50%,-50%) scale(.72)}100%{opacity:1;transform:translate(-50%,-50%) scale(.28)}}
@keyframes fortune-white-pulse{0%{opacity:0;transform:translate(-50%,-50%) scale(.25)}22%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.35)}}
@keyframes fortune-spark{0%{opacity:0;transform:translate(0,0) scale(.35)}20%{opacity:1}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.7) rotate(35deg)}}
@keyframes fortune-result-reveal{0%{opacity:0;transform:translateY(24px) scale(.94) rotate(-1.5deg)}64%{opacity:1;transform:translateY(-4px) scale(1.025) rotate(.45deg)}100%{opacity:1;transform:translateY(0) scale(1) rotate(0)}}
@media (prefers-reduced-motion:reduce){.fortune-back.is-opening,.card-fan.is-revealing .fortune-back,.card-fan::before,.card-fan::after,.reveal-sparkle,.card-result.is-revealing{animation:none!important;will-change:auto}.reveal-sparkles{display:none}}
/* Real completed-action feedback and local image card preview. */
.lumi-memory{margin:16px 0;padding:16px;background:#fff;border:1px solid #e5dced;border-radius:18px;line-height:1.65}.lumi-memory h3{margin:0 0 6px;font-size:16px}.lumi-memory p{margin:0 0 6px;font-size:14px}.lumi-memory small{display:block;color:#756d7b;font-size:12px}.lumi-memory .inline-link{min-height:44px;display:inline-flex;align-items:center}.share-card-image{display:block;width:100%;max-width:300px;height:auto;margin:0 auto 12px;border-radius:12px}.app-dialog:has(.share-card-image){max-height:90dvh;overflow:auto}

/* One centered white burst: dense core, radial depth layers, local 2px recoil. */
.draw-burst{position:fixed;inset:0;z-index:20;overflow:hidden;pointer-events:none;}
.burst-core,.burst-dot{position:absolute;left:var(--origin-x);top:var(--origin-y);pointer-events:none}
.burst-core{width:100px;height:100px;margin:-50px;border-radius:50%;background:radial-gradient(circle,#fff 0%,#fff 14%,#fffefaeb 25%,#bba4db70 48%,transparent 72%);animation:fortune-burst-core .27s ease-out both}
.burst-dot{width:var(--size);height:var(--size);margin:calc(var(--size)*-.5);border-radius:50%;background:#fff;box-shadow:0 0 5px 1px #b299d9a6,0 0 12px #ffffffc9;opacity:0;animation:fortune-burst-dot .75s cubic-bezier(.05,.62,.2,1) var(--delay) both;will-change:transform,opacity}
.burst-back{z-index:1}.burst-middle{z-index:2}.burst-front{z-index:3;background:radial-gradient(circle,#fff 0%,#fffffff2 30%,#ffffffa6 55%,transparent 74%);box-shadow:0 0 14px 3px #d2c3eb88,0 0 20px #fff}
.card-fan.is-impact{animation:fortune-local-recoil .2s ease-out both}
@keyframes fortune-burst-core{0%{opacity:1;transform:scale(.35)}35%{opacity:1;transform:scale(1.8)}100%{opacity:0;transform:scale(2.4)}}
@keyframes fortune-burst-dot{0%{opacity:1;transform:translate(0,0) scale(.5)}16%{opacity:1}38%{opacity:.9;transform:translate(calc(var(--dx)*.75),calc(var(--dy)*.75)) scale(var(--scale))}65%{opacity:.2}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(var(--scale))}}
@keyframes fortune-local-recoil{0%,100%{transform:translate(0,0)}18%{transform:translate(-2px,1px)}40%{transform:translate(2px,-1px)}65%{transform:translate(-1px,0)}}
@media(prefers-reduced-motion:reduce){.draw-burst{display:none}.burst-dot,.burst-core,.card-fan.is-impact{animation:none!important;will-change:auto}}

.result-reading h3:not(:first-child){margin-top:20px}.result-reading .small{font-size:12px}
