@import url("https://cdn.jsdelivr.net/npm/lxgw-wenkai-webfont@1.7.0/style.css");
@import url("https://cdn.jsdelivr.net/npm/@fontsource/dancing-script@5/700.css");
@import url("https://cdn.jsdelivr.net/npm/@fontsource/ma-shan-zheng@5/index.css");
@import url("https://cdn.jsdelivr.net/npm/@fontsource/long-cang@5/index.css");
/* ===== Chips 主题令牌中心 v1.1 液态玻璃 (2026-07-18) =====
   每套主题=一份变量包。页面消费var(--xx),美化中心写kv,theme.js开机加载。 */
:root, body[data-theme="grape"]{
  --bg:#f5f2f7; --bg-img:none; --card:rgba(255,255,255,.72); --frost:14px;
  --ink:#3a3340; --sub:#8a8494; --accent:#a898b8; --accent-soft:#e8e4f0;
  --bubble-me:#e8e4f0; --bubble-ta:rgba(255,255,255,.82);
  --radius:18px; --border:none; --shadow:0 2px 10px rgba(120,100,140,.10);
}body[data-theme="soda"],
body[data-theme="craft"]{
  --bg:#fdfef9; --card:#fffefb; --frost:0px;
  --ink:#4a5844; --sub:#93a389; --accent:#8cb572; --accent-soft:#e5eed2;
  --bubble-me:repeating-linear-gradient(0deg,rgba(202,225,151,.28) 0 8px,rgba(202,225,151,0) 8px 16px),repeating-linear-gradient(90deg,rgba(202,225,151,.28) 0 8px,rgba(202,225,151,0) 8px 16px),#fdfef9;
  --bubble-ta:#fffefb;
  --radius:12px; --border:1px solid rgba(122,150,110,.20);
  --shadow:0 2px 8px rgba(120,150,110,.10),0 1px 2px rgba(120,150,110,.07);
  --bg-img:repeating-linear-gradient(0deg,rgba(167,198,137,.075) 0 14px,rgba(167,198,137,0) 14px 28px),repeating-linear-gradient(90deg,rgba(167,198,137,.075) 0 14px,rgba(167,198,137,0) 28px);
}
body[data-theme="summerwater"]{
  --bg:#eef3e6; --card:rgba(255,255,255,.58); --frost:22px;
  --ink:#48604e; --sub:#8aa08e; --accent:#a7c689; --accent-soft:#e5eed2;
  --bubble-me:rgba(229,238,210,.82); --bubble-ta:rgba(255,255,255,.72);
  --radius:24px; --border:none; --shadow:0 8px 28px rgba(90,130,90,.14);
  --glass-sat:1.8; --glass-edge:.65; --glass-spec:.45;
  --glass-border:1px solid rgba(255,255,255,.65);
  --bg-img:url('/static/assets/themes/summer-water/bg_full.jpg');
}
body[data-theme="retro"]{
  --bg:#f7f2e4; --card:#fffdf5; --frost:0px;
  --ink:#4a3f2a; --sub:#9a8c6a; --accent:#7fae6d; --accent-soft:#e7f0d8;
  --bubble-me:#e7f0d8; --bubble-ta:#fffdf5;
  --radius:10px; --border:2px solid #4a3f2a; --shadow:3px 3px 0 rgba(74,63,42,.22);
  --bg-img:radial-gradient(rgba(127,174,109,.13) 1.2px, transparent 1.3px);
}
body[data-theme="ins"]{
  --bg:#fbfdf6; --card:rgba(255,255,255,.66); --frost:16px;
  --glass-sat:1.65; --glass-edge:.6; --glass-spec:.4;
  --glass-border:1px solid rgba(255,255,255,.6);
  --ink:#495441; --sub:#9aa88e; --accent:#a7c689; --accent-soft:#e5eed2;
  --bubble-me:#e5eed2; --bubble-ta:rgba(255,255,255,.88);
  --radius:22px; --border:none; --shadow:0 4px 16px rgba(130,174,113,.13);
  --bg-img:radial-gradient(ellipse 70% 45% at 50% 30%, rgba(202,225,151,.34), transparent 70%);
}
body[data-theme="manga"]{
  --bg:#ffffff; --card:#fff; --frost:0px;
  --ink:#26301f; --sub:#7d8a72; --accent:#6ea45a; --accent-soft:#eaf4de;
  --bubble-me:#eaf4de; --bubble-ta:#fff;
  --radius:14px; --border:2.5px solid #26301f; --shadow:4px 4px 0 #26301f;
  --bg-img:radial-gradient(rgba(110,164,90,.18) 1px, transparent 1.1px);
}
/* 非默认主题时,把已知公共组件接上令牌(渐进式接管,页面自身样式为兜底) */
body[data-theme]:not([data-theme="grape"]){background:var(--bg)!important;background-image:var(--bg-img)!important;background-size:12px 12px;}
body[data-theme="ins"],body[data-theme="summerwater"]{background-size:cover!important;background-position:center!important;background-attachment:fixed!important;}body[data-theme="soda"],
body[data-theme="craft"]{background-size:auto!important;}
body[data-theme]:not([data-theme="grape"]):not([data-theme="soda"]):not([data-theme="craft"]) .feature-card,
body[data-theme]:not([data-theme="grape"]):not([data-theme="soda"]):not([data-theme="craft"]) .card{
  /* 液态玻璃: 镜面高光层叠在卡片底色上;老主题--glass-*缺省=0,配方自动退化为旧毛玻璃 */
  background:linear-gradient(165deg,rgba(255,255,255,var(--glass-spec,0)) 0%,rgba(255,255,255,0) 46%),var(--card)!important;
  border:var(--glass-border,var(--border))!important;
  box-shadow:var(--shadow),
    inset 0 1px 0 rgba(255,255,255,var(--glass-edge,0)),
    inset 0 0 0 .5px rgba(255,255,255,calc(var(--glass-edge,0)*.35))!important;
  border-radius:var(--radius)!important;
  backdrop-filter:blur(var(--frost)) saturate(var(--glass-sat,1));
  -webkit-backdrop-filter:blur(var(--frost)) saturate(var(--glass-sat,1));
}
body[data-theme]:not([data-theme="grape"]) .message-bubble{
  background:linear-gradient(170deg,rgba(255,255,255,calc(var(--glass-spec,0)*.7)) 0%,rgba(255,255,255,0) 52%),var(--bubble-ta)!important;
  border:var(--glass-border,var(--border))!important;
  box-shadow:var(--shadow),inset 0 1px 0 rgba(255,255,255,calc(var(--glass-edge,0)*.8))!important;
  border-radius:var(--radius)!important;
}
body[data-theme]:not([data-theme="grape"]) .user-wrapper .message-bubble{background:var(--bubble-me)!important;}

/* (方言桥接v1已于0719拆除: 全站25页定义行已直连--theme-*统一令牌,过渡层功成身退) */

/* ===== 语义导出层v1 (0719): 全站统一12核心token,页面只消费--theme-*,主题定义仍用短名 =====
   页面接入规范: 私有变量定义行改为 var(--theme-xx, 原值兜底),消费端不动。 */
