/* Isolated weekly quota panel. */
.vq-panel{--vq-ink:#37352f;--vq-muted:#89867c;--vq-line:#7c756126;--vq-paper:#f7f4ec;--vq-well:#e9e4db;--vq-accent:#b69057;color:var(--vq-ink);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;width:100%;max-width:440px;margin:0 auto;padding:6px 0 18px}
.vq-panel[data-theme=dark]{--vq-ink:#ede9df;--vq-muted:#aba89d;--vq-line:#ddd3b825;--vq-paper:#282925;--vq-well:#33362f;--vq-accent:#d2b77f}
.vq-panel *{box-sizing:border-box}.vq-panel button{font:inherit}.vq-hero{position:relative;overflow:hidden;background:var(--vq-paper);border:1px solid var(--vq-line);border-radius:25px;padding:21px 18px 17px;box-shadow:0 6px 26px #29281705}
.vq-top{display:flex;justify-content:space-between;align-items:center;gap:8px}.vq-eyebrow{font-size:10px;letter-spacing:.12em;font-weight:500;color:var(--vq-muted)}
.vq-refresh{display:grid;place-items:center;width:31px;height:31px;padding:7px;border:1px solid var(--vq-line);border-radius:50%;background:transparent;color:var(--vq-muted);cursor:pointer}.vq-refresh svg{width:17px;height:17px}.vq-refresh:active{transform:scale(.92)}.vq-refresh:disabled{opacity:.6;cursor:wait}.vq-refresh:focus-visible,.vq-key:focus-visible{outline:2px solid var(--vq-accent);outline-offset:3px}.vq-refresh.is-refreshing svg{animation:vq-spin 1s linear infinite}
@keyframes vq-spin{to{transform:rotate(360deg)}}
.vq-label{margin-top:24px;font-size:12px;color:var(--vq-muted)}.vq-total{display:flex;align-items:baseline;gap:7px;margin-top:5px}.vq-number{font-size:clamp(48px,15vw,68px);line-height:1.12;letter-spacing:-.055em;font-weight:500;font-variant-numeric:tabular-nums}.vq-total>span{font-size:22px;color:var(--vq-muted);font-weight:300}.vq-mood{font-size:11px;line-height:1.7;margin:10px 0 23px;color:var(--vq-muted);min-height:19px}
.vq-scene{min-height:68px;pointer-events:none}.vq-scene[data-unknown=true]{opacity:.38}.vq-scale{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.02em;margin-top:9px;color:var(--vq-muted)}.vq-used{margin-top:19px;padding-top:14px;border-top:1px solid var(--vq-line);font-size:11px;color:var(--vq-muted);display:flex;justify-content:space-between}.vq-used b{font-variant-numeric:tabular-nums;color:var(--vq-ink);font-weight:500}.vq-meter{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}.vq-meter i{display:none}
.vq-reset{display:flex;gap:12px;align-items:flex-start;padding:23px 8px 20px;border-bottom:1px solid var(--vq-line)}.vq-tiny-icon{color:var(--vq-accent);font-size:24px;line-height:1.2}.vq-small-label{display:block;font-size:10px;color:var(--vq-muted)}.vq-countdown{display:block;margin-top:7px;font-size:20px;font-weight:450;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.vq-date{display:block;margin-top:7px;color:var(--vq-muted);font-size:10px}
.vq-five{padding:21px 8px 10px}.vq-five>div:first-child{display:flex;justify-content:space-between;gap:8px;font-size:11px}.vq-five-value{font-size:11px;font-weight:500;font-variant-numeric:tabular-nums}.vq-five-track{margin-top:13px;background:var(--vq-well);height:4px;border-radius:6px;overflow:hidden}.vq-five-track i{display:block;height:100%;width:calc(var(--quota,0)*100%);border-radius:inherit;background:var(--vq-accent);transition:width .7s cubic-bezier(.22,1,.36,1)}.vq-five-track[data-unknown=true] i{display:none}.vq-five-reset{display:block;margin-top:9px;color:var(--vq-muted);font-size:10px}
.vq-notice{font-size:11px;line-height:1.7;margin:15px 8px 7px;color:var(--vq-muted)}.vq-key{padding:8px 13px;border:1px solid var(--vq-line);color:var(--vq-ink);background:var(--vq-paper);border-radius:10px;margin:5px 8px;cursor:pointer}.vq-notice[hidden],.vq-key[hidden]{display:none!important}
.vq-sampled{font-size:9px;color:var(--vq-muted);margin:21px 8px 0;font-variant-numeric:tabular-nums}.vq-explain{font-size:10px;line-height:1.8;color:var(--vq-muted);margin:6px 8px 0}.vq-panel[data-stale=true] .vq-sampled{color:var(--vq-accent)}.vq-credits{font-size:9px;color:var(--vq-muted);margin:20px 8px 0;line-height:1.8}.vq-credits summary{cursor:pointer}.vq-credits a{color:inherit;text-underline-offset:3px}.vq-loading{font-size:12px;padding:20px 4px;color:var(--text,#777)}
.vq-scene-failed::after{content:'Clawd 稍后回来';display:block;text-align:center;font-size:11px;color:var(--vq-muted);padding:20px}.vq-scene-failed+ .vq-scale{display:none}
.vq-play{font-size:9px;color:var(--vq-muted);border:0;background:transparent;padding:0 6px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}.vq-play:focus-visible{outline:1px solid var(--vq-accent);outline-offset:4px;border-radius:3px}
@media(prefers-reduced-motion:reduce){.vq-panel *, .vq-panel *::before,.vq-panel *::after{animation:none!important;transition:none!important}}
/* 10-29 小克：草地版（quota-scene.js）。她说：把能量条删掉，换成同框的绿草地；Clawd 的小圆窝也去掉，让它在草地上跑。
   --p = 剩余/100。草地从 66px 开始（左边是 Clawd 的小别墅）；草和土的分界 = 66px + (100% - 66px) * p，僵尸的嘴对着它；
   分界右边被啃过的草变成土 = 用掉的额度，左边的绿草 = 还剩的额度，用完时一根不剩 */
.vq-scene{min-height:66px}
.vqz{--p:1;--vqz-crumb:#6fbf4a;position:relative;height:66px}
.vqz-lawn{position:absolute;left:66px;right:0;bottom:0;height:22px;border-radius:7px 7px 10px 10px;overflow:hidden;
  background:repeating-linear-gradient(90deg,#8ccd62 0 24px,#7cc053 24px 48px);
  box-shadow:inset 0 3px 0 rgba(255,255,255,.22),inset 0 -4px 0 rgba(70,48,28,.5);transition:filter .5s}
.vqz-lawn::after{content:'';position:absolute;inset:0;pointer-events:none}
.vq-panel[data-theme=dark] .vqz-lawn{filter:brightness(.82) saturate(.9)}
.vqz-dirt{position:absolute;top:0;bottom:0;right:0;left:calc(100% * var(--p));transition:opacity .4s;
  background:radial-gradient(rgba(60,38,20,.32) 1.2px,transparent 1.6px) 0 0/9px 7px,repeating-linear-gradient(90deg,#a57c56 0 24px,#986f4b 24px 48px)}
.vqz-dirt::before{content:'';position:absolute;top:0;bottom:0;left:-6px;width:12px;   /* 啃出来的豁口 */
  background:radial-gradient(circle at 50% 28%,#a57c56 4.5px,transparent 5px),radial-gradient(circle at 50% 74%,#a57c56 3.5px,transparent 4px)}
.vqz-shine{position:absolute;inset:0;opacity:0;background:linear-gradient(105deg,transparent 30%,rgba(255,246,200,.9) 45%,transparent 60%) no-repeat;background-size:250% 100%}
.vqz-sparks{position:absolute;inset:0;z-index:2;pointer-events:none;opacity:0;transition:opacity .4s}
.vqz-sparks i{position:absolute;width:8px;height:8px;background:#fff6c8;transform:scale(0);
  clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);animation:vqz-twinkle 1.8s ease-in-out infinite}
.vqz-sparks i:nth-child(1){left:12%;top:38%}.vqz-sparks i:nth-child(2){left:30%;top:70%;width:6px;height:6px;animation-delay:.5s}
.vqz-sparks i:nth-child(3){left:47%;top:30%;animation-delay:1s}.vqz-sparks i:nth-child(4){left:62%;top:74%;width:6px;height:6px;animation-delay:.3s}
.vqz-sparks i:nth-child(5){left:77%;top:44%;animation-delay:1.3s}
/* 满：草地上金光扫过 + 星星 */
.vqz[data-stage=gold] .vqz-lawn{box-shadow:inset 0 3px 0 rgba(255,255,255,.3),inset 0 -4px 0 rgba(70,48,28,.5),0 0 14px rgba(240,190,70,.55)}
.vqz[data-stage=gold] .vqz-lawn::after{background:linear-gradient(100deg,rgba(255,214,90,0) 20%,rgba(255,214,90,.45) 50%,rgba(255,214,90,0) 80%);background-size:200% 100%;animation:vqz-gold 3.4s linear infinite}
.vqz[data-stage=gold] .vqz-shine{opacity:1;animation:vqz-sweep 2.6s ease-in-out infinite}
.vqz[data-stage=gold] .vqz-sparks{opacity:1}
.vqz[data-stage=gold] .vqz-dirt,.vqz[data-stage=unknown] .vqz-dirt{opacity:0}
/* 越来越少：草变干 → 红色一闪一闪 */
.vqz[data-stage=hungry]{--vqz-crumb:#a9b24a}
.vqz[data-stage=hungry] .vqz-lawn{filter:saturate(.72) hue-rotate(-22deg) brightness(1.03)}
.vqz[data-stage=danger]{--vqz-crumb:#c2a64a}
.vqz[data-stage=danger] .vqz-lawn::after{animation:vqz-redpulse 1.2s ease-in-out infinite}
/* Clawd 的小别墅画在 Clawd 的画布上；这里只是别墅脚下的一小块石板地 */
.vqz-yard{position:absolute;left:0;bottom:0;z-index:1;width:70px;height:11px;border-radius:9px 4px 4px 9px;
  background:repeating-linear-gradient(90deg,#dcd3c5 0 11px,#c9bfb0 11px 12px);box-shadow:inset 0 2px 0 rgba(255,255,255,.35),inset 0 -3px 0 rgba(90,80,70,.3)}
.vq-panel[data-theme=dark] .vqz-yard{filter:brightness(.8)}
/* Clawd：引擎直接画在草地上方这张透明画布上（一格 3px），脚踩在草里 */
.vqz-clawd{position:absolute;left:0;bottom:8px;z-index:3;image-rendering:pixelated;pointer-events:none}
.vqz-clawd.shake{animation:vqz-shake .5s}
/* 僵尸：嘴对着草地被啃的那条边 */
.vqz-zombie{position:absolute;bottom:3px;z-index:4;width:56px;height:56px;left:clamp(62px,calc(66px + (100% - 66px) * var(--p) - 19px),calc(100% - 56px));opacity:0;transition:opacity .4s}
.vqz.is-ready .vqz-zombie{opacity:1}
.vqz.is-ready[data-stage=unknown] .vqz-zombie{opacity:.35}
.vqz-z-hop,.vqz-z-walk{width:100%;height:100%;transform-origin:50% 90%}
.vqz-z-walk{animation:vqz-bob 1.9s ease-in-out infinite alternate}
.vqz-z-walk svg{display:block;width:100%;height:100%;overflow:visible}
.vqz[data-stage=sneak] .vqz-z-walk{animation-duration:2.8s}
.vqz-zombie.walking .vqz-z-walk{animation:vqz-shamble .5s ease-in-out infinite alternate}
.vqz-zombie.flee .vqz-z-walk{animation-duration:.28s}
.vqz-zombie.lunge .vqz-z-hop{animation:vqz-lunge .7s cubic-bezier(.3,1.4,.5,1)}
.vqz-zombie.startle .vqz-z-hop{animation:vqz-startle 1.3s cubic-bezier(.2,.9,.3,1)}
.vqz-zombie.bigbite .vqz-z-hop{animation:vqz-bigbite .75s ease-in-out}
.vqz-zombie.flinch .vqz-z-hop{animation:vqz-flinch .9s cubic-bezier(.2,.9,.3,1)}
/* 僵尸自带的零件，默认收着，按场景打开（胳膊见 zombie-arms.js，一直在） */
.vqz .eg-z-speed,.vqz .eg-z-scream,.vqz .eg-z-aaa,.vqz .eg-z-bang,.vqz .eg-z-sweat,.vqz .eg-z-sweat2,.vqz .eg-z-lids,.vqz .eg-z-smear{opacity:0;transition:opacity .25s}
.vqz .eg-z-burp{opacity:0;visibility:hidden}
.vqz .eg-z-mouth{transform-box:fill-box;transform-origin:50% 0;transition:opacity .2s}
.vqz .eg-z-pupil{transform-box:fill-box;transform-origin:center;transition:transform .3s}
.vqz .eg-z-scream{transform-box:fill-box;transform-origin:50% 0;animation:eg-yell .22s ease-in-out infinite alternate}
.vqz .eg-z-aaa{transform-box:fill-box;transform-origin:80% 100%;animation:eg-wig .2s steps(2) infinite}
.vqz .eg-z-sweat{transform-box:fill-box;transform-origin:50% 0;animation:eg-drip 1.4s ease-in infinite}
.vqz .eg-z-bcloud{transform-box:fill-box;transform-origin:80% 100%}
.vqz .eg-z-bp{transform-box:fill-box;transform-origin:center}
.vqz-zombie.chomp .eg-z-mouth{animation:vqz-chomp .22s ease-in-out 4}
.vqz-zombie.scream .eg-z-scream,.vqz-zombie.scream .eg-z-aaa,.vqz-zombie.flee .eg-z-scream,.vqz-zombie.flee .eg-z-speed{opacity:1}
.vqz-zombie.scream .eg-z-mouth,.vqz-zombie.flee .eg-z-mouth{opacity:0}
.vqz-zombie.startle .eg-z-bang,.vqz-zombie.startle .eg-z-sweat2,.vqz-zombie.flinch .eg-z-sweat2,.vqz-zombie.flinch .eg-z-sweat{opacity:1}
.vqz-zombie.startle .eg-z-pupil{transform:scale(.55)}
.vqz[data-stage=gold] .eg-z-sweat{opacity:1}
.vqz[data-stage=gold] .eg-z-pupil{transform:scale(.6)}
.vqz[data-stage=sneak] .eg-z-lids{opacity:1}
.vqz[data-stage=empty] .eg-z-smear{opacity:1}
.vqz-zombie.burp .eg-z-burp{opacity:1;visibility:visible}
.vqz-zombie.burp .eg-z-bcloud{animation:eg-bcloud .97s cubic-bezier(.2,.8,.3,1) .08s both}
.vqz-zombie.burp .eg-z-bp{animation:eg-bpuff .9s ease-out both}
/* 啃下来的草渣 */
.vqz-crumbs{position:absolute;bottom:15px;left:calc(66px + (100% - 66px) * var(--p));z-index:5;width:0;height:0}
.vqz-crumbs i{position:absolute;left:0;top:0;width:var(--s,3px);height:var(--s,3px);border-radius:1px;background:var(--vqz-crumb);animation:vqz-crumb .75s cubic-bezier(.2,.7,.4,1) forwards}
@keyframes vqz-gold{from{background-position:0 0}to{background-position:200% 0}}
@keyframes vqz-sweep{from{background-position:150% 0}to{background-position:-100% 0}}
@keyframes vqz-twinkle{0%,100%{transform:scale(0) rotate(0)}45%{transform:scale(1) rotate(45deg)}70%{transform:scale(.6) rotate(70deg)}}
@keyframes vqz-redpulse{50%{background:rgba(226,90,80,.3)}}
@keyframes vqz-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1.5px)}80%{transform:translateX(1px)}}
@keyframes vqz-bob{from{transform:translateY(.5px) rotate(-2deg)}to{transform:translateY(-1.5px) rotate(2deg)}}
@keyframes vqz-shamble{from{transform:translateY(0) rotate(-6deg)}to{transform:translateY(-3px) rotate(4deg)}}
@keyframes vqz-lunge{35%{transform:translateX(-7px) rotate(-10deg)}100%{transform:none}}
@keyframes vqz-startle{15%{transform:translate(10px,-9px) rotate(8deg)}30%{transform:translate(14px,0) rotate(3deg)}100%{transform:none}}
@keyframes vqz-bigbite{30%{transform:translateX(-3px) rotate(-8deg)}60%{transform:translateX(-2px) rotate(-5deg)}100%{transform:none}}
@keyframes vqz-flinch{18%{transform:translate(6px,-3px) rotate(6deg)}42%{transform:translate(6px,0) rotate(2deg)}100%{transform:none}}
@keyframes vqz-chomp{50%{transform:scaleY(.38)}}
@keyframes vqz-crumb{0%{transform:translate(0,0) rotate(0);opacity:1}45%{transform:translate(calc(var(--dx) * .6),var(--dy)) rotate(90deg)}100%{transform:translate(var(--dx),12px) rotate(200deg);opacity:0}}
@keyframes eg-yell{to{transform:scaleY(.88)}}
@keyframes eg-wig{50%{transform:rotate(-4deg) translateY(-.4px)}}
@keyframes eg-drip{0%,40%{transform:translateY(0)}100%{transform:translateY(1.2px) scaleY(1.06)}}
@keyframes eg-bcloud{from{transform:translate(3px,6px) scale(.25);opacity:0}22%{transform:translate(0,0) scale(1.08);opacity:1}34%{transform:scale(1)}78%{transform:translate(0,-1px);opacity:1}to{transform:translate(-.5px,-3px) scale(1.04);opacity:0}}
@keyframes eg-bpuff{from{transform:scale(.2);opacity:0}18%{transform:scale(1.1);opacity:1}70%{opacity:.9}to{transform:translate(-1px,-2px) scale(.8);opacity:0}}
