/* Ai ZaxBot — Auto-responder v2 (flows page + rule editor). Uses only the theme tokens from index.html :root,
   so every theme (minimal / dark / light / emerald / rose / amber) works. Spacing on a 4/8px scale. */

.fl, .fl-ed, #fl-toast {
  --fl-good: color-mix(in srgb, var(--green) 62%, var(--ink));
  --fl-warn: color-mix(in srgb, var(--amber) 60%, var(--ink));
  --fl-bad: color-mix(in srgb, var(--red) 72%, var(--ink));
  --fl-info: color-mix(in srgb, var(--blue) 66%, var(--ink));
  --fl-radius: 14px;
}
.fl { display: flex; flex-direction: column; gap: 16px; max-width: 1280px; margin: 0 auto; font-variant-numeric: tabular-nums; }
.fl svg.fli, .fl-ed svg.fli, #fl-toast svg.fli { width: 16px; height: 16px; flex: none; display: inline-block; vertical-align: -3px; }
.fl .spacer, .fl-ed .spacer { flex: 1; }
.fl .dim, .fl-ed .dim { color: var(--muted); }
.fl :focus-visible, .fl-ed :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.fl-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.fl-pane[hidden] { display: none !important; }
body.fl-noscroll { overflow: hidden; }

/* tone helpers (trigger + template icons) */
.tone-violet { --tone: var(--accent); }
.tone-cyan { --tone: var(--cyan); }
.tone-green { --tone: var(--green); }
.tone-blue { --tone: var(--blue); }
.tone-amber { --tone: var(--amber); }

/* ---------- buttons ---------- */
.fl-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 36px; padding: 0 14px; font-size: 13px; font-weight: 600; border-radius: 10px; border: 1px solid var(--line2); background: var(--card); color: var(--ink); white-space: nowrap; cursor: pointer; }
.fl-btn:hover { border-color: var(--accent); background: var(--hover); }
.fl-btn.sm { min-height: 32px; padding: 0 10px; font-size: 12.5px; }
.fl-btn--primary { background: var(--accent); border-color: transparent; color: #fff; box-shadow: 0 2px 8px rgba(var(--accentRgb), .25); }
.fl-btn--primary:hover { background: color-mix(in srgb, var(--accent) 86%, var(--ink)); border-color: transparent; }
.fl-btn--danger { color: #fff; background: var(--red); border-color: transparent; }
.fl-btn--danger:hover { background: color-mix(in srgb, var(--red) 85%, var(--ink)); border-color: transparent; }
.fl-btn:disabled, .fl-btn.is-disabled { opacity: .55; cursor: not-allowed; box-shadow: none; }
.fl-ib { width: 36px; height: 36px; padding: 0; display: inline-flex; align-items: center; justify-content: center; flex: none; border-radius: 9px; border: 1px solid transparent; background: transparent; color: var(--muted); cursor: pointer; }
.fl-ib:hover { background: var(--hover); color: var(--ink); border-color: transparent; }
.fl-ib.sm { width: 30px; height: 30px; border-radius: 8px; }
.fl-ib.danger:hover { color: var(--fl-bad); background: color-mix(in srgb, var(--red) 10%, transparent); }
.fl-ib:disabled { opacity: .35; cursor: not-allowed; background: transparent; }
.fl-link { display: inline-flex; align-items: center; gap: 2px; min-height: 32px; padding: 0 8px; border: none; border-radius: 8px; background: transparent; color: var(--accent); font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap; }
.fl-link:hover { background: rgba(var(--accentRgb), .08); }
.fl-link svg.fli { width: 14px; height: 14px; }
.fl-spin { width: 14px; height: 14px; border-radius: 50%; border: 2px solid rgba(var(--accentRgb), .25); border-top-color: var(--accent); animation: flspin .8s linear infinite; flex: none; display: inline-block; }
.fl-btn--primary .fl-spin { border-color: rgba(255, 255, 255, .35); border-top-color: #fff; }
@keyframes flspin { to { transform: rotate(360deg); } }

/* ---------- header + tabs ---------- */
.fl-top { display: flex; align-items: center; gap: 12px 16px; flex-wrap: wrap; }
.fl-intro { flex: 1; min-width: 240px; margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--muted); }
.fl-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); overflow-x: auto; scrollbar-width: none; }
.fl-tabs::-webkit-scrollbar { display: none; }
.fl-tabs [role="tab"] { display: inline-flex; align-items: center; gap: 7px; min-height: 42px; padding: 0 14px; margin-bottom: -1px; border: none; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; color: var(--muted); font-size: 13.5px; font-weight: 600; white-space: nowrap; cursor: pointer; }
.fl-tabs [role="tab"]:hover { color: var(--ink); border-color: transparent; border-bottom-color: var(--line2); }
.fl-tabs [role="tab"].on { color: var(--accent); border-bottom-color: var(--accent); }
.fl-tabn { min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; color: var(--muted); background: var(--hover); }
.fl-tabn:empty { display: none; }
.fl-tabs [role="tab"].on .fl-tabn { color: var(--accent); background: rgba(var(--accentRgb), .12); }