body{
  --theme-page-bg:var(--bg);
  --theme-page-bg-image:var(--bg-img);
  --theme-text-primary:var(--ink);
  --theme-text-secondary:var(--sub);
  --theme-accent:var(--accent);
  --theme-accent-soft:var(--accent-soft);
  --theme-surface-bg:var(--card);
  --theme-surface-border:var(--glass-border,var(--border));
  --theme-surface-shadow:var(--shadow);
  --theme-surface-backdrop:blur(var(--frost)) saturate(var(--glass-sat,1));
  --theme-bubble-user-bg:var(--bubble-me);
  --theme-bubble-assistant-bg:var(--bubble-ta);
}/* ===== 汽水套: 纸条气泡胶带贴角(薯薯侧专属) ===== */
body[data-theme="soda"] .message-bubble,
/* ===== 汽水套: 纸条气泡胶带贴角(薯薯侧专属) ===== */
body[data-theme="craft"] .message-bubble{position:relative;overflow:visible!important}body[data-theme="soda"] .message-bubble::before,
body[data-theme="craft"] .message-bubble::before{
  content:'';position:absolute;top:-9px;left:16px;width:54px;height:17px;
  transform:rotate(-4deg);pointer-events:none;
  background:
    repeating-linear-gradient(90deg,rgba(167,198,137,.32) 0 5px,rgba(167,198,137,0) 5px 10px),
    repeating-linear-gradient(0deg,rgba(167,198,137,.32) 0 5px,rgba(167,198,137,0) 5px 10px),
    rgba(252,255,250,.6);
  clip-path:polygon(2% 0,98% 4%,100% 16%,97% 32%,100% 48%,98% 65%,100% 82%,97% 100%,2% 96%,0 80%,3% 64%,0 48%,2% 30%,0 14%);
  mix-blend-mode:multiply;
  box-shadow:0 1px 2px rgba(90,120,80,.13);}body[data-theme="soda"] .user-wrapper .message-bubble::before,
