/* 赣韵乡兴·数智助农 云展 H5 · 样式表
   设计基准 490x900 竖版，国风白描 + 青花青蓝/赭石 */
/* ============ 设计变量 ============ */
:root{
  --ink:#24313F;
  --ink-2:#4A5A6B;
  --ink-3:#7C8A99;
  --qing:#2E6CA4;
  --qing-deep:#1B4668;
  --qing-soft:#A9CBE4;
  --qing-wash:rgba(46,108,164,.08);
  --tu:#B8874A;
  --tu-deep:#96662C;
  --rice:#EEE1C7;
  --rice-2:#E6D7BA;
  --rice-3:#D9C7A3;
  --tech:#4FB8DC;
  --tech-glow:rgba(79,184,220,.45);
  --white:rgba(255,255,255,.72);
  --serif:"Songti SC","STSong","Source Han Serif SC","Noto Serif SC",STZhongsong,"SimSun",serif;
  --sans:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Hiragino Sans GB",sans-serif;
  --shadow-s:0 2px 10px rgba(36,49,63,.06);
  --shadow-m:0 10px 30px rgba(36,49,63,.10);
  --shadow-l:0 22px 60px rgba(27,70,104,.20);
  --r:18px;
  --noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;height:100%;overflow:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%;}
/* 窄屏（≤370px）：直播间徽章可换行，防止把卡片撑出屏 */
.live-chips{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap;}
.live-chips .chip-btn{flex:0 0 auto;}
@media (max-width:370px){
  .live-chips{gap:6px;margin-top:9px;}
  .live-chips .chip-btn{height:27px!important;padding:0 9px;font-size:11px;}
  .live-foot h4{font-size:14px;}
  .danmu{height:clamp(38px,10.5vw,48px);}
}
body{
  font-family:var(--sans);color:var(--ink);background:var(--rice);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
  overscroll-behavior:none;touch-action:pan-y;
}
button{font-family:inherit;color:inherit;border:0;background:none;cursor:pointer;}
input{font-family:inherit;}

/* ============ 舞台 ============ */
.stage{position:fixed;inset:0;overflow:hidden;background:linear-gradient(166deg,#C7DAE6 0%,#E8DBBE 42%,#D6BF95 100%);}
/* 桌面宽屏：舞台收窄为居中竖版画幅，避免内容被拉满整屏 */
@media (min-width:760px){
  body{background:
    radial-gradient(60% 80% at 18% 8%,rgba(169,203,228,.28),transparent 60%),
    radial-gradient(55% 65% at 86% 92%,rgba(184,135,74,.16),transparent 62%),
    var(--rice-2);}
  .stage{max-width:560px;margin:0 auto;
    box-shadow:0 0 0 1px rgba(46,108,164,.14),0 34px 110px rgba(27,70,104,.26);}
}
.stage::before{ /* 纸纹 */
  content:"";position:absolute;inset:0;background-image:var(--noise);
  opacity:.3;pointer-events:none;z-index:60;
}
.stage::after{ /* 柔光晕 */
  content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
  background:
    radial-gradient(82% 46% at 14% 0%,rgba(116,172,212,.62),transparent 64%),
    radial-gradient(70% 46% at 94% 96%,rgba(172,114,46,.4),transparent 64%),
    radial-gradient(44% 24% at 80% 16%,rgba(46,108,164,.16),transparent 70%),
    radial-gradient(56% 38% at 50% 52%,rgba(255,251,240,.38),transparent 72%);
}
.track{display:flex;height:100%;transform:translate3d(0,0,0);will-change:transform;}
.track.animate{transition:transform .6s cubic-bezier(.22,.78,.22,1);}
.slide{position:relative;flex:0 0 100%;height:100%;overflow:hidden;}
.s-inner{
  position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;
  padding:calc(58px + env(safe-area-inset-top)) clamp(18px,5.2vw,44px) calc(88px + env(safe-area-inset-bottom));
  overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:none;
}
.s-inner::-webkit-scrollbar{display:none;}

/* ============ 背景装饰 ============ */
.bg-layer{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden;}
.ink{fill:none;stroke:currentColor;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round;}
.ink.thin{stroke-width:.8;}
.ink.thick{stroke-width:1.8;}
.c-qing{color:var(--qing);}
.c-qingd{color:var(--qing-deep);}
.c-tu{color:var(--tu);}
.c-soft{color:var(--qing-soft);}
.c-tech{color:var(--tech);}

/* ============ 字体排版 ============ */
.t-eyebrow{
  font:500 clamp(10px,2.7vw,12px)/1.6 var(--sans);letter-spacing:.24em;color:var(--qing);
  display:inline-flex;align-items:center;gap:8px;margin:0 0 10px;
}
.t-eyebrow::before{content:"";width:22px;height:1px;background:linear-gradient(90deg,var(--tu),transparent);}
.t-h1{
  font-family:var(--serif);font-weight:600;margin:0;
  font-size:clamp(30px,9.2vw,52px);line-height:1.22;letter-spacing:.04em;color:var(--qing-deep);
}
.t-h2{
  font-family:var(--serif);font-weight:600;margin:0 0 4px;
  font-size:clamp(21px,6.2vw,32px);line-height:1.3;letter-spacing:.05em;color:var(--qing-deep);
}
.t-h3{font-family:var(--serif);font-weight:600;font-size:clamp(15px,4.4vw,19px);margin:0;letter-spacing:.03em;color:var(--qing-deep);}
.t-sub{font:400 clamp(12px,3.5vw,15px)/1.9 var(--sans);color:var(--ink-2);margin:10px 0 0;letter-spacing:.06em;}
.t-body{font:400 clamp(13px,3.85vw,15.5px)/2.05 var(--sans);color:var(--ink-2);margin:0;text-align:justify;}
.t-note{font:400 clamp(10.5px,2.9vw,12px)/1.7 var(--sans);color:var(--ink-3);letter-spacing:.04em;margin:0;}
.t-num{font:600 clamp(22px,6.4vw,30px)/1 var(--serif);color:var(--qing);letter-spacing:.02em;}
.t-num small{font-size:.5em;font-weight:400;color:var(--ink-3);margin-left:3px;letter-spacing:0;}
.deco-line{height:1px;background:linear-gradient(90deg,var(--tu),rgba(184,135,74,.12) 60%,transparent);margin:12px 0;}
.title-wrap{position:relative;display:inline-block;}
.title-wrap::after{
  content:"";position:absolute;left:-6px;right:-6px;bottom:6px;height:9px;
  background:linear-gradient(90deg,rgba(169,203,228,.55),rgba(79,184,220,.22));z-index:-1;border-radius:3px;
}

/* ============ 入场动画 ============ */
[data-anim]{opacity:0;transform:translateY(26px);}
.is-active [data-anim]{animation:fadeUp .85s cubic-bezier(.2,.75,.25,1) forwards;animation-delay:var(--d,0s);}
@keyframes fadeUp{to{opacity:1;transform:translateY(0);}}
[data-anim="left"]{transform:translateX(-34px);}
.is-active [data-anim="left"]{animation-name:fadeLeft;}
@keyframes fadeLeft{to{opacity:1;transform:translateX(0);}}
[data-anim="scale"]{transform:scale(.86);}
.is-active [data-anim="scale"]{animation-name:popIn;}
@keyframes popIn{0%{opacity:0;transform:scale(.86);}60%{opacity:1;transform:scale(1.035);}100%{opacity:1;transform:scale(1);}}
[data-chars] span{display:inline-block;opacity:0;transform:translateY(20px) rotateX(-40deg);}
.is-active [data-chars] span{animation:charIn .7s cubic-bezier(.2,.8,.25,1) forwards;animation-delay:var(--d,0s);animation-delay:calc(var(--d,0s) + var(--i)*.07s);}
@keyframes charIn{to{opacity:1;transform:translateY(0) rotateX(0);}}

/* 常驻微动效 */
.breathe{animation:breathe 3.4s ease-in-out infinite;}
@keyframes breathe{0%,100%{opacity:.55;transform:scale(.97);}50%{opacity:1;transform:scale(1.05);}}
.float{animation:float 5.5s ease-in-out infinite;}
@keyframes float{0%,100%{transform:translateY(0) rotate(0deg);}50%{transform:translateY(-9px) rotate(1.6deg);}}
.sway{transform-origin:bottom center;animation:sway 4.6s ease-in-out infinite;}
@keyframes sway{0%,100%{transform:rotate(-3.2deg);}50%{transform:rotate(3.2deg);}}
.spin-slow{animation:spin 26s linear infinite;transform-origin:center;}
@keyframes spin{to{transform:rotate(360deg);}}
.spin-rev{animation:spin 34s linear infinite reverse;transform-origin:center;}
.pulse-glow{animation:pulseGlow 2.9s ease-in-out infinite;}
@keyframes pulseGlow{0%,100%{filter:drop-shadow(0 0 4px rgba(79,184,220,.3));}50%{filter:drop-shadow(0 0 16px rgba(79,184,220,.85));}}
.hop{animation:hop 1.9s ease-in-out infinite;}
@keyframes hop{0%,100%{transform:translateY(0) scale(1);}35%{transform:translateY(-9px) scale(1.05);}70%{transform:translateY(0) scale(.98);}}
.pan-x{animation:panX 22s ease-in-out infinite alternate;}
@keyframes panX{from{transform:translateX(-3%);}to{transform:translateX(3%);}}
.sweep::after{
  content:"";position:absolute;top:0;bottom:0;width:42%;
  background:linear-gradient(100deg,transparent,rgba(79,184,220,.34),transparent);
  animation:sweep 4.4s ease-in-out infinite;
}
@keyframes sweep{0%{left:-45%;}55%,100%{left:118%;}}

/* ============ HUD ============ */
.hud{position:absolute;top:0;left:0;right:0;z-index:50;padding:calc(12px + env(safe-area-inset-top)) clamp(16px,5vw,40px) 0;
  display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:none;}
.hud>*{pointer-events:auto;}
.brand{display:flex;align-items:center;gap:8px;font:500 12px/1 var(--sans);letter-spacing:.18em;color:var(--qing);}
.brand svg{width:22px;height:22px;}
.hud-right{display:flex;align-items:center;gap:10px;}
.chip-btn{
  display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border-radius:999px;
  background:var(--white);backdrop-filter:blur(10px);border:1px solid rgba(46,108,164,.16);
  font:500 12px/1 var(--sans);color:var(--qing-deep);box-shadow:var(--shadow-s);
  transition:transform .25s,box-shadow .25s,background .25s;letter-spacing:.06em;white-space:nowrap;
}
.chip-btn:active{transform:scale(.94);}
.chip-btn svg{width:15px;height:15px;}
.chip-btn.on{background:linear-gradient(135deg,var(--qing),var(--qing-deep));color:#fff;border-color:transparent;}
.eq{display:inline-flex;align-items:flex-end;gap:2px;height:12px;}
.eq i{width:2px;background:currentColor;border-radius:2px;height:4px;animation:eq .9s ease-in-out infinite;}
.eq i:nth-child(2){animation-delay:.15s}.eq i:nth-child(3){animation-delay:.3s}
@keyframes eq{0%,100%{height:4px;}50%{height:12px;}}
@media (max-width:430px){
  .brand{letter-spacing:.09em;font-size:11px;flex:0 0 auto;}
  .brand span{white-space:nowrap;}
  .hud-right{gap:7px;}
  #gameEntry{padding:0 9px;}
}
@media (max-width:360px){
  .brand{font-size:10px;letter-spacing:.04em;gap:6px;}
  .brand svg{width:18px;height:18px;}
  .hud{gap:8px;}
  .hud-right{gap:5px;}
  .chip-btn{padding:0 9px;}
  .dots{padding:6px 9px;gap:5px;}
}

.progress{position:absolute;bottom:0;left:0;right:0;height:2px;z-index:50;background:rgba(46,108,164,.10);}
.progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--tu),var(--tech));transition:width .6s cubic-bezier(.3,.8,.3,1);}

.dock{
  position:absolute;bottom:calc(16px + env(safe-area-inset-bottom));left:0;right:0;z-index:50;
  display:flex;align-items:center;justify-content:center;gap:14px;pointer-events:none;
}
.dock>*{pointer-events:auto;}
.nav-btn{
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;
  background:var(--white);backdrop-filter:blur(10px);border:1px solid rgba(46,108,164,.16);
  color:var(--qing-deep);box-shadow:var(--shadow-s);transition:transform .25s,opacity .25s;
}
.nav-btn:active{transform:scale(.9);}
.nav-btn[disabled]{opacity:.28;}
.nav-btn svg{width:16px;height:16px;}
.dots{display:flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.7);backdrop-filter:blur(10px);border:1px solid rgba(46,108,164,.14);}
.dots b{width:5px;height:5px;border-radius:50%;background:rgba(46,108,164,.25);transition:all .4s;display:block;}
.dots b.on{width:16px;background:var(--qing);border-radius:3px;}
.dots b.done{background:rgba(184,135,74,.55);}
.swipe-hint{position:absolute;left:50%;transform:translateX(-50%);bottom:calc(66px + env(safe-area-inset-bottom));z-index:40;
  font:500 11px/1 var(--sans);letter-spacing:.28em;color:var(--qing);opacity:.85;display:flex;flex-direction:column;align-items:center;gap:7px;pointer-events:none;}