/* ---------- shared bits ---------- */
.fl-hint { display: flex; align-items: flex-start; gap: 8px; margin: 0 0 12px; font-size: 12.5px; line-height: 1.5; color: var(--muted); }
.fl-hint svg.fli { margin-top: 1px; color: var(--faint); }
.fl-p { display: flex; align-items: flex-start; gap: 8px; margin: 0; font-size: 13px; line-height: 1.55; color: var(--ink); }
.fl-p.sm { font-size: 12.5px; }
.fl-p svg.fli { margin-top: 2px; color: var(--muted); }
.fl-p.warn { padding: 9px 11px; border-radius: 10px; color: var(--ink); background: color-mix(in srgb, var(--amber) 11%, var(--card)); border: 1px solid color-mix(in srgb, var(--amber) 40%, transparent); }
.fl-p.warn svg.fli { color: var(--fl-warn); }
.fl-p .fl-link { min-height: 24px; padding: 0 4px; }
.fl-note { display: flex; align-items: flex-start; gap: 8px; margin: 4px 0 0; font-size: 12px; line-height: 1.55; color: var(--muted); }
.fl-note svg.fli { margin-top: 1px; color: var(--faint); }
.fl-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.fl-chip { display: inline-flex; align-items: center; gap: 5px; max-width: 100%; min-height: 24px; padding: 0 9px; border-radius: 999px; font-size: 12px; font-weight: 500; color: var(--ink); background: var(--hover); border: 1px solid var(--line); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fl-chip svg.fli { width: 13px; height: 13px; }
.fl-chip.trig { font-weight: 600; color: color-mix(in srgb, var(--tone, var(--accent)) 70%, var(--ink)); background: color-mix(in srgb, var(--tone, var(--accent)) 11%, var(--card)); border-color: color-mix(in srgb, var(--tone, var(--accent)) 30%, transparent); }
.fl-chip.more { color: var(--muted); }
.fl-st { display: inline-flex; align-items: center; gap: 5px; min-height: 24px; padding: 0 9px; border-radius: 999px; font-size: 12px; font-weight: 600; white-space: nowrap; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.fl-st svg.fli { width: 13px; height: 13px; }
.fl-st.on { color: var(--fl-good); background: color-mix(in srgb, var(--green) 12%, transparent); }
.fl-st.off { color: var(--muted); background: var(--hover); }
.fl-st.warn { color: var(--fl-warn); background: color-mix(in srgb, var(--amber) 14%, transparent); }
.fl-st.auto { color: var(--accent); background: rgba(var(--accentRgb), .1); }
.fl-subh { margin: 14px 0 8px; font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--muted); }
.fl-subh:first-child { margin-top: 0; }

/* empty / loading */
.fl-empty { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 48px 24px; text-align: center; background: var(--card); border: 1px dashed var(--line2); border-radius: var(--fl-radius); }
.fl-empty b { font-size: 15px; }
.fl-empty p { margin: 0; max-width: 460px; font-size: 13px; line-height: 1.6; color: var(--muted); }
.fl-empty-ic { width: 52px; height: 52px; border-radius: 16px; display: flex; align-items: center; justify-content: center; color: var(--accent); background: rgba(var(--accentRgb), .1); }
.fl-empty-ic svg.fli { width: 26px; height: 26px; }
.fl-empty-ic.err { color: var(--fl-bad); background: color-mix(in srgb, var(--red) 10%, transparent); }
.fl-empty-acts { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin-top: 4px; }
.fl-skel { display: flex; flex-direction: column; gap: 12px; }
.fl-skel-card { display: flex; flex-direction: column; gap: 10px; padding: 18px; border-radius: var(--fl-radius); background: var(--card); border: 1px solid var(--line); }
.fl-skel-card span { height: 12px; border-radius: 6px; background: linear-gradient(90deg, var(--hover), var(--line), var(--hover)); background-size: 200% 100%; animation: flsk 1.2s ease-in-out infinite; }
.fl-skel-card span:nth-child(1) { width: 34%; height: 15px; }
.fl-skel-card span:nth-child(2) { width: 78%; }
.fl-skel-card span:nth-child(3) { width: 52%; }
@keyframes flsk { 0% { background-position: 100% 0; } 100% { background-position: -100% 0; } }

/* ---------- rules tab ---------- */
.fl-rules-grid { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 20px; align-items: start; }
.fl-side { position: sticky; top: 88px; }
.fl-rules { display: flex; flex-direction: column; gap: 12px; }
.fl-rule { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 12px; padding: 16px 16px 14px 14px; border-radius: var(--fl-radius); background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow); transition: border-color .15s, box-shadow .15s; }
.fl-rule:hover { border-color: var(--line2); }
.fl-rule:focus-visible { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(var(--accentRgb), .18); }
.fl-rule.is-off { background: var(--card2); box-shadow: none; }
.fl-rule.is-off .fl-sentence, .fl-rule.is-off .fl-chips, .fl-rule.is-off .fl-line { opacity: .6; }
.fl-rule.is-new { animation: flnew 1.6s ease-out; }
@keyframes flnew { 0% { box-shadow: 0 0 0 4px rgba(var(--accentRgb), .35); border-color: var(--accent); } 100% { box-shadow: var(--shadow); } }
.fl-ord { width: 28px; height: 28px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; color: var(--accent); background: rgba(var(--accentRgb), .1); }
.fl-rule.is-off .fl-ord { color: var(--muted); background: var(--hover); }
.fl-rule-main { display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.fl-rule-top { display: flex; align-items: center; gap: 10px; min-height: 28px; }
.fl-rule-top h4 { margin: 0; min-width: 0; font-size: 15px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fl-sentence { margin: 0; font-size: 13.5px; line-height: 1.6; color: var(--ink); }
.fl-sentence.sm { font-size: 12.5px; color: var(--muted); }
.fl-sentence .fl-w { font-weight: 700; color: var(--accent); }
.fl-sentence .fl-arr { color: var(--faint); margin: 0 2px; }
.fl-sentence b { font-weight: 600; }
.fl-line { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.fl-pill { --st: var(--accent); display: inline-flex; align-items: center; gap: 6px; max-width: 100%; min-height: 28px; padding: 0 10px; border-radius: 9px; font-size: 12px; color: var(--ink); background: var(--card2); border: 1px solid var(--line); overflow: hidden; }
.fl-pill svg.fli { width: 14px; height: 14px; color: var(--st); }
.fl-pill-k { font-weight: 600; white-space: nowrap; }
.fl-pill-t { min-width: 0; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.st-reply { --st: var(--accent); }
.st-buttons { --st: var(--cyan); }
.st-product { --st: var(--pink); }
.st-stage { --st: var(--green); }
.st-handoff { --st: var(--amber); }
.st-ai { --st: var(--blue); }
.fl-rule-foot { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 12px; padding-top: 10px; border-top: 1px solid var(--line); }
.fl-stats { flex: 1; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 16px; font-size: 12.5px; color: var(--muted); }
.fl-stats > span { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.fl-stats b { color: var(--ink); font-weight: 700; }
.fl-stats .good b { color: var(--fl-good); }
.fl-stats svg.fli { width: 14px; height: 14px; color: var(--faint); }
.fl-acts { display: flex; align-items: center; gap: 2px; }
.fl-acts .fl-btn { margin: 0 4px; }
.fl-confirm { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 10px 12px; border-radius: 10px; font-size: 13px; background: color-mix(in srgb, var(--red) 8%, var(--card)); border: 1px solid color-mix(in srgb, var(--red) 35%, transparent); }
.fl-confirm[hidden] { display: none; }
.fl-confirm > span:first-child { display: inline-flex; align-items: flex-start; gap: 6px; min-width: 0; }
.fl-confirm svg.fli { color: var(--fl-bad); margin-top: 2px; }
.fl-onoff { font-size: 12px; font-weight: 600; color: var(--muted); }
.fl-onoff.on { color: var(--fl-good); }

/* switch */
.fl-switch { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; padding: 0 2px; border: none; background: transparent; color: var(--muted); font-size: 12.5px; font-weight: 600; cursor: pointer; }
.fl-switch:hover { border: none; }
.fl-switch-k { position: relative; width: 38px; height: 22px; flex: none; border-radius: 999px; background: var(--line2); transition: background .15s; }
.fl-switch-k::after { content: ""; position: absolute; top: 3px; left: 3px; width: 16px; height: 16px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, .25); transition: transform .15s; }
.fl-switch[aria-checked="true"] { color: var(--fl-good); }
.fl-switch[aria-checked="true"] .fl-switch-k { background: var(--green); }
.fl-switch[aria-checked="true"] .fl-switch-k::after { transform: translateX(16px); }
.fl-switch:disabled { opacity: .6; cursor: wait; }

/* ---------- test panel ---------- */
.fl-test { display: flex; flex-direction: column; gap: 10px; padding: 16px; border-radius: var(--fl-radius); background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow); }
.fl-ed .fl-test { box-shadow: none; }
.fl-test-h { display: flex; align-items: flex-start; gap: 10px; }
.fl-test-h h4 { margin: 0; font-size: 14px; font-weight: 700; }
.fl-test-h p { margin: 2px 0 0; font-size: 12px; line-height: 1.45; color: var(--muted); }
.fl-test-ic { width: 30px; height: 30px; flex: none; border-radius: 9px; display: flex; align-items: center; justify-content: center; color: var(--accent); background: rgba(var(--accentRgb), .1); }
.fl-test-ic svg.fli { width: 14px; height: 14px; }
.fl-test-in { display: flex; gap: 6px; }
.fl-test-in input { flex: 1; min-width: 0; min-height: 38px; }
.fl-togs { display: flex; flex-wrap: wrap; gap: 6px; }
.fl-tog { position: relative; display: inline-flex; cursor: pointer; }
.fl-tog input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.fl-tog > span { display: inline-flex; align-items: center; gap: 5px; min-height: 32px; padding: 0 10px; border-radius: 999px; font-size: 12.5px; color: var(--muted); background: var(--card); border: 1px solid var(--line2); }
.fl-tog > span svg.fli { width: 14px; height: 14px; }
.fl-tog:hover > span { border-color: var(--accent); }
.fl-tog input:checked + span { color: var(--accent); background: rgba(var(--accentRgb), .1); border-color: rgba(var(--accentRgb), .45); font-weight: 600; }
.fl-tog input:focus-visible + span { outline: 2px solid var(--accent); outline-offset: 2px; }
.fl-test-out:empty { display: none; }
.fl-res { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--card); }
.fl-res svg.fli { margin-top: 2px; }
.fl-res b { font-size: 13.5px; }
.fl-res p { margin: 3px 0 0; font-size: 12.5px; line-height: 1.5; color: var(--muted); }
.fl-res.good { border-color: color-mix(in srgb, var(--green) 40%, transparent); background: color-mix(in srgb, var(--green) 7%, var(--card)); }
.fl-res.good svg.fli { color: var(--fl-good); }
.fl-res.warn { border-color: color-mix(in srgb, var(--amber) 45%, transparent); background: color-mix(in srgb, var(--amber) 8%, var(--card)); }
.fl-res.warn svg.fli { color: var(--fl-warn); }
.fl-res.ai { border-color: color-mix(in srgb, var(--blue) 35%, transparent); background: color-mix(in srgb, var(--blue) 6%, var(--card)); }
.fl-res.ai svg.fli { color: var(--fl-info); }
.fl-trace { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.fl-trace li { display: flex; align-items: flex-start; gap: 8px; padding: 7px 0; border-bottom: 1px dashed var(--line); font-size: 12.5px; }
.fl-trace li:last-child { border-bottom: none; }
.fl-trace li > div { display: flex; flex-direction: column; min-width: 0; }
.fl-trace li b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fl-trace li span { color: var(--muted); }
.fl-tr-ic { display: inline-flex; margin-top: 1px; color: var(--faint); }
.fl-trace li.r-matched .fl-tr-ic, .fl-trace li.r-matched b { color: var(--fl-good); }
.fl-trace li.r-disabled { opacity: .7; }

/* ---------- chat preview ---------- */
.fl-chat { display: flex; flex-direction: column; gap: 6px; padding: 14px 12px; border-radius: 12px; background: var(--card2); border: 1px solid var(--line); min-height: 120px; }
.fl-ed .fl-prev .fl-chat { background: var(--card); }
.fl-chat.sm { min-height: 0; padding: 10px; }
.fl-b { max-width: 86%; padding: 8px 12px; border-radius: 14px; font-size: 13px; line-height: 1.5; white-space: pre-wrap; word-break: break-word; }
.fl-b.cust { align-self: flex-start; background: var(--card); border: 1px solid var(--line2); border-bottom-left-radius: 4px; }
.fl-b.cust.img { display: inline-flex; align-items: center; gap: 6px; color: var(--muted); }
.fl-b.bot { align-self: flex-end; background: rgba(var(--accentRgb), .12); border: 1px solid rgba(var(--accentRgb), .24); border-bottom-right-radius: 4px; }
.fl-b.bot.ai { display: inline-flex; align-items: center; gap: 6px; color: var(--fl-info); background: color-mix(in srgb, var(--blue) 7%, var(--card)); border: 1px dashed color-mix(in srgb, var(--blue) 45%, transparent); }
.fl-b.bot.faded { opacity: .6; }
.fl-qr { align-self: flex-end; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px; max-width: 92%; }
.fl-qr span { min-height: 30px; display: inline-flex; align-items: center; padding: 0 12px; border-radius: 999px; font-size: 12.5px; font-weight: 600; color: var(--accent); background: var(--card); border: 1px solid rgba(var(--accentRgb), .45); }
.fl-cards { align-self: flex-end; display: flex; gap: 8px; max-width: 100%; overflow-x: auto; padding-bottom: 2px; }
.fl-card { flex: none; width: 116px; display: flex; flex-direction: column; gap: 3px; padding: 6px; border-radius: 10px; background: var(--card); border: 1px solid var(--line); font-size: 11.5px; }
.fl-card img, .fl-card-img { width: 100%; aspect-ratio: 1; border-radius: 7px; object-fit: cover; }
.fl-card-img { display: flex; align-items: center; justify-content: center; color: var(--faint); background: var(--hover); }
.fl-card b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fl-card span:last-child { color: var(--accent); font-weight: 600; }
.fl-card.ghost b { color: var(--muted); font-weight: 500; }
.fl-sys { align-self: center; display: inline-flex; align-items: center; gap: 5px; max-width: 100%; padding: 3px 10px; font-size: 11.5px; line-height: 1.5; color: var(--muted); background: var(--hover); border-radius: 999px; text-align: center; }
.fl-sys svg.fli { width: 13px; height: 13px; }

/* ---------- pipeline tab ---------- */
.fl-pipe-wrap { max-width: 860px; }
.fl-pipe { list-style: none; margin: 0; padding: 0; }
.fl-stage { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 12px; }
.fl-stage-rail { position: relative; display: flex; justify-content: center; }
.fl-stage-rail::after { content: ""; position: absolute; top: 42px; bottom: 0; left: 50%; width: 2px; margin-left: -1px; background: var(--line2); border-radius: 2px; }
.fl-stage.is-end .fl-stage-rail::after { display: none; }
.fl-stage-n { position: relative; z-index: 1; width: 30px; height: 30px; margin-top: 12px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12.5px; font-weight: 700; color: var(--accent); background: var(--card); border: 2px solid rgba(var(--accentRgb), .45); }
.fl-stage.is-start .fl-stage-n { color: #fff; background: var(--accent); border-color: var(--accent); }
.fl-stage-card { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; padding: 14px 16px; border-radius: var(--fl-radius); background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow); min-width: 0; }
.fl-stage-h { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 10px; }
.fl-stage-h h4 { margin: 0; font-size: 14.5px; font-weight: 700; }
.fl-stage-ic { width: 30px; height: 30px; flex: none; border-radius: 9px; display: flex; align-items: center; justify-content: center; color: var(--accent); background: rgba(var(--accentRgb), .1); }
.fl-stage-b { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.fl-stage-a { display: flex; justify-content: flex-end; margin: -4px -6px -6px 0; }
.fl-sub { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 12px; padding: 10px 12px; border-radius: 10px; background: var(--card2); border: 1px solid var(--line); }
.fl-sub-t { flex: 1; min-width: 180px; display: flex; flex-direction: column; gap: 2px; font-size: 13px; }
.fl-sub-t span { font-size: 12px; color: var(--muted); }
.fl-sub-s { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 6px; min-width: 0; max-width: 100%; }
.fl-order { list-style: none; margin: 0; padding: 0 0 0 12px; display: flex; flex-direction: column; gap: 6px; counter-reset: flo; border-left: 2px solid var(--line); }
.fl-order li { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 12.5px; counter-increment: flo; }
.fl-order li::before { content: counter(flo); width: 20px; flex: none; font-weight: 700; color: var(--muted); text-align: right; }
.fl-order li.dim::before { content: ""; }
.fl-order li > span:last-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ---------- template library ---------- */
.fl-lib { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; }
.fl-tpl { display: flex; flex-direction: column; gap: 10px; padding: 16px; border-radius: var(--fl-radius); background: var(--card); border: 1px solid var(--line); box-shadow: var(--shadow); }
.fl-tpl:hover { border-color: var(--line2); }
.fl-tpl-h { display: flex; align-items: center; gap: 10px; }
.fl-tpl-h h4 { flex: 1; min-width: 0; margin: 0; font-size: 14.5px; font-weight: 700; }
.fl-tpl-ic { width: 36px; height: 36px; flex: none; border-radius: 11px; display: flex; align-items: center; justify-content: center; color: color-mix(in srgb, var(--tone, var(--accent)) 72%, var(--ink)); background: color-mix(in srgb, var(--tone, var(--accent)) 13%, var(--card)); }
.fl-tpl-ic svg.fli { width: 18px; height: 18px; }
.fl-tpl-d { margin: 0; font-size: 13px; line-height: 1.55; color: var(--ink); }
.fl-tpl-a { margin-top: auto; display: flex; justify-content: flex-end; }

/* ---------- editor (drawer) ---------- */
.fl-ed { position: fixed; inset: 0; z-index: 75; display: flex; justify-content: flex-end; }
.fl-ed[hidden] { display: none; }
.fl-ed-scrim { position: absolute; inset: 0; background: rgba(12, 10, 28, .45); }
.fl-ed-panel { position: relative; width: min(1120px, 100%); height: 100%; display: flex; flex-direction: column; color: var(--ink); background: var(--card); box-shadow: var(--shadow); border-left: 1px solid var(--line); animation: fledin .2s ease-out; }
@keyframes fledin { from { transform: translateX(24px); opacity: .6; } to { transform: none; opacity: 1; } }
.fl-ed-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 16px 14px 24px; border-bottom: 1px solid var(--line); }
.fl-ed-head > div { flex: 1; min-width: 0; }
.fl-ed-head h3 { margin: 0; font-size: 18px; font-weight: 700; }
.fl-ed-head p { margin: 3px 0 0; font-size: 13px; color: var(--muted); }
.fl-ed-body { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) 380px; }
.fl-ed-form { min-height: 0; overflow-y: auto; padding: 20px 24px 32px; display: flex; flex-direction: column; gap: 22px; }
.fl-ed-side { min-height: 0; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 18px; background: var(--card2); border-left: 1px solid var(--line); }
.fl-ed-foot { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 8px; padding: 12px 24px; border-top: 1px solid var(--line); background: var(--card); }
.fl-ed-msg { margin-right: auto; display: inline-flex; align-items: center; gap: 6px; min-width: 0; font-size: 13px; color: var(--muted); }
.fl-ed-msg.err { color: var(--fl-bad); }
.fl-ed-msg.warn { color: var(--fl-warn); font-weight: 600; }
.fl-ed-msg:empty { display: none; }

.fl-field { display: flex; flex-direction: column; gap: 8px; min-width: 0; margin: 0; padding: 0; border: none; }
.fl-field > label, .fl-lbl { font-size: 13px; font-weight: 600; color: var(--ink); }
.fl-field legend { padding: 0; margin-bottom: 10px; font-size: 13px; font-weight: 600; color: var(--muted); }
.fl-leg-w { margin-right: 4px; font-size: 16px; font-weight: 800; color: var(--accent); }
.fl-field input:not([type="checkbox"]), .fl-field textarea, .fl-field select { width: 100%; min-height: 40px; }
.fl-field textarea { resize: vertical; line-height: 1.5; }
.fl-field input[aria-invalid="true"] { border-color: var(--red); }
.fl-help { margin: 0; font-size: 12px; line-height: 1.5; color: var(--muted); }
.fl-ferr { display: flex; align-items: center; gap: 6px; margin: 0; font-size: 12.5px; font-weight: 500; color: var(--fl-bad); }
.fl-ferr[hidden] { display: none; }
.fl-ferr svg.fli { width: 14px; height: 14px; }
.fl-count { align-self: flex-end; margin-top: -4px; font-size: 11px; color: var(--faint); }

.fl-trigs { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 8px; }
.fl-trig { display: flex; align-items: flex-start; gap: 10px; min-height: 64px; padding: 10px 12px; text-align: left; border-radius: 12px; border: 1.5px solid var(--line2); background: var(--card); color: var(--ink); cursor: pointer; }
.fl-trig:hover { border-color: color-mix(in srgb, var(--tone) 55%, var(--line2)); }
.fl-trig[aria-checked="true"] { border-color: var(--tone); background: color-mix(in srgb, var(--tone) 8%, var(--card)); box-shadow: 0 0 0 3px color-mix(in srgb, var(--tone) 14%, transparent); }
.fl-trig-ic { width: 30px; height: 30px; flex: none; border-radius: 9px; display: flex; align-items: center; justify-content: center; color: color-mix(in srgb, var(--tone) 72%, var(--ink)); background: color-mix(in srgb, var(--tone) 13%, var(--card)); }
.fl-trig-t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.fl-trig-t b { font-size: 13px; }
.fl-trig-t span { font-size: 11.5px; line-height: 1.45; color: var(--muted); }

.fl-chipbox { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 42px; padding: 6px 8px; border-radius: 10px; border: 1px solid var(--line2); background: var(--input); cursor: text; }
.fl-chipbox:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(var(--accentRgb), .16); }
.fl-chipbox.bad { border-color: var(--red); }
.fl-chip.edit { padding-right: 2px; color: var(--ink); background: rgba(var(--accentRgb), .1); border-color: rgba(var(--accentRgb), .28); }
.fl-chip.edit button { width: 22px; height: 22px; padding: 0; display: inline-flex; align-items: center; justify-content: center; border: none; border-radius: 50%; background: transparent; color: var(--muted); cursor: pointer; }
.fl-chip.edit button:hover { color: var(--fl-bad); background: color-mix(in srgb, var(--red) 12%, transparent); }
.fl-chip.edit button svg.fli { width: 12px; height: 12px; }
.fl-ed .fl-chipbox input.fl-chipin { flex: 1; min-width: 120px; width: auto; min-height: 28px; padding: 2px 4px; border: none; background: transparent; box-shadow: none; }

.fl-presets { display: flex; flex-wrap: wrap; gap: 6px; }
.fl-preset { min-height: 34px; padding: 0 12px; border-radius: 999px; font-size: 12.5px; font-weight: 600; border: 1px solid var(--line2); background: var(--card); color: var(--muted); cursor: pointer; }
.fl-preset[aria-pressed="true"] { color: var(--accent); border-color: var(--accent); background: rgba(var(--accentRgb), .08); }
.fl-delay { display: flex; gap: 8px; max-width: 320px; }
.fl-delay input { flex: 1; }
.fl-field .fl-delay select { width: 130px; flex: none; }

.fl-steps { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.fl-step { --st: var(--accent); position: relative; display: flex; flex-direction: column; gap: 10px; padding: 12px 12px 14px; border-radius: 12px; background: var(--card); border: 1px solid var(--line2); border-left: 3px solid var(--st); }
.fl-step.bad { border-color: var(--red); border-left-color: var(--red); }
.fl-step + .fl-step::before { content: ""; position: absolute; left: 22px; top: -11px; width: 2px; height: 10px; background: var(--line2); }
.fl-step-h { display: flex; align-items: center; gap: 8px; }
.fl-step-h b { font-size: 13.5px; }
.fl-step-n { width: 22px; height: 22px; flex: none; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; color: var(--muted); background: var(--hover); }
.fl-step-ic { width: 26px; height: 26px; flex: none; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: color-mix(in srgb, var(--st) 75%, var(--ink)); background: color-mix(in srgb, var(--st) 13%, var(--card)); }
.fl-step-ic svg.fli { width: 14px; height: 14px; }
.fl-step-b { display: flex; flex-direction: column; gap: 8px; padding-left: 30px; }
.fl-addwrap { position: relative; align-self: flex-start; }
.fl-add { border-style: dashed; color: var(--accent); }
.fl-addmenu { position: absolute; left: 0; top: calc(100% + 6px); z-index: 5; width: min(340px, 80vw); display: flex; flex-direction: column; padding: 6px; border-radius: 12px; background: var(--card); border: 1px solid var(--line2); box-shadow: var(--shadow); }
.fl-addmenu[hidden] { display: none; }
.fl-add-it { display: flex; align-items: flex-start; gap: 10px; min-height: 44px; padding: 8px 10px; text-align: left; border: none; border-radius: 9px; background: transparent; color: var(--ink); cursor: pointer; }
.fl-add-it:hover:not(:disabled), .fl-add-it:focus-visible { background: var(--hover); }
.fl-add-it > span:last-child { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.fl-add-it b { font-size: 13px; }
.fl-add-it > span:last-child > span { font-size: 11.5px; color: var(--muted); }
.fl-add-it:disabled { opacity: .45; cursor: not-allowed; }
.fl-add-it .fl-step-ic { margin-top: 1px; }

/* ---------- toast ---------- */
#fl-toast { position: fixed; left: 50%; bottom: 24px; z-index: 90; max-width: calc(100vw - 32px); padding: 10px 16px; font-size: 13px; border-radius: 10px; color: var(--card); background: var(--ink); box-shadow: var(--shadow); opacity: 0; pointer-events: none; transform: translate(-50%, 12px); transition: opacity .18s, transform .18s; }
#fl-toast.show { opacity: 1; transform: translate(-50%, 0); }
#fl-toast.err { color: #fff; background: var(--red); }

/* ---------- responsive ---------- */
@media (max-width: 1100px) {
  .fl-rules-grid { grid-template-columns: minmax(0, 1fr); }
  .fl-side { position: static; }
  .fl-ed-body { grid-template-columns: minmax(0, 1fr); overflow-y: auto; }
  .fl-ed-form, .fl-ed-side { overflow: visible; }
  .fl-ed-side { border-left: none; border-top: 1px solid var(--line); }
}
@media (max-width: 640px) {
  .fl-top .fl-btn--primary { width: 100%; }
  .fl-btn, .fl-preset, .fl-tog > span { min-height: 40px; }
  .fl-ib { width: 40px; height: 40px; }
  .fl-ib.sm { width: 36px; height: 36px; }
  .fl-rule { grid-template-columns: minmax(0, 1fr); padding: 14px; }
  .fl-ord { display: none; }
  .fl-rule-top h4 { white-space: normal; }
  .fl-acts { width: 100%; justify-content: flex-end; }
  .fl-stage { grid-template-columns: 28px minmax(0, 1fr); gap: 8px; }
  .fl-stage-n { width: 26px; height: 26px; }
  .fl-ed-head { padding: 14px 12px 12px 16px; }
  .fl-ed-form { padding: 16px; }
  .fl-ed-side { padding: 16px; }
  .fl-ed-foot { padding: 10px 16px; }
  .fl-ed-foot .fl-btn { flex: 1; }
  .fl-ed-msg { flex-basis: 100%; }
  .fl-trigs { grid-template-columns: minmax(0, 1fr); }
  .fl-step-b { padding-left: 0; }
  .fl-lib { grid-template-columns: minmax(0, 1fr); }
  .fl-tabs [role="tab"] { padding: 0 10px; }
}
