/* ============================================================================
   AuguseShop 前台样式 —— 视觉语言对齐 preview/index.html 原型
   （石墨黑极简工业风，Inter 字体，移动端优先，阿语 RTL 自适应）
   后台页面所用旧类名（.topbar/.form/.card旧/.tier-row/table.admin/.kpi 等）
   一并保留在文件末尾，避免后台掉样式。
   ============================================================================ */

:root{
  /* ── 品牌主色（可局部覆盖） ── */
  --primary-color:#7c3aed;
  --primary-dark:#6d28d9;
  --primary-50:#f5f0ff;
  --primary-100:#ede4ff;
  --primary-200:#ddd0ff;
  --brand-purple:#7c3aed;
  --brand-gold:#d4af37;
  --brand-gold-2:#c9a227;
  --brand-gold-3:#e0c040;
  --brand-sky:#0ea5e9;
  --brand-blue:#E60012;
  --brand-blue-dark:#B80000;
  --brand-indigo:#3730a3;
  --brand-amber:#f59e0b;
  --brand-amber-2:#fbbf24;
  --brand-brown:#7c2d12;

  /* ── 文本色阶（深 → 浅） ── */
  --text-main:#171717;
  --text-strong:#0f0f0f;
  --text-900:#111111;
  --text-850:#1a1a1a;
  --text-800:#1f1f1f;
  --text-750:#212121;
  --text-700:#262626;
  --text-600:#333333;
  --text-550:#374151;
  --text-500:#404040;
  --text-450:#4b4b4b;
  --text-400:#525252;
  --text-350:#737373;
  --text-300:#6b7280;
  --text-250:#94a3b8;
  --text-200:#9ca3af;
  --text-150:#a3a3a3;

  /* ── 背景色阶 ── */
  --bg-color:#ffffff;
  --bg-2:#fafafa;
  --bg-3:#f5f5f5;
  --bg-soft:#f6f7f9;
  --bg-soft-2:#f9fafb;
  --bg-soft-3:#fafbfc;
  --bg-soft-4:#f1f2f4;
  --bg-soft-5:#eef0f3;
  --bg-soft-6:#f3f4f6;

  /* ── 边框 / 分割线 ── */
  --line:#e5e5e5;
  --line-2:#d4d4d4;
  --border-light:#e5e7eb;
  --border-mid:#d1d5db;
  --border-soft:#cccccc;

  /* ── 状态色：危险 / 成功 / 警告 ── */
  --danger:#093026;
  --danger-2:#E60012;
  --danger-3:#b91c1c;
  --danger-4:#991b1b;
  --danger-5:#b42318;
  --ok:#15803d;
  --ok-2:#16a34a;
  --ok-3:#0a875a;
  --warn:#b45309;
  --warn-2:#f59e0b;
  --warn-3:#fbbf24;

  /* ── 状态浅底色 ── */
  --danger-bg:#fecaca;
  --danger-bg-2:#fca5a5;
  --danger-bg-3:#fee2e2;
  --danger-bg-4:#fef2f2;
  --danger-bg-5:#fff1f0;
  --danger-bg-6:#fff4f4;
  --danger-bg-7:#f3c2c2;
  --ok-bg:#f0fdf4;
  --ok-bg-2:#bbf7d0;
  --ok-bg-3:#fbe8e6;
  --warn-bg:#fff7ed;
  --warn-bg-2:#fffbeb;
  --warn-bg-3:#fed7aa;
  --warn-bg-4:#fde68a;
  --info-bg:#fff0ef;
  --info-bg-2:#fadbd9;
  --info-bg-3:#eef2ff;
  --info-bg-4:#fbe8e6;
  --brand-bg:#f5f3ff;
  --brand-bg-2:#ddd6fe;

  /* ── 黑白原色 ── */
  --white:#ffffff;
  --black:#000000;

  /* ── 圆角 ── */
  --r:6px;

  /* ── 旧令牌兼容别名（勿删，确保既有样式继续生效） ── */
  --ink:#171717;
  --ink-2:#404040;
  --muted:#737373;
  --faint:#a3a3a3;
  --bg:#ffffff;
  --accent:#171717;

  /* ── 补充别名（修复既有样式中引用但未定义的色板名） ── */
  --primary:#7c3aed;   /* 等同 --primary-color，模块编辑器等多处引用 */
  --brand:#7c3aed;     /* 等同 --brand-purple */
  --brand-accent:#ff6b2b;   /* 店铺装修-辅助色，点缀/强调语义（eyebrow、outline hover、分类标签、gift 角标） */
  --bg-1:#fafafa;      /* 浅底，等同 --bg-2 */
  --soft:#f3f4f6;      /* 占位浅底，等同 --bg-soft-6 */
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:Inter,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--text-main, #171717);background:var(--bg-color, #ffffff);line-height:1.55;font-size:14px;
}
[dir="rtl"] body{font-family:"Segoe UI","Noto Naskh Arabic",Inter,sans-serif}
a{color:var(--link-color, inherit);text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
img{max-width:100%;display:block}
.tnum{font-variant-numeric:tabular-nums}
.wrap{max-width:1240px;margin:0 auto;padding:0 24px}
.hide{display:none !important}

/* 区块容器：统一兜底横向溢出。任何区块（缩放/全宽/超宽内容）都不会撑出
   页面级横向滚动条；用 clip 而非 hidden，避免把编辑器区块工具条等
   绝对定位元素在纵向上误裁。 */
.cs-page-blocks{overflow-x:clip}

/* ---------- top utility bar ---------- */
.utility{background:var(--primary-color);color:var(--white);font-size:12px}
.utility .wrap{display:flex;align-items:center;justify-content:space-between;height:38px;gap:16px}
.utility-note{color:var(--faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.util-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.sel{
  background:transparent;border:1px solid var(--ink-2);color:var(--white);border-radius:4px;
  padding:3px 6px;font-size:12px;cursor:pointer
}
.sel option{background:var(--text-main)}

/* ---------- mode switch (retail / wholesale) ---------- */
.modesw{display:inline-flex;background:var(--text-700);border-radius:5px;padding:2px}
.modesw button,.modesw a,.modesw span{
  padding:3px 10px;border-radius:4px;font-size:11.5px;color:var(--faint);
  letter-spacing:.02em;transition:.15s;display:inline-block
}
.modesw button.on,.modesw a.on,.modesw span.on{background:var(--white);color:var(--text-main);font-weight:600}

/* ---------- header ---------- */
.site-header-bar{font-size:13px;padding:9px 0;text-align:center}
.site-header-bar a{color:inherit}
.site-custom-nav{display:flex;gap:24px;padding:14px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.site-custom-nav a{color:var(--ink-2)}
.site-custom-nav a:hover{color:var(--primary-color)}
header.site{border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(255,255,255,.92);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:40}
header.site .wrap{display:flex;align-items:center;gap:32px;height:64px}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:17px;letter-spacing:-.02em}
.brand .mark{width:22px;height:22px;background:var(--primary-color);border-radius:4px;display:grid;place-items:center}
.brand .mark svg{width:13px;height:13px}
nav.main{display:flex;gap:26px;font-size:13.5px;color:var(--ink-2)}
nav.main a{padding:4px 0;border-bottom:2px solid transparent}
nav.main a.on,nav.main a:hover{color:var(--primary-color);border-color:var(--primary-color)}
.header-actions{margin-inline-start:auto;display:flex;align-items:center;gap:14px}
.icon-btn{width:38px;height:38px;display:grid;place-items:center;border-radius:var(--r);position:relative;transition:background .15s}
.icon-btn svg{width:30px;height:30px;stroke:var(--primary-color);fill:none;stroke-width:1.5;transition:stroke .2s,transform .2s}
.icon-btn:hover{background:var(--bg-3)}
.icon-btn-cart:hover svg{stroke:var(--primary-color)}
.icon-btn-wish:hover svg{stroke:var(--danger-2)}
.icon-btn-user:hover svg{stroke:var(--primary-color)}
.icon-btn .dot{position:absolute;top:4px;inset-inline-end:4px;width:15px;height:15px;background:var(--primary-color);color:var(--white);border-radius:8px;font-size:9.5px;display:grid;place-items:center;font-weight:600}
.wsbadge{font-size:11px;border:1px solid var(--primary-color);border-radius:100px;padding:2px 9px;font-weight:600;letter-spacing:.03em}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;
  padding:10px 18px;border-radius:var(--r);font-size:13.5px;font-weight:500;transition:.15s;white-space:nowrap;
  background:var(--primary-color);color:var(--white);border:1px solid var(--primary-color)}
.btn:hover{background:var(--primary-dark);border-color:var(--primary-dark)}
.btn-primary{background:var(--primary-color);color:var(--white);border-color:var(--primary-color)}
.btn-primary:hover{background:var(--primary-dark)}
.btn-outline{border:1px solid var(--line-2);color:var(--ink);background:var(--white)}
.btn-outline:hover{border-color:var(--brand-accent);color:var(--brand-accent);background:var(--bg-2)}
.btn-light{background:var(--white);color:var(--ink);border-color:var(--white)}
.btn-light:hover{background:var(--line)}
.btn-ghostdark{border:1px solid var(--text-400);color:var(--white);background:transparent}
.btn-ghostdark:hover{background:var(--text-700)}
.btn-sm{padding:6px 12px;font-size:12.5px}
.btn svg{width:15px;height:15px}
.btn.ghost{background:var(--white);color:var(--ink);border:1px solid var(--line-2)}
.btn.ghost:hover{border-color:var(--primary-color);background:var(--bg-2)}

/* ---------- hero ---------- */
.hero{position:relative;background:var(--primary-color);color:var(--white);overflow:hidden}
/* bigcta 默认深色背景（防止未设 bg_color 时透出 body 白底） */
.bigcta{background:var(--text-900);color:var(--white);position:relative}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;gap:48px;align-items:center;min-height:460px;padding-block:56px}
.hero-eyebrow{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--brand-accent)}
.hero h1{font-size:47px;line-height:1.06;letter-spacing:-.03em;font-weight:600;margin-top:16px}
.hero p.lead{color:var(--line-2);margin-top:18px;max-width:460px;font-size:15px}
.hero-cta{display:flex;gap:12px;margin-top:30px;flex-wrap:wrap}
.hero-stats{display:flex;gap:36px;margin-top:44px;padding-top:26px;border-top:1px solid var(--text-600)}
.hero-stats div span{display:block}
.hero-stats .n{font-size:23px;font-weight:600;letter-spacing:-.02em}
.hero-stats .l{font-size:11.5px;color:var(--faint);margin-top:2px}
.hero-visual{aspect-ratio:4/3;background:var(--text-750);border:1px solid var(--text-600);border-radius:8px;display:grid;place-items:center;position:relative;overflow:hidden}
.hero-visual svg{width:62%;height:62%;opacity:.9}
/* hero-visual 用户上传图片模式：去掉深色背景色，让 background-image 显示 */
.hero-visual-photo-mode{background-color:transparent !important;border-color:transparent}
.hero-dots{position:absolute;bottom:22px;inset-inline-start:24px;display:flex;gap:6px}
.hero-dots i{width:22px;height:2.5px;background:var(--text-400);border-radius:2px;cursor:pointer;transition:.2s}
.hero-dots i.on{background:var(--white);width:34px}

/* ---------- trust strip ---------- */
.trust{border-bottom:1px solid var(--line);background:var(--line)}
.trust-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px}
.trust-cell{background:var(--white);padding:22px 24px;display:flex;gap:12px;align-items:center}
.trust-cell svg{width:19px;height:19px;flex-shrink:0;stroke:var(--primary-color);fill:none;stroke-width:1.8}
.trust-cell b{display:block;font-size:13px;font-weight:500}
.trust-cell span{font-size:11.5px;color:var(--muted)}

/* ---------- countdown ---------- */
.promo{background:var(--bg-3);border-bottom:1px solid var(--line)}
.promo .wrap{display:flex;align-items:center;justify-content:center;gap:18px;height:52px;font-size:13px;flex-wrap:wrap}
.promo b{font-weight:600}
.cd{display:flex;gap:5px}
.cd span{background:var(--primary-color);color:var(--white);border-radius:4px;padding:3px 7px;font-size:12.5px;font-weight:600;min-width:29px;text-align:center}

/* ---------- sections ---------- */
section.blk{padding:60px 0;position:relative}
/* 相邻区块微量重叠，防止不同背景色之间出现 body 白底缝隙（覆盖所有 section 类型） */
section + section{margin-top:-1px}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:28px;gap:16px}
.sec-head h2{font-size:24px;font-weight:600;letter-spacing:-.022em}
.sec-head a{font-size:13px;color:var(--muted);display:inline-flex;gap:5px;align-items:center}
.sec-head a:hover{color:var(--primary-color)}

/* ---------- 商品列表工具栏（选项卡 + 排序） ---------- */
.product-cat-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.product-cat-tab{font-size:13px;font-weight:500;color:var(--muted);padding:8px 14px;border:1px solid var(--line);border-radius:999px;background:var(--white);transition:.15s}
.product-cat-tab:hover{color:var(--brand-accent);border-color:var(--line-2)}
.product-cat-tab.active{color:var(--white);background:var(--brand,var(--primary-color));border-color:var(--brand,var(--primary-color));font-weight:600;box-shadow:0 2px 8px rgba(124,58,237,.25)}
.product-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px;padding-bottom:16px;border-bottom:1px solid var(--line)}
.product-results{font-size:13px;color:var(--muted)}
.product-sort select{height:38px;padding:0 28px 0 12px;border:1px solid var(--line);border-radius:var(--r);background:var(--white);font-size:13px;color:var(--ink);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23737373' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;cursor:pointer}
.product-sort select:focus{outline:none;border-color:var(--ink-2)}
.product-empty{padding:40px 0;text-align:center;color:var(--muted);font-size:14px}

/* ---------- 产品列表：分类导航布局 ---------- */
.product-layout{display:block}
.product-layout.layout-left,.product-layout.layout-right{display:grid;grid-template-columns:220px 1fr;gap:28px;align-items:start}
.product-layout.layout-right{grid-template-columns:1fr 220px}
.layout-right .product-sidebar{order:2}
.layout-right .product-split{order:1}
.product-sidebar{position:sticky;top:90px;background:var(--white);border:1px solid var(--line);border-radius:12px;padding:18px}
.product-sidebar h4{font-size:14px;font-weight:600;margin-bottom:12px}
.product-cat-list{display:flex;flex-direction:column;gap:4px}
.product-cat-row{font-size:13px;color:var(--ink-2);padding:8px 10px;border-radius:8px;transition:.15s}
.product-cat-row:hover{background:var(--bg-2);color:var(--primary-color)}
.product-cat-row.active{background:var(--brand,var(--primary-color));color:var(--white);font-weight:600}
.product-cat-collapse{margin-bottom:18px}
.product-cat-toggle{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border:1px solid var(--line);border-radius:999px;background:var(--white);font-size:13px;font-weight:600;color:var(--ink);cursor:pointer}
.product-cat-toggle svg{transition:transform .2s}
.product-cat-toggle.open svg{transform:rotate(180deg)}
.product-cat-panel{display:none;flex-wrap:wrap;gap:8px;margin-top:10px;padding:12px;background:var(--bg-2);border-radius:12px}
.product-cat-panel.open{display:flex}

/* ---------- 选项卡区块（模块库 tabs） ---------- */
.ve-tabs{display:flex;flex-direction:column;gap:18px}
.ve-tab-list{display:flex;flex-wrap:wrap;gap:8px;border-bottom:1px solid var(--line);padding-bottom:12px}
.ve-tab-btn{font-size:13px;font-weight:500;color:var(--muted);padding:8px 16px;border:1px solid var(--line);border-radius:999px;background:var(--white);cursor:pointer;transition:.15s}
.ve-tab-btn:hover{color:var(--primary-color);border-color:var(--line-2)}
.ve-tab-btn.active{color:var(--white);background:var(--primary-color);border-color:var(--primary-color)}
.ve-tab-panel{display:none}
.ve-tab-panel.active{display:block;animation:veTabFade .25s ease}
@keyframes veTabFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}

/* ---------- 区块通用样式变量（由后台模块样式设置注入） ---------- */
.hero, .trust, .promo, section.blk, .wsband, .origin-section,
.statband, .bigcta, .marquee-block, .site-header-bar, .site-custom-nav,
.price-table-section, .video-section, .container-block, .grid-section{
  --b-title-color:inherit;
  --b-title-size:inherit;
  --b-body-color:inherit;
  --b-body-size:inherit;
  --b-link-color:inherit;
  --b-font-family:inherit;
  font-family:var(--b-font-family, inherit);
}
.hero h1, .hero h2,
section.blk h1, section.blk h2, section.blk h3,
.wsband h2,
.origin-section h2,
.statband h2,
.bigcta h2,
.spotlight-section h2,
.sg-section h3,
.fg-section h3,
.tl-section h3,
.price-table-section h2, .video-section h2, .container-block h2, .grid-section h3{
  color:var(--b-title-color, inherit);
}
.hero .lead, .hero p,
section.blk p, section.blk .lead, section.blk .sec-sub,
.wsband p,
.origin-section .lead,
.statband .sb-cell .l,
.bigcta p,
.trust-cell span,
.promo,
.rt-section .prose,
.site-custom-nav a,
.price-table-section p, .video-section p, .container-block .prose, .grid-section p{
  color:var(--b-body-color, inherit);
}
section.blk a:not(.btn), .hero a:not(.btn), .wsband a:not(.btn),
.origin-section a:not(.btn), .spotlight-section a:not(.btn),
.sg-section a:not(.btn), .fg-section a:not(.btn),
.tl-section a:not(.btn), .site-custom-nav a,
.price-table-section a:not(.btn), .video-section a:not(.btn), .container-block a:not(.btn), .grid-section a:not(.btn){
  color:var(--b-link-color, inherit);
}

/* ---------- product grid / carousel ---------- */
.pgrid{display:grid;grid-template-columns:repeat(var(--per-row,3),1fr);gap:16px}
.pcarousel{position:relative;display:flex;align-items:center;gap:10px}
.pcarousel-track{display:flex;gap:16px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;padding-bottom:8px;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.pcarousel-track::-webkit-scrollbar{display:none}
.pcarousel-track .pcard{flex:0 0 calc((100% - (var(--per-view,4) - 1) * 16px) / var(--per-view,4));min-width:220px;scroll-snap-align:start}
.pcarousel-prev,.pcarousel-next{flex-shrink:0;width:38px;height:38px;border-radius:50%;border:1px solid var(--line-2);background:var(--white);color:var(--ink);display:grid;place-items:center;cursor:pointer;transition:.15s;box-shadow:0 2px 6px rgba(0,0,0,.08)}
.pcarousel-prev:hover,.pcarousel-next:hover{background:var(--primary-color);border-color:var(--primary-color);color:var(--white)}
.pcarousel-prev svg,.pcarousel-next svg{width:18px;height:18px}
@media (max-width:768px){
  .pcarousel-track .pcard{flex:0 0 calc((100% - 16px) / 2)}
  .pcarousel-prev,.pcarousel-next{display:none}
}
.pcard{position:relative;display:flex;flex-direction:column;background:var(--white);border-radius:12px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06);transition:box-shadow .2s,transform .2s;z-index:1}
.pcard:hover{z-index:10;box-shadow:0 8px 24px rgba(0,0,0,.1);transform:translateY(-2px)}
.pcard-link{position:absolute;inset:0;z-index:1}
.pcard-visual{position:relative;aspect-ratio:1/1;background:var(--bg-3);overflow:hidden}
.pcard-media,.pcard-slider{position:absolute;inset:0;display:grid;place-items:center}
.pcard-media img,.pcard-slide img{width:100%;height:100%;object-fit:cover}
.pcard-art svg{width:58%;height:58%}
.pcard-slider{display:flex;flex-direction:row;align-items:stretch;pointer-events:none}
.pcard-slide{position:absolute;inset:0;opacity:0;transition:opacity .35s;z-index:0}
.pcard-slide.active{opacity:1;z-index:1}
.pcard-dots{position:absolute;bottom:10px;left:0;right:0;display:flex;justify-content:center;gap:5px;z-index:2;padding:0 10px;pointer-events:none}
.pcard-dot{width:7px;height:7px;border-radius:50%;background:rgba(0,0,0,.25);cursor:pointer;transition:.2s;pointer-events:auto}
.pcard-dot.active{background:var(--white);box-shadow:0 0 0 1px rgba(0,0,0,.15)}
.pcard-arrow{position:absolute;top:50%;transform:translateY(-50%) scale(1);z-index:3;width:30px;height:30px;border-radius:50%;border:none;background:rgba(255,255,255,.88);color:var(--text-main);display:grid;place-items:center;cursor:pointer;opacity:.9;transition:opacity .2s,transform .2s,background .2s;box-shadow:0 2px 8px rgba(0,0,0,.14);padding:0;pointer-events:auto}
.pcard-arrow svg{width:14px;height:14px}
.pcard-arrow:hover{background:var(--white);opacity:1;transform:translateY(-50%) scale(1.08)}
.pcard-arrow-prev{left:6px}
.pcard-arrow-next{right:6px}
.pcard-slider:hover .pcard-arrow{opacity:1}
.pcard-arrow:focus-visible{opacity:1;transform:translateY(-50%) scale(1);outline:2px solid var(--primary-color)}
/* 悬停时第二张图优先展示，但不影响 JS 手动导航 */
.pcard-slider.is-hovered .pcard-slide[data-index="0"]:not(.active){opacity:0}
.pcard-slider.is-hovered .pcard-slide[data-index="1"]{opacity:1;z-index:1}
.pcard-badge{position:absolute;top:12px;z-index:3;display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:700;padding:5px 12px;color:var(--white);text-transform:none;letter-spacing:.01em;line-height:1.2;box-shadow:0 1px 2px rgba(0,0,0,.1)}
.pcard-badge-offer{background:var(--primary-color)}
.pcard-badge-gift{background:var(--brand-accent)}
.pcard-badge-fast{background:var(--ok-2)}
.pcard-badge-new{background:var(--primary-color)}
.pcard-badge-free_ship{background:var(--brand-sky)}
/* 角标位置：右侧是左侧的镜像，文字保持正常阅读方向 */
.pcard-badge-pos-left{left:0}
.pcard-badge-pos-right{right:0}
/* 圆角样式 */
.pcard-badge-radius-tag{border-radius:0 999px 999px 0}      /* 左侧：左直右圆（标签风格） */
.pcard-badge-radius-rtag{border-radius:999px 0 0 999px}    /* 左侧：左圆右直 */
.pcard-badge-radius-pill{border-radius:999px}              /* 全圆角药丸 */
.pcard-badge-radius-square{border-radius:0}                /* 直角方形 */
/* 右侧时自动镜像圆角，文字方向不变 */
.pcard-badge-pos-right.pcard-badge-radius-tag{border-radius:999px 0 0 999px}
.pcard-badge-pos-right.pcard-badge-radius-rtag{border-radius:0 999px 999px 0}
.pcard-wish{position:relative;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-inline-start:auto;margin-right:16px;flex-shrink:0;color:var(--muted);background:none;border:none;cursor:pointer;transition:.15s}
.pcard-wish:hover{color:var(--danger-2)}
.pcard-wish.is-wished{color:var(--danger-2)}
.pcard-wish svg{width:18px;height:18px;fill:currentColor;pointer-events:none}
.pcard-wish-tooltip{position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);background:var(--text-main);color:var(--white);padding:5px 10px;border-radius:5px;font-size:11px;font-weight:500;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:.15s;z-index:100}
.pcard-wish-tooltip::after{content:'';position:absolute;top:100%;left:50%;margin-left:-4px;border-width:4px;border-style:solid;border-color:var(--text-main) transparent transparent transparent}
.pcard-wish:hover .pcard-wish-tooltip{opacity:1;visibility:visible}
.pcard-body{position:relative;z-index:2;padding:14px;display:flex;flex-direction:column;gap:6px;flex:1;background:var(--white)}
.pcard-rating{display:flex;align-items:center;gap:6px}
.pcard-stars{display:inline-flex;gap:2px;color:var(--brand)}
.pcard-star{position:relative;width:14px;height:14px;display:inline-flex}
.pcard-star svg{position:absolute;inset:0;width:100%;height:100%;stroke:none}
.pcard-star .star-empty{fill:var(--border-light)}
.pcard-star .star-fill{fill:var(--brand)}
.pcard-reviews{font-size:12px;color:var(--muted)}
.pcard-title{font-size:13.5px;font-weight:500;line-height:1.45;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.9em}
.pcard-title a{position:relative;z-index:3;color:inherit;text-decoration:none}
.pcard-title a:hover{text-decoration:underline}
.pcard-price-row{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-top:auto}
.pcard-price{font-size:17px;font-weight:700;letter-spacing:-.01em;color:var(--ink)}
.pcard-was{font-size:13px;color:var(--faint);text-decoration:line-through}
.pcard-save{display:inline-block;font-size:12px;font-weight:600;color:var(--danger);background:var(--danger-bg-4);border:1px solid var(--danger-bg);padding:3px 10px;border-radius:6px;margin-top:4px;letter-spacing:.01em}
/* 收藏/列表卡片图片角标 — 折扣标签 */
.pcard-save-badge{position:absolute;top:10px;left:10px;background:var(--danger-2);color:var(--white);font-size:11px;font-weight:700;padding:3px 8px;border-radius:6px;z-index:2;letter-spacing:.02em}
/* 卡片颜色色板 */
.pcard-swatches{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap}
.pcard-swatch-dot{width:20px;height:20px;border-radius:50%;background:var(--sw,var(--border-soft));border:1.5px solid rgba(0,0,0,.1);flex-shrink:0;display:inline-block;transition:transform .15s ease;box-sizing:border-box}
.pcard-swatch-dot:hover{transform:scale(1.18)}
/* 缺货：红色斜杠 */
.pcard-swatch-oos{position:relative}
.pcard-swatch-oos::after{content:'';position:absolute;inset:3px;border-radius:50%;border-top:2px solid var(--danger-2);border-left:0;border-right:0;border-bottom:0;transform:rotate(-45deg);pointer-events:none}
.pcard-btn{position:relative;z-index:3;display:inline-block;width:100%;margin-top:8px;padding:11px 16px;border-radius:999px;background:var(--primary-color);color:var(--white);font-size:13.5px;font-weight:700;text-align:center;text-decoration:none;transition:.15s;border:1px solid var(--primary-color);cursor:pointer;font-family:inherit;line-height:1.4}
.pcard-btn:hover{background:var(--primary-dark);border-color:var(--primary-dark)}
.pgrid[data-cols="2"]{--per-row:2}
.pgrid[data-cols="3"]{--per-row:3}
.pgrid[data-cols="4"]{--per-row:4}
.pgrid[data-cols="5"]{--per-row:5}
.pgrid[data-cols="6"]{--per-row:6}

/* ---------- 主题风格（店铺装修 store_theme）---------- */
/* 现代卡片：更大圆角、柔和阴影、更宽间距 */
body.theme-modern .pgrid{gap:24px}
body.theme-modern .pcard{border-radius:18px;box-shadow:0 6px 18px rgba(0,0,0,.08)}
body.theme-modern .pcard:hover{box-shadow:0 16px 38px rgba(0,0,0,.14);transform:translateY(-4px)}
body.theme-modern .pcard-btn{border-radius:14px}
body.theme-modern .product-cat-tab.active{box-shadow:0 4px 14px rgba(255,107,43,.28)}
/* 经典栅格：去圆角、描边、紧凑 */
body.theme-classic .pgrid{gap:14px}
body.theme-classic .pcard{border-radius:0;border:1px solid var(--line);box-shadow:none;overflow:visible}
body.theme-classic .pcard:hover{box-shadow:none;transform:none;border-color:var(--line-2)}
body.theme-classic .pcard-visual{aspect-ratio:auto;height:200px}
body.theme-classic .pcard-btn{border-radius:4px}

/* ---------- wholesale band ---------- */
.wsband{background:var(--primary-color);color:var(--white)}
.wsband .wrap{display:flex;gap:40px;align-items:center;justify-content:space-between;padding:56px 24px;flex-wrap:wrap}
.wsband h2{font-size:29px;font-weight:600;letter-spacing:-.025em;margin-top:10px}
.wsband p{color:var(--faint);margin-top:10px;max-width:520px}
.wsband .eyebrow{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}

/* ---------- blog ---------- */
.blog-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.bcard .cover{aspect-ratio:16/10;background:var(--bg-3);border-radius:5px;display:grid;place-items:center;margin-bottom:14px;overflow:hidden}
.bcard .cover img{width:100%;height:100%;object-fit:cover}
.bcard .cover svg{width:34%;opacity:.4}
.bcard .meta{font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.08em}
.bcard h3{font-size:15px;font-weight:500;margin:7px 0 6px;line-height:1.4}
.bcard p{font-size:13px;color:var(--muted)}
.bcard .linked{margin-top:10px;font-size:11.5px;color:var(--ink);border-top:1px dashed var(--line-2);padding-top:8px}

