/* 页面切换：旧画面暗场淡出，新画面由暗转亮。 */
::view-transition-old(root){animation:vt-out .32s ease-in both}
::view-transition-new(root){animation:vt-in .45s ease-out .12s both}
@keyframes vt-out{to{opacity:0;filter:brightness(.35)}}
@keyframes vt-in{from{opacity:0;filter:brightness(.35)}}

/* 首页漂浮光尘。 */
.home-motes{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.home-motes span{position:absolute;left:var(--x);top:var(--y);width:var(--s);height:var(--s);border-radius:50%;background:#ffe9b8;box-shadow:0 0 6px 2px #ffd98a80;opacity:0;animation:mote-drift var(--d) ease-in-out var(--delay) infinite}
@keyframes mote-drift{0%{opacity:0;transform:translate(0,0)}25%{opacity:.85}75%{opacity:.5}100%{opacity:0;transform:translate(var(--dx),-60px)}}

/* 提问后占卜师思考。 */
.dialog-thinking{margin:0;display:flex;align-items:center;animation:thinking-breathe 1.8s ease-in-out infinite}
@keyframes thinking-breathe{50%{opacity:.55}}

/* 牌阵介绍标题缓缓浮现。 */
.reference-table:not(.selection-table):not(.table-placing) .table-heading{animation:heading-rise .9s ease-out both}
@keyframes heading-rise{from{opacity:0;transform:translateY(-.6em)}}

/* 发牌前洗牌：一叠牌左右交错两次后淡出，随后牌扇展开。 */
.selection-shuffle{position:absolute;left:50%;top:55%;width:6.4%;height:19%;translate:-50% -50%;z-index:3;pointer-events:none;animation:shuffle-fade .2s ease-in .95s forwards}
.selection-table:not(.is-dealing) .selection-shuffle{display:none}
.selection-shuffle img{position:absolute;inset:0;width:100%;height:100%;border:1px solid #c8af85;border-radius:4%;box-shadow:0 2px 6px #000a;translate:0 calc(var(--i) * -1.2%);animation:shuffle-riffle .48s ease-in-out calc(var(--i) * 20ms) 2}
.selection-shuffle img:nth-child(odd){--dir:-1}
.selection-shuffle img:nth-child(even){--dir:1}
@keyframes shuffle-riffle{45%{transform:translateX(calc(var(--dir) * 80%)) rotate(calc(var(--dir) * 9deg))}}
@keyframes shuffle-fade{to{opacity:0}}

/* 悬停选牌：牌略微放大并发光。 */
.selection-pick{transition:filter .2s,box-shadow .2s,scale .18s ease-out,translate .32s cubic-bezier(.2,.8,.3,1.2)}
.selection-pick:not(:disabled):hover,.selection-pick:not(:disabled):focus-visible{scale:1.12;z-index:3;box-shadow:0 0 1.1em #ffe2ab99}

/* 等待翻开的下一张牌呼吸发光。 */
.ref-detail-card[data-action="reveal"]:not(:disabled){animation:card-beckon 2s ease-in-out infinite}
@keyframes card-beckon{50%{box-shadow:0 0 1.6em .3em #ffe2ab99;filter:brightness(1.15)}}

/* 解读生成中的水晶球微光。 */
.reading-orb{width:2.4em;height:2.4em;margin:.4em auto .8em;border-radius:50%;background:radial-gradient(circle at 38% 35%,#fff6e0 0,#d8b9ff 32%,#7a55c055 58%,transparent 70%);animation:orb-breathe 2.4s ease-in-out infinite}
@keyframes orb-breathe{50%{transform:scale(1.18);filter:brightness(1.3) blur(.5px)}}

/* 收藏时升起的星。 */
.favorite-burst{position:fixed;z-index:30;pointer-events:none;color:#ffe2ab;font-size:1.6rem;text-shadow:0 0 10px #ffd98a;translate:-50% -50%;animation:burst-up .9s ease-out forwards}
@keyframes burst-up{from{opacity:1;transform:translateY(0) scale(.6)}to{opacity:0;transform:translateY(-2.5em) scale(1.3)}}

/* 左下角声音控制。 */
#sound-control{position:fixed;left:.8rem;bottom:.8rem;z-index:25}
.sound-toggle{width:38px;height:38px;border-radius:50%;border:1px solid #b79d71aa;background:#10182bd9;color:var(--gold);padding:8px;display:grid;place-items:center}
.sound-toggle:hover{background:#3b3651}
.sound-toggle svg{width:100%;height:100%}
.sound-panel{position:absolute;left:0;bottom:46px;width:210px;padding:.8rem 1rem;background:#151a2ef2;border:1px solid #b79d71aa;border-radius:10px;box-shadow:0 10px 30px #0009;display:grid;gap:.55rem;font-size:.875rem}
.sound-row{display:flex;align-items:center;justify-content:space-between;gap:.8rem}
.sound-row input[type=range]{width:120px;accent-color:#cfb083}
.sound-row input[type=checkbox]{order:-1;margin:0 .5rem 0 0;accent-color:#cfb083}
.sound-row:has(input[type=checkbox]){justify-content:flex-start}

/* 结果页单卡引导：下一张未看的牌闪烁，看过的牌保持常态。 */
.ref-detail-card.is-next{z-index:2;animation:card-guide 1.6s ease-in-out infinite}
@keyframes card-guide{0%,100%{box-shadow:0 0 0 0 #ffe2ab00;filter:brightness(1)}50%{box-shadow:0 0 2em .45em #ffe2abd0;filter:brightness(1.28)}}
.ref-result:has(.is-next) .ref-focus-hint{color:#f3d9a6;font-size:.74em}

/* 神谕：问题固定且无牌位，只保留日期、牌名与寄语。 */
.ref-result-oracle .ref-reading-heading,.ref-result-oracle .ref-result-question{display:none}
.ref-result-copy .reading-block p{line-height:1.85}

/* 整体解读：小标题 + 段落；行动建议：编号条目。 */
.ref-result-copy .reading-title{margin:.2em 0 .75em;padding-bottom:.35em;border-bottom:1px solid #c2ab7740;font-size:1.02em;color:#ebd1a5;letter-spacing:.12em}
.ref-result-copy .reading-section + .reading-title{margin-top:1.5em}
.reading-section{margin-bottom:1.1em}
.ref-result-copy .reading-section h4{display:flex;align-items:center;gap:.5em;margin:0 0 .35em;font-family:var(--serif);font-size:.95em;font-weight:400;color:#dcbc82;letter-spacing:.08em}
.reading-section h4::before{content:'';flex:none;width:.4em;height:.4em;rotate:45deg;background:#dcbc82}
.ref-result-copy .reading-section p{margin:0;line-height:1.9;color:#e8e2ec}
.reading-steps{list-style:none;margin:0 0 .6em;padding:0;counter-reset:step}
.reading-steps li{counter-increment:step;position:relative;margin-bottom:.85em;padding-left:2em;line-height:1.85;color:#e8e2ec}
.reading-steps li::before{content:counter(step);position:absolute;left:0;top:.25em;width:1.4em;height:1.4em;display:grid;place-items:center;border:1px solid #dcbc82;border-radius:50%;color:#f0d9ab;font-size:.8em;line-height:1}
.followup-item .followup-question{color:#f3ddb7}

/* 神谕寄语。 */
.oracle-message{font-family:var(--serif);font-size:.98em;line-height:1.8;color:#f1e3c8;letter-spacing:.02em}

@media(prefers-reduced-motion:reduce){
  .home-motes,.selection-shuffle{display:none}
  .dialog-thinking,.reading-orb,.reference-table .table-heading,.favorite-burst,.ref-detail-card.is-next{animation:none}
  .ref-detail-card.is-next{box-shadow:0 0 1.4em .3em #ffe2abd0}
  .selection-pick{transition:none}
}

/* 结果操作与追问面板改为不透明，避免背后的解读文字透出干扰阅读。 */
.ref-result-menu .ref-result-tools{background:#1d2034;opacity:1;box-shadow:0 1em 3em #05081499}
.followup-item p{margin:0 0 .6em;line-height:1.85}
