/* One visual language for every screen: near-white ground, white panels, hairline borders, blue for data only. */
:root{
  --ground:#FAFAFA; --panel:#FFFFFF; --line:#EAEAEA; --line-soft:#F2F2F2; --fill:#F4F4F4;
  --ink:#0A0A0A; --ink-2:#525252; --muted:#737373; --faint:#8C8C8C;
  --blue:#2A78D6; --blue-deep:#1C5CAB; --blue-soft:#EAF2FC;
  --good:#15803D; --good-bg:#F0FDF4; --warn:#A16207; --warn-dot:#D97706; --warn-bg:#FFFBEB; --warn-line:#F5E6C8;
  --bad:#B91C1C; --bad-dot:#DC2626; --bad-bg:#FEF2F2; --info:#1C5CAB; --info-bg:#EAF2FC;
  --radius:14px; --shadow-pop:0 12px 32px rgba(10,10,10,.08);
  --font:"Geist","SF Pro Text","Segoe UI",system-ui,sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}
html,body{height:100%}
body{margin:0;background:var(--ground);color:var(--ink);font:14px/1.45 var(--font);-webkit-font-smoothing:antialiased}
button{font:inherit;color:inherit}
a{color:inherit}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* shell */
.shell{display:flex;min-height:100vh}
.side{width:248px;flex-shrink:0;border-right:1px solid var(--line);background:var(--ground);display:flex;flex-direction:column;gap:18px;padding:14px 12px;position:sticky;top:0;height:100vh}
.switch{display:flex;align-items:center;gap:10px;width:100%;padding:8px;border:0;border-radius:10px;background:transparent;cursor:pointer;text-align:left}
.switch:hover{background:var(--fill)}
.mark{width:28px;height:28px;border-radius:8px;background:var(--ink);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.switch .t{display:flex;flex-direction:column;flex-grow:1;min-width:0}
.switch .t b{font-size:13.5px;font-weight:600}
.switch .t span{font-size:12.5px;color:var(--muted)}
.search{display:flex;align-items:center;gap:8px;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--muted);font-size:13px}
.search span{flex-grow:1}
.kbd{font-size:11.5px;padding:1px 5px;border:1px solid var(--line);border-radius:4px}
.navgroup{display:flex;flex-direction:column;gap:1px}
.navlabel{padding:0 10px 6px;font-size:12px;color:var(--faint)}
.nav{display:flex;align-items:center;gap:10px;height:34px;padding:0 10px;border:0;border-radius:8px;background:transparent;color:var(--ink-2);font-size:13.5px;font-weight:500;text-decoration:none;cursor:pointer}
.nav:hover{background:var(--fill);color:var(--ink)}
.nav[aria-current="page"]{background:#EFEFEF;color:var(--ink)}
.nav .grow{flex-grow:1}
.badge{font-size:12px;font-weight:500;color:var(--bad);background:var(--bad-bg);padding:1px 7px;border-radius:999px}
.me{margin-top:auto;display:flex;align-items:center;gap:10px;padding:8px}
.avatar{width:28px;height:28px;border-radius:50%;background:var(--blue-soft);color:var(--blue-deep);font-size:12.5px;font-weight:600;display:flex;align-items:center;justify-content:center}
.me .t{display:flex;flex-direction:column;flex-grow:1;min-width:0}
.me .t b{font-size:13px;font-weight:500}
.me .t span{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}
.iconbtn{display:flex;padding:6px;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer}
.iconbtn:hover{background:var(--fill);color:var(--ink)}

.menu{position:fixed;top:64px;left:12px;width:272px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-pop);padding:6px;z-index:20;display:flex;flex-direction:column;gap:2px}
.menu .label{padding:8px 10px 6px;font-size:12px;color:var(--faint)}
.menu .item{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 10px;border:0;border-radius:8px;background:transparent;cursor:pointer;text-align:left}
.menu .item:hover,.menu .item[aria-checked="true"]{background:var(--fill)}
.menu .item .t{display:flex;flex-direction:column;flex-grow:1}
.menu .item .t b{font-size:13.5px;font-weight:500}
.menu .item .t span{font-size:12px;color:var(--muted)}
.menu hr{border:0;height:1px;background:var(--line);margin:4px 0}
.tile{width:22px;height:22px;border-radius:6px;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.tile.lg{width:24px;height:24px}

.main{flex-grow:1;min-width:0;display:flex;flex-direction:column}
.top{height:60px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 32px;border-bottom:1px solid var(--line);background:var(--panel);position:sticky;top:0;z-index:5}
.crumb{display:flex;align-items:center;gap:8px;font-size:13.5px}
.crumb .sep{color:#D4D4D4}
.crumb b{font-weight:500}
.actions{display:flex;align-items:center;gap:10px}
.seg{display:flex;padding:3px;border-radius:9px;background:var(--fill)}
.seg button{height:28px;padding:0 12px;border:0;border-radius:7px;background:transparent;color:var(--muted);font-size:13px;font-weight:500;cursor:pointer}
.seg button[aria-pressed="true"],.seg button[aria-selected="true"]{background:var(--panel);color:var(--ink);box-shadow:0 1px 2px rgba(10,10,10,.08)}
.btn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 14px;border:1px solid var(--line);border-radius:999px;background:var(--panel);font-size:13px;font-weight:500;cursor:pointer;text-decoration:none}
.btn:hover{border-color:#D4D4D4}
.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}
.btn.dark:hover{background:#262626}
.content{padding:28px 32px 48px;display:flex;flex-direction:column;gap:20px;max-width:1440px;width:100%}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.head h1{margin:0;font-size:24px;font-weight:600;letter-spacing:-.02em}
.head p{margin:4px 0 0;color:var(--muted);font-size:13.5px}
.issues{display:inline-flex;align-items:center;gap:10px;height:34px;padding:0 12px 0 10px;border:1px solid var(--warn-line);border-radius:999px;background:var(--warn-bg);font-size:13px;cursor:pointer;text-decoration:none}
.issues .dot{width:7px;height:7px;border-radius:50%;background:var(--warn-dot)}
.issues.bad{border-color:#F5CFCF;background:var(--bad-bg)}
.issues.bad .dot{background:var(--bad-dot)}
.issues.ok{border-color:#CDEBD6;background:var(--good-bg)}
.issues.ok .dot{background:var(--good)}
.issues .go{color:var(--warn)}

/* panels */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}
.panel.pad{padding:20px 22px}
.panel-head{display:flex;justify-content:space-between;align-items:center;padding:14px 22px;border-bottom:1px solid var(--line)}
.panel-head b{font-size:14px;font-weight:600}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.kpi{padding:20px 22px;display:flex;flex-direction:column;gap:10px;min-width:0}
.kpi+.kpi{border-left:1px solid var(--line)}
.kpi .l{font-size:13px;color:var(--muted)}
.kpi .v{font-size:30px;font-weight:600;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}
.kpi .v i{font-style:normal;color:var(--faint)}
.kpi .n{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted)}
.pill{padding:1px 8px;border-radius:999px;font-size:12px;font-weight:500;white-space:nowrap}
.pill.bad{background:var(--bad-bg);color:var(--bad)}
.pill.good{background:var(--good-bg);color:var(--good)}
.pill.warn{background:var(--warn-bg);color:var(--warn)}
.pill.info{background:var(--info-bg);color:var(--info)}
.pill.grey{background:var(--fill);color:var(--ink-2)}
.row2{display:flex;gap:20px;align-items:stretch}
.row2>.grow{flex-grow:1;min-width:0}
.side-col{width:340px;flex-shrink:0;display:flex;flex-direction:column;gap:20px}
@media (max-width:1180px){.row2{flex-direction:column}.side-col{width:auto}}
@media (max-width:900px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi:nth-child(3){border-left:0}.kpi:nth-child(n+3){border-top:1px solid var(--line)}.side{display:none}.top{padding:0 16px}.content{padding:20px 16px 40px}}

/* chart */
.chart-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.chart-head .l{font-size:13px;color:var(--muted)}
.chart-head .v{font-size:22px;font-weight:600;letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums}
.chart{display:flex;gap:12px;margin-top:18px}
.yaxis{width:36px;height:240px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;font-size:11.5px;color:var(--muted);font-variant-numeric:tabular-nums}
.yaxis span{line-height:1;transform:translateY(-50%)}
.plot{flex-grow:1;position:relative;height:240px}
.grid{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}
.grid div{height:1px;background:var(--line-soft)}
.bars{position:absolute;inset:0;display:flex;align-items:flex-end;gap:4px}
.bars .col{flex:1 1 0;height:100%;display:flex;align-items:flex-end}
.bars .bar{width:100%;border-radius:5px 5px 2px 2px;background:var(--blue);transition:background .12s}
.bars .bar.zero{background:#EFEFEF}
.bars .col:hover .bar:not(.zero),.bars .col.on .bar:not(.zero){background:var(--blue-deep)}
.plot svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.hits{position:absolute;inset:0;display:flex}
.hits div{flex:1 1 0}
.cross{position:absolute;top:0;bottom:0;width:1px;background:#E5E5E5;pointer-events:none}
.dotm{position:absolute;width:10px;height:10px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--blue);border:2px solid #fff;box-shadow:0 0 0 1px var(--blue);pointer-events:none}
.tip{position:absolute;top:4px;transform:translateX(-50%);padding:8px 12px;border-radius:10px;background:var(--panel);border:1px solid var(--line);box-shadow:0 8px 24px rgba(10,10,10,.08);display:flex;flex-direction:column;gap:3px;white-space:nowrap;pointer-events:none;z-index:2}
.tip .d{font-size:12px;color:var(--muted)}
.tip .v{display:flex;align-items:center;gap:6px;font-size:13.5px;font-weight:600;font-variant-numeric:tabular-nums}
.tip .v::before{content:"";width:8px;height:8px;border-radius:2px;background:var(--blue)}
.xaxis{display:flex;justify-content:space-between;padding:26px 0 0 48px;font-size:11.5px;color:var(--muted)}
.pin{position:absolute;bottom:-30px;transform:translateX(-50%);display:flex;align-items:center;gap:5px;font-size:11.5px;font-weight:500;white-space:nowrap}
.pin::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--ink)}

/* bullet + funnel */
.bullet{position:relative;height:8px;border-radius:999px;background:var(--line-soft);margin-top:14px}
.bullet .fill{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:var(--blue)}
.bullet .tick{position:absolute;top:-5px;bottom:-5px;width:2px;border-radius:1px;background:var(--ink)}
.bullet-l{position:relative;height:32px;font-size:12px;color:var(--muted);margin-top:10px}
.bullet-l span{position:absolute;display:flex;flex-direction:column;align-items:center;transform:translateX(-50%)}
.bullet-l span.r{right:0;transform:none;align-items:flex-end}
.bullet-l b{color:var(--ink);font-weight:600}
.steps{display:flex;flex-direction:column;gap:14px;margin-top:14px}
.step .top2{display:flex;justify-content:space-between;font-size:13px}
.step .top2 b{font-weight:600;font-variant-numeric:tabular-nums}
.step .top2 b span{font-weight:400;color:var(--muted)}
.track{height:6px;border-radius:999px;background:var(--line-soft);margin-top:6px}
.track div{height:100%;border-radius:999px}

/* tables */
.tbl{width:100%;border-collapse:collapse;font-size:13.5px;font-variant-numeric:tabular-nums}
.tbl th{text-align:left;padding:10px 22px;font-size:12.5px;font-weight:500;color:var(--muted);background:#FCFCFC;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:12px 22px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.tbl tr:last-child td{border-bottom:0}
.tbl .r{text-align:right}
.tbl tbody tr:hover{background:#FCFCFC}
.who{display:flex;align-items:center;gap:10px;min-width:0}
.who .t{display:flex;flex-direction:column;min-width:0}
.who .t b{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:360px}
.who .t span{font-size:12.5px;color:var(--muted)}
.status{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2);white-space:nowrap}
.status::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--c,#A3A3A3)}
.scroll{overflow-x:auto}

/* alerts */
.alerts{display:flex;flex-direction:column}
.alert{display:flex;gap:14px;align-items:flex-start;padding:16px 22px;border-bottom:1px solid var(--line-soft)}
.alert:last-child{border-bottom:0}
.alert .ic{width:24px;height:24px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600}
.alert .ic.critical{background:var(--bad-bg);color:var(--bad)}
.alert .ic.warning{background:var(--warn-bg);color:var(--warn)}
.alert .ic.info{background:var(--info-bg);color:var(--info)}
.alert .ic.ok{background:var(--good-bg);color:var(--good)}
.alert .t{flex-grow:1;display:flex;flex-direction:column;gap:3px;min-width:0}
.alert .t b{font-weight:600}
.alert .t span{color:var(--muted);font-size:13px}
.alert .t em{font-style:normal;font-size:13px;color:var(--ink-2)}

/* inbox */
.inbox{display:grid;grid-template-columns:360px minmax(0,1fr);height:calc(100vh - 170px);min-height:480px;overflow:hidden}
.inbox .list{border-right:1px solid var(--line);overflow-y:auto}
.inbox .filters{display:flex;gap:8px;padding:12px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel)}
.inbox input,.field input,.field select{height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:13px;background:var(--panel);color:var(--ink);min-width:0}
.inbox .filters input{flex-grow:1}
.conv{display:flex;flex-direction:column;gap:3px;width:100%;padding:12px 16px;border:0;border-bottom:1px solid var(--line-soft);background:transparent;text-align:left;cursor:pointer}
.conv:hover,.conv[aria-current="true"]{background:#F7F7F7}
.conv .r1{display:flex;justify-content:space-between;gap:8px;font-size:13.5px}
.conv .r1 b{font-weight:500}
.conv .r2{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.thread{display:flex;flex-direction:column;overflow:hidden}
.thread .th{padding:14px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}
.thread .msgs{flex-grow:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:8px;background:#FCFCFC}
.bubble{max-width:72%;padding:9px 12px;border-radius:14px;font-size:13.5px;white-space:pre-wrap;overflow-wrap:anywhere}
.bubble.in{align-self:flex-start;background:var(--panel);border:1px solid var(--line);border-bottom-left-radius:4px}
.bubble.out{align-self:flex-end;background:var(--blue-soft);border-bottom-right-radius:4px}
.bubble small{display:block;margin-top:4px;font-size:11px;color:var(--muted)}
@media (max-width:900px){.inbox{grid-template-columns:1fr;height:auto}.inbox .list{max-height:320px}}

/* videos */
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}
.vcard{overflow:hidden;display:flex;flex-direction:column}
.vthumb{aspect-ratio:4/5;background:var(--fill);display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:12px;overflow:hidden}
.vthumb img{width:100%;height:100%;object-fit:cover}
.vbody{padding:12px 14px;display:flex;flex-direction:column;gap:8px}
.vbody b{font-size:13px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vstats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;font-size:12px;color:var(--muted)}
.vstats span b{display:block;font-size:14px;color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}

/* empty / loading / error */
.empty{padding:56px 24px;display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;color:var(--muted)}
.empty b{color:var(--ink);font-size:15px;font-weight:600}
.empty p{margin:0;max-width:440px}
.skel{background:linear-gradient(90deg,#F2F2F2 25%,#F7F7F7 37%,#F2F2F2 63%);background-size:400% 100%;animation:sh 1.4s ease infinite;border-radius:8px}
@keyframes sh{0%{background-position:100% 50%}100%{background-position:0 50%}}
.banner{display:flex;gap:10px;align-items:center;padding:10px 14px;border-radius:10px;background:var(--warn-bg);border:1px solid var(--warn-line);font-size:13px}
.banner.bad{background:var(--bad-bg);border-color:#F5CFCF}
.fresh{font-size:12.5px;color:var(--muted)}
.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 16px;border-radius:999px;font-size:13px;z-index:30}
.settings{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
@media (max-width:1100px){.settings{grid-template-columns:1fr}}
.kv{display:flex;justify-content:space-between;gap:12px;padding:12px 22px;border-bottom:1px solid var(--line-soft);font-size:13.5px}
.kv:last-child{border-bottom:0}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:14px;font-size:12px;color:var(--ink-2)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend b{font-weight:600;color:var(--ink)}
.legend .sw{display:inline-block;flex-shrink:0}
.legend .sw.fill{width:10px;height:6px;border-radius:3px;background:var(--blue)}
.legend .sw.tickk{width:2px;height:12px;border-radius:1px;background:var(--ink)}
.qr{display:flex;justify-content:center;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fff}
details code{display:block;margin-top:6px;font-size:13px;letter-spacing:.05em;color:var(--ink);word-break:break-all}

/* inbox, three columns: every column scrolls on its own */
.inbox3{display:grid;grid-template-columns:340px minmax(0,1fr) 320px;height:calc(100vh - 60px - 56px);min-height:520px;overflow:hidden}
.inbox3>*{min-height:0}
.ib-col{display:flex;flex-direction:column;border-right:1px solid var(--line);min-height:0}
.ib-search{padding:12px;border-bottom:1px solid var(--line)}
.ib-search input{width:100%;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:13px}
.ib-tabs{display:flex;gap:4px;padding:8px 10px;border-bottom:1px solid var(--line);overflow-x:auto;flex-shrink:0}
.ib-tabs button{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 10px;border:0;border-radius:999px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:500;cursor:pointer;white-space:nowrap}
.ib-tabs button[aria-selected="true"]{background:var(--ink);color:#fff}
.ib-tabs .n{font-size:11.5px;opacity:.75}
.ib-list{overflow-y:auto;flex:1 1 auto;min-height:0}
.conv .r3{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:2px}
.conv .r1 .t{font-size:12px;color:var(--muted);white-space:nowrap}
.ib-thread{display:flex;flex-direction:column;min-height:0;min-width:0}
.ib-thread .th{padding:12px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px;flex-shrink:0}
.ib-thread .msgs{flex:1 1 auto;min-height:0;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:8px;background:#FCFCFC}
.bubble audio{display:block;width:240px;max-width:100%;margin-bottom:6px}
.bubble.failed{border:1px solid #F5CFCF;background:var(--bad-bg)}
.bubble .err-line{display:block;margin-top:4px;font-style:normal;font-size:12px;color:var(--bad)}
.composer{border-top:1px solid var(--line);padding:10px 14px 14px;display:flex;flex-direction:column;gap:8px;flex-shrink:0;background:var(--panel)}
.composer .cw{font-size:12px;color:var(--good)}
.composer .cw.warn{color:var(--warn)}
.composer .cw.bad{color:var(--bad)}
.composer .row{display:flex;gap:10px;align-items:flex-end}
.composer textarea{flex:1 1 auto;min-height:44px;max-height:160px;resize:vertical;padding:10px 12px;border:1px solid var(--line);border-radius:12px;font:inherit;font-size:14px;line-height:1.4}
.composer textarea:disabled{background:var(--fill);color:var(--muted)}
.composer .btn{height:44px;padding:0 18px}
.ib-side{border-left:1px solid var(--line);overflow-y:auto;min-height:0;background:#FCFCFC}
.ib-sec{padding:14px 16px;border-bottom:1px solid var(--line-soft);display:flex;flex-direction:column;gap:6px}
.ib-sec h3{margin:0 0 4px;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.ib-kv{display:flex;justify-content:space-between;gap:12px;font-size:13px}
.ib-kv span{color:var(--muted);flex-shrink:0}
.ib-kv b{font-weight:500;text-align:right;overflow-wrap:anywhere}
.ib-note{margin:0;font-size:12.5px;color:var(--ink-2)}
.ib-link{font-size:13px;color:var(--blue-deep)}
.ib-sec textarea{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:13px;resize:vertical}
.ib-sec .btn{align-self:flex-start;height:30px}
.ib-log{display:flex;flex-direction:column;gap:8px;font-size:12px}
.ib-log div{display:flex;flex-direction:column;gap:1px}
.ib-log .t{color:var(--faint)}
.ib-log b{font-weight:500}
.ib-log span:last-child{color:var(--ink-2);overflow-wrap:anywhere}
@media (max-width:1280px){.inbox3{grid-template-columns:300px minmax(0,1fr)}.ib-side{display:none}}
@media (max-width:900px){.inbox3{grid-template-columns:1fr;height:auto}.ib-col{max-height:360px}}

/* agents */
.stack{display:flex;flex-direction:column;gap:20px}
.filters-row{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end}
.flt{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.flt select,.flt input{height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font:inherit;font-size:13px;color:var(--ink);min-width:150px;max-width:260px}
.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
@media (max-width:1100px){.grid2{grid-template-columns:1fr}}
.hb{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.hb-top{display:flex;justify-content:space-between;gap:10px;font-size:13px}
.hb-top b{font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.hb-top b span{font-weight:400;color:var(--muted)}
.mini{position:relative;margin-top:14px}
.mini-bars{height:140px;display:flex;align-items:flex-end;gap:3px}
.mini-bars .col{flex:1 1 0;height:100%;display:flex;align-items:flex-end}
.mini-bars .bar{width:100%;border-radius:4px 4px 1px 1px;background:var(--blue)}
.mini-bars .bar.zero{background:#EFEFEF}
.mini-bars .col:hover .bar:not(.zero){background:var(--blue-deep)}
.mini .tip{top:-6px}
.tbl tr.click{cursor:pointer}
.alert .ic.critical,.alert .ic.warning,.alert .ic.info,.alert .ic.ok{flex-shrink:0}
.tbl td.name-cell{max-width:520px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}

/* confirmation window */
.overlay{position:fixed;inset:0;background:rgba(10,10,10,.28);display:flex;align-items:center;justify-content:center;z-index:40;padding:16px}
.dialog{width:100%;max-width:440px;background:var(--panel);border-radius:16px;border:1px solid var(--line);box-shadow:0 24px 64px rgba(10,10,10,.18);padding:24px;display:flex;flex-direction:column;gap:14px}
.dialog h2{margin:0;font-size:17px;font-weight:600;letter-spacing:-.01em;overflow-wrap:anywhere}
.dialog p{margin:0;font-size:13.5px;color:var(--ink-2)}
.dialog .err{margin:0;padding:10px 12px;border-radius:10px;background:var(--bad-bg);color:var(--bad);font-size:13px}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px}
.dialog .flt select,.dialog .flt input{max-width:none;width:100%}
.code-in{height:42px;padding:0 12px;border:1px solid var(--line);border-radius:10px;font:inherit;font-size:20px;letter-spacing:.4em;text-align:center}
.stack-s{display:flex;flex-direction:column;gap:12px}
.btn.sm{height:28px;padding:0 10px;font-size:12.5px}
.row-actions{display:inline-flex;gap:6px}
.cell-in{height:30px;padding:0 8px;border:1px solid var(--line);border-radius:7px;font:inherit;font-size:13px;width:120px;background:var(--panel)}
.cost-form{display:flex;flex-wrap:wrap;gap:8px;padding:12px 22px}
.cost-form input,.cost-form select{height:30px;padding:0 8px;border:1px solid var(--line);border-radius:7px;font:inherit;font-size:13px;background:var(--panel)}
.cost-form input:first-child{flex:1 1 140px}
.cost-form input[type=number]{width:100px}

/* production */
.board-wrap{overflow-x:auto}
.board{display:flex;gap:12px;padding:14px;min-width:max-content}
.bcol{width:220px;flex-shrink:0;display:flex;flex-direction:column;gap:8px}
.bcol-h{display:flex;justify-content:space-between;font-size:12.5px;padding:0 4px 4px}
.bcard{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel);text-align:left;cursor:pointer}
.bcard:hover{border-color:#D4D4D4;box-shadow:0 2px 8px rgba(10,10,10,.05)}
.bcard b{font-size:13.5px;font-weight:500}
.bcard .muted{font-size:12px}
.bcard .pill{align-self:flex-start;margin-top:2px}
.code{font-size:11.5px;font-weight:600;letter-spacing:.04em;color:var(--blue-deep)}
.link-back{border:0;background:transparent;color:var(--muted);font-size:13px;cursor:pointer;padding:0;margin-bottom:6px}
.dialog.wide{max-width:980px;max-height:90vh;overflow-y:auto;padding:0}
.sheet-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--panel);z-index:1}
.sheet-head h2{margin:2px 0 0}
.sheet{display:flex;flex-direction:column}
.sheet-sec{padding:16px 22px;border-bottom:1px solid var(--line-soft);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.sheet-sec h3{grid-column:1/-1;margin:0;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.flt.wide{grid-column:span 1}
.sheet-sec textarea,.sheet-sec input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;font:inherit;font-size:13px;background:var(--panel);color:var(--ink)}
.sheet-sec textarea{resize:vertical;line-height:1.45}
.sheet-sec textarea[readonly]{background:#FCFCFC;font-size:12px}
.sheet-sec .row-actions,.issues-list{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px}
.qa{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;font-size:13px}
.sheet-sec .ib-log{grid-column:1/-1}
@media (max-width:800px){.sheet-sec,.qa{grid-template-columns:1fr}}