/* ---------- PDP ---------- */
.crumb{font-size:12px;color:var(--muted);padding:18px 0}
.crumb a:hover{color:var(--primary-color)}
.crumb span{margin:0 7px;color:var(--faint)}
.pdp{display:grid;grid-template-columns:1.08fr .92fr;gap:56px;padding-bottom:60px}
.gallery .main{aspect-ratio:1;background:var(--white);border:1px solid var(--line);border-radius:12px;display:grid;place-items:center;position:relative;overflow:hidden;cursor:zoom-in}
.gallery .main img{width:100%;height:100%;object-fit:contain;padding:16px;transition:transform .12s ease-out;will-change:transform}
.gallery .main svg{width:56%;height:56%}
.thumbs{display:flex;gap:10px;margin-top:12px;overflow-x:auto;padding-bottom:4px}
.thumbs button{flex:0 0 72px;width:72px;height:72px;background:var(--white);border:1.5px solid var(--line);border-radius:8px;display:grid;place-items:center;overflow:hidden;cursor:pointer;transition:.15s}
.thumbs button:hover{border-color:var(--faint)}
.thumbs button.on{border-color:var(--primary-color);box-shadow:0 0 0 1px var(--ink)}
.thumbs button img{width:100%;height:100%;object-fit:contain;padding:6px}
.thumbs button svg{width:70%;height:70%}
.gallery .skuflag{position:absolute;bottom:14px;inset-inline-start:14px;background:var(--white);border:1px solid var(--line);border-radius:4px;padding:4px 9px;font-size:11px;font-family:ui-monospace,monospace}

/* checkout */
.pay-method.checked{border-color:var(--primary-color);background:var(--bg-2);box-shadow:0 0 0 1px var(--ink)}
.pay-method:hover{border-color:var(--faint)}

.pdp h1{font-size:27px;font-weight:600;letter-spacing:-.025em;line-height:1.22}
.pdp .subcode{font-size:12px;color:var(--muted);font-family:ui-monospace,monospace;margin-top:7px}
.badges{display:flex;gap:7px;margin-top:14px;flex-wrap:wrap}
.badge{font-size:11px;border:1px solid var(--line-2);border-radius:3px;padding:2.5px 8px;color:var(--ink-2)}
.badge.dark{background:var(--primary-color);color:var(--white);border-color:var(--primary-color)}
.badge.ok{color:var(--ok);border-color:var(--ok-bg-2);background:var(--ok-bg)}
.badge.low{color:var(--warn);border-color:var(--warn-bg-4);background:var(--warn-bg-2)}

.priceblk{margin-top:22px;padding:20px;border:1px solid var(--line);border-radius:var(--r);background:var(--bg-2)}
.priceline{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.priceline .big{font-size:33px;font-weight:600;letter-spacing:-.03em}
.priceline .was{font-size:15px;color:var(--faint);text-decoration:line-through}
.priceline .save{display:inline-flex;align-items:center;font-size:11.5px;color:var(--danger);background:var(--danger-bg-5);border:1px solid var(--danger-bg-2);border-radius:100px;padding:3px 10px;font-weight:700;line-height:1}
.priceunit{font-size:12px;color:var(--muted);margin-top:4px}
.payment-methods{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0}
.payment-label{font-size:12px;color:var(--muted);margin-right:4px}
.payment-badge{display:inline-flex;align-items:center;justify-content:center;height:26px;padding:0 10px;border-radius:4px;color:var(--white);font-size:11px;font-weight:600;letter-spacing:.02em}
.shipping-widget{margin:12px 0 16px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:var(--white)}
.shipping-status{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;margin-bottom:8px}
.shipping-status.ok{color:var(--ok)}
.shipping-status.no{color:var(--danger)}
.shipping-dot{width:8px;height:8px;border-radius:50%;background:currentColor}
.shipping-select{position:relative;display:inline-flex;align-items:center;gap:6px}
.shipping-select select{appearance:none;-webkit-appearance:none;padding:8px 28px 8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--white);font-size:13px;color:var(--ink);cursor:pointer;min-width:160px}
.shipping-select:after{content:"";position:absolute;right:10px;top:50%;width:6px;height:6px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-70%) rotate(45deg);pointer-events:none}
.shipping-sub{font-size:12px;color:var(--muted);margin:6px 0 0}

.tiertable{margin-top:16px;border:1px solid var(--line);border-radius:5px;overflow:hidden;background:var(--white)}
.tiertable .th{background:var(--bg-3);padding:8px 12px;font-size:10.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);display:flex;justify-content:space-between}
.tiertable .tr{display:flex;justify-content:space-between;padding:9px 12px;border-top:1px solid var(--line);font-size:13px}
.tiertable .tr.on{background:var(--primary-color);color:var(--white);font-weight:600}
.hintline{margin-top:11px;font-size:12.5px;color:var(--ink-2);background:var(--white);border:1px dashed var(--line-2);border-radius:5px;padding:9px 12px}
.hintline b{font-weight:600}

.optgrp{margin-top:22px}
.optgrp .lbl{font-size:11.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:9px}
.opts{display:flex;gap:8px;flex-wrap:wrap}
.opts button{border:1px solid var(--line-2);border-radius:5px;padding:7px 14px;font-size:13px;transition:.15s}
.opts button:hover{border-color:var(--faint)}
.opts button.on{border-color:var(--primary-color);background:var(--primary-color);color:var(--white)}
.opts button.disabled{opacity:.35;text-decoration:line-through;cursor:not-allowed}