.swipe-hint svg{width:18px;height:18px;}
.mouse{width:20px;height:31px;border:1.4px solid currentColor;border-radius:11px;position:relative;}
.mouse::after{content:"";position:absolute;left:50%;top:6px;width:3px;height:6px;border-radius:2px;background:currentColor;transform:translateX(-50%);animation:wheel 1.9s ease-in-out infinite;}
@keyframes wheel{0%{transform:translate(-50%,0);opacity:0;}30%{opacity:1;}70%{transform:translate(-50%,10px);opacity:0;}100%{opacity:0;}}

/* ============ 卡片 / 组件 ============ */
.card{
  position:relative;background:linear-gradient(160deg,rgba(255,255,255,.94),rgba(255,255,255,.72));
  border:1px solid rgba(46,108,164,.15);border-radius:var(--r);box-shadow:var(--shadow-s);
  transition:transform .42s cubic-bezier(.2,.8,.25,1),box-shadow .42s,border-color .42s;
  overflow:hidden;
}
.card::before{
  content:"";position:absolute;inset:0;opacity:.5;pointer-events:none;
  background-image:var(--noise);mix-blend-mode:multiply;
}
.card::after{
  content:"";position:absolute;right:-16px;top:-16px;width:58px;height:58px;
  border:1px solid rgba(46,108,164,.18);border-radius:50%;pointer-events:none;
}
.card.lift:active,.card.lift:hover{transform:translateY(-7px) scale(1.022);box-shadow:var(--shadow-l);border-color:rgba(79,184,220,.5);}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,3vw,16px);}
.grid4{display:grid;grid-template-columns:1fr 1fr;gap:clamp(10px,3vw,16px);}
.ico{width:clamp(38px,11vw,48px);height:clamp(38px,11vw,48px);color:var(--qing);}
.ico.sm{width:26px;height:26px;}
.tag{display:inline-flex;align-items:center;height:23px;padding:0 10px;border-radius:999px;
  font:500 11px/1 var(--sans);letter-spacing:.08em;
  background:var(--qing-wash);color:var(--qing);border:1px solid rgba(46,108,164,.16);}
