/* Blasts (text and email): list, step-by-step builder, live view, results and the templates library.
   Only tokens from tokens.css, so Night and Day both work. */
.bl-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line1);margin:0 0 18px}
.bl-tabs a{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 14px;color:var(--text2);border-bottom:2px solid transparent;margin-bottom:-1px;font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
.bl-tabs a.on{color:var(--accent);border-color:var(--accent)}
.bl-row{display:grid;grid-template-columns:minmax(0,1.6fr) auto minmax(0,1fr) minmax(0,1.1fr);gap:14px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line1);color:var(--text2)}
.bl-row:hover .bl-name{color:var(--accent)}
.bl-name{color:var(--text1);font-weight:600;transition:color var(--t1)}
.bl-nums{display:flex;gap:16px;font-family:var(--mono);font-size:12px;color:var(--text2)}
.bl-nums b{color:var(--text1);font-weight:600}
.bl-st{text-transform:none;letter-spacing:0}
.chip.warn{color:var(--accent);border-color:var(--line3)}
/* stepper */
.bl-steps{display:flex;gap:0;margin:0 0 20px;counter-reset:s;overflow-x:auto;scrollbar-width:none}
.bl-steps::-webkit-scrollbar{display:none}
.bl-step{flex:1;min-width:92px;display:flex;align-items:center;gap:8px;padding:10px 6px;border-bottom:2px solid var(--line1);color:var(--text3);font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;cursor:pointer;background:none;border-top:0;border-left:0;border-right:0;font-family:var(--sans)}
.bl-step i{font-style:normal;display:inline-grid;place-items:center;width:22px;height:22px;border:1px solid var(--line2);font-family:var(--mono);font-size:11px;color:var(--text2);flex:none}
.bl-step.done{color:var(--text2);border-color:var(--line3)}
.bl-step.done i{background:var(--accent);color:var(--bg0,#111);border-color:var(--accent)}
.bl-step.on{color:var(--accent);border-color:var(--accent)}
.bl-step.on i{border-color:var(--accent);color:var(--accent)}
.bl-nav{display:flex;justify-content:space-between;gap:10px;margin-top:20px;align-items:center}
.bl-pick{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.bl-opt{display:grid;gap:6px;text-align:left;padding:16px;border:1px solid var(--line2);background:transparent;color:var(--text2);cursor:pointer;font-family:var(--sans);transition:border-color var(--t1),box-shadow var(--t1)}
.bl-opt b{color:var(--text1);font-size:15px;display:flex;align-items:center;gap:8px}
.bl-opt:hover{border-color:var(--line3)}
.bl-opt.on{border-color:var(--accent);box-shadow:var(--glow)}
.bl-opt.on b{color:var(--accent)}
.bl-count{display:flex;align-items:baseline;gap:10px;margin:4px 0 10px}
.bl-count .n{font-family:var(--mono);font-size:38px;color:var(--text1);line-height:1}
.bl-skip{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line1);font-size:13px;color:var(--text2)}
.bl-skip .num{font-family:var(--mono);color:var(--text1)}
.bl-note{display:flex;gap:10px;align-items:flex-start;padding:12px 14px;border:1px solid var(--line2);background:var(--accent-soft,rgba(212,180,131,.07));font-size:13px;color:var(--text1);margin:12px 0}
.bl-note svg{flex:none;margin-top:2px;color:var(--accent)}
.bl-var{border:1px solid var(--line2);padding:14px;display:grid;gap:10px;margin-bottom:12px;min-width:0}
.bl-var.win{border-color:var(--ok)}
.bl-var h4{display:flex;align-items:center;gap:8px;margin:0;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--text2)}
.bl-var textarea,.bl-ed textarea{width:100%;min-height:120px;resize:vertical}
.bl-lint{display:grid;gap:4px;font-size:12.5px}
.bl-lint .e{color:var(--hot)} .bl-lint .w{color:var(--accent)} .bl-lint .g{color:var(--ok)}
.bl-foot{border-top:1px dashed var(--line2);margin-top:8px;padding-top:8px;font-size:12px;color:var(--text3);white-space:pre-line}
.bl-prev{white-space:pre-wrap;font-size:13px;color:var(--text2);background:rgba(127,127,127,.06);border:1px solid var(--line1);padding:12px;max-height:240px;overflow:auto}
.bl-sample{padding:12px 0;border-bottom:1px solid var(--line1)}
.bl-sample .m{max-width:none;white-space:pre-wrap}
.bl-opts{display:grid;gap:8px}
.bl-line{display:flex;align-items:center;gap:10px;padding:9px 0;border-bottom:1px solid var(--line1);font-size:13px;color:var(--text2);cursor:pointer}
.bl-line b{color:var(--text1)}
.bl-line input[type=checkbox],.bl-line input[type=radio]{accent-color:var(--accent);width:16px;height:16px}
.bl-two{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
.bl-prog{height:12px;background:rgba(127,127,127,.14);overflow:hidden;margin:10px 0 4px}
.bl-prog i{display:block;height:100%;background:var(--accent);box-shadow:0 0 12px var(--accent);transition:width .6s var(--ease,ease)}
.bl-day{display:grid;grid-template-columns:96px minmax(0,1fr) 84px;gap:10px;align-items:center;padding:7px 0;font-size:12.5px;color:var(--text2)}
.bl-day .t{height:14px;background:rgba(127,127,127,.14);position:relative}
.bl-day .t i{position:absolute;left:0;top:0;bottom:0;background:var(--accent)}
.bl-day .t u{position:absolute;left:0;top:0;bottom:0;background:var(--accent);opacity:.28}
.bl-reply{padding:10px 0;border-bottom:1px solid var(--line1);display:grid;gap:3px}
.bl-reply.hot{border-left:3px solid var(--hot);padding-left:10px}
.bl-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:16px}
.bl-kpi{border:1px solid var(--line2);padding:14px;display:grid;gap:4px;text-align:left;background:transparent;color:var(--text2);cursor:pointer;font-family:var(--sans)}
.bl-kpi:hover{border-color:var(--line3)}
.bl-kpi.on{border-color:var(--accent)}
.bl-kpi .v{font-family:var(--mono);font-size:26px;color:var(--text1)}
.bl-kpi .l{font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.bl-tbl{width:100%;border-collapse:collapse;font-size:13px}
.bl-tbl th{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text3);text-align:right;padding:8px 6px;border-bottom:1px solid var(--line2);font-weight:600}
.bl-tbl td{padding:9px 6px;border-bottom:1px solid var(--line1);text-align:right;font-family:var(--mono);color:var(--text1)}
.bl-tbl th:first-child,.bl-tbl td:first-child{text-align:left;font-family:var(--sans)}
.bl-tpl{display:grid;grid-template-columns:minmax(0,1.5fr) auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line1)}
.bl-ed{display:grid;gap:12px}
@media (max-width:760px){
  .bl-pick{grid-template-columns:1fr}
  .bl-row,.bl-tpl{grid-template-columns:1fr;gap:6px}
  .bl-two{grid-template-columns:1fr}
  .bl-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .bl-day{grid-template-columns:70px minmax(0,1fr) 64px}
}
/* Template editor (static/components/tpleditor.js) */
.te{display:grid;gap:12px;margin-bottom:16px}
.te textarea{width:100%;min-height:110px;resize:vertical}
.te-two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.te-chips .chip{cursor:pointer}
.te-chips .chip:hover{border-color:var(--line3);color:var(--accent)}
.te-auto{color:var(--text3)}
.te-hist{border-top:1px solid var(--line1);padding-top:12px;display:grid;gap:10px}
.te-hist h4{margin:0;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--text2)}
.te-ver{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding-bottom:10px;border-bottom:1px solid var(--line1)}
.te-vb{white-space:pre-wrap;font-size:12.5px;color:var(--text2);margin-top:4px;max-height:84px;overflow:auto}
.te-step{display:grid;gap:8px}
.bl-tpl.click{cursor:pointer}
.bl-tpl.click:hover b{color:var(--accent)}
@media (max-width:700px){.te-two{grid-template-columns:1fr}}