/* 商品选项：颜色色块 + 规格文字按钮 */
.opt-line{margin-bottom:16px}
.opt-line:last-child{margin-bottom:0}
.opt-swatch{display:inline-flex;flex-direction:column;align-items:center;gap:5px;border:1px solid var(--line-2)!important;background:var(--white)!important;color:var(--ink-2)!important;border-radius:9px!important;padding:7px 10px!important;min-width:58px}
.opt-swatch-dot{width:30px;height:30px;border-radius:6px;background:var(--sw,var(--border-soft));border:1px solid rgba(0,0,0,.12);display:block}
.opt-swatch-label{font-size:11px;line-height:1.2;color:var(--muted);max-width:64px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.opt-swatch.on{border-color:var(--primary-color)!important;box-shadow:0 0 0 2px var(--ink) inset}
.opt-swatch.on .opt-swatch-label{color:var(--primary-color);font-weight:600}
.opt-btn.on{border-color:var(--primary-color);background:var(--primary-color);color:var(--white)}
/* 缺货选项置灰禁用 */
.opt-swatch.opt-oos,.opt-btn.opt-oos{opacity:.38;cursor:not-allowed;filter:grayscale(.6);text-decoration:line-through}
.opt-swatch.opt-oos .opt-swatch-dot{opacity:.5}
/* 选项/库存 提示条 */
.opt-msg{font-size:12.5px;margin-top:8px;padding:8px 12px;border-radius:8px}
.opt-msg.warn{display:block;background:var(--danger-bg-6);color:var(--danger-5);border:1px solid var(--danger-bg-7)}

.qtyrow{display:flex;align-items:center;gap:14px;margin-top:22px;flex-wrap:wrap}
.stepper{display:inline-flex;align-items:center;border:1px solid var(--line-2);border-radius:var(--r);overflow:hidden}
.stepper button{width:38px;height:40px;font-size:17px;color:var(--ink-2)}
.stepper button:hover{background:var(--bg-3)}
.stepper input{width:66px;height:40px;text-align:center;border:none;border-inline:1px solid var(--line-2);font-size:14px;font-variant-numeric:tabular-nums}
.qtyquick{display:flex;gap:6px}
.qtyquick button{font-size:11.5px;border:1px solid var(--line);border-radius:4px;padding:4px 9px;color:var(--muted)}
.qtyquick button:hover{border-color:var(--primary-color);color:var(--primary-color)}

/* 库存状态 — 在数量 stepper 右侧 */
.qty-stock{font-size:12.5px;font-weight:600;white-space:nowrap;padding:2px 0}
.qty-stock.in-stock{color:var(--ok-2)}
.qty-stock.out-of-stock{color:var(--danger)}
.stepper input:disabled{background:var(--bg-2);color:var(--muted);cursor:not-allowed}

.buyrow{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.buyrow .btn{flex:1;min-width:150px;padding:13px 18px}
.subtotal{display:flex;justify-content:space-between;margin-top:18px;padding-top:16px;border-top:1px solid var(--line);font-size:14px}
.subtotal b{font-size:17px;font-weight:600}

/* 右侧栏内嵌规格参数 */
.pdp-specs-inline{margin-top:18px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.pdp-specs-title{padding:10px 14px;font-size:13px;font-weight:600;color:var(--ink);background:var(--bg-2);border-bottom:1px solid var(--line)}
.pdp-specs-inline .spec-row{display:grid;grid-template-columns:1fr 1.2fr;border-bottom:1px solid var(--line)}
.pdp-specs-inline .spec-row:last-child{border-bottom:none}
.pdp-specs-inline .spec-row span{padding:9px 12px;font-size:12.5px;color:var(--muted);background:var(--bg-soft-3)}
.pdp-specs-inline .spec-row b{padding:9px 12px;font-weight:500;font-size:12.5px}

/* ---------- You may also like 轮播（pcard 大卡片风格）---------- */
.pdp-related-carousel{padding:36px 0;border-top:1px solid var(--line)}
.pdp-related-carousel .sec-head{margin-bottom:20px}
/* ── 轮播视口：箭头绝对定位在左右两侧，不占文档流 ── */
.carousel-viewport{
  --aw:40px;          /* 单个箭头按钮宽 */
  --ag:12px;           /* 箭头与卡片之间的安全间距 */
  position:relative;overflow:hidden
}
/* ── 轨道：显式宽度 = 视口100% − 左右两个箭头区(各 aw+ag)
     卡片的 100% 就基于此值计算，4等分精确落在两块箭头之间 ── */
.carousel-track{
  display:flex;gap:16px;overflow-x:auto;scroll-behavior:smooth;scrollbar-width:none;
  width:calc(100% - 2 * (var(--aw) + var(--ag)));
  margin:0 auto;padding:8px 0;
  -ms-overflow-style:none;scroll-snap-type:x mandatory
}
.carousel-track::-webkit-scrollbar{display:none}
.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:64px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.92);color:var(--ink);font-size:26px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;z-index:3;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.carousel-btn:hover{border-color:var(--primary-color);background:var(--white);box-shadow:0 4px 12px rgba(0,0,0,.15)}
.carousel-btn:active{transform:translateY(-50%) scale(.95)}
/* 箭头紧贴视口左右边缘（轨道已缩窄居中，箭头自然落在轨道外侧） */
.carousel-prev{left:0}
.carousel-next{right:0}

/* 卡片 — 4 等分轨道宽度（轨道已扣除左右箭头区），min-width:0 允许小屏收缩 */
.related-slide-card{flex:0 0 calc((100% - 3 * 16px) / 4);min-width:0;display:flex;flex-direction:column;background:var(--white);border-radius:12px;overflow:hidden;border:1px solid rgba(0,0,0,.06);box-shadow:0 1px 3px rgba(0,0,0,.06);transition:box-shadow .2s,transform .2s;z-index:1;scroll-snap-align:start}
.related-slide-card:hover{z-index:10;box-shadow:0 8px 24px rgba(0,0,0,.1);transform:translateY(-3px)}
.related-card-link{text-decoration:none;color:inherit;display:flex;flex-direction:column;flex:1}

/* 关联商品展示特效：none = 网格平铺不轮播 */
.pdp-related-carousel[data-effect="none"] .carousel-viewport{display:block}
.pdp-related-carousel[data-effect="none"] .carousel-track{flex-wrap:wrap;overflow:visible;scroll-behavior:auto}
.pdp-related-carousel[data-effect="none"] .carousel-btn{display:none}
/* 自动轮播时箭头半透明常驻，悬停高亮 */
.pdp-related-carousel[data-effect="auto"] .carousel-btn{opacity:.85}

/* 图片区 — 正方形 aspect-ratio */
.related-slide-img{position:relative;aspect-ratio:1/1;background:var(--bg-3);overflow:hidden;display:grid;place-items:center}
.related-slide-img img{width:100%;height:100%;object-fit:cover}
.related-slide-img svg{width:50%;height:50%;stroke:var(--border-mid)}

/* 内容区 */
.related-slide-body{padding:14px 16px;display:flex;flex-direction:column;gap:6px;flex:1}
.related-slide-name{font-size:13.5px;font-weight:500;line-height:1.45;color:var(--ink);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.6em}

/* 价格行 */
.related-slide-price-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:auto}
.related-slide-price{font-size:17px;font-weight:700;color:var(--ink);letter-spacing:-.01em}
.related-slide-was{font-size:13px;color:var(--faint);text-decoration:line-through}
.related-slide-save{font-size:12px;color:var(--danger);font-weight:500;margin-top:2px}

/* 收藏心形按钮 */
.related-slide-wish{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:auto;flex-shrink:0;color:var(--muted);background:none;border:none;cursor:pointer;transition:.15s;padding:0}
.related-slide-wish:hover{color:var(--danger-2)}
.related-slide-wish.is-wished{color:var(--danger-2)}
.related-slide-wish svg{width:18px;height:18px;fill:currentColor;pointer-events:none}

/* Add to basket 按钮（仅详情页「You may also like」轮播卡片，不影响产品列表 .pcard-btn） */
.related-slide-btn{display:block;align-self:center;margin:0 14px 14px;padding:10px 30px;border-radius:999px;background:var(--primary-color);color:var(--white);font-size:13.5px;font-weight:700;text-align:center;text-decoration:none;transition:.15s;border:1px solid var(--primary-color);flex-shrink:0}
.related-slide-btn:hover{background:var(--primary-dark);border-color:var(--primary-dark)}

/* ---------- PDP 选项卡（药丸按钮风格）---------- */
.pdp-tabs-wrap{margin-top:8px}
.pdp-tabs{display:flex;gap:12px;padding:20px 0 4px;flex-wrap:wrap}
.pdp-tab{display:inline-flex;align-items:center;height:44px;padding:0 24px;font-size:14px;font-weight:500;color:var(--muted);background:transparent;border:1.5px solid var(--line);border-radius:999px;cursor:pointer;transition:all .2s ease;white-space:nowrap;letter-spacing:.2px}
.pdp-tab:hover{color:var(--white);border-color:rgba(255,255,255,.3);background:rgba(255,255,255,.06)}
.pdp-tab.active{color:var(--brand-brown);background:linear-gradient(135deg,var(--warn-3),var(--warn-2));border-color:var(--warn-2);font-weight:600;box-shadow:0 2px 10px rgba(245,158,11,.35)}
.pdp-tab-content{display:none;padding:28px 0 12px}
.pdp-tab-content.active{display:block}
.pdp-description{font-size:14px;line-height:1.75;color:var(--text-550)}
.pdp-description p{margin-bottom:12px}
.reviews-inner{max-width:680px}

.specs{margin-top:34px}
.specs h3{font-size:13px;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:12px}
.specs table{width:100%;border-collapse:collapse;font-size:13px}
.specs td{padding:9px 0;border-bottom:1px solid var(--line)}
.specs td:first-child{color:var(--muted);width:40%}

/* ---------- PDP brand / tags ---------- */
.pdp-brand{display:flex;align-items:center;gap:10px;margin-top:14px;padding:10px 12px;background:var(--bg-2);border:1px solid var(--line);border-radius:8px;width:fit-content}
.pdp-brand img{width:34px;height:34px;object-fit:contain}
.pdp-brand span{font-size:13.5px;font-weight:600;color:var(--ink-2)}
.pdp-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.pdp-tags .tag{font-size:12px;padding:5px 12px;border:1px solid var(--line-2);border-radius:100px;color:var(--ink-2);background:var(--white);transition:.15s}
.pdp-tags .tag:hover{border-color:var(--primary-color);color:var(--primary-color)}

/* ---------- reviews ---------- */
.reviews-section{margin-top:40px}
.reviews-section .sec-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
.reviews-section h2{font-size:20px;font-weight:600;letter-spacing:-.02em}
.review-count{font-size:14px;color:var(--muted);font-weight:400;margin-left:6px}
.reviews-summary{display:grid;grid-template-columns:180px 1fr;gap:40px;align-items:center;margin-bottom:28px;padding:22px;background:var(--bg-2);border:1px solid var(--line);border-radius:12px}
.big-rating{display:flex;flex-direction:column;align-items:center;gap:4px}
.big-rating b{font-size:42px;font-weight:700;line-height:1}
.big-rating .stars{color:var(--brand);font-size:18px;letter-spacing:2px}
.big-rating .muted{font-size:12px}
.rating-bars{display:flex;flex-direction:column;gap:7px}
.rbar{display:grid;grid-template-columns:36px 1fr 24px;align-items:center;gap:10px;font-size:12.5px;color:var(--ink-2)}
.rbar .bar{height:8px;background:var(--line);border-radius:4px;overflow:hidden}
.rbar .bar i{display:block;height:100%;background:var(--primary-color);border-radius:4px}
.reviews-list{display:flex;flex-direction:column;gap:18px}
.review-item{padding:20px;border:1px solid var(--line);border-radius:12px;background:var(--white)}
.review-meta{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.review-meta .avatar{width:38px;height:38px;border-radius:50%;background:var(--primary-color);color:var(--white);display:grid;place-items:center;font-size:14px;font-weight:600;flex-shrink:0}
.review-meta .name{font-size:13.5px;font-weight:600}
.review-meta .stars{color:var(--brand);font-size:13px;letter-spacing:1px}
.review-meta .verified{font-size:11px;color:var(--ok);background:var(--ok-bg);border:1px solid var(--ok-bg-2);border-radius:100px;padding:2px 9px;margin-left:auto}
.review-meta .date{font-size:12px;color:var(--muted);margin-left:6px}
.review-title{font-size:15px;font-weight:600;margin-bottom:6px}
.review-content{color:var(--ink-2);font-size:13.5px;line-height:1.6}
.review-reply{margin-top:14px;margin-left:50px;padding:14px;background:var(--bg-2);border-radius:10px;border-left:3px solid var(--ink)}
.review-reply b{font-size:12.5px;color:var(--ink)}
.review-reply p{font-size:13px;color:var(--ink-2);margin-top:4px}
.review-reply .muted{font-size:11px}
@media(max-width:640px){
  .reviews-summary{grid-template-columns:1fr;gap:20px}
  .review-reply{margin-left:0}
}

/* ---------- footer ---------- */
footer.site{border-top:1px solid var(--line);padding:44px 0 30px;font-size:12.5px;color:var(--muted);margin-top:20px}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:36px;margin-bottom:32px}
.fgrid h4{font-size:11.5px;text-transform:uppercase;letter-spacing:.1em;color:var(--ink);margin-bottom:11px}
.fgrid a{display:block;padding:3px 0}
.fgrid a:hover{color:var(--primary-color)}
.fbot{border-top:1px solid var(--line);padding-top:18px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* GDMODS 风格深色页脚（启用 newsletter 时） */
footer.site-footer-dark{background:var(--text-strong);border-top:0;color:var(--text-200);padding:56px 0 34px}
footer.site-footer-dark .fgrid h4{color:var(--white)}
footer.site-footer-dark .fgrid a{color:var(--text-200)}
footer.site-footer-dark .fgrid a:hover{color:var(--white)}
footer.site-footer-dark .fbot{border-top-color:var(--text-700);color:var(--muted)}
footer.site-footer-dark .muted{color:var(--text-200)}

.fbrand-col{max-width:340px}
.fbrand-title{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:18px;font-weight:600;margin-bottom:14px;letter-spacing:.3px}
.fbrand-logo-img{max-height:28px;width:auto;vertical-align:middle}
.fbrand-mark{width:28px;height:28px;fill:var(--ink);flex-shrink:0}
.ftagline{font-size:13px;line-height:1.6;color:var(--muted);margin-bottom:26px}
footer.site-footer-dark .fbrand-title{color:var(--white)}
footer.site-footer-dark .fbrand-mark{fill:var(--white)}
footer.site-footer-dark .ftagline{color:var(--text-200)}

.fnewsletter{margin-top:4px}
.fnewsletter-title{font-size:15px;font-weight:600;color:var(--white);margin:0 0 8px}
.fnewsletter-desc{font-size:13px;line-height:1.55;color:var(--text-200);margin:0 0 16px}
.fsubscribe-form{display:flex;gap:10px;align-items:stretch}
.fsubscribe-form input[type="email"]{flex:1;min-width:0;background:var(--text-850);border:1px solid var(--text-700);border-radius:999px;color:var(--white);padding:12px 18px;font-size:13px;outline:none;transition:.15s}
.fsubscribe-form input[type="email"]::placeholder{color:var(--text-300)}
.fsubscribe-form input[type="email"]:focus{border-color:var(--text-450);background:var(--text-800)}
.fsubscribe-form button{flex-shrink:0;background:linear-gradient(135deg,var(--brand-gold-2),var(--brand-gold));border:0;border-radius:999px;color:var(--text-strong);font-size:13px;font-weight:700;padding:0 22px;cursor:pointer;transition:.15s}
.fsubscribe-form button:hover{background:linear-gradient(135deg,var(--brand-gold),var(--brand-gold-3));transform:translateY(-1px)}

@media (max-width:900px){
  .fgrid{grid-template-columns:1fr 1fr;gap:28px}
  .fbrand-col{max-width:none;grid-column:1/-1}
  .fsubscribe-form{max-width:420px}
}
@media (max-width:560px){
  .fgrid{grid-template-columns:1fr}
  .fsubscribe-form{flex-direction:column}
  .fsubscribe-form button{padding:12px 22px}
}

/* 全局页眉/页脚区块在硬编码结构内的适配 */
.utility .ve-global-header-top,
.utility .ve-global-header-top .site-header-bar,
.utility .ve-global-header-top .site-header-bar .wrap{display:inline;background:transparent !important;color:inherit !important;padding:0;text-align:left;font-size:inherit}
.utility .ve-global-header-top .site-header-bar a{color:var(--white);text-decoration:underline;margin-inline-start:8px}
header.site .ve-global-header-nav .site-custom-nav{gap:26px;font-size:13.5px;border-bottom:none;padding:0}
header.site .ve-global-header-nav .site-custom-nav a{padding:4px 0;border-bottom:2px solid transparent;color:var(--ink-2)}
header.site .ve-global-header-nav .site-custom-nav a:hover{color:var(--primary-color);border-color:var(--primary-color)}
.ve-global-footer{display:contents}

.toast{position:fixed;bottom:22px;inset-inline-end:22px;background:var(--primary-color);color:var(--white);padding:11px 16px;border-radius:var(--r);font-size:13px;opacity:0;transform:translateY(8px);transition:.22s;pointer-events:none;z-index:99;max-width:320px}
.toast.on{opacity:1;transform:translateY(0)}

/* ============================================================================
   Responsive
   ============================================================================ */
@media(max-width:1020px){
  .hero .wrap{grid-template-columns:1fr;gap:32px}
  .hero h1{font-size:36px}
  .hero-visual{max-width:420px}
  .pdp{grid-template-columns:1fr;gap:32px}
  .pgrid{grid-template-columns:repeat(2,1fr)!important}
  .product-layout.layout-left,.product-layout.layout-right{grid-template-columns:1fr}
  .product-sidebar{position:static;margin-bottom:16px}
  .blog-grid{grid-template-columns:1fr}
  nav.main{display:none}
}
@media(max-width:640px){
  .wrap{padding:0 16px}
  .hero h1{font-size:30px}
  .hero-stats{gap:20px;flex-wrap:wrap}
  .utility-note{display:none}
  .fgrid{grid-template-columns:1fr 1fr}
  .wsband .wrap{flex-direction:column;align-items:flex-start}
  .wsband .wrap > .wsband-cta{width:100%}
  .wsband .wrap > .wsband-cta .btn{width:100%}
}

/* ============================================================================
   以下为后台 / 其余前台页保留的旧类名（避免后台掉样式）
   ============================================================================ */
.container{max-width:1280px;margin:0 auto;padding:24px 20px}
.topbar{display:flex;align-items:center;gap:18px;padding:14px 20px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--white);z-index:10;flex-wrap:wrap}
.logo{font-weight:700;font-size:18px;letter-spacing:-.02em}
.install-page{min-height:100vh;background:var(--bg-soft-6);display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif}
.install-topbar{background:var(--text-900);color:var(--white);box-shadow:0 2px 8px rgba(0,0,0,.12)}
.install-topbar-inner{max-width:920px;margin:0 auto;padding:14px 20px;display:flex;align-items:center;justify-content:space-between;gap:16px}
.install-brand{display:flex;align-items:center;gap:12px}
.install-logo-img{width:34px;height:34px;border-radius:8px;background:var(--white);object-fit:contain}
.install-logo-text{font-weight:700;font-size:18px;letter-spacing:-.02em;color:var(--white)}
.install-badge{font-size:12px;color:rgba(255,255,255,.75);border:1px solid rgba(255,255,255,.25);padding:4px 10px;border-radius:999px}
.install-wrapper{flex:1;padding:40px 20px;display:flex;flex-direction:column;align-items:center;gap:24px}
.install-card{width:100%;max-width:720px;background:var(--white);border-radius:16px;box-shadow:0 4px 24px rgba(0,0,0,.06);border:1px solid var(--border-light);overflow:hidden}
.install-card-header{padding:32px 32px 24px;border-bottom:1px solid var(--bg-soft-6)}
.install-card-header h1{font-size:26px;font-weight:700;margin:0 0 8px;color:var(--text-900)}
.install-subtitle{margin:0;color:var(--text-300);font-size:14px;line-height:1.5}
.install-step-dots{display:flex;gap:8px;margin-bottom:16px}
.install-step-dots span{width:8px;height:8px;border-radius:50%;background:var(--border-light)}
.install-step-dots span.active{background:var(--text-900)}
.install-form{padding:28px 32px 32px}
.install-section{margin-bottom:28px}
.install-section-title{font-size:13px;font-weight:600;color:var(--text-300);text-transform:uppercase;letter-spacing:.04em;margin-bottom:16px;padding-bottom:10px;border-bottom:1px solid var(--bg-soft-6)}
.install-fields{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}
.install-field{display:flex;flex-direction:column;gap:6px}
.install-label{font-size:13px;font-weight:500;color:var(--text-550)}
.install-input{width:100%;height:44px;padding:0 14px;border:1px solid var(--border-mid);border-radius:10px;font-size:14px;background:var(--white);box-sizing:border-box;transition:border-color .15s,box-shadow .15s;color:var(--text-900)}
.install-input:focus{outline:none;border-color:var(--text-900);box-shadow:0 0 0 3px rgba(17,17,17,.08)}
.install-select{appearance:none;-webkit-appearance:none;background:var(--white) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center;padding-right:34px}
.install-password-wrap{position:relative}
.install-password-wrap .install-input{padding-right:44px}
.install-eye{position:absolute;right:4px;top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;background:transparent;border-radius:8px;display:flex;align-items:center;justify-content:center;color:var(--text-300);cursor:pointer;transition:color .15s,background .15s}
.install-eye:hover{color:var(--text-900);background:var(--bg-soft-6)}
.install-hint{font-size:12px;color:var(--text-300);line-height:1.6;margin:0 0 24px;padding:12px 14px;background:var(--bg-soft-2);border-radius:8px;border:1px solid var(--bg-soft-6)}
.install-actions{display:flex;justify-content:flex-end;gap:12px;padding-top:4px}
.install-result-actions{display:flex;justify-content:flex-end;gap:12px;padding:24px 32px 32px;flex-wrap:wrap}
.install-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 22px;background:var(--text-900);color:var(--white);border:1px solid var(--text-900);border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none;transition:transform .05s,background .15s,border-color .15s;white-space:nowrap}
.install-btn:hover:not(:disabled){background:var(--text-600);border-color:var(--text-600)}
.install-btn:active:not(:disabled){transform:scale(.98)}
.install-btn:disabled,.install-btn.is-disabled{background:var(--border-light);border-color:var(--border-light);color:var(--text-200);cursor:not-allowed}
.install-btn-outline{background:var(--white);color:var(--text-900)}
.install-btn-outline:hover:not(:disabled){background:var(--bg-soft-6)}
.install-btn svg{flex:0 0 auto}
.install-alert{background:var(--danger-bg-4);color:var(--danger-3);border:1px solid var(--danger-bg);padding:12px 16px;border-radius:10px;font-size:14px;margin:24px 32px 0}
.install-success-body{padding:24px 32px 0;font-size:14px;color:var(--text-550);line-height:1.7}
.install-success-body p{margin:0 0 8px}
.install-page-footer{text-align:center;color:var(--text-200);font-size:13px;padding-bottom:24px}
.install-license-intro{font-size:14px;color:var(--text-550);line-height:1.7;margin:0 0 16px}
.install-license-box{border:1px solid var(--border-light);border-radius:10px;background:var(--bg-2);height:320px;overflow:auto;margin-bottom:16px}
.install-license-content{padding:18px 20px;font-size:13px;line-height:1.8;color:var(--text-550)}
.install-license-content h3{font-size:14px;font-weight:700;color:var(--text-900);margin:18px 0 10px}
.install-license-content h3:first-child{margin-top:0}
.install-license-content p{margin:0 0 10px}
.install-license-content ol{margin:0 0 12px;padding-left:20px}
.install-license-content ol li{margin-bottom:8px}
.install-license-content h4{font-size:13.5px;font-weight:700;color:var(--text-900);margin:16px 0 8px}
.install-license-content ul{margin:0 0 12px;padding-left:20px;list-style:disc}
.install-license-content ul li{margin-bottom:6px}
.install-license-content code{background:var(--info-bg-3);color:var(--brand-indigo);padding:1px 5px;border-radius:4px;font-size:12px}
.install-privacy-note{border:1px solid var(--border-light);border-radius:10px;background:var(--bg-soft-2);padding:14px 16px;margin-bottom:18px}
.install-privacy-title{font-size:13px;font-weight:600;color:var(--text-900);display:flex;align-items:center;gap:8px;margin-bottom:8px}
.install-privacy-note p{margin:0;font-size:12px;color:var(--text-300);line-height:1.7}
.install-agree-row{display:flex;align-items:flex-start;gap:10px;margin-bottom:22px;font-size:14px;color:var(--text-900);cursor:pointer}
.install-agree-row input[type="checkbox"]{width:18px;height:18px;flex:0 0 18px;margin-top:1px;accent-color:var(--text-900);cursor:pointer}
.install-agree-row span{line-height:1.5}
@media(max-width:640px){
  .install-fields{grid-template-columns:1fr}
  .install-card-header,.install-form,.install-success-body,.install-alert{padding-left:20px;padding-right:20px}
  .install-result-actions{padding:20px 20px 24px;flex-direction:column-reverse}
  .install-card-header h1{font-size:22px}
  .install-actions{flex-direction:column-reverse}
  .install-btn{width:100%}
  .install-license-box{height:260px}
}
.nav{display:flex;gap:18px;font-size:14px;color:var(--muted)}
.nav a:hover{color:var(--primary-color)}
.switchers{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.switchers select{padding:5px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px;background:var(--white)}
.spacer{flex:1}
.btn-mini{display:inline-block;background:var(--primary-color);color:var(--white);padding:6px 11px;font-size:13px;border-radius:8px;cursor:pointer;border:1px solid var(--primary-color)}
.btn-mini.ghost{background:var(--white);color:var(--ink);border:1px solid var(--line)}
.tag{font-size:12px;background:var(--warn-bg);color:var(--warn);padding:3px 8px;border-radius:999px;border:1px solid var(--warn-bg-3)}
.alert{background:var(--danger-bg-4);color:var(--danger);border:1px solid var(--danger-bg);padding:10px 14px;border-radius:8px;font-size:14px}
.muted{color:var(--muted);font-size:13px}
.form{display:flex;flex-direction:column;gap:14px;max-width:420px}
.form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.form input,.form select,.form textarea{padding:10px 12px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-family:inherit}
.cta{background:var(--primary-color);color:var(--white);border-radius:12px;padding:40px 28px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap}
.cta h2{margin:0 0 6px;font-size:22px}
.cta p{margin:0;color:var(--line-2)}
.wholesale-only{background:var(--warn-bg);border:1px solid var(--warn-bg-3);color:var(--warn);padding:10px 14px;border-radius:8px;font-size:13px;margin:14px 0}
.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line)}
@media(min-width:768px){.grid{grid-template-columns:repeat(4,1fr)}}
.card{background:var(--white);padding:14px;display:flex;flex-direction:column;gap:8px}
.card .ph{aspect-ratio:1;background:var(--soft);border-radius:8px;overflow:hidden}
.card .ph img{width:100%;height:100%;object-fit:cover}
.card .nm{font-weight:600;font-size:14px}
.card .pr{font-weight:700}
.card .old{color:var(--muted);text-decoration:line-through;font-weight:400;font-size:13px;margin-left:6px}
.card .sm{font-size:12px;color:var(--muted)}
.save{color:var(--danger);font-size:12px;font-weight:600}
.section{padding:36px 0}
.section h2{font-size:22px;letter-spacing:-.02em;margin:0 0 18px;display:flex;justify-content:space-between;align-items:baseline}
.product{display:grid;grid-template-columns:1fr;gap:24px}
@media(min-width:820px){.product{grid-template-columns:1fr 1fr}}
.product .gallery .ph{aspect-ratio:1;background:var(--soft);border-radius:12px}
.tiers{margin-top:14px;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.tiers table{width:100%;border-collapse:collapse;font-size:14px}
.tiers th,.tiers td{padding:9px 12px;text-align:left;border-bottom:1px solid var(--line)}
.tiers tr:last-child td{border-bottom:none}
.tiers .hit{background:var(--ok-bg)}
.row-actions{display:flex;gap:8px;align-items:center}
table.admin{width:100%;border-collapse:collapse;font-size:14px}
table.admin th,table.admin td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left}
table.admin th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}
.kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-bottom:24px}
@media(min-width:768px){.kpis{grid-template-columns:repeat(4,1fr)}}
.kpi{border:1px solid var(--line);border-radius:10px;padding:18px}
.kpi b{display:block;font-size:24px;letter-spacing:-.02em}
.kpi span{font-size:12px;color:var(--muted)}
.tier-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:8px;margin-bottom:8px;align-items:center}
.tier-row input{padding:8px 10px;border:1px solid var(--line);border-radius:8px}
.tier-row .err{color:var(--danger);font-size:12px;grid-column:1/-1}
.badge.w{background:var(--info-bg);color:var(--brand-blue-dark);border-color:var(--info-bg-2)}
.badge.a{background:var(--ok-bg);color:var(--ok);border-color:var(--ok-bg-2)}
.badge.p{background:var(--warn-bg);color:var(--warn);border-color:var(--warn-bg-3)}
.spec-table{border:1px solid var(--line);border-radius:12px;overflow:hidden;max-width:720px}
.spec-table .spec-row{display:grid;grid-template-columns:1fr 1.5fr;border-bottom:1px solid var(--line)}
.spec-table .spec-row:last-child{border-bottom:none}
.spec-table .spec-row span{padding:12px 16px;background:var(--bg-2);color:var(--muted);font-size:13.5px}
.spec-table .spec-row b{padding:12px 16px;font-weight:500}
.badge.ok{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok-bg-2);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.draft{background:var(--bg-3);color:var(--muted);border:1px solid var(--line);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.warn{background:var(--danger-bg-3);color:var(--danger-4);border:1px solid var(--danger-bg);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.type-content{background:var(--info-bg);color:var(--brand-blue-dark);border:1px solid var(--info-bg-2);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.type-static{background:var(--brand-bg);color:var(--primary-color);border:1px solid var(--brand-bg-2);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.type-business{background:var(--bg-3);color:var(--muted);border:1px solid var(--line);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.new{background:var(--info-bg);color:var(--brand-blue-dark);border:1px solid var(--info-bg-2);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.contacted{background:var(--warn-bg);color:var(--warn);border:1px solid var(--warn-bg-3);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.quoted{background:var(--brand-bg);color:var(--primary-color);border:1px solid var(--brand-bg-2);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.closed{background:var(--bg-3);color:var(--muted);border:1px solid var(--line);padding:2px 8px;border-radius:999px;font-size:12px}
.badge.w{background:var(--info-bg);color:var(--brand-blue-dark);border:1px solid var(--info-bg-2);padding:2px 8px;border-radius:999px;font-size:12px}

/* ── 分页导航 ── */
.pagination-nav{display:flex;justify-content:space-between;align-items:center;padding:14px 0 4px;border-top:1px solid var(--line);margin-top:12px;gap:12px}
.pagination-info{color:var(--muted);font-size:13px;white-space:nowrap}
.pagination-buttons{display:flex;align-items:center;gap:8px}
.pagination-page-num{font-size:13px;font-weight:600;color:var(--ink);min-width:48px;text-align:center}

/* ── 模块生成器（Module Builder）全屏编辑器 ── */
.mb-root{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;display:flex;flex-direction:column;background:var(--bg-1);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}
/* 顶栏 */
.mb-topbar{display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:52px;min-height:52px;background:var(--bg-2);border-bottom:1px solid var(--line);flex-shrink:0;z-index:10}
.mb-topbar-left{display:flex;align-items:center;gap:10px}
.mb-back-btn{display:flex;align-items:center;gap:4px;color:var(--ink);text-decoration:none;font-size:13px;font-weight:500;opacity:.7;transition:opacity .15s}
.mb-back-btn:hover{opacity:1}
.mb-back-btn svg{width:16px;height:16px;flex-shrink:0}
.mb-divider-v{width:1px;height:20px;background:var(--line)}
.mb-title{font-size:16px;font-weight:700;margin:0;color:var(--ink)}
.mb-page-badge{font-size:12px;color:var(--muted);background:var(--bg-1);padding:2px 10px;border-radius:999px;border:1px solid var(--line)}
.mb-topbar-right{display:flex;align-items:center;gap:8px}
/* 三栏主体 */
.mb-body{display:flex;flex:1;overflow:hidden}
/* 左栏：组件库 */
.mb-sidebar{width:260px;min-width:260px;background:var(--bg-2);border-right:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden}
.mb-sidebar-header{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;font-size:13px;font-weight:700;color:var(--ink);border-bottom:1px solid var(--line);flex-shrink:0}
.mb-sidebar-header svg{flex-shrink:0;opacity:.5}
.mb-sidebar-search{padding:8px 12px;flex-shrink:0}
.mb-sidebar-search input{width:100%;box-sizing:border-box;padding:7px 10px;border:1px solid var(--line);border-radius:6px;font-size:12px;background:var(--bg-1);color:var(--ink);outline:none;transition:border-color .15s}
.mb-sidebar-search input:focus{border-color:var(--primary)}
.mb-component-list{flex:1;overflow-y:auto;padding:8px 0}
.mb-comp-group{margin-bottom:4px}
.mb-comp-group-label{padding:6px 16px 4px;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.mb-comp-item{display:flex;align-items:center;gap:10px;padding:8px 16px;cursor:pointer;transition:background .1s;border-left:3px solid transparent}
.mb-comp-item:hover{background:var(--bg-1)}
.mb-comp-item:active{background:rgba(59,130,246,.08)}
.mb-comp-icon{width:28px;height:28px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--muted)}
.mb-comp-icon svg{width:22px;height:22px}
.mb-comp-name{font-size:13px;color:var(--ink);font-weight:500}
.mb-comp-item.hidden-by-search{display:none}
/* 中栏：画布 */
.mb-canvas-area{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-1)}
.mb-canvas-toolbar{display:flex;align-items:center;justify-content:space-between;padding:6px 16px;background:var(--primary);color:var(--white);flex-shrink:0;font-size:12px}
.mb-selected-label{font-weight:600}
.mb-canvas-actions{display:flex;gap:4px}
.mb-tool-btn{width:28px;height:28px;border:none;background:rgba(255,255,255,.2);color:var(--white);border-radius:4px;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;transition:background .15s}
.mb-tool-btn:hover{background:rgba(255,255,255,.35)}
.mb-tool-btn.mb-danger:hover{background:rgba(239,68,68,.6)}
.mb-canvas-wrap{flex:1;position:relative;overflow:auto;background:var(--bg-1)}
/* 设备视口模拟：框定 iframe 宽度，居中显示 */
.mb-canvas-frame{position:relative;margin:0 auto;width:100%;min-height:100%;background:var(--white);flex:1;
  transition:width .25s ease,max-width .25s ease;box-shadow:0 0 0 1px rgba(0,0,0,.04)}
.mb-canvas-frame.dev-tablet{width:820px;max-width:100%}
.mb-canvas-frame.dev-mobile{width:390px;max-width:100%}
.mb-canvas-iframe{width:100%;height:100%;border:none;background:var(--white);display:block}
.mb-canvas-empty{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);gap:12px;text-align:center;padding:40px}
.mb-canvas-empty p{font-size:14px;line-height:1.6;margin:0}
.mb-canvas-empty.hidden{display:none}
/* 组件卡片：可拖拽外观 */
.mb-comp-item{user-select:none}
.mb-comp-item{cursor:pointer;transition:background .12s,border-left-color .12s,box-shadow .12s}
.mb-comp-item:hover{background:var(--info-bg);border-left-color:var(--brand-blue);box-shadow:inset 2px 0 0 var(--brand-blue)}
.mb-comp-item:active{background:var(--info-bg-4)}
.mb-comp-item.dragging{opacity:.45;background:rgba(37,99,235,.08)}
/* 子元素不拦截指针，确保 drag 源是卡片本身而非 SVG/文字 */
.mb-comp-icon,.mb-comp-name,.mb-comp-icon svg{pointer-events:none}
/* 拖拽放置层 */
.mb-drop-overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;pointer-events:none;z-index:6}
.mb-canvas-wrap.mb-drag-active .mb-drop-overlay{display:flex;pointer-events:auto}
.mb-drop-overlay-inner{display:flex;flex-direction:column;align-items:center;gap:10px;padding:26px 44px;border:2px dashed var(--brand-blue);border-radius:14px;background:rgba(255,255,255,.92);color:var(--brand-blue);font-size:14px;font-weight:600;transition:box-shadow .15s,transform .15s}
.mb-canvas-wrap.mb-drag-over .mb-drop-overlay-inner{box-shadow:0 10px 34px rgba(37,99,235,.22);transform:scale(1.03);background:var(--white)}
.mb-canvas-wrap.mb-drag-over{background:rgba(37,99,235,.05)}
/* 插入位置指示线 */
.mb-drop-indicator{position:absolute;left:16px;right:16px;height:3px;background:var(--brand-blue);border-radius:3px;box-shadow:0 0 0 3px rgba(37,99,235,.18);display:none;z-index:7;pointer-events:none}
/* 设备视口切换按钮组 */
.mb-dev-switch{display:flex;align-items:center;gap:2px;background:rgba(255,255,255,.14);border-radius:7px;padding:2px}
.mb-dev-btn{border:none;background:transparent;color:var(--white);min-width:38px;height:26px;padding:0 8px;border-radius:5px;cursor:pointer;font-size:12px;font-weight:500;line-height:1;display:grid;place-items:center;opacity:.72;transition:.15s}
.mb-dev-btn:hover{opacity:1;background:rgba(255,255,255,.18)}
.mb-dev-btn.active{opacity:1;background:var(--white);color:var(--primary)}
/* 右栏：属性面板 */
.mb-props-panel{width:320px;min-width:320px;background:var(--bg-2);border-left:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden}
.mb-props-header{display:flex;align-items:center;gap:8px;padding:14px 16px 10px;font-size:13px;font-weight:700;color:var(--ink);border-bottom:1px solid var(--line);flex-shrink:0}
.mb-props-header svg{flex-shrink:0;opacity:.5}
.mb-props-tabs{display:flex;padding:0 16px;border-bottom:1px solid var(--line);flex-shrink:0}
.mb-prop-tab{flex:1;padding:8px 0;font-size:12px;font-weight:500;color:var(--muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all .15s;text-align:center}
.mb-prop-tab.active{color:var(--primary);border-bottom-color:var(--primary)}
.mb-prop-tab:hover:not(.active){color:var(--primary-color)}
.mb-props-body{flex:1;overflow-y:auto;position:relative}
.mb-props-placeholder{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--muted);gap:10px;text-align:center;padding:30px}
.mb-props-placeholder p{font-size:13px;line-height:1.6;margin:0}
.mb-props-placeholder.hidden{display:none}
.mb-props-iframe{width:100%;height:100%;border:none;display:block}

/* ── 组件库：大标题 + 分组副标题 ── */
.mb-lib-title{display:flex;align-items:baseline;gap:8px;padding:12px 16px 6px;margin-top:4px;border-top:1px solid var(--line)}
.mb-lib-title:first-child{border-top:none;margin-top:0}
.mb-lib-title span{font-size:12px;font-weight:700;color:var(--ink)}
.mb-lib-title small{font-size:10px;color:var(--muted);font-weight:400}
.mb-comp-group-label{display:flex;align-items:baseline;gap:6px;text-transform:none;letter-spacing:0}
.mb-comp-group-label em{font-style:normal;font-size:10px;opacity:.7;font-weight:400}
.mb-lib-empty{padding:24px 16px;text-align:center;font-size:12px;color:var(--muted)}
/* 微组件图标略小，与成品组件区分 */
.mb-comp-item[data-kind="micro"] .mb-comp-icon svg{width:19px;height:19px}
.mb-comp-item[data-kind="micro"] .mb-comp-name{font-size:12.5px}

/* ── 顶栏：模块名称输入 ── */
.mb-name-input{width:230px;padding:5px 10px;border:1px solid var(--line);border-radius:6px;font-size:12px;background:var(--bg-1);color:var(--ink);outline:none;transition:border-color .15s,width .18s}
.mb-name-input:focus{border-color:var(--primary);width:290px}
.mb-name-input::placeholder{color:var(--muted);opacity:.7}
/* 顶栏模块分类下拉 */
.mb-cat-select{margin-left:8px;height:28px;padding:0 26px 0 10px;border:1px solid var(--line);border-radius:6px;
  font-size:12px;background:var(--bg-1);color:var(--ink);outline:none;cursor:pointer;
  appearance:none;-webkit-appearance:none;transition:border-color .15s;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 7px center;background-size:11px}
.mb-cat-select:focus{border-color:var(--primary)}

/* ── 模块库列表页：可复用模块卡片网格 + 缩略预览 ── */
.mb-mod-grid{display:grid;grid-template-columns:repeat(auto-fill,240px);gap:16px;justify-content:start;padding:4px}
.mb-mod-card{position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--white);
  display:flex;flex-direction:column;transition:box-shadow .15s,border-color .15s}
.mb-mod-card:hover{box-shadow:0 6px 22px rgba(0,0,0,.09);border-color:var(--primary-color)}
.mb-mod-thumb{display:block;position:relative;height:160px;width:100%;overflow:hidden;background:var(--white);
  border:0;border-bottom:1px solid var(--line);padding:0;margin:0;text-decoration:none;
  font:inherit;color:inherit;text-align:left;cursor:zoom-in}
.mb-mod-thumb-iframe{position:absolute;top:0;left:0;width:960px;height:646px;border:0;
  transform:scale(.248);transform-origin:top left;pointer-events:none}
/* 缩略图悬浮「放大预览」提示 */
.mb-mod-zoom{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;
  gap:6px;font-size:12.5px;font-weight:600;color:var(--white);background:rgba(15,23,42,.44);
  opacity:0;transition:opacity .16s ease;pointer-events:none;backdrop-filter:blur(1px)}
.mb-mod-zoom svg{width:16px;height:16px}
.mb-mod-thumb:hover .mb-mod-zoom,.mb-mod-thumb:focus-visible .mb-mod-zoom{opacity:1}
.mb-mod-body{padding:11px 14px 13px;display:flex;flex-direction:column;gap:6px}
.mb-mod-name{font-weight:600;font-size:14px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb-mod-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.mb-mod-slug{flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mb-mod-count{flex:none;color:var(--ink)}
.mb-mod-updated{font-size:11.5px;color:var(--muted)}
.mb-mod-actions{display:flex;gap:14px;margin-top:3px;font-size:13px}
.mb-mod-actions a{color:var(--ink);text-decoration:none}
.mb-mod-actions a:hover{text-decoration:underline}
.mb-mod-actions a.danger{color:var(--danger)}
/* 来源徽标：自定义模块 / 区块模板 */
.mb-mod-kind{position:absolute;top:8px;left:8px;z-index:3;font-size:11px;line-height:1.7;
  font-weight:600;padding:1px 8px;border-radius:999px;color:var(--white);pointer-events:none;
  box-shadow:0 1px 4px rgba(0,0,0,.18)}
.mb-mod-kind--module{background:var(--brand-blue)}
.mb-mod-kind--bt{background:var(--primary-color)}
/* 分类徽标（卡片内，与来源徽标区分：描边式浅底） */
.mb-mod-cat{flex:none;font-size:11px;line-height:1.7;font-weight:600;padding:0 7px;border-radius:5px;
  color:var(--chip,var(--text-250));border:1px solid currentColor;background:var(--white);
  background:color-mix(in srgb,var(--chip,var(--text-250)) 9%,var(--white));white-space:nowrap}

/* ── 模块分类筛选条 ── */
.mb-cat-bar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.mb-cat-chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;border-radius:999px;
  border:1px solid var(--line);background:var(--white);color:var(--ink);font-size:12.5px;font-weight:500;
  text-decoration:none;transition:border-color .14s,background .14s,color .14s}
.mb-cat-chip:hover{border-color:var(--chip,var(--ink));color:var(--chip,var(--ink))}
.mb-cat-chip.is-on{border-color:var(--chip,var(--ink));color:var(--white);background:var(--chip,var(--ink));font-weight:600}
.mb-cat-dot{width:7px;height:7px;border-radius:50%;background:var(--chip,var(--text-250));flex:none}
.mb-cat-chip.is-on .mb-cat-dot{background:var(--white)}
.mb-cat-n{font-size:11px;opacity:.65;font-variant-numeric:tabular-nums}

/* ── 模块放大预览灯箱 ── */
.mb-lightbox{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center;padding:28px}
.mb-lightbox[hidden]{display:none}
.mb-lb-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.62);backdrop-filter:blur(2px)}
.mb-lb-panel{position:relative;z-index:1;width:min(1180px,100%);height:min(88vh,900px);
  background:var(--white);border-radius:14px;overflow:hidden;display:flex;flex-direction:column;
  box-shadow:0 24px 70px rgba(0,0,0,.35)}
.mb-lb-head{display:flex;align-items:center;gap:14px;height:52px;flex:none;padding:0 14px 0 18px;
  border-bottom:1px solid var(--line);background:var(--white)}
.mb-lb-title{font-size:14.5px;font-weight:700;color:var(--ink);overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;flex:1;min-width:0}
.mb-lb-devices{display:flex;gap:0;flex:none;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.mb-lb-dev{all:unset;box-sizing:border-box;cursor:pointer;padding:5px 13px;font-size:12.5px;
  color:var(--muted);background:var(--white);transition:background .14s,color .14s}
.mb-lb-dev + .mb-lb-dev{border-left:1px solid var(--line)}
.mb-lb-dev:hover{color:var(--primary-color);background:var(--bg-soft)}
.mb-lb-dev.is-on{background:var(--primary-color);color:var(--white);font-weight:600}
.mb-lb-tools{display:flex;align-items:center;gap:10px;flex:none}
.mb-lb-edit{font-size:13px;color:var(--ink);text-decoration:none;padding:5px 12px;
  border:1px solid var(--line);border-radius:8px;transition:border-color .14s}
.mb-lb-edit:hover{border-color:var(--primary-color)}
.mb-lb-close{all:unset;box-sizing:border-box;cursor:pointer;width:30px;height:30px;border-radius:8px;
  display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--muted)}
.mb-lb-close:hover{background:var(--bg-soft-4);color:var(--primary-color)}
.mb-lb-stage{flex:1;min-height:0;overflow:auto;background:var(--bg-soft-5);display:flex;justify-content:center;padding:16px}
.mb-lb-frame{width:100%;height:100%;min-height:100%;border:0;background:var(--white);border-radius:8px;
  box-shadow:0 2px 14px rgba(0,0,0,.1);transition:width .2s ease}

/* ── 三 Tab 面板（block-template-edit / page-edit 共用）── */
.pb-tabs{
  display:flex;width:100%;border-bottom:var(--e-a-border);
  background:var(--e-a-bg-default)
}
.pb-tab{
  all:unset;flex:auto;box-sizing:border-box;cursor:pointer;
  transition:var(--e-a-transition-hover);
  border-bottom:3px solid transparent;
  color:var(--e-a-color-txt);text-align:center;
  padding:12px 0 8px;font-size:10px;font-family:inherit;
  display:flex;flex-direction:column;align-items:center
}
.pb-tab:hover,.pb-tab:focus{background-color:var(--e-a-bg-hover)}
.pb-tab:focus{outline:0}
.pb-tab.active{
  border-color:var(--e-a-border-color-accent);color:var(--e-a-color-txt-accent)
}
.pb-tab-pane{display:none;padding:15px 16px 20px}
.pb-tab-pane.active{display:block}

/* ══════════════════════════════════════════════════════════════
   block-template-edit 面板作用域样式（与 VE visual-block-form.php 一致）
   全部限定在 .pb-edit-panel 下，避免与全局 .pb-* 样式冲突
   ══════════════════════════════════════════════════════════════ */
.pb-edit-panel .pb-acc{padding:0;margin:0}
.pb-edit-panel .pb-acc.open{padding-bottom:10px}
.pb-edit-panel .pb-acc-head{
  display:flex;align-items:center;gap:5px;height:44px;padding:0 12px;
  width:100%;border:0;border-top:2px solid var(--e-a-border-color);
  background-color:transparent;color:var(--e-a-color-txt-accent);
  cursor:pointer;user-select:none;-webkit-user-select:none;
  font-size:var(--control-title-size);font-weight:bold;justify-content:space-between
}
.pb-edit-panel .pb-panel > .pb-acc:first-child > .pb-acc-head{border-top:none}
.pb-edit-panel .pb-acc-head:hover{color:var(--e-a-color-txt-hover)}
.pb-edit-panel .pb-acc-head-left{display:flex;align-items:center;gap:5px;font-weight:700}
/* ── 通用折叠箭头（所有面板共用，不依赖 .pb-edit-panel 前缀）── */
.pb-acc-arrow{
  width:14px;height:14px;min-width:14px;min-height:14px;max-width:14px;max-height:14px;
  display:inline-flex;align-items:center;justify-content:center;
  overflow:hidden;flex-shrink:0;
  transition:transform .2s ease;color:inherit
}
.pb-acc-arrow svg{width:14px;height:14px;stroke:currentColor;flex-shrink:0}
.pb-acc.open > .pb-acc-head .pb-acc-arrow{transform:rotate(90deg)}

/* .pb-edit-panel 作用域内的覆盖（保持向后兼容） */
.pb-edit-panel .pb-acc-arrow{
  width:10px;height:10px;min-width:10px;min-height:10px;max-width:10px;max-height:10px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  overflow:hidden;flex-shrink:0;
  transition:transform .2s ease;color:inherit
}
.pb-edit-panel .pb-acc-arrow svg{width:10px;height:10px;stroke:currentColor}
.pb-edit-panel .pb-acc.open > .pb-acc-head .pb-acc-arrow{transform:rotate(90deg)}
.pb-edit-panel .pb-acc-body{display:none;padding:0}
.pb-edit-panel .pb-acc.open > .pb-acc-body{display:block}

/* ══════════════════════════════════════════════════════════════
   UltEditor 控件样式（与 visual-block-form.php iframe 内联样式完全一致）
   使用相同的设计令牌，确保 block-template-edit 在主页面渲染观感一致
   ══════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════
   局部覆盖示例（全局变量 + 局部覆盖）
   机制：CSS 变量可被任意后代元素重新声明而"覆盖"继承值。
   只需在区块父容器上重定义同名变量，该区块内所有 var(--x) 即取新值，
   互不影响其它区块。
   ────────────────────────────────────────────────────────────────
   .special-banner{
     --primary-color:#ff0000;   // 本区块内所有 var(--primary-color) 变为红
     --text-main:#ffffff;
     --bg-color:#222222;
   }
   .special-banner .btn{
     background:var(--primary-color);
     color:var(--text-main);
   }
   // 也可在 :root 级别整体换肤：
   // :root{ --primary-color:#0ea5e9; --bg-color:#0b1220; --text-main:#e5e7eb; }
   ══════════════════════════════════════════════════════════════ */
:root{
  /* ── 背景（与 VE 一致） ── */
  --e-a-bg-default:#ffffff;--e-a-bg-hover:#F1F2F3;--e-a-bg-active:#E6E8EA;
  --e-a-bg-active-bold:#D5D8DC;--e-a-bg-chip:#F1F2F3;--e-a-bg-loading:#F9FAFA;
  --e-a-bg-primary:#FAE8FF;--e-a-bg-info:#F0F7FF;--e-a-bg-success:#F2FDF5;
  --e-a-bg-warning:#FFFBEB;--e-a-bg-danger:#FEF1F4;--e-a-bg-invert:#0C0D0E;
  /* ── 边框（与 VE 一致） ── */
  --e-a-border-color:#E6E8EA;--e-a-border-color-bold:#D5D8DC;
  --e-a-border-color-focus:#BABFC5;--e-a-border-color-accent:#0C0D0E;
  --e-a-border:1px solid var(--e-a-border-color);
  --e-a-border-bold:1px solid var(--e-a-border-color-bold);
  --e-a-border-radius:3px;
  /* ── 文字（与 VE 一致） ── */
  --e-a-color-txt:#515962;--e-a-color-txt-accent:#0C0D0E;--e-a-color-txt-active:#0C0D0E;
  --e-a-color-txt-hover:#3f444b;--e-a-color-txt-muted:#818A96;
  --e-a-color-txt-disabled:#BABFC5;--e-a-color-txt-invert:#ffffff;
  /* ── 主题色（与 VE 一致） ── */
  --e-a-color-primary:#F3BAFD;--e-a-color-primary-bold:#D004D4;
  --e-a-color-primary-bold-dark:#C00BB9;--e-a-color-global:#1DDDBF;
  --e-a-color-info:#2563EB;--e-a-color-success:#0A875A;
  --e-a-color-warning:#F59E0B;--e-a-color-danger:#DC2626;--e-a-color-white:#ffffff;
  --e-a-btn-bg-primary:#F3BAFD;--e-a-btn-bg-primary-hover:#F5D0FE;
  --e-a-btn-bg-primary-active:#F0ABFC;--e-a-btn-color:#0C0D0E;
  /* ── 其它（与 VE 一致） ── */
  --e-a-font-family:Roboto,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",Arial,Helvetica,sans-serif;
  --e-a-popover-shadow:0 2px 15px rgba(0,0,0,.3);
  --e-a-dropdown-shadow:0 0 3px rgba(0,0,0,.2);
  --e-a-transition-hover:all .3s;
  --control-h:27px;
  --control-title-size:12px
}

/* ── block-template-edit 面板容器：与 VE .pb-panel 一致 ── */
.pb-edit-panel{background:var(--e-a-bg-default);color:var(--e-a-color-txt);
  font-family:var(--e-a-font-family);font-size:var(--control-title-size);line-height:1.5;
  -webkit-font-smoothing:antialiased;box-sizing:border-box}
.pb-edit-panel *,
.pb-edit-panel *::before,.pb-edit-panel *::after{box-sizing:border-box}

/* ── 基础表单元素（与 VE 完全一致） ── */
/* 注意：button 不在此重置 border/background，由各控件自行定义 */
.pb-edit-panel button{box-sizing:border-box;font:inherit;color:inherit;cursor:pointer}
.pb-edit-panel input,.pb-edit-panel select,.pb-edit-panel textarea{
  color:var(--e-a-color-txt);border-radius:var(--e-a-border-radius);
  font-size:12px;width:100%;background:none;background-color:var(--e-a-bg-default);
  box-shadow:none;border:var(--e-a-border-bold);outline:none;font-family:inherit}
.pb-edit-panel select{outline:none;height:var(--control-h)}
.pb-edit-panel input:focus,.pb-edit-panel select:focus,.pb-edit-panel textarea:focus{
  border-color:var(--e-a-border-color-focus)}
.pb-edit-panel input[type=checkbox]{
  margin:0;padding:0;appearance:none;-webkit-appearance:none;outline:none;
  height:15px;width:15px;border-radius:var(--e-a-border-radius);
  margin-inline-end:5px;border:var(--e-a-border-bold);
  display:inline-flex;align-items:center;justify-content:center;
  flex:0 0 15px;cursor:pointer;position:relative}
.pb-edit-panel input[type=checkbox]:checked{
  background-color:var(--e-a-btn-bg-primary);border-color:var(--e-a-border-color-bold)}
.pb-edit-panel input[type=checkbox]:checked::after{
  content:'';width:4px;height:8px;border:solid var(--e-a-color-txt-accent);
  border-width:0 2px 2px 0;transform:rotate(45deg) translate(-1px,-1px)}

/* ── 控件通用节奏（与 VE 一致） ── */
.pb-edit-panel .pb-acc-body > label,.pb-edit-panel .pb-acc-body > .pb-ctrl-wrap > label,
.pb-edit-panel .pb-panel > label,.pb-edit-panel .pb-sw-wrap,.pb-edit-panel .pb-slider-wrap,
.pb-edit-panel .pb-dimensions-wrap,
.pb-edit-panel .pb-url-wrap,.pb-edit-panel .pb-media-wrap,.pb-edit-panel .pb-icons-wrap,
.pb-edit-panel .pb-gaps-wrap,
.pb-edit-panel .pb-icon-buttons-wrap,.pb-edit-panel .pb-choose-wrap,.pb-edit-panel .pb-repeater,
.pb-edit-panel .pb-content-field,
.pb-edit-panel .pb-field-heading,.pb-edit-panel .pb-notice,.pb-edit-panel .pb-alert,
.pb-edit-panel .pb-raw-html{
  position:relative;padding:0 4px 12px;margin:0
}
.pb-edit-panel .pb-ctrl-wrap{display:block;margin:0;padding:0}
.pb-edit-panel label{display:flex;align-items:center;flex-wrap:nowrap;gap:5px;
  color:var(--e-a-color-txt);font-weight:400;font-size:var(--control-title-size);line-height:1}
.pb-edit-panel label{white-space:nowrap}
.pb-edit-panel label > input:not([type=color]):not([type=range]):not([type=hidden]):not([type=checkbox]),
.pb-edit-panel label > select{
  margin-inline-start:8px;flex:1 1 auto;width:0;min-width:120px;max-width:none;
  height:var(--control-h);padding:0 5px;border:var(--e-a-border-bold);
  border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default);
  color:var(--e-a-color-txt);font-size:var(--control-title-size);line-height:1;
  transition:border-color .15s
}
.pb-edit-panel label > select{cursor:pointer;appearance:none;-webkit-appearance:none;
  padding-inline:5px 20px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23818A96'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 6px center;background-size:9px}
.pb-edit-panel label > textarea{width:100%;margin-top:10px;padding:5px;border:var(--e-a-border-bold);
  border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default);
  color:var(--e-a-color-txt);font-size:var(--control-title-size);line-height:1.5;
  resize:vertical;min-height:80px;font-family:inherit}
.pb-edit-panel label > input:focus,.pb-edit-panel label > select:focus,.pb-edit-panel label > textarea:focus{outline:none;border-color:var(--e-a-border-color-focus)}
.pb-edit-panel label.pb-checkbox-label{display:flex;align-items:center;gap:0;white-space:normal;font-size:var(--control-title-size);cursor:pointer}
.pb-edit-panel label.pb-checkbox-label > input[type=checkbox]{width:15px;flex:0 0 15px}

/* ── Dimensions 四向尺寸 ── */
.pb-edit-panel .pb-dimensions-wrap{font-size:var(--control-title-size)}
.pb-edit-panel .pb-dim-header{display:flex;align-items:center;gap:5px;margin-bottom:10px}
.pb-edit-panel .pb-dim-label{font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;flex-shrink:0;white-space:nowrap}
.pb-edit-panel .pb-dim-header-icon{font-size:12px;color:var(--e-a-color-txt-muted);flex-shrink:0;line-height:1}
.pb-edit-panel .pb-dim-unit-sel{width:auto;min-width:48px;margin-inline-start:8px;height:var(--control-h);
  padding:0 18px 0 5px;font-size:10px;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius);
  background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);cursor:pointer;
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23818A96'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 5px center;background-size:9px}
.pb-edit-panel .pb-dim-unit-sel:hover{color:var(--e-a-color-primary-bold)}
.pb-edit-panel .pb-dim-body{display:flex;flex-direction:column}
.pb-edit-panel .pb-dim-grid{display:flex;align-items:stretch;width:100%;background-color:var(--e-a-bg-default);
  border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius);overflow:hidden}