body[data-theme="craft"] .user-wrapper .message-bubble::before{display:none}/* ===== 主题装饰层v1 (0719): 每套主题的专属小东西——魂 ===== */
/* 汽水: 首页卡片贴纸轮换(纽扣/曲别针/蝴蝶结,
SVG手画,
后续换实拍抠图) */
body[data-theme="soda"] .feature-card,
body[data-theme="craft"] .feature-card{position:relative;overflow:visible!important}body[data-theme="soda"] .feature-card::after,
body[data-theme="craft"] .feature-card::after{
  content:'';position:absolute;top:-9px;right:12px;width:26px;height:26px;
  pointer-events:none;transform:rotate(9deg);opacity:.95;
  filter:drop-shadow(0 1px 2px rgba(90,120,80,.18));
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><circle cx='16' cy='16' r='13' fill='%23cae197' stroke='%23a7c689' stroke-width='2'/><circle cx='16' cy='16' r='9' fill='none' stroke='%23b9d489' stroke-width='1'/><circle cx='13' cy='13' r='1.6' fill='%237d9a63'/><circle cx='19' cy='13' r='1.6' fill='%237d9a63'/><circle cx='13' cy='19' r='1.6' fill='%237d9a63'/><circle cx='19' cy='19' r='1.6' fill='%237d9a63'/></svg>") center/contain no-repeat}body[data-theme="soda"] .feature-card:nth-child(3n+1)::after,
body[data-theme="craft"] .feature-card:nth-child(3n+1)::after{
  width:20px;height:34px;top:-13px;right:16px;transform:rotate(-14deg);
  background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 40'><path d='M7 7 v21 a5 5 0 0 0 10 0 V10 a3.2 3.2 0 0 0 -6.4 0 v16' fill='none' stroke='%238fae72' stroke-width='2.6' stroke-linecap='round'/></svg>")}body[data-theme="soda"] .feature-card:nth-child(3n+2)::after,
body[data-theme="craft"] .feature-card:nth-child(3n+2)::after{
  width:34px;height:22px;top:-10px;right:10px;transform:rotate(6deg);
  background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 26'><path d='M20 13 L5 4 a3 3 0 0 0 -4 3 v12 a3 3 0 0 0 4 3 Z' fill='%23cae197' stroke='%23a7c689' stroke-width='1.6' stroke-linejoin='round'/><path d='M20 13 L35 4 a3 3 0 0 1 4 3 v12 a3 3 0 0 1 -4 3 Z' fill='%23cae197' stroke='%23a7c689' stroke-width='1.6' stroke-linejoin='round'/><circle cx='20' cy='13' r='3.6' fill='%23a7c689'/><path d='M17 16 l-4 8 M23 16 l4 8' stroke='%23a7c689' stroke-width='1.6' stroke-linecap='round'/></svg>")}
/* 夏水: 首页卡片右下真苹果小角标(实拍素材) */
body[data-theme="summerwater"] .feature-card{position:relative;overflow:visible!important}
body[data-theme="summerwater"] .feature-card::after{
  content:'';position:absolute;bottom:7px;right:9px;width:28px;height:28px;
  pointer-events:none;transform:rotate(-7deg);opacity:.92;
  filter:drop-shadow(0 2px 3px rgba(90,120,80,.2));
  background:url('/static/assets/themes/summer-water/apple_3.png') center/contain no-repeat}
body[data-theme="summerwater"] .feature-card:nth-child(2n)::after{
  background-image:url('/static/assets/themes/summer-water/apple_1.png');transform:rotate(8deg)}

/* ===== 聊天空状态: 各主题专属插画(纯CSS :empty魔法, 有消息即消失) ===== */
#messages:empty{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh}
#messages:empty::before{content:'';width:min(46vw,200px);aspect-ratio:3/4;
  background:center/contain no-repeat;opacity:.92;
  filter:drop-shadow(0 8px 20px rgba(120,150,110,.14))}
#messages:empty::after{margin-top:14px;font-size:.82rem;letter-spacing:.12em;
  color:var(--theme-text-secondary,#999);opacity:.85;text-align:center;white-space:pre}/* 汽水: 磨砂冰杯 */
body[data-theme="soda"] #messages:empty::before,
/* 汽水: 磨砂冰杯 */
body[data-theme="craft"] #messages:empty::before{
  background-image:url('/static/assets/themes/soda/cup.jpg');
  border-radius:18px;background-size:cover;box-shadow:0 10px 26px rgba(120,150,110,.16)}body[data-theme="soda"] #messages:empty::after,
body[data-theme="craft"] #messages:empty::after{content:'递杯汽水\A跟薯薯说点什么吧'}
/* 夏水: 浮水苹果 */
body[data-theme="summerwater"] #messages:empty::before{
  background-image:url('/static/assets/themes/summer-water/apple_2.png');aspect-ratio:1/1;width:min(34vw,150px)}
body[data-theme="summerwater"] #messages:empty::after{content:'苹果泡在水里\A话泡在心里——捞一句给他'}/* ===== 汽水·卡纸工程v2 (0720): 真卡纸——蕾丝齿边+随形纸影,
全锁soda作用域 ===== */
/* 主页模块: 卡片透明化,
纸面交给::before(齿边mask),
drop-shadow让影子贴齿边走 */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card,
body[data-theme="craft"]:not([data-theme="grape"]) .feature-card{
  background:transparent!important;border:none!important;box-shadow:none!important;
  border-radius:0!important;overflow:visible!important;position:relative;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  filter:drop-shadow(0 1px 2px rgba(110,140,100,.20)) drop-shadow(0 7px 14px rgba(110,140,100,.12));
}body[data-theme="soda"] .feature-card::before,
body[data-theme="craft"] .feature-card::before{
  content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 .45 0 0 0 0 .48 0 0 0 0 .38 0 0 0 .05 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    #fffdf6;
  -webkit-mask:
    linear-gradient(#000,#000) center/calc(100% - 20px) calc(100% - 20px) no-repeat,
    radial-gradient(circle 4px at 50% 0,#0000 4px,#000 4.5px) left top/13px 10px repeat-x,
    radial-gradient(circle 4px at 50% 100%,#0000 4px,#000 4.5px) left bottom/13px 10px repeat-x,
    radial-gradient(circle 4px at 0 50%,#0000 4px,#000 4.5px) left top/10px 13px repeat-y,
    radial-gradient(circle 4px at 100% 50%,#0000 4px,#000 4.5px) right top/10px 13px repeat-y;
  mask:
    linear-gradient(#000,#000) center/calc(100% - 20px) calc(100% - 20px) no-repeat,
    radial-gradient(circle 4px at 50% 0,#0000 4px,#000 4.5px) left top/13px 10px repeat-x,
    radial-gradient(circle 4px at 50% 100%,#0000 4px,#000 4.5px) left bottom/13px 10px repeat-x,
    radial-gradient(circle 4px at 0 50%,#0000 4px,#000 4.5px) left top/10px 13px repeat-y,
    radial-gradient(circle 4px at 100% 50%,#0000 4px,#000 4.5px) right top/10px 13px repeat-y;
}/* 纸的按压: 影子收紧+纸色微沉 */
body[data-theme="soda"] .feature-card:active,
/* 纸的按压: 影子收紧+纸色微沉 */
body[data-theme="craft"] .feature-card:active{
  transform:none!important;
  filter:drop-shadow(0 1px 2px rgba(110,140,100,.24))!important;}body[data-theme="soda"] .feature-card:active::before,
body[data-theme="craft"] .feature-card:active::before{background-color:#f6f7ec}/* 图标圈: 纸片色圆 */
body[data-theme="soda"] .feature-icon-wrap,
/* 图标圈: 纸片色圆 */
body[data-theme="craft"] .feature-icon-wrap{
  background:#f1f6e3!important;border:1px solid rgba(122,150,110,.20)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8)!important;}/* 其余卡面: 去边框线,
纸摞底影(底部两条错位浅边=几张纸叠着) */
body[data-theme="soda"] .card,
body[data-theme="craft"] .card,
body[data-theme="soda"] .chat-cta,
body[data-theme="craft"] .chat-cta,
body[data-theme="soda"] .stat-card,
body[data-theme="craft"] .stat-card,
body[data-theme="soda"] .days-card,
body[data-theme="craft"] .days-card,
body[data-theme="soda"] .session-card,
body[data-theme="craft"] .session-card,
body[data-theme="soda"] .tl-card,
body[data-theme="craft"] .tl-card{
  background:#fffdf6!important;
  border:none!important;border-radius:8px!important;
  box-shadow:0 1.5px 0 #eef0dd,0 3px 0 -1px #fdfef7,0 4.5px 0 -1px #e7ead6,
    0 6px 12px rgba(110,140,100,.10)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}/* 打孔吊牌: Chat with Chips 左上打孔+麻绳 */
body[data-theme="soda"] .chat-cta,
/* 打孔吊牌: Chat with Chips 左上打孔+麻绳 */
body[data-theme="craft"] .chat-cta{position:relative;overflow:visible!important}body[data-theme="soda"] .chat-cta::before,
body[data-theme="craft"] .chat-cta::before{
  content:'';position:absolute;left:12px;top:9px;width:11px;height:11px;border-radius:50%;
  background:var(--bg);
  box-shadow:0 0 0 3.5px #fdfef9,0 0 0 4.6px rgba(122,150,110,.28),inset 0 1px 2px rgba(90,120,80,.25);
  pointer-events:none;z-index:2}body[data-theme="soda"] .chat-cta::after,
body[data-theme="craft"] .chat-cta::after{
  content:'';position:absolute;left:-9px;top:-17px;width:32px;height:32px;
  pointer-events:none;z-index:2;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><path d='M27 27 C 12 24, 7 15, 13 3' fill='none' stroke='%23a3b183' stroke-width='2.2' stroke-linecap='round'/><path d='M27 27 C 14 25, 9 17, 14 5' fill='none' stroke='%23c9d6a8' stroke-width='1' stroke-linecap='round' stroke-dasharray='3 3'/></svg>") center/contain no-repeat}

/* ===== 汽水/手缝: 顶栏Chips♡YY小卡纸(0720): 胶带+蝴蝶结, 与模块呼应 ===== */
body[data-theme="soda"] .avatar-row,
body[data-theme="craft"] .avatar-row{
  background:#fffdf6!important;border:none!important;border-radius:8px!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  box-shadow:0 1.5px 0 #eef0dd,0 3px 0 -1px #fdfef7,0 4.5px 0 -1px #e7ead6,
    0 6px 12px rgba(110,140,100,.10)!important;
  position:relative;overflow:visible!important;}
body[data-theme="soda"] .avatar-row::before,
body[data-theme="craft"] .avatar-row::before{
  content:'';position:absolute;left:50%;top:-9px;width:56px;height:18px;
  margin-left:-28px;transform:rotate(-4deg);pointer-events:none;z-index:2;
  background:
    repeating-linear-gradient(0deg,rgba(202,225,151,.55) 0 5px,rgba(255,255,255,.65) 5px 10px),
    repeating-linear-gradient(90deg,rgba(202,225,151,.55) 0 5px,rgba(255,255,255,.65) 5px 10px),
    rgba(252,254,246,.9);
  box-shadow:0 1px 3px rgba(110,140,100,.18);opacity:.92;}
body[data-theme="soda"] .avatar-row::after,
body[data-theme="craft"] .avatar-row::after{
  content:'';position:absolute;top:-11px;right:10px;width:34px;height:22px;
  transform:rotate(8deg);pointer-events:none;z-index:2;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 26'><path d='M20 13 L5 4 a3 3 0 0 0 -4 3 v12 a3 3 0 0 0 4 3 Z' fill='%23cae197' stroke='%23a7c689' stroke-width='1.6' stroke-linejoin='round'/><path d='M20 13 L35 4 a3 3 0 0 1 4 3 v12 a3 3 0 0 1 -4 3 Z' fill='%23cae197' stroke='%23a7c689' stroke-width='1.6' stroke-linejoin='round'/><circle cx='20' cy='13' r='3.6' fill='%23a7c689'/><path d='M17 16 l-4 8 M23 16 l4 8' stroke='%23a7c689' stroke-width='1.6' stroke-linecap='round'/></svg>") center/contain no-repeat;}

/* ===== 汽水·精装版v1 (0720): GPT纸卡素材接入 —— 仅soda; craft手缝版永不受影响 ===== */
/* 模块卡: 蕾丝方巾 (border-image九宫格; 手缝齿边mask在soda退役) */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card::before{
  -webkit-mask:none!important;mask:none!important;
  background:none;
  border:34px solid transparent;
  border-image:url('/static/assets/themes/soda/paper/lace_frame.png') 150 fill round;
}
/* Chat with Chips: 撕边毛纸卡 */
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta{
  background:transparent!important;box-shadow:none!important;
  border:26px solid transparent!important;border-radius:0!important;
  border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 fill round!important;
  filter:drop-shadow(0 2px 3px rgba(110,140,100,.18)) drop-shadow(0 6px 12px rgba(110,140,100,.10));
}
/* 气泡: chips=白信纸条(胶带烧在左上角), yy=格纹纸条(胶带右上) */
body[data-theme="soda"]:not([data-theme="grape"]) .message-bubble{
  background:transparent!important;box-shadow:none!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  border:16px solid transparent!important;
  border-width:20px 16px 14px 28px!important;border-radius:0!important;
  border-image:url('/static/assets/themes/soda/paper/bubble_chips.png') 120 60 60 230 fill round!important;
  filter:drop-shadow(0 1px 2px rgba(110,140,100,.15));
}
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble{
  border-width:18px 26px 14px 16px!important;
  border-image:url('/static/assets/themes/soda/paper/bubble_yy.png') 110 175 60 60 fill round!important;
}
/* CSS手绘胶带贴角在soda退役(素材已自带真胶带); craft继续用手绘 */
body[data-theme="soda"] .message-bubble::before{display:none!important}

/* 精装v1.1: 满屏蕾丝太花→三材质轮换: 蕾丝/撕边/素纸 (仅soda) */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(3n+2)::before{
  border-width:24px;
  border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 fill round;
}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(3n)::before{
  border:none;border-image:none;border-radius:9px;
  background:
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 .45 0 0 0 0 .48 0 0 0 0 .38 0 0 0 .05 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    #fffdf6;
}

/* 精装v1.2: 装饰换真素材——蕾丝卡裸奔/撕边卡木衣夹/素纸卡回形针 (仅soda) */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(3n+1)::after{display:none}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(3n+2)::after{
  width:28px;height:58px;top:-24px;right:16px;transform:rotate(14deg);
  background-image:url('/static/assets/themes/soda/paper/decor_pin.png')}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(3n)::after{
  width:46px;height:44px;top:-14px;right:10px;transform:rotate(-10deg);
  background-image:url('/static/assets/themes/soda/paper/decor_clip.png')}

/* 精装v1.3: 装饰缩号(木衣夹/回形针) + 顶栏换真缎带蝴蝶结 (仅soda) */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(3n+2)::after{
  width:19px;height:40px;top:-15px;right:18px}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(3n)::after{
  width:30px;height:29px;top:-9px;right:10px}
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-row::after{
  width:44px;height:36px;top:-15px;right:8px;transform:rotate(6deg);
  background:url('/static/assets/themes/soda/paper/decor_bow.png') center/contain no-repeat}

/* ===== 精装v1.4: 全站原生气泡纸化 (仅soda; craft/其他主题不动) ===== */
/* 木衣夹再缩号 */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(3n+2)::after{
  width:15px;height:32px;top:-12px;right:20px}
/* 胶囊/页签: 素纸小条 */
body[data-theme="soda"] .hub-tab,
body[data-theme="soda"] .view-tab,
body[data-theme="soda"] .filter-tab{
  background:#fffdf6!important;color:var(--ink)!important;
  border:1px solid rgba(122,150,110,.18)!important;border-radius:6px!important;
  box-shadow:0 1.5px 0 #e7ead6,0 3px 6px rgba(110,140,100,.08)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;opacity:1!important;}
body[data-theme="soda"] .hub-tab.active,
body[data-theme="soda"] .view-tab.active,
body[data-theme="soda"] .filter-tab.active{
  background:var(--accent)!important;color:#fff!important;
  border-color:rgba(90,115,75,.4)!important;
  box-shadow:0 1.5px 0 rgba(90,115,75,.55),0 3px 6px rgba(110,140,100,.22)!important;}
/* 加号FAB: 哑光纸贴纸(灭黑影,换纸影+顶部纸光) */
body[data-theme="soda"] .fab{
  background:var(--accent)!important;
  box-shadow:0 1.5px 0 rgba(90,115,75,.55),0 4px 10px rgba(110,140,100,.25),
    inset 0 1px 0 rgba(255,255,255,.35)!important;}
/* 弹窗: 撕边毛纸卡 */
body[data-theme="soda"] .modal{
  background:transparent!important;border:26px solid transparent!important;
  border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 fill round!important;
  border-radius:0!important;box-shadow:none!important;
  filter:drop-shadow(0 2px 3px rgba(110,140,100,.20)) drop-shadow(0 8px 16px rgba(110,140,100,.12));}
/* 提示条toast: 黑玻璃→素纸条 */
body[data-theme="soda"] .toast{
  background:#fffdf6!important;color:var(--ink)!important;
  border:1px solid rgba(122,150,110,.25)!important;border-radius:6px!important;
  box-shadow:0 1.5px 0 #e7ead6,0 4px 10px rgba(110,140,100,.18)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}
/* 底部导航: 纸架 */
body[data-theme="soda"] .tab-bar{
  background:rgba(255,253,246,.96)!important;
  border-top:1px solid rgba(122,150,110,.16)!important;
  box-shadow:0 -2px 8px rgba(110,140,100,.06)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}
/* 实心按钮: 纸感按压 */
body[data-theme="soda"] .submit-btn,
body[data-theme="soda"] .btn-c{
  box-shadow:0 1.5px 0 rgba(90,115,75,.5),0 3px 8px rgba(110,140,100,.18)!important;}
/* 头像片: 素纸圆 */
body[data-theme="soda"] .avatar-chip{
  background:#fffdf6!important;border:1px solid rgba(122,150,110,.2)!important;
  box-shadow:0 1.5px 0 #e7ead6,0 3px 6px rgba(110,140,100,.10)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}

/* ===== 精装v1.5: 顶部全家纸化——天数卡穿蕾丝/统计块素纸/药丸变纸签 (仅soda) ===== */
body[data-theme="soda"]:not([data-theme="grape"]) .days-card{
  background:transparent!important;border:32px solid transparent!important;
  border-radius:0!important;box-shadow:none!important;
  border-image:url('/static/assets/themes/soda/paper/lace_frame.png') 150 fill round!important;
  filter:drop-shadow(0 2px 3px rgba(110,140,100,.18)) drop-shadow(0 7px 14px rgba(110,140,100,.10));}
body[data-theme="soda"]:not([data-theme="grape"]) .stat-card{
  background:
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 .45 0 0 0 0 .48 0 0 0 0 .38 0 0 0 .05 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    #fffdf6!important;
  border:none!important;border-radius:7px!important;
  box-shadow:0 1.5px 0 #eef0dd,0 3px 0 -1px #fdfef7,0 4.5px 0 -1px #e7ead6,
    0 5px 10px rgba(110,140,100,.09)!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-row{
  background:
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 .45 0 0 0 0 .48 0 0 0 0 .38 0 0 0 .05 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    #fffdf6!important;
  border-radius:8px!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-chip{
  border-radius:9px!important;
  background:#fcfdf3!important;
  box-shadow:0 1.5px 0 #e7ead6,0 3px 6px rgba(110,140,100,.10)!important;}

/* ===== 精装v2.0: 一行一种素净纸 + 蕾丝仅供各页头牌 + 分页全员入纸籍 (仅soda) ===== */
/* --- 主页模块: 按行换料(每行2张): 单数行素纸 / 双数行撕边; 蕾丝下岗 --- */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::before{
  border:none;border-image:none;border-radius:9px;
  background:
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 .45 0 0 0 0 .48 0 0 0 0 .38 0 0 0 .05 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    #fffdf6;}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+3)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n)::before{
  border:24px solid transparent;border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 fill round;
  border-radius:0;background:none;}
/* 饰品减半: 每行只左卡戴, 素纸行回形针 / 撕边行木衣夹 */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::after,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n)::after{display:none}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::after{
  display:block;width:30px;height:29px;top:-9px;right:10px;transform:rotate(-10deg);
  background-image:url('/static/assets/themes/soda/paper/decor_clip.png')}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+3)::after{
  display:block;width:15px;height:32px;top:-12px;right:20px;transform:rotate(14deg);
  background-image:url('/static/assets/themes/soda/paper/decor_pin.png')}
/* --- 分页容器全员素纸 --- */
body[data-theme="soda"] .hub-card,
body[data-theme="soda"] .write-card,
body[data-theme="soda"] .history-card,
body[data-theme="soda"] .pick-section,
body[data-theme="soda"] .dream-card,
body[data-theme="soda"] .moment-card,
body[data-theme="soda"] .notif-panel,
body[data-theme="soda"] .tl-content{
  background:
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 .45 0 0 0 0 .48 0 0 0 0 .38 0 0 0 .05 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    #fffdf6!important;
  border:none!important;border-radius:8px!important;
  box-shadow:0 1.5px 0 #eef0dd,0 3px 0 -1px #fdfef7,0 4.5px 0 -1px #e7ead6,
    0 5px 10px rgba(110,140,100,.09)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;}
/* --- 蕾丝头牌: write编辑器 / wishes梦想卡 / 各.card页第一张 --- */
body[data-theme="soda"]:not([data-theme="grape"]) .write-card,
body[data-theme="soda"]:not([data-theme="grape"]) .dream-card,
body[data-theme="soda"]:not([data-theme="grape"]) .pick-section:first-of-type,
body[data-theme="soda"]:not([data-theme="grape"]) .container > .card:first-child,
body[data-theme="soda"]:not([data-theme="grape"]) .container > .section:first-of-type > .card{
  background:transparent!important;border:30px solid transparent!important;
  border-radius:0!important;box-shadow:none!important;
  border-image:url('/static/assets/themes/soda/paper/lace_frame.png') 150 fill round!important;
  filter:drop-shadow(0 2px 3px rgba(110,140,100,.18)) drop-shadow(0 7px 14px rgba(110,140,100,.10));}

/* ===== 精装v2.1: 素纸加缝纫线/饰品之字错位/版头重做/韩系字体 (仅soda) ===== */
/* 素纸不再是光秃气泡: 内圈手工缝纫虚线 */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::before{
  outline:1.5px dashed rgba(122,150,110,.38);outline-offset:-8px;}
body[data-theme="soda"]:not([data-theme="grape"]) .stat-card,
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-chip{
  outline:1.5px dashed rgba(122,150,110,.32);outline-offset:-6px;}
/* 饰品之字错位: 单数行左卡左上回形针, 双数行右卡右上木衣夹 */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::after{
  display:block;width:30px;height:29px;top:-10px;left:10px;right:auto;transform:rotate(8deg);
  background-image:url('/static/assets/themes/soda/paper/decor_clip.png')}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+3)::after{display:none}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n)::after{
  display:block;width:15px;height:32px;top:-12px;right:20px;left:auto;transform:rotate(14deg);
  background-image:url('/static/assets/themes/soda/paper/decor_pin.png')}
/* 版头: 韩系温柔款——细字重+宽字距+手绘波浪衬线+格纹小贴条 */
body[data-theme="soda"] .welcome{position:relative}
body[data-theme="soda"] .welcome-sub{
  display:inline-block;letter-spacing:4px;opacity:.5;
  padding:2px 10px;background:rgba(202,225,151,.30);border-radius:2px;
  transform:rotate(-1.2deg);}
body[data-theme="soda"] .welcome-title{
  font-family:'LXGW WenKai','LXGW WenKai TC',serif!important;
  font-weight:400!important;letter-spacing:1px;font-size:2.1rem!important;}
body[data-theme="soda"] .welcome-title::after{
  content:'';display:block;width:150px;height:9px;margin-top:2px;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 150 9'><path d='M2 5 q9 -5 18 0 t18 0 t18 0 t18 0 t18 0 t18 0 t18 0 t18 0' fill='none' stroke='%23a7c689' stroke-width='1.8' stroke-linecap='round'/></svg>") left center/contain no-repeat;}
body[data-theme="soda"] .welcome-tagline{font-family:'LXGW WenKai',serif;opacity:.45;letter-spacing:.5px;}
/* 重点字体全局铺: 标题/天数/模块名 */
body[data-theme="soda"] .days-number,
body[data-theme="soda"] .feature-name,
body[data-theme="soda"] .section-label,
body[data-theme="soda"] h1, body[data-theme="soda"] h2{
  font-family:'LXGW WenKai','LXGW WenKai TC',serif!important;font-weight:400;}

/* ===== 精装v2.2: 真针脚/加粗/蝴蝶结对称下移/素材总动员 (仅soda) ===== */
/* 贴条加深 */
body[data-theme="soda"] .welcome-sub{
  background:rgba(167,198,137,.48);opacity:.8;color:#55663f;}
/* 字体加粗: 版头+模块名 */
body[data-theme="soda"] .welcome-title{font-weight:700!important;}
body[data-theme="soda"] .feature-name{font-weight:700!important;font-size:.88rem!important;}
/* 缝纫线2.0: 虚线outline退役, 换圆头针脚border-image(真走线) */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::before{
  outline:none;border:8px solid transparent;
  border-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'><rect x='4' y='4' width='52' height='52' rx='6' fill='none' stroke='%239aae7f' stroke-width='2' stroke-dasharray='5 5.5' stroke-linecap='round'/></svg>") 10 round;}
body[data-theme="soda"]:not([data-theme="grape"]) .stat-card,
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-chip{
  outline:none!important;border:8px solid transparent!important;
  border-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 60'><rect x='4' y='4' width='52' height='52' rx='6' fill='none' stroke='%239aae7f' stroke-width='2' stroke-dasharray='5 5.5' stroke-linecap='round'/></svg>") 10 round!important;}
/* 蝴蝶结: 顶栏那只退役→一对下移到两张小名牌上, 左右对称, 和中间胶带岔开 */
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-row::after{display:none}
body[data-theme="soda"] .avatar-chip{position:relative;overflow:visible!important}
body[data-theme="soda"] .avatar-chip:first-of-type::after{
  content:'';position:absolute;width:38px;height:31px;left:-9px;top:-13px;
  transform:rotate(-9deg);z-index:2;
  background:url('/static/assets/themes/soda/paper/decor_bow.png') center/contain no-repeat;}
body[data-theme="soda"] .avatar-chip:last-of-type::after{
  content:'';position:absolute;width:38px;height:31px;right:-9px;top:-13px;
  transform:rotate(9deg);z-index:2;
  background:url('/static/assets/themes/soda/paper/decor_bow.png') center/contain no-repeat;}
/* 素材总动员: 四叶草别MEMORIES卡, 星星贴PICKS卡和版头标题尾 */
body[data-theme="soda"] .stat-card{position:relative;overflow:visible!important}
body[data-theme="soda"] .stat-card:first-child::after{
  content:'';position:absolute;width:28px;height:31px;top:-13px;left:8px;
  transform:rotate(-7deg);background:url('/static/assets/themes/soda/paper/decor_clover.png') center/contain no-repeat;}
body[data-theme="soda"] .stat-card:last-child::after{
  content:'';position:absolute;width:24px;height:24px;top:-11px;right:9px;
  transform:rotate(10deg);background:url('/static/assets/themes/soda/paper/star_1.png') center/contain no-repeat;}
body[data-theme="soda"] .welcome-title{position:relative}
body[data-theme="soda"] .welcome-title::before{
  content:'';position:absolute;width:22px;height:22px;right:-26px;top:-4px;
  background:url('/static/assets/themes/soda/paper/star_3.png') center/contain no-repeat;opacity:.9;}

/* 精装v2.3: 针脚border-image翻车回滚→恢复细虚线(等GPT手缝素材到货再升级) */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::before{
  border:none;border-image:none;
  outline:1.5px dashed rgba(122,150,110,.38);outline-offset:-8px;}
body[data-theme="soda"]:not([data-theme="grape"]) .stat-card,
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-chip{
  border:none!important;border-image:none!important;
  outline:1.5px dashed rgba(122,150,110,.32)!important;outline-offset:-6px!important;}

/* 精装v2.4: yy气泡去"叠纸"感——CSS连续格纹+素材只当撕边剪刀(mask九宫格)+真胶带盖角 */
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble{
  border:0!important;border-image:none!important;border-radius:0!important;
  padding:14px 24px 14px 16px!important;
  background:
    repeating-linear-gradient(0deg,rgba(202,225,151,.5) 0 13px,rgba(255,255,255,0) 13px 26px),
    repeating-linear-gradient(90deg,rgba(202,225,151,.5) 0 13px,rgba(255,255,255,0) 13px 26px),
    #fcfef5!important;
  -webkit-mask-box-image:url('/static/assets/themes/soda/paper/bubble_yy.png') 110 175 60 60 round;
  mask-border:url('/static/assets/themes/soda/paper/bubble_yy.png') 110 175 60 60 round;
  filter:none!important;box-shadow:none!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper{
  filter:drop-shadow(0 1px 2px rgba(110,140,100,.15));}
/* 真波点胶带盖回右上角(盖住mask留下的胶带形格纹凸起) */
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble::before{
  display:block!important;content:'';position:absolute;right:-9px;top:-10px;
  width:60px;height:22px;transform:rotate(-33deg);z-index:2;
  background:url('/static/assets/themes/soda/tape/tape_0.png') center/contain no-repeat;}

/* 精装v2.5: yy气泡mask实验翻车回滚→平裁格纹纸条(直边+连续格纹+真胶带, 零玄学) */
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble{
  -webkit-mask-box-image:none!important;mask-border:none!important;
  -webkit-mask:none!important;mask:none!important;
  border:0!important;border-image:none!important;border-radius:3px!important;
  padding:12px 16px!important;
  background:
    repeating-linear-gradient(0deg,rgba(202,225,151,.5) 0 13px,rgba(255,255,255,0) 13px 26px),
    repeating-linear-gradient(90deg,rgba(202,225,151,.5) 0 13px,rgba(255,255,255,0) 13px 26px),
    #fcfef5!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.7),0 1.5px 0 #dfe6cb,
    0 4px 8px rgba(110,140,100,.12)!important;
  filter:none!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper{filter:none;}
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble::before{
  right:-8px;top:-9px;transform:rotate(-18deg);}

/* ===== 精装v3.0: GPT手缝三件套+iPhone新背景上线 (仅soda) ===== */
/* 素纸模块卡 → 手缝方巾(细虚线光荣退休) */
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::before{
  outline:none;background:none;border-radius:0;
  border:26px solid transparent;
  border-image:url('/static/assets/themes/soda/paper/stitch_card.png') 85 fill round;}
/* 统计块/名牌 → 手缝横签(底边自带格纹布边) */
body[data-theme="soda"]:not([data-theme="grape"]) .stat-card,
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-chip{
  outline:none!important;border-radius:0!important;background:none!important;
  border:solid transparent!important;border-width:61px 44px 195px 44px!important;
  border-image:url('/static/assets/themes/soda/paper/stitch_tag.png') 63 44 195 44 fill round!important;
  box-shadow:0 3px 8px rgba(110,140,100,.10)!important;}
/* yy气泡 → 撕边转正: 素材毛边只当画框(不fill), CSS格纹在框内继续无缝铺 */
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble{
  border:14px solid transparent!important;border-radius:0!important;
  border-image:url('/static/assets/themes/soda/paper/torn_gingham.png') 43 round!important;
  background-clip:padding-box!important;
  box-shadow:none!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper{
  filter:drop-shadow(0 1px 2px rgba(110,140,100,.14));}
/* v3.0背景规则已移除(0720夜): 格纹CSS底回归, bg_iphone转岗开屏 */

/* v3.0.1 热修: 边框宽度误用刀位数(195px底边=挂毯惨案)→改回人类尺寸 */
body[data-theme="soda"]:not([data-theme="grape"]) .stat-card,
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-chip{
  border-width:10px 8px 20px 8px!important;}

/* v3.0.2: 小件缝线压缩糊→统计块/名牌退回素纸+细虚线(大卡保留真针脚) */
body[data-theme="soda"]:not([data-theme="grape"]) .stat-card,
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-chip{
  border:none!important;border-image:none!important;
  background:
    url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 .45 0 0 0 0 .48 0 0 0 0 .38 0 0 0 .05 0'/></filter><rect width='120' height='120' filter='url(%23n)'/></svg>"),
    #fffdf6!important;
  outline:1.5px dashed rgba(122,150,110,.32)!important;outline-offset:-6px!important;
  box-shadow:0 1.5px 0 #eef0dd,0 3px 0 -1px #fdfef7,0 4.5px 0 -1px #e7ead6,
    0 5px 10px rgba(110,140,100,.09)!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .stat-card{border-radius:7px!important}
body[data-theme="soda"]:not([data-theme="grape"]) .avatar-chip{border-radius:9px!important}

/* ===== 精装v3.1: 飘逸字体+波浪线加长+尺寸线幽灵歼灭 (仅soda) ===== */
body[data-theme="soda"] .welcome-title{
  font-family:'Dancing Script','Ma Shan Zheng','LXGW WenKai',cursive!important;
  font-weight:700!important;font-size:2.6rem!important;letter-spacing:0!important;}
body[data-theme="soda"] .welcome-title::after{width:245px;}
body[data-theme="soda"] .welcome-tagline,
body[data-theme="soda"] .days-number,
body[data-theme="soda"] .feature-name,
body[data-theme="soda"] h1, body[data-theme="soda"] h2{
  font-family:'Dancing Script','Ma Shan Zheng','LXGW WenKai',cursive!important;}
/* 尺寸线=fill中心拉伸区与边带的交界色差线→素材只当画框不填心, 卡自己刷底 */
body[data-theme="soda"]:not([data-theme="grape"]) .days-card,
body[data-theme="soda"]:not([data-theme="grape"]) .write-card,
body[data-theme="soda"]:not([data-theme="grape"]) .dream-card,
body[data-theme="soda"]:not([data-theme="grape"]) .pick-section:first-of-type,
body[data-theme="soda"]:not([data-theme="grape"]) .container > .card:first-child,
body[data-theme="soda"]:not([data-theme="grape"]) .container > .section:first-of-type > .card{
  border-image:url('/static/assets/themes/soda/paper/lace_frame.png') 150 round!important;
  background:#fcfbf1!important;background-clip:padding-box!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta{
  border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 round!important;
  background:#f6f4e6!important;background-clip:padding-box!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+3)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n)::before{
  border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 round;
  background:#f6f4e6;background-clip:padding-box;}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::before{
  border-image:url('/static/assets/themes/soda/paper/stitch_card.png') 85 round;
  background:#fdfcf2;background-clip:padding-box;}

/* ===== 精装v3.2: 接缝隐形术(fill+同色垫底)/标题小写对齐/中文换简笔手写/绳穿孔/四叶草退场 ===== */
/* 九宫格全员: 恢复fill(中心边带同源同纹), 同色底垫住亚像素接缝 */
body[data-theme="soda"]:not([data-theme="grape"]) .days-card,
body[data-theme="soda"]:not([data-theme="grape"]) .write-card,
body[data-theme="soda"]:not([data-theme="grape"]) .dream-card,
body[data-theme="soda"]:not([data-theme="grape"]) .pick-section:first-of-type,
body[data-theme="soda"]:not([data-theme="grape"]) .container > .card:first-child,
body[data-theme="soda"]:not([data-theme="grape"]) .container > .section:first-of-type > .card{
  border-image:url('/static/assets/themes/soda/paper/lace_frame.png') 150 fill round!important;
  background:#fbf9ee!important;background-clip:border-box!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta{
  border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 fill round!important;
  background:#f4f2e3!important;background-clip:border-box!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+3)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n)::before{
  border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 fill round;
  background:#f4f2e3;background-clip:border-box;}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::before{
  border-image:url('/static/assets/themes/soda/paper/stitch_card.png') 85 fill round;
  background:#fbfaf0;background-clip:border-box;}
/* 标题小写: yy和ips顶线齐平 */
body[data-theme="soda"] .welcome-title{text-transform:lowercase;}
/* 中文换简笔手写(龙藏): 马善政太正式 */
body[data-theme="soda"] .welcome-tagline,
body[data-theme="soda"] .days-number,
body[data-theme="soda"] .feature-name,
body[data-theme="soda"] .welcome-title,
body[data-theme="soda"] h1, body[data-theme="soda"] h2{
  font-family:'Dancing Script','Long Cang','LXGW WenKai',cursive!important;}
/* 四叶草退场 */
body[data-theme="soda"] .stat-card:first-child::after{display:none!important;}
/* 吊牌绳穿孔: 绳分两段, 孔环压在绳上=穿过去了 */
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta::after{
  width:74px;height:74px;left:-12px;top:-14px;z-index:1;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 74 74'><path d='M4 6 C 22 0, 38 10, 32 28' fill='none' stroke='%238fa06f' stroke-width='3.4' stroke-linecap='round'/><path d='M34 38 C 40 50, 34 60, 24 64' fill='none' stroke='%238fa06f' stroke-width='3.2' stroke-linecap='round' opacity='.85'/></svg>") center/contain no-repeat;}
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta::before{z-index:2;}

/* ===== 精装v3.3: C大写其余小写/斜体心/撕边卡色块歼灭/吊绳极简化 ===== */
/* Chips ♡ yy: 整体小写+首字母大写, 心形斜体小一号微旋 */
body[data-theme="soda"] .welcome-title{text-transform:lowercase;}
body[data-theme="soda"] .welcome-title::first-letter{text-transform:uppercase;}
.t-heart{font-style:italic;}
body[data-theme="soda"] .welcome-title .t-heart{
  color:#a7c689;font-size:.72em;display:inline-block;
  transform:rotate(-8deg);vertical-align:.06em;}
/* 撕边卡色块=背景涂到了撕边轮廓外的矩形区→撕边组背景改透明(fill中心自带纸) */
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta{
  background:transparent!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+3)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n)::before{
  background:none;}
/* 吊绳极简: 一根短绳从孔里垂下来, 完 */
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta::after{
  width:60px;height:64px;left:-6px;top:-2px;z-index:1;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 60 64'><path d='M27 22 C 22 38, 12 46, 6 44' fill='none' stroke='%238fa06f' stroke-width='3.2' stroke-linecap='round'/></svg>") center/contain no-repeat;}

/* ===== 精装v3.4: 绳子回退原版双线麻绳 / 缝纫卡clip-path圆角 / 头像img ===== */
.avatar-circle img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta::after{
  left:-9px;top:-17px;width:32px;height:32px;z-index:2;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><path d='M27 27 C 12 24, 7 15, 13 3' fill='none' stroke='%23a3b183' stroke-width='2.2' stroke-linecap='round'/><path d='M27 27 C 14 25, 9 17, 14 5' fill='none' stroke='%23c9d6a8' stroke-width='1' stroke-linecap='round' stroke-dasharray='3 3'/></svg>") center/contain no-repeat;}
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+1)::before,
body[data-theme="soda"]:not([data-theme="grape"]) .feature-card:nth-child(4n+2)::before{
  clip-path:inset(0 round 14px);}


/* ===== 0722 yy九条微调 (soda/craft) ===== */
/* 1a 头像img保证正圆 */
.avatar-circle img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}
/* 1b 蝴蝶结避让头像: chips逆时针加转, yy顺时针对称 */
body[data-theme="soda"] .avatar-chip:first-of-type::after{transform:rotate(-26deg)!important;left:-11px!important;top:-15px!important;}
body[data-theme="soda"] .avatar-chip:last-of-type::after{transform:rotate(26deg)!important;right:-11px!important;top:-15px!important;}
/* 2 抽屉钮/抽屉体奶油白 */
body[data-theme="soda"] .drawer-btn,body[data-theme="craft"] .drawer-btn{background:#fcfef5!important;}
body[data-theme="soda"] .drawer,body[data-theme="craft"] .drawer{background:#fcfef5!important;}
/* 8 胶带对称同尺寸: yy贴紧右上角略缩; chips左上角盖一条同款(盖在素材烧印上放大) */
body[data-theme="soda"] .message-bubble{position:relative;}
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble::before{
  right:-4px!important;top:-7px!important;width:54px!important;height:20px!important;transform:rotate(-33deg)!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .assistant-wrapper .message-bubble::before{
  display:block!important;content:'';position:absolute;left:-4px;top:-8px;
  width:54px;height:20px;transform:rotate(33deg);z-index:2;
  background:url('/static/assets/themes/soda/tape/tape_0.png') center/contain no-repeat;}
/* 9 yy格纹上加一层奶油纱, 衬字不花 */
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble{
  background:
    linear-gradient(rgba(252,254,245,.52),rgba(252,254,245,.52)),
    repeating-linear-gradient(0deg,rgba(202,225,151,.5) 0 13px,rgba(255,255,255,0) 13px 26px),
    repeating-linear-gradient(90deg,rgba(202,225,151,.5) 0 13px,rgba(255,255,255,0) 13px 26px),
    #fcfef5!important;}


/* 0722二轮#11 胶带纠错: chips侧我贴错的那条撤下(他的素材自带胶带), yy侧恢复60x22贴右上近头像 */
body[data-theme="soda"]:not([data-theme="grape"]) .assistant-wrapper .message-bubble::before{display:none!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble::before{
  right:-6px!important;top:-9px!important;width:60px!important;height:22px!important;transform:rotate(-30deg)!important;}


/* 0722#13b 色块叠加修复: soda下tl-item白卡退位, 只留tl-content奶油信纸一层; 作者色条移到信纸上 */
body[data-theme="soda"]:not([data-theme="grape"]) .tl-item{
  background:transparent!important;border:none!important;box-shadow:none!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;padding:0.15rem 0 0.15rem 0.2rem!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .tl-item.chips-item .tl-content{border-left:2.5px solid var(--accent-color)!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .tl-item.yy-item .tl-content{border-left:2.5px solid #b8bfae!important;}


/* 0722单件#1: 波浪线加长到290px(16个波峰), 超过yy尾巴 */
body[data-theme="soda"] .welcome-title::after{
  width:222px!important;max-width:88vw!important;height:9px;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 222 9'><path d='M2 5 q9 -5 18 0 t18 0 t18 0 t18 0 t18 0 t18 0 t18 0 t18 0 t18 0 t18 0 t18 0 t18 0' fill='none' stroke='%23a7c689' stroke-width='1.8' stroke-linecap='round'/></svg>") left center/contain no-repeat!important;}


/* 0722 真胶带: 从她ChatGPT素材抠出的波点胶带, 贴气泡右上角(靠她头像), CSS手画版退役 */
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble::before{
  content:''!important;display:block!important;position:absolute!important;
  right:-12px!important;top:-13px!important;left:auto!important;bottom:auto!important;
  width:58px!important;height:38px!important;
  background:url('/static/assets/themes/soda/paper/tape_yy.webp') center/contain no-repeat!important;
  transform:none!important;border:none!important;border-radius:0!important;box-shadow:none!important;
  opacity:1!important;filter:none!important;z-index:3!important;}

/* 0722凌晨·胶带手术: tape_yy.webp抠图残渣(格纹残块两处:胶带下+头像下)确诊, 从10-yy气泡.png重抠=tape_yy2.webp(连通域+填洞+羽化,零残渣); 尺寸对齐chips烧印胶带(~18x19框)→28x17 */
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble::before{
  right:-8px!important;top:-8px!important;
  width:28px!important;height:17px!important;
  background:url('/static/assets/themes/soda/paper/tape_yy2.webp') center/contain no-repeat!important;}

/* 0722凌晨·主页三单: ①yy名牌镜像padding已在index.html修 ②标题旁star_3退场 ③chat卡挂绳加长=穿孔翻过左上角垂到卡外(仅soda,craft封存不动) */
body[data-theme="soda"] .welcome-title::before{display:none!important;content:none!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta::after{
  left:-24px!important;top:-22px!important;width:56px!important;height:88px!important;z-index:2;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 56 88'><path d='M41.5 36.5 C 37 30, 33 25.5, 28 21 C 22 15.5, 13 13, 10 20 C 7.5 26, 9 36, 9 46 C 9 54, 8 60, 7 64' fill='none' stroke='%23a3b183' stroke-width='2.4' stroke-linecap='round'/><path d='M42.5 35 C 38 28.7, 34.3 24.3, 29.3 19.8 C 23.5 14.5, 15 12.2, 12 19 C 9.7 24.5, 11 35, 11 45' fill='none' stroke='%23c9d6a8' stroke-width='1' stroke-linecap='round' stroke-dasharray='3 3'/></svg>") center/contain no-repeat!important;}

/* 0722凌晨·六单批: ②气泡格纹回padding-box(0722#9的background简写把clip重置回border-box=格纹从毛边透出,单独补clip) ⑥tl-content信纸内边距(soda下tl-item退位后信纸自己没padding) ⑤统计行soda素纸+手缝虚线皮肤 */
body[data-theme="soda"]:not([data-theme="grape"]) .user-wrapper .message-bubble{background-clip:padding-box!important;}
body[data-theme="soda"] .tl-content{padding:0.72rem 0.85rem!important;}
body[data-theme="soda"] .stat-row{
  background:#fdfef9!important;border-radius:9px!important;
  outline:1.5px dashed rgba(122,150,110,.35);outline-offset:-6px;
  box-shadow:0 1.5px 0 #eef0dd,0 3px 0 -1px #fdfef7,0 4.5px 0 -1px #e7ead6,0 5px 10px rgba(110,140,100,.09)!important;}

/* 0722凌晨·绳子v2: yy手绘走向=从孔出发拱过卡片可视顶边(拱顶悬空),从可视左边缘外侧垂下长尾. 关键修正:chat-cta有26px撕边border,伪元素定位基准是padding盒,上一版没算这26px导致整条绳画在了纸面上 */
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta::after{
  left:-44px!important;top:-46px!important;width:76px!important;height:100px!important;z-index:2;
  background:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 76 100'><path d='M61.5 60.5 C 55 46, 44 28, 32 20 C 20 12, 10 18, 10 32 C 10 46, 12 60, 12 74 C 12 83, 11 89, 10 94' fill='none' stroke='%23a3b183' stroke-width='2.4' stroke-linecap='round'/><path d='M63 59 C 57 45, 46 26.5, 33.5 18.5 C 21 10.5, 12 16.5, 12 31 C 12 45, 14 60, 14 74' fill='none' stroke='%23c9d6a8' stroke-width='1' stroke-linecap='round' stroke-dasharray='3 3'/></svg>") center/contain no-repeat!important;}

/* 0722凌晨·蟑螂须退场: chat卡打孔+挂绳全删(仅soda,craft封存版保留原样) */
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta::before{display:none!important;content:none!important;}
body[data-theme="soda"]:not([data-theme="grape"]) .chat-cta::after{display:none!important;content:none!important;}

/* 0722凌晨·统计页换纸: 行卡=手撕纸(chat卡同款torn_card配方,fill+同色底+border-clip铁律), 战报卡=手缝方巾(stitch_card+clip-path圆角), 虚线outline退场 */
body[data-theme="soda"]:not([data-theme="grape"]) .stat-row{
  background:#f4f2e3!important;background-clip:border-box!important;
  outline:none!important;border:20px solid transparent!important;border-radius:0!important;
  border-image:url('/static/assets/themes/soda/paper/torn_card.png') 90 fill round!important;
  box-shadow:none!important;padding:0.15rem 0.25rem!important;margin-bottom:0.4rem!important;
  filter:drop-shadow(0 1px 2px rgba(110,140,100,.18)) drop-shadow(0 5px 10px rgba(110,140,100,.09));}
body[data-theme="soda"]:not([data-theme="grape"]) .stat-week{
  background:#fdfcf2!important;background-clip:border-box!important;
  border:24px solid transparent!important;border-radius:0!important;
  border-image:url('/static/assets/themes/soda/paper/stitch_card.png') 85 fill round!important;
  clip-path:inset(0 round 14px);
  box-shadow:none!important;padding:0.1rem 0.2rem!important;margin-bottom:0.5rem!important;
  filter:drop-shadow(0 1px 2px rgba(110,140,100,.16));}

/* ===== 深夜汽水屋 soda-night v2 (0728 二轮:换奶白字/撤格纹换深苔渐变/月光细描边) ===== */
body[data-theme="soda-night"]{
  --bg:#20261f; --card:#2a322a; --frost:0px;
  --ink:#e2eadb; --sub:#93a58c; --accent:#a7c689; --accent-soft:#33402c;
  --bubble-me:#31402e; --bubble-ta:#2a322a;
  --radius:12px; --border:1px solid rgba(167,198,137,.20);
  --shadow:0 2px 12px rgba(0,0,0,.42),0 1px 2px rgba(0,0,0,.30);
  --bg-img:linear-gradient(165deg,#1b211a 0%,#222a21 45%,#252d22 100%);
  /* 聊天页死漆的夜季覆盖:她的字奶白/白描边换月光青线/阴影加深 */
  --user-text-color:#e8efe2;
  --bubble-border:1px solid rgba(167,198,137,.16);
  --bubble-shadow:0 2px 10px rgba(0,0,0,.32);
  --header-border:1.5px solid rgba(167,198,137,.14);
  --header-shadow:0 2px 8px rgba(0,0,0,.35);
  --keepalive-color:rgba(167,198,137,.55);
}
