/* =============================================================
   CTINT MF Summarisation — app styles (built on CDSS tokens)
   ============================================================= */

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; height: 100%; }
body {
  font-family: var(--font-sans);
  color: var(--secondary-500);
  background: var(--common-bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}
#root { height: 100%; }
button { font-family: inherit; }

/* ---------- App shell ---------- */
.app { display: grid; grid-template-rows: var(--h-header) 1fr; height: 100vh; overflow: hidden; }

.header {
  height: var(--h-header); background: #fff; border-bottom: 1px solid var(--grey-200);
  display: grid; grid-template-columns: 230px 1fr auto; align-items: center;
  padding: 0 20px; gap: 20px; z-index: 20;
}
.logo-slot { display: flex; align-items: center; gap: 10px; }
.logo-slot svg { width: 30px; height: 30px; flex: none; }
.logo-word { font: 700 var(--fs-body)/1 var(--font-sans); letter-spacing: -.01em; }
.logo-word .mono { color: var(--primary-900); }
.crumbs { display: flex; align-items: center; gap: 9px; font: 500 var(--fs-body)/1 var(--font-sans); min-width: 0; }
.crumbs .c { color: var(--grey-500); cursor: pointer; white-space: nowrap; }
.crumbs .c:hover { color: var(--secondary-500); }
.crumbs .s { color: var(--grey-300); }
.crumbs .cur { color: var(--secondary-500); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.hright { display: flex; align-items: center; gap: 16px; }
.station { display: inline-flex; align-items: center; gap: 7px; height: 28px; padding: 0 12px; border-radius: 9999px; background: var(--common-bg); font: 500 var(--fs-footnote)/1 var(--font-sans); color: var(--grey-600); }
.station::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--status-connected); }
.bell { position: relative; width: 36px; height: 36px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; color: var(--grey-600); cursor: pointer; }
.bell:hover { background: var(--grey-100); }
.bell svg { width: 19px; height: 19px; }
.bell .count { position: absolute; top: 0; right: 0; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9999px; background: var(--status-danger); color: #fff; font: 700 var(--fs-mini)/17px var(--font-sans); display: inline-flex; align-items: center; justify-content: center; box-shadow: var(--shadow-dot); }
.userbox { display: flex; align-items: center; gap: 9px; cursor: pointer; padding: 4px 6px 4px 4px; border-radius: 9999px; }
.userbox:hover { background: var(--grey-100); }
.avatar { width: 30px; height: 30px; border-radius: 50%; background: var(--primary-100); color: var(--primary-900); display: inline-flex; align-items: center; justify-content: center; font: 700 var(--fs-footnote)/1 var(--font-sans); position: relative; flex: none; }
.avatar.ring::after { content: ""; position: absolute; inset: -3px; border-radius: 50%; border: 2px solid var(--status-success); }
.userbox .nm { font: 500 var(--fs-remark)/1 var(--font-sans); }
.userbox .caret { color: var(--grey-400); }

.body { display: grid; grid-template-columns: var(--sider-w, 218px) 1fr; min-height: 0; overflow: hidden; }
.body.no-sider { grid-template-columns: 1fr; }

/* ---------- Sider ---------- */
.sider { background: #fff; border-right: 1px solid var(--grey-200); padding: 14px 12px; display: flex; flex-direction: column; gap: 2px; overflow-y: auto; }
.sider .grp { font: 500 var(--fs-mini)/1 var(--font-sans); text-transform: uppercase; letter-spacing: .1em; color: var(--grey-400); padding: 14px 12px 7px; }
.sider .grp:first-child { padding-top: 4px; }
.nav-item { display: flex; align-items: center; gap: 11px; padding: 10px 12px; border-radius: var(--radius); font: 500 var(--fs-remark)/1.1 var(--font-sans); color: var(--grey-600); cursor: pointer; user-select: none; }
.nav-item:hover { background: var(--grey-50); color: var(--secondary-500); }
.nav-item .ic { width: 18px; height: 18px; flex: none; color: var(--grey-400); }
.nav-item .ic svg { width: 100%; height: 100%; }
.nav-item.active { background: var(--primary-100); color: var(--primary-900); font-weight: 700; }
.nav-item.active .ic { color: var(--primary-900); }
.nav-item .tail { margin-left: auto; font: 600 var(--fs-mini)/1 var(--font-sans); color: var(--grey-500); background: var(--grey-100); border-radius: 9999px; padding: 3px 7px; }
.nav-item.active .tail { background: #fff; color: var(--primary-900); }

/* ---------- Main scroll region ---------- */
.main { overflow-y: auto; padding: 22px 26px 60px; }
.main.flush { padding: 0; }

/* ---------- Page head ---------- */
.page-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; margin-bottom: 18px; }
.page-head .ttl { font: 700 var(--fs-t3)/1.1 var(--font-sans); margin: 0; letter-spacing: -.01em; }
.page-head .lead { margin: 6px 0 0; font: 400 var(--fs-remark)/1.5 var(--font-sans); color: var(--grey-600); max-width: 640px; }
.actions { display: flex; gap: 12px; align-items: center; flex: none; }

/* ---------- Two-layer button ---------- */
.btn { position: relative; display: inline-flex; border: 0; background: none; padding: 0; cursor: pointer; font-family: var(--font-sans); }
.btn .peek { position: absolute; inset: 0; z-index: 1; border-radius: var(--radius-md); transform: scale(.95); transition: transform .16s ease, border-radius .16s ease; }
.btn .lbl { position: relative; z-index: 2; display: inline-flex; align-items: center; gap: 8px; padding: 9px 16px; border-radius: var(--radius); border: 1px solid transparent; font: 500 var(--fs-remark)/1 var(--font-sans); white-space: nowrap; transition: transform .16s ease, box-shadow .16s ease; }
.btn:hover .lbl { transform: translate(-4px, -4px); }
.btn:hover .peek { transform: scale(1); border-radius: var(--radius); }
.btn.primary .lbl { background: var(--secondary-900); color: #fff; }
.btn.primary .peek { background: var(--primary-500); }
.btn.primary:hover .lbl { box-shadow: var(--shadow-button-primary); }
.btn.orange .lbl { background: var(--primary-500); color: var(--secondary-900); }
.btn.orange .peek { background: var(--secondary-900); }
.btn.blank .lbl { background: #fff; color: var(--secondary-500); border-color: var(--grey-200); }
.btn.blank .peek { background: var(--secondary-900); }
.btn.green .lbl { background: var(--status-success); color: #fff; }
.btn.green .peek { background: var(--secondary-900); }
.btn.secondary .lbl { background: var(--tertiary-500); color: #fff; }
.btn.secondary .peek { background: var(--secondary-900); }
.btn .ic { width: 15px; height: 15px; display: inline-flex; }
.btn .ic svg { width: 100%; height: 100%; }
.btn.sm .lbl { padding: 6px 12px; font-size: var(--fs-footnote); }
.btn.back .lbl { background: #fff; color: var(--grey-600); border-color: var(--grey-200); }
.btn.back .peek { display: none; }
.btn.back:hover .lbl { transform: none; background: var(--grey-50); }
.btn[disabled] { opacity: .45; pointer-events: none; }

/* ghost icon button */
.iconbtn { width: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius-md); border: 1px solid var(--grey-200); background: #fff; color: var(--grey-600); cursor: pointer; }
.iconbtn:hover { color: var(--secondary-500); border-color: var(--grey-300); background: var(--grey-50); }
.iconbtn svg { width: 16px; height: 16px; }

/* ---------- Pills (filter) ---------- */
.pills { display: flex; gap: 9px; flex-wrap: wrap; align-items: center; }
.pill { display: inline-flex; align-items: center; gap: 7px; height: 32px; flex: 0 0 auto; align-self: center; padding: 0 14px; border-radius: 9999px; border: 1px solid var(--grey-200); background: #fff; font: 500 var(--fs-footnote)/1 var(--font-sans); color: var(--secondary-500); cursor: pointer; user-select: none; white-space: nowrap; }
.pill:hover { border-color: var(--grey-300); }
.pill.sel { background: var(--primary-100); border-color: var(--primary-900); color: var(--primary-900); box-shadow: var(--shadow-button-common); }
.pill .n { font-weight: 700; }

/* ---------- Tags / status chips ---------- */
.tag { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 8px; border-radius: 3px; font: 500 var(--fs-mini)/1 var(--font-sans); letter-spacing: .04em; text-transform: uppercase; white-space: nowrap; }
.chan { display: inline-flex; align-items: center; gap: 6px; height: 22px; padding: 0 9px; border-radius: 3px; font: 500 var(--fs-mini)/1 var(--font-sans); letter-spacing: .04em; white-space: nowrap; }
.chan.call  { background: rgba(0,117,255,.12); color: var(--status-info); }
.chan.wa    { background: rgba(28,197,0,.14); color: var(--status-success); }
.chan.wechat{ background: rgba(28,197,0,.14); color: #1a8f00; }
.chan.email { background: var(--grey-100); color: var(--grey-600); }
.chan.chat  { background: rgba(0,163,255,.12); color: var(--tertiary-700); }

/* status chip with leading dot */
.sck { display: inline-flex; align-items: center; gap: 7px; height: 24px; padding: 0 10px; border-radius: 9999px; font: 600 var(--fs-footnote)/1 var(--font-sans); white-space: nowrap; }
.sck::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; flex: none; }
.sck.notstarted { background: var(--grey-100); color: var(--grey-600); }
.sck.transcribing { background: rgba(0,163,255,.14); color: var(--tertiary-700); }
.sck.summarising { background: var(--primary-100); color: var(--primary-900); }
.sck.ready { background: rgba(0,117,255,.12); color: var(--status-info); }
.sck.reviewed { background: rgba(28,197,0,.14); color: #1a8f00; }
.sck.failed { background: rgba(255,39,28,.12); color: var(--status-danger); }
.sck.pulse::before { animation: dotpulse 1.1s ease-in-out infinite; }
@keyframes dotpulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: .35; transform: scale(.7); } }

/* ---------- Panels / cards ---------- */
.panel { background: #fff; border: 1px solid var(--grey-200); border-radius: var(--radius-lg); }
.panel.shadow { box-shadow: var(--shadow-card); }
.panel-head { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 15px 18px; border-bottom: 1px solid var(--grey-100); }
.panel-head h3 { font: 700 var(--fs-t6)/1.2 var(--font-sans); margin: 0; }
.panel-body { padding: 18px; }

/* ---------- KPI strip ---------- */
.kpis { display: grid; grid-template-columns: repeat(var(--kpi-cols, 5), 1fr); gap: 14px; margin-bottom: 18px; }
.kpi { background: #fff; border: 1px solid var(--grey-200); border-radius: var(--radius-lg); padding: 15px 17px; cursor: pointer; transition: border-color .12s ease, box-shadow .12s ease; }
.kpi:hover { border-color: var(--grey-300); box-shadow: var(--shadow-card); }
.kpi.sel { border-color: var(--primary-900); box-shadow: var(--shadow-button-common); }
.kpi .n { font: 700 var(--fs-t4)/1 var(--font-sans); letter-spacing: -.015em; }
.kpi .l { font: 400 var(--fs-footnote)/1.3 var(--font-sans); color: var(--grey-600); margin-top: 5px; display: flex; align-items: center; gap: 6px; }
.kpi .l .swatch { width: 8px; height: 8px; border-radius: 50%; }
.kpi .n.danger { color: var(--status-danger); }
.kpi .n.orange { color: var(--primary-900); }
.kpi .n.info { color: var(--status-info); }

/* ---------- Tables ---------- */
.tbl-wrap { background: #fff; border: 1px solid var(--grey-200); border-radius: var(--radius-lg); overflow: hidden; box-shadow: var(--shadow-card); }
.tbl-toolbar { display: flex; align-items: center; gap: 14px; padding: 13px 16px; border-bottom: 1px solid var(--grey-100); }
.tbl-toolbar .cnt { font: 500 var(--fs-remark)/1 var(--font-sans); color: var(--grey-600); }
.tbl-toolbar .cnt b { color: var(--secondary-500); font-weight: 700; }
.tbl-toolbar .spacer { flex: 1; }
table.dt { width: 100%; border-collapse: collapse; }
table.dt th { text-align: left; font: 500 var(--fs-mini)/1.3 var(--font-sans); text-transform: uppercase; letter-spacing: .07em; color: var(--grey-600); padding: 11px 14px; border-bottom: 2px solid var(--grey-200); white-space: nowrap; background: var(--grey-50); position: sticky; top: 0; z-index: 1; }
table.dt th .sort { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; }
table.dt td { padding: var(--row-pad, 10px) 14px; border-bottom: 1px solid var(--grey-100); font: 400 var(--fs-remark)/1.3 var(--font-sans); vertical-align: middle; }
table.dt tbody tr { cursor: pointer; transition: background .1s ease; }
table.dt tbody tr:hover { background: var(--primary-100); background: color-mix(in srgb, var(--primary-100) 55%, #fff); }
table.dt tbody tr:last-child td { border-bottom: 0; }
.cid { font-family: ui-monospace, Menlo, monospace; font-size: var(--fs-footnote); color: var(--primary-900); font-weight: 700; }
.mono { font-family: ui-monospace, Menlo, monospace; font-size: var(--fs-footnote); color: var(--grey-600); }
.who { display: flex; align-items: center; gap: 9px; }
.av-sm { width: 26px; height: 26px; border-radius: 50%; background: var(--primary-100); color: var(--primary-900); display: inline-flex; align-items: center; justify-content: center; font: 700 var(--fs-mini)/1 var(--font-sans); flex: none; }
.sub2 { color: var(--grey-500); font-size: var(--fs-footnote); }
.row-act { display: flex; gap: 7px; align-items: center; }

/* table footer / pagination */
.tbl-foot { display: flex; align-items: center; justify-content: space-between; padding: 11px 16px; border-top: 1px solid var(--grey-100); font: 400 var(--fs-footnote)/1 var(--font-sans); color: var(--grey-600); }
.pager { display: flex; align-items: center; gap: 6px; }
.pager button { width: 30px; height: 30px; border-radius: var(--radius); border: 1px solid var(--grey-200); background: #fff; color: var(--grey-600); cursor: pointer; font-size: var(--fs-footnote); }
.pager button.on { background: var(--secondary-900); color: #fff; border-color: var(--secondary-900); }
.pager button:hover:not(.on) { border-color: var(--grey-300); }

/* ---------- Form fields ---------- */
.field { display: flex; flex-direction: column; gap: 7px; }
.field > label { font: 500 var(--fs-remark)/1 var(--font-sans); color: var(--secondary-500); display: flex; align-items: center; gap: 6px; }
.field > label .req { color: var(--status-danger); }
.field .hint { font: italic 400 var(--fs-footnote)/1.4 var(--font-sans); color: var(--grey-500); }
.inp, .selbox, textarea.inp { width: 100%; height: var(--h-field); padding: 0 14px; border: 1px solid var(--grey-200); border-radius: var(--radius); background: #fff; font: 400 var(--fs-remark)/1 var(--font-sans); color: var(--secondary-500); outline: none; transition: border-color .12s ease, box-shadow .12s ease; }
textarea.inp { height: auto; padding: 12px 14px; line-height: 1.55; resize: vertical; font-family: var(--font-sans); }
.inp::placeholder, textarea.inp::placeholder { color: var(--grey-400); font-style: italic; }
.inp:focus, .selbox:focus, textarea.inp:focus { border-color: var(--primary-900); box-shadow: var(--shadow-field); }
.selbox { appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5L6 7.5L9 4.5' stroke='%23636363' stroke-width='1.4' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 13px center; padding-right: 34px; cursor: pointer; }
.searchbox { position: relative; display: inline-flex; align-items: center; }
.searchbox svg { position: absolute; left: 12px; width: 16px; height: 16px; color: var(--grey-400); pointer-events: none; }
.searchbox .inp { padding-left: 36px; }

/* toggle switch */
.switch { position: relative; width: 42px; height: 24px; border-radius: 9999px; background: var(--grey-300); cursor: pointer; transition: background .14s ease; flex: none; }
.switch::after { content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform .14s ease; box-shadow: 0 1px 3px rgba(0,0,0,.3); }
.switch.on { background: var(--status-success); }
.switch.on::after { transform: translateX(18px); }

/* checkbox */
.cbx { width: 19px; height: 19px; border-radius: 4px; border: 1.5px solid var(--grey-300); background: #fff; display: inline-flex; align-items: center; justify-content: center; cursor: pointer; flex: none; transition: all .12s ease; }
.cbx svg { width: 12px; height: 12px; color: #fff; opacity: 0; }
.cbx.on { background: var(--secondary-900); border-color: var(--secondary-900); }
.cbx.on svg { opacity: 1; }

/* radio segmented */
.seg { display: inline-flex; border: 1px solid var(--grey-200); border-radius: var(--radius); overflow: hidden; }
.seg button { border: 0; background: #fff; padding: 9px 16px; font: 500 var(--fs-remark)/1 var(--font-sans); color: var(--grey-600); cursor: pointer; border-right: 1px solid var(--grey-200); }
.seg button:last-child { border-right: 0; }
.seg button.on { background: var(--secondary-900); color: #fff; }

/* ---------- Tab bar ---------- */
.tabbar { display: flex; gap: 2px; padding: 0 6px; border-bottom: 1px solid var(--grey-200); overflow-x: auto; }
.tab { position: relative; appearance: none; border: 0; background: none; cursor: pointer; padding: 14px 16px; font: 500 var(--fs-remark)/1 var(--font-sans); color: var(--grey-600); display: inline-flex; align-items: center; gap: 8px; transition: color .12s ease; white-space: nowrap; }
.tab:hover { color: var(--secondary-500); }
.tab .cnt { font: 600 var(--fs-mini)/1 var(--font-sans); color: var(--grey-500); background: var(--grey-100); border-radius: 9999px; padding: 3px 7px; }
.tab.on { color: var(--secondary-500); font-weight: 700; box-shadow: var(--shadow-tab-selected); }
.tab.on .cnt { background: var(--primary-100); color: var(--primary-900); }
.tab .tnum { width: 20px; height: 20px; border-radius: 50%; border: 1.5px solid var(--grey-300); display: inline-flex; align-items: center; justify-content: center; font: 700 var(--fs-mini)/1 var(--font-sans); color: var(--grey-500); }
.tab.on .tnum { background: var(--primary-900); border-color: var(--primary-900); color: #fff; }
.tab.done .tnum { background: var(--status-success); border-color: var(--status-success); color: #fff; }

/* ---------- Meta grid (key/value) ---------- */
.meta { display: grid; grid-template-columns: repeat(var(--meta-cols, 4), 1fr); gap: 16px 26px; }
.meta .k { font: 500 var(--fs-mini)/1.3 var(--font-sans); text-transform: uppercase; letter-spacing: .07em; color: var(--grey-500); margin-bottom: 5px; }
.meta .v { font: 400 var(--fs-remark)/1.35 var(--font-sans); color: var(--secondary-500); }
.meta .v.mono { font-family: ui-monospace, Menlo, monospace; font-size: var(--fs-footnote); }

/* ---------- Utility ---------- */
.row { display: flex; align-items: center; gap: 10px; }
.col { display: flex; flex-direction: column; }
.gap6 { gap: 6px; } .gap10 { gap: 10px; } .gap14 { gap: 14px; } .gap18 { gap: 18px; }
.wrap { flex-wrap: wrap; }
.spacer { flex: 1; }
.muted { color: var(--grey-600); }
.fade-in { animation: fadein .3s ease both; }
@media (prefers-reduced-motion: no-preference) {
  .fade-in { animation: fadein .3s ease; }
}
@keyframes fadein { from { transform: translateY(6px); } to { transform: none; } }
.divider { height: 1px; background: var(--grey-100); margin: 18px 0; }

/* code preview block */
.codeblock { background: var(--secondary-500); color: #e9e9e7; border-radius: var(--radius-lg); padding: 18px 20px; font: 400 var(--fs-footnote)/1.65 ui-monospace, Menlo, monospace; white-space: pre-wrap; overflow: auto; }
.codeblock .ck { color: var(--primary-400); }
.codeblock .cv { color: #9fd5ff; }
.codeblock .cc { color: var(--grey-400); font-style: italic; }

/* =============================================================
   Detail & Review screen
   ============================================================= */
.detail { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.detail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding-bottom: 16px; margin-bottom: 16px; border-bottom: 1px solid var(--grey-200); }
.dh-left { display: flex; align-items: flex-start; gap: 12px; }
.dh-meta { margin-top: 7px; font: 400 var(--fs-footnote)/1 var(--font-sans); color: var(--grey-600); }
.dh-meta > span { display: inline-flex; align-items: center; }

.detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; flex: 1; min-height: 0; }
.ctx { display: flex; flex-direction: column; gap: 16px; min-height: 0; }
.sumcol { min-height: 0; display: flex; }
.sumcol > .panel { flex: 1; }

/* audio player */
.player { display: flex; align-items: center; gap: 16px; background: var(--common-bg); border: 1px solid var(--grey-200); border-radius: var(--radius-lg); padding: 14px 16px; }
.play { width: 44px; height: 44px; border-radius: 50%; background: var(--secondary-900); color: #fff; display: inline-flex; align-items: center; justify-content: center; flex: none; cursor: pointer; }
.play:hover { transform: scale(1.05); }
.wave { flex: 1; display: flex; align-items: center; gap: 2px; height: 42px; cursor: pointer; }
.wave i { flex: 1; background: var(--grey-300); border-radius: 2px; min-height: 4px; transition: background .1s; }
.wave i.on { background: var(--primary-500); }
.dur { font-family: ui-monospace, Menlo, monospace; font-size: var(--fs-footnote); color: var(--grey-600); flex: none; }
.empty-audio { font: italic 400 var(--fs-remark)/1.5 var(--font-sans); color: var(--grey-500); padding: 8px 2px; }

/* transcript */
.trans-scroll { overflow-y: auto; flex: 1; }
.transcript { display: flex; flex-direction: column; gap: 14px; }
.turn { max-width: 92%; }
.turn.agent { align-self: flex-start; }
.turn.cust { align-self: flex-end; }
.turn-meta { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.turn-meta .spk { font: 700 var(--fs-mini)/1 var(--font-sans); text-transform: uppercase; letter-spacing: .06em; }
.turn.agent .spk { color: var(--tertiary-700); }
.turn.cust .spk { color: var(--primary-900); }
.turn-meta .ts { font-family: ui-monospace, Menlo, monospace; font-size: var(--fs-mini); color: var(--grey-400); }
.turn-text { font: 400 var(--fs-remark)/1.55 var(--font-sans); padding: 10px 13px; border-radius: var(--radius-md); }
.turn.agent .turn-text { background: var(--grey-50); border: 1px solid var(--grey-100); }
.turn.cust .turn-text { background: var(--primary-100); border: 1px solid var(--primary-200); }

/* summary panel */
.sum-scroll { overflow-y: auto; flex: 1; }
.prov { display: flex; align-items: center; gap: 8px; font: 400 var(--fs-footnote)/1.4 var(--font-sans); color: var(--grey-600); background: var(--grey-50); border: 1px solid var(--grey-100); border-radius: var(--radius); padding: 9px 12px; margin-bottom: 18px; }
.prov b { color: var(--primary-900); }
.prov svg { color: var(--tertiary-600); flex: none; }
.sum-foot { display: flex; align-items: center; gap: 10px; padding: 12px 18px; border-top: 1px solid var(--grey-100); }

.summary-sections { display: flex; flex-direction: column; gap: 18px; }
.ss-head { font: 700 var(--fs-mini)/1.3 var(--font-sans); text-transform: uppercase; letter-spacing: .08em; color: var(--grey-500); margin-bottom: 8px; }
.ss-body { margin: 0; font: 400 var(--fs-remark)/1.6 var(--font-sans); color: var(--secondary-500); }
.ss-list { margin: 0; padding-left: 18px; display: flex; flex-direction: column; gap: 7px; font: 400 var(--fs-remark)/1.5 var(--font-sans); }
.ss-list li::marker { color: var(--primary-500); }
.outcome-tag { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: 3px; background: rgba(28,197,0,.14); color: #1a8f00; font: 700 var(--fs-mini)/1 var(--font-sans); text-transform: uppercase; letter-spacing: .05em; margin-right: 8px; }

.fups { display: flex; flex-direction: column; gap: 8px; }
.fup { display: flex; align-items: flex-start; gap: 10px; padding: 11px 13px; border: 1px solid var(--grey-200); border-radius: var(--radius); }
.fcheck { width: 19px; height: 19px; border-radius: 4px; border: 1.5px solid var(--grey-300); display: inline-flex; align-items: center; justify-content: center; flex: none; margin-top: 1px; color: #fff; }
.fcheck.on { background: var(--status-success); border-color: var(--status-success); }
.ftask { font: 500 var(--fs-remark)/1.4 var(--font-sans); }

.sent-meter { flex: 1; height: 10px; border-radius: 9999px; background: linear-gradient(90deg, var(--status-danger), var(--status-warning), var(--status-success)); position: relative; opacity: .25; }
.sent-fill { position: absolute; top: -3px; height: 16px; width: 3px; background: var(--secondary-900); border-radius: 2px; transform: translateX(-50%); }

.flagrow { display: flex; align-items: center; gap: 9px; padding: 10px 12px; border-radius: var(--radius); font: 400 var(--fs-remark)/1.4 var(--font-sans); }
.flagrow.warning { background: rgba(255,230,0,.20); color: #8a6d00; }
.flagrow.info { background: rgba(0,117,255,.10); color: var(--tertiary-700); }
.flagrow svg { flex: none; }
.wrap-cat { font-weight: 700; }
.wtag { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 9999px; background: var(--grey-50); border: 1px solid var(--grey-200); font: 500 var(--fs-footnote)/1 var(--font-sans); color: var(--grey-700); }

/* generation timeline */
.gen-banner { display: flex; align-items: center; gap: 14px; background: var(--primary-100); border: 1px solid var(--primary-200); border-radius: var(--radius-lg); padding: 14px 16px; margin-bottom: 18px; }
.gen-time { display: flex; flex-direction: column; }
.gstep { display: flex; align-items: flex-start; gap: 12px; padding: 9px 0; position: relative; }
.gstep::before { content: ""; position: absolute; left: 13px; top: 30px; bottom: -9px; width: 2px; background: var(--grey-200); }
.gstep:last-child::before { display: none; }
.gnode { width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; flex: none; z-index: 1; background: #fff; border: 2px solid var(--grey-200); color: #fff; }
.gstep.done .gnode { background: var(--status-success); border-color: var(--status-success); }
.gstep.active .gnode { background: #fff; border-color: var(--primary-900); }
.gstep.failed .gnode { background: var(--status-danger); border-color: var(--status-danger); }
.gstep.done::before { background: var(--status-success); }
.gdot { width: 7px; height: 7px; border-radius: 50%; background: var(--grey-300); }
.gtext { flex: 1; padding-top: 3px; }
.gl { font: 500 var(--fs-remark)/1.2 var(--font-sans); color: var(--secondary-500); }
.gstep.pending .gl { color: var(--grey-500); }
.gd { font: 400 var(--fs-footnote)/1.3 var(--font-sans); color: var(--grey-500); margin-top: 2px; }
.gstep.failed .gd { color: var(--status-danger); }
.gstate { padding-top: 4px; }
.spin { width: 15px; height: 15px; border-radius: 50%; border: 2px solid var(--primary-200); border-top-color: var(--primary-900); animation: spin .7s linear infinite; display: inline-block; }
.spin.big { width: 26px; height: 26px; border-width: 3px; }
@keyframes spin { to { transform: rotate(360deg); } }

/* generate empty state */
.gen-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 12px; padding: 48px 20px; height: 100%; }
.ge-ic { width: 64px; height: 64px; border-radius: 50%; background: var(--primary-100); color: var(--primary-900); display: inline-flex; align-items: center; justify-content: center; }
.gen-empty h3 { margin: 0; font: 700 var(--fs-t5)/1.2 var(--font-sans); }
.gen-empty p { margin: 0; max-width: 320px; }

/* =============================================================
   Prompt setup screen
   ============================================================= */
.tpl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.tpl-card { background: #fff; border: 1px solid var(--grey-200); border-radius: var(--radius-lg); padding: 18px; cursor: pointer; transition: border-color .12s ease, box-shadow .12s ease; display: flex; flex-direction: column; gap: 12px; }
.tpl-card:hover { border-color: var(--primary-900); box-shadow: var(--shadow-card); }
.tpl-card .tc-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.tpl-card h3 { margin: 0; font: 700 var(--fs-t6)/1.25 var(--font-sans); }
.tpl-card .tc-uc { font: 400 var(--fs-footnote)/1 var(--font-sans); color: var(--grey-600); margin-top: 3px; }
.tpl-card .tc-meta { display: flex; flex-wrap: wrap; gap: 14px; font: 400 var(--fs-footnote)/1 var(--font-sans); color: var(--grey-600); padding-top: 12px; border-top: 1px solid var(--grey-100); }
.tpl-card .tc-meta b { color: var(--secondary-500); }
.default-tag { display: inline-flex; align-items: center; height: 20px; padding: 0 8px; border-radius: 3px; background: var(--primary-100); color: var(--primary-900); font: 700 var(--fs-mini)/1 var(--font-sans); text-transform: uppercase; letter-spacing: .05em; }

/* setup workspace */
.setup { display: flex; flex-direction: column; height: 100%; min-height: 0; }
.setup-body { flex: 1; min-height: 0; display: grid; gap: 0; }
.setup-body.tabbed { grid-template-rows: auto 1fr; }
.setup-body.rail { grid-template-columns: 248px 1fr; }
.setup-panel { overflow-y: auto; padding: 24px 26px; background: #fff; }
.setup-panel-inner { max-width: 760px; }

/* left rail (variation) */
.rail-nav { border-right: 1px solid var(--grey-200); padding: 16px 12px; overflow-y: auto; background: var(--grey-50); }
.rail-item { display: flex; align-items: center; gap: 11px; padding: 11px 12px; border-radius: var(--radius); cursor: pointer; font: 500 var(--fs-remark)/1.2 var(--font-sans); color: var(--grey-600); }
.rail-item:hover { background: #fff; }
.rail-item.on { background: #fff; color: var(--secondary-500); font-weight: 700; box-shadow: var(--shadow-button-common); }
.rail-num { width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid var(--grey-300); display: inline-flex; align-items: center; justify-content: center; font: 700 var(--fs-mini)/1 var(--font-sans); color: var(--grey-500); flex: none; }
.rail-item.on .rail-num { background: var(--primary-900); border-color: var(--primary-900); color: #fff; }
.rail-item.done .rail-num { background: var(--status-success); border-color: var(--status-success); color: #fff; }
.rail-item .rsub { font: 400 var(--fs-mini)/1.2 var(--font-sans); color: var(--grey-400); margin-top: 2px; }

/* setup section building blocks */
.sec-title { font: 700 var(--fs-t5)/1.2 var(--font-sans); margin: 0 0 4px; }
.sec-lead { font: 400 var(--fs-remark)/1.5 var(--font-sans); color: var(--grey-600); margin: 0 0 20px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.form-grid .full { grid-column: 1 / -1; }
.opt-row { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--grey-200); border-radius: var(--radius); margin-bottom: 9px; }
.opt-row:hover { border-color: var(--grey-300); }
.opt-row .or-main { flex: 1; }
.opt-row .or-label { font: 500 var(--fs-remark)/1.3 var(--font-sans); }
.opt-row .or-sub { font: 400 var(--fs-footnote)/1.4 var(--font-sans); color: var(--grey-500); margin-top: 2px; }
.opt-row.on { border-color: var(--primary-900); background: color-mix(in srgb, var(--primary-100) 35%, #fff); }
.lockicon { color: var(--grey-400); }

.skill-layout { display: grid; grid-template-columns: 1fr 320px; gap: 20px; }
.skill-detail { background: var(--grey-50); border: 1px solid var(--grey-200); border-radius: var(--radius-lg); padding: 18px; align-self: start; position: sticky; top: 0; }
.skill-detail h4 { margin: 0 0 4px; font: 700 var(--fs-body)/1.25 var(--font-sans); }
.sd-k { font: 700 var(--fs-mini)/1.3 var(--font-sans); text-transform: uppercase; letter-spacing: .07em; color: var(--grey-500); margin: 16px 0 6px; }
.sd-instr { font: 400 var(--fs-footnote)/1.55 var(--font-sans); color: var(--secondary-500); background: #fff; border-left: 3px solid var(--primary-500); border-radius: 0 var(--radius) var(--radius) 0; padding: 11px 13px; }

.rule-row { display: flex; align-items: center; gap: 12px; padding: 13px 14px; border-bottom: 1px solid var(--grey-100); }
.rule-row:last-child { border-bottom: 0; }
.rule-row .rt { flex: 1; font: 400 var(--fs-remark)/1.4 var(--font-sans); }

.assign-tbl { width: 100%; border-collapse: collapse; }
.assign-tbl th { text-align: left; font: 500 var(--fs-mini)/1.3 var(--font-sans); text-transform: uppercase; letter-spacing: .07em; color: var(--grey-600); padding: 10px 12px; border-bottom: 2px solid var(--grey-200); }
.assign-tbl td { padding: 12px; border-bottom: 1px solid var(--grey-100); font: 400 var(--fs-remark)/1.3 var(--font-sans); }
.prio { width: 26px; height: 26px; border-radius: 50%; background: var(--secondary-900); color: #fff; display: inline-flex; align-items: center; justify-content: center; font: 700 var(--fs-footnote)/1 var(--font-sans); }
.prio.fb { background: var(--grey-400); }
.priority-list { counter-reset: pr; display: flex; flex-direction: column; gap: 8px; }
.priority-list .pl { display: flex; align-items: center; gap: 12px; padding: 11px 14px; border: 1px solid var(--grey-200); border-radius: var(--radius); font: 400 var(--fs-remark)/1.3 var(--font-sans); }
.priority-list .pl .pn { width: 24px; height: 24px; border-radius: 50%; background: var(--primary-100); color: var(--primary-900); display: inline-flex; align-items: center; justify-content: center; font: 700 var(--fs-footnote)/1 var(--font-sans); flex: none; }

.ex-card { border: 1px solid var(--grey-200); border-radius: var(--radius-lg); padding: 16px 18px; margin-bottom: 14px; }
.ex-card .ex-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.ex-card .ex-head h4 { margin: 0; font: 700 var(--fs-body)/1.2 var(--font-sans); }

.setup-foot { display: flex; align-items: center; gap: 12px; padding: 14px 26px; border-top: 1px solid var(--grey-200); background: #fff; }
.setup-foot .auto { font: 400 var(--fs-footnote)/1 var(--font-sans); color: var(--grey-500); display: flex; align-items: center; gap: 6px; }

.preview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.section-pill { display: inline-flex; align-items: center; gap: 7px; padding: 7px 12px; border: 1px solid var(--grey-200); border-radius: var(--radius); background: #fff; font: 500 var(--fs-footnote)/1 var(--font-sans); cursor: grab; }
.section-pill .grip { color: var(--grey-300); }
.section-list { display: flex; flex-direction: column; gap: 8px; }

/* =============================================================
   Prompt setup — two-level listing flow additions
   ============================================================= */
/* version status chip */
.vst { display: inline-flex; align-items: center; gap: 6px; height: 23px; padding: 0 10px; border-radius: 9999px; font: 600 var(--fs-footnote)/1 var(--font-sans); white-space: nowrap; }
.vst::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; flex: none; }
.vst.published { background: rgba(28,197,0,.14); color: #1a8f00; }
.vst.draft { background: var(--primary-100); color: var(--primary-900); }
.vst.inactive { background: rgba(0,117,255,.10); color: var(--status-info); }
.vst.archived { background: var(--grey-100); color: var(--grey-500); }

/* row action kebab menu (listing table) */
.rowmenu { position: absolute; top: calc(100% + 4px); right: 0; z-index: 30; min-width: 188px; background: #fff; border: 1px solid var(--grey-200); border-radius: var(--radius-md); box-shadow: var(--shadow-card); padding: 5px; display: flex; flex-direction: column; }
.rowmenu button { display: flex; align-items: center; gap: 10px; width: 100%; padding: 9px 11px; border: 0; background: none; cursor: pointer; border-radius: var(--radius); font: 500 var(--fs-remark)/1 var(--font-sans); color: var(--secondary-500); text-align: left; }
.rowmenu button:hover { background: var(--grey-50); }
.rowmenu button svg { width: 15px; height: 15px; color: var(--grey-500); }
.rowmenu button.danger { color: var(--status-danger); }
.rowmenu button.danger svg { color: var(--status-danger); }
.rowmenu .rm-div { height: 1px; background: var(--grey-100); margin: 4px 2px; }

/* active-version summary strip (versions page) */
.ver-strip { display: flex; align-items: stretch; gap: 0; background: #fff; border: 1px solid var(--grey-200); border-radius: var(--radius-lg); box-shadow: var(--shadow-card); padding: 4px 0; margin-bottom: 18px; max-width: 560px; }
.ver-strip .vs-item { padding: 14px 22px; display: flex; flex-direction: column; gap: 7px; }
.ver-strip .vs-k { font: 500 var(--fs-mini)/1 var(--font-sans); text-transform: uppercase; letter-spacing: .07em; color: var(--grey-500); }
.ver-strip .vs-sep { width: 1px; background: var(--grey-100); margin: 10px 0; }

/* titled prompt-structure editor (System prompt & Summary format) */
.ps-list { display: flex; flex-direction: column; gap: 14px; }
.ps-block { border: 1px solid var(--grey-200); border-radius: var(--radius-lg); padding: 14px 16px; transition: border-color .12s ease; }
.ps-block:hover { border-color: var(--grey-300); }
.ps-block:focus-within { border-color: var(--primary-900); }
.ps-block-head { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.ps-block-head .ps-num { width: 22px; height: 22px; border-radius: 50%; background: var(--secondary-900); color: #fff; display: inline-flex; align-items: center; justify-content: center; font: 700 var(--fs-mini)/1 var(--font-sans); flex: none; }
.ps-block-head .ps-tlabel { font: 500 var(--fs-mini)/1 var(--font-sans); text-transform: uppercase; letter-spacing: .07em; color: var(--grey-500); flex: none; }
.ps-title { flex: 1; height: 38px; padding: 0 12px; border: 1px solid var(--grey-200); border-radius: var(--radius); background: var(--grey-50); font: 700 var(--fs-remark)/1 var(--font-sans); color: var(--secondary-500); outline: none; transition: border-color .12s ease, box-shadow .12s ease, background .12s ease; }
.ps-title:focus { border-color: var(--primary-900); background: #fff; box-shadow: var(--shadow-field); }
.ps-del { width: 30px; height: 30px; flex: none; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--radius); border: 1px solid transparent; background: none; color: var(--grey-400); cursor: pointer; }
.ps-del:hover { color: var(--status-danger); background: rgba(255,39,28,.08); }
.ps-body { width: 100%; }
.ps-add { display: inline-flex; align-items: center; gap: 8px; align-self: flex-start; padding: 11px 16px; border: 1px dashed var(--grey-300); border-radius: var(--radius); background: var(--grey-50); color: var(--secondary-500); font: 600 var(--fs-remark)/1 var(--font-sans); cursor: pointer; transition: all .12s ease; }
.ps-add:hover { border-color: var(--primary-900); color: var(--primary-900); background: color-mix(in srgb, var(--primary-100) 35%, #fff); }
.ps-add svg { width: 15px; height: 15px; }

/* tag vocabulary editor (Tags tab) */
.tag-group { border: 1px solid var(--grey-200); border-radius: var(--radius-lg); padding: 18px; margin-bottom: 16px; }
.tag-group .tg-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.tag-group .tg-title { margin: 0; font: 700 var(--fs-body)/1.2 var(--font-sans); }
.tag-group .tg-ic { width: 30px; height: 30px; border-radius: var(--radius-md); display: inline-flex; align-items: center; justify-content: center; flex: none; }
.tag-group .tg-ic.sentiment { background: rgba(0,163,255,.12); color: var(--tertiary-700); }
.tag-group .tg-ic.keyword { background: var(--primary-100); color: var(--primary-900); }
.tag-group .tg-hint { margin: 9px 0 14px; font: 400 var(--fs-footnote)/1.5 var(--font-sans); color: var(--grey-600); }
.tag-edit { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-height: var(--h-field); padding: 9px 11px; border: 1px solid var(--grey-200); border-radius: var(--radius); background: #fff; transition: border-color .12s ease, box-shadow .12s ease; }
.tag-edit:focus-within { border-color: var(--primary-900); box-shadow: var(--shadow-field); }
.tagchip { display: inline-flex; align-items: center; gap: 7px; height: 28px; padding: 0 6px 0 11px; border-radius: 9999px; font: 600 var(--fs-footnote)/1 var(--font-sans); white-space: nowrap; }
.tagchip.sentiment { background: rgba(0,163,255,.12); color: var(--tertiary-700); }
.tagchip.keyword { background: var(--primary-100); color: var(--primary-900); }
.tagchip button { width: 18px; height: 18px; flex: none; display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 50%; background: rgba(0,0,0,.07); color: inherit; cursor: pointer; }
.tagchip button:hover { background: rgba(0,0,0,.16); }
.tag-input { flex: 1; min-width: 150px; height: 28px; border: 0; outline: none; background: none; font: 400 var(--fs-remark)/1 var(--font-sans); color: var(--secondary-500); }
.tag-input::placeholder { color: var(--grey-400); font-style: italic; }

/* temperature slider (Basic info) */
.temp-ctl { display: flex; align-items: center; gap: 14px; height: var(--h-field); }
.temp-range { flex: 1; -webkit-appearance: none; appearance: none; height: 6px; border-radius: 9999px; background: linear-gradient(to right, var(--primary-500) var(--pct, 30%), var(--grey-200) var(--pct, 30%)); outline: none; cursor: pointer; }
.temp-range::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 20px; height: 20px; border-radius: 50%; background: #fff; border: 2px solid var(--primary-900); box-shadow: var(--shadow-dot); cursor: pointer; }
.temp-range::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: #fff; border: 2px solid var(--primary-900); box-shadow: var(--shadow-dot); cursor: pointer; }
.temp-read { display: flex; align-items: center; gap: 8px; flex: none; }
.temp-val { font-family: ui-monospace, Menlo, monospace; font-size: var(--fs-remark); font-weight: 700; color: var(--secondary-500); min-width: 38px; text-align: right; }
.temp-tag { display: inline-flex; align-items: center; height: 22px; padding: 0 9px; border-radius: 9999px; background: var(--primary-100); color: var(--primary-900); font: 600 var(--fs-mini)/1 var(--font-sans); white-space: nowrap; }

/* inherited global-prefix display (template tabs) */
.ps-sublabel { font: 700 var(--fs-mini)/1.3 var(--font-sans); text-transform: uppercase; letter-spacing: .07em; color: var(--grey-500); margin: 18px 0 12px; }
.inherit-box { border: 1px solid var(--tertiary-300); background: color-mix(in srgb, var(--tertiary-100) 45%, #fff); border-radius: var(--radius-lg); padding: 12px 14px; }
.inherit-bar { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; border: 1px solid var(--tertiary-300); background: color-mix(in srgb, var(--tertiary-100) 45%, #fff); border-radius: var(--radius); padding: 10px 14px; margin-bottom: 16px; }
.ib-head { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.ib-badge { display: inline-flex; align-items: center; gap: 5px; height: 22px; padding: 0 9px; border-radius: 9999px; background: var(--tertiary-500); color: #fff; font: 700 var(--fs-mini)/1 var(--font-sans); letter-spacing: .03em; flex: none; }
.ib-badge svg { width: 12px; height: 12px; }
.ib-note { font: 400 var(--fs-footnote)/1.4 var(--font-sans); color: var(--tertiary-800); }
.ib-toggle { border: 0; background: none; cursor: pointer; font: 600 var(--fs-footnote)/1 var(--font-sans); color: var(--tertiary-700); padding: 4px 6px; }
.ib-toggle:hover { text-decoration: underline; }
.ib-link { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--tertiary-400); background: #fff; cursor: pointer; font: 600 var(--fs-footnote)/1 var(--font-sans); color: var(--tertiary-700); padding: 7px 11px; border-radius: var(--radius); flex: none; }
.ib-link:hover { border-color: var(--tertiary-600); color: var(--tertiary-900); }
.ib-link svg { width: 13px; height: 13px; }
.ib-body { display: flex; flex-direction: column; gap: 9px; margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--tertiary-300); }
.ib-item { display: flex; align-items: flex-start; gap: 10px; }
.ib-lock { color: var(--tertiary-600); flex: none; margin-top: 2px; }
.ib-title { font: 700 var(--fs-footnote)/1.3 var(--font-sans); color: var(--secondary-500); }
.ib-text { font: 400 var(--fs-footnote)/1.5 var(--font-sans); color: var(--grey-600); margin-top: 2px; }

/* locked (inherited) tag chip */
.tagchip.locked { background: var(--grey-100); color: var(--grey-600); padding-left: 8px; cursor: default; }
.tagchip.locked svg { width: 11px; height: 11px; opacity: .7; }