.pb-edit-panel .pb-dim-col{display:flex;flex-direction:column;flex:1;min-width:0;
  border:2px solid transparent;border-inline-end:var(--e-a-border-bold)}
.pb-edit-panel .pb-dim-col:last-child{border-inline-end:none}
/* 点击聚焦时：颜色边框高亮（盒子尺寸不变，避免默认/选中态视觉不一致） */
.pb-edit-panel .pb-dim-col:focus-within{border-color:var(--e-a-color-primary-bold);box-shadow:0 0 0 2px rgba(110,193,228,.15);z-index:2}
.pb-edit-panel .pb-dim-input-wrap{position:relative;width:100%;display:flex;align-items:center}
.pb-edit-panel .pb-dim-input{display:block;width:100%;height:var(--control-h);padding:3px 20px 3px 3px;
  font-size:12px;text-align:center;border:none;border-radius:0;background:transparent;
  color:var(--e-a-color-txt);font-family:inherit}
.pb-edit-panel .pb-dim-input:focus{outline:none;background-color:var(--e-a-bg-hover);
  border:none;box-shadow:none}
.pb-edit-panel .pb-dim-spinner{position:absolute;inset-inline-end:0;top:0;bottom:0;display:flex;flex-direction:column;z-index:1;width:18px}
.pb-edit-panel .pb-dim-step{flex:1;width:100%;padding:0;border:none;background:none;cursor:pointer;
  color:var(--e-a-color-txt-disabled);font-size:0;line-height:0;display:flex;align-items:center;justify-content:center;
  transition:var(--e-a-transition-hover);min-height:16px}
.pb-edit-panel .pb-dim-step svg{width:12px;height:12px;display:block;flex-shrink:0}
.pb-edit-panel .pb-dim-step:hover{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-hover)}
.pb-edit-panel .pb-dim-link-col{flex:0 0 27px;max-width:27px;background-color:var(--e-a-bg-default)}
.pb-edit-panel .pb-dim-link{display:flex;align-items:center;justify-content:center;width:100%;height:var(--control-h);
  padding:0;margin:0;border:none;background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);
  cursor:pointer;outline:none;transition:var(--e-a-transition-hover)}
.pb-edit-panel .pb-dim-link svg{width:13px;height:13px;flex-shrink:0}
.pb-edit-panel .pb-dim-link:hover{background-color:var(--e-a-bg-hover)}
.pb-edit-panel .pb-dim-link.pb-dim-linked{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}
.pb-edit-panel .pb-dim-link.pb-dim-linked svg{stroke:var(--e-a-color-txt-accent)}
.pb-edit-panel .pb-dim-labels{display:flex;padding:0}
.pb-edit-panel .pb-dim-side{flex:1;display:block;text-align:center;font-size:9px;line-height:1;
  color:var(--e-a-color-txt-muted);padding-top:5px;white-space:nowrap;font-weight:400;letter-spacing:0}

/* ── Choose 选择组 ── */
.pb-edit-panel .pb-choose-wrap{display:block}
.pb-edit-panel .pb-choose-label{display:block;font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;margin-bottom:10px;white-space:nowrap}
.pb-edit-panel .pb-choose-grid{display:grid;height:var(--control-h);text-align:center;border-radius:var(--e-a-border-radius);overflow:hidden;width:100%}
.pb-edit-panel .pb-choose-btn{all:unset;box-sizing:border-box;display:flex;align-items:center;justify-content:center;gap:4px;
  height:var(--control-h);line-height:1;cursor:pointer;overflow:hidden;font-size:12px;font-family:inherit;
  color:var(--e-a-color-txt);background-color:var(--e-a-bg-default);
  border-top:var(--e-a-border-bold);border-bottom:var(--e-a-border-bold);border-left:var(--e-a-border-bold);border-right:none;
  transition:var(--e-a-transition-hover)}
