html:root,html:root[data-theme=dark]{--bg-primary:#0a0a0b;--bg-surface:#0a0a0b;--text-primary:#e6e2d8;--text-secondary:#8c877e;--accent-gold:#e6e2d8;--border-hairline:rgba(230,226,216,.15);--bg:var(--bg-primary);--paper:var(--bg-primary);--fg:var(--text-primary);--ink:var(--text-primary);--muted:var(--text-secondary);--accent:var(--text-primary);--line:var(--border-hairline);--glass:transparent;--panel:transparent;--white:transparent;--soft:transparent}
html:root[data-theme=light]{--bg-primary:#f2efe9;--bg-surface:#f2efe9;--text-primary:#141413;--text-secondary:#6e6a63;--accent-gold:#141413;--border-hairline:rgba(20,20,19,.12);--bg:var(--bg-primary);--paper:var(--bg-primary);--fg:var(--text-primary);--ink:var(--text-primary);--muted:var(--text-secondary);--accent:var(--text-primary);--line:var(--border-hairline);--glass:transparent;--panel:transparent;--white:transparent;--soft:transparent}
body{--font-chinese:DaybreakSerif,'Songti SC','Noto Serif CJK SC',serif;--font-display:var(--font-cinzel),var(--font-chinese),serif;--font-reading:var(--font-prose),var(--font-chinese),serif;--font-ui:var(--font-reading);background:var(--bg)!important;color:var(--fg);font-family:var(--font-reading)!important;line-height:1.9;font-size:18px}
body *,body *:before,body *:after{border-radius:0!important;box-shadow:none!important;backdrop-filter:none!important;font-family:var(--font-reading)!important}body{overflow-x:clip}h1,.opening h1,.tarot-workbench h1,.intro h1,.reading-copy h1{font-family:var(--font-display)!important;font-size:clamp(40px,6vw,72px)!important;font-weight:400!important;letter-spacing:.14em;line-height:1.2!important;text-align:center;margin:0 0 64px;overflow-wrap:anywhere}h2,h3{font-family:var(--font-display)!important;font-weight:400;line-height:1.5}p{line-height:1.9;letter-spacing:.04em}em{font-style:normal;color:inherit}.kicker,.epigraph,.eyebrow,.laurel-divider,.brand-orbit,.mini-seal,.scene-label,.card-caption,.under-button,.orbit,.card-shadow,.oracle-transition{display:none!important}
.shared-header{max-width:1100px;width:calc(100% - 48px);background:transparent!important;min-height:90px;padding:20px 0;border-bottom:1px solid var(--line);gap:24px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between}.shared-brand{font-family:var(--font-display)!important;font-size:18px;font-weight:400;letter-spacing:.14em}.shared-brand span{font-size:14px}.shared-header nav{gap:24px;margin-left:auto}.shared-header nav a{font-size:14px;letter-spacing:.18em;color:var(--muted);padding:6px 0}.shared-header [aria-current=page]{color:var(--fg);border-bottom:1px solid var(--fg)}.shared-header label{font-size:13px;display:flex;align-items:center;gap:8px}.shared-header select{background:transparent;border:0;border-bottom:1px solid var(--line);padding:4px 0;color:var(--fg);font-size:13px}.shared-footer{max-width:720px;margin:80px auto 0;padding:24px;text-align:center;font-size:12px;letter-spacing:.25em;color:var(--muted);border-top:1px solid var(--line)}
.page-shell,body #app>main{max-width:720px!important;width:100%;margin:0 auto;padding:8vh 24px!important;min-width:0}main{animation:stone-enter .15s ease-out}.minimal-calendar{text-align:center}.date-line{display:flex;justify-content:center;align-items:center;gap:24px}.date-line input{font-family:var(--font-display)!important;font-size:17px;width:175px;text-align:center;border:0;color:var(--fg);background:none}.date-line input::-webkit-calendar-picker-indicator{opacity:.4}.date-line button{font-size:13px;color:var(--muted)}.today-reset{font-size:14px;margin-top:12px}.daily-inscription{padding:64px 0;text-align:center}.minimal-moon{width:220px;height:220px;display:block;margin:0 auto;color:var(--fg)}.calendar-caption{font-size:14px;color:var(--muted);margin:24px 0 72px}.daily-inscription h1{font-size:clamp(56px,8vw,88px)!important;margin:0 0 48px}.daily-actions{max-width:44ch;margin:auto;font-size:18px;line-height:1.9}.daily-actions p{margin:8px 0}.calendar-season{font-size:14px;color:var(--muted);margin:48px 0 0}.export-date{font-size:12px;letter-spacing:.2em;color:var(--muted);margin:40px 0 0}.calendar-links{display:flex;justify-content:center;gap:40px;border-top:1px solid var(--line);padding-top:28px}
button,.primary,.secondary,.ritual-link,.outline-button,.quiet-button,.text{background:none!important;background-image:none!important;color:var(--fg)!important;border:0!important;border-bottom:1px solid var(--line)!important;outline-offset:5px;padding:8px 0;font-size:15px;letter-spacing:.12em;min-height:40px;transition:color .15s;transform:none!important}button:hover,a:hover{border-color:var(--fg)!important;color:var(--fg)}button:disabled{opacity:.35}.primary:before,.primary:after,.face-down:after,.glass:before,.glass:after{display:none!important}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:1px solid var(--fg)!important}.calendar-links a{font-size:15px;letter-spacing:.12em;padding:8px 0;border-bottom:1px solid var(--line)}input,textarea,select{background:transparent;color:var(--fg);border:0;border-bottom:1px solid var(--line);font-size:17px;line-height:1.8;padding:10px 0}input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}input[type=checkbox],input[type=radio]{accent-color:var(--fg)}select option{background:var(--bg);color:var(--fg)}.glass,.oracle-frame,.consultation-form,.consultation-reading,.drawn-card,.settings-panel,.history-item,.action-box{background:none!important;border:0;outline:0;padding-inline:0}.status-message{font-size:13px;letter-spacing:0;color:var(--muted);text-align:center;min-height:0}.status-message:empty{display:none}
.minimal-ritual,.minimal-result{text-align:center}.ritual-date{font-size:14px;color:var(--muted);margin:0 0 48px}.minimal-ritual .card-scene{position:relative;min-height:0;display:block;margin:0 0 40px;padding:0}.tarot,.card-scene .tarot{display:block;width:240px!important;max-width:100%;height:auto!important;aspect-ratio:1/1.732;margin:0 auto;padding:0;border:1px solid var(--line)!important;outline:0;background:var(--bg)!important;overflow:hidden;position:relative;transform:none!important;filter:none!important}.tarot svg{width:100%;height:100%;display:block}.minimal-result .tarot{margin-bottom:64px}.minimal-result .tarot.is-reversed svg{transform:rotate(180deg)}.minimal-result h1{font-size:clamp(38px,6vw,64px)!important;margin-bottom:24px}.orientation{font-size:14px;color:var(--muted);margin:0 0 48px}.single-action{max-width:44ch;margin:0 auto 64px;font-size:20px}.single-review{display:flex;gap:20px;max-width:540px;margin:0 auto 48px;align-items:center}.single-review input{flex:1;min-width:0}.single-review button{flex:none}.result-tools{display:flex;justify-content:center;flex-wrap:wrap;gap:12px 28px;font-size:13px;color:var(--muted)}.result-tools label{display:flex;gap:10px;align-items:center}.result-tools button,.result-tools select{font-size:13px}.page-heading{text-align:center;margin-bottom:64px}.page-heading h1{margin:0}.history-grid{display:block}.history-item{width:100%;display:grid;grid-template-columns:90px 1fr;gap:28px;border-bottom:1px solid var(--line)!important;padding:28px 0!important;text-align:left;min-width:0}.history-item>.history-art{width:90px;aspect-ratio:1/1.732;overflow:hidden}.history-art svg{width:100%;height:100%}.history-item>span{display:none}.history-item h2{font-size:24px;margin:8px 0}.history-item h2 span{font-size:13px;color:var(--muted);margin-left:16px}.history-item p,.history-item small,.review-status{font-size:13px}.history-item p{display:none}.empty{padding:64px 0;text-align:center}.minimal-settings{display:grid;gap:32px}.minimal-settings form{display:grid;gap:12px}.setting-row{display:flex;justify-content:space-between;padding:18px 0!important}.file-label input{font-size:13px;max-width:220px}.theme-setting{display:flex;align-items:center;justify-content:space-between;padding:0}.source-archive{margin-top:40px;border-top:1px solid var(--line);padding-top:24px}.source-archive a{display:block;font-size:15px;color:var(--muted);margin:12px 0}.minimal-loading{min-height:60vh;padding:8vh 24px;color:var(--muted);text-align:center;font-size:15px}
.tarot-workbench>h1{margin-bottom:64px}.consultation-form{padding:0!important}.consultation-form label{font-size:15px}.consultation-form textarea{width:100%;min-height:85px;margin-top:14px;resize:vertical}.spread-links{display:flex;flex-wrap:wrap;gap:8px 24px;margin:36px 0 20px}.spread-links button{font-size:14px;color:var(--muted)!important;letter-spacing:.04em}.spread-links [aria-pressed=true]{color:var(--fg)!important;border-color:var(--fg)!important}.consultation-form>p{display:none}.spread-preview{display:flex;flex-wrap:wrap;gap:10px 22px;font-size:13px;color:var(--muted);margin:24px 0}.spread-preview span{border:0!important;padding:0!important;background:none!important}.reverse-toggle{margin-top:24px}.reverse-toggle input{min-height:0}.consultation-form .ritual-link{display:block;margin:40px auto 0}.deck-section{margin-top:64px}.deck-section h2{font-size:24px}.deck-section p{font-size:14px;color:var(--muted)}.deck-fan{grid-template-columns:repeat(10,minmax(0,1fr));gap:8px}.deck-fan button{padding:4px!important;aspect-ratio:1/1.732;background:transparent!important;border:1px solid var(--line)!important;min-height:0}.deck-fan small{display:none}.drawn-grid{display:block;margin-top:64px}.drawn-card{padding:40px 0!important;text-align:center;border-top:1px solid var(--line)}.drawn-card img{height:280px;max-width:100%;margin:0 auto 24px;object-fit:contain}.drawn-card h3{font-size:28px}.drawn-card p{max-width:44ch;margin:20px auto}.consultation-reading{margin-top:64px;padding:40px 0!important;border-top:1px solid var(--line)}.consultation-reading p,.consultation-reading li{font-size:18px;line-height:1.9;max-width:48ch}.consultation-reading blockquote{font-size:24px;margin:0 0 40px;border:0}.consultation-reading h3{font-size:22px;margin-top:40px}.consultation-reading details{padding:20px 0;border-bottom:1px solid var(--line)}summary{font-size:16px;cursor:pointer}.consult-history{margin-top:80px;border-top:1px solid var(--line);padding-top:32px}.consult-history h2{font-size:24px}.history-entry{padding:20px 0;border:0!important;border-bottom:1px solid var(--line)!important}.history-entry span{font-size:13px;color:var(--muted)}.history-entry strong{font-weight:400}.catalog-filters{grid-template-columns:1fr 1fr;gap:20px}.catalog-filters label:first-child{grid-column:1/-1}.catalog-filters label{font-size:14px}.catalog-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px 24px;margin-top:48px}.catalog-card{padding:0 0 24px!important;border-bottom:1px solid var(--line)!important}.catalog-card img{height:220px}.catalog-card h3{font-size:24px}.catalog-card p{font-size:18px}.catalog-card span{display:none}.card-detail-dialog{background:var(--bg);color:var(--fg);border:1px solid var(--line);outline:0;padding:40px;max-width:640px;width:calc(100% - 32px)}.card-detail-dialog::backdrop{background:#0009;backdrop-filter:none}.card-detail-dialog h2{font-size:32px}.card-detail-dialog p{font-size:17px;line-height:1.9}.topic-chips{gap:20px}.topic-chips button{font-size:14px;padding:6px 0;border-radius:0}.topic-chips [aria-pressed=true]{border-bottom-color:var(--fg)!important}.source-status{color:var(--muted)}
@keyframes stone-enter{from{opacity:0}to{opacity:1}}@media(max-width:650px){.shared-header{width:calc(100% - 32px);gap:12px;min-height:100px}.shared-header nav{order:3;width:100%;margin:0;justify-content:space-between;gap:4px}.shared-header nav a{font-size:13px;letter-spacing:.06em}.shared-header label{margin-left:auto}.page-shell,body #app>main{padding:6vh 20px!important}.date-line{gap:16px}.daily-inscription{padding-top:48px}.calendar-caption{margin-bottom:8px}.daily-inscription h1{font-size:64px!important}.minimal-moon{width:190px;height:190px}.single-action{font-size:18px}.minimal-result h1{font-size:38px!important;letter-spacing:.08em}.tarot{width:210px!important}.spread-links{gap:8px 20px}.deck-fan{grid-template-columns:repeat(8,minmax(0,1fr));gap:6px}.card-detail-dialog{padding:28px 22px}.catalog-card h3{font-size:21px}.catalog-card p{font-size:16px}.catalog-card img{height:185px}.shared-footer{margin-top:32px}.result-tools{gap:14px 24px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.daily-reading{max-width:46ch;margin:48px auto;text-align:left}.daily-reading h2{font-size:18px;margin:32px 0 12px}.daily-reading p{font-size:18px;line-height:1.9}.evening-question{max-width:46ch;margin:32px auto 16px;font-size:16px;color:var(--muted)}
.daily-reading .plain-intro,.card-detail-dialog .plain-intro,.consultation-reading .plain-intro{font-size:16px;line-height:1.85;color:var(--muted)}.review-block{max-width:540px;margin:32px auto 48px;text-align:left}.review-block .evening-question{display:block;max-width:none;margin:0 0 16px;line-height:1.8}.review-block .single-review{margin:0}.history-item p.history-note{display:block;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.orientation-switch{margin:24px 0 8px}.life-aspects{margin:0}.life-aspects div{display:grid;grid-template-columns:6em 1fr;gap:16px;padding:12px 0;border-top:1px solid var(--line)}.life-aspects dt{color:var(--muted);font-size:14px}.life-aspects dd{margin:0}@media(max-width:560px){.life-aspects div{grid-template-columns:1fr;gap:4px}.single-review{flex-wrap:wrap}}
.card-detail-dialog h3{margin:36px 0 10px;font-size:13px;letter-spacing:.12em;color:var(--muted);font-weight:500}.card-detail-dialog .reading-tags{margin:8px 0 0;font-size:14px;letter-spacing:.06em}.card-detail-dialog .life-aspects dd{font-size:16px;line-height:1.85}
.personal-fortune{max-width:46ch;margin:72px auto 0;padding-top:40px;border-top:1px solid var(--line);text-align:left;display:grid;gap:20px}.personal-fortune h2{font-size:clamp(26px,4vw,34px);margin:0;text-wrap:balance}.fortune-kicker{margin:0;font-size:13px;letter-spacing:.14em;color:var(--muted)}.fortune-summary{margin:0;font-size:17px;line-height:1.9}.fortune-note{margin:0;font-size:15px;line-height:1.8;color:var(--muted);padding-left:14px;border-left:1px solid var(--line)}.fortune-areas{margin:0;display:grid}.fortune-areas div{display:grid;grid-template-columns:7.5em 1fr;gap:16px;padding:14px 0;border-top:1px solid var(--line)}.fortune-areas dt{font-size:14px;color:var(--muted);display:flex;flex-direction:column;gap:8px;align-items:flex-start}.fortune-areas dd{margin:0;font-size:16px;line-height:1.85;min-width:0}.fortune-level{font-size:12px;letter-spacing:.1em;padding:1px 10px;border:1px solid var(--fg);color:var(--fg)}.fortune-level.level-good{background:var(--fg);color:var(--bg)}.fortune-level.level-care{border-style:dashed}.fortune-dos{display:grid;gap:10px}.fortune-dos p{margin:0;font-size:16px;line-height:1.8;display:grid;grid-template-columns:3em 1fr;gap:12px}.fortune-dos span{font-size:13px;color:var(--muted);padding-top:3px}.fortune-meta,.fortune-basis{margin:0;font-size:13px;color:var(--muted);letter-spacing:.04em}.fortune-chart summary{cursor:pointer;font-size:14px;color:var(--muted)}.fortune-chart .pillars{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:16px 0 8px;text-align:center}.fortune-chart .pillars div{display:grid;gap:4px;padding:10px 0;border:1px solid var(--line)}.fortune-chart .pillars small{font-size:11px;color:var(--muted)}.fortune-chart .pillars strong{font-size:20px;font-weight:500;letter-spacing:.1em}.fortune-chart p{margin:6px 0 0;font-size:14px;color:var(--muted)}.fortune-invite{display:block;width:fit-content;margin:56px auto 0;font-size:15px;border-bottom:1px solid var(--line);padding-bottom:4px}.birth-note{margin:0;font-size:13px;color:var(--muted);line-height:1.7}.birth-form .birth-clear{justify-self:start}@media(max-width:560px){.fortune-areas div{grid-template-columns:1fr;gap:8px}.fortune-areas dt{flex-direction:row;align-items:center;gap:12px}}
.moon-stage{position:relative;width:fit-content;margin:0 auto}.moon-stage .minimal-moon{margin:0}.real-moon{position:absolute;left:18.18%;top:18.18%;width:63.64%;height:63.64%;border-radius:50%;opacity:0;transition:opacity .6s ease}.real-moon.shown{opacity:1}.moon-stage.textured .moon-phase{opacity:0;transition:opacity .6s ease}@media(prefers-reduced-motion:reduce){.real-moon,.moon-stage.textured .moon-phase{transition:none}}
@view-transition{navigation:auto}.shared-header{view-transition-name:site-header}::view-transition-old(root){animation:vt-out .16s ease-in both}::view-transition-new(root){animation:vt-in .34s cubic-bezier(.2,.7,.2,1) both}@keyframes vt-out{to{opacity:0}}@keyframes vt-in{from{opacity:0;transform:translateY(8px)}}a,button,select,input,.catalog-card,.history-item,.deck-fan button{transition:opacity .2s ease,color .2s ease,border-color .2s ease,background-color .2s ease,transform .18s cubic-bezier(.2,.7,.2,1)}button:active:not(:disabled),.catalog-card:active,.history-item:active,.calendar-links a:active,.fortune-invite:active{transform:scale(.97)}@media(hover:hover){.catalog-card:hover,.deck-fan button:hover:not(:disabled){transform:translateY(-3px)}.shared-header nav a:hover,.calendar-links a:hover{opacity:.7}}.card-detail-dialog[open]{animation:dialog-in .3s cubic-bezier(.2,.7,.2,1)}.card-detail-dialog[open]::backdrop{animation:fade-in .3s ease}@keyframes dialog-in{from{opacity:0;transform:translateY(12px) scale(.98)}}@keyframes fade-in{from{opacity:0}}.fade-swap{animation:fade-in .32s ease}.daily-inscription{animation:ink-in .45s cubic-bezier(.2,.7,.2,1)}@keyframes ink-in{from{opacity:0;transform:translateY(6px)}}.personal-fortune{animation:ink-in .5s .08s cubic-bezier(.2,.7,.2,1) both}.minimal-ritual.drawing .tarot{animation:draw-lift .8s cubic-bezier(.4,0,.2,1) both}.minimal-ritual.drawing .primary{opacity:.4}@keyframes draw-lift{0%{transform:none}45%{transform:translateY(-14px) scale(1.03)}100%{transform:translateY(-6px) rotateY(88deg);opacity:.5}}.minimal-result .tarot.revealed.flip{animation:card-turn .6s cubic-bezier(.2,.7,.2,1) both}@keyframes card-turn{from{transform:rotateY(-88deg);opacity:.4}}.minimal-result.just-drawn .daily-reading,.minimal-result.just-drawn .review-block{animation:ink-in .5s .25s cubic-bezier(.2,.7,.2,1) both}.drawn-card{animation:ink-in .4s cubic-bezier(.2,.7,.2,1) both}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}
.tarot img.rws,.history-art img.rws{display:block;width:100%;height:100%;object-fit:cover}.minimal-result .tarot.is-reversed img.rws{transform:rotate(180deg)}.tarot.revealed{background:var(--bg)}.card-detail-dialog>img{width:150px;height:257px;object-fit:cover;border:1px solid var(--line)}.catalog-card img,.drawn-card img{object-fit:contain}@media(max-width:560px){.card-detail-dialog>img{width:112px;height:192px}}
main,#app main{animation:none}.card-detail-dialog.closing{animation:dialog-out .18s ease-in forwards}.card-detail-dialog.closing::backdrop{animation:fade-out .18s ease-in forwards}@keyframes dialog-out{to{opacity:0;transform:translateY(8px) scale(.985)}}@keyframes fade-out{to{opacity:0}}::view-transition-old(root),::view-transition-new(root){mix-blend-mode:normal}
.month-view{max-width:640px;margin:0 auto 56px;display:grid;gap:28px}.month-nav{display:flex;align-items:center;justify-content:space-between;gap:16px}.month-nav h2{margin:0;font-size:22px;letter-spacing:.08em;font-variant-numeric:tabular-nums}.month-step{background:none;border:1px solid var(--line);color:var(--fg);width:40px;height:40px;font-size:20px;line-height:1;cursor:pointer}.month-step:disabled{opacity:.25;cursor:default}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.month-grid .wk{text-align:center;font-size:12px;color:var(--muted);padding-bottom:4px}.month-grid .day{position:relative;aspect-ratio:1/1.45;border:1px solid var(--line);display:flex;align-items:flex-end;justify-content:flex-end;padding:3px;min-width:0;overflow:hidden;background:none;color:var(--muted);font:inherit}.month-grid .day.blank{border-color:transparent}.month-grid .day.today{border-color:var(--fg)}.month-grid .day.has-card{cursor:pointer;color:var(--fg)}.month-grid .day-art{position:absolute;inset:0;display:block}.month-grid .day-art img{width:100%;height:100%;object-fit:cover;display:block;opacity:.88}.month-grid .day-art.is-reversed img{transform:rotate(180deg)}.month-grid .day-num{position:relative;font-size:11px;font-variant-numeric:tabular-nums;line-height:1;padding:2px 3px;background:var(--bg)}.month-grid .day.reviewed::after{content:"";position:absolute;top:4px;left:4px;width:6px;height:6px;border-radius:50%;background:var(--fg);box-shadow:0 0 0 2px var(--bg)}@media(hover:hover){.month-grid .day.has-card:hover img{opacity:1}}.month-summary{display:grid;gap:10px}.month-summary h3,.month-list-title{margin:12px 0 0;font-size:13px;letter-spacing:.14em;color:var(--muted);font-weight:500}.month-summary p{margin:0;font-size:16px;line-height:1.85}.month-summary blockquote{margin:0;padding:10px 0 10px 14px;border-left:1px solid var(--line);font-size:15px;line-height:1.8;display:grid;gap:2px}.month-summary blockquote small{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.month-list-title{max-width:640px;margin:0 auto 8px}@media(max-width:560px){.month-grid{gap:3px}.month-grid .day-num{font-size:10px}}
.legal-page{max-width:46ch;margin:0 auto;display:grid;gap:28px;text-align:left}.legal-page h1{text-align:center}.legal-page .legal-date{margin:-12px 0 0;text-align:center;font-size:13px;color:var(--muted)}.legal-page section{display:grid;gap:8px}.legal-page h2{margin:0;font-size:18px;letter-spacing:.06em}.legal-page p{margin:0;font-size:16px;line-height:1.9}.shared-footer{display:flex;flex-wrap:wrap;gap:12px 24px;justify-content:center;align-items:center}.shared-footer nav{display:flex;gap:18px}.shared-footer nav a{font-size:12px;color:var(--muted);border-bottom:1px solid transparent}.shared-footer nav a:hover{border-bottom-color:var(--line)}
.tap-ink{position:fixed;z-index:9999;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:radial-gradient(circle,var(--fg) 0,var(--fg) 35%,transparent 72%);opacity:0;pointer-events:none;will-change:transform,opacity;animation:tap-ink .42s cubic-bezier(.22,.61,.36,1) forwards}@keyframes tap-ink{0%{opacity:.16;transform:scale(.5)}100%{opacity:0;transform:scale(3.4)}}.shared-header nav a{position:relative}.shared-header nav a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:center;transition:transform .28s cubic-bezier(.2,.7,.2,1)}.shared-header nav a[aria-current=page]::after{transform:scaleX(1)}@media(hover:hover){.shared-header nav a:hover::after{transform:scaleX(.6)}}input,select,textarea{transition:border-color .2s ease,background-color .2s ease,box-shadow .2s ease}input:focus,select:focus,textarea:focus{border-color:var(--fg)!important}#toast.show{animation:toast-in .32s cubic-bezier(.2,.7,.2,1)}@keyframes toast-in{from{opacity:0;transform:translate(-50%,10px)}}.history-item,.month-grid .day.has-card{transition:transform .18s cubic-bezier(.2,.7,.2,1),opacity .2s ease}.month-grid .day.has-card:active{transform:scale(.94)}@media(prefers-reduced-motion:reduce){.tap-ink{display:none}.shared-header nav a::after{transition:none}}
.shared-header nav a[aria-current=page]{border-bottom-color:transparent!important}.shared-header nav a::after{bottom:-1px}
.birth-inline{max-width:46ch;margin:72px auto 0;padding-top:40px;border-top:1px solid var(--line);display:grid;gap:18px;text-align:left;animation:ink-in .5s .08s cubic-bezier(.2,.7,.2,1) both}.birth-inline h2{margin:0;font-size:clamp(22px,3.4vw,28px);text-wrap:balance}.birth-inline-fields{display:grid;grid-template-columns:1fr 1fr;gap:14px}.birth-inline-fields label{display:grid;gap:6px;font-size:13px;color:var(--muted);min-width:0}.birth-inline-fields input{width:100%;min-width:0;font:inherit;font-size:16px;color:var(--fg);background:none;border:1px solid var(--line);padding:10px 12px}.fortune-basis a{color:var(--muted);border-bottom:1px solid var(--line);margin-left:6px}@media(max-width:560px){.birth-inline-fields{grid-template-columns:1fr}}
.install-hint{position:fixed;z-index:60;left:max(16px,env(safe-area-inset-left,0px));right:max(16px,env(safe-area-inset-right,0px));bottom:calc(16px + env(safe-area-inset-bottom,0px));max-width:520px;margin:0 auto;display:flex;gap:16px;align-items:center;justify-content:space-between;padding:16px 18px;background:var(--bg);color:var(--fg);border:1px solid var(--line);box-shadow:0 12px 40px rgba(0,0,0,.35);animation:hint-up .42s cubic-bezier(.2,.7,.2,1) both}.install-hint.leaving{animation:hint-down .22s ease-in forwards}.install-hint p{margin:0;font-size:14px;line-height:1.7;color:var(--muted);min-width:0}.install-hint strong{display:block;color:var(--fg);font-weight:500;font-size:15px;margin-bottom:2px}.install-hint div{display:flex;gap:10px;flex:none}.install-hint button{font:inherit;font-size:14px;padding:8px 14px;background:none;color:var(--fg);border:1px solid var(--line);cursor:pointer;white-space:nowrap}.install-hint .install-go{background:var(--fg);color:var(--bg);border-color:var(--fg)}@keyframes hint-up{from{opacity:0;transform:translateY(16px)}}@keyframes hint-down{to{opacity:0;transform:translateY(16px)}}@media(max-width:480px){.install-hint{flex-direction:column;align-items:stretch}.install-hint div{justify-content:flex-end}}
.particle-layer{position:absolute;pointer-events:none;z-index:40}.card-detail-dialog .particle-layer{z-index:0}.card-detail-dialog>img{position:relative;z-index:1}.consult-lead{max-width:46ch;margin:-24px auto 48px;text-align:center;color:var(--muted);font-size:16px;line-height:1.8}.consult-form{max-width:640px;margin:0 auto;display:grid;gap:28px;text-align:left}.consult-question{display:grid;gap:10px}.consult-question span,.spread-choice legend{font-size:13px;letter-spacing:.14em;color:var(--muted)}.consult-question textarea{width:100%;min-height:96px;resize:vertical;font:inherit;font-size:17px;line-height:1.8;color:var(--fg);background:none;border:1px solid var(--line);padding:14px 16px}.q-examples{display:flex;flex-wrap:wrap;gap:8px;margin-top:-14px}.q-examples button{font:inherit;font-size:13px;color:var(--muted);background:none;border:1px solid var(--line);padding:6px 12px;cursor:pointer;text-align:left}.q-examples button:hover:not(:disabled){color:var(--fg);border-color:var(--fg)}.q-tips{margin-top:-12px}.q-tips summary{cursor:pointer;font-size:13px;color:var(--muted)}.q-tips ul{margin:10px 0 0;padding-left:18px;display:grid;gap:4px;font-size:14px;line-height:1.8;color:var(--muted)}.spread-choice{border:0;margin:0;padding:0;display:grid;gap:8px;min-width:0}.spread-choice legend{padding:0;margin-bottom:10px}.spread-choice button{position:relative;display:grid;gap:4px;text-align:left;font:inherit;color:var(--muted);background:none;border:1px solid var(--line);padding:14px 16px;cursor:pointer}.spread-choice button strong{font-size:16px;font-weight:400;color:var(--fg)}.spread-choice button span{font-size:13px;line-height:1.6}.spread-choice button em{position:absolute;top:14px;right:16px;font-style:normal;font-size:11px;letter-spacing:.08em;color:var(--muted)}.spread-choice button[aria-pressed=true]{border-color:var(--fg);color:var(--fg)}.spread-choice:disabled button:not([aria-pressed=true]){opacity:.35}.spread-positions{margin:0;padding:0;list-style:none;display:grid;gap:0;counter-reset:pos}.spread-positions li{counter-increment:pos;display:grid;grid-template-columns:2em 7.5em 1fr;gap:10px;padding:10px 0;border-top:1px solid var(--line);font-size:14px;line-height:1.7}.spread-positions li::before{content:counter(pos);color:var(--muted);font-variant-numeric:tabular-nums}.spread-positions b{font-weight:500;color:var(--fg)}.spread-positions span{color:var(--muted);min-width:0}.spread-source{margin:-12px 0 0;font-size:12px;line-height:1.7;color:var(--muted)}.spread-source a,.waite-source a{color:var(--muted);border-bottom:1px solid var(--line)}.shuffle-button{justify-self:center;margin-top:8px}.deck-section{position:relative;text-align:center}.deck-section h2{font-size:22px}.deck-section>p{color:var(--muted);font-size:14px}.drawn-card .position-meaning{margin:-6px 0 14px;font-size:13px;line-height:1.7;color:var(--muted)}.waite-source{margin:12px 0;text-align:left}.waite-source summary{cursor:pointer;font-size:13px;color:var(--muted);letter-spacing:.08em}.waite-source blockquote{margin:10px 0 6px;padding-left:12px;border-left:1px solid var(--line);font-family:var(--font-prose),Georgia,serif;font-size:15px;line-height:1.7;font-style:italic}.waite-source p{margin:0 0 6px;font-size:14px;line-height:1.8;color:var(--muted)}.consult-history{max-width:640px;margin:56px auto 0}.consult-history summary{cursor:pointer;font-size:14px;color:var(--muted)}.consult-history .history-entry{display:grid;gap:2px;width:100%;text-align:left;font:inherit;background:none;color:var(--fg);border:0;border-top:1px solid var(--line);padding:12px 0;cursor:pointer}.consult-history .history-entry span{font-size:12px;color:var(--muted)}.deep-note{max-width:640px;margin:72px auto 0;padding-top:36px;border-top:1px solid var(--line);display:grid;gap:12px;text-align:left}.deep-note h2{margin:0;font-size:24px}.deep-note p{margin:0;font-size:15px;line-height:1.85;color:var(--muted)}.deep-soon{font-size:14px!important;color:var(--fg)!important}.deep-more{justify-self:start;font-size:14px;border-bottom:1px solid var(--line)}.deep-contact{margin:0;padding:0;list-style:none;display:grid;gap:6px}.deep-contact li{display:flex;gap:12px;font-size:15px}.deep-contact span{color:var(--muted);min-width:4em}.deep-page ol{margin:0;padding-left:20px;display:grid;gap:6px;font-size:16px;line-height:1.85}@media(max-width:560px){.spread-positions li{grid-template-columns:1.6em 1fr}.spread-positions li span{grid-column:2}.spread-choice button em{position:static}}

.tarot-workbench .spread-choice button,.tarot-workbench .q-examples button{border:1px solid var(--line)!important;letter-spacing:.02em;min-height:0;padding:12px 16px}.tarot-workbench .q-examples button{padding:6px 12px;font-size:13px}.tarot-workbench .spread-choice button[aria-pressed=true]{border-color:var(--fg)!important;background:color-mix(in srgb,var(--fg) 6%,transparent)}.tarot-workbench .q-examples button:hover:not(:disabled){border-color:var(--fg)!important}

/* 背景流星：细线头亮尾淡，固定在内容下面；浅色主题更淡。 */
:root{background:radial-gradient(ellipse at 80% 8%,rgba(52,73,109,.12),transparent 42%),var(--bg)}
:root body{background:transparent!important}
.meteor{position:fixed;z-index:-1;width:96px;height:1px;border-radius:1px;transform-origin:0 50%;background:linear-gradient(to left,transparent,var(--fg) 92%);opacity:0;pointer-events:none;will-change:transform,opacity}
.meteor::before{content:'';position:absolute;left:-1px;top:-1px;width:3px;height:3px;border-radius:50%;background:var(--fg);box-shadow:0 0 4px 1px var(--fg)}
:root[data-theme=light] .meteor{filter:opacity(.45)}

/* 联系方式：微信号旁的复制按钮和经营者说明。 */
.deep-contact li{align-items:center}
.copy-contact{font:inherit;font-size:12px!important;letter-spacing:.08em;padding:2px 10px!important;border:1px solid var(--line)!important;border-radius:999px!important;background:transparent!important;color:var(--muted)!important;cursor:pointer;min-height:0!important}
.contact-note{margin:10px 0 0;font-size:13px;line-height:1.8;color:var(--muted)}

/* 星象对应：牌的占星归属、当天日月位置、出处。 */
.calendar-sky{font-size:13px;color:var(--muted);letter-spacing:.06em;margin:0 0 56px}
.astro-block h2{font-size:18px;margin:32px 0 12px}
.astro-label{font-size:17px;margin:0 0 6px}
.astro-title{display:block;font-size:12px;color:var(--muted);letter-spacing:.04em;margin-top:4px;font-family:var(--font-prose),Georgia,serif}
.astro-resonance{color:var(--fg);border-left:1px solid var(--line);padding-left:12px}
.astro-sky{font-size:13px;color:var(--muted)}
.astro-source{font-size:12px;line-height:1.7;margin-top:10px;color:var(--muted)}.astro-source a{color:var(--muted)!important;text-decoration:underline;text-underline-offset:3px}
.astro-tag{font-size:12px;color:var(--muted);letter-spacing:.08em;margin:-4px 0 8px}

/* 十二星座页 */
.zodiac-today{font-size:15px;color:var(--muted);margin:20px 0 8px;line-height:1.9}.zodiac-today a{color:var(--fg)!important;text-decoration:underline;text-underline-offset:4px}
.zodiac-index{display:flex;flex-wrap:wrap;gap:6px 18px;margin:18px 0 8px;font-size:14px;letter-spacing:.08em}.zodiac-index a{color:var(--muted)!important}
.zodiac-sign{padding-top:40px;margin-top:40px;border-top:1px solid var(--line);scroll-margin-top:72px}
.zodiac-sign h2{font-size:26px;margin:0;letter-spacing:.06em}.z-en{font-family:var(--font-prose),Georgia,serif;font-size:15px;color:var(--muted);letter-spacing:.12em;margin-left:12px}
.z-dates{font-size:13px;color:var(--muted);margin:6px 0 16px;letter-spacing:.06em}
.z-plain{font-size:16px;line-height:1.95;margin:0 0 18px}
.z-facts{display:grid;gap:8px;margin:0 0 22px;font-size:14px}.z-facts div{display:flex;gap:14px}.z-facts dt{color:var(--muted);min-width:3.5em;flex:none}.z-facts dd{margin:0;line-height:1.75}
.z-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:18px 14px}
.z-card{margin:0}.z-card img{display:block;width:80px;height:137px;object-fit:cover;border-radius:4px}
.z-card figcaption{display:grid;gap:2px;margin-top:8px;font-size:12px;line-height:1.5}.z-card strong{font-weight:400;font-size:14px}.z-role{color:var(--muted);letter-spacing:.06em}.z-note{color:var(--muted)}
.zodiac-sources{margin-top:56px;padding-top:32px;border-top:1px solid var(--line);font-size:13px;color:var(--muted);line-height:1.9}.zodiac-sources a{color:var(--muted)!important;text-decoration:underline}
/* 两个人的星座 */
.zodiac-pair-link{display:grid;gap:4px;margin:18px 0 6px;padding:16px 18px;border:1px solid var(--line);border-radius:10px;color:var(--fg)!important;text-decoration:none!important}.zodiac-pair-link span:first-child{font-size:17px;letter-spacing:.06em}.zodiac-pair-link .muted{font-size:13px;color:var(--muted)}
.pair-inputs{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:28px 0 8px}
@media (max-width:560px){.pair-inputs{grid-template-columns:1fr}}
.pair-person{border:1px solid var(--line);border-radius:10px;padding:16px 16px 6px}
.pair-label{font-size:13px;letter-spacing:.2em;color:var(--muted);margin:0 0 10px}
.pair-field{display:grid;gap:6px;margin-bottom:14px;font-size:13px;color:var(--muted)}
.pair-field input,.pair-field select{font:inherit;font-size:15px;color:var(--fg);background:transparent;border:0;border-bottom:1px solid var(--line);padding:6px 0;border-radius:0;width:100%}
.pair-field select option{background:var(--bg);color:var(--fg)}
.pair-result{margin-top:36px;padding-top:32px;border-top:1px solid var(--line)}
.pair-result h2{font-size:30px;letter-spacing:.06em;margin:0;text-align:center}.pair-x{color:var(--muted);margin:0 14px;font-size:22px}
.pair-tag{text-align:center;font-size:13px;letter-spacing:.2em;color:#c9ad78;margin:10px 0 18px}
.pair-one{text-align:center;font-size:18px;line-height:1.9;margin:0 0 8px}
.pair-result h3{font-size:15px;color:var(--muted);letter-spacing:.12em;font-weight:400;margin:30px 0 8px}
.pair-result p{line-height:1.9}
.pair-majors{display:flex;justify-content:center;gap:28px}.pair-majors figure{margin:0;text-align:center}.pair-majors img{display:block;width:130px;height:auto;border-radius:6px}.pair-majors figcaption{display:grid;gap:2px;margin-top:10px;font-size:13px;color:var(--muted)}.pair-majors strong{font-weight:400;font-size:16px;color:var(--fg)}
.pair-draw{margin-top:6px}
.pair-spread{display:grid;gap:18px}.pair-spread article{display:flex;gap:16px;align-items:flex-start}.pair-spread img{flex:none;width:80px;height:auto;border-radius:5px}.pair-spread p{margin:4px 0 0;font-size:14px}.pair-spread strong{font-weight:400}
.pair-pos{font-size:12px!important;letter-spacing:.16em;color:var(--muted);margin:0!important}
.text-button{justify-self:start;font:inherit;font-size:13px;color:var(--muted);background:none!important;border:0!important;padding:0!important;text-decoration:underline;text-underline-offset:4px;cursor:pointer}
.pair-actions{margin:32px 0 0;text-align:center}
.pair-note{font-size:12px;color:var(--muted);line-height:1.8!important;margin-top:28px}
.pair-love{font-size:14px;margin:14px 0 0}.pair-love span{color:var(--muted)}

/* 抽牌仪式：静心一句、心情、扇形牌堆、选中的牌、金色流光 */
.ritual-hint{font-size:15px;color:var(--muted);letter-spacing:.06em;margin:-8px 0 18px}
.mood-row{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 auto 26px;max-width:420px}
.mood-chip{font:inherit;font-size:13px!important;letter-spacing:.08em;padding:5px 14px!important;min-height:0!important;border:1px solid var(--line)!important;border-radius:999px!important;background:transparent!important;color:var(--muted)!important;transition:color .2s,border-color .2s,background .2s}
.mood-chip.on{color:var(--fg)!important;border-color:#c9a96a!important;background:rgba(201,169,106,.10)!important}
.ritual-scene{height:215px;margin:0 0 6px!important;overflow:visible}
/* Only the daily ritual uses a zero-size anchor for its absolutely positioned fan cards. */
.ritual-scene .deck-fan{position:absolute;left:50%;bottom:0;width:0;height:0;transition:opacity .5s}
.fan-card{position:absolute;left:-38px;bottom:0;width:76px;height:132px;padding:0!important;min-height:0!important;border:1px solid rgba(201,169,106,.55)!important;border-radius:6px!important;background:var(--bg)!important;overflow:hidden;transform-origin:50% 230%;rotate:calc((var(--i) - 6) * 4deg);transition:translate .45s cubic-bezier(.2,.7,.2,1),rotate .45s cubic-bezier(.2,.7,.2,1),scale .45s,opacity .45s,box-shadow .3s!important;box-shadow:0 8px 24px rgba(0,0,0,.35);cursor:pointer;opacity:0;pointer-events:none}
.fan-card svg{width:100%;height:100%;display:block}
.fan-card::after{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 35%,rgba(240,206,140,.28) 50%,transparent 65%);background-size:250% 100%;animation:sheen-idle 4.5s calc(var(--i) * 230ms) ease-in-out infinite;pointer-events:none}
.fan-card.lift,.fan-card:focus-visible{translate:0 -18px;box-shadow:0 14px 32px rgba(201,169,106,.25)}
.drawing .fan-card{opacity:0;translate:0 40px}
.drawing .fan-card.picked{opacity:1;rotate:0deg;translate:0 -120px;scale:1.25;z-index:2}
.chosen-card{position:absolute!important;left:50%;top:-30px;width:180px!important;margin-left:-90px!important;opacity:0;transform:scale(.6);transition:opacity .5s,transform .7s cubic-bezier(.2,.7,.2,1);pointer-events:none;border-color:rgba(201,169,106,.7)!important}
.chosen-card.shown{opacity:1;transform:scale(1)}
.drawing .chosen-card.shown~.deck-fan,.drawing .fan-card.picked{transition-delay:.15s}
.pick-hint{font-size:14px;color:#c9a96a;letter-spacing:.2em;margin:18px 0 22px}
.drawing .pick-hint,.drawing .ritual-hint,.drawing .mood-row{opacity:.25;transition:opacity .4s}
.minimal-result .tarot.sheen::after{content:'';position:absolute;inset:0;display:block!important;background:linear-gradient(115deg,transparent 30%,rgba(255,236,190,.55) 48%,rgba(255,250,235,.8) 50%,rgba(255,236,190,.55) 52%,transparent 70%);background-size:300% 100%;animation:sheen-pass 1.3s .45s cubic-bezier(.3,.1,.3,1) both;pointer-events:none;mix-blend-mode:screen}
@keyframes fan-in{from{opacity:0;translate:0 30px}}
@keyframes sheen-idle{0%,55%{background-position:120% 0}85%,100%{background-position:-20% 0}}
@keyframes sheen-pass{from{background-position:130% 0}to{background-position:-30% 0}}
@media (prefers-reduced-motion:reduce){.fan-card,.fan-card::after,.minimal-result .tarot.sheen::after{animation:none!important}}
.card-scene .tarot.chosen-card{width:180px!important}
.ritual-scene.lifted .fan-card.picked{opacity:0!important;transition-duration:.35s!important}
/* 抽牌三步：按住洗牌 → 划一下切牌 → 在牌扇上滑动取牌 */
.ritual-scene[data-stage=pick] .fan-card{opacity:1;pointer-events:auto;animation:fan-in .7s calc(var(--i) * 45ms) cubic-bezier(.2,.7,.2,1) both}
.ritual-scene[data-stage=pick] .deck-fan{touch-action:none}
.minimal-ritual:not(.drawing) .ritual-scene[data-stage=pick] .fan-card{transition:translate .2s cubic-bezier(.2,.7,.2,1),box-shadow .2s!important}
.deck-pile{position:absolute;left:50%;bottom:8px;width:200px;height:200px;margin-left:-100px;touch-action:none;cursor:grab;outline:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;transition:opacity .45s,scale .45s}
.deck-pile:active{cursor:grabbing}
.ritual-scene[data-stage=pick] .deck-pile,.drawing .deck-pile{opacity:0;scale:.85;pointer-events:none}
.pile-card{position:absolute;left:50%;top:58%;width:88px;height:152px;margin:-76px 0 0 -44px;border:1px solid rgba(201,169,106,.55);border-radius:6px;background:var(--bg);overflow:hidden;box-shadow:0 8px 24px rgba(0,0,0,.35);translate:calc(var(--j) * -1.5px) calc(var(--j) * -1.5px);transition:translate .35s cubic-bezier(.2,.7,.2,1),rotate .35s}
.pile-card svg{width:100%;height:100%;display:block}
.pile-card:nth-child(n+5){translate:calc(var(--j) * -1.5px + var(--dx,0px)) calc(var(--j) * -1.5px);rotate:calc(var(--dx,0px) / 12px * 1deg)}
.deck-pile.shuffling .pile-card:nth-child(odd){animation:riffle-a .32s ease-in-out infinite alternate}
.deck-pile.shuffling .pile-card:nth-child(even){animation:riffle-b .32s ease-in-out infinite alternate}
@keyframes riffle-a{from{translate:-14px -2px;rotate:-5deg}to{translate:12px 2px;rotate:4deg}}
@keyframes riffle-b{from{translate:13px 1px;rotate:5deg}to{translate:-12px -3px;rotate:-4deg}}
.shuffle-ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.shuffle-ring path{fill:none;stroke-width:1.2}.ring-sun{fill:#fff4d6;filter:drop-shadow(0 0 4px rgba(255,236,190,.95))}
.ring-track{stroke:rgba(201,169,106,.16)}
.ring-fill{stroke:#e4c78c;stroke-linecap:butt;stroke-dasharray:100;stroke-dashoffset:100;filter:drop-shadow(0 0 3px rgba(240,206,140,.8))}
.ritual-scene[data-stage=cut] .ring-fill,.ritual-scene[data-stage=cutting] .ring-fill{stroke-dashoffset:0!important;opacity:.45;transition:opacity .6s}
.ritual-scene[data-stage=cut] .deck-pile{animation:cut-wait 1.6s ease-in-out infinite}
@keyframes cut-wait{50%{translate:0 -4px}}
/* 切牌：上半叠滑出去，从下面绕回来，中间闪一道金光 */
.deck-pile.cut-l .pile-card:nth-child(n+5){animation:cut-out-l .62s cubic-bezier(.5,0,.3,1) both}
.deck-pile.cut-r .pile-card:nth-child(n+5){animation:cut-out-r .62s cubic-bezier(.5,0,.3,1) both}
@keyframes cut-out-l{45%{translate:-78px -6px;rotate:-8deg}55%{z-index:-1}to{translate:0 0;rotate:0deg;z-index:-1}}
@keyframes cut-out-r{45%{translate:78px -6px;rotate:8deg}55%{z-index:-1}to{translate:0 0;rotate:0deg;z-index:-1}}
.cut-flash{position:absolute;left:50%;top:50%;width:150px;height:2px;margin:-1px 0 0 -75px;background:linear-gradient(90deg,transparent,rgba(255,244,214,.95),transparent);opacity:0;pointer-events:none;z-index:3;filter:drop-shadow(0 0 6px rgba(240,206,140,.9))}
.deck-pile.cut-l .cut-flash,.deck-pile.cut-r .cut-flash{animation:cut-flash .7s ease-out}
@keyframes cut-flash{0%{opacity:0;scale:.2 1}30%{opacity:1;scale:1.3 1}100%{opacity:0;scale:1.6 4}}
/* 揭牌：光尘拼牌时牌面先藏起来，金光扫过的地方才显出来 */
.minimal-result .tarot.veiled img.rws{opacity:0}
.minimal-result .tarot.veiled.scan img.rws{opacity:1;-webkit-mask-image:linear-gradient(115deg,#000 48%,transparent 52%);mask-image:linear-gradient(115deg,#000 48%,transparent 52%);-webkit-mask-size:300% 100%;mask-size:300% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;animation:scan-in 1.3s .45s cubic-bezier(.3,.1,.3,1) both}
.minimal-result .tarot.veiled.scan.is-reversed img.rws{-webkit-mask-image:linear-gradient(295deg,#000 48%,transparent 52%);mask-image:linear-gradient(295deg,#000 48%,transparent 52%);animation-name:scan-in-rev}
/* 遮罩只在 0%～100% 之间移动：超出这个范围，遮罩图之外的部分是透明的，牌面会被切掉一块。扫光的光带用同样的范围，边缘和光带始终对齐 */
@keyframes scan-in{from{-webkit-mask-position:100% 0;mask-position:100% 0}to{-webkit-mask-position:0 0;mask-position:0 0}}
@keyframes scan-in-rev{from{-webkit-mask-position:0 0;mask-position:0 0}to{-webkit-mask-position:100% 0;mask-position:100% 0}}
.minimal-result .tarot.veiled.scan::after{animation-name:scan-band}
@keyframes scan-band{from{background-position:100% 0}to{background-position:0 0}}
@media (prefers-reduced-motion:reduce){.ritual-scene .fan-card{opacity:1;pointer-events:auto}.deck-pile,.pile-card,.cut-flash{animation:none!important}}
.drawing .ritual-scene[data-stage] .fan-card:not(.picked){opacity:0;translate:0 40px;pointer-events:none}
/* 选中的牌边缘随光尘一起呼吸：很淡的一圈金光，3.6 秒一次 */
.chosen-card.shown{animation:aura-breathe 3.6s .6s ease-in-out infinite}
@keyframes aura-breathe{0%,100%{box-shadow:0 0 0 rgba(201,169,106,0),0 10px 30px rgba(0,0,0,.4)}50%{box-shadow:0 0 26px rgba(214,184,128,.16),0 10px 30px rgba(0,0,0,.4)}}
@media (prefers-reduced-motion:reduce){.chosen-card.shown{animation:none}}
/* 浅色模式：羊皮纸质感 + 中世纪星盘刻线，都压得很淡；深色模式不受影响 */
html:root[data-theme=light]{--bg-primary:#f1ebe0;--bg-surface:#f1ebe0;
 background:
  radial-gradient(ellipse 115% 85% at 50% 42%,rgba(0,0,0,0) 58%,rgba(126,92,44,.11) 100%) fixed,
  url(/textures/astrolabe.svg) 50% -180px/min(1040px,165vw) auto no-repeat,
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='900' height='900'%3E%3Cfilter id='m'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.006' numOctaves='3' seed='4'/%3E%3CfeColorMatrix values='0 0 0 0 .48 0 0 0 0 .36 0 0 0 0 .18 0 0 0 .16 -.04'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23m)'/%3E%3C/svg%3E") 0 0/900px 900px,
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .36 0 0 0 0 .27 0 0 0 0 .15 0 0 0 .1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E") 0 0/240px 240px,
  var(--bg-primary)}
/* ===== 每日抽牌 · 黑金卡纸与香槟金（2026-11）=====
   层次自下而上：丝绒暗底与胶片噪点 → 牌阵正后方的柔光与星轨 → 不透明黑金卡纸牌 → 牌下方的提示与按钮。
   金色只用低饱和的香槟金、古董金和暗金；光只在牌的后面呼吸，不压在牌面上。 */
.shared-header label{white-space:nowrap;flex-shrink:0}

/* 深色主题的背景：午夜曜石黑到深空靛的微弱径向渐变，叠一层很淡的胶片噪点 */
html:root[data-theme=dark]{background:radial-gradient(ellipse at 50% 30%,#16151C 0%,#0B0A0E 65%,#050507 100%) fixed #0B0A0E}
html:root[data-theme=dark] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.035;
 background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* 文字层级：浅色主题沿用原有墨色，深色主题用象牙白 / 亚麻灰 / 暗灰 */
.minimal-ritual{--rt-title:var(--fg);--rt-sub:var(--muted);--rt-small:var(--muted);--rt-hint:var(--muted);--rt-pill:var(--fg);
 --gold-hi:#E6D2B5;--gold:#C5A059;--gold-deep:#6E5832;--gold-line:rgba(212,175,55,.3)}
html:root[data-theme=dark] .minimal-ritual{--rt-title:#F4EFE6;--rt-sub:#A39E93;--rt-small:#6E6A63;--rt-hint:#8C857B;--rt-pill:#C8C2B8}
html:root[data-theme=light] .minimal-ritual{--gold-hi:#8A6D3B;--gold:#9C7A3C;--rt-pill:#4a4640}
.minimal-ritual .ritual-date{margin:0 0 28px;font-size:13px;letter-spacing:.2em;color:var(--rt-small)}
.minimal-ritual h1{font-size:clamp(30px,4.4vw,52px)!important;font-weight:300!important;letter-spacing:.25em;padding-left:.25em;color:var(--rt-title);margin:0 0 28px}
.ritual-hint{font-size:14px;line-height:1.8;letter-spacing:.08em;color:var(--rt-sub);margin:0 0 18px}
.fan-replay .keep-card{display:block;margin:16px auto 0;min-height:40px;letter-spacing:.12em}

/* 情绪胶囊 */
.mood-row{gap:10px;max-width:520px}
.mood-chip{color:var(--rt-pill)!important;border:1px solid rgba(197,160,89,.22)!important;background:rgba(255,255,255,.02)!important;-webkit-backdrop-filter:blur(4px)!important;backdrop-filter:blur(4px)!important;
 padding:6px 16px!important;transition:color .3s cubic-bezier(.2,.7,.2,1),border-color .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s cubic-bezier(.2,.7,.2,1),background .3s!important}
.mood-chip.on{color:var(--rt-title)!important;border-color:rgba(212,175,55,.65)!important;background:rgba(212,175,55,.04)!important;box-shadow:inset 0 0 12px rgba(212,175,55,.12)!important}
@media(hover:hover){.mood-chip:hover:not(:disabled){color:var(--rt-title)!important;border-color:rgba(212,175,55,.65)!important;box-shadow:inset 0 0 12px rgba(212,175,55,.12)!important}}

/* 抽牌区：比原来大约 40% */
.ritual-scene{height:300px;margin:36px 0 0!important}
.deck-pile{z-index:1;width:280px;height:280px;margin-left:-140px}
.ritual-scene .deck-fan{z-index:1}

/* 牌阵正后方的柔光与星轨：在牌下面，不挡牌面 */
.ritual-aura{position:absolute;left:50%;bottom:148px;width:0;height:0;z-index:0;pointer-events:none}
.ritual-glow{position:absolute;left:-190px;top:-190px;width:380px;height:380px;border-radius:50%!important;background:radial-gradient(circle,rgba(197,160,89,.12) 0%,transparent 70%);filter:blur(24px);animation:glow-breathe 6s cubic-bezier(.45,0,.55,1) infinite}
.ritual-orbit{position:absolute;left:-180px;top:-180px;width:360px;height:360px;overflow:visible;animation:orbit-turn 60s linear infinite;opacity:.9}
.ritual-orbit circle{fill:none;stroke:rgba(197,160,89,.34);stroke-width:.5;vector-effect:non-scaling-stroke}
.ritual-orbit .orbit-star{fill:#E6D2B5;stroke:none;opacity:.45}
@keyframes glow-breathe{0%,100%{transform:scale(.92);opacity:.75}50%{transform:scale(1.06);opacity:1}}
@keyframes orbit-turn{to{transform:rotate(360deg)}}
.ritual-scene[data-stage=pick] .ritual-aura{bottom:96px}
.ritual-aura{transition:bottom .8s cubic-bezier(.2,.7,.2,1)}
html:root[data-theme=light] .ritual-glow{background:radial-gradient(circle,rgba(156,122,60,.16) 0%,transparent 70%)}
html:root[data-theme=light] .ritual-orbit circle{stroke:rgba(110,88,50,.4)}

/* 黑金卡纸：不透明深色卡面、细金边、深投影 */
.pile-card,.fan-card,.card-scene .tarot.chosen-card{background:#0E0D12!important;border:1px solid var(--gold-line)!important;border-radius:6px!important;overflow:hidden}
.pile-card{width:123px;height:213px;margin:-106px 0 0 -61px;box-shadow:0 20px 40px -15px rgba(0,0,0,.85)!important}
.fan-card{left:-53px;width:106px;height:185px;box-shadow:0 20px 40px -15px rgba(0,0,0,.85)!important}
.card-scene .tarot.chosen-card{width:190px!important;margin-left:-95px!important;top:-31px;border-color:rgba(212,175,55,.42)!important;border-radius:8px!important;box-shadow:0 28px 56px -18px rgba(0,0,0,.9),0 0 32px rgba(197,160,89,.10)!important;animation:none!important}
.pile-card svg,.fan-card svg,.chosen-card svg{display:block;width:100%;height:100%;opacity:1}
.pile-card::after,.chosen-card::before{content:none}
/* 牌扇：滑到哪张，哪张向上浮起、边缘泛起香槟金微光；其余压暗 */
.fan-card::after{content:'';position:absolute;inset:0;pointer-events:none;animation:none;opacity:0;transition:opacity .4s cubic-bezier(.2,.7,.2,1);
 background:linear-gradient(115deg,transparent 38%,rgba(230,210,181,.10) 50%,transparent 62%)}
.fan-card.lift,.fan-card:focus-visible{z-index:3;translate:0 -14px;border-color:rgba(230,210,181,.55)!important;box-shadow:0 24px 44px -16px rgba(0,0,0,.9),0 0 18px rgba(197,160,89,.20)!important}
.fan-card.lift::after{opacity:1}
.ritual-scene[data-stage=pick] .deck-fan:has(.lift) .fan-card:not(.lift){filter:brightness(.55)}
.minimal-ritual:not(.drawing) .ritual-scene[data-stage=pick] .fan-card{transition:translate .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s cubic-bezier(.2,.7,.2,1),filter .35s cubic-bezier(.2,.7,.2,1),border-color .35s!important}
.drawing .fan-card.picked{translate:0 -150px}

/* 洗牌进度弧：只在按住时出现，香槟金细线 */
.shuffle-ring{opacity:0;transition:opacity .6s cubic-bezier(.2,.7,.2,1)}
.deck-pile.shuffling .shuffle-ring{opacity:1}
.ritual-scene[data-stage=cut] .shuffle-ring,.ritual-scene[data-stage=cutting] .shuffle-ring{opacity:0}
.shuffle-ring path{stroke-width:.8}
.ring-track{stroke:rgba(197,160,89,.12)}
.ring-fill{stroke:#C5A059;filter:none}
.ring-sun{fill:#E6D2B5;filter:drop-shadow(0 0 3px rgba(230,210,181,.6))}
.cut-flash{background:linear-gradient(90deg,transparent,rgba(230,210,181,.75),transparent);filter:none}

/* 提示：牌阵正下方 24px，两侧渐隐短线 */
.pick-hint{display:flex;align-items:center;justify-content:center;gap:14px;margin:24px 0 28px;font-size:13px;letter-spacing:.12em;color:var(--rt-hint)}
.pick-hint::before,.pick-hint::after{content:'';flex:0 0 32px;height:1px;background:linear-gradient(90deg,transparent,rgba(197,160,89,.4))}
.pick-hint::after{background:linear-gradient(90deg,rgba(197,160,89,.4),transparent)}

/* 「替我选一张」：居中的幽灵胶囊按钮 */
.minimal-ritual .primary.draw{display:inline-flex!important;align-items:center;justify-content:center!important;gap:10px;width:auto!important;min-width:0!important;min-height:0!important;font-weight:400!important;margin:0 auto;padding:10px 28px!important;font-size:14px;letter-spacing:.2em;
 color:var(--gold-hi)!important;border:1px solid rgba(197,160,89,.35)!important;border-radius:999px!important;background:transparent!important;
 transition:border-color .4s cubic-bezier(.2,.7,.2,1),box-shadow .4s cubic-bezier(.2,.7,.2,1),color .4s,transform .2s cubic-bezier(.2,.7,.2,1)!important}
.minimal-ritual .primary.draw span{font-size:11px;color:var(--gold);transition:color .4s}
@media(hover:hover){.minimal-ritual .primary.draw:hover:not(:disabled){border-color:rgba(212,175,55,.62)!important;box-shadow:0 0 22px rgba(197,160,89,.12),inset 0 0 12px rgba(212,175,55,.08)!important;color:var(--rt-title)!important}
 .minimal-ritual .primary.draw:hover span{color:var(--gold-hi)}}
.minimal-ritual .primary.draw:active:not(:disabled){transform:scale(.97)}

/* 页脚：两侧渐隐的细分割线 */
.shared-footer{position:relative;border-top:0!important}
.shared-footer::before{content:'';position:absolute;left:0;right:0;top:0;height:1px;background:linear-gradient(90deg,transparent,rgba(197,160,89,.2),transparent)}

@media(max-width:560px){
 .ritual-scene{height:270px}
 .deck-pile{width:250px;height:250px;margin-left:-125px}
 .pile-card{width:110px;height:190px;margin:-95px 0 0 -55px}
 .fan-card{left:-46px;width:92px;height:160px;rotate:calc((var(--i) - 6) * 3.3deg)}
 .card-scene .tarot.chosen-card{width:165px!important;margin-left:-82px!important;top:-18px}
 .ritual-aura{bottom:133px}
 .ritual-glow{left:-160px;top:-160px;width:320px;height:320px}
 .ritual-orbit{left:-150px;top:-150px;width:300px;height:300px}
}
@media(prefers-reduced-motion:reduce){.ritual-glow,.ritual-orbit{animation:none!important}}

/* ===== 全站按压手感与浮层（2026-11）=====
   按下：110ms 快速下沉；松开：420ms 弹簧回弹（src/tactile.ts 加 .is-pressed / .is-releasing）。
   胶囊控件顶部有 1px 受光高光，按下时泛起一点暖金内光。全局 body * 去掉了投影，这里一律用更具体的选择器加 !important。 */
:root{--spring-press:cubic-bezier(.32,.72,0,1);--spring-release:cubic-bezier(.22,1,.36,1);--press-ms:110ms;--release-ms:420ms;
 --specular:inset 0 1px 0 0 rgba(255,255,255,.14);--press-glow:inset 0 0 16px rgba(197,160,89,.18);--pill-line:rgba(197,160,89,.28);--pill-bg:rgba(255,255,255,.025);--pill-fg:#C8C2B8;--gold-hi:#E6D2B5;--gold:#C5A059;
 --glass-bg:rgba(22,21,28,.62);--glass-line:rgba(212,175,55,.45);--glass-hover:rgba(255,255,255,.06)}
html:root[data-theme=light]{--specular:inset 0 1px 0 0 rgba(255,255,255,.75);--press-glow:inset 0 0 14px rgba(156,122,60,.16);--pill-line:rgba(110,88,50,.3);--pill-bg:rgba(255,255,255,.35);--pill-fg:#4a4640;--gold-hi:#6E5832;--gold:#8A6D3B;
 --glass-bg:rgba(250,247,240,.72);--glass-line:rgba(110,88,50,.35);--glass-hover:rgba(0,0,0,.045)}
html:root[data-theme=dark]{--text-secondary:#A8A297}
button,a,select,summary,label,[role=button],[role=option]{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
button,[role=button],[role=option],.glass-trigger{-webkit-user-select:none;user-select:none}
.shared-header nav a,.shared-footer a,.calendar-links a,.zodiac-index a,a.shared-brand{display:inline-block}

/* 按压 */
.is-pressed{transform:scale(var(--press-scale,.96))!important;transition:transform var(--press-ms) var(--spring-press),box-shadow var(--press-ms) var(--spring-press),color .2s,border-color .2s,background-color .2s,opacity .2s!important}
.is-releasing{transition:transform var(--release-ms) var(--spring-release),box-shadow var(--release-ms) var(--spring-release),color .3s,border-color .3s,background-color .3s,opacity .3s!important}
.shared-header nav a,.mood-chip,.copy-contact,.date-pill,.glass-trigger,.zodiac-index a{--press-scale:.94}
.catalog-card,.history-item,.day.has-card,.zodiac-pair-link,.z-card{--press-scale:.985}
@media(prefers-reduced-motion:reduce){.is-pressed{transform:none!important}}

/* 胶囊控件：受光高光 + 按下暖金内光 */
.mood-chip,.minimal-ritual .primary.draw,.glass-trigger,.date-pill,.result-tools button,.review-save,.copy-contact,.install-hint button{box-shadow:var(--specular)!important}
.is-pressed:is(.mood-chip,.primary.draw,.glass-trigger,.date-pill,.review-save,.copy-contact,.install-hint button),.result-tools button.is-pressed{box-shadow:var(--specular),var(--press-glow)!important}

/* 情绪胶囊 */
.mood-chip{color:var(--pill-fg)!important;border:1px solid rgba(197,160,89,.24)!important;background:var(--pill-bg)!important}
.mood-chip.on{color:var(--rt-title,var(--fg))!important;border-color:rgba(212,175,55,.7)!important;background:rgba(212,175,55,.05)!important;box-shadow:inset 0 1px 0 rgba(255,248,231,.25),inset 0 0 14px rgba(197,160,89,.2)!important;animation:chip-glow 4s ease-in-out infinite}
@keyframes chip-glow{50%{box-shadow:inset 0 1px 0 rgba(255,248,231,.25),inset 0 0 20px rgba(197,160,89,.3)}}
html:root[data-theme=light] .mood-chip.on{box-shadow:inset 0 1px 0 rgba(255,255,255,.8),inset 0 0 14px rgba(156,122,60,.22)!important}

/* 「替我选一张」：触发后锁住并淡出 */
.minimal-ritual.drawing .primary.draw{opacity:0!important;transform:scale(.96);pointer-events:none;transition:opacity .45s var(--spring-release),transform .45s var(--spring-release)!important}

/* 牌堆：按住时缓缓下沉、阴影收紧；中途松手弹回；走满时一次金色脉冲 */
.deck-pile{transition:opacity .45s,scale var(--release-ms) var(--spring-release)}
.deck-pile.shuffling{scale:.96;transition:opacity .45s,scale .6s var(--spring-press)}
.pile-card{transition:translate .35s cubic-bezier(.2,.7,.2,1),box-shadow .5s var(--spring-release)}
.deck-pile.shuffling .pile-card{box-shadow:0 10px 18px -10px rgba(0,0,0,.95)!important}
.deck-pile::after{content:'';position:absolute;left:50%;top:58%;width:300px;height:300px;margin:-150px 0 0 -150px;border-radius:50%!important;pointer-events:none;opacity:0;background:radial-gradient(circle,rgba(230,210,181,.32) 0%,rgba(197,160,89,.12) 38%,transparent 68%)}
.deck-pile.charged::after{animation:charge-pulse .9s var(--spring-release) both}
@keyframes charge-pulse{0%{opacity:0;transform:scale(.6)}35%{opacity:1}100%{opacity:0;transform:scale(1.25)}}

/* 顶部导航：选中项下面的金线；跨页面时作为独立图层滑过去 */
.shared-header nav a[aria-current=page]::after{transform:scaleX(0)!important}
.nav-mark{position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--gold);view-transition-name:nav-indicator;pointer-events:none}
html:root[data-theme=light] .nav-mark{background:var(--fg)}
::view-transition-group(nav-indicator){animation-duration:.42s;animation-timing-function:var(--spring-release)}

/* 页面与视图切换：先让旧画面完整淡出（180ms，向上、轻微模糊），再淡入新画面，两层不再同时出现 */
::view-transition-old(root){animation:vt-exit .18s var(--spring-press) both!important}
::view-transition-new(root){animation:vt-enter .26s var(--spring-release) .18s both!important}
@keyframes vt-exit{to{opacity:0;transform:translateY(-8px);filter:blur(4px)}}
@keyframes vt-enter{from{opacity:0;transform:translateY(8px)}}
::view-transition-old(site-header){display:none}
::view-transition-new(site-header){animation:none}
@media(prefers-reduced-motion:reduce){::view-transition-old(root),::view-transition-new(root){animation:none!important}}

/* 换一张与首次抽牌的淡出、翻面、浮现都由 src/draw-motion.ts 用 Web Animations API 驱动，样式见文末“抽牌揭晓” */
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.ticker{display:inline-block;height:1.3em;line-height:1.3em;overflow:hidden;vertical-align:-.3em}
.tick-col{display:flex;flex-direction:column;animation:tick-roll .55s var(--spring-release) .3s both}
.tick-col>span{display:block;height:1.3em}
@keyframes tick-roll{to{transform:translateY(-50%)}}

/* 结果页工具：幽灵胶囊 */
.result-tools{align-items:center}
.result-tools button{display:inline-flex!important;align-items:center;gap:8px;min-height:0!important;padding:8px 18px!important;border:1px solid var(--pill-line)!important;border-radius:999px!important;background:var(--pill-bg)!important;font-size:13px;letter-spacing:.08em;color:var(--fg)!important}
.result-tools .tool-field{display:inline-flex;align-items:center;gap:10px}
.result-tools .tool-field .glass-pop{left:0;right:auto;transform-origin:top left}
.done-mark{color:var(--gold);margin-right:6px}
.is-done{color:var(--gold-hi)!important;border-color:rgba(212,175,55,.55)!important}
.is-busy{pointer-events:none;opacity:.85}
.is-busy::before{content:'';width:14px;height:14px;flex:none;border-radius:50%!important;background:conic-gradient(from 0deg,transparent 0 12%,currentColor);-webkit-mask:radial-gradient(farthest-side,transparent 55%,#000 58%);mask:radial-gradient(farthest-side,transparent 55%,#000 58%);animation:ios-spin .9s steps(12) infinite}
@keyframes ios-spin{to{transform:rotate(1turn)}}

/* 晚间回望：没写 → 柔和；写了新内容 → 香槟金；已保存 → ✓ 已珍藏 */
.review-save{min-height:0!important;padding:8px 20px!important;border:1px solid var(--pill-line)!important;border-radius:999px!important;background:var(--pill-bg)!important;letter-spacing:.1em;transition:opacity .3s,color .3s,border-color .3s,box-shadow .3s var(--spring-release)!important}
.review-save.is-empty{opacity:.45;cursor:default}
.review-save.is-active{color:var(--gold-hi)!important;border-color:rgba(212,175,55,.62)!important;box-shadow:var(--specular),inset 0 0 12px rgba(212,175,55,.12)!important}
.review-save.is-saved{color:var(--gold)!important;cursor:default}
.review-save.just-saved{animation:saved-pop .6s var(--spring-release)}
@keyframes saved-pop{0%{transform:scale(.94)}100%{transform:scale(1)}}

/* 灵动岛式提示：顶部居中的毛玻璃胶囊，弹簧落下 */
html body #toast{top:calc(env(safe-area-inset-top,0px) + 12px);bottom:auto;left:50%;max-width:min(92vw,420px);width:max-content;padding:10px 20px;border-radius:999px!important;font-size:14px;letter-spacing:.04em;line-height:1.5;text-align:center;
 color:var(--fg);background:var(--glass-bg);border:.5px solid var(--glass-line);-webkit-backdrop-filter:blur(24px) saturate(180%)!important;backdrop-filter:blur(24px) saturate(180%)!important;box-shadow:0 18px 40px -14px rgba(0,0,0,.55),var(--specular)!important;
 opacity:0;transform:translate(-50%,-160%) scale(.86);transition:transform .3s var(--spring-press),opacity .22s!important;z-index:120}
html body #toast.show{opacity:1;transform:translate(-50%,0) scale(1);animation:none;transition:transform .5s var(--spring-release),opacity .25s!important}

/* 毛玻璃浮层（外观、配色）：src/popover.ts 与 site-chrome.tsx 共用 */
.glass-select{position:relative;display:inline-flex;align-items:center;gap:8px}
.glass-native{position:absolute!important;width:1px;height:1px;opacity:0;pointer-events:none;clip-path:inset(50%)}
.glass-trigger{display:inline-flex!important;align-items:center;gap:8px;min-height:0!important;padding:6px 12px 6px 10px!important;border:1px solid var(--pill-line)!important;border-radius:999px!important;background:var(--pill-bg)!important;font-size:13px;letter-spacing:.08em;color:var(--fg)!important;white-space:nowrap;cursor:pointer}
.glass-chevron{width:12px;height:12px;flex:none;opacity:.7;transition:transform var(--release-ms) var(--spring-release)}
.glass-select.open .glass-chevron{transform:rotate(180deg)}
.swatch{width:12px;height:12px;flex:none;border-radius:50%!important;background:var(--swatch);box-shadow:inset 0 0 0 .5px rgba(197,160,89,.65),0 0 0 .5px rgba(0,0,0,.25)!important}
.glass-pop{position:absolute;top:calc(100% + 8px);right:0;z-index:90;min-width:150px;margin:0;padding:6px;list-style:none;text-align:left;border-radius:16px!important;background:var(--glass-bg);border:.5px solid var(--glass-line);
 -webkit-backdrop-filter:blur(24px) saturate(180%)!important;backdrop-filter:blur(24px) saturate(180%)!important;box-shadow:0 24px 48px -12px rgba(0,0,0,.6),var(--specular)!important;
 transform-origin:top right;transform:scale(.9);opacity:0;visibility:hidden;transition:transform .18s var(--spring-press),opacity .14s,visibility 0s .18s}
.glass-select.open .glass-pop{transform:scale(1);opacity:1;visibility:visible;transition:transform var(--release-ms) var(--spring-release),opacity .2s,visibility 0s}
.glass-pop li{display:flex;align-items:center;gap:10px;padding:10px 12px;white-space:nowrap;border-radius:10px!important;font-size:14px;letter-spacing:.06em;color:var(--fg);cursor:pointer;outline:none;transition:background-color .2s}
.glass-pop li:hover,.glass-pop li:focus-visible{background:var(--glass-hover)}
.glass-check{margin-left:auto;padding-left:12px;color:var(--gold);opacity:0}
.glass-pop li[aria-selected=true] .glass-check{opacity:1}
.theme-label{font-size:13px;color:var(--muted);white-space:nowrap}
.shared-header .theme-picker{flex-shrink:0}
@media(max-width:650px){.shared-header .theme-picker{margin-left:auto}}

/* 日历：前日 / 后日幽灵胶囊，尖括号向按下的方向微移 */
.date-pill{display:inline-flex!important;align-items:center;gap:6px;min-height:0!important;padding:6px 14px!important;border:1px solid var(--pill-line)!important;border-radius:999px!important;background:var(--pill-bg)!important;font-size:13px;letter-spacing:.1em}
.date-pill .chev{display:inline-block;font-size:16px;line-height:1;color:var(--gold);transition:transform var(--release-ms) var(--spring-release)}
.date-pill.prev.is-pressed .chev{transform:translateX(-2px);transition:transform var(--press-ms) var(--spring-press)}
.date-pill.next.is-pressed .chev{transform:translateX(2px);transition:transform var(--press-ms) var(--spring-press)}
.date-pill:disabled{opacity:.35}
.date-line input{border:1px solid var(--pill-line)!important;border-radius:999px!important;padding:6px 12px!important;background:var(--pill-bg)!important;box-shadow:var(--specular)!important}

/* 安装提示条与复制按钮 */
.install-hint{border-radius:20px!important;background:var(--glass-bg)!important;border:.5px solid var(--glass-line)!important;-webkit-backdrop-filter:blur(24px) saturate(180%)!important;backdrop-filter:blur(24px) saturate(180%)!important;box-shadow:0 20px 44px -14px rgba(0,0,0,.6),var(--specular)!important;animation:hint-rise .5s var(--spring-release) both}
.install-hint.leaving{animation:hint-sink .38s cubic-bezier(.5,0,.75,0) forwards}
@keyframes hint-rise{from{opacity:0;transform:translateY(24px) scale(.97)}}
@keyframes hint-sink{0%{transform:translateY(0)}25%{transform:translateY(-6px)}100%{opacity:0;transform:translateY(140%)}}
.install-hint button{border-radius:999px!important;padding:8px 16px!important}
.copy-contact{interpolate-size:allow-keywords;transition:width var(--release-ms) var(--spring-release),color .3s,border-color .3s!important}
.copy-contact.is-done{color:var(--gold-hi)!important;border-color:rgba(212,175,55,.55)!important}
@media(prefers-reduced-motion:reduce){.install-hint,.install-hint.leaving,.mood-chip.on,.tick-col{animation:none!important}.tick-col{transform:translateY(-50%)}}

/* ===== 抽牌揭晓（src/draw-motion.ts）=====
   只在动画期间存在：锁定交互、待揭晓时把结果页的大牌和文字暂时设为透明（布局不变，不会跳动）、飞行中的双面牌浮层。 */
.minimal-ritual.draw-locked .ritual-scene,.minimal-ritual.draw-locked button{pointer-events:none}
.fan-card.is-drawn,.pile-card.is-drawn{z-index:4;border-color:rgba(212,175,55,.6)!important;box-shadow:0 24px 48px rgba(0,0,0,.8),0 0 20px rgba(197,160,89,.25)!important;transition:box-shadow .32s var(--spring-release),border-color .32s!important}
.minimal-result.reveal-pending>:not(.tarot),.minimal-result.card-pending>.tarot{opacity:0}
.minimal-result.reveal-pending .tick-col{animation-play-state:paused}
.draw-flight{position:fixed;z-index:70;pointer-events:none;perspective:1200px;transform-origin:50% 50%;will-change:transform,opacity}
.flight-card{position:absolute;inset:0;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;will-change:transform}
.flight-face{position:absolute;inset:0;overflow:hidden;backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flight-back{background:#0E0D12;border:1px solid rgba(212,175,55,.42)!important;border-radius:8px!important}
.flight-back svg{display:block;width:100%;height:100%}
.flight-front{transform:rotateY(180deg);background:var(--bg);border:1px solid var(--line)!important}
.flight-front img{display:block;width:100%;height:100%;object-fit:cover}
.flight-front.is-reversed img{transform:rotate(180deg)}
.flight-sheen{position:absolute;inset:0;pointer-events:none;opacity:0;transform:translateX(-120%);background:linear-gradient(115deg,transparent 25%,rgba(255,248,231,.26) 50%,transparent 75%)}
.flight-shadow{position:absolute;left:6%;right:6%;bottom:-7%;height:20%;border-radius:50%!important;opacity:0;filter:blur(16px);background:radial-gradient(ellipse at center,rgba(0,0,0,.75) 0%,rgba(197,160,89,.14) 45%,transparent 72%)}
html:root[data-theme=light] .flight-shadow{background:radial-gradient(ellipse at center,rgba(40,30,15,.35) 0%,rgba(156,122,60,.12) 45%,transparent 72%)}

/* ===== 牌背配色（src/card-back.ts）=====
   深色：黑曜石底 + 五阶香槟烫金；浅色：羊皮石膏白底 + 古董暗金压纹。牌背 SVG 的渐变全部读这些变量。
   容器底色和牌背边缘同色：牌的长宽比与 240×400 不完全一样时，上下多出的一点不会露出色差。 */
:root{--cb-bg-a:#17151E;--cb-bg-b:#0B0A0F;--cb-glow:#C5A059;--cb-f0:#7A5C29;--cb-f1:#C5A059;--cb-f2:#FFF2CC;--cb-f3:#D4AF37;--cb-f4:#6B4F22;--cb-hl:#FFF2CC}
html:root[data-theme=light]{--cb-bg-a:#FBF8F2;--cb-bg-b:#F5F2EB;--cb-glow:#8C6D32;--cb-f0:#4F3B14;--cb-f1:#8C6D32;--cb-f2:#C9A961;--cb-f3:#8C6D32;--cb-f4:#4F3B14;--cb-hl:#FFFFFF}
.pile-card,.fan-card,.card-scene .tarot.chosen-card,.flight-back{background:var(--cb-bg-b)!important}
.pile-card svg.card-back,.fan-card svg.card-back,.chosen-card svg.card-back,.flight-back svg.card-back{opacity:1}
html:root[data-theme=light] .pile-card,html:root[data-theme=light] .fan-card,html:root[data-theme=light] .flight-back{border-color:rgba(140,109,50,.4)!important}

/* 牌阵页：78 张牌背 */
.card-back-sprite{position:absolute;width:0;height:0;overflow:hidden}
.deck-section .deck-fan button{padding:0!important;overflow:hidden;background:var(--cb-bg-b)!important;border:1px solid rgba(212,175,55,.28)!important;border-radius:4px!important;box-shadow:0 8px 16px -10px rgba(0,0,0,.7)!important}
html:root[data-theme=light] .deck-section .deck-fan button{border-color:rgba(140,109,50,.35)!important;box-shadow:0 6px 12px -8px rgba(60,45,20,.35)!important}
.consult-back,.consult-back svg{display:block;width:100%;height:100%}
.deck-section .deck-fan button:disabled.picked{opacity:.15}
/* 浅色：牌扇其余牌用不透明的“褪色”代替压暗（不用半透明，免得叠在一起的牌透出底下的线），投影换成暖棕色、更轻 */
html:root[data-theme=light] .ritual-scene[data-stage=pick] .deck-fan:has(.lift) .fan-card:not(.lift){filter:saturate(.35) contrast(.55) brightness(1.3)}
html:root[data-theme=light] .pile-card,html:root[data-theme=light] .fan-card{box-shadow:0 16px 30px -16px rgba(60,45,20,.45)!important}
html:root[data-theme=light] .deck-pile.shuffling .pile-card{box-shadow:0 8px 14px -10px rgba(60,45,20,.55)!important}
html:root[data-theme=light] .fan-card.lift{box-shadow:0 22px 36px -16px rgba(60,45,20,.5),0 0 16px rgba(140,109,50,.22)!important}
html:root[data-theme=light] .fan-card.is-drawn,html:root[data-theme=light] .pile-card.is-drawn{box-shadow:0 22px 40px -14px rgba(60,45,20,.5),0 0 18px rgba(140,109,50,.25)!important}

/* ===== 图鉴：陈列室与检视台（src/components/tarot/compendium.tsx）===== */
.codex-page{max-width:1120px;text-align:center}
.codex-head h1{margin-bottom:20px}
.codex-lead{max-width:40ch;margin:0 auto 36px;font-size:15px;line-height:1.8;color:var(--muted)}
/* 分段筛选：选中项下面垫一块会滑动的香槟金胶囊 */
.codex-segs{position:relative;display:inline-flex;max-width:100%;gap:2px;padding:4px;overflow-x:auto;scrollbar-width:none;border:1px solid var(--pill-line);border-radius:999px!important;background:var(--pill-bg);box-shadow:var(--specular)!important}
.codex-segs::-webkit-scrollbar{display:none}
.codex-segs button{position:relative;z-index:1;flex:none;display:inline-flex;align-items:center;gap:6px;min-height:0!important;padding:8px 14px!important;border:0!important;border-radius:999px!important;background:transparent!important;font-size:13px;letter-spacing:.08em;white-space:nowrap;color:var(--muted)!important;transition:color .3s var(--spring-release)}
.codex-segs button[aria-pressed=true]{color:var(--fg)!important}
.codex-count{font-size:11px;opacity:.55;letter-spacing:0}
.codex-thumb{position:absolute;top:4px;bottom:4px;left:0;border-radius:999px!important;background:rgba(212,175,55,.1);border:1px solid rgba(212,175,55,.5);box-shadow:inset 0 1px 0 rgba(255,248,231,.22),inset 0 0 12px rgba(197,160,89,.14)!important;transition:transform var(--release-ms) var(--spring-release),width var(--release-ms) var(--spring-release);pointer-events:none}
.codex-tools{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;margin:18px 0 10px}
.codex-search{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;min-width:min(320px,100%);border:1px solid var(--pill-line);border-radius:999px!important;background:var(--pill-bg);box-shadow:var(--specular)!important;color:var(--muted)}
.codex-search svg{width:15px;height:15px;flex:none}
.codex-search input{flex:1;min-width:0;border:0!important;background:none!important;padding:0!important;font:inherit;font-size:14px;color:var(--fg);outline:none}
.codex-mode{display:inline-flex;padding:3px;border:1px solid var(--pill-line);border-radius:999px!important;background:var(--pill-bg)}
.codex-mode button{min-height:0!important;padding:6px 14px!important;border:0!important;border-radius:999px!important;background:transparent!important;font-size:13px;letter-spacing:.08em;color:var(--muted)!important}
.codex-mode button[aria-pressed=true]{color:var(--fg)!important;background:rgba(212,175,55,.12)!important;box-shadow:inset 0 0 0 1px rgba(212,175,55,.45),var(--specular)!important}
.codex-progress{margin:6px 0 30px;font-size:13px;letter-spacing:.12em;color:var(--muted)}
.codex-progress b{font-weight:400;color:var(--gold)}
/* 网格：3:5 牌面，桌面每行最多 6 张，手机 3 张 */
.codex-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:30px 20px;text-align:center}
.codex-card{display:flex!important;flex-direction:column;align-items:stretch;gap:10px;min-height:0!important;padding:0!important;border:0!important;background:none!important;cursor:pointer;--press-scale:.985;animation:codex-in .5s var(--spring-release) calc(var(--i) * 26ms) backwards}
@keyframes codex-in{from{opacity:0;transform:translateY(10px) scale(.96)}}
.codex-face{position:relative;display:block;aspect-ratio:3/5;overflow:hidden;border-radius:8px!important;border:1px solid rgba(212,175,55,.22);background:var(--cb-bg-b);box-shadow:0 14px 28px -18px rgba(0,0,0,.8)!important;transition:transform var(--release-ms) var(--spring-release),border-color .35s,box-shadow .45s var(--spring-release)!important}
.codex-face img{display:block;width:100%;height:100%;object-fit:cover}
.codex-back,.codex-back svg{display:block;width:100%;height:100%}
.codex-card.is-unmet .codex-back{opacity:.55}
.codex-card.is-unmet .codex-name{opacity:.6}
@media(hover:hover){.codex-card:hover .codex-face{transform:translateY(-6px) scale(1.02);border-color:rgba(212,175,55,.6);box-shadow:0 22px 40px -18px rgba(0,0,0,.85),0 0 18px rgba(197,160,89,.22)!important}}
.codex-card:focus-visible{outline:none}.codex-card:focus-visible .codex-face{border-color:rgba(212,175,55,.75);box-shadow:0 0 0 2px rgba(212,175,55,.35)!important}
.codex-badge{position:absolute;top:6px;left:6px;padding:2px 8px;border-radius:999px!important;font-size:10px;letter-spacing:.12em;line-height:1.6;color:#E6D2B5;background:rgba(11,10,15,.62);border:.5px solid rgba(212,175,55,.45);-webkit-backdrop-filter:blur(6px)!important;backdrop-filter:blur(6px)!important}
.codex-seen{position:absolute;top:5px;right:8px;font-size:13px;color:var(--gold);text-shadow:0 0 6px rgba(11,10,15,.8)}
.codex-name{display:flex;flex-direction:column;gap:2px}
.codex-name b{font-weight:400;font-size:15px;letter-spacing:.08em;color:var(--fg)}
.codex-name small{font-size:11px;letter-spacing:.08em;color:var(--muted)}
.codex-empty{margin:48px 0;color:var(--muted)}
html:root[data-theme=light] .codex-badge{color:#6E5832;background:rgba(245,242,235,.78);border-color:rgba(140,109,50,.4)}
html:root[data-theme=light] .codex-face{border-color:rgba(140,109,50,.28);box-shadow:0 12px 24px -16px rgba(60,45,20,.45)!important}
@media(max-width:560px){.codex-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 12px}.codex-name b{font-size:13px}.codex-name small{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.codex-badge{font-size:9px;padding:1px 6px}.codex-segs button{padding:7px 12px!important}}

/* 检视台 */
dialog.inspector{width:min(1080px,calc(100vw - 32px));max-width:none;max-height:calc(100dvh - 32px);margin:auto;padding:0;overflow:auto;overscroll-behavior:contain;color:var(--fg);text-align:left;
 border:.5px solid var(--glass-line);border-radius:24px!important;background:var(--insp-bg);box-shadow:0 40px 90px -30px rgba(0,0,0,.8),var(--specular)!important}
/* 毛玻璃只做一层（::backdrop 模糊背后的页面），检视台本身用更实的玻璃底色，省掉第二次 28px 模糊 */
:root{--insp-bg:rgba(20,19,26,.84)}html:root[data-theme=light]{--insp-bg:rgba(250,247,240,.88)}
dialog.inspector[open]{animation:insp-in .46s var(--spring-release)}
@keyframes insp-in{from{opacity:0;transform:translateY(14px) scale(.97)}}
dialog.inspector::backdrop{background:rgba(5,5,7,.5);-webkit-backdrop-filter:blur(28px) saturate(180%);backdrop-filter:blur(28px) saturate(180%)}
html:root[data-theme=light] dialog.inspector::backdrop{background:rgba(242,239,233,.5)}
.insp-close{position:sticky;top:12px;z-index:5;display:flex!important;align-items:center;justify-content:center;width:36px;height:36px;min-height:0!important;margin:12px 12px -48px auto;padding:0!important;border:1px solid var(--pill-line)!important;border-radius:999px!important;background:var(--glass-bg)!important;font-size:20px;line-height:1;box-shadow:var(--specular)!important}
.insp-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:44px;padding:52px 48px 44px}
.insp-stage{position:sticky;top:24px;align-self:start;display:flex;flex-direction:column;align-items:center;gap:24px}
.insp-pad{width:min(320px,100%);aspect-ratio:3/5;perspective:1200px;touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none}
.insp-pad:active{cursor:grabbing}
.insp-tilt{width:100%;height:100%;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;will-change:transform}
.insp-card{--rz:0deg;--ry:0deg;--zs:1;position:relative;width:100%;height:100%;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transform:rotateZ(var(--rz)) rotateY(var(--ry)) scale(var(--zs));transition:transform .62s var(--spring-release);z-index:2}
.insp-card.is-reversed{--rz:180deg}.insp-card.is-flipped{--ry:180deg}.insp-card.is-zoomed{--zs:1.35}
.insp-face{position:absolute;inset:0;overflow:hidden;border-radius:10px!important;border:1px solid rgba(212,175,55,.35);background:var(--cb-bg-b);backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:0 30px 60px -24px rgba(0,0,0,.85)!important}
.insp-front img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none;-webkit-user-drag:none}
.insp-back{transform:rotateY(180deg)}.insp-back svg{display:block;width:100%;height:100%}
.insp-glare{position:absolute;inset:0;pointer-events:none;mix-blend-mode:soft-light;opacity:calc(.2 + var(--ga,0) * .8);
 background:radial-gradient(circle at var(--gx,50%) var(--gy,50%),rgba(255,242,204,.7) 0%,rgba(230,210,181,.25) 26%,transparent 58%),linear-gradient(115deg,transparent 35%,rgba(255,248,231,.22) var(--gx,50%),transparent 75%)}
.insp-bar{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:2px;padding:5px;border:.5px solid var(--glass-line);border-radius:999px!important;background:var(--glass-bg);-webkit-backdrop-filter:blur(20px) saturate(180%)!important;backdrop-filter:blur(20px) saturate(180%)!important;box-shadow:0 14px 30px -16px rgba(0,0,0,.6),var(--specular)!important}
.insp-bar button{display:inline-flex!important;align-items:center;gap:6px;min-height:0!important;padding:8px 13px!important;border:0!important;border-radius:999px!important;background:transparent!important;font-size:13px;letter-spacing:.06em;color:var(--fg)!important;--press-scale:.94}
.insp-bar button>span[aria-hidden]{color:var(--gold);font-size:14px}
.insp-bar button[aria-pressed=true]{background:rgba(212,175,55,.12)!important;box-shadow:inset 0 0 0 1px rgba(212,175,55,.45),var(--specular)!important}
.insp-nav{display:inline-flex;align-items:center;gap:2px;padding-left:4px;margin-left:2px;border-left:.5px solid var(--glass-line)}
.insp-nav button{font-size:18px!important;padding:6px 12px!important}
.insp-pos{font-size:12px;letter-spacing:.08em;color:var(--muted);min-width:44px;text-align:center}
.insp-dossier{min-width:0}
.insp-eyebrow{margin:0 0 10px;font-size:12px;letter-spacing:.3em;color:var(--gold)}
.insp-dossier h2{margin:0;font-size:clamp(26px,3vw,34px);font-weight:300;letter-spacing:.1em;line-height:1.3;text-align:left}
.insp-dossier h2 span{font-size:.5em;letter-spacing:.14em;color:var(--muted)}
.insp-astro{display:inline-block;margin:14px 0 0;padding:4px 12px;border-radius:999px!important;border:1px solid rgba(212,175,55,.35);font-size:12px;letter-spacing:.1em;color:var(--gold-hi)}
.insp-chips{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0 4px}
.insp-chips span{padding:4px 12px;border-radius:999px!important;border:1px solid var(--pill-line);background:var(--pill-bg);font-size:13px;letter-spacing:.06em;color:var(--pill-fg)}
.insp-swap{animation:insp-fade .4s var(--spring-release)}
@keyframes insp-fade{from{opacity:0;transform:translateY(6px);filter:blur(2px)}}
.insp-dossier section{margin-top:26px}
.insp-dossier h3{margin:0 0 8px;font-size:13px;font-weight:400;letter-spacing:.22em;color:var(--muted)}
.insp-dossier p,.insp-dossier dd{margin:0;font-size:15px;line-height:1.9;color:var(--text-secondary,var(--muted))}
html:root[data-theme=dark] .insp-dossier p,html:root[data-theme=dark] .insp-dossier dd{color:#C8C2B8}
.insp-symbols{margin-top:10px!important;font-size:14px!important;opacity:.85}
.insp-morning{padding:16px 18px;border-radius:14px!important;border:1px solid rgba(212,175,55,.28);background:rgba(212,175,55,.05)}
.insp-aspects{display:grid;gap:12px;margin:0}
.insp-aspects div{display:grid;grid-template-columns:5.5em 1fr;gap:12px}
.insp-aspects dt{font-size:13px;letter-spacing:.12em;color:var(--gold)}
.insp-note{margin-top:22px!important;font-size:13px!important;opacity:.8}
.insp-echo{margin-top:26px!important;padding-top:18px;border-top:1px solid var(--line);color:var(--gold-hi)!important;letter-spacing:.04em}
.insp-source{margin-top:10px!important;font-size:13px!important}
.insp-source a{color:var(--muted);border-bottom:1px solid var(--line)}
@media(max-width:760px){
 dialog.inspector{width:calc(100vw - 16px);max-height:calc(100dvh - 16px);border-radius:20px!important}
 .insp-body{grid-template-columns:1fr;gap:28px;padding:44px 20px 32px}
 .insp-stage{position:static}
 .insp-pad{width:min(230px,62vw)}
 .insp-bar button{padding:7px 10px!important}
 .insp-aspects div{grid-template-columns:1fr;gap:2px}
}
/* 图鉴：放宽 page-shell 的 720px 上限，桌面每行可放 6 张；引导语不留孤字；搜索框高度与 iPhone 不自动放大 */
.page-shell.codex-page{max-width:1120px!important}
.codex-lead{max-width:34em;text-wrap:balance}
.codex-search{min-height:44px;padding:0 16px}
.codex-search input{min-height:0!important;height:auto;line-height:1.5}
@media(max-width:560px){.codex-search input{font-size:16px}}
.insp-astro{font-variant-emoji:text}

/* ===== 北斗仪式（src/dipper-ritual.ts）=====
   单色细线：只用 --fg / --muted / --line，不用金色、光晕和玻璃。星的亮度靠大小和不透明度。深色是黑底暖白星，浅色是纸底墨色星。 */
.ritual-switch{display:inline-flex;gap:2px;padding:3px;margin:4px auto 18px;border:1px solid var(--line);border-radius:999px!important}
.ritual-switch button{min-height:0!important;padding:5px 16px!important;border:0!important;border-radius:999px!important;background:transparent!important;font-size:13px;letter-spacing:.14em;color:var(--muted)!important}
.ritual-switch button[aria-pressed=true]{color:var(--fg)!important;box-shadow:inset 0 0 0 1px var(--fg)!important}
.dipper-ritual{position:relative;color:var(--fg)}
.dipper-meta{margin:0 0 14px;font-size:13px;letter-spacing:.12em;color:var(--muted)}
.dipper-meta span{display:block;margin-top:2px;font-size:12px;letter-spacing:.06em;opacity:.8}
.dipper-sky{position:relative;width:min(100%,520px);aspect-ratio:1;margin:0 auto;-webkit-user-select:none;user-select:none}
.dipper-sky canvas,.dipper-svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.dipper-svg{overflow:visible}
.dp-rim{fill:none;stroke:var(--fg);stroke-width:1;opacity:.35;vector-effect:non-scaling-stroke}
.dp-grid{fill:none;stroke:var(--fg);stroke-width:1;opacity:.09;vector-effect:non-scaling-stroke}
.dp-horizon{fill:none;stroke:var(--fg);stroke-width:1;stroke-dasharray:4 5;opacity:.45;vector-effect:non-scaling-stroke}
.dp-label{font-family:var(--font-reading);font-size:.066px;letter-spacing:.006px;fill:var(--muted)}
.dp-horizon-label{font-size:.052px}
.dp-slot{fill:none;stroke:var(--fg);stroke-width:1;opacity:.26;vector-effect:non-scaling-stroke;transition:opacity .2s}
.dp-slot.is-near{opacity:.8}.dp-slot.is-chosen{opacity:1}.dp-slot.is-taken{opacity:0}
.dp-line{fill:none;stroke:var(--fg);stroke-width:1;opacity:.8;stroke-dasharray:1;stroke-dashoffset:1;vector-effect:non-scaling-stroke}
.dp-line.is-drawn{stroke-dashoffset:0}
.dp-pointer{stroke:var(--fg);stroke-width:1;stroke-dasharray:3 4;opacity:0;vector-effect:non-scaling-stroke;transition:opacity .5s}
.dp-pointer.is-on{opacity:.45}
.dp-star{fill:var(--fg);opacity:.42;transform-box:fill-box;transform-origin:center;transition:opacity .3s,transform .35s cubic-bezier(.22,1,.36,1)}
.dp-star.is-below{opacity:.2}
.dp-star.is-lit{opacity:1;transform:scale(1.55)}
.dp-star.is-below.is-lit{opacity:.55}
.dp-ripple{fill:none;stroke:var(--fg);stroke-width:1;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center;pointer-events:none}
.dp-alcor{fill:var(--fg);opacity:.55}
.dp-pole-star{fill:var(--fg)}
.dipper-hits{position:absolute;inset:0}
.dp-hit{position:absolute;width:44px;height:44px;margin:-22px 0 0 -22px;padding:0!important;min-height:0!important;border:0!important;border-radius:50%!important;background:transparent!important;cursor:pointer;touch-action:none;--press-scale:.9}
.dp-hit:focus-visible{outline:1px solid var(--fg);outline-offset:-8px}
.dp-hit:disabled{cursor:default}
.dipper-hint{min-height:1.7em;margin:16px 0 4px;font-size:14px;letter-spacing:.12em;color:var(--fg)}
.dipper-status,.dipper-season{max-width:34em;margin:6px auto 0;font-size:13px;line-height:1.8;color:var(--muted);text-wrap:balance}
.dipper-season a{margin-left:4px;color:var(--muted);border-bottom:1px solid var(--line)}
.dipper-actions{margin:16px 0 4px;min-height:44px}
.minimal-ritual .dipper-all{display:inline-flex!important;align-items:center;justify-content:center!important;gap:10px;width:auto!important;min-width:0!important;min-height:0!important;margin:0 auto;padding:10px 26px!important;font-size:14px;letter-spacing:.2em;font-weight:400!important;color:var(--fg)!important;border:1px solid var(--line)!important;border-radius:999px!important;background:transparent!important}
.minimal-ritual .dipper-all span{font-size:11px;color:var(--muted)}
.minimal-ritual .dipper-all:disabled{opacity:.35}
.dipper-pick{position:absolute;z-index:6;overflow:hidden;border:1px solid var(--line);border-radius:3px!important;background:var(--cb-bg-b)}
.dipper-pick svg{display:block;width:100%;height:100%}
.dipper-note{margin:-4px 0 28px;font-size:13px;letter-spacing:.1em;color:var(--muted)}
.dipper-settings{margin:28px 0;padding:0;border:0;display:grid;gap:14px;text-align:left}
.dipper-settings legend{margin-bottom:10px;font-size:13px;letter-spacing:.22em;color:var(--muted)}
.dipper-settings .check-row{display:flex;align-items:center;gap:10px;font-size:14px}
.dipper-settings .setting-note{margin:0;font-size:13px;line-height:1.8;color:var(--muted)}
@media(prefers-reduced-motion:reduce){.dp-star,.dp-slot,.dp-pointer{transition:none!important}}
/* 北斗方式：标题收紧，星空在手机上铺满屏宽；点击交给整块星空判断，按钮只留给键盘和读屏 */
.minimal-ritual.dipper-mode .ritual-date{margin-bottom:12px}
.minimal-ritual.dipper-mode h1{margin-bottom:14px}
.minimal-ritual.dipper-mode .ritual-switch{margin-bottom:12px}
.dp-hit{pointer-events:none}
.dipper-hits{touch-action:none}
.dipper-mood-hint{margin-top:22px!important;font-size:13px!important}
.dp-label{font-size:.058px}
@media(max-width:560px){.dipper-sky{width:100vw;margin-left:calc(50% - 50vw)}}
.dp-compass{font-size:.05px;fill:var(--muted);opacity:.8}

/* 北斗七星牌阵牌板（src/components/tarot/dipper-board.tsx）：单色细线，宽屏显示，手机隐藏改用下方列表 */
.dipper-board{position:relative;width:min(100%,860px);aspect-ratio:100/72;margin:48px auto 8px}
.dipper-board svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.dipper-board polyline{fill:none;stroke:var(--fg);stroke-width:1;opacity:.35;vector-effect:non-scaling-stroke}
.dipper-slot{position:absolute;width:10%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:6px}
.dipper-slot img,.dipper-empty{display:block;width:100%;aspect-ratio:1/1.715;border:1px solid var(--line);background:var(--bg);object-fit:cover}
.dipper-empty{border-style:dashed}
.dipper-slot figcaption{display:flex;flex-direction:column;align-items:center;gap:1px;white-space:nowrap}
.dipper-slot b{font-weight:400;font-size:12px;letter-spacing:.1em;color:var(--fg)}
.dipper-slot small{font-size:11px;color:var(--muted)}
@media(max-width:700px){.dipper-board{display:none}}
/* 牌堆有 role=button，会被上面“控件统一 touch-action:manipulation”的规则盖掉原本的 touch-action:none，
   手指一划浏览器就当成滚动、发出 pointercancel，划动切牌失效。这里锁回 none（牌扇选牌区同理）。 */
.deck-pile,.ritual-scene[data-stage=pick] .deck-fan{touch-action:none!important}
/* 牌背只是图案，不接收指针事件，触摸直接落到外层的牌堆和牌上 */
svg.card-back{pointer-events:none}
/* 站点承诺：抽牌页标题下、日历页顶部。细金线 + 两行，手机上冒号后换行 */
.brand-promise{--bp:#9C7A3C;display:flex;flex-wrap:wrap;justify-content:center;gap:0 .2em;margin:2px auto 22px;max-width:30em;padding:10px 0;border-top:1px solid rgba(197,160,89,.28);border-bottom:1px solid rgba(197,160,89,.28);font-size:14px;line-height:1.9;letter-spacing:.12em;color:var(--bp);text-align:center}
html:root[data-theme=dark] .brand-promise{--bp:#D9C29A}
.brand-promise span{white-space:nowrap}
.home-promise{margin:0 auto 26px}
@media (max-width:520px){.brand-promise{flex-direction:column;align-items:center;font-size:13px;letter-spacing:.08em}}
/* 心情开场白：在解读最前面，左侧一道金线 */
.daily-reading .mood-lead{margin:0 0 26px;padding:2px 0 2px 16px;border-left:1px solid rgba(197,160,89,.6);line-height:1.9}
.mood-lead .mood-tag{display:block;margin-bottom:4px;font-size:12px;letter-spacing:.24em;color:#9C7A3C}
html:root[data-theme=dark] .mood-lead .mood-tag{color:#C5A059}
/* 这张牌你以前抽到过 */
.daily-reading .card-past{margin-top:30px;padding-top:18px;border-top:1px solid var(--line)}
.card-past blockquote{margin:10px 0 6px;padding:0 0 0 14px;border-left:1px solid var(--line);color:var(--fg);font-style:normal}
.card-past .past-empty{color:var(--muted);font-size:14px}
.card-past .past-day{margin-top:8px}
/* ============ 日历 · 天文历书（左天象 · 右人文） ============
   基础样式是竖排（手机、以及导出日签图片时）；≥1024px 且不在导出时换成左右两栏。 */
.minimal-calendar{--al-gold:#C5A56E;--al-gold-hi:#E6D2B5;--al-ring:rgba(197,165,110,.28);--al-line:rgba(197,165,110,.25);--al-text:#E5DFD5;--al-sub:#A89F91;--al-body:#D8D2C7;--al-hero:#F4EFE6;--al-pill:rgba(255,255,255,.02);--al-hi:rgba(255,255,255,.1);--moon:220px}
html:root[data-theme=light] .minimal-calendar{--al-gold:#8A6D3B;--al-gold-hi:#9C7A3C;--al-ring:rgba(138,109,59,.38);--al-line:rgba(138,109,59,.3);--al-text:#2E2A24;--al-sub:#6E665A;--al-body:#3A352E;--al-hero:#1F1B16;--al-pill:rgba(255,255,255,.45);--al-hi:rgba(255,255,255,.8)}
.almanac-grid{display:flex;flex-direction:column;align-items:center;padding:20px 0 0;text-align:center}
.almanac-sky,.almanac-text{display:contents}
.almanac-text .date-line{order:1;flex-wrap:wrap}
.almanac-grid .moon-stage{order:2;margin:26px auto 0}
.almanac-plaque{order:3;display:flex;flex-direction:column;align-items:center}
.almanac-fade{order:4;width:100%;display:flex;flex-direction:column;align-items:center}
.almanac-grid .export-date{order:5}
/* 月相与观测刻度环 */
.almanac-grid .minimal-moon{width:var(--moon);height:var(--moon)}
.almanac-grid .real-moon{left:20.833%;top:20.833%;width:58.333%;height:58.333%}
.almanac-grid .real-moon.shown{filter:drop-shadow(0 0 2px rgba(232,224,208,.16)) drop-shadow(0 0 18px rgba(232,224,208,.08))}
html:root[data-theme=light] .almanac-grid .real-moon.shown{filter:drop-shadow(0 0 2px rgba(60,50,30,.18)) drop-shadow(0 6px 16px rgba(60,50,30,.12))}
.almanac-grid .reticle{color:var(--al-gold)}
/* 农历与节气铭牌 */
.almanac-grid .calendar-caption{margin:26px 0 14px;font-size:15px;letter-spacing:.18em;color:var(--al-text)}
.almanac-grid .calendar-season{position:relative;display:inline-flex;align-items:center;gap:10px;margin:0;padding:6px 18px;font-size:13px;letter-spacing:.15em;color:var(--al-sub);border:1px solid var(--al-line);border-radius:999px!important}
.almanac-grid .calendar-season::before,.almanac-grid .calendar-season::after{content:'';position:absolute;top:50%;width:48px;height:1px}
.almanac-grid .calendar-season::before{right:100%;margin-right:10px;background:linear-gradient(90deg,transparent,var(--al-line))}
.almanac-grid .calendar-season::after{left:100%;margin-left:10px;background:linear-gradient(90deg,var(--al-line),transparent)}
.almanac-grid .season-dot{width:5px;height:5px;border:1px solid var(--al-gold);border-radius:50%!important;flex:none}
/* 日期控制条：克制的微圆角，顶部一道受光线 */
.minimal-calendar .date-line{gap:12px}
.minimal-calendar .date-pill,.minimal-calendar .date-line input{border:1px solid rgba(197,165,110,.24)!important;border-radius:10px!important;background:var(--al-pill)!important;box-shadow:inset 0 1px 0 var(--al-hi)!important}
.minimal-calendar .date-pill{--press-scale:.96;color:var(--al-body)}
.minimal-calendar .date-line input{width:168px;color:var(--al-text)}
.minimal-calendar .today-reset{margin:0;font-size:13px}
/* 星历信息带 */
.almanac-grid .calendar-sky{display:flex;flex-wrap:wrap;justify-content:center;row-gap:6px;width:100%;max-width:560px;margin:26px 0 0;padding:11px 0;border-top:.5px solid var(--al-line);border-bottom:.5px solid var(--al-line);font-size:13px;letter-spacing:.08em;color:var(--al-sub)}
.calendar-sky>*{display:inline-flex;align-items:center;padding:0 16px;white-space:nowrap;color:inherit}
.calendar-sky>*+*{border-left:1px solid var(--al-line)}
.calendar-sky a{border-bottom:0!important;text-decoration:underline;text-decoration-color:var(--al-line);text-underline-offset:4px}
.sky-mark{width:13px;height:13px;margin-right:8px;color:var(--al-gold);flex:none}
/* 大字核心词 */
.keyword-kicker{display:flex;align-items:center;gap:12px;margin:30px 0 0;font-family:var(--font-display);font-size:10px;letter-spacing:.3em;color:var(--al-gold)}
.keyword-kicker::after{content:'';width:32px;height:1px;background:var(--al-gold);opacity:.6}
.almanac-grid h1{margin:6px 0 24px!important;font-size:clamp(52px,15vw,64px)!important;font-weight:300;letter-spacing:.12em;color:var(--al-hero)}
/* 两条行动建议 */
.almanac-grid .daily-actions{list-style:none;width:100%;max-width:30em;margin:0 auto;padding:0;font-size:16px;line-height:1.75}
.daily-actions li{display:flex;align-items:baseline;gap:14px;margin:0 0 10px;padding:12px 20px;border-left:1px solid rgba(197,165,110,.35);background:linear-gradient(90deg,rgba(197,165,110,.05) 0%,transparent 100%);color:var(--al-body);letter-spacing:.06em;text-align:left}
.daily-actions .action-no{flex:none;font-family:var(--font-display);font-size:11px;letter-spacing:.2em;color:var(--al-gold)}
.almanac-grid .export-date{margin:28px 0 0}
/* 手机：首屏放下月相、农历、节气和星历带 */
@media(max-width:1023px){body .page-shell.minimal-calendar{padding-top:20px!important}.minimal-calendar .home-promise{margin-bottom:6px}}
@media(max-width:520px){.minimal-calendar{--moon:min(196px,52vw)}.almanac-grid{padding-top:14px}.almanac-grid .moon-stage{margin-top:18px}.almanac-grid .calendar-caption{margin:18px 0 10px;font-size:14px}.almanac-grid .calendar-season{font-size:12px;padding:5px 14px}.almanac-grid .calendar-season::before,.almanac-grid .calendar-season::after{width:28px}.almanac-grid .calendar-sky{font-size:12px;margin-top:20px}.calendar-sky>*{padding:0 10px}.minimal-calendar .date-line{gap:8px}.minimal-calendar .date-line input{width:150px}.daily-actions li{padding:10px 14px;font-size:15px}}
/* 导出日签：固定竖版宽度，日期控件已在导出时滤掉 */
.almanac-grid.exporting{width:600px;max-width:none;margin:0 auto;padding:44px 40px 36px;--moon:240px}
/* 桌面：左天象 · 右人文 */
@media(min-width:1024px){
 body .page-shell.minimal-calendar{max-width:1340px!important;padding:24px 56px 56px!important}
 .minimal-calendar .home-promise{margin:0 auto 4px}
 .almanac-grid:not(.exporting){--moon:min(32vw,calc(100vh - 380px),470px);display:grid;grid-template-columns:52fr 48fr;align-items:center;column-gap:clamp(40px,5vw,96px);padding:18px 0 8px;text-align:left}
 .almanac-grid:not(.exporting) .almanac-sky{display:flex;flex-direction:column;align-items:center}
 .almanac-grid:not(.exporting) .almanac-text{display:flex;flex-direction:column;align-items:flex-start;max-width:600px}
 .almanac-grid:not(.exporting) .moon-stage{margin:0 auto}
 .almanac-grid:not(.exporting) .almanac-fade{align-items:flex-start}
 .almanac-grid:not(.exporting) .date-line{justify-content:flex-start}
 .almanac-grid:not(.exporting) .calendar-sky{justify-content:flex-start;max-width:none;margin-top:34px}
 .almanac-grid:not(.exporting) .calendar-sky>:first-child{padding-left:0}
 .almanac-grid:not(.exporting) .keyword-kicker{margin-top:36px}
 .almanac-grid:not(.exporting) h1{font-size:clamp(3.75rem,5.5vw,5.25rem)!important;margin:8px 0 30px!important;text-align:left}
 .almanac-grid:not(.exporting) .daily-actions{max-width:none;margin:0;font-size:17px}
 .almanac-grid:not(.exporting) .export-date{grid-column:1/-1;text-align:center;margin:14px 0 0}
}
/* 星历带：桌面一行「☉ 太阳 · 天蝎座」；手机三等分，上标签下星座 */
.calendar-sky .eph-v::before{content:'·';margin:0 .45em;opacity:.7}
@media(min-width:1024px) and (max-width:1279px){.almanac-grid:not(.exporting) .calendar-sky{font-size:12px;letter-spacing:.04em}.almanac-grid:not(.exporting) .calendar-sky>*{padding:0 11px}}
@media(min-width:1024px){body .page-shell.minimal-calendar{max-width:1212px!important}}
@media(max-width:520px){.almanac-grid .calendar-sky{display:grid;grid-template-columns:repeat(3,1fr);padding:10px 0}.calendar-sky>.eph{flex-direction:column;gap:3px;padding:0 4px;white-space:normal}.calendar-sky .eph-k{display:inline-flex;align-items:center;font-size:11px;letter-spacing:.16em;opacity:.85}.calendar-sky .eph-v{color:var(--al-body);letter-spacing:.06em}.calendar-sky .eph-v::before{display:none}.sky-mark{width:11px;height:11px;margin-right:5px}}
@media(max-width:360px){.minimal-calendar{--moon:150px}.minimal-calendar .date-line{gap:6px}.minimal-calendar .date-pill{padding:5px 9px!important;letter-spacing:.04em}.minimal-calendar .date-line input{width:128px;font-size:15px;padding:5px 8px!important}.almanac-grid .moon-stage{margin-top:12px}.almanac-grid .calendar-caption{margin:12px 0 8px}.minimal-calendar .home-promise{padding:6px 0}}
.calendar-sky .eph-k{display:inline-flex;align-items:center}.calendar-sky .sky-mark{display:inline-block}
/* 导出时两栏各自是普通竖排块（不用 display:contents，截图库处理它不稳） */
.almanac-grid.exporting .almanac-sky,.almanac-grid.exporting .almanac-text{display:flex;flex-direction:column;align-items:center;width:100%}
.almanac-grid.exporting .almanac-sky{order:1}.almanac-grid.exporting .almanac-text{order:2}
html:root[data-theme=light] .almanac-grid .reticle{color:#5E4A28}


/* ===== 实体牌与宽屏舞台（2026-11）===== */
/* 牌框：2px 哑光古铜金，内侧一道顶光，像斜切的金属边 */
.pile-card,.fan-card,.card-scene .tarot.chosen-card{border:2px solid #9e7f47!important;box-shadow:inset 0 1px 0 rgba(255,236,190,.4),inset 0 0 0 1px rgba(255,236,190,.1),0 20px 40px -15px rgba(0,0,0,.85)!important}
/* 牌堆最底下那张向右下叠出约 9px 的书口金边：明暗交替的拉丝古铜，像整副烫金边的牌叠在一起 */
.deck-pile .pile-card:nth-child(2){box-shadow:inset 0 1px 0 rgba(255,236,190,.4),1px 1px 0 #6e5630,2px 2px 0 #d4b87a,3px 3px 0 #8a6f3e,4px 4px 0 #c9ad72,5px 5px 0 #5e4a24,6px 6px 0 #b89758,7px 7px 0 #7a6136,8px 8px 0 #a88a50,9px 9px 0 #4a3a1c,16px 22px 34px rgba(0,0,0,.6)!important}
html:root[data-theme=light] .deck-pile .pile-card:nth-child(2){box-shadow:inset 0 1px 0 rgba(255,236,190,.4),1px 1px 0 #6e5630,2px 2px 0 #d4b87a,3px 3px 0 #8a6f3e,4px 4px 0 #c9ad72,5px 5px 0 #5e4a24,6px 6px 0 #b89758,7px 7px 0 #7a6136,8px 8px 0 #a88a50,9px 9px 0 #4a3a1c,14px 20px 30px rgba(60,40,10,.28)!important}
/* 「替我选一张」：三段式矩形按钮——星芒 · 文案 · 箭头 */
.minimal-ritual .primary.draw{display:inline-grid!important;grid-template-columns:52px 1fr 56px;gap:0!important;align-items:stretch;width:min(300px,100%)!important;height:54px;padding:0!important;border-radius:0!important;border:1px solid rgba(197,165,110,.42)!important;background:rgba(12,15,22,.55)!important;letter-spacing:.16em}
html:root[data-theme=light] .minimal-ritual .primary.draw{background:rgba(255,252,244,.35)!important;border-color:rgba(126,96,48,.45)!important}
.minimal-ritual .primary.draw>span{display:flex;align-items:center;justify-content:center}
.minimal-ritual .primary.draw .draw-star{font-size:11px;color:#c5a56e;text-shadow:0 0 6px rgba(230,198,135,.6)}
.minimal-ritual .primary.draw .draw-main{flex-direction:column;font-size:15px;line-height:1.2;color:var(--rt-title,var(--fg))}
.draw-main small{font-family:var(--font-display)!important;font-size:9px;letter-spacing:.28em;color:rgba(197,165,110,.75);margin-top:5px}
.minimal-ritual .primary.draw .draw-arrow{border-left:1px solid rgba(197,165,110,.3)}
.draw-arrow svg{width:30px;height:10px;fill:none;stroke:#c5a56e;stroke-width:1}
.ritual-eyebrow,.brand-sub{display:none}

/* 桌面宽屏（≥1024px）：左栏讲述与操作，右栏是星盘和牌堆的舞台；抽完牌后左边是牌，右边是解读。手机上不变；北斗方式保持原样 */
@media (min-width:1024px){
 .shared-header{max-width:1440px;width:calc(100% - 128px)}
 .brand-sub{display:inline;margin-left:18px;font-family:var(--font-display)!important;font-size:10px;letter-spacing:.28em;opacity:.45}
 body #app>main:has(>.minimal-ritual:not(.dipper-mode)),body #app>main:has(>.minimal-result){max-width:1440px!important;padding:6vh 64px!important}
 .minimal-ritual:not(.dipper-mode){position:relative;display:grid;grid-template-columns:minmax(0,42fr) minmax(0,58fr);grid-template-rows:1fr repeat(8,auto) 1fr auto;grid-template-areas:". stage" "eye stage" "title stage" "promise stage" "hint stage" "mood stage" "sw stage" "act stage" "keep stage" ". stage" ". phint";column-gap:4vw;text-align:left;min-height:min(78vh,760px)}
 .minimal-ritual:not(.dipper-mode)>.ritual-date{display:none}
 .ritual-eyebrow{display:flex;grid-area:eye;align-items:center;gap:14px;margin:0 0 28px;font-family:var(--font-display)!important;font-size:11px;letter-spacing:.28em;color:var(--muted)}
 .ritual-eyebrow i{width:32px;height:1px;background:#c5a56e}
 .ritual-eyebrow span:last-child{letter-spacing:.12em}
 .minimal-ritual:not(.dipper-mode)>h1{grid-area:title;font-size:clamp(2.5rem,4vw,3.75rem)!important;font-weight:300;line-height:1.15;margin:0 0 18px;padding-left:0!important;text-indent:0;text-align:left}
 html:root:not([data-theme=light]) .minimal-ritual:not(.dipper-mode)>h1{color:#eae4dc}
 .minimal-ritual:not(.dipper-mode)>.brand-promise{grid-area:promise;justify-self:start;justify-content:flex-start;text-align:left;margin:0 0 24px}
 .minimal-ritual:not(.dipper-mode)>.ritual-hint{grid-area:hint;margin:0 0 32px;text-align:left}
 .minimal-ritual:not(.dipper-mode)>.mood-row{grid-area:mood;display:grid;grid-template-columns:repeat(3,max-content);justify-content:start;gap:10px;margin:0 0 28px;max-width:none}
 .minimal-ritual:not(.dipper-mode) .mood-chip:not(.on){border-color:rgba(197,165,110,.2)!important;background:rgba(12,15,22,.65)!important}
 html:root[data-theme=light] .minimal-ritual:not(.dipper-mode) .mood-chip:not(.on){background:transparent!important;border-color:rgba(126,96,48,.25)!important}
 .minimal-ritual:not(.dipper-mode)>.ritual-switch{grid-area:sw;justify-self:start;margin:0 0 40px}
 .minimal-ritual:not(.dipper-mode)>.primary.draw{grid-area:act;justify-self:start;margin:0;width:300px!important}
 .minimal-ritual:not(.dipper-mode)>.keep-card{grid-area:keep;justify-self:start;margin:16px 0 0}
 .minimal-ritual:not(.dipper-mode)>.ritual-scene{grid-area:stage;align-self:center;justify-self:center;width:420px;height:300px;scale:1.3;transform-origin:50% 70%;margin:0!important;z-index:1}
 .minimal-ritual:not(.dipper-mode)>.pick-hint{grid-area:phint;margin:12px 0 0}
 /* 舞台背后的巨型星盘：0.5px 同心刻度环，左上角一组北斗七星，很淡 */
 .minimal-ritual:not(.dipper-mode)::before{content:'';position:absolute;z-index:0;pointer-events:none;width:560px;height:560px;left:calc(71% + 1.16vw - 360px);top:50%;margin-top:-340px;opacity:.85;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 540 540' fill='none' stroke='%23c5a56e' stroke-width='.5'%3E%3Ccircle cx='270' cy='270' r='266' stroke-opacity='.28'/%3E%3Ccircle cx='270' cy='270' r='256' stroke-opacity='.18'/%3E%3Ccircle cx='270' cy='270' r='261' stroke-width='9' stroke-opacity='.26' stroke-dasharray='.5 22.27'/%3E%3Ccircle cx='270' cy='270' r='246' stroke-width='14' stroke-opacity='.3' stroke-dasharray='.6 128.2'/%3E%3Ccircle cx='270' cy='270' r='196' stroke-opacity='.12'/%3E%3Cpath d='M270 0V540M0 270H540' stroke-opacity='.06'/%3E%3Cpath d='M58 74L88 84L116 97L142 114L150 146L188 148L192 118L142 114' stroke-opacity='.24'/%3E%3Cg fill='%23d9bd86' stroke='none' fill-opacity='.55'%3E%3Ccircle cx='58' cy='74' r='1.6'/%3E%3Ccircle cx='88' cy='84' r='1.4'/%3E%3Ccircle cx='116' cy='97' r='1.5'/%3E%3Ccircle cx='142' cy='114' r='1.4'/%3E%3Ccircle cx='150' cy='146' r='1.6'/%3E%3Ccircle cx='188' cy='148' r='1.7'/%3E%3Ccircle cx='192' cy='118' r='1.6'/%3E%3Ccircle cx='420' cy='60' r='1.1'/%3E%3Ccircle cx='470' cy='410' r='1'/%3E%3Ccircle cx='96' cy='452' r='1.2'/%3E%3C/g%3E%3C/svg%3E") center/contain no-repeat}
 html:root[data-theme=light] .minimal-ritual:not(.dipper-mode)::before{filter:brightness(.55)}
 .minimal-result{display:grid;grid-template-columns:minmax(0,40fr) minmax(0,60fr);grid-template-rows:repeat(6,auto) 1fr auto;column-gap:6vw;align-items:start}
 .minimal-result>*{grid-column:1}
 .minimal-result>.ritual-date{margin-bottom:32px}
 .minimal-result>.tarot{width:300px!important;margin-bottom:40px}
 .minimal-result>h1{font-size:clamp(36px,3.4vw,52px)!important}
 .minimal-result>.orientation{margin-bottom:32px}
 .minimal-result>.daily-reading{grid-column:2;grid-row:1/8;max-width:60ch;margin:0;text-align:left}
 .minimal-result>.daily-reading>h2:first-child{margin-top:0}
 .minimal-result>.review-block{grid-column:2;grid-row:8;max-width:60ch;margin:24px 0 0}
 .minimal-result>.review-block .evening-question,.minimal-result>.review-block .single-review{margin-left:0}
}

/* ===== 牌阵解读（围绕问题）===== */
/* 「这件事关于」：自动判断的领域，可以点选改掉 */
.q-domain{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-top:-12px;font-size:13px;color:var(--muted)}
.q-domain span{margin-right:4px;letter-spacing:.08em}
.tarot-workbench .q-domain button{border:1px solid var(--line)!important;min-height:0;padding:5px 12px;font-size:13px;letter-spacing:.04em;color:var(--muted)!important}
.tarot-workbench .q-domain button[aria-pressed=true]{color:var(--fg)!important;border-color:rgba(197,160,89,.7)!important;background:rgba(197,160,89,.08)!important}
.q-note,.reading-notice{margin:-8px 0 0;padding:8px 0 8px 14px;border-left:1px solid rgba(197,160,89,.6);font-size:14px;line-height:1.8;color:var(--muted)}
.reading-notice{margin:0 0 24px}
/* 每张牌放回问题里的那段话是主角，原本的牌义收进折叠里 */
.drawn-card .in-question{font-size:17px;line-height:1.95;text-align:left;max-width:44ch;margin:20px auto}
.drawn-card .card-plain{max-width:44ch;margin:0 auto 20px;text-align:left;font-size:14px;color:var(--muted)}
.drawn-card .card-plain summary{font-size:13px;letter-spacing:.08em}
.drawn-card .card-plain p{font-size:15px;margin:10px 0 0}
.consultation-reading .reading-headline{font-size:19px;line-height:1.9;padding-left:16px;border-left:1px solid rgba(197,160,89,.7)}
.consultation-reading .connection-copy{margin:0 0 14px}
/* 「我会这样读你的问题」：塔罗师先把问题换成牌能回答的说法 */
.q-reframe{margin:-8px 0 0;font-size:15px;line-height:1.8}
.q-reframe span{display:block;font-size:12px;letter-spacing:.18em;color:var(--muted);margin-bottom:2px}
.q-reframe em{display:block;font-style:normal;font-size:13px;color:var(--muted)}
/* ===== 牌阵抽牌：拱桥牌扇（ribbon-deck.tsx）===== */
/* 舞台打破页面的窄栏，铺满整个屏幕宽度 */
.deck-section.deck-ribbon{width:100vw;max-width:none;margin:48px 0 0 calc(50% - 50vw);padding:0}
.ribbon{max-width:1360px;margin:0 auto;padding:0 24px;display:grid;gap:14px}
.ribbon-head{display:grid;gap:8px;text-align:left}
.ribbon-eyebrow{display:flex;align-items:center;gap:12px;width:max-content;margin:0;padding-bottom:8px;border-bottom:1px solid rgba(197,165,110,.35);font-size:13px;letter-spacing:.2em;color:#c5a56e}
.ribbon-eyebrow span{font-family:var(--font-display)!important;font-size:10px;letter-spacing:.3em;opacity:.75}
.ribbon-question{margin:0;font-size:16px;line-height:1.7}
.ribbon-question small{display:block;font-size:11px;letter-spacing:.2em;color:var(--muted)}
.ribbon-stage{position:relative;outline:none;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}
.ribbon-stage:focus-visible{outline:1px solid rgba(197,165,110,.5)!important;outline-offset:4px}
.ribbon-anchor{position:absolute;left:50%;width:0;height:0}
.ribbon-card{position:absolute;left:0;top:0;overflow:hidden;cursor:pointer;will-change:transform;background:var(--cb-bg-b,#0b0e14);border:1px solid rgba(197,165,110,.55);border-radius:5px!important;
 box-shadow:-1.5px 0 0 rgba(212,184,122,.45),0 10px 18px -10px rgba(0,0,0,.85)!important}
.ribbon-card svg{display:block;width:100%;height:100%;pointer-events:none}
.ribbon-card.is-active{border-color:rgba(230,198,135,.95);box-shadow:0 22px 40px -14px rgba(0,0,0,.9),0 0 24px rgba(214,184,128,.35)!important}
/* 交错切入时，古铜金的边缘流光一张接一张掠过 */
.ribbon-card::after{content:'';position:absolute;inset:0;pointer-events:none;opacity:0;background:linear-gradient(115deg,transparent 35%,rgba(240,214,160,.45) 50%,transparent 65%);background-size:260% 100%}
.is-riffle .ribbon-card::after{animation:ribbon-sheen .5s ease-out both}
@keyframes ribbon-sheen{0%{opacity:0;background-position:120% 0}30%{opacity:1}100%{opacity:0;background-position:-20% 0}}
/* 呼吸归正：整摞轻轻一缩，泛起一圈很淡的金色涟漪 */
.is-settle .ribbon-anchor{animation:ribbon-breathe .22s ease-out}
@keyframes ribbon-breathe{from{transform:scale(1.04)}to{transform:scale(1)}}
.ribbon-ripple{position:absolute;width:160px;height:160px;margin:-80px 0 0 -80px;border:1px solid rgba(214,184,128,.6);border-radius:50%!important;opacity:0;pointer-events:none}
.is-settle .ribbon-ripple{animation:ribbon-ripple .9s ease-out}
@keyframes ribbon-ripple{from{transform:scale(.5);opacity:.6}to{transform:scale(2.4);opacity:0}}
.ribbon-nav{position:absolute;top:50%;z-index:600;width:34px;height:34px;margin-top:-17px;display:flex!important;align-items:center;justify-content:center;padding:0!important;min-height:0!important;
 border:1px solid rgba(197,165,110,.35)!important;border-radius:50%!important;font-size:20px;line-height:1;color:#c5a56e!important}
.ribbon-nav.prev{left:0}.ribbon-nav.next{right:0}
@media(max-width:640px){.ribbon-nav{display:none!important}.ribbon{padding:0 16px}}
.ribbon-hint{margin:0;text-align:center;font-size:13px;letter-spacing:.12em;color:var(--rt-hint,var(--muted))}
.ribbon-tray{display:flex;flex-wrap:wrap;justify-content:center;gap:16px 22px}
.ribbon-slot{display:grid;justify-items:center;gap:8px}
.slot-well{position:relative;overflow:hidden;border:1px dashed rgba(197,165,110,.45);border-radius:5px!important;transition:border-color .3s}
.ribbon-slot.is-filled .slot-well{border-style:solid;border-color:rgba(214,184,128,.85)}
.slot-card{position:absolute;inset:0;animation:slot-in .25s ease-out}.slot-card svg{display:block;width:100%;height:100%}
@keyframes slot-in{from{opacity:.4}to{opacity:1}}
.slot-label{display:flex;align-items:center;gap:6px;font-size:12px;letter-spacing:.06em;color:var(--muted)}
.slot-label button{min-height:0!important;padding:0 4px!important;border:0!important;font-size:15px;line-height:1;color:var(--muted)!important}
.ribbon-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:6px}
.tarot-workbench .ribbon-btn{display:inline-flex!important;align-items:center;gap:8px;min-height:0!important;padding:10px 22px!important;border:1px solid rgba(197,165,110,.42)!important;border-radius:999px!important;font-size:14px;letter-spacing:.12em}
.ribbon-btn svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.3}
.tarot-workbench .ribbon-confirm:not(:disabled){background:linear-gradient(135deg,#dcc28a,#9e7f47)!important;color:#1a140a!important;border-color:transparent!important;transition:background .4s,color .4s}
/* 选中的牌飞向牌位时的替身，挂在页面最上层 */
.ribbon-ghost{position:fixed;z-index:9000;pointer-events:none;overflow:hidden;background:var(--cb-bg-b,#0b0e14);border:1px solid rgba(230,198,135,.9);border-radius:5px!important;box-shadow:0 20px 40px -12px rgba(0,0,0,.9)!important}
.ribbon-ghost svg{display:block;width:100%;height:100%}
@media(prefers-reduced-motion:reduce){.ribbon-card,.ribbon-anchor,.ribbon-ripple,.ribbon-card::after,.slot-card{animation:none!important;transition:none!important}}

/* 直接回答：结论的第一句，比后面的整体描述更醒目 */
.consultation-reading .reading-answer{font-size:20px;line-height:1.85;margin:0 0 12px;color:var(--rt-title,var(--fg))}

.almanac-plaque .home-draw{display:inline-flex;align-items:center;gap:.7em;min-height:44px;margin-top:12px;border-bottom:1px solid var(--line);color:var(--fg);font-size:16px;letter-spacing:.08em;text-decoration:none}
.home-draw:hover,.home-fortune summary:hover{color:var(--muted)}
.home-fortune{max-width:46ch;margin:40px auto 24px;text-align:center}
.home-fortune summary{display:list-item;width:fit-content;margin:auto;padding:12px 0;cursor:pointer}
.home-fortune .birth-inline{margin-top:12px;padding-top:24px}

/* ===== 全站色彩、排版与微交互（2026-11 审美升级）=====
   语义化色彩变量：深色「玄夜星辉」、浅色「羊皮卷古籍」。旧变量（--fg、--muted、--line、--gold……）都映射到这里，
   各页面不再各自写死颜色。浅色模式下的强调金改成低明度的古董暗金，保证在米白底上对比度达到 WCAG AA。 */
html:root,html:root[data-theme=dark]{--bg-primary:#0F0F11;--bg-surface:#0F0F11;--bg-elevated:#16161A;--bg-glass:rgba(22,22,26,.78);
 --text-primary:#F4EFE6;--text-secondary:#C8C4BC;--text-muted:#8E8A82;--accent-gold:#D4AF37;--accent-gold-bright:#E5C158;
 --border-subtle:rgba(212,175,55,.18);--border-hover:rgba(212,175,55,.45);--watermark-opacity:.07;--dawn-glow:rgba(212,175,55,.07);
 --fg:var(--text-primary);--ink:var(--text-primary);--muted:var(--text-muted);--line:var(--border-subtle);
 --ease-soft:cubic-bezier(.22,1,.36,1)}
html:root[data-theme=light]{--bg-primary:#F4EFE6;--bg-surface:#F4EFE6;--bg-elevated:#FAF7F2;--bg-glass:rgba(250,247,242,.85);
 --text-primary:#1C1917;--text-secondary:#44403C;--text-muted:#6F6862;--accent-gold:#8C621E;--accent-gold-bright:#724E14;
 --border-subtle:rgba(140,98,30,.22);--border-hover:rgba(140,98,30,.5);--watermark-opacity:.035;--dawn-glow:rgba(140,98,30,.05);
 --fg:var(--text-primary);--ink:var(--text-primary);--muted:var(--text-muted);--line:var(--border-subtle)}
/* 浅色模式：各组件里写在局部的金色变量统一换成古董暗金（用 * 才能盖过写在组件上的同名变量） */
html:root[data-theme=light] *{--gold:var(--accent-gold);--gold-hi:var(--accent-gold-bright);--al-gold:var(--accent-gold);--bp:var(--accent-gold);--rt-hint:var(--text-muted)}
html:root[data-theme=light] :is(.pick-hint,.mood-lead .mood-tag,.minimal-ritual .primary.draw .draw-star,.draw-main small,.ribbon-eyebrow,.ribbon-nav,.keyword-kicker,.action-no,.chev,.brand-promise,.brand-promise span){color:var(--accent-gold)!important}
html:root[data-theme=light] :is(.draw-arrow svg,.ribbon-btn svg){stroke:var(--accent-gold)}
/* 浅色背景：星盘线稿从页面背景里拿出来，单独铺一层，透明度降到 --watermark-opacity 的水平，不再和正文抢 */
html:root[data-theme=light]{background:
  radial-gradient(ellipse 115% 85% at 50% 42%,rgba(0,0,0,0) 58%,rgba(126,92,44,.08) 100%) fixed,
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .36 0 0 0 0 .27 0 0 0 0 .15 0 0 0 .08 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E") 0 0/240px 240px,
  var(--bg-primary)}
html:root[data-theme=light] body::before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:url(/textures/astrolabe.svg) 50% -180px/min(1040px,165vw) auto no-repeat;opacity:.3}
html:root:not([data-theme=light]){background-color:var(--bg-primary)}
/* 抽牌页最小号的灰字（日期）提亮到次级文字色，深色下也看得清 */
html:root[data-theme=dark] .minimal-ritual{--rt-small:var(--text-muted)}

/* 文字：正文用暖灰白（深色）/ 暖深灰褐（浅色），小标题用主文字色；所有页面主标题统一用主文字色 */
main p,main li,main dd,main blockquote,.daily-reading p,.consultation-reading p,.drawn-card p,.zodiac-page p{color:var(--text-secondary)}
main h1,main h2,main h3,.page-heading h1,.tarot-workbench>h1{color:var(--text-primary)}
.page-heading h1,main h1{letter-spacing:.08em}
/* 正文与解读：行高 1.8，段落之间留出呼吸 */
:is(main,.card-detail-dialog) :is(p,li,dd,blockquote):not([class*=kicker]):not([class*=eyebrow]):not(.mono){line-height:1.8}
:is(.daily-reading,.consultation-reading,.drawn-card,.card-detail-dialog,.legal-page,.zodiac-page) p{margin-bottom:1.15em}
/* 英文全大写的小标题，字距统一 */
:is(.keyword-kicker,.ribbon-eyebrow span,.brand-sub,.ritual-eyebrow,.cap .k){letter-spacing:.22em}
/* 设置页：「外观」两个字不再被挤成两行 */
.theme-setting{white-space:nowrap;gap:16px}

/* 图鉴：牌面没加载出来之前是一张古典星芒牌背（不是黑框），微光扫过；加载完再淡入牌面 */
.codex-face{position:relative;aspect-ratio:1/1.71;border-radius:8px!important;overflow:hidden;
 background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100' fill='none' stroke='%23D4AF37' stroke-width='.8' opacity='.22'%3E%3Ccircle cx='50' cy='50' r='30'/%3E%3Ccircle cx='50' cy='50' r='24'/%3E%3Cpath d='M50 14L56 44L86 50L56 56L50 86L44 56L14 50L44 44Z'/%3E%3Cpath d='M50 26a24 24 0 0 0 0 48a17 17 0 0 1 0-48Z'/%3E%3C/svg%3E") center/62% no-repeat,linear-gradient(160deg,var(--bg-elevated) 0%,var(--bg-primary) 100%);
 border:1px solid var(--border-subtle)!important}
.codex-face::before{content:'';position:absolute;inset:6px;border:1px solid rgba(212,175,55,.12);border-radius:5px!important;pointer-events:none}
.codex-face::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 35%,rgba(232,206,150,.10) 50%,transparent 65%);background-size:250% 100%;animation:codex-shimmer 1.6s ease-in-out infinite}
.codex-face:has(img.is-loaded)::after{animation:none;opacity:0}
.codex-face img{opacity:0;transition:opacity .4s ease}
.codex-face img.is-loaded{opacity:1}
@keyframes codex-shimmer{from{background-position:130% 0}to{background-position:-30% 0}}
@media (min-width:1024px){.codex-grid{grid-template-columns:repeat(5,minmax(0,1fr))!important}}
@media (min-width:1280px){.codex-grid{grid-template-columns:repeat(6,minmax(0,1fr))!important}}

/* 韦特牌面融进暗色界面：外加一圈暗金画框 */
:is(.drawn-card img,.card-detail-dialog>img,.pair-majors img,.zodiac-cards img,.history-art img.rws){padding:6px;background:var(--bg-elevated);border:1px solid var(--border-subtle)!important;border-radius:10px!important;box-sizing:border-box}

/* 牌阵页底部：付费一对一深度解读，做成一张毛玻璃名片 */
.deep-note.deep-card{position:relative;margin-top:72px;padding:28px 24px 24px!important;border:1px solid var(--border-subtle)!important;border-top:1px solid var(--border-subtle)!important;border-radius:12px!important;
 background:var(--bg-glass)!important;-webkit-backdrop-filter:blur(12px)!important;backdrop-filter:blur(12px)!important;justify-items:center;text-align:center;gap:14px}
.deep-mark{width:22px;height:22px;fill:none;stroke:var(--accent-gold);stroke-width:1;opacity:.85}
.deep-card h2{font-family:var(--font-display)!important;font-size:22px!important;letter-spacing:.12em;color:var(--accent-gold)!important}
.deep-pills{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0;padding:0;list-style:none}
.deep-pills li{padding:4px 12px;border:1px solid var(--border-subtle);border-radius:999px!important;font-size:12px!important;letter-spacing:.08em;color:var(--text-secondary)}
.deep-card>p{max-width:40ch}
.deep-card .contact-card{width:100%;display:grid;gap:10px}
.deep-card .deep-contact{margin:0;padding:12px 14px;list-style:none;border:1px solid var(--border-subtle);border-radius:10px!important;background:var(--bg-elevated)}
.deep-card .deep-contact li{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}
.deep-card .deep-contact li>span{font-size:12px;letter-spacing:.12em;color:var(--text-muted)}
.deep-card .deep-contact strong{font-family:var(--font-display)!important;letter-spacing:.06em;color:var(--text-primary)}
.deep-card .copy-contact{min-height:0!important;padding:6px 14px!important;border:1px solid var(--border-hover)!important;border-radius:999px!important;font-size:13px;color:var(--accent-gold-bright)!important}
.deep-card .contact-note{font-size:13px!important;color:var(--text-muted)!important}

/* 「把晨启放到手机桌面」：右上角 × 关掉后不再出现；页面底部会自动留出它的高度 */
.install-hint{padding-right:44px!important}
.install-close{position:absolute;top:8px;right:10px;width:28px;height:28px;min-height:0!important;padding:0!important;border:0!important;font-size:20px;line-height:1;color:var(--text-muted)!important;background:none!important}
.install-setting{display:flex!important;align-items:center;justify-content:space-between;gap:16px;text-align:left}
.install-setting strong{font-weight:400}
.install-how{margin:6px 0 0;font-size:13px;color:var(--text-muted);display:none}
.install-how.is-shown{display:block}
.install-setting .install-now{flex:none;min-height:0!important;padding:6px 16px!important;border:1px solid var(--border-hover)!important;border-radius:999px!important;font-size:13px}

/* 桌面宽屏：页面顶部中央一层很淡的晨曦光晕，两侧不再是死板的纯黑 */
@media (min-width:1024px){body{background-image:radial-gradient(ellipse 60% 40% at 50% 0%,var(--dawn-glow),transparent 70%)}}

/* 统一的微交互：按钮、导航、卡片都用同一条阻尼曲线；主操作悬停时微微上浮、泛一点金光 */
:is(.shared-header nav a,.shared-header select,.outline-button,.ritual-link,.q-examples button,.spread-choice button,.q-domain button,.codex-card,.catalog-card,.copy-contact,.install-now,.calendar-links a){transition:color .32s var(--ease-soft),border-color .32s var(--ease-soft),background-color .32s var(--ease-soft),box-shadow .32s var(--ease-soft),transform .32s var(--ease-soft)}
@media (hover:hover){:is(.outline-button,.ritual-link,.calendar-links a,.home-draw,.deep-card .copy-contact):hover:not(:disabled){transform:translateY(-1px)!important;box-shadow:0 6px 20px rgba(212,175,55,.18)!important;border-color:var(--border-hover)!important}}
@media (prefers-reduced-motion:reduce){.codex-face::after{animation:none}.codex-face img{transition:none}}

/* ===== 首页杂志版式（2026-11）===== */
/* 首页：最大 960px，一屏之内两栏——左 44% 月相星盘，右 56% 刊头 / 关键词 / 晨间行动 / 操作 */
.page-shell.editorial-home{max-width:960px!important}
.editorial-home .almanac-grid{display:grid!important;grid-template-columns:minmax(0,44fr) minmax(0,56fr);gap:64px;align-items:center;min-height:calc(100vh - 220px);padding:24px 0!important;text-align:left}
.editorial-home .almanac-sky{display:grid;justify-items:center;gap:22px;margin:0}
.editorial-home .almanac-plaque{text-align:center}
.editorial-home .calendar-caption{margin:0!important;font-size:1.25rem;color:var(--text-primary)}
/* 外环本身以 (0,0) 为中心对称，用它自己的外框中心当旋转中心，才不会转着转着偏离月亮 */
.orbit-ring{transform-box:fill-box;transform-origin:center;animation:slowOrbit 120s linear infinite}
@keyframes slowOrbit{to{transform:rotate(360deg)}}
.editorial-home .almanac-text{display:grid!important;grid-template-columns:minmax(0,1fr)!important;grid-template-areas:none!important;gap:26px;align-content:center;min-width:0}
/* 旧版式给这几块排过位置，这里按刊头 → 关键词与行动 → 操作的顺序重排 */
.editorial-home .almanac-text>*{grid-area:auto!important;grid-column:1!important;grid-row:auto!important}
.editorial-home .dateline-row{order:1}.editorial-home .almanac-fade{order:2}.editorial-home .home-actions{order:3}
.editorial-home .dateline-row>.dateline{order:1}.editorial-home .dateline-row>.sky-pill{order:2}
/* 第 1 层：刊头日期（‹ 2026.11.05 ›，点日期打开日期选择）+ 天象胶囊；去掉上下两条长横线 */
.dateline-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 16px}
.editorial-home .date-line.dateline{display:flex;align-items:center;gap:10px;margin:0;padding:0;border:0!important}
.dateline-step{min-height:0!important;width:32px;height:32px;padding:0!important;border:0!important;font-size:26px;line-height:1;color:var(--text-muted)!important;border-radius:50%!important;transition:color .32s var(--ease-soft),box-shadow .32s var(--ease-soft)}
@media (hover:hover){.dateline-step:hover:not(:disabled){color:var(--accent-gold-bright)!important;box-shadow:0 0 14px rgba(212,175,55,.25)!important}}
.dateline-date{position:relative;cursor:pointer}
.dateline-num{font-size:22px;letter-spacing:.08em;color:var(--text-primary)}
.dateline-date input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;padding:0;border:0}
.dateline .today-reset{min-height:0!important;margin:0 0 0 6px;padding:2px 10px!important;border:1px solid var(--border-subtle)!important;border-radius:999px!important;font-size:12px}
.sky-pill{display:inline-flex;align-items:center;gap:6px;margin:0;padding:5px 14px;border:1px solid var(--border-subtle);border-radius:999px!important;font-size:13px;letter-spacing:.06em;color:var(--text-secondary)}
.sky-pill span{display:inline-flex;align-items:center;gap:4px}.sky-pill .sep{color:var(--text-muted)}
.sky-pill .sky-mark{width:12px;height:12px;color:var(--accent-gold)}
button.sky-pill.bind-chart{min-height:0!important;border:1px dashed var(--border-hover)!important;color:var(--accent-gold)!important;box-shadow:0 0 16px rgba(212,175,55,.08)!important}
/* 第 2 层：每日关键词 */
.editorial-home .keyword-kicker{margin:0!important;font-size:15px;letter-spacing:.22em;text-transform:none}
.almanac-keyword{margin:4px 0 0!important;font-size:clamp(3.5rem,6vw,5.2rem)!important;line-height:1.1!important;padding-right:.2em}
/* 第 3 层：杂志诗行式的晨间行动，序号 01. 02.，中间一条渐隐细金线 */
.daily-actions.verse{margin:0!important;padding:0!important;list-style:none;max-width:none!important}
.daily-actions.verse li{display:grid!important;grid-template-columns:48px 1fr;align-items:baseline;gap:0;margin:0!important;padding:14px 0!important;border:0!important;background:none!important;box-shadow:none!important}
.daily-actions.verse li+li{background:linear-gradient(90deg,transparent,rgba(212,175,55,.28),transparent) top/100% 1px no-repeat!important}
.daily-actions.verse .action-no{font-size:1.35rem;letter-spacing:.04em;color:var(--accent-gold)}
.verse-line{font-size:18px;line-height:1.7;color:var(--text-secondary)}
/* 第 4 层：一主两辅的操作 */
.home-actions{display:flex;flex-wrap:wrap;align-items:center;gap:14px 22px;margin-top:10px}
/* 主按钮：不用金边金字，只用象牙白文字 + 一圈很淡的中性细线；金色只留给前面那颗小星芒 */
.home-cta{display:inline-flex;align-items:center;gap:12px;height:46px;padding:0 26px;border:1px solid rgba(244,239,230,.2);border-radius:999px!important;background:transparent;color:var(--text-primary)!important;font-size:15px;letter-spacing:.16em;text-decoration:none;transition:border-color .32s var(--ease-soft),background-color .32s var(--ease-soft)}
.home-cta>span:first-child{font-size:11px;color:var(--accent-gold);opacity:.7}
.home-cta>span:last-child{color:var(--text-muted);transition:transform .32s var(--ease-soft),color .32s var(--ease-soft)}
@media (hover:hover){.home-cta:hover{border-color:rgba(244,239,230,.45);background:rgba(244,239,230,.03)}.home-cta:hover>span:last-child{transform:translateX(3px);color:var(--text-primary)}}
html:root[data-theme=light] .home-cta{border-color:rgba(28,25,23,.18)}
@media (hover:hover){html:root[data-theme=light] .home-cta:hover{border-color:rgba(28,25,23,.4);background:rgba(28,25,23,.03)}}
.home-ghost{min-height:0!important;padding:4px 0!important;border:0!important;border-bottom:1px solid transparent!important;font-size:14px;letter-spacing:.1em;color:var(--text-secondary)!important}
@media (hover:hover){.home-ghost:hover:not(:disabled){color:var(--text-primary)!important;border-bottom-color:var(--border-hover)!important}}
/* 「日期 · 晨启塔罗 · 网址」只出现在保存的日签图片里 */
.editorial-home .export-date{display:none}
.editorial-home .exporting .export-date{display:block}
#today-fortune{scroll-margin-top:24px}
@media (max-width:820px){
 .editorial-home .almanac-grid{grid-template-columns:1fr;gap:28px;min-height:0;text-align:center}
 .dateline-row{justify-content:center}.editorial-home .keyword-kicker{text-align:center}
 .almanac-keyword{display:table!important;margin:4px auto 0!important}
 .daily-actions.verse li{text-align:left}.home-actions{justify-content:center}}

/* 顶部导航：品牌只留 DAYBREAK 和小号斜体 Morning Ritual；底边换成两头渐隐的细金线；外观是一个图标按钮 */
.shared-brand{display:inline-flex!important;flex-direction:column;align-items:flex-start;line-height:1.05}
.shared-brand .brand-sub{display:block!important;margin:3px 0 0!important;font-size:11px!important;letter-spacing:.22em;opacity:.55}
.shared-header{border-bottom:0!important;position:relative}
.shared-header::after{content:'';position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(212,175,55,.2),transparent);pointer-events:none}
.shared-header nav{gap:28px}
@media (max-width:650px){.shared-header nav{gap:4px}}
.theme-toggle{display:inline-flex!important;align-items:center;justify-content:center;width:36px;height:36px;min-height:0!important;padding:0!important;border:1px solid var(--border-subtle)!important;border-radius:50%!important;color:var(--accent-gold)!important;transition:border-color .32s var(--ease-soft),box-shadow .32s var(--ease-soft)}
.theme-toggle svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round}
@media (hover:hover){.theme-toggle:hover{border-color:var(--border-hover)!important;box-shadow:0 0 16px rgba(212,175,55,.2)!important}}
@media (prefers-reduced-motion:reduce){.orbit-ring{animation:none}}
/* ============ 抽牌后「问一个问题」 ============ */
.ask-card{margin:34px 0 8px;padding:22px 0 4px;border-top:1px solid var(--line);text-align:left}
.ask-card h2{margin:0 0 8px}
.ask-hint{font-size:14px;line-height:1.85;letter-spacing:.04em;color:var(--muted);margin:0 0 16px}
.ask-item{margin:0 0 18px;padding:0 0 0 14px;border-left:1px solid rgba(197,160,89,.5)}
.ask-q{font-size:14px;color:var(--muted);margin:0 0 8px;letter-spacing:.04em}
.ask-a{margin:0 0 10px;line-height:1.95;letter-spacing:.04em}
.ask-a.is-care{color:var(--fg)}
.ask-form{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin:6px 0 6px}
.ask-form input{flex:1 1 220px;min-width:0;font-size:16px}
.ask-send{flex:none;white-space:nowrap}
.ask-status{min-height:1.6em;font-size:13px;color:var(--muted);margin:4px 0 0;letter-spacing:.04em}
.ask-privacy{font-size:12px;line-height:1.8;color:var(--muted);opacity:.85;margin:6px 0 0;letter-spacing:.03em}
html:root[data-theme=dark] .ask-item{border-left-color:rgba(197,160,89,.45)}
/* ============ 单张牌页面（/card/…/） ============ */
.card-page{max-width:760px!important}
.card-crumb{display:flex;gap:10px;font-size:13px;letter-spacing:.08em;color:var(--muted);margin:0 0 22px}
.card-crumb a{color:var(--muted)}
.card-head{display:grid;grid-template-columns:minmax(150px,240px) 1fr;gap:clamp(20px,4vw,44px);align-items:start;margin:0 0 30px}
.card-art{width:100%;height:auto;display:block;border:1px solid var(--line)}
.card-group{font-size:12px;letter-spacing:.22em;color:#9C7A3C;margin:4px 0 6px}
html:root[data-theme=dark] .card-group{color:#C5A059}
.card-head h1{margin:0!important;text-align:left}
.card-en{font-family:var(--font-display);font-size:15px;letter-spacing:.14em;color:var(--muted);margin:6px 0 18px}
.card-intro{line-height:1.95;margin:0}
.card-keys{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0;margin:0 0 12px}
.card-keys li{font-size:13px;letter-spacing:.08em;padding:3px 12px;border:1px solid var(--line);border-radius:999px!important}
.card-life{margin:0}.card-life>div{padding:10px 0;border-bottom:1px solid var(--line)}.card-life dt{font-size:13px;letter-spacing:.12em;color:var(--muted);margin:0 0 4px}.card-life dd{margin:0;line-height:1.85}
.card-question,.card-meta{color:var(--muted);font-size:15px}
.card-source{font-size:14px;color:var(--muted)}
.card-cta{display:flex;flex-wrap:wrap;gap:22px;align-items:center;margin:34px 0 26px}
.card-draw{display:inline-flex;align-items:center;gap:10px;padding:10px 22px;border:1px solid var(--line);border-radius:999px!important}
.card-draw span{font-size:11px;color:#C5A059}
.card-pager{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--line);padding-top:16px}
.card-pager a{display:flex;flex-direction:column;gap:2px}.card-pager a[rel=next]{text-align:right}
.card-pager small{font-size:12px;color:var(--muted);letter-spacing:.12em}
.card-more{margin:18px 0 0;font-size:14px}.card-more a{color:var(--muted);text-decoration:underline;text-underline-offset:4px}
.insp-page{font-size:13px;margin:10px 0 0}.insp-page a{text-decoration:underline;text-underline-offset:4px}
@media(max-width:560px){.card-head{grid-template-columns:1fr}.card-art{max-width:220px;margin:0 auto}.card-head h1{text-align:center}.card-group,.card-en{text-align:center}}
/* 设置页：每天早上提醒 */
.reminder-settings{margin:18px 0;padding:14px 0 4px;border:0;border-top:1px solid var(--line)}
.reminder-settings legend{font-size:14px;letter-spacing:.14em;color:var(--muted);padding:0 0 6px}
/* 结果页：备份提醒 */
.backup-nudge{margin:26px 0 6px;padding:14px 16px;border:1px solid var(--line);border-radius:14px!important;text-align:left;font-size:14px;line-height:1.85}
.backup-nudge p{margin:0 0 10px;color:var(--muted)}
.backup-actions{display:flex;gap:18px;align-items:center;flex-wrap:wrap}
/* 关于与方法：列表补回圆点；代码字样用细线框 */
.about-page section ul{list-style:none;padding:0;margin:4px 0 8px}
.about-page section ul>li{position:relative;padding:6px 0 6px 2.2em;line-height:1.85}
.about-page section ul>li::before{content:'';position:absolute;left:.7em;top:1.05em;width:4px;height:4px;border:1px solid currentColor;opacity:.55;transform:rotate(45deg)}
.about-page code{font-size:.86em;padding:1px 6px;border:1px solid var(--line);border-radius:6px!important}
/* 深度解读 · 价目表 */
.deep-tiers{width:100%;border-collapse:collapse;margin:8px 0 10px;font-size:15px;line-height:1.75}
.deep-tiers th,.deep-tiers td{text-align:left;vertical-align:top;padding:12px 10px 12px 0;border-bottom:1px solid var(--line)}
.deep-tiers thead th{font-size:12px;letter-spacing:.16em;color:var(--muted);font-weight:400;padding-top:4px}
.deep-tiers tbody th{font-weight:400;white-space:nowrap}
.deep-tiers tbody th small{display:block;font-size:12px;color:var(--muted);letter-spacing:.08em}
.deep-tiers td:last-child{white-space:nowrap;text-align:right;padding-right:0}
.deep-tier-note{font-size:14px;color:var(--muted)}
@media(max-width:520px){.deep-tiers{font-size:14px}.deep-tiers th,.deep-tiers td{padding-right:8px}}
/* 深度解读页的列表：全站去掉了列表符号，这里补回细小的序号和圆点 */
.deep-page section ol,.deep-page section ul{list-style:none;padding:0;margin:4px 0 8px;counter-reset:deep}
.deep-page section ol>li,.deep-page section ul>li{position:relative;padding:6px 0 6px 2.2em;line-height:1.85}
.deep-page section ol>li{counter-increment:deep}
.deep-page section ol>li::before{content:counter(deep,decimal-leading-zero);position:absolute;left:0;top:7px;font-size:12px;letter-spacing:.12em;color:#9C7A3C}
html:root[data-theme=dark] .deep-page section ol>li::before{color:#C5A059}
.deep-page section ul>li::before{content:'';position:absolute;left:.7em;top:1.05em;width:4px;height:4px;border:1px solid currentColor;opacity:.55;transform:rotate(45deg)}
.deep-page .deep-contact>li{padding-left:0}.deep-page .deep-contact>li::before{display:none}

/* home sheet is prerendered for the build day; hide it on other days until the page picks the real date */
html.home-stale .editorial-home .daily-inscription{visibility:hidden!important}
