/* ============================================================
   今日吃什么 · 每日做饭抽菜 —— 样式（全站统一视觉）
   入口：../index.html
   设计语言：鲜活橙粉（参照橙粉促销页式样）· 圆润卡片 · 暖色渐变
   ============================================================ */
:root{
  /* 色板（默认主题：鲜活橙粉） */
  --paper:#FDF1EA;
  --card:#FFFDFB;
  --cream:#FBEFE6;
  --surface:#FFFFFF;
  --ink:#3A2A22;
  --ink-2:#8A6F60;
  --ink-3:#B79C8A;
  --line:#F3DCCE;
  --line-2:#E8C4AE;
  --green:#F25D3C;
  --green-2:#E24E55;
  --green-soft:#FFEDE4;
  --green-line:#F7CDB8;
  --tomato:#E24E55;
  --tomato-dark:#C63A45;
  --tomato-soft:#FDE9E5;
  --gold:#E0A63C;
  --gold-deep:#F7EBD0;
  --gold-soft:#FAF0DC;
  --gold-line:#EBD9AC;
  --gold-ink:#8A6413;
  --danger-line:#E8C9BD;
  --danger-soft:#FDF3EF;
  /* 圆角 / 阴影 */
  --radius-sm:12px;
  --radius:16px;
  --radius-lg:22px;
  --shadow:0 1px 2px rgba(242,93,60,.08);
  --shadow-hover:0 8px 22px rgba(242,93,60,.16);
  --shadow-pop:0 10px 28px rgba(226,78,85,.22);
  /* 主题化渐变（供导航/按钮/首页/卡片统一使用，随主题切换） */
  --paper-grad:linear-gradient(172deg,#FDF3EC 0%,#FDEBE0 42%,#FDE8EA 100%);
  --grad-main:linear-gradient(135deg,#FF9A3C 0%,#F25D3C 46%,#EC5E6B 100%);
  --grad-page:linear-gradient(168deg,#FFA44E 0%,#FF8A5C 34%,#F26A6C 68%,#EC5E8C 100%);
  --grad-soft:linear-gradient(135deg,#FFB35C 0%,#F26A6C 100%);
  /* 主题强调色（首页 hero 等主强调文字，随主题主色变化） */
  --accent:#E24E55;
  /* 白底按钮/胶囊上的主题色文字（比 accent 更深，保证白底对比度） */
  --accent-ink:#B23A2E;
  /* 页面渐变背景上的次级文字（卡外元素） */
  --page-ink2:#FFF3EA;
  /* 导航激活高亮（顶栏渐变上的下划线，各主题亮色系） */
  --nav-line:rgba(255,255,255,.92);
}
/* ===== 主题：默认（用于用户卡等局部主题隔离） ===== */
[data-theme="default"]{
  --paper:#FDF1EA;
  --card:#FFFDFB;
  --cream:#FBEFE6;
  --surface:#FFFFFF;
  --ink:#3A2A22;
  --ink-2:#8A6F60;
  --ink-3:#B79C8A;
  --line:#F3DCCE;
  --line-2:#E8C4AE;
  --green:#F25D3C;
  --green-2:#E24E55;
  --green-soft:#FFEDE4;
  --green-line:#F7CDB8;
  --tomato:#E24E55;
  --tomato-dark:#C63A45;
  --tomato-soft:#FDE9E5;
  --gold:#E0A63C;
  --gold-deep:#F7EBD0;
  --gold-soft:#FAF0DC;
  --gold-line:#EBD9AC;
  --gold-ink:#8A6413;
  --danger-line:#E8C9BD;
  --danger-soft:#FDF3EF;
  --shadow:0 1px 2px rgba(242,93,60,.08);
  --shadow-hover:0 8px 22px rgba(242,93,60,.16);
  --shadow-pop:0 10px 28px rgba(226,78,85,.22);
  --paper-grad:linear-gradient(172deg,#FDF3EC 0%,#FDEBE0 42%,#FDE8EA 100%);
  --grad-main:linear-gradient(135deg,#FF9A3C 0%,#F25D3C 46%,#EC5E6B 100%);
  --grad-page:linear-gradient(168deg,#FFA44E 0%,#FF8A5C 34%,#F26A6C 68%,#EC5E8C 100%);
  --grad-soft:linear-gradient(135deg,#FFB35C 0%,#F26A6C 100%);
  --accent:#E24E55;
  --accent-ink:#B23A2E;
  --page-ink2:#FFF3EA;
  --nav-line:rgba(255,255,255,.92);
}
/* ===== 主题：暖阳 ===== */
[data-theme="warm"]{
  --paper:#F6EFDD;
  --card:#FFFBF0;
  --cream:#FBF3E2;
  --ink:#3A3126;
  --ink-2:#7C715C;
  --ink-3:#B0A585;
  --line:#E8DCBE;
  --line-2:#D6C69E;
  --green:#4C5B33;
  --green-2:#39472A;
  --green-soft:#EDE9D8;
  --green-line:#D3D5B8;
  --tomato:#D1492B;
  --tomato-dark:#B53A20;
  --tomato-soft:#FBE9E1;
  --gold:#D99E2D;
  --gold-deep:#F7EBD0;
  --gold-soft:#F8EDD2;
  --gold-line:#E8D49C;
  --gold-ink:#8A6413;
  --danger-line:#E8C9BD;
  --danger-soft:#FDF3EF;
  --shadow:0 1px 2px rgba(90,74,40,.08);
  --shadow-hover:0 6px 18px rgba(90,74,40,.14);
  --paper-grad:linear-gradient(172deg,#F9F4E5 0%,#F6EFDD 100%);
  --grad-main:linear-gradient(135deg,#A87F2E 0%,#8F6420 60%,#7E5222 100%);
  --grad-page:linear-gradient(168deg,#A87F2E 0%,#8F6420 55%,#7E5222 100%);
  --grad-soft:linear-gradient(135deg,#B98A30 0%,#8F6420 100%);
  --accent:#4C5B33;
  --accent-ink:#3F4C2A;
  --page-ink2:#F6EDD6;
  --nav-line:#F2DFAE;
}

/* ===== 主题：蔚蓝 ===== */
[data-theme="blue"]{
  --paper:#F0F4F8;
  --card:#FFFFFF;
  --cream:#F4F7FB;
  --ink:#22303C;
  --ink-2:#5E6B7A;
  --ink-3:#93A0AE;
  --line:#DCE4EC;
  --line-2:#C3CFDC;
  --green:#2E6FC2;
  --green-2:#245C9E;
  --green-soft:#E4EEF9;
  --green-line:#C4D8EC;
  --tomato:#D1492B;
  --tomato-dark:#B53A20;
  --tomato-soft:#FBE9E1;
  --gold:#D99E2D;
  --gold-deep:#F7EBD0;
  --gold-soft:#F9EFD9;
  --gold-line:#EBD9AC;
  --gold-ink:#8A6413;
  --danger-line:#E8C9BD;
  --danger-soft:#FDF3EF;
  --shadow:0 1px 2px rgba(46,111,194,.08);
  --shadow-hover:0 6px 18px rgba(46,111,194,.14);
  --paper-grad:linear-gradient(172deg,#F2F6FA 0%,#EDF3F8 100%);
  --grad-main:linear-gradient(135deg,#3A8AC8 0%,#2E6FC2 60%,#245C9E 100%);
  --grad-page:linear-gradient(168deg,#3E7BB8 0%,#2E6FC2 55%,#245C9E 100%);
  --grad-soft:linear-gradient(135deg,#4E8FC9 0%,#2E6FC2 100%);
  --accent:#2E6FC2;
  --accent-ink:#1F5AA6;
  --page-ink2:#EAF2F9;
  --nav-line:#BFDAF5;
}
/* ===== 主题：紫韵 ===== */
[data-theme="purple"]{
  --paper:#F6F1FA;
  --card:#FFFCFF;
  --cream:#F8F1FC;
  --surface:#FFFFFF;
  --ink:#2F2638;
  --ink-2:#6F617E;
  --ink-3:#A99AB8;
  --line:#E7DCF1;
  --line-2:#D6C5E6;
  --green:#7B4FC9;
  --green-2:#6338B2;
  --green-soft:#F0E8FA;
  --green-line:#DCCBF0;
  --tomato:#C94F7A;
  --tomato-dark:#A93B62;
  --tomato-soft:#FBE9F1;
  --gold:#C49A3A;
  --gold-deep:#F7EEDB;
  --gold-soft:#F9F1DD;
  --gold-line:#E8D7AE;
  --gold-ink:#7E5D14;
  --danger-line:#E7C9D9;
  --danger-soft:#FDF1F6;
  --shadow:0 1px 2px rgba(123,79,201,.08);
  --shadow-hover:0 8px 22px rgba(123,79,201,.16);
  --shadow-pop:0 10px 28px rgba(94,58,166,.22);
  --paper-grad:linear-gradient(172deg,#F8F2FC 0%,#F1E7F8 55%,#F6ECFA 100%);
  --grad-main:linear-gradient(135deg,#A77BE8 0%,#7B4FC9 52%,#5E3AA6 100%);
  --grad-page:linear-gradient(168deg,#8E5CD6 0%,#7B4FC9 55%,#4E2E8E 100%);
  --grad-soft:linear-gradient(135deg,#B28AE8 0%,#7B4FC9 100%);
  --accent:#7B4FC9;
  --accent-ink:#5A2FA6;
  --page-ink2:#F4ECFF;
  --nav-line:#E6D6FF;
}
/* ===== 主题：青野 ===== */
[data-theme="green"]{
  --paper:#F1F7F2;
  --card:#FCFFFC;
  --cream:#F3F9F4;
  --surface:#FFFFFF;
  --ink:#22352B;
  --ink-2:#5D7467;
  --ink-3:#98AB9E;
  --line:#DDEBE1;
  --line-2:#C6DCCE;
  --green:#2E7D5B;
  --green-2:#24664A;
  --green-soft:#E6F3EC;
  --green-line:#C9E4D6;
  --tomato:#D1603D;
  --tomato-dark:#B34A2C;
  --tomato-soft:#FBEAE2;
  --gold:#C79A3B;
  --gold-deep:#F6EEDB;
  --gold-soft:#F8F1DD;
  --gold-line:#E7D6AC;
  --gold-ink:#7E5D14;
  --danger-line:#E3CABD;
  --danger-soft:#FCF1EC;
  --shadow:0 1px 2px rgba(46,125,91,.08);
  --shadow-hover:0 8px 22px rgba(46,125,91,.16);
  --shadow-pop:0 10px 28px rgba(31,94,67,.22);
  --paper-grad:linear-gradient(172deg,#F4FAF6 0%,#EAF4EE 55%,#F2F9F4 100%);
  --grad-main:linear-gradient(135deg,#4FAF82 0%,#2E7D5B 55%,#1F5E43 100%);
  --grad-page:linear-gradient(168deg,#3F9A72 0%,#2E7D5B 55%,#1B523A 100%);
  --grad-soft:linear-gradient(135deg,#6CC49A 0%,#2E7D5B 100%);
  --accent:#2E7D5B;
  --accent-ink:#1F5E43;
  --page-ink2:#EAF7F0;
  --nav-line:#CDEBDD;
}
/* ===== 深色系：赤夜 ===== */
[data-theme="rednight"]{
  --paper:#171311;
  --card:#211B18;
  --cream:#291F1B;
  --surface:#2E231E;
  --ink:#F7EDE7;
  --ink-2:#C9B4A7;
  --ink-3:#947C6D;
  --line:#3A2B24;
  --line-2:#574036;
  --green:#F47A54;
  --green-2:#D95C3B;
  --green-soft:#3A2118;
  --green-line:#6A3726;
  --tomato:#FF8A66;
  --tomato-dark:#E06A47;
  --tomato-soft:#3D221A;
  --gold:#E0B36A;
  --gold-deep:#3B2D18;
  --gold-soft:#3A3020;
  --gold-line:#6D5628;
  --gold-ink:#E8C98D;
  --danger-line:#5E382C;
  --danger-soft:#35201A;
  --shadow:0 1px 3px rgba(0,0,0,.45);
  --shadow-hover:0 8px 22px rgba(0,0,0,.50);
  --shadow-pop:0 12px 30px rgba(0,0,0,.58);
  --paper-grad:linear-gradient(172deg,#171311 0%,#1E1815 100%);
  --grad-main:linear-gradient(135deg,#C25A36 0%,#A8452B 55%,#7E2F1F 100%);
  --grad-page:linear-gradient(168deg,#2A1B16 0%,#3A2119 55%,#4A2A1E 100%);
  --grad-soft:linear-gradient(135deg,#E08A5C 0%,#C25A36 100%);
  --accent:#F08A62;
  --accent-ink:#7A2E1A;
  --page-ink2:#F0D8CC;
  --nav-line:#FFC2A8;
}
/* ===== 深色系：暖夜 ===== */
[data-theme="warmnight"]{
  --paper:#15140F;
  --card:#1F1D16;
  --cream:#27241A;
  --surface:#2D291E;
  --ink:#F2EEDF;
  --ink-2:#C6BEA5;
  --ink-3:#91886F;
  --line:#363120;
  --line-2:#524A32;
  --green:#A8B36A;
  --green-2:#889455;
  --green-soft:#2C2A1B;
  --green-line:#4D4A2C;
  --tomato:#E07A50;
  --tomato-dark:#C25F39;
  --tomato-soft:#3A241A;
  --gold:#D9B36A;
  --gold-deep:#3A2E17;
  --gold-soft:#3A3220;
  --gold-line:#6A5524;
  --gold-ink:#E8C98D;
  --danger-line:#5C4632;
  --danger-soft:#33271A;
  --shadow:0 1px 3px rgba(0,0,0,.45);
  --shadow-hover:0 8px 22px rgba(0,0,0,.50);
  --shadow-pop:0 12px 30px rgba(0,0,0,.58);
  --paper-grad:linear-gradient(172deg,#15140F 0%,#1C1A13 100%);
  --grad-main:linear-gradient(135deg,#8C7A3C 0%,#6E5E2B 55%,#4F431D 100%);
  --grad-page:linear-gradient(168deg,#242116 0%,#332D1C 55%,#40381F 100%);
  --grad-soft:linear-gradient(135deg,#C0A85C 0%,#8C7A3C 100%);
  --accent:#D6C07A;
  --accent-ink:#5C4A1E;
  --page-ink2:#E8DFC8;
  --nav-line:#E4D5A8;
}
/* ===== 深色系：蓝夜 ===== */
[data-theme="bluenight"]{
  --paper:#0F151D;
  --card:#18212C;
  --cream:#1E2936;
  --surface:#243241;
  --ink:#E8F0F8;
  --ink-2:#AEBECD;
  --ink-3:#7D8FA2;
  --line:#2B3A4A;
  --line-2:#42586D;
  --green:#6FA8DC;
  --green-2:#4E8AC4;
  --green-soft:#1B2B3C;
  --green-line:#34526F;
  --tomato:#E26040;
  --tomato-dark:#C94B2E;
  --tomato-soft:#3A241A;
  --gold:#D9B36A;
  --gold-deep:#3A2E17;
  --gold-soft:#3A3220;
  --gold-line:#6A5524;
  --gold-ink:#E8C98D;
  --danger-line:#4A3A32;
  --danger-soft:#2A1F1A;
  --shadow:0 1px 3px rgba(0,0,0,.45);
  --shadow-hover:0 8px 22px rgba(0,0,0,.50);
  --shadow-pop:0 12px 30px rgba(0,0,0,.58);
  --paper-grad:linear-gradient(172deg,#0F151D 0%,#141C26 100%);
  --grad-main:linear-gradient(135deg,#3E6E9E 0%,#2E5680 55%,#1F3E60 100%);
  --grad-page:linear-gradient(168deg,#172533 0%,#1F3549 55%,#28445E 100%);
  --grad-soft:linear-gradient(135deg,#5B8FC2 0%,#3E6E9E 100%);
  --accent:#8FC2F0;
  --accent-ink:#1F4A73;
  --page-ink2:#D6E5F2;
  --nav-line:#BFE0FF;
}
/* ===== 深色系：紫夜 ===== */
[data-theme="purplenight"]{
  --paper:#14101B;
  --card:#1E1828;
  --cream:#251D32;
  --surface:#2C223B;
  --ink:#F0E9F8;
  --ink-2:#C0B0D4;
  --ink-3:#8C7AA3;
  --line:#342A45;
  --line-2:#4E3E65;
  --green:#B18AEE;
  --green-2:#8E64D4;
  --green-soft:#2A1F3B;
  --green-line:#4A3565;
  --tomato:#E26040;
  --tomato-dark:#C94B2E;
  --tomato-soft:#3A241A;
  --gold:#D9B36A;
  --gold-deep:#3A2E17;
  --gold-soft:#3A3220;
  --gold-line:#6A5524;
  --gold-ink:#E8C98D;
  --danger-line:#4E3550;
  --danger-soft:#2B1D33;
  --shadow:0 1px 3px rgba(0,0,0,.45);
  --shadow-hover:0 8px 22px rgba(0,0,0,.50);
  --shadow-pop:0 12px 30px rgba(0,0,0,.58);
  --paper-grad:linear-gradient(172deg,#14101B 0%,#1A1422 100%);
  --grad-main:linear-gradient(135deg,#6E4AA8 0%,#553586 55%,#3D2366 100%);
  --grad-page:linear-gradient(168deg,#22182F 0%,#302040 55%,#3F2A55 100%);
  --grad-soft:linear-gradient(135deg,#8E64D4 0%,#6E4AA8 100%);
  --accent:#C6A6F2;
  --accent-ink:#4A2A7A;
  --page-ink2:#E8DCF7;
  --nav-line:#DCC8FF;
}
/* ===== 深色系：青夜 ===== */
[data-theme="greennight"]{
  --paper:#0F1713;
  --card:#16231C;
  --cream:#1B2B22;
  --surface:#203329;
  --ink:#E8F4EC;
  --ink-2:#AFC6B8;
  --ink-3:#7E9A8A;
  --line:#293D31;
  --line-2:#3E5B49;
  --green:#6FC59A;
  --green-2:#4EA77C;
  --green-soft:#1B3326;
  --green-line:#315C45;
  --tomato:#E26040;
  --tomato-dark:#C94B2E;
  --tomato-soft:#3A241A;
  --gold:#D9B36A;
  --gold-deep:#3A2E17;
  --gold-soft:#3A3220;
  --gold-line:#6A5524;
  --gold-ink:#E8C98D;
  --danger-line:#3B4A3B;
  --danger-soft:#202A22;
  --shadow:0 1px 3px rgba(0,0,0,.45);
  --shadow-hover:0 8px 22px rgba(0,0,0,.50);
  --shadow-pop:0 12px 30px rgba(0,0,0,.58);
  --paper-grad:linear-gradient(172deg,#0F1713 0%,#142019 100%);
  --grad-main:linear-gradient(135deg,#2F7A58 0%,#246348 55%,#184A34 100%);
  --grad-page:linear-gradient(168deg,#172A20 0%,#1F3A2B 55%,#284A37 100%);
  --grad-soft:linear-gradient(135deg,#4EA77C 0%,#2F7A58 100%);
  --accent:#8AD9B2;
  --accent-ink:#1D5A3E;
  --page-ink2:#D8F0E2;
  --nav-line:#C2F0D8;
}
/* ===== 珍藏主题：霞光 ===== */
[data-theme="sunset"]{
  --paper:#FFF0E7;
  --card:#FFFCF9;
  --cream:#FFF4EC;
  --surface:#FFFFFF;
  --ink:#3B2523;
  --ink-2:#8F6258;
  --ink-3:#B58A7D;
  --line:#F3D7C7;
  --line-2:#E9BFAC;
  --green:#D95B45;
  --green-2:#B83A44;
  --green-soft:#FCE8DD;
  --green-line:#F1C5B2;
  --tomato:#C94A44;
  --tomato-dark:#A73542;
  --tomato-soft:#FBE6E1;
  --gold:#D6A13E;
  --gold-deep:#F8E9C8;
  --gold-soft:#FAF0D8;
  --gold-line:#EAD3A2;
  --gold-ink:#8A6118;
  --danger-line:#E8C5B9;
  --danger-soft:#FCEFE9;
  --shadow:0 1px 2px rgba(217,91,69,.10);
  --shadow-hover:0 10px 26px rgba(201,74,68,.18);
  --shadow-pop:0 14px 34px rgba(184,58,68,.24);
  --paper-grad:linear-gradient(172deg,#FFF5EC 0%,#FFECE2 44%,#FCE4E8 100%);
  --grad-main:linear-gradient(135deg,#FFB45E 0%,#E96B58 48%,#C94A6A 100%);
  --grad-page:linear-gradient(168deg,#FFC06A 0%,#F58A61 38%,#E36A74 70%,#C94A76 100%);
  --grad-soft:linear-gradient(135deg,#FFC27A 0%,#D95B65 100%);
  --accent:#C94A5D;
  --accent-ink:#9E2F43;
  --page-ink2:#FFF1E8;
  --nav-line:#FFE7C9;
}
/* ===== 珍藏主题：青黛 ===== */
[data-theme="jade"]{
  --paper:#EDF4ED;
  --card:#FCFFFA;
  --cream:#F1F7F0;
  --surface:#FFFFFF;
  --ink:#23352C;
  --ink-2:#5F7568;
  --ink-3:#8EA295;
  --line:#D8E6DA;
  --line-2:#BFD3C2;
  --green:#327A61;
  --green-2:#245E4B;
  --green-soft:#E6F2E9;
  --green-line:#C6DFCF;
  --tomato:#B65A4A;
  --tomato-dark:#934334;
  --tomato-soft:#F7E9E3;
  --gold:#B58C47;
  --gold-deep:#F5EBD8;
  --gold-soft:#F7F0DF;
  --gold-line:#E3D2AE;
  --gold-ink:#75561D;
  --danger-line:#D8C9BC;
  --danger-soft:#F7F0E9;
  --shadow:0 1px 2px rgba(50,122,97,.09);
  --shadow-hover:0 10px 25px rgba(36,94,75,.16);
  --shadow-pop:0 13px 32px rgba(36,94,75,.20);
  --paper-grad:linear-gradient(172deg,#F1F7F1 0%,#EAF3EA 48%,#E4F0E8 100%);
  --grad-main:linear-gradient(135deg,#5B9C7D 0%,#327A61 48%,#1E5C49 100%);
  --grad-page:linear-gradient(168deg,#76AD8D 0%,#4C8C71 40%,#2D6B56 72%,#1D5342 100%);
  --grad-soft:linear-gradient(135deg,#7BB697 0%,#327A61 100%);
  --accent:#236A52;
  --accent-ink:#174A39;
  --page-ink2:#E4F4EA;
  --nav-line:#D6F0E0;
}
/* ===== 珍藏主题：胭脂 ===== */
[data-theme="rose"]{
  --paper:#FAEEF1;
  --card:#FFFAFB;
  --cream:#FCF0F3;
  --surface:#FFFFFF;
  --ink:#3D2430;
  --ink-2:#916477;
  --ink-3:#B78C9C;
  --line:#EFD6DF;
  --line-2:#E1BDCA;
  --green:#B54B6B;
  --green-2:#8E3555;
  --green-soft:#FAE5EC;
  --green-line:#EFC5D3;
  --tomato:#AF3F52;
  --tomato-dark:#8D2C3E;
  --tomato-soft:#F9E4E7;
  --gold:#C6944C;
  --gold-deep:#F6E8D2;
  --gold-soft:#F9F0E2;
  --gold-line:#E6D0AC;
  --gold-ink:#7E5A20;
  --danger-line:#E4C4CC;
  --danger-soft:#F9ECEF;
  --shadow:0 1px 2px rgba(181,75,107,.10);
  --shadow-hover:0 10px 26px rgba(142,53,85,.17);
  --shadow-pop:0 14px 34px rgba(142,53,85,.22);
  --paper-grad:linear-gradient(172deg,#FCF1F4 0%,#F9E9EE 48%,#F6E3EB 100%);
  --grad-main:linear-gradient(135deg,#E88AA1 0%,#C45A7A 48%,#983653 100%);
  --grad-page:linear-gradient(168deg,#F0A0B2 0%,#D97896 38%,#B45274 72%,#8E3553 100%);
  --grad-soft:linear-gradient(135deg,#EF9DB2 0%,#B54B6B 100%);
  --accent:#A33B5C;
  --accent-ink:#762541;
  --page-ink2:#FBEAF0;
  --nav-line:#FADCE6;
}
/* ===== 珍藏主题：星夜 ===== */
[data-theme="midnight"]{
  --paper:#0A1220;
  --card:#121C2E;
  --cream:#18243A;
  --surface:#1C2A42;
  --ink:#EDF1FA;
  --ink-2:#A3B2CC;
  --ink-3:#7183A2;
  --line:#25334B;
  --line-2:#354865;
  --green:#7FA8F5;
  --green-2:#6387D8;
  --green-soft:#1A2A46;
  --green-line:#34527E;
  --tomato:#F0846A;
  --tomato-dark:#D66A54;
  --tomato-soft:#3A2427;
  --gold:#D9B86C;
  --gold-deep:#3A301C;
  --gold-soft:#3C3320;
  --gold-line:#6A582A;
  --gold-ink:#EAD29A;
  --danger-line:#3A3D52;
  --danger-soft:#241F2E;
  --shadow:0 1px 3px rgba(0,0,0,.48);
  --shadow-hover:0 10px 28px rgba(0,0,0,.55);
  --shadow-pop:0 15px 38px rgba(0,0,0,.62);
  --paper-grad:linear-gradient(172deg,#0B1422 0%,#101C30 55%,#141F36 100%);
  --grad-main:linear-gradient(135deg,#3A5D9E 0%,#554A9E 50%,#7A3F8E 100%);
  --grad-page:linear-gradient(168deg,#152A4A 0%,#28355C 42%,#473B70 72%,#5A3670 100%);
  --grad-soft:linear-gradient(135deg,#6F92DA 0%,#8157B8 100%);
  --accent:#A9C4FF;
  --accent-ink:#263E69;
  --page-ink2:#DCE8FF;
  --nav-line:#D8E4FF;
}
/* ===== 珍藏主题：樱花 ===== */
[data-theme="sakura"]{
  --paper:#FBF0F3;
  --card:#FFFBFB;
  --cream:#FDF2F4;
  --surface:#FFFFFF;
  --ink:#3E2530;
  --ink-2:#956879;
  --ink-3:#BE96A4;
  --line:#F1D8DF;
  --line-2:#E4C0CB;
  --green:#C25A7C;
  --green-2:#A13F62;
  --green-soft:#FAE6EC;
  --green-line:#EFCAD6;
  --tomato:#B44A55;
  --tomato-dark:#96323E;
  --tomato-soft:#F9E6E7;
  --gold:#C99A54;
  --gold-deep:#F6EAD7;
  --gold-soft:#F9F0E1;
  --gold-line:#E6D2B1;
  --gold-ink:#7E5B23;
  --danger-line:#E4C5CC;
  --danger-soft:#F9ECEF;
  --shadow:0 1px 2px rgba(194,90,124,.10);
  --shadow-hover:0 10px 26px rgba(161,63,98,.16);
  --shadow-pop:0 14px 34px rgba(161,63,98,.20);
  --paper-grad:linear-gradient(172deg,#FDF3F5 0%,#FAE9EE 48%,#F7E3EB 100%);
  --grad-main:linear-gradient(135deg,#EBA0B4 0%,#C96787 50%,#A74668 100%);
  --grad-page:linear-gradient(168deg,#F3B2C3 0%,#DD8AA5 38%,#C46688 72%,#A74668 100%);
  --grad-soft:linear-gradient(135deg,#F0A7BA 0%,#C25A7C 100%);
  --accent:#A94B6C;
  --accent-ink:#762C49;
  --page-ink2:#FBEAEF;
  --nav-line:#FADCE6;
}
/* ===== 珍藏主题：墨韵 ===== */
[data-theme="ink"]{
  --paper:#F2F0EA;
  --card:#FDFCF8;
  --cream:#F7F4EC;
  --surface:#FFFFFF;
  --ink:#242321;
  --ink-2:#6F6A60;
  --ink-3:#9D968A;
  --line:#E0DCD0;
  --line-2:#CFC8B8;
  --green:#3F4B46;
  --green-2:#8E3A2E;
  --green-soft:#E9E5DB;
  --green-line:#D5CEBE;
  --tomato:#8E3A2E;
  --tomato-dark:#72291F;
  --tomato-soft:#F2E5DF;
  --gold:#B88B3E;
  --gold-deep:#F1E6CF;
  --gold-soft:#F5EDDC;
  --gold-line:#E2D0AD;
  --gold-ink:#74551D;
  --danger-line:#D9C9BC;
  --danger-soft:#F4ECE6;
  --shadow:0 1px 2px rgba(36,35,33,.10);
  --shadow-hover:0 10px 25px rgba(36,35,33,.16);
  --shadow-pop:0 13px 32px rgba(36,35,33,.20);
  --paper-grad:linear-gradient(172deg,#F5F2EB 0%,#EFECE3 52%,#EAE6DB 100%);
  --grad-main:linear-gradient(135deg,#5B5A54 0%,#3F3E39 52%,#8E3A2E 100%);
  --grad-page:linear-gradient(168deg,#77746B 0%,#5B574E 40%,#3F3B35 72%,#2C2926 100%);
  --grad-soft:linear-gradient(135deg,#8B8679 0%,#3F4B46 100%);
  --accent:#8E3A2E;
  --accent-ink:#64251C;
  --page-ink2:#F3EBDD;
  --nav-line:#EAD7C2;
}
/* ===== 珍藏主题：极光 ===== */
[data-theme="aurora"]{
  --paper:#081318;
  --card:#0E1E25;
  --cream:#132A31;
  --surface:#18333B;
  --ink:#E7F7F4;
  --ink-2:#9DC3BE;
  --ink-3:#6F9692;
  --line:#1B3A42;
  --line-2:#28535B;
  --green:#69E0C4;
  --green-2:#4BBFA8;
  --green-soft:#0E2D2A;
  --green-line:#24635A;
  --tomato:#F08A78;
  --tomato-dark:#D06A59;
  --tomato-soft:#3A2321;
  --gold:#D9C06A;
  --gold-deep:#3A331C;
  --gold-soft:#3C3620;
  --gold-line:#6A5D2A;
  --gold-ink:#EAD59A;
  --danger-line:#33434A;
  --danger-soft:#23242E;
  --shadow:0 1px 3px rgba(0,0,0,.50);
  --shadow-hover:0 10px 28px rgba(0,0,0,.58);
  --shadow-pop:0 15px 38px rgba(0,0,0,.65);
  --paper-grad:linear-gradient(172deg,#09151A 0%,#0D2026 55%,#11282F 100%);
  --grad-main:linear-gradient(135deg,#0E8C7A 0%,#2E7FA0 48%,#574CB8 100%);
  --grad-page:linear-gradient(168deg,#0D3B3A 0%,#13545A 38%,#2D4A78 72%,#4A3B82 100%);
  --grad-soft:linear-gradient(135deg,#54D6B8 0%,#5B6ED6 100%);
  --accent:#8BE8D4;
  --accent-ink:#0F4A43;
  --page-ink2:#DDFCF5;
  --nav-line:#D4FFF5;
}
/* ===== 珍藏主题：琥珀 ===== */
[data-theme="amber"]{
  --paper:#171009;
  --card:#24180D;
  --cream:#2C1E10;
  --surface:#352414;
  --ink:#F8E9CF;
  --ink-2:#C6AA80;
  --ink-3:#947651;
  --line:#3A2817;
  --line-2:#533B22;
  --green:#D9A441;
  --green-2:#B57A2C;
  --green-soft:#33220F;
  --green-line:#5C421F;
  --tomato:#E2704A;
  --tomato-dark:#C45533;
  --tomato-soft:#3B2519;
  --gold:#E0B85F;
  --gold-deep:#3D2F17;
  --gold-soft:#42331B;
  --gold-line:#725B2A;
  --gold-ink:#F0D69C;
  --danger-line:#463527;
  --danger-soft:#2C2119;
  --shadow:0 1px 3px rgba(0,0,0,.46);
  --shadow-hover:0 10px 28px rgba(0,0,0,.54);
  --shadow-pop:0 15px 38px rgba(0,0,0,.62);
  --paper-grad:linear-gradient(172deg,#181008 0%,#21170C 52%,#2A1C0F 100%);
  --grad-main:linear-gradient(135deg,#7B4C1D 0%,#B87A2E 52%,#D9A441 100%);
  --grad-page:linear-gradient(168deg,#38240F 0%,#573616 42%,#7B4B1D 72%,#9A6423 100%);
  --grad-soft:linear-gradient(135deg,#D6A34C 0%,#8E5A23 100%);
  --accent:#F0C06A;
  --accent-ink:#4A2C0B;
  --page-ink2:#FBEACB;
  --nav-line:#FFE3B0;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:"Microsoft YaHei","PingFang SC","Noto Sans SC","Source Han Sans SC",sans-serif;background:var(--paper-grad);background-attachment:fixed;color:var(--ink);font-size:15px;line-height:1.65;-webkit-text-size-adjust:100%}
button{font-family:inherit}
h1,h2,h3{margin:0}
::selection{background:var(--green);color:var(--cream)}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* ===== 顶栏（渐变底 + 白色文字，随主题） ===== */
.app-header{background:var(--grad-main);color:#fff;position:sticky;top:0;z-index:50;box-shadow:0 2px 10px rgba(0,0,0,.12)}
.app-header .inner{max-width:1080px;margin:0 auto;padding:14px 16px 0;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:0 16px}
/* 右上角容器：账号区（登录功能）+ 主题快捷切换（登录功能后面），与标题同行右对齐 */
.top-right{margin-left:auto;display:flex;align-items:center;gap:14px;z-index:60}
/* 主题快捷切换（右上角登录功能后面） */
.theme-quick{position:relative}
/* 登录区与主题切换之间的轻分隔线 */
.top-right .theme-quick::before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:1px;height:18px;background:rgba(255,255,255,.32);border-radius:1px}
.theme-quick-btn{display:inline-flex;align-items:center;gap:7px;background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.5);color:#fff;font-size:12.5px;padding:3px 12px;border-radius:999px;cursor:pointer;transition:background .15s}
.theme-quick-btn:hover{background:rgba(255,255,255,.3)}
.theme-quick-btn .tq-dot{width:11px;height:11px;border-radius:50%;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.65)}
.theme-quick-btn .tq-name{font-weight:600;line-height:1}
.theme-quick-btn .tq-arrow{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid rgba(255,255,255,.85);margin-top:1px}
.theme-quick-menu{position:absolute;right:0;top:calc(100% + 8px);min-width:150px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-pop);padding:6px;display:none;z-index:80}
.theme-quick-menu.show{display:block}
.theme-quick-menu button{display:flex;align-items:center;gap:9px;width:100%;border:none;background:transparent;color:var(--ink);font-size:13.5px;padding:8px 10px;border-radius:10px;cursor:pointer;text-align:left}
.theme-quick-menu button:hover{background:var(--green-soft)}
.theme-quick-menu button.active{font-weight:700}
.theme-quick-menu .tq-dot{width:13px;height:13px;border-radius:50%;flex:none}
.theme-quick-menu .tq-check{margin-left:auto;color:var(--green);font-weight:700;font-size:12px}
.theme-quick-menu .tq-paid{margin-left:auto;padding:1px 4px;border-radius:4px;background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line);font-size:7px;line-height:1.5;font-weight:800}
.theme-quick-menu .tq-paid + .tq-check{margin-left:3px}
/* 右上角账号区（服务器版） */
.account{display:flex;align-items:center;gap:10px;font-size:13px;color:#fff}
.account a{color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.account .account-no{color:rgba(255,255,255,.88);font-weight:400}
.account .account-reg{display:inline-flex;align-items:center;gap:3px}
.account .account-user{font-weight:700;background:rgba(255,255,255,.18);padding:3px 10px;border-radius:999px;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account .btn-logout{background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.5);color:#fff;font-size:12.5px;padding:3px 12px;border-radius:999px;cursor:pointer;transition:background .15s}
.account .btn-logout:hover{background:rgba(255,255,255,.3)}
/* 圆形头像（账号区/注册预览通用） */
.avatar-circle{width:36px;height:36px;flex:none;border-radius:50%;overflow:hidden;background:var(--accent);box-shadow:0 0 0 2px rgba(255,255,255,.55);display:inline-flex;align-items:center;justify-content:center}
.avatar-circle .avatar-img{width:100%;height:100%;object-fit:cover;display:block}
.avatar-circle .avatar-ph{color:#fff;font-size:16px;font-weight:700;line-height:1}
/* 注册弹层内的头像选择区 */
.auth-avatar{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;margin:2px 0 14px}
.auth-avatar-preview{width:64px;height:64px;flex:none;border-radius:50%;overflow:hidden;background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 2px rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s,box-shadow .15s}
.auth-avatar-preview:hover{transform:scale(1.06);box-shadow:inset 0 0 0 2px rgba(255,255,255,.55),0 0 0 4px rgba(255,255,255,.22)}
.auth-avatar-preview .avatar-img{width:100%;height:100%;object-fit:cover;display:block}
.auth-avatar-preview .avatar-ph{color:rgba(255,255,255,.85);font-size:24px;font-weight:700}
.auth-avatar-plus{font-size:30px;font-weight:300;color:rgba(255,255,255,.92);line-height:1;user-select:none}
.auth-avatar-hint{margin:0;font-size:12px;color:rgba(255,255,255,.72)}
.brand{font-family:KaiTi,"STKaiti","楷体",serif;font-size:24px;font-weight:700;letter-spacing:1px;line-height:1.2;display:flex;align-items:center;gap:8px;color:#fff}
.brand small{font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:12px;font-weight:400;opacity:.78;margin-left:6px;letter-spacing:0}
.nav{flex-basis:100%;display:flex;gap:2px;margin-top:12px;overflow-x:auto;scrollbar-width:none}
.nav::-webkit-scrollbar{display:none}
.nav-item{flex:1;min-width:0;text-align:center;padding:10px 2px 12px;color:rgba(255,255,255,.78);background:none;border:none;border-bottom:3px solid transparent;font-size:14px;cursor:pointer;white-space:nowrap;transition:color .18s,border-color .18s}
.nav-item:hover{color:#fff}
.nav-item.active{color:#fff;border-bottom-color:var(--nav-line);font-weight:700}
.nav-short{display:none}
/* ===== 非首页视图：统一浅色底（不再铺整块渐变） ===== */
#view-dish.active{padding:2px 0 8px}
/* ===== 主区 ===== */
main{max-width:1080px;margin:0 auto;padding:20px 16px 0}
/* 首页深色渐变直接接到页脚，避免 72px 底部留白 */
body.home-page main{padding-bottom:0}
.view{display:none}
.view.active{display:block;animation:fadeIn .22s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius-lg);padding:18px;margin-bottom:14px;box-shadow:var(--shadow);position:relative;transition:box-shadow .18s,transform .18s,border-color .18s}
.card:hover{box-shadow:var(--shadow-hover);border-color:var(--line-2);transform:translateY(-2px)}
.card h2{font-size:17px;margin:0 0 2px;display:flex;align-items:center;gap:8px}
.card>h2::before{content:"";width:4px;height:16px;border-radius:2px;background:var(--green);flex:none}
/* 列表头里的标题不是卡片直接子元素，单独补竖线（如管理页「最近操作」） */
.card .list-head h2::before{content:"";width:4px;height:16px;border-radius:2px;background:var(--green);flex:none}
.list-head{display:flex;align-items:center;gap:8px}
.list-head>.badge{flex:none;white-space:nowrap}
.list-head-actions{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.list-head .icon-btn{margin-left:0}
.list-head .icon-btn:first-of-type{margin-left:auto}
.list-head .count-badge{margin-left:0}
.card .sub{color:var(--ink-2);font-size:13px;margin:0 0 12px}
.count-badge{display:inline-block;margin-left:8px;padding:1px 10px;border-radius:999px;background:var(--green-soft);color:var(--green);font-size:12px;vertical-align:middle}
.muted{color:var(--ink-2)}
.hint{font-size:12px;color:var(--ink-2);margin-top:10px;line-height:2;letter-spacing:.02em}

/* ===== 设置页：主题选择 ===== */
.theme-grid{display:grid;grid-template-columns:1fr;gap:10px}
@media(min-width:640px){.theme-grid{grid-template-columns:repeat(3,1fr)}}
.theme-opt{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;text-align:left;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px;cursor:pointer;font-family:inherit;transition:border-color .18s,box-shadow .18s,transform .12s}
.theme-opt:hover{border-color:var(--green-line);box-shadow:var(--shadow)}
.theme-opt:active{transform:translateY(1px)}
.theme-opt.active{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft)}
.theme-swatches{display:flex;gap:5px}
.theme-swatches i{width:22px;height:22px;border-radius:50%;border:1px solid rgba(0,0,0,.12);display:block;flex:none}
.theme-name{font-size:14px;font-weight:600;color:var(--ink)}
.theme-paid-tag{display:inline-flex;margin-left:5px;padding:1px 5px;border-radius:999px;background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line);font-size:8px;font-style:normal;font-weight:800;vertical-align:1px}
.theme-opt.locked{opacity:.72}
.theme-opt.locked .theme-swatches{filter:saturate(.7)}
.theme-lock{position:absolute;right:9px;bottom:9px;padding:1px 5px;border-radius:999px;background:var(--ink);color:var(--paper);font-size:8px;font-weight:700}
.theme-paid-grid{margin-top:6px}
.theme-stage{margin-bottom:14px;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--paper-grad);color:var(--ink);box-shadow:0 8px 22px color-mix(in srgb,var(--ink) 8%,transparent)}
.theme-stage-compact{display:flex;flex-direction:column;gap:0;width:min(100%,460px);margin-bottom:12px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper-grad);color:var(--ink);box-shadow:0 5px 14px color-mix(in srgb,var(--ink) 8%,transparent)}
.theme-compact-bar{display:flex;align-items:center;gap:4px;padding:7px 10px;background:var(--grad-main);color:#fff;font-size:9px;font-weight:800}
.theme-compact-bar i{width:4px;height:4px;border-radius:50%;background:rgba(255,255,255,.65)}
.theme-compact-bar i:first-of-type{margin-left:auto}
.theme-compact-body{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px 9px}
.theme-compact-body>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.theme-compact-kicker{font-size:7.5px;font-weight:800;letter-spacing:.1em;color:var(--accent);text-transform:uppercase}
.theme-compact-body b{font-size:16px;line-height:1.25;color:var(--ink)}
.theme-compact-body span:not(.theme-compact-kicker){font-size:8.5px;color:var(--ink-3)}
.theme-compact-body button{padding:6px 9px;border:0;border-radius:7px;background:var(--accent);color:#fff;font-size:8px;font-weight:700;pointer-events:none;flex:none}
.theme-compact-meta{display:flex;align-items:center;gap:6px;padding:8px 11px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--card) 78%,transparent)}
.theme-compact-meta>div{display:flex;align-items:center;gap:5px;flex-wrap:wrap;min-width:0;flex:1}
.theme-compact-meta b{font-size:11px;color:var(--ink)}
.theme-compact-meta span{font-size:8px;color:var(--ink-3)}
.theme-compact-meta em{font-style:normal;padding:1px 4px;border-radius:999px;background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line);font-size:6.5px;font-weight:800}
.theme-compact-meta strong{font-size:8px;color:var(--green);font-weight:700;white-space:nowrap}
.theme-layout{grid-template-columns:minmax(0,1.45fr) minmax(0,1fr)}
.theme-option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.theme-paid-list{grid-template-columns:repeat(2,minmax(0,1fr))}
.theme-option-grid .theme-opt{padding:10px;border-radius:11px}
.theme-option-grid .theme-name{font-size:12.5px}
.theme-option-grid .theme-desc{font-size:9px;line-height:1.45}
@media(max-width:900px){.theme-layout{grid-template-columns:1fr}.theme-paid-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.theme-option-grid,.theme-paid-list{grid-template-columns:1fr}.theme-stage-compact{width:100%}}
.theme-current-line{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:6px 9px;margin-bottom:7px;border:1px solid var(--line);border-radius:8px;background:var(--paper);font-size:9.5px;color:var(--ink-3)}
.theme-current-line b{font-size:11.5px;color:var(--ink)}
.theme-current-line em{font-style:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.theme-current-line i{font-style:normal;padding:1px 5px;border-radius:999px;background:var(--gold-soft);border:1px solid var(--gold-line);color:var(--gold-ink);font-size:8px;font-weight:700}
.theme-flat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.theme-flat-grid .theme-opt{padding:6px 7px;border-radius:8px;min-height:0}
.theme-flat-grid .theme-name{font-size:11px}
.theme-flat-grid .theme-desc{font-size:8px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.theme-paid-title{margin-top:8px}
.theme-stage-mini{width:100%;margin-bottom:8px;border-radius:10px;box-shadow:0 3px 9px color-mix(in srgb,var(--ink) 7%,transparent)}
.theme-stage-mini .theme-compact-bar{padding:5px 8px;font-size:8px}
.theme-stage-mini .theme-compact-body{padding:7px 9px 6px}
.theme-stage-mini .theme-compact-body b{font-size:14px}
.theme-stage-mini .theme-compact-body span:not(.theme-compact-kicker){font-size:7.5px}
.theme-stage-mini .theme-compact-body button{padding:5px 7px;font-size:7px}
.theme-stage-mini .theme-compact-meta{padding:5px 8px}
.theme-stage-mini .theme-compact-meta b{font-size:10px}
.theme-stage-mini .theme-compact-meta span{font-size:7px}
@media(max-width:1100px){.theme-flat-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.theme-flat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.theme-flat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.theme-stage-page{padding:12px 14px 14px}
.theme-stage-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:9px;background:var(--grad-main);color:#fff;font-size:9px}
.theme-stage-brand{font-weight:800;letter-spacing:.04em}
.theme-stage-nav{opacity:.78;font-size:8px}
.theme-stage-body{display:grid;grid-template-columns:1.2fr .8fr;gap:10px;align-items:center;padding:14px 2px 2px}
.theme-stage-copy{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.theme-stage-kicker{font-size:8px;font-weight:800;letter-spacing:.1em;color:var(--accent);text-transform:uppercase}
.theme-stage-copy b{font-size:22px;line-height:1.2;color:var(--ink);letter-spacing:.02em}
.theme-stage-copy>span:not(.theme-stage-kicker){font-size:9px;color:var(--ink-3)}
.theme-stage-copy button{margin-top:7px;padding:7px 11px;border:0;border-radius:8px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;pointer-events:none}
.theme-stage-card{display:flex;flex-direction:column;gap:4px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--card);box-shadow:0 5px 14px color-mix(in srgb,var(--ink) 10%,transparent)}
.theme-stage-card span{font-size:8px;color:var(--ink-3);font-weight:700;letter-spacing:.06em}
.theme-stage-card b{font-size:10px;color:var(--ink)}
.theme-stage-card i{font-style:normal;align-self:flex-start;margin-top:2px;padding:3px 6px;border-radius:999px;background:var(--green-soft);color:var(--accent);font-size:8px;font-weight:700}
.theme-stage-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--card) 80%,transparent)}
.theme-stage-meta>div{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}
.theme-stage-meta b{font-size:13px;color:var(--ink)}
.theme-stage-meta span{font-size:9px;color:var(--ink-3)}
.theme-stage-meta em{font-style:normal;padding:1px 5px;border-radius:999px;background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line);font-size:7px;font-weight:800}
.theme-stage-current{font-size:9px;color:var(--green);font-weight:700}
.theme-current-tag{position:absolute;left:9px;bottom:8px;padding:1px 5px;border-radius:999px;background:var(--green-soft);color:var(--green);font-size:7.5px;font-weight:700}
.theme-opt.current{border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}
.theme-preview{position:relative;display:block;width:46px;height:46px;flex:none;border-radius:12px;background:var(--paper);border:1px solid var(--line);overflow:hidden}
.theme-preview i{position:absolute;inset:0;background:var(--grad-main);opacity:.9}
.theme-preview b{position:absolute;left:6px;bottom:6px;width:21px;height:11px;border-radius:3px;background:var(--card);box-shadow:0 1px 3px rgba(0,0,0,.18)}
.theme-preview em{position:absolute;right:6px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--card) 70%,transparent)}
.center-item-actions{display:inline-flex;align-items:center;gap:4px}
.theme-preview-mask{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(20,14,12,.62);backdrop-filter:blur(8px)}
.theme-preview-box{width:min(480px,94vw);overflow:hidden;border:1px solid var(--line);border-radius:20px;background:var(--paper-grad);color:var(--ink);box-shadow:0 28px 70px rgba(0,0,0,.36)}
.theme-preview-hero{display:flex;flex-direction:column;align-items:center;gap:4px;padding:26px 20px;background:var(--grad-main);color:#fff;text-align:center}
.theme-preview-kicker{font-size:9px;font-weight:800;letter-spacing:.12em;opacity:.8}
.theme-preview-hero b{font-size:24px;letter-spacing:.03em}
.theme-preview-hero span{font-size:10px;opacity:.78}
.theme-preview-page{padding:14px 18px 18px}
.theme-preview-line{display:flex;gap:5px;margin-bottom:10px}
.theme-preview-line i{height:5px;flex:1;border-radius:99px;background:var(--line)}
.theme-preview-line i:first-child{flex:1.6;background:var(--accent)}
.theme-preview-card{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:0 6px 16px color-mix(in srgb,var(--ink) 10%,transparent)}
.theme-preview-card b{font-size:14px}
.theme-preview-card span{font-size:10px;color:var(--ink-3)}
.theme-preview-card em{font-style:normal;align-self:flex-start;margin-top:5px;padding:4px 8px;border-radius:999px;background:var(--green-soft);color:var(--accent);font-size:9px;font-weight:700}
.theme-preview-actions{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;font-size:10px;color:var(--ink-2)}
.theme-preview-actions strong{padding:8px 12px;border-radius:9px;background:var(--grad-main);color:#fff;font-size:10px}
.theme-preview-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 18px;border-top:1px solid var(--line);color:var(--ink-2);font-size:11px}

/* 右上角头像：快速更换头像框 */
.account{position:relative}
.account-avatar-btn{appearance:none;border:0;background:transparent;padding:0;margin:0;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex:none;border-radius:50%}
.account-avatar-btn:focus-visible{outline:2px solid rgba(255,255,255,.85);outline-offset:4px}
.frame-picker{position:absolute;right:0;top:calc(100% + 9px);z-index:120;width:min(330px,92vw);max-height:calc(100vh - 88px);overflow-y:auto;overscroll-behavior:contain;padding:0;border:1px solid color-mix(in srgb,var(--green) 22%,var(--line));border-radius:17px;background:linear-gradient(180deg,color-mix(in srgb,var(--card) 94%,var(--green) 6%) 0%,color-mix(in srgb,var(--card) 86%,var(--green) 14%) 100%);color:var(--ink);box-shadow:0 22px 54px rgba(30,20,12,.26),inset 0 1px 0 rgba(255,255,255,.28);-webkit-backdrop-filter:blur(14px) saturate(1.05);backdrop-filter:blur(14px) saturate(1.05)}
.frame-picker::before{content:"";position:absolute;right:27px;top:-5px;width:9px;height:9px;transform:rotate(45deg);background:color-mix(in srgb,var(--card) 92%,var(--green) 8%);border-left:1px solid color-mix(in srgb,var(--green) 22%,var(--line));border-top:1px solid color-mix(in srgb,var(--green) 22%,var(--line))}
.frame-picker-head{margin:0!important;padding:13px 15px 11px!important}
.frame-picker-head .account-menu-kicker{font-size:11px}
.frame-picker-close{width:28px;height:28px;border:1px solid var(--line);border-radius:9px;background:color-mix(in srgb,var(--paper) 82%,transparent);color:var(--ink-3);font-size:16px;line-height:1;cursor:pointer;padding:0;flex:none}
.frame-picker-close:hover{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}
.frame-picker-content{padding:9px 13px 2px}
.frame-picker-section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 2px 7px;font-size:9px;font-weight:800;letter-spacing:.10em;color:var(--ink-3)}
.frame-picker-section-title span{font-size:8px;font-weight:500;letter-spacing:0;color:var(--ink-3);opacity:.8}
.frame-picker-medal-title{margin-top:5px;border-top:1px dashed color-mix(in srgb,var(--line) 82%,transparent);padding-top:10px}
.frame-picker-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.frame-choice{position:relative;display:flex;flex-direction:column;align-items:center;gap:5px;padding:9px 4px 7px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--paper) 82%,transparent);cursor:pointer;font:inherit;color:var(--ink-2);transition:border-color .15s,background .15s}
.frame-choice:hover{border-color:var(--accent);background:var(--cream)}
.frame-choice.active{border-color:var(--accent);background:var(--green-soft)}
.frame-choice .avatar-circle{width:31px;height:31px}
.frame-choice .avatar-ph{font-size:12px}
.frame-choice small{font-size:8px;line-height:1.2;text-align:center;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.frame-choice em{position:absolute;top:3px;right:3px;padding:1px 3px;border-radius:4px;background:var(--accent);color:#fff;font-style:normal;font-size:6.5px;line-height:1.4}
.medal-choice-icon{--ma:#E7C65A;--mb:#A66E16;position:relative;width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--ma),var(--mb));border:1px solid rgba(255,255,255,.8);box-shadow:0 2px 7px color-mix(in srgb,var(--mb) 30%,transparent),inset 0 1px 1px rgba(255,255,255,.45);color:#fff;font-size:13px;font-weight:800;line-height:1;text-shadow:0 1px 2px rgba(0,0,0,.28)}
.medal-choice-icon::before{content:"";position:absolute;inset:2px;border-radius:50%;border:1px dashed rgba(255,255,255,.55)}
.medal-choice-icon i{font-style:normal;position:relative;z-index:1}
.medal-choice-icon.none{background:var(--paper);border-color:var(--line);box-shadow:inset 0 0 0 1px var(--line);color:var(--ink-3);text-shadow:none}
.medal-choice-icon.none::before{display:none}
.medal-choice-icon.tone-violet{--ma:#B89AF0;--mb:#6E4DB8}
.medal-choice-icon.tone-jade{--ma:#8ED9B9;--mb:#2F8064}
.medal-choice-icon.tone-coral{--ma:#F3A08A;--mb:#B75943}
.medal-choice-icon.tone-gold{--ma:#F2D174;--mb:#A77A1F}
.medal-choice-icon.tone-royal{--ma:#9DB7F2;--mb:#4B5FB0}
.medal-choice-icon.tone-sun{--ma:#F6D27A;--mb:#C9782A}
.frame-picker-loading,.frame-picker-empty{padding:14px 4px;text-align:center;font-size:10px;line-height:1.7;color:var(--ink-3)}
.frame-picker-empty span{font-size:9px}
.frame-picker-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:4px;padding:10px 13px 12px;border-top:1px solid var(--line)}
.frame-picker-foot .btn{min-height:26px;padding:0 8px;font-size:9px}
@media(max-width:520px){.frame-picker{right:-4px;width:min(300px,92vw)}}


.theme-desc{font-size:11px;color:var(--ink-2);line-height:1.5}
.theme-check{position:absolute;top:8px;right:8px;width:18px;height:18px;border-radius:50%;background:var(--green);color:var(--cream);display:flex;align-items:center;justify-content:center}
.theme-check svg{width:12px;height:12px}
/* ===== Hero（主题化渐变主视觉） ===== */
.hero{position:relative;overflow:hidden;background:var(--grad-main);color:#fff;border-radius:var(--radius-lg);padding:26px 22px;margin-bottom:16px;box-shadow:var(--shadow-hover)}
.hero::after{content:"";position:absolute;right:-30px;bottom:-34px;width:220px;height:220px;background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 64 64%22 fill=%22none%22%3E%3Cpath d=%22M12 36 q20 22 40 0 z%22 fill=%22%23F7F3EA%22/%3E%3Cellipse cx=%2232%22 cy=%2236%22 rx=%2220%22 ry=%227%22 fill=%22%23F7F3EA%22/%3E%3Cpath d=%22M40 24 L48 40 M45 22 L52 36%22 stroke=%22%23F7F3EA%22 stroke-width=%224.5%22 stroke-linecap=%22round%22/%3E%3Cpath d=%22M25 25 c-3 -4 3 -6 0 -10 M32 23 c-3 -4 3 -6 0 -10 M39 25 c-3 -4 3 -6 0 -10%22 stroke=%22%23F7F3EA%22 stroke-width=%224%22 fill=%22none%22 stroke-linecap=%22round%22/%3E%3C/svg%3E") center/contain no-repeat;opacity:.07;pointer-events:none}
.hero .date{font-size:13px;opacity:.78}
.hero .today-title{font-size:24px;font-weight:700;margin:4px 0 8px}
.hero-sub{font-size:13px;opacity:.85;margin-bottom:12px}
.hero-chips{margin-bottom:14px}
.hero .chip{background:rgba(255,255,255,.92);color:var(--accent);border-color:transparent;font-weight:600}
/* ===== 按钮（参照图圆润按钮式样） ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 18px;border-radius:14px;border:1px solid transparent;font-size:15px;cursor:pointer;text-decoration:none;transition:background .18s,border-color .18s,transform .12s,box-shadow .18s}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--grad-main);color:#fff}
.btn-primary:hover{filter:brightness(.96);box-shadow:0 3px 12px var(--shadow-hover)}
.btn-green{background:var(--grad-main);color:#fff}
.btn-green:hover{filter:brightness(.96);box-shadow:0 3px 12px var(--shadow-hover)}
.btn-gold{background:var(--gold);color:#3A2C08}
.btn-gold:hover{background:var(--gold);filter:brightness(.9);box-shadow:0 3px 10px rgba(0,0,0,.18)}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--ink-2)}
.btn-ghost:hover{border-color:var(--line-2);color:var(--ink);background:var(--cream)}
.btn-danger-ghost{color:var(--tomato);border-color:var(--danger-line);background:var(--danger-soft)}
.btn-danger-ghost:hover{background:var(--tomato-soft);box-shadow:0 3px 10px rgba(0,0,0,.12)}
.btn-sm{min-height:34px;padding:0 12px;font-size:13px}
.btn-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:14px}
.back-row{margin:0 0 12px}
.draft-status{font-size:12px;font-weight:600;margin:0 0 10px;visibility:hidden;color:var(--green);transition:opacity .25s}
.draft-status.on{visibility:visible}
.draft-status.count{color:var(--ink-3);font-weight:400}
/* ===== 标签 / 徽标 ===== */
.chip{display:inline-flex;align-items:center;background:var(--green-soft);color:var(--green);border:1px solid var(--green-line);border-radius:999px;padding:2px 12px;font-size:13px;margin:0 6px 6px 0;line-height:1.7}
.chip.clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s}
.chip.clickable:hover{border-color:var(--green);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.chip.gold{background:var(--gold-soft);color:var(--gold-ink);border-color:var(--gold-line)}
.chip.tomato{background:var(--tomato-soft);color:var(--tomato);border-color:var(--danger-line)}
.chip-btn{min-height:36px;padding:0 14px;border-radius:999px;border:1px solid var(--green-line);background:var(--surface);color:var(--green);font-size:13px;cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.chip-btn:hover{border-color:var(--green);background:var(--green-soft)}
.chip-btn.active{background:var(--green);border-color:var(--green);color:var(--cream);font-weight:600}
.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.chip-row .chip{margin:0}
/* ===== 首页入口卡片 ===== */
.entry-grid{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:640px){.entry-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:960px){.entry-grid{grid-template-columns:repeat(4,1fr)}}
.entry-card{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;cursor:pointer;box-shadow:var(--shadow);transition:border-color .18s,transform .18s,box-shadow .18s}
.entry-card:hover{border-color:var(--green-line);transform:translateY(-2px);box-shadow:var(--shadow-hover)}
.entry-card:active{transform:translateY(0)}
.entry-icon{flex:none;width:44px;height:44px;border-radius:12px;background:var(--green-soft);color:var(--green);display:flex;align-items:center;justify-content:center;transition:background .18s,color .18s}
.entry-card:hover .entry-icon{background:var(--green);color:var(--cream)}
.entry-icon svg{width:22px;height:22px}
.entry-body{min-width:0;flex:1}
.entry-title{font-size:15px;font-weight:600}
.entry-desc{font-size:12px;color:var(--ink-2);line-height:1.4;margin-top:1px}
.entry-num{flex:none;font-size:13px;color:var(--green);background:var(--green-soft);border-radius:999px;padding:2px 10px;white-space:nowrap}
/* ===== 本周概览 ===== */
.week-list{display:flex;flex-direction:column;gap:6px}
.week-day{display:flex;align-items:center;gap:10px;font-size:14px;padding:3px 0}
.week-day .d{width:52px;flex:none;font-size:12px;color:var(--ink-2);display:inline-flex;justify-content:center;background:var(--cream);border:1px solid var(--line);border-radius:999px;padding:2px 6px}
.week-day.today .d{background:var(--green);border-color:var(--green);color:var(--cream);font-weight:600}
.week-day.today>span:last-child{font-weight:600;color:var(--green)}
.week-dish{cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px;transition:color .15s}
.week-dish:hover{color:var(--green)}
.draw-link{cursor:pointer;transition:color .15s}
.draw-link:hover{color:var(--green);text-decoration:underline dotted;text-underline-offset:3px}
/* ===== 今日计划 ===== */
.draw-grid{display:grid;grid-template-columns:1fr;gap:12px;margin-top:12px}
@media(min-width:640px){.draw-grid{grid-template-columns:repeat(2,1fr)}}
/* 抽到的菜：浅色卡（与设置/成就/今天一致） */
.draw-card{background:var(--card);border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:var(--radius);padding:16px;color:var(--ink);position:relative;overflow:hidden;box-shadow:var(--shadow);transition:transform .18s,box-shadow .18s,border-color .18s}
.draw-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 30%,var(--line));box-shadow:var(--shadow-hover)}
.draw-name{font-size:17px;font-weight:700;color:var(--ink)}
.draw-meta{font-size:13px;color:var(--ink-2);margin-top:4px}
.done-badge{display:inline-block;margin-top:14px;padding:4px 16px;border-radius:999px;background:var(--green-soft);color:var(--green);font-size:13px;border:1px solid var(--green-line)}
/* ===== 表单 ===== */
.form-grid{display:grid;grid-template-columns:1fr;gap:12px}
@media(min-width:640px){.form-grid{grid-template-columns:1fr 1fr}}
.form-grid .full{grid-column:1 / -1}
.field > label{display:block;font-size:13px;color:var(--ink-2);margin-bottom:5px;font-weight:500}
.field > label.version-label{font-weight:700;color:var(--ink)}
.field input,.field select,.field textarea{width:100%;min-height:44px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 12px;font-size:16px;font-family:inherit;background:var(--surface);color:var(--ink);transition:border-color .18s,box-shadow .18s}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
.field textarea{min-height:76px;resize:vertical;line-height:1.7}
/* ===== 菜谱列表 ===== */
.toolbar{margin-bottom:4px}
.toolbar input{width:100%;min-height:42px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 12px;font-size:16px;background:var(--surface);color:var(--ink);transition:border-color .18s,box-shadow .18s}
.toolbar input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
.dish-row{display:block;padding:12px 0;border-bottom:1px dashed var(--line);border-radius:8px;transition:background .15s}
.dish-row:hover{background:var(--cream)}
.dish-row:last-child{border-bottom:none}
.dish-line{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;width:100%}
.dish-main{min-width:0;flex:1 1 220px}
.dish-thumb{width:56px;height:56px;border-radius:12px;object-fit:cover;flex:none;border:1px solid var(--line);box-shadow:var(--shadow)}
.dish-steps{margin-top:8px}
.dish-steps summary{cursor:pointer;font-size:13px;color:var(--green);font-weight:600;list-style:none;display:inline-flex;align-items:center;gap:4px}
.dish-steps summary::before{content:"▸";font-size:12px;transition:transform .15s}
.dish-steps[open] summary::before{transform:rotate(90deg)}
.dish-steps summary::-webkit-details-marker{display:none}
.steps-text{white-space:pre-line;font-size:13px;color:var(--ink);background:var(--cream);border:1px dashed var(--line);border-radius:var(--radius-sm);padding:10px 12px;margin-top:6px}
.draw-thumb{width:100%;height:150px;object-fit:contain;background:var(--cream);border-radius:12px;margin-bottom:8px;border:1px solid var(--line)}
/* ===== 图片上传 ===== */
.img-pick{position:relative}
.img-file{display:none}
.img-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:24px 14px;border:2px dashed var(--gold-line);background:var(--gold-soft);border-radius:12px;cursor:pointer;text-align:center;transition:border-color .2s,background .2s}
.img-drop:hover{border-color:var(--gold);background:var(--gold-deep)}
.img-drop.drag-over{border-color:var(--green);background:var(--green-soft);box-shadow:inset 0 0 0 2px var(--green-soft)}
.img-drop.drag-over .ico{color:var(--green)}
.img-drop .ico{width:30px;height:30px;color:var(--gold);margin-bottom:2px}
.img-drop-title{font-size:14px;font-weight:600;color:var(--ink)}
.img-drop-sub{font-size:12px;color:var(--ink-2)}
.img-wrap{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.img-wrap img{max-width:100%;max-height:200px;object-fit:contain;border-radius:var(--radius-sm);border:1px solid var(--line);box-shadow:var(--shadow)}
.img-actions{display:flex;gap:8px}
.img-actions label{cursor:pointer}
.dish-name{font-size:16px;font-weight:600}
.dish-meta{font-size:12px;color:var(--ink-2);margin-top:2px;word-break:break-all}
.dish-stat{font-size:12px;color:var(--tomato);margin-top:3px}
.dish-ops{flex:none;display:flex;gap:8px}
@media(hover:hover){
  .dish-ops .icon-btn{opacity:.45;transition:opacity .15s}
  .dish-row:hover .dish-ops .icon-btn{opacity:1}
}
/* ===== 历史 ===== */
.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
@media(min-width:760px){.stat-grid{grid-template-columns:repeat(4,1fr)}}
/* 历史统计：浅色卡 */
.stat{background:var(--card);border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:12px;padding:13px;color:var(--ink);position:relative;overflow:hidden;box-shadow:var(--shadow)}
.stat .num{font-size:24px;font-weight:700;color:var(--accent);line-height:1.2}
.stat .label{font-size:12px;color:var(--ink-2);margin-top:2px}
.stat.clickable{cursor:pointer;transition:transform .15s,box-shadow .15s,border-color .15s}
.stat.clickable:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 30%,var(--line));box-shadow:var(--shadow-hover)}
.stat.clickable:hover .num{opacity:.85}
.top-title{
  display:flex;
  align-items:center;
  gap:8px;
  margin:18px 0 8px;
  font-size:14px;
  font-weight:700;
  letter-spacing:.02em;
  color:var(--ink);
}
.top-title::before{
  content:"";
  width:3px;
  height:14px;
  border-radius:2px;
  background:var(--green);
  flex:none;
}
.top-row{display:flex;flex-wrap:wrap;gap:8px}
.top-item{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 12px;font-size:14px;box-shadow:var(--shadow)}
.top-item.clickable{cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .15s}
.top-item.clickable:hover{border-color:var(--green);box-shadow:var(--shadow-hover);transform:translateY(-1px)}
.top-item b{color:var(--tomato)}
.top-item em{font-style:normal;color:var(--ink-2);font-size:12px;margin-left:4px}
/* ============================================================
   历史计划：日历
   ============================================================ */
.history-calendar-card{padding:18px 20px 20px}
.history-cal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
.cal-kicker{display:block;font-size:10px;font-weight:800;letter-spacing:.12em;color:var(--green);text-transform:uppercase;margin-bottom:4px}
.history-cal-head h2{font-size:22px;line-height:1.2;margin:0;color:var(--ink)}
.history-cal-head .sub{margin:4px 0 0;font-size:12px;color:var(--ink-2)}
.history-cal-controls{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;flex:none}
.history-view-switch{display:flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--line);border-radius:999px;background:var(--paper)}
.history-view-btn{width:34px;height:28px;padding:0;border:0;border-radius:999px;background:transparent;color:var(--ink-3);font:inherit;font-size:11px;font-weight:700;cursor:pointer;transition:background .15s,color .15s,box-shadow .15s}
.history-view-btn:hover{color:var(--ink)}
.history-view-btn.active{background:var(--surface);color:var(--green);box-shadow:0 1px 4px rgba(0,0,0,.1)}
.history-cal-nav{display:flex;align-items:center;gap:6px;flex:none}
.cal-nav-btn{width:34px;min-width:34px;padding:0;font-size:20px;line-height:1}
.cal-weekdays,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal-weekdays{margin-bottom:6px}
.cal-weekdays span{text-align:center;font-size:11px;font-weight:700;letter-spacing:.06em;color:var(--ink-2);padding:4px 0}
.cal-day{position:relative;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:4px;min-height:72px;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--ink-2);font:inherit;text-align:left;cursor:default;transition:background .15s,border-color .15s,transform .15s,box-shadow .15s}
.cal-day.is-out{opacity:.52;background:transparent;border-color:transparent}
.cal-day.has-plan{cursor:pointer;background:color-mix(in srgb,var(--green) 7%,var(--surface));border-color:color-mix(in srgb,var(--green) 20%,var(--line));color:var(--ink)}
.cal-day.has-plan:hover{border-color:color-mix(in srgb,var(--green) 46%,var(--line));transform:translateY(-1px);box-shadow:0 5px 14px color-mix(in srgb,var(--green) 13%,transparent)}
.cal-day.is-today{box-shadow:inset 0 0 0 1px var(--green)}
.cal-day.is-selected{background:linear-gradient(145deg,color-mix(in srgb,var(--green) 90%,#fff 10%),color-mix(in srgb,var(--green) 74%,#123 26%));border-color:transparent;color:#fff;box-shadow:0 8px 18px color-mix(in srgb,var(--green) 25%,transparent)}
.cal-day.is-selected .cal-mark{background:rgba(255,255,255,.2);color:#fff}
.cal-num{font-size:14px;font-weight:800;line-height:1;color:inherit}
.cal-mark{display:inline-flex;align-items:center;padding:2px 6px;border-radius:5px;background:color-mix(in srgb,var(--green) 14%,transparent);color:var(--green);font-size:10px;font-weight:800;line-height:1.2}
.cal-detail{margin-top:16px;padding:14px 15px;border:1px solid var(--line);border-radius:13px;background:var(--paper)}
.cal-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.cal-detail-kicker{display:block;font-size:10px;font-weight:800;letter-spacing:.1em;color:var(--ink-2);text-transform:uppercase;margin-bottom:3px}
.cal-detail-head h3{font-size:16px;margin:0;color:var(--ink)}
.cal-detail .page-pill{border-color:var(--line);background:var(--surface);color:var(--ink-2)}
.cal-detail-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.cal-detail-empty p{margin:3px 0 0;font-size:13px;color:var(--ink-2)}
.year-months{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:4px}
.year-month{padding:8px 9px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.year-month-name{display:block;width:100%;padding:0 0 5px;border:0;background:transparent;color:var(--ink);font:inherit;font-size:11px;font-weight:800;text-align:left;cursor:pointer}
.year-month-name:hover{color:var(--green)}
.year-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}
.year-day{display:flex;align-items:center;justify-content:center;width:100%;height:15px;border:0;border-radius:3px;background:transparent;color:var(--ink-2);font:inherit;font-size:8.5px;font-weight:600;line-height:1}
.year-day.is-blank{visibility:hidden}
.year-day.has-plan{background:color-mix(in srgb,var(--green) 13%,transparent);color:var(--green);font-weight:800;cursor:pointer}
.year-day.has-plan:hover{background:color-mix(in srgb,var(--green) 22%,transparent)}
.year-day.is-today{box-shadow:inset 0 0 0 1px var(--green)}
.year-day.is-selected{background:var(--green);color:#fff;box-shadow:none}
@media(max-width:1000px){.year-months{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:760px){.year-months{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}}
@media(max-width:520px){
  .history-cal-head{flex-direction:column;align-items:stretch;gap:9px}
  .history-cal-head h2{font-size:19px;line-height:1.3}
  .history-cal-controls{width:100%;justify-content:space-between;gap:6px}
  .history-view-switch{order:1}
  .history-cal-nav{order:2}
  .year-months{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .year-month{padding:7px}
  .year-day{height:14px;font-size:8px}
}
@media(max-width:640px){
  .history-calendar-card{padding:15px 13px 16px}
  .history-cal-head h2{font-size:18px}
  .history-cal-nav{gap:4px}
  .cal-nav-btn{width:30px;min-width:30px}
  .cal-weekdays,.cal-grid{gap:4px}
  .cal-day{min-height:52px;padding:6px;border-radius:8px}
  .cal-num{font-size:12px}
  .cal-mark{font-size:9px;padding:1px 4px}
  .cal-detail{padding:12px}
}
.history-cal-card{}
.history-item::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(140deg,rgba(255,255,255,.12) 0%,rgba(255,255,255,0) 60%)}
.history-item summary{padding:12px 14px;cursor:pointer;display:flex;align-items:center;gap:10px;list-style:none;font-size:14px;transition:background .15s}
.history-item summary:hover{background:rgba(255,255,255,.10)}
.history-item summary::-webkit-details-marker{display:none}
.history-item[open] summary{border-bottom:1px dashed rgba(255,255,255,.35)}
.h-date{font-weight:600;min-width:88px;color:#fff}
.h-wd{color:rgba(255,255,255,.85);font-size:13px}
.h-count{margin-left:auto;font-size:13px;color:#fff;background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.4);border-radius:999px;padding:1px 10px}
.h-detail{padding:12px 14px 14px}
.h-detail .chip{background:rgba(255,255,255,.20);border-color:rgba(255,255,255,.35);color:#fff}
/* ===== 设置 ===== */
/* ===== 测试功能：随机生成菜品（正式定稿后删除） ===== */
.test-card{border-style:dashed;border-color:var(--gold-line);background:var(--gold-soft)}
.test-badge{display:inline-block;margin-left:8px;padding:1px 10px;border-radius:999px;background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line);font-size:12px;vertical-align:middle}
/* ===== 空态 / 提示 ===== */
.empty{text-align:center;color:var(--ink-2);padding:28px 12px;font-size:14px}
.empty::before{content:"";display:block;width:54px;height:54px;margin:0 auto 10px;background:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 64 64%22 fill=%22none%22%3E%3Cpath d=%22M10 30h44v5a22 22 0 0 1-44 0z%22 stroke=%22%23B3AC97%22 stroke-width=%224%22 stroke-linejoin=%22round%22/%3E%3Cpath d=%22M20 18c-2-5 4-8 4-8s6 3 4 8M30 16c-2-5 4-8 4-8s6 3 4 8M40 18c-2-5 4-8 4-8s6 3 4 8%22 stroke=%22%23B3AC97%22 stroke-width=%224%22 stroke-linecap=%22round%22/%3E%3C/svg%3E") center/contain no-repeat;opacity:.55}
/* ===== Toast ===== */
#toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:var(--green-2);color:#fff;padding:9px 16px;border-radius:14px;font-size:13.5px;line-height:1.55;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:7000;max-width:min(92vw,420px);box-shadow:var(--shadow-pop);text-align:left;word-break:break-word}
#toast.show{opacity:1;transform:translateX(-50%)}
/* ===== 菜品详情页 ===== */
.detail-img{width:100%;height:320px;object-fit:contain;background:var(--cream);border-radius:12px;border:1px solid var(--line);margin:4px 0 12px}
.detail-name{font-size:22px;font-weight:700;margin:6px 0 2px}
.detail-tags{margin:8px 0 6px}
.detail-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}
.detail-block{margin-top:18px}
.detail-block h3{font-size:14px;color:var(--ink-2);margin:0 0 8px;font-weight:600;display:flex;align-items:center;gap:6px}
.detail-block h3::before{content:"";width:3px;height:12px;border-radius:2px;background:var(--gold)}
.detail-dates{display:flex;flex-wrap:wrap;gap:6px}
.detail-date{font-size:13px;background:var(--green-soft);color:var(--green);border:1px solid var(--green-line);border-radius:999px;padding:2px 10px}
/* ===== 批量操作 ===== */
.batch-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 6px;padding:10px 12px;background:var(--gold-soft);border:1px dashed var(--gold-line);border-radius:var(--radius-sm);font-size:13px}
.batch-count{font-weight:600;color:var(--gold-ink)}
.batch-gap{color:var(--ink-2)}
.batch-bar select{min-height:34px;border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:14px;background:var(--surface);color:var(--ink)}
.dish-check{width:18px;height:18px;flex:none;accent-color:var(--green)}
/* ===== 开关 ===== */
.switch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;font-size:14px}
.switch{position:relative;display:inline-block;width:46px;height:26px;flex:none}
.switch input{opacity:0;width:0;height:0}
.switch .track{position:absolute;inset:0;background:var(--line-2);border-radius:999px;transition:background .2s;cursor:pointer}
.switch .track::before{content:"";position:absolute;width:20px;height:20px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.switch input:checked + .track{background:var(--green)}
.switch input:checked + .track::before{transform:translateX(20px)}
.switch input:focus-visible + .track{box-shadow:0 0 0 3px var(--gold-soft)}
.switch input:disabled + .track{opacity:.4;cursor:not-allowed}
.switch input:disabled + .track::before{box-shadow:none}
/* 全站统一开关：ui.js 会给 .switch 自动加 ui-switch */
.ui-switch{position:relative;display:inline-block;width:44px;height:24px;flex:none;vertical-align:middle}
.ui-switch input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:2}
.ui-switch .track{position:absolute;inset:0;background:var(--line-2);border-radius:999px;cursor:pointer;transition:background .2s,box-shadow .2s;box-shadow:inset 0 1px 2px rgba(0,0,0,.08)}
.ui-switch .track::before{content:"";position:absolute;width:18px;height:18px;left:3px;top:3px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.22)}
.ui-switch input:checked + .track{background:var(--green);box-shadow:inset 0 1px 2px rgba(0,0,0,.10),0 0 0 1px color-mix(in srgb,var(--green) 40%,transparent)}
.ui-switch input:checked + .track::before{transform:translateX(20px)}
.ui-switch input:focus-visible + .track{box-shadow:0 0 0 3px var(--green-soft)}
.ui-switch input:disabled + .track{opacity:.4;cursor:not-allowed}
.ui-switch input:disabled + .track::before{box-shadow:none}
.ts-sub{opacity:.85;transition:opacity .2s}
.ts-sub.disabled{opacity:1}
.ts-sub.disabled .site-switch-text{opacity:.5}
.ts-sub:has(input:disabled) .site-switch-text{opacity:.5}
/* Turnstile 子项：圆形勾选框（参考用户管理编辑态） */
.ts-check{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;flex:none;cursor:pointer;position:relative;border-radius:50%;background:var(--accent-ink);box-shadow:0 2px 6px rgba(0,0,0,.18),inset 0 0 0 1px rgba(255,255,255,.18);transition:background .15s,box-shadow .15s}
.ts-check:hover{background:var(--green);box-shadow:0 3px 10px rgba(0,0,0,.22),inset 0 0 0 1px rgba(255,255,255,.24)}
.ts-check:has(input:checked){background:var(--accent-ink);box-shadow:0 2px 12px rgba(0,0,0,.20),0 0 10px var(--accent),inset 0 0 0 1px rgba(255,255,255,.24)}
.ts-check input{appearance:none;-webkit-appearance:none;width:17px;height:17px;min-height:0;padding:0;box-sizing:border-box;border-radius:50%;border:1.5px solid var(--line-2);background:var(--surface);cursor:pointer;margin:0;position:relative;transition:background .15s,border-color .15s,box-shadow .15s,transform .15s}
.ts-check input:hover{transform:scale(1.1)}
.ts-check input:focus-visible{outline:none;box-shadow:0 0 0 3px var(--green-soft)}
.ts-check input::after{content:"";position:absolute;left:50%;top:50%;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:translate(-50%,-50%) rotate(45deg) scale(0);opacity:0;transition:transform .15s,opacity .15s}
.ts-check input:checked{background:var(--accent);border-color:var(--accent);box-shadow:0 0 10px var(--accent)}
.ts-check input:checked::after{transform:translate(-50%,-50%) rotate(45deg) scale(1);opacity:1}
.ts-check input:disabled,
.ts-check input:checked:disabled{background:var(--surface);border-color:var(--line-2);box-shadow:none;opacity:1;cursor:not-allowed}
.ts-check input:disabled::after{opacity:0}
.ts-check input:disabled:hover{transform:none}
.ts-check:has(input:disabled){background:var(--line-2);opacity:.4;box-shadow:none}
.ts-sub.disabled .ts-check{background:var(--line-2);opacity:.4;cursor:not-allowed;box-shadow:none}
/* ===== 制作步骤（每步一个编辑框 / 有序列表） ===== */
.step-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.step-row .step-input{flex:1;min-width:0}
/* ===== 图标按钮（缩小、图标化） ===== */
.icon-btn{width:30px;height:30px;flex:none;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--card);border-radius:8px;color:var(--ink-2);cursor:pointer;padding:0;transition:border-color .15s,color .15s,background .15s,transform .12s}
.icon-btn:not(:disabled):hover{border-color:var(--green);color:var(--green);background:var(--green-soft)}
.icon-btn:not(:disabled):active{transform:scale(.92)}
.icon-btn:disabled{background:var(--cream);color:var(--ink-3);border-color:var(--line);box-shadow:none;cursor:not-allowed}
.icon-btn.danger:not(:disabled):hover{border-color:var(--tomato);color:var(--tomato);background:var(--tomato-soft)}
.icon-btn.active{border-color:var(--green);color:var(--green);background:var(--green-soft)}
.icon-btn.green{background:var(--green);border-color:var(--green);color:var(--cream)}
.icon-btn.green:not(:disabled):hover{background:var(--green-2);border-color:var(--green-2);color:var(--cream)}
.icon-btn svg{width:16px;height:16px}
.icon-add-row{display:flex;align-items:center;margin-top:6px}
.icon-add-row .icon-btn{border-style:dashed}
/* ===== 食材编辑（每行：名称 + 重量 + 单位） ===== */
.ing-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.ing-row .ing-name{flex:1.4;min-width:0}
.ing-row .ing-weight{flex:0.9;min-width:0}
.ing-row input,.step-row input{min-height:44px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 12px;font-size:16px;font-family:inherit;background:var(--surface);color:var(--ink);transition:border-color .18s,box-shadow .18s}
.ing-row input:focus,.step-row input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
/* ===== 智能导入菜谱（登记新菜页） ===== */
.form-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.form-head-text{flex:1;min-width:0}
.import-toggle{margin-top:2px}
#import-panel{margin:0 0 14px;padding:12px;background:var(--cream);border:1px solid var(--line);border-radius:var(--radius-sm)}
#import-text{width:100%;min-height:120px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 12px;font-size:16px;font-family:inherit;background:var(--surface);color:var(--ink);resize:vertical;line-height:1.7;transition:border-color .18s,box-shadow .18s}
#import-text:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
#import-panel .btn-row{margin:10px 0 0}
.import-list{margin-top:10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}
.import-prev-row{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px dashed var(--line);font-size:14px}
.import-prev-row:last-child{border-bottom:none}
.import-prev-row .ip-name{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.import-prev-row .ip-tag{flex:none;font-size:12px;color:var(--ink-2);background:var(--cream);border:1px solid var(--line);border-radius:999px;padding:1px 8px}
.import-prev-row .ip-state{flex:none;font-size:12px;color:var(--green);margin-left:auto}
.import-prev-row.dup .ip-name{color:var(--ink-3);text-decoration:line-through}
.import-prev-row.dup .ip-state{color:var(--ink-3)}
.import-summary{margin-top:8px;font-size:13px;color:var(--ink-2)}
/* ===== 详情页食材展示 ===== */
.ing-chips{display:flex;flex-wrap:wrap;gap:6px}
.ing-chip{display:inline-flex;align-items:baseline;gap:6px;font-size:13px;background:var(--gold-soft);border:1px solid var(--gold-line);border-radius:999px;padding:3px 12px}
.ing-chip em{font-style:normal;color:var(--ink-2);font-size:12px}
/* ===== 设置页：分类管理（浅色列表面板，与设置卡片一致） ===== */
.cat-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:2px 0 10px}
.cat-total{font-size:12.5px;color:var(--ink-2)}
.cat-toolbar-actions{display:flex;align-items:center;gap:6px}
.cat-manage{
  display:flex;flex-direction:column;gap:2px;
  margin:0 0 12px;padding:5px;
  background:var(--cream);
  border:1px solid var(--line);
  border-radius:16px;
}
.cat-item{
  display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;
  align-items:center;gap:10px;
  padding:10px 12px;
  background:transparent;
  border:0;
  border-radius:12px;
  transition:background .18s,box-shadow .18s;
}
.cat-item + .cat-item{box-shadow:inset 0 1px 0 var(--line)}
.cat-manage .cat-item:nth-child(7n+1){--cat-color:#C8553D}
.cat-manage .cat-item:nth-child(7n+2){--cat-color:#DF8A3B}
.cat-manage .cat-item:nth-child(7n+3){--cat-color:#D9B23E}
.cat-manage .cat-item:nth-child(7n+4){--cat-color:#6F9B57}
.cat-manage .cat-item:nth-child(7n+5){--cat-color:#4F9D9A}
.cat-manage .cat-item:nth-child(7n+6){--cat-color:#5B85B8}
.cat-manage .cat-item:nth-child(7n+7){--cat-color:#8A6FA8}
.cat-item:hover{background:var(--surface);box-shadow:inset 0 1px 0 var(--line)}
.cat-item:first-child{box-shadow:none}
.cat-item:first-child:hover{box-shadow:none}
.cat-item.cat-locked{background:transparent;opacity:.82}
.cat-manage:not(.cat-sort) .cat-item{grid-template-columns:auto minmax(0,1fr) auto}
.cat-sort .cat-item{grid-template-columns:auto auto minmax(0,1fr) auto}
.cat-grip{
  width:18px;height:26px;flex:none;display:inline-flex;align-items:center;justify-content:center;
  color:var(--ink-3);cursor:grab;border-radius:6px;touch-action:none;user-select:none;
  transition:background .15s,color .15s;
}
.cat-grip:hover{background:var(--surface);color:var(--green)}
.cat-grip svg{width:14px;height:14px;display:block}
.cat-grip-off{visibility:hidden;cursor:default}
.cat-item.dragging{opacity:.78;background:var(--surface);box-shadow:var(--shadow);transform:none}
body.cat-dragging{user-select:none;cursor:grabbing}
.cat-dot{width:9px;height:9px;border-radius:50%;background:var(--cat-color,var(--green));flex:none}
.cat-main{min-width:0}
.cat-line{display:flex;align-items:center;gap:8px;min-width:0}
.cat-name-text{font-weight:600;font-size:14px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.cat-count{font-size:11px;color:var(--ink-2);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:0 7px;line-height:1.7;flex:none}
.cat-share{font-size:11px;color:var(--ink-3);margin-left:auto;flex:none}
.cat-track{height:4px;margin-top:6px;border-radius:999px;background:var(--line);overflow:hidden}
.cat-track i{display:block;height:100%;border-radius:inherit;background:var(--cat-color,var(--green));opacity:.62;transition:width .25s}
.cat-ops{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex:none;width:30px}
.cat-lock{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;flex:none;color:var(--ink-3)}
.cat-lock svg{width:15px;height:15px;display:block}
.cat-add{display:block;margin:0 0 12px;padding:12px;background:var(--cream);border:1px solid var(--line);border-radius:14px}
.cat-add-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:0 0 8px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.cat-add-tip{font-size:11px;font-weight:400;color:var(--ink-3)}
.cat-add-row{display:flex;gap:8px;align-items:center}
.cat-add-row input{flex:1;min-width:0}
.cat-add input{min-height:38px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 12px;font-size:15px;background:var(--surface);color:var(--ink);transition:border-color .18s,box-shadow .18s}
.cat-add input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
.cat-reset{display:inline-flex;align-items:center;gap:5px;color:var(--ink-2)}
.cat-reset svg{width:14px;height:14px;display:block}
@media(max-width:480px){
  .cat-item{padding:9px 8px;gap:8px}
  .cat-name-text{font-size:13.5px}
  .cat-add{padding:10px}
  .cat-add-row{gap:6px}
}
/* ===== 步骤展示（详情页） ===== */
.steps-ol{padding-left:22px;margin:6px 0 0;font-size:14px;color:var(--ink)}
.steps-ol li{margin:2px 0;line-height:1.6}
.steps-detail{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.step-item{background:var(--cream);border:1px solid var(--line);border-left:3px solid var(--green);border-radius:var(--radius-sm);padding:9px 12px;transition:border-color .15s}
.step-item:hover{border-color:var(--green-line)}
.step-index{font-size:12px;color:var(--green);font-weight:700;margin-bottom:2px;letter-spacing:.5px}
.step-body{font-size:14px;line-height:1.75;color:var(--ink);white-space:pre-wrap;word-break:break-word}
/* ===== 滚动条 / 小屏适配 ===== */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line-2);border-radius:999px;border:2px solid var(--paper)}
::-webkit-scrollbar-thumb:hover{background:var(--ink-3)}
::-webkit-scrollbar-track{background:transparent}
@media(max-width:1024px){
  .nav{justify-content:space-between}
  .nav-item{flex:0 0 auto}
}
@media(max-width:420px){
  .nav-item{font-size:13px;padding:9px 2px 11px}
  .brand small{display:none}
  .hero{padding:20px 16px}
  .hero .today-title{font-size:20px}
  .card{padding:15px}
}
@media (prefers-reduced-motion: reduce){*{transition:none !important;animation:none !important}}

/* 首页视图已合并进「今天」，原 #view-home 整套样式已移除 */
@media(max-width:760px){
  .top-right{flex-wrap:wrap;justify-content:flex-end;row-gap:6px}
  .top-right .theme-quick::before{display:none}
  .theme-quick{flex-basis:100%;display:flex;justify-content:flex-end}
}
/* ===== 服务器版：登录界面 ===== */
#auth-screen{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:rgba(255,255,255,.32);backdrop-filter:blur(3px);padding:20px}
#auth-screen.show{display:flex}
#auth-screen .auth-card{width:min(360px,92vw);max-height:92vh;background:var(--grad-main);border:none;border-radius:var(--radius-lg);padding:30px 26px;text-align:center;color:#fff;box-shadow:0 24px 60px rgba(0,0,0,.38);position:relative;overflow-y:auto;overflow-x:hidden;backdrop-filter:none}
#auth-screen .auth-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 55%)}
.auth-logo{margin-bottom:6px}
.auth-site-logo{width:52px;height:52px;border-radius:50%;object-fit:cover;background:rgba(255,255,255,.25);box-shadow:0 3px 10px rgba(0,0,0,.15)}
.auth-title{font-family:KaiTi,"STKaiti","楷体",serif;font-size:26px;margin:4px 0 2px;color:#fff;letter-spacing:2px}
.auth-sub{font-size:13px;opacity:.85;margin:0 0 18px;color:#fff}
.auth-input{width:100%;min-height:44px;border:1px solid rgba(255,255,255,.3);border-radius:12px;padding:8px 14px;font-size:15px;background:rgba(255,255,255,.14);color:#fff;margin-bottom:12px;outline:none;transition:border-color .18s,background .18s}
.auth-input::placeholder{color:rgba(255,255,255,.6)}
.auth-input:focus{border-color:rgba(255,255,255,.7);background:rgba(255,255,255,.20)}
.auth-captcha{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.auth-captcha img{width:140px;height:46px;flex:none;border-radius:10px;border:1px solid rgba(255,255,255,.35);cursor:pointer;background:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.4)}
.auth-captcha .auth-captcha-input{flex:1;margin-bottom:0;min-width:0}
.profile-pen-hint{display:none;flex-direction:column;gap:3px;margin:-2px 0 11px;padding:8px 10px;border-radius:10px;background:rgba(0,0,0,.16);color:rgba(255,255,255,.88);font-size:11.5px;line-height:1.5}
.profile-pen-hint span{display:block}
.auth-err{min-height:18px;font-size:12.5px;color:#FFE3B8;margin:0 0 6px;display:none}
.auth-err.show{display:block}
.auth-btn{width:100%;min-height:46px;font-size:16px;letter-spacing:6px;background:rgba(255,255,255,.92);color:var(--accent);border:none;border-radius:999px;font-weight:700;cursor:pointer;transition:transform .12s,filter .15s}
.auth-btn:hover{filter:brightness(1.05)}
.auth-btn:active{transform:scale(.97)}
.auth-btn:disabled{opacity:.55;cursor:wait}
.auth-switch{margin-top:14px;font-size:13px;opacity:.9;color:#fff}
.auth-switch a{color:#fff;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.auth-foot{margin-top:16px;font-size:12px;opacity:.7;color:#fff}
/* ===== 服务器版：管理员后台 ===== */
/* Turnstile 容器：居中展示 Cloudflare 验证组件 */
.auth-turnstile{display:flex;justify-content:center;margin:14px 0 6px;min-height:65px}
.auth-turnstile iframe{margin:0 auto}
.auth-turnstile .ts-loading{color:var(--page-ink2);font-size:12.5px;letter-spacing:.03em;align-self:center}
.auth-turnstile .ts-fail-tip{max-width:340px;background:var(--card-soft,var(--card-bg));border:1px solid var(--line-soft,rgba(128,128,128,.18));border-radius:10px;padding:10px 12px;color:var(--warn-ink,var(--page-ink2));font-size:12.5px;line-height:1.6;letter-spacing:.02em}
.brand .site-logo{width:26px;height:26px;border-radius:50%;object-fit:cover;vertical-align:-6px;margin-right:6px;box-shadow:0 1px 4px rgba(0,0,0,.16)}
.site-logo-pick{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.site-logo-preview{width:38px;height:38px;border-radius:50%;object-fit:cover;background:rgba(255,255,255,.45);border:1px dashed rgba(255,255,255,.55);display:inline-flex;align-items:center;justify-content:center}
.site-logo-ph{font-size:10px;color:rgba(120,120,120,.8);letter-spacing:1px}
/* ===== 站点管理 ===== */
.site-sec{margin-top:14px;padding:12px;background:var(--cream);border:1px solid var(--line);border-radius:12px}
.site-sec-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:13px;font-weight:700;color:var(--ink);flex-wrap:wrap}
.site-sec-head::before{content:"";width:3px;height:13px;border-radius:2px;background:var(--green);flex:none}
.site-pill{font-size:11px;font-weight:600;line-height:1.7;padding:0 9px;border-radius:999px;background:var(--card);border:1px solid var(--line);color:var(--ink-2);margin-left:auto}
.site-pill.on{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}
.site-brand{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.site-brand-logo{width:52px;height:52px;border-radius:50%;flex:none;background:var(--surface);border:1px dashed var(--line-2);display:flex;align-items:center;justify-content:center;overflow:hidden}
.site-brand-logo .site-logo-preview{width:100%;height:100%;border-radius:50%;object-fit:cover;border:none;background:transparent}
.site-brand-logo .site-logo-ph{font-size:10px}
.site-brand-info{min-width:0;flex:1}
.site-brand-info b{display:block;font-size:15px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.site-brand-info span{display:block;font-size:12px;color:var(--ink-3);margin-top:1px}
.site-brand-actions{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.site-switch{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:9px 0}
.site-switch + .site-switch{border-top:1px dashed var(--line)}
.site-switch-text{min-width:0}
.site-switch-text b{display:block;font-size:13.5px;font-weight:600;color:var(--ink)}
.site-switch-text span{display:block;font-size:12px;color:var(--ink-3);line-height:1.5;margin-top:1px}
.site-hint{font-size:12px;color:var(--ink-3);margin-top:8px;line-height:1.6}
.admin-tabs{display:flex;align-items:center;gap:3px;width:max-content;max-width:100%;margin:-7px auto 8px;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--card);box-shadow:0 8px 20px rgba(0,0,0,.10),inset 0 1px 0 rgba(255,255,255,.45);overflow-x:auto;scrollbar-width:none}
.admin-tabs::-webkit-scrollbar{display:none}
.admin-tab{appearance:none;flex:0 0 auto;border:0;border-radius:999px;background:transparent;color:var(--ink-2);font:inherit;font-size:12px;font-weight:600;letter-spacing:.02em;min-height:34px;padding:7px 15px;cursor:pointer;white-space:nowrap;transition:color .18s,background .18s,box-shadow .18s,transform .18s}
.admin-tab:hover{color:var(--accent);background:var(--cream);transform:translateY(-1px)}
.admin-tab.active{background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 75%,var(--green)));color:#fff;font-weight:700;box-shadow:0 6px 14px color-mix(in srgb,var(--accent) 28%,transparent),inset 0 1px 0 rgba(255,255,255,.22)}
.admin-tab:focus-visible{outline:none;box-shadow:0 0 0 3px var(--ring)}
.admin-toolbar{display:flex;justify-content:flex-end;margin-bottom:12px;gap:8px;flex-wrap:wrap}
.admin-search{min-width:230px;min-height:34px;padding:0 12px;font-size:13px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);outline:none;transition:border-color .18s,background .18s;margin-right:auto}
.admin-search::placeholder{color:var(--ink-3)}
.admin-search:focus{border-color:var(--accent)}
.admin-export-bar{display:none;justify-content:flex-end;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.admin-export-tip{font-size:12px;color:rgba(120,120,120,.9);margin-right:auto}
.admin-users{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
/* 管理页用户卡片：与首页卡片同款主题渐变卡 */
.admin-user-card{background:var(--grad-main);border:none;border-radius:var(--radius-lg);padding:14px;box-shadow:0 16px 34px rgba(0,0,0,.36);display:flex;flex-direction:column;gap:6px;position:relative;overflow:hidden;color:#fff;transition:transform .18s,box-shadow .18s}
.admin-user-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 55%)}
.admin-user-card:hover{transform:translateY(-3px);box-shadow:0 20px 40px rgba(0,0,0,.40)}
.admin-user-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;position:relative;padding-right:52px}
.admin-user-name{font-weight:700;font-size:16px;color:#fff;display:inline-flex;align-items:center;gap:2px}
.admin-nick-reset{width:16px;height:16px;border-radius:50%;border:none;background:rgba(255,255,255,.25);color:#fff;font-size:11px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex:none;transition:background .15s,transform .12s}
.admin-nick-reset:hover{background:var(--tomato-dark);transform:scale(1.12)}
/* 设置页用户信息框 */
.user-info-card{display:flex;align-items:center;gap:14px;padding:14px 16px;position:relative}
.user-info-avatar{position:relative;flex:none;cursor:pointer}
.account-avatar-btn{position:relative}
.avatar-medal-badge{position:absolute;right:-3px;bottom:-3px;z-index:3;display:flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1.5px solid #fff;background:linear-gradient(135deg,#F7D56B,#B9781C);box-shadow:0 2px 6px rgba(0,0,0,.28),inset 0 1px 1px rgba(255,255,255,.55);color:#fff;font-size:8px;font-weight:800;line-height:1;text-shadow:0 1px 1px rgba(0,0,0,.25);pointer-events:none}
.avatar-medal-badge.tone-violet{background:linear-gradient(135deg,#C7B0F5,#6E4DB8)}
.avatar-medal-badge.tone-jade{background:linear-gradient(135deg,#A7E7CD,#2F8064)}
.avatar-medal-badge.tone-coral{background:linear-gradient(135deg,#F7B6A1,#B75943)}
.avatar-medal-badge.tone-gold{background:linear-gradient(135deg,#F7DA83,#A77A1F)}
.avatar-medal-badge.tone-sun{background:linear-gradient(135deg,#F6D27A,#C9782A)}
.avatar-medal-badge.tone-royal{background:linear-gradient(135deg,#B6C9FA,#4B5FB0)}
.user-info-avatar .avatar-circle{width:52px;height:52px;box-shadow:0 0 0 3px var(--line-2)}
.user-info-avatar .avatar-ph{font-size:22px}
.user-info-body{min-width:0;padding-right:42px}
.user-info-name{font-size:17px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px}
.user-info-nick{font-size:17px;font-weight:700;color:var(--ink)}
.user-info-username{font-size:13px;color:var(--ink-3);font-weight:500;line-height:1.7}
.user-info-edit{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:8px;background:var(--green-soft);color:var(--accent);cursor:pointer;padding:0;transition:background .15s,transform .12s}
.user-info-edit:hover{background:var(--line-2);transform:scale(1.06)}
.user-info-edit svg{width:14px;height:14px}
.user-info-logout{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:10px;background:rgba(229,72,77,.12);color:#e5484d;cursor:pointer;padding:0;margin-left:0;flex:none;position:absolute;top:12px;right:12px;transition:background .15s,transform .12s}
.user-info-logout:hover{background:#e5484d;color:#fff;transform:scale(1.06)}
.user-info-logout svg{width:16px;height:16px}
.user-info-meta{font-size:12.5px;color:var(--ink-2);margin-top:2px}
.user-info-body{flex:1;min-width:0}
.user-info-card{display:block;padding:18px;overflow:hidden;border-radius:20px;background:linear-gradient(145deg,var(--card),color-mix(in srgb,var(--green) 5%,var(--card)))}
.user-info-top{position:relative;display:flex;align-items:center;gap:11px;padding:0}
.user-info-avatar .avatar-circle{width:54px;height:54px;box-shadow:0 0 0 3px var(--line-2)}
.user-info-avatar .avatar-ph{font-size:22px}
.user-info-identity{min-width:0;flex:1}
.user-info-name{font-size:17px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.user-info-nick{font-size:17px;font-weight:800;color:var(--ink)}
.user-info-username{font-size:10.5px;color:var(--ink-3);font-weight:500;line-height:1.7}
.user-info-sub{font-size:10.5px;color:var(--ink-3);margin-top:3px}
.user-info-actions{display:flex;align-items:center;gap:5px;margin-left:auto;flex:none}
.user-info-edit{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;border-radius:8px;background:var(--green-soft);color:var(--accent);cursor:pointer;padding:0;transition:background .15s,transform .12s}
.user-info-edit:hover{background:var(--line-2);transform:scale(1.06)}
.user-info-edit svg{width:13px;height:13px}
.user-info-logout{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:9px;background:rgba(229,72,77,.12);color:#e5484d;cursor:pointer;padding:0;flex:none;position:static;margin:0;transition:background .15s,transform .12s}
.user-info-logout:hover{background:#e5484d;color:#fff;transform:scale(1.06)}
.user-info-logout svg{width:15px;height:15px}
.user-info-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:14px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper)}
.user-info-stat{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;min-width:0;min-height:72px;padding:10px 11px;border-right:1px solid var(--line)}
.user-info-stat:last-child{border-right:0}
.user-info-stat-label{font-size:8.5px;font-weight:800;letter-spacing:.07em;color:var(--ink-3)}
.user-info-stat strong{font-size:18px;line-height:1;color:var(--ink);font-weight:800;letter-spacing:-.02em}
.user-info-stat b{font-size:11.5px;line-height:1.2;color:var(--ink);font-weight:700;word-break:break-all}
.user-info-stat .user-group-badge{max-width:100%}
.user-info-stat .user-group-badge .group-badge-text{overflow:hidden;text-overflow:ellipsis}
.user-info-stat-checkin .user-checkin{margin-left:0;min-height:29px;padding:0 9px;font-size:10.5px;white-space:nowrap}
.user-info-progress-card{padding:0;margin-top:12px;border-bottom:0}
.user-info-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.user-info-progress-head span{font-size:9.5px;font-weight:700;color:var(--ink-3)}
.user-info-progress-head em{font-style:normal;font-size:9.5px;color:var(--ink-3)}
.user-info-progress-card .user-points-progress{margin-top:6px;height:5px}
.user-info-types{padding:0;margin-top:10px}
.user-info-types-head{font-size:8.5px;font-weight:800;letter-spacing:.07em;color:var(--ink-3);margin-bottom:6px}
.user-info-types-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
.user-info-type{display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0;padding:5px 7px;border:1px solid var(--line);border-radius:7px;background:var(--card)}
.user-info-type span{font-size:9px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.user-info-type b{font-size:10px;color:var(--ink);font-weight:800;flex:none}
@media(max-width:760px){
  .user-info-card{padding:15px}
  .user-info-top{gap:8px}
  .user-info-avatar .avatar-circle{width:46px;height:46px}
  .user-info-name,.user-info-nick{font-size:15px}
  .user-info-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .user-info-stat{min-height:70px;padding:9px 10px}
  .user-info-stat:nth-child(2n){border-right:0}
  .user-info-stat:nth-child(1),.user-info-stat:nth-child(2){border-bottom:1px solid var(--line)}
  .user-info-types-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.user-points{margin-top:9px;padding-top:9px;border-top:1px dashed var(--line)}
.user-points-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.user-group-badge{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:2px 9px;border-radius:999px;font-weight:600;line-height:1;background:var(--green-soft);color:var(--accent);box-shadow:inset 0 0 0 1px var(--green-line)}
.user-points-num{font-size:12px;color:var(--ink-2)}
.user-points-num b{font-size:14px;color:var(--ink);margin-right:2px}
.user-points-breakdown{font-size:11px;color:var(--ink-3);margin-top:4px;line-height:1.5}
.user-checkin{margin-left:auto;min-height:28px;padding:0 10px;font-size:12px}
.user-points-progress{height:4px;margin-top:8px;border-radius:999px;background:var(--line);overflow:hidden}
.user-points-progress i{display:block;height:100%;border-radius:inherit;background:var(--accent);opacity:.7;transition:width .25s}
.user-points-tip{font-size:11px;color:var(--ink-3);margin-top:4px}
.badge-group{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:2px 9px;border-radius:999px;font-weight:600;line-height:1;background:var(--green-soft);color:var(--accent);box-shadow:inset 0 0 0 1px var(--green-line)}
.badge-special{background:var(--gold-soft);color:var(--gold-ink);box-shadow:inset 0 0 0 1px var(--gold-line)}
.group-level-star{position:relative;display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;flex:none;vertical-align:0}
.group-level-star::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 68%,#fff),var(--accent));clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);filter:drop-shadow(0 0 .7px rgba(255,255,255,.95)) drop-shadow(0 1px 2px rgba(0,0,0,.38))}
.group-level-star i{position:relative;z-index:1;font-style:normal;color:#fff;font-size:10.5px;font-weight:800;line-height:1;transform:translateY(.5px);text-shadow:0 1px 0 rgba(255,255,255,.25),0 2px 2px rgba(0,0,0,.55),0 0 2px rgba(0,0,0,.35)}
.group-badge-text{display:inline-flex;align-items:center;line-height:1;transform:translateY(.5px);text-shadow:0 1px 0 rgba(255,255,255,.22),0 1px 2px rgba(0,0,0,.20)}
.user-points-tip .group-level-star{vertical-align:-3px;margin-right:2px}
/* 20 级固定等级色阶：等级越高，底色、描边和光晕越华丽（不随主题变化） */
.group-tier-1{--tier-a:#F5F6F8;--tier-b:#E7EAEE;--tier-ink:#4B5563;--tier-border:#CBD5E1;--tier-star-a:#B3BAC5;--tier-star-b:#7F8A9A;--tier-star-ink:#fff;--tier-glow:rgba(71,85,105,.08)}
.group-tier-2{--tier-a:#F0F5F9;--tier-b:#DCE8F0;--tier-ink:#35566E;--tier-border:#B9CDD9;--tier-star-a:#8FAFC4;--tier-star-b:#5F8299;--tier-star-ink:#fff;--tier-glow:rgba(53,86,110,.10)}
.group-tier-3{--tier-a:#EAF8F5;--tier-b:#D2EFEA;--tier-ink:#1F6B65;--tier-border:#A9D9D1;--tier-star-a:#70C2BA;--tier-star-b:#3D928A;--tier-star-ink:#fff;--tier-glow:rgba(31,107,101,.12)}
.group-tier-4{--tier-a:#EEF8EA;--tier-b:#D8EFD0;--tier-ink:#2E6B3B;--tier-border:#B5D9A9;--tier-star-a:#83C477;--tier-star-b:#4F9A62;--tier-star-ink:#fff;--tier-glow:rgba(46,107,59,.12)}
.group-tier-5{--tier-a:#F5F8E8;--tier-b:#E4EDC9;--tier-ink:#5A6B22;--tier-border:#CBD8A8;--tier-star-a:#A6B96B;--tier-star-b:#738A3A;--tier-star-ink:#fff;--tier-glow:rgba(90,107,34,.12)}
.group-tier-6{--tier-a:#FFF8E6;--tier-b:#F5E6BE;--tier-ink:#75561A;--tier-border:#E3CB92;--tier-star-a:#D8B867;--tier-star-b:#A9832F;--tier-star-ink:#fff;--tier-glow:rgba(117,86,26,.14)}
.group-tier-7{--tier-a:#FFF2E4;--tier-b:#F8DDBE;--tier-ink:#8A4F1E;--tier-border:#E9C08E;--tier-star-a:#E0A45D;--tier-star-b:#B9742D;--tier-star-ink:#fff;--tier-glow:rgba(138,79,30,.15)}
.group-tier-8{--tier-a:#FFEDEA;--tier-b:#F7D7D0;--tier-ink:#8B3A30;--tier-border:#E7B7AE;--tier-star-a:#D9877A;--tier-star-b:#B04D40;--tier-star-ink:#fff;--tier-glow:rgba(139,58,48,.16)}
.group-tier-9{--tier-a:#FFE9EA;--tier-b:#F4CDD0;--tier-ink:#8F2936;--tier-border:#E5AAB0;--tier-star-a:#D8727E;--tier-star-b:#AD3E4D;--tier-star-ink:#fff;--tier-glow:rgba(143,41,54,.18)}
.group-tier-10{--tier-a:#FCEBFA;--tier-b:#EFD0E9;--tier-ink:#7C2D6B;--tier-border:#DDA9D2;--tier-star-a:#C77AB8;--tier-star-b:#9C438B;--tier-star-ink:#fff;--tier-glow:rgba(124,45,107,.18)}
.group-tier-11{--tier-a:#F4EBFC;--tier-b:#E2D0F2;--tier-ink:#5F2E85;--tier-border:#C6A8E1;--tier-star-a:#A779C9;--tier-star-b:#7444A0;--tier-star-ink:#fff;--tier-glow:rgba(95,46,133,.20)}
.group-tier-12{--tier-a:#EEEBFE;--tier-b:#D8D2F5;--tier-ink:#493A8A;--tier-border:#BDB4E6;--tier-star-a:#9387D8;--tier-star-b:#5F51B3;--tier-star-ink:#fff;--tier-glow:rgba(73,58,138,.20)}
.group-tier-13{--tier-a:#EAF0FF;--tier-b:#D2DEF7;--tier-ink:#2F4A86;--tier-border:#AFC3E7;--tier-star-a:#7898D4;--tier-star-b:#4368B0;--tier-star-ink:#fff;--tier-glow:rgba(47,74,134,.20)}
.group-tier-14{--tier-a:#E8F6FF;--tier-b:#CDE9F8;--tier-ink:#1F5D7A;--tier-border:#9ED1E9;--tier-star-a:#5DAFD4;--tier-star-b:#2B7FA8;--tier-star-ink:#fff;--tier-glow:rgba(31,93,122,.20)}
.group-tier-15{--tier-a:#E8F9F2;--tier-b:#CBEBDD;--tier-ink:#1E6647;--tier-border:#A2D5BE;--tier-star-a:#5BBE91;--tier-star-b:#2B885F;--tier-star-ink:#fff;--tier-glow:rgba(30,102,71,.22)}
.group-tier-16{--tier-a:#FFF7DF;--tier-b:#F4DE9D;--tier-ink:#6B4A08;--tier-border:#E0C270;--tier-star-a:#DDBB58;--tier-star-b:#A77C1E;--tier-star-ink:#fff;--tier-glow:rgba(140,96,16,.24)}
.group-tier-17{--tier-a:#FDF0CE;--tier-b:#EBC56A;--tier-ink:#5A3904;--tier-border:#D4A53A;--tier-star-a:#EAC35A;--tier-star-b:#AE791A;--tier-star-ink:#fff;--tier-glow:rgba(180,120,20,.30)}
.group-tier-18{--tier-a:#4A2B10;--tier-b:#7A4A13;--tier-ink:#FFE3A3;--tier-border:#C9872E;--tier-star-a:#F3C55F;--tier-star-b:#B36B16;--tier-star-ink:#FFFFFF;--tier-glow:rgba(201,135,46,.38)}
.group-tier-19{--tier-a:#2B1B08;--tier-b:#5A3A0C;--tier-ink:#FFE9B0;--tier-border:#B8862F;--tier-star-a:#FFD978;--tier-star-b:#C08A24;--tier-star-ink:#FFFFFF;--tier-glow:rgba(255,215,120,.34)}
.group-tier-20{--tier-a:#17120A;--tier-b:#4A3512;--tier-ink:#FFE7A0;--tier-border:#E0B84A;--tier-star-a:#FFE79A;--tier-star-b:#C08A24;--tier-star-ink:#FFFFFF;--tier-glow:rgba(255,223,122,.45)}
.badge-group[class*="group-tier-"],.user-group-badge[class*="group-tier-"]{
  background:linear-gradient(135deg,var(--tier-a),var(--tier-b));
  color:var(--tier-ink);
  box-shadow:inset 0 0 0 1px var(--tier-border),0 2px 8px var(--tier-glow);
}
.group-level-star[class*="group-tier-"]::before{background:linear-gradient(180deg,var(--tier-star-a),var(--tier-star-b));filter:drop-shadow(0 0 .7px rgba(255,255,255,.95)) drop-shadow(0 1px 2px rgba(0,0,0,.38))}
.group-level-star[class*="group-tier-"] i{color:var(--tier-star-ink)}
.badge-group[class*="group-tier-18"],.badge-group[class*="group-tier-19"],.badge-group[class*="group-tier-20"]{text-shadow:0 1px 0 rgba(255,255,255,.18),0 2px 2px rgba(0,0,0,.35)}
.badge-points{display:inline-flex;align-items:center;padding:1px 7px;border-radius:999px;font-size:11px;color:var(--ink-2);background:var(--surface);border:1px solid var(--line)}
.admin-only-badge{margin-left:auto;flex:none}
.list-head-actions + .admin-only-badge{margin-left:0}
/* 管理员：用户组名称编辑 */
.group-name-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:2px 0 12px}
.group-name-field{display:flex;flex-direction:column;gap:5px}
.group-name-field span{font-size:12px;color:var(--ink-2)}
.group-name-field em{font-style:normal;font-size:10px;color:var(--ink-3);margin-left:4px}
.group-name-field input{min-height:38px;border:1px solid var(--line);border-radius:var(--radius-sm);padding:6px 10px;font-size:14px;background:var(--surface);color:var(--ink)}
.group-manage-list{margin:2px 0 10px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--surface)}
.group-system-head{margin:18px 0 6px;font-size:13px;font-weight:700;color:var(--ink-2)}
.group-manage-row.system{background:var(--cream);color:var(--ink-2)}
.group-manage-row.system .group-row-action{font-size:10.5px;white-space:nowrap}
.group-frame-pick{padding:0;border:0;background:transparent;cursor:pointer;line-height:1;display:inline-flex;align-items:center;justify-content:center;border-radius:8px}
.group-frame-pick:hover{filter:brightness(1.08);transform:translateY(-1px)}
.group-frame-empty{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px dashed var(--line-2);border-radius:50%;color:var(--ink-3);font-size:14px;font-weight:700;background:var(--surface)}
.group-frame-marker{position:relative;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex:none;border:1px solid rgba(255,255,255,.7);background:linear-gradient(135deg,var(--ga,#ffe6a5),var(--gb,#9a5b00));box-shadow:0 2px 7px rgba(0,0,0,.24),inset 0 0 0 2px rgba(255,255,255,.22);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.32);isolation:isolate;vertical-align:middle}
.group-frame-marker i{font-style:normal;font-size:12px;font-weight:800;line-height:1;position:relative;z-index:2}
.group-frame-marker::before{content:"";position:absolute;inset:2px;border:1px solid rgba(255,255,255,.48);border-radius:inherit;z-index:1;pointer-events:none}
.group-frame-marker::after{content:"";position:absolute;inset:-3px;border-radius:inherit;background:linear-gradient(135deg,var(--ga,#ffe6a5),var(--gb,#9a5b00));opacity:.20;z-index:-1;filter:blur(2px)}
.group-frame-marker.is-badge{width:17px;height:17px;margin-right:2px;border-width:1px;box-shadow:0 1px 4px rgba(0,0,0,.22),inset 0 0 0 1px rgba(255,255,255,.25)}
.group-frame-marker.is-badge i{font-size:9px}
.group-frame-marker.is-badge::before{inset:1.5px}
.gf-crown{--ga:#FFE7A3;--gb:#9A5B00;border-radius:50% 50% 42% 42%;clip-path:polygon(50% 0,92% 24%,86% 82%,50% 100%,14% 82%,8% 24%);box-shadow:0 0 0 2px rgba(255,215,105,.35),0 3px 10px rgba(154,91,0,.35),inset 0 0 0 2px rgba(255,255,255,.25)}
.gf-starlight{--ga:#DDF4FF;--gb:#3D5F9E;border-radius:50%;box-shadow:0 0 0 2px rgba(190,228,255,.38),0 0 16px rgba(92,151,230,.38),inset 0 0 0 2px rgba(255,255,255,.3)}
.gf-starlight::before{border-style:dashed}
.gf-flame{--ga:#FFD08A;--gb:#A92E1B;border-radius:46% 54% 50% 50%;clip-path:polygon(50% 0,76% 18%,96% 52%,78% 92%,50% 100%,22% 92%,4% 52%,24% 18%);box-shadow:0 0 0 2px rgba(255,142,86,.35),0 0 16px rgba(224,68,46,.34),inset 0 0 0 2px rgba(255,255,255,.24)}
.gf-jade{--ga:#D7F7E4;--gb:#2F8064;border-radius:30% 50% 30% 50%;box-shadow:0 0 0 2px rgba(167,231,205,.38),0 3px 10px rgba(47,128,100,.30),inset 0 0 0 2px rgba(255,255,255,.26)}
.gf-violet{--ga:#E8D9FF;--gb:#5B3B9E;border-radius:50%;clip-path:polygon(50% 0,93% 25%,93% 75%,50% 100%,7% 75%,7% 25%);box-shadow:0 0 0 2px rgba(199,176,245,.35),0 0 16px rgba(110,77,184,.34),inset 0 0 0 2px rgba(255,255,255,.25)}
.admin-frame-menu{position:fixed;z-index:1200;width:232px;padding:5px;background:var(--card);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 14px 34px rgba(0,0,0,.22);animation:groupMenuIn .12s ease-out}
.admin-frame-menu-head{padding:7px 9px 6px;font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-frame-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 8px;border:0;border-radius:8px;background:transparent;text-align:left;cursor:pointer;color:var(--ink);position:relative}
.admin-frame-item:hover{background:var(--green-soft)}
.admin-frame-item.active{background:var(--green-soft)}
.admin-frame-item.active::after{content:"✓";position:absolute;right:10px;font-weight:700;color:var(--accent-ink)}
.admin-frame-item.is-used{opacity:.45;cursor:not-allowed}
.admin-frame-item.is-used:hover{background:transparent}
.admin-frame-info{display:flex;flex-direction:column;gap:1px;min-width:0}
.admin-frame-info b{font-size:12.5px;white-space:nowrap}
.admin-frame-info small{font-size:10px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-frame-empty{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border:1px dashed var(--line-2);border-radius:50%;font-size:10px;color:var(--ink-3);flex:none}
.group-manage-head,.group-manage-row{display:grid;grid-template-columns:52px 62px minmax(0,1fr) 110px 58px;gap:10px;align-items:center;padding:10px 12px;min-height:46px}
.group-manage-head{background:var(--cream);font-size:11px;color:var(--ink-3);font-weight:600;letter-spacing:.04em;border-bottom:1px solid var(--line)}
.group-manage-row + .group-manage-row{border-top:1px solid var(--line)}
.group-manage-row{transition:background .16s}
.group-manage-row:hover{background:color-mix(in srgb,var(--accent) 4%,var(--surface))}
.group-kind{font-size:11px;color:var(--ink-2)}
.group-level{display:inline-flex;align-items:center;min-height:24px;font-size:11px;font-weight:700;color:var(--accent);font-family:ui-monospace,Consolas,monospace}
.group-value{min-width:0;font-size:13px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.group-row-action{display:flex;justify-content:flex-end}
.group-row-action .btn{min-height:30px;padding:0 8px;font-size:12px}
.group-manage-row input{min-width:0;min-height:34px;border:1px solid var(--line);border-radius:8px;padding:4px 9px;font-size:13px;background:var(--paper);color:var(--ink)}
.group-manage-row input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
.group-manage-row input:disabled{background:var(--cream);color:var(--ink-3)}
.group-add-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.point-type-list{margin:2px 0 10px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--surface)}
.point-type-head,.point-type-row{display:grid;grid-template-columns:92px minmax(0,.8fr) minmax(0,1.2fr) 64px;gap:10px;align-items:center;padding:10px 12px;min-height:46px}
.point-type-head{background:var(--cream);font-size:11px;color:var(--ink-3);font-weight:600;letter-spacing:.04em;border-bottom:1px solid var(--line)}
.point-type-row + .point-type-row{border-top:1px solid var(--line)}
.point-type-row{transition:background .16s}
.point-type-row:hover{background:color-mix(in srgb,var(--accent) 4%,var(--surface))}
.point-code{display:inline-block;justify-self:start;font-family:ui-monospace,Consolas,monospace;font-size:11px;color:var(--ink-2);background:var(--cream);border:1px solid var(--line);border-radius:6px;padding:1px 6px}
.point-value{min-width:0;font-size:13px;font-weight:500;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.point-type-row input{min-width:0;min-height:34px;border:1px solid var(--line);border-radius:8px;padding:4px 9px;font-size:13px;background:var(--paper);color:var(--ink)}
.point-type-row input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
.point-type-action{display:flex;justify-content:flex-end}
.point-type-action .btn{min-height:30px;padding:0 8px;font-size:12px}
.formula-readonly{margin-top:8px;padding:10px 12px;border:1px solid var(--green-line);border-radius:10px;background:var(--green-soft);font-size:12px;color:var(--ink-2)}
.formula-readonly code{font-family:ui-monospace,Consolas,monospace;color:var(--accent);font-weight:600;word-break:break-word}
.formula-builder{margin-top:8px;padding:12px;border:1px dashed var(--line-2);border-radius:14px;background:var(--cream)}
.formula-base-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.formula-base{display:inline-flex;align-items:center;min-height:32px;padding:0 12px;border-radius:8px;background:var(--gold-soft);color:var(--gold-ink);border:1px solid var(--gold-line);font-size:13px;font-weight:600}
.formula-base-row em{font-style:normal;font-size:11px;color:var(--ink-3)}
.formula-term{display:grid;grid-template-columns:64px minmax(0,1fr) 48px 84px auto;gap:8px;align-items:center;margin-bottom:8px}
.formula-term select,.formula-term input{min-height:34px;border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:13px;background:var(--surface);color:var(--ink);min-width:0}
.formula-term select:focus,.formula-term input:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
.formula-term .term-coef{font-family:ui-monospace,Consolas,monospace;text-align:center}
.formula-preview{margin-top:8px;padding-top:8px;border-top:1px dashed var(--line);font-size:12px;color:var(--ink-2)}
.formula-preview code{font-family:ui-monospace,Consolas,monospace;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:2px 6px}
.formula-warn{margin-top:6px;font-size:11px;color:var(--tomato-dark)}
.checkin-read{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}
.checkin-read-main{display:flex;align-items:baseline;gap:9px}
.checkin-read-main span{font-size:11px;color:var(--ink-3);font-weight:600}
.checkin-read-main b{font-size:22px;line-height:1;color:var(--green);letter-spacing:-.02em}
.checkin-read-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--ink-3)}
.checkin-read-meta span{padding:3px 8px;border:1px solid var(--line);border-radius:999px;background:var(--paper)}
.checkin-read-meta .is-on{color:var(--green);border-color:color-mix(in srgb,var(--green) 30%,var(--line))}
.checkin-read-meta .is-off{color:var(--tomato);border-color:var(--danger-line);background:var(--danger-soft)}
.checkin-form{margin-top:2px}
.checkin-select-wrap{position:relative}
.checkin-select-wrap select{appearance:none;-webkit-appearance:none;padding-right:38px;cursor:pointer}
.checkin-select-wrap::after{content:"";position:absolute;right:15px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:translateY(-68%) rotate(45deg);pointer-events:none}
.checkin-enabled-field{display:flex;flex-direction:column}
.checkin-enabled-field .reward-enabled-wrap{display:flex;flex-direction:row-reverse;align-items:center;justify-content:space-between;width:100%;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);font-size:13px;color:var(--ink-2)}
.reward-list{margin:2px 0 10px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--surface)}
.reward-head,.reward-row{display:grid;grid-template-columns:80px minmax(0,1fr) 116px 78px 68px;gap:8px;align-items:center;padding:10px 12px;min-height:46px}
.reward-head{background:var(--cream);font-size:11px;color:var(--ink-3);font-weight:600;letter-spacing:.04em;border-bottom:1px solid var(--line)}
.reward-row + .reward-row{border-top:1px solid var(--line)}
.reward-row{transition:background .16s}
.reward-row:hover{background:color-mix(in srgb,var(--accent) 4%,var(--surface))}
.reward-scene{font-size:12px;font-weight:600;color:var(--ink)}
.reward-value{font-size:13px;color:var(--ink-2)}
.reward-state{font-size:12px;color:var(--accent)}
.reward-row select,.reward-row input[type=number]{min-height:34px;border:1px solid var(--line);border-radius:8px;padding:4px 8px;font-size:13px;background:var(--paper);color:var(--ink);min-width:0}
.reward-range{display:flex;align-items:center;gap:4px;min-width:0}
.reward-range input[type=number]{width:100%;padding:4px 5px;text-align:center}
.reward-range span{flex:none;color:var(--ink-3);font-size:12px}
.reward-row input:disabled{background:var(--cream);color:var(--ink-3)}
.reward-row select:focus,.reward-row input[type=number]:focus{border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none}
.reward-enabled-wrap{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--ink-2);white-space:nowrap}
.growth-admin-panel[data-panel="rewards"] .reward-enabled-wrap{cursor:pointer}
.growth-admin-panel[data-panel="rewards"] .reward-enabled{appearance:none;-webkit-appearance:none;width:15px;height:15px;min-height:0;margin:0;flex:none;border:1px solid var(--line-2);border-radius:4px;background:var(--surface);cursor:pointer;position:relative;transition:background .15s,border-color .15s}
.growth-admin-panel[data-panel="rewards"] .reward-enabled:checked{background:var(--accent);border-color:var(--accent)}
.growth-admin-panel[data-panel="rewards"] .reward-enabled:checked::after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:10px;font-weight:800;line-height:1}
.growth-admin-panel[data-panel="rewards"] .reward-enabled:focus-visible{outline:none;box-shadow:0 0 0 3px var(--green-soft)}
@media(max-width:560px){
  .group-name-list{grid-template-columns:1fr}
  .group-manage-head,.group-manage-row{grid-template-columns:44px minmax(0,1fr) 76px 48px;gap:6px;padding:8px}
  .group-manage-head{font-size:10px}
  .group-manage-head span:nth-child(2),.group-manage-row .group-kind{display:none}
  .group-manage-row input{font-size:12px;padding:4px 6px}
  .point-type-head,.point-type-row{grid-template-columns:64px minmax(0,1fr) 52px;gap:6px;padding:8px}
  .point-type-head span:nth-child(3),.point-type-row .point-desc-input,.point-type-row.readonly .point-desc-value{display:none}
  .reward-head,.reward-row{grid-template-columns:58px minmax(0,1fr) 96px 62px 58px;gap:5px;padding:8px}
  .reward-head{font-size:10px}
  .user-points-top{gap:6px}
  .user-checkin{margin-left:0}
}
/* 修改资料弹层：小卡片悬浮弹窗（首页渐变卡同款，随主题） */
#profile-screen{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:rgba(255,255,255,.32);backdrop-filter:blur(3px);padding:20px}
#profile-screen.show{display:flex}
#profile-screen .auth-card{width:min(340px,92vw);max-height:92vh;background:var(--grad-main);border:none;border-radius:var(--radius-lg);padding:24px 22px;text-align:center;color:#fff;box-shadow:0 24px 60px rgba(0,0,0,.38);position:relative;overflow-y:auto;overflow-x:hidden;backdrop-filter:none}
#profile-screen .auth-card::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 55%)}
#profile-screen .auth-title{color:#fff;margin:4px 0 2px;position:relative}
#profile-screen .auth-sub{color:rgba(255,255,255,.9);margin:0 0 16px;position:relative}
#profile-screen .auth-input{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.3);color:#fff;position:relative}
#profile-screen .auth-input::placeholder{color:rgba(255,255,255,.6)}
#profile-screen .auth-input:focus{border-color:rgba(255,255,255,.7);background:rgba(255,255,255,.2)}
#profile-screen .auth-btn{background:#fff;color:var(--accent);letter-spacing:4px;position:relative}
#profile-screen .auth-btn:hover{filter:brightness(.94)}
#profile-screen .auth-avatar{justify-content:center;text-align:center;position:relative}
#profile-screen .auth-avatar-hint{color:rgba(255,255,255,.75)}
#profile-screen .auth-avatar-preview{background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}
#profile-screen .auth-avatar-preview:hover{box-shadow:inset 0 0 0 2px rgba(255,255,255,.6),0 0 0 4px rgba(255,255,255,.25)}
#profile-screen .auth-avatar-preview .avatar-ph{color:rgba(255,255,255,.85)}
#profile-screen .auth-switch a{color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:3px;position:relative}
#profile-screen .auth-err{color:#FFE3B8}
.admin-user-id{font-size:11.5px;font-weight:600;background:rgba(255,255,255,.18);padding:2px 8px;border-radius:999px;color:rgba(255,255,255,.95);box-shadow:inset 0 0 0 1px rgba(255,255,255,.3);letter-spacing:.5px}
/* 管理页用户卡片右上角头像 */
.admin-user-avatar{position:absolute;top:12px;right:12px}
.admin-user-avatar .avatar-circle{width:42px;height:42px;box-shadow:0 0 0 2px rgba(255,255,255,.45),0 4px 12px rgba(0,0,0,.22)}
.admin-user-avatar .avatar-ph{font-size:19px}
/* 移除头像小按钮（仅带头像时显示在头像右上角） */
.admin-avatar-remove{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;border:none;background:var(--tomato-dark);color:#fff;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.30);transition:transform .12s,background .15s}
.admin-avatar-remove:hover{background:#A82F38;transform:scale(1.12)}
.badge{display:inline-block;font-size:11.5px;padding:2px 8px;border-radius:999px;font-weight:600}
.badge-admin{background:var(--card);color:var(--accent);box-shadow:inset 0 0 0 1px var(--line-2)}
.badge-user{background:rgba(255,255,255,.22);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.badge-manager{background:var(--accent);color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}
.badge-group-edit{cursor:pointer;transition:filter .15s,box-shadow .15s}
.badge-group-edit:hover{filter:brightness(1.06);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent)}
.admin-group-menu{position:fixed;z-index:1200;width:218px;padding:5px;background:var(--card);border:1px solid var(--line-2);border-radius:12px;box-shadow:0 14px 34px rgba(0,0,0,.22);animation:groupMenuIn .12s ease-out}
@keyframes groupMenuIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.admin-group-menu-head{padding:7px 9px 6px;font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-group-menu-item{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;padding:8px 9px;border:0;border-radius:8px;background:transparent;text-align:left;cursor:pointer;color:var(--ink)}
.admin-group-menu-item span{font-size:13px;font-weight:600}
.admin-group-menu-item small{font-size:10.5px;color:var(--ink-3)}
.admin-group-menu-item:hover{background:var(--green-soft)}
.admin-group-menu-item.active{background:var(--green-soft);color:var(--accent-ink)}
.admin-group-menu-item.active::after{content:"✓";position:absolute;right:14px;font-weight:700}
.admin-group-menu-item{position:relative}
.admin-group-menu-empty{padding:9px;font-size:12px;color:var(--ink-3)}
.manager-perm-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.manager-perm{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);font-size:12.5px;color:var(--ink)}
.manager-perm-main,.manager-perm-approval{display:flex;align-items:center;gap:7px;cursor:pointer}
.manager-perm-main{min-width:0}
.manager-perm-approval{flex:none;padding-left:8px;border-left:1px solid var(--line);font-size:10.5px;color:var(--ink-2);white-space:nowrap}
.manager-perm-approval input{width:14px;height:14px}
.manager-perm input{accent-color:var(--accent);width:15px;height:15px;flex:none}
.admin-request-row{border:1px solid var(--line);border-radius:12px;padding:12px;margin-bottom:10px;background:var(--card)}
.admin-request-row.is-pending{border-left:4px solid var(--gold)}
.admin-request-row.is-approved{border-left:4px solid var(--green)}
.admin-request-row.is-rejected{border-left:4px solid var(--tomato)}
.admin-request-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
.admin-request-head b{font-size:14px}
.admin-request-status{font-size:11px;padding:2px 8px;border-radius:999px;background:var(--cream);color:var(--ink-2)}
.admin-request-row.is-pending .admin-request-status{background:var(--gold-soft);color:var(--gold-ink)}
.admin-request-row.is-approved .admin-request-status{background:var(--green-soft);color:var(--accent-ink)}
.admin-request-row.is-rejected .admin-request-status{background:var(--tomato-soft);color:var(--tomato-dark)}
.admin-request-meta,.admin-request-payload,.admin-request-review{font-size:12px;color:var(--ink-2);margin-top:3px;line-height:1.5}
.admin-request-actions{display:flex;gap:8px;margin-top:10px}
@media(max-width:520px){.manager-perm-grid{grid-template-columns:1fr}}
.badge-banned{background:var(--tomato-dark);color:#fff}
.admin-dish-row{display:flex;align-items:center;gap:8px;cursor:pointer}
.admin-dish-row .admin-dish-name{flex:0 0 40%;min-width:120px}
.admin-dish-row .btn-xs{font-size:12px;padding:3px 8px;border-radius:8px}
.admin-user-meta{font-size:12px;color:rgba(255,255,255,.88);display:flex;align-items:center}
/* 导出复选框：默认隐藏，进入导出模式后显示；圆形 + 主题色勾选 */
.admin-user-check{display:none;margin-left:auto;align-items:center;cursor:pointer;position:relative;width:26px;height:26px;justify-content:center;border-radius:50%;transition:background .15s,box-shadow .15s;box-shadow:0 2px 6px rgba(0,0,0,.22),inset 0 0 0 1px rgba(255,255,255,.16)}
.admin-user-check:hover{background:rgba(255,255,255,.16);box-shadow:0 3px 10px rgba(0,0,0,.32),inset 0 0 0 1px rgba(255,255,255,.24)}
.admin-user-check:has(input:checked){background:rgba(255,255,255,.14);box-shadow:0 2px 12px rgba(0,0,0,.34),0 0 10px var(--accent),inset 0 0 0 1px rgba(255,255,255,.3)}
.admin-user-check input{appearance:none;-webkit-appearance:none;width:17px;height:17px;border-radius:50%;border:1.5px solid rgba(255,255,255,.95);background:#fff;cursor:pointer;margin:0;position:relative;transition:background .15s,border-color .15s,box-shadow .15s}
.admin-user-check input:hover{transform:scale(1.1)}
.admin-user-check input::after{content:'';position:absolute;left:4.5px;top:2.2px;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg) scale(0);opacity:0;transition:transform .15s,opacity .15s}
.admin-user-check input:checked{background:var(--accent);border-color:var(--accent);box-shadow:0 0 10px var(--accent)}
.admin-user-check input:checked::after{transform:rotate(45deg) scale(1);opacity:1}
.admin-users.export-on .admin-user-check{display:inline-flex}
.admin-users.export-on .admin-user-card{cursor:pointer;user-select:none}
.admin-user-stats{display:flex;flex-wrap:wrap;gap:6px;font-size:12.5px;color:rgba(255,255,255,.95)}
.admin-user-stats span{background:rgba(255,255,255,.22);padding:2px 8px;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.admin-user-updated{font-size:12px;color:rgba(255,255,255,.88)}
.admin-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px;position:relative}
/* 渐变卡上的操作按钮：半透明白样式 */
.admin-user-card .btn-ghost{background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.5);color:#fff}
.admin-user-card .btn-ghost:hover{background:rgba(255,255,255,.30);border-color:rgba(255,255,255,.8);color:#fff}
.admin-user-card .btn-danger-ghost{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.55);color:#fff}
.admin-user-card .btn-danger-ghost:hover{background:rgba(255,255,255,.28);border-color:rgba(255,255,255,.85);color:#fff}
.admin-detail-card{width:100%}
.admin-detail-block{margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.admin-detail-gift{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.gift-card .hint{margin:0 0 10px;font-size:10px;line-height:1.5}
.gift-card .adjust-field{position:relative}
.gift-card .adjust-field select,.adjust-card .adjust-field select{width:100%;height:42px;appearance:none;-webkit-appearance:none;padding:0 36px 0 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);font:inherit;font-size:13px;cursor:pointer}
.gift-card .adjust-field select:focus,.adjust-card .adjust-field select:focus{border-color:var(--green);box-shadow:var(--ring);outline:none}
.qty-stepper{display:flex;align-items:stretch;height:42px;border:1px solid var(--line);border-radius:10px;background:var(--surface);overflow:hidden}
.qty-stepper input{flex:1;width:auto;min-width:0;height:40px;border:0;border-radius:0;background:transparent;text-align:center;font-size:14px;padding:0 4px;appearance:textfield;-moz-appearance:textfield}
.qty-stepper input::-webkit-outer-spin-button,.qty-stepper input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.qty-step{width:38px;flex:none;border:0;background:var(--paper);color:var(--ink-2);font:inherit;font-size:16px;line-height:1;cursor:pointer;transition:background .15s,color .15s}
.qty-step:first-child{border-right:1px solid var(--line)}
.qty-step:last-child{border-left:1px solid var(--line)}
.qty-step:hover{background:var(--green-soft);color:var(--green)}
.qty-step:disabled{opacity:.35;cursor:not-allowed;background:var(--paper);color:var(--ink-3)}
input[type=number]{appearance:textfield;-moz-appearance:textfield}
input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.num-step-pop{position:fixed;z-index:25000;display:none;flex-direction:column;width:20px;border:0;border-radius:0 8px 8px 0;overflow:visible;background:transparent;box-shadow:none}
.num-step-pop button{appearance:none;border:0;flex:1;min-height:0;padding:0;background:transparent;color:var(--ink-3);opacity:.38;font-size:0;line-height:1;cursor:pointer;position:relative;transition:opacity .15s,color .15s}
.num-step-pop button::before{content:"";position:absolute;left:50%;top:50%;width:4px;height:4px;border-top:1.4px solid currentColor;border-right:1.4px solid currentColor;transform:translate(-50%,-50%) rotate(-45deg)}
.num-step-pop .num-step-down::before{transform:translate(-50%,-50%) rotate(135deg)}
.num-step-pop:hover button{opacity:.7}
.num-step-pop button:hover{background:transparent;color:var(--accent);opacity:1}
.num-step-pop button:active{color:var(--accent);opacity:.85}
.gift-card .adjust-field.select-field::after,.adjust-card .adjust-field.select-field::after{content:"";position:absolute;right:14px;bottom:15px;width:7px;height:7px;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg);pointer-events:none}
.admin-gift-preview,.admin-medal-preview{display:flex;align-items:center;min-height:54px;margin:8px 0;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.admin-gift-preview-inner,.admin-medal-preview{display:flex;align-items:center;gap:10px;min-width:0}
.admin-gift-preview-inner>div,.admin-medal-preview>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.admin-gift-preview-inner b,.admin-medal-preview b{font-size:11px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-gift-preview-inner>div span,.admin-medal-preview>div span{font-size:8px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-gift-preview .avatar-circle{width:38px;height:38px;flex:none}
.admin-gift-preview .avatar-ph{font-size:15px}
.admin-gift-preview .theme-preview{width:47px;height:32px;flex:none}
.admin-gift-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;flex:none;border-radius:9px;background:var(--green-soft);color:var(--green);font-size:16px}
.admin-medal-preview .center-medal-disc{width:33px;height:33px;flex:none;font-size:13px}
.admin-medal-preview.tone-violet{--ma:#B89AF0;--mb:#6E4DB8}
.admin-medal-preview.tone-jade{--ma:#8ED9B9;--mb:#2F8064}
.admin-medal-preview.tone-coral{--ma:#F3A08A;--mb:#B75943}
.admin-medal-preview.tone-gold{--ma:#F2D174;--mb:#A77A1F}
.admin-medal-preview.tone-sun{--ma:#F6D27A;--mb:#C9782A}
.admin-medal-preview.tone-royal{--ma:#9DB7F2;--mb:#4B5FB0}
.admin-detail-block h3{font-size:14px;margin:0 0 8px;color:var(--ink)}
.admin-dish-list,.admin-plan-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:5px;font-size:13.5px;color:var(--ink)}
.admin-dish-list li,.admin-plan-list li{display:flex;justify-content:space-between;gap:10px;padding-bottom:4px;border-bottom:1px dotted var(--line-2)}
.admin-settings{display:flex;flex-wrap:wrap;gap:6px;font-size:13px;color:var(--ink)}
.dim{color:var(--ink-2);font-size:12.5px}

/* ===== 抽菜规则编辑器 ===== */
.rule-editor{
  margin-top:16px;padding:14px;
  background:var(--cream);
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.35);
}

.rule-head{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.rule-toggle{display:flex;align-items:center;gap:8px;flex:1;min-width:0;background:none;border:none;padding:0;margin:0;cursor:pointer;font-family:inherit;text-align:left;color:var(--ink)}
.rule-summary{font-size:12px;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.rule-caret{width:8px;height:8px;flex:none;margin-left:2px;border-right:2px solid var(--ink-3);border-bottom:2px solid var(--ink-3);transform:rotate(45deg);transition:transform .2s}
.rule-editor.open .rule-caret{transform:rotate(-135deg)}
.rule-editor:not(.open) .rule-actions{display:none}
.rule-editor:not(.open) .rule-body{display:none}
.rule-body{margin-top:10px}
.rule-body .hint{margin-top:0}
.rule-title{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--ink)}
.rule-title::before{content:"";width:3px;height:14px;border-radius:2px;background:var(--green);flex:none}
.rule-count{font-size:11px;font-weight:600;line-height:1.7;color:var(--green);background:var(--green-soft);border:1px solid var(--green-line);border-radius:999px;padding:0 9px}
#rule-list{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.rule-row{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  padding:8px 10px;
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:var(--shadow);
  transition:border-color .18s,box-shadow .18s,transform .18s;
}
.rule-row:hover{border-color:var(--green-line);box-shadow:var(--shadow-hover);transform:translateY(-1px)}
.rule-idx{
  width:22px;height:22px;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  border-radius:50%;background:var(--green-soft);border:1px solid var(--green-line);
  color:var(--green);font-size:11px;font-weight:700;
}
.rule-row select{
  min-height:36px;min-width:88px;
  border:1px solid var(--line);border-radius:10px;padding:4px 8px;
  font-size:14px;font-family:inherit;
  background:var(--cream);color:var(--ink);
  transition:border-color .18s,box-shadow .18s;
}
.rule-num{
  display:inline-flex;align-items:center;gap:6px;
  min-height:36px;padding:0 8px;
  border:1px solid var(--line);border-radius:10px;
  background:var(--cream);
  transition:border-color .18s,box-shadow .18s;
}
.rule-num .rule-lbl{font-size:12px;color:var(--ink-2);white-space:nowrap}
.rule-num input{
  width:42px;min-height:auto;padding:0;border:none;outline:none;
  background:transparent;color:var(--ink);
  font-family:inherit;font-size:14px;text-align:center;
}
.rule-num em{font-style:normal;font-size:12px;color:var(--ink-3)}
.rule-row select:focus,.rule-num:focus-within{
  border-color:var(--green);box-shadow:0 0 0 3px var(--green-soft);outline:none;
}
.rule-row .icon-btn{margin-left:auto}
.rule-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end;margin-left:auto}
.rule-bulk{display:none;align-items:center;gap:6px;flex-wrap:wrap}
.rule-chk{display:none;width:16px;height:16px;flex:none;margin:0;accent-color:var(--green);cursor:pointer}
.rule-editor.editing .rule-chk{display:inline-block}
.rule-row:has(.rule-chk:checked){border-color:var(--green);box-shadow:0 0 0 2px var(--green-soft)}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}
.empty-rule{
  margin-top:10px;padding:16px 12px;text-align:center;
  font-size:13px;color:var(--ink-2);
  border:1px dashed var(--line-2);border-radius:12px;
  background:var(--surface);
}
@media(max-width:420px){
  .rule-row{padding:8px}
  .rule-row select{flex:1 1 100%;min-width:0}
  .rule-num{flex:1}
  .rule-row .icon-btn{margin-left:0}
  .rule-actions{width:100%;justify-content:flex-start}
}

/* ============================================================
   全站视觉统一（v2）
   —— 只调整样式，不改结构 / ID / 事件，确保功能零缺失
   ============================================================ */

/* 设计令牌：间距、圆角、阴影、动效曲线 */
:root{
  --radius-pill:999px;
  --ring:0 0 0 3px var(--green-soft);
  --shadow-card:0 1px 2px rgba(58,42,34,.05),0 10px 26px rgba(58,42,34,.06);
  --shadow-float:0 18px 44px rgba(58,42,34,.18);
  --ease:cubic-bezier(.2,.7,.3,1);
}

[data-theme="rednight"],
[data-theme="warmnight"],
[data-theme="bluenight"],
[data-theme="purplenight"],
[data-theme="greennight"]{
  color-scheme:dark;
  --shadow-card:0 1px 2px rgba(0,0,0,.35),0 10px 26px rgba(0,0,0,.35);
  --shadow-float:0 20px 48px rgba(0,0,0,.6);
}

/* 基础排版 */
body{
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
  line-height:1.7;
}
h1,h2,h3{line-height:1.28;letter-spacing:.01em}
*{scrollbar-color:var(--line-2) transparent;scrollbar-width:thin}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line-2);border:2px solid transparent;background-clip:padding-box;border-radius:999px}
::-webkit-scrollbar-thumb:hover{background:var(--ink-3);background-clip:padding-box}

/* 顶栏与导航 */
.app-header{box-shadow:0 6px 22px rgba(0,0,0,.12)}
.brand{letter-spacing:.5px}
.brand small{opacity:.72;letter-spacing:.02em}
.nav{gap:4px;margin-top:10px}
.nav-item{
  border-radius:12px 12px 0 0;
  padding-left:10px;padding-right:10px;
  transition:color .18s,background .18s,border-color .18s;
}
.nav-item:hover{background:rgba(255,255,255,.10)}
.nav-item.active{background:rgba(255,255,255,.12)}
.account .account-user,.account .btn-logout,.theme-quick-btn{border-radius:var(--radius-pill)}

/* 卡片：去掉“所有卡片都上浮”，只让可交互卡片有反馈 */
.card{border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:20px}
.card:hover{transform:none;box-shadow:var(--shadow-card);border-color:var(--line)}
.card h2{letter-spacing:.02em}
.card h2::before{width:3px;height:15px}
.card .sub{line-height:1.65}

/* 按钮 */
.btn{border-radius:12px;font-weight:600;letter-spacing:.01em;transition:background .18s,border-color .18s,box-shadow .18s,transform .12s}
.btn-primary,.btn-green{box-shadow:0 6px 16px rgba(0,0,0,.10)}
.btn-primary:hover,.btn-green:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(0,0,0,.16)}
.btn:focus-visible,.icon-btn:focus-visible,.nav-item:focus-visible{outline:none;box-shadow:0 0 0 3px var(--green-soft)}
.btn-sm{border-radius:10px}
.icon-btn{border-radius:9px}

/* 表单：统一圆角与聚焦光晕 */
.field input,.field select,.field textarea,.toolbar input,.admin-search,.cat-add input,#import-text{
  border-radius:12px;
  transition:border-color .18s,box-shadow .18s,background .18s;
}
.field input::placeholder,.field textarea::placeholder,.toolbar input::placeholder,
.admin-search::placeholder,.cat-add input::placeholder,#import-text::placeholder{color:var(--ink-3)}
.field input:focus,.field select:focus,.field textarea:focus,.toolbar input:focus,
.admin-search:focus,.cat-add input:focus,#import-text:focus{
  border-color:var(--green);box-shadow:var(--ring);outline:none;
}

/* 标签 / 徽标 */
.chip,.chip-btn,.count-badge,.badge{line-height:1.7}
.chip{font-weight:500}

/* 今天的餐桌 */
.draw-card{border-radius:16px}
.draw-thumb{height:160px;object-fit:cover;border-radius:14px}

/* 菜谱 */
.dish-row{padding:12px 10px;margin:0 -10px;border-radius:12px}
.dish-thumb{width:58px;height:58px;border-radius:12px}
.detail-img{height:auto;max-height:360px;object-fit:contain}
.detail-block h3{letter-spacing:.02em}
.steps-detail .step-item{border-radius:12px}

/* 历史 */
.stat{border-radius:14px;box-shadow:0 12px 26px rgba(0,0,0,.18)}
.history-item{border-radius:14px;box-shadow:0 12px 26px rgba(0,0,0,.18)}
.history-item summary{padding:13px 15px}

/* 设置 / 用户卡 */
.user-info-card{padding:16px 18px}
.user-info-avatar .avatar-circle{width:54px;height:54px}

/* 管理后台 */
.admin-user-card{border-radius:var(--radius-lg);box-shadow:0 14px 30px rgba(0,0,0,.20)}
.admin-user-card:hover{transform:translateY(-2px);box-shadow:0 18px 38px rgba(0,0,0,.26)}
.admin-detail-card{padding:20px}

/* 登录 / 资料弹层与提示 */
#auth-screen,#profile-screen{background:rgba(30,22,17,.36);backdrop-filter:blur(6px)}
#auth-screen .auth-card,#profile-screen .auth-card{box-shadow:var(--shadow-float)}
#toast{box-shadow:var(--shadow-float);font-weight:500;letter-spacing:.01em}

/* 深色主题细节 */


/* 小屏收口 */
@media(max-width:760px){
  .card{padding:16px}
  .card:hover{box-shadow:var(--shadow-card)}
}
@media(max-width:420px){
  .btn{min-height:42px}
}

/* ============================================================
   设置页：统一区块结构（图标 + 标题 + 面板）
   ============================================================ */
.set-card{padding:18px}
.set-head{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px}
.set-icon{
  width:38px;height:38px;border-radius:12px;flex:none;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--green-soft);border:1px solid var(--green-line);color:var(--green);
  box-shadow:var(--shadow-card);
}
.set-icon svg{width:19px;height:19px}
.set-title{min-width:0;flex:1}
.set-title h2{margin:0;font-size:16px;letter-spacing:.02em}
.set-head h2::before{display:none}
.set-title .sub{margin:2px 0 0;font-size:12.5px;line-height:1.6}
.set-title .count-badge{margin-left:8px;vertical-align:middle}
.set-panel{margin-top:12px;padding:12px;background:var(--cream);border:1px solid var(--line);border-radius:12px}
.set-panel-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--ink);margin-bottom:8px}
.set-panel-head::before{content:"";width:3px;height:13px;border-radius:2px;background:var(--green);flex:none}
.set-foot{display:flex;justify-content:flex-end;margin-top:14px}
.set-danger{
  display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  margin-top:12px;padding:12px;
  border:1px dashed var(--danger-line);background:var(--danger-soft);border-radius:12px;
}
.set-danger-text b{display:block;font-size:13.5px;color:var(--tomato)}
.set-danger-text span{display:block;font-size:12px;color:var(--ink-2);margin-top:1px}
.set-card .rule-editor,.set-card .site-sec{margin-top:12px;padding:12px;border-radius:12px}

/* 主题选择：2×2 布局，与区块图标同语言 */
.set-card .theme-grid{gap:12px}
@media(min-width:640px){.set-card .theme-grid{grid-template-columns:repeat(2,1fr)}}
.theme-opt{padding:14px;border-radius:14px;box-shadow:var(--shadow-card)}
.theme-opt:hover{transform:translateY(-1px);border-color:var(--green-line)}
.theme-opt.active{box-shadow:0 0 0 2px var(--green-soft)}
.theme-swatches i{width:26px;height:26px}

/* 用户信息卡与区块统一 */
.user-info-card{padding:16px 18px;gap:14px;box-shadow:var(--shadow-card)}
.user-info-avatar .avatar-circle{width:56px;height:56px}
.user-info-name{font-size:17px}

@media(max-width:420px){
  .set-card{padding:15px}
  .set-icon{width:34px;height:34px;border-radius:10px}
  .set-foot .btn{width:100%}
  .set-danger .btn{width:100%}
}

/* ============================================================
   标题区（顶栏）v3：双行栅格，PC / 移动同一套比例
   ============================================================ */
.app-header{
  background:var(--grad-main);
  border-bottom:1px solid rgba(255,255,255,.14);
  box-shadow:0 8px 26px rgba(0,0,0,.14);
}
.app-header .inner{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  grid-template-areas:"brand right" "nav nav";
  align-items:center;
  column-gap:18px;
  max-width:1080px;
  padding:12px 18px 0;
}
.brand{grid-area:brand;min-width:0;font-size:22px;letter-spacing:.06em;line-height:1.1;gap:10px}
.brand #site-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand small{
  font-size:11.5px;opacity:.72;letter-spacing:.04em;margin-left:2px;
  padding-left:12px;border-left:1px solid rgba(255,255,255,.32);
  white-space:nowrap;
}
.site-logo{width:34px;height:34px;border-radius:10px;object-fit:cover;flex:none;box-shadow:0 0 0 2px rgba(255,255,255,.35)}
.top-right{grid-area:right;margin-left:0;gap:10px;min-width:0}
.account{min-width:0;gap:8px}
.account a{
  text-decoration:none;padding:5px 12px;border-radius:999px;
  background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.38);
  transition:background .18s,border-color .18s;
}
.account a:hover{background:rgba(255,255,255,.26);border-color:rgba(255,255,255,.6)}
.account .account-no{font-size:12px;opacity:.75;font-weight:400}
.account .account-user{max-width:120px;padding:4px 11px}
.account .btn-logout{padding:4px 12px}
.theme-quick-btn{padding:4px 12px;gap:6px}

.nav{
  grid-area:nav;min-width:0;
  display:flex;gap:4px;
  margin-top:8px;
  padding-bottom:6px;
  overflow-x:auto;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.nav::-webkit-scrollbar{display:none}
.nav-item{
  flex:0 0 auto;
  min-height:44px;
  padding:10px 16px;
  border-radius:10px 10px 0 0;
  border-bottom:3px solid transparent;
  font-size:14px;
  color:rgba(255,255,255,.8);
}
.nav-item:hover{color:#fff;background:rgba(255,255,255,.08)}
.nav-item.active{color:#fff;background:rgba(255,255,255,.12);border-bottom-color:var(--nav-line)}

@media(max-width:760px){
  .app-header .inner{padding:10px 14px 0;column-gap:12px}
  .brand{font-size:20px;gap:8px}
  .brand small{display:none}
  .site-logo{width:30px;height:30px;border-radius:9px}
  .nav{margin-top:6px}
  .nav-item{padding:9px 12px;font-size:13.5px;min-height:42px}
  .account{gap:6px}
  .account a{padding:4px 10px;font-size:12.5px}
  .theme-quick-btn{padding:3px 10px}
  .top-right{gap:8px}
}
@media(max-width:520px){
  .account .account-no{display:none}
  .theme-quick-btn .tq-name{display:none}
  .theme-quick-btn{padding:4px 9px}
  .top-right .theme-quick::before{display:none}
}
@media(max-width:420px){
  .app-header .inner{padding:9px 12px 0}
  .brand{font-size:18px}
  .site-logo{width:28px;height:28px}
  .account-user{max-width:84px}
  .account a{font-size:12px;padding:4px 9px}
  .nav-item{padding:8px 11px;font-size:13px}
}
@media(max-width:360px){
  .account-user{display:none}
  .brand{font-size:17px}
  .nav-item{padding:8px 10px}
}

/* ============================================================
   顶栏与内容分界：选中项不再与下方页面粘连
   ============================================================ */
.app-header{
  border-bottom:1px solid rgba(0,0,0,.16);
  box-shadow:0 1px 0 rgba(255,255,255,.08),0 8px 24px rgba(0,0,0,.18);
}
.app-header .inner{padding-bottom:2px}
.app-header .nav{margin-top:8px;padding-bottom:8px}
.app-header .nav-item{border-radius:10px 10px 0 0}
.app-header .nav-item.active{
  background:transparent;
  color:#fff;
  border-bottom-color:var(--nav-line);
  box-shadow:none;
}

/* ============================================================
   导航栏 v4：柔和标签 + 短下划线（去块面、去硬分界）
   ============================================================ */
.app-header{
  border-bottom:none;
  box-shadow:0 1px 0 rgba(255,255,255,.10),0 12px 30px rgba(0,0,0,.15);
}
.app-header .inner{padding-bottom:4px}
.app-header .nav{
  margin-top:10px;
  padding-bottom:10px;
  gap:4px;
  justify-content:flex-start;
}
.app-header .nav-item{
  position:relative;
  flex:0 0 auto;
  min-height:42px;
  padding:9px 15px;
  border:none;
  border-radius:10px;
  color:rgba(255,255,255,.78);
  font-size:14px;
  transition:color .18s,background .18s;
}
.app-header .nav-item::after{
  content:"";
  position:absolute;
  left:50%;bottom:3px;
  width:18px;height:3px;border-radius:2px;
  background:var(--nav-line);
  transform:translateX(-50%) scaleX(0);
  opacity:0;
  transition:transform .2s,opacity .2s;
}
.app-header .nav-item:hover{color:#fff;background:rgba(255,255,255,.07)}
.app-header .nav-item:hover::after{opacity:.4;transform:translateX(-50%) scaleX(.55)}
.app-header .nav-item.active{background:transparent;color:#fff;font-weight:700}
.app-header .nav-item.active::after{opacity:1;transform:translateX(-50%) scaleX(1)}
.app-header .nav-item:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.35)}

@media(max-width:760px){
  .app-header .nav{margin-top:8px;padding-bottom:8px;gap:2px}
  .app-header .nav-item{min-height:40px;padding:8px 12px;font-size:13.5px}
  .app-header .nav-item::after{bottom:2px;width:16px}
}
@media(max-width:420px){
  .app-header .nav-item{padding:7px 11px;font-size:13px}
}

/* ============================================================
   导航：PC 极简下划线（01） / 移动 分段控件（06）
   ============================================================ */
.app-header .nav{
  justify-self:center;
  display:flex;
  align-items:center;
  gap:30px;
  width:auto;
  max-width:100%;
  margin:8px 0 12px;
  padding:0;
  background:transparent;
  border:none;
  border-radius:0;
  box-shadow:none;
  overflow:visible;
}
.app-header .nav-item{
  position:relative;
  flex:0 0 auto;
  min-height:40px;
  padding:8px 2px;
  border:none;
  border-radius:0;
  background:transparent;
  color:rgba(255,255,255,.75);
  font-size:14px;
  line-height:1.2;
  white-space:nowrap;
  transition:color .18s;
}
.app-header .nav-item::after{
  content:"";
  display:block;
  position:absolute;
  left:50%;
  bottom:2px;
  width:22px;
  height:2px;
  border-radius:2px;
  background:var(--nav-line);
  transform:translateX(-50%) scaleX(0);
  opacity:0;
  transition:transform .2s,opacity .2s;
}
.app-header .nav-item:hover{background:transparent;color:#fff}
.app-header .nav-item:hover::after{opacity:.4;transform:translateX(-50%) scaleX(.55)}
.app-header .nav-item.active{
  background:transparent;
  color:#fff;
  font-weight:600;
  border-bottom-color:transparent;
  box-shadow:none;
}
.app-header .nav-item.active::after{opacity:1;transform:translateX(-50%) scaleX(1)}
.app-header .nav-item:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.35)}

@media(max-width:760px){
  .app-header .nav{
    justify-self:stretch;
    display:flex;
    width:100%;
    gap:2px;
    margin:8px 0;
    padding:3px;
    background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.18);
    border-radius:999px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.08);
  }
  .app-header .nav-item{
    flex:1 1 0;
    min-width:0;
    padding:8px 4px;
    border-radius:9px;
    font-size:12px;
    text-align:center;
  }
  .app-header .nav-item::after{display:none}
  .app-header .nav-item:hover{background:transparent;color:rgba(255,255,255,.75)}
  .app-header .nav-item.active{
    background:rgba(255,255,255,.94);
    color:var(--accent-ink);
    font-weight:600;
    box-shadow:0 2px 6px rgba(0,0,0,.14);
  }
  .app-header .nav-mobile-secondary{display:none!important}
  .app-header .nav-more{display:inline-flex!important;align-items:center;justify-content:center}
  .app-header .nav-more.active{background:rgba(255,255,255,.94);color:var(--accent-ink)}
}

.nav-more-menu{
  display:none;position:absolute;right:14px;top:calc(100% + 4px);z-index:80;
  min-width:150px;padding:6px;border:1px solid var(--line);border-radius:12px;
  background:var(--card);box-shadow:0 12px 30px rgba(25,20,15,.18);
}
.nav-more-menu.open{display:block}
.nav-more-item{
  display:block;width:100%;padding:9px 11px;border:0;border-radius:8px;
  background:transparent;color:var(--ink);font:inherit;font-size:13px;text-align:left;
  cursor:pointer;
}
.nav-more-item:hover{background:var(--cream)}
.nav-more-item.active{background:var(--green-soft);color:var(--accent-ink);font-weight:700}
@media(max-width:380px){
  .app-header .nav-item{padding:7px 3px;font-size:11.5px}
}
@media(max-width:340px){
  .app-header .nav-item{padding:7px 2px;font-size:11px}
}
@media(max-width:330px){
  .app-header .nav-item{padding:6px 1px;font-size:10.5px}
}

/* ============================================================
   全站页脚：统一版本信息
   ============================================================ */
.app-footer{
  border-top:1px solid var(--line);
  background:var(--paper);
  color:var(--ink-2);
}
.footer-in{
  max-width:1080px;
  margin:0 auto;
  padding:20px 18px 24px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px 20px;
  flex-wrap:wrap;
}
.footer-brand{display:flex;align-items:center;gap:9px;min-width:0}
.footer-mark{
  width:18px;height:18px;border-radius:6px;flex:none;
  background:var(--grad-main);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.28),0 2px 6px rgba(0,0,0,.10);
}
.footer-name{font-size:13px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.footer-tag{
  font-size:11.5px;color:var(--ink-3);white-space:nowrap;
  padding-left:9px;border-left:1px solid var(--line);
}
.footer-meta{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin-left:auto;font-size:11.5px;line-height:1.5;color:var(--ink-3);
}
.footer-version{white-space:nowrap}
/* 版本徽标：状态点 + 小号标签 + 等宽数字，贴合页脚的低调质感 */
.footer-version{
  display:inline-flex;align-items:center;gap:6px;margin-left:2px;
  padding:4px 10px 4px 8px;border-radius:999px;
  border:1px solid var(--line);
  background:linear-gradient(180deg,var(--card),var(--surface));
  box-shadow:0 1px 2px rgba(0,0,0,.10),inset 0 1px 0 rgba(255,255,255,.22);
  font-variant-numeric:tabular-nums;line-height:1;
}
.fv-dot{
  width:5px;height:5px;border-radius:50%;flex:none;
  background:var(--green);box-shadow:0 0 0 3px var(--green-soft);
}
.fv-label{font-size:10px;letter-spacing:.08em;color:var(--ink-3)}
.fv-num{font-size:11.5px;font-weight:700;letter-spacing:.02em;color:var(--ink)}
/* 备案信息：ICP / 公安联网备案 */
.footer-filing{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0;max-width:100%}
.footer-filing-link{
  display:inline-flex;align-items:center;gap:4px;
  color:var(--ink-2);text-decoration:none;font-size:11.5px;line-height:1.4;
}
.footer-filing-link:hover{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.footer-police-icon{width:11px;height:11px;flex:none;color:var(--accent)}
/* 公安联网备案：官方徽标为位图，按原始 16:16 等比显示 */
img.footer-police-icon{width:14px;height:14px;border-radius:2px;object-fit:contain;background:transparent;vertical-align:middle}
.footer-sep{display:none;width:3px;height:3px;border-radius:50%;background:var(--ink-3);opacity:.55;flex:none}
.footer-meta.filing-on .footer-sep{display:inline-block}
.footer-top{
  width:28px;height:28px;flex:none;border-radius:50%;
  border:1px solid var(--line);background:var(--surface);color:var(--ink-2);
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  box-shadow:0 1px 2px rgba(0,0,0,.06);
  transition:border-color .18s,color .18s,background .18s,transform .12s,box-shadow .18s;
}
.footer-top svg{width:14px;height:14px}
.footer-top:hover{border-color:var(--green-line);color:var(--green);background:var(--green-soft);transform:translateY(-1px);box-shadow:0 3px 8px rgba(0,0,0,.10)}
.footer-top:focus-visible{outline:none;box-shadow:var(--ring)}

@media(max-width:640px){
  .footer-in{padding:16px 14px 20px;justify-content:center;text-align:center}
  .footer-brand{justify-content:center;width:100%}
  .footer-tag{display:none}
  .footer-meta{justify-content:center;width:100%;margin-left:0;gap:8px}
  /* 窄屏：备案号独占一行，版本徽标与回顶在下一行居中 */
  .footer-filing{order:1;flex:1 1 100%;justify-content:center;row-gap:4px}
  .footer-version{order:2}
  .footer-top{order:3;display:inline-flex;width:28px;height:28px;margin-left:1px}
  .footer-meta .footer-sep,
  .footer-meta.filing-on .footer-sep{display:none}
}

/* ============================================================
   管理页用户：卡片 / 列表视图
   ============================================================ */
.admin-users.list-view{
  display:flex;
  flex-direction:column;
  gap:6px;
  background:none;
  border-radius:0;
  padding:0;
  box-shadow:none;
}
.admin-user-row{
  display:grid;
  grid-template-columns:30px minmax(0,1fr) auto 26px;
  grid-template-areas:"avatar main actions check";
  align-items:center;
  gap:8px;
  padding:7px 10px;
  background:var(--grad-main);
  border:none;
  border-radius:14px;
  box-shadow:0 10px 24px rgba(0,0,0,.22);
  position:relative;
  overflow:hidden;
  color:#fff;
  transition:transform .18s,box-shadow .18s;
}
.admin-user-row::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 55%)}
.admin-user-row>*{position:relative;z-index:1}
.admin-user-row:hover{transform:translateY(-1px);box-shadow:0 14px 30px rgba(0,0,0,.26)}
.admin-user-row .admin-user-avatar{grid-area:avatar;position:relative;top:auto;right:auto;width:30px;height:30px;flex:none}
.admin-user-row .admin-user-avatar .avatar-circle{width:30px;height:30px;box-shadow:0 0 0 2px rgba(255,255,255,.35),0 3px 8px rgba(0,0,0,.16)}
.admin-user-row .admin-user-avatar .avatar-ph{font-size:14px}
.admin-user-card .admin-user-at{font-size:13px;max-width:160px}
.admin-user-row-body{grid-area:main;min-width:0}
.admin-user-row-title{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0;line-height:1.3}
.admin-user-row-title .admin-user-name{font-size:14px}
.admin-user-row .badge{font-size:10px;padding:1px 7px;line-height:1.6}
.admin-user-at{font-size:11.5px;line-height:1.3;color:rgba(255,255,255,.72);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.admin-user-row-sub{display:flex;align-items:center;gap:2px 10px;flex-wrap:wrap;margin-top:1px;font-size:11.5px;line-height:1.35;color:rgba(255,255,255,.85)}
.admin-user-counts{white-space:nowrap}
.admin-user-row-actions{grid-area:actions;display:flex;align-items:center;justify-content:flex-end;gap:3px;flex-wrap:wrap}
.admin-icon-btn{
  width:26px;height:26px;flex:none;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid rgba(255,255,255,.5);border-radius:7px;background:rgba(255,255,255,.18);color:#fff;
  cursor:pointer;padding:0;
  transition:background .15s,border-color .15s,transform .12s;
}
.admin-icon-btn:hover{background:rgba(255,255,255,.30);border-color:rgba(255,255,255,.8);transform:translateY(-1px)}
.admin-icon-btn.danger:hover{background:var(--tomato-dark);border-color:var(--tomato-dark)}
.admin-icon-btn svg{width:14px;height:14px;display:block}
.admin-user-row>.admin-user-check{grid-area:check;align-self:center;margin:0}
.admin-users.export-on .admin-user-row{cursor:pointer;user-select:none}
@media(max-width:760px){
  .admin-user-row{
    grid-template-columns:28px minmax(0,1fr) 26px;
    grid-template-areas:"avatar main check" "actions actions actions";
    gap:6px;
    padding:6px 9px;
    border-radius:12px;
  }
  .admin-user-row .admin-user-avatar .avatar-circle{width:28px;height:28px}
  .admin-user-row .admin-user-avatar .avatar-ph{font-size:13px}
  .admin-user-row-actions{justify-content:flex-start}
  .admin-user-at{max-width:140px}
  .admin-icon-btn{width:28px;height:28px}
}
.admin-user-pager{
  display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  margin-top:12px;font-size:12px;color:var(--ink-2);
}
.admin-user-pager-right{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.admin-user-per{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--ink-2)}
.admin-user-per select{
  min-height:30px;border:1px solid var(--line);border-radius:8px;
  background:var(--surface);color:var(--ink);font-size:12px;font-family:inherit;padding:0 8px;
}

/* 原「首页：每日做饭抽菜主框」相关样式已移除（首页已并入「今天」） */

/* ============================================================
   管理后台：最近操作（审计日志）
   ============================================================ */
.admin-log-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:10px 0 12px}
.admin-log-toolbar .admin-log-search{flex:1;min-width:180px}
.admin-log-select{
  min-height:36px;border:1px solid var(--line);border-radius:10px;
  background:var(--surface);color:var(--ink);font-size:13px;font-family:inherit;padding:0 10px;
}
.admin-log-wrap{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--surface)}
.admin-log-row{
  display:grid;grid-template-columns:120px 100px 118px minmax(0,1fr) 118px;
  gap:10px;align-items:center;
  padding:9px 12px;border-bottom:1px solid var(--line);
  font-size:12.5px;
}
.admin-log-row:last-child{border-bottom:none}
.admin-log-head{
  background:var(--cream);color:var(--ink-3);
  font-size:11px;letter-spacing:.04em;font-weight:600;
  border-bottom:1px solid var(--line);
}
.admin-log-time{color:var(--ink-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.admin-log-who{font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-log-badge{
  display:inline-block;padding:1px 8px;border-radius:999px;
  font-size:11px;font-weight:600;white-space:nowrap;
  border:1px solid var(--green-line);background:var(--green-soft);color:var(--accent);
}
.admin-log-badge.danger{color:var(--tomato);border-color:var(--danger-line);background:var(--danger-soft)}
.admin-log-badge.warn{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 32%,transparent);background:color-mix(in srgb,var(--accent) 14%,var(--surface))}
.admin-log-badge.info{color:var(--accent);border-color:var(--green-line);background:var(--green-soft)}
.admin-log-badge.points{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 30%,transparent);background:color-mix(in srgb,var(--accent) 12%,var(--surface))}
.admin-log-target{min-width:0;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-log-detail{color:var(--ink-3);font-size:11.5px;margin-left:4px}
.admin-log-ip{color:var(--ink-3);font-size:11.5px;font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-log-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:12px;font-size:12px;color:var(--ink-2)}
.admin-log-page-btns{display:flex;gap:6px}
@media(max-width:760px){
  .admin-log-head{display:none}
  .admin-log-row{grid-template-columns:1fr auto;gap:3px 10px;padding:10px 8px}
  .admin-log-time{grid-column:1;font-size:11px}
  .admin-log-who{grid-column:2;text-align:right;font-size:12px}
  .admin-log-row>span:nth-child(3){grid-column:1 / -1}
  .admin-log-target{grid-column:1 / -1;white-space:normal;word-break:break-word}
  .admin-log-ip{display:none}
}

/* ============================================================
   设置页标题：统一为竖线（与全站卡片标题一致）
   ============================================================ */
.set-head .set-icon{display:none}
.set-head{gap:0}
.set-head h2::before{
  content:"";
  display:block;
  width:4px;
  height:16px;
  border-radius:2px;
  background:var(--green);
  flex:none;
}
.set-title h2{font-size:17px}

/* ============================================================
   管理后台：在线更新（阶段 1）
   ============================================================ */
.update-card .update-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:10px 0 2px}
#update-result{margin-top:10px}
.update-item{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--cream)}
.update-version{font-size:15px;font-weight:700;color:var(--ink);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.update-changelog{white-space:pre-wrap;font-size:12.5px;line-height:1.75;color:var(--ink-2);margin:8px 0 10px;max-height:220px;overflow:auto}
.update-meta{font-size:11.5px;color:var(--ink-3);margin:4px 0;word-break:break-all}
.update-meta code{font-size:11px;background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:1px 5px;color:var(--ink-2)}
.update-warn{margin:8px 0;padding:9px 11px;border:1px solid var(--danger-line);background:var(--danger-soft);color:var(--tomato);border-radius:10px;font-size:12.5px;line-height:1.6}
.update-note{margin:10px 0 0}
.update-item .btn{margin-top:4px}
.update-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.update-actions .btn{margin:0}
.update-progress{padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--cream);font-size:12.5px;color:var(--ink-2);line-height:1.7}
.update-ok{padding:11px 13px;border:1px solid var(--green-line);border-radius:10px;background:var(--green-soft);font-size:12.5px;color:var(--green);line-height:1.7}

/* 管理员密码确认弹窗：遮罩输入，替代原生 prompt */
/* 管理页：所有功能卡片标题统一字号、字重、竖线和间距 */
#view-admin .card{padding:18px}
#view-admin .list-head,
#view-admin .set-head{margin:0 0 8px;min-height:34px;align-items:center;gap:8px}
#view-admin .list-head h2,
#view-admin .set-title h2{display:flex;align-items:center;gap:8px;margin:0;font-size:18px;font-weight:700;line-height:1.3;letter-spacing:0}
#view-admin .set-title h2::before,
#view-admin .list-head h2::before{content:"";width:4px;height:16px;border-radius:2px;background:var(--green);flex:none}
#view-admin .set-icon{display:none}
#view-admin .set-title .sub{margin:3px 0 0;font-size:12px;line-height:1.6}
#view-admin .card .sub{margin:0 0 12px}
#view-admin .admin-toolbar,
#view-admin .admin-log-toolbar,
#view-admin .update-toolbar{margin:0 0 12px;gap:8px}
#view-admin .site-sec{margin-top:12px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
#view-admin .site-sec-head{min-height:22px;margin-bottom:10px;font-size:15px;font-weight:700;line-height:1.3;color:var(--ink)}
#view-admin .site-sec-head::before{width:4px;height:14px;border-radius:2px;background:var(--green)}
@media(max-width:640px){#view-admin .card{padding:15px}}
/* 通用主题下拉菜单：替代浏览器原生 select 弹出层 */
.ui-select-menu{position:fixed;z-index:20000;max-height:300px;overflow-y:auto;padding:5px;border:1px solid var(--line);border-radius:13px;background:var(--card);box-shadow:0 18px 44px rgba(32,22,14,.24),inset 0 1px 0 rgba(255,255,255,.35);animation:uiPopIn .14s ease-out}
.ui-select-option{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:34px;padding:7px 10px;border:0;border-radius:8px;background:transparent;color:var(--ink);font:inherit;font-size:13px;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ui-select-option:hover,.ui-select-option:focus{outline:none;background:color-mix(in srgb,var(--green) 9%,var(--surface))}
.ui-select-option.is-selected{color:var(--green);font-weight:700;background:color-mix(in srgb,var(--green) 10%,var(--surface))}
.ui-select-option.is-selected::after{content:"✓";flex:none;font-size:12px}
/* 通用主题弹层：替代浏览器 confirm/prompt */
.ui-mask{position:fixed;inset:0;z-index:5000;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(24,18,14,.46);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);animation:uiFadeIn .16s ease-out}
.ui-dialog{width:min(440px,100%);max-height:calc(100vh - 40px);overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 26px 70px rgba(35,24,16,.30),inset 0 1px 0 rgba(255,255,255,.5);animation:uiPopIn .18s ease-out}
.ui-dialog-head{padding:20px 22px 0}
.ui-dialog-kicker{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:700;letter-spacing:.14em;color:var(--accent);text-transform:uppercase}
.ui-dialog-kicker::before{content:"";width:4px;height:11px;border-radius:2px;background:var(--accent)}
.ui-dialog h3{font-size:18px;line-height:1.35;margin:7px 0 0;color:var(--ink);font-weight:700}
.ui-dialog-body{padding:12px 22px 4px}
.ui-dialog-message{white-space:pre-line;color:var(--ink-2);font-size:13px;line-height:1.75;word-break:break-word}
.ui-dialog-input{width:100%;height:44px;margin-top:12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);padding:0 13px;font:inherit;font-size:14px;outline:none;transition:border-color .18s,box-shadow .18s}
.ui-dialog-input:focus{border-color:var(--green);box-shadow:var(--ring)}
.ui-dialog-actions{display:flex;justify-content:flex-end;gap:9px;padding:16px 22px 20px}
.ui-dialog .btn{min-height:38px;padding:0 18px;border-radius:10px}
.ui-dialog .btn-danger{border:1px solid var(--tomato);background:var(--tomato);color:#fff}
.ui-dialog .btn-danger:hover{filter:brightness(.94);box-shadow:0 4px 12px rgba(160,50,35,.22)}
.ui-dialog-danger .ui-dialog-kicker{color:var(--tomato)}
.ui-dialog-danger .ui-dialog-kicker::before{background:var(--tomato)}
body.ui-dialog-open{overflow:hidden}
@keyframes uiFadeIn{from{opacity:0}to{opacity:1}}
@keyframes uiPopIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
@media(max-width:520px){.ui-mask{padding:14px}.ui-dialog-head{padding:17px 17px 0}.ui-dialog-body{padding:10px 17px 2px}.ui-dialog-actions{padding:14px 17px 17px}.ui-dialog .btn{flex:1;min-height:40px;padding:0 10px}}
.pwd-mask{position:fixed;inset:0;z-index:10020;background:rgba(42,28,20,.46);display:flex;align-items:center;justify-content:center;padding:18px}
.pwd-card{width:360px;max-width:100%;background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 24px 60px rgba(60,35,20,.25);padding:20px 22px}
.pwd-card h3{font-size:16px;margin:0 0 6px;color:var(--ink)}
.pwd-card p{font-size:12px;color:var(--ink-3);line-height:1.7;margin:0 0 12px}
.pwd-card input{width:100%;height:42px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);padding:0 12px;font-size:14px;font-family:inherit;outline:none;transition:border-color .18s,box-shadow .18s}
.pwd-card input:focus{border-color:var(--green);box-shadow:var(--ring)}
.pwd-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.adjust-card{width:420px}
.adjust-card p b{color:var(--accent);font-size:15px}
.adjust-field{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.adjust-field span{font-size:12px;color:var(--ink-2)}
.adjust-card select{width:100%;height:42px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);padding:0 12px;font-size:14px;font-family:inherit;outline:none;transition:border-color .18s,box-shadow .18s}
.adjust-card select:focus{border-color:var(--green);box-shadow:var(--ring)}
@media(max-width:600px){.pwd-card{width:100%;padding:18px}.adjust-card{width:100%}}









/* ============================================================
   顶栏视觉精修 v5：玻璃质感标题栏 + 胶囊导航
   ============================================================ */
.app-header{
  background:
    radial-gradient(120% 180% at 10% -40%, rgba(255,255,255,.26) 0%, rgba(255,255,255,0) 48%),
    radial-gradient(100% 140% at 92% -10%, rgba(255,255,255,.14) 0%, rgba(255,255,255,0) 52%),
    var(--grad-main);
  border-bottom:none;
  box-shadow:0 12px 34px rgba(0,0,0,.16);
  isolation:isolate;
}
.app-header::after{
  content:"";
  position:absolute;left:0;right:0;bottom:0;height:1px;
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.35),rgba(255,255,255,0));
  pointer-events:none;
}
.app-header .inner{max-width:1120px;padding:13px 22px 0;column-gap:20px}
.app-header .brand{
  font-size:clamp(20px,2.2vw,24px);
  letter-spacing:.05em;
  gap:11px;
  text-shadow:0 1px 10px rgba(0,0,0,.12);
}
.app-header .brand #site-name{font-weight:700}
.app-header .brand small{
  font-family:"Microsoft YaHei","PingFang SC",sans-serif;
  font-size:10.5px;font-weight:600;letter-spacing:.08em;
  opacity:.9;margin-left:4px;padding:4px 10px;
  border:1px solid rgba(255,255,255,.22);
  border-radius:999px;
  background:rgba(255,255,255,.10);
  white-space:nowrap;
}
.app-header .site-logo{
  width:38px;height:38px;border-radius:12px;
  box-shadow:0 0 0 2px rgba(255,255,255,.38),0 6px 16px rgba(0,0,0,.16);
}
.app-header .top-right{
  padding:4px;gap:6px;
  border:1px solid rgba(255,255,255,.10);
  border-radius:999px;
  background:rgba(255,255,255,.06);
}
.app-header .top-right .theme-quick::before{display:none}
.app-header .account{gap:6px}
.app-header .account a,
.app-header .account .account-user,
.app-header .account .btn-logout,
.app-header .theme-quick-btn{
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.22);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14);
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
}
.app-header .account a:hover,
.app-header .account .btn-logout:hover,
.app-header .theme-quick-btn:hover{
  background:rgba(255,255,255,.22);
  border-color:rgba(255,255,255,.36);
}
.app-header .nav{
  justify-self:center;
  display:flex;
  align-items:center;
  width:auto;
  max-width:100%;
  gap:3px;
  margin:10px 0 14px;
  padding:4px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.15);
  border-radius:999px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 8px 22px rgba(0,0,0,.08);
  overflow-x:auto;
  scrollbar-width:none;
}
.app-header .nav::-webkit-scrollbar{display:none}
.app-header .nav-item{
  flex:0 0 auto;
  min-height:38px;
  padding:7px 17px;
  border:none;
  border-radius:999px;
  background:transparent;
  color:rgba(255,255,255,.76);
  font-size:13.5px;
  font-weight:600;
  letter-spacing:.01em;
  box-shadow:none;
  transition:color .18s,background .18s,box-shadow .18s;
}
.app-header .nav-item::after{display:none}
.app-header .nav-item:hover{color:#fff;background:rgba(255,255,255,.12)}
.app-header .nav-item.active{
  color:var(--accent-ink);
  background:rgba(255,255,255,.94);
  font-weight:700;
  box-shadow:0 4px 12px rgba(0,0,0,.14);
}
.app-header .nav-item:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.35)}

@media(max-width:760px){
  .app-header .inner{padding:10px 14px 0;column-gap:12px}
  .app-header .brand{font-size:20px;gap:8px}
  .app-header .brand small{display:none}
  .app-header .site-logo{width:32px;height:32px;border-radius:10px}
  .app-header .top-right{padding:3px;gap:6px}
  .app-header .nav{
    justify-self:stretch;
    display:grid;
    grid-auto-flow:column;
    grid-auto-columns:minmax(0,1fr);
    width:100%;
    margin:8px 0 10px;
    padding:3px;
    gap:2px;
  }
  .app-header .nav-item{
    width:100%;
    min-width:0;
    min-height:36px;
    padding:7px 2px;
    font-size:12px;
    font-weight:600;
    border-radius:999px;
  }
  .app-header .nav-item.active{font-weight:600}
}
@media(max-width:420px){
  .app-header .inner{padding:9px 12px 0}
  .app-header .brand{font-size:18px}
  .app-header .site-logo{width:28px;height:28px}
  .app-header .nav-item{font-size:11px;padding:7px 0;white-space:nowrap;letter-spacing:-.01em}
  .theme-quick-btn{display:none}
  .theme-quick{display:none}
}
@media(max-width:380px){
  .app-header .nav-item{font-size:10.5px;padding:7px 0}
}
@media(max-width:330px){
  .app-header .nav-item{font-size:9.5px;padding:6px 0}
}
@media(max-width:560px){
  .site-brand{display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;align-items:center}
  .site-brand-logo{grid-column:1;grid-row:1}
  .site-brand-info{grid-column:2;grid-row:1}
  .site-brand-actions{grid-column:1 / -1;grid-row:2;width:100%}
  .site-brand-actions .btn{flex:1;justify-content:center}
}



/* ============================================================
   登录 / 注册 / 修改资料：浅色卡片式弹层
   ============================================================ */
#auth-screen,
#profile-screen{
  background:
    radial-gradient(circle at 50% 0%, rgba(255,255,255,.10), transparent 42%),
    rgba(28,20,16,.46);
  -webkit-backdrop-filter:blur(14px) saturate(.9);
  backdrop-filter:blur(14px) saturate(.9);
}
#auth-screen .auth-card,
#profile-screen .auth-card{
  background:linear-gradient(180deg,var(--surface) 0%,var(--card) 100%);
  border:1px solid var(--line);
  border-radius:26px;
  color:var(--ink);
  box-shadow:0 30px 80px rgba(0,0,0,.28);
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
}
#auth-screen .auth-card{width:min(390px,94vw);padding:30px 28px 26px}
#profile-screen .auth-card{width:min(380px,94vw);padding:28px 26px 24px}
#auth-screen .auth-card::after,
#profile-screen .auth-card::after{display:none}
#auth-screen .auth-logo{margin-bottom:2px}
#auth-screen .auth-site-logo{
  width:56px;height:56px;border-radius:18px;
  border:2px solid var(--surface);
  box-shadow:0 8px 22px rgba(0,0,0,.14),0 0 0 1px var(--line);
}
#auth-screen .auth-logo:has(.auth-site-logo[style*="display: none"]){display:none}
#auth-screen .auth-title,
#profile-screen .auth-title{
  font-family:KaiTi,"STKaiti","楷体",serif;
  font-size:28px;color:var(--ink);letter-spacing:.08em;
  margin:2px 0 4px;
}
#profile-screen .auth-title{font-size:26px}
#auth-screen .auth-sub,
#profile-screen .auth-sub{
  color:var(--ink-3);font-size:12.5px;line-height:1.65;
  margin:0 auto 20px;max-width:300px;
}
#profile-screen .auth-sub{margin-bottom:18px}
#auth-screen .auth-input,
#profile-screen .auth-input{
  width:100%;min-height:46px;
  border:1px solid var(--line);border-radius:13px;
  padding:9px 14px;font-size:15px;
  background:var(--surface);color:var(--ink);
  margin-bottom:12px;outline:none;
  transition:border-color .18s,background .18s,box-shadow .18s;
}
#auth-screen .auth-input::placeholder,
#profile-screen .auth-input::placeholder{color:var(--ink-3)}
#auth-screen .auth-input:focus,
#profile-screen .auth-input:focus{
  border-color:var(--green);
  background:var(--surface);
  box-shadow:var(--ring);
}
#auth-screen .auth-captcha{margin-bottom:12px}
#auth-screen .auth-captcha img{
  height:46px;border:1px solid var(--line);border-radius:12px;
  background:#fff;box-shadow:none;
}
#auth-screen .auth-avatar,
#profile-screen .auth-avatar{margin:0 0 16px;gap:7px}
#auth-screen .auth-avatar-preview,
#profile-screen .auth-avatar-preview{
  width:68px;height:68px;
  background:var(--green-soft);
  box-shadow:inset 0 0 0 1px var(--green-line),0 6px 18px rgba(0,0,0,.08);
}
#auth-screen .auth-avatar-preview:hover,
#profile-screen .auth-avatar-preview:hover{
  transform:scale(1.05);
  box-shadow:inset 0 0 0 1px var(--green-line),0 0 0 4px var(--green-soft),0 8px 22px rgba(0,0,0,.10);
}
#auth-screen .auth-avatar-preview .avatar-ph,
#profile-screen .auth-avatar-preview .avatar-ph{color:var(--green)}
#auth-screen .auth-avatar-plus{color:var(--green)}
#auth-screen .auth-avatar-hint,
#profile-screen .auth-avatar-hint{color:var(--ink-3)}
#auth-screen .auth-err,
#profile-screen .auth-err{
  min-height:0;margin:0 0 10px;padding:0;border:0;
  background:transparent;text-align:left;
  font-size:12.5px;line-height:1.6;color:var(--tomato);
}
#auth-screen .auth-err.show,
#profile-screen .auth-err.show{
  display:block;padding:9px 11px;
  border:1px solid var(--danger-line);border-radius:10px;
  background:var(--tomato-soft);
}
#auth-screen .auth-btn,
#profile-screen .auth-btn{
  width:100%;min-height:48px;
  background:var(--grad-main);color:#fff;
  border:none;border-radius:14px;
  font-size:15px;font-weight:700;letter-spacing:.16em;
  box-shadow:0 10px 24px rgba(0,0,0,.16);
  transition:transform .12s,filter .15s,box-shadow .18s;
}
#auth-screen .auth-btn:hover,
#profile-screen .auth-btn:hover{
  filter:brightness(1.04);transform:translateY(-1px);
  box-shadow:0 14px 30px rgba(0,0,0,.20);
}
#auth-screen .auth-btn:active,
#profile-screen .auth-btn:active{transform:scale(.98)}
#auth-screen .auth-btn:disabled,
#profile-screen .auth-btn:disabled{opacity:.55;cursor:wait;transform:none}
#auth-screen .auth-switch,
#profile-screen .auth-switch{
  margin-top:16px;color:var(--ink-2);font-size:12.5px;opacity:1;
}
#auth-screen .auth-switch a,
#profile-screen .auth-switch a{
  color:var(--green);font-weight:700;text-decoration:none;
  border-bottom:1px solid var(--green-line);padding-bottom:1px;
}
#auth-screen .auth-switch a:hover,
#profile-screen .auth-switch a:hover{border-bottom-color:var(--green)}
#auth-screen .auth-turnstile .ts-loading{color:var(--ink-3)}
#auth-screen .auth-turnstile .ts-fail-tip{
  background:var(--cream);border:1px solid var(--line);
  color:var(--ink-2);
}
@keyframes authCardIn{
  from{opacity:0;transform:translateY(12px) scale(.98)}
  to{opacity:1;transform:none}
}
#auth-screen.show .auth-card,
#profile-screen.show .auth-card{animation:authCardIn .22s var(--ease)}

@media(max-width:480px){
  #auth-screen .auth-card,
  #profile-screen .auth-card{padding:24px 20px 22px;border-radius:22px}
  #auth-screen .auth-title{font-size:26px}
  #profile-screen .auth-title{font-size:24px}
  #auth-screen .auth-input,
  #profile-screen .auth-input{font-size:16px}
}

/* ============================================================
   登录 / 注册 / 修改资料：深色卡片版
   ============================================================ */
#auth-screen .auth-card,
#profile-screen .auth-card{
  background:linear-gradient(160deg,#2B2521 0%,#1D1A18 100%);
  background:
    linear-gradient(180deg, color-mix(in srgb, var(--green) 22%, transparent) 0%, transparent 118px),
    radial-gradient(circle at 88% 0%, color-mix(in srgb, var(--green) 24%, transparent) 0%, transparent 46%),
    linear-gradient(160deg, color-mix(in srgb, var(--green) 27%, #211D1A) 0%, color-mix(in srgb, var(--green) 9%, #12100F) 100%);
  border-color:rgba(255,255,255,.10);
  border-color:color-mix(in srgb, var(--green) 18%, rgba(255,255,255,.07));
  color:#FFF8F1;
  box-shadow:0 32px 80px rgba(0,0,0,.48),inset 0 1px 0 rgba(255,255,255,.10);
}
#auth-screen .auth-title,
#profile-screen .auth-title{color:#FFF8F1;text-shadow:0 1px 12px rgba(0,0,0,.28)}
#auth-screen .auth-sub,
#profile-screen .auth-sub{color:rgba(255,255,255,.56)}
#auth-screen .auth-input,
#profile-screen .auth-input{
  background:rgba(255,255,255,.07);
  background:color-mix(in srgb, var(--green) 8%, rgba(255,255,255,.06));
  border-color:rgba(255,255,255,.13);
  border-color:color-mix(in srgb, var(--green) 18%, rgba(255,255,255,.10));
  color:#FFF8F1;
}
#auth-screen .auth-input::placeholder,
#profile-screen .auth-input::placeholder{color:rgba(255,255,255,.42)}
#auth-screen .auth-input:focus,
#profile-screen .auth-input:focus{
  border-color:var(--green);
  background:rgba(255,255,255,.10);
  background:color-mix(in srgb, var(--green) 12%, rgba(255,255,255,.08));
  box-shadow:0 0 0 3px rgba(255,255,255,.08);
}
#auth-screen .auth-site-logo{
  border-color:rgba(255,255,255,.14);
  box-shadow:0 10px 26px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.08);
}
#auth-screen .auth-avatar-preview,
#profile-screen .auth-avatar-preview{
  background:rgba(255,255,255,.08);
  background:color-mix(in srgb, var(--green) 12%, rgba(255,255,255,.06));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.20),0 8px 20px rgba(0,0,0,.26);
}
#auth-screen .auth-avatar-preview:hover,
#profile-screen .auth-avatar-preview:hover{
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.30),0 0 0 4px rgba(255,255,255,.08),0 10px 24px rgba(0,0,0,.30);
}
#auth-screen .auth-avatar-preview .avatar-ph,
#profile-screen .auth-avatar-preview .avatar-ph,
#auth-screen .auth-avatar-plus{color:#FFF8F1}
#auth-screen .auth-avatar-hint,
#profile-screen .auth-avatar-hint{color:rgba(255,255,255,.50)}
#auth-screen .auth-err,
#profile-screen .auth-err{color:#FFD1C8}
#auth-screen .auth-err.show,
#profile-screen .auth-err.show{
  background:rgba(226,78,85,.14);
  border-color:rgba(226,78,85,.32);
}
#auth-screen .auth-btn,
#profile-screen .auth-btn{
  background:var(--grad-main);
  color:#fff;
  box-shadow:0 12px 28px rgba(0,0,0,.30);
}
#auth-screen .auth-switch,
#profile-screen .auth-switch{color:rgba(255,255,255,.60)}
#auth-screen .auth-switch a,
#profile-screen .auth-switch a{
  color:#FFF8F1;
  border-bottom-color:rgba(255,255,255,.28);
}
#auth-screen .auth-switch a:hover,
#profile-screen .auth-switch a:hover{border-bottom-color:#FFF8F1}
#auth-screen .auth-captcha img{
  border-color:rgba(255,255,255,.16);
  box-shadow:0 6px 16px rgba(0,0,0,.28);
}
#auth-screen .auth-turnstile .ts-loading{color:rgba(255,255,255,.55)}
#auth-screen .auth-turnstile .ts-fail-tip{
  background:rgba(255,255,255,.06);
  border-color:rgba(255,255,255,.12);
  color:rgba(255,255,255,.72);
}

/* 深色弹层背景：跟随主题色微光 */
#auth-screen,#profile-screen{
  background:
    radial-gradient(circle at 50% 0%, rgba(255,255,255,.10), transparent 42%),
    rgba(28,20,16,.46);
  background:
    radial-gradient(circle at 50% 0%, color-mix(in srgb, var(--green) 18%, transparent), transparent 46%),
    rgba(18,14,12,.52);
}

/* 深色系主题分组 / 快捷菜单滚动 */
.theme-group-title{
  grid-column:1/-1;
  display:flex;align-items:center;gap:8px;
  margin:6px 0 0;padding:10px 2px 2px;
  border-top:1px dashed var(--line);
  font-size:11px;font-weight:700;color:var(--ink-3);letter-spacing:.14em;
}
.theme-group-title::before{content:"";width:3px;height:11px;border-radius:2px;background:var(--green)}
.theme-quick-menu{max-height:min(70vh,420px);overflow-y:auto}


/* 移动端右上角：各控件保留独立胶囊，不要外层容器背景 */
@media(max-width:760px){
  .app-header .top-right{
    padding:0;
    gap:6px;
    background:none;
    border:0;
    border-radius:0;
    box-shadow:none;
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
    align-items:center;
    flex-wrap:nowrap;
  }
  .app-header .account{
    gap:6px;
    align-items:center;
    min-width:0;
    flex-wrap:nowrap;
    background:transparent;
    border:0;
    box-shadow:none;
  }
  .app-header .account-reg{
    gap:4px;
    align-items:center;
    white-space:nowrap;
  }
  .app-header .account a,
  .app-header .account .account-user,
  .app-header .account .btn-logout,
  .app-header .theme-quick-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    height:34px;
    min-height:34px;
    padding:0 12px;
    line-height:1;
    box-sizing:border-box;
    white-space:nowrap;
    background:rgba(255,255,255,.12);
    border:1px solid rgba(255,255,255,.22);
    border-radius:999px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.14);
    -webkit-backdrop-filter:blur(8px);
    backdrop-filter:blur(8px);
  }
  .app-header .account a{
    color:#fff;
    font-size:12.5px;
    text-decoration:none;
    border-bottom:0;
    padding-bottom:0;
  }
  .app-header .account a:hover,
  .app-header .account .btn-logout:hover,
  .app-header .theme-quick-btn:hover{
    background:rgba(255,255,255,.22);
    border-color:rgba(255,255,255,.36);
    color:#fff;
  }
  .app-header .account .account-user{max-width:90px}
  .app-header .account .btn-logout{font-size:12.5px}
  .app-header .theme-quick-btn{font-size:12px;padding:0 10px}
  .app-header .account .account-no{color:rgba(255,255,255,.7)}
}
@media(max-width:520px){
  .app-header .theme-quick-btn{padding:0 9px}
}
@media(max-width:360px){
  .app-header .account .account-user{display:none}
}

/* 移动端右上角：主题切换空间不足时自动换行 */
@media(max-width:760px){
  .app-header .top-right{
    flex-wrap:wrap;
    justify-content:flex-end;
    row-gap:6px;
    column-gap:8px;
    max-width:max(150px, calc(100vw - 210px));
  }
  .app-header .account{flex:0 0 auto}
  .app-header .theme-quick{flex:0 0 auto}
}
@media(max-width:760px){
  .nav-full{display:none}
  .nav-short{display:inline}
  .app-header .nav{display:flex;grid-auto-flow:unset;gap:2px}
  .app-header .nav-item{flex:1 1 0;width:auto;min-width:0;padding-left:0;padding-right:0}
}
@media(max-width:430px){
  .app-header .theme-quick{display:none}
  .account-user .group-level-star,.account-user .account-special-only{display:none}
}

/* 右上角昵称：用户名小窗 */
.account-user-wrap{position:relative;display:inline-flex;align-items:center;min-width:0}
.account-user{display:inline-flex;align-items:center;gap:3px;min-width:0}
.account-nick-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.account-user .group-level-star{width:22px;height:22px;background:rgba(255,255,255,.16);border-radius:50%;box-shadow:inset 0 0 0 1px rgba(255,255,255,.28)}
.account-user .group-level-star::before{filter:drop-shadow(0 0 1px rgba(255,255,255,1)) drop-shadow(0 0 2px rgba(0,0,0,.55))}
.account-user .group-level-star i{font-size:9px}
.account-user .account-special-only{flex:0 0 22px;width:22px;height:22px;min-width:22px;font-size:11px;border-radius:7px;padding:0}
.account-special-only{display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px;width:22px;height:22px;min-width:22px;padding:0;border:1px solid var(--gold-line);border-radius:7px;font-size:11px;font-weight:700;line-height:1;color:var(--gold-ink);background:var(--gold-soft);box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 2px 5px rgba(0,0,0,.12)}
.account-user{cursor:pointer}
.account-user-tip{
  position:absolute;
  left:50%;
  right:auto;
  top:calc(100% + 9px);
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:0;
  min-width:210px;
  max-width:min(78vw,280px);
  padding:8px 12px;
  border:1px solid var(--line);
  border-color:color-mix(in srgb, var(--green) 22%, var(--line));
  border-radius:14px;
  background:var(--card);
  background:linear-gradient(180deg,color-mix(in srgb,var(--card) 94%,var(--green) 6%) 0%,color-mix(in srgb,var(--card) 86%,var(--green) 14%) 100%);
  color:var(--ink);
  box-shadow:0 14px 32px rgba(0,0,0,.18),inset 0 1px 0 rgba(255,255,255,.14);
  -webkit-backdrop-filter:blur(14px) saturate(1.05);
  backdrop-filter:blur(14px) saturate(1.05);
  font-size:12.5px;
  line-height:1.4;
  letter-spacing:.01em;
  white-space:nowrap;
  text-align:left;
  opacity:0;
  visibility:hidden;
  transform:translate(-50%,-5px);
  transition:opacity .16s,transform .16s,visibility .16s;
  pointer-events:none;
  z-index:120;
}
.account-user-tip .tip-row{display:flex;align-items:center;justify-content:space-between;gap:18px;width:100%;min-width:0;padding:4px 0}
.account-user-tip .tip-row + .tip-row{border-top:1px solid var(--line);margin-top:2px;padding-top:7px}
.account-user-tip .tip-label{
  flex:none;
  padding:0;
  border:0;
  font-size:10px;
  font-weight:700;
  letter-spacing:.10em;
  color:var(--ink-3);
  opacity:.9;
  line-height:1.2;
}
.account-user-tip .tip-name{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  font-size:12.5px;
  font-weight:700;
  color:var(--ink);
  line-height:1.4;
}
.account-user-tip .tip-group{display:inline-flex;align-items:center;gap:5px;min-width:0;justify-content:flex-end}
.account-user-tip .badge-group{max-width:180px;font-size:11px;line-height:1.7;padding:1px 8px}
.account-user-tip .badge-group .group-level-star{width:16px;height:16px}
.account-user-tip .badge-group .group-level-star i{font-size:8px}
.account-user-tip .group-badge-text{overflow:hidden;text-overflow:ellipsis;max-width:130px}
.account-user-tip::before{
  content:"";
  position:absolute;
  left:50%;
  top:-5px;
  width:9px;
  height:9px;
  transform:translateX(-50%) rotate(45deg);
  background:var(--card);
  background:color-mix(in srgb, var(--card) 92%, var(--green) 8%);
  border-left:1px solid var(--line);
  border-top:1px solid var(--line);
  border-left-color:color-mix(in srgb, var(--green) 22%, var(--line));
  border-top-color:color-mix(in srgb, var(--green) 22%, var(--line));
}
.account-user-tip.show{
  opacity:1;
  visibility:visible;
  transform:translate(-50%,0);
}
.account-user-tip.show{pointer-events:auto}

/* 右上角账号面板：ID / 用户名 / 用户组 / 总积分 / 积分明细 / 注销 */
.account-user-tip{
  left:auto;
  right:0;
  min-width:300px;
  max-width:min(92vw,330px);
  max-height:calc(100vh - 82px);
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:0;
  border-radius:17px;
  white-space:normal;
  transform:translateY(-5px);
  box-shadow:0 22px 54px rgba(30,20,12,.26),inset 0 1px 0 rgba(255,255,255,.28);
}
.account-user-tip.show{transform:translateY(0)}
.account-user-tip::before{left:auto;right:24px;transform:rotate(45deg)}
.account-menu-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px 11px;border-bottom:1px solid var(--line)}
.account-menu-kicker{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:800;letter-spacing:.12em;color:var(--accent)}
.account-menu-kicker::before{content:"";width:5px;height:13px;border-radius:3px;background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}
.account-menu-logout{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:none;border-radius:10px;background:rgba(229,72,77,.12);color:#e5484d;cursor:pointer;transition:background .15s,color .15s,transform .12s}
.account-menu-logout svg{width:16px;height:16px}
.account-menu-logout:hover{background:#e5484d;color:#fff;transform:scale(1.06)}
.account-user-tip .tip-row{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;gap:12px;padding:7px 15px}
.account-user-tip .tip-row + .tip-row{border-top:1px dashed color-mix(in srgb,var(--line) 82%,transparent);margin-top:0;padding-top:7px}
.account-user-tip .tip-label{font-size:10px;letter-spacing:.08em}
.account-user-tip .tip-name{min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;font-size:12px;font-weight:700;color:var(--ink);line-height:1.4;justify-self:end;text-align:right}
.account-user-tip .tip-group{display:flex;align-items:center;justify-content:flex-end;gap:5px;min-width:0;max-width:100%;justify-self:end;text-align:right}
.account-user-tip .tip-group .badge-group{max-width:100%}
.account-total-row{background:color-mix(in srgb,var(--green) 6%,transparent)}
.account-total{justify-self:end;text-align:right;font-size:16px;line-height:1;font-weight:800;color:var(--green);letter-spacing:-.02em}
.account-menu-points-head{padding:11px 15px 6px;font-size:9px;font-weight:800;letter-spacing:.13em;color:var(--ink-3);border-top:1px solid var(--line)}
.account-menu-points{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:0 11px 12px}
.account-point{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:7px 8px;border:1px solid color-mix(in srgb,var(--line) 80%,transparent);border-radius:9px;background:color-mix(in srgb,var(--paper) 78%,transparent)}
.account-point span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;color:var(--ink-3)}
.account-point b{flex:none;font-size:12px;color:var(--ink);font-weight:800}
.account-checkin-wrap{display:block;padding:1px 11px 13px}
.account-checkin{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;min-height:40px;padding:0 12px;border:1px solid color-mix(in srgb,var(--green) 34%,transparent);border-radius:11px;background:linear-gradient(135deg,color-mix(in srgb,var(--green) 92%,#fff 8%),color-mix(in srgb,var(--green) 78%,#123 22%));color:#fff;font:inherit;font-size:12.5px;font-weight:800;letter-spacing:.03em;cursor:pointer;box-shadow:0 6px 14px color-mix(in srgb,var(--green) 24%,transparent),inset 0 1px 0 rgba(255,255,255,.28);transition:transform .16s,filter .16s,box-shadow .16s}
.account-checkin svg{width:16px;height:16px}
.account-checkin:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.04);box-shadow:0 8px 18px color-mix(in srgb,var(--green) 30%,transparent),inset 0 1px 0 rgba(255,255,255,.3)}
.account-checkin:active:not(:disabled){transform:translateY(0)}
.account-checkin:disabled,.account-checkin.is-done{cursor:default;border-color:var(--line);background:color-mix(in srgb,var(--paper) 82%,var(--green) 18%);color:var(--ink-3);box-shadow:none;filter:none}
.account-checkin.is-done svg{opacity:.65}
.account-checkin:focus-visible{outline:none;box-shadow:var(--ring)}
.account-menu-logout:focus-visible{outline:none;box-shadow:var(--ring)}
@media(max-width:520px){
  .account-user-tip{right:-2px;min-width:286px;max-width:calc(100vw - 22px)}
  .account-user-tip::before{right:22px}
  .account-menu-points{grid-template-columns:1fr}
}

/* ============================================================
   今天的餐桌：空态（今日计划已合并进「今天」）
   ============================================================ */
.plan-empty-state{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:5px;
  padding:30px 16px;
  text-align:center;
  border:1px dashed var(--line-2);
  border-radius:16px;
  background:var(--cream);
}
.plan-empty-state b{font-size:15px;color:var(--ink)}
.plan-empty-state span{
  max-width:320px;
  font-size:12.5px;
  color:var(--ink-2);
  line-height:1.7;
}

/* ============================================================
   页面级统一骨架
   .page-hero：非首页统一渐变页头
   .card：浅色内容卡
   渐变数据卡：.draw-card / .dish-row / .stat / .history-item / .admin-user-card
   ============================================================ */
.page-hero{
  position:relative;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:18px;
  flex-wrap:wrap;
  margin:0 0 14px;
  padding:26px;
  border-radius:26px;
  background:linear-gradient(145deg,var(--card),color-mix(in srgb,var(--card) 90%,var(--accent) 10%));
  border:1px solid color-mix(in srgb,var(--line) 74%,var(--accent) 26%);
  color:var(--ink);
  box-shadow:0 12px 34px rgba(42,28,20,.08);
}
.page-hero::after{display:none}
.page-hero-copy{
  position:relative;
  z-index:2;
  width:100%;
  max-width:720px;
  min-width:0;
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
}
.page-hero-kicker{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:5px 13px;
  border-radius:999px;
  background:var(--green-soft);
  border:1px solid var(--green-line);
  font-size:11.5px;
  font-weight:600;
  letter-spacing:.18em;
  color:var(--accent-ink);
}
.page-hero-dot{
  width:5px;
  height:5px;
  border-radius:50%;
  flex:none;
  background:var(--accent);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 14%,transparent);
}
.page-hero h1{
  margin:9px 0 8px;
  font-family:KaiTi,"STKaiti","楷体",serif;
  font-size:34px;
  line-height:1.18;
  font-weight:700;
  letter-spacing:.05em;
  color:var(--ink);
  text-align:center;
}
.page-hero p{
  margin:0;
  max-width:600px;
  font-size:12.5px;
  line-height:1.7;
  color:var(--ink-2);
  text-align:center;
}
.page-hero-meta{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  flex-wrap:wrap;
  margin-top:12px;
}
.page-pill{
  display:inline-flex;
  align-items:center;
  gap:5px;
  padding:5px 10px;
  border-radius:999px;
  border:1px solid var(--line);
  background:var(--card);
  color:var(--ink-2);
  font-size:11.5px;
  font-weight:600;
  line-height:1;
}
.page-pill.done{background:var(--green-soft);border-color:var(--green-line);color:var(--green);font-weight:700}
.page-pill.draft{background:var(--gold-soft);border-color:var(--gold-line);color:var(--gold-ink)}
.page-pill.idle{background:var(--cream);border-color:var(--line);color:var(--ink-3)}
.page-pill.hidden{background:transparent;border-style:dashed;border-color:color-mix(in srgb,var(--ink-3) 55%,transparent);color:var(--ink-3)}
.page-hero-orb{display:none}
@media(max-width:640px){
  .page-hero{padding:20px;border-radius:22px}
  .page-hero h1{font-size:26px}
  .page-hero p{font-size:12px}
  .page-hero-orb.orb-a{width:170px;height:170px;right:-70px;top:-82px}
  .page-hero-orb.orb-b{display:none}
}

/* 设置页主题区：半折叠 + 透明渐隐 */
.set-card .theme-collapse{
  position:relative;
  max-height:360px;
  overflow:hidden;
  border-radius:14px;
  transition:max-height .28s var(--ease);
}
.set-card .theme-collapse::after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:0;
  height:62px;
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%,var(--card) 92%);
  pointer-events:none;
  z-index:2;
  transition:opacity .2s;
}
.set-card .theme-collapse.expanded{max-height:2400px}
.set-card .theme-collapse.expanded::after{opacity:0}
.theme-expand{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  width:100%;
  max-width:220px;
  margin:12px auto 0;
  padding:8px 14px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--surface);
  color:var(--ink-2);
  font-size:12px;
  font-family:inherit;
  cursor:pointer;
  box-shadow:var(--shadow);
  transition:background .18s,border-color .18s,color .18s;
}
.theme-expand:hover{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}
.theme-expand::after{
  content:"";
  width:7px;
  height:7px;
  flex:none;
  border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;
  transform:translateY(-2px) rotate(45deg);
  transition:transform .2s;
}
.theme-collapse.expanded + .theme-expand::after{transform:translateY(2px) rotate(-135deg)}
.theme-column{display:flex;flex-direction:column;gap:10px;min-width:0}
.theme-column .theme-group-title{
  grid-column:auto;
  margin:0 0 2px;
  padding:0 2px 8px;
  border-top:0;
  border-bottom:1px dashed var(--line);
}

/* 菜品分类：半折叠 + 透明渐隐 */
.cat-collapse{
  position:relative;
  max-height:2000px;
  border-radius:14px;
  transition:max-height .28s var(--ease);
}
.cat-collapse.collapsed{
  max-height:248px;
  overflow:hidden;
}
.cat-collapse .cat-manage{margin-bottom:0}
.cat-collapse.collapsed::after{
  content:"";
  position:absolute;
  left:0;right:0;bottom:0;
  height:112px;
  background:linear-gradient(180deg,rgba(255,255,255,0) 0%,var(--card) 92%);
  pointer-events:none;
  z-index:2;
}
.cat-collapse:not(.collapsed) + .theme-expand::after{transform:translateY(2px) rotate(-135deg)}

/* 注意：原「我的菜谱：深色渐变菜品卡」整段已移除。
   菜谱页改为浅色大卡 + 左分类总览 + 右列表（见 dishes.css），
   菜品行回到基础 .dish-row 浅色样式，不再使用 --grad-main 深色底。 */

/* 登录：30 天免登录 */
.auth-remember{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  margin:2px 0 14px;
  color:rgba(255,255,255,.66);
  font-size:12.5px;
  cursor:pointer;
  user-select:none;
}
.auth-remember input{
  width:15px;
  height:15px;
  margin:0;
  flex:none;
  accent-color:var(--green);
  cursor:pointer;
}
.auth-remember:hover{color:rgba(255,255,255,.88)}

/* 移动端主题：浅色左、深色右，两列逻辑与 PC 一致 */
@media(max-width:640px){
  .set-card .theme-grid{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:8px;
  }
  .theme-column{gap:8px}
  .theme-column .theme-group-title{
    font-size:10px;
    padding-bottom:6px;
  }
  .set-card .theme-grid .theme-opt{
    padding:9px 8px;
    gap:4px;
    border-radius:11px;
  }
  .theme-swatches{gap:3px}
  .theme-swatches i{width:18px;height:18px}
  .theme-name{font-size:12.5px}
  .theme-desc{
    font-size:9.5px;
    line-height:1.35;
    white-space:normal;
    word-break:break-word;
  }
  .theme-check{width:15px;height:15px;top:6px;right:6px}
  .theme-check svg{width:10px;height:10px}
}

/* ============================================================
   登录 / 注册 / 修改资料：03 整卡渐变
   ============================================================ */
#auth-screen .auth-card,
#profile-screen .auth-card{
  background:var(--grad-main);
  border:0;
  color:#fff;
  box-shadow:0 30px 70px rgba(0,0,0,.32),inset 0 1px 0 rgba(255,255,255,.22);
  text-align:left;
}
#auth-screen .auth-card{width:min(390px,94vw);padding:26px 26px 24px}
#profile-screen .auth-card{width:min(390px,94vw);padding:24px 26px 24px}
#auth-screen .auth-close,
#profile-screen .auth-close{position:absolute;top:14px;right:14px;z-index:3;width:28px;height:28px;padding:0;border:1px solid rgba(255,255,255,.32);border-radius:8px;background:rgba(255,255,255,.12);color:#fff;font-size:18px;line-height:1;cursor:pointer}
#auth-screen .auth-close:hover,
#profile-screen .auth-close:hover{background:rgba(255,255,255,.24)}
#auth-screen .auth-brand,
#profile-screen .auth-brand{display:flex;align-items:center;gap:10px;margin:0 0 14px;text-align:left;padding-right:26px}
#auth-screen .auth-brand .auth-logo,
#profile-screen .auth-brand .auth-logo{display:block;margin:0;flex:none}
#auth-screen .auth-brand .auth-logo:has(.auth-site-logo[style*="display: none"]){display:none}
#auth-screen .auth-site-logo{width:38px;height:38px;border-radius:11px;border:1px solid rgba(255,255,255,.45);box-shadow:0 4px 12px rgba(0,0,0,.16)}
#profile-screen .auth-site-logo{width:38px;height:38px;border-radius:11px;border:1px solid rgba(255,255,255,.45);box-shadow:0 4px 12px rgba(0,0,0,.16)}
#profile-screen .auth-brand .auth-logo:has(.auth-site-logo[style*="display: none"]){display:none}
#auth-screen .auth-brand-copy,
#profile-screen .auth-brand-copy{min-width:0;display:flex;flex-direction:column;gap:2px;text-align:left}
#auth-screen .auth-brand-name,
#profile-screen .auth-brand-name{font-size:14px;line-height:1.2;font-weight:800;color:#fff;letter-spacing:.02em}
#auth-screen .auth-brand-copy span,
#profile-screen .auth-brand-copy span{font-size:9.5px;line-height:1.4;color:rgba(255,255,255,.72)}
#profile-screen .auth-brand{margin-bottom:10px}
#auth-screen .auth-title,
#profile-screen .auth-title{font-family:KaiTi,"STKaiti","楷体",serif;font-size:26px;line-height:1.25;letter-spacing:.06em;color:#fff;text-align:left;margin:4px 0 4px;text-shadow:0 1px 8px rgba(0,0,0,.14)}
#auth-screen .auth-sub,
#profile-screen .auth-sub{color:rgba(255,255,255,.78);font-size:12px;line-height:1.65;text-align:left;margin:0 0 15px;max-width:none}
#auth-screen .auth-input,
#profile-screen .auth-input{width:100%;min-height:42px;border:1px solid rgba(255,255,255,.32);border-radius:9px;padding:8px 12px;font-size:13px;background:rgba(255,255,255,.13);color:#fff;margin-bottom:10px;outline:none;transition:background .15s,border-color .15s,box-shadow .15s}
#auth-screen .auth-input::placeholder,
#profile-screen .auth-input::placeholder{color:rgba(255,255,255,.62);font-size:12px}
#auth-screen .auth-input:focus,
#profile-screen .auth-input:focus{border-color:rgba(255,255,255,.75);background:rgba(255,255,255,.20);box-shadow:0 0 0 3px rgba(255,255,255,.10)}
#auth-screen .auth-remember,
#profile-screen .auth-remember{color:rgba(255,255,255,.78);font-size:11px;justify-content:flex-start;text-align:left}
#auth-screen .auth-remember input,
#profile-screen .auth-remember input{accent-color:#fff}
#auth-screen .auth-check{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;flex:0 0 21px;border-radius:50%;background:rgba(255,255,255,.12);box-shadow:inset 0 0 0 1px rgba(255,255,255,.38);transition:background .15s,box-shadow .15s}
#auth-screen .auth-check:hover{background:rgba(255,255,255,.2)}
#auth-screen .auth-check input{appearance:none;-webkit-appearance:none;width:15px;height:15px;min-height:0;padding:0;margin:0;border:1.5px solid rgba(255,255,255,.78);border-radius:50%;background:transparent;cursor:pointer;position:relative;flex:none;transition:background .15s,border-color .15s,transform .15s}
#auth-screen .auth-check input:hover{transform:scale(1.08)}
#auth-screen .auth-check input:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,.22)}
#auth-screen .auth-check input:checked{background:#fff;border-color:#fff}
#auth-screen .auth-check input::after{content:"";position:absolute;left:50%;top:50%;width:4px;height:7px;border:solid var(--accent);border-width:0 1.8px 1.8px 0;transform:translate(-50%,-55%) rotate(45deg) scale(0);opacity:0;transition:transform .15s,opacity .15s}
#auth-screen .auth-check input:checked::after{transform:translate(-50%,-55%) rotate(45deg) scale(1);opacity:1}
#auth-screen .auth-captcha img{border-color:rgba(255,255,255,.35);background:#fff;border-radius:8px;height:42px}
#auth-screen .auth-captcha-input,
#profile-screen .auth-captcha-input{margin-bottom:0}
#auth-screen .auth-avatar-preview,
#profile-screen .auth-avatar-preview{background:rgba(255,255,255,.14);box-shadow:inset 0 0 0 1px rgba(255,255,255,.32)}
#auth-screen .auth-avatar-preview:hover,
#profile-screen .auth-avatar-preview:hover{box-shadow:inset 0 0 0 1px rgba(255,255,255,.5),0 0 0 4px rgba(255,255,255,.12)}
#auth-screen .auth-avatar-preview .avatar-ph,
#profile-screen .auth-avatar-preview .avatar-ph,
#auth-screen .auth-avatar-plus{color:#fff}
#auth-screen .auth-avatar-hint,
#profile-screen .auth-avatar-hint{color:rgba(255,255,255,.65);font-size:10px}
#auth-screen .auth-err,
#profile-screen .auth-err{color:#ffe1ba;text-align:left;font-size:11.5px}
#auth-screen .auth-err.show,
#profile-screen .auth-err.show{border-color:rgba(255,255,255,.30);background:rgba(80,15,10,.24)}
#auth-screen .auth-btn,
#profile-screen .auth-btn{width:100%;min-height:42px;border:0;border-radius:999px;background:#fff;color:var(--accent);font-size:13px;font-weight:800;letter-spacing:.18em;box-shadow:0 7px 16px rgba(0,0,0,.16);transition:transform .12s,filter .15s}
#auth-screen .auth-btn:hover,
#profile-screen .auth-btn:hover{filter:brightness(.96);transform:translateY(-1px)}
#auth-screen .auth-btn:active,
#profile-screen .auth-btn:active{transform:scale(.98)}
#auth-screen .auth-btn:disabled,
#profile-screen .auth-btn:disabled{opacity:.6;cursor:wait;transform:none}
#auth-screen .auth-switch,
#profile-screen .auth-switch{margin-top:11px;color:rgba(255,255,255,.72);font-size:10.5px;text-align:center}
#auth-screen .auth-switch a,
#profile-screen .auth-switch a{color:#fff;border-bottom-color:rgba(255,255,255,.4)}
#auth-screen .auth-switch a:hover,
#profile-screen .auth-switch a:hover{border-bottom-color:#fff}
#auth-screen .auth-turnstile .ts-loading,
#profile-screen .auth-turnstile .ts-loading{color:rgba(255,255,255,.65)}
#auth-screen .auth-turnstile .ts-fail-tip,
#profile-screen .auth-turnstile .ts-fail-tip{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.22);color:rgba(255,255,255,.85)}
#auth-screen .auth-logo:has(.auth-site-logo[style*="display: none"]){display:none}
@media(max-width:480px){
  #auth-screen .auth-card,#profile-screen .auth-card{padding:20px 18px 20px;border-radius:20px}
  #auth-screen .auth-title,#profile-screen .auth-title{font-size:24px}
  #auth-screen .auth-input,#profile-screen .auth-input{font-size:16px}
}

/* ============================================================
   成长中心 / 积分商店 / 任务 / 成就 / 周榜
   ============================================================ */
.avatar-circle.av-frame-gold{box-shadow:0 0 0 3px #d9b23e,0 0 0 5px color-mix(in srgb,#d9b23e 35%,transparent),0 4px 12px rgba(0,0,0,.16)}
.avatar-circle.av-frame-leaf{box-shadow:0 0 0 3px #7fa66b,0 0 0 5px color-mix(in srgb,#7fa66b 30%,transparent),0 4px 12px rgba(0,0,0,.14)}
.avatar-circle.av-frame-coral{box-shadow:0 0 0 3px #f08a74,0 0 0 5px #ffd0be,0 6px 16px rgba(217,91,69,.20)}
.avatar-circle.av-frame-sakura{box-shadow:0 0 0 3px #f4a6bd,0 0 0 5px #ffe2eb,0 0 18px rgba(232,138,166,.42),0 4px 12px rgba(0,0,0,.10)}
.avatar-circle.av-frame-aurora{box-shadow:0 0 0 2px #6fe3d0,0 0 0 4px #8b7cf6,0 0 0 6px #f0a6d0,0 0 20px rgba(111,227,208,.34)}
.avatar-circle.av-frame-obsidian{box-shadow:0 0 0 3px #2b2d33,0 0 0 5px #7d8494,0 4px 14px rgba(0,0,0,.34)}
.avatar-circle.av-frame-royal{box-shadow:0 0 0 2px #d9a441,0 0 0 4px #f6dd9a,0 0 0 6px #b57a2c,0 0 20px rgba(217,164,65,.36)}
.avatar-circle.av-frame-rainbow{box-shadow:0 0 0 1px #ff6b6b,0 0 0 2px #ffb347,0 0 0 3px #ffe66d,0 0 0 4px #7bd88f,0 0 0 5px #6fa8ff,0 0 0 6px #b18aff,0 0 12px rgba(177,138,255,.24)}
.growth-card .list-head h2::before{background:var(--accent)}
.center-loading,.center-empty{padding:22px 4px;text-align:center;color:var(--ink-3);font-size:12px}
.growth-page-card{padding:18px}
.growth-page-card .center-hero{margin-top:0}
@media(max-width:640px){.growth-page-card{padding:14px}}
.center-hero{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(135deg,var(--cream),var(--card))}
.center-identity{display:flex;align-items:center;gap:8px;min-width:0}
.center-title{font-size:13px;font-weight:800;color:var(--ink)}
.center-balance{display:flex;align-items:baseline;gap:5px;margin-left:auto}
.center-balance span{font-size:9px;font-weight:700;letter-spacing:.08em;color:var(--ink-3)}
.center-balance b{font-size:20px;line-height:1;color:var(--accent)}
.center-tokens{display:flex;gap:6px;flex-wrap:wrap;font-size:10px;color:var(--ink-3)}
.center-tokens span{padding:4px 7px;border:1px solid var(--line);border-radius:999px;background:var(--card)}
.center-progress-head{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:12px;font-size:10px;color:var(--ink-3)}
.center-progress-head em{font-style:normal;color:var(--ink-2)}
.center-progress{height:6px;margin-top:6px;border-radius:999px;background:var(--line);overflow:hidden}
.center-progress i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--green),var(--accent))}
.center-benefits{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:10px}
.center-benefits-label{font-size:9px;font-weight:800;letter-spacing:.08em;color:var(--ink-3);margin-right:2px}
.center-medals-box{margin-top:9px;padding:7px 8px 8px;border:1px solid var(--line);border-radius:9px;background:var(--paper)}
.center-medals-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.center-medals-head>div{display:flex;align-items:baseline;gap:6px;min-width:0;flex-wrap:wrap}
.center-medals-head b{font-size:10.5px;color:var(--ink)}
.center-medals-head span{font-size:8px;color:var(--ink-3)}
.center-medals-head em{font-style:normal;font-size:10px;font-weight:800;color:var(--gold-ink);white-space:nowrap}
.center-medals-row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:5px;padding-bottom:1px}
.center-medals-row::-webkit-scrollbar{display:none}
.center-medal{--ma:#E7C65A;--mb:#A66E16;position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 4px;border:1px solid var(--line);border-radius:8px;background:var(--card);min-width:0}
button.center-medal{font:inherit;color:inherit;text-align:center;appearance:none;box-sizing:border-box}
.center-medal.locked{cursor:pointer}
.center-medal.locked:hover{border-color:var(--accent);background:var(--cream);transform:translateY(-1px)}
.center-medal.locked:focus-visible{outline:none;box-shadow:0 0 0 3px var(--green-soft)}
.center-medal-link{font-size:6.5px;line-height:1.2;color:var(--accent);font-weight:700;white-space:nowrap}
.center-ach{scroll-margin-top:90px}
.center-ach.center-ach-target{border-color:var(--accent)!important;box-shadow:0 0 0 3px var(--green-soft),0 8px 20px color-mix(in srgb,var(--accent) 16%,transparent)!important;animation:centerAchPulse 1.4s ease-out}
@keyframes centerAchPulse{0%{transform:scale(.985)}45%{transform:scale(1.008)}100%{transform:scale(1)}}
.center-medal.tone-violet{--ma:#B89AF0;--mb:#6E4DB8}
.center-medal.tone-jade{--ma:#8ED9B9;--mb:#2F8064}
.center-medal.tone-coral{--ma:#F3A08A;--mb:#B75943}
.center-medal.tone-gold{--ma:#F2D174;--mb:#A77A1F}
.center-medal.tone-sun{--ma:#F6D27A;--mb:#C9782A}
.center-medal.tone-royal{--ma:#9DB7F2;--mb:#4B5FB0}
.center-medal-disc{position:relative;display:flex;align-items:center;justify-content:center;width:29px;height:29px;border-radius:50%;background:linear-gradient(135deg,var(--ma),var(--mb));border:1px solid rgba(255,255,255,.7);box-shadow:0 2px 7px color-mix(in srgb,var(--mb) 32%,transparent),inset 0 1px 1px rgba(255,255,255,.4);color:#fff;font-size:12px;font-weight:800;text-shadow:0 1px 2px rgba(0,0,0,.22);isolation:isolate}
.center-medal-disc::before{content:"";position:absolute;inset:3px;border-radius:50%;border:1px dashed rgba(255,255,255,.62);z-index:1}
.center-medal-disc::after{content:"";position:absolute;left:18%;top:12%;width:64%;height:24%;border-radius:50%;background:linear-gradient(180deg,rgba(255,255,255,.62),rgba(255,255,255,0));transform:rotate(-16deg);pointer-events:none}
.center-medal b{font-size:8px;color:var(--ink);line-height:1.2;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.center-medal small{font-size:7px;color:var(--ink-3);line-height:1.2;white-space:nowrap}
.center-medal-progress{width:100%;height:2px;border-radius:999px;background:var(--line);overflow:hidden;margin-top:1px}
.center-medal-progress i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--ma),var(--mb))}
.center-medal.earned{border-color:var(--gold-line);background:linear-gradient(165deg,var(--gold-soft),var(--card));box-shadow:0 3px 10px color-mix(in srgb,var(--gold) 18%,transparent)}
.center-medal.earned small{color:var(--gold-ink);font-weight:700}
.center-medal.locked{opacity:.62;background:var(--paper)}
.center-medal.locked .center-medal-disc{filter:grayscale(1);opacity:.55;box-shadow:none}
.center-benefit{padding:3px 7px;border-radius:999px;background:var(--green-soft);color:var(--green);font-size:9.5px;font-weight:700}
.center-makeup{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;padding:8px 10px;border:1px dashed var(--line-2);border-radius:9px;background:var(--cream);font-size:10px;color:var(--ink-2)}
.center-makeup .btn{margin-left:auto}
.center-tabs{display:flex;gap:3px;flex-wrap:wrap;margin:13px 0 10px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.center-tab{appearance:none;border:0;border-radius:7px;background:transparent;color:var(--ink-3);font:inherit;font-size:10.5px;font-weight:700;padding:6px 9px;cursor:pointer}
.center-tab:hover{color:var(--ink);background:var(--card)}
.center-tab.active{background:var(--accent);color:#fff;box-shadow:0 3px 8px color-mix(in srgb,var(--accent) 22%,transparent)}
/* .center-shop-*（商城）已移除：CN 版没有商城 */
.center-item{position:relative;display:flex;align-items:flex-start;gap:8px;min-width:0;padding:10px 10px 34px;border:1px solid var(--line);border-radius:11px;background:var(--card)}
.center-item.rarity-rare{border-color:color-mix(in srgb,#5b8fd6 35%,var(--line))}
.center-item.rarity-epic{border-color:color-mix(in srgb,#a066d8 40%,var(--line))}
.center-item.rarity-legendary{border-color:color-mix(in srgb,#d8a43e 45%,var(--line));background:linear-gradient(145deg,color-mix(in srgb,#d8a43e 8%,var(--card)),var(--card))}
.center-item-name{display:flex;align-items:center;gap:5px;min-width:0}
.center-item-icon{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:9px;background:var(--green-soft);color:var(--green);font-size:16px;font-weight:800;flex:none}
.ticket-icon{position:relative;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;width:30px;height:38px;flex:none;margin-right:3px;border:1px solid rgba(255,255,255,.45);border-radius:6px;background:linear-gradient(155deg,var(--tc1,#F08A5D),var(--tc2,#C54B3C));color:#fff;line-height:1;transform:rotate(-4deg);box-shadow:3px 3px 0 -1px color-mix(in srgb,var(--tc1,#F08A5D) 55%,transparent),5px 5px 0 -2px color-mix(in srgb,var(--tc2,#C54B3C) 30%,transparent),0 3px 8px rgba(0,0,0,.14);text-shadow:0 1px 1px rgba(0,0,0,.18)}
.ticket-icon::before{content:"";position:absolute;left:4px;right:4px;top:10px;border-top:1px dashed rgba(255,255,255,.46)}
.ticket-icon::after{content:"";position:absolute;left:50%;top:5px;width:4px;height:4px;border-radius:50%;background:rgba(255,255,255,.55);transform:translateX(-50%)}
.ticket-icon i{font-style:normal;font-size:8px;font-weight:800;letter-spacing:.04em;line-height:1.15}
.ticket-icon i:first-child{margin-top:8px}
.ticket-reroll{--tc1:#F29A67;--tc2:#C54B3C}
.ticket-makeup{--tc1:#78D1B2;--tc2:#2E7E66}
.ticket-lg{width:44px;height:52px;border-radius:8px;margin-right:5px}
.ticket-lg::before{left:6px;right:6px;top:14px}
.ticket-lg::after{top:7px;width:5px;height:5px}
.ticket-lg i{font-size:11px}
.ticket-lg i:first-child{margin-top:12px}
.pen-ticket{position:relative;display:inline-flex;align-items:center;justify-content:center;width:30px;height:38px;flex:none;margin-right:3px;border:1px solid rgba(255,255,255,.55);border-radius:7px;overflow:hidden;transform:rotate(-3deg);box-shadow:3px 3px 0 -1px rgba(109,40,217,.18),0 4px 10px rgba(0,0,0,.14)}
.pen-ticket svg{display:block;width:86%;height:90%;filter:drop-shadow(0 1px 1px rgba(0,0,0,.18))}
.pen-magic{background:linear-gradient(155deg,#F0F9FF 0%,#BAE6FD 55%,#7DD3FC 100%)}
.pen-transform{background:linear-gradient(155deg,#F5F3FF 0%,#DDD6FE 55%,#C4B5FD 100%)}
.pen-ticket::after{content:"";position:absolute;left:4px;top:4px;width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.8);box-shadow:0 0 6px rgba(255,255,255,.8)}
.pen-ticket-lg{width:44px;height:52px;border-radius:9px;margin-right:5px}
.pen-ticket-lg svg{width:88%;height:92%}
.center-item-main{display:flex;flex-direction:column;gap:2px;min-width:0;padding-right:40px}
.center-item-main b{font-size:11px;color:var(--ink)}
.center-item-main>span{font-size:9.5px;line-height:1.45;color:var(--ink-3)}
.center-rarity{display:inline-flex;align-items:center;padding:1px 5px;border-radius:999px;font-size:8px;font-weight:800;line-height:1.5;white-space:nowrap}
.center-rarity.rarity-common{background:var(--paper);color:var(--ink-3);border:1px solid var(--line)}
.center-rarity.rarity-rare{background:color-mix(in srgb,#5b8fd6 12%,var(--card));color:#4d7fbd;border:1px solid color-mix(in srgb,#5b8fd6 30%,var(--line))}
.center-rarity.rarity-epic{background:color-mix(in srgb,#a066d8 12%,var(--card));color:#8b52bd;border:1px solid color-mix(in srgb,#a066d8 30%,var(--line))}
.center-rarity.rarity-legendary{background:color-mix(in srgb,#d8a43e 14%,var(--card));color:#9d7221;border:1px solid color-mix(in srgb,#d8a43e 35%,var(--line))}
.center-frame-preview{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex:none;border-radius:9px;background:var(--paper)}
.center-frame-preview .avatar-circle{width:27px;height:27px}
.center-frame-preview .avatar-ph{font-size:11px}
.center-owned{position:absolute;top:8px;right:8px;font-size:8.5px;color:var(--ink-3)}
.center-item-foot{grid-column:1/-1;display:flex;justify-content:flex-end;width:100%;margin-top:1px}
.center-item .center-item-foot{position:absolute;right:9px;bottom:9px}
.center-item .btn{min-height:25px;padding:0 7px;font-size:9.5px}
.center-task-list{display:flex;flex-direction:column;gap:7px}
.center-task{padding:10px 11px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.center-task-top{display:flex;justify-content:space-between;gap:8px;font-size:11px}
.center-task-top span{font-size:9.5px;font-weight:800;color:var(--accent)}
.center-task p{margin:3px 0 7px;font-size:9.5px;color:var(--ink-3)}
.center-task-progress{height:4px;border-radius:999px;background:var(--line);overflow:hidden}
.center-task-progress i{display:block;height:100%;border-radius:inherit;background:var(--green)}
.center-task-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:7px;font-size:9px;color:var(--ink-3)}
.center-task-bottom .btn{min-height:25px;padding:0 8px;font-size:9.5px}
.center-ach-overview-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:9px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--paper)}
.center-ach-overview-head>div{display:flex;flex-direction:column;gap:1px;min-width:0}
.center-ach-overview-head b{font-size:12px;color:var(--ink)}
.center-ach-overview-head span{font-size:8.5px;color:var(--ink-3)}
.center-ach-overview-head>strong{font-size:14px;color:var(--green);white-space:nowrap}
.center-ach-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.center-ach-group{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--card);text-align:left;cursor:pointer;min-width:0;transition:border-color .16s,background .16s}
.center-ach-group:hover{border-color:var(--green-line);background:var(--green-soft)}
.center-ach-group-icon{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex:none;border-radius:8px;background:var(--green-soft);color:var(--green);font-size:12px;font-weight:800}
.center-ach-group-main{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}
.center-ach-group-main b{font-size:10.5px;color:var(--ink)}
.center-ach-group-main small{font-size:8px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.center-ach-group-main .center-task-progress{width:100%;margin-top:2px}
.center-ach-group>em{font-style:normal;font-size:10px;font-weight:800;color:var(--green);white-space:nowrap}
.center-ach-detail-head{display:flex;align-items:center;gap:9px;margin-bottom:9px}
.center-ach-detail-head>div{display:flex;align-items:baseline;gap:7px;min-width:0}
.center-ach-detail-head b{font-size:13px;color:var(--ink)}
.center-ach-detail-head span{font-size:8.5px;color:var(--ink-3)}
.center-back{appearance:none;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink-2);font:inherit;font-size:9px;padding:5px 7px;cursor:pointer;white-space:nowrap}
.center-back:hover{border-color:var(--green-line);color:var(--green)}
.center-ach-layout{display:grid;grid-template-columns:68px minmax(0,1fr);gap:7px;align-items:start}
.center-ach-nav{display:flex;flex-direction:column;gap:3px;padding:3px;border:1px solid var(--line);border-radius:9px;background:var(--paper)}
.center-ach-nav-item{appearance:none;display:flex;flex-direction:column;align-items:center;gap:1px;width:100%;padding:5px 2px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--ink-2);font:inherit;cursor:pointer;transition:background .16s,border-color .16s,color .16s}
.center-ach-nav-item:hover{background:var(--card);border-color:var(--line)}
.center-ach-nav-item.active{background:var(--green-soft);border-color:var(--green-line);color:var(--ink)}
.center-ach-nav-icon{display:flex;align-items:center;justify-content:center;width:21px;height:21px;border-radius:6px;background:var(--card);color:var(--ink-3);font-size:9.5px;font-weight:800;line-height:1}
.center-ach-nav-item.active .center-ach-nav-icon{background:var(--accent);color:#fff}
.center-ach-nav-item b{font-size:9px;line-height:1.2;color:var(--ink);white-space:nowrap}
.center-ach-nav-item em{font-style:normal;font-size:7px;line-height:1.2;color:var(--ink-3)}
.center-ach-content{min-width:0}
.center-ach-detail-head{flex-wrap:wrap}
.center-ach-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
@media(max-width:640px){
  .center-medals-row{grid-template-columns:repeat(3,minmax(0,1fr))}
}
.center-ach{display:flex;align-items:flex-start;gap:8px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--card);min-width:0}
.center-ach.completed{border-color:color-mix(in srgb,var(--green) 35%,var(--line));background:linear-gradient(135deg,var(--green-soft),var(--card))}
.center-ach-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--paper);color:var(--green);font-size:12px;font-weight:800;flex:none}
.center-ach-main{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.center-ach-main b{font-size:10.5px;color:var(--ink)}
.center-ach-main span{font-size:9px;color:var(--ink-3);line-height:1.4}
.center-ach-side{margin-left:auto;flex:none}
.center-ach-side .btn{min-height:25px;padding:0 7px;font-size:9px}
.center-ach-done,.center-ach-progress{font-size:8.5px;color:var(--ink-3);white-space:nowrap}
.center-ach-titleline{display:flex;align-items:center;gap:5px;min-width:0;flex-wrap:wrap}
.center-ach-medal-preview{--ma:#E7C65A;--mb:#A66E16;position:relative;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;flex:none;border-radius:50%;background:linear-gradient(135deg,var(--ma),var(--mb));border:1px solid rgba(255,255,255,.8);box-shadow:0 2px 6px color-mix(in srgb,var(--mb) 28%,transparent),inset 0 1px 1px rgba(255,255,255,.45);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.28)}
.center-ach-medal-preview::before{content:"";position:absolute;inset:2px;border-radius:50%;border:1px dashed rgba(255,255,255,.55)}
.center-ach-medal-preview i{font-style:normal;font-size:9px;font-weight:800;position:relative;z-index:1}
.center-ach-medal-preview.tone-violet{--ma:#B89AF0;--mb:#6E4DB8}
.center-ach-medal-preview.tone-jade{--ma:#8ED9B9;--mb:#2F8064}
.center-ach-medal-preview.tone-coral{--ma:#F3A08A;--mb:#B75943}
.center-ach-medal-preview.tone-gold{--ma:#F2D174;--mb:#A77A1F}
.center-ach-medal-preview.tone-sun{--ma:#F6D27A;--mb:#C9782A}
.center-ach-medal-preview.tone-royal{--ma:#9DB7F2;--mb:#4B5FB0}
.center-ach-medal-preview.earned{box-shadow:0 0 0 2px color-mix(in srgb,var(--gold) 30%,transparent),0 3px 9px color-mix(in srgb,var(--mb) 42%,transparent),inset 0 1px 1px rgba(255,255,255,.5)}
.center-ach-medal-preview.locked{filter:grayscale(.75);opacity:.62}
.center-ach-medal-tag{font-size:7px;font-weight:800;color:var(--gold-ink);background:var(--gold-soft);border:1px solid var(--gold-line);border-radius:999px;padding:1px 4px;white-space:nowrap}
.center-ach-done{color:var(--green);font-weight:700}
.center-leader-week{font-size:9px;color:var(--ink-3);margin-bottom:6px}
.center-leader{display:flex;flex-direction:column;gap:1px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}
.center-leader-row{display:flex;align-items:center;gap:9px;padding:8px 10px;font-size:10.5px;border-bottom:1px solid var(--line);background:var(--card)}
.center-leader-row:last-child{border-bottom:0}
.center-leader-row.me{background:var(--green-soft)}
.center-rank{width:20px;flex:none;text-align:center;color:var(--accent);font-weight:800}
.center-leader-name{min-width:0;flex:1;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.center-leader-name em{font-style:normal;font-size:8px;color:var(--green);margin-left:4px}
.center-leader-score{font-size:10px;font-weight:800;color:var(--ink-2)}
.center-my-rank{margin-top:7px;font-size:9.5px;color:var(--ink-3);text-align:right}
@media(max-width:640px){
  .center-shop-grid,.center-ach-grid,.center-ach-groups{grid-template-columns:1fr}
  .center-ach-layout{grid-template-columns:58px minmax(0,1fr);gap:5px}
  .center-hero{align-items:flex-start}
  .center-balance{margin-left:0;width:100%;justify-content:flex-start}
  .center-tokens{width:100%}
}

/* ============================================================
   全站统一表单控件：文本框 / 文本域 / 下拉框 / 勾选框
   新生成的控件由 ui.js 自动添加 ui-control / ui-checkbox
   ============================================================ */
.ui-control{
  border:1px solid var(--line)!important;
  border-radius:9px!important;
  background-color:var(--surface)!important;
  color:var(--ink)!important;
  font-family:inherit!important;
  box-shadow:none!important;
  outline:none!important;
  transition:border-color .16s,box-shadow .16s,background-color .16s;
}
.ui-control:hover{border-color:var(--line-2)!important}
.ui-control:focus{border-color:var(--green)!important;box-shadow:0 0 0 3px var(--green-soft)!important}
.ui-control::placeholder{color:var(--ink-3)}
.ui-control:disabled{background:var(--cream)!important;color:var(--ink-3)!important;cursor:not-allowed}
select.ui-control{
  appearance:none!important;
  -webkit-appearance:none!important;
  padding-right:30px!important;
  background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),linear-gradient(135deg,var(--ink-3) 50%,transparent 50%)!important;
  background-position:calc(100% - 15px) calc(50% - 2px),calc(100% - 10px) calc(50% - 2px)!important;
  background-size:5px 5px,5px 5px!important;
  background-repeat:no-repeat!important;
  cursor:pointer;
}
textarea.ui-control{padding:10px 12px!important;line-height:1.6;resize:vertical}
.ui-checkbox{
  appearance:none!important;
  -webkit-appearance:none!important;
  width:16px!important;
  height:16px!important;
  min-width:16px!important;
  min-height:0!important;
  padding:0!important;
  margin:0!important;
  border:1px solid var(--line-2)!important;
  border-radius:4px!important;
  background:var(--surface)!important;
  box-shadow:none!important;
  display:inline-block;
  vertical-align:middle;
  position:relative;
  flex:none;
  cursor:pointer;
  transition:background .15s,border-color .15s,box-shadow .15s;
}
.ui-checkbox:hover{border-color:var(--green-line)!important}
.ui-checkbox:checked{background:var(--accent)!important;border-color:var(--accent)!important}
.ui-checkbox:checked::after{
  content:""!important;
  position:absolute!important;
  left:4.5px!important;
  top:1.5px!important;
  width:4px!important;
  height:8px!important;
  border:solid #fff!important;
  border-width:0 2px 2px 0!important;
  transform:rotate(45deg)!important;
  opacity:1!important;
}
.ui-checkbox:focus-visible{outline:none!important;box-shadow:0 0 0 3px var(--green-soft)!important}
.ui-checkbox:disabled{opacity:.4!important;cursor:not-allowed!important}
/* 旧圆形勾选容器统一为无底色方框，勾选框本身由 ui-checkbox 接管 */
.ts-check,
.ts-check:hover,
.ts-check:has(input:checked),
.ts-check:has(input:disabled),
.ts-sub.disabled .ts-check{background:transparent!important;box-shadow:none!important}
.ts-check{width:20px!important;height:20px!important;border-radius:0!important}
.ts-check input:hover{transform:none!important}
.admin-user-check,
.admin-user-check:hover,
.admin-user-check:has(input:checked){background:transparent!important;box-shadow:none!important;border-radius:0!important}
.admin-user-check{width:20px!important;height:20px!important}
.admin-user-check input:hover{transform:none!important}
/* 旧的自定义下拉箭头交给全局箭头，避免双箭头 */
.checkin-select-wrap::after,
.gift-card .adjust-field.select-field::after,
.adjust-card .adjust-field.select-field::after{display:none!important}
.growth-admin-layout{display:grid;grid-template-columns:152px minmax(0,1fr);gap:12px;align-items:start}
.growth-admin-side{display:flex;flex-direction:column;gap:3px;padding:5px;border:1px solid var(--line);border-radius:10px;background:var(--paper);position:sticky;top:10px}
.growth-side-title{padding:5px 7px 7px;font-size:9px;font-weight:800;letter-spacing:.08em;color:var(--ink-3);text-transform:uppercase}
.growth-admin-side .growth-admin-tab{display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%;padding:8px 9px;border-radius:7px;text-align:left}
.growth-admin-side .growth-admin-tab span{margin:0;font-size:10.5px;opacity:1}
.growth-admin-side .growth-admin-tab em{font-style:normal;font-size:8px;font-weight:600;color:var(--ink-3);opacity:.8}
.growth-admin-side .growth-admin-tab.active em{color:rgba(255,255,255,.78)}
.growth-admin-main{min-width:0;touch-action:pan-y pinch-zoom}
.growth-admin-page{touch-action:pan-y pinch-zoom}
.growth-admin-page .list-head{margin-bottom:6px}
.growth-admin-panel[data-panel="items"] .growth-item-list,
.growth-admin-panel[data-panel="tasks"] .growth-pool-list,
.growth-admin-panel[data-panel="achievements"] .growth-pool-list{max-height:none;overflow:visible;padding-right:0}
@media(max-width:760px){
  .growth-admin-layout{grid-template-columns:1fr;gap:8px}
  .growth-admin-side{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));position:static;overflow:visible;padding:3px;gap:2px}
  .growth-side-title{display:none}
  .growth-admin-side .growth-admin-tab{width:100%;justify-content:center;gap:4px;white-space:nowrap;padding:7px 4px}
  .growth-admin-side .growth-admin-tab span{font-size:10px}
  .growth-admin-side .growth-admin-tab em{font-size:7.5px}
}
.growth-admin-tabs{display:flex;align-items:center;gap:3px;flex-wrap:wrap;margin-bottom:10px;padding:3px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}
.growth-admin-tab{appearance:none;border:0;border-radius:7px;background:transparent;color:var(--ink-3);font:inherit;font-size:11px;font-weight:700;padding:7px 10px;cursor:pointer;white-space:nowrap}
.growth-admin-tab span{margin-left:3px;font-size:9px;opacity:.65}
.growth-admin-tab:hover{color:var(--ink);background:var(--card)}
.growth-admin-tab.active{background:var(--accent);color:#fff;box-shadow:0 3px 8px color-mix(in srgb,var(--accent) 22%,transparent)}
.growth-admin-panel{display:none}
.growth-admin-panel.active{display:block}
.growth-inline-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin:-2px 0 8px}
.growth-feature-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-bottom:11px}
.growth-feature{display:flex;align-items:center;gap:7px;min-height:36px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--paper);font-size:11px;color:var(--ink-2);cursor:pointer}
.growth-feature input,.growth-enabled input{accent-color:var(--accent);width:15px;height:15px;margin:0;flex:none}
.growth-item-list{display:flex;flex-direction:column;gap:7px}
.growth-rights-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:10px}
.growth-right-row{display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding:9px 10px;border:1px dashed var(--line-2);border-radius:8px;background:var(--paper)}
.growth-right-row>b{width:100%;font-size:10.5px;color:var(--ink-2);margin-bottom:2px}
.growth-right-row .growth-mini input{width:56px}
.growth-pool-title{display:flex;align-items:center;gap:8px;margin:13px 0 8px;font-size:12px;font-weight:800;color:var(--ink)}
.growth-pool-title span{font-size:9.5px;font-weight:500;color:var(--ink-3)}
.growth-pool-list{display:flex;flex-direction:column;gap:6px}
.growth-pool-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}
.growth-pool-toggle{display:flex;align-items:center;gap:7px;min-width:245px;flex:1;cursor:pointer}
.growth-pool-toggle input{accent-color:var(--accent);width:15px;height:15px;margin:0;flex:none}
.growth-pool-toggle>span{display:flex;flex-direction:column;gap:2px;min-width:0}
.growth-pool-toggle b{font-size:11.5px;color:var(--ink)}
.growth-pool-toggle small{font-size:9.5px;color:var(--ink-3);line-height:1.4}
.growth-pool-row .growth-mini input{width:56px}
.growth-pool-row .growth-mini select{max-width:105px}
@media(max-width:700px){.growth-pool-toggle{min-width:100%}}
.growth-item-row{padding:9px 10px;gap:9px}
.growth-item-name b{font-size:12px}
.growth-item-icon{width:24px;height:24px;font-size:12px}
.growth-rarity{font-size:8.5px}
.growth-mini{font-size:10px;gap:5px}
.growth-mini input,.growth-mini select{min-height:30px;font-size:11px}
.growth-enabled{font-size:10px}
.growth-admin-panel[data-panel="checkin"] .checkin-read,
.growth-admin-panel[data-panel="rewards"] .reward-list{border-radius:8px;background:var(--paper)}
.growth-admin-panel[data-panel="checkin"] .checkin-read{padding:9px 10px;gap:8px}
.growth-admin-panel[data-panel="checkin"] .checkin-read-main{gap:6px}
.growth-admin-panel[data-panel="checkin"] .checkin-read-main span{font-size:10px}
.growth-admin-panel[data-panel="checkin"] .checkin-read-main b{font-size:16px}
.growth-admin-panel[data-panel="checkin"] .checkin-read-meta{gap:5px;font-size:9.5px}
.growth-admin-panel[data-panel="checkin"] .checkin-read-meta span{padding:2px 6px}
.growth-admin-panel[data-panel="checkin"] .checkin-form{gap:7px;margin-top:0}
.growth-admin-panel[data-panel="checkin"] .field label,
.growth-admin-panel[data-panel="rewards"] .field label{font-size:9.5px}
.growth-admin-panel[data-panel="checkin"] .field input,
.growth-admin-panel[data-panel="checkin"] .field select,
.growth-admin-panel[data-panel="checkin"] .checkin-select-wrap select,
.growth-admin-panel[data-panel="rewards"] .field input,
.growth-admin-panel[data-panel="rewards"] .field select{min-height:30px;font-size:11px;border-radius:7px;padding:0 8px}
.growth-admin-panel[data-panel="checkin"] .checkin-enabled-field .reward-enabled-wrap{min-height:30px;padding:0 8px;font-size:10px;border-radius:7px}
.growth-admin-panel[data-panel="checkin"] .ts-check{width:20px;height:20px;flex:0 0 20px}
.growth-admin-panel[data-panel="checkin"] .ts-check input{width:13px;height:13px}
.growth-admin-panel[data-panel="checkin"] .checkin-toggle{width:100%;min-height:36px}
.growth-admin-panel[data-panel="checkin"] .checkin-toggle input{width:15px;height:15px;min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;accent-color:var(--accent)}
.growth-admin-panel[data-panel="checkin"] .checkin-toggle-row{display:flex;align-items:center;gap:7px;width:100%;min-height:30px;padding:0 8px;border:1px solid var(--line);border-radius:7px;background:var(--paper);font-size:10px;color:var(--ink-2);cursor:pointer}
.growth-admin-panel[data-panel="checkin"] .checkin-toggle-row input{width:15px;height:15px;min-height:0;padding:0;margin:0;flex:none;accent-color:var(--accent)}
.growth-admin-panel[data-panel="rewards"] .reward-list{margin:0}
.growth-admin-panel[data-panel="rewards"] .reward-head,
.growth-admin-panel[data-panel="rewards"] .reward-row{grid-template-columns:64px minmax(0,1fr) 92px 58px 48px;gap:5px;padding:6px 8px;min-height:34px}
.growth-admin-panel[data-panel="rewards"] .reward-head{font-size:9px}
.growth-admin-panel[data-panel="rewards"] .reward-row select,
.growth-admin-panel[data-panel="rewards"] .reward-row input[type=number]{min-height:28px;font-size:10px;border-radius:6px;padding:2px 6px}
.growth-admin-panel[data-panel="rewards"] .reward-scene{font-size:10px}
.growth-admin-panel[data-panel="rewards"] .reward-value,
.growth-admin-panel[data-panel="rewards"] .reward-state{font-size:10px}
@media(max-width:640px){.growth-admin-panel[data-panel="rewards"] .reward-head,.growth-admin-panel[data-panel="rewards"] .reward-row{grid-template-columns:56px minmax(0,1fr) 76px 48px 40px}}
.growth-item-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--paper)}
.growth-item-name{display:flex;align-items:center;gap:6px;min-width:180px;flex:1}
.growth-item-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:var(--green-soft);color:var(--green);font-size:11px;font-weight:800;flex:none}
.growth-item-name b{font-size:11px;color:var(--ink);white-space:nowrap}
.growth-mini{display:flex;align-items:center;gap:4px;font-size:9px;color:var(--ink-3)}
.growth-mini input{width:64px;min-height:28px;padding:0 7px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink);font:inherit;font-size:10px}
.growth-mini select{min-height:28px;padding:0 6px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--ink);font:inherit;font-size:10px}
.growth-enabled{display:flex;align-items:center;gap:4px;font-size:9px;color:var(--ink-3);cursor:pointer;white-space:nowrap}
.growth-rarity{display:inline-flex;padding:1px 5px;border-radius:999px;font-size:8px;font-weight:800;white-space:nowrap}
.growth-rarity.rarity-common{background:var(--paper);color:var(--ink-3);border:1px solid var(--line)}
.growth-rarity.rarity-rare{background:color-mix(in srgb,#5b8fd6 12%,var(--card));color:#4d7fbd;border:1px solid color-mix(in srgb,#5b8fd6 30%,var(--line))}
.growth-rarity.rarity-epic{background:color-mix(in srgb,#a066d8 12%,var(--card));color:#8b52bd;border:1px solid color-mix(in srgb,#a066d8 30%,var(--line))}
.growth-rarity.rarity-legendary{background:color-mix(in srgb,#d8a43e 14%,var(--card));color:#9d7221;border:1px solid color-mix(in srgb,#d8a43e 35%,var(--line))}
@media(max-width:800px){.growth-feature-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.growth-item-name{min-width:140px}.growth-rights-grid{grid-template-columns:1fr}}
@media(max-width:520px){.growth-item-row{align-items:flex-start}.growth-mini input{width:58px}}

/* 用户仓库（.inventory-*）已移除：CN 版没有道具/仓库 */

.user-card-pop{position:fixed;z-index:4200;display:none;width:322px;max-width:calc(100vw - 24px);padding:14px;border:1px solid var(--uc-line,var(--line));border-radius:18px;background:var(--uc-card,var(--card));color:var(--uc-ink,var(--ink));box-shadow:0 18px 44px rgba(24,18,14,.26),0 2px 8px rgba(24,18,14,.12);font-family:inherit;opacity:0;transform:translateY(6px) scale(.985);transition:opacity .16s,transform .16s;--uc-card:var(--card,#FFFCF9);--uc-ink:var(--ink,#3B2523);--uc-sub:var(--ink-2,#8F6258);--uc-line:var(--line,#F0D7C9);--uc-soft:var(--paper,#FFF7F1);--uc-accent:var(--accent,#C94A5D)}
.user-card-pop.show{display:block;opacity:1;transform:none}
.user-card-pop *{box-sizing:border-box}
.uc-head{position:relative;display:flex;align-items:center;gap:11px;padding-right:54px}
.uc-avatar{position:relative;flex:none;width:60px;height:60px}
.uc-avatar .avatar-circle{width:58px!important;height:58px!important;font-size:23px!important}
.uc-avatar .avatar-circle:not([class*="av-frame-"]){box-shadow:0 5px 14px rgba(0,0,0,.18)!important}
.uc-avatar .avatar-medal-badge{width:19px;height:19px;font-size:9px;right:-2px;bottom:-2px;border-width:2px}
.uc-id{min-width:0;flex:1}
.uc-nick{font-size:16px;font-weight:800;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uc-user{font-size:10.5px;color:var(--uc-sub);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.uc-group{display:inline-flex;align-items:center;gap:4px;margin-top:4px;max-width:100%;padding:1px 7px;font-size:10px;line-height:1.8;font-style:normal}
.uc-group.badge-group{font-weight:600}
.uc-group .group-badge-text{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal}
.uc-group .group-level-star{width:16px;height:16px;flex:none}
.uc-group .group-level-star i{font-size:8px}
.uc-group .group-frame-marker{width:16px;height:16px;flex:none;transform:none}
.uc-group .group-frame-marker i{font-size:8px!important;line-height:1;font-style:normal}
.uc-kicker{position:absolute;right:0;top:1px;font-size:8.5px;font-weight:800;letter-spacing:.14em;color:var(--uc-sub);opacity:.72}
.uc-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin:12px 0 11px;border:1px solid var(--uc-line);border-radius:12px;overflow:hidden;background:var(--uc-line)}
.uc-stats>div{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;background:var(--uc-soft)}
.uc-stats span{font-size:9px;color:var(--uc-sub);letter-spacing:.08em}
.uc-stats b{font-size:15px;line-height:1.15;font-weight:800;color:var(--uc-ink)}
.uc-section{display:flex;align-items:center;justify-content:space-between;margin:0 0 6px;font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--uc-sub)}
.uc-section em{font-style:normal;font-weight:600;opacity:.7;letter-spacing:0}
.uc-medals{display:flex;flex-wrap:wrap;gap:6px;min-height:0}
.uc-medal{display:flex;align-items:center;justify-content:center;flex:none;padding:0;border:0;background:none}
.uc-medal b{display:flex;align-items:center;justify-content:center;width:27px;height:27px;flex:none;border-radius:50%;font-size:11px;font-weight:900;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.2);box-shadow:0 2px 6px rgba(0,0,0,.16);background:linear-gradient(135deg,#F7D56B,#B9781C)}
.uc-medal.tone-violet b{background:linear-gradient(135deg,#C7B0F5,#6E4DB8)}
.uc-medal.tone-jade b{background:linear-gradient(135deg,#A7E7CD,#2F8064)}
.uc-medal.tone-coral b{background:linear-gradient(135deg,#F7B6A1,#B75943)}
.uc-medal.tone-sun b{background:linear-gradient(135deg,#F6D27A,#C9782A)}
.uc-medal.tone-royal b{background:linear-gradient(135deg,#B6C9FA,#4B5FB0)}
.uc-medal.tone-gold b{background:linear-gradient(135deg,#F7DA83,#A77A1F)}
.uc-foot{display:flex;align-items:flex-end;justify-content:flex-end;margin-top:11px;padding-top:9px;border-top:1px solid var(--uc-line)}
.uc-note{display:flex;justify-content:flex-end;width:100%;text-align:right}
.uc-sum{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:3px;max-width:100%;font-size:9.5px;line-height:1.6;color:var(--uc-sub)}
.uc-sum b{font-weight:700;color:var(--uc-ink)}
.uc-sum .skin-rarity{margin-left:3px;font-size:8px;padding:0 5px;vertical-align:1px}
.uc-sum .theme-paid-tag{margin-left:3px;font-size:8px;padding:0 5px;vertical-align:1px}
.uc-dot{padding:0 4px;opacity:.45}
.uc-loading{display:block;padding:16px}
.uc-loading-line{height:10px;width:72%;margin:7px 0;border-radius:5px;background:linear-gradient(90deg,var(--uc-line),transparent,var(--uc-line));background-size:200% 100%;animation:ucShimmer 1.1s infinite}
.uc-loading-line.short{width:42%}
.uc-loading-row{height:58px;margin-top:12px;border-radius:10px;background:var(--uc-soft);border:1px solid var(--uc-line)}
@keyframes ucShimmer{from{background-position:200% 0}to{background-position:-200% 0}}
.uc-error{padding:12px;font-size:11px;color:var(--uc-sub)}
@keyframes ucIn{from{opacity:0;transform:translateY(6px) scale(.985)}to{opacity:1;transform:none}}

/* 用户卡片：按用户当前皮肤换肤 */
.user-card-pop[data-skin="craft"]{--uc-card:#F4EAD8;--uc-ink:#4A3D2C;--uc-sub:#7A6548;--uc-line:#D8C5A5;--uc-soft:#FBF3E4;--uc-accent:#6E7B4E;font-family:Georgia,"STKaiti","KaiTi",serif}
.user-card-pop[data-skin="craft"][data-skin-variant="moss"]{--uc-card:#E8E7D3;--uc-ink:#39432F;--uc-sub:#667055;--uc-line:#BFC3A6;--uc-soft:#F3F2E2;--uc-accent:#4F6347}
.user-card-pop[data-skin="cyber"]{--uc-card:#07111d;--uc-ink:#e9feff;--uc-sub:#7ab8c9;--uc-line:rgba(0,229,255,.34);--uc-soft:#0c1a28;--uc-accent:#00e5ff;border-color:rgba(0,229,255,.55);box-shadow:0 0 0 1px rgba(0,229,255,.12),0 18px 46px rgba(0,10,20,.55);clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));background-image:linear-gradient(rgba(0,229,255,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(0,229,255,.055) 1px,transparent 1px);background-size:14px 14px}
.user-card-pop[data-skin="cyber"] .uc-kicker{color:#ff3b8d;opacity:1}
.user-card-pop[data-skin="cyber"] .uc-nick{text-shadow:0 0 10px rgba(0,229,255,.45);letter-spacing:.04em}
.user-card-pop[data-skin="cyber"] .uc-stats{border-radius:2px}
.user-card-pop[data-skin="cyber"] .uc-stats>div{background:#0a1725}
.user-card-pop[data-skin="cyber"] .uc-medal{border-radius:2px}
.user-card-pop[data-skin="cyber"][data-skin-variant="alert"]{--uc-accent:#ff4d3d;border-color:rgba(255,77,61,.6)}
.user-card-pop[data-skin="cyber"][data-skin-variant="alert"] .uc-kicker{color:#ffb347}
.user-card-pop[data-skin="sweet"]{--uc-card:#FFF7FA;--uc-ink:#5A3542;--uc-sub:#A57484;--uc-line:#F4D4DF;--uc-soft:#FFF0F5;--uc-accent:#E56B93;border-radius:22px}
.user-card-pop[data-skin="sweet"][data-skin-variant="berry"]{--uc-card:#FFF3F7;--uc-ink:#4D2B3A;--uc-sub:#9C5D76;--uc-line:#EEC3D3;--uc-soft:#FCE7EF;--uc-accent:#C94A76}
.user-card-pop[data-skin="tough"]{--uc-card:#23272c;--uc-ink:#F4F6F7;--uc-sub:#AAB4BC;--uc-line:#444C54;--uc-soft:#2D3339;--uc-accent:#F2B632;border-color:#5A636B;box-shadow:0 16px 40px rgba(0,0,0,.45)}
.user-card-pop[data-skin="tough"] .uc-kicker{color:#F2B632}
.user-card-pop[data-skin="tough"][data-skin-variant="ember"]{--uc-accent:#FF6B45;border-color:#7A4037;--uc-card:#2A2320}
.user-card-pop[data-skin="rainbow"]{--uc-card:linear-gradient(135deg,#FFF4D8,#FFE0EC 45%,#E3F0FF 75%,#E6FFF4);--uc-ink:#3D2A36;--uc-sub:#80616F;--uc-line:#F0CDE0;--uc-soft:rgba(255,255,255,.55);--uc-accent:#D94A8C;border-color:#F4D0E2;background:linear-gradient(135deg,#FFF4D8 0%,#FFE0EC 42%,#E3F0FF 72%,#E6FFF4 100%)}
.user-card-pop[data-skin="rainbow"][data-skin-variant="night"]{--uc-card:#171327;--uc-ink:#F2E9FF;--uc-sub:#B9A7D9;--uc-line:#3D3160;--uc-soft:#211A38;--uc-accent:#FF8AD8;background:linear-gradient(135deg,#171327,#2B1D45 55%,#18263F)}
.user-card-pop[data-skin="mecha"]{--uc-card:#E9DFC7;--uc-ink:#3D3424;--uc-sub:#7E6D4D;--uc-line:#B8A57B;--uc-soft:#F4EBD8;--uc-accent:#B07A22;font-family:"Consolas","Courier New",monospace;border-color:#B8A57B}
.user-card-pop[data-skin="mecha"] .uc-kicker{color:#8C5F15}
.user-card-pop[data-skin="mecha"][data-skin-variant="cobalt"]{--uc-card:#1F2B38;--uc-ink:#E6F3F7;--uc-sub:#9AB8C5;--uc-line:#3E5868;--uc-soft:#263645;--uc-accent:#58C7E8;border-color:#4C6F82}
.user-card-pop[data-skin="mecha"][data-skin-variant="cobalt"] .uc-kicker{color:#58C7E8}
@media (max-width:520px){.user-card-pop{width:calc(100vw - 24px)}.uc-medals{grid-template-columns:1fr 1fr}}
@media (hover:none){.user-card-pop{position:fixed}}
.user-card-pop.uc-centered{left:50%!important;right:auto!important;top:50%!important;bottom:auto!important;width:calc(100vw - 24px)!important;max-width:340px;max-height:calc(100vh - 24px);overflow:auto;transform:translate(-50%,-50%)!important}
.user-card-pop.uc-centered.show{opacity:.94;transform:translate(-50%,-50%)!important}
@media (max-width:520px){
  .user-card-pop{left:50%!important;right:auto!important;top:50%!important;bottom:auto!important;width:calc(100vw - 24px)!important;max-width:340px!important;max-height:calc(100vh - 24px);overflow:auto;transform:translate(-50%,-50%)!important}
  .user-card-pop.show{opacity:.94;transform:translate(-50%,-50%)!important}
}

/* 紧凑版用户卡：更小的占位和轻微透明 */
@media (min-width:521px){.user-card-pop{width:292px}}
.user-card-pop{padding:11px;border-radius:15px}
.user-card-pop.show{opacity:.94;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.uc-head{gap:9px;padding-right:40px}
.uc-avatar{width:48px;height:48px}
.uc-avatar .avatar-circle{width:46px!important;height:46px!important;font-size:19px!important}
.uc-avatar .avatar-medal-badge{width:17px;height:17px;font-size:8px}
.uc-nick{font-size:14.5px}
.uc-user{font-size:9.5px;margin-top:1px}
.uc-group{margin-top:4px;padding:1px 6px;font-size:9px}
.uc-group .group-frame-marker{width:14px;height:14px}
.uc-kicker{font-size:7.5px}
.uc-stats{margin:8px 0;border-radius:10px}
.uc-stats>div{padding:6px 3px}
.uc-stats span{font-size:8px}
.uc-stats b{font-size:13px}
.uc-section{margin:0 0 4px;font-size:9px}
.uc-medals{gap:5px}
.uc-medal b{width:23px;height:23px;font-size:9.5px}
html .user-card-pop .uc-medal,
html .user-card-pop .uc-medal b,
html .user-card-pop .uc-avatar .avatar-medal-badge,
html .user-card-pop[data-skin] .uc-medal{border-radius:50%!important}
.uc-medal{overflow:visible}
.uc-foot{margin-top:8px;padding-top:7px}
.uc-sum{font-size:8.5px;gap:2px}
.uc-sum .skin-rarity,.uc-sum .theme-paid-tag{font-size:7.5px;padding:0 4px;margin-left:2px}

/* 用户资料卡右下角摘要：跟随用户当前皮肤与主题的标签式样 */
.user-card-pop[data-skin] .uc-sum{padding:2px 4px;border-radius:6px;background:color-mix(in srgb,var(--uc-soft) 46%,transparent);color:var(--uc-sub);letter-spacing:.01em}
.user-card-pop[data-skin] .uc-sum .skin-rarity,
.user-card-pop[data-skin] .uc-sum .theme-paid-tag{border-radius:5px!important;background:color-mix(in srgb,var(--uc-accent) 12%,transparent)!important;border:1px solid color-mix(in srgb,var(--uc-accent) 36%,transparent)!important;color:var(--uc-accent)!important;box-shadow:none!important;font-family:inherit;font-weight:800}
.user-card-pop[data-skin="cyber"] .uc-sum{border-radius:0!important;font-family:Consolas,"Microsoft YaHei",monospace;letter-spacing:.05em;text-shadow:0 0 6px rgba(0,229,255,.18)}
.user-card-pop[data-skin="cyber"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="cyber"] .uc-sum .theme-paid-tag{border-radius:0!important;background:rgba(0,229,255,.08)!important;border-color:rgba(0,229,255,.55)!important;color:#00e5ff!important}
.user-card-pop[data-skin="cyber"] .uc-sum .theme-paid-tag{background:rgba(255,59,141,.09)!important;border-color:rgba(255,59,141,.55)!important;color:#ff6c9e!important}
.user-card-pop[data-skin="craft"] .uc-sum{font-family:Georgia,"STKaiti","KaiTi",serif;letter-spacing:.02em;border-radius:2px!important;background:#FBF3E4;border:1px solid #D8C5A5}
.user-card-pop[data-skin="craft"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="craft"] .uc-sum .theme-paid-tag{border-radius:2px!important;background:#F4EAD8!important;border-color:#D8C5A5!important;color:#6E7B4E!important}
.user-card-pop[data-skin="craft"] .uc-sum .theme-paid-tag{color:#9A641B!important;border-color:#D7B77B!important;background:#FBF1D9!important}
.user-card-pop[data-skin="sweet"] .uc-sum{border-radius:999px!important;background:#FFF0F5;border:1px solid #F4D4DF}
.user-card-pop[data-skin="sweet"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="sweet"] .uc-sum .theme-paid-tag{border-radius:999px!important;background:#FFE4EE!important;border-color:#F4C2D4!important;color:#D05C84!important}
.user-card-pop[data-skin="tough"] .uc-sum{border-radius:0!important;background:#11161A;border:1px solid #4A555E;font-family:Consolas,monospace;letter-spacing:.04em}
.user-card-pop[data-skin="tough"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="tough"] .uc-sum .theme-paid-tag{border-radius:0!important;background:#1A2024!important;border-color:#5A636B!important;color:#F2B632!important}
.user-card-pop[data-skin="rainbow"] .uc-sum{border-radius:12px!important;background:linear-gradient(135deg,#FFF4D8,#FFE0EC 55%,#E3F0FF)}
.user-card-pop[data-skin="rainbow"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="rainbow"] .uc-sum .theme-paid-tag{border-radius:12px!important;background:rgba(255,255,255,.58)!important;border-color:#F0CDE0!important;color:#C94A86!important}
.user-card-pop[data-skin="mecha"] .uc-sum{border-radius:0!important;background:#F4EBD8;border:1px solid #B8A57B;font-family:Consolas,"Courier New",monospace;letter-spacing:.03em}
.user-card-pop[data-skin="mecha"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="mecha"] .uc-sum .theme-paid-tag{border-radius:0!important;background:#E9DFC7!important;border-color:#B8A57B!important;color:#8C5F15!important}
.user-card-pop[data-skin="mecha"][data-skin-variant="cobalt"] .uc-sum{background:#1F2B38;border-color:#4C6F82}
.user-card-pop[data-skin="mecha"][data-skin-variant="cobalt"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="mecha"][data-skin-variant="cobalt"] .uc-sum .theme-paid-tag{background:#263645!important;border-color:#4C6F82!important;color:#58C7E8!important}

/* ===== 本周厨房榜：更有上榜冲动的版本 ===== */
.center-leader-hero{position:relative;overflow:hidden;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:0 0 10px;padding:16px 16px 14px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(135deg,var(--green-soft) 0%,var(--card) 58%,var(--gold-soft) 100%);box-shadow:var(--shadow)}
.center-leader-hero::before{content:"";position:absolute;right:-30px;top:-52px;width:160px;height:160px;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,var(--gold) 30%,transparent),transparent 68%);pointer-events:none}
.center-leader-hero-copy{position:relative;z-index:1;min-width:0}
.center-leader-kicker{display:inline-flex;align-items:center;gap:5px;font-size:8px;font-weight:900;letter-spacing:.16em;color:var(--accent);opacity:.85}
.center-leader-kicker::before{content:"";width:14px;height:2px;border-radius:2px;background:var(--accent)}
.center-leader-hero h2{margin:5px 0 3px;font-size:22px;line-height:1.2;letter-spacing:.02em;color:var(--ink)}
.center-leader-hero p{margin:0;font-size:10.5px;line-height:1.6;color:var(--ink-2)}
.center-leader-hero-meta{position:relative;z-index:1;display:flex;gap:6px;flex:none}
.center-leader-hero-meta span{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:54px;padding:6px 8px;border:1px solid var(--line);border-radius:10px;background:color-mix(in srgb,var(--card) 72%,transparent);font-size:8px;color:var(--ink-3);white-space:nowrap}
.center-leader-hero-meta b{font-size:16px;line-height:1.1;color:var(--ink)}
.center-leader-note{display:flex;align-items:center;gap:6px;margin:0 1px 13px;font-size:9px;color:var(--ink-3);line-height:1.5}
.center-leader-note::before{content:"✦";color:var(--gold);font-size:9px}
.center-podium{display:grid;grid-template-columns:repeat(3,1fr);align-items:end;gap:7px;margin:2px 0 13px;padding:0 2px}
.center-podium-card{position:relative;display:flex;flex-direction:column;align-items:center;min-width:0;padding:11px 6px 9px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,var(--card),var(--paper));box-shadow:0 5px 14px rgba(24,18,14,.10)}
.center-podium-card.rank-1{transform:translateY(-10px);border-color:color-mix(in srgb,var(--gold) 55%,var(--line));background:linear-gradient(180deg,var(--gold-soft),var(--card) 76%);box-shadow:0 8px 20px rgba(160,110,20,.18)}
.center-podium-card.rank-2{border-color:color-mix(in srgb,#9aa6b2 40%,var(--line))}
.center-podium-card.rank-3{border-color:color-mix(in srgb,#b97848 38%,var(--line))}
.center-podium-card.me{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:1px}
.center-podium-crown{position:absolute;top:-11px;left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--card);border:1px solid var(--line);color:var(--gold);font-size:12px;box-shadow:0 2px 6px rgba(0,0,0,.12)}
.rank-1 .center-podium-crown{color:#C98B1C;border-color:var(--gold-line);background:var(--gold-soft);font-size:14px}
.center-podium-avatar{position:relative;display:block;width:54px;height:54px;margin:1px 0 6px;cursor:pointer}
.center-podium-avatar .avatar-circle{width:52px!important;height:52px!important;font-size:21px!important}
.rank-1 .center-podium-avatar{width:62px;height:62px}
.rank-1 .center-podium-avatar .avatar-circle{width:60px!important;height:60px!important;font-size:24px!important}
.center-podium-name{max-width:100%;font-size:11.5px;font-weight:800;line-height:1.35;color:var(--ink);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.center-podium-name em{font-style:normal;font-size:8px;font-weight:700;color:var(--accent)}
.center-podium-label{margin-top:3px;font-size:8px;font-weight:800;letter-spacing:.05em;color:var(--ink-3)}
.rank-1 .center-podium-label{color:#9A641B}
.center-podium-score{margin-top:2px;font-size:17px;font-weight:900;line-height:1.1;color:var(--ink);letter-spacing:-.02em}
.center-podium-score em{margin-left:2px;font-size:8px;font-style:normal;font-weight:700;color:var(--ink-3)}
.center-leader-list-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 2px 6px;font-size:9px;font-weight:800;letter-spacing:.06em;color:var(--ink-2)}
.center-leader-list-head em{font-style:normal;font-weight:500;font-size:8px;color:var(--ink-3);letter-spacing:0}
.center-leader{display:flex;flex-direction:column;gap:5px;margin:0 0 12px}
.center-leader-row{display:grid;grid-template-columns:24px 34px minmax(0,1fr) auto;align-items:center;gap:8px;padding:7px 9px;border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--card) 82%,transparent);transition:background .15s,border-color .15s}
.center-leader-row:hover{background:var(--card);border-color:var(--green-line)}
.center-leader-row.me{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:color-mix(in srgb,var(--green-soft) 55%,var(--card))}
.center-rank{font-size:10px;font-weight:900;color:var(--ink-3);letter-spacing:.03em;text-align:center}
.center-leader-row.me .center-rank{color:var(--accent)}
.center-row-avatar{display:block;width:32px;height:32px;cursor:pointer}
.center-row-avatar .avatar-circle{width:30px!important;height:30px!important;font-size:13px!important}
.center-leader-main{display:flex;flex-direction:column;gap:4px;min-width:0}
.center-leader-name{font-size:11.5px;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.center-leader-name em{font-style:normal;font-size:8px;color:var(--accent);margin-left:3px}
.center-leader-bar{display:block;width:100%;height:3px;border-radius:999px;background:var(--line);overflow:hidden}
.center-leader-bar i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--gold),var(--accent));min-width:4px}
.center-leader-score{font-size:12px;font-weight:900;color:var(--ink);white-space:nowrap}
.center-leader-score em{font-style:normal;font-size:8px;font-weight:600;color:var(--ink-3);margin-left:1px}
.center-leader-cta{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px;padding:12px;border:1px solid var(--green-line);border-radius:13px;background:linear-gradient(135deg,var(--green-soft),var(--card))}
.center-leader-cta.outside{border-color:var(--gold-line);background:linear-gradient(135deg,var(--gold-soft),var(--card))}
.center-leader-cta-kicker{display:block;font-size:8.5px;font-weight:800;letter-spacing:.04em;color:var(--accent)}
.center-leader-cta b{display:block;margin-top:2px;font-size:17px;line-height:1.2;color:var(--ink)}
.center-leader-cta p{margin:3px 0 0;font-size:9.5px;line-height:1.5;color:var(--ink-2)}
.center-leader-actions{display:flex;gap:6px;flex:none}
.center-leader-empty{display:flex;flex-direction:column;align-items:center;padding:28px 18px;border:1px dashed var(--line-2);border-radius:15px;background:var(--card);text-align:center}
.center-leader-empty-mark{display:flex;align-items:center;justify-content:center;width:48px;height:48px;margin-bottom:8px;border-radius:50%;background:var(--gold-soft);color:var(--gold-ink);font-size:22px}
.center-leader-empty b{font-size:14px;color:var(--ink)}
.center-leader-empty p{margin:4px 0 12px;font-size:10px;color:var(--ink-2)}
@media (max-width:520px){
  .center-leader-hero{align-items:flex-start;flex-direction:column;gap:9px;padding:13px}
  .center-leader-hero-meta{width:100%}
  .center-leader-hero-meta span{flex:1;flex-direction:row;justify-content:center;gap:4px;padding:5px 6px}
  .center-leader-hero-meta b{font-size:13px}
  .center-podium{gap:5px}
  .center-podium-card{padding:9px 4px 8px;border-radius:11px}
  .center-podium-avatar{width:46px;height:46px}
  .center-podium-avatar .avatar-circle{width:44px!important;height:44px!important;font-size:18px!important}
  .rank-1 .center-podium-avatar{width:52px;height:52px}
  .rank-1 .center-podium-avatar .avatar-circle{width:50px!important;height:50px!important;font-size:20px!important}
  .center-podium-name{font-size:10px}
  .center-podium-score{font-size:15px}
  .center-leader-row{grid-template-columns:20px 30px minmax(0,1fr) auto;gap:6px;padding:6px 7px}
  .center-row-avatar{width:28px;height:28px}
  .center-row-avatar .avatar-circle{width:26px!important;height:26px!important;font-size:11px!important}
  .center-leader-name{font-size:10.5px}
  .center-leader-score{font-size:11px}
  .center-leader-cta{align-items:flex-start;flex-direction:column;gap:8px;padding:10px}
  .center-leader-actions{width:100%}
  .center-leader-actions .btn{flex:1}
}

/* 成长页顶部“本周焦点”榜单模块 */
.center-leader-feature{position:relative;margin:0 0 14px}
.center-leader-feature>.center-leader-hero{margin-bottom:0}
.center-leader-feature .center-leader-note{margin:7px 1px 11px}
.center-leader-more{margin-top:9px;border:1px solid var(--line);border-radius:12px;background:var(--card);overflow:hidden}
.center-leader-more summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 11px;cursor:pointer;list-style:none;font-size:10px;font-weight:800;color:var(--ink-2);transition:background .15s}
.center-leader-more summary::-webkit-details-marker{display:none}
.center-leader-more summary::before{content:"";display:block;width:7px;height:7px;margin:0 7px 2px 2px;border-right:1.8px solid currentColor;border-bottom:1.8px solid currentColor;transform:rotate(45deg);flex:none;opacity:.7;transition:transform .2s,margin .2s,opacity .2s}
.center-leader-more[open] summary::before{transform:rotate(-135deg);margin-top:3px;margin-bottom:0}
.center-leader-more summary span{flex:1;text-align:left}
.center-leader-more summary em{font-style:normal;font-weight:500;font-size:8.5px;color:var(--ink-3)}
.center-leader-more summary:hover{background:var(--green-soft)}
.center-leader-more .center-leader{margin:0 9px 9px}
.center-leader-feature + .center-tabs{margin-top:2px}

/* 用户卡用户组：保留昵称弹层结构，颜色跟随当前用户皮肤与主题 */
html .user-card-pop .uc-group.badge-group:not(.badge-special){
  background:color-mix(in srgb,var(--uc-accent) 11%,var(--uc-soft))!important;
  color:var(--uc-accent)!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--uc-accent) 34%,var(--uc-line))!important;
}
html .user-card-pop .uc-group.badge-special{
  background:color-mix(in srgb,var(--gold-soft) 88%,transparent)!important;
  color:var(--gold-ink)!important;
  box-shadow:inset 0 0 0 1px var(--gold-line)!important;
}
html .user-card-pop .uc-group .group-level-star::before{
  background:linear-gradient(180deg,var(--uc-accent),color-mix(in srgb,var(--uc-accent) 58%,#000))!important;
  filter:drop-shadow(0 0 .7px rgba(255,255,255,.9)) drop-shadow(0 1px 2px rgba(0,0,0,.28))!important;
}
html .user-card-pop .uc-group .group-level-star i{color:#fff!important}

/* 隔离浏览者皮肤：卡片内部圆角只由目标用户 data-skin 决定 */
html .user-card-pop .avatar-circle,
html .user-card-pop .avatar-medal-badge{border-radius:50%!important}
.user-card-pop[data-skin="classic"]{border-radius:15px!important}
.user-card-pop[data-skin="classic"] .uc-stats{border-radius:10px!important}
.user-card-pop[data-skin="classic"] .uc-group,
.user-card-pop[data-skin="classic"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="classic"] .uc-sum .theme-paid-tag{border-radius:999px!important}
.user-card-pop[data-skin="classic"] .uc-sum{border-radius:6px!important}
.user-card-pop[data-skin="craft"]{border-radius:2px!important}
.user-card-pop[data-skin="craft"] .uc-stats,
.user-card-pop[data-skin="craft"] .uc-group,
.user-card-pop[data-skin="craft"] .uc-sum,
.user-card-pop[data-skin="craft"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="craft"] .uc-sum .theme-paid-tag{border-radius:2px!important}
.user-card-pop[data-skin="cyber"]{border-radius:0!important}
.user-card-pop[data-skin="cyber"] .uc-stats,
.user-card-pop[data-skin="cyber"] .uc-group,
.user-card-pop[data-skin="cyber"] .uc-sum,
.user-card-pop[data-skin="cyber"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="cyber"] .uc-sum .theme-paid-tag{border-radius:0!important}
.user-card-pop[data-skin="sweet"]{border-radius:22px!important}
.user-card-pop[data-skin="sweet"] .uc-stats{border-radius:10px!important}
.user-card-pop[data-skin="sweet"] .uc-group,
.user-card-pop[data-skin="sweet"] .uc-sum,
.user-card-pop[data-skin="sweet"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="sweet"] .uc-sum .theme-paid-tag{border-radius:999px!important}
.user-card-pop[data-skin="tough"]{border-radius:0!important}
.user-card-pop[data-skin="tough"] .uc-stats,
.user-card-pop[data-skin="tough"] .uc-group,
.user-card-pop[data-skin="tough"] .uc-sum,
.user-card-pop[data-skin="tough"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="tough"] .uc-sum .theme-paid-tag{border-radius:0!important}
.user-card-pop[data-skin="rainbow"]{border-radius:12px!important}
.user-card-pop[data-skin="rainbow"] .uc-stats,
.user-card-pop[data-skin="rainbow"] .uc-group,
.user-card-pop[data-skin="rainbow"] .uc-sum,
.user-card-pop[data-skin="rainbow"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="rainbow"] .uc-sum .theme-paid-tag{border-radius:12px!important}
.user-card-pop[data-skin="mecha"]{border-radius:0!important}
.user-card-pop[data-skin="mecha"] .uc-stats,
.user-card-pop[data-skin="mecha"] .uc-group,
.user-card-pop[data-skin="mecha"] .uc-sum,
.user-card-pop[data-skin="mecha"] .uc-sum .skin-rarity,
.user-card-pop[data-skin="mecha"] .uc-sum .theme-paid-tag{border-radius:0!important}

/* ===== 正式版滑动拼图验证码 ===== */
.auth-captcha.auth-captcha-puzzle{display:block;width:100%;margin:0 0 12px;padding:9px;border:1px solid rgba(255,255,255,.22);border-radius:12px;background:rgba(0,0,0,.12)}
.captcha-puzzle-stage{position:relative;width:100%;aspect-ratio:480/220;border-radius:8px;overflow:hidden;background:#152936;touch-action:pan-y}
.captcha-puzzle-stage img{position:absolute;display:block;border:0;box-shadow:none}
.captcha-puzzle-stage img[data-role="bg"]{inset:0;width:100%;height:100%;object-fit:fill;border-radius:0}
.captcha-puzzle-stage img[data-role="piece"]{left:0;top:31.818%;width:16.6667%;height:auto;border-radius:6px;border:1px solid rgba(255,255,255,.7);box-shadow:0 4px 12px rgba(0,0,0,.4);z-index:2;cursor:grab;touch-action:none}
.captcha-puzzle-stage img[data-role="piece"].dragging{cursor:grabbing;box-shadow:0 8px 20px rgba(0,0,0,.5)}
.captcha-puzzle-slider{display:flex;align-items:center;gap:8px;width:100%;min-width:0;margin-top:7px}
.captcha-puzzle-slider input{flex:1;width:0;min-width:0;-webkit-appearance:none;appearance:none;height:7px;border-radius:99px;background:rgba(255,255,255,.22);outline:none}
.captcha-puzzle-slider input::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;background:#fff;border:2px solid var(--accent);box-shadow:0 2px 6px rgba(0,0,0,.3);cursor:grab}
.captcha-puzzle-slider input::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;border:2px solid var(--accent);box-shadow:0 2px 6px rgba(0,0,0,.3);cursor:grab}
.captcha-puzzle-slider span{min-width:32px;text-align:right;font-size:10px;font-weight:800;color:rgba(255,255,255,.82);font-variant-numeric:tabular-nums}
.captcha-puzzle-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:5px}
.captcha-puzzle-status{font-size:10px;line-height:1.4;color:rgba(255,255,255,.62)}
.captcha-puzzle-status.ok{color:#9FE3C8;font-weight:700}
.captcha-puzzle-status.bad{color:#FFB3A4;font-weight:700}
.captcha-puzzle-foot button{border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08);color:rgba(255,255,255,.85);border-radius:7px;padding:4px 8px;font:inherit;font-size:10px;cursor:pointer;white-space:nowrap}
.captcha-puzzle-foot button:hover{background:rgba(255,255,255,.16)}
#auth-screen .auth-captcha-puzzle .captcha-puzzle-stage img,
#profile-screen .auth-captcha-puzzle .captcha-puzzle-stage img{width:auto;height:auto;border:0;border-radius:0;background:transparent}
#auth-screen .auth-captcha-puzzle .captcha-puzzle-stage img[data-role="bg"],
#profile-screen .auth-captcha-puzzle .captcha-puzzle-stage img[data-role="bg"]{width:100%;height:100%;border-radius:0}
#auth-screen .auth-captcha-puzzle .captcha-puzzle-stage img[data-role="piece"],
#profile-screen .auth-captcha-puzzle .captcha-puzzle-stage img[data-role="piece"]{width:16.6667%;height:auto;border-radius:6px;border:1px solid rgba(255,255,255,.7)}
@media(max-width:520px){
  .auth-captcha.auth-captcha-puzzle{padding:7px;border-radius:10px}
  .captcha-puzzle-slider input{height:9px}
  .captcha-puzzle-slider input::-webkit-slider-thumb{width:28px;height:28px;border-width:3px}
  .captcha-puzzle-slider input::-moz-range-thumb{width:26px;height:26px;border-width:3px}
  .captcha-puzzle-foot{align-items:flex-start}
  .captcha-puzzle-status{font-size:9.5px}
}

/* ============================================================
   登录 / 修改资料：去掉深色渐变底，改为浅色卡（放文件末尾以确保覆盖）
   ============================================================ */
#auth-screen .auth-card,
#profile-screen .auth-card{
  background:linear-gradient(145deg,var(--card),color-mix(in srgb,var(--card) 92%,var(--accent) 8%));
  border:1px solid color-mix(in srgb,var(--line) 78%,var(--accent) 22%);
  color:var(--ink);
  box-shadow:0 24px 60px rgba(42,28,20,.18);
}
#auth-screen .auth-card::after,
#profile-screen .auth-card::after{display:none}
#auth-screen .auth-title,#profile-screen .auth-title{color:var(--ink)}
#auth-screen .auth-sub,#profile-screen .auth-sub{color:var(--ink-2);opacity:1}
#auth-screen .auth-input,#profile-screen .auth-input{background:var(--surface);border:1px solid var(--line);color:var(--ink)}
#auth-screen .auth-input::placeholder,#profile-screen .auth-input::placeholder{color:var(--ink-3)}
#auth-screen .auth-input:focus,#profile-screen .auth-input:focus{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 12%,transparent)}
#auth-screen .auth-remember{color:var(--ink-2)}
#auth-screen .auth-check{background:var(--card);box-shadow:inset 0 0 0 1px var(--line-2)}
#auth-screen .auth-check input{border-color:var(--line-2)}
#auth-screen .auth-check input:checked{background:var(--accent);border-color:var(--accent)}
#auth-screen .auth-check input::after{border-color:#fff}
#auth-screen .auth-err{color:var(--accent)}
#auth-screen .auth-btn{background:var(--grad-main);color:#fff}
#auth-screen .auth-switch{color:var(--ink-2)}
#auth-screen .auth-switch a{color:var(--accent-ink)}
#auth-screen .auth-foot{color:var(--ink-3)}
#auth-screen .auth-brand-name,#profile-screen .auth-brand-name{color:var(--ink)}
#auth-screen .auth-brand-copy span,#profile-screen .auth-brand-copy span{color:var(--ink-2)}
#auth-screen .auth-close,#profile-screen .auth-close{border-color:var(--line);background:var(--card);color:var(--ink-2)}
#auth-screen .auth-close:hover,#profile-screen .auth-close:hover{background:var(--cream)}
#auth-screen .auth-avatar-preview,#profile-screen .auth-avatar-preview{background:var(--cream);box-shadow:inset 0 0 0 1px var(--line)}
#auth-screen .auth-avatar-preview .avatar-ph,#profile-screen .auth-avatar-preview .avatar-ph{color:var(--accent)}
#auth-screen .auth-avatar-plus{color:var(--accent)}
#auth-screen .auth-avatar-hint,#profile-screen .auth-avatar-hint{color:var(--ink-3)}
.profile-pen-hint{background:var(--cream);color:var(--ink-2)}



/* 邮件服务与找回密码 */
.auth-forgot{
  display:inline-flex;align-items:center;justify-content:center;
  margin:2px 0 12px;padding:5px 14px;
  border:1px solid rgba(0,0,0,.10);border-radius:999px;
  background:#fff;color:#c0392b;
  font:inherit;font-size:12.5px;font-weight:700;cursor:pointer;
  text-decoration:none;box-shadow:0 2px 10px rgba(0,0,0,.12);
  transition:background .15s,border-color .15s;
}
.auth-forgot:hover{background:#fff6f4;border-color:#e8b4ae}
.auth-panel .auth-title{margin-top:0}
.mail-switch{display:flex;align-items:center;gap:8px;margin:9px 0 0;font-size:12.5px;color:var(--ink-2);cursor:pointer}
.mail-switch input{width:15px;height:15px;margin:0;accent-color:var(--accent);cursor:pointer}
.mail-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0 0}
.mail-actions .station-hint{margin:0}

#mail-panel{grid-column:1/-1}


/* 登录保护（两步验证） */
.twofa-card{margin-top:14px;padding:18px 20px}
.twofa-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}
.twofa-head h3{margin:0 0 4px;font-size:15px;color:var(--ink)}
.twofa-head p{margin:0;font-size:11.5px;line-height:1.6;color:var(--ink-3)}
.twofa-state{flex:none;padding:4px 10px;border-radius:999px;font-size:10.5px;font-weight:700;border:1px solid var(--line)}
.twofa-state.on{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}
.twofa-state.off{background:var(--cream);color:var(--ink-3)}
.twofa-note{margin:12px 0 0;font-size:11.5px;line-height:1.7;color:var(--ink-3)}
.twofa-secret{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0 0;padding:10px 12px;border:1px dashed var(--line);border-radius:10px;background:var(--cream)}
.twofa-secret code{font-family:ui-monospace,Consolas,monospace;font-size:13px;letter-spacing:.08em;color:var(--ink);word-break:break-all}
.twofa-rows{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 0}
.twofa-rows>div{display:flex;flex-direction:column;gap:2px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.twofa-rows span{font-size:10.5px;color:var(--ink-3)}
.twofa-rows b{font-size:12.5px;font-weight:600;color:var(--ink)}
.twofa-form{display:grid;gap:8px;margin:12px 0 0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--cream)}
.twofa-form label{display:grid;gap:5px;font-size:11px;color:var(--ink-2)}
.twofa-form input{width:100%;box-sizing:border-box;height:36px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink);padding:0 11px;font:inherit;font-size:13px;outline:none}
.twofa-form input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--green-soft)}
.twofa-actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 0}
.twofa-form .twofa-actions{margin:2px 0 0}
.twofa-codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:12px 0 0}
.twofa-codes code{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--cream);font-family:ui-monospace,Consolas,monospace;font-size:12.5px;letter-spacing:.06em;text-align:center;color:var(--ink)}
.twofa-err{display:none;margin:8px 0 0;font-size:11.5px;color:var(--danger,#c0392b)}
.twofa-err.show{display:block}
@media(max-width:640px){
  .twofa-rows{grid-template-columns:1fr}
  .twofa-codes{grid-template-columns:1fr}
}

.twofa-qr{display:flex;align-items:center;gap:14px;margin:12px 0 0;padding:12px;border:1px dashed var(--line);border-radius:12px;background:var(--card)}
.twofa-qr>div{width:168px;height:168px;flex:none;padding:6px;background:#fff;border-radius:10px;box-sizing:content-box}
.twofa-qr>div img,.twofa-qr>div canvas{width:100%!important;height:100%!important;display:block}
.twofa-qr span{font-size:11px;line-height:1.7;color:var(--ink-3)}
.twofa-qr.no-qr>div{display:none}


/* 首页 hero：日期放在标题上方 */
.page-hero-date{
  display:block;margin:9px 0 0;
  font-size:12px;font-weight:600;letter-spacing:.08em;
  color:var(--ink-2);
}
.page-hero-date + h1{margin-top:4px}



/* 页脚：站长登录入口（跟在品牌名旁边，像网站的“门牌”） */
.footer-login{
  display:inline-flex;align-items:center;gap:4px;
  margin-left:2px;padding-left:10px;border-left:1px solid var(--line);
  font-size:11px;color:var(--ink-3);cursor:pointer;white-space:nowrap;
  letter-spacing:.02em;transition:color .15s;
}
.footer-login svg{width:11px;height:11px;flex:none;opacity:.75}
.footer-login:hover{color:var(--accent-ink)}
.footer-login:hover svg{opacity:1}
.footer-login.is-owner{color:var(--ink-2)}
.footer-login.is-owner svg{opacity:.95}

/* Passkey 登录按钮 */
.auth-passkey{display:flex;align-items:center;justify-content:center;width:54px;height:54px;min-height:0;margin:10px auto 0;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);cursor:pointer;transition:background .18s,border-color .18s,transform .15s}
.auth-passkey:hover{background:var(--cream);border-color:var(--green-line);transform:translateY(-1px)}
.auth-passkey svg{width:26px;height:26px}
.auth-passkey:disabled{opacity:.6;cursor:default}
.profile-passkey{display:flex;align-items:center;justify-content:center;width:42px;height:42px;margin:2px auto 10px;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);cursor:pointer;transition:background .18s,border-color .18s}
.profile-passkey:hover{background:var(--cream);border-color:var(--green-line)}
.profile-passkey svg{width:20px;height:20px}
.profile-passkey.verified{background:var(--green-soft);border-color:var(--green-line);color:var(--green)}
.profile-passkey:disabled{opacity:.8;cursor:default}

/* 敏感操作：Passkey 图像化按钮 */
.ui-dialog-passkey{display:flex;align-items:center;justify-content:center;margin-right:auto;width:38px;height:38px;min-height:0;padding:0!important;border-radius:50%;flex:none!important}
.ui-dialog-passkey svg{width:20px;height:20px}
@media(max-width:520px){.ui-dialog-passkey{width:38px!important;height:38px!important;flex:none!important}}
