/* ===== 登录页猫咪（login-cat）v203 =====
   总后台 / 商户后台登录页共用；主题色由页面覆盖 CSS 变量 */
.catlogin-wrap{
  --cl-primary:#667eea;
  --cl-primary2:#764ba2;
  --cl-fur:#f6a94a;        /* 毛色 */
  --cl-fur-dark:#e08a2e;   /* 深毛色（耳/尾/斑纹） */
  --cl-belly:#ffe3c2;      /* 肚皮/脸中线浅色 */
  --cl-inner:#ffb3c1;      /* 耳内/肉垫粉 */
  position:fixed;inset:0;display:flex;justify-content:center;align-items:center;
  padding:16px;overflow:hidden;
  background:linear-gradient(135deg,var(--cl-primary),var(--cl-primary2));
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
}
/* 背景漂浮装饰：泡泡 + 猫爪印 */
.catlogin-bg{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.catlogin-bg i{position:absolute;display:block;border-radius:50%;
  background:rgba(255,255,255,.14);animation:clfloat linear infinite}
.catlogin-bg i.paw{background:none;border-radius:0;opacity:.16;font-size:26px;line-height:1}
.catlogin-bg i:nth-child(1){width:90px;height:90px;left:6%;top:12%;animation-duration:14s}
.catlogin-bg i:nth-child(2){width:46px;height:46px;left:82%;top:18%;animation-duration:11s}
.catlogin-bg i:nth-child(3){width:120px;height:120px;left:70%;top:62%;animation-duration:17s}
.catlogin-bg i:nth-child(4){width:30px;height:30px;left:16%;top:74%;animation-duration:9s}
.catlogin-bg i:nth-child(5){width:64px;height:64px;left:44%;top:6%;animation-duration:13s}
.catlogin-bg i:nth-child(6){left:24%;top:38%;animation-duration:16s;animation-delay:-4s}
.catlogin-bg i:nth-child(7){left:90%;top:44%;animation-duration:12s;animation-delay:-7s}
.catlogin-bg i:nth-child(8){left:56%;top:86%;animation-duration:15s;animation-delay:-2s}
@keyframes clfloat{
  0%{transform:translateY(0) rotate(0)}
  50%{transform:translateY(-26px) rotate(8deg)}
  100%{transform:translateY(0) rotate(0)}
}
/* 主卡片 */
.catlogin-card{
  position:relative;z-index:2;display:flex;width:720px;max-width:96vw;
  background:#fff;border-radius:22px;overflow:hidden;
  box-shadow:0 24px 70px rgba(0,0,0,.28);
}
/* 左：猫咪舞台 */
.catlogin-stage{
  flex:0 0 300px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:26px 14px 18px;position:relative;
  background:linear-gradient(160deg,color-mix(in srgb,var(--cl-primary) 12%,#fff),#fff);
}
.catlogin-bubble{
  position:relative;background:#fff;border:2px solid var(--cl-primary);color:#333;
  font-size:13px;padding:8px 14px;border-radius:14px;margin-bottom:10px;
  max-width:230px;text-align:center;min-height:34px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(0,0,0,.08);
  transition:transform .2s;
}
.catlogin-bubble::after{
  content:"";position:absolute;left:50%;bottom:-9px;margin-left:-6px;
  border:6px solid transparent;border-top-color:var(--cl-primary);
}
.catlogin-bubble.pop{animation:clpop .35s ease}
@keyframes clpop{0%{transform:scale(.7)}60%{transform:scale(1.08)}100%{transform:scale(1)}}
.catlogin-catname{
  margin-top:6px;font-size:12px;color:#999;letter-spacing:1px;
}
.catlogin-catname b{color:var(--cl-primary)}
/* 右：表单 */
.catlogin-main{flex:1;padding:44px 42px;min-width:0}
.catlogin-main h2{font-size:24px;color:#2b2f3a;margin-bottom:6px;text-align:center}
.catlogin-sub{text-align:center;color:#9aa0ae;font-size:13px;margin-bottom:28px}
.catlogin-main .form-group{margin-bottom:18px}
.catlogin-main label{display:block;margin-bottom:6px;color:#555;font-size:14px;font-weight:600}
.catlogin-main input{
  width:100%;padding:12px 14px;border:2px solid #e6e9f0;border-radius:10px;
  font-size:14px;outline:none;transition:border-color .2s,box-shadow .2s;background:#fafbfd;
}
.catlogin-main input:focus{border-color:var(--cl-primary);background:#fff;box-shadow:0 0 0 3px color-mix(in srgb,var(--cl-primary) 14%,transparent)}
.catlogin-btn{
  width:100%;padding:13px;border:none;border-radius:10px;font-size:16px;font-weight:700;color:#fff;cursor:pointer;
  background:linear-gradient(135deg,var(--cl-primary),var(--cl-primary2));
  display:flex;align-items:center;justify-content:center;gap:8px;
  transition:transform .15s,opacity .2s,filter .2s;position:relative;
}
.catlogin-btn:hover{filter:brightness(1.06)}
.catlogin-btn:active{transform:scale(.98)}
.catlogin-btn[disabled]{opacity:.75;cursor:not-allowed}
.catlogin-btn .cl-spin{
  width:16px;height:16px;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;
  border-radius:50%;animation:clspin .7s linear infinite;display:none;
}
.catlogin-btn.loading .cl-spin{display:block}
@keyframes clspin{to{transform:rotate(360deg)}}
/* 登录加载进度条（3 秒陪伴条） */
.catlogin-progress{
  height:4px;border-radius:4px;background:#eef0f6;overflow:hidden;margin-top:16px;display:none;
}
.catlogin-progress.show{display:block}
.catlogin-progress i{
  display:block;height:100%;width:40%;border-radius:4px;
  background:linear-gradient(90deg,var(--cl-primary),var(--cl-primary2));
  animation:clslide 1.1s ease-in-out infinite;
}
@keyframes clslide{0%{transform:translateX(-100%)}100%{transform:translateX(320%)}}
.catlogin-tip{text-align:center;margin-top:14px;font-size:12px;color:#9aa0ae}
.catlogin-error{
  background:#ffeef0;color:#e74c3c;padding:10px 12px;border-radius:8px;
  font-size:13px;margin-bottom:18px;text-align:center;
}
.catlogin-ok{
  background:#e8f9ee;color:#1a9e50;padding:10px 12px;border-radius:8px;
  font-size:13px;margin-bottom:18px;text-align:center;
}
/* ===== 降级方案 B：SVG 动画猫（Lottie 不可用时启用，v212 修订） =====
   与 Lottie 版体验等价：呼吸/眨眼/摆尾/耳抖/捂眼/激动/摇头 */
.cat-svg{width:100%;height:auto;overflow:visible}
.cat-tail{transform-box:view-box;transform-origin:206px 232px;animation:cattail 2.4s ease-in-out infinite alternate}
@keyframes cattail{from{transform:rotate(-7deg)}to{transform:rotate(9deg)}}
.cat-svg.loading .cat-tail{animation-duration:.55s}
.cat-body{transform-box:view-box;transform-origin:160px 252px;animation:catbreath 3.2s ease-in-out infinite}
@keyframes catbreath{0%,100%{transform:scaleY(1) translateY(0)}50%{transform:scaleY(1.025) translateY(-2px)}}
.cat-svg.loading .cat-body{animation-duration:.9s}
.cat-head{transform-box:view-box;transform-origin:160px 150px;transition:transform .25s ease}
.cat-ear{transform-box:view-box;transform-origin:50% 100%}
.cat-ear-l{animation:cearl 5.5s ease-in-out infinite}
.cat-ear-r{animation:cearr 6.8s ease-in-out infinite}
@keyframes cearl{0%,86%,100%{transform:rotate(0)}90%{transform:rotate(-13deg)}94%{transform:rotate(6deg)}}
@keyframes cearr{0%,82%,100%{transform:rotate(0)}88%{transform:rotate(12deg)}93%{transform:rotate(-5deg)}}
.cat-eyes{transform-box:fill-box;transform-origin:center;animation:catblink 4.6s infinite}
@keyframes catblink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.08)}}
.cat-svg.peek .cat-eyes{animation:none;transform:scaleY(.08)}
.cat-pupil{transition:transform .12s ease-out}
.cat-paw{transform-box:view-box;transition:transform .28s cubic-bezier(.34,1.4,.5,1)}
.cat-paw-l{transform-origin:128px 240px}
.cat-paw-r{transform-origin:192px 240px}
.cat-svg.peek .cat-paw-l{transform:translate(0,-136px) rotate(-8deg)}
.cat-svg.peek .cat-paw-r{transform:translate(0,-136px) rotate(8deg)}
.cat-svg.shake .cat-head{animation:catshake .5s ease}
.cat-svg.idlehop .cat-body{animation:catbreath 3.2s ease-in-out infinite,cathop 7s ease-in-out infinite}
@keyframes cathop{0%,91%,100%{transform:translateY(0)}94%{transform:translateY(-9px)}97%{transform:translateY(0)}}

/* ===== 猫咪 Lottie 舞台（v212 三层叠放） =====
   DOM 顺序 = 视觉上下顺序：main（底）→ pupils（眼睛）→ paws（爪，最上） */
.cat-stage{position:relative;width:250px;height:250px;flex:0 0 auto}
.cat-stage > div{position:absolute;inset:0}
.cat-stage svg{position:absolute;left:0;top:0;width:100%;height:100%;display:block}
/* 失败摇头（挂 stage 容器） */
.cat-stage.shake{animation:catshake .5s ease}
@keyframes catshake{
  0%,100%{transform:rotate(0)}
  20%{transform:rotate(-7deg)}
  40%{transform:rotate(6deg)}
  60%{transform:rotate(-5deg)}
  80%{transform:rotate(3deg)}
}
/* 响应式：窄屏上下布局 */
@media (max-width:640px){
  .catlogin-card{flex-direction:column;width:400px}
  .catlogin-stage{flex-basis:auto;padding:18px 10px 8px}
  .cat-stage{width:200px;height:200px}
  .catlogin-main{padding:28px 26px 34px}
}
