/* 01 · 暖灰纸艺舞台独立于站内纸色，纸幕与地面衬托手和散牌。 */
body[data-route=welcome]{background:#e8e4de!important;color:#2d4755;overflow-x:hidden}
body[data-route=welcome] :is(#guide,.ginkgo-canopy,.ambient,#cursor-glow,.site-footer){display:none!important}
body[data-route=welcome] #main{max-width:none;padding:0;margin:0;min-height:100svh}
body[data-route=welcome] .site-header{position:absolute!important;inset:0 0 auto;z-index:10!important;max-width:none;height:82px;padding:26px 4.5%;background:none;border:0}
body[data-route=welcome] .site-header .nav-link{display:none}
body[data-route=welcome] .brand{color:#2d4755;font-family:Georgia,"Times New Roman",serif;font-size:16px;font-weight:400;letter-spacing:.09em}
body[data-route=welcome] .brand-mark{color:#94675c}body[data-route=welcome] .quiet-button{color:#817971}
.tarot-welcome{position:relative;isolation:isolate;max-width:none;width:100%;padding:0!important;margin:0;min-height:100svh;color:#2d4755;overflow:hidden;background:radial-gradient(ellipse at 54% 67%,#f9f6ed 0,#ece8e1 42%,#e4e1dc 100%)}
.tarot-stage{position:relative;width:100%;height:max(100svh,740px);margin:0;isolation:isolate;perspective:1500px;overflow:hidden}
.tarot-scene-art{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
/* 初始散牌仅让实际绘制的牌面接收点击，空白舞台仍不会触发开场。 */
.tarot-stage[data-start-ready=true] .tarot-resting-card{pointer-events:visiblePainted;cursor:pointer}
/* 02 · 标题在左上空场，使用现有循环打字；下方的留白交给牵牌动作。 */
.tarot-intro{position:absolute;left:6.5%;top:19%;width:24%;max-width:320px;text-align:left;z-index:3;pointer-events:none}
.tarot-eyebrow{font:9px/1.7 Georgia,serif;letter-spacing:.21em;color:#8e776b}
.tarot-intro h1{font:400 clamp(27px,2.6vw,44px)/1.6 "Noto Serif SC","SimSun",serif;letter-spacing:.08em;min-height:3.2em;margin:17px 0 13px;color:#2d4755}
.tarot-intro h1 span{color:inherit}.tarot-intro .typewriter-caret{color:#9a6c5b;font-size:.7em}
.tarot-intro p{font:11px/1.8 "Noto Serif SC",serif;letter-spacing:.12em;color:#8e8377;margin:0}
.tarot-card-space{position:absolute;inset:0;perspective:1500px;pointer-events:none}
/* 03 · 牌背暗红、正面象牙白。双面共用按钮的位置，散牌直接飞出，不产生替身。 */
.tarot-card{container-type:inline-size;position:absolute;display:block;margin:0;padding:0;border:0;border-radius:3px;background:transparent;color:#2d4755;font:inherit;text-align:center;transform-style:preserve-3d;pointer-events:auto;cursor:pointer;will-change:transform;box-shadow:1px 2px 0 #bcaf9d,0 18px 28px #66544220;transition:box-shadow .25s}
.tarot-card:disabled{pointer-events:none;cursor:default;opacity:1}
.tarot-card-face,.tarot-card-back{position:absolute;inset:0;display:block;backface-visibility:hidden;border:1px solid #c5b9a7;border-radius:3px;overflow:hidden}
.tarot-card-face{background:linear-gradient(125deg,#faf7ed,#eae5d9);box-shadow:inset 0 0 0 5px #f9f5eb,inset 0 0 0 6px #d0c4b166}
.tarot-card-number{position:absolute;left:8%;right:8%;top:6%;font:clamp(6px,3.3cqw,9px)/1.5 Georgia,serif;letter-spacing:.12em;color:#988577}
.tarot-card-illustration{position:absolute;left:6%;right:6%;top:12%;height:51%;display:block}
.tarot-card-illustration svg{width:100%;height:100%;display:block}
.tarot-card-label{position:absolute;left:7%;right:7%;top:64%;display:flex;flex-direction:column;align-items:center}
.tarot-card-face strong{font:400 clamp(18px,10.2cqw,29px)/1.5 "Noto Serif SC",serif;letter-spacing:.18em;color:#2d4755;padding-left:.18em}
.tarot-card-route{font:clamp(11px,5.5cqw,14px)/1.7 "Noto Serif SC",serif;color:#8b594f;letter-spacing:.08em;margin-top:6px}
.tarot-card-route>span{display:inline-block;margin-left:4px;transition:transform .3s}
.tarot-card-description{font-size:clamp(7px,3.9cqw,10px);line-height:1.6;color:#a09280;letter-spacing:.05em;margin-top:8px}
.tarot-card-foot{position:absolute;bottom:4%;left:0;right:0;font:8px/1.5 Georgia,serif;letter-spacing:.1em;color:#aa9785}
.tarot-card-back{transform:rotateY(180deg);display:grid;place-items:center;background:#86534d;box-shadow:inset 0 0 0 5px #eee8dc,inset 0 0 0 6px #86534d,inset 0 0 0 11px #86534d,inset 0 0 0 12px #c9a98d;color:#dfc9af}
.tarot-card-back:before,.tarot-card-back:after{content:'';position:absolute;inset:23% 24%;border:1px solid #d5b99a77;border-radius:50%;transform:rotate(30deg)}
.tarot-card-back:after{transform:rotate(-30deg)}
.tarot-back-emblem{font:clamp(35px,32cqw,80px)/1 Georgia,serif;font-weight:400}
.tarot-card:hover:not(:disabled),.tarot-card:focus-visible{box-shadow:1px 2px 0 #b7a48e,0 21px 36px #66544233;outline:1px solid #8e6655;outline-offset:5px}
.tarot-card:hover .tarot-card-route>span{transform:translate(2px,-2px)}
/* 04 · 控制与说明保持轻量，主按钮靠近散牌上方，完成后为牌面让位。 */
.tarot-summon{position:absolute;transform:translate(-50%,-50%);font:12px/1.6 "Noto Serif SC",serif;letter-spacing:.14em;color:#fffaf0;background:#2d4755;border:1px solid #2d4755;border-radius:2px;padding:13px 26px;white-space:nowrap;box-shadow:0 9px 19px #3e4f5820;cursor:pointer;transition:background .3s,box-shadow .3s}
.tarot-summon>span{margin-left:16px;color:#e5c6b1}.tarot-summon:hover{background:#405c69;box-shadow:0 12px 24px #3e4f582d}
.tarot-summon:focus-visible,.tarot-draw-skip:focus-visible{outline:2px solid #94675c;outline-offset:5px}
.tarot-guidance{position:absolute;left:0;right:0;bottom:3.5%;text-align:center;z-index:4;pointer-events:none}
.tarot-instruction{font:10px/1.8 "Noto Serif SC",serif;letter-spacing:.12em;color:#9d8e7f;margin:0 0 6px}
.tarot-choice-note{font-size:10px;color:#67767a;letter-spacing:.15em}
.tarot-draw-skip{pointer-events:auto;font-size:10px;color:#7f6859;background:none;border:0;border-bottom:1px solid #bfae9a88;padding:6px 8px;cursor:pointer}
.tarot-thread-glow{stroke-dasharray:2 17;animation:tarot-thread-flow 8s linear infinite}
@keyframes tarot-thread-flow{to{stroke-dashoffset:-76}}
/* 05 · 路由外的牌面镜头沿用原时间线，遮盖后衔接原有星图与验证页。 */
.tarot-travel{position:fixed;inset:0;z-index:1900;overflow:hidden;isolation:isolate}
.tarot-travel[hidden]{display:none}.tarot-travel-card{pointer-events:none;transform-origin:center;z-index:2;opacity:1}
.tarot-travel canvas{position:absolute;inset:0;width:100%;height:100%;z-index:4;pointer-events:none}
/* 移动端光丝留在牌面后方，牌外仍可看见牵引与流光。 */
.tarot-travel[data-mobile-opening=true] canvas{z-index:1}
.tarot-travel-veil{position:absolute;inset:0;background:#fffdf6;z-index:3;opacity:0}
.tarot-travel>button{position:absolute;right:24px;bottom:24px;padding:10px 16px;font:11px "Noto Serif SC",serif;background:#f6f1e9ed;color:#6a6055;border:1px solid #bca58a88;border-radius:2px;z-index:5;cursor:pointer}
@media(max-width:700px){
 body[data-route=welcome] .site-header{height:64px;padding:18px 5%}body[data-route=welcome] .brand{font-size:13px}
 .tarot-stage{height:max(100svh,740px)}
 .tarot-intro{top:31%;left:5%;width:90%;max-width:none;text-align:center}
 .tarot-eyebrow{display:none}.tarot-intro h1{font-size:22px;line-height:1.6;min-height:1.6em;letter-spacing:.04em;margin:0 0 7px}
 .tarot-intro p{font-size:9px}.tarot-card-label{top:63%}.tarot-card-description{margin-top:5px}
 .tarot-summon{font-size:11px;padding:11px 18px}.tarot-guidance{bottom:3.5%}.tarot-instruction{font-size:9px;letter-spacing:.02em}.tarot-choice-note{font-size:9px}
}
.reduce-motion .tarot-thread-glow{animation:none!important}
@media(prefers-reduced-motion:reduce){.tarot-thread-glow{animation:none!important}}
/* 操偶手保持素材原比例，阴影只提供悬浮距离，不叠加旧纸手轮廓。 */
.tarot-puppet-image{filter:drop-shadow(3px 7px 6px #3c4d5714)}
/* 手机开场：固定布局只计算一次，手、两根线和牌由浏览器合成动画。 */
.tarot-welcome[data-mobile-opening=true] .tarot-hand{opacity:1}
.tarot-welcome[data-mobile-opening=true] .tarot-energy-channel,.tarot-welcome[data-mobile-opening=true] .tarot-thread-glow{display:none}
.tarot-welcome[data-mobile-opening=true] .tarot-card{opacity:1;transform:translate(-50%,-50%) rotateY(0)}
.tarot-welcome[data-mobile-opening=true] .tarot-stage[data-tarot-phase=idle] .tarot-hand,.tarot-welcome[data-mobile-opening=true] .tarot-stage[data-tarot-phase=idle] .tarot-thread-core{opacity:0}
.tarot-welcome[data-mobile-opening=true] .tarot-stage[data-tarot-phase=idle] .tarot-card{transform:translate(-50%,-50%) translate(var(--mobile-dx),var(--mobile-dy)) rotateY(180deg)}
.tarot-welcome[data-mobile-opening=true] .tarot-stage[data-tarot-phase=drawing] .tarot-hand-paper{animation:mobile-tarot-hand 1s ease-out both}
.tarot-welcome[data-mobile-opening=true] .tarot-stage[data-tarot-phase=drawing] .tarot-card{animation:mobile-tarot-card 3.6s ease-in-out both}
.tarot-welcome[data-mobile-opening=true] .tarot-stage[data-tarot-phase=drawing] .tarot-card:nth-child(2){animation-delay:.15s}
.tarot-welcome[data-mobile-opening=true] .tarot-thread-core{stroke-dasharray:1;stroke-dashoffset:0;opacity:.8}
.tarot-welcome[data-mobile-opening=true] .tarot-stage[data-tarot-phase=drawing] .tarot-thread-core{animation:mobile-tarot-thread 3.6s ease-in-out both}
.tarot-welcome[data-mobile-opening=true] .tarot-stage[data-tarot-phase=drawing] .tarot-thread-core[data-thread="1"]{animation-delay:.15s}
.tarot-welcome[data-mobile-opening=true] .tarot-paper-scrap{animation:none;transform:rotate(var(--scrap-angle))}
@keyframes mobile-tarot-hand{from{opacity:0;transform:translateY(-150px)}to{opacity:1;transform:translateY(0)}}
@keyframes mobile-tarot-card{0%,25%{transform:translate(-50%,-50%) translate(var(--mobile-dx),var(--mobile-dy)) rotateY(180deg)}65%{transform:translate(-50%,-50%) rotateY(180deg)}100%{transform:translate(-50%,-50%) rotateY(0)}}
@keyframes mobile-tarot-thread{0%,24%{opacity:0;stroke-dashoffset:.5}25%{opacity:.8;stroke-dashoffset:.5}65%,100%{opacity:.8;stroke-dashoffset:0}}
/* 触屏轻量效果保留手、纸牌、主丝线和光点；去掉动态模糊与多余的飘纸。 */
@media (pointer:coarse){
 .tarot-paper-wings,.tarot-resting-cards,.tarot-puppet-image{filter:none}
 .tarot-thread-glow,.tarot-energy-wisp,.tarot-energy-halo{display:none}
 .tarot-scrap-anchor:nth-child(n+4){display:none}
}
/* 拨动时仅略微加强当前丝线，装饰层始终不拦截鼠标与卡牌点击。 */
.tarot-thread-core{transition:stroke-width .2s,stroke .2s}
.tarot-thread-core[data-plucked=true]{stroke:#855140;stroke-width:1.35}
/* 能量以暖铜细光表现：接点先亮，随后一段微光沿纸牌边框扩散。 */
.tarot-energy-channel{pointer-events:none}
.tarot-energy-wisp{stroke-linecap:round}
.tarot-energy-frame{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:calc(var(--energy-receive,0)*.68);}
.tarot-energy-frame rect{fill:none;stroke:#b98d4d;stroke-width:1.1;vector-effect:non-scaling-stroke;stroke-dasharray:.24 .76;stroke-dashoffset:calc(var(--energy-frame-progress,0)*-1);}
.tarot-card-face:after{content:'';position:absolute;inset:5px;border:1px solid #cba86b;box-shadow:inset 0 0 11px #d5b87625;opacity:calc(var(--energy-receive,0)*.4);pointer-events:none;}
.reduce-motion .tarot-energy-frame{opacity:0}
/* 六幕开场：先有空白牌面，再由能量逐层显出插画、名称和入口。 */
.tarot-card-illustration{opacity:var(--reveal-picture,1);clip-path:inset(calc((1 - var(--reveal-picture,1))*100%) 0 0 0);}
.tarot-card-number,.tarot-card-face strong{opacity:var(--reveal-title,1)}
.tarot-card-route,.tarot-card-description,.tarot-card-foot{opacity:var(--reveal-copy,1)}
.tarot-draw-skip{position:absolute;right:4.5%;top:82px;z-index:12;border-bottom:1px solid #bfae9a88;background:#eee9e08c;}
.tarot-replay{position:absolute;left:6.5%;bottom:3.5%;z-index:5;font:10px/1.8 "Noto Serif SC",serif;letter-spacing:.08em;color:#8a7866;border:0;border-bottom:1px solid #c6b9a855;background:none;padding:5px 0;cursor:pointer}
.tarot-replay:focus-visible{outline:2px solid #94675c;outline-offset:5px}
.tarot-summon:disabled{opacity:.5;cursor:default}
@media(max-width:700px){.tarot-draw-skip{top:63px;right:5%;font-size:9px}.tarot-replay{left:5%;bottom:1%;font-size:8px}.tarot-guidance{bottom:5%}}
/* 06 · 背景固定在主体后方；全部装饰无命中区域，不影响拨线和选牌。 */
.tarot-backdrop{position:absolute;inset:0;z-index:-1;pointer-events:none;user-select:none;overflow:hidden;}
.tarot-paper-scenery{position:absolute;inset:0;width:100%;height:100%;}
.tarot-paper-wings{opacity:.69;transform:translateY(calc(var(--paper-wake,0)*-6px));}
.paper-wing-far{opacity:.64}.paper-wing-middle{opacity:.86}.paper-wing-near{opacity:.52}
.tarot-paper-platform{opacity:.8;transform:translateY(var(--paper-platform-y,0px));}
.tarot-paper-air{position:absolute;inset:0;}
.tarot-scrap-anchor{position:absolute;transform:translate(calc(var(--paper-gather,0)*var(--scrap-pull)),calc(var(--paper-gather,0)*var(--scrap-rise)));}
.tarot-paper-scrap{display:block;width:var(--scrap-size);height:calc(var(--scrap-size)*1.35);background:linear-gradient(130deg,#f8f4e9,#c4bbaa);clip-path:polygon(0 8%,87% 0,100% 90%,9% 100%);opacity:.52;box-shadow:2px 3px 3px #6b604d14;animation:tarot-paper-drift var(--scrap-duration) ease-in-out var(--scrap-delay) infinite;}
.tarot-scrap-anchor:nth-child(3n) .tarot-paper-scrap{background:linear-gradient(130deg,#d8dfdc,#9baeb1);opacity:.35;}
.tarot-scrap-anchor:nth-child(4n) .tarot-paper-scrap{filter:blur(.7px);opacity:.3;}
@keyframes tarot-paper-drift{0%,100%{transform:translate(0,0) rotate(var(--scrap-angle)) rotateY(12deg)}50%{transform:translate(9px,-18px) rotate(calc(var(--scrap-angle) + 24deg)) rotateY(50deg)}}
/* 隐藏页面或关闭动画时冻结漂动，CSS和主循环共享同一个开关。 */
.tarot-stage[data-backdrop-motion=paused] .tarot-paper-scrap{animation-play-state:paused;}
.reduce-motion .tarot-paper-scrap{animation:none;transform:rotate(var(--scrap-angle));}
@media(prefers-reduced-motion:reduce){.tarot-paper-scrap{animation:none;transform:rotate(var(--scrap-angle));}}
@media(max-width:700px){
 /* 手机边缘纸幕缩窄，台面依旧覆盖散牌脚下，远景碎纸减量。 */
 .tarot-paper-wings{transform:translateY(calc(var(--paper-wake,0)*-4px)) scaleX(1.13);transform-origin:50% 50%;opacity:.5;}
 .tarot-paper-platform{opacity:.62;}
 .tarot-scrap-anchor:nth-child(n+6){display:none;}
 .tarot-paper-scrap{width:calc(var(--scrap-size)*.75);height:var(--scrap-size);}
}
/* 07 · 初始构图以中央大散牌为主；唤手时标题退回侧面让出操偶空间。 */
.tarot-intro{transition:left .9s,top .9s,transform .9s,width .9s;}
.tarot-welcome[data-opening-chapter=intro] .tarot-intro{left:50%;top:14%;width:86%;max-width:900px;transform:translateX(-50%);text-align:center;}
.tarot-welcome[data-opening-chapter=intro] .tarot-intro h1{min-height:1.6em;font-size:clamp(27px,2.6vw,40px);margin:13px 0 9px;}
/* 纸签由双层裁纸、菱形纸扣和弧线组成，悬停时像牵动一根细线。 */
.tarot-summon{width:294px;height:94px;border:0;background:none!important;box-shadow:none!important;padding:13px 17px;color:#2d4755;z-index:3;}
.tarot-summon-thread{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:none;stroke:#a16e56;stroke-width:.8;opacity:.6;transition:transform .45s,opacity .45s;}
.tarot-summon-paper{position:relative;display:flex;align-items:center;gap:15px;height:68px;padding:0 20px;background:linear-gradient(120deg,#f7f2e6,#e7dfce);border:1px solid #b9aa94;box-shadow:3px 4px 0 #d1c7b6,0 10px 20px #6b594418;clip-path:polygon(0 0,95% 0,100% 17%,100% 100%,5% 100%,0 83%);transition:transform .35s;}
.tarot-summon .tarot-summon-paper{margin:0;color:#2d4755;}
.tarot-summon .tarot-summon-seal{display:grid;place-items:center;width:33px;height:33px;flex-shrink:0;margin:0;background:#86534d;color:#f2dfc7;font:28px Georgia,serif;transform:rotate(-8deg);border:1px solid #a47966;transition:transform .4s;}
.tarot-summon-copy{display:flex;flex-direction:column;gap:5px;margin:0!important;color:inherit!important;text-align:left;}
.tarot-summon-copy small{font:8px/1.5 "Noto Serif SC",serif;letter-spacing:.12em;color:#9a7d69;}
.tarot-summon-copy strong{font:400 15px/1.5 "Noto Serif SC",serif;letter-spacing:.17em;}
.tarot-summon .tarot-summon-arrow{color:#94675c;margin:0 0 0 auto;font-size:20px;}
.tarot-summon:hover .tarot-summon-paper{transform:translateY(-3px);}
.tarot-summon:hover .tarot-summon-seal{transform:translateY(-3px) rotate(0);}
.tarot-summon:hover .tarot-summon-thread{transform:translateY(-4px) scaleX(.96);opacity:1;}
@media(max-width:700px){
 .tarot-welcome[data-opening-chapter=intro] .tarot-intro{top:18%;width:92%;}
 .tarot-welcome[data-opening-chapter=intro] .tarot-intro h1{font-size:22px;}
 .tarot-summon{width:266px;height:90px;}
 .tarot-summon-paper{height:64px;padding:0 15px;gap:12px;}
 .tarot-summon-copy strong{font-size:14px;}
}
.reduce-motion :is(.tarot-intro,.tarot-summon-paper,.tarot-summon-seal,.tarot-summon-thread){transition:none;}
/* 较矮的桌面减少标题高度，避免中央放大的牌扇碰到标题。 */
@media(min-width:701px) and (max-height:800px){
 .tarot-welcome[data-opening-chapter=intro] .tarot-intro{top:10%;}
 .tarot-welcome[data-opening-chapter=intro] .tarot-intro h1{font-size:27px;}
}
@media(prefers-reduced-motion:reduce){.tarot-intro,.tarot-summon-paper,.tarot-summon-seal,.tarot-summon-thread{transition:none;}}
/* 08 · 统一牵线转场：选中线交给全屏镜头，防止源场景与镜头重复描线。 */
.tarot-welcome[data-travel-choice=guest] [data-thread="0"],.tarot-welcome[data-travel-choice=verify] [data-thread="1"],
.tarot-welcome[data-travel-choice=guest] [data-energy-channel="0"],.tarot-welcome[data-travel-choice=verify] [data-energy-channel="1"]{opacity:0!important;}
.tarot-unfold-paper{position:absolute;z-index:3;perspective:1400px;transform-style:preserve-3d;pointer-events:none;}
.tarot-unfold-paper i{position:absolute;top:0;width:50.1%;height:100%;backface-visibility:hidden;box-sizing:border-box;}
.tarot-unfold-left{left:0;transform-origin:100% 50%;background:linear-gradient(90deg,#f8f4e9,#ede5d5);box-shadow:inset -8px 0 22px #77634b12;}
.tarot-unfold-right{right:0;transform-origin:0 50%;background:linear-gradient(90deg,#e8dfce,#faf6eb);box-shadow:inset 7px 0 19px #77634b12;}
.tarot-unfold-paper>span{position:absolute;left:50%;top:0;width:1px;height:100%;background:#ac987344;opacity:var(--paper-fold,0);}
.tarot-travel-veil{background:#f7f2e7;}
.tarot-travel-card{box-shadow:1px 2px 0 #bcaf9d,0 24px 44px #66544228;}
