/* 狼兔小游戏样式表 — 从 index.html 抽出(v0705-64起) */
  :root{ --wolf:#5b6b8c; --rabbit:#e08aa6; --bg:#f7f5f2; --card:#fff; --ink:#2a2a32; --muted:#9a9aa5; --gold:#c8a24a; }
  *{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
  body{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);padding-bottom:72px}
  header{background:linear-gradient(135deg,var(--wolf),var(--rabbit));color:#fff;padding:20px 16px 16px;border-radius:0 0 22px 22px}
  header h1{font-size:19px;letter-spacing:1px}
  header .date{font-size:12px;opacity:.85;margin-top:3px}
  /* 紧凑顶栏 */
  header.compact{padding:10px 14px 10px;border-radius:0 0 18px 18px}
  header.compact .row{display:flex;align-items:center;justify-content:space-between;gap:10px}
  header.compact .brand{font-size:15px;font-weight:700;letter-spacing:.5px;display:flex;align-items:center;gap:8px}
  header.compact .brand .date{font-size:11px;font-weight:500;opacity:.9;margin:0}
  header.compact #meChip{border:0;color:#fff;border-radius:12px;padding:4px 10px;font-size:12px;font-weight:600;background:rgba(255,255,255,.2);backdrop-filter:blur(4px)}
  header.compact .money{margin-top:6px;background:rgba(255,255,255,.14);border-radius:12px;padding:6px 10px;font-size:12px}
  header.compact .money span{display:flex;align-items:center;gap:5px;flex:1;justify-content:center;min-width:0}
  header.compact .money .lbl{display:flex;align-items:center;gap:2px;opacity:.9}
  header.compact .money i{font-style:normal;font-size:11px;opacity:.85}
  header.compact .money b{font-size:15px;font-weight:800}
  .wallets{display:flex;gap:10px;margin-top:14px}
  .w{flex:1;background:rgba(255,255,255,.16);backdrop-filter:blur(6px);border-radius:14px;padding:10px 12px}
  .w .lbl{font-size:11px;opacity:.85}
  .w .val{font-size:20px;font-weight:700;margin-top:2px}
  .couple{text-align:center;margin-top:10px;background:rgba(255,255,255,.2);border-radius:14px;padding:8px}
  .couple .val{font-size:22px;font-weight:800}
  main{padding:12px 10px}
  .view{display:none}.view.on{display:block}
  h2{font-size:14px;color:var(--muted);margin:16px 0 8px;font-weight:600}
  .card{background:var(--card);border-radius:14px;padding:12px 11px;margin-bottom:9px;box-shadow:0 1px 6px rgba(0,0,0,.04)}
  .game{display:flex;align-items:center;justify-content:space-between}
  .game .meta{flex:1}
  .game .name{font-size:15px;font-weight:600}
  .game .sub{font-size:11px;color:var(--muted);margin-top:3px}
  .pill{font-size:10px;padding:2px 7px;border-radius:8px;background:#eee;color:#666;margin-left:6px}
  .pill.joint{background:#fbe6ee;color:var(--rabbit)}
  .pill.solo{background:#e7ecf6;color:var(--wolf)}
  .btn{background:var(--wolf);color:#fff;border:0;border-radius:10px;padding:8px 14px;font-size:13px;font-weight:600}
  .btn.r{background:var(--rabbit)}
  /* meBtn 颜色随当前全局身份 ME 自动切换，避免误操作 */
  body.me-wolf .meBtn{background:var(--wolf)}
  body.me-rabbit .meBtn{background:var(--rabbit)}
  .flagship{background:linear-gradient(135deg,#2a2f45,#4a3550);color:#fff}
  .flagship .name{color:#fff}.flagship .sub{color:#cfc8de}
  .inv-tag{display:inline-block;background:#f3eee2;color:var(--gold);border-radius:8px;padding:3px 9px;font-size:12px;margin:3px 4px 0 0}
  .ledger{font-size:12px;color:#666;display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid #f0f0f0}
  .ledger .pos{color:#2e9e6b}.ledger .neg{color:#d05b5b}
  nav{position:fixed;bottom:0;left:0;right:0;background:#fff;display:flex;border-top:1px solid #eee;padding:8px 0 calc(8px + env(safe-area-inset-bottom,0px))}
  nav button{flex:1;background:none;border:0;font-size:11px;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px}
  nav button .ico{font-size:20px}
  nav button.on{color:var(--wolf);font-weight:700}
  .empty{color:var(--muted);font-size:13px;text-align:center;padding:18px}
  .redDot{position:absolute;top:4px;right:14px;width:8px;height:8px;border-radius:50%;background:#e5484d}
  /* 游戏列表两种视图 */
  .modebar{display:flex;gap:8px;margin-bottom:10px}
  .modebar button{flex:1;border:0;border-radius:10px;padding:8px;font-size:13px;background:#eee;color:#777;font-weight:600}
  .modebar button.on{background:var(--wolf);color:#fff}
  .homemap{position:relative;width:100%;max-width:460px;margin:0 auto}
  .homemap img{width:100%;display:block;border-radius:16px}
  .hm-spot{position:absolute;width:64px;height:64px;transform:translate(-50%,-50%);cursor:pointer;-webkit-tap-highlight-color:transparent}
  .hm-ring{position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;border:2px solid rgba(255,255,255,.9);box-shadow:0 0 6px rgba(0,0,0,.35);animation:hmPulse 1.8s ease-out infinite}
  @keyframes hmPulse{0%{transform:scale(.7);opacity:.9}70%{transform:scale(1.5);opacity:.15}100%{transform:scale(.7);opacity:.9}}
  .hm-chip{position:absolute;left:50%;bottom:58px;transform:translateX(-50%);white-space:nowrap;background:rgba(255,255,255,.92);border-radius:999px;padding:3px 9px;font-size:11px;font-weight:700;color:#4a3b30;box-shadow:0 2px 6px rgba(0,0,0,.25)}
  .hm-all{position:fixed;right:12px;bottom:calc(74px + env(safe-area-inset-bottom,0px));z-index:40;border:0;border-radius:999px;padding:9px 15px;font-size:12px;font-weight:700;background:rgba(255,255,255,.94);color:#4a3b30;box-shadow:0 2px 8px rgba(0,0,0,.3)}
  .homestack{-webkit-overflow-scrolling:touch}
  .homestack .homemap{margin-bottom:14px}
  .hm-title{max-width:460px;margin:0 auto 6px;font-size:14px;font-weight:800;color:#4a3b30;padding-left:4px}
  .hm-care{max-width:460px;margin:8px auto 64px;display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid #dfbfd0;border-radius:8px;background:linear-gradient(135deg,#fff8f3,#f8e7ef);box-shadow:0 2px 9px rgba(126,73,92,.12);color:#674653;cursor:pointer}
  .hm-care-icon{font-size:28px;line-height:1}
  .hm-care span:nth-child(2){display:flex;flex:1;min-width:0;flex-direction:column}
  .hm-care b{font-size:14px;line-height:1.35}
  .hm-care small{font-size:11px;color:#997584;line-height:1.45}
  .hm-care-go{font-size:12px;font-weight:800;color:#b15f83;white-space:nowrap}
  .pi-map{position:relative;display:grid;gap:2px;margin:10px;background:#b9d8e4;padding:5px;border-radius:14px;box-shadow:0 2px 10px rgba(45,78,90,.14)}
  .pi-cell{position:relative;min-height:52px;border:0;border-radius:5px;min-width:0;font:inherit;padding:0;display:flex;align-items:center;justify-content:center}
  .pi-cell.grass{background:#b9d99a}.pi-cell.sand{background:#e8d59d}.pi-cell:disabled{opacity:1}
  .pi-emoji{font-size:17px;line-height:1}.pi-cell small{position:absolute;bottom:1px;font-size:8px;color:#35525a}.pi-wild{font-size:14px;opacity:.55}
  .pi-object,.pi-decor{position:absolute;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:2}
  .pi-object{flex-direction:column;background:rgba(255,255,255,.3);border-radius:8px}.pi-object span{font-size:clamp(22px,8vw,42px);line-height:1}.pi-object small{font-size:9px;color:#4a3b30;background:rgba(255,255,255,.8);padding:1px 4px;border-radius:5px}
  .pi-decor{width:8.333%;height:10%;font-size:clamp(18px,6vw,32px);transform:translate(-50%,-50%);filter:drop-shadow(0 2px 2px rgba(0,0,0,.18))}
  .pi-score{display:flex;align-items:center;gap:8px;margin-top:8px;padding-top:7px;border-top:1px solid #eee;color:#6b6259;font-size:11px}.pi-score b{color:#96733d;font-size:13px}.pi-score span{margin-left:auto}
  /* 个人岛沿用自由大世界：全屏海面、浮岛、草地地块、建筑浮层和 HUD */
  #island{position:fixed;top:0;left:0;right:0;bottom:0;z-index:800;overflow:hidden;background:#bfe6f5}
  .pi-page{position:relative;width:100%;height:100vh;height:100dvh;overflow:hidden;background:linear-gradient(180deg,#8ed4f2 0%,#bce8f7 38%,#d8f3e4 100%)}
  .pi-page.pi-night{background:linear-gradient(180deg,#1c2547 0%,#2c3a63 48%,#3c5266 100%)}
  .pi-view{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;background:url(/uploads/_assets/wm/water.jpg) center/280px repeat;display:flex;align-items:center;justify-content:center;padding:88px 12px 132px;box-sizing:border-box;touch-action:none;cursor:grab}
  .pi-view.pi-dragging{cursor:grabbing}
  .pi-map{position:relative;flex:0 0 auto;background:url(/uploads/_assets/wm/grass.jpg) center/620px repeat;clip-path:polygon(4% 12%,12% 5%,25% 3%,39% 5%,53% 2%,68% 7%,82% 10%,94% 21%,98% 37%,96% 55%,99% 70%,91% 85%,77% 95%,62% 99%,46% 96%,30% 99%,16% 91%,6% 78%,2% 61%,4% 44%,1% 28%);filter:drop-shadow(0 0 3px rgba(255,250,225,.95)) drop-shadow(0 0 10px rgba(255,244,205,.6)) drop-shadow(0 14px 20px rgba(12,50,75,.45))}
  .pi-night .pi-map{filter:brightness(.72) saturate(.85) drop-shadow(0 0 8px rgba(150,175,235,.5)) drop-shadow(0 14px 20px rgba(0,5,30,.6))}
  .pi-grid{position:absolute;top:0;left:0;right:0;bottom:0;display:grid}
  .pi-cell2{position:relative;border:0;padding:0;background:transparent;box-shadow:inset -1px -1px 0 rgba(255,255,255,.06),inset 1px 1px 0 rgba(30,60,20,.045);font:inherit;color:#5b4636;cursor:pointer}
  .pi-cell2.grass{background:rgba(126,177,91,.1)}.pi-cell2.sand{background:rgba(232,213,157,.28)}.pi-cell2:disabled{opacity:1;cursor:default}
  .pi-cell2 span{display:block;font-size:22px;filter:drop-shadow(0 2px 2px rgba(60,40,10,.25))}.pi-cell2 small{display:block;font-size:9px;font-weight:900;text-shadow:0 1px #fff}
  .pi-cell2 i{font-style:normal;opacity:.58;font-size:14px}.pi-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}.pi-bld,.pi-decor2{position:absolute;display:flex;align-items:center;justify-content:center;pointer-events:none}.pi-bld{flex-direction:column;background:rgba(255,252,243,.18);border-radius:12px}.pi-bld span{font-size:clamp(30px,9vw,58px);line-height:1;filter:drop-shadow(0 3px 3px rgba(60,40,10,.28))}.pi-bld b{font-size:10px;color:#493629;background:rgba(255,252,243,.88);padding:2px 7px;border-radius:999px;white-space:nowrap;box-shadow:0 2px 5px rgba(60,40,10,.18)}.pi-decor2{font-size:clamp(20px,6vw,36px);filter:drop-shadow(0 2px 3px rgba(60,40,10,.3))}
  .pi-res{position:absolute;display:flex;flex-direction:column;align-items:center;gap:1px;border:0;background:rgba(255,252,243,.72);border-radius:14px;padding:3px 6px 2px;cursor:pointer;z-index:3;box-shadow:0 2px 6px rgba(60,40,10,.2);pointer-events:auto;animation:piResBob 2.6s ease-in-out infinite;transition:left .9s ease,top .9s ease}
  .pi-res .pi-res-em{font-size:clamp(20px,6vw,34px);line-height:1;filter:drop-shadow(0 2px 2px rgba(60,40,10,.25))}
  .pi-res .pi-ava{width:clamp(26px,7vw,38px);height:clamp(26px,7vw,38px);object-fit:cover;border-radius:50%;border:2px solid rgba(255,255,255,.9);box-shadow:0 2px 6px rgba(60,40,10,.3);background:#fdf6e6}
  .pi-res small{font-size:9px;font-weight:900;color:#493629;white-space:nowrap;text-shadow:0 1px #fff}
  .pi-res i{font-style:normal;font-size:9px;color:#6b5335}
  .pi-res.pi-owner{animation:none;background:rgba(255,252,243,.5)}
  .pi-res.pi-yiyi{background:rgba(255,243,250,.9);box-shadow:0 0 0 1.5px #e7a6d0,0 2px 8px rgba(160,106,157,.35)}
  .pi-res:nth-child(2n){animation-delay:.9s}.pi-res:nth-child(3n){animation-delay:1.6s}
  @keyframes piResBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
  @media (prefers-reduced-motion: reduce){.pi-res{animation:none}.pi-air i{display:none}.pi-decor2{animation:none}}
  /* 居民气泡：循环淡入淡出，ambient 换文本时重播动画 */
  .pi-res .pi-bubble{position:absolute;top:-20px;left:50%;transform:translateX(-50%);background:#fffdf4;color:#6b5335;font-size:9px;font-weight:700;white-space:nowrap;padding:2px 8px;border-radius:999px;box-shadow:0 1px 4px rgba(60,40,10,.22);pointer-events:none;max-width:120px;overflow:hidden;text-overflow:ellipsis;opacity:0;animation:piBubble 9s ease-in-out infinite;z-index:4}
  @keyframes piBubble{0%,8%{opacity:0}14%,64%{opacity:1}72%,100%{opacity:0}}
  /* 居民小屋 */
  .pi-cottage{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;pointer-events:auto;z-index:2;background:rgba(255,252,243,.35);border-radius:12px;box-shadow:inset 0 0 0 2px rgba(255,252,243,.55);filter:drop-shadow(0 2px 4px rgba(60,40,10,.25))}
  .pi-cottage span{font-size:clamp(22px,6vw,40px);line-height:1;filter:drop-shadow(0 2px 3px rgba(60,40,10,.3))}
  .pi-cottage b{font-size:9px;color:#493629;background:rgba(255,252,243,.9);padding:1px 6px;border-radius:999px;box-shadow:0 1px 3px rgba(60,40,10,.18)}
  .pi-resident-current{display:flex;gap:6px;flex-wrap:wrap;padding:3px 0 8px;border-bottom:1px solid #eee2c9}.pi-resident-current span{background:#f6f0df;border-radius:999px;padding:3px 7px;font-size:11px}.pi-resident-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-bottom:1px solid #eee2c9}.pi-resident-meta{flex:1;font-size:12px;line-height:1.6}.pi-gate{display:inline-block;margin:2px 3px 0 0;font-size:10px}.pi-gate.ok{color:#2e7d32}.pi-gate.bad{color:#b3543f}
  .pi-air{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden}.pi-air i{position:absolute;font-style:normal;font-size:30px;opacity:.48;animation:piDrift 38s linear infinite}.pi-air i:nth-child(1){top:22%;left:-5%}.pi-air i:nth-child(2){top:43%;left:24%;animation-duration:52s}.pi-air i:nth-child(3){top:12%;left:63%;animation-duration:44s}.pi-air b{position:absolute;top:calc(70px + env(safe-area-inset-top,0px));right:16px;font-size:30px;filter:drop-shadow(0 0 12px rgba(255,240,180,.9))}
  .pi-night .pi-air i{display:none}.pi-night .pi-air b{filter:drop-shadow(0 0 12px rgba(200,220,255,.85))}
  @keyframes piDrift{from{transform:translateX(0)}to{transform:translateX(115vw)}}
  .pi-hud{position:absolute;top:0;left:0;right:0;z-index:4;display:flex;align-items:center;gap:8px;padding:calc(10px + env(safe-area-inset-top,0px)) 12px 0;pointer-events:none}.pi-hud>*{pointer-events:auto}.pi-back{background:rgba(255,252,243,.88);color:#6b5335;text-shadow:none;border:0;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:900;white-space:nowrap;box-shadow:0 2px 6px rgba(60,40,10,.22);font-size:13px;cursor:pointer;width:88px;text-align:center}
  /* v0816-tab6 顶部招牌：左缘在返回按钮右侧、右缘贴屏幕边，内容居中，永远不溢出；岛名过长折行完整显示 */
  .pi-brand{position:absolute;top:calc(10px + env(safe-area-inset-top,0px));left:106px;max-width:calc(100vw - 130px);z-index:5;display:flex;align-items:center;gap:6px;width:max-content;background:linear-gradient(135deg,rgba(255,252,243,.95),rgba(255,240,205,.92));border:1px solid rgba(200,160,90,.45);border-radius:16px;padding:4px 10px;box-shadow:0 3px 12px rgba(60,40,10,.26),inset 0 1px 0 rgba(255,255,255,.85);cursor:pointer}
  .pi-brand:active{transform:scale(.98)}
  .pi-brand.ready{box-shadow:0 0 0 3px rgba(255,157,61,.55),0 3px 12px rgba(200,80,20,.35)}
  .pi-brand-name{flex:0 1 auto;min-width:0;font-size:14px;font-weight:900;letter-spacing:.5px;color:#7a4a08;text-shadow:0 1px 0 rgba(255,255,255,.65);line-height:1.25;text-align:center;white-space:normal}
  .pi-brand .pi-lvwrap{flex:0 0 auto}
  .pi-brand .pi-lvbadge{padding:3px 8px;font-size:10px}
  .pi-mode{position:absolute;top:calc(10px + env(safe-area-inset-top,0px) + 48px);left:50%;transform:translateX(-50%);z-index:4;background:rgba(255,252,243,.86);color:#6b5335;border-radius:999px;padding:5px 11px;font-size:10px;font-weight:900;white-space:nowrap;box-shadow:0 2px 6px rgba(60,40,10,.18);cursor:pointer}
  .pi-mode .pi-avg{border-left:1px solid rgba(107,83,53,.3);padding-left:8px;margin-left:6px;white-space:nowrap}
  .pi-mode .pi-avg.pi-yiyi{color:#a06a9d}
  .pi-mode .pi-avg.pi-yiyi.here{color:#c96f4a}
  /* v0816-tab17 导航抽屉：右侧收起为「🧭 去哪儿」把手，点开展开 返回/我的岛/TA的岛/大世界 */
  .pi-switch{position:absolute;right:12px;top:80%;transform:translateY(-50%);z-index:6;display:flex;flex-direction:column;align-items:flex-end;gap:6px;pointer-events:none}
  .pi-nav-handle{pointer-events:auto;border:0;border-radius:999px;background:linear-gradient(135deg,#ff9d3d,#e5484d);color:#fff;padding:9px 14px;font-size:12px;font-weight:900;box-shadow:0 2px 8px rgba(200,60,40,.4);cursor:pointer;white-space:nowrap;text-align:center}
  .pi-nav-handle:active{transform:scale(.96)}
  .pi-nav-list{display:none;flex-direction:column;gap:6px;pointer-events:auto}
  .pi-switch.open .pi-nav-list{display:flex;animation:piNavIn .18s ease}
  @keyframes piNavIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
  .pi-nav-h-open{display:none}
  .pi-switch.open .pi-nav-h-closed{display:none}
  .pi-switch.open .pi-nav-h-open{display:inline}
  .pi-nav-mask{position:absolute;top:0;left:0;right:0;bottom:0;z-index:5;display:none}
  .pi-nav-mask.on{display:block;background:rgba(20,14,8,.18)}
  .pi-switch-btn{pointer-events:auto;border:0;border-radius:999px;background:rgba(255,252,243,.88);color:#6b5335;padding:7px 10px;font-size:13px;font-weight:900;box-shadow:0 2px 6px rgba(60,40,10,.22);cursor:pointer;white-space:nowrap;text-align:center;line-height:1.4;width:88px}.pi-switch-btn.on{background:#c96f4a;color:#fff}
  .pi-toolbar{position:absolute;left:10px;right:10px;bottom:calc(52px + env(safe-area-inset-bottom,0px));z-index:5;display:flex;gap:6px;justify-content:center;align-items:flex-end}.pi-tb{border:0;border-radius:14px;background:rgba(255,252,243,.92);color:#6b5335;padding:7px 10px 6px;font-size:10px;font-weight:900;box-shadow:0 2px 7px rgba(60,40,10,.22);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:1px;min-width:50px;flex:0 1 auto}.pi-tb b{font-size:19px;line-height:1;filter:drop-shadow(0 1px 2px rgba(60,40,10,.2))}.pi-tb span{white-space:nowrap}.pi-tb:active{transform:translateY(2px)}.pi-tb.on{background:#ffe0a3;color:#a34b1f;box-shadow:0 2px 7px rgba(60,40,10,.22),inset 0 0 0 2px rgba(229,72,77,.6)}.pi-movable{pointer-events:auto;outline:2px dashed rgba(229,72,77,.6);outline-offset:1px;border-radius:8px}.pi-moving{outline-style:solid;outline-color:#e5484d;background:rgba(255,255,255,.28)}.pi-clickable{pointer-events:auto;cursor:pointer}.pi-clickable:active{filter:brightness(.9)}.pi-duty{position:absolute;top:-8px;right:-6px;font-size:14px;font-style:normal;z-index:2;filter:drop-shadow(0 1px 2px rgba(60,40,10,.3))}.pi-lv{position:absolute;top:-7px;left:-6px;font-style:normal;background:rgba(229,72,77,.92);color:#fff;border-radius:999px;font-size:9px;font-weight:900;padding:1px 5px;z-index:2;box-shadow:0 1px 3px rgba(60,40,10,.25)}
  .pi-tip{position:absolute;left:50%;bottom:calc(150px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:4;background:rgba(42,37,32,.78);color:#ffe9b8;border-radius:999px;padding:5px 11px;font-size:10px;font-weight:800;white-space:nowrap;max-width:90vw;overflow:hidden;text-overflow:ellipsis}
.pi-del{position:absolute;left:50%;bottom:calc(134px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:4;border:0;border-radius:999px;background:#e5484d;color:#fff;padding:7px 16px;font-size:12px;font-weight:900;box-shadow:0 2px 7px rgba(60,40,10,.25);cursor:pointer}
.pi-del:active{transform:translateX(-50%) translateY(2px)}
  /* 农场/小店 狼兔装扮看板：轻微上下浮动动效（纯 CSS，webview 安全） */
  @keyframes cgBobA{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
  .cgBob{animation:cgBobA 2.8s ease-in-out infinite}
  .cgBob2{animation:cgBobA 2.8s ease-in-out 1s infinite}
  .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px}
  .datebar{display:flex;align-items:center;gap:8px;background:#fff;border-radius:10px;padding:7px 10px;margin-bottom:10px;box-shadow:0 1px 3px rgba(0,0,0,.06);font-size:13px;color:var(--muted)}
  .datebar input{border:1px solid #ddd;border-radius:8px;padding:3px 6px;font-size:12px;font-family:inherit}
  .datebar .dbback{margin-left:auto;color:var(--rabbit);cursor:pointer;font-weight:700}
  .gcell{background:var(--card);border-radius:14px;padding:12px 8px;text-align:center;box-shadow:0 1px 6px rgba(0,0,0,.05);position:relative}
  .gcell .ic{font-size:30px;line-height:1.1;height:33px;display:flex;align-items:center;justify-content:center}
  .gcell .ic .game-icon-img{display:block;width:36px;height:36px;object-fit:contain}
  .gcell .nm{font-size:12px;font-weight:600;margin-top:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .gcell .rw{font-size:10px;color:var(--gold);margin-top:3px}
  .gcell .dot{position:absolute;top:7px;right:8px;width:7px;height:7px;border-radius:50%}
  .gcell.flag{background:linear-gradient(135deg,#2a2f45,#4a3550)}
  .gcell.flag .nm{color:#fff}
  /* 🌾 农场 */
  .fmGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
  .fmPlot{background:linear-gradient(160deg,#a9825e,#8a6647);border-radius:14px;padding:10px 6px;text-align:center;position:relative;min-height:96px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.12),0 1px 5px rgba(0,0,0,.08);display:flex;flex-direction:column;align-items:center;justify-content:center}
  .fmPlot .fmEm{font-size:30px;line-height:1.1}
  .fmPlot .fmNm{font-size:11px;color:#fff;font-weight:600;margin-top:3px;text-shadow:0 1px 2px rgba(0,0,0,.3)}
  .fmPlot .fmTm{font-size:10px;color:#ffe9c9;margin-top:2px}
  .fmBar{width:82%;height:6px;background:rgba(0,0,0,.25);border-radius:3px;margin-top:5px;overflow:hidden}
  .fmBar i{display:block;height:100%;background:linear-gradient(90deg,#8be08b,#ffd24d);border-radius:3px}
  .fmWaterBtn{margin-top:5px;border:0;border-radius:9px;padding:3px 10px;font-size:11px;font-weight:700;background:#5aa9e6;color:#fff}
  .fmDrop{position:absolute;top:6px;right:7px;font-size:12px}
  .fmFertMk{position:absolute;top:6px;left:7px;font-size:12px}
  .fmFertBtn{border:0;border-radius:9px;padding:3px 8px;font-size:11px;font-weight:700;background:#a5793a;color:#fff}
  .fmCoop{position:absolute;bottom:5px;right:6px;font-size:13px;filter:drop-shadow(0 0 5px rgba(255,105,150,.95));animation:fmBounce 1.4s ease-in-out infinite}
  .fmPlot.mature{background:linear-gradient(160deg,#c99b4a,#a97c33);box-shadow:0 0 12px rgba(255,196,66,.75),inset 0 -4px 0 rgba(0,0,0,.12);cursor:pointer}
  .fmPlot.mature .fmEm{font-size:38px;animation:fmBounce 1s ease-in-out infinite}
  @keyframes fmBounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
  @keyframes fmFall{to{transform:translateY(115vh) rotate(360deg);opacity:.85}}
  .fmPlot.emptyP{background:linear-gradient(160deg,#b7936f,#997456);cursor:pointer}
  .fmPlot.emptyP .fmEm{opacity:.85}
  .fmPlot.expand{background:#f0ead9;border:2px dashed #c9b98a;box-shadow:none;cursor:pointer}
  .fmPlot.expand .fmNm,.fmPlot.expand .fmTm{color:#a5822f;text-shadow:none}
  .fmGrow{font-size:24px}
  /* 🏪 奶茶小店 */
  .tsRow{display:flex;gap:10px;overflow-x:auto;padding:4px 2px 10px;-webkit-overflow-scrolling:touch}
  .tsCard{flex:0 0 104px;background:var(--card);border:2px solid #eee;border-radius:14px;padding:10px 6px;text-align:center;position:relative;box-shadow:0 1px 5px rgba(0,0,0,.05)}
  .tsCard.on{border-color:var(--gold);background:#fff8ec}
  .tsCard.rare{border-color:#e8b64c;box-shadow:0 0 10px rgba(232,182,76,.5)}
  .tsCard .tsEm{font-size:30px;line-height:1.1}
  .tsCard .tsNm{font-size:12px;font-weight:700;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tsCard .tsPr{font-size:10px;color:var(--gold);margin-top:2px}
  .tsBar{width:100%;height:10px;background:#f0e8d8;border-radius:5px;overflow:hidden;margin:12px 0 5px}
  .tsBar i{display:block;height:100%;background:linear-gradient(90deg,#e8b64c,#d98a4a);border-radius:5px;transition:width .6s ease}
  /* 🏆 家庭邻里赛季榜 + 小店经营 (v0705-46) */
  .lbRow{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:12px;margin-bottom:6px;background:#faf8f3}
  .lbRow.me{background:linear-gradient(90deg,#fff3d6,#fff9ec);box-shadow:0 0 0 1.5px var(--gold)}
  .lbAva{width:40px;height:40px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#f3eee2;box-shadow:0 1px 4px rgba(0,0,0,.12)}
  .lbAvaFb{display:none;width:40px;height:40px;border-radius:50%;background:#f3eee2;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}
  @keyframes lbSlideUp{from{transform:translateY(46px);opacity:0}to{transform:translateY(0);opacity:1}}
  @keyframes lbPop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.06);opacity:1}100%{transform:scale(1);opacity:1}}
  @keyframes tsBubIn{from{transform:translateX(-14px);opacity:0}to{transform:translateX(0);opacity:1}}
  /* 💥 §8 上瘾层：爆点动画 / 宿敌 / 手册 (v0705-47) */
  #fxLayer{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10500;pointer-events:none;overflow:hidden}
  .fxBig{position:absolute;left:50%;top:38%;transform:translate(-50%,-50%);font-size:34px;font-weight:900;white-space:nowrap;text-shadow:0 2px 10px rgba(0,0,0,.25);animation:fxBigIn 1.5s cubic-bezier(.2,1.2,.4,1) both}
  .fxBig.gold{color:#f3b93c;text-shadow:0 0 14px rgba(243,185,60,.85),0 2px 6px rgba(120,80,0,.4)}
  .fxBig.red{color:#ff5a4e;text-shadow:0 0 14px rgba(255,90,78,.8),0 2px 6px rgba(120,20,0,.4)}
  @keyframes fxBigIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}16%{opacity:1;transform:translate(-50%,-50%) scale(1.28)}30%{transform:translate(-50%,-50%) scale(1)}78%{opacity:1;transform:translate(-50%,-56%) scale(1)}100%{opacity:0;transform:translate(-50%,-70%) scale(.92)}}
  .fxRing{position:absolute;left:50%;top:38%;width:20px;height:20px;border-radius:50%;transform:translate(-50%,-50%);border:3px solid rgba(243,185,60,.9);animation:fxRing .9s ease-out both}
  @keyframes fxRing{0%{opacity:.95;transform:translate(-50%,-50%) scale(.4)}100%{opacity:0;transform:translate(-50%,-50%) scale(9)}}
  .fxPart{position:absolute;left:50%;top:38%;font-size:18px;transform:translate(-50%,-50%);animation:fxPart 1.15s cubic-bezier(.15,.85,.45,1) both}
  @keyframes fxPart{0%{opacity:1;transform:translate(-50%,-50%) scale(.5)}60%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.25) rotate(300deg)}}
  .fxFlash{position:absolute;top:0;left:0;right:0;bottom:0;background:radial-gradient(circle at 50% 38%,rgba(255,224,130,.5),rgba(255,224,130,0) 62%);animation:fxFlash .8s ease-out both}
  @keyframes fxFlash{0%{opacity:0}22%{opacity:1}100%{opacity:0}}
  #msnLayer{position:fixed;left:0;right:0;top:58px;z-index:10600;display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none;padding:0 16px}
  .msnCard{background:linear-gradient(135deg,#3d3325,#5a4a2e);color:#ffe9b8;border-radius:14px;padding:9px 16px;font-size:13px;font-weight:800;box-shadow:0 6px 20px rgba(0,0,0,.35),0 0 0 1.5px rgba(243,185,60,.55);animation:msnIn 2.6s ease both;max-width:340px}
  @keyframes msnIn{0%{opacity:0;transform:translateY(-18px) scale(.85)}10%{opacity:1;transform:translateY(0) scale(1.04)}16%{transform:translateY(0) scale(1)}84%{opacity:1;transform:translateY(0)}100%{opacity:0;transform:translateY(-14px) scale(.92)}}
  .lbRow.nemesis{background:linear-gradient(90deg,#fdeceb,#fdf5f4);box-shadow:0 0 0 1.5px #e08a7e}
  .lbRow.nemesis.hot{animation:nemPulse 1.6s ease infinite}
  @keyframes nemPulse{0%,100%{box-shadow:0 0 0 1.5px #e08a7e}50%{box-shadow:0 0 0 3px rgba(224,90,70,.7)}}
  @keyframes fxNumPop{0%{transform:scale(.3);opacity:0}55%{transform:scale(1.35)}100%{transform:scale(1);opacity:1}}
  .tsCritBan{background:linear-gradient(90deg,#ff7a5c,#f3b93c,#ff7a5c);background-size:200% 100%;color:#fff;border-radius:12px;padding:9px 12px;font-size:15px;font-weight:900;text-align:center;margin-top:10px;text-shadow:0 1px 3px rgba(120,30,0,.4);animation:critBan 1.4s linear infinite,lbPop .4s ease both}
  @keyframes critBan{0%{background-position:0 0}100%{background-position:200% 0}}
  .tsVipBub{background:linear-gradient(135deg,#fff3d0,#ffe9ae)!important;box-shadow:0 0 0 2px #e8b64c,0 0 12px rgba(232,182,76,.55);animation:vipGlow 1.5s ease infinite}
  @keyframes vipGlow{0%,100%{box-shadow:0 0 0 2px #e8b64c,0 0 8px rgba(232,182,76,.4)}50%{box-shadow:0 0 0 2px #e8b64c,0 0 18px rgba(232,182,76,.85)}}
  .hbBarW{height:9px;background:#f0e8d8;border-radius:5px;overflow:hidden;flex:1}
  .hbBarW i{display:block;height:100%;background:linear-gradient(90deg,#e8b64c,#d98a4a);border-radius:5px;transition:width .5s ease}
  .hbMsn{display:flex;align-items:center;gap:9px;padding:9px 0;border-bottom:1px solid #f2ede3}
  .hbMsn.done{opacity:.62}
  .hbTier{display:flex;align-items:center;gap:10px;padding:10px 11px;border-radius:13px;margin-bottom:7px;background:#faf8f3}
  .hbTier.reached{background:linear-gradient(90deg,#fff3d6,#fff9ec);box-shadow:0 0 0 1.5px #f0d9a0}
  .hbTier.can{box-shadow:0 0 0 2px var(--gold);animation:hbCanPulse 1.6s ease infinite}
  @keyframes hbCanPulse{0%,100%{box-shadow:0 0 0 2px var(--gold)}50%{box-shadow:0 0 0 4px rgba(200,162,74,.45)}}
  @keyframes hbBoxShake{0%,100%{transform:rotate(0)}15%{transform:rotate(-14deg) scale(1.05)}30%{transform:rotate(12deg)}45%{transform:rotate(-10deg) scale(1.1)}60%{transform:rotate(8deg)}75%{transform:rotate(-5deg) scale(1.15)}90%{transform:rotate(3deg)}}
  @keyframes hbBoxJump{0%{transform:scale(.4);opacity:0}40%{transform:scale(1.4)}70%{transform:scale(.95)}100%{transform:scale(1);opacity:1}}
  /* 💥 §8 锦上添花层 v0705-48：冲刺横幅 / COMBO / 甜蜜连线 / 结算揭晓 / 家园王座 */
  .spBan{display:flex;align-items:center;gap:9px;border-radius:13px;padding:9px 12px;margin-bottom:8px;color:#fff;font-weight:900;background:linear-gradient(90deg,#e0453a,#f3b93c,#e0453a);background-size:200% 100%;animation:critBan 1.6s linear infinite,spPulse 1.4s ease infinite;text-shadow:0 1px 3px rgba(120,20,0,.4)}
/* 🎂 200天纪念首页横幅 */
.anni-banner{display:flex;align-items:center;justify-content:center;gap:6px;border-radius:14px;padding:11px 14px;margin-bottom:10px;color:#fff;font-size:13.5px;font-weight:800;text-align:center;cursor:pointer;background:linear-gradient(90deg,#f78da7,#f9b8d0,#f78da7,#fbcfe8,#f78da7);background-size:300% 100%;animation:anniBanShine 2.4s linear infinite;text-shadow:0 1px 3px rgba(160,40,70,.35);box-shadow:0 3px 12px rgba(240,120,160,.35)}
.anni-banner b{font-size:18px;color:#fff;text-shadow:0 2px 6px rgba(200,60,90,.5)}
@keyframes anniBanShine{0%{background-position:0 0}100%{background-position:300% 0}}
  @keyframes spPulse{0%,100%{box-shadow:0 3px 12px rgba(224,69,58,.35)}50%{box-shadow:0 3px 22px rgba(243,185,60,.85)}}
  .cbBadge{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(135deg,#ff7a5c,#e0453a);color:#fff;border-radius:11px;padding:4px 10px;font-size:12px;font-weight:900;box-shadow:0 2px 8px rgba(224,69,58,.4);animation:cbPop .5s cubic-bezier(.2,1.5,.4,1) both}
  .cbBadge.still{animation:none}
  @keyframes cbPop{0%{transform:scale(.5);opacity:0}70%{transform:scale(1.22)}100%{transform:scale(1);opacity:1}}
  .cpChip{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(135deg,#fdeef5,#fde4ee);color:#c76a92;border-radius:11px;padding:4px 10px;font-size:12px;font-weight:800;animation:cpGlow 2s ease infinite}
  @keyframes cpGlow{0%,100%{box-shadow:0 0 0 1px #f4cfe0}50%{box-shadow:0 0 0 1px #f4cfe0,0 0 12px rgba(224,138,166,.6)}}
  #rvOverlay{position:fixed;top:0;left:0;right:0;bottom:0;z-index:10400;background:rgba(24,16,8,.9);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 20px;overflow-y:auto}
  .rvTitle{font-size:21px;font-weight:900;color:#ffe9b8;text-shadow:0 0 16px rgba(243,185,60,.7);margin-bottom:14px;animation:lbPop .5s ease both;white-space:nowrap}
  .rvRow{display:flex;align-items:center;gap:10px;background:linear-gradient(135deg,#fffdf6,#fff3d6);border-radius:13px;padding:9px 13px;margin-bottom:7px;opacity:0;transform:rotateX(90deg)}
  .rvRow.show{animation:rvFlip .55s cubic-bezier(.2,1.3,.4,1) both}
  @keyframes rvFlip{0%{opacity:0;transform:rotateX(90deg) scale(.8)}60%{opacity:1;transform:rotateX(-14deg) scale(1.05)}100%{opacity:1;transform:rotateX(0) scale(1)}}
  .rvRow.champ{background:linear-gradient(135deg,#ffe9ae,#ffd76e);box-shadow:0 0 0 2px #e8b64c,0 0 26px rgba(243,185,60,.85)}
  .rvCrown{font-size:19px;font-weight:900;color:#ffd76e;text-shadow:0 0 18px rgba(243,185,60,.95);margin-top:10px;opacity:0;text-align:center;line-height:1.5}
  .rvCrown.show{animation:rvCrownIn .8s cubic-bezier(.2,1.4,.4,1) both}
  @keyframes rvCrownIn{0%{opacity:0;transform:scale(.3) translateY(16px)}55%{opacity:1;transform:scale(1.28)}100%{opacity:1;transform:scale(1) translateY(0)}}
  .hm-throne{position:absolute;left:8px;bottom:8px;display:flex;flex-direction:column;align-items:flex-start;gap:5px;z-index:5;pointer-events:none}
  .hm-throne span{background:linear-gradient(90deg,rgba(61,51,37,.92),rgba(90,74,46,.88));color:#ffe9b8;border-radius:11px;padding:4px 9px;font-size:10.5px;font-weight:800;box-shadow:0 2px 8px rgba(0,0,0,.35),0 0 0 1px rgba(243,185,60,.5);white-space:nowrap;animation:lbPop .5s ease both}
  /* 🏘️ §11 邻里串门 v0705-49 */
  .scDot{display:inline-block;width:10px;height:10px;border-radius:50%;background:#e0453a;flex-shrink:0;animation:scDotPulse 1.4s ease infinite}
  @keyframes scDotPulse{0%,100%{box-shadow:0 0 0 0 rgba(224,69,58,.55)}50%{box-shadow:0 0 0 5px rgba(224,69,58,0)}}
  .scAva{width:46px;height:46px;border-radius:12px;object-fit:cover;flex-shrink:0;background:#f3eee2;box-shadow:0 1px 4px rgba(0,0,0,.12)}
  .scAvaFb{display:none;width:46px;height:46px;border-radius:12px;background:#f3eee2;align-items:center;justify-content:center;font-size:26px;flex-shrink:0}
  .scQuip{position:relative;margin-top:7px;background:#3d3325;color:#ffe9b8;border-radius:11px;padding:7px 11px;font-size:12px;font-weight:700;line-height:1.45;animation:scQuipIn .45s cubic-bezier(.2,1.4,.4,1) both}
  .scQuip:before{content:'';position:absolute;top:-6px;left:22px;border:6px solid transparent;border-bottom-color:#3d3325;border-top:0}
  @keyframes scQuipIn{0%{opacity:0;transform:translateY(8px) scale(.72)}60%{opacity:1;transform:translateY(-2px) scale(1.06)}100%{opacity:1;transform:translateY(0) scale(1)}}
  .scHit{animation:scHitK .5s ease both}
  @keyframes scHitK{0%,100%{transform:translate(0,0)}20%{transform:translate(-5px,2px)}40%{transform:translate(5px,-2px)}60%{transform:translate(-3px,-1px)}80%{transform:translate(3px,1px)}}
  .split{display:flex;gap:10px;align-items:flex-start}
  /* 游戏分栏 · 左侧分类（质感版 v3） */
  .cats{width:80px;flex-shrink:0;background:linear-gradient(170deg,rgba(255,255,255,.94) 0%,rgba(251,249,247,.9) 100%);backdrop-filter:blur(28px) saturate(1.8);-webkit-backdrop-filter:blur(28px) saturate(1.8);border-radius:22px;padding:10px 6px;box-shadow:0 6px 28px rgba(91,107,140,.11),0 1px 3px rgba(0,0,0,.05),inset 0 1px 0 rgba(255,255,255,.98),inset 0 0 0 1px rgba(91,107,140,.09);position:sticky;top:10px}
  .cats button{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;border:0;background:transparent;color:#b3b2c4;border-radius:15px;padding:11px 2px 10px;font-size:10px;margin-bottom:2px;font-weight:500;line-height:1.25;position:relative;transition:color .18s ease,background .18s ease,box-shadow .18s ease;cursor:pointer;letter-spacing:.45px;-webkit-tap-highlight-color:transparent}
  .cats button:last-child{margin-bottom:0}
  .cats button .cIcon{font-size:22px;line-height:1;display:block;filter:saturate(.45) brightness(.88);transition:filter .18s ease,transform .22s cubic-bezier(.34,1.46,.64,1)}
  .cats button:active{transform:scale(.94)}
  .cats button:hover{color:#7a7a95;background:rgba(91,107,140,.05)}
  .cats button:hover .cIcon{filter:saturate(.75) brightness(.95)}
  .cats button.on{color:#3c4569;font-weight:700;background:linear-gradient(148deg,rgba(91,107,140,.11) 0%,rgba(224,138,166,.07) 100%);box-shadow:0 3px 14px rgba(91,107,140,.14),inset 0 1px 0 rgba(255,255,255,.85),inset 0 0 0 1px rgba(91,107,140,.11)}
  .cats button.on .cIcon{filter:none;transform:scale(1.12)}
  .cats button.on::before{content:'';position:absolute;left:2px;top:20%;bottom:20%;width:3px;border-radius:0 4px 4px 0;background:linear-gradient(180deg,var(--wolf) 0%,var(--rabbit) 100%);box-shadow:0 0 8px rgba(224,138,166,.55),0 0 18px rgba(91,107,140,.18)}
  .cats button.on::after{content:'';position:absolute;top:8px;right:8px;width:5px;height:5px;border-radius:50%;background:radial-gradient(circle,var(--rabbit),var(--wolf));opacity:.85;box-shadow:0 0 5px rgba(224,138,166,.8)}
  .catgames{flex:1;min-width:0}
  /* 治国志 */
  .gz-hero{background:linear-gradient(135deg,#2a2f45,#4a3550);color:#fff;border-radius:16px;padding:16px}
  .gz-hero .era{font-size:13px;opacity:.85}
  .gz-hero .rating{font-size:22px;font-weight:800;margin:2px 0 12px}
  .statline{display:flex;align-items:center;gap:8px;margin:7px 0;font-size:13px}
  .statline .lab{width:34px;opacity:.9}
  .bar{flex:1;height:9px;background:rgba(255,255,255,.18);border-radius:6px;overflow:hidden}
  .bar > i{display:block;height:100%;border-radius:6px}
  .statline .v{width:28px;text-align:right;font-weight:600}
  .advisor{background:#fff;border-radius:14px;padding:12px;margin:10px 0;display:flex;gap:10px;align-items:flex-start}
  .advisor .av{font-size:26px}
  .decbox{width:100%;border:1px solid #e3e3e8;border-radius:12px;padding:12px;font-size:15px;min-height:64px;font-family:inherit}
  .deltachip{display:inline-block;border-radius:8px;padding:2px 8px;font-size:12px;margin:3px 4px 0 0;font-weight:600}
  /* 治国志 Tab 切换 */
  .gztabs{display:flex;gap:6px;margin-bottom:14px}
  .gztab{flex:1;border:1.5px solid #e3e3e8;background:#fff;border-radius:12px;padding:10px 0;font-size:14px;font-weight:600;cursor:pointer;text-align:center;transition:all .15s}
  .gztab-on{background:var(--wolf);color:#fff;border-color:var(--wolf)}
  /* 治国志 话本列表 */
  .storycard{border:1.5px solid #e8e2d8;background:#fffbf5;border-radius:14px;padding:14px;margin-bottom:10px;cursor:pointer;transition:all .15s}
  .storycard:active{background:#fdf5e6}
  .storycard .stgenretag{display:inline-block;padding:2px 8px;border-radius:8px;font-size:11px;font-weight:600}
  /* 话本大纲 */
  .outline-ch{padding:10px 14px;margin:6px 0;background:#faf8f3;border-left:3px solid var(--wolf);border-radius:0 10px 10px 0}
  .outline-ch.cur{background:#fef5ee;border-left-color:var(--gold)}
  .outline-ch .beats{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
  .outline-ch .beat{font-size:11px;padding:2px 8px;background:#fff;border:1px solid #e8e2d8;border-radius:8px}
  .outline-ch .beat.done{background:#e6f7ee;border-color:#b7dcc5;color:#2e9e6b}
  .outline-ch .beat.cur{background:#fff4e6;border-color:#f0d49a;color:#c07820;font-weight:700}
  /* 话本段落 */
  .storyseg{margin:6px 0;padding:12px 14px;border-radius:12px;line-height:1.6}
  .storyseg.wolf{background:#f7f4ee;border-left:3px solid var(--wolf)}
  .storyseg.rabbit{background:#fdf3f6;border-left:3px solid var(--rabbit)}
  .storyseg.system{background:#f4f7fa;border-left:3px solid #aab}
  .storyseg .bridge{margin-top:8px;padding-top:8px;border-top:1px dashed #e0dcd4;font-size:13px;color:#776;font-style:italic}
  /* 写作建议 */
  .suggtip{padding:8px 12px;margin:4px 0;background:#fffef7;border:1px dashed #e8dca0;border-radius:10px;font-size:13px;cursor:pointer}
  .suggtip:hover{background:#fffde8}
  .suggtip .suggnum{display:inline-block;width:20px;height:20px;line-height:20px;text-align:center;background:var(--gold);color:#fff;border-radius:50%;font-size:11px;font-weight:700;margin-right:6px}
  /* 沉浸式互动概览 */
  #immersive{position:fixed;top:0;left:0;right:0;bottom:0;z-index:30;display:none;flex-direction:column;color:#fff;background:linear-gradient(160deg,#3b2547 0%,#5b3a6f 35%,#8b4f7a 70%,#d49aaa 100%);overflow-y:auto;padding:18px 16px 40px}
  #immersive .imclose{position:fixed;top:14px;right:14px;background:rgba(0,0,0,.32);border:0;color:#fff;width:32px;height:32px;border-radius:50%;font-size:16px}
  #immersive h2{color:rgba(255,255,255,.85);margin-top:18px;font-size:13px;letter-spacing:1px;font-weight:600;text-transform:uppercase}
  #immersive .hero{text-align:center;padding:14px 0 2px}
  #immersive .hero .big{font-size:56px;font-weight:800;line-height:1.05;background:linear-gradient(135deg,#fff,#ffd9e4);-webkit-background-clip:text;background-clip:text;color:transparent}
  #immersive .hero .sub2{font-size:13px;opacity:.85;margin-top:6px}
  #immersive .imcard{background:rgba(255,255,255,.1);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.18);border-radius:14px;padding:13px 14px;margin-top:10px}
  #immersive .statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
  #immersive .stat{background:rgba(255,255,255,.12);border-radius:12px;padding:10px;text-align:center}
  #immersive .stat b{font-size:20px;display:block}
  #immersive .stat .lbl{font-size:10px;opacity:.85;margin-top:2px}
  #immersive .miles{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}
  #immersive .mile{flex:0 0 auto;background:rgba(255,255,255,.12);border-radius:12px;padding:10px 14px;min-width:110px;text-align:center}
  #immersive .mile b{font-size:18px;display:block}
  #immersive .mile .lbl{font-size:11px;opacity:.85;margin-top:2px}
  #immersive .photos{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
  #immersive .photos img{width:60px;height:60px;border-radius:8px;object-fit:cover}
  #immersive .moodcard{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid rgba(255,255,255,.12)}
  #immersive .moodcard img{width:46px;height:46px;border-radius:10px;object-fit:cover}
  #immersive .moodcard:last-child{border:0}
  /* 🌤️ 子页 sticky 副条：返回 + 标题 + 双方心情头像 */
  #subBar{display:none;background:#fff;border-bottom:1px solid #efeae4;padding:8px 12px;align-items:center;gap:10px;font-size:13px;position:sticky;top:0;z-index:5}
  #subBar.on{display:flex}
  #subBar .sbBack{color:var(--wolf);font-weight:600;font-size:14px;cursor:pointer;flex-shrink:0;padding:2px 4px;-webkit-tap-highlight-color:transparent}
  #subBar .ttl{font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;font-size:15px}
  #subBar .moods{display:flex;gap:6px;align-items:center;flex-shrink:0}
  #subBar .moods img{width:30px;height:30px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.14);cursor:pointer}
  #subBar .moods .miss{width:30px;height:30px;border-radius:50%;background:#f2efea;color:#bbb;display:flex;align-items:center;justify-content:center;font-size:14px;cursor:pointer}
  /* 📖 今日故事时间轴 */
  .tlTab{display:flex;gap:6px;margin:12px 0 8px}
  .tlTab button{flex:1;border:0;border-radius:10px;padding:7px;font-size:12px;background:#eee;color:#777;font-weight:600}
  .tlTab button.on{background:var(--rabbit);color:#fff}
  .tlItem{display:flex;gap:8px;align-items:flex-start;background:#fff;border-radius:12px;padding:10px 11px;margin-bottom:8px;box-shadow:0 1px 4px rgba(0,0,0,.04)}
  .tlItem.todo{border-left:3px solid var(--rabbit)}
  .tlItem.fyi{border-left:3px solid #cfd6e2}
  .tlItem.done,.tlItem.mine{opacity:.55}
  .tlTime{font-size:10px;color:var(--muted);min-width:32px;padding-top:2px;font-variant-numeric:tabular-nums}
  .tlMain{flex:1;min-width:0}
  .tlText{font-size:13.5px;font-weight:600;line-height:1.3}
  .tlPrev{font-size:11.5px;color:var(--muted);margin-top:2px;line-height:1.3;word-break:break-word}
  .tlBtn{align-self:center;font-size:11px;padding:5px 10px;border-radius:8px;border:0;font-weight:600;white-space:nowrap}
  .tlBtn.todo{background:var(--rabbit);color:#fff}
  .tlBtn.fyi{background:var(--wolf);color:#fff}
  .tlBtn.done,.tlBtn.mine{background:#ececec;color:#888}
  .toast{position:fixed;bottom:84px;left:50%;transform:translateX(-50%);background:#2a2a32;color:#fff;padding:9px 16px;border-radius:20px;font-size:13px;opacity:0;transition:.3s;pointer-events:none;z-index:10550}
  .toast.show{opacity:1}
  /* M05 Pet Character */
  .petScene{position:relative;width:160px;height:160px;margin:0 auto;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .15s}
  .petScene:active{transform:scale(.94)}
  .pEarW{position:absolute;left:20px;top:10px;width:0;height:0;border-left:14px solid transparent;border-right:14px solid transparent;border-bottom:32px solid #8a9cc0}
  .pEarWI{position:absolute;left:-8px;top:8px;width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:19px solid #5b6b8c}
  .pEarR{position:absolute;right:24px;top:-4px;width:19px;height:48px;background:#e08aa6;border-radius:9px 9px 3px 3px}
  .pEarRI{position:absolute;left:4px;top:5px;width:11px;height:33px;background:#f5c0d0;border-radius:5px 5px 2px 2px}
  .pBody{position:absolute;bottom:6px;left:50%;transform:translateX(-50%);width:104px;height:92px;background:linear-gradient(155deg,#fdfaf7,#f0ebe5);border-radius:50% 50% 44% 44%;box-shadow:0 4px 18px rgba(0,0,0,.09),inset 0 -4px 10px rgba(0,0,0,.04)}
  .pEyes{display:flex;gap:18px;justify-content:center;padding-top:18px}
  .pEye{width:12px;height:12px;background:#2a2a32;border-radius:50%;position:relative;transition:all .3s}
  .pEye::after{content:'';position:absolute;top:2px;right:2px;width:3px;height:3px;background:#fff;border-radius:50%}
  .pCheeks{display:flex;gap:52px;justify-content:center;margin-top:3px}
  .pCheek{width:15px;height:9px;background:rgba(224,138,166,.38);border-radius:50%}
  .pNose{text-align:center;font-size:9px;margin-top:3px;color:#c06080;line-height:1}
  .pMouth{text-align:center;font-size:13px;line-height:1.1}
  .pTail{position:absolute;right:-8px;bottom:10px;width:24px;height:24px;background:radial-gradient(circle at 40% 40%,#f5c0d0,#e08aa6);border-radius:50%;box-shadow:0 2px 8px rgba(224,138,166,.3)}
  @keyframes pBounce{0%,100%{top:0}45%{top:-16px}}
  @keyframes pShake{0%,100%{transform:translateX(-50%)}25%{transform:translateX(calc(-50% - 8px))}75%{transform:translateX(calc(-50% + 8px))}}
  @keyframes pEgg{0%,100%{filter:drop-shadow(0 0 0px rgba(224,138,166,0))}50%{filter:drop-shadow(0 0 14px rgba(224,138,166,.6))}}
  @keyframes pBabyFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
  @keyframes pBabyPop{0%,100%{transform:translateY(0) scale(1)}40%{transform:translateY(-10px) scale(1.06)}}
  @keyframes hFall{to{top:110%}}
  .m05stat{display:flex;align-items:center;gap:8px;margin:5px 0;font-size:12px}
  .m05slab{width:52px;flex-shrink:0}
  .m05bar{flex:1;height:9px;background:#f0f0f0;border-radius:5px;overflow:hidden}
  .m05bfill{height:100%;border-radius:5px;transition:width .6s}
  .m05sval{width:26px;text-align:right;font-size:11px;font-weight:600;color:var(--muted)}
  .m05act{border:0;border-radius:10px;padding:10px 4px;font-size:12px;font-weight:600;color:#fff;flex:1;transition:opacity .2s}
  .m05act:disabled{opacity:.38;cursor:default}
  /* ===== M21 狼兔大富翁 全屏棋盘 ===== */
  #m21fs{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1500;display:none;flex-direction:column;
    background:radial-gradient(120% 90% at 50% 8%,#fbf7f0 0%,#efe9df 55%,#e6ded2 100%);
    color:var(--ink);overflow:hidden}
  #m21fs.on{display:flex}
  .m21screen{flex:1;display:flex;flex-direction:column;min-height:0}
  #m21topbar{display:flex;align-items:center;gap:8px;padding:10px 14px;flex-shrink:0}
  #m21topbar .x{font-size:20px;color:var(--muted);cursor:pointer;line-height:1}
  #m21topbar .ti{font-weight:800;font-size:15px;letter-spacing:.5px}
  #m21topbar .rd{margin-left:auto;font-size:11px;color:var(--muted);background:#fff;border-radius:20px;padding:3px 10px;box-shadow:0 1px 3px rgba(0,0,0,.06)}
  /* 顶部玩家头像栏 */
  #m21players{display:flex;gap:7px;padding:4px 10px 2px;overflow-x:auto;flex-shrink:0;justify-content:center}
  .m21pchip{display:flex;align-items:center;gap:6px;background:#fff;border-radius:24px;padding:4px 11px 4px 4px;box-shadow:0 1px 4px rgba(0,0,0,.1);flex-shrink:0;border:2px solid transparent;transition:transform .15s,border-color .15s}
  .m21pchip.on{border-color:var(--gold);box-shadow:0 0 0 2px rgba(200,162,74,.25),0 2px 8px rgba(200,162,74,.3);transform:translateY(-1px)}
  .m21pchip.dead{opacity:.45;filter:grayscale(.6)}
  .m21pchip img{width:34px;height:34px;border-radius:50%;object-fit:cover;background:#eee}
  .m21pchip .pi{line-height:1.15}
  .m21pchip .pn{font-size:11px;font-weight:800;color:var(--ink)}
  .m21pchip .pc{font-size:11.5px;font-weight:800;color:#a8842f;background:rgba(200,162,74,.13);border-radius:8px;padding:0 5px;margin-top:1px;display:inline-block;font-variant-numeric:tabular-nums;line-height:1.35}
  .m21maplist{display:flex;flex-direction:column;gap:8px;max-width:440px;margin:0 auto;width:100%}
  .m21mapcard{display:flex;align-items:center;gap:10px;background:#fff;border-radius:14px;padding:7px;box-shadow:0 1px 5px rgba(60,50,40,.1);border:2px solid transparent;cursor:pointer;position:relative;transition:transform .12s,border-color .12s}
  .m21mapcard.sel{border-color:var(--gold);box-shadow:0 0 0 2px rgba(200,162,74,.25),0 3px 10px rgba(200,162,74,.25)}
  .m21mapcard .mmt{width:78px;height:56px;border-radius:10px;background:#eef0f2 center/cover no-repeat;flex-shrink:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.06)}
  .m21mapcard .mmi{flex:1;text-align:left;min-width:0}
  .m21mapcard .mmn{font-weight:800;font-size:15px;color:var(--ink)}
  .m21mapcard .mmd{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.32}
  .m21mapcard .mmck{margin-left:auto;width:22px;height:22px;border-radius:50%;background:var(--gold);color:#fff;font-weight:900;display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;opacity:0;transform:scale(.4);transition:.15s}
  .m21mapcard.sel .mmck{opacity:1;transform:scale(1)}
  #m21fx{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:36}
  .m21gtk{width:18px;height:18px;border-radius:50%;object-fit:cover;vertical-align:-4px;box-shadow:0 1px 2px rgba(0,0,0,.22)}
  .m21iic{width:18px;height:18px;border-radius:5px;object-fit:cover;vertical-align:-4px}
  .m21ibic{width:28px;height:28px;border-radius:8px;object-fit:cover;vertical-align:middle;pointer-events:none}
  .m21shic{width:22px;height:22px;border-radius:6px;object-fit:cover;vertical-align:-5px}
  .m21bic{width:24px;height:24px;border-radius:6px;object-fit:cover;filter:drop-shadow(0 1px 1px rgba(0,0,0,.2))}
  .m21godcard{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);width:196px;background:linear-gradient(180deg,#fffdf8,#f7f0e4);border-radius:18px;box-shadow:0 12px 34px rgba(0,0,0,.32);padding:12px 12px 14px;text-align:center;border:2px solid var(--gold);animation:m21gin 2.2s ease forwards}
  .m21godcard img{width:122px;height:122px;border-radius:14px;object-fit:cover;box-shadow:0 3px 10px rgba(0,0,0,.2)}
  .m21godcard .gh{font-size:11px;color:var(--gold);font-weight:800;margin-bottom:6px;letter-spacing:.5px}
  .m21godcard .gn{font-weight:900;font-size:17px;margin-top:7px;color:var(--ink)}
  .m21godcard .gd{font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.32}
  @keyframes m21gin{0%{opacity:0;transform:translate(-50%,-50%) scale(.7)}12%{opacity:1;transform:translate(-50%,-50%) scale(1.06)}22%{transform:translate(-50%,-50%) scale(1)}85%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(.96)}}
  .m21float{position:absolute;transform:translateX(-50%);font-size:14px;font-weight:900;animation:m21fl 1.1s ease forwards;text-shadow:0 1px 3px rgba(255,255,255,.9)}
  .m21float.up{color:#3a9d5b}
  .m21float.dn{color:#d05b5b}
  @keyframes m21fl{0%{opacity:0;transform:translateY(4px)}20%{opacity:1}100%{opacity:0;transform:translateY(-22px)}}
  .m21coin{position:absolute;font-size:16px;line-height:1;z-index:5;margin-left:-8px;margin-top:-8px;
    transform:translate(0,0) scale(1);opacity:1;filter:drop-shadow(0 1px 2px rgba(0,0,0,.3));
    transition:transform .48s cubic-bezier(.3,.6,.4,1),opacity .48s ease}
  /* 道具/神明专属特效 */
  .m21boom{position:absolute;z-index:6;pointer-events:none;width:0;height:0}
  .m21boom .bx{position:absolute;left:0;top:0;display:block;transform:translate(-50%,-50%);font-size:15px;animation:m21boomx .85s ease forwards}
  @keyframes m21boomx{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}16%{opacity:1;transform:translate(-50%,-50%) scale(2)}55%{transform:translate(-50%,-50%) scale(1.4)}100%{opacity:0;transform:translate(-50%,-50%) scale(2.3)}}
  .m21boom .p{position:absolute;left:0;top:0;font-size:12px;opacity:0;animation:m21frag .85s ease forwards}
  @keyframes m21frag{0%{opacity:0;transform:translate(-50%,-50%) scale(.4)}20%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.1)}}
  .m21swirl{position:absolute;z-index:6;pointer-events:none;width:0;height:0}
  .m21swirl .sw{position:absolute;left:0;top:0;display:block;transform:translate(-50%,-50%);font-size:22px;animation:m21swl 1.15s ease forwards}
  @keyframes m21swl{0%{opacity:0;transform:translate(-50%,-50%) rotate(0) scale(.4)}18%{opacity:1}80%{opacity:.9}100%{opacity:0;transform:translate(-50%,-50%) rotate(560deg) scale(1.5)}}
  .m21swirl .sp{position:absolute;left:0;top:0;font-size:13px;opacity:0;animation:m21frag 1.05s ease forwards}
  .m21godglow{position:absolute;left:50%;top:40%;width:260px;height:260px;transform:translate(-50%,-50%);border-radius:50%;z-index:0;pointer-events:none;
    background:radial-gradient(circle,rgba(242,212,120,.6) 0%,rgba(242,212,120,.22) 45%,rgba(242,212,120,0) 70%);animation:m21glowp 2.2s ease forwards}
  @keyframes m21glowp{0%{opacity:0;transform:translate(-50%,-50%) scale(.45)}14%{opacity:1;transform:translate(-50%,-50%) scale(1.14)}30%{transform:translate(-50%,-50%) scale(.98)}52%{transform:translate(-50%,-50%) scale(1.1)}85%{opacity:1}100%{opacity:0;transform:translate(-50%,-50%) scale(1.22)}}
  #m21wrap{flex:none;display:flex;align-items:center;justify-content:center;padding:6px}
  #m21grid{display:grid;gap:5px;width:min(96vw,52vh,500px);height:min(96vw,52vh,500px)}
  #m21grid.free{flex-shrink:0;position:relative}
  #m21grid.free .m21tile{position:relative;z-index:1}
  #m21grid.free .m21tile.spec .te{font-size:21px}
  .m21river{position:absolute;left:0;top:0;z-index:0;pointer-events:none}
  .m21tile .tord{position:absolute;top:1px;left:2px;font-size:8px;font-weight:800;color:#b9b0a0;z-index:3;line-height:1}
  .m21tile.cur .tord{color:var(--gold)}
  /* 控制面板移到棋盘下方（用上竖屏空白，日志/按钮不再被挤裁切） */
  #m21panel{flex:1;min-height:0;display:flex;flex-direction:column;gap:8px;padding:4px 12px 14px;overflow-y:auto}
  .m21tile{position:relative;background:#fff;border-radius:10px;
    display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;
    box-shadow:0 1px 4px rgba(60,50,40,.1);overflow:hidden;border:1.5px solid rgba(0,0,0,.04)}
  /* 地产格：顶部城市色带 + 地名主体 */
  .m21tile.prop .pband{font-size:7.5px;font-weight:800;color:#fff;text-align:center;padding:2px 1px 1.5px;
    line-height:1;letter-spacing:.5px;text-shadow:0 1px 1px rgba(0,0,0,.18)}
  .m21tile.prop .pbody{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;padding:1px;position:relative}
  .m21tile.prop .pbody .bld{font-size:19px;line-height:1.1;filter:drop-shadow(0 1px 1px rgba(0,0,0,.18))}
  .m21tile.prop .pbody .bld .plot{font-size:13px;opacity:.45}
  .m21tile.prop .pbody .pn{font-size:8px;font-weight:700;color:#5a5249;text-align:center;line-height:1.02}
  .m21tile.prop .pbody .plv{position:absolute;bottom:0;right:2px;font-size:7px;font-weight:800;color:var(--gold)}
  /* 功能格：大 emoji + 标签 */
  .m21tile.spec{align-items:center;justify-content:center}
  .m21tile.spec .te{font-size:20px;line-height:1}
  .m21tile.spec .tn{font-size:7.5px;font-weight:700;color:#8a8278;text-align:center;line-height:1.05;margin-top:1px;padding:0 1px}
  .m21tile.corner{background:linear-gradient(160deg,#fffaf0,#f3ead7)}
  .m21tile.cur{border-color:var(--gold);box-shadow:0 0 0 2px rgba(200,162,74,.4),0 3px 10px rgba(0,0,0,.14)}
  .m21own{position:absolute;bottom:1px;left:1px;width:19px;height:19px;border-radius:50%;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.32);z-index:3;overflow:hidden;display:flex;align-items:center;justify-content:center}
  .m21own img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block}
  .m21tok{position:absolute;display:flex;gap:0;top:1px;right:1px;justify-content:flex-end;font-size:13px;line-height:1;z-index:4}
  .m21tok span{background:linear-gradient(180deg,#fff,#f3f0ea);border-radius:50%;width:23px;height:23px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,.32);overflow:hidden;border:2px solid #fff;margin-left:-4px}
  .m21tok span:first-child{margin-left:0}
  .m21tok span img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}
  .m21tok span.hop{animation:m21hop .13s ease;box-shadow:0 5px 8px rgba(0,0,0,.34);z-index:2}
  .m21tokacc{position:absolute;right:-5px;bottom:-4px;font-size:10px;font-style:normal;line-height:1;z-index:3;text-shadow:0 1px 2px rgba(0,0,0,.3);pointer-events:none}
  @keyframes m21hop{0%{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.16)}100%{transform:translateY(0) scale(1)}}
  /* 回合提示横幅 */
  #m21banner{position:absolute;top:48%;left:0;right:0;text-align:center;z-index:35;pointer-events:none;opacity:0}
  #m21banner.show{animation:m21ban 1.6s ease forwards}
  #m21banner span{display:inline-block;background:linear-gradient(135deg,#c8a24a,#e0b85f);color:#fff;font-size:18px;font-weight:800;padding:10px 26px;border-radius:30px;box-shadow:0 6px 20px rgba(200,162,74,.45)}
  @keyframes m21ban{0%{opacity:0;transform:scale(.7)}15%{opacity:1;transform:scale(1.05)}25%{transform:scale(1)}80%{opacity:1}100%{opacity:0;transform:scale(.95)}}
  /* 胜利结算页 */
  #m21over{position:absolute;top:0;left:0;right:0;bottom:0;z-index:45;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(30,22,14,.5);backdrop-filter:blur(3px)}
  #m21over.show{display:flex;animation:m21fade .3s ease}
  @keyframes m21fade{from{opacity:0}to{opacity:1}}
  .m21overcard{background:linear-gradient(165deg,#fffdf8,#f4ead5);border-radius:22px;padding:22px 20px;width:100%;max-width:340px;box-shadow:0 16px 50px rgba(0,0,0,.35);text-align:center;animation:m21pop .4s cubic-bezier(.2,.9,.3,1.2)}
  @keyframes m21pop{from{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}
  .m21overcard .trophy{font-size:54px;line-height:1}
  .m21overcard .wt{font-size:21px;font-weight:900;color:var(--gold);margin:4px 0 2px}
  .m21overcard .ws{font-size:13px;color:var(--muted);margin-bottom:14px}
  .m21rank{display:flex;align-items:center;gap:9px;background:#fff;border-radius:12px;padding:8px 11px;margin:7px 0;box-shadow:0 1px 4px rgba(0,0,0,.06)}
  .m21rank.win{box-shadow:0 0 0 2px var(--gold),0 2px 8px rgba(200,162,74,.2)}
  .m21rank img{width:38px;height:38px;border-radius:50%;object-fit:cover}
  .m21rank .rn{flex:1;text-align:left;font-weight:800;font-size:13px}
  .m21rank .rv{font-weight:900;color:var(--gold);font-size:15px}
  .m21rank .rk{font-size:18px;width:24px}
  .m21overcard .obtns{display:flex;gap:10px;margin-top:16px}
  .m21conf{position:absolute;top:-16px;width:9px;height:14px;border-radius:2px;pointer-events:none;animation:m21confall 2.2s ease-in forwards}
  @keyframes m21confall{0%{transform:translateY(0) rotate(0);opacity:1}75%{opacity:1}100%{transform:translateY(92vh) rotate(660deg);opacity:0}}
  .m21winart{width:96px;height:96px;border-radius:18px;object-fit:cover;box-shadow:0 4px 14px rgba(200,162,74,.4);animation:m21winbounce .9s ease .25s 2;margin-bottom:4px}
  @keyframes m21winbounce{0%,100%{transform:translateY(0) scale(1)}40%{transform:translateY(-10px) scale(1.05)}}
  .m21hl{margin-top:12px;text-align:left;background:rgba(255,255,255,.65);border-radius:12px;padding:9px 11px}
  .m21hl .hh{font-size:12px;font-weight:900;color:#a8842f;margin-bottom:4px}
  .m21hl .hi{font-size:11.5px;color:var(--ink);line-height:1.55;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .m21tile.prop .pbody .bld.pop{animation:m21bldpop .55s cubic-bezier(.2,1.3,.4,1)}
  @keyframes m21bldpop{0%{transform:scale(.2) translateY(8px);opacity:.2}60%{transform:scale(1.3) translateY(-2px)}100%{transform:scale(1) translateY(0);opacity:1}}
  #m21grid.m21shake{animation:m21shakeK .32s ease}
  #m21grid.m21shake2{animation:m21shakeK2 .38s ease}
  @keyframes m21shakeK{0%,100%{transform:translate(0,0)}20%{transform:translate(-3px,2px)}40%{transform:translate(3px,-2px)}60%{transform:translate(-2px,-1px)}80%{transform:translate(2px,1px)}}
  @keyframes m21shakeK2{0%,100%{transform:translate(0,0)}15%{transform:translate(-6px,3px)}30%{transform:translate(6px,-4px)}45%{transform:translate(-5px,-2px)}60%{transform:translate(5px,3px)}75%{transform:translate(-3px,1px)}90%{transform:translate(2px,-1px)}}
  .m21die.roll{display:inline-block;animation:m21tumble .5s cubic-bezier(.3,.1,.3,1) infinite}
  @keyframes m21tumble{0%{transform:rotate(0) scale(1)}25%{transform:rotate(120deg) scale(1.18)}50%{transform:rotate(220deg) scale(.95)}75%{transform:rotate(320deg) scale(1.18)}100%{transform:rotate(360deg) scale(1)}}
  .m21tile.owned-AB{box-shadow:inset 0 0 0 2px var(--rabbit),0 1px 4px rgba(60,50,40,.1)}
  .m21tile.owned-AI{box-shadow:inset 0 0 0 2px #7c8aa5,0 1px 4px rgba(60,50,40,.1)}
  .m21center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    background:linear-gradient(160deg,#ffffff,#f6f1ea);border-radius:16px;
    box-shadow:inset 0 0 0 1px rgba(200,180,150,.25),0 4px 16px rgba(80,60,40,.08);padding:8px;overflow:hidden}
  .m21ms{display:flex;flex-direction:column;gap:6px;background:rgba(255,255,255,.72);border-radius:12px;padding:8px 11px;box-shadow:0 1px 4px rgba(60,50,40,.07)}
  #m21goal{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 10px 0;padding:3px 10px;border-radius:9px;
    background:linear-gradient(90deg,rgba(255,248,230,.92),rgba(253,244,222,.88));border:1px solid rgba(200,162,74,.45);
    font-size:11px;font-weight:800;color:#8a6d1f;white-space:nowrap;overflow:hidden;flex-shrink:0;box-shadow:0 1px 4px rgba(200,162,74,.15)}
  #m21goal .gl{overflow:hidden;text-overflow:ellipsis}
  #m21goal .gr{color:#b5912f;flex-shrink:0}
  .m21ms{cursor:pointer}
  .m21mshdr{display:flex;align-items:center;justify-content:space-between;font-size:11px;font-weight:800;color:#8a7a52;margin-bottom:4px}
  .m21mshdr .mshint{font-size:10px;font-weight:700;color:var(--gold);opacity:.85}
  .m21msrow{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:700;color:#7a7268}
  .m21msrow .ml{width:64px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .m21msrow .mbar2{flex:1;height:9px;border-radius:6px;background:#eae3d5;overflow:hidden;box-shadow:inset 0 1px 2px rgba(60,50,40,.12)}
  .m21msrow .mbar2 i{display:block;height:100%;border-radius:6px;transition:width .4s;position:relative}
  .m21msrow .mbar2 i::after{content:'';position:absolute;top:0;left:0;right:0;bottom:0;border-radius:6px;background:linear-gradient(180deg,rgba(255,255,255,.4),rgba(255,255,255,0) 60%)}
  .m21msrow .mp{width:44px;text-align:right;color:var(--gold);font-weight:800;font-variant-numeric:tabular-nums}
  .m21msrow.lead .ml{color:#b5912f}
  .m21msrow.lead .mbar2{box-shadow:inset 0 1px 2px rgba(60,50,40,.12),0 0 0 1.5px rgba(200,162,74,.55)}
  .m21advice{margin:4px 0 2px;padding:6px 10px;border-radius:9px;background:linear-gradient(90deg,#fff6dd,#fdf0d0);
    border:1px solid rgba(200,162,74,.5);font-size:12px;font-weight:800;color:#7c6318;line-height:1.45;text-align:center}
  .m21advice.mute{background:rgba(0,0,0,.04);border-color:rgba(0,0,0,.08);color:#a29a8c;font-weight:700}
  .m21btn.rec{animation:m21recpulse 1.4s ease-in-out infinite}
  .m21ib.rec{animation:m21recpulse 1.4s ease-in-out infinite;outline:2px solid var(--gold);outline-offset:1px}
  @keyframes m21recpulse{0%{box-shadow:0 0 0 0 rgba(200,162,74,.55)}70%{box-shadow:0 0 0 9px rgba(200,162,74,0)}100%{box-shadow:0 0 0 0 rgba(200,162,74,0)}}
  .m21teams{display:flex;gap:6px;flex-wrap:wrap}
  .m21team{flex:1;min-width:78px;background:#fff;border-radius:11px;padding:7px 8px;box-shadow:0 1px 3px rgba(0,0,0,.05);transition:box-shadow .2s}
  .m21team.tcur{box-shadow:0 0 0 2px var(--gold),0 2px 6px rgba(200,162,74,.25)}
  .m21team .nm{font-size:11px;font-weight:800;display:flex;align-items:center;gap:3px}
  .m21team .cash{font-size:16px;font-weight:800;margin-top:1px}
  .m21team .mbar{height:5px;border-radius:4px;background:#eee;margin-top:5px;overflow:hidden}
  .m21team .mbar i{display:block;height:100%;border-radius:4px}
  .m21dice{text-align:center;font-size:30px;line-height:1.1;min-height:34px;font-weight:800}
  .m21turn{text-align:center;font-size:13px;color:var(--muted);font-weight:600}
  .m21acts{display:flex;gap:9px;margin-top:3px}
  .m21btn{flex:1;border:0;border-radius:12px;padding:11px 4px;font-size:14px;font-weight:800;color:#fff;letter-spacing:.3px;
    display:inline-flex;align-items:center;justify-content:center;gap:5px;
    background:linear-gradient(180deg,#68789c,#5b6b8c);
    box-shadow:0 2px 8px rgba(91,107,140,.3),inset 0 1px 0 rgba(255,255,255,.22);transition:transform .12s,opacity .2s}
  .m21btn:active{transform:scale(.96)}
  .m21btn:disabled{opacity:.4}
  .m21btn.g{background:linear-gradient(160deg,#d3ad52,#c8a24a 55%,#b8923c);box-shadow:0 2px 8px rgba(200,162,74,.38),inset 0 1px 0 rgba(255,255,255,.3)}
  .m21btn.r{background:linear-gradient(180deg,#e698b2,#e08aa6);box-shadow:0 2px 8px rgba(224,138,166,.3),inset 0 1px 0 rgba(255,255,255,.25)}
  .m21log{font-size:12px;line-height:1.6;color:#7a7268;max-height:none;background:rgba(255,255,255,.7);border-radius:11px;padding:8px 11px}
  .m21log div{margin:1px 0}
  #m21panel .m21btn{padding:13px 4px;font-size:15px}
  /* 复杂交互独立图层（底部抽屉，棋盘仍可见在上方，不顶掉布局） */
  #m21sheet{position:absolute;left:0;right:0;bottom:0;z-index:30;background:#fff;border-radius:22px 22px 0 0;
    box-shadow:0 -8px 30px rgba(40,30,20,.2);padding:18px 16px 22px;max-height:60%;overflow-y:auto;
    transform:translateY(112%);transition:transform .32s cubic-bezier(.2,.85,.25,1)}
  #m21sheet.on{transform:translateY(0)}
  #m21sheet .sgrip{width:38px;height:4px;border-radius:3px;background:#e3ddd2;margin:0 auto 12px}
  .m21sh-title{font-size:16px;font-weight:800;color:var(--gold);margin-bottom:5px;display:flex;align-items:center;gap:6px}
  /* 新手引导 spotlight */
  #m21tut{position:absolute;top:0;left:0;right:0;bottom:0;z-index:55;overflow:hidden}
  .m21tuthl{position:absolute;border-radius:14px;border:2.5px solid var(--gold);box-shadow:0 0 0 9999px rgba(24,17,9,.55);animation:m21tutp 1.4s ease infinite}
  @keyframes m21tutp{0%,100%{border-color:var(--gold)}50%{border-color:#f2d98e}}
  .m21tutcard{position:absolute;left:50%;transform:translateX(-50%);width:min(86vw,330px);background:#fffdf8;border-radius:16px;padding:14px 15px 13px;box-shadow:0 10px 32px rgba(0,0,0,.35);animation:m21pop .3s cubic-bezier(.2,.9,.3,1.2)}
  .m21tutcard .tt{font-weight:900;font-size:16px;color:var(--gold)}
  .m21tutcard .td{font-size:13px;line-height:1.55;color:#5a5249;margin:6px 0 11px}
  .m21tutcard .tb{display:flex;gap:8px;align-items:center}
  .m21tutcard .tstep{font-size:11px;color:var(--muted);margin-right:auto;font-weight:700}
  /* 设置面板 */
  #m21set,#m21itip{position:absolute;top:0;left:0;right:0;bottom:0;z-index:58;background:rgba(24,17,9,.5);display:flex;align-items:center;justify-content:center;padding:26px}
  .m21setcard{background:linear-gradient(180deg,#fffdf8,#f7f1e6);border-radius:18px;padding:18px 17px 16px;max-width:340px;width:100%;box-shadow:0 14px 44px rgba(0,0,0,.35);max-height:80%;overflow-y:auto;animation:m21pop .3s cubic-bezier(.2,.9,.3,1.2)}
  .m21setcard h3{margin:0 0 4px;font-size:17px;color:var(--gold);display:flex;align-items:center;gap:6px}
  .m21setcard .rules{font-size:12.5px;line-height:1.7;color:#5a5249;background:rgba(255,255,255,.75);border-radius:12px;padding:10px 12px;margin:10px 0 12px}
  .m21setcard .srow{display:flex;flex-direction:column;gap:9px}
  .m21setcard .m21btn{padding:11px 4px}
  /* ===== M21 情侣元成长层（段位/解锁）+ 合体技 ===== */
  .m21overcard{max-height:88%;overflow-y:auto}
  .m21cpwrap{max-width:440px;margin:0 auto 6px;width:100%;display:flex;align-items:center;gap:10px;background:#fff;border-radius:14px;padding:9px 13px;box-shadow:0 1px 5px rgba(60,50,40,.1);cursor:pointer;box-sizing:border-box}
  .m21cpwrap .ce{font-size:26px;line-height:1}
  .m21cpwrap .ci2{flex:1;min-width:0;text-align:left}
  .m21cpwrap .cn2{font-weight:900;font-size:13.5px;color:var(--ink)}
  .m21cpwrap .cs2{font-size:10.5px;color:var(--muted);margin-top:3px}
  .m21cpwrap .cg{font-size:11px;color:#a8842f;font-weight:800;white-space:nowrap}
  .m21cpbar{height:6px;border-radius:4px;background:#eee7d9;overflow:hidden;margin-top:4px}
  .m21cpbar i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,#e08aa6,#c8a24a)}
  .m21glad{display:flex;gap:4px;margin:8px 0}
  .m21glad .st{flex:1;text-align:center;background:#fff;border-radius:10px;padding:6px 1px;font-size:9px;color:var(--muted)}
  .m21glad .st.on{box-shadow:0 0 0 2px var(--gold);background:linear-gradient(180deg,#fffdf4,#f8efd9)}
  .m21glad .st .se{font-size:16px;line-height:1.1}
  .m21glad .st .sn{font-weight:800;color:var(--ink);font-size:8.5px;line-height:1.15;margin-top:2px}
  .m21gstats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin:8px 0}
  .m21gstats .gs{background:#fff;border-radius:10px;padding:6px 2px;text-align:center}
  .m21gstats .gs b{display:block;font-size:14px;color:var(--gold)}
  .m21gstats .gs span{font-size:9.5px;color:var(--muted)}
  .m21gunl{display:flex;align-items:center;gap:8px;background:#fff;border-radius:10px;padding:6px 9px;margin:5px 0;font-size:12px}
  .m21gunl.off{opacity:.55;filter:grayscale(1)}
  .m21gunl .ue{font-size:17px;line-height:1}
  .m21gunl .un{font-weight:800;flex:1;text-align:left;color:var(--ink)}
  .m21gunl .uc{font-size:10px;color:var(--muted);white-space:nowrap}
  .m21prg{margin-top:12px;text-align:left;background:rgba(255,255,255,.7);border-radius:12px;padding:10px 12px}
  .m21prg .ph{font-size:12px;font-weight:900;color:#a8842f;margin-bottom:5px}
  .m21prg .plu{background:linear-gradient(135deg,#e08aa6,#c8a24a);color:#fff;font-weight:900;font-size:13px;border-radius:10px;padding:8px 10px;text-align:center;margin:4px 0 8px;box-shadow:0 3px 10px rgba(224,138,166,.35)}
  .m21prg .pnl{background:linear-gradient(90deg,#fdf3d8,#fbe6ee);border-radius:10px;padding:7px 10px;margin-top:6px;font-size:12px;font-weight:800;color:#a8842f;opacity:0;animation:m21nlk .5s ease forwards}
  @keyframes m21nlk{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
  .m21uop{display:flex;align-items:center;gap:9px;width:100%;border:0;background:#fff;border-radius:12px;padding:10px 12px;margin:6px 0;box-shadow:0 1px 4px rgba(0,0,0,.08);cursor:pointer;text-align:left;font-family:inherit;box-sizing:border-box}
  .m21uop:active{transform:scale(.97)}
  .m21uop .ue{font-size:22px;line-height:1}
  .m21uop .ui{flex:1;min-width:0}
  .m21uop .un{font-weight:900;font-size:14px;color:var(--ink)}
  .m21uop .ud{font-size:11px;color:var(--muted);margin-top:1px;line-height:1.3}
  .m21btn.u{flex:0 0 auto;padding:11px 12px;background:linear-gradient(135deg,#e698b2,#c87ba0);box-shadow:0 2px 8px rgba(224,138,166,.4),inset 0 1px 0 rgba(255,255,255,.25)}
  .m21sh-text{font-size:15px;color:#4a443c;line-height:1.55;margin-bottom:15px}
  .m21sh-opts{display:flex;flex-direction:column;gap:10px}
  .m21sh-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
  .m21sh-btn{border:0;border-radius:13px;padding:14px 8px;font-size:15px;font-weight:700;background:#f4eee3;color:#5a5249;transition:transform .12s}
  .m21sh-btn:active{transform:scale(.95)}
  .m21sh-btn.g{background:linear-gradient(135deg,#c8a24a,#d8b65f);color:#fff;box-shadow:0 2px 8px rgba(200,162,74,.3)}
  .m21sh-cancel{display:block;margin:14px auto 0;background:none;border:0;color:var(--muted);font-size:13px}
  .m21quip{text-align:center;font-size:12px;color:#7a6f5e;background:#fff;border-radius:14px;padding:5px 12px;align-self:center;box-shadow:0 2px 8px rgba(0,0,0,.1);animation:m21qpop .3s ease}
  @keyframes m21qpop{0%{transform:scale(.85);opacity:0}100%{transform:scale(1);opacity:1}}
  .m21mg{background:linear-gradient(135deg,#fff6ea,#fdeef3);border-radius:12px;padding:9px 11px;box-shadow:inset 0 0 0 1px rgba(200,162,74,.25)}
  .m21mg .mgt{font-size:12px;font-weight:800;color:var(--gold)}
  .m21mg .mgx{font-size:13px;color:#5a5249;line-height:1.5;margin-top:3px}
  .m21items{display:flex;gap:8px;align-items:center;flex-wrap:wrap;background:#fff8ea;border:1px solid rgba(200,162,74,.32);border-radius:12px;padding:7px 10px}
  .m21ib{width:42px;height:42px;border:0;border-radius:11px;background:linear-gradient(135deg,#fff,#f3ead4);box-shadow:0 2px 6px rgba(200,162,74,.28);font-size:21px;line-height:1;transition:transform .12s}
  .m21ib:active{transform:scale(.9)}
  .m21tile.tgt{cursor:pointer}
  .m21tile.tgt::after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;border-radius:10px;animation:m21pulse 1s ease-in-out infinite;pointer-events:none}
  @keyframes m21pulse{0%,100%{box-shadow:inset 0 0 0 0 rgba(200,162,74,.55)}50%{box-shadow:inset 0 0 0 3px rgba(200,162,74,.75)}}
  /* 选卡/选图 setup */
  #m21setup{padding:20px 18px;overflow-y:auto;align-items:center;text-align:center}
  #m21setup h2{font-size:22px;font-weight:800;margin:6px 0 2px}
  #m21setup .sub2{color:var(--muted);font-size:12px;margin-bottom:14px}
  .m21cards{display:grid;grid-template-columns:1fr 1fr;gap:9px;width:100%;max-width:440px;margin:0 auto}
  .m21card{background:#fff;border-radius:14px;padding:11px 9px;text-align:left;border:2px solid transparent;
    box-shadow:0 2px 8px rgba(70,55,40,.07);cursor:pointer;transition:transform .12s,border-color .15s}
  .m21card:active{transform:scale(.97)}
  .m21card.sel{border-color:var(--gold);box-shadow:0 0 0 3px rgba(200,162,74,.18),0 4px 12px rgba(0,0,0,.1)}
  .m21card{display:flex;align-items:center;gap:8px}
  .m21card .ci{flex:1;min-width:0}
  .m21card .cart{width:62px;height:62px;border-radius:11px;object-fit:cover;flex-shrink:0;box-shadow:0 1px 4px rgba(0,0,0,.12);background:#f3ead7}
  .m21card .cn{font-weight:800;font-size:14px;display:flex;align-items:center;gap:5px}
  .m21card .ct{font-size:10px;color:var(--gold);font-weight:700;margin:1px 0 4px}
  .m21card .cd{font-size:10px;color:#8a8278;line-height:1.45}
  /* 玩家立绘头像 */
  .m21av{width:30px;height:30px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.2);background:#eee;vertical-align:middle}
  .m21team .avs{display:flex;gap:-6px;margin-bottom:3px}
  .m21team .avs img{margin-right:-8px}
  .m21turnav{display:flex;align-items:center;justify-content:center;gap:8px}
  .m21turnav img{width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid var(--gold);box-shadow:0 2px 6px rgba(200,162,74,.3)}
  .m21pick{margin:16px auto 0;max-width:440px;font-size:13px;color:var(--ink);font-weight:700}
  .m21itemsel{display:flex;flex-wrap:wrap;gap:7px;max-width:440px;margin:0 auto;justify-content:center}
  .m21ichip{font-size:12px;font-weight:600;color:#5a5249;background:#fff;border:2px solid transparent;border-radius:20px;padding:6px 11px;box-shadow:0 1px 4px rgba(0,0,0,.07);cursor:pointer;display:flex;align-items:center;gap:4px}
  .m21ichip.sel{border-color:var(--gold);background:#fff8ea}
  .m21ichip .ip{font-size:10px;color:var(--gold);font-weight:800}
  .m21ichip .m21iinfo{font-size:13px;color:#b08a2e;margin-left:2px;line-height:1;opacity:.75}
  .m21ichip .m21iinfo:active{opacity:1}
  /* M16 抽卡盲盒 + 集章连击 */
  .m16streak{background:linear-gradient(135deg,#fff7ec,#fff);border-radius:16px;padding:14px 16px;box-shadow:0 2px 10px rgba(0,0,0,.06);margin-bottom:14px}
  .m16streak .big{font-size:18px;font-weight:800;color:var(--ink)}
  .m16pbarw{height:6px;background:#eee5d2;border-radius:3px;margin-top:8px;overflow:hidden}
  .m16pbar{height:100%;background:linear-gradient(90deg,#e0b45c,var(--gold));border-radius:3px;transition:width .5s ease}
  .m16chip{display:inline-block;background:#f3eee2;color:#a5822f;border-radius:10px;padding:3px 10px;font-size:12px;font-weight:700;margin:6px 6px 0 0}
  .m16drawbtn{display:block;width:100%;max-width:280px;margin:26px auto;padding:34px 18px;border:none;border-radius:20px;background:linear-gradient(160deg,#6b7ba0,var(--wolf));color:#fff;font-size:19px;font-weight:800;box-shadow:0 8px 22px rgba(91,107,140,.4);cursor:pointer;transition:transform .15s ease}
  .m16drawbtn:active{transform:scale(.95)}
  .m16drawbtn .dico{display:block;font-size:44px;margin-bottom:10px}
  .m16cardface{position:relative;background:#fff;border-radius:18px;padding:26px 20px;box-shadow:0 4px 16px rgba(0,0,0,.09);text-align:center;font-size:17px;font-weight:700;color:var(--ink);line-height:1.6;margin:14px 0;transform:scale(.6) rotateY(70deg);opacity:0;transition:transform .45s cubic-bezier(.2,1.4,.4,1),opacity .35s ease}
  .m16cardface.in{transform:scale(1) rotateY(0);opacity:1}
  .m16cardface.rare{border:2px solid var(--gold);background:linear-gradient(150deg,#fffdf4,#fdf3d8 45%,#fff8e4);box-shadow:0 0 0 3px rgba(200,162,74,.22),0 6px 24px rgba(200,162,74,.45);animation:m16glow 1.6s ease-in-out infinite alternate}
  @keyframes m16glow{from{box-shadow:0 0 0 3px rgba(200,162,74,.18),0 6px 20px rgba(200,162,74,.35)}to{box-shadow:0 0 6px 4px rgba(200,162,74,.32),0 6px 28px rgba(224,138,166,.35)}}
  .m16rare{position:absolute;top:-10px;right:-6px;background:linear-gradient(90deg,var(--gold),#e08aa6);color:#fff;font-size:12px;font-weight:800;border-radius:12px;padding:4px 11px;box-shadow:0 2px 8px rgba(200,162,74,.5)}
  .m16donestamp{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-14deg);border:3px solid #4caf7d;color:#4caf7d;font-size:20px;font-weight:900;border-radius:12px;padding:6px 16px;background:rgba(255,255,255,.82);pointer-events:none}
  .m16grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:10px}
  .m16day{height:44px;border-radius:10px;background:#f1efe9;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;color:var(--muted)}
  .m16day.hit{background:linear-gradient(150deg,#fdf3d8,#fbe9c0);color:#a5822f;font-weight:800;box-shadow:0 1px 5px rgba(200,162,74,.35)}
  .m16day .dn{font-size:10px;line-height:1}
  .m16day .st{font-size:15px;line-height:1.2}
  .m16confetti{position:fixed;top:-12px;font-size:20px;z-index:999;pointer-events:none;animation:m16fall 1.8s linear forwards}
  @keyframes m16fall{to{transform:translateY(105vh) rotate(540deg);opacity:.4}}
  .duSpin{display:inline-block;animation:duSpin 1.4s ease-in-out infinite}
  @keyframes duSpin{0%,100%{transform:rotate(-12deg) scale(1)}50%{transform:rotate(12deg) scale(1.15)}}

  /* 🧑‍🌾 人才市场 redesign v0712 (Fable) */
  #talentBox{text-align:left;font-size:13.5px;color:var(--ink);padding:0}
  .tmCard{padding:12px 11px}
  .tmCard.tmGold{box-shadow:0 0 0 1.5px var(--gold),0 3px 12px rgba(200,162,74,.18);background:linear-gradient(175deg,#fffdf5,#fff)}
  .tmHead{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-weight:800;font-size:15px;margin-bottom:10px}
  .tmHead .tmBar{width:4px;height:15px;border-radius:3px;background:linear-gradient(180deg,var(--wolf),var(--rabbit));flex-shrink:0}
  .tmHead .tmSub{width:100%;margin-left:10px;font-weight:400;font-size:11px;color:var(--muted);line-height:1.35}
  .tmSub{font-weight:400;font-size:11px;color:var(--muted)}
  .tmInfo{font-size:12px;color:var(--muted);margin:-2px 3px 10px;font-weight:600;text-align:center}
  /* —— 今日事件横幅 —— */
  .tmEvent{display:flex;align-items:center;gap:10px;border-radius:14px;padding:11px 13px;margin-bottom:10px;
    background:linear-gradient(120deg,#eef3fb,#e7efff);border:1px solid #c9d9f2;box-shadow:0 2px 8px rgba(90,110,150,.08)}
  .tmEvent.e-norm{background:linear-gradient(120deg,#f4f3f0,#eeece8);border-color:#ddd8ce}
  .tmEvent.e-god{background:linear-gradient(120deg,#fff7dd,#ffedb8);border-color:#e6c568;box-shadow:0 2px 12px rgba(214,170,60,.22)}
  .tmEvIc{width:42px;height:42px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:23px;
    background:rgba(255,255,255,.75);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.9),0 1px 4px rgba(0,0,0,.08)}
  .tmEvName{font-weight:800;font-size:13.5px;letter-spacing:.2px}
  .tmEvDesc{font-size:12px;color:#6b6b74;line-height:1.45;margin-top:2px}
  /* —— 人才行（通用卡片）—— */
  .tmRow{position:relative;display:flex;align-items:center;gap:10px;padding:10px 10px 10px 14px;border-radius:12px;
    background:#fdfcfa;margin-bottom:9px;border:1px solid #efeae1;box-shadow:0 1px 3px rgba(60,50,40,.05)}
  .tmRow:last-child{margin-bottom:0}
  .tmRow::before{content:'';position:absolute;left:-1px;top:8px;bottom:8px;width:3.5px;border-radius:0 4px 4px 0;background:#d8d8de}
  .tmRow.r-rare{border-color:#dfe6f6;background:linear-gradient(115deg,#fbfcff,#f6f8fe 70%)}
  .tmRow.r-rare::before{background:linear-gradient(180deg,#8fa8ec,#6d87d6)}
  .tmRow.r-god{border-color:#e9d194;background:linear-gradient(115deg,#fffdf3,#fcf1cf 85%);box-shadow:0 2px 12px rgba(210,170,70,.2)}
  .tmRow.r-god::before{background:linear-gradient(180deg,#f0cd6e,var(--gold))}
  .tmAva{position:relative;width:44px;height:44px;border-radius:12px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:25px;
    background:linear-gradient(160deg,#f0f1f4,#e1e4ea);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.7)}
  .tmAva.r-rare{background:linear-gradient(160deg,#e6edfd,#ccd9f8);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.8)}
  .tmAva.r-god{background:linear-gradient(160deg,#ffefc2,#fbd97e);box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.85),0 0 12px rgba(230,180,74,.55)}
  .tmAva.r-god::after{content:'✨';position:absolute;top:-7px;right:-7px;font-size:12px;filter:drop-shadow(0 1px 2px rgba(180,140,40,.45))}
  .tmBody{flex:1;min-width:0}
  .tmTop{display:flex;align-items:center;gap:6px;min-width:0}
  .tmName{font-weight:800;font-size:14px;line-height:1.25;min-width:0;letter-spacing:.2px}
  .tmMeta{font-size:12px;color:var(--muted);margin-top:3px;line-height:1.5}
  .tmRarTag{font-size:9.5px;font-weight:800;border-radius:6px;padding:1.5px 6px;white-space:nowrap;flex-shrink:0;letter-spacing:.3px}
  .tmRarTag.t-common{background:#ededf0;color:#84848f}
  .tmRarTag.t-rare{background:#e3ebfc;color:#5570c9}
  .tmRarTag.t-god{background:linear-gradient(120deg,#ffe9ac,#fbd97e);color:#8a6414;box-shadow:0 1px 3px rgba(210,170,70,.35)}
  .tmChip{display:inline-block;font-size:10px;font-weight:700;border-radius:6px;padding:2px 7px;white-space:nowrap}
  .tmChip.lv{background:#e9edf9;color:#5b6b8c;flex-shrink:0}
  .tmChip.ct{background:#f2f0ec;color:#95908a}
  .tmChip.ct.warn{background:#fdeceb;color:#c0504d}
  .tmChip.lock{background:#fbeecb;color:#a8842f}
  .tmCost{font-size:12px;font-weight:800;color:#a8842f;background:rgba(200,162,74,.15);border-radius:8px;padding:3px 9px;white-space:nowrap;flex-shrink:0;margin-left:auto}
  .tmActRow{display:flex;gap:8px;margin-top:8px}
  .tmBtn{flex:1;border:0;border-radius:10px;padding:8px 10px;font-size:12.5px;font-weight:700;color:#fff;background:linear-gradient(135deg,#66779b,var(--wolf));white-space:nowrap;box-shadow:0 2px 5px rgba(91,107,140,.28)}
  .tmBtn.r{background:linear-gradient(135deg,#e79ab4,var(--rabbit));box-shadow:0 2px 5px rgba(224,138,166,.3)}
  .tmBtn:active{transform:scale(.97)}
  .tmEmpty{color:var(--muted);font-size:12.5px;text-align:center;padding:18px 8px}
  /* —— 我的：三层卡（① 身份 / ② 派驻分段器 / ③ 操作行）—— */
  .tmRow.tmMine{display:block;padding:11px 12px 11px 15px}
  .tmMine .tmHd{display:flex;align-items:center;gap:10px;min-width:0}
  .tmMine .tmHd .tmAva{width:42px;height:42px;border-radius:11px;font-size:23px}
  .tmHdTx{flex:1;min-width:0}
  .tmNmLine{display:flex;align-items:center;gap:6px;min-width:0}
  .tmNmLine .tmName{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .tmChips{display:flex;align-items:center;gap:5px;margin-top:4px;flex-wrap:wrap}
  .tmMine .tmSeg{margin-top:10px;padding-top:10px;border-top:1px dashed #e8e1d4}
  .tmSeg{display:flex;background:transparent;gap:0}
  .tmSeg button{flex:1;border:0;background:#edeef1;padding:8px 4px;font-size:12px;font-weight:700;color:#8b8a97;white-space:nowrap;line-height:1.3;border-radius:0}
  .tmSeg button:first-child{border-radius:10px 0 0 10px}
  .tmSeg button:last-child{border-radius:0 10px 10px 0}
  .tmSeg button.on{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 1.5px #d5d6dd,0 1px 4px rgba(0,0,0,.1)}
  .tmSeg button.on.farm{color:#2e9d5b;box-shadow:inset 0 0 0 1.5px #a9d8bc,0 1px 4px rgba(46,157,91,.15)}
  .tmSeg button.on.shop{color:#a8842f;box-shadow:inset 0 0 0 1.5px #e4cd92,0 1px 4px rgba(168,132,47,.15)}
  .tmSeg button.on.winery{color:#5bb98c;box-shadow:inset 0 0 0 1.5px #b8e0cc,0 1px 4px rgba(91,185,140,.15)}
  .tmSeg button.on.alchemy{color:#8a6fb0;box-shadow:inset 0 0 0 1.5px #cfc0e4,0 1px 4px rgba(138,111,176,.15)}
  .tmSeg button.on.idle{color:#7a7a85}
  .tmActs{display:flex;gap:7px;margin-top:9px;align-items:stretch}
  .tmUp{flex:1;min-width:0;border:0;border-radius:10px;padding:7px 6px;font-size:12px;font-weight:800;color:#8a6414;
    background:linear-gradient(120deg,#ffe9ac,#fbd97e);box-shadow:0 1px 4px rgba(210,170,70,.32);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .tmUp em{font-style:normal;font-weight:800;font-size:11px;background:rgba(255,255,255,.6);border-radius:6px;padding:1.5px 7px;margin-left:7px;vertical-align:.5px}
  .tmUp:active{transform:scale(.97)}
  .tmMax{flex:1;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#b0a892;background:#f5f2ea;border-radius:10px}
  .tmIco{border:0;border-radius:10px;width:42px;min-height:32px;padding:0;font-size:14px;font-weight:700;background:#f0ece3;color:#7a6f5d;line-height:1;flex-shrink:0}
  .tmIco.g{background:linear-gradient(120deg,#fdeec4,#fbe3a0);color:#a8842f;box-shadow:0 1px 3px rgba(210,170,70,.3)}
  .tmIco.red{background:#fbe4e2;color:#c0504d}
  .wn-btn.red,.alc-btn.red{background:#fbe4e2;color:#c0504d;border:none}
  .tmIco:active{transform:scale(.94)}
  .tmIco:disabled{opacity:.4}
  .tmCombo{margin-top:10px;font-size:11.5px;color:#8a6fb0;background:linear-gradient(120deg,#f7f2fc,#f1eaf9);border:1px solid #e6dcf2;border-radius:10px;padding:8px 11px;font-weight:700;line-height:1.5}
  .tmComboTags{display:inline}
  .tmComboTags i{font-style:normal;font-weight:700;background:#fff;border-radius:7px;padding:2px 7px;margin-left:5px;box-shadow:0 1px 2px rgba(138,111,176,.18);white-space:nowrap;display:inline-block;margin-top:3px}
  /* —— 对方：挖角按钮 —— */
  .tmPoach{border:0;border-radius:11px;flex-shrink:0;width:52px;padding:6px 0 5px;font-size:17px;line-height:1.15;
    display:flex;flex-direction:column;align-items:center;gap:1px;color:#fff;
    background:linear-gradient(150deg,#e79ab4,var(--rabbit));box-shadow:0 2px 6px rgba(224,138,166,.35)}
  .tmPoach em{font-style:normal;font-size:9.5px;font-weight:800;letter-spacing:.5px}
  .tmPoach:disabled{background:#e3ded6;color:#a49c8f;box-shadow:none}
  .tmPoach:active{transform:scale(.96)}
  /* —— 图鉴：羁绊 + 分稀有度图鉴 —— */
  .tmComboRow{display:flex;align-items:flex-start;gap:9px;padding:8px 9px;border-radius:10px;background:#faf8f4;border:1px solid #f0ebe1;margin-bottom:7px}
  .tmComboRow:last-child{margin-bottom:0}
  .tmComboRow.on{background:linear-gradient(115deg,#f8f3fe,#f1e9fb);border-color:#dcc9f0}
  .tmComboIc{width:30px;height:30px;border-radius:9px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:17px;background:#fff;box-shadow:0 1px 3px rgba(60,50,40,.1)}
  .tmComboTx{flex:1;min-width:0}
  .tmComboTx b{font-size:13px;display:block;line-height:1.3}
  .tmComboTx span{font-size:12px;color:var(--muted);line-height:1.5;display:block;margin-top:2px}
  .tmOnTag{font-style:normal;font-size:9px;font-weight:800;color:#fff;background:linear-gradient(120deg,#a98ccb,#8a6fb0);border-radius:5px;padding:1px 5px;margin-left:6px;vertical-align:1px}
  .tmSecHd{display:flex;align-items:center;gap:8px;margin:15px 1px 9px}
  .tmSecHd:first-of-type{margin-top:2px}
  .tmSecHd .tmRarTag{font-size:11px;padding:3.5px 10px;border-radius:8px}
  .tmSecHd em{font-style:normal;font-size:11px;font-weight:700;color:#a89f8f;flex-shrink:0}
  .tmSecHd i{flex:1;height:1px;background:linear-gradient(90deg,#e6dfd2,transparent)}
  .tmSecHd.s-god i{background:linear-gradient(90deg,#eed9a2,transparent)}
  .tmSecHd.s-rare i{background:linear-gradient(90deg,#ccd9f4,transparent)}
  .tmRosterRow{display:flex;align-items:flex-start;gap:10px;padding:9px 10px 9px 13px;border-radius:12px;margin-bottom:7px;
    background:#fdfcfa;border:1px solid #efeae1;position:relative}
  .tmRosterRow::before{content:'';position:absolute;left:-1px;top:8px;bottom:8px;width:3.5px;border-radius:0 4px 4px 0;background:#d8d8de}
  .tmRosterRow.r-rare{border-color:#dfe6f6;background:linear-gradient(115deg,#fbfcff,#f7f9fe)}
  .tmRosterRow.r-rare::before{background:linear-gradient(180deg,#8fa8ec,#6d87d6)}
  .tmRosterRow.r-god{border-color:#ecd9a4;background:linear-gradient(115deg,#fffdf4,#fdf5dd)}
  .tmRosterRow.r-god::before{background:linear-gradient(180deg,#f0cd6e,var(--gold))}
  .tmRosterRow:last-child{margin-bottom:0}
  .tmRosterRow .tmAva{width:40px;height:40px;border-radius:11px;font-size:22px;margin-top:1px}
  .tmRosterRow .tmName{font-size:13.5px;margin-bottom:1px}
  .tmSpec{display:flex;gap:6px;font-size:12px;color:#6f6e78;line-height:1.5;margin-top:3px}
  .tmSpec i{font-style:normal;flex-shrink:0;font-size:11px;opacity:.9;margin-top:1px}
  .tmSpec.sk{color:#96741f;background:rgba(230,190,90,.13);border-radius:7px;padding:4px 8px;margin-top:5px}
  .tmSpec.sk b{font-weight:800}
  /* —— 分页 tab —— */
  .tmTabs{display:flex;gap:6px;margin-bottom:12px}
  .tmTabs button{flex:1;border:0;border-radius:11px;padding:9px 3px;font-size:12.5px;font-weight:700;background:#ece7dd;color:#8a7f6d;display:flex;flex-direction:column;align-items:center;gap:1px;line-height:1.2}
  .tmTabs button.on{background:linear-gradient(135deg,var(--wolf),var(--rabbit));color:#fff;box-shadow:0 2px 8px rgba(91,107,140,.25)}
  .tmTabs button .n{font-size:9.5px;opacity:.85;font-weight:600}

  /* ══════════ ⚗️ Y06 炼金工坊 · Fable5 重构（全部 alc- 命名，作用域隔离） ══════════ */
  #alchemy{--av1:#6d4b9e;--av2:#a06fc5;--aglow:#c9a0ff;--agold:#e8c15a;--aink:#2a2140}
  #alchemy .alc-wrap{display:flex;flex-direction:column;gap:12px}
  .alc-rise{animation:alcRise .5s cubic-bezier(.2,.7,.3,1) both}
  @keyframes alcRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}

  /* ── HERO 炉膛 ── */
  .alc-hero{position:relative;overflow:hidden;border-radius:20px;padding:20px 16px 16px;
    background:radial-gradient(120% 90% at 50% -10%,#5b3a94 0%,#3a2263 45%,#241542 100%);
    box-shadow:0 12px 30px -10px rgba(58,34,99,.7),inset 0 1px 0 rgba(255,255,255,.12);color:#fff}
  .alc-hero .alc-bg{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden}
  .alc-hero .alc-orb{position:absolute;border-radius:50%;filter:blur(22px);opacity:.5;animation:alcDrift 9s ease-in-out infinite}
  .alc-hero .alc-orb.o1{width:150px;height:150px;background:#8a5fd0;top:-40px;left:-30px}
  .alc-hero .alc-orb.o2{width:120px;height:120px;background:#c98adf;bottom:-40px;right:-20px;animation-delay:-3s}
  .alc-hero .alc-orb.o3{width:90px;height:90px;background:#f0c46a;top:30px;right:40px;opacity:.35;animation-delay:-5s}
  @keyframes alcDrift{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(14px,-12px) scale(1.12)}}
  .alc-hero .alc-htop{position:relative;display:flex;align-items:center;gap:14px}
  .alc-furnace{position:relative;width:76px;height:76px;flex-shrink:0;display:grid;place-items:center}
  .alc-furnace .ring{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;
    background:radial-gradient(circle,rgba(240,196,106,.55),rgba(201,160,255,.15) 60%,transparent 72%);animation:alcPulse 2.6s ease-in-out infinite}
  @keyframes alcPulse{0%,100%{transform:scale(1);opacity:.85}50%{transform:scale(1.15);opacity:1}}
  .alc-furnace .core{position:relative;font-size:40px;line-height:1;filter:drop-shadow(0 3px 8px rgba(240,180,90,.7));animation:alcFlame 1.8s ease-in-out infinite}
  @keyframes alcFlame{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-3px) rotate(2deg)}}
  .alc-furnace .lv{position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);white-space:nowrap;
    background:linear-gradient(180deg,#f6d67a,#d99b32);color:#4a2c07;font-size:10px;font-weight:900;
    padding:2px 8px;border-radius:10px;box-shadow:0 2px 6px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.5)}
  .alc-hero .alc-htitle{flex:1;min-width:0}
  .alc-hero .alc-htitle .t{font-size:19px;font-weight:900;letter-spacing:1px;text-shadow:0 2px 8px rgba(0,0,0,.35)}
  .alc-hero .alc-htitle .s{font-size:11px;opacity:.8;margin-top:2px}
  .alc-hero .alc-htitle .s.alc-talent{opacity:1;color:#8a6fb0;font-weight:700}
  .alc-dexbar{margin-top:8px;height:7px;border-radius:6px;background:rgba(255,255,255,.16);overflow:hidden}
  .alc-dexbar>i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#f6d67a,#c9a0ff);box-shadow:0 0 8px rgba(201,160,255,.8);transition:width .6s cubic-bezier(.2,.7,.3,1)}
  .alc-stats{position:relative;display:flex;gap:8px;margin-top:14px}
  .alc-stat{flex:1;background:rgba(255,255,255,.1);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.18);
    border-radius:14px;padding:9px 6px;text-align:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.15)}
  .alc-stat .n{font-size:18px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;text-shadow:0 1px 4px rgba(0,0,0,.3)}
  .alc-stat .l{font-size:10px;opacity:.82;margin-top:3px}
  .alc-stat.cat{background:linear-gradient(180deg,rgba(224,80,60,.4),rgba(224,80,60,.15));border-color:rgba(255,180,170,.5)}

  /* ── 通用玻璃面板 ── */
  .alc-panel{background:#fff;border-radius:16px;padding:12px 13px;box-shadow:0 6px 18px -10px rgba(80,50,120,.35),0 1px 0 rgba(255,255,255,.6) inset;border:1px solid #efe8f7}
  .alc-h{display:flex;align-items:center;gap:8px;margin-bottom:9px}
  .alc-h .ic{width:28px;height:28px;flex-shrink:0;display:grid;place-items:center;border-radius:9px;font-size:15px;
    background:linear-gradient(180deg,#f2e9fb,#e6d7f6);box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
  .alc-h .tt{font-size:14px;font-weight:800;color:var(--aink)}
  .alc-h .note{font-size:10.5px;color:var(--muted);font-weight:500;margin-left:auto;text-align:right}
  .alc-row{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px solid #f2eef8}
  .alc-row:last-child{border-bottom:0}
  .alc-em{font-size:23px;flex-shrink:0;filter:drop-shadow(0 2px 3px rgba(120,90,160,.25))}
  .alc-rmid{flex:1;min-width:0}
  .alc-rmid b{font-size:13.5px;color:var(--aink)}
  .alc-rmid .sub2{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.5}

  /* 按钮 */
  .alc-btn{border:0;border-radius:11px;padding:7px 15px;font-size:13px;font-weight:800;color:#fff;
    background:linear-gradient(180deg,#8a5fd0,#6d4b9e);box-shadow:0 4px 10px -3px rgba(109,75,158,.7),inset 0 1px 0 rgba(255,255,255,.3);
    cursor:pointer;transition:transform .08s,box-shadow .2s;white-space:nowrap}
  .alc-btn:active{transform:translateY(1px) scale(.97)}
  .alc-btn.gold{background:linear-gradient(180deg,#f0c46a,#d69a2c);color:#4a2c07;box-shadow:0 4px 10px -3px rgba(214,154,44,.6),inset 0 1px 0 rgba(255,255,255,.5)}
  .alc-btn.pink{background:linear-gradient(180deg,#ec8fb0,#d56a9a)}
  .alc-btn.sm{padding:5px 12px;font-size:12px;border-radius:9px}
  .alc-btn.off{opacity:.4;pointer-events:none;filter:grayscale(.3)}
  .alc-btn.can{animation:alcCan 1.7s ease-in-out infinite}
  @keyframes alcCan{0%,100%{box-shadow:0 4px 10px -3px rgba(109,75,158,.7),inset 0 1px 0 rgba(255,255,255,.3)}50%{box-shadow:0 4px 18px -1px rgba(160,111,197,.95),0 0 0 3px rgba(201,160,255,.35),inset 0 1px 0 rgba(255,255,255,.3)}}

  /* ── 采气 ── */
  .alc-gather{position:relative;overflow:hidden;background:linear-gradient(135deg,#f3ecfb,#faf5ff);border:1px solid #e7d9f7}
  .alc-gather .gwrap{display:flex;align-items:center;gap:14px}
  .alc-gring{position:relative;width:58px;height:58px;flex-shrink:0}
  .alc-gring svg{transform:rotate(-90deg)}
  .alc-gring .pk{position:absolute;top:0;left:0;right:0;bottom:0;display:grid;place-items:center;font-size:24px;animation:alcPick 2.2s ease-in-out infinite}
  @keyframes alcPick{0%,60%,100%{transform:rotate(0)}70%{transform:rotate(-22deg)}80%{transform:rotate(6deg)}90%{transform:rotate(-10deg)}}
  .alc-gather .gtxt{flex:1;min-width:0}
  .alc-gather .gtxt b{font-size:14px;color:var(--aink)}
  .alc-gather .gtxt .sub2{font-size:11px;color:#8a7aa5;margin-top:2px;line-height:1.5}

  /* ── 合成树 ── */
  .alc-tier{position:relative;margin:4px 0 2px}
  .alc-tier .lab{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;color:#8a5fc0;
    background:linear-gradient(90deg,#efe4fb,rgba(239,228,251,0));padding:3px 12px 3px 8px;border-radius:0 12px 12px 0;border-left:3px solid #a06fc5}
  .alc-tier.t3 .lab{color:#d56a9a;border-color:#e08aa6;background:linear-gradient(90deg,#fbe4ef,rgba(251,228,239,0))}
  .alc-recipe{position:relative;display:flex;align-items:center;gap:11px;padding:11px 12px;margin-top:8px;border-radius:15px;
    background:linear-gradient(180deg,#ffffff,#faf7fe);border:1px solid #eee3f7;
    box-shadow:0 4px 14px -8px rgba(110,75,158,.4);overflow:hidden;transition:box-shadow .25s,transform .1s}
  .alc-recipe.can{border-color:#d3b8f0;box-shadow:0 6px 20px -8px rgba(160,111,197,.6);animation:alcRecGlow 2.4s ease-in-out infinite}
  @keyframes alcRecGlow{0%,100%{box-shadow:0 6px 20px -8px rgba(160,111,197,.55)}50%{box-shadow:0 8px 26px -6px rgba(160,111,197,.85)}}
  .alc-recipe.locked{opacity:.72;background:linear-gradient(180deg,#f7f5fa,#f1eef6)}
  .alc-recipe.coop{border-color:#f2cfe0}
  .alc-recipe.coop::after{content:'💞';position:absolute;top:-6px;right:-6px;font-size:26px;opacity:.16;transform:rotate(15deg)}
  .alc-orb{position:relative;width:50px;height:50px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
    background:radial-gradient(circle at 35% 30%,#fff,#efe3fb 55%,#dcc7f2);box-shadow:0 3px 10px -3px rgba(120,80,170,.5),inset 0 -3px 6px rgba(160,120,200,.2)}
  .alc-orb .e{font-size:27px;animation:alcFloat 3.4s ease-in-out infinite;filter:drop-shadow(0 2px 3px rgba(120,80,170,.35))}
  @keyframes alcFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
  .alc-recipe.can .alc-orb{background:radial-gradient(circle at 35% 30%,#fff,#f7e6c4 50%,#f0c46a);box-shadow:0 3px 14px -2px rgba(230,180,90,.75),inset 0 -3px 6px rgba(210,160,70,.3)}
  .alc-recipe.locked .alc-orb .e{filter:grayscale(.9) opacity(.7)}
  .alc-orb .qm{position:absolute;top:0;left:0;right:0;bottom:0;display:grid;place-items:center;font-size:24px;font-weight:900;color:#b9a7d4;background:rgba(247,244,250,.72);border-radius:50%;backdrop-filter:blur(1px)}
  .alc-rname{flex:1;min-width:0}
  .alc-rname .nm{font-size:14px;font-weight:800;color:var(--aink);display:flex;align-items:center;gap:5px;flex-wrap:wrap}
  .alc-badge{font-size:9.5px;font-weight:800;padding:1px 6px;border-radius:7px;line-height:1.5}
  .alc-badge.disc{background:#e3f6ec;color:#3f9e6d}
  .alc-badge.new{background:#fbf0d8;color:#b9862a}
  .alc-ins{margin-top:5px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
  .alc-chip{display:inline-flex;align-items:center;gap:1px;font-size:11.5px;font-weight:700;padding:2px 7px;border-radius:9px}
  .alc-chip.ok{background:#e6f5ec;color:#3f9e6d}
  .alc-chip.no{background:#fce8e6;color:#c0392b}
  .alc-plus{color:#c3b3dc;font-size:11px;font-weight:800}
  .alc-lock{display:inline-block;margin-top:5px;font-size:10.5px;font-weight:700;color:#b06a8c;background:#f8ecf3;padding:2px 8px;border-radius:8px}
  .alc-recipe.locked .alc-lock{color:#8a7aa0;background:#eee9f4}

  /* 库存 pills */
  .alc-inv{display:flex;flex-wrap:wrap;gap:6px}
  .alc-ipill{display:inline-flex;align-items:center;gap:3px;padding:4px 10px;border-radius:11px;font-size:12.5px;font-weight:700;
    background:linear-gradient(180deg,#f6eefc,#efe3f9);color:#6d4b9e;box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 1px 3px rgba(140,95,192,.12)}
  .alc-ipill .c{color:#a06fc5;font-weight:900}
  .alc-ipill.t0{background:linear-gradient(180deg,#eef4fb,#e3edf8);color:#5b6b8c}
  .alc-ipill.t0 .c{color:#5b6b8c}

  /* 供货 生效 badge */
  .alc-live{display:inline-block;font-size:10px;font-weight:800;color:#3f9e6d;background:#e3f6ec;padding:1px 7px;border-radius:8px;animation:alcLive 1.8s ease-in-out infinite}
  @keyframes alcLive{0%,100%{opacity:1}50%{opacity:.55}}

  /* cofire */
  .alc-cofire{text-align:center;background:linear-gradient(135deg,#fbeef4,#fff5fa);border:1px solid #f4d6e5}
  .alc-cofire .st{font-size:12.5px;margin-bottom:9px;color:#a05678;font-weight:600}
  .alc-cofire .st .done{color:#d56a9a;font-weight:900}
  .alc-tick{display:inline-block;margin:0 3px;font-weight:800}

  /* help */
  .alc-help{background:linear-gradient(135deg,#f3ecfb,#f9f4ff);border:1px solid #e7d9f7;border-radius:16px;padding:12px 13px}
  .alc-help .hh{display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-weight:800;font-size:14px;color:var(--aink)}
  .alc-help .hh .tg{font-size:11px;color:#a06fc5;font-weight:700}
  .alc-help .hb{font-size:12.5px;line-height:1.75;margin-top:9px;color:#4a4458}
  .alc-help .hb .goal{font-weight:800;color:#8a5fc0;margin-bottom:5px}
  .alc-help .hb .tip{margin-top:6px;color:#9a90ad;font-size:11.5px}

  /* log */
  .alc-log{max-height:220px;overflow-y:auto}
  .alc-log .lg{font-size:11.5px;padding:5px 0;border-bottom:1px solid #f4f0f8;display:flex;gap:7px}
  .alc-log .lg .tm{color:#b7a9cf;flex-shrink:0;font-variant-numeric:tabular-nums}
  .alc-empty{color:var(--muted);font-size:12.5px;text-align:center;padding:14px}
  /* exchange input */
  .alc-exin{width:72px;padding:7px 8px;border:1px solid #ddd0ef;border-radius:10px;font-size:14px;font-weight:700;color:var(--aink);background:#fbf9fe}

  /* ── v2: Offline Events Banner ── */
  .alc-offline-banner{background:linear-gradient(135deg,#fef9e7,#fdf2d5);border:1px solid #f0d58a;
    border-radius:14px;padding:10px 13px;font-size:12px;font-weight:600;color:#7a5c10;
    display:flex;flex-wrap:wrap;align-items:center;gap:8px;animation:alcRise .4s ease both}
  .alc-offline-banner .alc-off-dismiss{font-size:11px;color:#999;cursor:pointer;margin-left:auto;
    padding:3px 8px;border-radius:8px;background:rgba(255,255,255,.6);white-space:nowrap}

  /* ── v2: Cauldron Visualization ── */
  .alc-cauldron{position:relative;width:76px;height:76px;flex-shrink:0;display:grid;place-items:center}
  .cauldron-body{position:absolute;bottom:8px;width:52px;height:36px;
    background:linear-gradient(180deg,#5a4a3a,#3a2e24);border-radius:50% 50% 40% 40%/60% 60% 30% 30%;
    box-shadow:inset 0 -4px 8px rgba(0,0,0,.4),0 2px 6px rgba(0,0,0,.3)}
  .cauldron-liquid{position:absolute;bottom:12px;width:44px;height:18px;
    background:radial-gradient(ellipse at center,#c98adf,#6d4b9e);
    border-radius:50%;transition:background .6s}
  .brewing .cauldron-liquid{background:radial-gradient(ellipse at center,#f0a040,#c96a20);
    animation:cauldronBoil .4s ease-in-out infinite}
  @keyframes cauldronBoil{0%,100%{transform:scaleY(1) scaleX(1)}50%{transform:scaleY(1.3) scaleX(.9)}}
  .cauldron-bubbles{position:absolute;bottom:20px;width:40px;height:20px}
  .bub{position:absolute;width:6px;height:6px;background:rgba(200,160,240,.6);
    border-radius:50%;animation:cauldronBub 2.8s ease-in-out infinite;opacity:0}
  .bub.b1{left:8px;animation-delay:0s}.bub.b2{left:18px;animation-delay:.7s}
  .bub.b3{left:26px;animation-delay:1.4s}.bub.b4{left:32px;animation-delay:2.1s}
  @keyframes cauldronBub{0%{opacity:0;transform:translateY(0) scale(.4)}30%{opacity:.7;transform:translateY(-8px) scale(1)}80%{opacity:.3;transform:translateY(-18px) scale(.6)}100%{opacity:0;transform:translateY(-22px) scale(.2)}}
  .brewing .bub{animation-duration:1.4s}
  .cauldron-glow{position:absolute;top:-6px;left:-6px;right:-6px;bottom:-6px;border-radius:50%;
    background:radial-gradient(circle,rgba(200,160,255,.3),transparent 65%);
    animation:alcPulse 2.6s ease-in-out infinite}
  .brewing .cauldron-glow{background:radial-gradient(circle,rgba(240,140,40,.5),transparent 65%)}
  .cauldron-core{position:relative;font-size:32px;z-index:2;
    filter:drop-shadow(0 2px 6px rgba(240,180,90,.6));animation:alcFlame 1.8s ease-in-out infinite}
  .cauldron-lv{position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);
    background:linear-gradient(180deg,#f6d67a,#d99b32);color:#4a2c07;font-size:10px;font-weight:900;
    padding:2px 8px;border-radius:10px;box-shadow:0 2px 6px rgba(0,0,0,.35)}
  .alc-cauldron.success .cauldron-liquid{background:radial-gradient(ellipse at center,#f6d67a,#c9a0ff);
    animation:cauldronBurst .5s ease-out}
  @keyframes cauldronBurst{0%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.4);filter:brightness(2)}100%{transform:scale(1);filter:brightness(1)}}
  .alc-cauldron.boom .cauldron-liquid{background:radial-gradient(ellipse at center,#888,#444)}
  .alc-cauldron.boom{animation:cauldronShake .3s ease-in-out 3}
  @keyframes cauldronShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

  /* ── v2: Temperature Picker ── */
  .alc-temp-sel{display:flex;gap:4px;margin:6px 0}
  .alc-temp-btn{border:1px solid #ddd0ef;border-radius:8px;padding:3px 8px;font-size:13px;
    background:#faf7fe;cursor:pointer;transition:all .15s}
  .alc-temp-btn.active{background:#8a5fd0;color:#fff;border-color:#8a5fd0}
  .alc-temp-btn.opt{position:relative}
  .alc-temp-btn.opt::after{content:'⭐';position:absolute;top:-6px;right:-4px;font-size:9px}
  .alc-temp-btn.locked{opacity:.35;cursor:not-allowed;background:#f0eef4}
  .alc-temp-btn:active{transform:scale(.94)}

  /* ── v2: Experiment Panel ── */
  .alc-chip-btn{border:1px solid #ddd0ef;border-radius:10px;padding:5px 10px;
    font-size:11.5px;font-weight:700;background:#faf7fe;cursor:pointer;transition:all .15s}
  .alc-chip-btn.sel{background:#8a5fd0;color:#fff;border-color:#8a5fd0}

  /* ── v2: Mystery Recipe ── */
  .alc-recipe.mystery{opacity:.65;background:linear-gradient(180deg,#f7f5fa,#f0edf4);border-style:dashed}
  .alc-recipe.mystery .alc-orb{background:radial-gradient(circle at 35% 30%,#fff,#ddd 55%,#ccc);
    box-shadow:0 3px 10px -3px rgba(100,100,100,.3)}
  .alc-recipe.mystery .alc-orb .e{filter:grayscale(.7);animation:none}

  /* ── v2: Mutation Badge ── */
  .alc-badge.mut{background:linear-gradient(135deg,#f3e8ff,#fce4f0);color:#8a3fb0;
    font-size:9.5px;padding:1px 6px;border-radius:7px}

  /* ── v3: Active Effects Strip ── */
  .alc-active-fx{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px;
    background:linear-gradient(135deg,#fef7fb,#fdf0f8);border:1px solid #f0d0e0;
    border-radius:12px;margin-bottom:4px}
  .alc-active-fx .fx-tag{font-size:11.5px;font-weight:700;color:#8a3060;
    background:rgba(255,255,255,.7);padding:3px 9px;border-radius:8px}

  /* ══════════ 🏮 Y03 狼兔民宿 · Fable5 重构 v2（全部 inn- 命名，作用域隔离） ══════════ */
  #inn{--iv1:#8a5230;--iv2:#c98a4a;--igold:#e8b15a;--iink:#3a2c1c}
  #inn .inn-wrap{display:flex;flex-direction:column;gap:12px}
  .inn-rise{animation:innRise .5s cubic-bezier(.2,.7,.3,1) both}
  @keyframes innRise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}

  /* ── HERO 灯笼门脸 ── */
  .inn-hero{position:relative;overflow:hidden;border-radius:20px;padding:20px 16px 16px;
    background:radial-gradient(120% 90% at 50% -10%,#9a5c2e 0%,#6b3a1c 45%,#40220f 100%);
    box-shadow:0 12px 30px -10px rgba(80,42,16,.7),inset 0 1px 0 rgba(255,255,255,.12);color:#fff}
  .inn-hero .inn-bg{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden}
  .inn-hero .inn-lan{position:absolute;border-radius:50%;filter:blur(22px);opacity:.5;animation:innDrift 9s ease-in-out infinite}
  .inn-hero .inn-lan.l1{width:150px;height:150px;background:#d98a3a;top:-40px;left:-30px}
  .inn-hero .inn-lan.l2{width:120px;height:120px;background:#e8b15a;bottom:-40px;right:-20px;animation-delay:-3s}
  .inn-hero .inn-lan.l3{width:90px;height:90px;background:#f0d08a;top:30px;right:40px;opacity:.35;animation-delay:-5s}
  @keyframes innDrift{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(14px,-12px) scale(1.12)}}
  .inn-hero .inn-htop{position:relative;display:flex;align-items:center;gap:14px}
  .inn-sign{position:relative;width:76px;height:76px;flex-shrink:0;display:grid;place-items:center}
  .inn-sign .ring{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:50%;
    background:radial-gradient(circle,rgba(240,196,106,.55),rgba(232,177,90,.15) 60%,transparent 72%);animation:innPulse 2.6s ease-in-out infinite}
  @keyframes innPulse{0%,100%{transform:scale(1);opacity:.85}50%{transform:scale(1.15);opacity:1}}
  .inn-sign .core{position:relative;font-size:40px;line-height:1;filter:drop-shadow(0 3px 8px rgba(240,180,90,.7));animation:innSway 2.6s ease-in-out infinite}
  @keyframes innSway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
  .inn-sign .lv{position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);white-space:nowrap;
    background:linear-gradient(180deg,#f6d67a,#d99b32);color:#4a2c07;font-size:10px;font-weight:900;
    padding:2px 8px;border-radius:10px;box-shadow:0 2px 6px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.5)}
  .inn-hero .inn-htitle{flex:1;min-width:0}
  .inn-hero .inn-htitle .t{font-size:19px;font-weight:900;letter-spacing:1px;text-shadow:0 2px 8px rgba(0,0,0,.35)}
  .inn-hero .inn-htitle .s{font-size:11px;opacity:.82;margin-top:2px}
  .inn-dexbar{margin-top:8px;height:7px;border-radius:6px;background:rgba(255,255,255,.16);overflow:hidden}
  .inn-dexbar>i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#f6d67a,#f0a86a);box-shadow:0 0 8px rgba(240,180,106,.8);transition:width .6s cubic-bezier(.2,.7,.3,1)}
  .inn-stats{position:relative;display:flex;gap:8px;margin-top:14px}
  .inn-stat{flex:1;background:rgba(255,255,255,.1);backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.18);
    border-radius:14px;padding:9px 4px;text-align:center;box-shadow:inset 0 1px 0 rgba(255,255,255,.15)}
  .inn-stat .n{font-size:16px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums;text-shadow:0 1px 4px rgba(0,0,0,.3);white-space:nowrap}
  .inn-stat .l{font-size:10px;opacity:.82;margin-top:3px}

  /* ── 通用面板 ── */
  .inn-panel{background:#fff;border-radius:16px;padding:12px 13px;box-shadow:0 6px 18px -10px rgba(120,70,30,.35),0 1px 0 rgba(255,255,255,.6) inset;border:1px solid #f2e7d8}
  .inn-h{display:flex;align-items:center;gap:8px;margin-bottom:9px}
  .inn-h .ic{width:28px;height:28px;flex-shrink:0;display:grid;place-items:center;border-radius:9px;font-size:15px;
    background:linear-gradient(180deg,#faefdc,#f2dfc2);box-shadow:inset 0 1px 0 rgba(255,255,255,.7)}
  .inn-h .tt{font-size:14px;font-weight:800;color:var(--iink)}
  .inn-h .note{font-size:10.5px;color:var(--muted);font-weight:500;margin-left:auto;text-align:right}
  .inn-row{display:flex;align-items:center;gap:9px;padding:8px 2px;border-bottom:1px solid #f6efe4}
  .inn-row:last-child{border-bottom:0}
  .inn-em{font-size:23px;flex-shrink:0;filter:drop-shadow(0 2px 3px rgba(150,100,50,.25))}
  .inn-rmid{flex:1;min-width:0}
  .inn-rmid b{font-size:13.5px;color:var(--iink)}
  .inn-rmid .sub2,#inn .sub2{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.5}
  .inn-empty{color:var(--muted);font-size:12.5px;text-align:center;padding:14px}

  /* 按钮 */
  .inn-btn{border:0;border-radius:11px;padding:7px 15px;font-size:13px;font-weight:800;color:#fff;
    background:linear-gradient(180deg,#c98a4a,#a5642c);box-shadow:0 4px 10px -3px rgba(165,100,44,.7),inset 0 1px 0 rgba(255,255,255,.3);
    cursor:pointer;transition:transform .08s,box-shadow .2s;white-space:nowrap}
  .inn-btn:active{transform:translateY(1px) scale(.97)}
  .inn-btn.gold{background:linear-gradient(180deg,#f0c46a,#d69a2c);color:#4a2c07;box-shadow:0 4px 10px -3px rgba(214,154,44,.6),inset 0 1px 0 rgba(255,255,255,.5)}
  .inn-btn.pink{background:linear-gradient(180deg,#ec8fb0,#d56a9a)}
  .inn-btn.blue{background:linear-gradient(180deg,#7da3cc,#5b7fa8)}
  .inn-btn.sm{padding:5px 12px;font-size:12px;border-radius:9px}
  .inn-btn.off{opacity:.4;pointer-events:none;filter:grayscale(.3)}

  /* ── 今日客流 banner ── */
  .inn-traffic{display:flex;align-items:center;gap:11px;border-radius:16px;padding:11px 13px;border:1.5px solid}
  .inn-traffic .em{font-size:26px;flex-shrink:0}
  .inn-traffic .tx{flex:1;min-width:0}
  .inn-traffic .tx b{font-size:14px}
  .inn-traffic.busy{background:linear-gradient(135deg,#fdeecd,#fbf5e2);border-color:#e6b85a;color:#7a4e10}
  .inn-traffic.normal{background:linear-gradient(135deg,#e7f2fb,#f2f8fd);border-color:#a9cbe8;color:#3a5a78}
  .inn-traffic.slow{background:linear-gradient(135deg,#eef1ee,#f6f7f6);border-color:#c7d0c7;color:#5a6a5a}
  .inn-traffic .sub2{color:inherit;opacity:.72}

  /* ── 到客机制面板 ── */
  .inn-arrival{background:linear-gradient(135deg,#fdfaf3,#f7efe0);border-radius:16px;padding:10px 12px;border:1.5px solid #e8d5b0}
  .inn-arrival .ar-head{display:flex;align-items:center;gap:6px;margin-bottom:8px;font-size:13px;color:#7a4e10}
  .inn-arrival .ar-head b{font-size:13px}
  .inn-arrival .ar-eta{margin-left:auto;font-size:10.5px;color:#b09060;font-weight:700;white-space:nowrap}
  .inn-arrival .ar-row{display:flex;align-items:flex-start;gap:6px;margin-bottom:6px}
  .inn-arrival .ar-row:last-child{margin-bottom:0}
  .inn-arrival .ar-icon{font-size:15px;flex-shrink:0;width:18px;text-align:center;line-height:1.4}
  .inn-arrival .ar-body{flex:1;min-width:0;overflow:hidden}
  .inn-arrival .ar-bar{margin-bottom:2px}
  .inn-arrival .ar-track{height:5px;background:#e8dcc8;border-radius:3px;overflow:hidden;margin-bottom:2px}
  .inn-arrival .ar-fill{height:100%;border-radius:3px;transition:width .3s}
  .inn-arrival .ar-fill.ar-rep{background:linear-gradient(90deg,#d98a3a,#f0c060)}
  .inn-arrival .ar-label{font-size:11px;color:#8a6f4d;font-weight:700}
  .inn-arrival .ar-detail{font-size:10px;color:#b09070;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .inn-arrival .ar-tiers{display:flex;align-items:center;gap:4px;margin-bottom:2px}
  .inn-arrival .ar-tier{font-size:11px;font-weight:700;padding:2px 7px;border-radius:7px;background:#e8dcc8;color:#8a6f4d}
  .inn-arrival .ar-tier.on{background:#d98a3a;color:#fff}
  .inn-arrival .ar-arrow{font-size:9px;color:#c0b090}
  .inn-arrival .ar-summary{margin-top:6px;padding-top:6px;border-top:1px dashed #e0d0b0;text-align:center;font-size:12px;color:#7a4e10;font-weight:700}

  /* ── 金牌掌柜周榜 ── */
  .inn-board .inn-vsrow{display:flex;align-items:stretch;gap:6px}
  .inn-board .side{position:relative;flex:1;text-align:center;border-radius:14px;padding:12px 6px 9px;border:1.5px solid transparent}
  .inn-board .side.wolf{background:linear-gradient(180deg,#eef1f7,#e3e9f2)}
  .inn-board .side.rabbit{background:linear-gradient(180deg,#fbeef3,#f8e2eb)}
  .inn-board .side.lead{border-color:#e8b15a;box-shadow:0 4px 14px -6px rgba(214,154,44,.7);animation:innLead 2.2s ease-in-out infinite}
  @keyframes innLead{0%,100%{box-shadow:0 4px 14px -6px rgba(214,154,44,.6)}50%{box-shadow:0 6px 20px -4px rgba(232,177,90,.9)}}
  .inn-board .crown{position:absolute;top:-13px;left:50%;transform:translateX(-50%) rotate(-8deg);font-size:22px;filter:drop-shadow(0 2px 4px rgba(180,120,30,.5));animation:innCrown 2.2s ease-in-out infinite}
  @keyframes innCrown{0%,100%{transform:translateX(-50%) rotate(-8deg) translateY(0)}50%{transform:translateX(-50%) rotate(-8deg) translateY(-3px)}}
  .inn-board .av{font-size:28px;line-height:1}
  .inn-board .nm{font-size:12px;font-weight:800;margin-top:3px;color:var(--iink)}
  .inn-board .num{font-size:17px;font-weight:900;margin-top:3px;color:#b9862a;font-variant-numeric:tabular-nums}
  .inn-board .gs{font-size:10.5px;color:var(--muted);margin-top:1px}
  .inn-board .vs{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;flex-shrink:0;padding:0 2px}
  .inn-board .vs .v{font-size:13px;font-weight:900;color:#d0b088;font-style:italic}
  .inn-board .vs .tie{font-size:9.5px;font-weight:700;color:var(--muted);white-space:nowrap}

  /* ── 房价 stepper ── */
  .inn-pricer{display:flex;align-items:center;gap:10px}
  .inn-pricer .pv{flex:1;text-align:center;font-weight:900;font-size:19px;color:var(--iink);font-variant-numeric:tabular-nums}
  .inn-pricer .inn-btn{min-width:52px}

  /* ── 房间卡 ── */
  .inn-room{position:relative;border-radius:15px;padding:11px 12px;margin-top:8px;overflow:hidden;
    background:linear-gradient(180deg,#ffffff,#fdf8f0);border:1px solid #f0e3cf;
    box-shadow:0 4px 14px -8px rgba(150,95,40,.4)}
  .inn-room:first-of-type{margin-top:0}
  .inn-room.rare{border-color:#e6c98a;background:linear-gradient(180deg,#fffdf6,#fdf4dd);box-shadow:0 5px 18px -8px rgba(214,164,60,.6)}
  .inn-room .rm-head{display:flex;align-items:baseline;gap:8px}
  .inn-room .rm-head b{font-size:14px;color:var(--iink)}
  .inn-room .rm-meta{font-size:11px;color:var(--muted)}
  .inn-cleanbar{height:6px;background:#f0e9dc;border-radius:4px;overflow:hidden;margin-top:5px}
  .inn-cleanbar>i{display:block;height:100%;border-radius:4px;transition:width .5s cubic-bezier(.2,.7,.3,1)}
  .inn-cleanbar>i.ok{background:linear-gradient(90deg,#6cc79a,#4fae82)}
  .inn-cleanbar>i.mid{background:linear-gradient(90deg,#eec06a,#dda43e)}
  .inn-cleanbar>i.low{background:linear-gradient(90deg,#e08a68,#cf6540)}
  .inn-room .rm-guest{display:flex;align-items:center;gap:10px;margin-top:9px}
  .inn-gorb{position:relative;width:48px;height:48px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;
    background:radial-gradient(circle at 35% 30%,#fff,#faeed8 55%,#f0d9ac);box-shadow:0 3px 10px -3px rgba(170,110,50,.5),inset 0 -3px 6px rgba(200,150,80,.2)}
  .inn-gorb .e{font-size:26px;animation:innFloat 3.4s ease-in-out infinite;filter:drop-shadow(0 2px 3px rgba(170,110,50,.35))}
  @keyframes innFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
  .inn-gorb.rare{background:radial-gradient(circle at 35% 30%,#fff,#f7e6c4 50%,#f0c46a);box-shadow:0 3px 14px -2px rgba(230,180,90,.75),inset 0 -3px 6px rgba(210,160,70,.3)}
  .inn-room .rm-ginfo{flex:1;min-width:0}
  .inn-room .gn{font-size:14px;font-weight:800;color:var(--iink)}
  .inn-room .gn.rare{color:#b9791a}
  .inn-room .gn .tag{font-size:10.5px;font-weight:600;color:var(--muted)}
  .inn-room .gl{font-size:11.5px;color:#7a6a52;margin-top:2px;line-height:1.5}
  .inn-room .gl b{color:var(--iink)}
  .inn-star0{color:#e3dac6}
  .inn-room .coopchip{display:inline-block;font-size:10px;font-weight:800;color:#d56a9a;background:#fbe9f1;padding:1px 7px;border-radius:8px}
  .inn-room .rm-empty{margin-top:9px;font-size:12px;color:#b6a88f;background:#faf5ea;border:1px dashed #e5d8bd;border-radius:11px;padding:12px;text-align:center}
  .inn-room .rm-btns{display:flex;gap:6px;margin-top:9px}
  .inn-room .rm-btns .inn-btn{flex:1}
  .inn-decor{display:block;width:100%;margin-top:7px;border:0;border-radius:10px;padding:6px 10px;font-size:11.5px;font-weight:800;
    color:#7a4fa0;background:linear-gradient(180deg,#f4ecfb,#eadcf7);box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 2px 6px -3px rgba(140,95,192,.5);cursor:pointer}
  .inn-decor.off{opacity:.5;pointer-events:none;filter:grayscale(.4)}
  .inn-room .rm-max{margin-top:7px;font-size:11px;font-weight:800;text-align:center;color:#b9862a;background:#fbf3dd;border-radius:9px;padding:4px}

  /* ── 心愿卡 ── */
  .inn-req{margin-top:9px;border-radius:13px;padding:10px 11px;background:linear-gradient(180deg,#fdf7ec,#faf0dc);border:1.5px solid #ecd8ad;
    box-shadow:0 3px 10px -6px rgba(190,140,60,.55)}
  .inn-req.crisis{background:linear-gradient(180deg,#fdf0ec,#fae2d8);border-color:#e8a88f;animation:innCrisis 1.8s ease-in-out infinite}
  @keyframes innCrisis{0%,100%{box-shadow:0 3px 10px -6px rgba(200,80,50,.5)}50%{box-shadow:0 4px 16px -4px rgba(210,90,55,.85),0 0 0 3px rgba(224,120,90,.22)}}
  .inn-req .rq-head{display:flex;align-items:flex-start;gap:9px}
  .inn-req .rq-ic{font-size:24px;flex-shrink:0;line-height:1.2;animation:innFloat 3s ease-in-out infinite}
  .inn-req .rq-tx{flex:1;min-width:0}
  .inn-req .rq-wish{display:inline-block;font-size:10px;font-weight:900;color:#b9862a;background:#f6e7c2;padding:1px 8px;border-radius:8px}
  .inn-req .rq-crisis{display:inline-block;font-size:10px;font-weight:900;color:#fff;background:linear-gradient(180deg,#e07a5a,#c95535);padding:1px 8px;border-radius:8px;box-shadow:0 2px 5px -2px rgba(200,85,53,.8)}
  .inn-req .rq-say{font-size:13px;font-weight:700;color:#5a4426;margin-top:4px;line-height:1.55}
  .inn-req.crisis .rq-say{color:#7a3a24}
  .inn-req .rq-opts{display:flex;flex-direction:column;gap:6px;margin-top:9px}
  .inn-opt{display:block;width:100%;text-align:left;border:1px solid #e5cf9e;border-radius:11px;padding:8px 12px;font-size:12.5px;font-weight:700;
    color:#6a4c22;background:linear-gradient(180deg,#fffdf6,#faf1dc);box-shadow:0 2px 6px -3px rgba(180,130,55,.5),inset 0 1px 0 rgba(255,255,255,.8);cursor:pointer;
    transition:transform .08s}
  .inn-opt:active{transform:translateY(1px) scale(.985)}
  .inn-req.crisis .inn-opt{border-color:#e8b49e;color:#7a3a24;background:linear-gradient(180deg,#fffaf7,#fbeade)}
  .inn-req .rq-done{margin-top:8px;display:inline-block;font-size:11.5px;font-weight:800;color:#3f9e6d;background:#e3f6ec;padding:3px 10px;border-radius:9px}

  /* ── 一起迎客 ── */
  .inn-welcome{text-align:center;background:linear-gradient(135deg,#fbeef4,#fff5fa);border:1px solid #f4d6e5}
  .inn-welcome .st{font-size:12.5px;margin-bottom:9px;color:#a05678;font-weight:600}
  .inn-welcome .st .done{color:#d56a9a;font-weight:900}
  .inn-tick{display:inline-block;margin:0 3px;font-weight:800}

  /* ── 图鉴 pills ── */
  .inn-dex{display:flex;flex-wrap:wrap;gap:6px}
  .inn-dpill{display:inline-flex;align-items:center;gap:3px;padding:4px 10px;border-radius:11px;font-size:12.5px;font-weight:700}
  .inn-dpill.got{background:linear-gradient(180deg,#f4faf0,#e8f4e0);color:#4a7a3a;box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 1px 3px rgba(100,150,80,.14)}
  .inn-dpill.got.rare{background:linear-gradient(180deg,#fdf6e2,#f8ebc4);color:#a8842f;box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 1px 4px rgba(200,160,74,.3)}
  .inn-dpill.miss{background:#f2f0ec;color:#c0bab0;filter:grayscale(1)}

  /* ── help ── */
  .inn-help{background:linear-gradient(135deg,#fbf3e4,#fdf9f0);border:1px solid #eeddc0;border-radius:16px;padding:12px 13px}
  .inn-help .hh{display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-weight:800;font-size:14px;color:var(--iink)}
  .inn-help .hh .tg{font-size:11px;color:#c08a3a;font-weight:700}
  .inn-help .hb{font-size:12.5px;line-height:1.75;margin-top:9px;color:#54483a}
  .inn-help .hb .goal{font-weight:800;color:#b9791a;margin-bottom:5px}
  .inn-help .hb .tip{margin-top:6px;color:#ab9c85;font-size:11.5px}

  /* ── reviews / log / exchange ── */
  .inn-reviews{background:linear-gradient(180deg,#fff,#fffaf1)}
  .inn-review{border:1.5px solid #f0e2c8;border-radius:14px;padding:9px 10px;margin-top:8px;background:linear-gradient(180deg,#fffdf8,#fbf4e8);box-shadow:0 3px 10px -7px rgba(130,80,30,.38)}
  .inn-review:first-child{margin-top:0}
  .inn-review.five{border-color:#e9c260;background:linear-gradient(180deg,#fffdf3,#fbf1cf)}
  .inn-review.low{border-color:#e7b8a6;background:linear-gradient(180deg,#fff8f4,#faece4)}
  .inn-review .iv{display:flex;align-items:center;gap:7px}
  .inn-review .em{font-size:18px;line-height:1}
  .inn-review .who{font-size:13px;font-weight:900;color:var(--iink);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .inn-review .tm{font-size:10px;font-weight:800;color:#c1aa82;font-variant-numeric:tabular-nums;white-space:nowrap}
  .inn-review .score{display:flex;align-items:center;gap:8px;margin-top:5px;min-width:0;flex-wrap:wrap}
  .inn-review .score span{font-size:12px;letter-spacing:-1px}
  .inn-review .score b{font-size:15px;font-weight:900;color:#b9791a;font-variant-numeric:tabular-nums}
  .inn-review .score i{font-style:normal;font-size:10.5px;font-weight:800;color:#8a7a62;white-space:nowrap}
  .inn-review .story{font-size:11.5px;line-height:1.55;color:#6a5840;margin-top:5px;background:rgba(255,255,255,.65);border-radius:9px;padding:6px 8px}
  .inn-review .tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
  .inn-review .tags span{font-size:10px;font-weight:900;color:#b04a72;background:#fff0f6;border-radius:999px;padding:2px 8px}

  /* ── log / exchange ── */
  .inn-log{max-height:220px;overflow-y:auto}
  .inn-log .lg{font-size:11.5px;padding:5px 0;border-bottom:1px solid #f6f1e6;display:flex;gap:7px}
  .inn-log .lg .tm{color:#cbb894;flex-shrink:0;font-variant-numeric:tabular-nums}
  .inn-exin{width:72px;padding:7px 8px;border:1px solid #e8d8ba;border-radius:10px;font-size:14px;font-weight:700;color:var(--iink);background:#fdfaf3}

/* ================= 狼兔家园 · 自由大地图 (app-12-worldmap) =================
   v0712-10 行走版：🐺🐰小人+方向键+镜头跟随 · 整屏地图 · HUD 浮层 · 足迹抽屉 */
.worldview.on{display:block;position:fixed;top:0;left:0;width:100vw;height:100vh;height:100dvh;z-index:800;overflow:hidden;background:#bfe6f5}
.wm-wrap{height:100%}
.wm-page{position:relative;height:100%;overflow:hidden}
/* 时段天空（地图小于视口的轴用它补边，像浮空小岛） */
.wm-page.wm-day{background:linear-gradient(180deg,#8ed4f2 0%,#bce8f7 34%,#d8f3e4 100%)}
.wm-page.wm-dawn{background:linear-gradient(180deg,#ffc9a3 0%,#ffe3bd 38%,#dcf0d8 100%)}
.wm-page.wm-dusk{background:linear-gradient(180deg,#f28e6d 0%,#ffc48f 42%,#cfe4c2 100%)}
.wm-page.wm-night{background:linear-gradient(180deg,#1c2547 0%,#2c3a63 48%,#3c5266 100%)}
.wm-loading{text-align:center;color:#8a7a62;padding:70px 16px 0;font-size:14px}
.wm-gate{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 30px;text-align:center;background:linear-gradient(180deg,#d4eaf7 0%,#f0f5e4 60%,#e8dcc8 100%);border-radius:16px;margin:20px 10px;min-height:70vh;box-shadow:0 4px 20px rgba(0,0,0,.08)}
.wm-gate-icon{font-size:64px;margin-bottom:16px}
.wm-gate-title{font-size:20px;font-weight:900;color:#5b4636;margin-bottom:8px}
.wm-gate-desc{font-size:14px;color:#8a7a62;margin-bottom:24px}
.wm-gate-btn{padding:14px 40px;font-size:16px;background:linear-gradient(135deg,#6b8e4e,#4a7c3f);color:#fff;border-radius:14px;box-shadow:0 4px 14px rgba(74,124,63,.35)}
/* 氛围层：云/星/日月飘在地图上空（不挡点击） */
.wm-air{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;overflow:hidden;z-index:3}
.wm-orb{position:absolute;top:calc(58px + env(safe-area-inset-top,0px));right:14px;font-size:30px;opacity:.95;filter:drop-shadow(0 0 14px rgba(255,240,180,.9));animation:wmBob 5s ease-in-out infinite}
.wm-night .wm-orb{filter:drop-shadow(0 0 12px rgba(200,220,255,.85))}
.wm-cloud{position:absolute;font-size:30px;opacity:.5;animation:wmDrift linear infinite}
.wm-cloud.c1{top:12%;animation-duration:52s}
.wm-cloud.c2{top:30%;font-size:22px;opacity:.4;animation-duration:74s;animation-delay:-30s}
.wm-cloud.c3{top:48%;font-size:24px;opacity:.35;animation-duration:63s;animation-delay:-48s}
@keyframes wmDrift{from{left:-14%}to{left:104%}}
.wm-star{position:absolute;color:#ffe9a8;font-size:11px;animation:wmTwinkle 2.4s ease-in-out infinite}
@keyframes wmTwinkle{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes wmBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
/* 顶栏：浮在地图上的半透明胶囊 */
.wm-top{position:absolute;top:0;left:0;right:0;z-index:8;display:flex;align-items:center;gap:8px;padding:calc(10px + env(safe-area-inset-top,0px)) 12px 0;pointer-events:none;flex-wrap:wrap}
.wm-back{pointer-events:auto;border:0;background:rgba(255,252,243,.88);color:#6b5335;font-weight:800;font-size:13.5px;border-radius:999px;padding:7px 12px;box-shadow:0 2px 6px rgba(60,40,10,.22);cursor:pointer;-webkit-tap-highlight-color:transparent;backdrop-filter:blur(3px);flex:0 0 auto}
#wmCoinBadge{pointer-events:auto}
.wm-title{flex:1 1 118px;text-align:center;font-size:15.5px;font-weight:900;color:#fff;text-shadow:0 2px 6px rgba(40,30,10,.45);letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.wm-clock{background:rgba(255,252,243,.88);color:#6b5335;font-size:11px;font-weight:800;border-radius:999px;padding:7px 10px;box-shadow:0 2px 6px rgba(60,40,10,.22);white-space:nowrap;backdrop-filter:blur(3px);flex:0 0 auto}
@media (max-width:420px){
  .wm-top{gap:7px;padding:calc(8px + env(safe-area-inset-top,0px)) 10px 0;justify-content:space-between}
  .wm-back{font-size:12.5px;padding:7px 10px;order:1}
  .wm-title{order:2;flex:1 1 calc(100% - 176px);font-size:14.5px;text-align:left}
  .wm-tutor-q{order:3;flex:0 0 38px}
  .wm-clock{order:4;margin-left:auto;font-size:10.5px;padding:7px 9px;max-width:48vw;overflow:hidden;text-overflow:ellipsis}
  .wm-title span{margin-left:4px!important;padding:1px 6px!important;font-size:10px!important}
}
@media (max-width:360px){
  .wm-title{font-size:13.5px;flex-basis:calc(100% - 160px)}
  .wm-clock{max-width:54vw}
}
/* 镜头视口 = 整屏；地图用 translate 平移（镜头跟随） */
/* 视口 = 大海（水面贴图铺底，岛在其上漂） */
.wm-view{position:absolute;top:0;left:0;right:0;bottom:0;overflow:hidden;z-index:1;background:url(/uploads/_assets/wm/water.jpg) center/280px repeat}
.wm-dawn .wm-view{filter:sepia(.12) hue-rotate(-8deg)}
.wm-dusk .wm-view{filter:brightness(.9) sepia(.18) hue-rotate(-14deg)}
.wm-night .wm-view{filter:brightness(.5) saturate(.8) hue-rotate(6deg)}
/* 大地图 = 草地岛（草地贴图 + 不规则圆润海岸 + 沙色浪花岸线 + 投向海面的软影） */
.wm-map{position:absolute;left:0;top:0;transition:transform .16s linear;will-change:transform;
  background:url(/uploads/_assets/wm/grass.jpg) center/620px repeat;
  clip-path:polygon(100.0% 50.0%,99.8% 54.4%,99.2% 58.7%,96.6% 62.5%,93.5% 65.8%,91.6% 69.4%,90.4% 73.3%,88.7% 77.1%,85.7% 79.9%,82.0% 82.0%,78.7% 84.2%,75.8% 86.8%,72.9% 89.6%,69.5% 91.9%,65.9% 93.7%,62.3% 95.8%,58.6% 98.6%,54.4% 99.8%,50.0% 100.0%,45.7% 99.6%,41.9% 96.0%,38.6% 92.7%,35.1% 90.8%,31.4% 89.8%,27.7% 88.7%,24.1% 87.0%,20.5% 85.2%,16.5% 83.5%,12.4% 81.5%,9.3% 78.5%,7.7% 74.4%,7.0% 70.1%,5.9% 66.1%,3.8% 62.4%,1.8% 58.5%,1.4% 54.3%,2.9% 50.0%,5.2% 46.1%,6.9% 42.4%,7.7% 38.7%,8.1% 34.8%,9.0% 30.9%,10.1% 27.0%,10.9% 22.6%,11.7% 17.9%,14.6% 14.6%,17.9% 11.7%,21.8% 9.7%,26.9% 9.9%,31.1% 9.5%,34.7% 8.0%,38.3% 6.2%,42.1% 5.1%,46.0% 4.8%,50.0% 4.6%,54.0% 3.8%,58.2% 3.3%,62.4% 3.8%,66.2% 5.4%,69.9% 7.2%,74.1% 8.3%,78.6% 9.2%,82.1% 11.7%,85.2% 14.8%,86.1% 19.7%,86.4% 24.5%,87.4% 28.4%,89.3% 31.7%,91.5% 34.9%,93.4% 38.4%,95.3% 42.0%,97.7% 45.8%);
  filter:drop-shadow(0 0 2px rgba(255,250,225,.95)) drop-shadow(0 0 7px rgba(255,244,205,.6)) drop-shadow(0 12px 20px rgba(12,50,75,.45))}
.wm-night .wm-map{filter:drop-shadow(0 0 2px rgba(210,225,255,.85)) drop-shadow(0 0 7px rgba(150,175,235,.5)) drop-shadow(0 12px 20px rgba(0,5,30,.6))}
.wm-grid{position:absolute;top:0;left:0;right:0;bottom:0;display:grid}
/* 草地格：透明露出岛草地 + 很淡的格子线（守住「格子设定」） */
.wm-cell{position:relative;box-shadow:inset -1px -1px 0 rgba(255,255,255,.05),inset 1px 1px 0 rgba(30,60,20,.045)}
.wm-cell i{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:15px;opacity:.8;pointer-events:none}
/* 石板路：手绘石板贴图，按坐标连续拼接（背景定位由 JS 内联）；圆角由 JS 按连通性内联 */
.wm-cell.road{background-image:url(/uploads/_assets/wm/cobble.jpg);background-size:224px 224px;
  box-shadow:inset 0 0 0 1px rgba(150,120,70,.28),inset 0 -2px 3px rgba(120,95,55,.3)}
.wm-night .wm-cell.road{filter:brightness(.62) saturate(.85)}
/* 建设模式：蓝图虚线格 + 按压反馈 */
.building .wm-cell{cursor:pointer;outline:1px dashed rgba(255,255,255,.28);outline-offset:-1px}
.building .wm-cell:active{background:#ffe9a8}
/* 时段光照层（草地上、建筑下 → 夜里建筑像亮着灯） */
.wm-light{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;border-radius:20px}
.wm-dawn .wm-light{background:rgba(255,175,110,.16)}
.wm-dusk .wm-light{background:rgba(255,130,70,.2)}
.wm-night .wm-light{background:rgba(18,26,64,.42)}
/* overlay：建筑 + 纸条 */
.wm-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}
.wm-bubbles{position:absolute;top:0;left:0;right:0;bottom:0;z-index:4;pointer-events:none}
.wm-bubble{position:absolute;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:72px;max-width:112px;padding:8px 10px 9px;border:0;border-radius:16px;background:rgba(255,255,255,.94);box-shadow:0 2px 10px rgba(0,0,0,.12);pointer-events:auto;transform:translate(-50%,-100%);animation:wmBubbleIn .22s ease both}
.wm-bubble .wm-bubble-tip{position:absolute;left:50%;bottom:-7px;width:12px;height:12px;margin-left:-6px;background:inherit;transform:rotate(45deg);border-radius:0 0 2px 0;box-shadow:2px 2px 6px rgba(0,0,0,.05)}
.wm-bubble .wm-bubble-ttl{font-size:11px;font-weight:800;color:#40322c;line-height:1.25;text-align:center}
.wm-bubble .wm-bubble-act{font-size:10px;font-weight:700;color:var(--rabbit);line-height:1}
.wm-bubble.warm{background:linear-gradient(135deg,#fff8ef,#fffdf8)}
.wm-bubble.agenda{background:linear-gradient(135deg,#fff7fb,#fffdf7);box-shadow:0 2px 10px rgba(224,138,166,.16)}
.wm-bubble.wish{background:linear-gradient(135deg,#fff1f7,#fffdf7);box-shadow:0 2px 10px rgba(224,138,166,.18)}
.wm-bubble.surprise{background:linear-gradient(135deg,#f3f8ff,#fffdf7);box-shadow:0 2px 10px rgba(91,107,140,.14)}
.wm-bubble.kind-resident .wm-bubble-act{color:var(--wolf)}
.wm-bubble.kind-building .wm-bubble-act{color:var(--rabbit)}
.wm-bubble:active{transform:translate(-50%,-100%) scale(.96)}
@keyframes wmBubbleIn{from{opacity:0;transform:translate(-50%,-90%) scale(.85)}to{opacity:1;transform:translate(-50%,-100%) scale(1)}}
.wm-page:not(.building) .wm-bld.enter{pointer-events:auto;cursor:pointer}
.wm-bld{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:1px;box-sizing:border-box}
.wm-bld:before{content:'';position:absolute;left:7%;right:7%;top:6%;bottom:3%;background:rgba(120,150,80,.3);border-radius:14px;box-shadow:inset 0 2px 6px rgba(60,90,40,.28)}
.wm-night .wm-bld:before{background:rgba(40,60,40,.4)}
.wm-bemoji{position:relative;line-height:1.05;filter:drop-shadow(0 3px 3px rgba(30,40,10,.35));transition:transform .15s}
.wm-bld.enter .wm-bemoji{animation:wmBob 3.4s ease-in-out infinite}
.wm-bld:nth-child(odd) .wm-bemoji{animation-delay:-1.7s}
.wm-bld.enter:active .wm-bemoji{transform:scale(.86)}
.wm-night .wm-bemoji{filter:drop-shadow(0 3px 3px rgba(0,0,20,.5)) drop-shadow(0 0 10px rgba(255,220,150,.5))}
.wm-bsign{position:relative;background:#fff8ec;border:1.5px solid #e3cfa6;color:#6b5335;font-size:10.5px;font-weight:900;border-radius:999px;padding:2px 8px;margin-top:1px;white-space:nowrap;box-shadow:0 2px 4px rgba(60,40,10,.22)}
/* ── 手绘建筑 sprite（底边中心锚定 footprint 底部，只向上溢出；接地阴影替代地台） ── */
.wm-bld.sprite:before{left:14%;right:14%;top:auto;bottom:4px;height:13px;border-radius:50%;
  background:radial-gradient(ellipse at center,rgba(28,48,14,.42),rgba(28,48,14,0) 70%);box-shadow:none}
.wm-night .wm-bld.sprite:before{background:radial-gradient(ellipse at center,rgba(0,5,25,.5),rgba(0,5,25,0) 70%)}
.wm-bsprite{position:absolute;left:50%;bottom:2px;transform:translateX(-50%);width:104%;
  filter:drop-shadow(0 3px 2px rgba(30,40,10,.22));pointer-events:none}
.wm-bld.sprite.enter .wm-bsprite{animation:wmBob 3.4s ease-in-out infinite}
.wm-bld.sprite:nth-child(odd) .wm-bsprite{animation-delay:-1.7s}
.wm-bld.sprite.enter:active .wm-bsprite{transform:translateX(-50%) scale(.94)}
.wm-night .wm-bsprite{filter:drop-shadow(0 3px 3px rgba(0,0,20,.5)) drop-shadow(0 0 10px rgba(255,220,150,.4))}
.wm-bld.sprite .wm-bsign{position:absolute;bottom:-7px;left:50%;transform:translateX(-50%);margin:0;z-index:2}
/* 小人站到相邻格：楼高亮呼吸 */
.wm-bld.near:before{border:3px solid rgba(124,197,126,.9);background:rgba(190,240,180,.4);animation:wmNearPulse 1.1s ease-in-out infinite}
.wm-bld.near .wm-bsign{border-color:#7cc57e;color:#3f7a44;box-shadow:0 0 8px rgba(124,197,126,.7)}
@keyframes wmNearPulse{0%,100%{box-shadow:0 0 8px rgba(124,197,126,.4)}50%{box-shadow:0 0 20px rgba(124,197,126,.95)}}
/* 搬楼选中态：整块亮橙虚线框 + 小屋加速蹦跶 */
.wm-bld.sel:before{left:-2%;right:-2%;top:-3%;bottom:-2%;border:3px dashed #ff9f43;background:rgba(255,190,80,.38);border-radius:14px;animation:wmSelPulse 1s ease-in-out infinite}
.wm-bld.sel .wm-bemoji{animation:wmBob .8s ease-in-out infinite}
@keyframes wmSelPulse{0%,100%{box-shadow:0 0 10px rgba(255,170,50,.55)}50%{box-shadow:0 0 22px rgba(255,190,80,.95)}}
/* 🎂 200天纪念彩蛋 · 许愿树 */
.wm-anni-tree{position:absolute;z-index:5;pointer-events:auto;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:wmAnniBob 2.2s ease-in-out infinite}
.wm-anni-glow{position:absolute;top:-6px;left:-6px;right:-6px;bottom:-6px;border-radius:50%;background:radial-gradient(ellipse at center,rgba(255,150,180,.65),rgba(255,200,220,.25) 45%,transparent 72%);animation:wmAnniPulse 1.8s ease-in-out infinite;z-index:0}
.wm-anni-emoji{position:relative;z-index:1;font-size:38px;filter:drop-shadow(0 0 10px rgba(255,120,160,.7));animation:wmAnniFloat 3s ease-in-out infinite}
.wm-anni-label{position:relative;z-index:1;background:linear-gradient(135deg,#ffe0ec,#fff5f8);border:1.5px solid #f4a7c3;color:#c24b72;font-size:10.5px;font-weight:900;border-radius:999px;padding:2px 10px;margin-top:-4px;white-space:nowrap;text-align:center;line-height:1.35;box-shadow:0 2px 8px rgba(220,100,140,.35)}
.wm-anni-tree:active{transform:scale(.92)}
.wm-anni-tree:active .wm-anni-emoji{transform:scale(1.18)}
@keyframes wmAnniPulse{0%,100%{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.18)}}
@keyframes wmAnniBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes wmAnniFloat{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-5px) rotate(3deg)}}
body.wm-wish-lock{overflow:hidden}
.wm-wish-overlay{display:none;position:fixed;top:0;left:0;right:0;bottom:0;z-index:10020;background:rgba(35,26,38,.72);padding:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.wm-wish-overlay.open{display:flex;align-items:flex-start;justify-content:center;animation:wmWishFade .2s ease-out}
.wm-wish-sheet{position:relative;width:100%;max-width:430px;min-height:100vh;min-height:100dvh;box-sizing:border-box;padding:18px 18px calc(26px + env(safe-area-inset-bottom,0px));background:#fffaf6;color:#49363f;box-shadow:0 0 36px rgba(20,10,25,.3)}
.wm-wish-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.wm-wish-head>div{display:flex;flex-direction:column;gap:2px}
.wm-wish-head span{font-size:9px;font-weight:900;color:#ba8a45}
.wm-wish-head b{font-size:20px;font-weight:900;color:#6f4055}
.wm-wish-close{width:40px;height:40px;border:0;border-radius:50%;background:#f2e9e4;color:#735965;font-size:17px;font-weight:900;cursor:pointer}
.wm-wish-close:active{transform:scale(.92)}
.wm-wish-main{text-align:center}
.wm-wish-kicker{display:inline-flex;align-items:center;justify-content:center;min-height:25px;padding:0 12px;border:1px solid #e2bd76;border-radius:999px;color:#9a6a2c;background:#fff7e6;font-size:11px;font-weight:900}
.wm-wish-wheel-wrap{position:relative;width:min(78vw,310px);height:min(78vw,310px);margin:12px auto 10px;filter:drop-shadow(0 14px 18px rgba(81,48,61,.2))}
.wm-wish-pointer{position:absolute;z-index:5;top:-11px;left:50%;transform:translateX(-50%);color:#6f4055;font-size:32px;line-height:1;filter:drop-shadow(0 2px 1px #fff)}
.wm-wish-wheel{position:absolute;top:0;left:0;right:0;bottom:0;border:8px solid #fff3dd;border-radius:50%;box-sizing:border-box;background:conic-gradient(#f28eaa 0 60deg,#f4c968 60deg 120deg,#7fc7b3 120deg 180deg,#83a9d8 180deg 240deg,#b99bd8 240deg 300deg,#ed9a72 300deg 360deg);box-shadow:inset 0 0 0 3px rgba(111,64,85,.14),0 0 0 3px #d7aa57;will-change:transform}
.wm-wish-wheel:before{content:'';position:absolute;top:8px;left:8px;right:8px;bottom:8px;border:1px solid rgba(255,255,255,.72);border-radius:50%}
.wm-wish-wheel-label{position:absolute;z-index:2;left:50%;top:50%;width:76px;height:48px;margin:-24px 0 0 -38px;display:flex;align-items:center;justify-content:center;transform-origin:38px 24px;color:#fff;font-size:11px;font-weight:900;line-height:1.2;text-shadow:0 1px 3px rgba(60,30,50,.4);overflow:hidden}
.wm-wish-wheel-label span{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.wm-wish-wheel-label.l0{transform:rotate(30deg) translateY(-98px) rotate(-30deg)}
.wm-wish-wheel-label.l1{transform:rotate(90deg) translateY(-98px) rotate(-90deg)}
.wm-wish-wheel-label.l2{transform:rotate(150deg) translateY(-98px) rotate(-150deg)}
.wm-wish-wheel-label.l3{transform:rotate(210deg) translateY(-98px) rotate(-210deg)}
.wm-wish-wheel-label.l4{transform:rotate(270deg) translateY(-98px) rotate(-270deg)}
.wm-wish-wheel-label.l5{transform:rotate(330deg) translateY(-98px) rotate(-330deg)}
.wm-wish-hub{position:absolute;z-index:4;left:50%;top:50%;width:64px;height:64px;margin:-32px 0 0 -32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#fff8eb;border:5px solid #d7aa57;box-sizing:border-box;font-size:25px;box-shadow:0 3px 9px rgba(83,48,60,.25)}
.wm-wish-inputs{display:grid;gap:8px;margin:10px auto 12px;max-width:340px}
.wm-wish-inputs label{display:grid;grid-template-columns:34px 1fr;align-items:center;min-height:47px;border:1px solid #e4d3cd;border-radius:8px;background:#fff;overflow:hidden;box-shadow:0 2px 7px rgba(80,45,58,.06)}
.wm-wish-inputs i{font-style:normal;font-size:12px;font-weight:900;color:#fff;background:#9d6a7d;height:100%;display:flex;align-items:center;justify-content:center}
.wm-wish-inputs input{min-width:0;border:0;outline:0;padding:11px 12px;background:transparent;color:#49363f;font:700 14px/1.3 inherit}
.wm-wish-inputs input::placeholder{color:#b6a2a9;font-weight:600}
.wm-wish-spin{width:100%;max-width:340px;min-height:50px;border:0;border-radius:8px;background:#704258;color:#fff;font-size:15px;font-weight:900;box-shadow:0 5px 0 #4f2f3f,0 10px 20px rgba(91,52,71,.22);cursor:pointer}
.wm-wish-spin span{font-size:19px;vertical-align:-1px;margin-right:4px}
.wm-wish-spin:active{transform:translateY(3px);box-shadow:0 2px 0 #4f2f3f,0 5px 12px rgba(91,52,71,.18)}
.wm-wish-spin:disabled{opacity:.72;cursor:wait}
.wm-wish-odds{margin-top:10px;color:#a08d94;font-size:10.5px;font-weight:800}
.wm-wish-result{max-width:340px;margin:12px auto 0;padding:14px;border-radius:8px;display:flex;flex-direction:column;gap:4px;border:1px solid #dfd0c9;background:#fff}
.wm-wish-result.hit{border-color:#e8bc63;background:#fff9e9;box-shadow:0 6px 20px rgba(199,144,48,.16)}
.wm-wish-result b{font-size:12px;color:#9c7c61}
.wm-wish-result strong{font-size:22px;color:#704258;overflow-wrap:anywhere}
.wm-wish-result span{font-size:11px;color:#a08d94}
.wm-wish-saved{margin-top:12px;color:#9b7a86;font-size:11px;font-weight:800}
.wm-wish-loading,.wm-wish-error{display:flex;min-height:62vh;flex-direction:column;align-items:center;justify-content:center;color:#9b7a86;font-size:13px;font-weight:800}
.wm-wish-error button{margin-top:12px;border:0;border-radius:8px;padding:10px 18px;background:#704258;color:#fff;font-weight:900}
.wm-wish-foot{padding:6px 0 0;text-align:center}
.wm-wish-hist-btn{margin-top:12px;padding:8px 20px;border:1px solid #d7aa57;border-radius:999px;background:transparent;color:#9a6a2c;font-size:12px;font-weight:800;cursor:pointer}
.wm-wish-hist-btn:active{transform:scale(.95);background:#fff7e6}
.wm-wish-hist{display:grid;gap:12px;max-width:340px;margin:12px auto 0}
.wm-wish-hist-card{text-align:center;padding:14px;border-radius:10px;background:#fff;border:1px solid #e4d3cd;box-shadow:0 2px 10px rgba(80,45,58,.06)}
.wm-wish-hist-who{font-size:15px;font-weight:900;color:#49363f;margin-bottom:6px}
.wm-wish-hist-result{display:inline-block;padding:2px 12px;border-radius:999px;font-size:10.5px;font-weight:800;margin-bottom:4px}
.wm-wish-hist-result.hit{background:#fff9e9;color:#b6802e;border:1px solid #e8bc63}
.wm-wish-hist-result.miss{background:#f6f1f3;color:#907a83;border:1px solid #ddd}
.wm-wish-hist-big{font-size:22px;font-weight:900;color:#704258;overflow-wrap:anywhere;line-height:1.3;margin:4px 0 6px}
.wm-wish-hist-wishes{display:flex;flex-direction:column;gap:3px;margin-top:6px}
.wm-wish-hist-w{font-size:11px;color:#9b8a90;padding:3px 8px;border-radius:6px;background:#faf6f4}
.wm-wish-hist-w.hit{color:#b6802e;background:#fff9e9;font-weight:800}
.wm-wish-hist-back{margin-top:12px;padding:8px 18px;border:0;border-radius:8px;background:#f2e9e4;color:#735965;font-size:12px;font-weight:800;cursor:pointer}
.wm-wish-hist-back:active{transform:scale(.95)}
@keyframes wmWishFade{from{opacity:0}to{opacity:1}}
@media (min-width:600px){.wm-wish-overlay{padding:22px}.wm-wish-overlay.open{align-items:center}.wm-wish-sheet{min-height:0;max-height:calc(100vh - 44px);max-height:calc(100dvh - 44px);overflow-y:auto;border-radius:8px}}
@media (max-height:720px){.wm-wish-sheet{padding-top:12px}.wm-wish-wheel-wrap{width:min(61vh,270px);margin-top:8px}.wm-wish-wheel-label.l0{transform:rotate(30deg) translateY(-85px) rotate(-30deg)}.wm-wish-wheel-label.l1{transform:rotate(90deg) translateY(-85px) rotate(-90deg)}.wm-wish-wheel-label.l2{transform:rotate(150deg) translateY(-85px) rotate(-150deg)}.wm-wish-wheel-label.l3{transform:rotate(210deg) translateY(-85px) rotate(-210deg)}.wm-wish-wheel-label.l4{transform:rotate(270deg) translateY(-85px) rotate(-270deg)}.wm-wish-wheel-label.l5{transform:rotate(330deg) translateY(-85px) rotate(-330deg)}}
.wm-seltag{position:absolute;top:-15px;left:50%;transform:translateX(-50%);background:#ff9f43;color:#fff;font-size:9px;font-weight:900;border-radius:999px;padding:2px 7px;white-space:nowrap;box-shadow:0 2px 5px rgba(0,0,0,.28);z-index:3;animation:wmBob 1.2s ease-in-out infinite}
/* 纸条标记 */
.wm-note{position:absolute;transform:translate(-50%,-50%);font-size:21px;pointer-events:auto;cursor:pointer;filter:drop-shadow(0 2px 3px rgba(30,20,5,.4));z-index:2}
.wm-note.fresh{animation:wmNoteHop 1.5s ease-in-out infinite;font-size:23px}
.wm-note.fresh:after{content:'✨';position:absolute;top:-9px;right:-11px;font-size:11px;animation:wmTwinkle 1.5s ease-in-out infinite}
.wm-note.mine{opacity:.6}
.wm-note.opened{opacity:.55}
@keyframes wmNoteHop{0%,100%{transform:translate(-50%,-50%) scale(1)}50%{transform:translate(-50%,-62%) scale(1.12)}}
/* ── 🐺🐰 小人 ── */
.wm-hero{position:absolute;left:0;top:0;z-index:4;pointer-events:none;transition:transform .16s linear;will-change:transform;display:flex;align-items:center;justify-content:center}
.wm-hero-sh{position:absolute;bottom:7%;left:22%;right:22%;height:13%;background:rgba(40,60,20,.3);border-radius:50%;filter:blur(1px)}
.wm-night .wm-hero-sh{background:rgba(0,0,25,.45)}
.wm-hero-f{position:relative;display:flex;align-items:flex-end;justify-content:center;transition:transform .12s}
.wm-hero-b{display:block;line-height:1;filter:drop-shadow(0 3px 3px rgba(30,40,10,.4));animation:wmHeroBob 2.6s ease-in-out infinite}
.wm-night .wm-hero-b{filter:drop-shadow(0 3px 3px rgba(0,0,20,.55)) drop-shadow(0 0 8px rgba(255,235,180,.45))}
@keyframes wmHeroBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.wm-hero.hop .wm-hero-b{animation:wmHeroHop .18s ease-out}
@keyframes wmHeroHop{0%{transform:translateY(0) scale(1,1)}45%{transform:translateY(-26%) scale(.94,1.08)}100%{transform:translateY(0) scale(1.05,.95)}}
.wm-hero.bump .wm-hero-f{animation:wmHeroBump .2s ease-out}
@keyframes wmHeroBump{0%,100%{translate:0 0}30%{translate:-3px 0}65%{translate:3px 0}}
/* 踩草小尘 */
.wm-dust{position:absolute;z-index:3;pointer-events:none;font-size:13px;opacity:.7;animation:wmDustFx .5s ease-out forwards}
@keyframes wmDustFx{0%{opacity:.7;transform:translateY(0) scale(.7)}100%{opacity:0;transform:translateY(-9px) scale(1.25)}}
/* ── HUD：进入按钮 + 方向键(左下) + 三大频道(右下) ── */
.wm-ctx{position:absolute;left:14px;bottom:calc(216px + env(safe-area-inset-bottom,0px));z-index:7}
.wm-ctx-btn{border:0;border-radius:999px;padding:10px 16px;font-size:13.5px;font-weight:900;cursor:pointer;color:#fff;
  background:linear-gradient(180deg,#8ed08f,#6cb96f);border-bottom:3px solid #55a058;box-shadow:0 4px 14px rgba(60,130,70,.45);
  -webkit-tap-highlight-color:transparent;animation:wmBob 1.4s ease-in-out infinite}
.wm-ctx-btn:active{transform:translateY(2px);border-bottom-width:1px}
.wm-dpad{position:absolute;left:12px;bottom:calc(60px + env(safe-area-inset-bottom,0px));z-index:7;display:grid;
  grid-template-columns:repeat(3,46px);grid-template-rows:repeat(3,44px);gap:4px}
.wm-dbtn{border:0;border-radius:13px;background:rgba(255,252,243,.82);color:#6b5335;font-size:16px;font-weight:900;cursor:pointer;
  box-shadow:0 3px 8px rgba(50,35,10,.26),inset 0 1px 0 rgba(255,255,255,.8);backdrop-filter:blur(3px);
  -webkit-tap-highlight-color:transparent;touch-action:none;user-select:none;-webkit-user-select:none}
.wm-dbtn:active{transform:scale(.92);background:rgba(255,238,200,.95)}
.wm-dbtn.u{grid-column:2;grid-row:1}
.wm-dbtn.l{grid-column:1;grid-row:2}
.wm-dbtn.r{grid-column:3;grid-row:2}
.wm-dbtn.d{grid-column:2;grid-row:3}
.wm-dctr{grid-column:2;grid-row:2;display:flex;align-items:center;justify-content:center;font-size:19px;opacity:.85;pointer-events:none;filter:drop-shadow(0 2px 3px rgba(50,35,10,.3))}
.wm-acts{position:absolute;right:12px;bottom:calc(60px + env(safe-area-inset-bottom,0px));z-index:7;display:flex;flex-direction:column;align-items:flex-end;gap:8px;max-width:min(72vw,260px)}
.wm-fab{border:0;border-radius:999px;padding:9px 11px;font-size:15px;font-weight:900;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:5px;
  background:rgba(255,248,236,.92);color:#6b5335;box-shadow:0 4px 14px rgba(50,35,10,.3);border-bottom:3px solid #e3cfa6;
  -webkit-tap-highlight-color:transparent;backdrop-filter:blur(3px)}
.wm-fab span{font-size:12px}
.wm-fab:active{transform:translateY(2px);border-bottom-width:1px}
.wm-fab.pink{background:rgba(255,227,238,.94);color:#b04a72;border-bottom-color:#f2b7cd}
.wm-act-main{min-width:118px;min-height:48px;justify-content:flex-start;align-items:center;flex-direction:row;padding:10px 13px 9px;gap:8px}
.wm-act-main .em{font-size:18px;line-height:1;flex:0 0 auto}
.wm-act-main .tx{flex:1;text-align:left;font-size:12.5px;line-height:1.15}
.wm-act-main i{font-style:normal;font-size:10px;font-weight:900;color:#b39c78;flex:0 0 auto}
.wm-act-main.on{box-shadow:0 6px 18px rgba(50,35,10,.3),0 0 0 2px rgba(255,255,255,.35) inset}
.wm-act-main.raid,.wm-act-main.guard,.wm-act-main.champ{flex-direction:row;align-items:center}
.wm-act-main.raid{background:rgba(232,244,255,.96);color:#356a9d;border-bottom-color:#b6d6ee}
.wm-act-main.raid u{display:none}
.wm-act-main.guard{background:rgba(235,244,255,.96);color:#446d9c;border-bottom-color:#bfd3ea}
.wm-act-panel{width:min(72vw,260px);background:rgba(255,252,243,.97);border-radius:18px;padding:10px;box-shadow:0 8px 24px rgba(50,35,10,.28);display:flex;flex-direction:column;gap:10px;animation:wmDpFade .18s ease-out}
.wm-act-group{display:flex;flex-direction:column;gap:7px}
.wm-act-gh{font-size:10.5px;font-weight:900;color:#b39c78;padding:0 4px}
.wm-act-sub{width:100%;justify-content:flex-start;position:relative}
.wm-act-sub span{font-size:12px}
.wm-act-panel .wm-fab.raid{align-items:flex-start}
.wm-act-panel .wm-fab.raid u{display:block;max-width:148px;font-size:9.5px;font-weight:800;color:#7a93ad;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-fab.guard{background:rgba(235,244,255,.96);color:#446d9c;border-bottom-color:#bfd3ea}
/* ── 足迹抽屉（overlay 上拉，不顶地图） ── */
.wm-drawer{position:absolute;left:0;right:0;bottom:0;z-index:9;background:rgba(255,252,243,.97);border-radius:18px 18px 0 0;
  box-shadow:0 -6px 20px rgba(50,35,10,.28);transform:translateY(calc(100% - 44px - env(safe-area-inset-bottom,0px)));transition:transform .28s ease;will-change:transform}
.wm-drawer.open{transform:translateY(0)}
.wm-dr-handle{position:relative;height:44px;display:flex;align-items:center;gap:8px;padding:6px 14px 0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-dr-bar{position:absolute;top:5px;left:50%;transform:translateX(-50%);width:38px;height:4px;border-radius:2px;background:#ddcdaa}
.wm-dr-handle .ic{font-size:15px;flex-shrink:0}
.wm-dr-handle .tx{flex:1;font-size:11.5px;font-weight:700;color:#6b5335;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-dr-handle .cv{flex-shrink:0;font-size:12px;color:#bda887;font-weight:900}
.wm-dr-body{max-height:42vh;max-height:42dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px 16px calc(14px + env(safe-area-inset-bottom,0px))}
.wm-feed-t{font-size:13px;font-weight:900;color:#6b5335;margin:4px 0 5px}
.wm-feed-empty{font-size:12px;color:#a8977c;padding:4px 0 2px}
.wm-feed-row{display:flex;align-items:center;gap:9px;font-size:12.5px;padding:5px 0;border-bottom:1px dashed #efe3cb}
.wm-feed-row:last-child{border-bottom:0}
.wm-fp-ava{flex:0 0 auto;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;box-shadow:inset 0 0 0 2px #fff;padding:0}
.wm-fp-ava.wf{background:#dfe7f6}.wm-fp-ava.rb{background:#fbdfec}
.wm-fp-act{flex:1;color:#5d4a30;font-weight:600;line-height:1.35}
.wm-fp-ago{flex-shrink:0;color:#bda887;font-size:10.5px;font-variant-numeric:tabular-nums}
/* ── 建设模式：可收起的浮动工具坞 ── */
.wm-dock.build{position:absolute;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px));z-index:8;
  background:rgba(255,252,243,.97);border-radius:20px;box-shadow:0 8px 24px rgba(50,35,10,.3);padding:8px 12px 10px}
.wm-dock-hd{display:flex;align-items:center;gap:8px;cursor:pointer;padding:2px 2px 6px;-webkit-tap-highlight-color:transparent}
.wm-hint{flex:1;text-align:left;font-size:12px;font-weight:800;color:#8a6f4d}
.wm-dock-hd .cv{flex-shrink:0;font-size:12px;color:#bda887;font-weight:900}
.wm-toolrow{display:flex;gap:8px;justify-content:center}
.wm-dock.build.min .wm-toolrow,.wm-dock.build.min .wm-dock-cap{display:none}
.wm-dock.build.min{padding-bottom:6px}
.wm-tool{flex:1;max-width:88px;border:2px solid #eadfc8;background:#fff;border-radius:14px;padding:7px 0 6px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;color:#6b5335;-webkit-tap-highlight-color:transparent}
.wm-tool .ic{font-size:20px;line-height:1}
.wm-tool .lb{font-size:11px;font-weight:800}
.wm-tool.on{background:#e8f6e3;border-color:#7cc57e;box-shadow:0 0 0 2px rgba(124,197,126,.28)}
.wm-done{border:0;background:#7cc57e;color:#fff;border-radius:14px;font-size:15px;font-weight:900;padding:0 14px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-bottom:3px solid #5da860}
.wm-done span{font-size:11px}
.wm-dock-cap{text-align:center;font-size:10.5px;font-weight:700;color:#b39c78;margin-top:7px}
/* 心动值/个人币飘字（视口中央往上飘） */
.wm-coinfx{position:absolute;left:50%;top:42%;font-size:22px;font-weight:900;color:#fff;text-shadow:0 2px 8px rgba(200,60,110,.65),0 0 4px rgba(0,0,0,.3);pointer-events:none;z-index:5;animation:wmCoinUp 1.5s ease-out forwards}
.wm-coinfx.personal{top:36%;font-size:24px;color:#fff8d7;background:linear-gradient(180deg,#2b7cff,#1356c7);border:2px solid #ffd66b;border-radius:999px;padding:7px 14px;box-shadow:0 8px 22px rgba(19,86,199,.28),0 0 0 3px rgba(255,214,107,.26);text-shadow:0 2px 6px rgba(0,45,120,.65);animation:wmCoinUp 1.65s ease-out forwards}
.wm-pet-chip.pc{background:#fff1bf;color:#7a5512;border-color:#f1ce62}
@keyframes wmCoinUp{0%{opacity:0;transform:translate(-50%,-30%) scale(.6)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}100%{opacity:0;transform:translate(-50%,-170%) scale(1)}}
/* ── P2 · 📦联营仓面板（body 级浮层，低于 cgModal 的 9999） ── */
.wm-fab.gold{background:rgba(255,240,210,.94);color:#8a6420;border-bottom-color:#eccf92}
.wm-dp-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9980;background:rgba(50,35,15,.45);display:flex;align-items:flex-end;justify-content:center;animation:wmDpFade .18s ease-out}
@keyframes wmDpFade{from{opacity:0}to{opacity:1}}
.wm-dp-card{width:100%;max-width:480px;max-height:82vh;max-height:82dvh;display:flex;flex-direction:column;background:#fffcf3;border-radius:22px 22px 0 0;box-shadow:0 -8px 28px rgba(50,35,10,.35);animation:wmDpUp .22s ease-out}
@keyframes wmDpUp{from{transform:translateY(36px);opacity:.6}to{transform:translateY(0);opacity:1}}
.wm-dp-loading{text-align:center;color:#8a7a62;font-size:13.5px;font-weight:700;padding:34px 16px}
.wm-dp-hd{display:flex;align-items:baseline;gap:8px;padding:15px 16px 9px;border-bottom:1.5px dashed #efe3cb}
.wm-dp-hd .ti{font-size:17px;font-weight:900;color:#6b5335}
.wm-dp-hd .su{flex:1;font-size:11px;font-weight:700;color:#b39c78;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-dp-x{align-self:center;flex-shrink:0;border:0;width:30px;height:30px;border-radius:50%;background:#f3ead8;color:#8a6f4d;font-size:14px;font-weight:900;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-dp-x:active{transform:scale(.9)}
.wm-dp-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px 16px calc(18px + env(safe-area-inset-bottom,0px))}
.wm-dp-sec{margin-top:12px}
.wm-dp-st{font-size:13px;font-weight:900;color:#6b5335;margin-bottom:6px}
.wm-dp-empty{font-size:12px;color:#a8977c;background:#fbf6e9;border:1.5px dashed #e8dcc2;border-radius:12px;padding:11px 12px}
.wm-dp-row{display:flex;align-items:center;gap:9px;background:#fff;border:1.5px solid #eee3cc;border-radius:14px;padding:8px 10px 8px 12px;margin-bottom:6px}
.wm-dp-row .ic{flex-shrink:0;font-size:20px;filter:drop-shadow(0 1px 1px rgba(60,40,10,.18))}
.wm-dp-row .nm{flex:1;font-size:13.5px;font-weight:800;color:#5d4a30;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-dp-row .qt{flex-shrink:0;font-size:13px;font-weight:900;color:#8a6f4d;font-variant-numeric:tabular-nums}
.wm-dp-btn{flex-shrink:0;border:0;border-radius:999px;padding:6px 13px;font-size:12px;font-weight:900;cursor:pointer;color:#fff;background:linear-gradient(180deg,#8ed08f,#6cb96f);border-bottom:2.5px solid #55a058;-webkit-tap-highlight-color:transparent}
.wm-dp-btn:active{transform:translateY(1.5px);border-bottom-width:1px}
.wm-dp-btn.ghost{background:#fff;color:#3f7a44;border:1.5px solid #9fd2a1;border-bottom-width:2.5px;padding:5px 12px}
.wm-dp-rc{background:#fff;border:1.5px solid #eee3cc;border-radius:16px;padding:11px 12px 12px;margin-bottom:8px}
.wm-dp-rc .hd{display:flex;align-items:center;gap:7px}
.wm-dp-rc .hd .ic{font-size:19px}
.wm-dp-rc .hd .nm{flex:1;font-size:14px;font-weight:900;color:#5d4a30}
.wm-dp-rc .hd .fx{flex-shrink:0;font-size:10.5px;font-weight:900;color:#b04a72;background:#ffe3ee;border-radius:999px;padding:2px 8px;font-variant-numeric:tabular-nums}
.wm-dp-rc .ds{font-size:11.5px;color:#8a7a62;line-height:1.5;margin:5px 0 7px}
.wm-dp-rc .cs{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.wm-dp-chip{font-size:11px;font-weight:800;border-radius:999px;padding:3px 9px}
.wm-dp-chip b{font-variant-numeric:tabular-nums}
.wm-dp-chip.ok{background:#e8f6e3;color:#3f7a44;border:1px solid #bfe3bd}
.wm-dp-chip.no{background:#fdeaea;color:#b0524a;border:1px solid #f0c9c4}
.wm-dp-cd{font-size:11.5px;font-weight:900;color:#8a6420;background:#fff4d8;border:1.5px dashed #eccf92;border-radius:10px;padding:6px 10px;margin-bottom:8px;font-variant-numeric:tabular-nums}
.wm-dp-craft{width:100%;border:0;border-radius:14px;padding:10px 0;font-size:14px;font-weight:900;cursor:pointer;color:#fff;background:linear-gradient(180deg,#ffb35c,#f79b35);border-bottom:3px solid #dd8322;-webkit-tap-highlight-color:transparent}
.wm-dp-craft:active{transform:translateY(2px);border-bottom-width:1px}
.wm-dp-craft.off{background:#efe7d6;color:#b3a284;border-bottom-color:#e0d4ba;cursor:not-allowed}
/* v0712-21 联营仓配方升级：赶集日横幅 + 目标楼小标签 + 折价划线 */
.wm-dp-mkt{font-size:12.5px;font-weight:900;color:#a35414;text-align:center;background:linear-gradient(180deg,#ffe9c4,#ffd99a);
  border:1.5px dashed #f0b45e;border-radius:12px;padding:8px 10px;margin-bottom:8px;animation:wmDpMkt 1.8s ease-in-out infinite}
@keyframes wmDpMkt{0%,100%{box-shadow:0 2px 8px rgba(220,140,40,.18)}50%{box-shadow:0 2px 12px 2px rgba(240,160,50,.35)}}
.wm-dp-rc .tg{flex-shrink:0;font-size:9.5px;font-weight:900;border-radius:999px;padding:2px 7px;white-space:nowrap;line-height:1.5}
.wm-dp-rc .tg.teashop{background:#eaf4fb;color:#3d7ba6;border:1px solid #bcd9ec}
.wm-dp-rc .tg.inn{background:#f2ecfb;color:#7a5cb0;border:1px solid #d7c9ef}
.wm-dp-rc .tg.alchemy{background:#eefaf0;color:#3f7a44;border:1px solid #bfe3bd}
.wm-dp-chip s{color:#b3a284;font-weight:800;margin-right:2px;text-decoration:line-through}
.wm-dp-chip.sale{border-style:dashed;box-shadow:0 0 0 1px rgba(240,160,50,.25)}
.wm-dp-chip.sale.ok{background:#fdf6df;color:#a3701a;border-color:#eccf92}
.wm-dp-chip.sale.ok b{color:#c25a12}
/* ── P3 · 今日时局横幅（顶栏下小胶囊浮层） ── */
.wm-evt-wrap{position:absolute;top:calc(56px + env(safe-area-inset-top,0px));left:0;right:0;z-index:7;display:flex;justify-content:center;pointer-events:none}
.wm-evt{pointer-events:auto;max-width:68%;background:rgba(255,250,238,.9);border-radius:16px;padding:5px 12px 5px 10px;box-shadow:0 2px 8px rgba(60,40,10,.22);cursor:pointer;backdrop-filter:blur(3px);animation:wmEvtIn .5s ease-out;-webkit-tap-highlight-color:transparent}
.wm-evt-hd{display:flex;align-items:center;justify-content:center;gap:6px}
.wm-evt .em{font-size:15px;line-height:1}
.wm-evt .nm{font-size:12px;font-weight:900;color:#6b5335;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-evt .cv{flex-shrink:0;font-size:10px;color:#bda887;font-weight:900}
.wm-evt-ds{display:none;font-size:11.5px;font-weight:700;color:#8a6f4d;line-height:1.55;padding:4px 2px 2px;text-align:center}
.wm-evt.open .wm-evt-ds{display:block}
/* 繁荣贡献度 HUD */
.wm-contrib{position:absolute;top:calc(88px + env(safe-area-inset-top,0px));left:10px;right:10px;z-index:7;background:rgba(30,20,10,.82);border-radius:12px;padding:8px 12px;pointer-events:auto;box-shadow:0 2px 10px rgba(0,0,0,.3);backdrop-filter:blur(4px)}
.wm-contrib-bar{display:flex;align-items:center;gap:8px}
.wm-contrib-side{font-size:12px;font-weight:900;color:#fff;white-space:nowrap;min-width:44px}
.wm-contrib-side:first-child{text-align:right}
.wm-contrib-side:last-child{text-align:left}
.wm-contrib-track{flex:1;display:flex;height:8px;border-radius:4px;overflow:hidden;background:rgba(255,255,255,.15)}
.wm-contrib-fill.wolf{background:linear-gradient(90deg,#5b8def,#3b6fd4);border-radius:4px 0 0 4px}
.wm-contrib-fill.rabbit{background:linear-gradient(90deg,#e879a0,#c95a7e);border-radius:0 4px 4px 0}
.wm-contrib-note{font-size:10px;color:rgba(255,255,255,.55);text-align:center;margin-top:4px}
.wm-contrib-close{position:absolute;top:2px;right:6px;background:none;border:none;color:rgba(255,255,255,.4);font-size:12px;cursor:pointer;padding:2px 4px}
@media(max-width:480px){
  .wm-contrib{top:calc(80px + env(safe-area-inset-top,0px));left:6px;right:6px;padding:6px 10px}
  .wm-contrib-side{font-size:11px;min-width:40px}
}
.wm-evt.k-warm{background:rgba(255,241,224,.92)}
.wm-evt.k-market{background:rgba(255,247,216,.92)}
.wm-evt.k-visitor{background:rgba(230,246,243,.92)}
.wm-evt.k-cozy{background:rgba(255,235,242,.92)}
.wm-evt.k-calm{background:rgba(240,246,231,.92)}
@keyframes wmEvtIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
/* ── P3 · 足迹抽屉标题行「📖 本周」按钮 ── */
.wm-feed-t{display:flex;align-items:center;gap:8px}
.wm-feed-t .tt{flex:1}
.wm-week-btn{flex-shrink:0;border:1.5px solid #eccf92;background:#fff8e6;color:#8a6420;font-size:11px;font-weight:900;border-radius:999px;padding:4px 10px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-week-btn:active{transform:scale(.94);background:#fff1cf}
/* ── P3 · 家园周报信笺《我们家园这一周》（body 级浮层，低于 cgModal 的 9999） ── */

/* ── P2 · ⚖️ 兔兔裁决簿 ── */
.wm-drama-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9982;background:rgba(50,35,15,.5);display:flex;align-items:center;justify-content:center;padding:22px 18px;animation:wmDpFade .18s ease-out}
.wm-drama-card{width:100%;max-width:400px;max-height:84vh;max-height:84dvh;display:flex;flex-direction:column;overflow:hidden;background:linear-gradient(180deg,#fffdf7,#fff2f6);border:1.5px solid #f0ccd9;border-radius:24px;box-shadow:0 14px 38px rgba(50,35,10,.42);animation:wmPetIn .26s cubic-bezier(.34,1.56,.64,1)}
.wm-drama-hd{display:flex;align-items:flex-start;gap:12px;padding:17px 15px 12px;border-bottom:1.5px dashed #efd8df;color:#75485a}.wm-drama-hd>div{flex:1}.wm-drama-hd b{display:block;font-size:17px;font-weight:900}.wm-drama-hd i{display:block;margin-top:3px;font-size:10.5px;font-style:normal;font-weight:700;color:#b68796}.wm-drama-hd button{border:0;width:30px;height:30px;border-radius:50%;background:#fae6ed;color:#a46279;font-size:14px;font-weight:900;cursor:pointer}
.wm-drama-body{overflow-y:auto;padding:14px 15px 6px}.wm-drama-case{background:#fff;border:1.5px solid #f1dfe5;border-radius:17px;padding:14px 14px 13px;box-shadow:0 2px 8px rgba(160,90,115,.09)}.wm-drama-case .em{display:block;font-size:29px;line-height:1;margin-bottom:5px}.wm-drama-case strong{display:block;font-size:15px;color:#694651}.wm-drama-case p,.wm-drama-result p{margin:7px 0 0;font-size:13px;font-weight:700;line-height:1.72;color:#725a62}
.wm-drama-prompt{text-align:center;margin:14px 0 8px;font-size:12.5px;font-weight:900;color:#a65b76}.wm-drama-choices{display:grid;gap:8px}.wm-drama-choices button{border:1.5px solid #f1cbd8;border-radius:14px;padding:10px 12px;text-align:left;background:#fffafa;color:#75485a;cursor:pointer}.wm-drama-choices button b{display:block;font-size:13px;font-weight:900}.wm-drama-choices button i{display:block;margin-top:3px;font-style:normal;font-size:10.5px;font-weight:700;color:#ad8190;line-height:1.4}.wm-drama-choices button:active{transform:scale(.98);background:#fff0f5}
.wm-drama-wait,.wm-drama-empty{margin:14px 0 6px;text-align:center;background:#fff9ec;border:1.5px dashed #eedbb7;border-radius:15px;padding:17px 14px;font-size:12.5px;line-height:1.75;font-weight:800;color:#96754d}.wm-drama-result{margin-top:13px;background:#fff7e9;border:1.5px solid #f1dfb9;border-radius:15px;padding:12px 13px;color:#835d2b}.wm-drama-result b{font-size:13px;font-weight:900}.wm-drama-result span{display:inline-block;margin-top:8px;border-radius:999px;padding:4px 9px;background:#fff0cf;color:#a46b14;font-size:11px;font-weight:900}.wm-drama-history{margin:14px 3px 6px;padding-top:11px;border-top:1px dashed #efd6df}.wm-drama-history>b{display:block;font-size:11px;color:#a47786}.wm-drama-history span{display:block;margin-top:5px;font-size:11px;font-weight:700;color:#8b6e76}.wm-drama-ft{text-align:center;padding:9px 16px 17px}

.wm-ch-card{width:100%;max-width:400px;max-height:80vh;max-height:80dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#fffdf6,#fdf5e3);border:1.5px solid #eadfc8;border-radius:20px;box-shadow:0 12px 34px rgba(50,35,10,.42);overflow:hidden;animation:wmChIn .24s ease-out}
@keyframes wmChIn{from{transform:translateY(16px) scale(.97);opacity:.5}to{transform:translateY(0) scale(1);opacity:1}}
.wm-ch-hd{position:relative;text-align:center;padding:18px 46px 8px}
.wm-ch-ti{font-size:16.5px;font-weight:900;color:#6b5335}
.wm-ch-wk{font-size:11px;font-weight:800;color:#b39c78;margin-top:3px;letter-spacing:1.5px;font-variant-numeric:tabular-nums;min-height:14px}
.wm-ch-x{position:absolute;top:12px;right:12px;border:0;width:30px;height:30px;border-radius:50%;background:#f3ead8;color:#8a6f4d;font-size:14px;font-weight:900;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-ch-x:active{transform:scale(.9)}
.wm-ch-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:8px 22px 6px}
.wm-ch-paper{background:#fffcf3;border:1.5px dashed #e8dcc2;border-radius:14px;padding:16px 16px 14px;box-shadow:inset 0 1px 4px rgba(180,150,90,.14)}
.wm-ch-text{font-size:14.5px;line-height:2;color:#5d4a30;font-weight:600;text-align:justify;word-break:break-word}
.wm-ch-load{text-align:center;color:#8a7a62;font-size:13.5px;font-weight:700;line-height:1.8;padding:26px 8px}
.wm-ch-load .pen{display:inline-block;font-size:26px;animation:wmBob 1.1s ease-in-out infinite}
.wm-ch-ft{text-align:center;font-size:10.5px;font-weight:700;color:#b39c78;padding:10px 16px 14px}
/* ── P3 · 居民：住在地图上的小家人（idle 蹦跶 + 心情泡 + 名牌） ── */
.wm-res{position:absolute;z-index:3;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:2px;box-sizing:border-box;transition:transform 1.5s ease-in-out;will-change:transform}
.wm-res-b{display:block;line-height:1;filter:drop-shadow(0 2px 2px rgba(30,40,10,.35));animation:wmResBob 2.3s ease-in-out infinite}
.wm-night .wm-res-b{filter:drop-shadow(0 2px 2px rgba(0,0,20,.5)) drop-shadow(0 0 6px rgba(255,235,180,.35))}
@keyframes wmResBob{0%,100%{transform:translateY(0) scale(1,1)}50%{transform:translateY(-3px) scale(1.05,.94)}}
.wm-res-mood{position:absolute;top:-3px;right:6%;font-size:12px;line-height:1;filter:drop-shadow(0 1px 1px rgba(60,40,10,.25));animation:wmResMoodFloat 2.8s ease-in-out infinite}
@keyframes wmResMoodFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-2.5px)}}
.wm-res-nm{font-size:9px;font-weight:900;color:#6b5335;background:rgba(255,252,240,.92);border:1px solid #e8dcc2;border-radius:999px;padding:1px 6px;margin-top:1px;white-space:nowrap;line-height:1.4;box-shadow:0 1px 2px rgba(60,40,10,.2)}
.wm-res.near .wm-res-nm{border-color:#f2a7c3;color:#b04a72;box-shadow:0 0 8px rgba(242,150,190,.75)}
.wm-res.near .wm-res-b{animation:wmResExcite .55s ease-in-out infinite}
@keyframes wmResExcite{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
/* 上下文按钮竖排：建筑「进入」+ 居民「🤚摸摸」可并存 */
.wm-ctx{display:flex;flex-direction:column;gap:8px;align-items:flex-start}
.wm-ctx-btn.wm-pet{background:linear-gradient(180deg,#ff9fc0,#f2739f);border-bottom-color:#d95a86;box-shadow:0 4px 14px rgba(200,80,130,.45);animation-delay:-.7s}
/* 右下 HUD：🏡居民名册 fab */
.wm-fab.lav{background:rgba(236,231,255,.94);color:#6a5aa8;border-bottom-color:#cfc4ef}
/* ── P3 · 摸头对话气泡（body 级浮层，低于 cgModal 的 9999） ── */
.wm-pet-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9980;background:rgba(50,35,15,.42);display:flex;align-items:center;justify-content:center;padding:28px 26px;animation:wmDpFade .18s ease-out}
.wm-pet-card{position:relative;width:100%;max-width:320px;background:linear-gradient(180deg,#fffdf6,#fdf1ec);border:1.5px solid #f2ddd2;border-radius:24px;box-shadow:0 12px 34px rgba(50,35,10,.4);padding:22px 18px 18px;text-align:center;animation:wmPetIn .3s cubic-bezier(.34,1.56,.64,1)}
@keyframes wmPetIn{from{transform:translateY(20px) scale(.88);opacity:.4}to{transform:translateY(0) scale(1);opacity:1}}
.wm-pet-fx{position:absolute;font-size:15px;pointer-events:none;opacity:0;animation:wmPetFxUp 1.6s ease-out .15s infinite}
.wm-pet-fx.f1{left:16%;top:26%}
.wm-pet-fx.f2{right:14%;top:20%;animation-delay:.6s}
.wm-pet-fx.f3{right:26%;top:34%;animation-delay:1s;font-size:12px}
@keyframes wmPetFxUp{0%{opacity:0;transform:translateY(4px) scale(.6)}22%{opacity:1;transform:translateY(-4px) scale(1.05)}100%{opacity:0;transform:translateY(-26px) scale(.9)}}
.wm-pet-ava{font-size:52px;line-height:1.15;filter:drop-shadow(0 3px 4px rgba(60,40,10,.28));animation:wmResBob 2s ease-in-out infinite}
.wm-pet-nm{font-size:14px;font-weight:900;color:#6b5335;margin-top:2px}
.wm-pet-line{position:relative;background:#fff;border:1.5px solid #f2ddd2;border-radius:16px;padding:12px 14px;margin:12px 4px 0;font-size:14px;font-weight:700;color:#5d4a30;line-height:1.75;box-shadow:0 2px 8px rgba(180,120,90,.14)}
.wm-pet-line:before{content:'';position:absolute;top:-7px;left:50%;transform:translateX(-50%) rotate(45deg);width:12px;height:12px;background:#fff;border-left:1.5px solid #f2ddd2;border-top:1.5px solid #f2ddd2}
.wm-pet-chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:11px}
.wm-pet-chip{font-size:11.5px;font-weight:900;color:#8a6f4d;background:#fbf4e4;border:1px solid #eadfc8;border-radius:999px;padding:3px 10px;font-variant-numeric:tabular-nums}
.wm-pet-chip.pk{color:#b04a72;background:#ffe3ee;border-color:#f2b7cd;animation:wmResMoodFloat 1.6s ease-in-out infinite}
.wm-pet-ok{margin-top:14px;border:0;border-radius:999px;padding:10px 34px;font-size:14px;font-weight:900;cursor:pointer;color:#fff;background:linear-gradient(180deg,#ff9fc0,#f2739f);border-bottom:3px solid #d95a86;box-shadow:0 4px 14px rgba(200,80,130,.4);-webkit-tap-highlight-color:transparent}
.wm-pet-ok:active{transform:translateY(2px);border-bottom-width:1px}
/* ── P3 · 🏡居民名册（body 级底部浮层） ── */
.wm-rs-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9980;background:rgba(50,35,15,.45);display:flex;align-items:flex-end;justify-content:center;animation:wmDpFade .18s ease-out}
.wm-rs-card{width:100%;max-width:480px;max-height:76vh;max-height:76dvh;display:flex;flex-direction:column;background:#fffcf3;border-radius:22px 22px 0 0;box-shadow:0 -8px 28px rgba(50,35,10,.35);animation:wmDpUp .22s ease-out}
.wm-rs-loading{text-align:center;color:#8a7a62;font-size:13.5px;font-weight:700;padding:34px 16px}
.wm-rs-hd{display:flex;align-items:baseline;gap:8px;padding:15px 16px 9px;border-bottom:1.5px dashed #efe3cb}
.wm-rs-hd .ti{font-size:17px;font-weight:900;color:#6b5335}
.wm-rs-hd .su{flex:1;font-size:11.5px;font-weight:800;color:#b39c78;font-variant-numeric:tabular-nums}
.wm-rs-x{align-self:center;flex-shrink:0;border:0;width:30px;height:30px;border-radius:50%;background:#f3ead8;color:#8a6f4d;font-size:14px;font-weight:900;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-rs-x:active{transform:scale(.9)}
.wm-rs-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:10px 16px calc(18px + env(safe-area-inset-bottom,0px))}
.wm-rs-row{display:flex;align-items:center;gap:11px;background:#fff;border:1.5px solid #eee3cc;border-radius:16px;padding:10px 12px;margin-bottom:8px}
.wm-rs-row .av{flex-shrink:0;width:42px;height:42px;border-radius:50%;background:#fbf4e4;display:flex;align-items:center;justify-content:center;font-size:24px;box-shadow:inset 0 0 0 2px #fff,0 1px 3px rgba(60,40,10,.15)}
.wm-rs-row .mid{flex:1;min-width:0}
.wm-rs-row .nm{font-size:14px;font-weight:900;color:#5d4a30;display:flex;align-items:center;gap:6px}
.wm-rs-row .tr{font-size:10px;font-weight:800;color:#8a6f4d;background:#fbf4e4;border:1px solid #eadfc8;border-radius:999px;padding:1px 7px}
.wm-rs-bar{height:7px;background:#f3ead8;border-radius:999px;margin:5px 0 4px;overflow:hidden}
.wm-rs-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ffb1cd,#f2739f);transition:width .4s ease}
.wm-rs-row .st{font-size:11px;font-weight:700;color:#8a7a62;font-variant-numeric:tabular-nums}
.wm-rs-row .pt{flex-shrink:0;font-size:10.5px;font-weight:900;color:#b04a72;background:#ffe9f2;border-radius:999px;padding:4px 9px;white-space:nowrap}
.wm-rs-row.lock{opacity:.72;background:#fbf7ec;border-style:dashed}
.wm-rs-row.lock .av{background:#efe9da;font-size:20px}
.wm-rs-cap{text-align:center;font-size:10.5px;font-weight:700;color:#b39c78;padding:6px 8px 2px}
/* ── P4 · 🏛️ 纪念馆（照片回忆墙，body 级浮层，低于 cgModal 的 9999） ── */
.wm-fab.sky{background:rgba(223,239,251,.94);color:#3d6f96;border-bottom-color:#b7d7ec}
.wm-fab.wm-wide{grid-column:1/-1}
.wm-mu-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9980;background:rgba(50,35,15,.5);display:flex;align-items:flex-end;justify-content:center;animation:wmDpFade .18s ease-out}
.wm-mu-card{width:100%;max-width:480px;max-height:86vh;max-height:86dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#fffdf6,#fdf5e8);border-radius:22px 22px 0 0;box-shadow:0 -8px 28px rgba(50,35,10,.35);animation:wmDpUp .22s ease-out}
.wm-mu-loading{text-align:center;color:#8a7a62;font-size:13.5px;font-weight:700;padding:34px 16px}
.wm-mu-hd{position:relative;padding:15px 48px 10px 18px;border-bottom:1.5px dashed #efe3cb}
.wm-mu-hd .ti{font-size:17px;font-weight:900;color:#6b5335}
.wm-mu-hd .su{font-size:11.5px;font-weight:800;color:#b39c78;margin-top:3px;font-variant-numeric:tabular-nums}
.wm-mu-x{position:absolute;top:15px;right:12px;border:0;width:30px;height:30px;border-radius:50%;background:#f3ead8;color:#8a6f4d;font-size:14px;font-weight:900;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-mu-x:active{transform:scale(.9)}
.wm-mu-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px 15px calc(18px + env(safe-area-inset-bottom,0px))}
.wm-mu-empty{text-align:center;color:#a8977c;font-size:13px;font-weight:700;line-height:2.1;background:#fbf6e9;border:1.5px dashed #e8dcc2;border-radius:16px;padding:26px 16px}
.wm-mu-empty .ic{font-size:34px;line-height:1.4;display:inline-block}
.wm-mu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 11px;padding:2px 2px 0}
.wm-mu-shot{background:#fff;border:1px solid #eee3cc;border-radius:6px;padding:7px 7px 9px;box-shadow:0 3px 10px rgba(60,40,10,.16);cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-mu-shot:nth-child(odd){transform:rotate(-1.3deg)}
.wm-mu-shot:nth-child(even){transform:rotate(1.2deg)}
.wm-mu-shot:active{transform:scale(.95)}
.wm-mu-ph{position:relative;border-radius:4px;overflow:hidden;background:#f3ead8}
.wm-mu-ph img{display:block;width:100%;height:128px;object-fit:cover}
.wm-mu-who{position:absolute;top:5px;left:5px;font-size:13px;line-height:1;background:rgba(255,252,240,.92);border-radius:50%;padding:3px 4px;box-shadow:0 1px 3px rgba(60,40,10,.28)}
.wm-mu-dt{font-size:10px;font-weight:800;color:#b39c78;margin-top:6px;font-variant-numeric:tabular-nums;letter-spacing:.5px}
.wm-mu-cap{font-size:11.5px;font-weight:700;color:#6b5335;line-height:1.55;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}
.wm-mu-ft{text-align:center;font-size:10.5px;font-weight:700;color:#b39c78;padding:14px 8px 2px}
/* ── P3 · 🏅 家园图鉴卡片 ── */
.wm-col-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 9px;padding:0 2px}
.wm-col-card{background:#fff;border:1.5px solid #eee3cc;border-radius:14px;padding:11px 10px 10px;text-align:center}
.wm-col-card.done{background:linear-gradient(180deg,#f9fcf2,#f2f9e3);border-color:#d4e8b8}
.wm-col-card.ready{border-color:#f2b7cd;box-shadow:0 0 12px rgba(240,150,190,.35)}
.wm-col-card .em{display:block;font-size:26px;line-height:1.2}.wm-col-card b{display:block;font-size:12px;font-weight:900;color:#6b5335;margin:3px 0 1px}.wm-col-card i{display:block;font-style:normal;font-size:10px;font-weight:700;color:#a2895f;line-height:1.35}.wm-col-bar{height:5px;background:#f3ead8;border-radius:999px;margin:6px 2px 3px;overflow:hidden}.wm-col-bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ffc1d5,#f2739f);transition:width .5s ease}.wm-col-card.done .wm-col-bar span{background:linear-gradient(90deg,#a8d5a2,#6cbe5a)}.wm-col-card u{display:block;text-decoration:none;font-size:10px;font-weight:800;color:#b39c78}
/* 放大查看（比纪念馆高一层，仍低于 cgModal 9999） */
.wm-mu-big-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9985;background:rgba(30,20,8,.74);display:flex;align-items:center;justify-content:center;padding:22px 18px;animation:wmDpFade .15s ease-out}
.wm-mu-big-card{position:relative;width:100%;max-width:380px;max-height:88vh;max-height:88dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#fff;border-radius:12px;padding:12px 12px 16px;box-shadow:0 16px 44px rgba(0,0,0,.5);animation:wmPetIn .28s cubic-bezier(.34,1.56,.64,1)}
.wm-mu-big-card img{display:block;width:100%;border-radius:8px;background:#f3ead8}
.wm-mu-big-meta{display:flex;align-items:center;gap:7px;margin-top:11px;font-size:12.5px;font-weight:900;color:#8a6f4d}
.wm-mu-big-meta .em{font-size:17px;line-height:1}
.wm-mu-big-meta .wh{color:#6b5335}
.wm-mu-big-meta .dt{margin-left:auto;color:#b39c78;font-variant-numeric:tabular-nums}
.wm-mu-big-cap{margin-top:7px;font-size:14.5px;font-weight:700;color:#5d4a30;line-height:1.8;word-break:break-word}
.wm-mu-big-x{position:absolute;top:18px;right:18px;border:0;width:30px;height:30px;border-radius:50%;background:rgba(255,252,240,.92);color:#8a6f4d;font-size:14px;font-weight:900;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.3);-webkit-tap-highlight-color:transparent}
.wm-mu-big-x:active{transform:scale(.9)}

.wm-fab.rose{position:relative;background:rgba(255,224,236,.96);color:#c0416f;border-bottom-color:#f4aac6}
.wm-pb-badge{position:absolute;top:-5px;right:-4px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ff4d7d;color:#fff;font-size:10px;font-weight:900;line-height:16px;text-align:center;box-shadow:0 1px 4px rgba(200,20,70,.5)}
.wm-mu-tabs{display:flex;gap:7px;padding:10px 15px 0;flex-wrap:wrap;align-items:center}
.wm-mu-tab{display:inline-flex;align-items:center;gap:3px;border:1.5px solid #eaddc2;background:#fbf6e9;color:#a2895f;border-radius:999px;padding:6px 13px;font-size:12px;font-weight:800;line-height:1.3;cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.wm-mu-tab.on{background:linear-gradient(180deg,#ffd9e6,#ffc6d9);color:#b23a67;border-color:#f3aac5}
.wm-mu-tab:active{transform:translateY(1px)}
.wm-mu-tabs.wm-ss-toptabs{padding:10px 15px 6px;border-bottom:1px solid rgba(210,190,150,.55);gap:8px}
.wm-mu-tabs.wm-ss-subtabs{padding:8px 15px 4px;gap:8px}
.wm-ss-topbtn{background:rgba(244,234,214,.7);color:#8b6c3d;padding:7px 14px;font-size:13px}
.wm-ss-topbtn.on{background:linear-gradient(180deg,#f8e7bb,#f3d892);color:#6c4a12;border-color:#d7b76a;box-shadow:0 4px 12px rgba(120,88,25,.18)}
.wm-ss-subbtn{background:rgba(255,255,255,.78);color:#8c6d47;padding:6px 13px;font-size:12px}
.wm-ss-subbtn.on{background:#fff7e8;color:#6d4c16;border-color:#e1c07f;box-shadow:inset 0 0 0 1px rgba(229,193,120,.35)}
.wm-mu-shot.solo{width:64%;max-width:230px;margin:0 auto 14px}
.wm-pc{position:relative;background:linear-gradient(180deg,#fff8fb,#fff1f6);border:1.5px solid #f4d3e0;border-radius:14px;padding:13px 15px 12px;margin:0 auto 14px;max-width:400px;box-shadow:0 4px 14px rgba(180,60,110,.14)}
.wm-pc.collected{opacity:.5;transition:opacity .5s}
.wm-pc-top{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:900;color:#b8608a;margin-bottom:8px}
.wm-pc-top .em{font-size:17px;line-height:1}
.wm-pc-top .dt{color:#c99;font-variant-numeric:tabular-nums;letter-spacing:.5px}
.wm-pc-top .st{margin-left:auto;background:#ffe4ef;color:#c05480;border-radius:999px;padding:2px 9px;font-size:11px}
.wm-pc-img{border-radius:10px;overflow:hidden;margin-bottom:9px;background:#fbeaf1}
.wm-pc-img img{display:block;width:100%;max-height:260px;object-fit:cover}
.wm-pc-line{font-size:14.5px;font-weight:700;color:#6a4a58;line-height:1.9;word-break:break-word}
.wm-pc-sign{text-align:right;font-size:13px;margin-top:6px;color:#c07a98;font-weight:900}
.wm-pc-act{text-align:center;margin-top:11px}
.wm-mu-tag{position:absolute;top:5px;right:5px;font-size:10px;font-weight:900;background:rgba(80,140,220,.92);color:#fff;border-radius:999px;padding:2px 7px;box-shadow:0 1px 3px rgba(30,60,120,.4)}
.wm-decree{background:linear-gradient(180deg,#fff6ea,#fdeccf);border:1.5px solid #e8c98c;border-radius:14px;padding:12px 15px;margin:0 auto 14px;max-width:400px;box-shadow:0 4px 14px rgba(150,100,20,.16)}
.wm-decree-top{display:flex;align-items:center;gap:7px;margin-bottom:7px}
.wm-decree-top .em{font-size:17px;line-height:1}
.wm-decree-top .ti{font-size:14px;font-weight:900;color:#8a5a12}
.wm-decree-top .dt{margin-left:auto;font-size:11px;color:#b89a5e;font-variant-numeric:tabular-nums}
.wm-decree-body{font-size:13px;font-weight:600;color:#6d5326;line-height:1.75;word-break:break-word}
.wm-mu-expedition{background:linear-gradient(180deg,#edf5ee,#d9eadb);border-color:#9fc5a7}
.wm-mu-expedition .wm-decree-top .ti{color:#356345}
/* ── P4 · 🎨 装饰层：地图摆件（观赏不挡点击）+ 建设选盘 ── */
.wm-dec{position:absolute;z-index:1;pointer-events:none;display:flex;align-items:flex-end;justify-content:center;padding-bottom:9%;box-sizing:border-box}
.wm-dec-sh{position:absolute;bottom:6%;left:30%;right:30%;height:9%;background:rgba(60,90,30,.26);border-radius:50%;filter:blur(1px)}
.wm-night .wm-dec-sh{background:rgba(0,0,25,.4)}
.wm-dec-b{position:relative;display:block;line-height:1;filter:drop-shadow(0 2px 2px rgba(40,50,10,.32));animation:wmDecSway 3.2s ease-in-out infinite;transform-origin:50% 100%}
.wm-night .wm-dec-b{filter:drop-shadow(0 2px 2px rgba(0,0,20,.45)) drop-shadow(0 0 6px rgba(255,225,160,.35))}
@keyframes wmDecSway{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
/* 🎨工具下已摆装饰小幅摇晃提示「可点格撤除」 */
.wm-dec.rm .wm-dec-b{animation:wmDecWig .55s ease-in-out infinite}
@keyframes wmDecWig{0%,100%{transform:rotate(-5deg) translateY(0)}50%{transform:rotate(5deg) translateY(-2px)}}
/* 手绘装饰 sprite（底边中心贴格底，可略向上溢出；轻摇） */
.wm-dec-img{position:relative;display:block;width:92%;height:auto;pointer-events:none;
  filter:drop-shadow(0 2px 2px rgba(40,50,10,.32));animation:wmDecSway 3.2s ease-in-out infinite;transform-origin:50% 100%}
.wm-night .wm-dec-img{filter:drop-shadow(0 2px 2px rgba(0,0,20,.45)) drop-shadow(0 0 6px rgba(255,225,160,.35))}
.wm-dec.rm .wm-dec-img{animation:wmDecWig .55s ease-in-out infinite}
/* 装饰选盘（工具坞内、工具行上方，按 cat 分组） */
.wm-dc-pal{max-height:30vh;max-height:30dvh;overflow-y:auto;-webkit-overflow-scrolling:touch;background:#fbf6e9;border:1.5px dashed #e8dcc2;border-radius:14px;padding:7px 9px 9px;margin-bottom:8px}
.wm-dock.build.min .wm-dc-pal{display:none}
.wm-dc-load{text-align:center;font-size:12px;font-weight:800;color:#a8977c;padding:10px 4px}
.wm-dc-cat{font-size:10.5px;font-weight:900;color:#b39c78;margin:6px 2px 4px}
.wm-dc-cat:first-child{margin-top:1px}
.wm-dc-row{display:flex;flex-wrap:wrap;gap:6px}
.wm-dc-it{border:2px solid #eadfc8;background:#fff;border-radius:12px;width:calc((100% - 24px)/5);min-width:52px;padding:6px 2px 5px;display:flex;flex-direction:column;align-items:center;gap:1px;cursor:pointer;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
.wm-dc-it .em{font-size:19px;line-height:1.15}
.wm-dc-it .nm{font-size:9.5px;font-weight:800;color:#8a6f4d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.wm-dc-it:active{transform:scale(.92)}
.wm-dc-it.on{background:#ffeef5;border-color:#f48fb1;box-shadow:0 0 0 2px rgba(244,143,177,.3)}
.wm-dc-it.on .nm{color:#b04a72}
/* ── v0712-17 · 三小人在场：对方快照小人 + 一一🍼（AI 崽） ── */
.wm-ava{position:absolute;z-index:3;pointer-events:none;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding-bottom:2px;box-sizing:border-box;will-change:transform}
.wm-ava-sh{position:absolute;bottom:7%;left:24%;right:24%;height:12%;background:rgba(40,60,20,.26);border-radius:50%;filter:blur(1px)}
.wm-night .wm-ava-sh{background:rgba(0,0,25,.4)}
.wm-ava-b{position:relative;display:block;line-height:1;filter:drop-shadow(0 2px 2px rgba(30,40,10,.35));animation:wmResBob 2.6s ease-in-out infinite}
.wm-night .wm-ava-b{filter:drop-shadow(0 2px 2px rgba(0,0,20,.5)) drop-shadow(0 0 6px rgba(255,235,180,.35))}
.wm-ava-nm{font-size:9px;font-weight:900;color:#6b5335;background:rgba(255,252,240,.92);border:1px solid #e8dcc2;border-radius:999px;padding:1px 6px;margin-top:1px;white-space:nowrap;line-height:1.4;box-shadow:0 1px 2px rgba(60,40,10,.2)}
/* 对方 = 最后位置快照，不是实时 → 半透明些 + 「TA 在这」淡标签 */
.wm-ava-peer{opacity:.78}
.wm-ava-peer .wm-ava-b{animation-duration:3.4s}
.wm-ava-ago{position:absolute;top:-13px;left:50%;transform:translateX(-50%);font-size:8.5px;font-weight:800;color:#8a7a62;background:rgba(255,252,240,.85);border:1px dashed #e0d2b4;border-radius:999px;padding:1px 7px;white-space:nowrap;line-height:1.5;box-shadow:0 1px 2px rgba(60,40,10,.14)}
.wm-night .wm-ava-ago{background:rgba(255,252,240,.72)}
/* 一一🍼：轻快小蹦跶 + 粉名牌 + 温柔游走过渡 */
.wm-ava-yiyi{transition:transform 1.5s ease-in-out}
.wm-ava-yiyi .wm-ava-b{animation:wmYyBob 1.7s ease-in-out infinite}
@keyframes wmYyBob{0%,100%{transform:translateY(0) scale(1,1)}30%{transform:translateY(-4px) scale(.95,1.06)}55%{transform:translateY(0) scale(1.06,.93)}}
.wm-ava-yiyi .wm-ava-nm{color:#b04a72;border-color:#f2c9d8;background:rgba(255,244,249,.94)}
/* 走近高亮：名牌泛粉光 + 兴奋小跳 */
.wm-ava.near .wm-ava-nm{border-color:#f2a7c3;color:#b04a72;box-shadow:0 0 8px rgba(242,150,190,.75)}
.wm-ava.near .wm-ava-b{animation:wmResExcite .55s ease-in-out infinite}
/* 上下文按钮：🫶 抱抱对方 / 🤲 逗逗一一（暖橙，和进入/摸摸并存） */
.wm-ctx-btn.wm-poke{background:linear-gradient(180deg,#ffc48a,#f59a5b);border-bottom-color:#dd7f42;box-shadow:0 4px 14px rgba(220,130,60,.45)}
/* ── v0712-18 · 三小人图片头像（圆形裁切 + 白描边；加载失败 JS 回落 emoji） ── */
.wm-face{display:block;border-radius:50%;object-fit:cover;border:2px solid #fff;background:#fff;box-shadow:0 2px 5px rgba(30,40,10,.3);box-sizing:border-box}
.wm-night .wm-face{box-shadow:0 2px 5px rgba(0,0,20,.5),0 0 8px rgba(255,235,180,.4)}
.wm-face-em{display:block;line-height:1}
/* ── v0712-18 · 装饰选盘：💗价格 + 余额条 + 买不起置灰 ── */
.wm-dc-bal{font-size:11px;font-weight:900;color:#8a6f4d;background:#fff;border:1.5px solid #f2d9e2;border-radius:999px;padding:4px 10px;margin:1px 0 6px;text-align:center}
.wm-dc-bal b{color:#e05c8a}
.wm-dc-it .pr{font-size:9px;font-weight:900;color:#e05c8a;line-height:1.3;white-space:nowrap}
.wm-dc-it.off{opacity:.45;filter:grayscale(.55)}
.wm-dc-it.off .pr{color:#a8977c}
/* ── v0712-22 · 🏡 家园美观度胶囊（选盘顶部、余额条下）：分数 + 里程碑进度条 ── */
.wm-dc-beauty{background:linear-gradient(180deg,#fff,#fff6ef);border:1.5px solid #f2ddc2;border-radius:14px;padding:6px 10px 7px;margin:0 0 7px;text-align:center}
.wm-dc-bt-top{font-size:11px;font-weight:900;color:#8a6f4d;line-height:1.5}
.wm-dc-bt-top b{color:#e08a3c;font-size:12.5px}
.wm-dc-bt-bar{height:7px;background:#f3e7d2;border-radius:999px;margin:5px 6px 4px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(120,90,40,.15)}
.wm-dc-bt-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ffcf8a,#ff9fc0);box-shadow:0 0 6px rgba(255,160,190,.6);transition:width .4s ease}
.wm-dc-bt-ms{font-size:10px;font-weight:800;color:#b39c78;line-height:1.5}
.wm-dc-bt-ms b{color:#e05c8a;font-size:11px}
.wm-dc-bt-ms.max{color:#e08a3c;font-weight:900;margin-top:3px}

/* ── v0712-19 · 新手引导浮层（body 级，盖 HUD、低于 cgModal 9999） ── */
.wm-tutor{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9950;-webkit-tap-highlight-color:transparent;animation:wmDpFade .22s ease-out}
.wm-tutor-dim{position:absolute;top:0;left:0;right:0;bottom:0;background:rgba(46,30,18,.55)}
/* 聚光洞：金色高亮框 + 超大 box-shadow 压暗四周（目标本体点亮） */
.wm-tutor-spot{position:absolute;border-radius:18px;border:3px solid #ffd98a;pointer-events:none;
  box-shadow:0 0 0 4000px rgba(46,30,18,.55);animation:wmTutorPulse 1.4s ease-in-out infinite}
@keyframes wmTutorPulse{
  0%,100%{border-color:#ffd98a;box-shadow:0 0 0 4000px rgba(46,30,18,.55),0 0 0 0 rgba(255,205,120,.0)}
  50%{border-color:#ffbf5e;box-shadow:0 0 0 4000px rgba(46,30,18,.55),0 0 16px 5px rgba(255,205,120,.8)}}
.wm-tutor-arr{position:absolute;font-size:27px;line-height:1;pointer-events:none;
  filter:drop-shadow(0 2px 5px rgba(30,15,0,.45));animation:wmBob 1s ease-in-out infinite}
/* 引导卡：暖色信纸 */
.wm-tutor-card{position:absolute;left:16px;right:16px;background:linear-gradient(180deg,#fffdf6,#fff3e2);
  border:2px solid #ffe3b3;border-radius:20px;padding:17px 16px 14px;box-shadow:0 10px 32px rgba(50,30,10,.4)}
.wm-tutor-no{position:absolute;top:-12px;left:16px;background:linear-gradient(180deg,#ffb35c,#ff9640);color:#fff;
  font-size:11px;font-weight:900;border-radius:999px;padding:3px 11px;box-shadow:0 2px 6px rgba(200,120,30,.45);letter-spacing:1px}
.wm-tutor-ti{font-size:16.5px;font-weight:900;color:#6b4a26;margin:2px 0 6px}
.wm-tutor-ds{font-size:13px;line-height:1.7;color:#8a6f4d;font-weight:600}
.wm-tutor-btns{display:flex;gap:10px;margin-top:12px;justify-content:flex-end;align-items:center}
.wm-tutor-skip{border:0;background:transparent;color:#b3a086;font-size:13px;font-weight:800;padding:9px 10px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-tutor-next{border:0;background:linear-gradient(180deg,#ffb35c,#ff9640);color:#fff;font-size:14px;font-weight:900;
  border-radius:999px;padding:10px 20px;box-shadow:0 4px 12px rgba(230,130,40,.45);border-bottom:3px solid #e07f2e;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-tutor-next:active{transform:translateY(2px);border-bottom-width:1px}
/* 顶栏 ❔ 重看引导小按钮（和返回/时钟同款胶囊质感） */
.wm-tutor-q{pointer-events:auto;border:0;background:rgba(255,252,243,.88);color:#6b5335;font-size:13px;font-weight:900;
  width:30px;height:30px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 6px rgba(60,40,10,.22);cursor:pointer;-webkit-tap-highlight-color:transparent;backdrop-filter:blur(3px)}
.wm-tutor-q:active{transform:scale(.9)}

/* ── v0712-20 · 居民送礼 + 每日心愿 ── */
/* 走近居民的心愿小气泡（ctx 按钮上方，暖白纸片 + 粉虚线） */
.wm-ctx-wish{max-width:230px;font-size:11.5px;font-weight:900;color:#b04a72;background:rgba(255,250,244,.95);
  border:1.5px dashed #f2b7cd;border-radius:12px 12px 12px 3px;padding:5px 11px;line-height:1.5;
  box-shadow:0 2px 8px rgba(180,80,120,.2);animation:wmResMoodFloat 1.8s ease-in-out infinite}
/* 摸摸+送礼并排一行 */
.wm-ctx-duo{display:flex;gap:8px;align-items:center}
.wm-ctx-btn.wm-gift{background:linear-gradient(180deg,#ffc76e,#f5a743);border-bottom-color:#dd8b2c;box-shadow:0 4px 14px rgba(220,150,50,.45);animation-delay:-.35s}
/* 送礼选盘：底部上拉卡（同名册质感） */
.wm-gf-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9980;background:rgba(50,35,15,.45);display:flex;align-items:flex-end;justify-content:center;animation:wmDpFade .18s ease-out}
.wm-gf-card{width:100%;max-width:480px;max-height:72vh;max-height:72dvh;display:flex;flex-direction:column;background:#fffcf3;border-radius:22px 22px 0 0;box-shadow:0 -8px 28px rgba(50,35,10,.35);animation:wmDpUp .22s ease-out}
.wm-gf-loading{text-align:center;color:#8a7a62;font-size:13.5px;font-weight:700;padding:34px 16px}
.wm-gf-foot{text-align:center;padding:0 0 calc(16px + env(safe-area-inset-bottom,0px))}
.wm-gf-hd{display:flex;align-items:center;gap:10px;padding:14px 16px 10px;border-bottom:1.5px dashed #efe3cb}
.wm-gf-hd .av{flex-shrink:0;width:44px;height:44px;border-radius:50%;background:#fbf4e4;display:flex;align-items:center;justify-content:center;font-size:26px;box-shadow:inset 0 0 0 2px #fff,0 1px 3px rgba(60,40,10,.15)}
.wm-gf-hd .mid{flex:1;min-width:0}
.wm-gf-hd .ti{font-size:16px;font-weight:900;color:#6b5335}
.wm-gf-hd .ws{font-size:11.5px;font-weight:900;color:#b04a72;margin-top:2px}
.wm-gf-x{flex-shrink:0;border:0;width:30px;height:30px;border-radius:50%;background:#f3ead8;color:#8a6f4d;font-size:14px;font-weight:900;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-gf-x:active{transform:scale(.9)}
.wm-gf-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 16px calc(18px + env(safe-area-inset-bottom,0px))}
.wm-gf-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.wm-gf-it{position:relative;border:2px solid #eadfc8;background:#fff;border-radius:14px;padding:14px 2px 8px;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
.wm-gf-it:active{transform:scale(.92)}
.wm-gf-it .em{font-size:24px;line-height:1.15}
.wm-gf-it .nm{font-size:10px;font-weight:800;color:#8a6f4d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.wm-gf-it .qt{font-size:9.5px;font-weight:900;color:#b39c78;font-variant-numeric:tabular-nums}
/* 命中今日心愿：粉金高亮 + 「TA 想要 ❤」小旗 + 呼吸光 */
.wm-gf-it.wish{background:#fff2f7;border-color:#f48fb1;animation:wmGfWish 1.6s ease-in-out infinite}
.wm-gf-it.wish .nm{color:#b04a72}
.wm-gf-it.wish .tag{position:absolute;top:-9px;left:50%;transform:translateX(-50%);font-size:8.5px;font-weight:900;color:#fff;
  background:linear-gradient(180deg,#ff9fc0,#f2739f);border-radius:999px;padding:2px 8px;white-space:nowrap;line-height:1.4;box-shadow:0 2px 6px rgba(200,80,130,.4)}
@keyframes wmGfWish{0%,100%{box-shadow:0 0 0 0 rgba(244,143,177,.0)}50%{box-shadow:0 0 12px 3px rgba(244,143,177,.55)}}
.wm-gf-empty{text-align:center;font-size:13px;font-weight:700;color:#8a7a62;line-height:1.8;padding:26px 10px}
.wm-gf-empty .ic{font-size:34px;line-height:1.4}
.wm-gf-cap{text-align:center;font-size:10.5px;font-weight:700;color:#b39c78;padding:10px 8px 2px}
/* 送礼结果气泡：命中心愿加撒 💗✨ + 卡片泛粉光；回赠单独一行惊喜 */
.wm-pet-fx.f4{left:24%;top:14%;animation-delay:.3s;font-size:17px}
.wm-pet-fx.f5{left:10%;top:44%;animation-delay:.85s;font-size:13px}
.wm-pet-fx.f6{right:10%;top:46%;animation-delay:1.25s;font-size:16px}
.wm-pet-card.wm-gf-wow{border-color:#f4a9c4;animation:wmPetIn .3s cubic-bezier(.34,1.56,.64,1),wmGfWow 1.8s ease-in-out .3s infinite}
@keyframes wmGfWow{0%,100%{box-shadow:0 12px 34px rgba(50,35,10,.4)}50%{box-shadow:0 12px 34px rgba(50,35,10,.4),0 0 22px 6px rgba(244,143,177,.5)}}
.wm-gf-hit{display:inline-block;margin-top:7px;font-size:11px;font-weight:900;color:#fff;background:linear-gradient(180deg,#ff9fc0,#f2739f);
  border-radius:999px;padding:3px 12px;box-shadow:0 2px 8px rgba(200,80,130,.4);animation:wmResMoodFloat 1.5s ease-in-out infinite}
.wm-gf-back{margin:10px 4px 0;font-size:12.5px;font-weight:900;color:#b04a72;background:#fff0f6;border:1.5px dashed #f2b7cd;
  border-radius:12px;padding:8px 12px;line-height:1.6;animation:wmDpFade .4s ease-out}
/* 名册每居民「今日想要」一行 */
.wm-rs-wish{font-size:11px;font-weight:800;color:#b04a72;margin-top:3px}
.wm-rs-wish b{font-weight:900}

/* ── v0712-23 · 一一自主行为气泡 + 💞 狼兔团聚 ── */
/* 一一🍼头顶的小活动泡：「🛏️ 在民宿被子里打滚」（粉纸片 + 轻飘；pointer-events 随 .wm-ava 为 none，不挡路） */
.wm-yy-act{position:absolute;top:-26px;left:50%;font-size:9px;font-weight:900;color:#b04a72;
  background:rgba(255,244,249,.94);border:1.5px dashed #f2c9d8;border-radius:12px 12px 12px 3px;padding:2px 8px;
  white-space:nowrap;line-height:1.5;box-shadow:0 2px 6px rgba(180,80,120,.22);animation:wmYyActFloat 2.4s ease-in-out infinite}
@keyframes wmYyActFloat{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,-3px)}}
.wm-night .wm-yy-act{background:rgba(255,244,249,.85)}
/* 逗逗气泡里「一一今天在干嘛」小行（复用 pet 气泡卡内） */
.wm-yy-doing{display:inline-block;margin-top:8px;font-size:11.5px;font-weight:900;color:#b04a72;background:#fff0f6;
  border:1.5px dashed #f2b7cd;border-radius:999px;padding:4px 12px;line-height:1.5}
/* 💞 团聚小胶囊：顶栏下居中浮着（有时局横幅时往下让一让），呼吸粉光，不挡点击 */
.wm-ru-wrap{position:absolute;top:calc(94px + env(safe-area-inset-top,0px));left:0;right:0;z-index:7;display:flex;justify-content:center;pointer-events:none}
.wm-ru-wrap.below-evt{top:calc(128px + env(safe-area-inset-top,0px))}
.wm-ru-pill{font-size:11px;font-weight:900;color:#b04a72;background:rgba(255,240,246,.92);border:1.5px solid #f2b7cd;
  border-radius:999px;padding:4px 13px;box-shadow:0 2px 8px rgba(200,80,130,.28);backdrop-filter:blur(3px);
  animation:wmRuIn .5s ease-out,wmRuGlow 2.2s ease-in-out .5s infinite}
@keyframes wmRuIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
@keyframes wmRuGlow{0%,100%{box-shadow:0 2px 8px rgba(200,80,130,.28)}50%{box-shadow:0 2px 8px rgba(200,80,130,.28),0 0 14px 3px rgba(244,143,177,.55)}}
.wm-night .wm-ru-pill{background:rgba(255,240,246,.85)}

/* ── v0712-24 · 🏛️ 纪念馆：📊 家园小统计 + 🌱 里程碑时间线 ── */
.wm-mu-st-lead{text-align:center;font-size:12px;font-weight:800;color:#a2895f;margin:2px 6px 12px;line-height:1.65}
.wm-mu-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0 2px}
.wm-mu-stat{background:linear-gradient(180deg,#fff,#fdf5e8);border:1.5px solid #efe2c8;border-radius:16px;padding:13px 8px 11px;display:flex;flex-direction:column;align-items:center;gap:3px;box-shadow:0 3px 10px rgba(60,40,10,.1);animation:wmDpFade .3s ease-out}
.wm-mu-stat .em{font-size:23px;line-height:1.2;filter:drop-shadow(0 1px 2px rgba(60,40,10,.15))}
.wm-mu-stat .num{font-size:23px;font-weight:900;color:#e0743c;line-height:1.2;font-variant-numeric:tabular-nums}
.wm-mu-stat .num i{font-style:normal;font-size:11.5px;font-weight:900;color:#b39c78;margin-left:2px}
.wm-mu-stat .lb{font-size:11px;font-weight:800;color:#8a6f4d;line-height:1.4}
/* 单数张时最后一张横躺满行：emoji+数字+文案一排 */
.wm-mu-stat.wide{grid-column:1/-1;flex-direction:row;justify-content:center;gap:9px;padding:11px 8px}
.wm-mu-stat.wide .em{font-size:20px}
.wm-mu-stat.wide .num{font-size:20px}
/* 时间线：左侧一根暖粉渐变线，圆点骑在线上 */
.wm-mu-tl{position:relative;padding:4px 2px 2px 6px}
.wm-mu-tl:before{content:'';position:absolute;left:17.5px;top:14px;bottom:14px;width:3px;border-radius:99px;background:linear-gradient(180deg,#ffb9d2,#f6dfae 68%,#efe3cb)}
.wm-mu-tl-it{position:relative;display:flex;align-items:center;gap:11px;padding:8px 2px}
.wm-mu-tl-it .dot{position:relative;z-index:1;flex:0 0 auto;width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:900;background:#f6efdd;border:2px solid #ddcfae;color:transparent;box-sizing:border-box}
.wm-mu-tl-it .bd{flex:1;min-width:0}
.wm-mu-tl-it .lb{font-size:13.5px;font-weight:900;color:#b3a086;line-height:1.45}
.wm-mu-tl-it .dt{font-size:10.5px;font-weight:800;color:#c4b394;margin-top:1px;font-variant-numeric:tabular-nums;letter-spacing:.4px}
.wm-mu-tl-it .day{flex:0 0 auto;font-size:10px;font-weight:900;color:#b3a086;background:#f6efdd;border-radius:999px;padding:2px 9px;font-variant-numeric:tabular-nums}
/* 已达成：粉光点亮 ✓ + 文案回暖 */
.wm-mu-tl-it.ok .dot{background:linear-gradient(180deg,#ffb3cd,#f2739f);border-color:#fff;color:#fff;box-shadow:0 0 10px 2px rgba(244,143,177,.55)}
.wm-mu-tl-it.ok .lb{color:#6b5335}
.wm-mu-tl-it.ok .dt{color:#b39c78}
.wm-mu-tl-it.ok .day{background:#ffe4ef;color:#c05480}
/* 「📍今天」小卡：卡在最后一个点亮和下一个约定之间，粉虚线 + 心形骑线 + 进度条 */
.wm-mu-tl-now{position:relative;margin:5px 0 7px 38px;background:#fff0f6;border:1.5px dashed #f2b7cd;border-radius:14px;padding:9px 12px 10px;animation:wmDpFade .3s ease-out}
.wm-mu-tl-now:before{content:'💗';position:absolute;left:-31px;top:calc(50% - 8px);font-size:16px;line-height:1;filter:drop-shadow(0 0 6px rgba(244,143,177,.85));animation:wmResMoodFloat 1.8s ease-in-out infinite}
.wm-mu-tl-now .pin{font-size:12.5px;font-weight:900;color:#b04a72;line-height:1.5}
.wm-mu-tl-now .bar{height:7px;background:#ffe0ec;border-radius:999px;margin:7px 1px 6px;overflow:hidden;box-shadow:inset 0 1px 2px rgba(180,80,120,.18)}
.wm-mu-tl-now .bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#ffcf8a,#ff9fc0);box-shadow:0 0 6px rgba(255,160,190,.65)}
.wm-mu-tl-now .hint{font-size:11px;font-weight:800;color:#c4708f;line-height:1.55}
.wm-mu-tl-now .hint b{color:#e0447e;font-size:12.5px;font-variant-numeric:tabular-nums}

/* ── v0712-25 · P7 🏆 家园繁荣榜 ── */
/* HUD 按钮：香槟金（和纪念馆并排第 3 行） */
.wm-act-panel .wm-fab.raid{background:rgba(232,244,255,.96);color:#356a9d;border-bottom-color:#b6d6ee;flex-direction:column;gap:2px;padding:8px 11px}
.wm-act-panel .wm-fab.raid u{display:block;max-width:94px;font-size:9.5px;font-weight:800;color:#7a93ad;text-decoration:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-fab.camp{background:rgba(234,248,225,.96);color:#577c35;border-bottom-color:#bfd7a0}
.wm-front-wrap{position:absolute;top:calc(94px + env(safe-area-inset-top,0px));left:0;right:0;z-index:7;display:flex;justify-content:center;pointer-events:none}
.wm-front-wrap.below-evt{top:calc(128px + env(safe-area-inset-top,0px))}
.wm-front-alert{pointer-events:auto;display:flex;align-items:center;gap:10px;max-width:min(92vw,360px);border:0;border-radius:18px;padding:8px 12px;background:linear-gradient(180deg,rgba(255,244,235,.98),rgba(255,234,222,.96));box-shadow:0 6px 18px rgba(120,55,30,.24);cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-front-alert .em{font-size:18px;line-height:1;animation:wmResMoodFloat 1.2s ease-in-out infinite}
.wm-front-alert .bd{flex:1;display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.wm-front-alert .bd b{font-size:12.5px;color:#8f4728;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-front-alert .bd i{font-style:normal;font-size:10.5px;font-weight:800;color:#b17657;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.wm-front-alert .go{flex-shrink:0;font-size:11px;font-weight:900;color:#c55f39}
.wm-front-pulse{position:absolute;z-index:2;pointer-events:none}
.wm-front-pulse i{display:block;width:100%;height:100%;border-radius:999px;background:linear-gradient(90deg,rgba(240,88,72,.08),rgba(224,52,44,.88),rgba(240,88,72,.08));box-shadow:0 0 18px rgba(224,52,44,.45);animation:wmFrontPulse 1.15s ease-in-out infinite}
.wm-front-pulse.north,.wm-front-pulse.south{left:14%;right:14%;height:9px}
.wm-front-pulse.north{top:10px}.wm-front-pulse.south{bottom:12px}
.wm-front-pulse.east,.wm-front-pulse.west{top:18%;bottom:18%;width:9px}
.wm-front-pulse.east{right:10px}.wm-front-pulse.west{left:10px}
.wm-front-pulse.east i,.wm-front-pulse.west i{background:linear-gradient(180deg,rgba(240,88,72,.08),rgba(224,52,44,.88),rgba(240,88,72,.08))}
@keyframes wmFrontPulse{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}
.wm-outpost-wrap{position:absolute;right:12px;top:50%;transform:translateY(-50%);z-index:6;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.wm-outpost-list{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
.wm-outpost-chip{display:flex;align-items:center;gap:8px;max-width:138px;border:0;border-radius:16px 0 0 16px;padding:7px 10px;background:rgba(255,252,244,.96);box-shadow:0 4px 12px rgba(70,45,15,.2);cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-outpost-chip .em{font-size:16px;line-height:1}
.wm-outpost-chip .bd{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.wm-outpost-chip .bd b{font-size:11px;color:#6b5335;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:98px}
.wm-outpost-chip .bd i{font-style:normal;font-size:9px;font-weight:800;color:#9b8767;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:98px}
.wm-outpost-chip.go{background:linear-gradient(180deg,rgba(238,247,255,.97),rgba(223,239,251,.96))}
.wm-outpost-chip.lock,.wm-outpost-chip.cap,.wm-outpost-chip.dim{opacity:.92}
.wm-outpost{display:flex;align-items:center;gap:8px;max-width:132px;border:0;border-radius:18px 0 0 18px;padding:9px 10px;background:linear-gradient(180deg,rgba(255,248,236,.96),rgba(244,235,218,.95));box-shadow:0 6px 18px rgba(70,45,15,.24);cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-outpost .bd{display:flex;flex-direction:column;align-items:flex-start;min-width:0}
.wm-outpost .bd b{font-size:12px;color:#6b5335;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:96px}
.wm-outpost .bd i{font-style:normal;font-size:10px;font-weight:800;color:#9b8767;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:96px}
/* 👑 冠军彩带横幅：金粉渐变 + 六枚小彩纸各自飘 */
.wm-ss-champ{position:relative;overflow:hidden;text-align:center;background:linear-gradient(135deg,#fff3d0,#ffe3ee);
  border:2px solid #f3cf8a;border-radius:16px;padding:14px 12px 12px;margin:0 2px 13px;box-shadow:0 4px 14px rgba(200,150,40,.22);animation:wmDpFade .3s ease-out}
.wm-ss-champ .tt{font-size:16.5px;font-weight:900;color:#a5690e;line-height:1.4;text-shadow:0 1px 0 #fff}
.wm-ss-champ .ds{font-size:11.5px;font-weight:800;color:#b98a3a;margin-top:3px;line-height:1.5}
.wm-ss-cf{position:absolute;font-size:14px;line-height:1;pointer-events:none;animation:wmSsCf 2.2s ease-in-out infinite}
.wm-ss-cf.c1{left:6%;top:10%}.wm-ss-cf.c2{left:20%;top:58%;animation-delay:.4s}.wm-ss-cf.c3{left:38%;top:6%;animation-delay:.9s;font-size:11px}
.wm-ss-cf.c4{right:34%;top:60%;animation-delay:.2s;font-size:12px}.wm-ss-cf.c5{right:16%;top:8%;animation-delay:.7s}.wm-ss-cf.c6{right:5%;top:52%;animation-delay:1.1s}
@keyframes wmSsCf{0%,100%{transform:translateY(0) rotate(-8deg);opacity:.85}50%{transform:translateY(-6px) rotate(10deg);opacity:1}}
/* 排行榜行：名次 + 头像 + 名字/比例条 + 分数 */
.wm-ss-list{display:flex;flex-direction:column;gap:8px;padding:0 2px}
.wm-ss-row{display:flex;align-items:center;gap:9px;background:linear-gradient(180deg,#fff,#fdf6ea);
  border:1.5px solid #efe2c8;border-radius:15px;padding:9px 11px;box-shadow:0 2px 8px rgba(60,40,10,.08);animation:wmDpFade .3s ease-out}
.wm-ss-row .rk{flex:0 0 26px;text-align:center;font-size:19px;line-height:1.2}
.wm-ss-row .rk i{font-style:normal;font-size:13px;font-weight:900;color:#b3a086;font-variant-numeric:tabular-nums}
.wm-ss-row .em{flex:0 0 auto;font-size:22px;line-height:1.2;filter:drop-shadow(0 1px 2px rgba(60,40,10,.15))}
.wm-ss-row .bd{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.wm-ss-row .nm-line{display:flex;align-items:center;gap:6px;min-width:0}
.wm-ss-row .nm-line b{font-size:13.5px;font-weight:900;color:#6b5335;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-ss-row .tag{font-style:normal;text-decoration:none;flex:0 0 auto;font-size:9px;font-weight:900;border-radius:999px;padding:1.5px 7px;line-height:1.5;white-space:nowrap}
.wm-ss-row .tag.us{color:#fff;background:linear-gradient(180deg,#ff9fc0,#f2739f);box-shadow:0 1px 5px rgba(200,80,130,.4)}
.wm-ss-row .tag.foe{color:#c03636;background:#ffe4e0;border:1px solid #f2a49a}
.wm-ss-row .bar{height:6px;background:#f3ead8;border-radius:999px;overflow:hidden}
.wm-ss-row .bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#f6cf8a,#eab35e)}
.wm-ss-row .sc{flex:0 0 auto;font-size:15px;font-weight:900;color:#c98a2e;font-variant-numeric:tabular-nums}
.wm-ss-row .sc i{font-style:normal;font-size:9.5px;font-weight:900;color:#c4b394;margin-left:1px}
/* 我们的家：暖粉描边 + 呼吸光 + 粉条 */
.wm-ss-row.home{background:linear-gradient(180deg,#fff8fb,#ffeef5);border:2px solid #f48fb1;animation:wmDpFade .3s ease-out,wmSsHome 2s ease-in-out .3s infinite}
.wm-ss-row.home .nm-line b{color:#b04a72}
.wm-ss-row.home .bar{background:#ffe0ec}
.wm-ss-row.home .bar i{background:linear-gradient(90deg,#ffcf8a,#ff9fc0);box-shadow:0 0 6px rgba(255,160,190,.6)}
.wm-ss-row.home .sc{color:#e0447e}
@keyframes wmSsHome{0%,100%{box-shadow:0 2px 8px rgba(200,80,130,.16)}50%{box-shadow:0 2px 8px rgba(200,80,130,.16),0 0 12px 3px rgba(244,143,177,.45)}}
/* 宿敌：面色发红一点，紧咬感 */
.wm-ss-row.nm{background:linear-gradient(180deg,#fff,#fdf0ec);border-color:#eec6b8}
/* 繁荣度构成小徽章条 */
.wm-ss-sub{font-size:12px;font-weight:900;color:#8a6f4d;margin:15px 4px 8px;line-height:1.5}
.wm-ss-parts{display:flex;flex-wrap:wrap;gap:7px;padding:0 2px}
.wm-ss-part{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(180deg,#fff,#fdf5e8);
  border:1.5px solid #efe2c8;border-radius:999px;padding:4px 10px 4px 8px;box-shadow:0 2px 6px rgba(60,40,10,.08)}
.wm-ss-part .em{font-size:13px;line-height:1.2}
.wm-ss-part .lb{font-size:10.5px;font-weight:800;color:#8a6f4d}
.wm-ss-part .vl{font-size:12px;font-weight:900;color:#c98a2e;font-variant-numeric:tabular-nums}
.wm-ss-cap{font-size:10.5px;font-weight:700;color:#b39c78;margin:8px 4px 0;line-height:1.6}
/* 合作提示：粉虚线暖底，放最显眼 */
.wm-ss-tip{display:flex;align-items:flex-start;gap:8px;background:#fff0f6;border:1.5px dashed #f2b7cd;border-radius:14px;
  padding:10px 12px;margin:14px 2px 0;animation:wmDpFade .35s ease-out}
.wm-ss-tip .ic{flex:0 0 auto;font-size:17px;line-height:1.3}
.wm-ss-tip .tx{font-size:12px;font-weight:800;color:#b04a72;line-height:1.65}
/* 当前名次一句话 */
.wm-ss-rank{text-align:center;font-size:12px;font-weight:800;color:#8a6f4d;margin:11px 4px 2px;line-height:1.6}
.wm-ss-rank b{font-size:15px;font-weight:900;color:#e0743c;font-variant-numeric:tabular-nums}
.wm-ss-rank.champ b{color:#c98a2e}

/* ══════════ v0712-26 · 📋 家园手册 tab（battle-pass 日/周任务，繁荣榜面板内） ══════════ */
/* tab 条：复用 .wm-mu-tabs 胶囊，收窄一点下边距 */
.wm-ss-tabs{padding:10px 15px 2px}
/* 顶部一句引导（可带💗余额） */
.wm-hb-lead{text-align:center;font-size:12px;font-weight:800;color:#a2895f;margin:2px 6px 12px;line-height:1.65}
.wm-hb-lead b{font-weight:900;color:#e0743c;font-variant-numeric:tabular-nums}
/* 分组小标题：☀️今日 / 🗓️本周 */
.wm-hb-sub{display:flex;align-items:baseline;gap:7px;margin:14px 4px 8px}
.wm-hb-sub:first-of-type{margin-top:2px}
.wm-hb-sub b{font-size:13.5px;font-weight:900;color:#6b5335}
.wm-hb-sub i{font-style:normal;font-size:10.5px;font-weight:800;color:#c4b394;font-variant-numeric:tabular-nums;letter-spacing:.4px}
.wm-hb-none{text-align:center;color:#a8977c;font-size:12px;font-weight:700;background:#fbf6e9;border:1.5px dashed #e8dcc2;border-radius:14px;padding:16px 12px}
/* 任务行 */
.wm-hb-list{display:flex;flex-direction:column;gap:8px;padding:0 2px}
.wm-hb-row{display:flex;align-items:center;gap:9px;background:linear-gradient(180deg,#fff,#fdf6ea);
  border:1.5px solid #efe2c8;border-radius:15px;padding:9px 10px;box-shadow:0 2px 8px rgba(60,40,10,.08);animation:wmDpFade .3s ease-out}
.wm-hb-row.go{border-color:#f3aac5;background:linear-gradient(180deg,#fff,#fff0f6);box-shadow:0 3px 10px rgba(240,120,160,.16)}
.wm-hb-row.did{opacity:.62}
.wm-hb-row .em{flex:0 0 30px;text-align:center;font-size:20px;line-height:1.2;filter:drop-shadow(0 1px 2px rgba(60,40,10,.15))}
.wm-hb-row .bd{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.wm-hb-row .lb-line{display:flex;align-items:center;gap:6px;min-width:0}
.wm-hb-row .lb-line b{font-size:13px;font-weight:900;color:#6b5335;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-hb-row .rw{flex:0 0 auto;text-decoration:none;font-size:10.5px;font-weight:900;color:#c05480;background:#ffe4ef;border-radius:999px;padding:1px 7px;font-variant-numeric:tabular-nums}
.wm-hb-row .pg-line{display:flex;align-items:center;gap:7px}
.wm-hb-row .bar{flex:1;height:7px;border-radius:99px;background:#f3ead8;overflow:hidden}
.wm-hb-row .bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#ffc06e,#f7a04a);transition:width .3s ease}
.wm-hb-row .bar.full i{background:linear-gradient(90deg,#ffa9c8,#f2739f)}
.wm-hb-row .pg{flex:0 0 auto;font-size:10.5px;font-weight:900;color:#b39c78;font-variant-numeric:tabular-nums}
/* 状态按钮：go 亮粉可点 / off 未完成置灰 / did 已领 */
.wm-hb-btn{flex:0 0 auto;border:0;border-radius:999px;padding:7px 13px;font-size:12px;font-weight:900;
  cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.wm-hb-btn.go{background:linear-gradient(180deg,#ff9fc3,#f2739f);color:#fff;box-shadow:0 3px 8px rgba(242,115,159,.4)}
.wm-hb-btn.go:active{transform:scale(.93)}
.wm-hb-btn.off{background:#f0e9d8;color:#c0b295;cursor:default}
.wm-hb-btn.did{background:#f6efdd;color:#a2895f;cursor:default;font-size:11px;padding:7px 10px}

/* ── v0712-27 · 共防招募 D1：🏠家园需求 / 🔓解锁阶梯 / 居民需求&搭子 / 🛡️守卫队 ── */
.wm-hn-list{display:flex;flex-direction:column;gap:7px;padding:0 2px}
.wm-hn-row{display:flex;align-items:center;gap:8px;background:linear-gradient(180deg,#fff,#fdf6ea);
  border:1.5px solid #eee3cc;border-radius:13px;padding:7px 11px}
.wm-hn-row .em{flex:0 0 auto;font-size:16px;line-height:1.2}
.wm-hn-row .lb{flex:0 0 34px;font-size:12px;font-weight:900;color:#6b5335}
.wm-hn-row .bar{flex:1;height:8px;border-radius:99px;background:#f3ead8;overflow:hidden}
.wm-hn-row .bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#a8dba0,#6cc46a);transition:width .3s ease}
.wm-hn-row .vl{flex:0 0 36px;text-align:right;font-size:12px;font-weight:900;color:#7aa858;font-variant-numeric:tabular-nums}
.wm-hn-row.low{border-color:#f0d8a0;background:linear-gradient(180deg,#fff,#fdf2dc)}
.wm-hn-row.low .bar i{background:linear-gradient(90deg,#ffd28a,#f0b050)}
.wm-hn-row.low .vl{color:#cf9430}

.wm-ul-next{text-align:center;font-size:12px;font-weight:800;color:#b04a72;background:#fff0f6;
  border:1.5px dashed #f2b7cd;border-radius:13px;padding:9px 12px;margin:0 2px 9px;line-height:1.65}
.wm-ul-next b{font-size:14px;font-weight:900;color:#e0447e;font-variant-numeric:tabular-nums}
.wm-ul-next.all{color:#7aa858;background:#f2fbe9;border-color:#c6e5ae}
.wm-ul-list{display:flex;flex-direction:column;gap:7px;padding:0 2px}
.wm-ul-step{display:flex;align-items:center;gap:9px;background:#fbf7ec;border:1.5px dashed #e5d9c0;
  border-radius:13px;padding:8px 11px;opacity:.78}
.wm-ul-step .dot{flex:0 0 auto;font-size:14px;line-height:1.2}
.wm-ul-step .em{flex:0 0 auto;font-size:18px;line-height:1.2;filter:grayscale(.7)}
.wm-ul-step .bd{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.wm-ul-step .bd b{font-size:12px;font-weight:900;color:#9b8a6c;line-height:1.4}
.wm-ul-step .bd i{font-style:normal;font-size:10.5px;font-weight:800;color:#bcab8c;font-variant-numeric:tabular-nums}
.wm-ul-step.on{background:linear-gradient(180deg,#fff,#f4fbec);border:1.5px solid #c6e5ae;opacity:1}
.wm-ul-step.on .em{filter:none}
.wm-ul-step.on .bd b{color:#5d7a3a}
.wm-ul-step.on .bd i{color:#8fb168}

/* 居民名册卡：四需求小条 + 搭子标 + 守卫标 */
.wm-rs-guard{font-size:10px;font-weight:900;color:#4a6fa5;background:#e6f0fd;border:1px solid #c2d8f2;
  border-radius:999px;padding:1px 7px;white-space:nowrap}
.wm-rs-needs{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px;margin:5px 0 2px}
.wm-rs-need{display:flex;align-items:center;gap:4px;min-width:0}
.wm-rs-need .em{flex:0 0 auto;font-size:11.5px;line-height:1.2}
.wm-rs-need .bar{flex:1;height:5px;border-radius:99px;background:#f3ead8;overflow:hidden}
.wm-rs-need .bar i{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#b6d99c,#84c46e);transition:width .3s ease}
.wm-rs-need .vl{flex:0 0 auto;font-size:9px;font-weight:900;color:#a2895f;font-variant-numeric:tabular-nums;white-space:nowrap}
.wm-rs-need.low .bar{background:#f7e9c8}
.wm-rs-need.low .bar i{background:linear-gradient(90deg,#ffd28a,#f0b050)}
.wm-rs-need.low .vl{color:#cf9430;animation:wmRsCry 1.6s ease-in-out infinite}
@keyframes wmRsCry{0%,100%{opacity:1}50%{opacity:.55}}
.wm-rs-bonds{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.wm-rs-bond{font-size:10px;font-weight:800;color:#8a6fa5;background:#f2ecfb;border:1px solid #ddd0f0;
  border-radius:999px;padding:1.5px 7px;white-space:nowrap}
.wm-rs-bond.soul{color:#b04a72;background:#ffe9f2;border-color:#f2c2d6}

/* 🛡️ 守卫队 tab */
.wm-sq-lock{text-align:center;background:#f6f1e4;border:1.5px dashed #d9cdb2;border-radius:18px;
  padding:26px 18px;margin:6px 2px;color:#9b8a6c}
.wm-sq-lock .ic{display:block;font-size:34px;margin-bottom:8px;filter:grayscale(.4)}
.wm-sq-lock .tt{font-size:14.5px;font-weight:900;color:#7d6b4c;margin-bottom:6px}
.wm-sq-lock .ds{font-size:11.5px;font-weight:700;line-height:1.7}
.wm-sq-top{display:flex;align-items:baseline;justify-content:space-between;margin:2px 4px 10px}
.wm-sq-top .n{font-size:13px;font-weight:900;color:#6b5335}
.wm-sq-top .pw{font-size:12px;font-weight:800;color:#8a6f4d}
.wm-sq-top .pw b{font-size:15px;font-weight:900;color:#e0743c;font-variant-numeric:tabular-nums}
.wm-sq-yy-lead{text-align:center;font-size:12px;font-weight:900;color:#b04a72;background:linear-gradient(180deg,#fff4f9,#ffe9f2);
  border:1.5px solid #f2b7cd;border-radius:13px;padding:8px 12px;margin:0 2px 9px;line-height:1.6}
.wm-sq-empty{text-align:center;color:#a8977c;font-size:12px;font-weight:700;background:#fbf6e9;
  border:1.5px dashed #e8dcc2;border-radius:14px;padding:18px 14px;margin:0 2px;line-height:1.7}
.wm-sq-list{display:flex;flex-direction:column;gap:8px;padding:0 2px}
.wm-sq-row{display:flex;align-items:center;gap:9px;background:linear-gradient(180deg,#fff,#fdf6ea);
  border:1.5px solid #eee3cc;border-radius:15px;padding:9px 11px}
.wm-sq-row.lead{border-color:#f0c46a;background:linear-gradient(180deg,#fffdf4,#fdf2d5);box-shadow:0 3px 10px rgba(220,160,50,.16)}
.wm-sq-row .av{flex:0 0 38px;height:38px;border-radius:50%;background:#fbf4e4;display:flex;align-items:center;
  justify-content:center;font-size:21px;box-shadow:inset 0 0 0 2px #fff,0 1px 3px rgba(60,40,10,.15)}
.wm-sq-row .bd{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.wm-sq-row .nm-line{display:flex;align-items:center;gap:6px;min-width:0}
.wm-sq-row .nm-line b{font-size:13px;font-weight:900;color:#6b5335;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-sq-row .cap-tag{font-style:normal;text-decoration:none;flex:0 0 auto;font-size:9.5px;font-weight:900;color:#a5761c;
  background:#fdeec2;border:1px solid #ecd18e;border-radius:999px;padding:1px 6px;white-space:nowrap}
.wm-sq-row .tr-tag{font-style:normal;text-decoration:none;flex:0 0 auto;font-size:9.5px;font-weight:800;color:#8a6f4d;
  background:#fbf4e4;border:1px solid #eadfc8;border-radius:999px;padding:1px 6px;white-space:nowrap}
.wm-sq-row .st{font-size:10.5px;font-weight:700;color:#8a7a62;font-variant-numeric:tabular-nums;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-sq-row .bar{display:block;height:7px;border-radius:999px;background:#efe3cd;overflow:hidden;margin-top:2px}
.wm-sq-row .bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#f3c26a,#ec9d4d)}
.wm-sq-btn{flex:0 0 auto;border:0;border-radius:999px;padding:6px 10px;font-size:11px;font-weight:900;
  cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.wm-sq-btn:active{transform:scale(.93)}
.wm-sq-btn.go{background:linear-gradient(180deg,#9ec3ef,#6f9fd8);color:#fff;box-shadow:0 2px 7px rgba(90,140,200,.35)}
.wm-sq-btn.lead{background:#fdeec2;color:#a5761c;border:1px solid #ecd18e}
.wm-sq-btn.out{background:#f3ead8;color:#8a6f4d}
.wm-sq-btn.yy{background:linear-gradient(180deg,#ffb1cd,#f2739f);color:#fff;box-shadow:0 2px 7px rgba(242,115,159,.35)}
.wm-sq-acts{display:flex;gap:8px;margin:11px 2px 2px}
.wm-sq-big{flex:1;border:0;border-radius:14px;padding:11px 10px;font-size:13px;font-weight:900;
  cursor:pointer;-webkit-tap-highlight-color:transparent;white-space:nowrap}
.wm-sq-big:active{transform:scale(.96)}
.wm-sq-big.go{background:linear-gradient(180deg,#9ec3ef,#6f9fd8);color:#fff;box-shadow:0 3px 9px rgba(90,140,200,.35)}
.wm-sq-big.match{background:linear-gradient(180deg,#ffb1cd,#f2739f);color:#fff;box-shadow:0 3px 9px rgba(242,115,159,.35)}
.wm-sq-big.off{background:#f0e9d8;color:#c0b295;cursor:default}
.wm-sq-yy{display:flex;align-items:center;gap:8px;background:#fff4f9;border:1.5px dashed #f2c2d6;
  border-radius:13px;padding:8px 11px;margin:9px 2px 0}
.wm-sq-yy .tx{flex:1;font-size:11px;font-weight:800;color:#b04a72;line-height:1.6}
.wm-sq-pick-hd{display:flex;align-items:center;gap:9px;margin:2px 2px 10px}
.wm-sq-back{flex:0 0 auto;border:0;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:900;
  background:#f3ead8;color:#8a6f4d;cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-sq-back:active{transform:scale(.93)}
.wm-sq-pick-hd .ti{font-size:13.5px;font-weight:900;color:#6b5335}
.wm-sq-match-tip{font-size:11px;font-weight:800;color:#b04a72;background:#fff0f6;border:1.5px dashed #f2b7cd;
  border-radius:13px;padding:8px 11px;margin:0 2px 9px;line-height:1.65}
.wm-sq-row.pickable{cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-sq-row.pickable:active{transform:scale(.985)}
.wm-sq-row.picked{border-color:#f48fb1;background:linear-gradient(180deg,#fff8fb,#ffeef5);box-shadow:0 3px 10px rgba(240,120,160,.18)}
.wm-sq-row .pk{flex:0 0 auto;font-size:11px;font-weight:900;color:#c9b896}
.wm-sq-row.picked .pk{color:#e0447e}

/* ============ 大世界升级 v0714：预规划分区 + 建楼面板 + 多动作互动面板 ============ */
/* 分区块：草地上淡色分区（衬在格子下、不挡点击）+ 区名标签单独层清晰可读 */
.wm-districts{position:absolute;top:0;left:0;right:0;bottom:0;z-index:0;pointer-events:none}
.wm-grid{position:relative;z-index:1}
.wm-district{position:absolute;border-radius:22px;opacity:.42;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.4),inset 0 0 40px rgba(255,255,255,.25)}
.wm-dist-lb{position:absolute;z-index:2;pointer-events:none;font-size:12px;font-weight:900;
  color:#5f4a2c;background:rgba(255,255,255,.72);border-radius:11px;padding:2px 9px;
  white-space:nowrap;box-shadow:0 1px 4px rgba(120,95,50,.16);letter-spacing:.5px}
.wm-page.building .wm-district{opacity:.6}
.wm-page.building .wm-dist-lb{background:rgba(255,255,255,.9)}

/* 工具坞：6 个工具挤一行 → 缩小一点 */
.wm-tool{max-width:70px}
.wm-tool .ic{font-size:18px}
.wm-tool .lb{font-size:10px}
.wm-done{max-width:70px}

/* 🏗️ 建楼面板 */
.wm-bp{background:#fbf7ee;border:1.5px solid #ecdfc4;border-radius:14px;padding:8px 9px;margin-bottom:8px;max-height:38vh;overflow-y:auto}
.wm-bp-hd{font-size:12px;color:#7a6038;font-weight:800;margin-bottom:7px}
.wm-bp-hd b{color:#c98a2b;font-size:14px}
.wm-bp-row{display:flex;flex-wrap:wrap;gap:7px}
.wm-bp-it{width:calc(33.33% - 5px);box-sizing:border-box;border:2px solid #ecdfc4;background:#fff;
  border-radius:12px;padding:7px 4px 6px;display:flex;flex-direction:column;align-items:center;gap:2px;
  cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-bp-it .em{font-size:22px;line-height:1}
.wm-bp-it .nm{font-size:11px;font-weight:800;color:#5f4a2c;text-align:center;line-height:1.15}
.wm-bp-it .tag{font-size:9px;font-weight:800;color:#9a8763}
.wm-bp-it.on{border-color:#7cc57e;background:#eaf6e6;box-shadow:0 0 0 2px rgba(124,197,126,.3)}
.wm-bp-it.placed{border-color:#cfe6d0;background:#f4faf3}
.wm-bp-it.placed .tag{color:#5fae6c}
.wm-bp-it.locked{opacity:.62;background:#f3efe6;border-style:dashed}
.wm-bp-it.locked .nm{color:#93866c}
.wm-bp-it.locked .tag{color:#b58a4a}

/* 🫶 互动动作面板（靠近小人弹出）*/
.wm-pkm-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9980;background:rgba(30,22,14,.28);
  display:flex;align-items:flex-end;justify-content:center;padding:0 14px calc(84px + env(safe-area-inset-bottom,0px))}
.wm-pkm-card{width:100%;max-width:420px;background:#fff;border-radius:20px;padding:12px 12px 14px;
  box-shadow:0 12px 40px rgba(60,40,20,.3);animation:wmPkmUp .18s ease}
@keyframes wmPkmUp{from{transform:translateY(16px);opacity:.6}to{transform:none;opacity:1}}
.wm-pkm-hd{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.wm-pkm-hd .av{font-size:22px}
.wm-pkm-hd .nm{flex:1;font-size:15px;font-weight:900;color:#5f4a2c}
.wm-pkm-x{border:none;background:#f0e9dc;color:#8a7550;width:26px;height:26px;border-radius:50%;
  font-size:13px;font-weight:900;cursor:pointer}
.wm-pkm-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}
.wm-pkm-it{width:calc(20% - 7px);min-width:60px;border:2px solid #f3d9e2;background:linear-gradient(180deg,#fff,#fff6fa);
  border-radius:14px;padding:9px 2px 7px;display:flex;flex-direction:column;align-items:center;gap:3px;
  cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-pkm-it:active{transform:scale(.94)}
.wm-pkm-it .em{font-size:23px;line-height:1}
.wm-pkm-it .lb{font-size:11px;font-weight:800;color:#b0537a}

/* 🎒 给一一带东西面板 */
.wm-pkm-give{width:100%;margin-top:10px;border:none;border-radius:14px;padding:11px;
  background:linear-gradient(135deg,#ffe1ec,#fff2d9);color:#b0537a;font-size:13px;font-weight:900;
  cursor:pointer;-webkit-tap-highlight-color:transparent;box-shadow:0 2px 8px rgba(220,150,180,.25)}
.wm-pkm-give:active{transform:scale(.98)}
.wm-yy-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9985;background:rgba(30,22,14,.32);
  display:flex;align-items:flex-end;justify-content:center;padding:0 12px calc(20px + env(safe-area-inset-bottom,0px))}
.wm-yy-card{width:100%;max-width:420px;background:#fffdf9;border-radius:22px;padding:14px;
  box-shadow:0 14px 44px rgba(60,40,20,.34);max-height:76vh;overflow-y:auto;animation:wmPkmUp .2s ease}
.wm-yy-loading,.wm-yy-empty{text-align:center;color:#9a8763;padding:26px 10px;font-size:13px;line-height:1.7}
.wm-yy-hd{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.wm-yy-face{width:44px;height:44px;border-radius:50%;overflow:hidden;flex-shrink:0;display:flex;
  align-items:center;justify-content:center;font-size:26px;background:#fdeef4;box-shadow:0 2px 6px rgba(220,150,180,.25)}
.wm-yy-face img{width:100%;height:100%;object-fit:cover}
.wm-yy-meta{flex:1;min-width:0}
.wm-yy-nm{font-size:15px;font-weight:900;color:#5f4a2c}
.wm-yy-nm b{color:#e0447e}
.wm-yy-int{font-size:11.5px;color:#9a8763;font-weight:700;margin-top:2px}
.wm-yy-doing2{font-size:12px;color:#8a7550;background:#f7f0e4;border-radius:10px;padding:5px 9px;margin:2px 0 6px}
.wm-yy-wish{font-size:12px;color:#b5722a;background:#fff5e2;border:1px dashed #f0cd8a;border-radius:11px;padding:6px 9px;margin-bottom:6px}
.wm-yy-wish b{color:#e0447e}
.wm-yy-cap{font-size:11.5px;color:#9a8763;font-weight:800;margin-bottom:6px}
.wm-yy-cap b{color:#e0447e;font-size:14px}
.wm-yy-cat{font-size:12px;font-weight:800;color:#7a6038;margin:8px 0 5px}
.wm-yy-row{display:flex;flex-wrap:wrap;gap:7px}
.wm-yy-it{position:relative;width:calc(25% - 6px);box-sizing:border-box;border:2px solid #f0e4d0;
  background:#fff;border-radius:13px;padding:8px 3px 6px;display:flex;flex-direction:column;align-items:center;gap:2px;
  cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-yy-it:active{transform:scale(.94)}
.wm-yy-it[disabled]{opacity:.5;pointer-events:none}
.wm-yy-it .em{font-size:22px;line-height:1}
.wm-yy-it .nm{font-size:10.5px;font-weight:800;color:#5f4a2c;text-align:center;line-height:1.1}
.wm-yy-it .qty{font-size:9.5px;font-weight:800;color:#a89373}
.wm-yy-it.wish{border-color:#f4b8cf;background:linear-gradient(180deg,#fff,#fff4f8);box-shadow:0 0 0 2px rgba(240,150,180,.22)}
.wm-yy-star{position:absolute;top:-7px;right:-4px;font-size:14px}
.wm-yy-gb{font-size:12px;color:#c9772a;background:#fff6e6;border-radius:11px;padding:7px 10px;margin:8px 0 2px;line-height:1.5}

/* ===== D2 · ⚔️ 家园共防 tab ===== */
.wm-df-raid{border-radius:16px;padding:11px 12px;margin:2px 2px 12px;border:2px solid #f0d6a6;
  background:linear-gradient(180deg,#fffaf0,#fdf2dc)}
.wm-df-raid.warn{border-color:#f2b98a;background:linear-gradient(180deg,#fff5ec,#fde7d6)}
.wm-df-raid.ok{border-color:#bfe0a8;background:linear-gradient(180deg,#f6fbef,#e9f5db)}
.wm-df-raid.done-ok{border-color:#bfe0a8;background:linear-gradient(180deg,#f4fbec,#e4f3d3)}
.wm-df-raid.done-warn{border-color:#e9d3b0;background:linear-gradient(180deg,#fbf6ec,#f3ead6)}
.wm-df-raid .rt{display:flex;align-items:center;gap:8px}
.wm-df-raid .rt .em{font-size:26px;line-height:1}
.wm-df-raid .rt .tx{flex:1;font-size:13.5px;font-weight:800;color:#7a5c33}
.wm-df-raid .rt .tx b{color:#d9663a;font-size:15px}
.wm-df-raid .rt .cd{font-size:11.5px;font-weight:900;color:#c26a2c;background:#fff2dc;border-radius:9px;padding:3px 7px;white-space:nowrap}
.wm-df-raid .bar{height:9px;border-radius:6px;background:#efe3cd;overflow:hidden;margin:9px 0 6px}
.wm-df-raid .bar i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,#8fd06a,#5db94e)}
.wm-df-raid.warn .bar i{background:linear-gradient(90deg,#f4b45f,#ec8f4d)}
.wm-df-raid.nemesis{border-color:#d98a7a;background:linear-gradient(180deg,#fdefe9,#f7ddd4)}
.wm-df-raid.nemesis .bar i{background:linear-gradient(90deg,#e8896a,#d5603f)}
.wm-df-raid.nemesis .rt .tx b{color:#c0442a}
.wm-df-raid .nem-tag{display:inline-block;font-size:10.5px;font-weight:900;color:#fff;letter-spacing:.5px;
  background:linear-gradient(90deg,#d5603f,#b8402a);border-radius:8px;padding:3px 9px;margin-bottom:8px;
  box-shadow:0 2px 6px rgba(184,64,42,.28)}
.wm-df-raid .nums{font-size:11.5px;font-weight:800;color:#8a6f47;line-height:1.6}
.wm-df-raid .nums b{color:#d9663a;font-size:14px}
.wm-df-raid .df-who{display:flex;gap:8px;margin:8px 0 6px}
.wm-df-raid .df-who span{flex:1;text-align:center;font-size:11.5px;font-weight:800;color:#a8926c;
  background:#f7efdf;border-radius:10px;padding:5px 0;border:1.5px solid #ece0c8}
.wm-df-raid .df-who span.on{color:#3e8c3a;background:#eaf7df;border-color:#bfe0a8}
.wm-df-raid .mini{font-size:10.5px;font-weight:700;color:#a8926c;margin-top:7px;line-height:1.6}
.wm-df-lanes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:9px 0 8px}
.wm-df-lane{background:rgba(255,255,255,.62);border:1.5px solid #ecdcbf;border-radius:12px;padding:7px 8px}
.wm-df-lane.active{border-color:#d97a47;background:rgba(255,247,235,.96);box-shadow:0 0 0 2px rgba(217,122,71,.12)}
.wm-df-lane .hd{font-size:10.5px;font-weight:900;color:#7e6340;line-height:1.35}
.wm-df-lane .tx{font-size:10px;font-weight:800;color:#a18965;line-height:1.35;margin-top:4px}
.wm-df-lane .bar{height:7px;border-radius:999px;background:#efe3cd;overflow:hidden;margin-top:6px}
.wm-df-lane .bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#efc16e,#e6954a)}
.wm-df-lane.active .bar i{background:linear-gradient(90deg,#e8896a,#d5603f)}
.wm-df-calm{text-align:center;border-radius:16px;padding:16px 12px;margin:2px 2px 12px;
  background:linear-gradient(180deg,#fffdf6,#f7f4e8);border:1.5px dashed #e2d6ba;
  font-size:13px;font-weight:800;color:#8a7550;line-height:1.7}
.wm-df-calm span{display:block;font-size:11px;font-weight:700;color:#a89373;margin-top:5px}
.wm-df-detail{font-size:11px;font-weight:700;color:#8a7550;background:#faf5e8;border-radius:12px;
  padding:9px 11px;margin:0 2px 8px;line-height:1.75}
.wm-df-detail b{color:#7a6038}
.wm-df-wins{font-size:12px;font-weight:800;color:#9a8763;text-align:center;margin:0 2px 10px}
.wm-df-wins b{color:#d9663a;font-size:15px}
.wm-df-sec{font-size:13px;font-weight:900;color:#7a6038;margin:12px 4px 7px}
.wm-df-manual{background:linear-gradient(180deg,#fff8f1,#f8efe4);border:1.5px solid #efd9ba;border-radius:14px;
  padding:10px 11px;margin:0 2px 10px}
.wm-df-manual-tip{font-size:11px;font-weight:800;color:#876946;line-height:1.65}
.wm-df-manual-tip b{color:#d9663a}
.wm-df-manual-stat{font-size:11px;font-weight:800;color:#a06f3f;background:#fff3e0;border-radius:10px;
  padding:7px 9px;margin-top:8px;line-height:1.5}
.wm-df-last{font-size:10.5px;font-weight:800;color:#8d7858;margin-top:8px;line-height:1.6}
.wm-df-waves{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.wm-df-wave{min-width:54px;text-align:center;border-radius:999px;padding:6px 9px;background:#f4ead9;border:1px solid #e7d6b8;
  font-size:10.5px;font-weight:900;color:#9a835f}
.wm-df-wave.done{background:#e8f4df;border-color:#b8d99d;color:#4d8c43}
.wm-df-wave.mine{box-shadow:0 0 0 2px rgba(111,159,216,.18)}

/* ── 遭遇操作板（防守亲自迎击 + 远征 v2）── */
.wm-eb-card{border-radius:14px;padding:10px 11px;margin:0 0 8px;border:1.5px solid #efd9ba;
  background:linear-gradient(180deg,#fffdf6,#fcf5e7)}
.wm-eb-card.pressure{border-color:#f2b98a;background:linear-gradient(180deg,#fff7ee,#fef0e0);
  box-shadow:0 2px 10px rgba(220,140,60,.12);animation:wmEbPulse 2.4s ease-in-out infinite}
@keyframes wmEbPulse{0%,100%{box-shadow:0 2px 10px rgba(220,140,60,.12)}50%{box-shadow:0 2px 18px rgba(220,120,30,.22)}}
.wm-eb-card-badge{font-size:10.5px;font-weight:900;color:#d9663a;margin-bottom:6px}
.wm-eb-card-body{font-size:13px;font-weight:800;color:#7a5c33;line-height:1.6}
.wm-eb-card-hint{font-size:10.5px;font-weight:800;color:#a06f3f;margin-top:7px;
  background:#fff3e0;border-radius:8px;padding:5px 8px;line-height:1.45}
.wm-eb-card-stat{font-size:10.5px;font-weight:800;color:#8a6f47;margin-top:7px;line-height:1.5}
.wm-eb-tactics{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}
.wm-eb-tac{flex:0 0 auto;border:1.5px solid #e7d6b8;border-radius:999px;padding:6px 11px;
  font-size:11px;font-weight:800;color:#8a6f4d;background:#faf5e8;cursor:pointer;
  -webkit-tap-highlight-color:transparent;transition:all .15s}
.wm-eb-tac:active{transform:scale(.94)}
.wm-eb-tac.on{background:linear-gradient(180deg,#f8e7bb,#f3d892);color:#6c4a12;
  border-color:#d7b76a;box-shadow:0 2px 8px rgba(180,130,45,.22)}
.wm-eb-pick-label{font-size:11px;font-weight:900;color:#7a6038;margin:8px 0 4px}
.eb-candidate.aff{border-color:#bfdba8}
.eb-candidate.rec{border-color:#f0c46a;box-shadow:0 0 0 2px rgba(240,196,106,.18)}
.eb-tag-aff{font-style:normal;text-decoration:none;flex:0 0 auto;font-size:9px;font-weight:900;
  color:#4d8c43;background:#e8f4df;border-radius:6px;padding:2px 6px}
.eb-tag-rec{font-style:normal;text-decoration:none;flex:0 0 auto;font-size:9px;font-weight:900;
  color:#a5761c;background:#fef3d5;border-radius:6px;padding:2px 6px}
.eb-tip{color:#a06f3f !important;font-style:italic}

/* D3-3 · 手动战斗演出层：规则不变，只补可见的出击场面 */
.wm-bf-ov{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9988;background:rgba(30,20,10,.5);display:flex;align-items:center;justify-content:center;
  padding:18px 14px;animation:wmDpFade .18s ease-out}
.wm-bf-card{width:100%;max-width:420px;background:linear-gradient(180deg,#fffdf7,#fbf2e5);border:1.5px solid #ecd9bb;border-radius:24px;
  padding:15px 15px 14px;box-shadow:0 16px 42px rgba(50,35,12,.34);overflow:hidden}
.wm-bf-card.wave{background:linear-gradient(180deg,#fffdf7,#fbf2e5)}
.wm-bf-card.win{background:linear-gradient(180deg,#fafff5,#edf7e4);border-color:#bfe0a8}
.wm-bf-card.lose{background:linear-gradient(180deg,#fffaf2,#f7ece0);border-color:#e7ccb0}
.wm-bf-top{display:flex;align-items:center;gap:8px;justify-content:space-between}
.wm-bf-badge{flex:0 0 auto;font-size:11px;font-weight:900;color:#fff;background:linear-gradient(90deg,#d5603f,#b8402a);
  border-radius:999px;padding:4px 10px;box-shadow:0 2px 7px rgba(184,64,42,.28)}
.wm-bf-meta{font-size:10.5px;font-weight:800;color:#a18868;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wm-bf-title{font-size:19px;font-weight:900;color:#6b5335;text-align:center;margin-top:10px}
.wm-bf-desc{font-size:12px;font-weight:800;color:#866948;line-height:1.7;text-align:center;margin-top:8px}
.wm-bf-arena{display:grid;grid-template-columns:minmax(0,1fr) 76px minmax(0,1fr);align-items:center;gap:6px;margin-top:14px}
.wm-bf-side{position:relative;background:rgba(255,255,255,.72);border:1.5px solid #efe1c9;border-radius:18px;padding:12px 9px 10px;text-align:center;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)}
.wm-bf-side .av{width:56px;height:56px;border-radius:50%;margin:0 auto 7px;background:#fff7e8;display:flex;align-items:center;justify-content:center;
  font-size:31px;box-shadow:inset 0 0 0 2px #fff,0 3px 10px rgba(80,60,25,.12)}
.wm-bf-side .nm{font-size:14px;font-weight:900;color:#6b5335;line-height:1.35}
.wm-bf-side .sub{font-size:10px;font-weight:800;color:#9a8564;line-height:1.55;margin-top:3px}
.wm-bf-side.hero{background:linear-gradient(180deg,#fff,#f6f2ff)}
.wm-bf-side.foe{background:linear-gradient(180deg,#fffaf7,#fdeee4)}
.wm-bf-mid{position:relative;height:82px;display:flex;align-items:center;justify-content:center}
.wm-bf-hit,.wm-bf-hit2{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);line-height:1}
.wm-bf-hit{font-size:34px;opacity:0;filter:drop-shadow(0 3px 10px rgba(200,90,40,.24))}
.wm-bf-hit2{font-size:22px;opacity:0}
.wm-bf-card.play .wm-bf-side.hero{animation:wmBfHero .56s cubic-bezier(.22,.8,.28,1.2)}
.wm-bf-card.play .wm-bf-side.foe{animation:wmBfFoe .56s cubic-bezier(.22,.8,.28,1.2)}
.wm-bf-card.play .wm-bf-hit{animation:wmBfHit .95s ease .2s both}
.wm-bf-card.play .wm-bf-hit2{animation:wmBfSpark .9s ease .24s both}
@keyframes wmBfHero{0%{transform:translateX(-14px) scale(.94);opacity:.4}55%{transform:translateX(9px) scale(1.03)}100%{transform:none;opacity:1}}
@keyframes wmBfFoe{0%{transform:translateX(14px) scale(.94);opacity:.4}55%{transform:translateX(-9px) scale(1.03)}100%{transform:none;opacity:1}}
@keyframes wmBfHit{0%{opacity:0;transform:translate(-50%,-50%) scale(.4) rotate(-12deg)}38%{opacity:1;transform:translate(-50%,-50%) scale(1.2) rotate(6deg)}100%{opacity:.12;transform:translate(-50%,-50%) scale(1.55) rotate(0)}}
@keyframes wmBfSpark{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}45%{opacity:1;transform:translate(-50%,-50%) scale(1.2)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.8)}}
.wm-bf-bar{height:10px;border-radius:999px;background:#efe3cd;overflow:hidden;margin-top:12px}
.wm-bf-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,#f3c26a,#ec9d4d)}
.wm-bf-card.win .wm-bf-bar i{background:linear-gradient(90deg,#96d672,#5ebf53)}
.wm-bf-card.lose .wm-bf-bar i{background:linear-gradient(90deg,#efc184,#e49b62)}
.wm-bf-stat{text-align:center;font-size:11px;font-weight:800;color:#8d7656;line-height:1.6;margin-top:8px}
.wm-bf-stat b{font-size:14px;font-weight:900;color:#d9663a;font-variant-numeric:tabular-nums}
.wm-bf-card.win .wm-bf-stat b{color:#4f9a43}
.wm-bf-tags{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-top:10px}
.wm-bf-tags span{font-size:10px;font-weight:900;color:#8a6f4d;background:#fff7ea;border:1px solid #ecdcbf;border-radius:999px;padding:4px 9px}
.wm-bf-cap{text-align:center;font-size:11px;font-weight:800;color:#b04a72;background:#fff0f6;border:1.5px dashed #f2b7cd;border-radius:12px;
  padding:8px 10px;margin-top:10px;line-height:1.65}
.wm-bf-actions{text-align:center;margin-top:13px}
.wm-bf-btn{border:0;border-radius:999px;padding:10px 24px;font-size:13px;font-weight:900;color:#fff;
  background:linear-gradient(180deg,#9ec3ef,#6f9fd8);box-shadow:0 4px 12px rgba(90,140,200,.35);cursor:pointer;-webkit-tap-highlight-color:transparent}
.wm-bf-btn:active{transform:scale(.95)}
.wm-sq-btn.up small{display:block;font-size:8.5px;font-weight:700;opacity:.85;margin-top:1px;line-height:1}


/* M24 · 兔兔换装间 */
.duStage{position:relative;min-height:calc(100vh - 154px);margin:0 -12px 12px;padding:14px 14px 16px;overflow:hidden;color:#fff;background:radial-gradient(circle at 50% 18%,#fff2c7 0,#f0bad1 24%,#8b73c9 56%,#322245 100%)}
.duGlow{position:absolute;left:50%;top:82px;width:220px;height:220px;transform:translateX(-50%);border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.82),rgba(255,230,160,.18) 48%,rgba(255,255,255,0) 72%);filter:blur(1px);pointer-events:none}
.duTop{position:relative;z-index:1;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.duEyebrow{font-size:11px;font-weight:900;letter-spacing:.08em;opacity:.78}.duTitle{font-size:27px;font-weight:950;line-height:1.1;text-shadow:0 3px 12px rgba(40,20,60,.28)}
.duTabs{position:relative;z-index:1;display:flex;gap:7px;margin:12px 0 8px}.duTabs .btn{flex:1;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.32);color:#fff;box-shadow:none}.duTabs .on{background:#fff;color:#6c4a7d}
.duHero{position:relative;z-index:1;display:grid;grid-template-columns:42px minmax(0,1fr) 42px;align-items:center;gap:6px;margin:6px 0 8px}.duFrame{position:relative;margin:0 auto;width:min(74vw,300px);height:min(74vw,300px);border-radius:30px;padding:8px;background:rgba(255,255,255,.28);box-shadow:0 20px 55px rgba(24,12,36,.36),inset 0 0 0 1px rgba(255,255,255,.34)}.duFrame img{width:100%;height:100%;object-fit:cover;border-radius:24px;background:#fff;display:block}.duArrow{width:38px;height:54px;border:0;border-radius:999px;background:rgba(255,255,255,.24);color:#fff;font-size:34px;font-weight:300;line-height:1;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.duPreviewName{position:relative;z-index:1;text-align:center;font-size:17px;font-weight:950;text-shadow:0 2px 9px rgba(40,20,60,.28)}.duEconomy{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-top:10px}.duMoney{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.26);border-radius:14px;padding:7px 6px;text-align:center}.duMoney b{display:block;font-size:15px;font-variant-numeric:tabular-nums}.duMoney span{display:block;font-size:10px;opacity:.86;margin-top:1px}.duTicket{position:relative;z-index:1;margin-top:8px;padding:8px 10px;border-radius:14px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.26);font-size:12px;font-weight:800;display:flex;align-items:center;gap:8px;flex-wrap:wrap}.duAction{position:relative;z-index:1;margin-top:9px}.duAction .btn{width:100%;padding:12px 10px;background:#fff;color:#6d4d78;border-radius:14px;font-size:14px;font-weight:950}.duCost{margin-top:6px;text-align:center;font-size:11px;opacity:.88;line-height:1.5}
.duCatalogGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.duTile{border:0;border-radius:14px;padding:0;background:#fff;box-shadow:0 1px 6px rgba(0,0,0,.05);overflow:hidden;text-align:left;color:var(--ink)}.duTile.on{box-shadow:0 0 0 2px var(--gold),0 2px 10px rgba(180,130,45,.18)}.duTile img{width:100%;height:110px;object-fit:cover;display:block;background:#f7f1e8}.duTile div{padding:6px 6px 7px}.duTile b{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.duTile span{display:block;margin-top:2px;font-size:9.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media (min-width:760px){.duStage{border-radius:0 0 24px 24px}.duFrame{width:320px}.duCatalogGrid{grid-template-columns:repeat(5,1fr)}}

.duPreview{position:relative;width:100%;height:100%;border-radius:24px;overflow:hidden;background:linear-gradient(180deg,#fffdfb,#fff4fb)}.duPreview img{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;object-fit:cover;object-position:center;border-radius:0}.duPreview img.whole{border-radius:24px}.duPreview img.layer{pointer-events:none}
.duPartTabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:7px;-webkit-overflow-scrolling:touch}.duPartTabs button{flex:0 0 auto;border:0;border-radius:999px;padding:7px 11px;background:#f0e9f4;color:#7c6187;font-size:12px;font-weight:900}.duPartTabs button.on{background:#8e6fb0;color:#fff}.duPartScroller{display:flex;gap:8px;overflow-x:auto;padding:2px 0 8px;-webkit-overflow-scrolling:touch}.duPartOpt{flex:0 0 78px;border:0;border-radius:14px;padding:5px;background:#faf7fb;color:#5d5064;text-align:center;box-shadow:inset 0 0 0 1px #eadff0}.duPartOpt.on{box-shadow:0 0 0 2px var(--gold),0 2px 10px rgba(180,130,45,.18);background:#fff}.duPartOpt img{width:68px;height:68px;object-fit:contain;border-radius:10px;background:linear-gradient(180deg,#fff,#fff7fb)}.duPartOpt span{display:block;margin-top:4px;font-size:10px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.duPartOpt em{display:block;margin-top:2px;font-style:normal;font-size:9px;font-weight:800;color:#9b87a3}.duPartFoot{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap;border-top:1px solid #f0e8f4;padding-top:9px}.duPartFoot span{flex:1;min-width:140px;font-size:11px;font-weight:800;color:#8a758f;line-height:1.45}.duPartActions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.duPartFoot .btn{padding:8px 12px;font-size:12px;background:#8e6fb0}

/* ===== 移动端空间优化（≤480px）：页面不要太挤 ===== */
@media (max-width:480px){
  /* 整体呼吸感 */
  body{padding-bottom:82px}
  main{padding:14px 11px 20px}
  h2{font-size:13px;margin:18px 0 10px}

  /* 卡片间距拉大 */
  .card, .card.small{padding:14px 12px;margin-bottom:11px;border-radius:16px}

  /* 游戏列表：统一用两列 + 更大触控区 */
  .grid{grid-template-columns:repeat(2,1fr);gap:12px}
  .gcell{padding:14px 10px;border-radius:16px}
  .gcell .ic{font-size:32px}
  .gcell .nm{font-size:13px;margin-top:7px}
  .gcell .rw{font-size:11px;margin-top:4px}

  /* 农场地块：更宽松 */
  .fmGrid{gap:12px}
  .fmPlot{padding:12px 8px;min-height:104px;border-radius:16px}
  .fmPlot .fmEm{font-size:34px}
  .fmPlot .fmNm{font-size:12px;margin-top:4px}

  /* 设施 / 研究区 */
  #fmFacilities{padding:8px 2px}
  #fmFacilities > div{padding:10px 0}

  /* 模式切换栏 */
  .modebar{gap:10px;margin-bottom:12px}
  .modebar button{padding:10px;font-size:13px;border-radius:12px}

  /* 奶茶小店卡片 */
  .tsCard{flex:0 0 112px;padding:12px 8px;border-radius:16px}
  .tsRow{gap:12px;padding-bottom:12px}

  /* 排行榜条目 */
  .lbRow{padding:10px 11px;border-radius:14px;margin-bottom:8px;gap:10px}

  /* 赛季手册条目 */
  .hbMsn{padding:10px 0}
  .hbTier{padding:12px 13px;border-radius:15px;margin-bottom:9px;gap:12px}

  /* 底部导航：5 个按钮别太挤 */
  nav{gap:0;padding:8px 0 calc(10px + env(safe-area-inset-bottom,0px))}
  nav button{font-size:10px;gap:2px}
  nav button .ico{font-size:19px}

  /* 紧凑 header */
  header.compact{padding:12px 14px 12px}
  header.compact .brand{font-size:14px}
  header.compact .money{padding:7px 12px}
  header.compact .money b{font-size:14px}

  /* 浮层/弹窗内边距柔和 */
  .dialogBox{padding:20px 18px}
  #rvOverlay{padding:28px 22px}

  /* 钱包页 */
  #wallet{padding:2px}
  .ledger{padding:8px 0;font-size:13px}

  /* 通用子标题 */
  .sub{font-size:11px;line-height:1.55}

  /* —— owner tabs（炼金/民宿三人切换）—— */
  .owner-tabs{display:flex;gap:6px;padding:8px 6px 2px;justify-content:center}
  .otab{flex:1;max-width:110px;padding:6px 8px;border-radius:12px;border:1.5px solid #ddd;background:#f8f8f8;font-size:13px;font-weight:700;cursor:pointer;color:var(--muted);transition:all .15s}
  .otab.sel{background:var(--gold);color:#fff;border-color:var(--gold);box-shadow:0 3px 12px -5px rgba(200,150,50,.5)}
  .otab:hover:not(.sel){border-color:#b9a;background:#f3eff9}

  /* —— mini rival board（炼金/民宿页内嵌榜单快照）—— */
  .mini-board{display:flex;gap:6px;padding:4px 2px}
  .mini-board .mb-side{flex:1;text-align:center;border-radius:12px;padding:8px 4px;background:#f7f5fa;border:1.5px solid transparent;position:relative}
  .mini-board .mb-side.lead{border-color:#e8b15a;box-shadow:0 3px 12px -5px rgba(214,154,44,.5)}
  .mini-board .mb-crown{position:absolute;top:-12px;left:50%;transform:translateX(-50%);font-size:18px}
  .mini-board .mb-av{font-size:24px;line-height:1}
  .mini-board .mb-nm{font-size:11px;font-weight:800;color:var(--iink)}
  .mini-board .mb-sc{font-size:15px;font-weight:900;color:#b9862a}
  .mini-board .mb-vs{display:flex;align-items:center;font-size:12px;font-weight:900;color:#d0b088}

  /* ══════════ 🍇 Y04 狼兔酒庄「陈酿时光」══════════ */
  .wn-panel{background:var(--card);border-radius:14px;padding:12px;margin-bottom:10px;box-shadow:0 2px 8px rgba(0,0,0,.04)}
  .wn-h{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:14px;font-weight:700;cursor:default}
  .wn-h .ic{font-size:20px;width:28px;text-align:center}
  .wn-h .tt{flex:1}
  .wn-h .note{font-size:11px;color:var(--muted);font-weight:400}
  .wn-h .tg{font-size:11px;color:var(--muted);cursor:pointer}
  .wn-sub{font-size:11px;color:var(--muted);padding:4px 0}
  .wn-radar{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:6px}
  .wn-alert{display:flex;align-items:center;gap:8px;border:1.5px solid #eadfce;background:#fffaf1;border-radius:8px;padding:8px;min-height:54px}
  .wn-alert-ic{font-size:20px;width:24px;text-align:center;flex-shrink:0}
  .wn-alert-txt{flex:1;min-width:0}
  .wn-alert-txt b{display:block;font-size:12px;color:var(--ink);line-height:1.25}
  .wn-alert-txt span{display:block;font-size:11px;color:#8a6f4d;line-height:1.35;margin-top:2px}
  .wn-alert .btn{font-size:11px;padding:3px 8px;flex-shrink:0}
  .wn-orders{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:6px}
  .wn-order{border:1.5px solid #e8e4dc;background:#fff;border-radius:8px;padding:8px;position:relative;min-height:128px}
  .wn-order.hot{border-color:#c9a24a;background:#fffaf0;box-shadow:0 3px 10px rgba(201,162,74,.15);cursor:pointer}
  .wn-order.done{opacity:.58;background:#f7f7f4}
  .wn-order-top{display:flex;gap:6px;align-items:center;justify-content:space-between}
  .wn-order-top b{font-size:13px;color:var(--ink)}
  .wn-order-top span{font-size:11px;font-weight:900;color:#a76b28}
  .wn-order-need{font-size:12px;font-weight:800;color:#5d3f4f;margin-top:5px;line-height:1.35}
  .wn-order-note{font-size:11px;color:#8a6f4d;margin-top:4px;line-height:1.35}
  .wn-order-foot{font-size:11px;color:#999;margin-top:6px;min-height:15px}
  .wn-order .btn{font-size:11px;padding:3px 8px;margin-top:6px}
  .wn-duo{font-size:11px;color:#8a6f4d;background:#f7f3ee;border-radius:8px;padding:6px 8px;margin-top:8px}
  .wn-duo.on{color:#1f7a55;background:#eefaf4;font-weight:800}
  .wn-order-hit{display:inline-block;font-size:11px;color:#9b661d;background:#fff3d4;border-radius:8px;padding:2px 6px;margin-top:3px}
  .wn-rise{animation:wnRise .35s ease-out both}
  @keyframes wnRise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
  /* Hero */
  .wn-hero{background:linear-gradient(135deg,#f5f0fa,#faf5ee);border-radius:16px;padding:16px;margin-bottom:10px;position:relative;overflow:hidden}
  .wn-hero .wn-bg{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none}
  .wn-hero .wn-orb{position:absolute;border-radius:50%;opacity:.12}
  .wn-hero .o1{width:80px;height:80px;background:#a06fc5;top:-20px;right:-10px}
  .wn-hero .o2{width:60px;height:60px;background:#c9a24a;bottom:-10px;left:30%}
  .wn-hero .wn-htop{display:flex;align-items:center;gap:12px;position:relative;z-index:1}
  .wn-hero .wn-barrel-icon{font-size:42px;flex-shrink:0}
  .wn-hero .wn-htitle{flex:1;min-width:0}
  .wn-hero .wn-htitle .t{font-size:20px;font-weight:900}
  .wn-hero .wn-htitle .s{font-size:12px;color:#8a6f4d;margin-top:2px}
  .wn-hero .wn-htitle .s.wn-talent{color:#5bb98c;font-weight:700}
  .wn-hero .wn-dexbar{height:5px;background:#e8e0f0;border-radius:3px;margin-top:6px;overflow:hidden}
  .wn-hero .wn-dexbar i{display:block;height:100%;background:linear-gradient(90deg,#a06fc5,#c9a24a);border-radius:3px}
  .wn-hero .wn-stats{display:flex;gap:8px;margin-top:10px;position:relative;z-index:1}
  .wn-hero .wn-stat{flex:1;text-align:center}
  .wn-hero .wn-stat .n{font-weight:900;font-size:16px;color:var(--ink)}
  .wn-hero .wn-stat .l{font-size:10px;color:var(--muted)}
  /* 藤架网格 */
  .wn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:6px}
  .wn-plot{background:var(--card);border-radius:12px;border:1.5px solid #e8e4dc;overflow:hidden;cursor:pointer}
  .wn-plot.empty{border-style:dashed;border-color:#d8d4cc;background:#fafaf9}
  .wn-plot-inner{padding:8px;text-align:center}
  .wn-bar{height:5px;background:#f0ede8;border-radius:3px;margin:4px 0;overflow:hidden}
  .wn-bar i{display:block;height:100%;background:linear-gradient(90deg,#a06fc5,#c9a24a);border-radius:3px;transition:width 1s}
  .wn-cellar{display:flex;flex-direction:column;gap:4px}
  /* 芯片按钮 */
  .wn-chip-btn{padding:4px 10px;border-radius:18px;border:1.5px solid #ddd;background:#faf8f5;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}
  .wn-chip-btn:hover{border-color:#c9a24a;background:#fdf7ee}
}

/* ══════════ Y04 狼兔酒庄 · 高级酒窖视觉重构 v0721 ══════════ */
#winery{
  --wn-ink:#2d2017;
  --wn-muted:#7d6850;
  --wn-paper:#f7f0e4;
  --wn-panel:#fcf7ef;
  --wn-line:rgba(101,71,42,.18);
  --wn-wine:#5c1f34;
  --wn-plum:#3a241f;
  --wn-forest:#5b4635;
  --wn-sage:#92725a;
  --wn-gold:#c7a063;
  --wn-copper:#9f6637;
  margin:-12px -10px 0;
  min-height:calc(100vh - 72px);
  padding:18px 18px 30px;
  position:relative;
  overflow:hidden;
  color:var(--wn-ink);
  background:
    linear-gradient(180deg,rgba(250,244,234,.94),rgba(241,232,216,.97) 44%,#e4d2b9 100%),
    repeating-linear-gradient(90deg,rgba(84,57,35,.07) 0 2px,transparent 2px 44px),
    linear-gradient(135deg,#6b4730 0%,#3f2a20 36%,#7f5638 72%,#4d1828 100%);
}
#winery:before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;bottom:0;
  pointer-events:none;
  opacity:.34;
  background:
    repeating-linear-gradient(0deg,rgba(255,255,255,.12) 0 1px,transparent 1px 28px),
    linear-gradient(110deg,transparent 0%,rgba(255,244,225,.28) 48%,transparent 76%);
  mix-blend-mode:soft-light;
}
#winery *{letter-spacing:0}
#winery #wnBox.empty{
  max-width:420px;
  margin:28px auto;
  color:#8d7d6d;
  background:rgba(255,253,247,.84);
  border:1px solid rgba(145,113,72,.18);
  border-radius:8px;
}
.wn-vintage{
  border-color:rgba(113,47,65,.42);
  background:linear-gradient(135deg,rgba(255,251,239,.98),rgba(241,222,198,.97));
}
.wn-vintage-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.wn-vintage-kicker{font-size:10px;font-weight:950;letter-spacing:.12em;color:#8c5a38}
.wn-vintage h2{margin:4px 0 3px;font-size:23px;line-height:1.1;color:var(--wn-wine)}
.wn-vintage p{margin:0;color:var(--wn-muted);font-size:12px}
.wn-vintage-count{min-width:58px;padding:7px 9px;border-radius:8px;text-align:center;color:#fff8ed;background:linear-gradient(145deg,#6f2038,#9c5a36)}
.wn-vintage-count b{display:block;font-size:21px;line-height:1}.wn-vintage-count span{font-size:10px;font-weight:800}
.wn-vintage-current,.wn-vintage-picker,.wn-vintage-await{margin-top:13px;padding:11px;border:1px solid rgba(116,75,43,.18);border-radius:8px;background:rgba(255,255,255,.45)}
.wn-vintage-title{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center}.wn-vintage-title>span{font-size:22px}.wn-vintage-title b{display:block;font-size:13px}.wn-vintage-title small{display:block;margin-top:2px;color:var(--wn-muted);font-size:11px}.wn-vintage-title em{font-style:normal;font-size:12px;font-weight:900;color:#8e4c31}
.wn-vintage-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px}.wn-vintage-check{display:flex;gap:5px;align-items:center;padding:6px 7px;border-radius:6px;background:rgba(103,73,47,.07);color:#745f4c;font-size:11px}.wn-vintage-check b{flex:1}.wn-vintage-check em{font-style:normal;font-weight:900}.wn-vintage-check.done{color:#3e704d;background:rgba(74,121,80,.11)}
.wn-vintage-picker>b,.wn-vintage-await>b{display:block;font-size:13px}.wn-vintage-picker>span,.wn-vintage-await>span{display:block;margin-top:3px;color:var(--wn-muted);font-size:11px}.wn-vintage-routes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:10px}.wn-vintage-route{padding:10px;border:1px solid rgba(116,75,43,.20);border-radius:7px;text-align:left;color:var(--wn-ink);background:rgba(255,255,255,.56);cursor:pointer}.wn-vintage-route:hover{border-color:#a46a3c;transform:translateY(-1px)}.wn-vintage-route i{display:block;font-style:normal;font-size:18px}.wn-vintage-route b,.wn-vintage-route span{display:block;margin-top:4px}.wn-vintage-route b{font-size:12px}.wn-vintage-route span{color:var(--wn-muted);font-size:10px;line-height:1.35}
.wn-vintage-collection,.wn-vintage-history{margin-top:11px;font-size:11px}.wn-vintage-collection>b,.wn-vintage-history>b{display:block;margin-bottom:5px;color:#76533b}.wn-label-row{display:flex;gap:5px;flex-wrap:wrap}.wn-label-chip{padding:4px 7px;border:1px solid rgba(119,74,45,.22);border-radius:999px;color:#633b33;background:#fff9ed;font-weight:800}.wn-vintage-history span{display:block;padding:5px 7px;border-left:2px solid #c79d64;color:var(--wn-muted);background:rgba(255,255,255,.33)}


.wn-operations-list{display:grid;gap:7px}
.wn-operation{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;align-items:center;padding:9px 10px;border-radius:7px;border-left:3px solid var(--wn-sage);background:rgba(255,255,255,.48)}
.wn-operation.p0{border-left-color:var(--wn-wine);background:rgba(130,45,58,.07)}
.wn-operation.p1{border-left-color:var(--wn-copper)}
.wn-operation b{font-size:12px}.wn-operation span{font-size:11px;line-height:1.35;color:var(--wn-muted)}
.wn-operation em{font-size:10px;font-style:normal;color:#a25c36;font-weight:800}.wn-operation .btn{grid-column:2;grid-row:1 / span 2}
.wn-plot-right,.wn-plot-streak,.wn-plot-wait{font-size:10px;font-weight:800;line-height:1.35;margin-bottom:3px}
.wn-plot-right{color:#76553a}.wn-plot-right.owner{color:#8b5127}.wn-plot-right.priority{color:#8e3148}
.wn-plot-streak{color:#8b6731}.wn-plot-wait{color:#7b536e}
.wn-plot.reserved{border-color:rgba(159,102,55,.55)}.wn-plot.priority{border-color:rgba(115,38,63,.58);box-shadow:0 0 0 2px rgba(115,38,63,.09)}
@media (min-width:1180px){
  max-width:1180px;
  margin:0 auto;
  position:relative;
  z-index:1;
}
.wn-stage{display:grid;gap:12px;margin-bottom:14px}
.wn-layout{display:grid;grid-template-columns:minmax(0,1.28fr) minmax(300px,.72fr);gap:14px;align-items:start}
.wn-maincol,.wn-sidecol{display:grid;gap:12px;min-width:0}
.wn-panel{
  background:
    linear-gradient(180deg,rgba(252,247,239,.97),rgba(244,234,220,.95)),
    linear-gradient(145deg,rgba(255,255,255,.16),transparent 48%);
  border:1px solid var(--wn-line);
  border-radius:8px;
  padding:14px;
  margin:0;
  box-shadow:0 18px 42px rgba(57,36,21,.12),0 1px 0 rgba(255,255,255,.66) inset;
  backdrop-filter:blur(8px);
}
.wn-h{
  display:flex;
  align-items:center;
  gap:9px;
  margin-bottom:12px;
  font-size:14px;
  font-weight:900;
  color:var(--wn-ink);
}
.wn-h .ic{
  width:26px;
  height:26px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  background:linear-gradient(180deg,#f1dfbf,#e0c28b);
  color:#7b5427;
  font-size:13px;
  font-weight:950;
  box-shadow:0 0 0 1px rgba(123,84,39,.16) inset;
  flex:0 0 auto;
}
.wn-h .tt{flex:1;min-width:0}
.wn-h .note,.wn-h .tg{
  font-size:11px;
  font-weight:800;
  color:#9a8060;
  white-space:nowrap;
}
.wn-h .tg{cursor:pointer}
.wn-sub{
  font-size:12px;
  line-height:1.55;
  color:var(--wn-muted);
}
.wn-rise{animation:wnRise .38s cubic-bezier(.2,.7,.2,1) both}
@keyframes wnRise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

.wn-hero{
  min-height:250px;
  display:grid;
  grid-template-columns:minmax(0,1fr) 154px;
  gap:16px;
  padding:22px;
  margin:0;
  position:relative;
  overflow:hidden;
  color:#fff7e9;
  border:1px solid rgba(240,203,121,.34);
  border-radius:8px;
  background:
    linear-gradient(135deg,rgba(71,42,28,.98) 0%,rgba(45,28,21,.98) 38%,rgba(92,54,34,.97) 72%,rgba(76,19,35,.97) 100%),
    repeating-linear-gradient(90deg,rgba(255,255,255,.045) 0 1px,transparent 1px 30px);
  box-shadow:0 22px 58px rgba(54,32,21,.30),0 1px 0 rgba(255,255,255,.18) inset;
}
.wn-hero:before{
  content:"";
  position:absolute;
  top:0;left:0;right:0;bottom:0;
  background:
    linear-gradient(90deg,rgba(255,255,255,.08),transparent 22%,transparent 72%,rgba(237,194,108,.14)),
    repeating-linear-gradient(0deg,transparent 0 18px,rgba(255,255,255,.025) 18px 19px);
  pointer-events:none;
}
.wn-hero-copy,.wn-hero-art,.wn-stats{position:relative;z-index:1}
.wn-kicker{
  display:inline-flex;
  align-items:center;
  height:24px;
  padding:0 10px;
  border:1px solid rgba(230,197,127,.44);
  color:#f0d9a4;
  background:rgba(255,255,255,.06);
  border-radius:999px;
  font-size:11px;
  font-weight:900;
  text-transform:uppercase;
}
.wn-htitle .t{
  margin-top:12px;
  font-size:29px;
  line-height:1.08;
  font-weight:950;
  color:#fff9ec;
}
.wn-htitle .s{
  margin-top:8px;
  color:#dec7a6;
  font-size:13px;
  line-height:1.45;
  font-weight:700;
}
.wn-dexbar{
  width:min(340px,100%);
  height:7px;
  margin-top:14px;
  overflow:hidden;
  border-radius:999px;
  background:rgba(255,255,255,.14);
  box-shadow:0 0 0 1px rgba(255,255,255,.08) inset;
}
.wn-dexbar i{
  display:block;
  height:100%;
  border-radius:999px;
  background:linear-gradient(90deg,#9b6a36,#e4c07f,#7d1f37);
  box-shadow:0 0 18px rgba(240,210,138,.44);
}
.wn-hero-actions{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:18px;
}
.wn-hero-art{min-height:170px}
.wn-bottle{
  position:absolute;
  left:38px;
  bottom:13px;
  width:48px;
  height:118px;
  border-radius:18px 18px 8px 8px;
  background:linear-gradient(90deg,#151311,#244336 28%,#5b1430 58%,#170f14 100%);
  box-shadow:0 22px 32px rgba(0,0,0,.36),0 0 0 1px rgba(255,255,255,.18) inset;
}
.wn-bottle:before{
  content:"";
  position:absolute;
  left:15px;
  top:-40px;
  width:18px;
  height:48px;
  border-radius:7px 7px 4px 4px;
  background:linear-gradient(90deg,#161510,#304c3f,#160f14);
  box-shadow:0 0 0 1px rgba(255,255,255,.16) inset;
}
.wn-bottle:after{
  content:"";
  position:absolute;
  left:8px;
  right:8px;
  bottom:32px;
  height:28px;
  border-radius:4px;
  background:linear-gradient(135deg,#e7c879,#a77738);
  box-shadow:0 0 0 1px rgba(255,255,255,.22) inset;
}
.wn-glass{
  position:absolute;
  right:22px;
  bottom:14px;
  width:42px;
  height:66px;
  border:2px solid rgba(255,246,219,.56);
  border-top:0;
  border-radius:8px 8px 18px 18px;
}
.wn-glass:before{
  content:"";
  position:absolute;
  left:4px;
  right:4px;
  bottom:7px;
  height:28px;
  border-radius:4px 4px 12px 12px;
  background:linear-gradient(180deg,#8a173b,#4a1025);
}
.wn-glass:after{
  content:"";
  position:absolute;
  left:18px;
  top:57px;
  width:2px;
  height:34px;
  background:rgba(255,246,219,.55);
  box-shadow:-10px 34px 0 5px rgba(255,246,219,.25),10px 34px 0 5px rgba(255,246,219,.25);
}
.wn-vault-line{
  position:absolute;
  left:10px;
  right:2px;
  bottom:0;
  height:44px;
  border-top:1px solid rgba(234,207,149,.28);
  background:linear-gradient(180deg,rgba(255,255,255,.08),transparent);
}
.wn-stats{
  grid-column:1/-1;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:10px;
  align-content:start;
}
.wn-stat{
  min-height:70px;
  padding:10px 10px 9px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  border-radius:8px;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,248,236,.08);
  box-shadow:0 1px 0 rgba(255,255,255,.08) inset;
}
.wn-stat .n{
  color:#fff3e1;
  font-size:16px;
  line-height:1.15;
  font-weight:950;
  font-variant-numeric:tabular-nums;
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  word-break:break-word;
}
.wn-stat .l{
  margin-top:6px;
  color:#d8c19d;
  font-size:11px;
  font-weight:800;
  line-height:1.25;
  white-space:normal;
}
.wn-stat.gold,.wn-stat.hot{
  border-color:rgba(239,210,138,.24);
  background:rgba(255,244,221,.1);
}
.wn-stat.gold .n,.wn-stat.hot .n{color:#fff3e1}

.wn-btn{
  min-height:34px;
  border:1px solid rgba(38,25,20,.16);
  border-radius:8px;
  padding:8px 13px;
  background:linear-gradient(180deg,#7c5737,#593b27);
  color:#fffaf0;
  box-shadow:0 8px 18px rgba(76,52,31,.20),0 1px 0 rgba(255,255,255,.18) inset;
  font-size:12px;
  font-weight:950;
  cursor:pointer;
}
.wn-btn.gold{
  color:#2b1c0c;
  border-color:rgba(122,84,29,.28);
  background:linear-gradient(180deg,#e7c98e,#c28d47);
  box-shadow:0 10px 22px rgba(151,103,38,.24),0 1px 0 rgba(255,255,255,.42) inset;
}
.wn-btn.glass{
  color:#fff2dc;
  border-color:rgba(221,188,126,.34);
  background:rgba(86,52,32,.26);
  box-shadow:0 1px 0 rgba(255,255,255,.10) inset;
}
.wn-btn.small{min-height:30px;padding:6px 10px;font-size:11px}
.wn-btn.micro{min-height:24px;padding:3px 8px;font-size:10px}
.wn-btn.icon{
  min-width:30px;
  min-height:28px;
  padding:4px 7px;
  font-size:11px;
}
.wn-btn.muted{opacity:.72}
.wn-btn.ghost{opacity:.48;background:linear-gradient(180deg,#7d6357,#564640)}
.wn-btn.wide{width:100%;justify-content:center;margin-top:8px}
.wn-btn:disabled,.wn-upgrade:disabled{cursor:default}

.wn-radar{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.wn-alert{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:76px;
  padding:12px;
  border:1px solid rgba(115,87,48,.16);
  border-radius:8px;
  background:linear-gradient(180deg,#fdf7ed,#f2e6d2);
}
.wn-alert.hot{border-color:rgba(190,145,57,.38);background:linear-gradient(180deg,#fff1cf,#efdfbf)}
.wn-alert-ic{
  width:34px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:8px;
  background:#e7d3b0;
  font-size:18px;
  flex:0 0 auto;
}
.wn-alert-txt{flex:1;min-width:0}
.wn-alert-txt b{display:block;color:var(--wn-ink);font-size:13px;line-height:1.25}
.wn-alert-txt span{display:block;margin-top:4px;color:#796758;font-size:11px;line-height:1.35}

.wn-order-panel{overflow:hidden}
.wn-orders{
  display:flex;
  gap:10px;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  scroll-snap-type:x proximity;
  padding:2px 2px 7px;
  margin:0 -2px -7px;
}
.wn-orders::-webkit-scrollbar{height:8px}
.wn-orders::-webkit-scrollbar-thumb{
  border-radius:999px;
  background:rgba(140,103,61,.26);
}
.wn-orders::-webkit-scrollbar-track{background:rgba(255,255,255,.16)}
.wn-order{
  flex:0 0 224px;
  min-height:118px;
  padding:11px 11px 10px;
  display:flex;
  flex-direction:column;
  border:1px solid rgba(97,72,45,.15);
  border-radius:8px;
  background:
    linear-gradient(180deg,#fffdf8,#f2e8da),
    linear-gradient(90deg,rgba(109,75,46,.06),transparent 42%);
  box-shadow:0 10px 24px rgba(58,40,26,.06);
  scroll-snap-align:start;
}
.wn-order.hot{
  cursor:pointer;
  border-color:rgba(190,145,57,.42);
  background:
    linear-gradient(180deg,#fff4d7,#f1e0bf),
    linear-gradient(90deg,rgba(164,108,44,.08),transparent 48%);
  box-shadow:0 14px 28px rgba(154,103,36,.14);
}
.wn-order.done{opacity:.58;filter:saturate(.55)}
.wn-order.expired{opacity:.72;background:linear-gradient(180deg,#f4eee4,#e7dccb)}
.wn-order-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.wn-order-top b{font-size:14px;color:#2b2019;line-height:1.25}
.wn-order-top span{
  color:#6a4518;
  background:#ecd2a0;
  border:1px solid rgba(151,103,38,.18);
  border-radius:999px;
  padding:2px 8px;
  font-size:11px;
  font-weight:950;
}
.wn-order-need{margin-top:7px;font-size:12px;line-height:1.35;font-weight:950;color:#443125}
.wn-order-note{
  margin-top:5px;
  color:#7a6655;
  font-size:11px;
  line-height:1.38;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
  min-height:30px;
}
.wn-order-foot{
  margin-top:auto;
  padding-top:7px;
  min-height:15px;
  color:#8b7254;
  font-size:11px;
  font-weight:800;
}
.wn-order-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.wn-order-tag{
  display:inline-flex;
  align-items:center;
  min-height:20px;
  padding:2px 7px;
  border-radius:999px;
  font-size:10px;
  font-weight:950;
}
.wn-order-tag.featured{color:#6a4518;background:#f0d8a8}
.wn-order-tag.flash{color:#6e243d;background:#edd3dc}
.wn-order-timer{margin-top:6px;color:#8d6134;font-size:11px;font-weight:900}
.wn-order .wn-btn{margin-top:8px;align-self:flex-start}

.wn-player-grid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}
.wn-player-card{
  padding:11px;
  border-radius:8px;
  border:1px solid rgba(82,58,36,.14);
  background:linear-gradient(180deg,#fbf4e7,#f2e5d1);
}
.wn-player-card.wolf{background:linear-gradient(180deg,#f8efe2,#f0e1cb)}
.wn-player-card.rabbit{background:linear-gradient(180deg,#fcf1e8,#f3e3d2)}
.wn-player-top,.wn-player-row{display:flex;justify-content:space-between;gap:8px;align-items:center}
.wn-player-top b{font-size:13px}
.wn-player-top span{font-size:11px;font-weight:950;color:#946d33}
.wn-player-row{margin-top:7px;color:#7a6d68;font-size:11px}
.wn-player-row b{
  color:#352a25;
  font-size:12px;
  text-align:right;
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.wn-duo{
  margin-top:10px;
  padding:9px 10px;
  border-radius:8px;
  color:#715c45;
  background:#efe2cf;
  font-size:12px;
  line-height:1.35;
  font-weight:800;
}
.wn-duo.on{color:#6d4020;background:#f6ead5;border:1px solid rgba(153,111,52,.16)}
.wn-expo-head{
  margin-bottom:10px;
  color:#5a4737;
}
.wn-expo-head b{display:block;color:#2f241d;font-size:13px;line-height:1.3}
.wn-expo-head span{display:block;margin-top:4px;font-size:11px;color:#876f56;font-weight:800}
.wn-expo-reward{
  margin-bottom:10px;
  padding:10px;
  border:1px solid rgba(165,121,49,.18);
  border-radius:8px;
  background:linear-gradient(180deg,#f9ecd1,#efdfbe);
}
.wn-expo-reward b{display:block;color:#382718;font-size:12px;line-height:1.3}
.wn-expo-reward span{display:block;margin-top:4px;color:#7f6342;font-size:11px;font-weight:850}
.wn-expo-board{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.wn-expo-row{
  padding:10px;
  border:1px solid rgba(92,66,41,.14);
  border-radius:8px;
  background:linear-gradient(180deg,#fcf7ee,#efe2ce);
}
.wn-expo-row.wolf{background:linear-gradient(180deg,#f8efe4,#efe0ca)}
.wn-expo-row.rabbit{background:linear-gradient(180deg,#fcf2e8,#f2e1cf)}
.wn-expo-row b{display:block;color:#2f241d;font-size:13px}
.wn-expo-title{
  display:inline-flex;
  align-items:center;
  margin-top:5px;
  padding:2px 7px;
  border-radius:999px;
  color:#6f4b1f;
  background:#f3dfb2;
  font-size:10px;
  font-style:normal;
  font-weight:950;
}
.wn-expo-row span{
  display:block;
  margin-top:3px;
  color:#8b704f;
  font-size:11px;
  font-weight:850;
  white-space:normal;
  overflow-wrap:anywhere;
  word-break:break-word;
}
.wn-expo-metrics{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin-top:8px;
  color:#5d4a3a;
  font-size:11px;
  font-weight:900;
}
.wn-showcase-empty{
  padding:12px;
  border:1px dashed rgba(118,89,56,.18);
  border-radius:8px;
  color:#876f56;
  background:#f7ecdc;
  font-size:12px;
  line-height:1.5;
}
.wn-showcase-card{
  padding:12px;
  border:1px solid rgba(100,72,43,.16);
  border-radius:8px;
  background:linear-gradient(180deg,#fdf7ee,#efdfc8);
  box-shadow:0 10px 22px rgba(74,53,32,.08);
}
.wn-showcase-card.wolf{background:linear-gradient(180deg,#f9efe3,#efdfc6)}
.wn-showcase-card.rabbit{background:linear-gradient(180deg,#fcf1e6,#f2e0ca)}
.wn-showcase-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:10px;
}
.wn-showcase-top b{display:block;color:#30241d;font-size:13px;line-height:1.3}
.wn-showcase-top span{display:block;margin-top:4px;color:#876f56;font-size:11px;font-weight:800}
.wn-showcase-top strong{
  color:#7a551e;
  font-size:20px;
  line-height:1;
  font-weight:950;
  white-space:nowrap;
}
.wn-showcase-wine{
  display:flex;
  align-items:center;
  gap:10px;
  margin-top:10px;
}
.wn-showcase-wine .em{
  width:40px;
  height:40px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:8px;
  background:rgba(255,255,255,.58);
  font-size:22px;
  box-shadow:0 1px 0 rgba(255,255,255,.65) inset;
}
.wn-showcase-wine b{display:block;color:#2f241d;font-size:15px;line-height:1.2}
.wn-showcase-wine span{display:block;margin-top:4px;color:#7b6656;font-size:11px;font-weight:850}
.wn-showcase-engraving{
  margin-top:8px;
  padding:8px 10px;
  border-radius:8px;
  color:#6b4a29;
  background:rgba(255,255,255,.45);
  font-size:11px;
  font-weight:900;
}
.wn-showcase-foot{
  margin-top:10px;
  display:flex;
  flex-wrap:wrap;
  justify-content:space-between;
  gap:8px;
  color:#6e5b49;
  font-size:11px;
  font-weight:900;
}
.wn-race{display:flex;align-items:center;gap:9px;color:#5e514b;font-size:12px;font-weight:900}
.wn-race-track{height:12px;flex:1;min-width:90px;border-radius:999px;overflow:hidden;background:#eadfcd;box-shadow:0 0 0 1px rgba(80,52,28,.10) inset}
.wn-race-track i{display:block;height:100%}
.wn-race-track .wolf{float:left;background:linear-gradient(90deg,#7b5b46,#b08a62)}
.wn-race-track .rabbit{float:right;background:linear-gradient(90deg,#9f4b5a,#d08874)}

.wn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(116px,1fr));gap:8px}
.wn-vineyard .wn-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
.wn-plot{
  min-height:128px;
  cursor:pointer;
  overflow:hidden;
  border:1px solid rgba(84,61,35,.16);
  border-radius:8px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.68),rgba(255,255,255,.18)),
    repeating-linear-gradient(90deg,rgba(104,79,49,.07) 0 1px,transparent 1px 24px),
    linear-gradient(145deg,#eadcc5,#f7eee0 46%,#cfbb9b);
  box-shadow:0 10px 18px rgba(76,58,32,.07),0 1px 0 rgba(255,255,255,.72) inset;
}
.wn-plot.empty{
  border-style:dashed;
  background:linear-gradient(180deg,rgba(255,252,245,.72),rgba(239,230,212,.54));
}
.wn-plot.golden-open,.wn-plot.golden-held{
  border-color:#bd8631;
  box-shadow:0 10px 18px rgba(76,58,32,.07),0 1px 0 rgba(255,255,255,.72) inset,0 0 0 2px rgba(235,190,76,.19);
}
.wn-plot.golden-open{background:linear-gradient(180deg,rgba(255,252,233,.9),rgba(244,216,146,.55))}
.wn-vineyard-tip{margin:-2px 0 10px;color:#876326;font-size:10px;line-height:1.5;font-weight:800}
.wn-plot-claim{margin-top:4px;color:#865e1c;font-size:9px;font-weight:950}
.wn-plot.upgrade.locked{opacity:.58}
.wn-plot-inner{
  min-height:128px;
  padding:10px 8px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center;
}
.wn-plot-bonus{
  display:inline-flex;
  align-items:center;
  gap:4px;
  min-height:18px;
  padding:1px 6px;
  margin-bottom:6px;
  border-radius:999px;
  color:#6d4c18;
  background:#ecd6a6;
  border:1px solid rgba(158,110,38,.18);
  font-size:9px;
  font-weight:950;
}
.wn-plot-em{font-size:24px;line-height:1;margin-bottom:6px;filter:drop-shadow(0 4px 8px rgba(60,35,20,.14))}
.wn-plot-add{font-size:24px;line-height:1;color:#af8b46;font-weight:300}
.wn-plot-name{max-width:100%;font-size:12px;font-weight:950;color:#2e241d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wn-plot-meta,.wn-plot-time{margin-top:3px;font-size:10px;color:#77695f;font-weight:700}
.wn-bar{
  width:100%;
  height:7px;
  margin:8px 0 2px;
  overflow:hidden;
  border-radius:999px;
  background:rgba(63,48,31,.13);
}
.wn-bar i{
  display:block;
  height:100%;
  border-radius:999px;
  background:linear-gradient(90deg,#7faa80,#d2b15d);
  transition:width 1s ease;
}
.wn-ready{
  margin-top:8px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:22px;
  border-radius:999px;
  padding:2px 8px;
  color:#174f3c;
  background:#e7f3e9;
  font-size:10px;
  font-weight:950;
}
.wn-ready.late{color:#8a4a31;background:#f7e0d3}
.wn-ready.inline{margin:0 6px 0 0}
.wn-plot-actions{display:flex;justify-content:center;gap:5px;min-height:24px;margin-top:6px}
.wn-plot-lock{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:22px;
  padding:2px 8px;
  border-radius:999px;
  color:#846a54;
  background:rgba(123,97,72,.10);
  font-size:10px;
  font-weight:950;
}

.wn-chip-row{display:flex;flex-wrap:wrap;gap:8px}
.wn-chip-row+.wn-chip-row{margin-top:8px}
.wn-stock-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin:12px 0 8px;
  color:#3d2c22;
}
.wn-stock-heading:first-of-type{margin-top:0}
.wn-stock-heading b{font-size:13px}
.wn-stock-heading span{
  color:#907659;
  font-size:11px;
  font-weight:900;
}
.wn-chip-btn{
  min-height:38px;
  display:inline-flex;
  align-items:center;
  gap:7px;
  padding:7px 10px;
  border:1px solid rgba(78,56,34,.16);
  border-radius:8px;
  color:#34261d;
  background:linear-gradient(180deg,#fffdf8,#efe5d4);
  box-shadow:0 8px 16px rgba(57,39,23,.06);
  font-size:12px;
  font-weight:900;
  cursor:pointer;
}
.wn-chip-btn span{font-size:17px;line-height:1}
.wn-chip-btn b{max-width:118px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wn-chip-btn em,.wn-chip-btn i{font-style:normal}
.wn-chip-btn em{color:#8c6b3a;font-variant-numeric:tabular-nums}
.wn-chip-btn i{
  margin-left:2px;
  color:#fff8e8;
  background:#31584a;
  border-radius:999px;
  padding:2px 7px;
  font-size:10px;
}
.wn-chip-btn.passive{
  cursor:default;
  background:linear-gradient(180deg,#f9f5ee,#ede5d8);
}
.wn-chip-btn.passive i{
  color:#725b42;
  background:#eadcc7;
}
.wn-chip-btn.muted{opacity:.56}
.wn-stock-note{margin-top:10px}

.wn-cellar-compare{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
  align-items:start;
}
.wn-cellar-section{min-width:0}
.wn-cellar-list{display:grid;gap:10px}
.wn-cellar-heading{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
  color:#3a2b22;
}
.wn-cellar-heading b{
  min-width:0;
  font-size:14px;
  white-space:normal;
  overflow-wrap:anywhere;
}
.wn-cellar-heading span{
  color:#8f744e;
  font-size:11px;
  font-weight:900;
  flex:0 0 auto;
}
.wn-cellar-panel .wn-jar{gap:10px}
.wn-cellar-panel .wn-jar-actions{align-items:stretch}
.wn-cellar-panel .wn-mini-actions{justify-content:flex-end}
.wn-jar{
  --tier:#b58a45;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  gap:8px;
}
.wn-jar.tier-new{--tier:#8d88a2}
.wn-jar.tier-fresh{--tier:#b64257}
.wn-jar.tier-aged{--tier:#6f1830}
.wn-jar.tier-reserve{--tier:#b98339}
.wn-jar.tier-vintage{--tier:#d2aa45}
.wn-jar.tier-century{--tier:#8f6b2a}
.wn-barrel-shell{
  position:relative;
  padding:10px 8px 12px;
  filter:drop-shadow(0 12px 20px rgba(61,36,16,.16));
}
.wn-barrel-lid,.wn-barrel-base{
  position:absolute;
  left:12%;
  right:12%;
  height:18px;
  border-radius:999px;
  border:1px solid rgba(112,70,40,.28);
  background:linear-gradient(180deg,#e6c48f,#b67843);
  box-shadow:
    inset 0 2px 0 rgba(255,247,232,.52),
    inset 0 -4px 10px rgba(95,56,28,.2);
  pointer-events:none;
}
.wn-barrel-lid{top:2px}
.wn-barrel-base{
  bottom:2px;
  background:linear-gradient(180deg,#c68d57,#9d6336);
}
.wn-barrel-body{
  position:relative;
  min-height:178px;
  padding:22px 14px 18px;
  border-radius:38px 38px 48px 48px/20px 20px 30px 30px;
  border:1px solid rgba(99,58,30,.18);
  background:
    linear-gradient(90deg,rgba(99,61,32,.16),transparent 17%,transparent 83%,rgba(91,55,28,.15)),
    linear-gradient(180deg,#cf9a5e 0%,#bb7f48 24%,#d9ab6b 51%,#b77642 78%,#a9683b 100%);
  overflow:hidden;
}
.wn-barrel-body::before{
  content:"";
  position:absolute;
  top:10px;left:7%;right:7%;bottom:10px;
  border-radius:32px 32px 42px 42px/16px 16px 26px 26px;
  border:1px solid rgba(255,245,225,.18);
  pointer-events:none;
}
.wn-barrel-body::after{
  content:"";
  position:absolute;
  top:0;left:0;right:0;bottom:0;
  background:linear-gradient(90deg,rgba(82,45,22,.16),transparent 18%,transparent 82%,rgba(82,45,22,.16));
  pointer-events:none;
}
.wn-barrel-band{
  position:absolute;
  left:9%;
  right:9%;
  height:9px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.08);
  background:linear-gradient(180deg,#4e3528,#221510);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.08),
    0 3px 8px rgba(33,19,14,.24);
  pointer-events:none;
}
.wn-barrel-band.top{top:22px}
.wn-barrel-band.mid{top:calc(50% - 6px)}
.wn-barrel-band.bottom{bottom:22px}
.wn-barrel-label{
  position:relative;
  z-index:1;
  width:min(100%,228px);
  margin:9px auto 0;
  padding:9px 9px 8px;
  border-radius:12px;
  border:1px solid rgba(120,89,53,.22);
  background:linear-gradient(180deg,rgba(255,249,236,.96),rgba(246,233,208,.93));
  box-shadow:
    0 8px 18px rgba(91,59,33,.14),
    inset 0 1px 0 rgba(255,255,255,.7);
}
.wn-barrel-head{
  display:flex;
  align-items:center;
  gap:8px;
  min-width:0;
}
.wn-jar-em{
  width:34px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  border:1px solid rgba(113,77,43,.18);
  background:linear-gradient(180deg,#fbf0dd,#e2c79c);
  font-size:18px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7);
  flex:0 0 auto;
}
.wn-jar-title{
  display:flex;
  align-items:center;
  align-content:flex-start;
  gap:6px;
  flex-wrap:wrap;
  min-width:0;
}
.wn-jar-title b{
  flex:1 1 100%;
  font-size:14px;
  color:#2d211b;
  line-height:1.2;
}
.wn-couple,.wn-bad{
  display:inline-flex;
  border-radius:999px;
  padding:2px 7px;
  font-size:10px;
  font-weight:950;
}
.wn-couple{color:#7b2f50;background:#ffe9f0}
.wn-bad{color:#943b34;background:#ffe3dc}
.wn-barrel-tags,.wn-barrel-notes{
  display:flex;
  flex-wrap:wrap;
  gap:4px;
  margin-top:7px;
}
.wn-barrel-tag,.wn-barrel-note{
  display:inline-flex;
  align-items:center;
  min-height:20px;
  max-width:100%;
  padding:2px 7px;
  border-radius:999px;
  border:1px solid rgba(118,87,55,.18);
  background:rgba(255,252,245,.86);
  color:#654a36;
  font-size:9px;
  line-height:1.25;
  font-weight:900;
  box-sizing:border-box;
}
.wn-barrel-tag.tier{
  color:#fff8ed;
  background:var(--tier);
  border-color:transparent;
}
.wn-barrel-tag.value{
  color:#724916;
  background:#f5dfb7;
}
.wn-barrel-tag.metric{
  color:#6a5539;
  background:#f2ead9;
}
.wn-barrel-tag.quality.q-steady{color:#594f58;background:#ece6ef}
.wn-barrel-tag.quality.q-silk{color:#215345;background:#deefe7}
.wn-barrel-tag.quality.q-inspired{color:#2e4d7e;background:#dfe9f8}
.wn-barrel-tag.quality.q-signature{color:#71461a;background:#f6e2bf}
.wn-barrel-tag.quality.q-anointed{color:#6e1d38;background:#f8dde8}
.wn-barrel-tag.gold,.wn-barrel-note.gold{
  color:#6e4615;
  background:#f6e3be;
}
.wn-barrel-note.seal{
  color:#5d2f42;
  background:#f3e4ea;
}
.wn-barrel-note.accent{
  color:#31517d;
  background:#dce7fb;
}
.wn-barrel-note.rose{
  color:#7a3151;
  background:#f9e2eb;
}
.wn-barrel-note.danger{
  color:#943b34;
  background:#fbe0d7;
}
.wn-seal-display{
  margin-top:7px;
  padding:6px 8px;
  border-radius:8px;
  border:1px solid rgba(123,90,58,.14);
  background:linear-gradient(180deg,rgba(255,251,243,.92),rgba(244,236,225,.78));
}
.wn-seal-display.compact{padding:5px 7px}
.wn-seal-svg{
  display:block;
  width:100%;
  height:56px;
}
.wn-seal-svg.compact{height:42px}
.wn-seal-svg polyline{
  fill:none;
  stroke:#761c3b;
  stroke-width:2.4;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.wn-seal-meta{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
  margin-top:6px;
  color:#755743;
  font-size:11px;
  line-height:1.35;
}
.wn-seal-meta b{color:#5f2d41}
.wn-barrel-seal{
  margin-top:7px;
  padding:5px 6px;
  border-radius:8px;
  background:rgba(120,71,46,.08);
  border:1px solid rgba(112,72,44,.12);
}
.wn-barrel-seal .wn-seal-display{margin-top:0}
.wn-barrel-seal .wn-seal-display.compact{padding:3px 5px}
.wn-barrel-seal .wn-seal-svg.compact{height:22px}
.wn-quality-line{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-top:7px;
  padding:7px 9px;
  border:1px solid rgba(126,93,55,.14);
  border-radius:8px;
  background:linear-gradient(180deg,rgba(255,250,241,.9),rgba(244,235,219,.76));
  font-size:11px;
  line-height:1.3;
}
.wn-barrel-label .wn-quality-line{margin-top:10px}
.wn-quality-badge{
  display:inline-flex;
  align-items:center;
  gap:4px;
  min-height:22px;
  padding:2px 8px;
  border-radius:999px;
  font-size:10px;
  font-weight:950;
  white-space:nowrap;
}
.wn-quality-badge.q-steady{color:#594f58;background:#ece6ef}
.wn-quality-badge.q-silk{color:#215345;background:#deefe7}
.wn-quality-badge.q-inspired{color:#2e4d7e;background:#dfe9f8}
.wn-quality-badge.q-signature{color:#71461a;background:#f6e2bf}
.wn-quality-badge.q-anointed{color:#6e1d38;background:#f8dde8}
.wn-quality-mult{
  color:#7c694c;
  font-weight:950;
  font-variant-numeric:tabular-nums;
}
.wn-tier-badge{
  display:inline-flex;
  align-items:center;
  min-height:22px;
  padding:2px 8px;
  border-radius:999px;
  color:#fffaf0;
  background:var(--tier);
  font-size:11px;
  font-weight:950;
}
.wn-order-hit{
  display:inline-flex;
  width:fit-content;
  max-width:100%;
  margin-top:7px;
  padding:5px 8px;
  border-radius:8px;
  color:#6a4518;
  background:#f6e5bd;
  border:1px solid rgba(171,121,42,.18);
  font-size:11px;
  line-height:1.35;
  font-weight:900;
}
.wn-jar-actions{display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.wn-cellar-panel .wn-jar-actions .wn-btn{
  min-height:30px;
  padding:6px 10px;
  font-size:11px;
}
.wn-mini-actions{display:flex;gap:5px}
.wn-cellar-slot{
  min-height:132px;
  padding:16px 12px;
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  color:#ad9f8f;
  border:1px dashed rgba(119,86,51,.24);
  border-radius:42px 42px 56px 56px/24px 24px 38px 38px;
  background:
    linear-gradient(180deg,rgba(252,247,238,.9),rgba(244,233,216,.72)),
    repeating-linear-gradient(90deg,transparent 0 26px,rgba(116,82,48,.04) 26px 27px);
  font-size:11px;
  font-weight:800;
}
@media (min-width:1180px){
  .wn-cellar-panel .wn-jar{
    grid-template-columns:minmax(0,1fr) 106px;
    align-items:end;
  }
  .wn-cellar-panel .wn-jar-actions{
    align-self:end;
  }
}
.wn-empty-cellar{
  min-height:116px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:6px;
  text-align:center;
  border:1px dashed rgba(119,86,51,.24);
  border-radius:8px;
  background:rgba(255,252,245,.56);
}
.wn-empty-cellar b{font-size:15px;color:#38271f}
.wn-empty-cellar span{max-width:360px;color:#7c6b5d;font-size:12px;line-height:1.55}

.wn-duel-panel{
  border-color:rgba(110,24,48,.22);
  background:linear-gradient(145deg,#fff8ef,#f5e9dc 58%,#f8eef0);
}
.wn-duel-state,.wn-duel-winner{
  color:#402a25;
  font-size:13px;
  font-weight:950;
  margin-bottom:8px;
}
.wn-upgrade-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.wn-upgrade{
  min-height:58px;
  text-align:left;
  padding:10px;
  border:1px solid rgba(75,52,35,.16);
  border-radius:8px;
  background:linear-gradient(180deg,#fffaf0,#efe4d2);
  color:#2e241d;
}
.wn-upgrade.can{cursor:pointer}
.wn-upgrade.locked{opacity:.5}
.wn-upgrade b{display:block;font-size:12px;line-height:1.25}
.wn-upgrade span{display:block;margin-top:4px;color:#927143;font-size:11px;font-weight:900}
.wn-action-row{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.wn-action-row span{color:#826d5a;font-size:12px;font-weight:800}
.wn-tier-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.wn-tier-card{
  min-height:76px;
  padding:9px 6px;
  text-align:center;
  border:1px solid rgba(77,55,34,.13);
  border-radius:8px;
  background:linear-gradient(180deg,#fffaf0,#efe6d7);
}
.wn-tier-card span{display:block;font-size:20px;line-height:1}
.wn-tier-card b{display:block;margin-top:5px;color:#33251d;font-size:12px}
.wn-tier-card i{display:block;margin-top:3px;color:#9b6b22;font-style:normal;font-size:13px;font-weight:950}
.wn-tier-card em{display:block;margin-top:2px;color:#8b7a6b;font-style:normal;font-size:10px;font-weight:800}
.wn-log-list{max-height:220px;overflow:auto;padding-right:2px}
.wn-log-row{
  padding:6px 0;
  border-bottom:1px solid rgba(91,66,39,.08);
  color:#7b6c60;
  font-size:11px;
  line-height:1.45;
}
.wn-log-row:last-child{border-bottom:0}
.wn-help .hb{color:#695b51;font-size:12px;line-height:1.65}
.wn-help .goal{
  margin-bottom:8px;
  padding:10px;
  border-radius:8px;
  color:#2f241e;
  background:#f4e7d2;
  font-weight:950;
}
.wn-help .goal span{color:#7d6b5a;font-weight:700}
.wn-help .tip{
  margin-top:8px;
  padding:9px;
  border-radius:8px;
  color:#674619;
  background:#f8e8c4;
  font-weight:900;
}

.wn-modal{color:#2e211b}
.wn-modal h3{font-size:18px;margin:0 0 8px;color:#24161d}
.wn-modal p{margin:0 0 12px;color:#76665a;font-size:13px;line-height:1.55}
.wn-ritual-card{
  display:flex;
  gap:12px;
  align-items:flex-start;
  margin:0 0 12px;
  padding:12px;
  border:1px solid rgba(143,102,41,.18);
  border-radius:8px;
  color:#5a4430;
  background:linear-gradient(145deg,#fff7e7,#f3e7d2 58%,#efe0cf);
}
.wn-ritual-mark{
  width:34px;
  height:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  color:#fff5e2;
  background:linear-gradient(180deg,#7a1f3b,#4a1025);
  box-shadow:0 10px 18px rgba(74,16,37,.18);
  font-size:15px;
  font-weight:950;
  flex:0 0 auto;
}
.wn-ritual-copy{min-width:0}
.wn-ritual-copy b{
  display:block;
  color:#35251b;
  font-size:13px;
  line-height:1.3;
}
.wn-ritual-copy span{
  display:block;
  margin-top:4px;
  color:#7a6655;
  font-size:11px;
  line-height:1.5;
  font-weight:800;
}
.wn-ritual-state{
  margin:0 0 10px;
  padding:8px 10px;
  border-radius:8px;
  color:#725a45;
  background:#f4eadc;
  font-size:11px;
  line-height:1.45;
  font-weight:850;
}
.wn-ritual-state b{color:#35251b}
.wn-ritual-state.on{
  color:#174f3c;
  background:#e8f3ea;
  border:1px solid rgba(52,112,83,.14);
}
.wn-seal-shell{
  margin:0 0 12px;
  padding:12px;
  border:1px solid rgba(125,92,58,.18);
  border-radius:8px;
  background:linear-gradient(180deg,#fffaf0,#f2e8d9);
}
.wn-seal-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
}
.wn-seal-head b{
  color:#38271f;
  font-size:13px;
}
.wn-seal-pad{
  display:block;
  width:100%;
  height:140px;
  border-radius:8px;
  background:#fffcf6;
  box-shadow:inset 0 0 0 1px rgba(116,85,53,.14);
  touch-action:none;
  cursor:crosshair;
}
.wn-seal-tip{
  margin-top:8px;
  color:#7d6a5a;
  font-size:11px;
  line-height:1.45;
  font-weight:800;
}
.wn-choice-list{display:grid;gap:8px;max-height:55vh;overflow:auto;padding-right:2px}
.wn-choice{
  display:flex;
  gap:11px;
  align-items:center;
  padding:12px;
  border:1px solid rgba(83,60,37,.16);
  border-radius:8px;
  background:linear-gradient(180deg,#fffdf8,#f3eadc);
  cursor:pointer;
}
.wn-choice.locked{cursor:default;opacity:.48}
.wn-choice-em{
  width:42px;
  height:42px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:8px;
  background:#f0e0c8;
  font-size:22px;
  flex:0 0 auto;
}
.wn-choice b{display:block;color:#2d211b;font-size:14px}
.wn-choice span,.wn-choice em{display:block;margin-top:3px;font-size:12px;line-height:1.35;font-style:normal}
.wn-choice span{color:#6f6057}
.wn-choice em{color:#9a6e31;font-weight:850}
.wn-modal-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.wn-open-value{
  margin:10px 0;
  padding:10px;
  border-radius:8px;
  color:#6a4518;
  background:#f6e5bd;
  font-size:13px;
  font-weight:900;
}
.wn-open-value b{font-size:17px}
.wn-field{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:10px;
  margin:9px 0;
  color:#5d4c43;
  font-size:13px;
  font-weight:850;
}
.wn-field.stacked{
  flex-direction:column;
  align-items:stretch;
}
.wn-field input{
  width:120px;
  padding:8px 9px;
  border:1px solid rgba(83,60,37,.22);
  border-radius:8px;
  color:#261914;
  background:#fffaf2;
  font:inherit;
}
.wn-field.stacked input{width:100%}
.wn-engrave-row{
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:0 0 10px;
}
.wn-engrave-chip{
  min-height:32px;
  padding:6px 11px;
  border:1px solid rgba(93,64,37,.16);
  border-radius:999px;
  color:#412f24;
  background:linear-gradient(180deg,#fffdf8,#efe4d3);
  box-shadow:0 8px 14px rgba(63,42,26,.07);
  font-size:11px;
  font-weight:950;
  cursor:pointer;
}
.wn-engrave-chip.ghost{
  color:#725f53;
  background:linear-gradient(180deg,#faf8f3,#efe8de);
}

@media (max-width:820px){
  #winery{padding:16px 12px 28px}
  .wn-layout{grid-template-columns:1fr}
}
@media (max-width:560px){
  #winery{margin:-6px -11px 0;padding:16px 11px 24px}
  .wn-stage,.wn-layout,.wn-maincol,.wn-sidecol{gap:10px}
  .wn-panel{padding:12px}
  .wn-hero{grid-template-columns:1fr;min-height:auto;padding:20px 16px}
  .wn-hero-art{display:none}
  .wn-htitle .t{font-size:23px;margin-top:8px}
  .wn-htitle .s{font-size:12px;margin-top:6px}
  .wn-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:14px}
  .wn-stat{min-height:52px;padding:8px 8px 7px}
  .wn-stat .n{font-size:14px}
  .wn-stat .l{font-size:10px;margin-top:4px}
  .wn-dexbar{margin-top:10px}
  .wn-hero-actions{margin-top:14px;gap:6px}
  .wn-radar,.wn-grid{grid-template-columns:1fr}
  .wn-orders{gap:9px;padding-bottom:5px}
  .wn-vineyard .wn-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
  .wn-order{flex-basis:78vw;min-height:auto}
  .wn-player-grid,.wn-expo-board{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
    padding:0;
    margin:0;
    overflow:visible;
  }
  .wn-player-card,.wn-expo-row{
    min-width:0;
    width:100%;
  }
  .wn-player-top,.wn-player-row{
    align-items:flex-start;
  }
  .wn-player-top b,.wn-expo-row b{font-size:12px}
  .wn-player-top span,.wn-player-row,.wn-expo-row span,.wn-expo-metrics{font-size:10px}
  .wn-expo-title{padding:2px 6px;font-size:9px}
  .wn-cellar-compare{gap:8px}
  .wn-cellar-heading{gap:6px;margin-bottom:8px}
  .wn-cellar-heading b{font-size:12px}
  .wn-cellar-heading span{font-size:10px}
  .wn-cellar-panel .wn-jar{padding:10px}
  .wn-cellar-panel .wn-jar-em{width:36px;height:36px;font-size:21px}
  .wn-cellar-panel .wn-jar-title b{font-size:13px}
  .wn-cellar-panel .wn-jar-meta,
  .wn-cellar-panel .wn-jar-row,
  .wn-cellar-panel .wn-jar-value,
  .wn-cellar-panel .wn-jar-hint,
  .wn-cellar-panel .wn-sip{font-size:10px}
  .wn-cellar-panel .wn-quality-line{padding:6px 8px}
  .wn-cellar-panel .wn-quality-badge{font-size:9px}
  .wn-cellar-panel .wn-quality-mult{font-size:10px}
  .wn-cellar-panel .wn-empty-cellar{min-height:92px;padding:8px}
  .wn-cellar-panel .wn-empty-cellar b{font-size:13px}
  .wn-cellar-panel .wn-empty-cellar span{font-size:10px}
  .wn-barrel-shell{padding:8px 4px 10px}
  .wn-barrel-lid,.wn-barrel-base{left:10%;right:10%;height:15px}
  .wn-barrel-body{
    min-height:146px;
    padding:18px 9px 14px;
    border-radius:28px 28px 36px 36px/15px 15px 24px 24px;
  }
  .wn-barrel-body::before{
    top:8px;left:6%;right:6%;bottom:8px;
    border-radius:24px 24px 30px 30px/12px 12px 18px 18px;
  }
  .wn-barrel-band{left:8%;right:8%;height:8px}
  .wn-barrel-band.top{top:18px}
  .wn-barrel-band.bottom{bottom:18px}
  .wn-barrel-label{
    width:min(100%,150px);
    margin-top:7px;
    padding:7px 7px 6px;
  }
  .wn-cellar-panel .wn-jar-em{width:28px;height:28px;font-size:16px}
  .wn-cellar-panel .wn-jar-title b{font-size:11px}
  .wn-barrel-tags,.wn-barrel-notes{gap:3px;margin-top:5px}
  .wn-barrel-tag,.wn-barrel-note{
    min-height:18px;
    padding:2px 6px;
    font-size:8px;
  }
  .wn-cellar-panel .wn-quality-line{padding:4px 6px}
  .wn-cellar-panel .wn-quality-badge,
  .wn-cellar-panel .wn-quality-mult{font-size:8px}
  .wn-barrel-seal{margin-top:5px;padding:4px}
  .wn-barrel-seal .wn-seal-display.compact{padding:2px 4px}
  .wn-barrel-seal .wn-seal-svg.compact{height:18px}
  .wn-cellar-slot{min-height:112px;padding:12px 8px;font-size:10px}
  .wn-vintage-checks,.wn-vintage-routes{grid-template-columns:1fr}
  .wn-vintage h2{font-size:21px}
  .wn-vintage-count{min-width:52px}
  .wn-upgrade-grid{grid-template-columns:1fr}
  .wn-jar{grid-template-columns:1fr}
  .wn-jar-actions{align-items:stretch}
  .wn-mini-actions{justify-content:flex-end}
  .wn-tier-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .wn-action-row .wn-btn{flex:1}
  .wn-modal-actions .wn-btn{flex:1}
}

/* ═══════════ Y07 共赴山海 v2（战报英雄卡 + 黎明登山场景） ═══════════ */
#wtBox>*{animation:wtIn .45s cubic-bezier(.2,.8,.3,1) both}
#wtBox>*:nth-child(2){animation-delay:.05s}
#wtBox>*:nth-child(3){animation-delay:.1s}
#wtBox>*:nth-child(4){animation-delay:.15s}
#wtBox>*:nth-child(5){animation-delay:.2s}
#wtBox>*:nth-child(6){animation-delay:.25s}
@keyframes wtIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* ── 卡片骨架 ── */
.wt-card{background:var(--card,#fff);border-radius:16px;padding:14px;margin-bottom:10px;box-shadow:0 2px 10px rgba(42,42,50,.05)}
.wt-card-title{display:flex;align-items:center;gap:6px;font-size:15px;font-weight:800;margin-bottom:10px;color:var(--ink,#2a2a32)}
.wt-card-title .wt-chip{margin-left:auto;background:linear-gradient(135deg,#fdf3dd,#f7e7c8);color:#8a6a2b;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:800}
.wt-card-title .wt-sub{margin-left:auto;font-size:11px;color:var(--muted,#9a9aa5);font-weight:500}

/* ── 沉浸式页头（战报 + 关键数据） ── */
.wt-hero{position:relative;overflow:hidden;border-radius:18px;padding:18px 16px 36px;margin-bottom:10px;color:#fff;box-shadow:0 6px 20px rgba(42,42,50,.16)}
.wt-hero::before{content:'';position:absolute;right:-30px;top:-42px;width:170px;height:170px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.3),transparent 65%)}
.wt-hero.m-win{background:linear-gradient(135deg,#3f8f6b,#7cc9a0)}
.wt-hero.m-good{background:linear-gradient(135deg,#5c9a7e,#a3d9bf)}
.wt-hero.m-flat{background:linear-gradient(135deg,#77808f,#a9b2c0)}
.wt-hero.m-ouch{background:linear-gradient(135deg,#c76a7e,#e8a3ae)}
.wt-ph-ridge{position:absolute;left:0;right:0;bottom:0;width:100%;height:56px;display:block}
.wt-ph-title{position:relative;font-size:12px;font-weight:800;letter-spacing:2.5px;opacity:.92;margin-bottom:7px}
.wt-hero-num{position:relative;font-size:40px;font-weight:900;line-height:1.05;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.wt-hero-num small{font-size:13px;font-weight:700;opacity:.85}
.wt-diff{font-size:12px;font-weight:800;border-radius:999px;padding:3px 10px;background:rgba(255,255,255,.26);align-self:center}
.wt-hero-vs{font-size:11px;font-weight:800;background:rgba(255,255,255,.24);border-radius:999px;padding:3px 9px;align-self:center;margin-left:auto}
.wt-hero-line{position:relative;margin-top:7px;font-size:13px;line-height:1.55;opacity:.96;max-width:92%}
.wt-hero-line.lead{font-size:15px;font-weight:700;padding:4px 0 2px}
.wt-ph-chips{position:relative;display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.wt-ph-chips span{font-size:11px;font-weight:800;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.32);border-radius:999px;padding:4px 10px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}

/* ── 今日称重 ── */
.wt-checkin-row{display:flex;gap:8px;align-items:stretch}
.wt-kg-input{flex:1;display:flex;align-items:center;background:#f4f2ee;border:1.5px solid #e5e1d8;border-radius:12px;padding:0 12px;transition:border-color .2s}
.wt-kg-input:focus-within{border-color:var(--gold,#c8a24a)}
.wt-kg-input input{flex:1;min-width:0;border:0;background:none;outline:0;padding:11px 0;font-size:17px;font-weight:700;color:var(--ink,#2a2a32);text-align:center}
.wt-kg-input input::-webkit-outer-spin-button,.wt-kg-input input::-webkit-inner-spin-button{-webkit-appearance:none}
.wt-kg-input span{font-size:12px;color:var(--muted,#9a9aa5);font-weight:700}
.wt-strike{background:linear-gradient(135deg,var(--wolf,#5b6b8c),var(--rabbit,#e08aa6));border-radius:12px;padding:0 18px;font-size:15px;white-space:nowrap;box-shadow:0 3px 10px rgba(224,138,166,.35)}
.wt-strike:active,.wt-rescue:active,.wt-goal-btn:active{transform:scale(.96)}
.wt-done{background:#eef7ef;border:1px solid #cfe8d2;border-radius:12px;padding:11px 12px;font-size:13px;color:#3e7a52;line-height:1.6}
.wt-done b{font-size:15px}

/* ── 目标设置/修改 ── */
.wt-goal-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.wt-field span{display:block;font-size:11px;color:var(--muted,#9a9aa5);margin-bottom:4px;font-weight:600}
.wt-field input{width:100%;padding:10px;border:1.5px solid #e5e1d8;border-radius:10px;font-size:16px;box-sizing:border-box;background:#faf9f6;outline:0}
.wt-field input:focus{border-color:var(--gold,#c8a24a)}
.wt-goal-hint{font-size:11.5px;color:var(--muted,#9a9aa5);margin:8px 0}
.wt-goal-btn{width:100%;margin-top:2px;padding:11px;border-radius:12px;background:linear-gradient(135deg,var(--wolf,#5b6b8c),var(--rabbit,#e08aa6));font-size:15px}
.wt-edit .wt-checkin-row .wt-goal-btn{width:auto;padding:0 16px}
.wt-fold{cursor:pointer;user-select:none;-webkit-user-select:none}
.wt-fold-tip{margin-left:auto;font-size:10.5px;color:var(--muted,#9a9aa5);font-weight:500}

/* ── 黎明登山场景 ── */
.wt-svg{width:100%;max-width:380px;display:block;margin:0 auto}
.wt-cloud{animation:wtCloud 9s ease-in-out infinite alternate}
.wt-cloud.c2{animation-duration:12s;animation-delay:1.2s}
@keyframes wtCloud{from{transform:translateX(-7px)}to{transform:translateX(9px)}}
.wt-sunglow{transform-box:fill-box;transform-origin:center;animation:wtSun 4.5s ease-in-out infinite alternate}
@keyframes wtSun{from{opacity:.22;transform:scale(1)}to{opacity:.42;transform:scale(1.12)}}
.wt-flag{transform-box:fill-box;transform-origin:0% 100%;animation:wtFlag 3s ease-in-out infinite alternate}
@keyframes wtFlag{from{transform:rotate(-4deg)}to{transform:rotate(5deg)}}
.wt-climb{animation:wtClimb 2.6s ease-in-out infinite alternate}
.wt-climb.me{animation-delay:.5s}
@keyframes wtClimb{from{transform:translateY(-1.5px)}to{transform:translateY(2px)}}
.wt-star{animation:wtStar 2.4s ease-in-out infinite alternate}
.wt-star.s2{animation-delay:.6s;animation-duration:3.1s}
.wt-star.s3{animation-delay:1.1s}
.wt-star.s4{animation-delay:1.7s;animation-duration:2.8s}
@keyframes wtStar{from{opacity:.25}to{opacity:.95}}
.wt-bird{animation:wtBird 5.5s ease-in-out infinite alternate}
.wt-bird.b2{animation-delay:1.4s;animation-duration:6.5s}
@keyframes wtBird{from{transform:translate(0,0)}to{transform:translate(9px,-5px)}}
.wt-mist{animation:wtMist 7s ease-in-out infinite alternate}
@keyframes wtMist{from{transform:translateX(-8px);opacity:.12}to{transform:translateX(8px);opacity:.22}}
.wt-scene-legend{display:flex;justify-content:space-around;margin-top:8px;font-size:12px;font-weight:700;color:var(--muted,#9a9aa5)}
.wt-scene-legend .mid{color:#8a6a2b}

/* ── 变身进度 ── */
.wt-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}
.wt-tile{border-radius:12px;padding:10px 6px}
.wt-tile b{display:block;font-size:21px;font-weight:900;line-height:1.1}
.wt-tile span{display:block;font-size:10.5px;color:var(--muted,#9a9aa5);margin-top:3px;font-weight:600}
.wt-tile.t-a{background:#eef2f9;color:var(--wolf,#5b6b8c)}
.wt-tile.t-b{background:#fdf1ec;color:#c07a5a}
.wt-tile.t-c{background:#f3f0e4;color:#8a6a2b}
.wt-trend{margin-top:12px;background:linear-gradient(135deg,#f8f7f4,#f4f1f7);border-radius:12px;padding:9px 10px 6px}
.wt-trend-head{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--muted,#9a9aa5);font-weight:700;margin-bottom:2px}
.wt-trend-head b{color:#8a6a2b;font-size:11px}
.wt-trend-svg{width:100%;height:66px;display:block}
.wt-bar-head{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted,#9a9aa5);margin-top:12px;font-weight:700}
.wt-bar-head b{color:var(--wolf,#5b6b8c)}
.wt-bar-head .nc{color:#8a6a2b}
.wt-bar{position:relative;height:10px;border-radius:999px;background:#efece6;margin-top:6px}
.wt-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--wolf,#5b6b8c),var(--rabbit,#e08aa6));box-shadow:0 0 8px rgba(224,138,166,.45);transition:width .5s ease}
.wt-bar em{position:absolute;top:50%;width:16px;height:16px;margin:-8px 0 0 -8px;border-radius:50%;background:#fff;border:3px solid var(--gold,#c8a24a);box-shadow:0 1px 4px rgba(0,0,0,.18);transition:left .5s ease}
.wt-bar b{position:absolute;top:2px;bottom:2px;width:2px;border-radius:2px;background:rgba(42,42,50,.14)}
.wt-bar.slim{height:7px;margin-top:8px}
.wt-bar.slim em{display:none}
.wt-streak{font-size:12px;color:var(--muted,#9a9aa5);margin-top:8px}
.wt-streak b{color:#d3543f}
.wt-ms{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.wt-ms span{background:linear-gradient(135deg,#fdf3dd,#f7e7c8);color:#8a6a2b;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:800}
.wt-camps{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}
.wt-camp-btn{background:linear-gradient(135deg,#e8b46a,#d39a45);border-radius:999px;padding:6px 12px;font-size:12px;animation:wtCanPulse 1.6s ease infinite}
@keyframes wtCanPulse{0%,100%{box-shadow:0 0 0 2px rgba(232,180,106,.3)}50%{box-shadow:0 0 0 5px rgba(232,180,106,.16)}}

/* ── 胖瘦同盟 ── */
.wt-ally-top{display:flex;align-items:center;gap:8px}
.wt-ava{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0}
.wt-ava.a-wolf{background:#e7ecf6;box-shadow:0 0 0 2px var(--wolf,#5b6b8c)}
.wt-ava.a-rabbit{background:#fbe6ee;box-shadow:0 0 0 2px var(--rabbit,#e08aa6)}
.wt-heart{font-size:16px;display:inline-block;animation:wtBeat 1.2s ease-in-out infinite}
@keyframes wtBeat{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}
.wt-ally-days{margin-left:auto;text-align:right}
.wt-ally-days b{font-size:26px;font-weight:900;color:var(--wolf,#5b6b8c);display:block;line-height:1}
.wt-ally-days span{font-size:11px;color:var(--muted,#9a9aa5)}
.wt-ally-today{margin-top:10px;border-radius:10px;padding:8px 10px;font-size:12.5px;text-align:center}
.wt-ally-today.ok{background:#eef7ef;color:#3e7a52}
.wt-ally-today.wait{background:#fdf6ec;color:#b07838}
.wt-ally-badge{text-align:center;font-size:11.5px;color:var(--muted,#9a9aa5);margin-top:6px}
.wt-ally-rival{margin-top:10px;padding:10px;background:linear-gradient(135deg,#f6f3fa,#fbf4f7);border-radius:12px}
.wt-ally-rival-head{display:flex;justify-content:space-between;font-size:12.5px;font-weight:800;color:var(--ink,#2a2a32)}
.wt-ally-rival-head b{color:var(--rabbit,#e08aa6)}
.wt-ally-rival-sub{font-size:11.5px;color:var(--muted,#9a9aa5);margin:3px 0 2px}
.wt-ally-act{text-align:center;margin-top:10px}
.wt-rescue{background:#d3717f;border-radius:999px;padding:8px 18px;font-size:13px}

/* ── 降级与适配 ── */
@media (prefers-reduced-motion:reduce){
  #wtBox>*,.wt-cloud,.wt-sunglow,.wt-flag,.wt-climb,.wt-heart,.wt-camp-btn,.wt-star,.wt-bird,.wt-mist{animation:none!important}
}
@media(max-width:480px){
  .wt-card{border-radius:13px;padding:12px}
  .wt-hero-num{font-size:32px}
  .wt-goal-grid{grid-template-columns:1fr}
  .wt-tile b{font-size:18px}
  .wt-ava{width:38px;height:38px;font-size:19px}
}

/* v1.1：M05 页 tab 按钮选中态 */
.m05tabbtn.on{background:var(--gold,#e8c97a)!important;border-color:#c8a24a!important;color:#4a3a24!important;font-weight:800;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.m05-school-route{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;align-items:center;gap:4px}.m05-school-route>i{font-style:normal;color:#c8cad2}.m05-school-step{min-width:0;text-align:center;color:#a4a6ad}.m05-school-step b{display:flex;width:28px;height:28px;margin:0 auto 3px;align-items:center;justify-content:center;border-radius:50%;background:#f0f1f4}.m05-school-step span{display:block;font-size:10px;line-height:1.2;overflow-wrap:anywhere}.m05-school-step.done{color:#55735b}.m05-school-step.done b{background:#e4f6e6}.m05-school-story{font-size:11.5px;line-height:1.65;padding:8px 10px;background:#f4f0fa;border:1px solid #ddd1ec;border-radius:8px}.m05-school-harvest{margin-top:4px;color:#667d57}

/* ═══════════ 成长中心 v1.3：学习即时反馈动画（§2.6 ①） ═══════════ */
@keyframes cg-pop-in { from{transform:translateX(-50%) scale(.55);opacity:0} to{transform:translateX(-50%) scale(1);opacity:1} }
@keyframes cg-pop-out { from{transform:translateX(-50%) scale(1);opacity:1} to{transform:translateX(-50%) scale(.7);opacity:0} }
@keyframes cg-flash-bg { 0%{background:#fff3d6} 60%{background:#fff3d6} 100%{background:transparent} }
.cg-levelup-card{position:fixed;left:50%;top:36%;transform:translateX(-50%);z-index:9999;width:min(300px,86vw);
  background:linear-gradient(145deg,#fff8ef,#fdf0d8);border:2px solid #e8c97a;border-radius:16px;
  box-shadow:0 10px 34px rgba(180,140,60,.35);padding:18px 16px;text-align:center;
  animation:cg-pop-in .38s cubic-bezier(.2,1.4,.4,1) both}
.cg-levelup-card.cg-levelup-out{animation:cg-pop-out .38s ease-in both}
.cg-levelup-inner{font-size:17px;font-weight:800;color:#b08a4a;letter-spacing:1px;line-height:1.5}
.cg-levelup-sub{font-size:12px;font-weight:600;color:#8a7448;margin-top:6px}
.cg-flash-new{animation:cg-flash-bg 1.8s ease-out both;border-radius:6px;padding:2px 4px}

/* ===== M29 弹弓打猪头 · 横屏沉浸 ===== */
html.b29fs header.compact, html.b29fs #subBar, html.b29fs nav{display:none !important}
html.b29fs body{overflow:hidden;background:#0e1524}
html.b29fs #m29{position:fixed;top:0;left:0;right:0;bottom:0;z-index:999;background:linear-gradient(180deg,#0e1524,#16233c);display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;margin:0;overflow:hidden}
html.b29fs #m29setup{display:flex !important;flex-direction:column;align-items:center;gap:10px;width:min(92vw,720px);margin:0}
html.b29fs #m29setup .card{background:transparent;box-shadow:none}
html.b29fs #m29setup .sub{color:#bcd}
html.b29fs #m29game{display:flex !important;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%;gap:10px;position:relative}
html.b29fs #m29cv{width:auto !important;max-width:100vw;height:auto;max-height:calc(100vh - 120px)}
html.b29fs .b29-btns{position:absolute;bottom:calc(12px + env(safe-area-inset-bottom,0px));left:0;right:0;display:flex;gap:10px;width:min(92vw,420px);margin:0 auto}
html.b29fs .b29-btns .btn{font-size:14px}
html.b29fs #m29done{position:absolute;bottom:calc(64px + env(safe-area-inset-bottom,0px));left:0;right:0;width:min(92vw,460px);margin:0 auto}
html.b29fs #m29done .card{background:rgba(18,26,40,.92);color:#fff}
html.b29fs #m29done .sub{color:#bcd}

/* ==================== v0816 个人岛补完：主题皮肤 + 施工提示 ==================== */
.pi-build-tip{position:absolute;left:50%;top:calc(64px + env(safe-area-inset-top,0px));transform:translateX(-50%);z-index:6;background:rgba(42,37,32,.85);color:#ffe9b8;border-radius:999px;padding:6px 13px;font-size:11px;font-weight:800;white-space:nowrap;max-width:92vw;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 8px rgba(0,0,0,.25)}
/* 主题皮肤（PRD §2.8）：整岛色调切换。
   .pi-map 的草地纹理不透明会盖住页面渐变——主题色必须同时叠到 .pi-map 上，
   否则岛面永远是默认海边草地（v0825 补：此前只叠 .pi-view，地图区看不到主题色） */
.pi-page.pi-forest{background:linear-gradient(180deg,#5c8a5a 0%,#8fbf7d 38%,#d4e8c8 100%)}
.pi-page.pi-forest .pi-view{background:linear-gradient(180deg,rgba(92,138,90,.45),rgba(212,232,200,.45)),url(/uploads/_assets/wm/water.jpg) center/280px repeat}
.pi-page.pi-forest .pi-map{background:linear-gradient(rgba(74,124,60,.32),rgba(74,124,60,.32)),url(/uploads/_assets/wm/grass.jpg) center/620px repeat}
.pi-page.pi-forest .pi-cell2.grass{background:rgba(74,124,60,.28)}
.pi-page.pi-forest .pi-cell2.sand{background:rgba(196,222,170,.34)}
.pi-page.pi-forest .pi-hud,.pi-page.pi-forest .pi-mode{background:rgba(38,66,34,.92)}
.pi-page.pi-star{background:linear-gradient(180deg,#23264d 0%,#3b3f7d 38%,#6a6fae 100%)}
.pi-page.pi-star .pi-view{background:linear-gradient(180deg,rgba(35,38,77,.6),rgba(106,111,174,.55)),url(/uploads/_assets/wm/water.jpg) center/280px repeat}
.pi-page.pi-star .pi-map{background:linear-gradient(rgba(35,38,77,.5),rgba(35,38,77,.5)),url(/uploads/_assets/wm/grass.jpg) center/620px repeat}
.pi-page.pi-star .pi-cell2.grass{background:rgba(106,90,205,.16)}
.pi-page.pi-star .pi-cell2.sand{background:rgba(138,122,224,.22)}
.pi-page.pi-star .pi-hud,.pi-page.pi-star .pi-mode{background:rgba(24,26,58,.92)}
.pi-page.pi-sakura{background:linear-gradient(180deg,#f7c8d8 0%,#fbdbe6 38%,#fdeef3 100%)}
.pi-page.pi-sakura .pi-view{background:linear-gradient(180deg,rgba(247,200,216,.5),rgba(253,238,243,.5)),url(/uploads/_assets/wm/water.jpg) center/280px repeat}
.pi-page.pi-sakura .pi-map{background:linear-gradient(rgba(247,200,216,.42),rgba(247,200,216,.42)),url(/uploads/_assets/wm/grass.jpg) center/620px repeat}
.pi-page.pi-sakura .pi-cell2.grass{background:rgba(238,158,190,.16)}
.pi-page.pi-sakura .pi-cell2.sand{background:rgba(250,205,222,.3)}
.pi-page.pi-sakura .pi-hud,.pi-page.pi-sakura .pi-mode{background:rgba(200,120,150,.92)}
/* 夜晚：海面一起入夜（原 pi-page 渐变被 pi-view 水纹图遮住，主题/夜色都要叠在水纹上才可见） */
.pi-page.pi-night .pi-view{background:linear-gradient(180deg,rgba(28,37,71,.6),rgba(60,82,102,.6)),url(/uploads/_assets/wm/water.jpg) center/280px repeat}

/* ==================== v0816-island12 · 个人岛「更多」底部抽屉 ==================== */
.pi-sheet-mask{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9998;background:rgba(20,14,8,.45);opacity:0;transition:opacity .22s ease;pointer-events:none}
.pi-sheet-mask.on{opacity:1;pointer-events:auto}
.pi-sheet{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:linear-gradient(180deg,#fffdf7,#fdf6e9);border-radius:22px 22px 0 0;box-shadow:0 -8px 30px rgba(60,40,10,.22);transform:translateY(105%);transition:transform .26s cubic-bezier(.32,.72,.3,1);padding:14px 16px calc(20px + env(safe-area-inset-bottom,0px));max-height:80vh;overflow-y:auto}
.pi-sheet.on{transform:translateY(0)}
.pi-sheet-grip{width:44px;height:5px;border-radius:999px;background:rgba(120,95,60,.25);margin:2px auto 12px}
.pi-sheet-title{font-size:15px;font-weight:800;color:#5b4636;text-align:center;margin-bottom:4px}
.pi-sheet-sub{font-size:10px;color:#a08a6a;text-align:center;margin-bottom:12px}
.pi-sheet-group{margin-bottom:14px}
.pi-sheet-group-title{font-size:11px;font-weight:800;color:#b3926a;letter-spacing:1px;margin:0 2px 6px;display:flex;align-items:center;gap:6px}
.pi-sheet-group-title::after{content:'';flex:1;height:1px;background:rgba(179,146,106,.28)}
.pi-sheet-row{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.pi-sheet-btn{background:#fff;border:1px solid rgba(179,146,106,.25);border-radius:14px;padding:10px 6px 9px;text-align:center;box-shadow:0 2px 6px rgba(120,95,60,.08);cursor:pointer;transition:transform .12s ease}
.pi-sheet-btn:active{transform:scale(.95)}
.pi-sheet-btn b{display:block;font-size:21px;line-height:1.2;margin-bottom:3px}
.pi-sheet-btn span{display:block;font-size:11px;font-weight:800;color:#6b5335}
.pi-sheet-btn small{display:block;font-size:9px;color:#a08a6a;margin-top:2px;line-height:1.25}
.pi-sheet-close{margin-top:6px;width:100%;border:0;border-radius:14px;background:rgba(179,146,106,.18);color:#8a6d4a;padding:11px;font-size:13px;font-weight:800;cursor:pointer}
/* 🏝️ 岛上动态底部抽屉：复用自由大世界「家园足迹」(wm-drawer) 样式，贴底吸附 */
.pi-drawer-pos{position:absolute;left:0;right:0;bottom:0}
.pi-loading{color:#a08a6a;font-size:12px;text-align:center;padding:8px 0}
/* ⬆️ 升级模式：可升级（资源够）的建筑/装饰箭头标注 */
.pi-upgradable{outline:2px dashed rgba(232,162,61,.75);outline-offset:1px;border-radius:8px}
.pi-up-arrow{position:absolute;top:-11px;right:-4px;font-style:normal;font-size:15px;line-height:1;filter:drop-shadow(0 1px 2px rgba(60,40,10,.35));animation:piUpBob 1s ease-in-out infinite}
.pi-decor2 .pi-up-arrow{top:-9px}
@keyframes piUpBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}

/* 农场 tab 分组（v0816 v2）：等分按钮栏（与成长中心一致），顶部固定主体按 tab 切换 */
.fm-tabs{display:flex;gap:6px;margin:10px 0 6px}
.fm-tab{flex:1;border:1px solid #e3d5b8;border-radius:10px;background:#fbf7ee;color:#8a7a5c;padding:8px 2px;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap;transition:all .15s}
.fm-tab.on{background:var(--gold,#e8c97a);border-color:#c8a24a;color:#4a3a24;font-weight:800;box-shadow:0 2px 8px rgba(0,0,0,.08)}
.fm-tabpane{animation:fmFade .18s ease}
@keyframes fmFade{from{opacity:.4;transform:translateY(3px)}to{opacity:1;transform:none}}

/* ==================== v0816-v06 等级徽章 + 升级仪式 ==================== */
.pi-lvwrap{display:inline-flex;align-items:center;gap:6px;pointer-events:auto}
.pi-lvbadge{background:linear-gradient(135deg,#f6c95c,#e8a23d)!important;color:#4a3200!important;cursor:pointer;border-radius:999px;padding:7px 12px;font-size:12px;font-weight:900;white-space:nowrap;box-shadow:0 2px 8px rgba(90,60,0,.35);animation:piLvPulse 2.6s ease-in-out infinite}
.pi-lvbadge.ready{background:linear-gradient(135deg,#ffd98a,#ff9d3d)!important;box-shadow:0 0 0 3px rgba(255,157,61,.45),0 2px 10px rgba(90,60,0,.4)}
@keyframes piLvPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.04)}}
.pi-lvbar{display:inline-block;width:64px;height:8px;background:rgba(255,252,243,.55);border-radius:999px;overflow:hidden;box-shadow:inset 0 1px 3px rgba(60,40,10,.25)}
.pi-lvbar i{display:block;height:100%;background:linear-gradient(90deg,#f6c95c,#ff9d3d);border-radius:999px;transition:width .4s}

/* ==================== v0822 个人岛动效包：落位弹跳 / 飘字 / 波浪欢呼 / 主题粒子 / 昼夜星星 / 施工浮标 / 扩格浮现 ==================== */
/* 落位弹跳（摆装饰/盖建筑/搬位/邀居民）：复用大世界 m21bldpop */
.pi-pop{animation:m21bldpop .55s cubic-bezier(.34,1.56,.64,1);z-index:6}
/* 定点飘字（互动 ❤️+心情 / 波浪欢呼 emoji）：挂在 .pi-map 内，绝对定位于居民旁 */
.pi-float{position:absolute;z-index:8;font-size:15px;font-weight:900;color:#e2596b;text-shadow:0 1px 2px #fff,0 0 6px rgba(255,255,255,.85);pointer-events:none;white-space:nowrap;animation:piFloatUp 1.25s ease-out both}
@keyframes piFloatUp{0%{opacity:0;transform:translateY(8px) scale(.6)}18%{opacity:1;transform:translateY(-4px) scale(1.15)}100%{opacity:0;transform:translateY(-48px) scale(1)}}
/* 全岛波浪欢呼（聚会/神龛）：居民依次起跳（inline animation 挂 keyframes） */
@keyframes piCheer{0%,100%{transform:translateY(0) scale(1,1)}30%{transform:translateY(-11px) scale(.95,1.07)}55%{transform:translateY(0) scale(1.08,.92)}75%{transform:translateY(-4px) scale(1)}}
/* 🍼 一一专属蹦跳（比普通居民 piResBob 更活泼，带挤压回弹） */
.pi-res.pi-yiyi{animation:piYiyiHop 1.9s ease-in-out infinite}
@keyframes piYiyiHop{0%,100%{transform:translateY(0) scale(1,1)}28%{transform:translateY(-6px) scale(.96,1.06)}52%{transform:translateY(0) scale(1.07,.93)}72%{transform:translateY(-3px) scale(1)}}
/* 主题氛围粒子：樱花瓣飘落 / 萤火虫 / 星星闪烁（位置与时延由 JS 内联错开） */
.pi-air i.pi-petal{position:absolute;top:-6vh;font-style:normal;font-size:17px;opacity:.92;animation:piPetalFall 9s linear infinite;filter:drop-shadow(0 1px 2px rgba(170,90,130,.3))}
@keyframes piPetalFall{0%{transform:translateY(-4vh) rotate(0) translateX(0)}25%{transform:translateY(24vh) rotate(130deg) translateX(18px)}50%{transform:translateY(50vh) rotate(250deg) translateX(-14px)}75%{transform:translateY(77vh) rotate(370deg) translateX(16px)}100%{transform:translateY(106vh) rotate(480deg) translateX(-10px)}}
.pi-air i.pi-firefly{position:absolute;width:5px;height:5px;border-radius:50%;background:#f4ffb8;box-shadow:0 0 7px 2px rgba(216,255,150,.85);opacity:0;animation:piFly 5.6s ease-in-out infinite}
@keyframes piFly{0%,100%{opacity:0;transform:translate(0,0)}15%{opacity:.95;transform:translate(4px,-8px)}35%{opacity:.35;transform:translate(12px,-16px)}55%{opacity:.9;transform:translate(-6px,-9px)}75%{opacity:.4;transform:translate(-13px,-4px)}90%{opacity:.85;transform:translate(5px,-15px)}}
.pi-air i.pi-tw{position:absolute;font-style:normal;font-size:22px;color:#eef2ff;opacity:.85;text-shadow:0 0 10px rgba(190,215,255,.95);animation:piTw 3.4s ease-in-out infinite}
@keyframes piTw{0%,100%{opacity:.22;transform:scale(.85)}50%{opacity:1;transform:scale(1.12)}}
/* 夜间不再把星星整体 display:none：.pi-tw 亮着闪（覆盖 .pi-night .pi-air i{display:none}） */
.pi-night .pi-air i.pi-tw{display:block}
/* 填海施工浮标：岛缘 🌢 波浪上下颠簸，提示这边正在长新地 */
.pi-map.pi-building::after{content:"🌊";position:absolute;right:2px;top:34%;font-size:20px;line-height:1;pointer-events:none;z-index:3;animation:piBuoy 2.2s ease-in-out infinite;filter:drop-shadow(0 2px 3px rgba(15,60,90,.45))}
@keyframes piBuoy{0%,100%{transform:translateY(0) rotate(-7deg)}50%{transform:translateY(-6px) rotate(7deg)}}
/* 填海完工新格错峰浮现（animation-delay 内联按 (x+y) 错开） */
.pi-cell2.pi-newcell{animation:piCellIn .5s cubic-bezier(.34,1.4,.64,1) both}
@keyframes piCellIn{from{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}
/* 进岛入场：整页轻微放大淡入（每次 openPersonalIsland 一次性） */
.pi-page.pi-enter{animation:piEnter .34s ease-out}
@keyframes piEnter{from{opacity:0;transform:scale(.965)}to{opacity:1;transform:scale(1)}}
/* 升级仪式：等级徽章爆点放大回弹（覆盖常态 piLvPulse 一瞬） */
.pi-lvbadge.pi-burst{animation:piBadgeBurst 1.1s cubic-bezier(.34,1.56,.64,1)}
@keyframes piBadgeBurst{0%{transform:scale(1)}28%{transform:scale(1.55) rotate(6deg)}46%{transform:scale(.94)}64%{transform:scale(1.22) rotate(-3deg)}100%{transform:scale(1)}}
/* 升级仪式彩带：复用大世界 m21confall，时长/左偏/字号 JS 内联随机 */
.pi-confetti{position:absolute;top:-6vh;pointer-events:none;animation:m21confall linear both}
/* 红点脉冲：任务/入口红点出现时呼吸提醒（复用 scDotPulse） */
#islandAgendaDot,#islandDot{animation:scDotPulse 2.2s ease-in-out infinite}
/* v0822 动效降级：眩晕敏感用户全关（粒子隐藏、动画归零），与上方旧降级块互补 */
@media (prefers-reduced-motion: reduce){
  .pi-res.pi-yiyi{animation:none}
  .pi-pop,.pi-newcell,.pi-page.pi-enter,.pi-lvbadge.pi-burst,#islandAgendaDot,#islandDot{animation:none!important}
  .pi-float,.pi-confetti,.pi-air .pi-petal,.pi-air .pi-firefly,.pi-air .pi-tw,.pi-map.pi-building::after{display:none}
}
/* ==================== v0822-2 体验补完：渡船过渡 / 模式退出 chip / celebration 弹入 ==================== */
/* 岛间渡船：我的岛 ↔ TA 的岛，🚢 横渡 0.95s（600ms 处换岛，像靠岸） */
.pi-boat{position:absolute;inset:0;z-index:9;pointer-events:none;overflow:hidden}
.pi-boat i{position:absolute;bottom:32%;left:0;font-size:44px;font-style:normal;opacity:0;filter:drop-shadow(0 3px 5px rgba(15,60,90,.4))}
.pi-boat.sail i{opacity:1;animation:piSail .95s ease-in-out forwards}
@keyframes piSail{0%{transform:translateX(-25vw) translateY(0) rotate(-3deg)}25%{transform:translateX(20vw) translateY(-6px) rotate(3deg)}50%{transform:translateX(60vw) translateY(0) rotate(-2deg)}75%{transform:translateX(100vw) translateY(-5px) rotate(2deg)}100%{transform:translateX(130vw) translateY(0) rotate(0)}}
/* 布置模式统一退出 chip（移动/升级/建造/盖小窝/选装饰时出现） */
.pi-exit{position:absolute;left:50%;bottom:calc(168px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:4;border:0;border-radius:999px;background:rgba(42,37,32,.72);color:#ffe9b8;padding:6px 14px;font-size:11px;font-weight:900;box-shadow:0 2px 7px rgba(60,40,10,.25);cursor:pointer}
.pi-exit:active{transform:translateX(-50%) translateY(2px)}
/* celebration 横幅弹入（保留 translateX(-50%) 居中定位不被 scale 吃掉） */
.pi-build-tip.pi-celebrate{animation:piTipPop .55s cubic-bezier(.34,1.56,.64,1) both}
@keyframes piTipPop{0%{transform:translateX(-50%) scale(.6);opacity:0}70%{transform:translateX(-50%) scale(1.08);opacity:1}100%{transform:translateX(-50%) scale(1)}}
@media (prefers-reduced-motion: reduce){
  .pi-boat{display:none}
  .pi-build-tip.pi-celebrate{animation:none}
}

/* ==================== 天空事件（低概率全岛奇观：流星雨/萤火虫夜/双彩虹） ==================== */
.pi-air i.pi-meteor{position:absolute;top:5%;left:-8%;font-style:normal;font-size:22px;opacity:0;filter:drop-shadow(0 0 8px rgba(200,220,255,.9));animation:piMeteor 3s ease-in infinite}
@keyframes piMeteor{0%{opacity:0;transform:translate(0,0) rotate(-32deg)}5%{opacity:1}32%{opacity:1;transform:translate(112vw,46vh) rotate(-32deg)}34%,100%{opacity:0;transform:translate(112vw,46vh) rotate(-32deg)}}
.pi-air i.pi-rainbow{position:absolute;top:7%;left:50%;transform:translateX(-50%);font-style:normal;font-size:46px;opacity:.95;animation:piBob 4s ease-in-out infinite;filter:drop-shadow(0 0 16px rgba(255,220,160,.75))}
/* 全岛氛围：夜空加深 / 暮光 / 雨后暖光（叠加在主题之上，事件当天有效） */
.pi-page.pi-sky-meteor .pi-view{background:linear-gradient(180deg,rgba(16,22,44,.52),rgba(16,22,44,0) 46%)}
.pi-page.pi-sky-meteor .pi-map{filter:saturate(.92) brightness(.94)}
.pi-page.pi-sky-firefly .pi-view{background:linear-gradient(180deg,rgba(44,52,18,.30),rgba(44,52,18,0) 42%)}
.pi-page.pi-sky-rainbow .pi-view{background:linear-gradient(180deg,rgba(255,214,140,.28),rgba(255,214,140,0) 44%)}
/* 事件横幅：独立 top 偏移避免与施工提示/celebration 叠位 */
.pi-build-tip.pi-sky-tip{top:calc(96px + env(safe-area-inset-top,0px));border:1px solid rgba(122,162,247,.55);background:linear-gradient(90deg,rgba(38,52,110,.92),rgba(64,84,160,.85));animation:piTipPop .55s cubic-bezier(.34,1.56,.64,1) both;white-space:normal;line-height:1.5}
.pi-build-tip.pi-sky-tip .btn{margin:0 2px;padding:3px 10px;font-size:11px}
.pi-build-tip.pi-sky-tip .pi-sky-done{color:#9fd0ff}
.pi-build-tip.pi-sky-tip .pi-sky-other{color:#d9b8f5;font-size:10px;font-weight:700}
@media (prefers-reduced-motion: reduce){
  .pi-air .pi-meteor{display:none}
  .pi-air i.pi-rainbow{animation:none}
  .pi-build-tip.pi-sky-tip{animation:none}
}
/* ==================== v0822-3 体验第三批:漂流瓶码头标记 / 盖章卡 / 灯塔灯条 / 换季双烛 / 骨架屏 ==================== */
/* 漂流瓶:海上漂(慢颠簸) / 到岸(✨ 闪烁招手),贴在码头右侧 */
.pi-bottle{position:absolute;z-index:5;border:0;background:transparent;padding:0;cursor:pointer;pointer-events:auto;animation:piBuoy 2.6s ease-in-out infinite}
.pi-bottle span{font-size:22px;line-height:1;filter:drop-shadow(0 2px 3px rgba(15,60,90,.45))}
.pi-bottle.sea{opacity:.75}
.pi-bottle.here i{position:absolute;top:-9px;right:-9px;font-style:normal;font-size:12px;animation:piGlint 1.4s ease-in-out infinite}
@keyframes piGlint{0%,100%{opacity:.35;transform:scale(.8) rotate(-8deg)}50%{opacity:1;transform:scale(1.25) rotate(10deg)}}
/* 集章盖章卡:大数字 + 进度条 + 斜盖红章 */
.pi-stamp-head{display:flex;align-items:center;justify-content:center;gap:10px;padding:6px 0 2px}
.pi-stamp-big{font-size:30px;line-height:1}.pi-stamp-big b{font-size:34px;color:#c96f4a;margin-left:4px}
.pi-stamp-bar{height:9px;background:#eee2c9;border-radius:999px;overflow:hidden;margin:8px 12px 4px}
.pi-stamp-bar i{display:block;height:100%;background:linear-gradient(90deg,#f6c95c,#e0788a);border-radius:999px;transition:width .5s}
.pi-stamp-row{display:flex;gap:8px;flex-wrap:wrap;justify-content:center;padding:10px 0 2px}
.pi-stamp-slot{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;width:58px;padding:8px 0 6px;background:#fffdf7;border:1px dashed rgba(179,146,106,.5);border-radius:10px}
.pi-stamp-slot b{font-size:24px;line-height:1;filter:grayscale(1);opacity:.45}
.pi-stamp-slot small{font-size:9px;color:#9a7f56;font-weight:800}
.pi-stamp-slot em{font-style:normal;font-size:9px;color:#c9c0ad;font-weight:900}
.pi-stamp-slot.lit b{filter:none;opacity:1;transform:rotate(-12deg) scale(1.08)}
.pi-stamp-slot.lit{border-style:solid;border-color:rgba(201,111,74,.55)}
.pi-stamp-slot.lit em{color:#c96f4a}
/* 灯塔灯条:近 14 晚,来过 🏮 亮橙,没来 🕯️ 灰 */
.pi-lh-strip{display:flex;gap:6px;overflow-x:auto;padding:8px 2px 4px;-webkit-overflow-scrolling:touch}
.pi-lh-day{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:34px;padding:6px 2px 5px;border-radius:9px;background:#f6f0df}
.pi-lh-day b{font-size:17px;line-height:1}
.pi-lh-day small{font-size:8.5px;font-weight:800;color:#9a7f56;white-space:nowrap}
.pi-lh-day.lit{background:linear-gradient(180deg,#ffe9c4,#ffd98e);box-shadow:0 0 8px rgba(240,170,60,.35)}
.pi-lh-day.lit small{color:#8a5a10}
/* 换季双烛:点亮的火苗摇曳(复用炼金 alcFlame) */
.pi-candles{display:flex;justify-content:center;gap:26px;padding:12px 0 4px}
.pi-candle{display:flex;flex-direction:column;align-items:center;gap:3px}
.pi-candle b{font-size:34px;line-height:1;filter:grayscale(.9);opacity:.6}
.pi-candle small{font-size:11px;font-weight:900;color:#6b5335}
.pi-candle.lit b{filter:none;opacity:1;animation:alcFlame 1.6s ease-in-out infinite}
.pi-candle.lit small{color:#c96f4a}
/* 首载骨架屏:三块 shimmer */
.pi-skeleton{padding:96px 22px 140px;display:flex;flex-direction:column;gap:14px}
.pi-skeleton i{display:block;border-radius:14px;background:linear-gradient(100deg,rgba(255,252,243,.45) 30%,rgba(255,255,255,.85) 50%,rgba(255,252,243,.45) 70%);background-size:200% 100%;animation:piShimmer 1.3s linear infinite}
.pi-skeleton i:nth-child(1){height:120px}.pi-skeleton i:nth-child(2){height:52px;width:72%}.pi-skeleton i:nth-child(3){height:52px;width:54%}
@keyframes piShimmer{from{background-position:120% 0}to{background-position:-80% 0}}
@media (prefers-reduced-motion: reduce){
  .pi-bottle,.pi-bottle.here i,.pi-candle.lit b,.pi-skeleton i{animation:none}
  .pi-stamp-bar i{transition:none}
}
/* ==================== 🏮 v0822-4 深夜食堂动效层：火候手感 / 结算弹跳 / 深夜氛围 ==================== */
/* 头部灯笼：±3° 摇摆（深夜身份感，单元素） */
@keyframes dnLantern{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}
.dn-lantern{display:inline-block;transform-origin:50% 10%;animation:dnLantern 3.2s ease-in-out infinite}
/* 火候条：金区呼吸光（眼睛的落点） */
@keyframes dnGoldPulse{0%,100%{box-shadow:0 0 5px 1px rgba(255,216,108,.35)}50%{box-shadow:0 0 14px 3px rgba(255,171,66,.8)}}
.dn-gold{animation:dnGoldPulse 1.3s ease-in-out infinite}
/* 最后 4 秒：底色红脉冲（危险区） */
@keyframes dnDanger{0%,100%{background:#3b3040}50%{background:#5c2a2c}}
.dn-danger{animation:dnDanger .55s ease-in-out infinite}
/* 起锅定格：判定印章盖下来 */
@keyframes dnStamp{0%{opacity:0;transform:translate(-50%,-50%) scale(2.4)}45%{opacity:1;transform:translate(-50%,-50%) scale(.9)}62%{transform:translate(-50%,-50%) scale(1.08)}100%{opacity:1;transform:translate(-50%,-50%) scale(1)}}
.dn-stamp{position:absolute;left:50%;top:44%;z-index:3;font-size:29px;font-weight:900;white-space:nowrap;transform:translate(-50%,-50%);animation:dnStamp .38s cubic-bezier(.2,1.2,.4,1) both;text-shadow:0 2px 12px rgba(0,0,0,.65)}
/* 起锅命中环：锚在针的位置（复用 fxRing 关键帧做缩放消散） */
.dn-hitring{position:absolute;top:50%;width:16px;height:16px;border-radius:50%;border:3px solid rgba(255,229,168,.95);animation:fxRing .7s ease-out both}
/* 连击赌注火焰 */
@keyframes dnFlame{0%,100%{transform:scale(1) rotate(-2deg)}30%{transform:scale(1.14) rotate(2.5deg)}60%{transform:scale(.94) rotate(-1deg)}}
.dn-flame{display:inline-block;animation:dnFlame .85s ease-in-out infinite}
/* 客人卡入场（只在客席变化的那次渲染播放，由 JS 控制） */
@keyframes dnCardIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.dn-cardin{animation:dnCardIn .38s ease both}
/* 已招待：人走了的灰度感 */
.dn-served{filter:grayscale(.55);opacity:.62}
/* 好感条增长 + 跨门槛心跳 */
@keyframes dnFavGrow{from{width:0}}
.dn-favgrow{animation:dnFavGrow .7s cubic-bezier(.25,1,.35,1) both}
@keyframes dnBeat{0%,100%{transform:scale(1)}25%{transform:scale(1.4)}45%{transform:scale(.92)}65%{transform:scale(1.18)}}
.dn-beat{display:inline-block;animation:dnBeat .7s ease both .5s}
/* 研发翻车：一缕烟 */
@keyframes dnSmoke{0%{opacity:0;transform:translateY(8px) scale(.7)}25%{opacity:.9}100%{opacity:0;transform:translateY(-36px) scale(1.6)}}
.dn-smoke{display:inline-block;animation:dnSmoke 1.7s ease-out both}
/* 线索打字机光标 */
@keyframes dnCaret{0%,45%{opacity:1}50%,100%{opacity:0}}
.dn-caret{display:inline-block;width:2px;height:1em;background:#e8b46a;margin-left:1px;vertical-align:-2px;animation:dnCaret 1s steps(1) infinite}
/* 弹窗/卡内按压反馈（diner 作用域） */
.dn-dlg .btn:active,.dn-press:active{transform:scale(.96)}
/* 新故事翻卡复用 rvFlip；结算数字复用 fxNumPop；新菜卡复用 cbPop；纪念品金框复用 vipGlow */
.dn-souv{animation:vipGlow 1.6s ease infinite}
/* 动效降级：与岛上一致，粒子隐藏、循环动画归零（一次性揭示类压到瞬时） */
@media (prefers-reduced-motion: reduce){
  .dn-lantern,.dn-gold,.dn-danger,.dn-flame,.dn-souv{animation:none}
  .dn-air .pi-firefly,.dn-air .pi-tw{display:none}
  .dn-cardin,.dn-favgrow,.dn-beat,.dn-smoke,.dn-stamp,.dn-hitring{animation-duration:.01s}
}

/* ===== 🎬 兔兔高频游戏动效层 v0822-5（farm/inn/teashop，复用 fx 粒子体系） ===== */
/* 🎯 定点飘字（fxGoldAt）：从元素中心向上飘出渐隐 */
.fxFloat{position:absolute;left:50%;top:34%;font-size:14px;font-weight:900;color:#c8a24a;text-shadow:0 1px 2px rgba(255,255,255,.9),0 0 6px rgba(255,224,130,.65);white-space:nowrap;animation:fxFloatUp 1.3s cubic-bezier(.2,.7,.3,1) both;pointer-events:none}
@keyframes fxFloatUp{0%{opacity:0;transform:translate(-50%,4px) scale(.6)}18%{opacity:1;transform:translate(-50%,-12px) scale(1.12)}70%{opacity:1}100%{opacity:0;transform:translate(-50%,-46px) scale(1)}}
/* 💧 浇水：水滴落下 + 复用 fxRing 涟漪 */
.fxDrop{position:absolute;top:22%;font-size:14px;animation:fxDropIn .7s ease-in both;pointer-events:none}
@keyframes fxDropIn{0%{opacity:0;transform:translateY(-14px)}30%{opacity:1}100%{opacity:0;transform:translateY(10px)}}
/* 🌾 农场全熟金浪：一道高光从左到右扫过整片地块（只在「刚刚全熟」时触发一次） */
#fmPlots.fmGoldWave{position:relative}
#fmPlots.fmGoldWave::after{content:'';position:absolute;inset:-4px;pointer-events:none;border-radius:16px;background:linear-gradient(100deg,transparent 32%,rgba(255,214,102,.3) 45%,rgba(255,243,190,.55) 50%,rgba(255,214,102,.3) 55%,transparent 68%);transform:translateX(-130%) skewX(-8deg);animation:fmGoldSweep 1.5s ease .05s both}
@keyframes fmGoldSweep{0%{transform:translateX(-130%) skewX(-8deg)}100%{transform:translateX(130%) skewX(-8deg)}}
/* 💰 客栈宿金入袋：进账那一刻钱数字弹跳一下 */
#innCoins.pulse .n{animation:innCoinPop .75s cubic-bezier(.2,.85,.3,1) both}
@keyframes innCoinPop{0%{transform:scale(1)}28%{transform:scale(1.3) rotate(-4deg)}56%{transform:scale(.92) rotate(3deg)}100%{transform:scale(1)}}
/* 🏮 候客厅满：门脸挂只灯笼摇摆发光 + 呼吸光晕，催你快去分房 */
.inn-hero.full{animation:innFullGlow 2s ease-in-out infinite}
@keyframes innFullGlow{0%,100%{box-shadow:0 0 0 0 rgba(217,138,58,0)}50%{box-shadow:0 0 18px 3px rgba(217,138,58,.4)}}
.inn-hero .inn-fullan{position:absolute;top:8px;right:16px;font-size:24px;transform-origin:50% -4px;animation:innLanSwing 1.5s ease-in-out infinite;filter:drop-shadow(0 0 9px rgba(235,150,70,.8));pointer-events:none;z-index:1}
@keyframes innLanSwing{0%,100%{transform:rotate(8deg)}50%{transform:rotate(-8deg)}}
/* 🛎️ 新客进房 pop-in + 星光（只对「这一帧新出现」的客人触发） */
.inn-gorb.new{animation:innGuestIn .6s cubic-bezier(.2,1.5,.4,1) both}
@keyframes innGuestIn{0%{opacity:0;transform:scale(.2) translateY(16px)}62%{opacity:1;transform:scale(1.14) translateY(-3px)}100%{opacity:1;transform:scale(1) translateY(0)}}
.inn-gorb.new::after{content:'✨';position:absolute;top:-9px;right:-9px;font-size:12px;animation:fxNumPop .7s .3s ease both}
/* ☕ 茶馆出杯区：大杯持续冒热气（纯 CSS 循环，30s 重渲染会重启但不可察） */
.tsSteam{position:absolute;top:-4px;width:7px;height:13px;border-radius:8px;background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.9));filter:blur(2px);pointer-events:none;animation:tsSteamUp 2.8s ease-in-out infinite}
.tsSteam.s1{left:34%}
.tsSteam.s2{left:50%;animation-delay:.95s}
.tsSteam.s3{left:64%;animation-delay:1.9s}
@keyframes tsSteamUp{0%{opacity:0;transform:translateY(8px) scaleX(.7)}30%{opacity:.85}100%{opacity:0;transform:translateY(-24px) scaleX(1.4)}}
/* 动效降级：与 diner 层一致 */
@media (prefers-reduced-motion: reduce){
  .fxFloat,.fxDrop{animation-duration:.01s}
  #fmPlots.fmGoldWave::after{animation:none;opacity:0}
  #innCoins.pulse .n,.inn-gorb.new,.inn-gorb.new::after{animation-duration:.01s}
  .inn-hero.full,.inn-hero .inn-fullan{animation:none}
  .tsSteam{display:none}
}
