/* ============ 水墨版皮肤 ============ */
@font-face{font-family:"LibianWeb";src:url("../assets/fonts/libian-sub.woff2") format("woff2");
  font-weight:400 700;font-style:normal;font-display:swap}
:root{
  --ls:"Baoli SC","LibianWeb","Libian SC","STKaiti","Kaiti SC",serif;
  --cinnabar:#B03A2E;--indigo:#2E5E73;--bamboo:#5A7247;--teagold:#A07830;--violet:#6B4A73;--darkink:#3A3A40;
  --ink:#17161A;--dim:#7A7365;--paper:#2B2823;--paperbg:#EFE8D8;--card:#F7F2E5;--line:#D9D0BB;--steel:#5D574C;
  --spring:cubic-bezier(0.34,1.56,0.64,1);--out:cubic-bezier(0.16,1,0.3,1);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{font-family:"PingFang SC","Microsoft YaHei",sans-serif;background:#E4DCC8;color:var(--paper);min-height:100vh;display:flex;justify-content:center;align-items:center}
.serif{font-family:"Kaiti SC","STKaiti","Songti SC",serif}
#bgwrap{position:fixed;inset:0;z-index:0}
#bg{width:100%;height:100%}
#app{width:400px;max-width:100vw;height:min(100vh,880px);background:rgba(244,238,224,.88);position:relative;z-index:1;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 0 90px rgba(60,50,30,.45);border-left:1px solid #CFC5AC;border-right:1px solid #CFC5AC}
#fx{position:absolute;inset:0;z-index:60;pointer-events:none}
.statusbar{display:flex;justify-content:space-between;align-items:center;padding:14px 22px 6px;font-size:11px;color:var(--dim);position:relative;z-index:30;flex:none}
#histBtn{cursor:pointer;color:var(--cinnabar);border:1px solid rgba(176,58,46,.45);padding:2px 10px;border-radius:3px}
.screen{display:none;flex-direction:column;flex:1;min-height:0;position:relative;z-index:10;overflow-y:auto;overflow-x:hidden}
.screen.on{display:flex}
.quit{position:absolute;right:0;top:-4px;color:var(--dim);cursor:pointer;font-size:14px;padding:4px 8px}
.quit:hover{color:var(--cinnabar)}
.q2{position:fixed;bottom:26px;right:calc(50% - 190px);font-size:12px;letter-spacing:2px}
/* home */
#s-home{align-items:center;padding-bottom:30px}
#crystal{width:360px;height:330px;margin-top:34px;flex:none}
.hero{text-align:center;margin-top:6px}
.hero h2{font-family:var(--ls);font-weight:400;font-size:34px;letter-spacing:12px;color:var(--ink);line-height:1.4;text-shadow:2px 3px 8px rgba(23,22,26,.12)}
.hero p{color:var(--dim);font-size:12px;letter-spacing:4px;margin-top:8px}
.entries{width:min(320px,86%);margin-top:26px}
.entry{position:relative;display:block;width:100%;text-align:left;background:linear-gradient(160deg,#FAF6EA,#EFE7D2);border:1px solid rgba(23,22,26,.34);border-radius:3px;padding:15px 16px 15px 76px;margin-bottom:16px;cursor:pointer;color:var(--paper);transition:transform .25s var(--spring),box-shadow .25s,border-color .25s;box-shadow:2px 3px 0 rgba(23,22,26,.1)}
.entry::before{content:attr(data-zi);position:absolute;left:15px;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:3px;display:flex;align-items:center;justify-content:center;font-family:var(--ls);font-size:28px;color:#F7F2E5;background:linear-gradient(160deg,#33302A,#17161A);box-shadow:inset 0 0 0 1px rgba(247,242,229,.16),1px 2px 0 rgba(23,22,26,.22)}
.entry[data-go="holland"]::before{background:linear-gradient(160deg,#B03A2E,#8E2C22)}
.entry::after{content:"";position:absolute;right:12px;top:11px;width:14px;height:14px;border-top:1px solid rgba(176,58,46,.45);border-right:1px solid rgba(176,58,46,.45)}
.entry b{display:block;font-family:var(--ls);font-weight:400;font-size:21px;letter-spacing:4px;color:var(--ink)}
.entry b::after{content:"";display:block;width:34px;height:2px;margin-top:6px;background:linear-gradient(90deg,var(--cinnabar),transparent)}
.entry span{display:block;font-size:11px;color:var(--dim);margin-top:6px;letter-spacing:1px}
.entry i{display:block;font-size:12px;font-style:normal;color:var(--steel);margin-top:4px;font-family:"Kaiti SC",serif}
.entry:hover{transform:translateY(-3px);border-color:rgba(176,58,46,.55);box-shadow:3px 7px 0 rgba(23,22,26,.15)}
.disclaim{font-size:10.5px;color:#9A9282;margin-top:14px;text-align:center;line-height:1.7;padding:0 30px}
/* duel */
#s-duel{padding-top:6px}
.trow{display:flex;align-items:center;gap:10px;padding:8px 22px 0}
.trow .tt{flex:1;height:4px;background:#DDD3BC;border-radius:3px;overflow:hidden}
.trow .tt i{display:block;height:100%;background:linear-gradient(90deg,var(--ink),var(--cinnabar));transform-origin:left}
.trow b{font-size:12px;color:var(--cinnabar);width:26px;text-align:right;font-variant-numeric:tabular-nums}
.dhead{display:flex;justify-content:space-between;align-items:center;font-family:"Kaiti SC",serif;font-size:12px;letter-spacing:3px;color:var(--dim);margin:10px 22px 0;position:relative}
.dhead b{color:var(--cinnabar)}
.dquote{position:absolute;left:0;right:0;top:78px;text-align:center;font-family:"Baoli SC","Xingkai SC","Kaiti SC",serif;font-size:22px;font-weight:400;letter-spacing:3px;pointer-events:none;z-index:3}
.dhint{position:absolute;left:0;right:0;top:112px;text-align:center;font-family:"Kaiti SC",serif;font-size:12px;letter-spacing:3px;color:var(--dim);pointer-events:none;z-index:3}
.dquote .rq{font-style:normal;color:var(--cinnabar);text-shadow:0 1px 0 rgba(23,22,26,.1),0 0 18px rgba(176,58,46,.22)}
.dquote .bq{font-style:normal;color:#17161A;text-shadow:0 1px 0 rgba(23,22,26,.08)}
.dquote s{text-decoration:none;color:var(--dim);margin:0 10px;font-size:16px}
.stage{position:absolute;left:18px;right:18px;top:130px;bottom:104px;perspective:900px}
.dcard{position:absolute;left:16px;right:16px;height:calc(50% - 44px);border-radius:6px;padding:10px 16px 12px;display:block;cursor:pointer;will-change:transform;background:linear-gradient(168deg,#FBF7EC,#F0E8D4);box-shadow:0 14px 34px rgba(50,42,26,.3),inset 0 0 0 1px #E4DAC2;overflow:hidden;display:flex;flex-direction:column}
.dcard::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.5) 45%,transparent 60%);transform:translateX(-120%);animation:shine 4.6s infinite;pointer-events:none}
@keyframes shine{0%,60%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
.dcard.left{top:16px;border:1px solid rgba(23,22,26,.5);background:linear-gradient(168deg,#FBF7EC,#F0E8D4)}
.dcard.right{bottom:16px;border:1px solid rgba(176,58,46,.55);background:linear-gradient(168deg,#FBF7EC,#F0E8D4)}
.dcard.left::before,.dcard.right::before{content:"";position:absolute;inset:4px;border:1px solid rgba(23,22,26,.1);border-radius:3px;pointer-events:none}
.dcard .tag{position:relative;z-index:2;font-size:9.5px;letter-spacing:3px;font-family:"Kaiti SC",serif}
.left .tag{color:var(--darkink)}.right .tag{color:var(--cinnabar)}
.cart{position:absolute;left:0;right:0;top:26%;bottom:0;overflow:hidden;z-index:2}
.cart img{width:100%;height:100%;object-fit:cover;object-position:center bottom;display:block;opacity:.30;filter:sepia(.3) saturate(.8) contrast(.95);
 -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 55%);mask-image:linear-gradient(to bottom,transparent 0,#000 55%)}
.cart .wm{position:absolute;right:9px;bottom:9px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-family:var(--ls);font-size:17px;color:#F7F2E5;background:var(--cinnabar);border-radius:3px;transform:rotate(-5deg);opacity:.85;box-shadow:inset 0 0 0 1px rgba(247,242,229,.28)}
.dcard.left .cart .wm{background:#17161A}
.ctxt{position:relative;z-index:3;flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;font-family:var(--ls);font-size:19px;line-height:1.7;letter-spacing:1px;padding:8px 14px 4px;gap:14px;text-shadow:0 0 16px rgba(247,242,229,.95),0 0 5px rgba(247,242,229,1),0 3px 7px rgba(23,22,26,.32)}
.left .ctxt{color:#17161A}.right .ctxt{color:#B03A2E}
.eg{font-style:normal;font-size:.7em;opacity:.6;letter-spacing:0;line-height:1.6;position:relative;padding-top:12px}
.eg::before{content:"";position:absolute;top:0;left:50%;transform:translateX(-50%);width:56px;height:1px;background:linear-gradient(90deg,transparent,rgba(23,22,26,.28),transparent)}
.right .eg::before{background:linear-gradient(90deg,transparent,rgba(176,58,46,.35),transparent)}
.dcard .gem{align-self:center;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;border:1px solid;transition:transform .2s var(--spring);background:transparent}
.tjbadge{position:absolute;top:9px;width:24px;height:24px;border-radius:50%;z-index:2;box-shadow:0 1px 5px rgba(23,22,26,.25)}
.left .tjbadge{right:9px;top:9px}.right .tjbadge{left:9px;top:auto;bottom:9px}
.left .gem{color:var(--ink);border-color:rgba(23,22,26,.55)}
.right .gem{color:var(--cinnabar);border-color:rgba(176,58,46,.6)}
.dcard:hover .gem{transform:scale(1.3)}
.beam{position:absolute;bottom:0;left:50%;transform:translateX(-50%) scaleY(0);transform-origin:bottom;width:70%;height:125%;background:linear-gradient(0deg,rgba(23,22,26,.5),rgba(23,22,26,.14) 45%,transparent 80%);filter:blur(10px);border-radius:50% 50% 0 0;pointer-events:none;opacity:0}
.right .beam{bottom:auto;top:0;transform-origin:top;background:linear-gradient(180deg,rgba(176,58,46,.45),rgba(176,58,46,.12) 45%,transparent 80%)}
#s-home::before{content:"";position:absolute;left:50%;top:184px;width:412px;height:412px;margin:-206px 0 0 -206px;background:url(../assets/img/sinan_bg_clean.png) center/contain no-repeat;opacity:.4;mix-blend-mode:multiply;animation:spin 170s linear infinite;pointer-events:none;z-index:-1}
@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.doms{position:absolute;left:24px;right:24px;bottom:20px}
.dm{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:10px;color:var(--dim)}
.dm s{width:17px;height:17px;flex:none;display:flex;align-items:center;justify-content:center;color:#F7F2E5;font-family:var(--ls);font-size:12px;text-decoration:none;border-radius:2px;box-shadow:1px 1px 0 rgba(23,22,26,.2);transform:rotate(-2deg)}
.dm u{width:44px;text-decoration:none;font-family:var(--ls);font-size:12.5px;letter-spacing:2px;color:var(--ink)}
.bar{flex:1;height:7px;background:linear-gradient(rgba(23,22,26,.12),rgba(23,22,26,.07));border:1px solid rgba(23,22,26,.22);border-radius:2px;overflow:hidden;position:relative}
.bar i{display:block;height:100%;width:0%;border-radius:1px 3px 3px 1px;transition:width .5s var(--out);position:relative}
.bar i::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(112deg,transparent 0 3px,rgba(247,242,229,.3) 3px 4px)}
.bar i::after{content:"";position:absolute;right:0;top:0;bottom:0;width:9px;background:linear-gradient(90deg,transparent,rgba(244,238,224,.85))}
/* 中缝「鬥」——格斗VS式：砸落 + 背后血渍群 + 字震颤血光 */
.pick{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:8;pointer-events:none;transition:opacity .3s,transform .3s var(--out)}
.pick.gone{opacity:0;transform:translate(-50%,-50%) scale(1.5)}
.pick .vs{position:relative;display:flex;align-items:center;justify-content:center;width:120px;height:120px}
/* 血渍：落地瞬间洇开，之后留一层没干透的红 */
.pick .vs::before{content:"";position:absolute;left:50%;top:44%;width:112px;height:104px;transform:translate(-50%,-50%);background:radial-gradient(ellipse 54% 50% at 50% 50%,rgba(142,44,34,.34) 0 30%,rgba(176,58,46,.2) 48%,rgba(120,20,14,.08) 62%,transparent 76%);border-radius:52% 48% 55% 45%/48% 55% 45% 52%;filter:blur(1px);animation:bleed 1s cubic-bezier(.2,.8,.3,1) both;animation-delay:.28s}
.pick .vs b{position:relative;font-family:"Weibei SC","Baoli SC",serif;font-weight:400;font-size:78px;line-height:1;color:var(--cinnabar);text-shadow:2px 3px 0 rgba(23,22,26,.25),0 1px 14px rgba(176,58,46,.4);animation:vsslam .5s cubic-bezier(.2,1.4,.4,1) both}
/* 背后血渍群：不规则洇点，砸落后陆续晕开、留驻 */
.pick .sp{position:absolute;border-radius:58% 42% 55% 45%/46% 55% 45% 54%;background:radial-gradient(circle,rgba(142,44,34,.5),rgba(176,58,46,.22) 60%,transparent 78%);filter:blur(.6px);opacity:0;animation:spotted .9s cubic-bezier(.2,.8,.3,1) both}
.pick .sp{animation-name:spottedR}
@keyframes spotted{0%{opacity:0;transform:scale(.15)}50%{opacity:.85}100%{opacity:.5;transform:scale(1)}}
@keyframes spottedR{0%{opacity:0;transform:rotate(var(--rot,0deg)) scale(.15)}50%{opacity:.85}100%{opacity:.5;transform:rotate(var(--rot,0deg)) scale(1)}}
.pick .vs b{position:relative;z-index:2;font-family:"Xingkai SC","STXingkai","Weibei SC",serif;font-weight:400;font-size:80px;line-height:1;color:var(--cinnabar);text-shadow:2px 3px 0 rgba(23,22,26,.22);animation:vsslam .5s cubic-bezier(.2,1.4,.4,1) both,quake 2.8s .55s ease-in-out infinite}
@keyframes quake{0%,100%{transform:translate(0,0) rotate(0);text-shadow:2px 3px 0 rgba(23,22,26,.22),0 0 10px rgba(176,58,46,.25)}18%{transform:translate(.7px,-.6px) rotate(-.7deg);text-shadow:2px 3px 0 rgba(23,22,26,.22),0 0 22px rgba(176,58,46,.55)}36%{transform:translate(-.6px,.5px) rotate(.6deg)}54%{transform:translate(.5px,.6px) rotate(-.4deg);text-shadow:2px 3px 0 rgba(23,22,26,.22),0 0 20px rgba(176,58,46,.5)}72%{transform:translate(-.5px,-.5px) rotate(.5deg)}86%{transform:translate(.3px,0) rotate(-.2deg)}}
@keyframes vsslam{0%{transform:scale(2.6) rotate(-14deg);opacity:0}55%{transform:scale(.92) rotate(2deg);opacity:1}75%{transform:scale(1.06) rotate(-1deg)}100%{transform:scale(1) rotate(0)}}
@keyframes bleed{0%{transform:translate(-50%,-50%) scale(.15);opacity:0}45%{opacity:1}100%{transform:translate(-50%,-50%) scale(1);opacity:.85}}


/* holland quiz */
#s-quiz{padding:14px 22px 0;align-items:stretch}
.qhead{display:flex;align-items:center;gap:12px}
.qhead .tt{flex:1;height:4px;background:#DDD3BC;border-radius:3px;overflow:hidden}
.qhead .tt i{display:block;height:100%;width:0%;background:linear-gradient(90deg,var(--indigo),var(--ink));transition:width .3s var(--out)}
.qhead span{font-size:11px;color:var(--dim);font-variant-numeric:tabular-nums}
.qsec{margin-top:26px;font-size:11px;letter-spacing:4px;color:var(--cinnabar)}
.qexit{right:2px;top:34px;font-family:var(--ls);font-size:15px;letter-spacing:4px;color:var(--dim);border:1px solid var(--line);border-radius:3px;padding:3px 10px;background:#F4EEE0}
.qexit:active{color:var(--cinnabar);border-color:var(--cinnabar)}
.qcard{flex:0 0 auto;margin-top:16px;text-shadow:0 0 16px rgba(247,242,229,.95),0 0 5px rgba(247,242,229,1),0 3px 7px rgba(23,22,26,.32);background:linear-gradient(165deg,#FBF7EC,#EFE7D2);border:1px solid var(--line);border-radius:6px;padding:34px 26px;font-family:var(--ls);font-size:23px;line-height:1.9;min-height:190px;color:var(--ink);box-shadow:3px 4px 0 rgba(23,22,26,.07);position:relative;overflow:hidden}
.qcard .cart{top:34%;z-index:1}
.qcard .cart img{opacity:.26;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 62%);mask-image:linear-gradient(to bottom,transparent 0,#000 62%)}
.qcard .qtxt{position:relative;z-index:3;display:block}
.qscene{position:absolute;left:0;right:0;bottom:0;height:62%;z-index:0;pointer-events:none;background:bottom center/cover no-repeat;opacity:.34;filter:saturate(.7) contrast(.92);-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 50%);mask-image:linear-gradient(to bottom,transparent 0,#000 50%)}
.qscene img{width:100%;height:100%;object-fit:cover;object-position:center bottom}
.qbtns{display:flex;gap:14px;margin-top:26px}
.qb{flex:1;padding:16px;border-radius:4px;border:none;font-size:18px;font-family:var(--ls);letter-spacing:8px;cursor:pointer;transition:transform .15s var(--spring)}
.qb:active{transform:scale(.92)}
.qb.yes{background:linear-gradient(160deg,#B03A2E,#8E2C22);color:#F7F2E5;box-shadow:2px 3px 0 rgba(176,58,46,.28),inset 0 0 0 1px rgba(247,242,229,.18);border-radius:2px}
.qb.no{background:#EFE7D2;color:var(--ink);border:1px solid rgba(23,22,26,.4);border-radius:2px;box-shadow:2px 3px 0 rgba(23,22,26,.12)}
/* results shared */
.rvtxt{font-size:12px;color:var(--dim);letter-spacing:2px;text-align:center;margin-top:18px}
.fan{display:flex;gap:8px;perspective:900px;justify-content:center;margin-top:22px}
.slot{width:56px;height:86px;perspective:700px;position:relative}
.fly{width:100%;height:100%;transform:translateZ(-650px) rotateY(120deg) translateY(60px);opacity:0;transform-style:preserve-3d;transition:transform .65s var(--out),opacity .4s}
.fly.in{transform:translateZ(0) rotateY(0) translateY(0);opacity:1}
.flipin{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .6s var(--spring)}
.flipin.f{transform:rotateY(180deg)}
.fc{position:absolute;inset:0;backface-visibility:hidden;border-radius:4px;display:flex;align-items:center;justify-content:center;overflow:hidden}
.fback{background:repeating-linear-gradient(45deg,#EFE7D2,#EFE7D2 5px,#E4DAC2 5px,#E4DAC2 10px);border:1px solid #CFC5AC;color:var(--ink);font-family:"Kaiti SC",serif;font-size:18px}
.ffront{transform:rotateY(180deg);flex-direction:column;gap:3px;border:1px solid rgba(23,22,26,.35);background:#FBF7EC}
.ffront b{font-family:var(--ls);font-weight:400;font-size:17px;color:var(--ink);writing-mode:vertical-lr;letter-spacing:5px;font-weight:900}
.ffront small{font-size:8px;color:rgba(23,22,26,.55);position:absolute;bottom:5px;left:0;right:0;text-align:center}
.ffront .seal{position:absolute;top:7px;right:7px;width:18px;height:18px;border-radius:3px;background:var(--cinnabar);box-shadow:0 0 0 1.2px rgba(238,214,148,.75),1px 2px 4px rgba(0,0,0,.45);background:var(--cinnabar);color:#F7F2E5;font-size:10px;font-family:"Kaiti SC",serif;display:flex;align-items:center;justify-content:center;font-style:normal;opacity:.92;transform:scale(1) rotate(-6deg)}
@keyframes stampin{0%{opacity:0;transform:scale(1.8) rotate(-14deg)}60%{opacity:.95;transform:scale(.92) rotate(-4deg)}100%{opacity:.92;transform:scale(1) rotate(-6deg)}}
.stamp .seal{animation:stampin .32s var(--spring) both}
.rare .ffront{box-shadow:0 0 18px 3px rgba(176,58,46,.35),inset 0 0 0 2px rgba(176,58,46,.25)}
.domdist{display:flex;gap:10px;justify-content:center;margin-top:22px}
.dd{width:64px;text-align:center;font-size:10px;color:var(--dim);font-family:"Kaiti SC",serif;font-size:12px}
.dd .ring{width:52px;height:52px;border-radius:50%;margin:0 auto 6px;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--ink);position:relative;background:#FBF7EC}
.dd .ring span{position:relative}
.ranklist{margin:18px 22px 0;display:none;max-height:190px;overflow-y:auto}
.ranklist.on{display:block}
.rk{display:flex;align-items:center;gap:8px;font-size:11.5px;padding:5px 0;border-bottom:1px dashed #D5CBB2;color:var(--steel)}
.rk u{width:20px;text-decoration:none;color:var(--dim);font-variant-numeric:tabular-nums}
.rk b{width:44px;color:var(--ink);font-family:"Kaiti SC",serif;font-size:13px;letter-spacing:1px}
.rk .bar{flex:1}
.big{display:block;margin:20px auto 30px;background:var(--ink);color:#F4EEE0;border:none;border-radius:3px;padding:14px 40px;font-size:15px;font-family:"Kaiti SC",serif;letter-spacing:8px;cursor:pointer;box-shadow:3px 4px 0 rgba(23,22,26,.18);transition:transform .2s var(--spring)}
.big:active{transform:scale(.9)}
/* holland result */
#s-rh{padding-bottom:26px}
.rwrap{display:flex;align-items:center;justify-content:center;margin-top:10px}
#radar{filter:none}
.code3{display:flex;gap:14px;justify-content:center;align-items:flex-start;margin-top:4px}
.code3 b{font-family:"Kaiti SC",serif;font-size:22px;width:38px;height:38px;border-radius:3px;display:flex;align-items:center;justify-content:center;background:#FBF7EC;border:1px solid var(--line);color:var(--ink)}
.code3 b.hot{border-color:var(--cinnabar);box-shadow:2px 3px 0 rgba(176,58,46,.18);transform:translateY(-3px)}
.c3{display:flex;flex-direction:column;align-items:center;gap:5px}
.c3 b{width:46px;height:46px;border:1.5px solid;border-radius:2px;animation:pop .5s var(--spring);font-family:var(--ls);font-weight:400;font-size:27px;
 background:
  repeating-linear-gradient(to right,rgba(176,58,46,.42) 0 3px,transparent 3px 6px) no-repeat center/100% 1.2px,
  repeating-linear-gradient(to bottom,rgba(176,58,46,.42) 0 3px,transparent 3px 6px) no-repeat center/1.2px 100%,
  #FBF7EC}
.c3 u{text-decoration:none;font-size:10px;color:var(--dim);letter-spacing:2px;font-family:"Kaiti SC",serif}
.chips{display:flex;gap:8px;justify-content:center;margin-top:14px;flex-wrap:wrap;padding:0 20px}
.chip{font-size:10.5px;color:var(--steel);border:1px solid var(--line);border-radius:3px;padding:4px 12px;background:#F4EEE0}
.chip b{color:var(--cinnabar)}
.careerbox{margin:18px 22px 0}
.careerbox h4{font-size:14px;letter-spacing:3px;color:var(--ink);margin-bottom:8px}
.careerbox .cr{display:flex;justify-content:space-between;font-size:12.5px;padding:7px 4px;border-bottom:1px dashed #D5CBB2;color:var(--ink)}
.careerbox .cr span{color:var(--dim);font-size:11px}
/* paid block */
.lockbox{margin:20px 22px 0;border:1px solid rgba(176,58,46,.5);outline:1px solid rgba(176,58,46,.2);outline-offset:3px;border-radius:4px;padding:20px;background:linear-gradient(160deg,rgba(176,58,46,.05),#F4EEE0);text-align:center}
.lockbox h4{font-family:"Kaiti SC",serif;font-size:17px;letter-spacing:3px;color:var(--cinnabar)}
.lockbox p{font-size:11.5px;color:var(--dim);margin:8px 0 14px;line-height:1.8}
.lockbox button{background:var(--cinnabar);color:#F7F2E5;border:none;border-radius:3px;padding:11px 30px;font-size:14px;cursor:pointer;font-family:"Kaiti SC",serif;letter-spacing:2px;box-shadow:2px 3px 0 rgba(176,58,46,.25)}
.report{margin:16px 22px 0;display:none}
.report.on{display:block}
.report h4{font-family:"Kaiti SC",serif;font-size:15px;color:var(--ink);letter-spacing:2px;margin:18px 0 6px;border-left:3px solid var(--cinnabar);padding-left:8px}
.report p{font-size:12.5px;line-height:1.9;color:#403C34;margin-bottom:8px}
.report .dimp{color:var(--dim);font-size:11.5px}
.rowbtns{display:flex;gap:12px;justify-content:center;margin:16px 0 30px}
.ghost{background:none;border:1px solid var(--line);color:var(--steel);border-radius:3px;padding:9px 20px;font-size:12px;cursor:pointer}
.ghost:hover{border-color:var(--cinnabar);color:var(--cinnabar)}
/* modal */
.modal{position:fixed;inset:0;z-index:100;background:rgba(120,110,90,.35);backdrop-filter:blur(6px);display:none;align-items:center;justify-content:center}
.modal.on{display:flex}
.mcard{width:320px;max-width:88vw;background:linear-gradient(165deg,#FBF7EC,#EFE7D2);border:1px solid #CFC5AC;border-radius:8px;padding:26px 22px;text-align:center;animation:pop .35s var(--spring);box-shadow:0 30px 80px rgba(50,42,26,.4)}
.mcard.wide{width:380px;text-align:left;max-height:76vh;overflow-y:auto}
@keyframes pop{from{transform:scale(.7);opacity:0}}
.mcard h3{font-size:19px;letter-spacing:3px;color:var(--ink)}
.mcard p{font-size:12px;color:var(--dim);line-height:1.9;margin:10px 0}
.price{font-size:14px;color:var(--paper);margin-bottom:14px}
.price b{font-size:30px;color:var(--cinnabar)}
.price s{color:#A79E8C;font-size:12px;margin-left:6px}
.mcard .big{margin:6px auto 10px}
.mcard .ghost{display:block;margin:0 auto}
.mnote{font-size:10px;color:#A79E8C;margin-top:10px!important}
.hitem{padding:12px 4px;border-bottom:1px dashed #D5CBB2;cursor:pointer}
.hitem b{font-family:"Kaiti SC",serif;color:var(--ink);font-size:14px;letter-spacing:1px}
.hitem span{display:block;font-size:10.5px;color:var(--dim);margin-top:3px}
.hitem:hover b{color:var(--cinnabar)}
::-webkit-scrollbar{width:0}

/* 报告深读块 */
.rblk{margin:14px 0;padding:12px 14px 10px;background:rgba(23,22,26,.045);border-left:3px solid rgba(176,58,46,.55)}
.rt-h{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:6px}
.rt-h b{font-family:var(--ls);font-size:19px}
.rt-sc{color:#8A6A3C;font-size:13.5px}
.rt-l{margin-top:6px}
.rt-l b{color:var(--cinnabar);margin-right:8px;font-family:var(--ls);font-size:14.5px}
.rt-pos{margin-top:8px;padding-top:8px;border-top:1px dashed rgba(23,22,26,.18);font-size:12.5px;color:var(--dim)}

/* ── 古代官身 · 横版活卡 + 开卡动画 ── */
.idc-h{margin:16px 0 12px;font-size:14px;letter-spacing:4px;color:var(--ink);text-align:center}
.idcards{display:flex;justify-content:center}
.idc-stage{perspective:1100px;max-width:356px;width:100%}
.idc-inner{position:relative;width:100%;aspect-ratio:356/212;transform-style:preserve-3d;
  transform:rotateY(180deg) scale(2.2);opacity:0;
  animation:idfly .5s cubic-bezier(.2,.9,.3,1.15) forwards,
            idshiver .5s .6s linear 2,
            idburst .62s 1.6s cubic-bezier(.25,.9,.3,1.2) forwards}
@keyframes idfly{to{transform:rotateY(180deg) scale(1);opacity:1}}
@keyframes idshiver{0%,100%{margin-left:0}25%{margin-left:-3px}75%{margin-left:3px}}
@keyframes idburst{
  0%{transform:rotateY(180deg) scale(1)}
  45%{transform:rotateY(115deg) scale(1.16) rotate(-2.5deg)}
  75%{transform:rotateY(15deg) scale(1.07) rotate(1.2deg)}
  100%{transform:rotateY(0) scale(1)}}
.idc-back{position:absolute;inset:0;transform:rotateY(180deg);border-radius:10px;overflow:hidden;animation:backout .28s 1.72s ease-out forwards;
  background:radial-gradient(130% 140% at 50% 26%,#322C22,#16130E 72%);display:grid;place-items:center;
  -webkit-mask-image:radial-gradient(115% 128% at 50% 42%,#000 60%,transparent 98%);
  mask-image:radial-gradient(115% 128% at 50% 42%,#000 60%,transparent 98%)}
.idc-back::before{content:'';position:absolute;inset:0;opacity:.6;background:
  repeating-radial-gradient(circle at 50% 122%,transparent 0 21px,rgba(200,162,74,.15) 21px 22px),
  repeating-radial-gradient(circle at 50% -22%,transparent 0 21px,rgba(200,162,74,.1) 21px 22px)}
.idc-back b{font-family:var(--ls);color:#C8A24A;font-size:30px;letter-spacing:4px;font-weight:400;
  writing-mode:vertical-rl;border:2px solid rgba(200,162,74,.55);padding:9px 10px;border-radius:6px;
  box-shadow:0 0 18px rgba(200,162,74,.25),inset 0 0 12px rgba(0,0,0,.5)}
.idc-back i{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,transparent 42%,rgba(255,225,150,.32) 50%,transparent 58%);
  background-size:260% 100%;animation:sheen 1s .35s ease-in-out 1 both}
.idc-back::after{content:'';position:absolute;inset:0;opacity:0;pointer-events:none;
  background:radial-gradient(64% 54% at 50% 50%,var(--bc,rgba(200,162,74,.4)),transparent 76%);
  animation:charge .55s .5s ease-in 3 alternate both,chargeout .4s 1.6s ease-out forwards}
@keyframes charge{from{opacity:.15;transform:scale(.92)}to{opacity:1;transform:scale(1.06)}}
@keyframes chargeout{from{opacity:1;transform:scale(1.06)}to{opacity:0;transform:scale(1.9)}}
.idc-back::before{animation:spinmist 4.5s linear infinite}
@keyframes spinmist{to{filter:hue-rotate(12deg)}}
@keyframes sheen{from{background-position:120% 0}to{background-position:-30% 0}}
.card{position:absolute;inset:0;isolation:isolate;border:none;box-shadow:none;opacity:0;animation:frontin .4s 1.98s cubic-bezier(.2,.9,.3,1) forwards;
  --mistc:rgba(200,180,140,.16);--motec:rgba(240,220,160,.9);
  -webkit-mask-image:radial-gradient(115% 128% at 50% 42%,#000 56%,transparent 96%);
  mask-image:radial-gradient(115% 128% at 50% 42%,#000 56%,transparent 96%)}
.card .fig{position:absolute;inset:0;background:linear-gradient(165deg,#F5EFDF,#EDE3CC) center/cover no-repeat;z-index:0}
.card .fig img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.card .shade{position:absolute;inset:0;z-index:1;
  background:linear-gradient(90deg,transparent 28%,rgba(8,7,5,.45) 60%,rgba(8,7,5,.82) 92%),
             linear-gradient(0deg,rgba(8,7,5,.88) 0%,rgba(8,7,5,.5) 24%,transparent 56%)}
.mist{position:absolute;inset:-22%;z-index:2;pointer-events:none;
  background:radial-gradient(36% 26% at 24% 76%,var(--mistc),transparent 70%);
  animation:drift 9s ease-in-out infinite alternate}
.mist.m2{animation-duration:13s;animation-direction:alternate-reverse;
  background:radial-gradient(30% 22% at 68% 28%,var(--mistc),transparent 70%)}
@keyframes drift{from{transform:translate(-5%,2%) scale(1)}to{transform:translate(6%,-4%) scale(1.06)}}
.mote{position:absolute;bottom:10%;width:3px;height:3px;border-radius:50%;z-index:6;pointer-events:none;
  background:var(--motec);box-shadow:0 0 6px var(--motec);animation:rise linear infinite}
@keyframes rise{0%{transform:translateY(0);opacity:0}12%{opacity:.95}85%{opacity:.5}100%{transform:translateY(-180px);opacity:0}}
.card .grain{position:absolute;inset:0;z-index:5;pointer-events:none;opacity:.4;mix-blend-mode:overlay;
  background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence baseFrequency='.9' numOctaves='2'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='.5'/></svg>")}
.tier{position:absolute;top:10px;left:12px;z-index:8;font-family:var(--ls);
  font-size:12.5px;letter-spacing:2.5px;padding:3px 10px;border-radius:3px;border:1px solid;
  box-shadow:0 0 10px rgba(0,0,0,.5),0 1px 4px rgba(0,0,0,.6);text-shadow:0 1px 2px rgba(0,0,0,.4)}
.rank{position:absolute;bottom:12px;right:14px;z-index:8;writing-mode:vertical-rl;
  font-family:var(--ls);font-size:11px;letter-spacing:2.5px;color:#F0D491;
  background:rgba(20,16,10,.78);border:1px solid rgba(200,162,74,.55);border-radius:4px;
  padding:8px 4px;box-shadow:0 2px 8px rgba(0,0,0,.55),inset 0 0 8px rgba(0,0,0,.5)}
.office{position:absolute;top:16px;right:46px;z-index:7;writing-mode:vertical-rl;
  font-family:"LibianWeb","Libian SC","Baoli SC",serif;font-size:26px;letter-spacing:5px;line-height:1.05;max-height:180px;
  filter:drop-shadow(0 3px 8px rgba(0,0,0,.92)) drop-shadow(0 0 18px rgba(0,0,0,.7)) drop-shadow(0 0 7px rgba(255,215,140,.5))}
@keyframes flowtext{from{background-position:0 0}to{background-position:0 -340%}}
.tw{position:absolute;z-index:8;font-size:11px;color:#ffe9b0;pointer-events:none;font-style:normal;
  text-shadow:0 0 8px rgba(255,220,140,.9);animation:tw 2.2s ease-in-out infinite}
@keyframes tw{0%,100%{opacity:0;transform:scale(.4)}50%{opacity:1;transform:scale(1.1) rotate(28deg)}}
.seal{position:absolute;z-index:9;font-family:var(--kai);font-weight:700;
  color:#E2553F;border:2.5px solid #D8492F;border-radius:3px 5px 4px 6px;
  display:grid;place-items:center;text-align:center;line-height:1.05;mix-blend-mode:screen;
  filter:url(#sealGrunge) drop-shadow(0 0 1.6px rgba(226,85,63,.45));
  -webkit-mask-image:linear-gradient(135deg,#000 30%,rgba(0,0,0,.62) 78%,rgba(0,0,0,.45));
  mask-image:linear-gradient(135deg,#000 30%,rgba(0,0,0,.62) 78%,rgba(0,0,0,.45))}
.seal::before{content:'';position:absolute;inset:2.5px;border:1px solid rgba(230,110,90,.6);border-radius:2px 4px 3px 5px}
.seal.ink{color:#c9c2b2;border-color:#b5ad9c}
.foot{position:absolute;left:14px;bottom:13px;right:76px;z-index:7}
.modern{position:relative;top:2px;font-size:13px;color:#fff;letter-spacing:1.5px;font-weight:600;
  text-shadow:0 1px 4px rgba(0,0,0,.95),0 0 12px rgba(0,0,0,.75)}
.code3{display:inline-flex;gap:3px;margin-left:5px;vertical-align:middle;position:relative;top:-2px}
.code3 i{font-style:normal;font-family:var(--ls);font-size:11px;width:18px;height:18px;font-weight:700;
  display:grid;place-items:center;border:1px solid rgba(245,239,223,.55);border-radius:2px;
  background:rgba(245,239,223,.92);color:#2A2418;box-shadow:0 1px 4px rgba(0,0,0,.5)}
.verdict{margin-top:7px;font-family:var(--kai);font-size:13px;color:#F5CE8E;letter-spacing:1px;
  transform:rotate(-1deg);text-shadow:0 1px 3px rgba(0,0,0,.95),0 0 12px rgba(0,0,0,.6)}
.verdict::before{content:'吏部考语 ';font-size:9.5px;color:#D8A45C;letter-spacing:2px;
  border-right:1px solid rgba(216,164,92,.45);padding-right:6px;margin-right:6px}
.t-ur{border-color:var(--gold);color:#1a1206;background:linear-gradient(135deg,#F0D080,#C8A24A);box-shadow:0 0 12px rgba(200,162,74,.55)}
.card.ur{--mistc:rgba(230,190,110,.22);--motec:rgba(255,215,120,.95)}
.card.ur .fig{filter:sepia(.14) saturate(1.15) brightness(1.03)}
.card.ur::after{content:'';position:absolute;inset:0;z-index:6;pointer-events:none;
  background:linear-gradient(115deg,transparent 42%,rgba(255,220,140,.22) 50%,transparent 58%);
  background-size:260% 100%;animation:sheen 3.6s 2.6s ease-in-out infinite}
.t-ssr{border-color:#9B6BC9;color:#F0E4FF;background:linear-gradient(135deg,#7B4BA9,#5A3280)}
.card.ssr{--mistc:rgba(155,107,201,.2);--motec:rgba(214,180,255,.9)}
.t-sr{border-color:#C0402F;color:#FFE4DF;background:linear-gradient(135deg,#B03A2E,#7E2620)}
.card.sr{--mistc:rgba(176,58,46,.16);--motec:rgba(255,160,130,.85)}
.t-r{border-color:#5A7247;color:#E4F0DC;background:linear-gradient(135deg,#5A7247,#3A4A2E)}
.card.r{--mistc:rgba(110,150,90,.16);--motec:rgba(180,235,160,.8)}
.t-n{border-color:#8A8272;color:#EDE3CC;background:rgba(60,56,48,.72)}
.card.n{--mistc:rgba(120,115,105,.14);--motec:rgba(220,215,200,.7)}

/* ── 开卡仪式升级 ── */
.burst{position:absolute;inset:0;z-index:12;pointer-events:none;opacity:0;
  background:radial-gradient(58% 50% at 50% 46%,rgba(255,246,220,.95),rgba(255,230,170,.4) 55%,transparent 75%);
  animation:burstflash .5s 1.6s ease-out forwards}
.burst.gold{background:radial-gradient(58% 50% at 50% 46%,rgba(255,235,170,1),rgba(230,180,80,.55) 55%,transparent 75%)}
@keyframes burstflash{0%{opacity:0;transform:scale(.5)}25%{opacity:1;transform:scale(1.05)}100%{opacity:0;transform:scale(1.5)}}
.wave{position:absolute;left:50%;top:46%;width:40px;height:40px;margin:-20px;border-radius:50%;z-index:11;pointer-events:none;
  border:3px solid rgba(255,235,190,.9);opacity:0;animation:shock .7s 1.66s cubic-bezier(.1,.7,.3,1) forwards}
.wave.w2{animation-delay:1.78s;border-color:rgba(230,180,90,.6)}
@keyframes shock{0%{opacity:.95;transform:scale(.3)}100%{opacity:0;transform:scale(7.5)}}
.oc-c{display:inline-block;opacity:0;
  background:linear-gradient(175deg,#ffd86b 0%,#ff7d6b 20%,#e67dff 40%,#6bb8ff 60%,#7dff9e 80%,#ffd86b 100%);
  background-size:100% 340%;-webkit-background-clip:text;background-clip:text;color:transparent;
  animation:charin .34s cubic-bezier(.2,.9,.3,1.3) forwards,flowtext 5.5s linear infinite}
@keyframes charin{0%{opacity:0;filter:blur(5px);transform:translateY(-14px) scale(1.5)}
  60%{opacity:1;filter:blur(0);transform:translateY(2px) scale(.96)}100%{opacity:1;transform:none}}
.seal{opacity:0;animation:slam .5s cubic-bezier(.3,1.4,.5,1) forwards}
@keyframes slam{0%{opacity:0;transform:scale(2.8) rotate(-30deg) translateY(-26px)}
  52%{opacity:1;transform:scale(.92) rotate(-6deg) translateY(0)}
  70%{transform:scale(1.08) rotate(-8deg)}100%{opacity:1;transform:scale(1) rotate(-7deg)}}
.spray{position:absolute;z-index:10;width:4px;height:4px;border-radius:50%;background:#E2553F;opacity:0;pointer-events:none;
  box-shadow:0 0 4px rgba(226,85,63,.8);animation:sprayout .55s ease-out forwards}
@keyframes sprayout{0%{opacity:1;transform:translate(0,0) scale(1)}100%{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.2)}}
.rank,.modern,.verdict,.code3,.tier{opacity:0;animation:risein .45s cubic-bezier(.2,.9,.3,1.1) forwards}
@keyframes risein{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}
.rank{animation-name:risein}
.beam{position:absolute;left:50%;top:-60%;width:26px;height:220%;margin-left:-13px;z-index:4;pointer-events:none;opacity:0;
  background:linear-gradient(0deg,transparent,rgba(255,225,150,.5) 30%,rgba(255,240,190,.85) 50%,rgba(255,225,150,.5) 70%,transparent);
  filter:blur(2px);animation:beamdown .8s 1.66s ease-out forwards,beamfade 1.6s 2.4s forwards}
@keyframes beamdown{from{opacity:0;transform:scaleY(.2)}40%{opacity:1;transform:scaleY(1)}to{opacity:.85}}
@keyframes beamfade{to{opacity:.28}}

@keyframes frontin{from{opacity:0}to{opacity:1}}
@keyframes backout{to{opacity:0;visibility:hidden}}

/* 报告三节：为什么给你看 / 对你什么意思 / 配比条 */
.report .why{font-size:11.5px;color:#6B6353;background:rgba(122,115,101,.09);border-radius:3px;padding:7px 10px;line-height:1.85;margin-bottom:10px}
.report .why::before{content:"为什么给你看这个";display:block;font-family:var(--ls);font-size:10px;letter-spacing:2.5px;color:var(--steel);margin-bottom:3px}
.report .use{font-size:12px;color:#5A4A32;border-left:3px solid var(--cinnabar);background:rgba(176,58,46,.05);padding:8px 10px;line-height:1.85;margin:10px 0 4px}
.report .use::before{content:"这对你什么意思";display:block;font-family:var(--ls);font-size:10px;letter-spacing:2.5px;color:var(--cinnabar);margin-bottom:3px}
.dbar{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--dim);margin:5px 0}
.dbar>i{font-style:normal;width:42px;flex:none;font-family:"Kaiti SC",serif;letter-spacing:2px;color:var(--steel)}
.dbar .bar{flex:1}
.dbar u{text-decoration:none;flex:none;width:56px;text-align:right;font-variant-numeric:tabular-nums}

/* 四力饼图 */
#rsDom{display:flex;gap:16px;justify-content:center;margin-top:22px}
.dd{width:72px;text-align:center}
.dpie{width:58px;height:58px;display:block;margin:0 auto 5px;filter:drop-shadow(0 2px 5px rgba(23,22,26,.22))}
.dpie .rim{fill:none;stroke:rgba(247,242,229,.92);stroke-width:1.6}
.dd u{text-decoration:none;font-family:"Kaiti SC",serif;font-size:12.5px;letter-spacing:3px;color:var(--steel);white-space:nowrap}
.dd u i{width:5px;height:5px;border-radius:50%;display:inline-block;margin-right:4px;vertical-align:2px}

/* Top5 翻牌 v2 */
.fan{gap:10px}
.slot{width:60px;height:94px}
.fback{background:radial-gradient(130% 130% at 50% 10%,#F6EFDA,#E2D5B0 82%);border:1px solid #BCAB84;box-shadow:inset 0 0 0 2px rgba(176,58,46,.14),inset 0 0 18px rgba(150,120,50,.12)}
.fback span{color:var(--cinnabar);font-family:"LibianWeb","Libian SC","Kaiti SC",serif;font-size:18px;position:relative;z-index:2;padding:3px 6px;border:1.5px solid rgba(176,58,46,.5);border-radius:3px;background:rgba(255,252,242,.55)}
.fback::after{content:"";position:absolute;inset:0;background:repeating-conic-gradient(from 8deg at 50% 46%,rgba(150,120,50,.07) 0 5deg,transparent 5deg 13deg)}
.ffront{box-shadow:inset 0 0 0 2px rgba(238,214,148,.9),inset 0 0 0 4px rgba(23,20,15,.65),inset 0 0 0 5px rgba(238,214,148,.5),0 4px 14px rgba(23,22,26,.35)}
.ffront::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,transparent 0 6px,rgba(23,22,26,.03) 6px 7px);pointer-events:none}
.ffront b{font-family:"LibianWeb","Libian SC",var(--ls);font-size:20px;letter-spacing:6px;font-weight:700;color:#2B2519;
  text-shadow:0 1px 0 rgba(255,255,255,.8)}
@keyframes shine{0%{transform:translateX(-140%) rotate(16deg)}46%,100%{transform:translateX(560%) rotate(16deg)}}
.ffront::after{content:"";position:absolute;top:-26%;bottom:-26%;left:-26%;width:34%;z-index:3;pointer-events:none;
  background:linear-gradient(100deg,transparent 8%,rgba(255,255,252,.85) 44%,rgba(216,178,96,.30) 60%,transparent 90%);
  transform:translateX(-140%) rotate(16deg);animation:shine 3.6s ease-in-out 2.4s infinite}
.ffront small{bottom:8px;color:rgba(43,37,25,.72)}
.ffront small::before,.ffront small::after{content:"·";margin:0 3px;color:rgba(43,37,25,.4)}