.pb-edit-panel .pb-choose-btn:first-child{border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-choose-btn:last-child{border-right:var(--e-a-border-bold);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-choose-btn:hover{background-color:var(--e-a-bg-hover)}
.pb-edit-panel .pb-choose-btn.pb-choose-active{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}

/* ── Icon Buttons 图标切换按钮 ── */
.pb-edit-panel .pb-icon-buttons-wrap{display:flex;align-items:center;gap:5px}
.pb-edit-panel .pb-icon-buttons-label{font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;flex-shrink:0;max-width:60%;white-space:nowrap}
.pb-edit-panel .pb-icon-buttons-group{display:inline-flex;align-items:stretch;margin-inline-start:8px;height:var(--control-h);border-radius:var(--e-a-border-radius);overflow:hidden}
.pb-edit-panel .pb-icon-btn{display:flex;align-items:center;justify-content:center;width:27px;height:var(--control-h);padding:0;
  cursor:pointer;color:var(--e-a-color-txt);background-color:var(--e-a-bg-default);
  border-top:var(--e-a-border-bold);border-bottom:var(--e-a-border-bold);border-left:var(--e-a-border-bold);border-right:none;
  transition:var(--e-a-transition-hover)}
.pb-edit-panel .pb-icon-btn:first-child{border-start-start-radius:var(--e-a-border-radius);border-end-start-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-icon-btn:last-child{border-right:var(--e-a-border-bold);border-start-end-radius:var(--e-a-border-radius);border-end-end-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-icon-btn:hover{background-color:var(--e-a-bg-hover)}
.pb-edit-panel .pb-icon-btn-active{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}
.pb-edit-panel .pb-icon-btn svg{width:14px;height:14px;pointer-events:none}

/* ── Switcher 开关 ── */
.pb-edit-panel .pb-sw-wrap{display:flex;align-items:center;gap:5px}
.pb-edit-panel .pb-sw-label{font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;flex-shrink:0;max-width:60%;white-space:nowrap}
.pb-edit-panel .pb-switcher{position:relative;display:inline-block;vertical-align:top;width:54px;height:20px;margin-inline-start:8px;
  background-color:var(--e-a-bg-default);border-radius:18px;cursor:pointer;gap:0}
.pb-edit-panel .pb-switcher input[data-sw-toggle]{display:none}
.pb-edit-panel .pb-sw-track{position:relative;display:block;width:54px;height:20px;font-size:10px;
  background-color:var(--e-a-bg-active-bold);border-radius:inherit;border:none;transition:.15s ease-out;transition-property:opacity,background}
.pb-edit-panel .pb-sw-track::before,.pb-edit-panel .pb-sw-track::after{position:absolute;top:0;width:50%;text-align:center;line-height:20px;font-size:10px;transition:inherit;pointer-events:none}
.pb-edit-panel .pb-sw-track::before{content:attr(data-off);right:5px;color:var(--e-a-color-txt-muted)}
.pb-edit-panel .pb-sw-track::after{content:attr(data-on);left:5px;color:var(--e-a-btn-color);opacity:0}
.pb-edit-panel .pb-switcher input:checked + .pb-sw-track{background-color:var(--e-a-btn-bg-primary)}
.pb-edit-panel .pb-switcher input:checked + .pb-sw-track::before{opacity:0}
.pb-edit-panel .pb-switcher input:checked + .pb-sw-track::after{opacity:1}
.pb-edit-panel .pb-sw-thumb{position:absolute;top:1px;left:1px;width:18px;height:18px;z-index:1;
  background:var(--e-a-color-white);border-radius:10px;transition:left .15s ease-out;box-shadow:none}
.pb-edit-panel .pb-switcher input:checked + .pb-sw-track .pb-sw-thumb,
.pb-edit-panel .pb-switcher input:checked ~ .pb-sw-thumb{left:35px;transform:none}

/* ── Slider 滑块 ── */
.pb-edit-panel .pb-slider-wrap{display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.pb-edit-panel .pb-slider-label{font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;flex-shrink:0;max-width:60%;white-space:nowrap}
.pb-edit-panel .pb-slider-row{display:flex;align-items:center;margin-inline-start:8px;flex:1 1 auto;width:0;min-width:0}
.pb-edit-panel .pb-slider-row .pb-range{flex-grow:1;height:4px;-webkit-appearance:none;appearance:none;
  background-color:var(--e-a-border-color-bold);border-radius:5px;outline:none;cursor:pointer;min-width:40px;border:none;width:auto;padding:0}
.pb-edit-panel .pb-slider-row .pb-range::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;
  background-color:var(--e-a-color-white);border:none;border-radius:50%;cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,.3)}
.pb-edit-panel .pb-slider-row .pb-range::-moz-range-thumb{width:16px;height:16px;background-color:var(--e-a-color-white);
  border:none;border-radius:50%;cursor:pointer;box-shadow:0 1px 5px rgba(0,0,0,.3)}
.pb-edit-panel .pb-slider-row .pb-slider-val{width:21%;min-width:54px;margin-inline-start:12px;height:var(--control-h);
  padding:0 4px;text-align:center;font-size:12px;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-unit-sel{width:auto;min-width:44px;margin-inline-start:5px;height:var(--control-h);padding:0 18px 0 5px;
  font-size:10px;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius);
  background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);cursor:pointer;appearance:none;-webkit-appearance:none;flex-shrink:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23818A96'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 5px center;background-size:9px}

/* ── 颜色控件（🌐全局色 + ■原生选色，胶囊组合） ── */
.pb-edit-panel label.pb-color-label{gap:5px}
.pb-edit-panel .pb-color-wrap{display:inline-flex;align-items:stretch;gap:0;margin-inline-start:8px;height:var(--control-h);vertical-align:middle}
/* 🌐 全局色按钮：左+上+下边框 + 左圆角 */
.pb-edit-panel .pb-color-globes{flex:0 0 28px;width:28px;display:flex;align-items:center;justify-content:center;padding:0;
  border:1px solid #BABFC5;border-right:none;
  border-radius:var(--e-a-border-radius) 0 0 var(--e-a-border-radius);
  background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);cursor:pointer;transition:var(--e-a-transition-hover)}
.pb-edit-panel .pb-color-globes:hover{background-color:var(--e-a-bg-hover)}
.pb-edit-panel .pb-color-globes.pb-globes-active{color:var(--e-a-color-primary-bold);background-color:var(--e-a-bg-active-bold)}
.pb-edit-panel .pb-color-globes svg{width:13px;height:13px}
/* ■ 色块按钮：上+下+右边框 + 右圆角（触发原生 color picker） */
.pb-edit-panel .pb-color-swatch{flex:0 0 28px;width:28px;height:100%;padding:0;
  cursor:pointer;border:1px solid #BABFC5;border-left:none;
  border-radius:0 var(--e-a-border-radius) var(--e-a-border-radius) 0;
  transition:border-color .15s,box-shadow .15s;position:relative;box-sizing:border-box}
.pb-edit-panel .pb-color-swatch:hover{border-color:#8E95A0;box-shadow:0 0 0 2px rgba(0,0,0,.08)}
/* 原生 color input：隐藏但可被 JS 触发 click */
.pb-edit-panel .pb-color-native{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0,0,0,0);margin:-1px;padding:0;border:0}
/* 隐藏域：不显示 */

/* ── 全局颜色弹窗 ── */
.pb-globes-dialog-overlay{position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.4);
  display:none;align-items:center;justify-content:center}
.pb-globes-dialog-overlay.open{display:flex}
.pb-globes-dialog{background:#fff;border-radius:8px;width:300px;max-width:90vw;
  box-shadow:0 20px 60px rgba(0,0,0,.2);overflow:hidden}
.pb-globes-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;
  border-bottom:1px solid var(--line);background:#fafafa}
.pb-globes-title{font-size:13px;font-weight:700;color:var(--ink)}
.pb-globes-close{background:none;border:none;font-size:16px;cursor:pointer;color:var(--muted);
  padding:2px 6px;line-height:1;border-radius:4px}
.pb-globes-close:hover{color:var(--primary-color);background:rgba(0,0,0,.06)}
.pb-globes-settings{width:22px;height:22px;padding:0;border:none;background:none;cursor:pointer;
  color:var(--muted);border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s}
.pb-globes-settings:hover{background:rgba(0,0,0,.06);color:var(--primary)}
.pb-globes-list{padding:8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:4px;max-height:320px;overflow-y:auto}
.pb-globes-item{display:flex;align-items:center;gap:7px;padding:7px 10px;border:none;background:none;
  cursor:pointer;border-radius:5px;font-size:12px;color:var(--ink);transition:background .15s;text-align:left}
.pb-globes-item:hover{background:rgba(0,0,0,.05)}
.pb-globes-item.active{background:var(--primary);color:#fff}
.pb-globes-swatch{width:18px;height:18px;border-radius:4px;border:1px solid rgba(0,0,0,.1);flex-shrink:0}
.pb-globes-name{flex:1;font-weight:500}
.pb-globes-hex{font-size:10px;color:var(--muted);font-family:monospace}

/* ── URL / Media / Icons / Gaps ── */
.pb-edit-panel .pb-url-label{display:block;font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;margin-bottom:10px}
.pb-edit-panel .pb-url-row{display:flex;align-items:stretch;position:relative}
.pb-edit-panel .pb-url-input{flex:1;height:var(--control-h);padding:0 5px;font-size:12px;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-url-options{display:flex;gap:15px;margin-top:10px;flex-wrap:wrap}
.pb-edit-panel .pb-url-opt{display:flex;align-items:center;font-size:12px;color:var(--e-a-color-txt);font-weight:400;cursor:pointer}
.pb-edit-panel .pb-url-opt input{width:15px;margin-top:0}
.pb-edit-panel .pb-media-label{display:block;font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;margin-bottom:10px}
.pb-edit-panel .pb-media-area{display:flex;align-items:center;gap:5px}
.pb-edit-panel .pb-media-preview{width:48px;aspect-ratio:21/9;height:auto;object-fit:cover;flex-shrink:0;
  border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-active-bold)}
.pb-edit-panel .pb-media-input{flex:1;min-width:0;height:var(--control-h);padding:0 5px;font-size:12px;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-icons-label{display:block;font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;margin-bottom:10px}
.pb-edit-panel .pb-icons-row{display:flex;align-items:stretch;gap:5px}
.pb-edit-panel .pb-icons-input{flex:1;min-width:0;height:var(--control-h);padding:0 5px;font-size:12px;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-gaps-label{display:block;font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;margin-bottom:10px}
.pb-edit-panel .pb-gap-row{display:flex;align-items:center;gap:5px;margin-bottom:10px}
.pb-edit-panel .pb-gap-row:last-child{margin-bottom:0}
.pb-edit-panel .pb-gap-name{font-size:var(--control-title-size);color:var(--e-a-color-txt);width:56px;flex-shrink:0;line-height:1}
.pb-edit-panel .pb-gap-input{flex:1;min-width:0;height:var(--control-h);padding:0 5px;text-align:center;font-size:12px;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius)}

/* ── Repeater / 组控件 / 标题分隔提示 ── */
.pb-edit-panel .pb-repeater-label{font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;margin-bottom:8px}
.pb-edit-panel .pb-repeater-rows{margin:0}
.pb-edit-panel .pb-repeater-row{margin-bottom:10px;background-color:var(--e-a-bg-default);border:1px solid var(--e-a-border-color);border-radius:8px}
.pb-edit-panel .pb-repeater-header{display:flex;align-items:center;width:100%;height:38px;border-bottom:1px solid var(--e-a-border-color-bold);transition:var(--e-a-transition-hover)}
.pb-edit-panel .pb-repeater-header:hover{background-color:var(--e-a-bg-hover)}
.pb-edit-panel .pb-repeater-index{flex:1;display:flex;align-items:center;padding:0 10px;font-size:var(--control-title-size);color:var(--e-a-color-txt-accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pb-edit-panel .pb-repeater-actions{display:flex;align-items:stretch;height:100%}
.pb-edit-panel .pb-repeater-actions button{width:38px;height:38px;padding:0;display:flex;align-items:center;justify-content:center;background-color:transparent;border:none;border-inline-start:1px solid var(--e-a-border-color-bold);color:var(--e-a-color-txt);cursor:pointer;font-size:10px;transition:var(--e-a-transition-hover)}
.pb-edit-panel .pb-repeater-actions button:hover{background-color:var(--e-a-bg-hover)}
.pb-edit-panel .pb-repeater-actions .pb-repeater-del:hover{background-color:var(--e-a-bg-danger);color:var(--e-a-color-danger)}
.pb-edit-panel .pb-repeater-body{padding:8px 0 0}
.pb-edit-panel .pb-repeater-add{display:flex;align-items:center;justify-content:center;width:100%;height:var(--control-h);
  border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius);background-color:var(--e-a-bg-default);
  color:var(--e-a-color-txt);font-size:12px;font-family:inherit;cursor:pointer;transition:var(--e-a-transition-hover)}
.pb-edit-panel .pb-repeater-add:hover{background-color:var(--e-a-bg-active-bold);color:var(--e-a-color-txt-accent)}
.pb-edit-panel .pb-field-style{position:relative;margin:0 0 15px;padding:14px 12px 1px;background-color:var(--e-a-bg-default);
  border:1px solid var(--e-a-border-color-bold);border-radius:var(--e-a-border-radius)}
.pb-edit-panel .pb-field-style-title{padding:0 0 10px;margin:0 0 10px;font-size:12px;font-weight:500;color:var(--e-a-color-txt-accent);
  border-bottom:1px solid var(--e-a-border-color)}
.pb-edit-panel .pb-field-style-row{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 12px;padding:0 0 4px}
.pb-edit-panel .pb-group-body > label,.pb-edit-panel .pb-group-body > .pb-ctrl-wrap > label,
.pb-edit-panel .pb-group-body > .pb-sw-wrap,
.pb-edit-panel .pb-group-body > .pb-slider-wrap,.pb-edit-panel .pb-group-body > .pb-dimensions-wrap,
.pb-edit-panel .pb-group-body > .pb-icon-buttons-wrap,.pb-edit-panel .pb-group-body > .pb-choose-wrap{padding:0 0 12px}
.pb-edit-panel .pb-field-heading{font-size:var(--control-title-size);font-weight:bold;color:var(--e-a-color-txt-accent);line-height:1}
.pb-edit-panel .pb-field-divider{margin:0 20px;border:0;border-top:var(--e-a-border);background-color:var(--e-a-bg-default);height:15px}
.pb-edit-panel .pb-notice,.pb-edit-panel .pb-alert{font-size:12px;font-weight:300;font-style:italic;line-height:1.5;text-align:start;padding:0 20px 15px}
.pb-edit-panel .pb-notice-info,.pb-edit-panel .pb-alert-warning{padding:15px;margin:0 20px 15px;background-color:var(--e-a-bg-primary);
  border-inline-start:3px solid var(--e-a-color-primary);border-radius:0 var(--e-a-border-radius) var(--e-a-border-radius) 0;font-size:12px}
.pb-edit-panel .pb-field-desc{display:block;width:100%;margin-top:10px;font-size:11px;font-style:italic;line-height:1.4;color:var(--e-a-color-txt-muted)}
.pb-edit-panel .pb-num-input{height:var(--control-h)!important;padding:0 5px!important}
.pb-edit-panel .pb-empty-tab{display:flex;align-items:center;justify-content:center;padding:40px 20px;color:var(--e-a-color-txt-muted);font-size:12px;font-style:italic;text-align:center}
.pb-edit-panel .pb-content-field{background:var(--e-a-bg-default)}
.pb-edit-panel .pb-content-label{font-size:var(--control-title-size);color:var(--e-a-color-txt);line-height:1;margin-bottom:10px}
.pb-edit-panel .pb-content-field textarea{width:100%;border:var(--e-a-border-bold);border-radius:var(--e-a-border-radius);padding:5px;font-size:12px;line-height:1.6;min-height:90px;resize:vertical;background-color:var(--e-a-bg-default);color:var(--e-a-color-txt);font-family:inherit}
.pb-edit-panel .pb-content-field textarea:focus{outline:none;border-color:var(--e-a-border-color-focus)}
.pb-edit-panel .pb-raw-html{font-size:12px;color:var(--e-a-color-txt-muted);line-height:1.5}

/* ── 右栏：模块结构树 ── */
.mb-tree-box{flex-shrink:0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;max-height:38%}
.mb-tree-head{display:flex;align-items:center;gap:6px;padding:8px 16px;font-size:12px;font-weight:600;color:var(--ink);cursor:pointer;user-select:none;background:var(--bg-2)}
.mb-tree-head:hover{background:var(--bg-1)}
.mb-tree-head .mb-tree-caret{flex-shrink:0;opacity:.55;transition:transform .15s}
.mb-tree-box.collapsed .mb-tree-caret{transform:rotate(-90deg)}
.mb-tree-head b{margin-left:auto;font-size:10px;font-weight:700;color:#fff;background:var(--primary);min-width:18px;height:18px;padding:0 5px;border-radius:9px;display:flex;align-items:center;justify-content:center}
.mb-tree-list{overflow-y:auto;padding:2px 8px 8px}
.mb-tree-box.collapsed .mb-tree-list{display:none}
.mb-tree-empty{padding:14px 8px;text-align:center;font-size:11.5px;color:var(--muted)}
.mb-tree-item{display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:6px;cursor:pointer;font-size:12px;border:1px solid transparent;transition:background .12s,border-color .12s}
.mb-tree-item:hover{background:var(--bg-1)}
.mb-tree-item.is-active{background:rgba(37,99,235,.1);border-color:rgba(37,99,235,.35)}
.mb-tree-item.dragging{opacity:.45}
.mb-tree-item.drop-before{box-shadow:inset 0 2px 0 var(--primary)}
.mb-tree-item.drop-after{box-shadow:inset 0 -2px 0 var(--primary)}
.mb-tree-grip{color:var(--muted);opacity:.45;font-size:10px;letter-spacing:-2px;cursor:grab;flex-shrink:0}
.mb-tree-idx{flex-shrink:0;min-width:16px;text-align:center;font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.mb-tree-main{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.3}
.mb-tree-name{color:var(--ink);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mb-tree-sum{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mb-tree-kind{flex-shrink:0;font-size:9px;padding:1px 5px;border-radius:4px;line-height:1.5}
.mb-tree-kind.k-micro{background:rgba(16,185,129,.14);color:#047857}
.mb-tree-kind.k-widget{background:rgba(99,102,241,.14);color:#4338ca}
.mb-tree-ops{display:flex;gap:1px;flex-shrink:0;opacity:0;transition:opacity .12s}
.mb-tree-item:hover .mb-tree-ops,.mb-tree-item.is-active .mb-tree-ops{opacity:1}
.mb-tree-ops button{width:19px;height:19px;border:none;background:transparent;color:var(--muted);border-radius:4px;cursor:pointer;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;padding:0}
.mb-tree-ops button:hover:not(:disabled){background:rgba(0,0,0,.08);color:var(--primary-color)}
.mb-tree-ops button:disabled{opacity:.25;cursor:default}
.mb-tree-ops button.mb-danger:hover{background:rgba(239,68,68,.15);color:#E60012}

/* ── 右栏：当前选中条 ── */
.mb-sel-bar{display:flex;align-items:center;gap:7px;padding:7px 16px;background:rgba(37,99,235,.06);border-bottom:1px solid var(--line);flex-shrink:0;font-size:12px}
.mb-sel-dot{width:6px;height:6px;border-radius:50%;background:var(--primary);flex-shrink:0}
.mb-sel-name{font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mb-sel-type{margin-left:auto;font-size:10px;color:var(--muted);font-family:ui-monospace,Menlo,Consolas,monospace;flex-shrink:0}

/* 右栏加宽以容纳结构树 */
.mb-props-panel{width:344px;min-width:344px}

/* 模块生成器入口按钮（page-edit.php 左侧面板内） */
.mb-entry-btn{display:flex;align-items:center;gap:8px;margin:8px 0;padding:10px 14px;background:linear-gradient(135deg,#E60012,#B80000);color:#fff;border-radius:8px;text-decoration:none;font-size:13px;font-weight:600;transition:transform .15s,box-shadow .15s;border:1px solid rgba(230,0,18,.4)}
.mb-entry-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(37,99,235,.35)}
.mb-entry-btn svg{flex-shrink:0;opacity:.9}
.mb-entry-btn small{font-size:10px;font-weight:400;opacity:.7;margin-left:auto}

/* ── 静态页面（About / Contact / Legal / FAQ）── */
.page-prose{max-width:min(90%,1116px);margin:0 auto;font-size:14.5px;line-height:1.75;color:var(--ink-2)}
.page-prose h2{font-size:22px;font-weight:600;color:var(--ink);margin:36px 0 14px;letter-spacing:-.02em}
.page-prose h3{font-size:16px;font-weight:600;color:var(--ink);margin:24px 0 10px}
.page-prose p{margin-bottom:14px}
.page-prose ul,.page-prose ol{margin:0 0 16px 20px}
.page-prose li{margin-bottom:8px}
.page-prose a{color:#E60012;text-decoration:underline}
.page-prose .lead{font-size:16px;color:var(--muted);margin-bottom:22px;line-height:1.6}
.page-prose .notice{background:#fffbeb;border:1px solid #fde68a;color:#92400e;padding:14px 16px;border-radius:10px;margin:18px 0}
.page-hero{background:var(--primary-color);color:#fff;padding:52px 0 46px}
.page-hero h1{font-size:32px;font-weight:600;letter-spacing:-.03em;margin-bottom:10px}
.page-hero p{color:#a3a3a3;font-size:15px;max-width:560px}
.contact-grid{display:grid;gap:24px;grid-template-columns:1fr}
@media(min-width:760px){.contact-grid{grid-template-columns:1fr 1fr}}
.contact-info{display:flex;flex-direction:column;gap:18px}
.contact-item{display:flex;gap:14px;align-items:flex-start}
.contact-item svg{width:22px;height:22px;stroke:var(--primary-color);flex-shrink:0;margin-top:2px}
.contact-item b{display:block;font-size:14px;color:var(--ink);margin-bottom:2px}
.contact-item span{font-size:13px;color:var(--muted)}
.faq-list{display:flex;flex-direction:column;gap:12px;max-width:760px;margin:0 auto}
.faq-item{border:1px solid var(--line);border-radius:12px;overflow:hidden}
.faq-q{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;font-weight:600;font-size:14.5px}
.faq-a{max-height:0;overflow:hidden;transition:max-height .25s ease-out;padding:0 16px}
.faq-item.open .faq-a{max-height:500px;padding:0 16px 16px}
.faq-arrow{width:16px;height:16px;transition:transform .2s;color:var(--muted)}
.faq-item.open .faq-arrow{transform:rotate(180deg)}
.support-grid{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}
@media(min-width:760px){.support-grid{grid-template-columns:repeat(3,1fr)}}
.support-card{border:1px solid var(--line);border-radius:12px;padding:20px;transition:.15s}
.support-card:hover{border-color:var(--ink-2);transform:translateY(-2px)}
.support-card h3{font-size:15px;font-weight:600;margin:10px 0 6px}
.support-card p{font-size:13px;color:var(--muted);line-height:1.5}
.support-card svg{width:24px;height:24px;stroke:var(--primary-color)}

/* ── 后台区块编辑器 ── */
.notice{background:#f0fdf4;border:1px solid #bbf7d0;color:var(--ok);padding:10px 14px;border-radius:10px;margin-bottom:16px;font-size:14px}
.page-meta{display:grid;grid-template-columns:2fr 1.4fr 1fr;gap:12px;margin-bottom:22px}
.page-meta label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}
.page-meta input,.page-meta select{padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-size:14px;color:var(--ink);background:#fff}
.sec-title{font-size:15px;color:var(--muted);margin:6px 0 14px;font-weight:600}
.blocks{display:flex;flex-direction:column;gap:12px;margin-bottom:18px}
.bcard-edit{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden}
.bcard-edit.dragging{opacity:.5;border-style:dashed}
.bcard-head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--bg-2);border-bottom:1px solid var(--line)}
.bcard-head .handle{cursor:grab;color:var(--muted);font-size:18px;line-height:1;user-select:none}
.bcard-head .bk-type{font-weight:600;font-size:14px}
.bcard-head .bk-badge{font-size:11px;color:var(--muted);background:#fff;border:1px solid var(--line);padding:1px 7px;border-radius:999px}
.bcard-head .bk-actions{margin-left:auto;display:flex;gap:8px}
.bcard-head .bk-actions a{text-decoration:none;color:var(--ink);font-size:13px;padding:3px 7px;border:1px solid var(--line);border-radius:7px;background:#fff}
.bcard-head .bk-actions a:hover{border-color:var(--primary-color)}
.bcard-head .bk-actions a.del{color:var(--danger);border-color:#fecaca}
.bk-fields{border-top:1px solid var(--line)}
.bk-fields>summary{cursor:pointer;padding:9px 12px;font-size:13px;color:var(--muted);list-style:none}
.bk-fields>summary::-webkit-details-marker{display:none}
.bk-fields>summary:before{content:"▸ ";}
.bk-fields[open]>summary:before{content:"▾ ";}
.bk-form{padding:6px 12px 14px;display:flex;flex-direction:column;gap:10px}
.bk-form label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted)}
.bk-form input,.bk-form textarea,.bk-form select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:14px;color:var(--ink);background:#fff;font-family:inherit}
.bk-form textarea{min-height:64px;resize:vertical}
.form-foot{display:flex;gap:10px;margin-bottom:30px}
.blk-add{display:flex;align-items:center;gap:10px;padding:14px 0;font-size:14px}
.blk-add select{padding:8px 10px;border:1px solid var(--line);border-radius:8px;font-size:14px}

/* ============================================================================
   后台统一布局 —— 对齐第一次生成的高保真后台（深色侧边栏、白色顶部栏、卡片）
   ============================================================================ */
.admin-app{display:flex;min-height:100vh;background:#f5f5f5}
.admin-sidebar{width:248px;background:#1a1a1a;color:#e5e5e5;position:fixed;top:0;left:0;bottom:0;overflow-y:auto;z-index:50;display:flex;flex-direction:column}
.admin-brand{display:flex;align-items:center;gap:12px;padding:18px 20px;color:#fff;font-weight:700;font-size:16px;border-bottom:1px solid #262626}
.admin-brand-mark{width:24px;height:24px;background:#fff;border-radius:5px;position:relative}
.admin-brand-mark:before{content:"";position:absolute;left:6px;top:6px;width:6px;height:12px;background:#0f0f0f;border-radius:1px}
.admin-brand-mark:after{content:"";position:absolute;left:13px;top:9px;width:5px;height:6px;background:#0f0f0f;border-radius:1px}
.admin-brand-logo{max-height:34px;max-width:180px;object-fit:contain}
.admin-nav{padding:10px 0}
.admin-nav a{display:flex;align-items:center;gap:12px;padding:10px 20px;color:#a3a3a3;font-size:13.5px;transition:.15s;border-left:3px solid transparent}
.admin-nav a:hover,.admin-nav a.active{color:#fff;background:#1a1a1a;border-left-color:var(--primary-color)}
.admin-nav a svg{flex-shrink:0}
.admin-nav a span:first-of-type{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nav-badge{margin-inline-start:auto;background:#E60012;color:#fff;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600;line-height:1.3}
.admin-nav-separator{height:1px;background:#333;margin:4px 16px}

/* 后台侧边栏分组折叠 */
.admin-nav-group{margin-bottom:2px}
.admin-nav-group-head{display:flex;align-items:center;gap:12px;padding:10px 20px;color:#a3a3a3;font-size:13.5px;font-weight:500;cursor:pointer;user-select:none;transition:.15s;border-left:3px solid transparent}
.admin-nav-group-head svg:first-child{flex-shrink:0}
.admin-nav-group-head span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-nav-group-head:hover{color:#fff;background:#1a1a1a;border-left-color:var(--primary-color)}
.admin-nav-group.expanded .admin-nav-group-head{color:#fff;background:#1a1a1a;border-left-color:var(--primary-color)}
.admin-nav-arrow{width:14px;height:14px;transition:transform .2s,color .15s;color:#525252;flex-shrink:0;margin-left:auto}
.admin-nav-group-head:hover .admin-nav-arrow,.admin-nav-group.expanded .admin-nav-arrow{color:#a3a3a3}
.admin-nav-group.expanded .admin-nav-arrow{transform:rotate(90deg)}
.admin-nav-group-body{max-height:0;overflow:hidden;transition:max-height .25s ease-out}
.admin-nav-group.expanded .admin-nav-group-body{max-height:800px}
.admin-nav-group-body a{padding-left:25px}

/* 带聚合入口的分组：标题可点击跳转，箭头单独展开折叠 */
.admin-nav-group-head.has-hub{padding:0;gap:0;overflow:hidden}
.admin-nav-group-head.has-hub .admin-nav-group-link{flex:1;display:flex;align-items:center;gap:12px;padding:10px 0 10px 20px;color:#a3a3a3;font-size:13.5px;font-weight:500;border-left:3px solid transparent;transition:.15s}
.admin-nav-group-head.has-hub .admin-nav-group-link:hover,.admin-nav-group-head.has-hub .admin-nav-group-link.active{color:#fff;background:#1a1a1a;border-left-color:var(--primary-color)}
.admin-nav-group-head.has-hub .admin-nav-group-link svg:first-child{flex-shrink:0}
.admin-nav-group-head.has-hub .admin-nav-group-link span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-nav-group-head.has-hub .admin-nav-group-arrow{padding:10px 16px 10px 8px;color:#a3a3a3;cursor:pointer;transition:.15s;display:flex;align-items:center}
.admin-nav-group-head.has-hub .admin-nav-group-arrow:hover{color:#fff;background:#1a1a1a}
.admin-nav-group.expanded .admin-nav-group-head.has-hub .admin-nav-group-arrow svg{transform:rotate(90deg)}
.admin-nav-group.expanded .admin-nav-group-head.has-hub .admin-nav-group-link{color:#fff;background:#1a1a1a;border-left-color:var(--primary-color)}
.admin-nav-single{margin-bottom:2px}
.admin-nav-single a{display:flex;align-items:center;gap:12px;padding:10px 20px;color:#a3a3a3;font-size:13.5px;transition:.15s;border-left:3px solid transparent}
.admin-nav-single a:hover,.admin-nav-single a.active{color:#fff;background:#1a1a1a;border-left-color:var(--primary-color)}
.admin-sidebar-footer{margin-top:auto;padding:14px 20px;font-size:11.5px;line-height:1.6;color:#6b7280;border-top:1px solid #262626;letter-spacing:.2px}

/* 设置中心卡片网格 */
.settings-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:16px}
@media(min-width:640px){.settings-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:980px){.settings-grid{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1300px){.settings-grid{grid-template-columns:repeat(4,1fr)}}
.settings-card{background:#fff;border:1px solid #e5e5e5;border-radius:12px;padding:22px;transition:box-shadow .15s,border-color .15s,transform .1s}
.settings-card:hover{border-color:#d4d4d4;box-shadow:0 4px 14px rgba(0,0,0,.06);transform:translateY(-2px)}
.settings-card-icon{margin-bottom:14px}
.settings-card-icon svg{width:28px;height:28px}
.settings-card-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:6px}
.settings-card-desc{font-size:12.5px;color:var(--muted);line-height:1.5}

.admin-main{margin-left:248px;flex:1;display:flex;flex-direction:column;min-height:100vh}
.admin-topbar{height:60px;background:#fff;border-bottom:1px solid #e5e5e5;display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:40}
.admin-back{display:inline-flex;align-items:center;gap:8px;margin-right:16px;color:var(--muted);font-size:13.5px;font-weight:500;transition:color .15s;flex-shrink:0}
.admin-back:hover{color:var(--primary-color)}
.admin-breadcrumb{font-size:15px;font-weight:600;color:var(--ink);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-topbar-right{display:flex;align-items:center;gap:12px}
.admin-user{font-size:13px;color:var(--muted);max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-content{padding:24px;flex:1}

.admin-title{font-size:20px;font-weight:600;margin:0 0 20px;color:var(--ink)}
.admin-page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:12px;flex-wrap:wrap}
.admin-page-header h1{font-size:20px;font-weight:600;margin:0}
.admin-page-title{display:flex;align-items:center;gap:14px;flex-wrap:wrap;min-width:0}
.admin-page-title .admin-back{margin-right:0}
.admin-page-title .muted{font-weight:400}

.admin-card{background:#fff;border:1px solid #e5e5e5;border-radius:12px;padding:20px;margin-bottom:20px}
.admin-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.admin-card-title{font-size:15px;font-weight:600;margin:0}

/* 卡片头部（营销页面统一标题栏） */
.card-head{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:#171717;padding-bottom:12px;margin-bottom:16px;border-bottom:1px solid #f0f0f0}

/* ---------- 可折叠区块（点击展开） ---------- */
.fold{background:#fff;border:1px solid #e5e5e5;border-radius:12px;overflow:hidden;margin-bottom:20px}
.fold-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;cursor:pointer;user-select:none;transition:background .15s}
.fold-head:hover{background:#f7f7f7}
.fold-title{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600}
.fold-arrow{width:18px;height:18px;transition:transform .2s;color:#737373}
.fold.expanded .fold-arrow{transform:rotate(90deg)}
.fold-body{max-height:0;overflow:hidden;transition:max-height .25s ease-out,padding .25s ease-out}
.fold.expanded .fold-body{max-height:2200px;padding:0 16px 18px}

.admin-kpis{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:20px}
@media(min-width:900px){.admin-kpis{grid-template-columns:repeat(4,1fr)}}
.admin-kpi{background:#fff;border:1px solid #e5e5e5;border-radius:12px;padding:18px}
.admin-kpi .label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.admin-kpi .value{font-size:26px;font-weight:700;margin:8px 0 4px;letter-spacing:-.02em}
.admin-kpi .change{font-size:12px;color:var(--ok);font-weight:500}
.admin-kpi .change.down{color:var(--danger)}
.admin-kpi svg.sparkline{width:100%;height:36px;margin-top:12px}

.admin-table{width:100%;border-collapse:collapse;font-size:13.5px;table-layout:auto}
.admin-table th,.admin-table td{padding:12px 14px;border-bottom:1px solid #f0f0f0;text-align:left;vertical-align:middle}
.admin-table th{background:#fafafa;color:var(--muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em}
.admin-table tbody tr:hover{background:#fafafa}
.admin-table .actions{display:table-cell;text-align:right;vertical-align:middle;white-space:nowrap}
.admin-table .actions a{display:inline-flex;align-items:center;white-space:nowrap;font-size:12.5px;line-height:1.2;color:var(--ink);padding:5px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;margin-right:6px}
.admin-table .actions a:last-child{margin-right:0}
.admin-table .actions a:hover{border-color:var(--primary-color);background:#fafafa}
.admin-table .actions a.danger{color:var(--danger);border-color:#fecaca}
.admin-table .actions a.ok{color:var(--ok);border-color:#bbf7d0}

/* 区块库模板列表：插入到…弹窗 */
.pb-tpl-insert-btn{font-size:12.5px;line-height:1.2;color:var(--ink);padding:5px 10px;border:1px solid var(--line);border-radius:6px;background:#fff;cursor:pointer;margin:0 6px 0 0}
.pb-tpl-insert-btn:hover{border-color:var(--primary-color);background:#fafafa}
.tpl-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;display:none;align-items:center;justify-content:center;padding:20px}
.tpl-modal{width:100%;max-width:520px;max-height:calc(100vh - 40px);background:#fff;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.25);display:flex;flex-direction:column;overflow:hidden}
.tpl-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #f0f0f0}
.tpl-modal-header h3{margin:0;font-size:16px;font-weight:600}
.tpl-modal-close{width:32px;height:32px;border:none;background:transparent;border-radius:8px;font-size:22px;line-height:1;color:#737373;cursor:pointer}
.tpl-modal-close:hover{background:#f5f5f5;color:#171717}
.tpl-modal-body{padding:16px 20px;overflow-y:auto;flex:1;min-height:240px}
.tpl-modal-search{width:100%;padding:10px 14px;border:1px solid #e5e5e5;border-radius:10px;font-size:14px;margin-bottom:12px;box-sizing:border-box}
.tpl-modal-search:focus{outline:none;border-color:#a3a3a3}
.tpl-modal-list{display:flex;flex-direction:column;gap:6px}
.tpl-modal-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid #e5e5e5;border-radius:10px;cursor:pointer;transition:.15s;background:#fff}
.tpl-modal-item:hover{border-color:#a3a3a3;background:#fafafa}
.tpl-modal-item.selected{border-color:#171717;background:#f5f5f5}
.tpl-modal-item input[type="radio"]{width:18px;height:18px;margin:0;flex-shrink:0;cursor:pointer}
.tpl-modal-item-info{display:flex;flex-direction:column;gap:3px;min-width:0}
.tpl-modal-item-info b{font-size:14px;font-weight:600;color:#171717;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tpl-modal-item-info small{font-size:12px;color:#888}
.tpl-modal-empty{text-align:center;color:#a3a3a3;padding:30px 0;font-size:13px}
.tpl-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #f0f0f0;background:#fafafa}
.tpl-modal-footer .btn{font-size:13px;padding:8px 16px}

/* 客户管理表格：固定列宽 + 单行截断，确保底线对齐 */
.admin-table.users-table{table-layout:fixed}
.admin-table.users-table th,.admin-table.users-table td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-table.users-table .actions{width:200px;min-width:200px;max-width:200px;overflow:visible}
.admin-table.users-table th:nth-child(1),.admin-table.users-table td:nth-child(1){width:16%}
.admin-table.users-table th:nth-child(2),.admin-table.users-table td:nth-child(2){width:12%}
.admin-table.users-table th:nth-child(3),.admin-table.users-table td:nth-child(3){width:8%}
.admin-table.users-table th:nth-child(4),.admin-table.users-table td:nth-child(4){width:8%}
.admin-table.users-table th:nth-child(5),.admin-table.users-table td:nth-child(5){width:18%}
.admin-table.users-table th:nth-child(6),.admin-table.users-table td:nth-child(6){width:7%}
.admin-table.users-table th:nth-child(7),.admin-table.users-table td:nth-child(7){width:6%}
.admin-table.users-table th:nth-child(8),.admin-table.users-table td:nth-child(8){width:11%}
.admin-table.users-table th:nth-child(9),.admin-table.users-table td:nth-child(9){width:10%}
.admin-table.users-table th:nth-child(10),.admin-table.users-table td:nth-child(10){width:200px}

.admin-tabs{display:flex;gap:8px;border-bottom:1px solid #e5e5e5;margin-bottom:20px}
.admin-tab{padding:10px 16px;font-size:13.5px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;background:transparent}
.admin-tab:hover{color:var(--primary-color)}
.admin-tab.active{color:var(--ink);border-color:var(--primary-color);font-weight:600}
.admin-tab-panel{display:none}
.admin-tab-panel.active{display:block}

.admin-grid-2{display:grid;grid-template-columns:1fr;gap:20px;align-items:start}
@media(min-width:1100px){.admin-grid-2{grid-template-columns:1.3fr .9fr}}
.form-thumb{display:inline-flex;align-items:center;justify-content:center;width:64px;height:64px;background:#fafafa;border:1px solid #e5e5e5;border-radius:8px;overflow:hidden;margin-top:8px}
.form-thumb.logo{width:120px}
.form-thumb img{max-width:100%;max-height:100%;object-fit:contain}

.admin-form-grid{display:grid;grid-template-columns:repeat(1,1fr);gap:16px}
@media(min-width:720px){.admin-form-grid{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.admin-form-grid{grid-template-columns:repeat(3,1fr)}}
.admin-form-grid label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:#525252;font-weight:500}
.admin-form-grid input,.admin-form-grid select,.admin-form-grid textarea{padding:10px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:14px;color:var(--ink);background:#fff}
.admin-form-grid input:focus,.admin-form-grid select:focus,.admin-form-grid textarea:focus{outline:none;border-color:#a3a3a3}
.admin-form-grid textarea{min-height:90px;resize:vertical}
.admin-form-grid .span-2{grid-column:span 2}
.admin-form-grid .span-3{grid-column:span 3}
.admin-form-grid .form-submit{display:flex;align-items:flex-end;min-height:100%}
.admin-form-sticky-bar{position:sticky;bottom:0;left:0;right:0;z-index:90;display:flex;justify-content:flex-end;gap:12px;padding:14px 20px;background:rgba(255,255,255,.92);backdrop-filter:blur(6px);border-top:1px solid var(--line);margin:24px -20px -20px}

/* Cookie 按钮样式卡片 */
.cookie-style-card{background:#fafafa;border:1px solid #e5e5e5;border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:14px}
.cookie-style-row{display:flex;gap:16px;align-items:flex-end}
.cookie-style-row-full{display:block}
.cookie-color-field{flex:1 1 0;display:flex;flex-direction:column;gap:5px}
.cookie-text-field{flex:0 0 110px;display:flex;flex-direction:column;gap:5px}
.cookie-color-label{font-size:12px;color:#525252;font-weight:500}
.cookie-color-swatch{position:relative;height:44px;border-radius:14px;border:1px solid rgba(0,0,0,.12);box-shadow:inset 0 0 0 1px rgba(255,255,255,.15);overflow:hidden;cursor:pointer;transition:transform .1s}
.cookie-color-swatch:hover{transform:scale(1.02)}
.cookie-color-swatch input[type="color"]{position:absolute;inset:0;width:100%;height:100%;padding:0;margin:0;border:0;opacity:0;cursor:pointer}
.cookie-text-field input[type="text"]{height:44px;padding:0 10px;border:1px solid #d1d5db;border-radius:14px;font-size:13px;background:#fff;width:100%;box-sizing:border-box}
@media(max-width:719px){
  .cookie-style-row{flex-wrap:wrap}
  .cookie-color-field,.cookie-text-field{flex:1 1 calc(50% - 8px)}
}

/* 横向标签+输入框表单（参考 Shopify 后台风格） */
.admin-form-inline{display:grid;grid-template-columns:repeat(1,1fr);gap:16px}
@media(min-width:720px){.admin-form-inline{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1100px){.admin-form-inline{grid-template-columns:repeat(3,1fr)}}
.admin-form-inline.cols-2{grid-template-columns:repeat(2,1fr)}
.admin-form-inline.cols-3{grid-template-columns:repeat(3,1fr)}
@media(max-width:1099px){.admin-form-inline.cols-3{grid-template-columns:repeat(2,1fr)}}
@media(max-width:719px){.admin-form-inline.cols-3{grid-template-columns:1fr}}
.admin-form-inline .field-group{display:flex;align-items:center;gap:10px;min-width:0}
.admin-form-inline .field-label{flex:0 0 auto;font-size:13px;color:#525252;font-weight:500;white-space:nowrap;line-height:1}
.admin-form-inline .field-label .req{color:var(--danger);margin-left:2px}
.admin-form-inline .field-input{flex:1;min-width:0}
.admin-form-inline .field-input input,.admin-form-inline .field-input select,.admin-form-inline .field-input textarea{width:100%;padding:10px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:14px;color:var(--ink);background:#fff}
.admin-form-inline .field-input input:focus,.admin-form-inline .field-input select:focus,.admin-form-inline .field-input textarea:focus{outline:none;border-color:#a3a3a3}
.admin-form-inline .field-input .inline-checks{display:flex;flex-wrap:wrap;align-items:center;gap:20px;min-height:40px}
.admin-form-inline .field-input .inline-checks label{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:#262626;white-space:nowrap;cursor:pointer}
.admin-form-inline .field-input .inline-checks input[type="checkbox"],.admin-form-inline .field-input .inline-checks input[type="radio"]{width:16px;height:16px;cursor:pointer;margin:0;flex-shrink:0}
.admin-form-inline .field-group.span-2{grid-column:span 2}
.admin-form-inline .field-group.span-3{grid-column:span 3}
@media(max-width:719px){
  .admin-form-inline .field-group.span-2,.admin-form-inline .field-group.span-3{grid-column:span 1}
  .admin-form-inline .field-group{flex-direction:column;align-items:stretch;gap:6px}
  .admin-form-inline .field-label{white-space:normal}
}
.admin-form-inline .field-input .inline-checks.nowrap{flex-wrap:nowrap}
.admin-form-inline .field-group.checkbox-nowrap{flex-wrap:nowrap;justify-content:flex-start}
.admin-form-inline .field-group.checkbox-nowrap .field-label{flex:0 0 auto;flex-shrink:0}
.admin-form-inline .field-group.checkbox-nowrap .field-input{flex:0 0 auto;min-width:auto}
.admin-form-inline .field-group.checkbox-nowrap .field-input .inline-checks{min-height:auto;gap:10px}
.admin-form-inline .field-group.checkbox-nowrap.compact-check{align-items:center}
.admin-form-inline .field-group.checkbox-nowrap.compact-check .field-input{flex:0 0 auto;min-width:auto}
@media(max-width:719px){
  .admin-form-inline .field-group.checkbox-nowrap{flex-direction:row;align-items:center;gap:10px}
  .admin-form-inline .field-group.checkbox-nowrap .field-input{flex:0 0 auto;min-width:auto}
}

/* 颜色选择器：固定为方块，不被 100% 宽度拉长 */
.admin-form-inline .field-input input[type="color"].color-input,
.admin-form-inline input[type="color"].color-input{
  width:44px;
  height:44px;
  padding:3px;
  border:1px solid #e5e5e5;
  border-radius:8px;
  background:#fff;
  cursor:pointer;
  flex-shrink:0;
}

/* 颜色输入 + 色块组合 */
.admin-form-inline .field-input.color-combo{display:flex;align-items:center;gap:8px}
.admin-form-inline .field-input.color-combo input[type="text"]{flex:1;min-width:0}

/* 产品角标颜色：一个字段里放背景+文字两个颜色组合 */
.field-input.badge-colors{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.field-input.badge-colors .color-mini{display:flex;align-items:center;gap:6px;flex:1;min-width:120px;font-size:12px;color:#525252}
.field-input.badge-colors .color-mini input[type="text"]{flex:1;min-width:70px;padding:7px 9px;border:1px solid #d1d5db;border-radius:6px;font-size:12px}
.field-input.badge-colors .color-mini input[type="color"]{width:28px;height:28px;padding:0;border:1px solid #d1d5db;border-radius:6px;background:none;cursor:pointer;flex-shrink:0}

/* 角标列表行（支持自定义新增/删除） */
.badge-row{border:1px solid #ececec;border-radius:12px;padding:14px 16px;margin-bottom:14px;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.badge-row[data-builtin="0"]{background:#fff8f5;border-color:#fde2d6}
.badge-row-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;padding-bottom:10px;border-bottom:1px solid #f0f0f0}
.badge-row-head .badge-name{font-weight:600;font-size:13px;color:#262626}
.badge-row-head .badge-code-tag{font-size:11px;color:#8a8a8a;background:#f1f1f3;border-radius:4px;padding:2px 7px;font-family:ui-monospace,Menlo,Consolas,monospace}
.badge-row-head .badge-remove{width:22px;height:22px;border-radius:50%;border:1px solid #f3b4a6;background:#fff;color:#e2482d;font-size:15px;line-height:1;cursor:pointer;display:grid;place-items:center;flex-shrink:0}
.badge-row-head .badge-remove:hover{background:#e2482d;color:#fff}
.badge-row-fields{display:grid;grid-template-columns:minmax(140px,1.4fr) 1fr 1fr 75px 95px minmax(120px,1.1fr);gap:10px;align-items:end}
.badge-row-fields .badge-field{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#525252}
.badge-row-fields .badge-field input,
.badge-row-fields .color-mini input[type="text"]{width:100%;padding:7px 9px;border:1px solid #d1d5db;border-radius:6px;font-size:12px;box-sizing:border-box}
.badge-row-fields .color-mini{display:flex;align-items:center;gap:6px;flex-direction:row;font-size:12px;color:#525252}
.badge-row-fields .color-mini input[type="text"]{flex:1;min-width:0}
.badge-row-fields .color-mini input[type="color"]{width:28px;height:28px;padding:0;border:1px solid #d1d5db;border-radius:6px;background:none;cursor:pointer;flex-shrink:0}
.badge-code-input{flex:1;min-width:120px;padding:7px 9px;border:1px solid #d1d5db;border-radius:6px;font-size:12px;font-family:ui-monospace,Menlo,Consolas,monospace}
.badge-row.has-error{border-color:#e2482d;background:#fff0ed}
.badge-row.has-error .badge-code-input{border-color:#e2482d;background:#fff}
@media(max-width:1100px){.badge-row-fields{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.badge-row-fields{grid-template-columns:repeat(2,1fr)}}
@media(max-width:480px){.badge-row-fields{grid-template-columns:1fr}}

/* 统一保存栏（吸底） */
.sticky-save-bar{position:sticky;bottom:0;background:#fff;border-top:1px solid #ececec;padding:14px 0;margin-top:18px;z-index:5}
.sticky-save-bar .btn-primary{background:var(--primary-color);border-color:var(--primary-color);color:#fff;font-weight:600;padding:10px 26px;font-size:14px}

/* 会员设置：checkbox 字段严格水平 + 垂直居中，空间不足时换行 */
.member-level-form .field-group.checkbox-row{
  flex-wrap:nowrap;
  align-items:center;
}
.member-level-form .field-group.checkbox-row .field-label{
  align-self:center;
  line-height:1.4;
  margin-bottom:0;
}
.member-level-form .field-group.checkbox-row .field-input.inline-checks{
  flex:0 0 auto;
  min-width:auto;
  min-height:auto;
  height:auto;
  align-items:center;
}
.member-level-form .field-group.checkbox-row .field-input.inline-checks label{
  display:inline-flex;
  align-items:center;
  gap:8px;
  white-space:nowrap;
}
@media(max-width:719px){
  .member-level-form .field-group.checkbox-row{flex-wrap:wrap}
}

/* 购物设置：购物车与结账选项单行布局 */
.checkout-options-line{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.checkout-options-line .field-group{display:flex;align-items:center;gap:10px;min-width:0}
.checkout-options-line .field-label{flex:0 0 auto;font-size:13px;color:#525252;font-weight:500;white-space:nowrap;line-height:1}
.checkout-options-line .field-input input[type="number"]{width:90px;padding:10px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:14px;color:var(--ink);background:#fff}
.checkout-options-line .field-input input[type="number"]:focus{outline:none;border-color:#a3a3a3}
.checkout-options-line .field-input .inline-checks{display:flex;flex-wrap:nowrap;align-items:center;gap:20px;min-height:40px}
.checkout-options-line .field-input .inline-checks label{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:#262626;white-space:nowrap;cursor:pointer}
.checkout-options-line .field-input .inline-checks input[type="checkbox"]{width:16px;height:16px;cursor:pointer;margin:0;flex-shrink:0}
@media(max-width:719px){
  .checkout-options-line{gap:16px}
  .checkout-options-line .field-group{width:100%}
  .checkout-options-line .field-input .inline-checks{flex-wrap:wrap}
}

#descEditor{min-height:280px;background:#fff;border-radius:0 0 8px 8px}
#descEditor .ql-editor{min-height:280px;font-size:14px;line-height:1.7}
.ql-toolbar{border-radius:8px 8px 0 0;border-color:#e5e5e5 !important}
.ql-container{border-color:#e5e5e5 !important;border-radius:0 0 8px 8px}

/* 键值信息行（物流追踪 / 订单信息展示） */
.kv{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;font-size:13px;line-height:1.5;margin:0}
.kv>span{color:#737373}
.kv>b{font-weight:600;color:var(--ink)}
.kv a{color:var(--link-color);text-decoration:none}
.kv a:hover{text-decoration:underline}

/* 运单号外链：高亮、hover 变色 */
.tracking-link{display:inline-flex;align-items:center;gap:6px;font-family:ui-monospace,monospace;font-size:13px;font-weight:600;color:#E60012;background:#fff0ef;border:1px solid #fadbd9;border-radius:6px;padding:3px 8px;text-decoration:none;transition:all .15s ease}
.tracking-link::after{content:"↗";font-size:11px;opacity:.7}
.tracking-link:hover{color:#B80000;background:#fbe8e6;border-color:#f5a6a3;text-decoration:none}

/* 通用弹窗 */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:none;align-items:center;justify-content:center;z-index:1000;padding:20px}
.modal-overlay.active{display:flex}
.modal-box{background:#fff;border-radius:12px;box-shadow:0 20px 60px rgba(0,0,0,.2);width:100%;max-width:460px;max-height:90vh;overflow:auto}
.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid #f0f0f0}
.modal-header h3{margin:0;font-size:15px;font-weight:600}
.modal-close{background:none;border:none;font-size:24px;line-height:1;cursor:pointer;color:#737373;padding:0 4px}
.modal-close:hover{color:#171717}
.modal-body{padding:20px}
.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid #f0f0f0}

.admin-inline-form{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}
.admin-inline-form label{flex:1;min-width:160px;display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:#525252;font-weight:500}
.admin-inline-form label.wide{flex:2;min-width:220px}
.admin-inline-form label.medium{flex:1.5;min-width:180px}
.admin-inline-form label.narrow{flex:0 0 90px;min-width:90px;max-width:90px}
.admin-inline-form input,.admin-inline-form select{padding:10px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:14px;color:var(--ink);background:#fff}
.admin-inline-form input:focus,.admin-inline-form select:focus{outline:none;border-color:#a3a3a3}
.admin-inline-form .actions{display:flex;gap:8px;align-items:center;flex-wrap:nowrap}

.admin-section-title{font-size:14px;font-weight:600;margin:24px 0 12px;color:var(--ink)}
.admin-section-title:first-child{margin-top:0}

.admin-sticky-foot{position:sticky;bottom:0;background:#fff;border-top:1px solid #e5e5e5;padding:14px 24px;margin:24px -24px -24px;display:flex;gap:10px;justify-content:flex-end;box-sizing:border-box;max-width:calc(100% + 48px);flex-wrap:wrap}
.admin-empty{color:var(--muted);padding:30px 0}
.admin-alert{padding:12px 14px;border-radius:8px;font-size:13.5px}
.admin-alert.ok{background:#f0fdf4;color:var(--ok);border:1px solid #bbf7d0}
.admin-alert.danger{background:#fef2f2;color:var(--danger);border:1px solid #fecaca}

.admin-content .btn-ghost{background:#fff;color:var(--ink);border:1px solid var(--line-2)}
.admin-content .btn-ghost:hover{border-color:var(--primary-color);background:var(--bg-2)}

/* 登录页居中卡片 */
.admin-login-page{min-height:100vh;background:#f3f4f6;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif}
.admin-login-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;gap:24px}
.admin-login-card{width:100%;max-width:400px;background:#fff;border-radius:16px;box-shadow:0 4px 24px rgba(0,0,0,.06);border:1px solid #e5e7eb;padding:36px 32px 32px}
.admin-login-brand{display:flex;align-items:center;gap:14px;margin-bottom:26px}
.admin-login-logo{width:44px;height:44px;border-radius:10px;background:#fff;object-fit:contain;box-shadow:0 2px 8px rgba(0,0,0,.06)}
.admin-login-brand-text{display:flex;flex-direction:column;gap:2px}
.admin-login-site{font-weight:700;font-size:17px;color:#111;letter-spacing:-.01em}
.admin-login-sub{font-size:12px;color:#6b7280}
.admin-login-title{font-size:22px;font-weight:700;color:#111;margin:0 0 22px}
.admin-login-form{display:flex;flex-direction:column;gap:18px}
.admin-login-field{display:flex;flex-direction:column;gap:6px}
.admin-login-label{font-size:13px;font-weight:500;color:#374151}
.admin-login-back{margin:18px 0 0;text-align:center;font-size:13px;color:#6b7280}
.admin-login-back a{color:#374151;text-decoration:none}
.admin-login-back a:hover{color:#111;text-decoration:underline}
.admin-login-footer{text-align:center;color:#9ca3af;font-size:13px;padding-bottom:24px}

/* 后台区块编辑器在新布局下的微调 */
.admin-content .page-meta{display:grid;grid-template-columns:2fr 1.5fr 1fr;gap:14px;margin-bottom:20px;background:#fff;border:1px solid #e5e5e5;border-radius:12px;padding:16px}
.admin-content .page-meta label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:#525252;font-weight:500}
.admin-content .page-meta input,.admin-content .page-meta select{padding:10px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:14px;background:#fff}
.admin-content .bcard-edit{border:1px solid #e5e5e5;border-radius:12px;background:#fff;margin-bottom:12px}
.admin-content .bcard-head{background:#fafafa;border-bottom:1px solid #e5e5e5;padding:12px 14px}
.admin-content .bk-fields>summary{padding:10px 14px}
.admin-content .bk-form{padding:10px 14px 16px}

/* 可视化页面构建器 */
.pb-wrap{display:grid;grid-template-columns:340px 1fr;gap:20px;height:calc(100vh - 220px);min-height:560px}
@media(max-width:860px){
  .pb-wrap{grid-template-columns:1fr;height:auto;min-height:auto}
  .pb-panel{max-height:70vh;order:2}
  .pb-preview{min-height:50vh;order:1}
}
.pb-panel{background:#fff;border:1px solid #e5e5e5;border-radius:12px;padding:16px;overflow-y:auto}
.pb-section{font-size:12px;font-weight:700;color:#737373;text-transform:uppercase;letter-spacing:.04em;margin:18px 0 10px}
.pb-section:first-child{margin-top:0}
.pb-lib{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.pb-mod{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px 6px;background:#fafafa;border:1px solid #e5e5e5;border-radius:10px;font-size:12px;color:#171717;text-decoration:none;transition:.15s}
.pb-mod:hover{background:#f0f0f0;border-color:#a3a3a3}
.pb-mod-icon{width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:#171717;color:#fff;border-radius:50%;font-size:18px}
.pb-mod-icon svg{width:18px;height:18px}
.pb-mod--template{background:#fffbeb;border-color:#fde68a}
.pb-mod--template:hover{background:#fef3c7;border-color:#f59e0b}
.pb-mod--template .pb-mod-icon{background:#d97706}
.pb-mod--disabled{opacity:.6;cursor:not-allowed;background:#fafafa;border-color:#e5e5e5}
.pb-mod--disabled .pb-mod-icon{background:#a3a3a3}
.pb-mod--module{background:#fff0ef;border-color:#fadbd9;cursor:pointer}
.pb-mod--module:hover{background:#fbe8e6;border-color:#60a5fa}
.pb-mod--module .pb-mod-icon{background:#E60012}
.pb-mod--module.dragging{opacity:.5}
.pb-mod-meta{font-size:10px;color:#64748b;margin-top:2px;line-height:1}
.pb-mod--manage{background:#fff;border-color:#e5e5e5}
.pb-mod--manage:hover{background:#f0f0f0;border-color:#a3a3a3}
.pb-mod--manage .pb-mod-icon{background:#525252}
.pb-blocks{display:flex;flex-direction:column;gap:8px}
.pb-block{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:10px;padding:12px;background:#fafafa;border:1px solid #e5e5e5;border-radius:10px;cursor:pointer;transition:.15s}
.pb-block:hover,.pb-block.active{background:#fff;border-color:#171717}
.pb-block .handle{color:#a3a3a3;cursor:grab}
.pb-block-type{font-size:13.5px;font-weight:600;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pb-block-label{font-size:11px;color:#888;font-weight:400}
.pb-block-id{font-size:11px;color:#a3a3a3}
.pb-block-actions{display:flex;gap:6px;font-size:13px}
.pb-block-actions a{color:#525252;text-decoration:none}
.pb-block-actions a.danger{color:var(--danger)}
/* 旧版 .pb-fields 样式（仅限页面构建器，不污染 .pb-edit-panel） */
.pb-fields:not(.pb-edit-panel){background:#fff;border:1px solid #e5e5e5;border-top:none;border-radius:0 0 10px 10px;padding:12px;margin-top:-6px;margin-bottom:8px}
.pb-fields:not(.pb-edit-panel) label{display:flex;flex-direction:column;gap:5px;font-size:12px;color:#525252;font-weight:500;margin-bottom:10px}
.pb-fields:not(.pb-edit-panel) input,.pb-fields:not(.pb-edit-panel) select{padding:8px 10px;border:1px solid #e5e5e5;border-radius:8px;font-size:13px}
.pb-fields:not(.pb-edit-panel) textarea{padding:8px 10px;border:1px solid #e5e5e5;border-radius:8px;font-size:13px}
/* 内容区域：textarea 直接可编辑（不再依赖 Quill） */
.pb-content-field{background:#fff;border:1px solid #e5e5e5;border-radius:8px;overflow:hidden;margin-bottom:12px}
.pb-content-label{padding:10px 12px 10px;font-size:12px;font-weight:600;color:#525252}
.pb-content-field .pb-content-textarea{display:block;width:100%;border:1.5px solid #e5e7eb;border-radius:8px;resize:vertical;min-height:80px;padding:10px 12px;font-size:13px;line-height:1.6;outline:none;box-sizing:border-box;transition:border-color .15s,box-shadow .15s}
.pb-content-field .pb-content-textarea:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.08)}
.pb-content-editor{background:#fff;min-height:120px}
.pb-content-editor .ql-editor{min-height:120px;font-size:14px;line-height:1.7;padding:12px}
.pb-content-editor .ql-toolbar{border-bottom:1px solid #e5e5e5;background:#fafafa}
/* 颜色控件：🌐 + ■色块（无文本输入框）——样式由 .pb-edit-panel 作用域统一管理 */
.pb-field-style{margin:-4px 0 12px;padding:8px 10px;background:#f8f9fb;border:1px dashed #e0e3e8;border-radius:8px}
.pb-field-style-title{font-size:11px;color:#7d7d7d;margin-bottom:6px;font-weight:500}
.pb-field-style-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:10px;align-items:flex-end}
.pb-field-style-row label{margin-bottom:0!important;min-width:0}
.pb-field-style-row label:first-child{flex:none}
.pb-field-style-row input,.pb-field-style-row select{width:100%;min-width:0}
.pb-preview{background:#fff;border:1px solid #e5e5e5;border-radius:12px;overflow:hidden}
.pb-preview iframe{width:100%;height:100%;border:none}
.pb-preview-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#737373}

/* 社交联系方式：1 个直接显示，多个随机显示一个 + hover 浮层 */
.social-cell{max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.social-preview{position:relative;display:inline-flex;align-items:center;gap:6px;vertical-align:middle;z-index:1}
.social-preview:hover{z-index:100}
.social-chip{display:inline-block;padding:4px 10px;background:#f5f5f5;border:1px solid #e5e5e5;border-radius:999px;font-size:12px;color:#404040;white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}
.social-more{display:inline-block;padding:2px 7px;background:#171717;color:#fff;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap}
.social-popover{display:none;position:absolute;z-index:100;left:0;top:calc(100% + 6px);min-width:200px;max-width:300px;background:#fff;border:1px solid #e5e5e5;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);padding:8px 0}
.social-popover-fixed{display:block;position:fixed;z-index:9999;min-width:200px;max-width:320px;max-height:300px;overflow:auto;background:#fff;border:1px solid #e5e5e5;border-radius:8px;box-shadow:0 8px 30px rgba(0,0,0,.16);padding:8px 0}
.social-popover-item{display:flex;justify-content:space-between;gap:12px;padding:7px 14px;font-size:12.5px;border-bottom:1px solid #f5f5f5}
.social-popover-item:last-child{border-bottom:none}
.social-popover-label{color:var(--muted);white-space:nowrap}
.social-popover-value{color:var(--ink);font-weight:500;word-break:break-all;text-align:right}

/* 购买次数（超链接到客户订单列表） */
.purchase-cell a{display:inline-block;min-width:22px;text-align:center;font-weight:700;color:var(--brand,#E60012);text-decoration:none;padding:3px 10px;border:1px solid #fbe8e6;border-radius:6px;background:#fff0ef}
.purchase-cell a:hover{background:#fbe8e6}
.purchase-cell a[title]:hover{text-decoration:underline}

/* 管理员查看他人账户的提示 */
.admin-note{margin:0 0 18px;padding:10px 14px;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;color:#92400e;font-size:13px}

/* 社交 ID 编辑行 */
.social-edit-row{display:flex;gap:8px;align-items:center;margin-bottom:8px}
.social-edit-row select{flex:0 0 140px;padding:8px 10px;border:1px solid #e5e5e5;border-radius:8px;font-size:13px}
.social-edit-row input{flex:1;padding:8px 10px;border:1px solid #e5e5e5;border-radius:8px;font-size:13px}
.social-edit-row .btn-icon{padding:8px 10px;border:1px solid #e5e5e5;background:#fff;border-radius:8px;cursor:pointer;font-size:13px}

/* ============================================================================
   后台品牌 / 标签 / 评价 专业表单与卡片样式
   ============================================================================ */
.admin-form-section{border:1px solid #e5e5e5;border-radius:12px;background:#fff;margin-bottom:18px;overflow:hidden}
.admin-form-section-header{display:flex;align-items:center;gap:10px;padding:14px 18px;background:#fafafa;border-bottom:1px solid #e5e5e5}
.admin-form-section-header svg{width:18px;height:18px;color:var(--muted);flex-shrink:0}
.admin-form-section-header h3{font-size:14px;font-weight:600;color:var(--ink);margin:0}
.admin-form-section-body{padding:20px}

.admin-file-upload{display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap}
.admin-file-upload .upload-preview{width:120px;height:120px;border-radius:12px;border:1px dashed #d4d4d4;background:#fafafa;display:flex;align-items:center;justify-content:center;overflow:hidden;flex-shrink:0;box-shadow:inset 0 0 0 4px #fff;transition:.15s}
.admin-file-upload .upload-preview:hover{border-color:var(--primary-color);background:#f5f3ff}
.admin-file-upload .upload-preview img{width:100%;height:100%;object-fit:contain;padding:10px}
.admin-file-upload .upload-preview .empty{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#a3a3a3;background:transparent;font-size:12px;font-weight:500}
.admin-file-upload .upload-preview .empty::before{content:"";display:block;width:28px;height:28px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23a3a3a3' stroke-width='1.6'%3E%3Crect x='3' y='3' width='18' height='18' rx='2'/%3E%3Ccircle cx='8.5' cy='8.5' r='1.5'/%3E%3Cpath d='M21 15l-5-5L5 21'/%3E%3C/svg%3E") no-repeat center / contain}
.admin-file-upload .upload-control{display:flex;flex-direction:column;gap:10px;min-width:200px;justify-content:center;align-self:stretch}
.admin-file-upload input[type="file"]{display:none}
.admin-file-upload .upload-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border:1px solid var(--primary-color);border-radius:8px;background:#fff;color:var(--primary-color);font-size:13px;font-weight:600;cursor:pointer;transition:.15s;box-shadow:0 1px 2px rgba(124,58,237,.06)}
.admin-file-upload .upload-btn:hover{background:var(--primary-color);color:#fff}
.admin-file-upload .upload-hint{font-size:12px;color:var(--muted);line-height:1.5}
.admin-file-upload .upload-hint strong{color:var(--ink);font-weight:500}

/* 品牌标识卡片 */
.brand-logo-card{display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap;padding:18px;border:1px solid #e5e5e5;border-radius:12px;background:#fff}
.brand-logo-card .upload-control{flex:1;min-width:220px}
.brand-logo-card .brand-url-field{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.brand-logo-card .brand-url-field label{font-size:12.5px;color:#525252;font-weight:500}
.brand-logo-card .brand-url-field input{width:100%;padding:9px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:13px;background:#fafafa}
.brand-logo-card .brand-url-field input:focus{outline:none;border-color:var(--primary-color);background:#fff}

/* 滑动开关 */
.toggle-row{display:inline-flex;align-items:center;gap:10px;cursor:pointer;flex-wrap:wrap}
.toggle-text{font-size:12px;color:#737373;line-height:1.5}
.toggle-switch{position:relative;display:inline-flex;align-items:center;width:44px;height:24px;flex-shrink:0}
.toggle-switch input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:#e5e5e5;border-radius:24px;transition:.2s}
.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.1)}
.toggle-switch input:checked + .toggle-slider{background:#0078ff}
.toggle-switch input:checked + .toggle-slider:before{transform:translateX(20px)}
.admin-file-upload input[type="file"]{display:none}
.admin-file-upload .upload-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid #e5e5e5;border-radius:8px;background:#fff;color:var(--ink);font-size:13px;font-weight:500;cursor:pointer;transition:.15s}
.admin-file-upload .upload-btn:hover{border-color:var(--primary-color);background:#fafafa}
.admin-file-upload .upload-hint{font-size:12px;color:var(--muted)}

.admin-form-actions{display:flex;gap:10px;align-items:center;padding-top:4px}
.admin-form-actions .btn{padding:10px 22px}

.badge{border-radius:6px;padding:3px 9px;font-size:12px;font-weight:500;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.badge.ok{background:#dcfce7;color:#166534;border:1px solid #bbf7d0}
.badge.danger{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}
.badge.warning{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.badge.info{background:#fbe8e6;color:#1e40af;border:1px solid #fadbd9}
.badge.outline{background:#fff;color:var(--muted);border:1px solid #e5e5e5}
.badge.PENDING{background:#fef3c7;color:#92400e;border-color:#fde68a}
.badge.APPROVED{background:#dcfce7;color:#166534;border-color:#bbf7d0}
.badge.REJECTED{background:#fee2e2;color:#991b1b;border-color:#fecaca}
.badge.SPAM{background:#f3f4f6;color:#4b5563;border-color:#e5e7eb}

.admin-table .td-thumb{width:48px;height:48px;border-radius:8px;border:1px solid #f0f0f0;background:#fff;object-fit:contain;padding:4px}
.admin-table .td-name{font-weight:600;color:var(--ink)}
.admin-table .td-desc{color:var(--muted);font-size:12.5px;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.review-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.review-tabs a{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:8px;font-size:13px;font-weight:500;color:#525252;background:#fff;border:1px solid #e5e5e5;text-decoration:none;transition:.15s}
.review-tabs a:hover{border-color:#a3a3a3;color:var(--primary-color)}
.review-tabs a.on{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}
.review-tabs a .count{font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:#f0f0f0;color:#525252}
.review-tabs a.on .count{background:rgba(255,255,255,.2);color:#fff}

.review-card{border:1px solid #e5e5e5;border-radius:12px;background:#fff;padding:18px;margin-bottom:14px}
.review-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px}
.review-card-author{display:flex;align-items:center;gap:10px}
.review-card-avatar{width:38px;height:38px;border-radius:50%;background:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;flex-shrink:0}
.review-card-meta{font-size:12px;color:var(--muted);margin-top:2px}
.review-card-title{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:6px}
.review-card-content{color:#404040;font-size:13.5px;line-height:1.65}
.review-card-footer{display:flex;gap:10px;margin-top:14px;align-items:center;flex-wrap:wrap}
.review-card-reply{margin:14px 0 0 48px;padding:14px 16px;background:#fafafa;border:1px solid #f0f0f0;border-radius:10px}
.review-card-reply-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;font-size:13px;font-weight:600;color:var(--ink)}
.review-card-reply-content{font-size:13px;color:#525252;line-height:1.6}
.review-reply-form{margin:14px 0 0 48px}
.review-reply-form .reply-field{display:flex;gap:10px;align-items:flex-start}
.review-reply-form textarea{flex:1;min-height:80px;padding:10px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:13.5px;resize:vertical}
.review-reply-form .reply-actions{display:flex;flex-direction:column;gap:8px}
.review-stars{color:var(--brand);letter-spacing:1px;font-size:15px}

.review-summary{display:grid;grid-template-columns:140px 1fr;gap:24px;align-items:start;margin-bottom:20px}
.review-summary-score{font-size:42px;font-weight:700;line-height:1;letter-spacing:-.03em;color:var(--ink)}
.review-summary-stars{font-size:18px;color:var(--brand);margin:8px 0}
.review-summary-bars{display:flex;flex-direction:column;gap:6px}
.review-summary-bar{display:grid;grid-template-columns:40px 1fr 50px;gap:10px;align-items:center;font-size:12px;color:#525252}
.review-summary-bar .bar{height:8px;background:#f0f0f0;border-radius:4px;overflow:hidden}
.review-summary-bar .bar-fill{height:100%;background:#f59e0b;border-radius:4px}

.tag-pill{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;background:#f5f5f5;border:1px solid #e5e5e5;color:#525252;font-size:12px;font-weight:500;margin:0 6px 6px 0;transition:.15s}
.tag-pill:hover{background:#fff;border-color:#a3a3a3;color:var(--primary-color)}

.admin-filter-bar{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end;padding:14px 16px;background:#fafafa;border:1px solid #e5e5e5;border-radius:10px;margin-bottom:16px}
.admin-filter-bar label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:#525252;font-weight:500;min-width:140px;flex:1}
.admin-filter-bar label.narrow{flex:0 0 120px;min-width:120px}
.admin-filter-bar select,.admin-filter-bar input{padding:9px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:13.5px;color:var(--ink);background:#fff}
.admin-filter-bar select:focus,.admin-filter-bar input:focus{outline:none;border-color:#a3a3a3}
.admin-filter-bar .actions{display:flex;gap:8px;align-items:center}

.admin-bulk-bar{display:flex;gap:10px;align-items:flex-end;padding:14px 16px;background:#fafafa;border:1px solid #e5e5e5;border-radius:10px;margin-bottom:16px;flex-wrap:wrap}
.admin-bulk-bar label{display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:#525252;font-weight:500;width:200px;max-width:100%}
.admin-bulk-bar select{padding:9px 12px;border:1px solid #e5e5e5;border-radius:8px;font-size:13.5px;color:var(--ink);background:#fff;width:100%}
.admin-bulk-bar .actions{display:flex;gap:8px;align-items:center;padding-bottom:1px}

.admin-empty-state{text-align:center;padding:50px 20px;color:var(--muted)}
.admin-empty-state svg{width:48px;height:48px;color:#d4d4d4;margin-bottom:14px}
.admin-empty-state h4{font-size:15px;font-weight:600;color:var(--ink);margin-bottom:6px}
.admin-empty-state p{font-size:13px;margin:0}

/* 扫码支付引导弹窗 */
.qr-guide-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:16px}
.qr-guide-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.55)}
.qr-guide-card{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;border-radius:16px;padding:24px;max-width:460px;width:100%;max-height:calc(100vh - 32px);box-shadow:0 25px 70px rgba(0,0,0,.35);display:flex;flex-direction:column;overflow:hidden}
.qr-guide-close{position:absolute;top:12px;right:12px;width:32px;height:32px;border:none;background:#f0f0f0;border-radius:50%;font-size:22px;line-height:1;color:#555;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}
.qr-guide-close:hover{background:#e0e0e0;color:#000}
.qr-guide-card h3{font-size:19px;font-weight:600;margin:0 34px 14px 0;color:#111}
.qr-guide-body{overflow-y:auto;margin:0 -8px;padding:0 8px}
.qr-guide-card ol{margin:0;padding-left:22px;font-size:14px;line-height:1.85;color:#333}
.qr-guide-card ol li{margin-bottom:8px}
.qr-guide-card ol li b{font-weight:600;color:#000}
.qr-guide-nomore{display:flex;align-items:center;gap:8px;font-size:13px;color:#525252;margin:14px 0 16px;cursor:pointer}
.qr-guide-nomore input{cursor:pointer}
.qr-guide-card .btn{width:100%;justify-content:center;margin-top:auto}
@media (max-width:480px){
  .qr-guide-modal{padding:12px}
  .qr-guide-card{padding:20px;border-radius:14px}
  .qr-guide-card h3{font-size:17px}
  .qr-guide-card ol{font-size:13.5px}
}

/* ============================================================================
   新增模块化区块样式（Auguse 风格）
   ============================================================================ */
.eyebrow{font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.sec-sub{color:var(--muted);font-size:15px;max-width:560px;margin:-14px 0 28px;line-height:1.6}

/* 特性网格 */
.fg-section .sec-head{margin-bottom:18px}
.feature-grid{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.feature-grid.cols-2{grid-template-columns:repeat(2,1fr)}
.feature-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.feature-grid.cols-4{grid-template-columns:repeat(4,1fr)}
.fg-card{background:#fff;padding:28px}
.fg-eyebrow{display:block;font-size:13px;font-weight:600;color:var(--ink);margin-bottom:10px}
.fg-card h3{font-size:19px;font-weight:600;letter-spacing:-.02em;margin-bottom:10px}
.fg-card p{color:var(--muted);font-size:13.5px;line-height:1.65}
.fg-link{display:inline-block;margin-top:14px;font-size:13px;font-weight:500;color:var(--ink);border-bottom:1px solid var(--line-2);padding-bottom:2px}
.fg-link:hover{border-color:var(--primary-color)}

/* 时间线 */
.tl-section .sec-head{margin-bottom:18px}
.timeline{display:grid;gap:1px;background:var(--line);border:1px solid var(--line)}
.tl-item{display:grid;grid-template-columns:120px 1fr;gap:24px;background:#fff;padding:24px 28px;align-items:start}
.tl-year{font-size:13px;font-weight:600;color:var(--muted);font-family:ui-monospace,monospace}
.tl-content h3{font-size:17px;font-weight:600;margin-bottom:6px}
.tl-content p{color:var(--muted);font-size:13.5px;line-height:1.6}

/* 系列网格 */
.sg-section .sec-head{margin-bottom:18px}
.series-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.sg-card{display:block;background:var(--card-bg, #141414);padding:30px;border-radius:16px;border:1px solid rgba(255,255,255,.08);position:relative;transition:transform .2s,background .2s,border-color .2s}
.sg-card:hover{background:var(--card-bg-hover, #1a1a1a);border-color:rgba(255,255,255,.14);transform:translateY(-3px)}
.sg-num{display:block;font-size:11px;color:var(--muted);margin-bottom:16px;font-family:ui-monospace,monospace;letter-spacing:.04em}
.sg-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px;align-items:center}
.sg-badge{display:inline-flex;align-items:center;gap:6px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:rgba(255,255,255,.08);color:#d4af37;padding:5px 11px;border-radius:100px;border:1px solid rgba(212,175,55,.22)}
.sg-badge::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.85}
.sg-eyebrow{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:#d4af37;margin-bottom:10px;font-weight:500}
.sg-card h3{font-size:21px;font-weight:600;letter-spacing:-.02em;margin-bottom:12px;color:#fff}
.sg-card p{color:#a3a3a3;font-size:13.5px;line-height:1.7}

/* 焦点展示 */
.spotlight-section{background:var(--bg-2);border-block:1px solid var(--line)}
.spotlight{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.sp-text h2{font-size:30px;font-weight:600;letter-spacing:-.025em;margin-bottom:14px}
.sp-stats{display:flex;gap:36px;margin-top:32px}
.sp-stat span{display:block}
.sp-stat .n{font-size:26px;font-weight:600;letter-spacing:-.02em}
.sp-stat .l{font-size:12px;color:var(--muted);margin-top:3px}
.sp-card{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.sp-card-img{aspect-ratio:16/10;background:var(--bg-3);overflow:hidden}
.sp-card-img img{width:100%;height:100%;object-fit:cover}
.sp-card-body{padding:22px}
.sp-card-eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}
.sp-card-body h3{font-size:20px;font-weight:600;margin-bottom:8px}
.sp-card-body p{color:var(--muted);font-size:13.5px;line-height:1.6;margin-bottom:14px}
.sp-card-serial{font-size:13px;font-weight:600;margin-bottom:8px}
.sp-card-price{font-size:22px;font-weight:600;letter-spacing:-.02em;margin-bottom:16px}

/* 品牌起源 */
.origin-section{background:var(--primary-color);color:#fff;padding:72px 0}
.origin-section h2{font-size:36px;font-weight:600;letter-spacing:-.03em;margin-top:14px;max-width:560px}
.origin-section .lead{color:#d4d4d4;margin-top:18px;max-width:520px;font-size:15px}
.origin-section .btn-light{margin-top:28px}
.origin-section .hero-stats{margin-top:40px;border-top-color:#333}

/* 品牌起源 + 释义（双栏） */
.origin-split{background:#0a0a0a;color:#fff;padding:90px 0}
.origin-split .os-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:stretch}
.os-card{background:#141414;border:1px solid #262626;border-radius:20px;padding:42px;display:flex;flex-direction:column;justify-content:center}
.os-card .eyebrow{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#c9a227;margin-bottom:16px}
.os-card h2{font-size:38px;font-weight:600;letter-spacing:-.03em;line-height:1.12;margin-bottom:20px;max-width:460px}
.os-card .os-body{color:#a3a3a3;font-size:15px;line-height:1.75;margin-bottom:28px;max-width:480px}
.os-card .os-cta{margin-bottom:36px}
.os-stats{display:flex;gap:44px}
.os-stat span{display:block}
.os-stat .n{font-size:30px;font-weight:600;letter-spacing:-.02em;color:#fff}
.os-stat .l{font-size:12px;color:#737373;margin-top:4px;text-transform:capitalize}
.os-story{display:flex;flex-direction:column;justify-content:center;padding:20px 0}
.os-story .eyebrow{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:#c9a227;margin-bottom:18px}
.os-symbol{font-size:40px;font-weight:600;letter-spacing:-.02em;color:#fff;margin-bottom:28px}
.os-points{display:flex;flex-direction:column;gap:24px;margin-bottom:28px}
.os-point-head{font-size:16px;font-weight:600;color:#fff;margin-bottom:8px}
.os-letter{color:#c9a227;margin-inline-end:8px}
.os-ptitle{color:#fff}
.os-point p{color:#a3a3a3;font-size:14px;line-height:1.7}
.os-link{display:inline-flex;align-items:center;gap:6px;font-size:14px;font-weight:500;color:#c9a227;transition:gap .2s}
.os-link:hover{gap:10px}
@media(max-width:1020px){
  .feature-grid.cols-4,.series-grid{grid-template-columns:repeat(2,1fr)}
  .img-grid.cols-4{grid-template-columns:repeat(2,1fr)}
  .spotlight{grid-template-columns:1fr}
  .origin-section h2{font-size:28px}
  .origin-split .os-grid{grid-template-columns:1fr}
  .os-card h2{font-size:30px}
}
@media(max-width:640px){
  .feature-grid.cols-2,.feature-grid.cols-3,.feature-grid.cols-4,.series-grid{grid-template-columns:1fr}
  .img-grid.cols-2,.img-grid.cols-3,.img-grid.cols-4{grid-template-columns:1fr}
  .ve-slider-arrow{width:38px;height:38px;font-size:22px}
  .tl-item{grid-template-columns:1fr;gap:8px}
  .sp-stats{gap:20px;flex-wrap:wrap}
  .os-card{padding:28px}
  .os-stats{gap:24px}
  .os-symbol{font-size:30px}
}

/* ============================================================ 图片滑块 image_slider */
.ve-slider{position:relative;overflow:hidden;border-radius:16px;background:#0c0c0c}
.ve-slider .ve-slides{display:flex;transition:transform .6s cubic-bezier(.22,.61,.36,1);will-change:transform}
.ve-slide{position:relative;flex:0 0 100%;display:block;text-decoration:none;color:inherit}
.ve-slide img{width:100%;height:var(--slide-h,460px);object-fit:cover;display:block}
.ve-slide-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(180deg,rgba(0,0,0,.15),rgba(0,0,0,.45));padding:32px;text-align:center}
.ve-slide-inner{max-width:680px;color:#fff}
.ve-slide-title{font-size:clamp(24px,3.6vw,42px);font-weight:700;letter-spacing:-.02em;margin:0 0 10px;color:#fff;text-shadow:0 2px 18px rgba(0,0,0,.35)}
.ve-slide-sub{font-size:clamp(14px,1.4vw,18px);margin:0 0 18px;color:rgba(255,255,255,.92);text-shadow:0 1px 10px rgba(0,0,0,.3)}
.ve-slide-cta{margin-top:4px}
.ve-slider-arrow{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:50%;
  border:0;background:rgba(255,255,255,.16);color:#fff;font-size:26px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background .2s,transform .2s;z-index:3}
.ve-slider-arrow:hover{background:rgba(255,255,255,.32)}
.ve-slider-arrow.prev{left:16px}
.ve-slider-arrow.next{right:16px}
.ve-slider-dots{position:absolute;left:0;right:0;bottom:16px;display:flex;gap:8px;justify-content:center;z-index:3}
.ve-dot{width:9px;height:9px;padding:0;border:0;border-radius:999px;background:rgba(255,255,255,.5);cursor:pointer;transition:width .25s,background .25s}
.ve-dot.active{width:26px;background:#fff}

/* ============================================================ 图片格子 image_grid */
.img-grid{display:grid;gap:16px}
.img-grid.cols-2{grid-template-columns:repeat(2,1fr)}
.img-grid.cols-3{grid-template-columns:repeat(3,1fr)}
.img-grid.cols-4{grid-template-columns:repeat(4,1fr)}
.img-grid.gap-sm{gap:8px}
.img-grid.gap-md{gap:16px}
.img-grid.gap-lg{gap:28px}
.ig-cell{display:block;text-decoration:none;color:inherit;background:#fff;border:1px solid var(--line);overflow:hidden;transition:box-shadow .25s,transform .25s}
.ig-cell:hover{box-shadow:0 14px 34px rgba(0,0,0,.12);transform:translateY(-2px)}
.ig-img{overflow:hidden;background:#f2f2f2}
.ig-img img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .55s ease}
.ig-cell:hover .ig-img img{transform:scale(1.06)}
.img-grid.ratio-square .ig-img{aspect-ratio:1/1}
.img-grid.ratio-43 .ig-img{aspect-ratio:4/3}
.img-grid.ratio-169 .ig-img{aspect-ratio:16/9}
.img-grid.radius-none .ig-cell{border-radius:0}
.img-grid.radius-sm .ig-cell{border-radius:6px}
.img-grid.radius-md .ig-cell{border-radius:12px}
.img-grid.radius-lg .ig-cell{border-radius:20px}
.ig-cap{padding:12px 14px;font-size:14px;font-weight:500;color:var(--ink)}

/* 后台区块编辑器：repeater */
.pb-repeater{border:1px solid var(--line);border-radius:8px;padding:12px;background:#fafafa;margin-bottom:10px}
.pb-repeater-label{font-size:12px;color:#525252;font-weight:500;margin-bottom:10px}
.pb-repeater-rows{display:flex;flex-direction:column;gap:10px}
.pb-repeater-row{position:relative;background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px;display:flex;flex-direction:column;gap:10px}
.pb-repeater-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
.pb-repeater-index{font-size:11px;font-weight:600;color:#a3a3a3;min-width:20px}
.pb-repeater-actions{display:flex;align-items:center;gap:4px}
.pb-repeater-actions button{
  width:24px;height:24px;padding:0;display:flex;align-items:center;justify-content:center;
  border:none;background:transparent;color:#9ca3af;border-radius:4px;cursor:pointer;font-size:11px;
  opacity:0;visibility:hidden;transition:opacity .15s,visibility .15s,color .15s,background .15s
}
.pb-repeater-row:hover .pb-repeater-actions button{opacity:1;visibility:visible}
.pb-repeater-actions button:hover{background:#f3f4f6;color:#525252}
.pb-repeater-actions .pb-repeater-del:hover{background:#fee2e2;color:var(--danger)}
.pb-repeater-actions .pb-repeater-move:disabled{opacity:.2;cursor:not-allowed}
.pb-repeater-body{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-end}
.pb-repeater-field{flex:1;min-width:120px;display:flex;flex-direction:column;gap:4px;font-size:11.5px;color:#737373;margin:0}
.pb-repeater-field span{margin-bottom:2px}
.pb-repeater-field input,.pb-repeater-field textarea{padding:7px 9px;border:1px solid var(--line);border-radius:6px;font-size:13px}
.pb-repeater-add{margin-top:10px;padding:7px 12px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer;font-size:12.5px;color:var(--ink)}
.pb-repeater-add:hover{border-color:var(--primary-color)}

/* 后台区块编辑器：导航菜单自定义项 */
/* ═══ 导航菜单项编辑器（紧凑单行布局） ═══ */
.pb-nav-items-editor{
  position:relative;border:1px solid var(--line);border-radius:8px;
  padding:0;background:#fafafa;margin-bottom:10px;overflow:hidden
}
.pb-nav-items-rows{display:flex;flex-direction:column;gap:0;margin:0;padding:0}
/* 单行 —— 全横排：手柄 | 名称 | 链接 | 下拉 | 删除 */
.pb-nav-items-row{
  display:flex;align-items:center;gap:6px;
  padding:5px 8px 5px 4px;margin:0;
  border-bottom:1px solid #eee;
  background:#fff;transition:background .12s
}
.pb-nav-items-row:last-child{border-bottom:none}
.pb-nav-items-row:hover{background:#f8f9fa}
/* 拖拽手柄 */
.pb-nav-row-handle{
  flex:0 0 18px;width:18px;height:26px;display:flex;align-items:center;justify-content:center;
  color:#ccc;font-size:14px;cursor:grab;opacity:.4;transition:opacity .12s;
  user-select:none;line-height:1
}
.pb-nav-row-handle:hover{opacity:.8;color:#999}
.pb-nav-row-handle:active{cursor:grabbing}
/* 输入框 */
.pb-nav-items-row input,.pb-nav-items-row select{
  height:26px;padding:0 7px;border:1px solid var(--line);border-radius:5px;
  font-size:12px;background:#fff;box-sizing:border-box;transition:border-color .12s,box-shadow .12s
}
.pb-nav-items-row input:focus,.pb-nav-items-row select:focus{
  outline:none;border-color:var(--blue);box-shadow:0 0 0 2px rgba(59,130,246,.10)
}
/* 名称（固定宽度） */
.pb-nav-input-label{flex:0 0 90px;width:90px;min-width:0;font-weight:500;font-size:12px !important}
/* 链接（弹性填充） */
.pb-nav-input-url{flex:1 1 auto;min-width:70px;font-size:11.5px !important;color:#888}
/* 行尾操作 */
.pb-nav-row-actions{flex:0 0 auto;display:flex;align-items:center;gap:4px}
.pb-nav-input-target{
  width:68px !important;min-width:68px;padding:0 4px !important;font-size:11px !important;color:#666;background:#f5f5f5
}
/* 删除按钮（圆形小） */
.pb-nav-items-del{
  flex:0 0 22px;width:22px;height:22px;padding:0;
  border:1px solid transparent;border-radius:50%;
  background:transparent;color:#ccc;font-size:13px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:all .12s;line-height:1
}
.pb-nav-items-del:hover{background:#fef2f2;color:#E60012;border-color:#fecaca}
/* 底部操作栏 */
.pb-nav-items-actions{
  display:flex;gap:7px;padding:7px 9px;border-top:1px solid var(--line);
  background:#f0f1f3;border-radius:0 0 8px 8px
}
.pb-nav-items-add,.pb-nav-items-auto{
  flex:1 1 50%;height:28px;padding:0 12px;
  border-radius:6px;font-size:12px;text-align:left;
  cursor:pointer;display:flex;align-items:center;gap:5px;
  transition:all .12s;font-family:inherit;border:1px solid var(--line)
}
.pb-nav-btn-icon{font-size:14px;line-height:1;opacity:.6;font-weight:600}
.pb-nav-items-add{background:#fff;color:var(--ink);border-style:dashed}
.pb-nav-items-add:hover{border-color:var(--primary-color);color:var(--primary-color)}
.pb-nav-items-auto{background:#fff0ef;color:#1e40af;border-color:#fadbd9}
.pb-nav-items-auto:hover{background:#fbe8e6;border-color:#f5a6a3}

/* 开关复选框（用于 use_global_nav 等） */
.pb-checkbox-label{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--line);border-radius:10px;background:#fafafa;cursor:pointer;font-weight:500;font-size:13px;line-height:1.45;transition:.15s}
.pb-checkbox-label:hover{border-color:var(--line-2);background:#fff}
.pb-checkbox-label input[type=checkbox]{appearance:none;-webkit-appearance:none;width:44px;height:24px;background:#d4d4d4;border-radius:999px;position:relative;flex-shrink:0;cursor:pointer;outline:none;transition:.2s;margin:0}
.pb-checkbox-label input[type=checkbox]::after{content:'';position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(0,0,0,.15);transition:.2s}
.pb-checkbox-label input[type=checkbox]:checked{background:#0078ff}
.pb-checkbox-label input[type=checkbox]:checked::after{left:22px}

/* 导航链接选择器面板（嵌入在编辑器内，不遮挡内容） */
.pb-nav-picker-panel{margin-top:12px;background:#fff;border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.1);overflow:hidden}
.pb-nav-picker-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--line);background:#fafafa}
.pb-nav-picker-header h4{margin:0;font-size:14px;font-weight:600}
.pb-nav-picker-close{background:transparent;border:0;font-size:18px;color:#737373;cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px}
.pb-nav-picker-close:hover{background:#f0f0f0}
.pb-nav-picker-tabs{display:flex;gap:4px;padding:10px 14px 0;border-bottom:1px solid var(--line);background:#fafafa}
.pb-nav-picker-tab{padding:7px 12px;border:1px solid transparent;border-radius:8px 8px 0 0;background:transparent;font-size:13px;color:#525252;cursor:pointer}
.pb-nav-picker-tab:hover{background:#f0f0f0}
.pb-nav-picker-tab.active{border-color:var(--line);border-bottom-color:#fff;background:#fff;color:var(--ink);font-weight:500}
.pb-nav-picker-body{max-height:220px;overflow:auto;padding:12px 14px}
.pb-nav-picker-list{display:flex;flex-direction:column;gap:6px}
.pb-nav-picker-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:6px;cursor:pointer;background:#fff;transition:.15s}
.pb-nav-picker-item:hover{background:#f5f5f5;border-color:#d4d4d4}
.pb-nav-picker-item input[type=checkbox]{flex:0 0 auto;margin:0;width:16px;height:16px}
.pb-nav-picker-item span{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pb-nav-picker-item:hover span{white-space:normal}
.pb-nav-picker-empty{padding:20px;text-align:center;color:var(--muted);font-size:13px}
.pb-nav-picker-preview{border-top:1px solid var(--line);padding:12px 14px;background:#fafafa}
.pb-nav-picker-preview h5{margin:0 0 8px;font-size:12px;color:#525252;font-weight:500}
.pb-nav-picker-preview-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.pb-nav-picker-preview-row input{flex:1;padding:6px 9px;border:1px solid var(--line);border-radius:6px;font-size:13px;background:#fff}
.pb-nav-picker-preview-row button{flex:0 0 22px;width:22px;height:22px;border:1px solid #fecaca;background:#fff;color:var(--danger);border-radius:4px;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center}
.pb-nav-picker-preview-row button:hover{background:#fef2f2}
.pb-nav-picker-footer{display:flex;justify-content:flex-end;gap:10px;padding:12px 14px;border-top:1px solid var(--line);background:#fafafa}
.pb-nav-picker-footer button{padding:7px 14px;border-radius:6px;cursor:pointer;font-size:13px}
.pb-nav-picker-footer .btn-cancel{border:1px solid var(--line);background:#fff;color:var(--ink)}
.pb-nav-picker-footer .btn-cancel:hover{background:#f5f5f5}
.pb-nav-picker-footer .btn-confirm{border:0;background:var(--primary-color);color:#fff}
.pb-nav-picker-footer .btn-confirm:hover{background:#333}

/* Cookie 同意横幅（底部横幅样式） */
.cookie-banner{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:#fff;border-top:1px solid #e5e5e5;box-shadow:0 -6px 24px rgba(0,0,0,.08);padding:18px 24px;display:none;font-family:inherit}
.cookie-banner.is-visible{display:block}
.cookie-banner-inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:24px}
.cookie-banner-text{flex:1 1 auto;font-size:14px;line-height:1.7;color:#333;min-width:0}
.cookie-banner-text a{color:#6b21a8;text-decoration:underline;cursor:pointer}
.cookie-banner-text a:hover{text-decoration:none}
.cookie-banner-actions{flex:0 0 auto;display:flex;flex-direction:row;gap:10px;min-width:150px}
.cookie-banner-actions button{padding:10px 20px;font-size:13.5px;font-weight:600;cursor:pointer;transition:transform .1s,opacity .15s;border:0;white-space:nowrap}
.cookie-banner-actions button:active{transform:scale(.98)}
.cookie-btn-primary{background:#6b21a8;color:#fff}
.cookie-btn-primary:hover{filter:brightness(.92)}
.cookie-btn-secondary{background:#fff;color:#333;border:1px solid #d1d5db}
.cookie-btn-secondary:hover{border-color:#9ca3af;background:#f9fafb}
.cookie-settings-panel{display:none;margin-top:14px;padding:14px;background:#f9fafb;border-radius:10px;border:1px solid #e5e5e5}
.cookie-settings-panel.is-open{display:block}
.cookie-setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #e5e5e5}
.cookie-setting-row:last-child{border-bottom:0}
.cookie-setting-row label{font-size:13px;font-weight:500;color:#262626}
.cookie-setting-row small{display:block;font-size:12px;color:#737373;font-weight:400}
.cookie-setting-row input[type="checkbox"]{width:16px;height:16px}
@media(max-width:720px){
  .cookie-banner-inner{flex-direction:column;align-items:flex-start;gap:16px}
  .cookie-banner-actions{width:100%}
  .cookie-banner-actions button{flex:1;padding:11px 14px}
}

/* ---------- 店铺装修：Banner 风格选择 ---------- */
.banner-style-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.banner-style-card{position:relative;display:flex;flex-direction:column;gap:6px;border:1px solid #e5e5e5;border-radius:10px;padding:12px;cursor:pointer;background:#fff;transition:border-color .15s,box-shadow .15s;min-width:0}
.banner-style-card:hover{border-color:#c4b5fd}
.banner-style-card.is-selected{border-color:#6b21a8;box-shadow:0 0 0 3px rgba(107,33,168,.12)}
.banner-style-card input{position:absolute;top:10px;right:10px;width:16px;height:16px;margin:0;z-index:1}
.bsc-preview{display:block;height:76px;border-radius:8px;background:#f3f4f6;overflow:hidden;padding:10px}
.bsc-line{display:block;height:7px;border-radius:4px;background:#cbd5e1;margin-bottom:7px}
.bsc-line.w50{width:50%}.bsc-line.w60{width:60%}.bsc-line.w70{width:70%}.bsc-line.w80{width:80%}.bsc-line.w90{width:90%}
.bsc-1{display:flex;flex-direction:column;align-items:center;justify-content:center}
.bsc-1 .bsc-line{margin:0 0 7px}
.bsc-2{display:flex;align-items:center;gap:10px}
.bsc-2 .bsc-col{flex:1}
.bsc-2 .bsc-box{flex:0 0 38px;height:50px;border-radius:8px;background:#e2e8f0;box-shadow:0 2px 8px rgba(0,0,0,.1)}
.bsc-3{background:linear-gradient(135deg,#2b6cff,#6b21a8);position:relative}
.bsc-3 .bsc-overlay{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;padding:12px}
.bsc-light{background:rgba(255,255,255,.85)}
.bsc-name{font-size:13.5px;font-weight:600;color:#262626}
.bsc-desc{font-size:12px;color:#737373;line-height:1.5}
@media(max-width:720px){.banner-style-grid{grid-template-columns:1fr}}

/* 搜索引擎收录折叠面板 */
.se-fold{border:1px solid #e5e5e5;border-radius:12px;background:#fff}
.se-fold .fold-head{padding:14px 16px;background:#fafafa;border-bottom:1px solid transparent;transition:background .15s,border-color .15s}
.se-fold .fold-head:hover{background:#f3f3f3}
.se-fold.expanded .fold-head{border-bottom-color:#e5e5e5}
.se-fold .fold-body{padding:0 16px;max-height:0;overflow:hidden;transition:max-height .25s ease-out,padding .25s ease-out}
.se-fold.expanded .fold-body{max-height:2200px;padding:16px}

/* 搜索引擎收录行 */
.se-row{display:grid;grid-template-columns:200px 1fr 36px;gap:10px;align-items:start;margin-bottom:10px}
.se-row input,.se-row textarea{width:100%;padding:9px 11px;border:1px solid #e5e5e5;border-radius:8px;font-size:13px}
.se-row textarea{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;resize:vertical}
.se-remove{flex:0 0 36px;height:36px;border:1px solid #fecaca;background:#fff;color:#E60012;border-radius:8px;cursor:pointer;font-size:18px;line-height:1}
.se-remove:hover{background:#fef2f2}
@media(max-width:720px){.se-row{grid-template-columns:1fr 36px}.se-row input{grid-column:1}.se-row textarea{grid-column:1}}

/* ---------- 前台 Banner 风格应用 ---------- */
body.banner-style-1 .hero{text-align:center;background:radial-gradient(120% 120% at 50% 0%,#f7f5ff 0%,#fff 60%)}
body.banner-style-1 .hero .wrap{flex-direction:column;align-items:center}
body.banner-style-1 .hero .wrap>div:first-child{max-width:760px;margin:0 auto}
body.banner-style-1 .hero-visual:not(.hero-visual-photo-mode){display:none}
body.banner-style-1 .hero-cta,body.banner-style-1 .hero-stats{justify-content:center}
/* ── 风格 2：左侧强调条 + 浅���深字 + 悬浮卡片感（编辑/杂志风）── */
body.banner-style-2 .hero{background:#f8f7fc;color:var(--text-main);box-shadow:0 1px 0 var(--line);position:relative}
body.banner-style-2 .hero .wrap{grid-template-columns:1.1fr .9fr;gap:52px}
/* 文字区左侧加粗强调条 */
body.banner-style-2 .hero .wrap>div:first-child{border-left:4px solid var(--brand-accent);padding-left:28px;position:relative}
/* 深色文字 */
body.banner-style-2 .hero h1{color:#111827;font-weight:700;letter-spacing:-.04em}
body.banner-style-2 .hero .lead{color:var(--muted);font-size:15.5px;line-height:1.7}
body.banner-style-2 .hero-eyebrow{color:var(--brand-accent);font-weight:600}
body.banner-style-2 .hero-stats{border-top-color:var(--line-2)}
body.banner-style-2 .hero-stats .n{color:#111827}
body.banner-style-2 .hero-stats .l{color:var(--muted)}
/* 右侧图片：微放大 + 轻描边 */
body.banner-style-2 .hero-visual{border-radius:14px;border:1px solid var(--line);box-shadow:0 8px 30px rgba(0,0,0,.08);transform:scale(1.02);transition:transform .35s}
body.banner-style-2 .hero:hover .hero-visual{transform:scale(1.05)}
/* 按钮用实心主色（浅底上更醒目） */
body.banner-style-2 .hero-cta .btn-primary{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}
body.banner-style-2 .hero-cta .btn-outline{color:var(--text-main);border-color:var(--line-2)}
body.banner-style-2 .hero-cta .btn-outline:hover{border-color:var(--primary-color);color:var(--primary-color)}

body.banner-style-3 .hero{color:#fff;background-image:linear-gradient(135deg,var(--brand,#2b6cff) 0%,#6b21a8 100%)}
body.banner-style-3 .hero h1,body.banner-style-3 .hero .lead,body.banner-style-3 .hero .hero-eyebrow,body.banner-style-3 .hero .hero-stats .n,body.banner-style-3 .hero .hero-stats .l{color:#fff}

/* ---------- 新增区块：价格表 / 视频 / 容器 / 栅格 ---------- */
.price-table-section{padding:80px 0}
.price-table-section .sec-sub{margin:8px 0 28px}
.pt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px;align-items:stretch}
.pt-plan{position:relative;background:#fff;border:1px solid #ececec;border-radius:18px;padding:30px 26px;display:flex;flex-direction:column;transition:transform .25s ease, box-shadow .25s ease}
.pt-plan:hover{transform:translateY(-4px);box-shadow:0 18px 40px -22px rgba(0,0,0,.35)}
.pt-plan.featured{border-color:#6d5cff;box-shadow:0 18px 50px -22px rgba(109,92,255,.5)}
.pt-badge{position:absolute;top:-12px;left:26px;background:#6d5cff;color:#fff;font-size:12px;font-weight:600;padding:4px 12px;border-radius:999px}
.pt-name{font-size:15px;font-weight:600;color:#737373;letter-spacing:.02em}
.pt-price{display:flex;align-items:baseline;gap:4px;margin:10px 0 18px}
.pt-amt{font-size:34px;font-weight:800;letter-spacing:-.02em;color:#111}
.pt-period{font-size:14px;color:#999}
.pt-feats{list-style:none;margin:0 0 22px;padding:0;flex:1}
.pt-feats li{position:relative;padding:7px 0 7px 24px;font-size:14px;color:#444;border-bottom:1px solid #f3f3f3}
.pt-feats li::before{content:"";position:absolute;left:2px;top:13px;width:8px;height:8px;border-radius:50%;background:#6d5cff}
.pt-cta{margin-top:auto}
.grid-section .sec-sub{margin:8px 0 28px}
.grid-layout{display:grid;gap:22px}
.grid-layout.cols-2{grid-template-columns:repeat(2,1fr)}
.grid-layout.cols-3{grid-template-columns:repeat(3,1fr)}
.grid-layout.cols-4{grid-template-columns:repeat(4,1fr)}
.grid-layout.gap-sm{gap:12px}
.grid-layout.gap-md{gap:22px}
.grid-layout.gap-lg{gap:34px}
.grid-cell{background:#fff;border:1px solid #ececec;border-radius:16px;padding:26px;transition:transform .25s ease, box-shadow .25s ease}
.grid-cell:hover{transform:translateY(-4px);box-shadow:0 16px 36px -22px rgba(0,0,0,.3)}
.grid-cell h3{font-size:19px;letter-spacing:-.01em;margin:0 0 8px}
.grid-cell p{margin:0;color:#555;font-size:14px;line-height:1.65}
a.grid-cell-link{color:inherit;text-decoration:none;display:block}
a.grid-cell-link:hover h3{color:#6d5cff}
.container-block{padding:64px 0}
.container-block .prose{max-width:70ch}
.video-section{padding:60px 0}
.video-section .sec-head{margin-bottom:22px}
.video-frame{position:relative;width:100%;border-radius:16px;overflow:hidden;background:#000;aspect-ratio:16/9}
.video-section.ratio-43 .video-frame{aspect-ratio:4/3}
.video-section.ratio-11 .video-frame{aspect-ratio:1/1}
.video-frame iframe, .video-frame video{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;object-fit:cover}
@media(max-width:900px){
  .grid-layout.cols-4{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:640px){
  .grid-layout.cols-2, .grid-layout.cols-3, .grid-layout.cols-4{grid-template-columns:1fr}
}

/* ============================== 后台文件编辑器 ============================== */
.fe-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.fe-session{font-size:12px;color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:999px;padding:5px 12px;white-space:nowrap}
.fe-danger-tag{display:inline-block;vertical-align:middle;margin-left:8px;font-size:11px;font-weight:600;letter-spacing:.5px;color:#E60012;background:#fef2f2;border:1px solid #fecaca;border-radius:4px;padding:2px 7px}
.fe-tabs{display:flex;gap:4px;margin:0 0 16px;border-bottom:1px solid var(--line-2)}
.fe-tabs a{padding:9px 16px;font-size:14px;color:#64748b;text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}
.fe-tabs a:hover{color:var(--primary-color)}
.fe-tabs a.active{color:var(--ink);font-weight:600;border-bottom-color:#E60012}
.fe-flash{padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:14px;line-height:1.6}
.fe-flash.ok{background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46}
.fe-flash.err{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}
.fe-warn-card{border-left:3px solid #E60012}
.fe-warn-title{color:#E60012;font-size:16px;margin:0 0 10px}
.fe-shield-list{margin:10px 0 12px 18px;font-size:13px;line-height:1.95;color:#334155}
.fe-shield-list code{background:#f1f5f9;padding:1px 5px;border-radius:3px;font-size:12px}
.fe-setup-form{max-width:400px}
.btn-danger{background:#E60012;border:1px solid #E60012;color:#fff}
.btn-danger:hover{background:#b91c1c;border-color:#b91c1c;color:#fff}

.fe-layout{display:grid;grid-template-columns:280px 1fr;gap:16px;align-items:start}
.fe-sidebar{background:#fff;border:1px solid var(--line-2);border-radius:10px;overflow:hidden;position:sticky;top:16px}
.fe-search{padding:10px;border-bottom:1px solid var(--line-2)}
.fe-search input{width:100%;box-sizing:border-box;padding:7px 10px;font-size:13px;border:1px solid var(--line-2);border-radius:6px;outline:none}
.fe-search input:focus{border-color:#94a3b8}
.fe-tree{max-height:60vh;overflow:auto;padding:6px 0}
.fe-dir{padding:8px 12px 4px;font-size:11px;font-weight:600;color:#94a3b8;text-transform:uppercase;letter-spacing:.4px;word-break:break-all}
.fe-file{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 12px 6px 20px;font-size:13px;color:#334155;text-decoration:none;border-left:2px solid transparent}
a.fe-file:hover{background:#f8fafc;color:#0f172a}
a.fe-file.active{background:#fef2f2;border-left-color:#E60012;color:#b91c1c;font-weight:600}
.fe-file.disabled{color:#cbd5e1;cursor:not-allowed}
.fe-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fe-file-size{font-size:11px;color:#94a3b8;flex-shrink:0}
.fe-tree-foot{padding:8px 12px;font-size:11px;color:#94a3b8;border-top:1px solid var(--line-2);background:#f8fafc}

.fe-main{min-width:0}
.fe-empty{background:#fff;border:1px solid var(--line-2);border-radius:10px;padding:36px;color:#64748b;font-size:14px}
.fe-empty ul{margin:12px 0 0 18px;font-size:13px;line-height:2}
.fe-toolbar{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line-2);border-bottom:0;border-radius:10px 10px 0 0;padding:10px 14px;flex-wrap:wrap}
.fe-path{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;font-weight:600;color:#0f172a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:120px}
.fe-meta{font-size:12px;color:#94a3b8;white-space:nowrap}
.fe-ro{color:#E60012}
.fe-actions{display:flex;align-items:center;gap:10px}
.fe-empty-chk{font-size:12px;color:#64748b;display:flex;align-items:center;gap:4px;white-space:nowrap}
.fe-editor{display:flex;background:#0f172a;border:1px solid var(--line-2);border-radius:0 0 10px 10px;overflow:hidden;height:62vh;min-height:380px}
.fe-gutter{flex-shrink:0;width:48px;padding:12px 8px 12px 0;text-align:right;background:#111c33;color:#475569;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;overflow:hidden;white-space:pre;user-select:none}
.fe-editor textarea{flex:1;min-width:0;border:0;outline:none;resize:none;padding:12px 14px;background:#0f172a;color:#e2e8f0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.6;tab-size:2;white-space:pre;overflow:auto}
.fe-backups{margin-top:16px}
.fe-backups h2{font-size:15px;margin:0 0 10px}
.fe-log{background:#0f172a;color:#cbd5e1;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:12px;line-height:1.75;padding:14px;border-radius:8px;max-height:56vh;overflow:auto;white-space:pre-wrap;word-break:break-all;margin:0}
.fe-log-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.fe-log-head h2{margin:0;font-size:15px}
@media(max-width:1000px){
  .fe-layout{grid-template-columns:1fr}
  .fe-sidebar{position:static}
  .fe-tree{max-height:240px}
}

/* ============================== 文件编辑器设置页美化 ============================== */
.fe-settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.fe-set-card{transition:box-shadow .2s}
.fe-set-card:hover{box-shadow:0 2px 12px rgba(0,0,0,.06)}
.fe-set-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.fe-set-card-head h2{margin:0;font-size:16px}
.fe-set-badge{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.4px;padding:2px 9px;border-radius:999px}
.fe-set-badge.danger{color:#fff;background:#E60012}
.fe-set-badge.warn{color:#b45309;background:#fef3c7;border:1px solid #fcd34d}
.fe-set-badge.info{color:#0369a1;background:#e0f2fe;border:1px solid #bae6fd}
.fe-set-desc{font-size:13px;color:#64748b;line-height:1.6;margin:0 0 14px}
.fe-set-danger-zone{border-color:#fecaca;background:#fefafa}
.fe-chpass-form .fe-pw-group{margin-bottom:10px}

/* 密码输入框 + 眼睛按钮（现代内嵌风格） */
.fe-pw-group{display:flex;flex-direction:column;margin-bottom:16px;position:relative}
.fe-pw-label{display:block;font-size:13px;color:#374151;margin-bottom:6px;font-weight:500}
.fe-input-wrap{position:relative;display:flex;align-items:center}
.fe-pw-input{width:100%;height:44px;padding:0 42px 0 14px;border:1px solid #d1d5db;border-radius:8px;font-size:14px;color:#1f2937;background:#fff;outline:none;transition:border-color .2s,box-shadow .2s;box-sizing:border-box;font-family:-apple-system,"Microsoft YaHei",sans-serif}
.fe-pw-input::placeholder{color:#9ca3af}
.fe-pw-input:focus{border-color:#6366f1;box-shadow:0 0 0 3px rgba(99,102,241,.12)}
.fe-eye-btn{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:34px;height:34px;border:none;border-radius:6px;background:transparent;color:#9ca3b8;cursor:pointer;transition:background .15s,color .15s;padding:0;z-index:10;pointer-events:auto}
.fe-eye-btn:hover{background:#f3f4f6;color:#4b5563}
.fe-eye-btn:active{background:#e5e7eb}

@media(max-width:768px){
  .fe-settings-grid{grid-template-columns:1fr}
}

/* 文件树中文描述 */
.fe-file-desc{font-size:11px;color:#94a3b8;font-weight:400;margin-left:4px}
.fe-file.active .fe-file-desc{color:#f87171;font-weight:500}

/* ==========================================================================
   可视化网站构建器（Builder）：设计控制系统 + 组件库
   前缀约定： .bz-*  组件      .bz-design / .bz-anim-*  高级设计层
   ========================================================================== */

/* ── 1. 响应式显隐（断点与站点平板断点 641–1020px 一致）── */
@media (max-width:640px){ .bz-hide-mobile{display:none!important} .cs-hide-mobile{display:none!important} }
@media (min-width:641px) and (max-width:1020px){ .bz-hide-tablet{display:none!important} .cs-hide-tablet{display:none!important} }
@media (min-width:1021px){ .bz-hide-desktop{display:none!important} .cs-hide-desktop{display:none!important} }

/* ── 2. 入场动画 ── */
.bz-anim{animation-duration:var(--bz-anim-dur,.8s);animation-delay:var(--bz-anim-delay,0s);animation-fill-mode:both;animation-timing-function:cubic-bezier(.22,1,.36,1)}
@media (prefers-reduced-motion:reduce){ .bz-anim{animation:none!important} }
.bz-anim-fadeIn{animation-name:bzFadeIn}
.bz-anim-fadeInUp{animation-name:bzFadeInUp}
.bz-anim-fadeInDown{animation-name:bzFadeInDown}
.bz-anim-fadeInLeft{animation-name:bzFadeInLeft}
.bz-anim-fadeInRight{animation-name:bzFadeInRight}
.bz-anim-zoomIn{animation-name:bzZoomIn}
.bz-anim-zoomOut{animation-name:bzZoomOut}
.bz-anim-flipInX{animation-name:bzFlipInX;backface-visibility:visible}
.bz-anim-bounceIn{animation-name:bzBounceIn}
@keyframes bzFadeIn{from{opacity:0}to{opacity:1}}
@keyframes bzFadeInUp{from{opacity:0;transform:translateY(36px)}to{opacity:1;transform:none}}
@keyframes bzFadeInDown{from{opacity:0;transform:translateY(-36px)}to{opacity:1;transform:none}}
@keyframes bzFadeInLeft{from{opacity:0;transform:translateX(-44px)}to{opacity:1;transform:none}}
@keyframes bzFadeInRight{from{opacity:0;transform:translateX(44px)}to{opacity:1;transform:none}}
@keyframes bzZoomIn{from{opacity:0;transform:scale(.86)}to{opacity:1;transform:none}}
@keyframes bzZoomOut{from{opacity:0;transform:scale(1.14)}to{opacity:1;transform:none}}
@keyframes bzFlipInX{from{opacity:0;transform:perspective(600px) rotateX(70deg)}to{opacity:1;transform:perspective(600px) rotateX(0)}}
@keyframes bzBounceIn{0%{opacity:0;transform:scale(.6)}60%{opacity:1;transform:scale(1.06)}100%{transform:scale(1)}}

/* ── 3. 叠加遮罩 / 形状分隔 / 粘性 ── */
.bz-has-overlay::before{content:"";position:absolute;inset:0;background:var(--bz-overlay);pointer-events:none;z-index:0}
.bz-has-overlay > *:not(style){position:relative;z-index:1}
.bz-divider-shape{position:absolute;left:0;width:100%;overflow:hidden;line-height:0;pointer-events:none;z-index:2}
.bz-divider-shape svg{display:block;width:100%;height:100%}
.bz-divider-top{top:0}
.bz-divider-bottom{bottom:0;transform:rotate(180deg)}
.bz-sticky{will-change:transform}

/* ── 4. 组件通用骨架 ── */
.bz{position:relative}
.bz .wrap{max-width:1280px;margin-left:auto;margin-right:auto;padding-left:20px;padding-right:20px}
.bz-full{width:100%}
.bz-section-title{font-size:clamp(22px,3vw,32px);font-weight:700;margin:0 0 8px;color:var(--b-title-color,inherit)}
.bz-section-sub{margin:0 0 18px;color:var(--b-body-color,#6b7280);font-size:15px}
.bz-section-head{margin-bottom:20px}
.bz-grid{display:grid;gap:20px}
.bz-grid.cols-1{grid-template-columns:1fr}
.bz-grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.bz-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.bz-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width:1020px){ .bz-grid.cols-4{grid-template-columns:repeat(2,minmax(0,1fr))} .bz-grid.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media (max-width:640px){ .bz-grid.cols-2,.bz-grid.cols-3,.bz-grid.cols-4{grid-template-columns:1fr} }
.bz-icon{display:inline-flex;align-items:center;justify-content:center;line-height:1}
.bz-icon img{width:1em;height:1em;object-fit:contain}
.bz-icon svg{width:1em;height:1em}

/* ── 5. 分区容器 section ── */
.bz-section-inner{display:flex;flex-wrap:wrap}
.bz-col{min-width:0}
.bz-col-img{width:100%;height:auto;border-radius:10px;display:block;margin-bottom:12px}
.bz-col-title{font-size:18px;font-weight:650;margin:0 0 8px}
.bz-col-body{font-size:14.5px;line-height:1.75;color:inherit;opacity:.92}
.bz-col-body p:last-child{margin-bottom:0}
.bz-col-btn{display:inline-block;margin-top:12px;padding:9px 18px;border-radius:999px;background:#111827;color:#fff;font-size:13.5px;font-weight:600;text-decoration:none;transition:transform .2s,opacity .2s}
.bz-col-btn:hover{transform:translateY(-1px);opacity:.9}
.bz-col-empty{padding:28px;border:1px dashed #cbd5e1;border-radius:12px;color:#94a3b8;font-size:13px;text-align:center}
@media (max-width:640px){ .bz-stack-mobile > .bz-col{flex:1 1 100%!important} }

/* ── 6. 标题 heading ── */
.bz-heading-text{margin:0;line-height:1.25;color:var(--b-title-color,inherit)}
.bz-heading-link{color:inherit;text-decoration:none}
.bz-heading-link:hover{text-decoration:underline}
.bz-heading-sep{display:block;height:3px;border-radius:2px;margin:14px 0}
.bz-heading-sub{margin:10px 0 0;color:var(--b-body-color,#6b7280);font-size:15.5px;line-height:1.7}

/* ── 7. 文本编辑器 text_editor ── */
.bz-text{font-size:15.5px;line-height:1.85;color:var(--b-body-color,inherit)}
.bz-text p:last-child{margin-bottom:0}
.bz-dropcap > p:first-of-type::first-letter{float:left;font-size:3.4em;line-height:.86;font-weight:700;padding:4px 10px 0 0;color:var(--b-title-color,#111827)}

/* ── 8. 图片 image ── */
.bz-img-figure{margin:0;display:inline-block;max-width:100%}
.bz-img{max-width:100%;height:auto;display:block;transition:transform .45s cubic-bezier(.22,1,.36,1),filter .45s,box-shadow .35s}
.bz-img-hover-zoom:hover{transform:scale(1.05)}
.bz-img-hover-lift:hover{transform:translateY(-8px);box-shadow:0 20px 44px rgba(0,0,0,.18)}
.bz-img-hover-gray{filter:grayscale(1)}
.bz-img-hover-gray:hover{filter:grayscale(0)}
.bz-img-cap{margin-top:10px;font-size:13px;color:#6b7280}

/* ── 9. 按钮 button ── */
.bz-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;background:#111827;color:#fff;text-decoration:none;font-weight:600;border-radius:999px;transition:transform .2s,box-shadow .25s,opacity .2s;cursor:pointer}
.bz-btn:hover{transform:translateY(-2px);opacity:.94}
.bz-btn-sm{padding:8px 16px;font-size:13px}
.bz-btn-md{padding:11px 24px;font-size:14.5px}
.bz-btn-lg{padding:14px 32px;font-size:16px}
.bz-btn-xl{padding:18px 42px;font-size:17.5px}
.bz-btn-full{display:flex;width:100%}
.bz-btn-icon{font-size:1.1em}

/* ── 10. 间距 spacer ── */
.bz-spacer{height:var(--bz-sp,48px)}
@media (max-width:640px){ .bz-spacer{height:var(--bz-sp-m,var(--bz-sp,48px))} }

/* ── 11. 分隔线 divider ── */
.bz-hr{border:0;border-top:1px solid #e5e7eb;margin:0}
.bz-divider-text{display:flex;align-items:center;gap:14px}
.bz-divider-text .bz-divider-line{flex:1;border-top:1px solid #e5e7eb;display:block}
.bz-divider-label{font-size:13px;color:#6b7280;white-space:nowrap;letter-spacing:.04em}

/* ── 12. 图标盒 icon_box ── */
.bz-ib-card{display:block;padding:22px;border-radius:14px;background:#fff;border:1px solid #eef0f4;text-decoration:none;color:inherit;transition:transform .28s,box-shadow .28s,border-color .28s}
.bz-ib-card:hover{transform:translateY(-4px);box-shadow:0 14px 34px rgba(15,23,42,.08);border-color:#e2e8f0}
.bz-ib-icon{margin-bottom:12px;line-height:1}
.bz-ib-title{margin:0 0 6px;font-size:16.5px;font-weight:650}
.bz-ib-body{margin:0;font-size:14px;line-height:1.7;color:#6b7280}
.bz-ib-left .bz-ib-card{display:grid;grid-template-columns:auto 1fr;gap:14px;align-items:start}
.bz-ib-left .bz-ib-icon{margin:0}
.bz-ib-left .bz-ib-title,.bz-ib-left .bz-ib-body{grid-column:2}

/* ── 13. 图文盒 image_box ── */
.bz-imb-card{display:block;border-radius:14px;overflow:hidden;background:#fff;border:1px solid #eef0f4;text-decoration:none;color:inherit;transition:transform .28s,box-shadow .28s}
.bz-imb-card:hover{transform:translateY(-4px);box-shadow:0 16px 38px rgba(15,23,42,.10)}
.bz-imb-media{width:100%;overflow:hidden;background:#f3f4f6}
.bz-imb-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s cubic-bezier(.22,1,.36,1)}
.bz-imb-card:hover .bz-imb-media img{transform:scale(1.06)}
.bz-imb-body{padding:16px 18px 20px}
.bz-imb-body h3{margin:0 0 6px;font-size:16.5px;font-weight:650}
.bz-imb-body p{margin:0;font-size:14px;line-height:1.7;color:#6b7280}

/* ── 14. 客户评价 testimonial ── */
.bz-ts-card{margin:0;padding:24px;border-radius:16px;background:#fff;border:1px solid #eef0f4;box-shadow:0 4px 18px rgba(15,23,42,.04)}
.bz-ts-stars{font-size:15px;letter-spacing:2px;margin-bottom:10px}
.bz-ts-card blockquote{margin:0 0 16px;font-size:15px;line-height:1.8;color:#374151;font-style:italic}
.bz-ts-meta{display:flex;align-items:center;gap:12px}
.bz-ts-avatar{width:42px;height:42px;border-radius:50%;object-fit:cover;flex:0 0 auto}
.bz-ts-meta b{display:block;font-size:14px}
.bz-ts-meta small{display:block;font-size:12.5px;color:#9ca3af;margin-top:2px}

/* ── 15. 折叠面板 accordion（原生 details，零 JS）── */
.bz-acc{border:1px solid var(--bz-acc-border,#e5e7eb);border-radius:14px;overflow:hidden;background:#fff}
.bz-acc-item + .bz-acc-item{border-top:1px solid var(--bz-acc-border,#e5e7eb)}
.bz-acc-item > summary{list-style:none;cursor:pointer;padding:16px 48px 16px 20px;font-weight:600;font-size:15px;position:relative;-webkit-user-select:none;user-select:none;transition:background .2s}
.bz-acc-item > summary::-webkit-details-marker{display:none}
.bz-acc-item > summary:hover{background:#f9fafb}
.bz-acc-mark{position:absolute;right:20px;top:50%;width:11px;height:11px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:translateY(-70%) rotate(45deg);transition:transform .25s;opacity:.55}
.bz-acc-item[open] .bz-acc-mark{transform:translateY(-30%) rotate(225deg)}
.bz-acc-body{padding:0 20px 18px;font-size:14.5px;line-height:1.8;color:#4b5563}
.bz-acc-body p:last-child{margin-bottom:0}

/* ── 16. 数字计数器 counter ── */
.bz-ct-cell{text-align:center}
.bz-ct-num{font-size:clamp(28px,4.5vw,44px);font-weight:750;line-height:1.1;letter-spacing:-.02em;color:var(--b-title-color,inherit)}
.bz-ct-fix{font-size:.55em;font-weight:600;opacity:.75}
.bz-ct-label{margin-top:6px;font-size:13.5px;color:#6b7280;letter-spacing:.04em}

/* ── 17. 进度条 progress_bar ── */
.bz-pb{display:grid;gap:16px}
.bz-pb-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:7px;font-size:14px;font-weight:600}
.bz-pb-pct{font-size:13px;color:#6b7280;font-weight:600}
.bz-pb-track{width:100%;border-radius:999px;overflow:hidden}
.bz-pb-fill{height:100%;border-radius:999px;transition:width .9s cubic-bezier(.22,1,.36,1)}

/* ── 18. 图标列表 icon_list ── */
.bz-il{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.bz-il-inline{display:flex;flex-wrap:wrap;gap:12px 26px}
.bz-il-item{display:flex;align-items:center;gap:10px;font-size:14.5px}
.bz-il-item a{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:10px}
.bz-il-ico{flex:0 0 auto;font-size:16px;line-height:1}

/* ── 19. 社交图标 social_icons ── */
.bz-so{display:inline-flex;flex-wrap:wrap;gap:12px;align-items:center}
.bz-so-item{width:var(--bz-so-size,40px);height:var(--bz-so-size,40px);display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--bz-so-bg,#111827);color:var(--bz-so-color,#fff);text-decoration:none;font-size:calc(var(--bz-so-size,40px) * .45);transition:transform .22s,opacity .22s}
.bz-so-item:hover{transform:translateY(-3px);opacity:.88}
.bz-so-circle .bz-so-item{border-radius:50%}
.bz-so-rounded .bz-so-item{border-radius:10px}
.bz-so-square .bz-so-item{border-radius:0}
.bz-so-item span{font-size:13px;font-weight:600}

/* ── 20. 提示框 alert ── */
.bz-alert{display:flex;gap:12px;padding:14px 18px;border-radius:12px;border-left:4px solid;font-size:14.5px;line-height:1.7}
.bz-alert-ico{flex:0 0 auto;font-size:16px;line-height:1.5}
.bz-alert-body b{display:block;margin-bottom:4px;font-size:15px}
.bz-alert-body p:last-child{margin-bottom:0}
.bz-alert-info{background:#fff0ef;color:#1e40af;border-left-color:#3b82f6}
.bz-alert-success{background:#ecfdf5;color:#065f46;border-left-color:#10b981}
.bz-alert-warning{background:#fffbeb;color:#92400e;border-left-color:#f59e0b}
.bz-alert-danger{background:#fef2f2;color:#991b1b;border-left-color:#E60012}

/* ── 21. 星级评分 star_rating ── */
.bz-rating-title{font-size:15px;font-weight:600;margin-bottom:6px}
.bz-rating-stars{letter-spacing:3px;line-height:1.2}
.bz-rating-cap{margin-top:6px;font-size:13px;color:#6b7280}

/* ── 22. 属性面板：高级设计折叠组 ── */
.pb-design-group{margin-top:10px;border:1px solid #e5e7eb;border-radius:10px;background:#fbfcfe;overflow:hidden}
.pb-design-group > summary{cursor:pointer;padding:10px 14px;font-size:12.5px;font-weight:600;color:#334155;-webkit-user-select:none;user-select:none;list-style:none;position:relative;transition:background .18s}
.pb-design-group > summary::-webkit-details-marker{display:none}
.pb-design-group > summary::after{content:"";position:absolute;right:14px;top:50%;width:8px;height:8px;border-right:2px solid #94a3b8;border-bottom:2px solid #94a3b8;transform:translateY(-70%) rotate(45deg);transition:transform .22s}
.pb-design-group[open] > summary::after{transform:translateY(-30%) rotate(225deg)}
.pb-design-group > summary:hover{background:#f1f5f9}
.pb-design-body{padding:6px 14px 14px;border-top:1px solid #eef2f7;background:#fff}

/* ── 23. 三分区首页画布（仅可视化编辑时可见）── */
.bz-region{position:relative}
body.ve-active .bz-region{outline:1px dashed rgba(99,102,241,.35);outline-offset:-1px;min-height:70px;padding-top:22px;margin-bottom:10px}
body.ve-active .bz-region::before{content:attr(data-region-label);position:absolute;top:0;left:0;z-index:9;background:#6366f1;color:#fff;font-size:10.5px;font-weight:600;letter-spacing:.06em;padding:3px 10px;border-radius:0 0 8px 0;pointer-events:none}
.bz-region-empty{display:none}
body.ve-active .bz-region-empty{display:flex;align-items:center;justify-content:center;min-height:104px;margin:8px 12px 12px;border:2px dashed #c7d2fe;border-radius:14px;color:#818cf8;font-size:12.5px;font-weight:500;text-align:center;line-height:1.7;background:rgba(238,242,255,.55);padding:12px}

/* 组件空内容占位（仅编辑器 / 预览环境输出） */
.bz-widget-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:76px;margin:6px 0;padding:16px;border:1.5px dashed #cbd5e1;border-radius:12px;background:#f8fafc;color:#94a3b8;font-size:13px;font-weight:500;text-align:center}
.bz-widget-empty small{font-size:11.5px;color:#b4bfcd;font-weight:400}

/* ==========================================================================
   高级面板 — 区块级通用样式（cs-* 前缀）
   ========================================================================== */

/* 整体链接包裹：让整个区块可点击 */
.cs-block-link{display:block;text-decoration:none;color:inherit;position:relative;z-index:1}
.cs-block-link:hover,.cs-block-link:focus{text-decoration:none;outline:none}
.cs-block-content > .cs-block-link{display:contents} /* 内容区内的链接不破坏布局 */
