/* 分组分桶（后置版）样式 · 作用于已保存大底，不涉及 K12 */
.gb-overlay{position:fixed;inset:0;z-index:9997;background:linear-gradient(180deg,#0a1626,#0b1a2c 42%,#081220);display:none;flex-direction:column;overflow:hidden}
.gb-overlay.open{display:flex}
.gb-topbar{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:10px;padding:11px 13px;background:rgba(8,18,32,.94);border-bottom:1px solid rgba(125,211,252,.18)}
.gb-back{appearance:none;border:1px solid rgba(125,211,252,.4);background:rgba(20,40,64,.6);color:#cde8ff;border-radius:9px;padding:7px 11px;font-size:13px;font-weight:700}
.gb-titles{min-width:0;flex:1}
.gb-title{font-size:17px;font-weight:800;color:#eef6ff;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gb-sub{font-size:11px;color:#93b4d4;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gb-body{flex:1;overflow-y:auto;padding:13px 11px 96px;-webkit-overflow-scrolling:touch}
.gb-sec-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;color:#ffd98a;margin:16px 2px 10px;border-left:4px solid #f5b942;padding-left:9px}
.gb-sec-title:first-child{margin-top:2px}
.gb-sec-note{font-size:11px;color:#8fb0d0;line-height:1.6;margin:0 2px 10px}

/* 维度板块色系（A青 B紫 C琥珀 D绿，循环） */
.gb-dim{--dim:#22d3ee;--dim-soft:rgba(34,211,238,.13);border:1.6px solid rgba(34,211,238,.5);border-radius:14px;padding:11px;margin-bottom:15px;background:rgba(10,22,38,.55)}
.gb-dim[data-dim="B"]{--dim:#c084fc;--dim-soft:rgba(192,132,252,.13);border-color:rgba(192,132,252,.5)}
.gb-dim[data-dim="C"]{--dim:#fbbf24;--dim-soft:rgba(251,191,36,.13);border-color:rgba(251,191,36,.5)}
.gb-dim[data-dim="D"]{--dim:#34d399;--dim-soft:rgba(52,211,153,.13);border-color:rgba(52,211,153,.5)}
.gb-dim-head{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:11px}
.gb-dim-badge{appearance:none;border:none;border-radius:9px;background:var(--dim,#22d3ee);color:#06121f;font-weight:900;font-size:14px;padding:6px 11px}
.gb-dim-name{font-size:15px;font-weight:800;color:#fff}
.gb-dim-meta{font-size:11px;color:var(--dim);width:100%;padding-left:2px}
.gb-dim-actions{display:flex;gap:8px;margin-left:auto}
.gb-linkbtn{appearance:none;border:1px solid var(--dim);background:var(--dim-soft);color:#eaf4ff;border-radius:8px;font-size:11px;font-weight:700;padding:6px 9px}

/* 指标合并方块 */
.gb-ind{border:1px solid color-mix(in srgb,var(--dim) 35%,transparent);border-radius:12px;overflow:hidden;margin-bottom:10px;background:rgba(13,27,45,.78)}
.gb-ind-head{display:flex;align-items:center;gap:8px;background:var(--dim-soft);padding:9px 11px}
.gb-ind-name{font-size:14px;font-weight:800;color:#ffffff;flex:1}
.gb-ind-del{appearance:none;border:1px solid rgba(248,113,113,.55);background:rgba(120,30,40,.4);color:#fecaca;border-radius:7px;font-size:12px;font-weight:700;padding:4px 9px}
.gb-ind-body{padding:10px 11px}
.gb-keep{display:flex;align-items:center;gap:6px;font-size:11px;color:#a9c6e2;margin-bottom:10px;flex-wrap:wrap}
.gb-keep input{width:52px;background:#0c1c2e;border:1px solid rgba(125,211,252,.28);color:#eaf4ff;border-radius:7px;padding:6px;font-size:12px;text-align:center}
.gb-tray-label,.gb-bucket-label{font-size:11px;font-weight:700;color:var(--dim);margin:4px 0 7px;display:block}
.gb-tray{display:flex;flex-wrap:wrap;gap:7px}

/* 红球（小号） */
.gb-ball{appearance:none;width:34px;height:34px;border-radius:50%;border:1px solid #ff9a8a;color:#fff;font-size:15px;font-weight:800;
  background:radial-gradient(circle at 32% 28%,#ff7a6b,#d8271f 70%,#a8140e);box-shadow:0 2px 5px rgba(0,0,0,.4),inset 0 1px 2px rgba(255,255,255,.35);line-height:1;display:inline-flex;align-items:center;justify-content:center}
.gb-ball:active{transform:scale(.92)}
.gb-ball.sel{outline:3px solid #ffd54a;outline-offset:1px;box-shadow:0 0 0 3px rgba(255,213,74,.35)}
.gb-ball.in-bucket{width:30px;height:30px;font-size:13px}
.gb-ball.show{cursor:default;flex:0 0 auto;box-shadow:0 1px 3px rgba(0,0,0,.35),inset 0 1px 2px rgba(255,255,255,.3)}

/* 桶 */
.gb-bucket{border:1px dashed color-mix(in srgb,var(--dim) 45%,transparent);border-radius:10px;padding:9px;margin-top:9px;background:rgba(8,18,32,.4)}
.gb-bucket-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.gb-bucket-name{font-size:12px;font-weight:800;color:#dff0ff;flex:1;background:transparent;border:none;border-bottom:1px solid rgba(125,211,252,.25);padding:3px 2px}
.gb-hs{display:flex;align-items:center;gap:4px;font-size:10px;color:#cfe2f5;border:1px solid rgba(125,211,252,.3);border-radius:7;padding:3px 6px}
.gb-bucket-balls{display:flex;flex-wrap:wrap;gap:6px;min-height:8px;margin-bottom:8px}
.gb-bucket-empty{font-size:10px;color:#7d97b5}
.gb-bucket-foot{display:flex;gap:7px}
.gb-addsel{appearance:none;border:1px solid var(--dim);background:var(--dim-soft);color:#eaf4ff;border-radius:7px;font-size:11px;font-weight:700;padding:5px 9px}
.gb-bucket-del{appearance:none;border:1px solid rgba(248,113,113,.5);background:transparent;color:#fca5a5;border-radius:7px;font-size:11px;padding:5px 8px}

/* 交叉矩阵 */
.gb-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:9px}
.gb-cell{position:relative;border:1.5px solid rgba(125,211,252,.25);border-radius:11px;padding:10px 9px 9px;background:#0e2035;min-height:70px}
.gb-cell.zero{background:rgba(58,18,26,.8);border-color:#f87171}
.gb-cell.picked{background:rgba(25,82,148,.55);border-color:#3b9eff;box-shadow:0 0 0 1px rgba(59,158,255,.4)}
.gb-cell-top{display:flex;align-items:center;gap:7px;margin-bottom:8px}
.gb-check{appearance:none;width:23px;height:23px;border-radius:6px;border:1.5px solid rgba(125,211,252,.5);background:#13283e;flex:0 0 auto;position:relative}
.gb-cell.picked .gb-check{background:#1f8bff;border-color:#1f8bff}
.gb-cell.picked .gb-check::after{content:"";position:absolute;left:7px;top:3px;width:6px;height:11px;border:solid #fff;border-width:0 2.4px 2.4px 0;transform:rotate(45deg)}
.gb-code{appearance:none;border:none;border-radius:7px;background:#2f6fb0;color:#fff;font-weight:900;font-size:13px;padding:3px 9px}
.gb-cell.zero .gb-code{background:#b03a46}
.gb-cell-rows{font-size:10px}
.gb-cell-row{display:flex;align-items:center;gap:6px;margin:5px 0;flex-wrap:wrap}
.gb-cell-ik{color:#9fc0e0;font-size:10px;min-width:42px;font-weight:700}
.gb-cell-balls{display:flex;flex-wrap:wrap;gap:4px}
.gb-cell-balls .gb-ball{width:25px;height:25px;font-size:10px;border-radius:50%}
.gb-cell-count{margin-top:8px;font-size:15px;font-weight:900;color:#ffffff;text-align:right}
.gb-cell.zero .gb-cell-count{color:#fda4a4}
.gb-cell-wild{color:#8fb0d0;font-style:italic}
.gb-mergebtn{appearance:none;width:100%;margin-top:10px;border:1px solid #4ade80;background:rgba(34,120,70,.35);color:#dcfce7;border-radius:10px;font-size:13px;font-weight:800;padding:10px}

/* 执行区 */
.gb-runbox{border:1px solid rgba(125,211,252,.25);border-radius:13px;padding:12px;background:rgba(11,24,42,.7);margin-bottom:14px}
.gb-runrow{display:flex;gap:10px}
.gb-run{appearance:none;flex:1;border:none;border-radius:11px;background:linear-gradient(180deg,#3aa0ff,#1f7fe0);color:#fff;font-size:15px;font-weight:800;padding:12px}
.gb-run.preview{flex:0 0 auto;background:#1c3a58;border:1px solid rgba(125,211,252,.4)}
.gb-progress{margin-top:11px;font-size:11px;color:#a9c6e2}
.gb-bar{height:7px;border-radius:5px;background:#13283e;overflow:hidden;margin-top:6px}
.gb-bar>i{display:block;height:100%;width:0;background:linear-gradient(90deg,#22d3ee,#3b9eff);transition:width .2s}

/* 结果板块 */
.gb-result{border-radius:12px;padding:12px;margin-bottom:11px;border:1.5px solid}
.gb-result .gb-rhead{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;margin-bottom:6px}
.gb-result .gb-rcount{font-size:22px;font-weight:900;margin:4px 0 8px}
.gb-result .gb-rnote{font-size:11px;line-height:1.6;margin-bottom:9px}
.gb-savebtn{appearance:none;border-radius:9px;font-size:13px;font-weight:800;padding:9px 14px;border:1px solid}
.gb-r-union{border-color:rgba(125,211,252,.4);background:rgba(18,46,72,.5)}
.gb-r-union .gb-rhead{color:#bae6fd}.gb-r-union .gb-rcount{color:#e8f6ff}.gb-r-union .gb-savebtn{border-color:#38bdf8;background:rgba(14,116,144,.4);color:#e0f2fe}
.gb-r-inter{border-color:rgba(74,222,128,.45);background:rgba(16,52,38,.5)}
.gb-r-inter .gb-rhead{color:#bbf7d0}.gb-r-inter .gb-rcount{color:#ecfdf5}.gb-r-inter .gb-savebtn{border-color:#4ade80;background:rgba(22,101,52,.5);color:#dcfce7}
.gb-r-total{border-color:rgba(251,191,36,.45);background:rgba(56,42,14,.45)}
.gb-r-total .gb-rhead{color:#fde68a}.gb-r-total .gb-rcount{color:#fff7e6}.gb-r-total .gb-savebtn{border-color:#fbbf24;background:rgba(120,82,18,.5);color:#fef3c7}
.gb-r-merge{border-color:rgba(45,212,191,.45);background:rgba(13,51,52,.5)}
.gb-r-merge .gb-rhead{color:#99f6e4}
.gb-toast{position:fixed;left:50%;bottom:90px;transform:translateX(-50%);background:rgba(8,16,28,.96);border:1px solid rgba(125,211,252,.4);color:#eaf4ff;padding:10px 16px;border-radius:10px;font-size:13px;z-index:9999;max-width:88%;text-align:center;opacity:0;transition:opacity .2s;pointer-events:none}
.gb-toast.show{opacity:1}
.gb-pending{font-size:11px;color:#8fb0d0;padding:6px 2px}
.gb-pending b{color:#fbbf24}
.gb-dim-head{position:relative}
.gb-addind summary{list-style:none}
.gb-addind summary::-webkit-details-marker{display:none}
.gb-addind[open] summary{border-color:var(--dim)}
.gb-ind-menu{display:flex;flex-direction:column;gap:5px;margin-top:6px;max-height:240px;overflow-y:auto;background:rgba(7,16,28,.97);border:1px solid var(--dim);border-radius:10px;padding:8px;position:absolute;right:11px;top:38px;z-index:9;min-width:160px}
.gb-menu-item{appearance:none;text-align:left;border:1px solid rgba(125,211,252,.25);background:#10243a;color:#e6f2ff;border-radius:7px;font-size:12px;padding:8px 10px}
.gb-menu-item:active{background:#1c3f60}
.gb-savebtn:disabled,.gb-run:disabled{opacity:.5;cursor:not-allowed}

/* 结果行（对象表达式 + 注数常显 + 明细/存底） */
.gb-res-row{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:1px dashed rgba(125,211,252,.15)}
.gb-res-head{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px;text-align:left}
.gb-res-label{font-size:12px;font-weight:800;color:#dcecff;white-space:normal}
.gb-res-expr{font-size:12px;font-weight:800;color:#8fd6ff;background:rgba(20,60,110,.4);border:1px solid rgba(96,165,252,.35);border-radius:6px;padding:3px 7px;overflow-wrap:anywhere;word-break:break-word;line-height:1.5}
.gb-res-count{font-size:16px;font-weight:900;color:#ffffff;flex:0 0 auto;text-align:right;margin-right:4px}
.gb-res-row .gb-mini{flex:0 0 auto}
.gb-res-row.is-zero{background:rgba(90,22,32,.35);border-radius:8px;border-bottom-color:#f87171}
.gb-res-row.is-zero .gb-res-expr{color:#fda4a4;background:rgba(90,22,32,.4);border-color:#f87171}
.gb-res-row.is-zero .gb-res-count{color:#fda4a4}
.gb-mini{appearance:none;border:1px solid rgba(125,211,252,.4);background:rgba(20,46,72,.6);color:#dcecff;border-radius:7px;font-size:11px;font-weight:700;padding:6px 11px}
.gb-mini.primary{border-color:#4ade80;background:rgba(22,101,52,.55);color:#e8ffee}
.gb-mini:disabled{opacity:.45;cursor:not-allowed}

/* 明细 */
.gb-det-wrap{margin:8px 0 4px;max-height:300px;overflow-y:auto;border:1px solid rgba(125,211,252,.2);border-radius:10px;padding:9px;background:rgba(7,16,28,.6)}
.gb-det-line{display:flex;flex-wrap:wrap;gap:5px;padding:5px 0;border-bottom:1px dotted rgba(125,211,252,.12);align-items:center}
.gb-det-line .gb-ball.show{width:26px;height:26px;font-size:12px}
.gb-det-empty{font-size:12px;color:#fca5a5;padding:8px}
.gb-det-more{font-size:11px;color:#fbbf24;padding:7px 2px 2px}

/* 格对格交集矩阵 */
.gb-cross{margin-top:12px;border:1px solid rgba(74,222,128,.4);border-radius:12px;padding:11px;background:rgba(10,30,24,.4)}
.gb-cross-title{font-size:13px;font-weight:800;color:#c9f7d8;margin-bottom:8px}
.gb-cross-warn{font-size:11px;font-weight:700;line-height:1.6;color:#fecaca;background:rgba(120,30,40,.5);border:1px solid #f87171;border-radius:8px;padding:8px;margin-bottom:9px}
.gb-cross-ok{font-size:11px;font-weight:700;color:#bbf7d0;background:rgba(22,101,52,.4);border:1px solid #4ade80;border-radius:8px;padding:8px;margin-bottom:9px}
/* 滚动容器：上下左右自由滑动 */
.gb-x-scroll{overflow:auto;max-height:62vh;-webkit-overflow-scrolling:touch;border:1px solid rgba(125,211,252,.22);border-radius:10px;background:rgba(7,16,28,.55)}
.gb-x-table{border-collapse:separate;border-spacing:4px;width:max-content;min-width:100%}
.gb-x-table th{font-size:11px;font-weight:800;padding:6px 8px;background:#0d2136}
.gb-x-colh{position:sticky;top:0;z-index:5;color:#a7f3d0;white-space:nowrap}
.gb-x-rowh{position:sticky;left:0;z-index:5;color:#bae6fd;text-align:right;white-space:nowrap;background:#0d2136}
.gb-x-corner{position:sticky;top:0;left:0;z-index:8;color:#9fc0b0;background:#10263c}
.gb-x-cell{text-align:center;font-size:14px;font-weight:900;color:#fff;background:#10293a;border:1px solid rgba(125,211,252,.25);border-radius:8px;padding:10px 6px;min-width:52px;cursor:pointer}
.gb-x-cell.zero{background:rgba(80,20,30,.78);border-color:#f87171;color:#fda4a4}
.gb-x-cell.sel{outline:2.5px solid #ffd54a;outline-offset:1px}
.gb-cross-detail{margin-top:11px;border-top:1px dashed rgba(74,222,128,.35);padding-top:10px}
.gb-cross-detail.is-zero .gb-xd-head b{color:#fda4a4}
.gb-xd-head{font-size:13px;color:#dff3e6;margin-bottom:9px}
.gb-xd-head b{color:#fff;font-size:16px}
/* 参数明细两列 */
.gb-x-params{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:9px}
.gb-x-param-col{border:1px solid rgba(125,211,252,.2);border-radius:10px;padding:9px;background:rgba(9,20,34,.6);min-width:0}
.gb-x-param-title{font-size:12px;font-weight:800;color:#cfe6ff;margin-bottom:8px;padding-bottom:6px;border-bottom:1px dotted rgba(125,211,252,.2)}
.gb-x-cond{margin:7px 0}
.gb-x-cond-name{display:inline-block;font-size:11px;font-weight:800;color:#ffe6a8;background:rgba(120,82,18,.45);border:1px solid rgba(251,191,36,.4);border-radius:6px;padding:3px 8px;margin-bottom:6px}
.gb-x-cond-vals{display:flex;flex-wrap:wrap;gap:4px;align-items:center;margin-top:2px}
.gb-x-cond-vals .gb-ball.show{width:25px;height:25px;font-size:12px}
.gb-x-wild{font-size:11px;color:#93b4d0;font-style:italic}
.gb-x-mutex{font-size:12px;font-weight:700;line-height:1.6;color:#fecaca;background:rgba(120,30,40,.45);border:1px solid #f87171;border-radius:8px;padding:8px;margin:2px 0 6px}
/* 指标搜索框 */
.gb-ind-search{width:100%;box-sizing:border-box;font-size:13px;color:#e6f2ff;background:#0a1828;border:1px solid rgba(125,211,252,.4);border-radius:8px;padding:8px 10px;margin-bottom:8px;outline:none}
.gb-ind-search::placeholder{color:#7c94ac}
.gb-ind-search:focus{border-color:#60a5fa;box-shadow:0 0 0 2px rgba(96,165,250,.2)}
/* 零交集问题清单 */
.gb-zerolist{margin-top:12px;border-top:2px dashed rgba(248,113,113,.4);padding-top:10px}
.gb-zerolist-title{font-size:13px;font-weight:800;color:#fecaca;margin-bottom:9px;line-height:1.5}
.gb-zero-item{border:1px solid rgba(248,113,113,.35);border-radius:10px;padding:10px;margin-bottom:10px;background:rgba(40,14,20,.4)}
.gb-zero-head{font-size:13px;font-weight:800;color:#ffd6d6;margin-bottom:8px;line-height:1.7}
.gb-zero-head b{color:#fda4a4;font-size:15px}
.gb-rootcause{display:inline-block;font-size:11px;font-weight:800;border-radius:6px;padding:3px 8px;margin-left:7px}
.gb-rootcause.ab{color:#fda4a4;background:rgba(120,30,40,.55);border:1px solid #f87171}
.gb-rootcause.c{color:#fde68a;background:rgba(120,82,18,.5);border:1px solid #fbbf24}
/* 三维三列参数 */
.gb-x-params.three{grid-template-columns:1fr 1fr 1fr;gap:7px}
.gb-x-params.three .gb-x-param-col{padding:7px}
.gb-x-params.three .gb-ball.show{width:22px;height:22px;font-size:11px}
.gb-cross3{border-color:rgba(251,191,36,.4)}
/* 三维两两交集与严谨归因 */
.gb-pairrow{display:flex;gap:6px;margin:6px 0 8px}
.gb-pair{flex:1;text-align:center;font-size:11px;font-weight:700;color:#bfe8c9;background:rgba(20,50,35,.5);border:1px solid rgba(74,222,128,.3);border-radius:7px;padding:5px 2px}
.gb-pair.z{color:#fda4a4;background:rgba(120,30,40,.5);border-color:#f87171}
.gb-verdict{display:block;font-size:11px;font-weight:800;line-height:1.5;border-radius:7px;padding:5px 8px;margin-top:6px}
.vk-isolated{color:#fda4a4;background:rgba(120,30,40,.45);border:1px solid #f87171}
.vk-pair{color:#fde68a;background:rgba(120,82,18,.4);border:1px solid #fbbf24}
.vk-joint{color:#c4d6f5;background:rgba(30,50,90,.45);border:1px solid #60a5fa}
.gb-zero-item.v-isolated{border-color:rgba(248,113,113,.5)}
.gb-zero-item.v-pair{border-color:rgba(251,191,36,.5)}
.gb-zero-item.v-joint{border-color:rgba(96,165,250,.5)}
/* 结果区重组：主板块高亮 + 折叠次要板块 */
.gb-r-main{border:1.5px solid rgba(45,141,245,.55);background:rgba(23,60,110,.28);box-shadow:0 0 0 1px rgba(45,141,245,.15)}
.gb-main-tip{font-size:12px;font-weight:700;color:#bfe0ff;background:rgba(30,70,130,.4);border:1px solid rgba(96,165,250,.35);border-radius:7px;padding:6px 9px;margin-bottom:8px}
.gb-secondary{margin-top:4px;border:1px dashed rgba(148,163,184,.35);border-radius:12px;padding:0 10px 10px;background:rgba(15,25,40,.3)}
.gb-secondary>summary{cursor:pointer;list-style:none;font-size:13px;font-weight:800;color:#cbd5e1;padding:10px 2px;user-select:none}
.gb-secondary>summary::-webkit-details-marker{display:none}
.gb-secondary>summary::before{content:"▸ ";color:#60a5fa}
.gb-secondary[open]>summary::before{content:"▾ "}
.gb-secondary .gb-result{margin-top:8px}

/* ① 标题行工具按钮 + 草稿恢复条 + 模板弹窗 */
.gb-sec-tools{margin-left:auto;display:flex;gap:6px;align-items:center}
.gb-restore{font-size:11px;font-weight:700;color:#bbf7d0;background:rgba(22,101,52,.35);border:1px solid #4ade80;border-radius:8px;padding:6px 9px;margin:0 2px 10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gb-restore-clear{appearance:none;border:none;background:transparent;color:#bbf7d0;text-decoration:underline;cursor:pointer;font-size:11px;font-weight:700;padding:0}
.gb-restore-warn{color:#fde68a}
.gb-modal{position:fixed;inset:0;z-index:10001;background:rgba(4,10,20,.72);display:flex;align-items:center;justify-content:center;padding:18px}
.gb-modal-card{width:min(560px,100%);max-height:86vh;overflow-y:auto;background:#0c1c2e;border:1.5px solid rgba(125,211,252,.45);border-radius:14px;padding:14px;box-shadow:0 10px 40px rgba(0,0,0,.5)}
.gb-modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px;font-weight:800;color:#eaf4ff;margin-bottom:10px}
.gb-modal-list{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.gb-tpl{display:flex;align-items:center;gap:8px;border:1px solid rgba(125,211,252,.28);border-radius:10px;padding:9px;background:rgba(15,32,52,.7)}
.gb-tpl-info{flex:1;min-width:0}
.gb-tpl-name{font-size:13px;font-weight:800;color:#fff;overflow-wrap:anywhere}
.gb-tpl-meta{font-size:10px;color:#9fc0e0;margin-top:3px;overflow-wrap:anywhere}
.gb-modal-json{border-top:1px dashed rgba(125,211,252,.25);padding-top:10px}
.gb-modal-json-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.gb-modal-hint{font-size:10px;color:#8fb0d0}
.gb-json-area{width:100%;box-sizing:border-box;min-height:110px;background:#081422;border:1px solid rgba(125,211,252,.35);color:#dcecff;border-radius:9px;padding:9px;font-size:11px;font-family:ui-monospace,Consolas,monospace;resize:vertical;margin-bottom:8px;outline:none}
.gb-json-area:focus{border-color:#60a5fa;box-shadow:0 0 0 2px rgba(96,165,250,.2)}

/* 模板命名使用页面内显式配色；输入、光标和按钮不依赖微信 prompt 主题。 */
.gb-name-modal{z-index:10002;color-scheme:dark;box-sizing:border-box;overflow-y:auto}
.gb-name-card{box-sizing:border-box;width:min(440px,100%);padding:20px;color:#f8fafc;background:#102338}
.gb-name-card .gb-modal-head{font-size:18px;line-height:1.5;color:#f8fafc;margin-bottom:18px}
.gb-name-label{display:block;color:#f8fafc;font-size:15px;font-weight:700;margin-bottom:8px}
.gb-name-input{display:block;box-sizing:border-box;appearance:none;-webkit-appearance:none;width:100%;min-height:48px;border:1px solid #94b9de;border-radius:9px;padding:11px 12px;background:#071421;color:#fff!important;-webkit-text-fill-color:#fff;caret-color:#7dd3fc;font-size:16px;line-height:1.5;opacity:1;outline:none}
.gb-name-input::placeholder{color:#b8cce0;-webkit-text-fill-color:#b8cce0;opacity:1}
.gb-name-input:focus{border-color:#7dd3fc;box-shadow:0 0 0 3px rgba(125,211,252,.24)}
.gb-name-hint{font-size:13px;line-height:1.6;color:#c8d8e8;margin:10px 0 20px}
.gb-name-error{color:#fecaca;font-size:14px;line-height:1.5;margin:10px 0}
.gb-name-actions{display:flex;justify-content:flex-end;gap:10px}
.gb-name-actions button{appearance:none;-webkit-appearance:none;min-height:46px;min-width:88px;border:1px solid #94b9de;border-radius:9px;padding:10px 16px;color:#f8fafc;background:#203b57;font-size:16px;font-weight:700;line-height:1.5;cursor:pointer;opacity:1}
.gb-name-actions .gb-name-confirm{color:#06182a;background:#7dd3fc;border-color:#7dd3fc}
.gb-name-actions button:focus-visible{outline:3px solid #f8fafc;outline-offset:2px}
.gb-name-actions button:disabled{opacity:.65;cursor:wait}
@media(max-height:500px){.gb-name-modal{align-items:flex-start;padding:12px}.gb-name-card{max-height:calc(100dvh - 24px)}}

/* 分桶复盘视图（features_085 卡片内） */
.bp-bucket-detail{margin:8px 0;border:1.5px solid rgba(45,212,191,.45);border-radius:12px;background:rgba(8,22,30,.6);overflow:hidden}
.bp-bk-review{padding:12px;font-size:12px;line-height:1.6}
.bp-bk-title{font-size:14px;font-weight:800;color:#99f6e4;margin-bottom:6px}
.bp-bk-meta{font-size:11px;color:#cfe6ff;margin-bottom:8px;overflow-wrap:anywhere}
.bp-bk-up{font-size:11px;color:#bae6fd;background:rgba(20,60,110,.35);border:1px solid rgba(96,165,252,.3);border-radius:8px;padding:7px 9px;margin-bottom:10px;overflow-wrap:anywhere}
.bp-bk-unsealed{color:#fde68a;background:rgba(120,82,18,.4);border-color:#fbbf24}
.bp-bk-dim{border:1px solid rgba(125,211,252,.22);border-radius:10px;padding:9px;margin-bottom:9px;background:rgba(10,24,38,.55)}
.bp-bk-dim-head{font-size:12px;font-weight:800;color:#ffd98a;margin-bottom:7px;border-left:3px solid #f5b942;padding-left:7px}
.bp-bk-ind{border-left:2px dashed rgba(125,211,252,.25);padding:6px 0 6px 10px;margin:6px 0}
.bp-bk-ind-head{display:flex;gap:10px;align-items:center;margin-bottom:5px;flex-wrap:wrap}
.bp-bk-iname{font-weight:800;color:#eaf4ff}
.bp-bk-keep{font-size:10px;color:#9fc0e0;background:rgba(20,50,80,.5);border-radius:6px;padding:2px 7px}
.bp-bk-bucket{display:flex;gap:8px;align-items:center;padding:3px 0;flex-wrap:wrap}
.bp-bk-bname{font-weight:700;color:#dff0ff;min-width:42px}
.bp-bk-hard{font-size:10px;border-radius:5px;padding:1px 6px}
.bp-bk-hard.hard{color:#fecaca;background:rgba(120,30,40,.45);border:1px solid #f87171}
.bp-bk-hard.soft{color:#c4d6f5;background:rgba(30,50,90,.45);border:1px solid #60a5fa}
.bp-bk-vals{font-size:11px;color:#a9c6e2;overflow-wrap:anywhere}
.bp-bk-empty{font-size:11px;color:#8fb0d0;padding:6px}

/* 分桶复盘：兑奖 + 重算比对三态 */
.bp-bk-prize{margin-top:12px;padding:10px;border:1px solid rgba(125,211,252,.2);border-radius:10px;background:rgba(10,22,38,.6)}
.bp-bk-prize-balls{margin:6px 0}
.bp-bk-prize-sum{margin:6px 0;font-size:13px;color:#cde8ff}
.bp-bk-prize-empty{margin-top:10px;color:var(--sub,#94a3b8);font-size:13px}
.bp-bk-replay{margin-top:12px;padding:10px;border-radius:10px;font-size:13px}
.bp-bk-green{background:rgba(16,185,129,.12);border:1px solid rgba(16,185,129,.45)}
.bp-bk-red{background:rgba(244,63,94,.12);border:1px solid rgba(244,63,94,.5)}
.bp-bk-yellow{background:rgba(234,179,8,.12);border:1px solid rgba(234,179,8,.45)}
.bp-bk-replay-head{font-weight:700;margin-bottom:4px}
.bp-bk-replay-sub{color:#cbd5e1;margin-top:2px;word-break:break-all}
.gb-ratio-chip{display:inline-block;padding:4px 10px;margin:2px;border-radius:8px;font-size:12px;background:rgba(51,65,85,.7);color:#e2e8f0;border:1px solid rgba(148,163,184,.3);cursor:pointer;white-space:nowrap}
.gb-ratio-chip.sel{background:#2563eb;color:#fff;border-color:#3b82f6}
.gb-ratio-chip.in-bucket{background:rgba(37,99,235,.18);color:#93c5fd;border-color:rgba(59,130,246,.4)}
.gb-keep-note{display:inline-block;padding:3px 10px;border-radius:6px;background:rgba(34,197,94,.12);color:#86efac;font-size:12px;margin-bottom:6px}
.gb-det-oversize{background:rgba(245,158,11,.15);border:1px solid rgba(245,158,11,.4);color:#fde68a;padding:8px 12px;border-radius:8px;margin-top:8px;font-size:12px}
.gb-status{display:flex;justify-content:space-between;padding:8px 12px;border-radius:8px;margin-bottom:8px;font-size:13px;font-weight:600;border-left:4px solid}
.gb-status-green{background:rgba(34,197,94,.12);color:#86efac;border-left-color:#22c55e}
.gb-status-red{background:rgba(239,68,68,.12);color:#fca5a5;border-left-color:#ef4444}
.gb-status-yellow{background:rgba(234,179,8,.12);color:#fde047;border-left-color:#eab308}
.gb-status-gray{background:rgba(107,114,128,.12);color:#9ca3af;border-left-color:#6b7280}
.gb-comp,.gb-cellstats{display:flex;flex-direction:column;gap:4px;padding:8px;background:rgba(255,255,255,.03);border-radius:8px;margin-bottom:8px}
.gb-comp-row,.gb-cellstat-row{display:flex;gap:12px;font-size:12px;align-items:center;padding:4px 8px;border-radius:6px}
.gb-comp-row.ok{background:rgba(34,197,94,.10);color:#86efac}
.gb-comp-row.bad{background:rgba(239,68,68,.10);color:#fca5a5}
.gb-comp-dim{font-weight:700;min-width:24px;color:#e5e7eb}
.gb-comp-pct,.gb-comp-num{color:#e5e7eb}
.gb-comp-tag{margin-left:auto;color:#d1d5db;font-weight:700}
.gb-cellstat-zero{color:#fca5a5}
.gb-cellstat-ok{color:#86efac}
.gb-cellstat-row{color:#d1d5db}
.gb-mats{margin-top:8px}

/* Matrix badges live outside .gb-dim, so inherit their own explicit high-contrast palette. */
.gb-mat{--dim:#22d3ee;--dim-soft:rgba(34,211,238,.13)}
.gb-mat[data-dim="B"]{--dim:#c084fc;--dim-soft:rgba(192,132,252,.13)}
.gb-mat[data-dim="C"]{--dim:#fbbf24;--dim-soft:rgba(251,191,36,.13)}
.gb-mat[data-dim="D"]{--dim:#34d399;--dim-soft:rgba(52,211,153,.13)}
.gb-overlay[aria-busy="true"] .gb-progress{position:sticky;bottom:0;background:#10253d;padding:12px;border:1px solid #38bdf8;border-radius:8px;z-index:5;color:#e6f6ff}