.tag.tu{background:rgba(184,135,74,.12);color:var(--tu-deep);border-color:rgba(184,135,74,.24);}
.tag.tech{background:rgba(79,184,220,.14);color:#227C9D;border-color:rgba(79,184,220,.3);}
.corner-ico{width:23px;height:23px;color:var(--tech);opacity:.85;flex:0 0 auto;}

/* ============ P2 江西地图 ============ */
.jx-card{position:relative;margin-top:8px;background:linear-gradient(168deg,#FCF9F0 0%,#EEF3F6 70%,#E9F1F6 100%);border:1px solid rgba(46,108,164,.16);border-radius:18px;box-shadow:0 12px 26px rgba(27,70,104,.10);padding:8px 11px 8px;overflow:visible;}
.jx-map{display:block;width:min(82%,262px);margin:0 auto;height:auto;overflow:visible;}
.jx-shadow{fill:rgba(27,70,104,.10);}
.jx-cities path{opacity:0;fill:#E3EDF6;fill-opacity:.92;stroke:#2E6CA4;stroke-width:1;stroke-opacity:.55;cursor:pointer;transition:fill .25s,fill-opacity .25s;}
.jx-cities path:hover{fill:#C6DDF0;fill-opacity:1;}
.jx-cities path.sel{fill:#BAD8EE;fill-opacity:1;stroke-opacity:.8;}
.is-active .jx-cities path{animation:jxin .55s ease forwards;animation-delay:calc(var(--i)*65ms + .2s);}
@keyframes jxin{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}
.mdot{opacity:0;cursor:pointer;outline:none;}
.is-active .mdot{animation:jxin .45s ease forwards;animation-delay:calc(var(--i)*65ms + .6s);}
.mdot .core{fill:var(--qing-deep);transition:fill .25s;}
.mdot:hover .core,.mdot:active .core{fill:var(--tech);}
.mdot .halo{fill:var(--tech);opacity:.5;transform-origin:0 0;animation:mdhalo 2.4s ease-in-out infinite;animation-delay:calc(var(--i)*.22s);}
@keyframes mdhalo{0%,100%{transform:scale(1);opacity:.5}50%{transform:scale(1.55);opacity:.1}}
.mdot .mlabel,.mlabel{font:500 11px/1 var(--sans);fill:var(--qing-deep);letter-spacing:.04em;paint-order:stroke;stroke:rgba(252,250,240,.9);stroke-width:3.4px;stroke-linejoin:round;}
.jx-tip{display:flex;align-items:center;justify-content:center;gap:6px;margin:4px auto 0;padding:6px 11px;width:fit-content;max-width:96%;background:rgba(255,255,255,.86);border:1px solid rgba(46,108,164,.18);border-radius:99px;font:400 11px/1.4 var(--sans);color:var(--ink-2);}
.jx-tip .ico{width:14px;height:14px;flex:0 0 auto;}
@keyframes draw{to{stroke-dashoffset:0;}}
.node{cursor:pointer;transform-origin:center;animation:nodePop .6s cubic-bezier(.2,1.5,.4,1) backwards;}
@keyframes nodePop{from{opacity:0;transform:scale(.2);}to{opacity:1;transform:scale(1);}}
.node .core{transition:r .35s,fill .35s;}
.node:hover .core,.node:active .core{r:8;fill:var(--tech);}
.node .halo{animation:nodepulse 2.6s ease-in-out infinite;}
@keyframes nodepulse{0%,100%{opacity:.15;r:9;}50%{opacity:.5;r:15;}}
.node-label{font:500 10.5px var(--sans);fill:var(--ink-2);letter-spacing:.06em;}

/* ============ 轮播 ============ */
.carousel{position:relative;border-radius:var(--r);overflow:hidden;background:rgba(255,255,255,.66);
  border:1px solid rgba(46,108,164,.15);box-shadow:var(--shadow-m);touch-action:pan-y;}
.c-track{display:flex;transition:transform .62s cubic-bezier(.3,.8,.25,1);}
.c-track.animate{transition:transform .62s cubic-bezier(.3,.8,.25,1);}
.c-item{flex:0 0 100%;padding:clamp(14px,4vw,22px);display:flex;flex-direction:column;align-items:center;text-align:center;gap:10px;}
.c-item .art{width:clamp(96px,30vw,132px);height:clamp(96px,30vw,132px);color:var(--qing);}
.c-item h4{font-family:var(--serif);font-size:clamp(15px,4.3vw,18px);margin:0;color:var(--qing-deep);letter-spacing:.04em;}
.c-item p{font:400 clamp(11.5px,3.2vw,13.5px)/1.85 var(--sans);color:var(--ink-2);margin:0;}
.c-item{position:relative;}
.c-vtag{position:absolute;right:10px;top:10px;display:flex;align-items:center;gap:4px;padding:3px 9px 3px 7px;
  border-radius:20px;background:linear-gradient(135deg,#4FB8DC,#2E6CA4);color:#fff;
  font:400 10.5px/1 var(--sans);letter-spacing:.02em;box-shadow:0 3px 10px rgba(46,108,164,.3);}
.c-vtag svg{width:10px;height:10px;}
.c-vtag i{width:5px;height:5px;border-radius:50%;background:#fff;animation:vdot 1.6s ease-in-out infinite;}
.c-dots{display:flex;justify-content:center;gap:6px;padding:0 0 12px;}
.c-dots b{width:6px;height:6px;border-radius:50%;background:rgba(46,108,164,.22);transition:all .35s;}
.c-dots b.on{width:18px;border-radius:3px;background:var(--qing);}
.c-arrow{position:absolute;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:50%;
  display:grid;place-items:center;background:rgba(255,255,255,.86);box-shadow:var(--shadow-s);color:var(--qing-deep);z-index:3;}
.c-arrow.l{left:6px;}.c-arrow.r{right:6px;}
.c-arrow svg{width:13px;height:13px;}
.c-badge{position:absolute;left:12px;top:12px;z-index:3;}

/* ============ 横向滑动卡组 ============ */
.deck{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;padding:6px 2px 14px;scrollbar-width:none;touch-action:pan-x;}
.deck::-webkit-scrollbar{display:none;}
.deck>*{flex:0 0 clamp(168px,60vw,215px);scroll-snap-align:center;}
.pcard{position:relative;border-radius:var(--r);padding:16px 14px;text-align:center;
  background:linear-gradient(165deg,rgba(255,255,255,.95),rgba(248,242,230,.7));
  border:1px solid rgba(46,108,164,.15);box-shadow:var(--shadow-s);cursor:pointer;
  animation:floatSoft 6s ease-in-out infinite;transition:transform .4s,box-shadow .4s;}
.pcard:nth-child(2){animation-delay:-1.5s;}
.pcard:nth-child(3){animation-delay:-3s;}
.pcard:nth-child(4){animation-delay:-4.5s;}
@keyframes floatSoft{0%,100%{transform:translateY(0) scale(1);}50%{transform:translateY(-6px) scale(1.012);}}
.pcard:active{box-shadow:var(--shadow-l);}
.pcard .art{width:clamp(74px,22vw,96px);height:clamp(74px,22vw,96px);color:var(--qing);margin:0 auto 8px;}
.pcard h4{font-family:var(--serif);font-size:15px;margin:0 0 4px;color:var(--qing-deep);}
.pcard p{font:400 11px/1.7 var(--sans);color:var(--ink-3);margin:0;}

/* ============ 直播模拟 ============ */
.livebox{position:relative;flex-shrink:2;border-radius:var(--r);overflow:hidden;background:linear-gradient(150deg,#12293D,#1B4668 55%,#245d80);
  border:1px solid rgba(79,184,220,.35);box-shadow:0 18px 44px rgba(27,70,104,.34);}
.livebox::after{content:"";position:absolute;inset:-1px;border-radius:var(--r);pointer-events:none;
  box-shadow:inset 0 0 34px rgba(79,184,220,.42);animation:liveGlow 3.2s ease-in-out infinite;}
@keyframes liveGlow{0%,100%{opacity:.35;}50%{opacity:1;}}
.live-head{display:flex;align-items:center;gap:8px;padding:8px 13px;border-bottom:1px solid rgba(79,184,220,.22);}
.live-dot{width:7px;height:7px;border-radius:50%;background:#FF5C5C;box-shadow:0 0 9px #FF5C5C;animation:breathe 1.5s infinite;}
.live-head b{font:500 12px/1 var(--sans);color:#DFF3FB;letter-spacing:.1em;}
.live-head span{margin-left:auto;font:400 11px/1 var(--sans);color:rgba(223,243,251,.6);}
.danmu{position:relative;height:clamp(40px,10.5vw,52px);overflow:hidden;}
.danmu i{position:absolute;white-space:nowrap;font:400 12px/1 var(--sans);color:#CFEAF7;
  padding:5px 11px;border-radius:999px;background:rgba(79,184,220,.14);border:1px solid rgba(79,184,220,.22);
  animation:danmu linear infinite;}
@keyframes danmu{from{transform:translateX(105%);}to{transform:translateX(-115%);}}
.live-foot{padding:9px 13px;background:rgba(8,22,34,.34);}
.live-foot h4{margin:0 0 2px;font-family:var(--serif);font-size:14.5px;color:#EAF7FD;}
.live-foot p{margin:0;font:400 11.5px/1.7 var(--sans);color:rgba(223,243,251,.68);}
.live-enter{text-decoration:none;background:linear-gradient(135deg,#4FB8DC,#2E6CA4);color:#fff;
  border-color:transparent;box-shadow:0 4px 14px rgba(79,184,220,.42);white-space:nowrap;}
.live-enter::after{content:"↗";font-size:11px;line-height:1;opacity:.9;margin-left:1px;}
.live-enter:active{transform:scale(.94);}
/* 官方直播入口卡 */
.live-official{margin-top:7px;padding:11px 12px 3px;flex-shrink:0;}
.live-official .lo-head{display:flex;align-items:center;gap:7px;margin-bottom:3px;}
.live-official .lo-head b{font-family:var(--serif);font-size:14px;color:var(--qing-deep);letter-spacing:.04em;}
.live-official .lo-head .tag{margin-left:auto;height:20px;font-size:10px;}
.live-official .linkrow{gap:6px;margin-top:6px;}
.live-official .linkrow a{padding:7px 10px;gap:7px;min-width:0;}
.live-official .linkrow a span{flex:1 1 auto;}
.live-official .linkrow a em{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;}
/* 入口分组切换：政府平台 / 电商平台（卡片高度不增加） */
.live-official .lo-tabs{display:flex;gap:5px;margin-left:auto;}
.live-official .lo-tabs button{height:20px;padding:0 10px;border-radius:20px;
  border:1px solid rgba(27,70,104,.16);background:rgba(46,108,164,.055);
  font:500 10px/1 var(--sans);color:var(--qing-deep);cursor:pointer;
  transition:background .25s,color .25s,border-color .25s;}
.live-official .lo-tabs button.on{background:var(--qing);border-color:var(--qing);color:#fff;}
.live-official .lo-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px;}
.live-official .lo-grid a{display:flex;align-items:center;gap:6px;padding:7px 9px;border-radius:10px;
  border:1px solid rgba(46,108,164,.14);background:rgba(46,108,164,.055);text-decoration:none;
  font:500 11px/1.2 var(--sans);color:var(--qing-deep);min-width:0;
  transition:background .25s,border-color .25s,transform .28s;}
.live-official .lo-grid a:hover,.live-official .lo-grid a:active{background:rgba(46,108,164,.13);border-color:rgba(79,184,220,.5);}
.live-official .lo-grid a svg{width:13px;height:13px;flex:0 0 auto;color:var(--qing);}
.live-official .lo-grid a span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.live-official .lo-grid a em{margin-left:auto;font-style:normal;font:400 9.5px/1 var(--sans);color:var(--ink-3);flex:0 0 auto;}
@media (max-width:360px){
  .live-official{padding:12px 11px 3px;}
  .live-official .linkrow a{padding:8px 9px;gap:6px;}
  .live-official .linkrow a em{display:none;}
}

/* ============ 新增：数字乡村大脑 · 助农丰收账 ============ */
.kpi-grid{gap:9px;}
.kpi{padding:10px 11px 9px;display:flex;flex-direction:column;gap:3px;}
.kico{width:20px;height:20px;color:var(--qing);}
.kpi-num{font:600 clamp(18px,5.2vw,23px)/1.05 var(--serif);color:var(--qing-deep);letter-spacing:.01em;}
.kpi-num small{font:600 10px/1 var(--sans);color:var(--ink-3);margin-left:2px;letter-spacing:0;}
.kpi-lb{font:600 11px/1.25 var(--sans);color:var(--ink-2);}
.kpi-up{font-style:normal;font:400 9.4px/1.3 var(--sans);color:var(--tu-deep);}
.chart-card{margin-top:10px;padding:11px 12px 9px;}
.chart-head{display:flex;align-items:center;gap:8px;margin-bottom:7px;}
.chart-head b{font:600 13px/1 var(--serif);color:var(--qing-deep);letter-spacing:.04em;}
.chart-head b i{font-style:normal;font:500 10px/1 var(--sans);color:var(--ink-3);margin-left:3px;}
.chart-chips{margin-left:auto;display:flex;gap:5px;}
.chart-chips button{height:20px;padding:0 9px;border-radius:20px;border:1px solid rgba(27,70,104,.16);
  background:rgba(46,108,164,.055);font:500 10px/1 var(--sans);color:var(--qing-deep);cursor:pointer;
  transition:background .25s,color .25s,border-color .25s;}
.chart-chips button.on{background:var(--qing);border-color:var(--qing);color:#fff;}
.dc-svg{display:block;width:100%;height:auto;overflow:visible;}
.dc-axis{display:flex;justify-content:space-between;font:400 9.5px/1 var(--sans);color:var(--ink-3);margin-top:2px;padding:0 6px;}
.dc-grid{stroke:rgba(46,108,164,.13);stroke-width:1;}
.dc-area{fill:url(#dcGrad);}
.dc-line{fill:none;stroke:var(--qing);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:900;stroke-dashoffset:900;transition:stroke-dashoffset .85s ease;}
.dc-line.in{stroke-dashoffset:0;}
.dc-dot{fill:#fff;stroke:var(--qing);stroke-width:1.8;}
.dc-val{font:600 9.2px/1 var(--sans);fill:var(--qing-deep);}
.dc-x{margin-top:10px;}
.city-wrap{margin-top:11px;}
.city-strip{display:flex;gap:7px;overflow-x:auto;padding:1px 1px 5px;scrollbar-width:none;-webkit-overflow-scrolling:touch;}
.city-strip::-webkit-scrollbar{display:none;}
.city-chip{flex:0 0 auto;width:78px;padding:7px 9px 8px;border-radius:12px;cursor:pointer;
  border:1px solid rgba(46,108,164,.14);background:rgba(46,108,164,.05);
  display:flex;flex-direction:column;gap:4px;transition:background .25s,border-color .25s,transform .25s;}
.city-chip:active{transform:scale(.95);background:rgba(46,108,164,.13);border-color:rgba(79,184,220,.5);}
.city-chip b{font:600 11.5px/1 var(--sans);color:var(--qing-deep);letter-spacing:.02em;}
.city-chip .cbar{height:5px;border-radius:3px;background:rgba(46,108,164,.14);overflow:hidden;}
.city-chip .cbar i{display:block;height:100%;width:0;border-radius:3px;
  background:linear-gradient(90deg,var(--tech),var(--qing));transition:width .8s cubic-bezier(.2,.8,.25,1);}
.city-chip em{font-style:normal;font:400 9.4px/1 var(--sans);color:var(--ink-3);}
.dc-report .rlist{list-style:none;margin:0;padding:0;}
.dc-report .rlist li{display:flex;align-items:center;gap:9px;padding:9px 11px;margin:0 0 7px;
  border-radius:12px;border:1px solid rgba(46,108,164,.14);background:rgba(46,108,164,.05);
  font:400 12.5px/1.5 var(--sans);color:var(--ink-2);}
.dc-report .rlist li b{margin-left:auto;font:600 14px/1 var(--serif);color:var(--qing-deep);white-space:nowrap;}
.dc-report .rlist li svg{width:17px;height:17px;flex:0 0 auto;color:var(--qing);}

/* ============ 新增：赣味乡宴 · 翻牌识赣菜 ============ */
.dish-hud{display:flex;align-items:center;gap:9px;margin-top:2px;}
.dish-hud>span:first-child{font:600 11.5px/1 var(--sans);color:var(--qing-deep);white-space:nowrap;}
.dish-hud>span:first-child b{font:600 15px/1 var(--serif);color:var(--qing);}
.dish-prog{flex:1 1 auto;height:7px;border-radius:4px;background:rgba(46,108,164,.14);overflow:hidden;}
.dish-prog i{display:block;height:100%;width:0;border-radius:4px;
  background:linear-gradient(90deg,var(--tech),var(--qing));transition:width .5s cubic-bezier(.2,.8,.25,1);}
.dish-hud .chip-btn{height:26px;padding:0 11px;font-size:11px;}
.dish-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:9px;}
.dish{position:relative;height:clamp(74px,19.5vw,90px);border-radius:14px;padding:0;cursor:pointer;
  border:1px solid rgba(46,108,164,.16);background:linear-gradient(160deg,rgba(255,255,255,.95),rgba(248,242,230,.8));
  box-shadow:var(--shadow-s);transform-style:preserve-3d;
  transition:transform .5s cubic-bezier(.3,.9,.3,1),box-shadow .4s,border-color .4s;}
.dish:active{box-shadow:var(--shadow-m);}
.dish.flip{transform:rotateY(180deg);}
.dish>span{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;
  gap:3px;padding:7px 6px;border-radius:13px;text-align:center;
  backface-visibility:hidden;-webkit-backface-visibility:hidden;}
.dish .df{color:var(--qing);}
.dish .db{transform:rotateY(180deg);background:linear-gradient(160deg,#FBF6EA,#F0E2C8);border:1px solid rgba(184,135,74,.28);}
.dish .dno{position:absolute;left:6px;top:5px;font:600 9px/1 var(--serif);font-style:normal;color:rgba(46,108,164,.5);}
.dish .dico{width:23px;height:23px;color:var(--qing);}
.dish .dtip{font:400 9.2px/1 var(--sans);color:var(--ink-3);}
.dish .db b{font:600 11.5px/1.2 var(--serif);color:var(--qing-deep);letter-spacing:.02em;}
.dish .db i{font-style:normal;font:500 9.4px/1 var(--sans);color:var(--tu-deep);}
.dish .db u{display:block;text-decoration:none;font:400 9px/1.28 var(--sans);color:var(--ink-2);}
@media (max-width:360px){
  .dish .db b{font-size:10.8px;}
  .dish .db u{font-size:8.6px;}
  .city-chip{width:72px;}
  .chart-chips button{padding:0 7px;font-size:9.4px;}
}

/* ============ P7 紧凑影像条 & P10 翻牌菜品图 ============ */
.vidsec.vs-sm{margin-top:11px;}
.vidsec.vs-sm .vidrow{gap:7px;}
.vidsec.vs-sm .vidchip{display:flex;align-items:center;width:auto;padding:7px 11px 7px 8px;gap:8px;}
.vidsec.vs-sm .vidchip .vc-top{width:34px;height:34px;aspect-ratio:auto;border-radius:9px;flex:0 0 auto;}
.vidsec.vs-sm .vidchip .vc-top svg.vc-art{width:17px;height:17px;}
.vidsec.vs-sm .vidchip .vc-top .vc-play,.vidsec.vs-sm .vidchip .vc-top .vc-tag{display:none;}
.vidsec.vs-sm .vidchip b{padding:0;font-size:12px;line-height:1.3;white-space:nowrap;}
.vidsec.vs-sm .vidchip>span{display:none;}
.dish{height:clamp(80px,22vw,100px);}
.dish .db{overflow:hidden;}
.dish .dimg{position:absolute;inset:0;border-radius:13px;display:block;
  background-size:cover;background-position:center 58%;}
.dish .db .dbar{position:absolute;left:0;right:0;bottom:0;padding:16px 5px 5px;
  background:linear-gradient(180deg,rgba(251,246,234,0),rgba(244,232,208,.94) 42%,rgba(236,220,188,.97));
  display:flex;flex-direction:column;align-items:center;gap:1px;}
.dish .db .dbar b{font:600 11.5px/1.1 var(--serif);color:#23414F;letter-spacing:.02em;text-shadow:0 1px 0 rgba(255,255,255,.55);}
.dish .db .dbar i{font-style:normal;font:500 9.2px/1 var(--sans);color:#8A6134;}
.dish-hero{width:100%;border-radius:14px;display:block;box-shadow:var(--shadow-s);}
@media (max-width:360px){.dish .db .dbar b{font-size:10.8px;}}

/* ---- 翻牌揭晓：菜品图从卡片位置放大弹出（对齐连线页的庆祝感） ---- */
.dish-pop{position:absolute;inset:0;z-index:78;display:flex;align-items:center;justify-content:center;
  opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;pointer-events:none;}
.dish-pop.show{opacity:1;visibility:visible;pointer-events:auto;}
.dish-pop::before{content:"";position:absolute;inset:0;
  background:radial-gradient(58% 42% at 50% 46%,rgba(24,38,52,.22),rgba(18,30,42,.62) 74%);}
.dish-pop .dp-ring{position:absolute;left:50%;top:50%;width:150px;height:150px;margin:-75px 0 0 -75px;border-radius:50%;
  border:1.6px solid rgba(79,184,220,.72);opacity:0;pointer-events:none;}
.dish-pop.show .dp-ring{animation:dpRing 1.05s cubic-bezier(.2,.7,.3,1) .1s 1 both;}
.dish-pop .dp-stage{position:relative;width:100%;display:flex;flex-direction:column;align-items:center;gap:11px;}
.dish-pop .dp-card{position:relative;width:min(62%,236px);aspect-ratio:1/1;border-radius:20px;overflow:hidden;
  background:#FBF6EA;border:1px solid rgba(184,135,74,.42);box-shadow:0 22px 46px rgba(10,24,36,.46);
  transition:transform .7s cubic-bezier(.2,1.22,.36,1),opacity .52s;}
.dish-pop .dp-card::after{content:"";position:absolute;inset:0;border-radius:20px;
  background:linear-gradient(118deg,transparent 32%,rgba(255,255,255,.52) 47%,transparent 63%);
  transform:translateX(-125%);}
.dish-pop.show .dp-card.in::after{animation:dpSweep 1.05s ease-out .2s 1 both;}
.dish-pop .dp-img{position:absolute;inset:0;background-size:cover;background-position:center;}
.dish-pop .dp-tag{position:absolute;left:10px;top:10px;z-index:2;padding:3px 8px;border-radius:999px;
  background:rgba(20,34,46,.55);font:500 9.5px/1 var(--sans);letter-spacing:.14em;color:#EAF4FB;}
.dish-pop .dp-bar{position:absolute;left:0;right:0;bottom:0;padding:22px 12px 10px;
  display:flex;align-items:baseline;justify-content:center;gap:7px;
  background:linear-gradient(180deg,rgba(251,246,234,0),rgba(246,236,216,.94) 46%,rgba(240,226,198,.98));}
.dish-pop .dp-bar b{font:600 16.5px/1.15 var(--serif);color:#23414F;letter-spacing:.03em;}
.dish-pop .dp-bar i{font-style:normal;font:500 11px/1 var(--sans);color:#8A6134;}
.dish-pop .dp-note{margin:0;text-align:center;font:400 11.6px/1.6 var(--sans);
  color:rgba(255,255,255,.9);padding:0 16px;}
.dish-pop .dp-hint{position:absolute;left:0;right:0;bottom:calc(34px + env(safe-area-inset-bottom));text-align:center;
  font:500 10.6px/1 var(--sans);letter-spacing:.28em;color:rgba(255,255,255,.6);}
.dish-pop .dp-hint::after{content:"";display:block;width:78px;height:2px;margin:9px auto 0;border-radius:2px;background:rgba(255,255,255,.26);}
.dish-pop .dp-timer{position:absolute;left:50%;bottom:calc(34px + env(safe-area-inset-bottom));width:78px;height:2px;margin-left:-39px;
  border-radius:2px;background:linear-gradient(90deg,var(--tech),#D9AE72);transform:scaleX(0);transform-origin:left center;}
.dish-pop.show .dp-timer{animation:dpTime 1.9s linear 1 both;}
.dish.justflip{animation:dishPop .95s cubic-bezier(.2,.9,.3,1) 1;}
@keyframes dpRing{0%{opacity:.85;transform:scale(.22);}100%{opacity:0;transform:scale(2.1);}}
@keyframes dpSweep{0%{transform:translateX(-125%);}100%{transform:translateX(125%);}}
@keyframes dpTime{0%{transform:scaleX(0);}100%{transform:scaleX(1);}}
@keyframes dishPop{0%{box-shadow:0 0 0 0 rgba(79,184,220,.6);}70%{box-shadow:0 0 0 13px rgba(79,184,220,0);}100%{box-shadow:0 0 0 0 rgba(79,184,220,0);}}
@media (prefers-reduced-motion: reduce){.dish-pop *,.dish.justflip{animation:none!important;}}


/* ============ 日程时间轴 ============ */
.tl{position:relative;padding-left:26px;}
.tl::before{content:"";position:absolute;left:8px;top:6px;bottom:6px;width:1px;
  background:linear-gradient(180deg,transparent,rgba(46,108,164,.35) 12%,rgba(184,135,74,.35) 88%,transparent);}
.tl-item{position:relative;margin-bottom:11px;border-radius:var(--r);
  background:linear-gradient(150deg,rgba(255,255,255,.94),rgba(255,255,255,.7));
  border:1px solid rgba(46,108,164,.14);box-shadow:var(--shadow-s);transition:box-shadow .35s,border-color .35s;}
.tl-item::before{content:"";position:absolute;left:-22px;top:19px;width:9px;height:9px;border-radius:50%;
  background:var(--rice);border:1.6px solid var(--qing);z-index:2;}
.tl-item.open{border-color:rgba(79,184,220,.5);box-shadow:var(--shadow-m);}
.tl-head{display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;}
.tl-time{font:600 12px/1 var(--serif);letter-spacing:.05em;color:#fff;background:linear-gradient(135deg,var(--qing),var(--qing-deep));
  padding:6px 9px;border-radius:8px;white-space:nowrap;animation:breathe 3.2s ease-in-out infinite;}
.tl-title{font:500 clamp(13px,3.7vw,14.5px)/1.4 var(--sans);color:var(--qing-deep);}
.tl-caret{margin-left:auto;color:var(--ink-3);transition:transform .4s;flex:0 0 auto;}
.tl-item.open .tl-caret{transform:rotate(180deg);}
.tl-body{max-height:0;overflow:hidden;transition:max-height .5s cubic-bezier(.3,.8,.25,1);}
.tl-body div{padding:0 14px 14px;font:400 clamp(11.5px,3.2vw,13px)/1.9 var(--sans);color:var(--ink-2);}

/* ============ 表单 ============ */
.field{margin-bottom:14px;}
.field label{display:block;font:500 12px/1 var(--sans);letter-spacing:.14em;color:var(--qing);margin-bottom:8px;}
.input{width:100%;height:47px;border-radius:13px;padding:0 15px;font-size:14px;
  background:rgba(255,255,255,.85);border:1px solid rgba(46,108,164,.2);color:var(--ink);
  transition:border-color .3s,box-shadow .3s,background .3s;outline:none;}
.input:focus{border-color:var(--tech);background:#fff;box-shadow:0 0 0 4px rgba(79,184,220,.18);}
.input::placeholder{color:var(--ink-3);opacity:.7;}
.chipset{display:flex;flex-wrap:wrap;gap:8px;}
.chip{height:34px;padding:0 14px;border-radius:999px;font:500 12.5px/1 var(--sans);letter-spacing:.04em;
  background:rgba(255,255,255,.8);border:1px solid rgba(46,108,164,.2);color:var(--ink-2);transition:all .3s;}
.chip.on{background:linear-gradient(135deg,var(--qing),var(--qing-deep));color:#fff;border-color:transparent;
  box-shadow:0 6px 16px rgba(27,70,104,.28);transform:translateY(-2px);}
.chip:active{transform:scale(.95);}
.submit{position:relative;width:100%;height:51px;border-radius:999px;color:#fff;font:600 15px/1 var(--sans);letter-spacing:.22em;
  background:linear-gradient(120deg,#3B7DB5,var(--qing) 30%,var(--qing-deep));
  box-shadow:0 12px 30px rgba(27,70,104,.34);animation:pulseGlow 2.8s ease-in-out infinite;overflow:hidden;}
.submit::after{content:"";position:absolute;top:0;bottom:0;width:38%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.42),transparent);animation:sweep 3.4s ease-in-out infinite;}
.submit:active{transform:scale(.975);}

/* ============ 弹窗 ============ */
.mask{position:absolute;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:22px;
  background:rgba(24,38,52,.46);backdrop-filter:blur(6px);opacity:0;visibility:hidden;transition:opacity .38s,visibility .38s;}
.mask.show{opacity:1;visibility:visible;}
.modal{width:100%;max-width:400px;max-height:78%;overflow-y:auto;position:relative;
  background:linear-gradient(165deg,#FFFDF8,var(--rice-2));border:1px solid rgba(46,108,164,.2);
  border-radius:22px;padding:24px 20px 20px;box-shadow:var(--shadow-l);
  transform:scale(.82) translateY(18px);opacity:0;transition:transform .48s cubic-bezier(.2,1.4,.42,1),opacity .35s;scrollbar-width:none;}
.modal::-webkit-scrollbar{display:none;}
.mask.show .modal{transform:scale(1) translateY(0);opacity:1;}
.modal .close{position:absolute;right:12px;top:12px;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;
  background:rgba(46,108,164,.08);color:var(--qing-deep);}
.modal .close svg{width:13px;height:13px;}
.modal .art{width:78px;height:78px;color:var(--qing);margin:2px auto 12px;display:block;}
/* ROUND15: 弹窗实拍大图 + 动效行 */
.modal .eff-hero{margin:0 auto 10px;}
.modal .eff-hero img{width:min(80vw,320px);height:auto;max-height:32vh;object-fit:cover;border-radius:15px;display:block;box-shadow:0 10px 26px rgba(27,70,104,.2),0 0 0 1px rgba(46,108,164,.12);margin:0 auto;}
.modal .eff-row{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;margin:2px auto 12px;}
.modal .eff-row .art{margin:0;width:132px;height:132px;flex:0 0 132px;}
.modal .eff-row .art img{width:100%;height:100%;object-fit:cover;border-radius:12px;}
.modal .eff-cap{font:500 12.5px/1.6 var(--sans);color:var(--qing-deep);text-align:center;max-width:none;}
/* ROUND15-END */
/* ROUND14: 弹窗实拍图放大展示 */
.modal .art img{width:100%;height:auto;max-height:300px;object-fit:cover;border-radius:14px;box-shadow:0 8px 22px rgba(27,70,104,.18),0 0 0 1px rgba(46,108,164,.12);}
.modal .art{width:min(78vw,300px);height:auto;}
/* ROUND14-END */
.modal h3{font-family:var(--serif);font-size:19px;margin:0 0 10px;color:var(--qing-deep);text-align:center;letter-spacing:.05em;}
.modal p{font:400 13.5px/1.95 var(--sans);color:var(--ink-2);margin:0 0 10px;text-align:justify;}
.modal .kv{display:flex;gap:10px;font-size:12.5px;color:var(--ink-2);padding:7px 0;border-bottom:1px dashed rgba(46,108,164,.18);}
.modal .kv b{color:var(--qing);font-weight:500;flex:0 0 76px;display:flex;align-items:center;gap:3px;line-height:1.45;}
.modal .kv b .ico{width:13px;height:13px;flex:0 0 auto;}
.modal .hint-line{font:400 11px/1.7 var(--sans);color:var(--ink-3);text-align:center;margin-top:6px;}

/* ---- 竖屏视频播放器（9:16） ---- */
.vidbox{position:relative;margin:2px 0 4px;}
.vidbox .vwrap{position:relative;width:100%;max-width:250px;margin:0 auto;aspect-ratio:9/16;max-height:56vh;
  border-radius:var(--r);overflow:hidden;background:#0E1A24;box-shadow:0 12px 30px rgba(20,40,60,.22);}
.vidbox video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#0E1A24;display:block;}
.vidbox.ready .vfall{display:none;}
.vidbox .vfall{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:2px;padding:18px;text-align:center;background:linear-gradient(165deg,#16324A,#1B4668 58%,#245d80);color:#EAF4FB;}
.vidbox .vfall svg.art{width:70px;height:70px;opacity:.85;}
.vidbox .vfall b{font:500 13.5px/1.5 var(--serif);letter-spacing:.06em;margin:10px 0 0;}
.vidbox .vfall span{font:400 11.5px/1.7 var(--sans);color:#B3D2E6;}
.vidbox .vbadge{position:absolute;left:9px;top:9px;z-index:6;display:flex;align-items:center;gap:5px;padding:3px 9px;
  border-radius:20px;background:rgba(10,22,32,.6);color:#EAF4FB;font:400 11px/1 var(--sans);letter-spacing:.02em;}
.vidbox .vbadge i{width:6px;height:6px;border-radius:50%;background:#4FB8DC;animation:vdot 1.5s ease-in-out infinite;}
@keyframes vdot{0%,100%{opacity:1;}50%{opacity:.22;}}
.vidbox .vtap{position:absolute;inset:0;z-index:5;display:grid;place-items:center;cursor:pointer;
  background:rgba(8,18,26,.2);transition:opacity .3s ease;}
.vidbox.playing .vtap{opacity:0;pointer-events:none;}
.vidbox .vtap .pbtn{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.94);
  box-shadow:0 6px 20px rgba(0,0,0,.3);}
.vidbox .vtap .pbtn svg{width:20px;height:20px;color:var(--qing-deep);margin-left:3px;}
.vidbox .vbar{position:absolute;left:0;right:0;bottom:0;z-index:6;display:flex;align-items:center;gap:7px;
  padding:14px 9px 8px;background:linear-gradient(0deg,rgba(8,18,26,.85),rgba(8,18,26,0));}
.vidbox .vbar button{width:26px;height:26px;flex:0 0 auto;border:0;padding:0;background:transparent;cursor:pointer;
  display:grid;place-items:center;color:#EAF4FB;-webkit-tap-highlight-color:transparent;}
.vidbox .vbar button svg{width:15px;height:15px;}
.vidbox .vprog{position:relative;flex:1 1 auto;height:18px;display:flex;align-items:center;cursor:pointer;}
.vidbox .vprog::before{content:"";position:absolute;left:0;right:0;height:3px;border-radius:2px;background:rgba(255,255,255,.3);}
.vidbox .vprog i{position:absolute;left:0;width:0;height:3px;border-radius:2px;background:#4FB8DC;}
.vidbox .vprog u{position:absolute;left:0;width:11px;height:11px;margin-left:-5.5px;border-radius:50%;background:#fff;
  box-shadow:0 1px 5px rgba(0,0,0,.45);}
.vidbox .vtime{flex:0 0 auto;font:400 11px var(--sans);color:#D8E9F4;}
.vidbox .vcap{font:400 11.5px/1.75 var(--sans);color:var(--ink-3);text-align:center;margin:8px 0 0;}
.vidbox .vcap em{font-style:normal;color:var(--ink-2);}

/* ---- AI 科普短片横向列表 ---- */
.vidrow{display:flex;gap:9px;overflow-x:auto;padding:2px 0 8px;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
.vidrow::-webkit-scrollbar{display:none;}
.vidchip{flex:0 0 auto;width:102px;border:0.5px solid rgba(27,70,104,.14);border-radius:12px;overflow:hidden;
  background:#fff;cursor:pointer;text-align:left;padding:0;transition:transform .2s ease,box-shadow .2s ease;}
.vidchip:active{transform:scale(.972);}
.vidchip .vc-top{position:relative;display:grid;place-items:center;width:100%;aspect-ratio:9/16;
  background:linear-gradient(165deg,#16324A,#1B4668 60%,#245d80);}
.vidchip .vc-top svg.vc-art{width:34px;height:34px;color:#8FC4E0;}
.vidchip .vc-top .vc-play{position:absolute;right:6px;bottom:6px;width:21px;height:21px;border-radius:50%;
  display:grid;place-items:center;background:rgba(255,255,255,.92);}
.vidchip .vc-top .vc-play svg{width:9px;height:9px;color:var(--qing-deep);margin-left:1px;}
.vidchip .vc-top .vc-tag{position:absolute;left:6px;top:6px;padding:2px 6px;border-radius:20px;
  background:rgba(10,22,32,.6);color:#EAF4FB;font:400 10.5px/1 var(--sans);}
.vidchip b{display:block;padding:7px 8px 2px;font:500 12px/1.4 var(--sans);color:var(--qing-deep);}
.vidchip span{display:block;padding:0 8px 8px;font:400 11px/1.5 var(--sans);color:var(--ink-3);}
.vidsec{margin-top:14px;}
.vidsec .vs-head{display:flex;align-items:center;gap:6px;margin-bottom:7px;
  font:500 12.5px var(--sans);color:var(--qing);letter-spacing:.04em;}
.vidsec .vs-head svg{width:14px;height:14px;}
.vidsec .vs-head em{margin-left:auto;font:400 11px var(--sans);color:var(--ink-3);font-style:normal;}
@media (max-width:380px){
  .vidsec{margin-top:11px;}
  .vidchip{width:92px;}
  .vidchip b{font-size:11.5px;padding:6px 7px 2px;}
  .vidchip span{font-size:10.5px;padding:0 7px 7px;}
}
.success-ico{width:64px;height:64px;margin:2px auto 14px;display:block;color:var(--tu);}
.success-ico circle{stroke-dasharray:170;stroke-dashoffset:170;animation:draw 1s ease .15s forwards;}
.success-ico path{stroke-dasharray:40;stroke-dashoffset:40;animation:draw .6s ease .75s forwards;}
.poster-img{width:100%;border-radius:14px;box-shadow:var(--shadow-m);display:block;}
.wbtn{width:100%;height:44px;border-radius:999px;margin-top:14px;font:600 13.5px/1 var(--sans);letter-spacing:.16em;color:#fff;
  background:linear-gradient(120deg,var(--qing),var(--qing-deep));box-shadow:0 10px 24px rgba(27,70,104,.28);}
.wbtn.ghost{background:rgba(46,108,164,.1);color:var(--qing-deep);box-shadow:none;}

/* ============ 云上互动 · 小游戏 ============ */
.game-card{position:relative;padding:14px 14px 13px;cursor:pointer;display:flex;flex-direction:column;gap:5px;}
.game-card .gbadge{position:absolute;right:12px;top:11px;font:600 10px/1 var(--serif);letter-spacing:.14em;color:rgba(46,108,164,.42);}
.game-card .gicon{width:32px;height:32px;color:var(--qing);}
.game-card h4{font-family:var(--serif);font-size:14.5px;margin:2px 0 1px;color:var(--qing-deep);letter-spacing:.03em;}
.game-card p{font:400 11px/1.6 var(--sans);color:var(--ink-3);margin:0;}
.game-card .gplay{display:inline-flex;align-items:center;gap:5px;margin-top:5px;font:600 11px/1 var(--sans);color:var(--qing);letter-spacing:.06em;}
.game-card .gplay svg{width:13px;height:13px;}
.game-card:active{transform:scale(.975);}

/* 游戏层 */
.gm{position:absolute;inset:0;z-index:120;display:flex;flex-direction:column;
  background:linear-gradient(170deg,#FFFDF8 0%,#F6EFE2 48%,#EDE3D0 100%);
  opacity:0;visibility:hidden;transition:opacity .34s,visibility .34s;}
.gm.show{opacity:1;visibility:visible;}
.gm::before{content:"";position:absolute;inset:0;background-image:var(--noise);opacity:.42;mix-blend-mode:multiply;pointer-events:none;z-index:2;}
.gm-top{position:relative;z-index:4;display:flex;align-items:center;gap:8px;
  padding:calc(10px + env(safe-area-inset-top)) 13px 8px;}
.gm-back{display:inline-flex;align-items:center;gap:3px;height:32px;padding:0 12px;border-radius:999px;
  background:rgba(255,255,255,.86);border:1px solid rgba(46,108,164,.18);box-shadow:var(--shadow-s);
  font:500 12px/1 var(--sans);color:var(--qing-deep);letter-spacing:.04em;flex:0 0 auto;}
.gm-back:active{transform:scale(.95);}
.gm-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:600 15px/1 var(--serif);color:var(--qing-deep);letter-spacing:.06em;}
.gm-hud{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:flex-end;flex:0 1 auto;}
/* 游戏内右上角面板（如智慧果园监测） */
.gm-panel{position:absolute;top:10px;right:10px;z-index:5;pointer-events:none;
  background:rgba(255,255,255,.9);border:1px solid rgba(46,108,164,.18);border-radius:12px;
  padding:8px 11px;box-shadow:var(--shadow-s);backdrop-filter:blur(6px);
  font:500 10.5px/1.7 var(--sans);color:var(--ink-2);text-align:left;}
.gm-panel .tp{display:flex;align-items:center;gap:5px;font-weight:600;color:var(--qing-deep);letter-spacing:.04em;}
.gm-panel .tp i{width:6px;height:6px;border-radius:50%;background:var(--tech);animation:senPulse 1.6s ease-in-out infinite;}
.gm-panel b{font-weight:600;color:var(--qing);}
.gm-hud .sen{display:flex;align-items:center;gap:5px;padding:5px 9px;border-radius:10px;
  background:rgba(46,108,164,.08);border:1px solid rgba(46,108,164,.16);
  font:500 11px/1.2 var(--sans);color:var(--ink-3);}
.gm-hud .sen i{width:6px;height:6px;border-radius:50%;background:var(--tech);animation:senPulse 1.6s ease-in-out infinite;flex:0 0 auto;}
.gm-hud .sen em{font-style:normal;font-weight:600;color:var(--qing);font-size:12px;}
@keyframes senPulse{0%,100%{box-shadow:0 0 0 0 rgba(79,184,220,.55);}50%{box-shadow:0 0 0 6px rgba(79,184,220,0);}}

.gm-stage{position:relative;flex:1;margin:2px 10px;border-radius:20px;overflow:hidden;touch-action:none;
  background:linear-gradient(170deg,rgba(255,255,255,.92),rgba(244,238,226,.7));
  border:1px solid rgba(46,108,164,.16);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),0 14px 34px rgba(27,70,104,.10);}
.gm-stage.gm-dark{background:radial-gradient(120% 92% at 50% 0%,#22405C 0%,#152C42 46%,#0E2033 100%);border-color:rgba(232,200,122,.22);}
#gmCv{position:absolute;inset:0;display:block;}
.gm-layer{position:absolute;inset:0;z-index:5;pointer-events:none;overflow:hidden;}
.gm-foot{position:relative;z-index:4;padding:9px 16px calc(12px + env(safe-area-inset-bottom));text-align:center;
  font:400 11.5px/1.55 var(--sans);color:var(--ink-3);letter-spacing:.03em;}
.gm-stage.gm-dark ~ .gm-foot{color:rgba(239,230,210,.72);}

/* 飘字 */
.gm-float{position:absolute;transform:translate(-50%,-50%);white-space:nowrap;
  font:600 13px/1 var(--sans);letter-spacing:.06em;text-shadow:0 1px 0 rgba(255,255,255,.85);
  animation:floatUp 1.1s cubic-bezier(.2,.9,.3,1) forwards;}
.gm-float.good{color:#B0812F;}
.gm-float.bad{color:#C0553F;}
.gm-float.tech{color:#227C9D;}
@keyframes floatUp{0%{opacity:0;transform:translate(-50%,-20%) scale(.72);}
  22%{opacity:1;transform:translate(-50%,-70%) scale(1.1);}
  100%{opacity:0;transform:translate(-50%,-190%) scale(1);}}

/* 结算层 */
.gm-res{position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;padding:16px;
  background:rgba(24,38,52,.5);backdrop-filter:blur(6px);opacity:0;visibility:hidden;transition:opacity .36s,visibility .36s;}
.gm-res.show{opacity:1;visibility:visible;}
.gm-card{width:100%;max-width:368px;max-height:100%;overflow-y:auto;scrollbar-width:none;
  background:linear-gradient(165deg,#FFFDF8,var(--rice-2));border:1px solid rgba(46,108,164,.2);
  border-radius:20px;padding:20px 18px 18px;box-shadow:var(--shadow-l);transform:scale(.9) translateY(10px);
  transition:transform .46s cubic-bezier(.2,1.4,.42,1);}
.gm-card::-webkit-scrollbar{display:none;}
.gm-res.show .gm-card{transform:scale(1) translateY(0);}
.gm-card .tag{display:flex;width:fit-content;margin:0 auto;}
.gm-card h3{font:600 16.5px/1.45 var(--serif);color:var(--qing-deep);margin:11px 0 8px;text-align:center;letter-spacing:.04em;}
.gm-card p{font:400 12px/1.78 var(--sans);color:var(--ink-2);margin:0 0 10px;}
.gm-card p b{color:var(--qing);}
.gm-stats{display:flex;gap:8px;margin:12px 0 2px;}
.gm-stats>div{flex:1;text-align:center;padding:10px 6px;border-radius:12px;
  background:rgba(46,108,164,.07);border:1px solid rgba(46,108,164,.14);}
.gm-stats b{display:block;font:600 18px/1.2 var(--serif);color:var(--qing);}
.gm-stats span{font:400 10.5px/1.4 var(--sans);color:var(--ink-3);}
.gm-card img{width:100%;border-radius:14px;border:1px solid rgba(46,108,164,.18);margin:4px 0 2px;display:block;}
.gm-mini{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:10px 0 2px;}
.gm-mini canvas{width:64px;height:64px;border-radius:12px;background:linear-gradient(165deg,#FBF6EC,#F2E8D7);
  border:1px solid rgba(46,108,164,.16);}
.gm-mini p{font:500 10.5px/1.2 var(--sans);color:var(--ink-3);text-align:center;margin:3px 0 0;}

/* 围屋点灯 */
/* 注意：.ww-wrap 必须高于 #gmCv（同为 absolute）。否则画布盖住房间，
   点击事件与 elementFromPoint 全部命中画布，房间点不动。 */
.ww-wrap{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;}
.ww-svg{width:100%;height:100%;pointer-events:none;}
.ww-room{cursor:pointer;pointer-events:all;}
.ww-track{fill:rgba(46,108,164,.16);}
.ww-oil{fill:#E8C87A;transition:width .07s linear;}
.ww-room.lit .ww-oil{fill:#F2C46B;}
.ww-bg{fill:rgba(27,70,104,.30);stroke:rgba(46,108,164,.5);stroke-width:1.1;transition:fill .55s,stroke .55s;}
.ww-art{opacity:.45;transition:opacity .5s;}
.ww-room.lit .ww-bg{fill:rgba(242,196,107,.32);stroke:rgba(200,150,60,.9);}
.ww-room.hint .ww-bg{stroke:#E8A23B;stroke-width:2.2;fill:rgba(242,196,107,.26);}
.ww-room.hint{animation:wwPulse 1.1s ease-in-out 2;}
@keyframes wwPulse{50%{opacity:.55;}}
.ww-room.lit .ww-art{opacity:1;}
.ww-glow{opacity:0;transform-box:fill-box;transform-origin:center;}
.ww-room.lit .ww-glow{animation:lampOn .95s ease-out forwards;}
@keyframes lampOn{0%{opacity:0;transform:scale(.35);}50%{opacity:.9;}100%{opacity:.6;transform:scale(1);}}
.ww-room.out .ww-bg{animation:lampOut .55s ease forwards;}
@keyframes lampOut{0%{fill:rgba(242,196,107,.32);}100%{fill:rgba(27,70,104,.30);}}
.ww-wrap.shake{animation:wwShake .5s;}
@keyframes wwShake{0%,100%{transform:translateX(0);}18%{transform:translateX(-7px);}36%{transform:translateX(6px);}54%{transform:translateX(-4px);}72%{transform:translateX(3px);}}
.ww-svg.veil{filter:drop-shadow(0 0 12px rgba(242,196,107,.8));transition:filter 1.1s;}
.ww-wrap.veil .ww-svg{filter:drop-shadow(0 0 14px rgba(242,196,107,.8));transition:filter 1.1s;}
.ww-wrap.veil .ww-wall{stroke:rgba(200,150,60,.95);stroke-width:2.4;animation:wallGlow 1.8s ease-in-out infinite alternate;}
@keyframes wallGlow{0%{stroke-opacity:.7;filter:drop-shadow(0 0 0 rgba(242,196,107,0));}100%{stroke-opacity:1;filter:drop-shadow(0 0 8px rgba(242,196,107,.9));}}
.ww-cap{position:absolute;left:12px;right:12px;bottom:10px;padding:9px 12px;border-radius:12px;
  background:rgba(255,255,255,.92);border:1px solid rgba(46,108,164,.18);box-shadow:var(--shadow-s);
  font:400 11.5px/1.55 var(--sans);color:var(--ink-2);text-align:center;
  opacity:0;transform:translateY(9px);transition:opacity .45s,transform .45s;}
.ww-cap.show{opacity:1;transform:none;}
.ww-star{position:absolute;width:6px;height:6px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,244,220,1),rgba(242,196,107,0));
  animation:starRise 1.7s ease-out forwards;}
@keyframes starRise{0%{opacity:0;transform:translateY(0) scale(.4);}28%{opacity:.95;}100%{opacity:0;transform:translateY(-130px) scale(1.15);}}

/* 纹样捕影 */
.sh-bar{position:absolute;left:12px;right:12px;bottom:11px;display:flex;gap:7px;justify-content:center;}
.sh-slot{width:36px;height:36px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  font:500 10px/1 var(--sans);letter-spacing:.02em;
  border:1px dashed rgba(239,230,210,.36);color:rgba(239,230,210,.5);background:rgba(255,255,255,.05);
  transition:all .42s cubic-bezier(.2,1.5,.4,1);}
.sh-slot.on{border:1px solid rgba(232,200,122,.9);color:#0F2438;background:rgba(232,200,122,.88);box-shadow:0 0 14px rgba(232,200,122,.5);}

/* ============ 特效层 / 提示 ============ */
#fx{position:absolute;inset:0;z-index:88;pointer-events:none;}
.ripple{position:absolute;border-radius:50%;pointer-events:none;z-index:65;
  border:1.4px solid rgba(79,184,220,.85);animation:ripple .78s ease-out forwards;}
@keyframes ripple{from{width:0;height:0;opacity:.9;}to{width:180px;height:180px;opacity:0;margin:-90px 0 0 -90px;}}
.toast{position:absolute;left:50%;bottom:calc(112px + env(safe-area-inset-bottom));transform:translate(-50%,14px);z-index:85;
  padding:11px 20px;border-radius:999px;font:500 12.5px/1 var(--sans);letter-spacing:.08em;
  background:rgba(27,70,104,.9);color:#fff;box-shadow:var(--shadow-m);opacity:0;transition:all .38s;pointer-events:none;}
.toast.show{opacity:1;transform:translate(-50%,0);}

/* ============ 分页专用 ============ */
.p1-stage{position:relative;flex:1;display:grid;place-items:center;min-height:0;}
.ring-wrap{position:absolute;width:min(78vw,320px);aspect-ratio:1;display:grid;place-items:center;color:var(--qing);}
.ring-wrap svg{position:absolute;inset:0;width:100%;height:100%;}
.cover-title{position:relative;z-index:3;text-align:center;padding:0 4px;}
.cover-title .t-h1{font-size:clamp(25px,7.2vw,42px);letter-spacing:.05em;
  text-shadow:0 2px 0 rgba(255,255,255,.7),0 14px 30px rgba(27,70,104,.16);}
.cover-title .t-h1 em{font-style:normal;color:var(--tu-deep);}
.cover-meta{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:18px;}
.stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:10px;}
.stat{background:linear-gradient(160deg,rgba(255,255,255,.92),rgba(255,255,255,.66));border:1px solid rgba(46,108,164,.14);
  border-radius:14px;padding:10px 7px;text-align:center;box-shadow:var(--shadow-s);}
.stat span{display:block;font:400 10.5px/1.5 var(--sans);color:var(--ink-3);letter-spacing:.08em;margin-top:3px;}
.zone-card{padding:15px 15px 12px;cursor:pointer;display:flex;flex-direction:column;gap:3px;}
.ztop{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.zone-card h4{font-family:var(--serif);font-size:14.5px;line-height:1.35;margin:0;color:var(--qing-deep);letter-spacing:.03em;}
.zone-card p{font:400 11px/1.6 var(--sans);color:var(--ink-3);margin:0;}
.znum{position:absolute;right:13px;bottom:8px;font:600 24px/1 var(--serif);color:rgba(46,108,164,.13);}
.quote{position:relative;padding:14px 16px 14px 34px;border-radius:14px;background:rgba(46,108,164,.06);
  border-left:2px solid var(--tu);font:400 13px/1.95 var(--sans);color:var(--ink-2);}
.quote::before{content:"“";position:absolute;left:11px;top:2px;font:600 30px/1 var(--serif);color:rgba(184,135,74,.6);}

/* ============ P6 非遗工坊 / 影像档案 ============ */
.carousel.compact .c-item{padding:10px 12px 12px;gap:6px;}
.carousel.compact .c-item .art{width:clamp(70px,21vw,90px);height:clamp(70px,21vw,90px);}
/* ROUND13: 非遗轮播卡实拍图更醒目（线描缩小只留照片） */
.carousel.compact .c-item .art.c-img{width:clamp(124px,37vw,156px);height:clamp(80px,23.5vw,100px);border-radius:13px;box-shadow:0 6px 16px rgba(27,70,104,.16),0 0 0 1px rgba(46,108,164,.14);object-position:center 42%;}
.carousel.compact .c-item{gap:5px;padding-top:8px;}
/* ROUND13-END */
.carousel.compact .c-item h4{font-size:clamp(14px,3.9vw,16px);}
.carousel.compact .c-item p{font-size:clamp(10.5px,2.9vw,12px);line-height:1.6;}
.carousel.compact .c-dots{padding-bottom:9px;}
.lab-row{display:flex;gap:11px;align-items:stretch;}
.lab-cv{flex:0 0 108px;display:flex;flex-direction:column;gap:6px;align-items:center;}
.lab-cv canvas{width:108px;height:108px;display:block;border-radius:12px;cursor:pointer;
  box-shadow:inset 0 0 0 1px rgba(46,108,164,.18);transition:transform .3s,box-shadow .3s;}
.lab-cv canvas:active{transform:scale(.97);}
.lab-cv canvas.inv{box-shadow:inset 0 0 0 1px rgba(234,244,251,.34);}
.lab-cv span{font:400 9.5px/1.5 var(--sans);color:var(--ink-3);text-align:center;letter-spacing:.02em;}
.lab-list{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px;}
.lhead{display:flex;align-items:center;justify-content:space-between;
  font:500 10.5px/1 var(--sans);color:var(--qing);letter-spacing:.1em;padding:0 1px 2px;}
.lhead em{font-style:normal;font-weight:400;color:var(--ink-3);letter-spacing:.04em;}
.vitem{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:10px;
  background:rgba(46,108,164,.055);border:1px solid rgba(46,108,164,.12);cursor:pointer;
  transition:transform .28s,background .28s,border-color .28s;}
.vitem:hover,.vitem:active{background:rgba(46,108,164,.13);border-color:rgba(79,184,220,.5);transform:translateX(3px);}
.vitem .vic{width:16px;height:16px;flex:0 0 auto;color:var(--qing);}
.vitem i{font-style:normal;font:500 11.5px/1.3 var(--sans);color:var(--qing-deep);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.vitem em{font-style:normal;font:400 9.5px/1 var(--sans);color:var(--ink-3);margin-left:auto;
  letter-spacing:.04em;flex:0 0 auto;}
/* 影像播放器 */
.vplayer{position:relative;width:100%;aspect-ratio:16/9;border-radius:14px;overflow:hidden;margin:2px 0 13px;
  background:linear-gradient(150deg,#12293D,#1B4668 52%,#2E6CA4);display:grid;place-items:center;box-shadow:var(--shadow-m);}
.vplayer .vink{position:absolute;inset:0;padding:10px;color:rgba(223,243,251,.4);}
.vplayer .vink svg{width:100%;height:100%;}
.vplayer::after{content:"";position:absolute;top:0;bottom:0;width:32%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.16),transparent);
  animation:sweep 3.8s ease-in-out infinite;}
.vplay{position:relative;z-index:2;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;
  background:rgba(248,242,230,.94);color:var(--qing-deep);box-shadow:0 10px 26px rgba(8,22,34,.42);
  animation:pulseGlow 2.6s ease-in-out infinite;}
.vplay svg{width:19px;height:19px;margin-left:3px;}
.vplayer .vtag{position:absolute;left:11px;top:11px;z-index:2;background:rgba(248,242,230,.9);}
.vplayer .vsrc{position:absolute;right:11px;bottom:11px;z-index:2;
  font:500 10px/1 var(--sans);color:rgba(223,243,251,.95);background:rgba(8,22,34,.5);
  padding:4px 8px;border-radius:6px;letter-spacing:.08em;}
.logo-badge{width:clamp(88px,26vw,110px);height:clamp(88px,26vw,110px);margin:0 auto;color:var(--qing);}
.center-stack{display:flex;flex-direction:column;align-items:center;text-align:center;}
.spacer{flex:1;min-height:6px;}
.martu{position:absolute;bottom:0;left:0;right:0;height:19%;z-index:2;color:var(--qing);opacity:.22;pointer-events:none;}
.martu svg{width:100%;height:100%;}
/* ============ 卡通 IP 形象「赣小兴」 ============ */
.ip{position:absolute;left:0;top:0;width:76px;z-index:70;cursor:pointer;
  will-change:transform;transform:translate3d(0,0,0);pointer-events:none;}
.ip-flip{position:relative;width:100%;transform-origin:50% 80%;transition:transform .22s;}
.ip.flip .ip-flip{transform:scaleX(-1) rotate(-6deg);}
.ip-in{position:relative;width:100%;animation:ipBob 2.4s ease-in-out infinite;transform-origin:50% 92%;}
.ip.walk .ip-in{animation:ipWalk .44s ease-in-out infinite;}
@keyframes ipBob{0%,100%{transform:translateY(0) rotate(-1.4deg);}50%{transform:translateY(-3.5px) rotate(1.4deg);}}
@keyframes ipWalk{0%,100%{transform:translateY(0) rotate(-5deg);}50%{transform:translateY(-7px) rotate(5deg);}}
.ip.hop .ip-in{animation:ipHop .62s cubic-bezier(.2,1.5,.4,1);}
@keyframes ipHop{0%{transform:translateY(0) scale(1);}35%{transform:translateY(-22px) scale(1.06,.94);}70%{transform:translateY(0) scale(.96,1.05);}100%{transform:translateY(0) scale(1);}}
.ip svg{width:100%;height:auto;display:block;filter:drop-shadow(0 9px 13px rgba(27,70,104,.20));pointer-events:auto;}
.ip-shadow{position:absolute;left:50%;bottom:2px;width:46px;height:10px;border-radius:50%;transform:translateX(-50%);
  background:radial-gradient(ellipse at center,rgba(27,70,104,.3),transparent 72%);transition:width .3s;}
.ip.walk .ip-shadow{width:38px;opacity:.75;}
.ip-bubble{position:absolute;left:50%;bottom:calc(100% - 4px);transform:translate(-50%,4px) scale(.78);transform-origin:50% 100%;
  min-width:126px;max-width:200px;padding:9px 12px;border-radius:14px;
  background:rgba(255,255,255,.97);border:1px solid rgba(46,108,164,.22);box-shadow:var(--shadow-m);
  font:500 11.5px/1.6 var(--sans);color:var(--ink-2);opacity:0;pointer-events:none;
  transition:opacity .3s,transform .36s cubic-bezier(.2,1.4,.42,1);}
.ip-bubble.show{opacity:1;transform:translate(-50%,0) scale(1);}
.ip-bubble::after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);
  border:7px solid transparent;border-top-color:rgba(255,255,255,.97);}
.ip-bubble b{color:var(--qing);font-weight:600;}
/* 落坐形态：站姿/坐姿两套图切换 + 小动作 */
.ip .ip-sitimg{display:none;}
.ip.sit .ip-stand{display:none;}
.ip.sit .ip-sitimg{display:block;}
.ip.sit .ip-in{animation:ipSit 3.6s ease-in-out infinite;}
@keyframes ipSit{0%,100%{transform:translateY(0) rotate(0deg);}50%{transform:translateY(-2px) rotate(.7deg);}}
.ip.wiggle .ip-flip{animation:ipWiggle .95s ease-in-out;}
@keyframes ipWiggle{0%,100%{transform:rotate(0deg);}25%{transform:rotate(-7deg);}55%{transform:rotate(6deg);}80%{transform:rotate(-3deg);}}
.ip{transition:opacity .26s ease;}
.ip.ip-out{opacity:0;}
.ip.sit .ip-shadow{width:52px;}
/* 可拖拽 */
.ip svg{cursor:grab;touch-action:none;}
.ip.grab svg{cursor:grabbing;}
.ip.grab .ip-in{animation:none;transform:scale(1.06);}
.ip.grab svg{filter:drop-shadow(0 16px 20px rgba(27,70,104,.34));}
/* 自娱小道具：剥橙子 / 放烟花 */
.ip-fx{position:absolute;z-index:72;width:0;height:0;pointer-events:none;}
.ip-fx .or,.ip-fx .or2{position:absolute;width:19px;height:19px;border-radius:50%;
  background:radial-gradient(circle at 34% 28%,#FFD79A,#F0912F 62%,#C96A18);
  box-shadow:0 2px 7px rgba(150,90,20,.34);opacity:0;}
.ip-fx .or{animation:ipPeelL 1.05s cubic-bezier(.2,1.3,.4,1) forwards;}
.ip-fx .or2{animation:ipPeelR 1.05s cubic-bezier(.2,1.3,.4,1) forwards;}
@keyframes ipPeelL{0%{opacity:0;transform:translate(-10px,14px) scale(.2);}
  32%{opacity:1;}58%{transform:translate(-10px,-2px) scale(1);}
  100%{opacity:.92;transform:translate(-30px,-7px) rotate(-40deg);}}
@keyframes ipPeelR{0%{opacity:0;transform:translate(-10px,14px) scale(.2);}
  32%{opacity:1;}58%{transform:translate(-10px,-2px) scale(1);}
  100%{opacity:.92;transform:translate(10px,-7px) rotate(40deg);}}
.ip-fx .peel{position:absolute;left:-12px;top:0;width:23px;height:5px;border-radius:3px;
  background:linear-gradient(90deg,#F9BE63,#DE8520);transform-origin:0 50%;opacity:0;
  animation:ipPeelFly .95s .16s ease-out forwards;}
@keyframes ipPeelFly{0%{opacity:0;transform:rotate(0) translateX(0) scaleY(1);}
  22%{opacity:1;}100%{opacity:0;transform:rotate(var(--r,120deg)) translateX(27px) scaleY(.45);}}
.ip-fx .rk{position:absolute;left:-3px;top:4px;width:6px;height:6px;border-radius:50%;
  background:#FFE9A8;box-shadow:0 0 10px 3px rgba(242,196,107,.85);
  animation:ipRkUp .62s ease-out forwards;}
@keyframes ipRkUp{0%{opacity:0;transform:translateY(12px) scale(.5);}
  22%{opacity:1;}100%{opacity:0;transform:translateY(-76px) scale(1.2);}}
.ip-fx .bsp{position:absolute;left:0;top:0;width:0;height:0;}
.ip-fx .bsp i{position:absolute;left:0;top:0;width:5px;height:5px;border-radius:50%;
  background:var(--c,#F2C46B);transform-origin:0 0;opacity:0;
  animation:ipSpOut 1.05s .56s cubic-bezier(.14,.9,.3,1) forwards;}
@keyframes ipSpOut{0%{opacity:1;transform:rotate(var(--a,0deg)) translateX(0);}
  68%{opacity:.95;}100%{opacity:0;transform:rotate(var(--a,0deg)) translateX(var(--d,40px));}}
.ip-fx .glow{position:absolute;left:-34px;top:-102px;width:68px;height:68px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,236,180,.95),rgba(242,196,107,.35) 45%,transparent 72%);
  opacity:0;animation:ipFwGlow 1.05s .56s ease-out forwards;}
@keyframes ipFwGlow{0%{opacity:0;transform:scale(.2);}30%{opacity:1;transform:scale(1);}
  100%{opacity:0;transform:scale(1.35);}}
/* 留言墙错误/提示行 */
.mb-err{padding:8px 12px;text-align:center;font:500 11.5px/1.7 var(--sans);color:var(--ink-3);}
/* 轮播淡入淡出：滑动时白描线条不再被硬切 */
.c-item{opacity:.18;transition:opacity .5s ease .08s;}
.c-item.on{opacity:1;transition:opacity .32s ease;}

/* ============ 通用：图版 / 数据卡 / 科普 ============ */
.fig{position:relative;border-radius:15px;overflow:hidden;margin:2px 0 12px;
  background:linear-gradient(165deg,#FCF8EE,#EDF3F7);border:1px solid rgba(46,108,164,.2);box-shadow:var(--shadow-s);}
.fig .fig-art{display:block;width:100%;aspect-ratio:16/10;color:var(--qing);}
.fig .fig-art svg{width:100%;height:100%;}
.fig .fig-art.wide{aspect-ratio:16/9;}
.fig .fig-badge{position:absolute;left:10px;top:10px;z-index:2;}
.fig .fig-no{position:absolute;right:10px;top:10px;z-index:2;font:600 10px/1 var(--serif);
  color:rgba(46,108,164,.55);letter-spacing:.12em;}
.fig .fig-cap{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:16px 11px 7px;
  background:linear-gradient(transparent,rgba(24,38,52,.66));color:#EAF3FA;
  font:400 10.5px/1.45 var(--sans);letter-spacing:.03em;}
.dcards{display:flex;gap:8px;margin:10px 0 4px;}
.dcards>div{flex:1;text-align:center;padding:9px 6px;border-radius:12px;
  background:rgba(46,108,164,.07);border:1px solid rgba(46,108,164,.14);}
.dcards b{display:block;font:600 16px/1.25 var(--serif);color:var(--qing);}
.dcards b small{font-size:.55em;font-weight:400;color:var(--ink-3);margin-left:1px;}
.dcards span{font:400 10px/1.35 var(--sans);color:var(--ink-3);}
.sec-h{display:flex;align-items:center;gap:7px;margin:14px 0 8px;
  font:600 12px/1 var(--sans);color:var(--qing);letter-spacing:.14em;}
.sec-h::before{content:"";width:3px;height:13px;border-radius:2px;background:linear-gradient(var(--tech),var(--qing));}
.sec-h em{margin-left:auto;font-style:normal;font-weight:400;font-size:10px;color:var(--ink-3);letter-spacing:.04em;}
.sci-list{list-style:none;margin:0;padding:0;}
.sci-list li{position:relative;padding:0 0 0 19px;margin:0 0 7px;
  font:400 12.5px/1.75 var(--sans);color:var(--ink-2);text-align:justify;}
.sci-list li::before{content:"";position:absolute;left:3px;top:8px;width:6px;height:6px;border-radius:2px;
  background:var(--tu);transform:rotate(45deg);}
.sci-list li b{color:var(--qing-deep);font-weight:600;}
.tipbox{margin-top:11px;padding:10px 12px 10px 35px;border-radius:12px;position:relative;
  background:rgba(79,184,220,.10);border:1px dashed rgba(79,184,220,.45);
  font:400 11.5px/1.72 var(--sans);color:var(--ink-2);text-align:justify;}
.tipbox::before{content:"知";position:absolute;left:10px;top:10px;width:17px;height:17px;border-radius:50%;
  display:grid;place-items:center;background:var(--tech);color:#fff;font:600 10px/1 var(--serif);}
.paras p{font:400 12.5px/1.9 var(--sans);color:var(--ink-2);margin:0 0 8px;text-align:justify;}
.paras p b{color:var(--qing);font-weight:600;}
.linkrow{display:flex;flex-direction:column;gap:7px;margin-top:11px;}
.linkrow a{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:12px;text-decoration:none;
  background:rgba(46,108,164,.06);border:1px solid rgba(46,108,164,.16);
  font:500 12px/1.3 var(--sans);color:var(--qing-deep);transition:transform .26s,background .26s,border-color .26s;}
.linkrow a:hover,.linkrow a:active{background:rgba(46,108,164,.13);border-color:rgba(79,184,220,.5);transform:translateX(3px);}
.linkrow a svg{width:15px;height:15px;flex:0 0 auto;color:var(--qing);}
.linkrow a em{margin-left:auto;font-style:normal;font:400 10px/1 var(--sans);color:var(--ink-3);flex:0 0 auto;}
.linkrow a span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gal{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:4px 0 2px;}
.gal .gcell{position:relative;border-radius:12px;overflow:hidden;aspect-ratio:1.15;
  background:linear-gradient(165deg,#FBF6EC,#EEF3F6);border:1px solid rgba(46,108,164,.18);display:grid;place-items:center;}
.gal .gcell svg{width:66%;height:66%;color:var(--qing);}
.gal .gcell span{position:absolute;left:0;right:0;bottom:0;padding:10px 7px 4px;
  background:linear-gradient(transparent,rgba(24,38,52,.6));color:#EAF3FA;font:400 10px/1.3 var(--sans);}
.gal .gcell.tu svg{color:var(--tu);}

/* ============ P3 目录列表 ============ */
.dir-list{margin-top:11px;border-radius:var(--r);overflow:hidden;
  background:linear-gradient(160deg,rgba(255,255,255,.95),rgba(255,255,255,.72));
  border:1px solid rgba(46,108,164,.15);box-shadow:var(--shadow-s);}
.dir-row{display:flex;align-items:center;gap:11px;padding:11px 13px;cursor:pointer;
  border-bottom:1px dashed rgba(46,108,164,.16);transition:background .26s;}
.dir-row:last-child{border-bottom:0;}
.dir-row:hover,.dir-row:active{background:rgba(46,108,164,.07);}
.dir-row .dno{font:600 15px/1 var(--serif);color:rgba(46,108,164,.5);flex:0 0 22px;}
.dir-row .dtx{min-width:0;flex:1;}
.dir-row .dtx b{display:block;font:600 13px/1.4 var(--serif);color:var(--qing-deep);letter-spacing:.03em;}
.dir-row .dtx span{display:block;font:400 10.5px/1.45 var(--sans);color:var(--ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dir-row .dpg{flex:0 0 auto;font:500 10px/1 var(--sans);color:var(--qing);letter-spacing:.04em;
  padding:4px 8px;border-radius:999px;background:var(--qing-wash);border:1px solid rgba(46,108,164,.16);}
.dir-row .dgo{flex:0 0 auto;width:14px;height:14px;color:var(--ink-3);}
.zone-card .zmeta{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap;}
.zone-card .zmeta i{font-style:normal;font:500 9.5px/1 var(--sans);color:var(--ink-3);
  padding:3px 7px;border-radius:999px;background:rgba(46,108,164,.07);border:1px solid rgba(46,108,164,.13);}

/* ============ P7 留言板 ============ */
.mb{position:relative;margin-top:8px;border-radius:var(--r);padding:11px 12px 10px;
  background:linear-gradient(165deg,rgba(255,255,255,.95),rgba(248,242,230,.74));
  border:1px solid rgba(46,108,164,.16);box-shadow:var(--shadow-s);}
.mb-head{display:flex;align-items:center;gap:8px;margin-bottom:5px;}
.mb-head svg{width:20px;height:20px;color:var(--qing);}
.mb-head b{font:600 13px/1 var(--serif);color:var(--qing-deep);letter-spacing:.05em;}
.mb-head em{margin-left:auto;font-style:normal;font:400 10px/1 var(--sans);color:var(--ink-3);}
.mb-form{display:flex;gap:7px;align-items:center;}
.mb-form input{flex:1;min-width:0;height:33px;border-radius:11px;padding:0 12px;font-size:12.5px;
  background:rgba(255,255,255,.92);border:1px solid rgba(46,108,164,.2);color:var(--ink);outline:none;
  transition:border-color .3s,box-shadow .3s;}
.mb-form input.mb-name{flex:0 0 76px;text-align:center;padding:0 6px;}
@media (max-width:360px){.mb-form input.mb-name{flex:0 0 62px;}}
.mb-form input:focus{border-color:var(--tech);box-shadow:0 0 0 3px rgba(79,184,220,.16);}
.mb-form input::placeholder{color:var(--ink-3);opacity:.72;}
.mb-send{flex:0 0 auto;height:33px;padding:0 15px;border-radius:11px;color:#fff;
  font:600 12px/1 var(--sans);letter-spacing:.1em;
  background:linear-gradient(120deg,var(--qing),var(--qing-deep));box-shadow:0 6px 14px rgba(27,70,104,.25);
  transition:transform .2s;}
.mb-send:active{transform:scale(.95);}
.mb-wall{margin-top:6px;max-height:96px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;scrollbar-width:none;}
.mb-wall::-webkit-scrollbar{display:none;}
.mb-item{position:relative;padding:9px 11px 9px 42px;border-radius:12px;
  background:rgba(46,108,164,.055);border:1px solid rgba(46,108,164,.12);
  animation:mbIn .52s cubic-bezier(.2,1.3,.4,1);}
@keyframes mbIn{from{opacity:0;transform:translateY(10px) scale(.97);}to{opacity:1;transform:none;}}
.mb-item .ava{position:absolute;left:9px;top:9px;width:25px;height:25px;border-radius:50%;
  display:grid;place-items:center;font:600 11px/1 var(--serif);color:#fff;
  background:linear-gradient(135deg,var(--qing),var(--qing-deep));}
.mb-item .ava.tu{background:linear-gradient(135deg,var(--tu),var(--tu-deep));}
.mb-item .ava.tech{background:linear-gradient(135deg,var(--tech),#2E8FB5);}
.mb-item em{display:block;font-style:normal;font:600 11px/1.3 var(--sans);color:var(--qing-deep);margin-bottom:2px;}
.mb-item p{margin:0;font:400 12px/1.68 var(--sans);color:var(--ink-2);word-break:break-word;}
.mb-item .mt{position:absolute;right:10px;top:9px;font:400 9.5px/1 var(--sans);color:var(--ink-3);}
.mb-item .mheart{position:absolute;right:10px;bottom:8px;display:inline-flex;align-items:center;gap:3px;
  font:400 10px/1 var(--sans);color:var(--ink-3);cursor:pointer;transition:color .25s,transform .2s;}
.mb-item .mheart svg{width:12px;height:12px;}
.mb-item .mheart.on{color:#C0553F;}
.mb-item .mheart:active{transform:scale(1.2);}
.mb-empty{padding:14px 0;text-align:center;font:400 11.5px/1.6 var(--sans);color:var(--ink-3);}

/* ============ 赣地连线小游戏 ============ */
.mt-board{position:relative;display:flex;justify-content:space-between;gap:14px;
  padding:10px 2px 4px;touch-action:manipulation;}
.mt-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;overflow:visible;}
.mt-col{position:relative;z-index:2;display:flex;flex-direction:column;gap:8px;flex:1;max-width:46%;}
.mt-chip{position:relative;display:flex;align-items:center;gap:7px;min-height:42px;padding:7px 10px;
  border-radius:13px;background:linear-gradient(160deg,rgba(255,255,255,.95),rgba(248,242,230,.8));
  border:1.4px solid rgba(46,108,164,.22);box-shadow:0 3px 10px rgba(27,70,104,.08);
  font:500 12.5px/1.25 var(--sans);color:var(--ink-2);cursor:pointer;
  transition:transform .22s,box-shadow .3s,border-color .3s,background .3s,opacity .3s;
  -webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:none;}
.mt-chip:active{transform:scale(.955);}
.mt-chip .mi{flex:0 0 auto;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;
  font:600 10.5px/1 var(--serif);color:#fff;background:linear-gradient(135deg,var(--qing),var(--qing-deep));}
.mt-chip.tu .mi{background:linear-gradient(135deg,var(--tu),var(--tu-deep));}
/* 右列只给一枚中性定位环，不泄露特产答案 */
.mt-chip.loc .mi{background:transparent;box-shadow:inset 0 0 0 1.6px rgba(184,135,74,.5);}
.mt-chip.loc .mi::after{content:"";width:7px;height:7px;border-radius:50%;
  background:linear-gradient(135deg,var(--tu),var(--tu-deep));}
.mt-col.right .mt-chip{flex-direction:row-reverse;text-align:right;}
.mt-chip.sel{border-color:var(--tech);background:linear-gradient(160deg,#EAF6FC,#DFF0FA);
  box-shadow:0 0 0 4px rgba(79,184,220,.18),0 6px 16px rgba(79,184,220,.25);transform:translateY(-2px);}
.mt-chip.sel .mi{transform:scale(1.12);}
.mt-chip.good{border-color:rgba(184,135,74,.55);background:linear-gradient(160deg,#FBF3E2,#F5E9CF);
  color:var(--tu-deep);pointer-events:none;animation:mtGood .55s cubic-bezier(.2,1.4,.4,1);}
.mt-chip.good .mi{background:linear-gradient(135deg,#C89B55,#96662C);}
@keyframes mtGood{0%{transform:scale(1);}45%{transform:scale(1.07);}100%{transform:scale(1);}}
.mt-chip.bad{border-color:#C0553F;background:#FBEAE4;animation:mtShake .45s;}
@keyframes mtShake{0%,100%{transform:translateX(0);}20%{transform:translateX(-5px);}45%{transform:translateX(5px);}70%{transform:translateX(-3px);}}
.mt-chip.hint{animation:mtHint 1.1s ease-in-out 2;}
@keyframes mtHint{0%,100%{box-shadow:0 3px 10px rgba(27,70,104,.08);}50%{box-shadow:0 0 0 6px rgba(79,184,220,.3);border-color:var(--tech);}}
/* 选中后另一侧的可选项轻微提示 */
.mt-chip.avail{border-color:rgba(79,184,220,.52);box-shadow:0 0 0 3px rgba(79,184,220,.13);}
/* 拖拽连线时经过的芯片 */
.mt-chip.over{border-color:var(--tech);background:linear-gradient(160deg,#EAF6FC,#DFF0FA);
  box-shadow:0 0 0 5px rgba(79,184,220,.22);transform:translateY(-2px);}
/* 连线中点只留一枚小结点，不放文字 */
.mt-node{position:absolute;z-index:3;width:12px;height:12px;border-radius:50%;
  background:linear-gradient(135deg,#E8C87A,#C89B55);border:2px solid #FFFBF2;
  box-shadow:0 2px 7px rgba(150,102,44,.42);animation:popIn .5s cubic-bezier(.2,1.4,.4,1);pointer-events:none;}
.mt-line{fill:none;stroke-linecap:round;}
.mt-line.temp{stroke:#C0553F;stroke-width:2;stroke-dasharray:5 4;opacity:.75;}
.mt-line.lock{stroke:url(#mtGrad);stroke-width:2.6;filter:drop-shadow(0 1px 3px rgba(27,70,104,.25));}
.mt-foot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;}
.mt-progress{font:500 12px/1 var(--sans);letter-spacing:.08em;color:var(--ink-2);}
.mt-progress em{font-style:normal;font:600 15px/1 var(--serif);color:var(--qing);margin:0 2px;}
.mt-reset{height:34px;padding:0 14px;border-radius:999px;font:500 12px/1 var(--sans);letter-spacing:.1em;
  background:var(--white);border:1px solid rgba(46,108,164,.2);color:var(--qing-deep);transition:transform .2s;}
.mt-reset:active{transform:scale(.94);}
.mt-win{margin-top:12px;border-radius:var(--r);padding:15px 16px;text-align:center;
  background:linear-gradient(160deg,#FCF7ED,#F3E9D5);border:1px solid rgba(184,135,74,.4);
  box-shadow:var(--shadow-m);animation:popIn .7s cubic-bezier(.2,1.3,.4,1);}
.mt-win h3{font:600 17px/1.4 var(--serif);color:var(--tu-deep);margin:0 0 5px;letter-spacing:.05em;}
.mt-win p{margin:0;font:400 12px/1.75 var(--sans);color:var(--ink-2);}
#fxCv{position:absolute;inset:0;z-index:96;pointer-events:none;}

@media (max-width:360px){.grid4{gap:8px;}.pcard{padding:12px 10px;}.ip{width:66px;}
  .mt-chip{min-height:38px;padding:6px 8px;font-size:11.5px;}.mt-col{gap:7px;}}
/* ============ 分享 / 扫码观展 ============ */
.qr-wrap{display:flex;flex-direction:column;align-items:center;gap:11px;}
.qr-box{width:min(54vw,196px);aspect-ratio:1/1;padding:9px;border-radius:16px;background:#fff;
  border:1px solid rgba(46,108,164,.18);box-shadow:0 6px 20px rgba(27,70,104,.13);
  display:flex;align-items:center;justify-content:center;}
.qr-box canvas{display:block;border-radius:4px;}
.qr-cap{font:500 12px/1.5 var(--sans);color:var(--qing-deep);letter-spacing:.06em;text-align:center;}
.qr-link{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border-radius:11px;
  background:rgba(46,108,164,.07);border:1px dashed rgba(46,108,164,.32);}
.qr-link span{flex:1;min-width:0;font:500 11.5px/1.5 var(--sans);color:var(--qing-deep);
  word-break:break-all;text-align:left;}
.qr-copy{flex:0 0 auto;height:29px;padding:0 12px;border:0;border-radius:9px;color:#fff;
  background:linear-gradient(135deg,var(--qing),var(--qing-deep));font:600 12px/1 var(--sans);
  letter-spacing:.06em;transition:transform .2s;}
.qr-copy:active{transform:scale(.95);}
.qr-tips{list-style:none;margin:0;padding:0;width:100%;display:flex;flex-direction:column;gap:6px;}
.qr-tips li{position:relative;padding-left:15px;font:400 12px/1.7 var(--sans);color:var(--ink-3);text-align:left;}
.qr-tips li::before{content:"";position:absolute;left:2px;top:7px;width:5px;height:5px;border-radius:50%;
  background:linear-gradient(135deg,var(--qing),var(--tu));}
.qr-tips b{color:var(--qing-deep);font-weight:600;}
.qr-wx{margin:0;padding:9px 11px;border-radius:11px;background:rgba(184,135,74,.1);
  border:1px solid rgba(184,135,74,.26);font:400 12px/1.7 var(--sans);color:#8A6533;text-align:left;}
#wxShareThumb{position:absolute;left:-9999px;top:0;width:300px;height:300px;opacity:0;pointer-events:none;}
@media (max-width:430px){#musicTxt{display:none;}.hud-right{gap:6px;}}
@media (max-width:360px){.hud-right{gap:4px;}.chip-btn{padding:0 7px;}}

/*DEEPEN-V2*/
.card{border-color:rgba(46,108,164,.22);box-shadow:0 8px 22px rgba(27,70,104,.13);}
.pcard{box-shadow:0 12px 26px rgba(27,70,104,.18);}
@media (max-width:430px){
  .danmu{height:48px;}
  .danmu i{font-size:10.5px;padding:3px 8px;}
  .t-note{line-height:1.6;}
}
/*DEEPEN-V3-END*/
/*DEEPEN-V4*/
/* 直播间卡片不参与 flex 压缩：内容完整显示，整页可滚动 */
.livebox{flex-shrink:0;}
/* 非激活页暂停全部动画：翻页更顺滑 */
.slide:not(.is-active) *,.slide:not(.is-active) [data-anim],.slide:not(.is-active) [data-chars] span{animation-play-state:paused!important;}
/*ROUND5*/
.fig-img{width:100%;height:100%;object-fit:cover;display:block;}
.c-item .art.c-img{object-fit:cover;border-radius:14px;}
.s-inner{touch-action:pan-y;overscroll-behavior:contain;}
.city-strip{padding:1px 14px 5px 2px;}
@media (max-width:430px){
  .danmu{height:clamp(52px,13vw,66px);}
  .live-head{padding:9px 13px;}
  .live-foot{padding:10px 13px;}
  .livebox{min-height:216px;}
}
/*ROUND5-END*/
/*ROUND9*/
/* ============ 统一版式原则 ============
   1) 所有设备同一套排版：不做任何"小屏删内容"的处理，元素一律保留；
   2) 内容放不下时整页纵向滚动，由用户自己上滑看全；
   3) 高度方向尺寸改用 vh/vmin 自适应，让长屏/小屏观感尽量一致。 */
.s-inner.scrollable{-webkit-mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 40px),rgba(0,0,0,.15) 100%);
  mask-image:linear-gradient(180deg,#000 0,#000 calc(100% - 40px),rgba(0,0,0,.15) 100%);}
.s-inner.at-end{-webkit-mask-image:none;mask-image:none;}
/* 内容超出一屏时，页面右上角出现"向上滑看更多"提示 */
.scroll-tip{position:absolute;right:clamp(14px,4.4vw,38px);bottom:calc(74px + env(safe-area-inset-bottom));
  z-index:7;display:none;align-items:center;gap:5px;height:24px;padding:0 10px;border-radius:12px;
  background:rgba(27,70,104,.62);color:#EAF7FD;font:500 10.5px/1 var(--sans);letter-spacing:.06em;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);pointer-events:none;
  opacity:0;transition:opacity .3s;}
.scroll-tip.on{display:inline-flex;opacity:1;}
.scroll-tip svg{width:11px;height:11px;animation:tipBob 1.5s ease-in-out infinite;}
@keyframes tipBob{0%,100%{transform:translateY(1px);}50%{transform:translateY(-2px);}}
.slide.is-scrolled .scroll-tip{opacity:0;}
/* 溢出即滚动：保证任何屏上都能滑到最后一像素 */
.s-inner{overflow-y:auto!important;}

/* 高度自适应：图片/画布/图表等按视口高度缩放，长屏与短屏内容比例一致 */
.fig-art,.fig-img{max-height:32vh;}
.chart-card .dc-svg{height:auto;max-height:22vh;}
.livebox{flex:0 0 auto;}
.livebox .danmu{flex:0 0 auto;}

/* 矮屏只收紧留白与字号，不隐藏任何内容 */
@media (max-height:760px){
  .s-inner{padding-top:calc(54px + env(safe-area-inset-top));padding-bottom:calc(80px + env(safe-area-inset-bottom));}
  .t-eyebrow{margin-bottom:6px;}
  .dir-row{padding:8px 10px;}
  .zone-card{padding:11px 12px;}
  .spacer{height:6px;}
}
@media (max-height:640px){
  .s-inner{padding-top:calc(50px + env(safe-area-inset-top));padding-bottom:calc(74px + env(safe-area-inset-bottom));}
  .t-h2{font-size:clamp(19px,5.6vw,24px);}
  .t-eyebrow{font-size:10px;margin-bottom:4px;}
  .t-note{line-height:1.55;}
  .dir-row{padding:7px 9px;}
  .zone-card{padding:10px 11px;}
  .zone-card h4{font-size:12.5px;}
  .grid4{gap:8px;}
}
/*ROUND9-END*/
/*ROUND10*/
/* 小兴气泡防出屏：宽度上限随屏收紧 + JS 水平钳位，文字完整不裁 */
.ip-bubble{max-width:min(200px,52vw);}
/*ROUND10-END*/
