:root{
  --green:#5cb85c; --green-d:#3f9d3f; --pink:#e879b9; --ink:#33433a;
  --muted:#81908a; --line:#e4eee4; --card:#ffffff; --gold:#f3b53f;
  --safe-b: env(safe-area-inset-bottom, 0px);
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
button,input,textarea,select{font-family:inherit; font-size:inherit; color:inherit;}
html,body{margin:0; padding:0; height:100%; touch-action:manipulation; -webkit-text-size-adjust:100%; overscroll-behavior:none;}
@font-face{
  font-family:'Kingnammm Maiyuan';
  src:url('/assets/font/Kingnammm-Maiyuan-II-Regular-2.ttf') format('truetype');
  font-display:swap;
}
body{
  font-family:'Kingnammm Maiyuan',"PingFang SC","Microsoft YaHei",-apple-system,BlinkMacSystemFont,sans-serif;
  color:var(--ink); background:#bfe9ff; overflow:hidden;
  -webkit-user-select:none; user-select:none; -webkit-touch-callout:none;
  background:linear-gradient(180deg,#bfe9ff 0%,#e7f7e0 45%,#dff3d2 100%);
}
.hidden{display:none !important;}
.muted{color:var(--muted); font-size:13px;}

/* ===== 登录 ===== */
.auth-screen{position:fixed; inset:0; display:flex; align-items:center; justify-content:center; padding:20px; z-index:60; background:linear-gradient(180deg,#bfe9ff,#dff3d2);}
.auth-card{
  width:100%; max-width:360px; background:#fff; border-radius:26px; padding:30px 24px; text-align:center;
  box-shadow:0 20px 60px rgba(60,120,80,.25); border:3px solid #fff;
}
.auth-logo{width:66px; height:66px; object-fit:contain; animation:bob 3s ease-in-out infinite;}
.auth-card h1{margin:6px 0 2px; font-size:26px; letter-spacing:2px;}
.auth-sub{color:var(--muted); font-size:13px; margin:0 0 18px;}
.seg{display:flex; background:#eef5ee; border-radius:14px; padding:4px; margin-bottom:16px;}
.seg-btn{flex:1; border:none; background:transparent; padding:9px; border-radius:11px; cursor:pointer; color:var(--muted); font-size:14px; font-weight:600;}
.seg-btn.active{background:#fff; color:var(--green-d); box-shadow:0 2px 8px rgba(0,0,0,.06);}
.auth-card input{
  width:100%; padding:13px 14px; margin-bottom:10px; border:1.5px solid var(--line);
  border-radius:13px; font-size:16px; outline:none; background:#fafdfa; text-align:center;
}
.auth-card input:focus{border-color:var(--green);}
.big-btn{
  width:100%; padding:14px; border:none; border-radius:14px; background:var(--green);
  color:#fff; font-size:17px; font-weight:700; cursor:pointer; margin-top:4px; transition:.15s;
  box-shadow:0 8px 18px rgba(92,184,92,.35);
}
.big-btn:active{transform:scale(.97);}
.auth-msg{color:var(--pink); font-size:13px; min-height:18px; margin:10px 0 0;}
.auth-tip{font-size:11px; color:#9aa89f; margin-top:14px; line-height:1.5;}
.auth-beian{font-size:11px; color:#b3b3b3; margin-top:10px; letter-spacing:.5px;}

/* ===== 主框架（手机竖屏） ===== */
.app{
  max-width:480px; margin:0 auto; height:100dvh; display:flex; flex-direction:column;
  background:linear-gradient(180deg,#cdeeff 0%,#e9f8e2 50%,#e2f4d6 100%);
  box-shadow:0 0 40px rgba(0,0,0,.06); position:relative; overflow:hidden;
}
.topbar{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  padding:calc(10px + env(safe-area-inset-top,0px)) 16px 10px; background:rgba(255,255,255,.72);
  backdrop-filter:blur(8px); border-bottom:1px solid rgba(255,255,255,.5); flex:none; z-index:10;
}
.me{display:flex; align-items:center; gap:10px; min-width:0;}
.avatar{width:42px; height:42px; border-radius:50%; background:#fff; display:flex; align-items:center; justify-content:center; font-size:24px; box-shadow:0 3px 10px rgba(0,0,0,.1); border:2px solid #fff; flex:none; cursor:pointer; position:relative;}
.me-name{font-weight:700; font-size:15px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:90px;}
.me-flower{font-size:11px; color:var(--muted);}
.progress{display:flex; align-items:center; gap:6px; background:#fff; padding:7px 13px; border-radius:20px; font-weight:700; color:var(--green-d); box-shadow:0 3px 10px rgba(0,0,0,.07); font-size:14px; flex:none;}
.prog-emoji{font-size:17px;}
.ghost-btn{border:1.5px solid var(--line); background:#fff; color:var(--muted); padding:7px 12px; border-radius:14px; cursor:pointer; font-size:12px; flex:none;}
.ghost-btn:active{background:#eef4ee;}

/* ===== 视图 ===== */
.view{flex:1; display:none; flex-direction:column; min-height:0; position:relative;}
.view.active{display:flex;}
.pane{flex:1; overflow:auto; padding:14px 16px calc(20px + var(--safe-b));}

/* ===== 花园场景（Phaser 画布） ===== */
.stage{flex:1; overflow:auto; padding-bottom:8px;}
.scene{position:relative; height:38vh; min-height:220px; overflow:hidden; background:#aee4ff;}
/* 照料时花朵上方浮动的数值变化提示 */
.care-float{position:absolute; left:50%; top:30%; transform:translateX(-50%); pointer-events:none; font-weight:800; font-size:19px; z-index:8; text-shadow:0 2px 6px rgba(0,0,0,.28); animation:careFloat 1s ease-out forwards;}
@keyframes careFloat{0%{opacity:0; transform:translate(-50%,8px) scale(.8);}18%{opacity:1;}100%{opacity:0; transform:translate(-50%,-38px) scale(1.06);}}
.scene.small{height:200px; min-height:200px;}
.phaser-canvas{position:absolute; inset:0; overflow:hidden;}
.phaser-canvas canvas{width:100% !important; height:100% !important; display:block;}
.stage-label{position:absolute; left:0; right:0; bottom:8px; text-align:center; color:#fff; font-size:12px; text-shadow:0 1px 3px rgba(0,0,0,.35); font-weight:600; pointer-events:none;}

@keyframes bob{0%,100%{transform:translateY(0) rotate(-1deg);}50%{transform:translateY(-7px) rotate(1deg);}}

/* HUD */
.hud{padding:12px 14px 4px;}
.growth-top{display:flex; justify-content:space-between; font-size:13px; margin-bottom:5px; color:var(--muted);}
.bar{height:12px; background:#eef3ee; border-radius:9px; overflow:hidden;}
.fill{display:block; height:100%; border-radius:9px; transition:width .4s, background .3s;}
.fill.pink{background:linear-gradient(90deg,#f7a8c4,#e879b9);}
.fill.good{background:linear-gradient(90deg,#7ed47e,#5cb85c);}
.fill.bad{background:linear-gradient(90deg,#f08a82,#e2574c);}
.meters-mini{display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-top:12px;}
.mm{background:#f7fbf6; border:1px solid var(--line); border-radius:12px; padding:8px 10px;}
.m-ic{font-size:14px;}
.m-ic img{width:16px; height:16px; vertical-align:-3px; display:inline-block;}
.mm span:nth-child(2){float:right; font-weight:700; font-size:13px; margin-left:6px;}
.mm .bar{margin-top:6px;}

/* 照料条 */
.carebar{flex:none; padding:8px 12px calc(8px + var(--safe-b)); background:rgba(255,255,255,.8); backdrop-filter:blur(8px); border-top:1px solid rgba(255,255,255,.5);}
.replant-btn{width:100%; margin-bottom:8px; border:1.5px dashed var(--green); background:#f1faf0; color:var(--green-d); border-radius:14px; padding:10px; cursor:pointer; font-size:13px; font-weight:600;}
.replant-btn:active{background:#e7f6e5;}
.care-row{display:grid; grid-template-columns:repeat(4,1fr); gap:8px;}
.care{border:1.5px solid var(--line); background:#fff; border-radius:16px; padding:12px 4px; cursor:pointer; display:flex; flex-direction:column; align-items:center; gap:4px; font-size:13px; font-weight:600; transition:.1s;}
.care span{font-size:26px;}
.care span img{width:26px; height:26px; display:block; margin:0 auto;}
.care:active{transform:scale(.93); border-color:var(--green); background:#f1faf0;}

/* ===== 底部导航 ===== */
.bottomnav{display:flex; background:rgba(255,255,255,.95); border-top:1px solid var(--line); padding-bottom:var(--safe-b); flex:none;}
.nav-btn{flex:1; border:none; background:transparent; padding:9px 0 7px; cursor:pointer; font-size:11px; color:var(--muted); display:flex; flex-direction:column; align-items:center; gap:3px; position:relative;}
.nav-btn span{font-size:22px;}
.nav-ic{width:24px;height:24px;object-fit:contain;display:block;opacity:.62;transition:transform .15s,opacity .15s;}
.nav-btn.active .nav-ic{opacity:1;transform:translateY(-1px) scale(1.06);}
.nav-btn.active{color:var(--green-d);}
.nav-btn.active span{transform:translateY(-1px);}
.dot{position:absolute; top:6px; right:calc(50% - 26px); color:#ff5a5a; font-size:9px;}
/* 小号红点（新任务 / 好友祝福），不要太大 */
.avatar-wrap{position:relative; flex:none;}
.reddot{position:absolute; top:-1px; right:-1px; width:9px; height:9px; border-radius:50%; background:#ff4d4f; box-shadow:0 0 0 1.5px #fff; z-index:3;}

/* ===== 好友/礼物/收藏 ===== */
.add-row{display:flex; gap:7px; margin-bottom:12px;}
.add-row input{flex:1; padding:11px 12px; border:1.5px solid var(--line); border-radius:12px; font-size:15px; outline:none; background:#fafdfa;}
.add-row input:focus{border-color:var(--green);}
.mini-btn{border:none; background:var(--green); color:#fff; border-radius:12px; padding:0 16px; cursor:pointer; font-weight:600; font-size:14px;}
.mini-btn:active{background:var(--green-d);}
.btn-ghost{border:1px solid var(--line); background:transparent; border-radius:10px; padding:4px 10px; cursor:pointer; font-size:12px; color:var(--ink); transition:background .15s;}
.btn-ghost:hover{background:rgba(0,0,0,.04);}
.friend-list{display:flex; flex-direction:column; gap:9px;}
.friend{display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:14px; background:#fafdf9;}
.f-avatar{width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center; overflow:visible; flex:none; position:relative;}
.f-online{position:absolute; bottom:0; right:0; width:10px; height:10px; border-radius:50%; background:#bbb; border:2px solid #fff;}
.f-online.on{background:#4caf50;}
.f-info{flex:1; min-width:0;}
.f-name{font-weight:600; font-size:14px;}
.f-sub{font-size:11px; color:var(--muted);}
.f-actions{display:flex; gap:5px; flex:none;}
.f-btn{border:1.5px solid var(--line); background:#fff; border-radius:10px; padding:6px 9px; cursor:pointer; font-size:11px; font-weight:600; color:var(--ink); white-space:nowrap;}
.f-btn:active{border-color:var(--green); color:var(--green-d);}
.f-btn.gift{border-color:#f3c14b; color:#c9931a;}
.f-btn.f-del{border-color:#f0b4ac; color:#c9533f;}
.empty{color:var(--muted); font-size:13px; text-align:center; padding:40px 16px; line-height:1.6;}

.gift-inbox{display:flex; flex-direction:column; gap:9px;}
.gift-tabs{display:flex; gap:8px; padding:4px; margin-bottom:12px; background:#eef5ee; border-radius:14px;}
.g-tab{flex:1; border:none; background:transparent; border-radius:11px; padding:9px 0; font-size:14px; font-weight:600; color:var(--muted); cursor:pointer; transition:.2s;}
.g-tab.on{background:#fff; color:var(--green-d); box-shadow:0 2px 8px rgba(0,0,0,.06);}
.gt-head{margin:14px 2px 8px; font-size:13px; font-weight:700; color:var(--ink);}
.gt-head .muted{font-weight:400; font-size:11px;}
.gift-hist{display:flex; flex-direction:column; gap:8px;}
.gift-item.hist{background:#fbfdfb;}
.empty.sm{padding:18px 12px; font-size:12px;}
.gi-msg{font-size:12px; color:#7a7060; font-style:italic; margin-top:2px; word-break:break-word;}
.gift-item{display:flex; align-items:center; gap:10px; padding:11px 12px; border:1px solid var(--line); border-radius:14px; background:#fff8ea;}
.gi-emoji{font-size:26px;}
.gi-info{flex:1;}
.gi-name{font-weight:600; font-size:13px;}
.gi-sub{font-size:11px; color:var(--muted);}

.coll-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:10px;}
.coll-cell{border:1px solid var(--line); border-radius:14px; padding:14px 4px; text-align:center; background:#fbfdfb; position:relative;}
.coll-cell.have{border-color:var(--green); background:#f0faf0; box-shadow:0 3px 10px rgba(92,184,92,.12);}
/* 炫彩花：彩色卡片 + PNG 发光 */
.coll-cell.rainbow,
.coll-cell.lf.rainbow{
  border:2px solid transparent;
  background:linear-gradient(#fffafd,#fffafd) padding-box, linear-gradient(135deg,#ff9ed8,#ffd36e,#9ee7ff,#b6ff9e) border-box;
  box-shadow:0 0 12px rgba(255,158,216,.5),0 4px 12px rgba(158,201,255,.22);
}
@keyframes rbGlow{
  0%,100%{filter:drop-shadow(0 0 4px rgba(255,150,210,.95)) drop-shadow(0 0 9px rgba(150,210,255,.7));}
  50%{filter:drop-shadow(0 0 7px rgba(255,150,210,1)) drop-shadow(0 0 14px rgba(150,210,255,.95));}
}
.coll-cell.rainbow .fi{animation:rbGlow 2.2s ease-in-out infinite;}
.coll-cell .ce{font-size:36px;}
.coll-cell .cn{font-size:12px; margin-top:3px;}
.coll-cell .st{font-size:16px; height:18px; display:flex; align-items:center; justify-content:center;}
.coll-cell .st img.mark{width:20px; height:20px; object-fit:contain;}
.coll-cell .ce img.mark{width:46px; height:46px; object-fit:contain; vertical-align:middle;}
.coll-cell.lf{border-color:#f3c14b; background:#fffaf0;}
.coll-cell.lf.have{box-shadow:0 3px 10px rgba(243,177,75,.18);}
/* 限定花备注标签：卡片右上角 */
.lf-badge{position:absolute; top:5px; right:5px; max-width:78%; background:#f3c14b; color:#6b4e00; font-size:10px; font-weight:700; line-height:1; padding:3px 6px; border-radius:9px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; box-shadow:0 1px 3px rgba(0,0,0,.12);}

/* ===== 弹窗（底部抽屉/全屏） ===== */
.modal-bg{position:fixed; inset:0; background:rgba(40,55,45,.5); display:flex; align-items:flex-end; justify-content:center; z-index:50;}
.modal{background:#fff; border-radius:22px 22px 0 0; padding:22px 20px calc(24px + var(--safe-b)); width:100%; max-width:480px; max-height:90vh; overflow:auto; position:relative; animation:slideup .25s ease;}
@keyframes slideup{from{transform:translateY(100%);}to{transform:translateY(0);}}
.modal h3{margin:0 0 12px; font-size:18px; padding-right:30px;}
.modal-close{position:absolute; top:14px; right:16px; border:none; background:#f0f4f0; width:30px; height:30px; border-radius:50%; cursor:pointer; font-size:14px; color:var(--muted);}
.modal-close:active{background:#e4ece4;}
.modal.win{text-align:center; border-radius:22px; margin:auto 16px; align-self:center;}
.badge{font-size:80px; animation:bob 2.5s ease-in-out infinite;}
.gift-choices{display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin-top:8px;}
.gc{border:1.5px solid var(--line); border-radius:14px; padding:12px 4px; text-align:center; cursor:pointer; background:#fff;}
.gc:active{border-color:var(--gold); background:#fff8e8;}
.gc .ce{font-size:34px;}
.gc .cn{font-size:12px; margin-top:3px;}

.confetti{position:fixed; top:-30px; font-size:22px; z-index:80; animation:fall2 linear forwards; pointer-events:none;}
@keyframes fall2{to{transform:translateY(110vh) rotate(360deg); opacity:.2;}}
/* 收礼 emoji 粒子散落 */
.gift-particle{position:fixed; z-index:85; pointer-events:none; will-change:transform,opacity; transform:translate(-50%,-50%); animation:giftScatter var(--dur,1.5s) cubic-bezier(.18,.7,.3,1) forwards;}
@keyframes giftScatter{
  0%{transform:translate(-50%,-50%) translate(0,0) scale(.3); opacity:0;}
  15%{opacity:1;}
  100%{transform:translate(-50%,-50%) translate(var(--dx,0),var(--dy,0)) scale(1.15) rotate(var(--rot,0)); opacity:0;}
}
.toast{position:fixed; left:50%; bottom:calc(80px + var(--safe-b)); transform:translateX(-50%) translateY(10px); background:var(--ink); color:#fff; padding:11px 18px; border-radius:24px; font-size:14px; opacity:0; pointer-events:none; transition:.3s; z-index:90; max-width:90%;}
.toast.show{opacity:.96; transform:translateX(-50%) translateY(0);}

/* 真实花朵图片（替换 emoji） */
.fi{width:30px;height:30px;object-fit:contain;vertical-align:middle;flex:none;}
.ce .fi{width:50px;height:50px;}
.f-avatar .fi{width:40px;height:40px;border-radius:50%;display:block;}
.me-avatar .fi{width:36px;height:36px;}
.gi-emoji .fi{width:30px;height:30px;display:block;}

/* ===== 公告 ===== */
.ann-badge{text-align:center; margin-bottom:6px;}
.ann-badge-img{width:46px; height:46px; object-fit:contain;}
.h-ic{width:22px; height:22px; vertical-align:-4px; object-fit:contain; margin-right:2px;}
.ann-modal-content{font-size:14px; line-height:1.7; color:var(--ink); white-space:pre-wrap; margin:6px 0 10px;}
.ann-modal-time{font-size:11px; color:var(--muted); text-align:right;}
/* 公告页底部备案号：随内容流式排布，不遮挡公告 */
.icp-foot{margin-top:18px; padding-top:12px; border-top:1px dashed var(--line);
  text-align:center; font-size:11px; color:var(--muted); line-height:1.6;}
.ann-list{display:flex; flex-direction:column; gap:10px;}
.ann-item{border:1px solid var(--line); border-radius:14px; padding:13px 14px; background:#fafdfa;}
.ann-item .at{font-size:15px; font-weight:700;}
.ann-item .ac{font-size:13px; color:#5b5546; margin-top:5px; white-space:pre-wrap; line-height:1.6;}
.ann-item .atime{font-size:11px; color:var(--muted); margin-top:6px;}

/* ===== 引导条 ===== */
.garden-tip{
  margin-top:12px; padding:9px 12px; border-radius:12px;
  background:linear-gradient(180deg,#fff8e6,#fff3d4); border:1px solid #f3e2af;
  color:#8a6d2b; font-size:12.5px; line-height:1.5;
  box-shadow:0 2px 8px rgba(180,150,60,.12);
}
.garden-tip::before{ content:'💡 '; }

/* ===== 阶段预估气泡（悬浮在花园画布上方） ===== */
.stage-eta{
  position:absolute; top:8px; left:8px; right:8px; z-index:5;
  padding:7px 12px; border-radius:14px;
  background:rgba(255,255,255,.85); border:1px solid rgba(188,220,255,.95);
  color:#2f6db0; font-size:12.5px; font-weight:600; line-height:1.45;
  box-shadow:0 3px 10px rgba(80,140,220,.22); text-align:center;
  pointer-events:none; backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px);
}
.stage-eta.warn{ background:rgba(255,240,230,.9); border-color:rgba(255,200,154,.95); color:#b9602a; }
.stage-eta.bloomed{ background:rgba(255,238,246,.9); border-color:rgba(247,184,214,.95); color:#c93f86; }
.stage-eta.accel{ background:rgba(255,247,224,.95); border-color:rgba(245,200,80,.95); color:#a9760a; box-shadow:0 3px 12px rgba(245,190,60,.3); }

/* ===== 礼物留言 / 库存 ===== */
.gift-msg-input{
  width:100%; min-height:72px; resize:vertical; margin:6px 0 12px; padding:11px 12px;
  border:1.5px solid var(--line); border-radius:12px; font-size:14px; background:#fafdfa; outline:none;
}
.gift-msg-input:focus{border-color:var(--gold);}
.gc .cqty{color:var(--muted); font-weight:600;}
.gi-msg{
  font-size:12px; color:#9a6b1f; background:#fff6e2; border-left:3px solid #f3c14b;
  padding:5px 9px; margin:4px 0 3px; border-radius:6px; line-height:1.45; font-style:italic;
}

/* ===== 花园悬浮按钮（右下任务 / 左下音乐） ===== */
.float-fab{
  position:absolute; z-index:6; border:none; cursor:pointer; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  background:rgba(255,255,255,.92); box-shadow:0 4px 12px rgba(60,120,80,.28);
  backdrop-filter:blur(3px); -webkit-backdrop-filter:blur(3px);
}
.float-fab:active{transform:scale(.92);}
.task-fab{ right:8px; bottom:8px; width:52px; height:52px; flex-direction:column; gap:0; color:#5a3e2b; font-size:20px; }
.task-fab .fab-label{ font-size:10px; font-weight:700; line-height:1; margin-top:1px; color:#5a3e2b; }
.wish-fab{ right:8px; bottom:70px; width:52px; height:52px; flex-direction:column; gap:0; color:#c0792f; font-size:20px; }
.wish-fab .fab-label{ font-size:10px; font-weight:700; line-height:1; margin-top:1px; }
.music-fab{ left:8px; bottom:8px; width:42px; height:42px; font-size:20px; color:#5a6b62; }
.music-fab.on{ color:#2f8a55; background:rgba(225,247,225,.96); }
.music-fab .eq{ position:absolute; bottom:6px; right:6px; width:8px; height:8px; border-radius:50%; background:#2f8a55; opacity:0; }
.music-fab.on .eq{ opacity:1; animation:musEq .6s ease-in-out infinite alternate; }
@keyframes musEq{ from{transform:scale(.6);} to{transform:scale(1.15);} }
.fab-ic{ width:24px; height:24px; object-fit:contain; flex:none; }
.task-fab .fab-ic{ width:22px; height:22px; }
.music-fab .fab-ic{ width:22px; height:22px; }
.wish-fab .fab-ic{ width:22px; height:22px; }

/* ===== 任务面板 ===== */
.task-list{display:flex; flex-direction:column; gap:10px; margin-top:4px;}
.task-card{ border:1px solid var(--line); border-radius:14px; padding:12px 13px; background:#fafdfa; }
.task-card .tc-desc{ font-size:14px; font-weight:600; line-height:1.4; }
.task-card .tc-meta{ font-size:12px; color:var(--muted); margin:6px 0 10px; line-height:1.5; }
.task-card .tc-meta b{ color:var(--green-d); font-weight:700; }
.task-card.done{ opacity:.62; }
.task-card.cool{ background:#f4f6f4; }
.tc-btn{ width:100%; border:none; border-radius:11px; padding:10px; cursor:pointer; font-weight:700; font-size:14px; background:var(--green); color:#fff; }
.tc-btn:active{ background:var(--green-d); }
.tc-btn:disabled{ background:#cfd8cf; color:#fff; cursor:default; }
.task-empty{ color:var(--muted); font-size:13px; text-align:center; padding:24px 12px; line-height:1.6; }

/* ===== 访问页祝福按钮 ===== */
.bless-btn{
  width:100%; margin-top:12px; border:1.5px solid #f3c14b; background:#fff8e8; color:#c9931a;
  border-radius:14px; padding:11px; cursor:pointer; font-size:14px; font-weight:700;
}
.bless-btn:active{ background:#fdefcf; }
.bless-btn:disabled{ border-color:#ddd; background:#f3f3f3; color:#aaa; cursor:default; }

/* ===== 祝福记录 ===== */
.bless-list{display:flex; flex-direction:column; gap:9px; margin-top:4px;}
.bless-item{ display:flex; align-items:center; gap:10px; padding:10px 12px; border:1px solid var(--line); border-radius:13px; background:#fafdfa; }
.bless-item .bi-ava{ width:34px; height:34px; border-radius:50%; background:#fff; display:flex; align-items:center; justify-content:center; font-size:18px; border:2px solid #fff; box-shadow:0 2px 5px rgba(0,0,0,.08); flex:none; }
.bless-item .bi-main{ flex:1; min-width:0; }
.bless-item .bi-name{ font-weight:600; font-size:14px; }
.bless-item .bi-time{ font-size:11px; color:var(--muted); }
.bless-empty{ color:var(--muted); font-size:13px; text-align:center; padding:24px 12px; line-height:1.6; }


/* ---------- 头像弹窗：祝福 / 设置 分页 ---------- */
.av-tabs{display:flex; gap:6px; margin:2px 0 12px;}
.av-tab{padding:8px 12px; border-radius:10px; background:#f1ece0; font-size:14px; color:var(--ink); cursor:pointer; border:none;}
.av-tab.sel{background:var(--green); color:#fff;}
.av-set-preview{display:flex; justify-content:center; margin-bottom:8px;}
.av-set-ava{width:64px; height:64px; border-radius:50%; background:#fff; box-shadow:0 3px 10px rgba(0,0,0,.1); border:2px solid #fff; display:flex; align-items:center; justify-content:center; position:relative;}
.av-set-ava .fi{width:38px; height:38px;}
.av-h{font-size:14px; margin:14px 0 4px; font-weight:700;}
.av-set .muted{font-size:12px; color:var(--muted);}
.chip-row{display:flex; flex-wrap:wrap; gap:8px;}
.ava-chip{display:inline-flex; flex-direction:column; align-items:center; gap:3px; padding:7px 5px; min-width:52px; background:#f7f2e4; border:2px solid transparent; border-radius:12px; font-size:12px; color:var(--ink); cursor:pointer; position:relative;}
.ava-chip .fi{width:26px; height:26px;}
.ava-chip.sel{border-color:var(--green); background:#e9f7ee;}
.ava-chip.rainbow{border-color:#ff9ed8; background:linear-gradient(135deg,#fff0fb,#fff7e6,#eafaff,#f0fff4);}
.ava-chip[disabled]{opacity:.55; cursor:not-allowed;}
.ava-chip .lf-tag{position:absolute; top:-6px; right:-4px; font-style:normal; font-size:10px; background:#ffd6ef; color:#c2479a; padding:1px 5px; border-radius:8px;}
.fi-sm{width:26px; height:26px; object-fit:contain; vertical-align:middle; flex:none;}
.ava-chip .fi-sm{width:24px; height:24px;}
.ava-chip.rainbow .fi-sm{animation:rbGlow 2.2s ease-in-out infinite;}
.ava-sub{font-style:normal; font-size:10px; color:var(--muted); line-height:1.2; text-align:center;}
.ava-chip.locked{background:#f0ece2;}
/* 许愿互换 */
.wish-create{background:#fefdf6; border:1px solid #e8dca8; border-radius:14px; padding:12px;}
.wish-create-row{display:flex; gap:8px; align-items:center; margin-bottom:8px;}
.wish-sel{flex:1; padding:9px 8px; border-radius:10px; border:1px solid var(--line); font-size:13px; background:#fff; min-width:80px;}
.wish-arrow{font-size:18px; color:#c0792f; flex:none;}
.wish-msg{flex:1; padding:9px 10px; border-radius:10px; border:1px solid var(--line); font-size:13px;}
.wish-list{display:flex; flex-direction:column; gap:8px;}
.wish-item{display:flex; align-items:center; gap:10px; padding:11px 12px; border:1px solid var(--line); border-radius:14px; background:#fefdf6;}
.wish-item .gi-emoji{font-size:24px;}
.wish-item .gi-info{flex:1;}
.wish-item .gi-name{font-weight:600; font-size:13px; color:var(--ink);}
.wish-item .gi-sub{font-size:11px; color:var(--muted);}
.wish-item .gi-msg{font-size:12px; color:#7a7060; font-style:italic; margin-top:2px;}
.wish-item.fulfilled{background:#f3faf3; border-color:var(--green);}
