/* ═══════════════════════════════════════════════════════════════════
   TicketShare — SharePanel dark theme
   Tokens follow /assets/app.css so the ticket system reads as part of
   SharePanel. Rules are scoped under body.ts so they outrank the
   Tailwind utilities injected at runtime by the Tailwind CDN script.
   ═══════════════════════════════════════════════════════════════════ */

:root{
  color-scheme:dark;
  --bg:#06060a; --bg2:#0a0a10; --bg-el:#0c0c12;
  --card:#101018; --card-h:#14141e; --surface:#1a1a26; --surface-l:#222230;
  --border:#1c1c2c; --border-s:#141422; --border-h:#2a2a40;
  --text:#eaeaf2; --text-2:#c4c4d4; --text-s:#9494a8; --text-t:#6e6e86; --text-q:#45455a;
  --accent:#7c5cfc; --accent-l:#9b82ff; --accent-d:#6344e0; --accent-bg:rgba(124,92,252,.10);
  --green:#3dd68c; --orange:#f59e42; --yellow:#facc15; --blue:#38bdf8; --cyan:#22d3ee;
  --rose:#f472b6; --red:#f87171; --violet:#b4a2ff;
  --sans:'DM Sans',system-ui,-apple-system,sans-serif;
  --serif:'Newsreader',Georgia,serif;
  --mono:'JetBrains Mono','Fira Code',monospace;
  --ease:cubic-bezier(.22,1,.36,1);
  --radius:12px; --radius-sm:9px;
  --sidebar-w:264px;
}

/* ── Base ─────────────────────────────────────────────────────────── */
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
body.ts{
  margin:0;display:flex;min-height:100vh;overflow-x:hidden;
  background:var(--bg);color:var(--text);
  font-family:var(--sans);font-size:.9375rem;line-height:1.6;font-weight:400;
}
/* Default border colour for Tailwind's bare `border` utilities: zero specificity, so it only
   replaces Tailwind's light-grey preflight default and every border-* colour class still wins. */
:where(.ts) *,:where(.ts) *::before,:where(.ts) *::after{border-color:var(--border)}
.ts ::selection{background:rgba(124,92,252,.32);color:#fff}
.ts a{color:inherit;text-decoration:none;transition:color .15s}
.ts :focus-visible{outline:2px solid var(--accent-l);outline-offset:2px;border-radius:6px}
.ts ::-webkit-scrollbar{width:10px;height:10px}
.ts ::-webkit-scrollbar-track{background:transparent}
.ts ::-webkit-scrollbar-thumb{background:var(--border-h);border-radius:20px;border:3px solid transparent;background-clip:content-box}
.ts ::-webkit-scrollbar-thumb:hover{background:#3a3a55;background-clip:content-box}
.ts .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.ts-skip{position:absolute;left:1rem;top:-100px;z-index:200;background:var(--accent);color:#fff;padding:.55rem 1rem;border-radius:9px;font-weight:500;font-size:.875rem}
.ts-skip:focus{top:1rem}

/* Typography */
.ts h1,.ts h2,.ts h3,.ts h4{color:var(--text);letter-spacing:-.01em}
.ts .main-content-area h1{font-family:var(--serif);font-weight:400;font-size:clamp(1.85rem,3.4vw,2.4rem);line-height:1.15;letter-spacing:-.02em;margin-bottom:1.75rem}
.ts .main-content-area h1 > i,.ts .main-content-area h1 > .fas,.ts .main-content-area h1 > .fab{display:none}
.ts .main-content-area h2{font-weight:600;letter-spacing:-.015em}
.ts .main-content-area h2 > i:last-child:not(:first-child){font-size:.8em;margin-left:.5rem;color:var(--text-t)}
.ts code,.ts kbd,.ts pre,.ts .font-mono{font-family:var(--mono)}

/* ── Shell: sidebar ───────────────────────────────────────────────── */
.ts .sidebar{
  width:var(--sidebar-w);flex-shrink:0;
  position:sticky;top:0;left:0;height:100vh;overflow-y:auto;z-index:60;
  display:flex;flex-direction:column;gap:1.25rem;
  padding:1.25rem 1rem 1rem;
  background:var(--bg2);border-right:1px solid var(--border-s);color:var(--text-s);
  scrollbar-width:thin;scrollbar-color:var(--border) transparent;
  transition:transform .3s var(--ease);
}
.ts-brand{display:flex;align-items:center;gap:.65rem;padding:.25rem .5rem;color:var(--text)}
.ts-brand-mark{width:30px;height:30px;border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent),#5a3cd8);box-shadow:0 2px 10px rgba(124,92,252,.3);color:#fff}
.ts-brand-mark svg{width:16px;height:16px}
.ts-brand-name{font-family:var(--serif);font-size:1.2rem;letter-spacing:-.01em;line-height:1.1}
.ts-brand-sub{display:block;font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-t);margin-top:.2rem}
.ts-sb-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}
.ts-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:9px;border:1px solid var(--border);background:transparent;color:var(--text-s);cursor:pointer;transition:all .15s}
.ts-icon-btn:hover{color:var(--text);border-color:var(--border-h);background:rgba(255,255,255,.03)}
.ts .sidebar .ts-sb-close{display:none}

.ts-nav{flex:1;display:flex;flex-direction:column;gap:1.1rem}
.ts-nav-group > p{font-family:var(--mono);font-size:.62rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--text-t);padding:0 .65rem;margin-bottom:.4rem}
.ts-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}
.ts .sidebar-nav-item{
  position:relative;display:flex;align-items:center;gap:.7rem;
  padding:.5rem .65rem;border-radius:8px;
  color:var(--text-s);font-size:.875rem;font-weight:500;
  transition:background .15s,color .15s;
}
.ts .sidebar-nav-item .ts-ni{width:18px;display:inline-flex;justify-content:center;font-size:.85rem;color:var(--text-t);transition:color .15s}
.ts .sidebar-nav-item svg.ts-ni{width:16px;height:16px}
.ts .sidebar-nav-item:hover{background:rgba(255,255,255,.035);color:var(--text)}
.ts .sidebar-nav-item:hover .ts-ni{color:var(--text-s)}
.ts .sidebar-nav-item.is-active{background:var(--accent-bg);color:var(--text)}
.ts .sidebar-nav-item.is-active .ts-ni{color:var(--accent-l)}
.ts .sidebar-nav-item.is-active::before{content:'';position:absolute;left:-1rem;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}
.ts .sidebar-nav-item .ts-ext{margin-left:auto;font-size:.65rem;color:var(--text-q)}
.ts .sidebar-nav-item.is-danger .ts-ni{color:var(--rose)}
.ts .sidebar-nav-item.is-danger.is-active{background:rgba(244,114,182,.09)}
.ts .sidebar-nav-item.is-danger.is-active::before{background:var(--rose)}

.ts-user{display:flex;align-items:center;gap:.65rem;padding:.65rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--card)}
.ts-user-link{display:flex;align-items:center;gap:.65rem;min-width:0;flex:1;border-radius:8px}
.ts-user-meta{min-width:0;line-height:1.25}
.ts-user-name{display:block;color:var(--text);font-size:.85rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-user-role{display:block;font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-t)}
.ts-user form{margin:0}
.ts-user.is-current{border-color:rgba(124,92,252,.35)}

/* Avatars */
.ts-av{--h:262;width:30px;height:30px;flex-shrink:0;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;color:#fff;background:linear-gradient(135deg,hsl(var(--h) 70% 58%),hsl(calc(var(--h) + 30) 60% 42%));text-transform:uppercase}
.ts-av.sm{width:22px;height:22px;font-size:.6rem}
.ts-av.lg{width:38px;height:38px;font-size:.9rem}

/* Mobile top bar + overlay */
.ts .top-bar{display:none}
.ts-tb-user{flex-shrink:0;display:inline-flex;border-radius:50%}
.ts .overlay{display:none;position:fixed;inset:0;z-index:55;background:rgba(3,3,6,.6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
.ts .overlay.active{display:block}

/* ── Main column ──────────────────────────────────────────────────── */
.ts .main-content-area{
  flex:1;min-width:0;max-width:none;margin:0;min-height:100vh;overflow:visible;
  padding:2.25rem clamp(1.25rem,4vw,3rem) 4rem;position:relative;
}
.ts .main-content-area::before{content:'';position:fixed;inset:0 0 auto var(--sidebar-w);height:420px;pointer-events:none;z-index:-1;background:radial-gradient(ellipse 60% 70% at 70% -10%,rgba(124,92,252,.10),transparent 70%)}
.ts-container{max-width:1240px;margin:0 auto}

/* Page header */
.ts-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1.25rem;flex-wrap:wrap;margin-bottom:2rem}
.ts .ts-head h1{margin-bottom:0}
.ts-eyebrow{display:flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-t);margin-bottom:.6rem}
.ts-eyebrow a{color:var(--text-s)}
.ts-eyebrow a:hover{color:var(--text)}
.ts-eyebrow .sep{color:var(--text-q)}
.ts-sub{color:var(--text-s);margin-top:.5rem;max-width:620px}
.ts-head-actions{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}
.ts-section-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:2.5rem 0 1rem}
.ts .ts-section-head h2{font-size:1.05rem;font-weight:600;display:flex;align-items:center;gap:.6rem;margin:0}
.ts-count{font-family:var(--mono);font-size:.7rem;font-weight:500;color:var(--text-s);background:var(--surface);border:1px solid var(--border-h);border-radius:6px;padding:.1rem .45rem}

/* ── Buttons ──────────────────────────────────────────────────────── */
.ts .btn,.ts .btn-primary,.ts .btn-secondary,.ts .btn-danger,.ts .btn-outline,.ts .ts-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.45rem;
  padding:.55rem 1.05rem;border-radius:var(--radius-sm);border:1px solid transparent;
  font-family:var(--sans);font-size:.85rem;font-weight:500;line-height:1.3;
  cursor:pointer;text-decoration:none;white-space:nowrap;
  transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .15s,border-color .15s,color .15s;
  position:relative;overflow:visible;box-shadow:none;
}
.ts .btn::before{display:none}
.ts .btn-primary,.ts .ts-btn--primary{background:linear-gradient(135deg,var(--accent),var(--accent-d));color:#fff;box-shadow:0 2px 12px rgba(124,92,252,.22)}
.ts .btn-primary:hover,.ts .ts-btn--primary:hover{transform:translateY(-1px);box-shadow:0 6px 22px rgba(124,92,252,.32);color:#fff}
.ts .btn-secondary,.ts .ts-btn--ghost{background:transparent;color:var(--text-2);border-color:var(--border-h)}
.ts .btn-secondary:hover,.ts .ts-btn--ghost:hover{color:var(--text);border-color:#3a3a55;background:rgba(255,255,255,.03)}
.ts .btn-danger,.ts .ts-btn--danger{background:rgba(248,113,113,.1);color:var(--red);border-color:rgba(248,113,113,.3)}
.ts .btn-danger:hover,.ts .ts-btn--danger:hover{background:rgba(248,113,113,.18);border-color:var(--red)}
.ts .btn-outline{background:transparent;color:var(--accent-l);border-color:rgba(124,92,252,.45)}
.ts .btn-outline:hover{background:var(--accent-bg);border-color:var(--accent)}
.ts .btn-primary:active,.ts .ts-btn:active{transform:none}
.ts .btn-primary.w-full,.ts .btn-secondary.w-full,.ts .btn-danger.w-full{width:100%}
.ts .btn-primary.text-lg,.ts .btn-secondary.text-lg{font-size:.92rem;padding:.75rem 1.25rem}
.ts .ts-btn--sm{padding:.4rem .75rem;font-size:.8rem}
.ts .ts-btn--block{width:100%}
.ts button:disabled,.ts .btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}

/* ── Cards & surfaces ─────────────────────────────────────────────── */
.ts .card{
  background:var(--card);border:1px solid var(--border);border-radius:14px;
  padding:1.5rem;margin-bottom:1.25rem;color:var(--text);
  box-shadow:none;backdrop-filter:none;overflow:visible;transform:none;
  transition:border-color .2s;
}
.ts .card::before{display:none}
.ts .card:hover{transform:none;box-shadow:none;border-color:var(--border-h)}
.ts .card > h2:first-child,.ts .card > h3:first-child{margin-top:0}
.ts .card h2.text-2xl{font-size:1.05rem}
.ts .card h3.text-xl{font-size:1rem}
.ts .card h3.text-lg{font-size:.95rem}
.ts-panel{background:var(--card);border:1px solid var(--border);border-radius:14px}
.ts-panel + .ts-panel{margin-top:1rem}
.ts-panel-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:1rem 1.25rem;border-bottom:1px solid var(--border)}
.ts .ts-panel-head h2,.ts .ts-panel-head h3{font-size:.95rem;font-weight:600;margin:0;display:flex;align-items:center;gap:.55rem}
.ts-panel-head .ts-ph-ic{color:var(--text-t);font-size:.85rem}
.ts-panel-body{padding:1.25rem}
.ts-panel-body > :last-child{margin-bottom:0}

/* KPI tiles */
.ts-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-bottom:.5rem}
.ts-kpi{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:1.1rem 1.25rem;position:relative;overflow:hidden}
.ts-kpi::after{content:'';position:absolute;inset:0 0 auto;height:2px;background:linear-gradient(90deg,var(--k,var(--accent)),transparent 70%)}
.ts-kpi-label{display:flex;align-items:center;justify-content:space-between;font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-s)}
.ts-kpi-label i{color:var(--k,var(--accent-l));font-size:.8rem}
.ts-kpi-value{font-family:var(--serif);font-size:2.4rem;line-height:1.1;letter-spacing:-.02em;margin-top:.5rem;color:var(--text)}
.ts-kpi-value.is-text{font-family:var(--mono);font-size:1.15rem;letter-spacing:.06em;text-transform:uppercase;margin-top:1rem;color:var(--k,var(--accent-l))}
.ts-kpi-foot{font-size:.78rem;color:var(--text-t);margin-top:.2rem}

/* Team tiles */
.ts-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.85rem}
.ts-team{background:var(--bg-el);border:1px solid var(--border);border-radius:12px;padding:1rem}
.ts .ts-team h3{font-size:.95rem;font-weight:600;margin:0 0 .25rem}
.ts-team p{font-size:.82rem;color:var(--text-s)}
.ts-team .ts-team-by{font-size:.72rem;color:var(--text-t);margin-top:.35rem;font-family:var(--mono)}
.ts-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.75rem}
.ts-chip{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;color:var(--text-2);background:var(--surface);border:1px solid var(--border-h);border-radius:999px;padding:.12rem .55rem}
.ts-chip.is-me{color:var(--accent-l);border-color:rgba(124,92,252,.4);background:var(--accent-bg)}

/* ── Ticket cards ─────────────────────────────────────────────────── */
.ts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}
/* Tailwind's .hidden must win however the CDN stylesheet is ordered (dashboard view toggle) */
.ts .ts-grid.hidden,.ts .ts-rows.hidden{display:none}
.ts-tcard{
  --p:var(--text-t);
  position:relative;display:flex;flex-direction:column;min-width:0;
  background:var(--card);border:1px solid var(--border);border-radius:14px;
  padding:1.1rem 1.15rem 1rem 1.3rem;overflow:hidden;
  transition:border-color .2s,transform .2s var(--ease),background .2s;
}
.ts-tcard::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--p)}
.ts-tcard:hover{border-color:var(--border-h);background:var(--card-h);transform:translateY(-2px)}
.ts-tcard-top{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.6rem}
.ts-tnum{font-family:var(--mono);font-size:.72rem;color:var(--text-t);letter-spacing:.02em;white-space:nowrap;flex-shrink:0}
.ts .ts-tcard h3{font-size:1rem;font-weight:600;line-height:1.35;margin:0 0 .4rem;overflow-wrap:anywhere}
.ts-tcard h3 a::after{content:'';position:absolute;inset:0;z-index:0}
.ts-tcard h3 a:hover{color:var(--accent-l)}
.ts-tdesc{font-size:.85rem;color:var(--text-s);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:1rem}
.ts-tfoot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding-top:.8rem;border-top:1px solid var(--border)}
.ts-tpeople{display:flex;align-items:center;gap:.45rem;min-width:0;font-size:.78rem;color:var(--text-s)}
.ts-tpeople span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-tpeople .ts-arrow{color:var(--text-q)}
.ts-ttime{font-family:var(--mono);font-size:.7rem;color:var(--text-t);white-space:nowrap}

/* list rows */
.ts-rows{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.ts-trow{--p:var(--text-t);position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:1rem;padding:.85rem 1.15rem .85rem 1.3rem;border-top:1px solid var(--border);transition:background .15s}
.ts-trow:first-child{border-top:none}
.ts-trow::before{content:'';position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--p)}
.ts-trow:hover{background:var(--card-h)}
.ts-trow-main{min-width:0}
.ts-trow-title{display:flex;align-items:baseline;gap:.6rem;min-width:0}
.ts-trow-title a{font-weight:600;font-size:.92rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-trow-title a::after{content:'';position:absolute;inset:0}
.ts-trow-title a:hover{color:var(--accent-l)}
.ts-trow-meta{font-size:.78rem;color:var(--text-t);margin-top:.15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* priority tones */
.ts-p-low{--p:#3dd68c}
.ts-p-medium{--p:#38bdf8}
.ts-p-high{--p:#f59e42}
.ts-p-critical{--p:#f87171}
.ts-p-extreme{--p:#e879f9}
.ts-prio{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--p);white-space:nowrap}
.ts-prio::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--p);box-shadow:0 0 8px var(--p)}

/* ── Badges ───────────────────────────────────────────────────────── */
.ts .badge{
  --b:var(--text-s);
  display:inline-flex;align-items:center;gap:.35rem;
  padding:.18rem .55rem;border-radius:6px;
  font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.04em;text-transform:uppercase;line-height:1.5;white-space:nowrap;
  color:var(--b);background:color-mix(in srgb,var(--b) 10%,transparent);border:1px solid color-mix(in srgb,var(--b) 26%,transparent);
}
.ts .badge > i{font-size:.85em;opacity:.85}
.ts .badge.ts-badge-dot > i{display:none}
.ts .badge.ts-badge-dot::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}
/* info */
.ts .badge-open,.ts .badge-new,.ts .badge-re-opened,.ts .badge-p4-informational,.ts .badge-maintenance-scheduled,.ts .badge-compliance-check,.ts .badge-feature-request,.ts .badge-bug-needs-info,.ts .badge-in-testing,.ts .badge-pending-review{--b:var(--blue)}
/* in progress */
.ts .badge-assigned,.ts .badge-in-progress,.ts .badge-in-review,.ts .badge-transferred,.ts .badge-maintenance-in-progress,.ts .badge-audit-in-progress,.ts .badge-feature-in-development,.ts .badge-feature-testing,.ts .badge-bug-qa-testing,.ts .badge-security-review,.ts .badge-security-remediation,.ts .badge-working-on-fix,.ts .badge-pending-fix,.ts .badge-upgrade-in-progress{--b:var(--violet)}
/* waiting */
.ts .badge-pending,.ts .badge-pending_validation,.ts .badge-waiting-for-customer,.ts .badge-waiting-for-third-party,.ts .badge-awaiting-approval,.ts .badge-scheduled,.ts .badge-audit-pending,.ts .badge-policy-update-required,.ts .badge-security-patch-pending,.ts .badge-security-investigating,.ts .badge-incident-medium,.ts .badge-p3-minor-issue,.ts .badge-needs-more-info,.ts .badge-info-requested,.ts .badge-reproduced,.ts .badge-investigating,.ts .badge-sql-medium,.ts .badge-bug-medium,.ts .badge-hr-medium,.ts .badge-client-service-medium,.ts .badge-misconfiguration,.ts .badge-weak-password,.ts .badge-open-redirect,.ts .badge-compliance-pending{--b:var(--yellow)}
/* done */
.ts .badge-approved,.ts .badge-resolved,.ts .badge-closed,.ts .badge-validated,.ts .badge-completed,.ts .badge-bug-fixed,.ts .badge-maintenance-completed,.ts .badge-compliance-passed,.ts .badge-audit-passed,.ts .badge-policy-update-completed,.ts .badge-feature-approved,.ts .badge-feature-released,.ts .badge-security-patch-released,.ts .badge-incident-low,.ts .badge-sql-low,.ts .badge-csrf-low,.ts .badge-bug-low,.ts .badge-hr-low,.ts .badge-client-service-low,.ts .badge-paid{--b:var(--green)}
/* elevated */
.ts .badge-incident-high,.ts .badge-p2-major-outage,.ts .badge-sql-high,.ts .badge-bug-high,.ts .badge-csrf-high,.ts .badge-lfi-high,.ts .badge-rfi-high,.ts .badge-auth-bypass,.ts .badge-hr-high,.ts .badge-client-service-high{--b:var(--orange)}
/* critical / negative */
.ts .badge-rejected,.ts .badge-incident-critical,.ts .badge-p1-critical-outage,.ts .badge-security-incident,.ts .badge-compliance-failed,.ts .badge-audit-failed,.ts .badge-feature-rejected,.ts .badge-rce-critical,.ts .badge-sql-critical,.ts .badge-bug-critical,.ts .badge-blocked,.ts .badge-blocker,.ts .badge-hr-critical,.ts .badge-client-service-critical,.ts .badge-security-rejected{--b:var(--red)}
/* escalated / xss */
.ts .badge-escalated,.ts .badge-xss-public,.ts .badge-xss-private,.ts .badge-xss-shared{--b:var(--rose)}
/* monitoring */
.ts .badge-monitoring,.ts .badge-security-monitoring{--b:var(--cyan)}
/* neutral */
.ts .badge-on-hold,.ts .badge-deferred,.ts .badge-cancelled,.ts .badge-duplicate,.ts .badge-bug-wont-fix,.ts .badge-bug-duplicate,.ts .badge-maintenance-cancelled,.ts .badge-not-an-issue,.ts .badge-informative,.ts .badge-abandoned,.ts .badge-user-error{--b:var(--text-s)}
.ts .badge.ts-badge-private{--b:var(--rose)}
.ts .badge.ts-badge-accent{--b:var(--accent-l)}

/* ── Forms ────────────────────────────────────────────────────────── */
.ts label{color:var(--text-2)}
.ts .form-label{display:block;font-size:.82rem;font-weight:500;color:var(--text-2);margin-bottom:.4rem}
.ts .form-input,.ts .form-select,.ts .form-textarea,
.ts input[type=text],.ts input[type=email],.ts input[type=password],.ts input[type=number],.ts input[type=date],.ts input[type=datetime-local],.ts input[type=time],.ts input[type=search],.ts input[type=url],.ts input[type=tel],
.ts select,.ts textarea{
  width:100%;padding:.62rem .8rem;
  background:var(--bg);color:var(--text);
  border:1px solid var(--border-h);border-radius:var(--radius-sm);
  font-family:var(--sans);font-size:.875rem;line-height:1.45;
  transition:border-color .15s,box-shadow .15s;box-shadow:none;
}
.ts select{-webkit-appearance:none;appearance:none;cursor:pointer;padding-right:2.3rem;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.5l3 3 3-3' stroke='%239494a8' stroke-width='1.4' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .8rem center}
.ts select[multiple]{background-image:none;padding-right:.8rem}
.ts select option,.ts select optgroup{background:var(--card);color:var(--text)}
.ts textarea{resize:vertical;min-height:96px}
.ts .form-input:hover,.ts select:hover,.ts textarea:hover,.ts input[type=text]:hover,.ts input[type=email]:hover,.ts input[type=password]:hover,.ts input[type=number]:hover{border-color:#3a3a55}
.ts .form-input:focus,.ts .form-select:focus,.ts .form-textarea:focus,.ts input:focus,.ts select:focus,.ts textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(124,92,252,.2)}
.ts input::placeholder,.ts textarea::placeholder{color:var(--text-t);opacity:1}
.ts input[type=checkbox],.ts input[type=radio]{accent-color:var(--accent);width:16px;height:16px;cursor:pointer}
.ts input[type=file]{width:100%;color:var(--text-s);font-size:.82rem;background:transparent;border:1px dashed var(--border-h);border-radius:var(--radius-sm);padding:.5rem}
.ts input[type=file]::file-selector-button{margin-right:.8rem;border:1px solid var(--border-h);background:var(--surface);color:var(--text);border-radius:7px;padding:.4rem .8rem;font-family:var(--sans);font-size:.8rem;font-weight:500;cursor:pointer}
.ts input[type=file]:hover::file-selector-button{border-color:var(--accent);color:var(--accent-l)}
.ts input[readonly],.ts input:disabled,.ts select:disabled,.ts textarea:disabled{color:var(--text-t);background:var(--bg2);cursor:not-allowed}
.ts .form-group{margin-bottom:1.25rem}
.ts-field{margin-bottom:1.15rem}
.ts-field > label{display:block;font-size:.82rem;font-weight:500;color:var(--text-2);margin-bottom:.4rem}
.ts-field .ts-hint{font-size:.76rem;color:var(--text-t);margin-top:.35rem}
.ts-req{color:var(--red)}
.ts-fieldset{border:none;margin:0;padding:0;min-width:0}
.ts-fieldset + .ts-fieldset{margin-top:1.75rem}
.ts-legend{display:flex;align-items:center;gap:.6rem;width:100%;font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-s);padding-bottom:.7rem;margin-bottom:1.15rem;border-bottom:1px solid var(--border)}
.ts-legend b{color:var(--accent-l);font-weight:500}
.ts-row2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1rem}
.ts-check{display:flex;align-items:flex-start;gap:.6rem;font-size:.84rem;color:var(--text-2)}
.ts-check input{margin-top:.2rem;flex-shrink:0}

/* ── Alerts / flash ───────────────────────────────────────────────── */
.ts-flash{display:flex;align-items:flex-start;gap:.7rem;padding:.8rem 1rem;border-radius:var(--radius);font-size:.875rem;margin-bottom:1.5rem;border:1px solid}
.ts-flash i{margin-top:.18rem}
.ts-flash--success{background:rgba(61,214,140,.07);border-color:rgba(61,214,140,.25);color:#86efac}
.ts-flash--error{background:rgba(248,113,113,.07);border-color:rgba(248,113,113,.25);color:#fca5a5}
.ts-flash--info{background:rgba(56,189,248,.07);border-color:rgba(56,189,248,.25);color:#7dd3fc}
.ts .flash-message{border-radius:var(--radius);border:1px solid;box-shadow:none}
.ts .flash-message.success{background:rgba(61,214,140,.07);border-color:rgba(61,214,140,.25);color:#86efac}
.ts .flash-message.error{background:rgba(248,113,113,.07);border-color:rgba(248,113,113,.25);color:#fca5a5}
.ts .flash-message.info{background:rgba(56,189,248,.07);border-color:rgba(56,189,248,.25);color:#7dd3fc}
.ts [role=alert].border-l-4{border-radius:var(--radius);border-width:1px;border-left-width:3px;box-shadow:none}
.ts .initial-admin-password-alert{background:rgba(245,158,66,.07);border:1px solid rgba(245,158,66,.25);border-left:3px solid var(--orange);color:#fcd9a8;border-radius:var(--radius)}
.ts .initial-admin-password-alert strong{color:#fff}

/* Empty states */
.ts-empty{text-align:center;padding:3rem 1.5rem;background:var(--bg2);border:1px dashed var(--border-h);border-radius:14px}
.ts-empty-ic{width:46px;height:46px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:var(--accent-bg);border:1px solid var(--border-h);color:var(--accent-l);margin-bottom:.9rem}
.ts .ts-empty h3{font-size:1rem;font-weight:600;margin-bottom:.3rem}
.ts-empty p{color:var(--text-s);font-size:.875rem;max-width:380px;margin:0 auto 1.25rem}
.ts .no-results-message{background:var(--bg2);border:1px dashed var(--border-h);border-radius:var(--radius);color:var(--text-s);box-shadow:none;font-style:normal;padding:1.5rem;margin-top:0;text-align:center;font-size:.875rem}

/* ── Tables ───────────────────────────────────────────────────────── */
.ts table{width:100%;border-collapse:separate;border-spacing:0}
.ts th,.ts td{padding:.7rem 1rem;border-bottom:1px solid var(--border);text-align:left;font-size:.85rem}
.ts th,.ts thead th{background:var(--bg-el);color:var(--text-s);font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase}
.ts td{color:var(--text-2)}
.ts tbody tr{transition:background .12s}
.ts tbody tr:hover{background:rgba(255,255,255,.02)}
.ts tbody tr:last-child td{border-bottom:none}
.ts .table-container{background:var(--card);border:1px solid var(--border);border-radius:14px;box-shadow:none;overflow-x:auto;backdrop-filter:none}
.ts .table-container thead{background:var(--bg-el);color:var(--text-s)}
.ts .table-container tbody tr:hover{background:rgba(255,255,255,.02)}
.ts .divide-y > * + *{border-color:var(--border)}
.ts .overflow-x-auto{scrollbar-width:thin}

/* ── Modals ───────────────────────────────────────────────────────── */
/* .modal is toggled by JS via the .show class (customAlert / customConfirm and admin dialogs) */
.ts .modal{display:none;position:fixed;inset:0;z-index:100;overflow:auto;padding:1rem;align-items:center;justify-content:center;background:rgba(3,3,6,.7);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ts .modal.show{display:flex}
.ts .modal-content{width:90%;max-width:500px;margin:auto;padding:1.75rem;background:var(--card);border:1px solid var(--border-h);border-radius:16px;color:var(--text);box-shadow:0 30px 80px -20px rgba(0,0,0,.7);animation:tsModalIn .25s var(--ease) both}
@keyframes tsModalIn{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}
.ts .modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}
.ts .modal-header h3{color:var(--text);font-size:1.05rem;font-weight:600}
.ts .modal-body{margin-bottom:1.25rem;color:var(--text-2);line-height:1.55}
.ts .modal-footer{display:flex;justify-content:flex-end;gap:.6rem}
.ts .ts-modal-title{font-size:1.05rem;font-weight:600;color:var(--text);margin-bottom:.5rem}
.ts .ts-modal-text{color:var(--text-2);font-size:.9rem;line-height:1.55;margin-bottom:1.5rem}
.ts #filterModal{background:rgba(3,3,6,.7);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ts #filterModalContent{background:var(--card);border:1px solid var(--border-h);border-radius:16px;box-shadow:0 30px 80px -20px rgba(0,0,0,.7);transform:none}
.ts #filterModalContent h3{font-size:1.05rem;font-weight:600}
.ts #filterModalContent label{font-size:.82rem;color:var(--text-2)}
.ts #filterModalContent button.border{border-color:var(--border-h);color:var(--text-2);background:transparent}
.ts #filterModalContent button.border:hover{background:rgba(255,255,255,.03);color:var(--text)}

/* Tabs */
.ts .admin-tabs-scroll{display:flex;gap:.25rem;padding:.3rem;background:var(--bg2);border:1px solid var(--border);border-radius:12px;margin-bottom:1.5rem;overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap;scrollbar-width:thin}
.ts .tab-button{flex-shrink:0;cursor:pointer}
.ts .admin-tabs-scroll::-webkit-scrollbar-track{background:transparent}
.ts .admin-tabs-scroll::-webkit-scrollbar-thumb{background:var(--border-h)}
.ts .tab-button{background:transparent;color:var(--text-s);border:none;border-radius:8px;padding:.5rem .9rem;font-size:.84rem;font-weight:500;box-shadow:none;white-space:nowrap;transition:background .15s,color .15s}
.ts .tab-button:hover{background:rgba(255,255,255,.04);color:var(--text)}
.ts .tab-button.active,.ts .tab-button.active:hover{background:var(--surface);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-h)}

/* View toggle (dashboard) */
.ts-seg{display:inline-flex;padding:3px;background:var(--bg2);border:1px solid var(--border);border-radius:10px}
.ts .view-toggle-btn{width:34px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;color:var(--text-t);background:transparent;padding:0;font-size:.8rem}
.ts .view-toggle-btn:hover{color:var(--text)}
.ts .view-toggle-btn.active,.ts .view-toggle-btn.active.bg-blue-600{background:var(--surface);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-h)}

/* Misc components used by admin / integrations */
.ts .log-entry{padding:1rem;background:var(--bg-el);border:1px solid var(--border);box-shadow:none;border-radius:var(--radius);transition:border-color .15s}
.ts .log-entry:hover{transform:none;box-shadow:none;border-color:var(--border-h)}
.ts #chat-history{display:flex;flex-direction:column;gap:.75rem;max-height:400px;overflow-y:auto;padding:1rem;background:var(--bg-el);border:1px solid var(--border);border-radius:var(--radius)}
.ts .chat-bubble{padding:.7rem .95rem;max-width:80%;overflow-wrap:anywhere;box-shadow:none;border-radius:14px}
.ts .chat-bubble.user{align-self:flex-end;border-bottom-right-radius:4px;background:linear-gradient(135deg,var(--accent),var(--accent-d));color:#fff}
.ts .chat-bubble.gemini{align-self:flex-start;border-bottom-left-radius:4px;background:var(--surface);color:var(--text)}
.ts .chat-bubble.is-error{background:rgba(248,113,113,.1);border:1px solid rgba(248,113,113,.3);color:#fca5a5}
.ts .chat-bubble-timestamp{font-size:.7rem;margin-top:.25rem;text-align:right;color:rgba(255,255,255,.55)}
.ts .chat-bubble.gemini .chat-bubble-timestamp{text-align:left;color:var(--text-t)}
.ts .console-output,.ts .file-editor-textarea{padding:1rem;border-radius:var(--radius);background:#05050a;color:#7dd3a8;border:1px solid var(--border);font-family:var(--mono);font-size:.8rem;box-shadow:none}
.ts .console-output{white-space:pre-wrap;word-break:break-all;max-height:300px;overflow-y:auto}
.ts .console-output.error{color:var(--red)}
.ts .file-editor-container{display:flex;flex-direction:column;gap:1rem}
.ts .file-editor-header{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;border-radius:var(--radius);font-weight:600;background:var(--surface);color:var(--text);box-shadow:none}
.ts .file-editor-textarea{min-height:300px;resize:vertical}
.ts .file-editor-buttons{display:flex;gap:.75rem;justify-content:flex-end}
.ts .spinner{display:inline-block;vertical-align:middle;width:22px;height:22px;margin-left:.5rem;border:3px solid rgba(255,255,255,.12);border-left-color:var(--accent-l);border-radius:50%;animation:tsSpin 1s linear infinite}
@keyframes tsSpin{to{transform:rotate(360deg)}}
.ts .flash-message{display:flex;align-items:center;gap:.5rem;padding:.8rem 1rem;margin-bottom:1.5rem;font-size:.875rem;font-weight:500}
.ts .initial-admin-password-alert{padding:1rem;margin-top:1.5rem;font-size:.875rem}
.ts .dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem}
.ts .dashboard-stat-card{display:flex;align-items:center;gap:1rem;padding:1.25rem;border-radius:14px;background:var(--card);border:1px solid var(--border);box-shadow:none}
.ts .dashboard-stat-card:hover{transform:none;box-shadow:none;border-color:var(--border-h)}
.ts .dashboard-stat-icon{font-size:1.25rem;padding:.7rem;border-radius:10px;background:var(--accent-bg);color:var(--accent-l)}
.ts .dashboard-stat-value{font-size:1.9rem;color:var(--text);font-family:var(--serif);font-weight:400;line-height:1.1}
.ts .dashboard-stat-label{color:var(--text-s);font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase}
.ts .fa-solid,.ts .fa-regular,.ts .fa-brands{line-height:1}
.ts .line-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ts .line-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* ── Tailwind utility remap (dark) ────────────────────────────────── */
/* surfaces */
.ts .bg-white{background-color:var(--card)}
.ts .bg-gray-50,.ts .bg-slate-50{background-color:var(--bg-el)}
.ts .bg-gray-100,.ts .bg-slate-100{background-color:var(--bg2)}
.ts .bg-gray-200,.ts .bg-gray-300{background-color:var(--surface)}
.ts .bg-gray-700,.ts .bg-gray-800,.ts .bg-gray-900{background-color:var(--surface-l)}
.ts .hover\:bg-gray-50:hover,.ts .hover\:bg-gray-100:hover{background-color:rgba(255,255,255,.035)}
.ts .hover\:bg-gray-700:hover{background-color:rgba(255,255,255,.05)}
/* text */
.ts .text-gray-900,.ts .text-gray-800,.ts .text-black{color:var(--text)}
.ts .text-gray-700,.ts .text-gray-300,.ts .text-slate-600{color:var(--text-2)}
.ts .text-gray-600,.ts .text-gray-500{color:var(--text-s)}
.ts .text-gray-400{color:var(--text-t)}
.ts .hover\:text-gray-800:hover{color:var(--text)}
/* borders */
.ts .border-gray-50,.ts .border-gray-100,.ts .border-gray-200,.ts .border-gray-300,.ts .border-gray-700,.ts .divide-gray-200 > * + *{border-color:var(--border)}
.ts .border:not([class*="border-"]),.ts .border-t:not([class*="border-gray"]):not([class*="border-red"]):not([class*="border-green"]):not([class*="border-blue"]),.ts .border-b:not([class*="border-gray"]){border-color:var(--border)}
/* shadows — flat surfaces in the dark theme */
.ts .shadow,.ts .shadow-sm,.ts .shadow-md,.ts .shadow-lg,.ts .shadow-xl,.ts .shadow-inner,.ts .hover\:shadow-lg:hover,.ts .hover\:shadow-md:hover{box-shadow:none}
.ts .drop-shadow-md{filter:none}
/* accents: blue/indigo → brand violet */
.ts .text-blue-400,.ts .text-blue-500,.ts .text-blue-600,.ts .text-blue-700,.ts .text-indigo-500,.ts .text-indigo-600,.ts .text-indigo-700{color:var(--accent-l)}
.ts .text-blue-800,.ts .text-blue-900,.ts .text-indigo-800{color:#c9bcff}
.ts .hover\:text-blue-600:hover,.ts .hover\:text-blue-800:hover,.ts .hover\:text-blue-900:hover,.ts .hover\:text-indigo-700:hover{color:#c9bcff}
.ts .bg-blue-50,.ts .bg-blue-100,.ts .bg-indigo-100,.ts .bg-blue-200{background-color:var(--accent-bg)}
.ts .hover\:bg-indigo-100:hover{background-color:rgba(124,92,252,.16)}
.ts .bg-blue-500,.ts .bg-blue-600,.ts .bg-indigo-600,.ts .bg-purple-500{background-color:var(--accent);color:#fff}
.ts .hover\:bg-blue-700:hover{background-color:var(--accent-d)}
.ts .border-blue-500,.ts .border-l-blue-500{border-color:var(--accent)}
.ts .focus\:ring-indigo-500:focus,.ts .focus\:ring-indigo-200:focus,.ts .focus\:ring-green-500:focus{--tw-ring-color:rgba(124,92,252,.35)}
.ts .focus\:border-indigo-500:focus,.ts .focus\:border-indigo-300:focus,.ts .focus\:border-green-500:focus{border-color:var(--accent)}
/* red */
.ts .text-red-500,.ts .text-red-600{color:var(--red)}
.ts .text-red-700,.ts .text-red-900,.ts .text-rose-700{color:#fca5a5}
.ts .hover\:text-red-600:hover,.ts .hover\:text-red-900:hover{color:#fecaca}
.ts .bg-red-50,.ts .bg-red-100,.ts .bg-rose-100{background-color:rgba(248,113,113,.08)}
.ts .bg-red-200,.ts .bg-red-300{background-color:rgba(248,113,113,.16)}
.ts .hover\:bg-red-100:hover{background-color:rgba(248,113,113,.14)}
.ts .bg-red-400,.ts .bg-red-500,.ts .bg-red-600{background-color:#dc4a4a;color:#fff}
.ts .hover\:bg-red-700:hover{background-color:#c03b3b}
.ts .border-red-100,.ts .border-red-200,.ts .border-red-400{border-color:rgba(248,113,113,.28)}
.ts .border-red-500,.ts .border-red-600{border-color:var(--red)}
/* green */
.ts .text-green-500,.ts .text-green-600,.ts .text-teal-500,.ts .text-teal-600{color:var(--green)}
.ts .text-green-700,.ts .text-green-900{color:#86efac}
.ts .hover\:text-green-900:hover{color:#bbf7d0}
.ts .bg-green-50,.ts .bg-green-100,.ts .bg-green-200{background-color:rgba(61,214,140,.08)}
.ts .bg-green-500,.ts .bg-green-600{background-color:#22a86a;color:#fff}
.ts .hover\:bg-green-700:hover{background-color:#1b8f5a}
.ts .border-green-400,.ts .border-green-500{border-color:rgba(61,214,140,.45)}
.ts .border-teal-500{border-color:rgba(45,212,191,.45)}
/* yellow / orange / amber */
.ts .text-yellow-500,.ts .text-orange-500,.ts .text-amber-700,.ts .text-orange-700{color:var(--orange)}
.ts .text-yellow-800,.ts .text-yellow-900,.ts .text-orange-900{color:#fcd9a8}
.ts .bg-yellow-50,.ts .bg-yellow-100,.ts .bg-yellow-200,.ts .bg-amber-100,.ts .bg-orange-100,.ts .bg-orange-200{background-color:rgba(245,158,66,.09)}
.ts .border-yellow-200{border-color:rgba(245,158,66,.28)}
/* purple */
.ts .text-purple-500,.ts .text-purple-600,.ts .text-purple-700{color:var(--violet)}
.ts .bg-purple-100{background-color:rgba(180,162,255,.1)}
/* gradients used by old priority banners */
.ts .bg-gradient-to-r.from-gray-200,.ts .bg-gradient-to-r.from-gray-300{background:var(--surface)}

/* ── Auth (logged out) ────────────────────────────────────────────── */
.ts.ts-auth .sidebar,.ts.ts-auth .top-bar,.ts.ts-auth .overlay{display:none}
.ts.ts-auth .main-content-area{display:flex;align-items:center;justify-content:center;padding:3rem 1.25rem}
.ts.ts-auth .main-content-area::before{inset:0;height:auto;background:radial-gradient(ellipse 50% 45% at 50% 0%,rgba(124,92,252,.14),transparent 70%)}
.ts-auth-wrap{width:100%;max-width:420px}
.ts-auth-brand{display:flex;align-items:center;justify-content:center;gap:.65rem;margin-bottom:2rem}
.ts-auth-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:2rem 1.75rem}
.ts .ts-auth-card h1{font-family:var(--serif);font-weight:400;font-size:1.9rem;line-height:1.15;letter-spacing:-.02em;margin:0 0 .4rem;text-align:center}
.ts-auth-card .ts-auth-sub{text-align:center;color:var(--text-s);font-size:.9rem;margin-bottom:1.75rem}
.ts-or{display:flex;align-items:center;gap:.85rem;margin:1.25rem 0;font-family:var(--mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-t)}
.ts-or::before,.ts-or::after{content:'';flex:1;height:1px;background:var(--border)}
.ts-auth-foot{text-align:center;color:var(--text-s);font-size:.85rem;margin-top:1.5rem}
.ts-auth-foot a{color:var(--accent-l);font-weight:500}
.ts-auth-foot a:hover{color:#c9bcff}

/* ── Ticket detail ────────────────────────────────────────────────── */
.ts-detail{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:1.25rem;align-items:start}
.ts-detail-side{display:flex;flex-direction:column;gap:1rem;position:sticky;top:1.5rem}
.ts-detail-main{display:flex;flex-direction:column;gap:1rem;min-width:0}
.ts-meta-row{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1rem}
.ts h1.ts-detail-title{font-family:var(--serif);font-weight:400;font-size:clamp(1.6rem,3vw,2.15rem);line-height:1.2;letter-spacing:-.02em;margin:0;overflow-wrap:anywhere}
.ts-prose{color:var(--text-2);line-height:1.7;overflow-wrap:anywhere}
.ts-attach{margin-top:1.25rem}
.ts-attach-label{font-family:var(--mono);font-size:.66rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-t);margin-bottom:.5rem}
.ts-attach img{max-width:100%;height:auto;border-radius:10px;border:1px solid var(--border-h);cursor:zoom-in}

.ts-dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.65rem 1rem;margin:0;font-size:.85rem}
.ts-dl dt{color:var(--text-t)}
.ts-dl dd{margin:0;color:var(--text);text-align:right;overflow-wrap:anywhere;display:flex;justify-content:flex-end;align-items:center;gap:.4rem;flex-wrap:wrap}
.ts-dl dd .ts-muted{color:var(--text-s)}
.ts-money{font-family:var(--mono);color:var(--green)}
.ts-divider{height:1px;background:var(--border);margin:1rem 0}

/* conversation */
.ts-thread{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.ts-msg{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:.85rem;padding-bottom:1.25rem}
.ts-msg::before{content:'';position:absolute;left:18px;top:42px;bottom:4px;width:1px;background:var(--border)}
.ts-msg:last-child::before{display:none}
.ts-msg-body{min-width:0;background:var(--bg-el);border:1px solid var(--border);border-radius:12px;padding:.8rem 1rem}
.ts-msg.is-private .ts-msg-body{background:rgba(244,114,182,.04);border-color:rgba(244,114,182,.22)}
.ts-msg-head{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem .6rem;margin-bottom:.35rem;font-size:.8rem}
.ts-msg-head strong{color:var(--text);font-weight:600}
.ts-msg-head time{font-family:var(--mono);font-size:.7rem;color:var(--text-t)}
.ts-msg-text{color:var(--text-2);font-size:.9rem;line-height:1.65;overflow-wrap:anywhere}
.ts-msg-img{margin-top:.75rem}
.ts-msg-img img{max-width:100%;height:auto;border-radius:10px;border:1px solid var(--border-h);cursor:zoom-in}
.ts-composer{border-top:1px solid var(--border);padding-top:1.25rem;margin-top:.25rem}
.ts-composer-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.75rem;margin-top:.85rem}

/* SLA meter */
.ts-sla{--s:var(--green)}
.ts-sla-stage{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}
.ts-sla-stage b{font-family:var(--mono);font-size:.72rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--s)}
.ts-sla-bar{height:6px;border-radius:999px;background:var(--surface);overflow:hidden}
.ts-sla-bar span{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--s),color-mix(in srgb,var(--s) 60%,#fff));transition:width .6s var(--ease)}
.ts-sla-scale{display:flex;justify-content:space-between;font-family:var(--mono);font-size:.62rem;color:var(--text-t);margin-top:.4rem}
.ts-sla.is-warn1{--s:var(--yellow)}
.ts-sla.is-warn2{--s:var(--orange)}
.ts-sla.is-breach{--s:var(--red)}
.ts-sla.is-unknown{--s:var(--text-t)}
.ts-link-btn{display:inline-flex;align-items:center;gap:.45rem;margin-top:1rem;color:var(--accent-l);font-size:.84rem;font-weight:500;background:none;border:none;cursor:pointer;padding:0}
.ts-link-btn:hover{color:#c9bcff}

/* actions */
.ts-action + .ts-action{border-top:1px solid var(--border);margin-top:1.15rem;padding-top:1.15rem}
.ts .ts-action h3{font-size:.8rem;font-weight:600;color:var(--text);margin:0 0 .65rem;display:flex;align-items:center;gap:.5rem}
.ts .ts-action h3 i{color:var(--text-t);font-size:.8rem}
.ts .ts-action label{font-size:.76rem;color:var(--text-s);font-weight:500;display:block;margin:.65rem 0 .35rem}
.ts .ts-action .ts-btn,.ts .ts-action .btn-primary{margin-top:.65rem;width:100%}

/* history timeline */
.ts-tl{list-style:none;margin:0;padding:0}
.ts-tl li{position:relative;padding:0 0 1rem 1.4rem}
.ts-tl li:last-child{padding-bottom:0}
.ts-tl li::before{content:'';position:absolute;left:4px;top:.45rem;width:7px;height:7px;border-radius:50%;background:var(--accent-l);box-shadow:0 0 0 3px var(--card)}
.ts-tl li::after{content:'';position:absolute;left:7px;top:1rem;bottom:0;width:1px;background:var(--border)}
.ts-tl li:last-child::after{display:none}
.ts-tl li.is-assign::before{background:var(--blue)}
.ts-tl time{display:block;font-family:var(--mono);font-size:.66rem;color:var(--text-t);margin-bottom:.1rem}
.ts-tl p{font-size:.82rem;color:var(--text-2)}

/* attachment lightbox */
.ts-lightbox{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:3.5rem 1rem 1rem;background:rgba(3,3,6,.85);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ts-lightbox img{max-width:100%;max-height:100%;border-radius:10px;border:1px solid var(--border-h);box-shadow:0 30px 90px -20px rgba(0,0,0,.8);background:var(--card)}
.ts-lightbox-close{position:absolute;top:.9rem;right:.9rem;background:var(--card)}
.ts-lightbox-open{position:absolute;top:1.15rem;left:1rem;font-size:.82rem;color:var(--text-s)}
.ts-lightbox-open:hover{color:var(--text)}

/* advanced analysis popup */
.ts-popup{display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(880px,92vw);height:min(640px,86vh);z-index:9999;background:var(--card);border:1px solid var(--border-h);border-radius:16px;box-shadow:0 30px 90px -20px rgba(0,0,0,.8);overflow:hidden}
.ts-popup-head{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.1rem;border-bottom:1px solid var(--border);background:var(--bg-el)}
.ts-popup-head span{font-weight:600;font-size:.95rem;display:flex;align-items:center;gap:.5rem}
.ts-popup-links{padding:1.25rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.75rem}
.ts-popup-frame{display:none;width:100%;height:calc(100% - 140px);border-top:1px solid var(--border)}

/* ── Search, ticket list, saved views ─────────────────────────────── */
.ts-kbd{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.3rem;padding:0 .35rem;font-family:var(--mono);font-size:.66rem;line-height:1;color:var(--text-s);background:var(--surface);border:1px solid var(--border-h);border-bottom-width:2px;border-radius:5px}
.ts-search-btn{display:flex;align-items:center;gap:.6rem;width:100%;padding:.5rem .65rem;border-radius:9px;border:1px solid var(--border);background:var(--card);color:var(--text-t);font-size:.82rem;cursor:pointer;text-align:left;transition:border-color .15s,color .15s}
.ts-search-btn span{flex:1}
.ts-search-btn:hover{border-color:var(--border-h);color:var(--text-s)}
.ts-nav-badge{margin-left:auto;min-width:1.25rem;padding:0 .4rem;border-radius:999px;background:var(--accent);color:#fff;font-family:var(--mono);font-size:.62rem;font-weight:500;line-height:1.35rem;text-align:center}
/* Nested agents: a tree line under the parent's icon; each dot is the agent's own colour,
   its fill says whether it runs (solid + soft pulse = active, hollow ring = paused) and a red
   ring plus a warning icon marks one whose last run failed. */
.ts .ts-nav .ts-subnav{margin:.1rem 0 .3rem;padding:0 0 0 1.75rem;position:relative;gap:1px}
.ts-subnav::before{content:'';position:absolute;left:1.15rem;top:.15rem;bottom:.45rem;width:1px;background:var(--border-h)}
.ts-subnav-item{position:relative;display:flex;align-items:center;gap:.6rem;padding:.3rem .55rem;border-radius:7px;font-size:.79rem;color:var(--text-s);transition:background .15s,color .15s}
.ts-subnav-item::before{content:'';position:absolute;left:-.6rem;top:50%;width:.45rem;height:1px;background:var(--border-h)}
.ts-subnav-item:hover{color:var(--text);background:rgba(255,255,255,.03)}
.ts-subnav-item.is-active{color:var(--text);background:var(--surface)}
.ts-subnav-item.is-st-paused .ts-subnav-label{color:var(--text-t)}
.ts-subnav-item.is-st-paused:hover .ts-subnav-label,.ts-subnav-item.is-st-paused.is-active .ts-subnav-label{color:var(--text-s)}
.ts-subnav-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-subnav-warn{margin-left:auto;flex-shrink:0;font-size:.62rem;color:var(--red)}
.ts-agentdot{--agent:var(--agent-c,var(--violet));flex-shrink:0;display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--agent)}
.ts-agentdot--active{box-shadow:0 0 0 3px color-mix(in srgb,var(--agent) 18%,transparent);animation:tsPulse 2.6s ease-in-out infinite}
.ts-agentdot--paused{background:transparent;box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--agent) 75%,transparent)}
.ts-agentdot--error{box-shadow:0 0 0 2px var(--bg2),0 0 0 3.5px var(--red)}
@keyframes tsPulse{0%,100%{box-shadow:0 0 0 3px color-mix(in srgb,var(--agent) 18%,transparent)}50%{box-shadow:0 0 0 4.5px color-mix(in srgb,var(--agent) 4%,transparent)}}
@media (prefers-reduced-motion:reduce){.ts-agentdot--active{animation:none}}
.ts-search{position:relative;display:flex;align-items:center;flex:1;min-width:220px}
.ts-search > i{position:absolute;left:.8rem;color:var(--text-t);font-size:.8rem;pointer-events:none}
.ts .ts-search input[type=search]{padding-left:2.15rem;padding-right:2.4rem}
.ts-search .ts-kbd{position:absolute;right:.6rem;pointer-events:none}
.ts-search input:focus ~ .ts-kbd{opacity:0}
.ts-search--head{min-width:260px}
.ts .ts-search input::-webkit-search-cancel-button{-webkit-appearance:none}
.ts-scopes{position:relative;display:flex;gap:.25rem;padding:.3rem;margin-bottom:1rem;background:var(--bg2);border:1px solid var(--border);border-radius:12px;overflow-x:auto;scrollbar-width:none}
.ts-scopes::-webkit-scrollbar{display:none}
.ts-scope{display:inline-flex;align-items:center;gap:.45rem;padding:.45rem .8rem;border-radius:8px;font-size:.84rem;font-weight:500;color:var(--text-s);white-space:nowrap;transition:background .15s,color .15s}
.ts-scope:hover{color:var(--text);background:rgba(255,255,255,.03)}
.ts-scope.is-active{background:var(--surface);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-h)}
.ts-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:.6rem;align-items:center;margin-bottom:.85rem}
.ts-filters .ts-search{grid-column:1/-1;min-width:0}
.ts .ts-filters select{width:100%;min-width:0}
.ts-js .ts-filters{grid-template-columns:repeat(4,minmax(0,1fr))}
.ts-js .ts-filters-apply{display:none}
.ts-list-meta{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin:.25rem 0 .85rem;font-size:.84rem;color:var(--text-s)}
.ts-list-meta strong{color:var(--text);font-weight:600}
.ts-list-meta a{color:var(--accent-l)}
.ts-saveview{position:relative}
.ts-saveview summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .7rem;border-radius:8px;border:1px solid var(--border);color:var(--text-s);font-size:.8rem}
.ts-saveview summary::-webkit-details-marker{display:none}
.ts-saveview summary:hover,.ts-saveview[open] summary{color:var(--text);border-color:var(--border-h)}
.ts-saveview-form{position:absolute;right:0;top:calc(100% + .4rem);z-index:20;display:flex;gap:.5rem;width:min(340px,86vw);padding:.65rem;background:var(--card);border:1px solid var(--border-h);border-radius:12px;box-shadow:0 20px 50px -15px rgba(0,0,0,.7)}
.ts-saved{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin:-.25rem 0 .9rem}
.ts-saved-label{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-t);margin-right:.2rem}
.ts-saved-chip{display:inline-flex;align-items:center;border:1px solid var(--border-h);border-radius:999px;background:var(--surface);font-size:.78rem;overflow:hidden}
.ts-saved-chip a{padding:.22rem .2rem .22rem .7rem;color:var(--text-2)}
.ts-saved-chip a:hover{color:var(--text)}
.ts-saved-chip.is-active{border-color:rgba(124,92,252,.5);background:var(--accent-bg)}
.ts-saved-chip.is-active a{color:var(--accent-l)}
.ts-saved-chip form{margin:0}
.ts-saved-chip button{padding:.22rem .55rem .22rem .35rem;color:var(--text-t);font-size:.65rem;background:none;border:none;cursor:pointer}
.ts-saved-chip button:hover{color:var(--red)}
.ts-pager{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-top:1rem}
.ts-pager-info{font-family:var(--mono);font-size:.72rem;color:var(--text-t)}
.ts-more{display:block;margin-top:.85rem;padding:.7rem 1rem;border:1px dashed var(--border-h);border-radius:12px;text-align:center;font-size:.84rem;color:var(--text-s);transition:color .15s,border-color .15s}
.ts-more:hover{color:var(--text);border-color:var(--accent)}
.ts [data-ts-list] a:focus-visible{outline:none}
.ts [data-ts-list] .ts-trow:focus-within,.ts [data-ts-list] .ts-tcard:focus-within,.ts .ts-inbox-item:focus-within{box-shadow:inset 0 0 0 2px var(--accent-l);border-radius:inherit}

/* ── Inbox ────────────────────────────────────────────────────────── */
.ts-inbox{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.ts-inbox-item{position:relative}
.ts-inbox-item + .ts-inbox-item{border-top:1px solid var(--border)}
.ts-inbox-item > a{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.9rem;align-items:start;padding:.85rem 1.15rem .85rem 1.3rem;transition:background .15s}
.ts-inbox-item > a:hover{background:var(--card-h)}
.ts-inbox-item.is-new::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent)}
.ts-inbox-item.is-new{background:linear-gradient(90deg,rgba(124,92,252,.07),transparent 55%)}
.ts-inbox-item:not(.is-new) .ts-inbox-line,.ts-inbox-item:not(.is-new) .ts-inbox-what{opacity:.78}
.ts-inbox-item.is-new .ts-inbox-line strong{color:#fff}
.ts-inbox-av{position:relative;flex-shrink:0}
.ts-inbox-kind{position:absolute;right:-5px;bottom:-4px;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.52rem;color:#fff;background:var(--surface-l);border:2px solid var(--card)}
.ts-inbox--mention .ts-inbox-kind{background:var(--accent)}
.ts-inbox--status .ts-inbox-kind{background:#b26a1c}
.ts-inbox--assigned .ts-inbox-kind{background:#1f8a5b}
.ts-inbox--alert .ts-inbox-kind{background:#b4322f}
.ts-inbox-sys,.ts-inbox-bot{width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;font-size:.85rem}
.ts-inbox-sys{color:var(--text-s);background:var(--surface);border:1px solid var(--border-h)}
.ts-inbox--alert .ts-inbox-sys{color:var(--red);background:rgba(248,113,113,.1);border-color:rgba(248,113,113,.3)}
.ts-inbox--ticket .ts-inbox-sys{color:var(--accent-l);background:var(--accent-bg);border-color:rgba(124,92,252,.3)}
.ts-inbox--assistant .ts-inbox-sys{color:var(--cyan);background:rgba(34,211,238,.1);border-color:rgba(34,211,238,.3)}
.ts-inbox-bot{--agent:var(--agent-c,var(--violet));color:var(--agent);background:color-mix(in srgb,var(--agent) 14%,transparent);border:1px solid color-mix(in srgb,var(--agent) 32%,transparent)}
.ts-inbox-body{min-width:0;display:flex;flex-direction:column;gap:.22rem}
.ts-inbox-line{font-size:.87rem;color:var(--text-s);line-height:1.45}
.ts-inbox-line strong{color:var(--text);font-weight:600}
.ts-inbox-line .ts-tnum{margin:0 .25rem 0 .3rem}
.ts-inbox-title{color:var(--text-2)}
.ts-inbox-label{color:var(--text);font-weight:600}
.ts-inbox-by{color:var(--text-t)}
.ts-inbox-tag{display:inline-block;margin:0 .3rem 0 .1rem;padding:0 .35rem;border-radius:5px;font-family:var(--mono);font-size:.6rem;letter-spacing:.06em;text-transform:uppercase;color:var(--accent-l);background:var(--accent-bg);vertical-align:.1em}
.ts-inbox-what{font-size:.83rem;color:var(--text-s);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ts-inbox-what .badge{margin-right:.35rem}
.ts-inbox-day{padding:.4rem 1.3rem;background:var(--bg2);font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-t)}
.ts-inbox-day + .ts-inbox-item{border-top:1px solid var(--border)}
.ts-inbox-item + .ts-inbox-day{border-top:1px solid var(--border)}
.ts-inbox-acts{position:absolute;right:.9rem;top:50%;transform:translateY(-50%);display:flex;gap:.3rem;padding:.25rem;border-radius:10px;background:var(--surface);border:1px solid var(--border-h);opacity:0;pointer-events:none;transition:opacity .12s}
.ts-inbox-acts form{display:flex;gap:.3rem}
.ts-inbox-item:hover .ts-inbox-acts,.ts-inbox-item:focus-within .ts-inbox-acts{opacity:1;pointer-events:auto}
.ts-icon-btn--sm{width:28px;height:28px;font-size:.72rem;border-radius:7px}
.ts-inbox-item.is-leaving{opacity:0;transform:translateX(12px);transition:opacity .2s,transform .2s}
.ts-inbox-filters .ts-count--accent,.ts-count--accent{color:#fff;background:var(--accent);border-color:var(--accent)}
.ts-inbox-fresh{display:flex;justify-content:center;margin:-.25rem 0 .75rem}
.ts-inbox-keys{margin-top:.75rem;text-align:right}
.ts-inbox-keys .ts-kbd{margin:0 .1rem}
.ts-tb-actions{display:inline-flex;align-items:center;gap:.5rem}
.ts-tb-bell{position:relative;width:34px;height:34px}
.ts-tb-badge{position:absolute;top:-5px;right:-6px;min-width:17px;height:17px;padding:0 4px;border-radius:999px;background:var(--accent);color:#fff;font-family:var(--mono);font-size:.58rem;line-height:17px;text-align:center;border:2px solid var(--bg)}
.ts-toasts{position:fixed;right:1.25rem;bottom:1.25rem;z-index:200;display:flex;flex-direction:column;gap:.6rem;max-width:min(380px,calc(100vw - 2rem))}
.ts-toast{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.7rem;align-items:start;padding:.8rem .9rem;border-radius:12px;background:rgba(20,20,30,.96);border:1px solid var(--border-h);box-shadow:0 18px 50px -12px rgba(0,0,0,.7);color:var(--text-2);font-size:.84rem;animation:tsToastIn .25s var(--ease)}
.ts-toast > i{margin-top:.15rem;color:var(--accent-l)}
.ts-toast a{color:inherit}
.ts-toast strong{display:block;color:var(--text);font-weight:600;margin-bottom:.1rem}
.ts-toast span{display:block;color:var(--text-s);font-size:.8rem;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ts-toast button{background:none;border:0;color:var(--text-t);cursor:pointer;padding:0 .1rem}
@keyframes tsToastIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.ts-mention{color:var(--accent-l);background:var(--accent-bg);border-radius:4px;padding:0 .2rem;font-weight:500}

/* ── Command palette + shortcuts ──────────────────────────────────── */
.ts-palette{position:fixed;inset:0;z-index:250;display:flex;justify-content:center;align-items:flex-start;padding:12vh 1rem 1rem;background:rgba(3,3,6,.65);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}
.ts-palette[hidden]{display:none}
.ts-palette-box{width:min(620px,100%);background:var(--card);border:1px solid var(--border-h);border-radius:16px;box-shadow:0 40px 100px -25px rgba(0,0,0,.85);overflow:hidden;animation:tsModalIn .2s var(--ease) both}
.ts-palette-input{display:flex;align-items:center;gap:.7rem;padding:.85rem 1rem;border-bottom:1px solid var(--border)}
.ts-palette-input > i{color:var(--text-t)}
.ts .ts-palette-input input{flex:1;border:none;background:transparent;padding:.2rem 0;font-size:1rem;box-shadow:none}
.ts .ts-palette-input input:focus{box-shadow:none}
.ts-palette-list{list-style:none;margin:0;padding:.4rem;max-height:min(420px,55vh);overflow-y:auto}
.ts-palette-item{display:flex;align-items:center;gap:.75rem;padding:.55rem .65rem;border-radius:9px;cursor:pointer}
.ts-palette-item.is-active{background:var(--surface)}
.ts-palette-ic{width:28px;height:28px;flex-shrink:0;border-radius:8px;display:flex;align-items:center;justify-content:center;background:var(--bg-el);border:1px solid var(--border);color:var(--text-s);font-size:.78rem}
.ts-palette-ic .ts-prio::before{margin:0}
.ts-palette-text{flex:1;min-width:0;display:flex;flex-direction:column}
.ts-palette-text span{font-size:.88rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-palette-text small{font-family:var(--mono);font-size:.66rem;color:var(--text-t)}
.ts-palette-kind{font-family:var(--mono);font-size:.6rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-t)}
.ts-palette-note{padding:.6rem .7rem;font-size:.8rem;color:var(--text-t)}
.ts-palette-foot{display:flex;gap:1.1rem;padding:.55rem 1rem;border-top:1px solid var(--border);font-size:.72rem;color:var(--text-t)}
.ts-palette-foot span{display:inline-flex;align-items:center;gap:.25rem}
.ts-shortcuts{display:grid;grid-template-columns:auto 1fr;gap:.6rem 1.2rem;margin:.75rem 0 1.5rem;font-size:.86rem}
.ts-shortcuts dt{display:flex;gap:.25rem;align-items:center}
.ts-shortcuts dd{margin:0;color:var(--text-2)}

/* ── Admin, DB tools & integrations ───────────────────────────────── */
.ts-mono{font-family:var(--mono);font-size:.92em}
.ts-small{font-size:.8rem}
.ts .ts-muted{color:var(--text-s)}
.ts-null{color:var(--text-q);font-family:var(--mono);font-size:.85em}
.ts-c-red{color:var(--red)}.ts-c-orange{color:var(--orange)}.ts-c-green{color:var(--green)}
.ts-plain{list-style:none;margin:0;padding:0;display:grid;gap:.45rem;font-size:.85rem;color:var(--text-2)}
.ts-plain li{display:flex;gap:.5rem;align-items:baseline;flex-wrap:wrap}
.ts-subhead{font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-t);margin:1.25rem 0 .6rem}
.ts-tablewrap{background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:auto;scrollbar-width:thin;margin-bottom:1rem}
.ts-tablewrap--tall{max-height:70vh}
.ts .ts-dtable th{position:sticky;top:0;z-index:1;white-space:nowrap}
.ts .ts-dtable td{padding:.55rem 1rem;vertical-align:top}
.ts .ts-dtable--data td{font-family:var(--mono);font-size:.76rem;white-space:nowrap;max-width:26rem;overflow:hidden;text-overflow:ellipsis}
.ts .ts-dtable th a{color:inherit;display:inline-flex;align-items:center;gap:.35rem}
.ts .ts-dtable th a:hover{color:var(--text)}
.ts .ts-dtable th[aria-sort]{color:var(--accent-l)}
.ts .ts-dtable td a{color:var(--accent-l)}
.ts-key{color:var(--yellow);font-size:.6rem}
.ts .ts-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.ts [hidden]{display:none!important}
.ts .ts-actions{text-align:right;white-space:nowrap}
.ts-actions .ts-icon-btn{width:30px;height:30px;font-size:.75rem}
.ts-actions form{display:inline}
.ts-bar{display:block;height:6px;border-radius:99px;background:var(--bg-el);overflow:hidden}
.ts-bar > span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--accent-l))}
.ts-callout{display:flex;gap:.8rem;align-items:flex-start;padding:.9rem 1.1rem;border-radius:12px;border:1px solid var(--border-h);background:var(--bg2);margin-bottom:1rem;font-size:.87rem;color:var(--text-2)}
.ts-callout > i{margin-top:.18rem;color:var(--text-s)}
.ts-callout strong{color:var(--text);font-weight:600}
.ts-callout p{margin:.3rem 0 0;overflow-wrap:anywhere}
.ts-callout > div{min-width:0;flex:1}
.ts-callout--ok{background:rgba(61,214,140,.06);border-color:rgba(61,214,140,.25)}.ts-callout--ok > i{color:var(--green)}
.ts-callout--warn{background:rgba(245,158,66,.06);border-color:rgba(245,158,66,.28)}.ts-callout--warn > i{color:var(--orange)}
.ts-callout--danger{background:rgba(248,113,113,.06);border-color:rgba(248,113,113,.28)}.ts-callout--danger > i{color:var(--red)}
.ts-callout--info{background:rgba(56,189,248,.06);border-color:rgba(56,189,248,.25)}.ts-callout--info > i{color:var(--blue)}
.ts-panel + .ts-callout,.ts-callout + .ts-panel,.ts-callout + .ts-tablewrap{margin-top:1rem}
.ts-inline-list{margin:.35rem 0 .75rem;padding-left:1.1rem;list-style:disc}
.ts-status{display:inline-flex;align-items:center;gap:.45rem;font-size:.76rem;color:var(--text-s);white-space:nowrap}
.ts-status::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--text-t);flex-shrink:0}
.ts-status--ok::before{background:var(--green);box-shadow:0 0 0 3px rgba(61,214,140,.15)}
.ts-status--warn::before{background:var(--orange);box-shadow:0 0 0 3px rgba(245,158,66,.15)}
.ts-status--bad::before{background:var(--red);box-shadow:0 0 0 3px rgba(248,113,113,.15)}
.ts-status--off::before{background:var(--text-q)}
.ts-toolbar{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;margin-bottom:1rem}
.ts .ts-toolbar select{width:auto;min-width:9rem}
.ts .ts-toolbar .ts-toolbar-main{min-width:14rem}
.ts-toolbar .ts-search{flex:1 1 220px;min-width:0}
.ts-cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:1.25rem;align-items:start}
.ts-cols-main{min-width:0}
.ts-cols-side{display:grid;gap:1rem;position:sticky;top:1.25rem;min-width:0}
.ts-cols-side > *{min-width:0}
.ts-cols-side .ts-panel + .ts-panel,.ts-grid2 .ts-panel + .ts-panel{margin-top:0}
.ts-grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-bottom:1rem}
.ts-details{margin-top:1rem}
.ts-details > summary{list-style:none;cursor:pointer}
.ts-details > summary::-webkit-details-marker{display:none}
.ts-details > summary h3::before{content:'\25B8';display:inline-block;margin-right:.1rem;color:var(--text-t);transition:transform .15s}
.ts-details[open] > summary h3::before{transform:rotate(90deg)}
.ts-details:not([open]) > summary{border-bottom-color:transparent}
.ts-inline-form{display:flex;align-items:center;gap:.5rem;margin:0}
.ts-inline-form--wrap{flex-wrap:wrap}
.ts .ts-inline-form select,.ts .ts-inline-form input[type=text]{width:auto;min-width:0;flex:1 1 12rem}
.ts .ts-select-sm{padding:.3rem 2rem .3rem .6rem;font-size:.8rem;width:auto;flex:0 0 auto!important}
.ts input.ts-input-year{width:7rem;flex:0 0 7rem!important}
.ts-rowlist{list-style:none;margin:0;padding:0}
.ts-rowlist > li{display:flex;align-items:center;justify-content:space-between;gap:.5rem 1rem;flex-wrap:wrap;padding:.7rem 0;border-top:1px solid var(--border);font-size:.86rem;color:var(--text-2)}
.ts-rowlist > li:first-child{border-top:none;padding-top:0}
.ts-rowlist > li:last-child{padding-bottom:0}
.ts-rowlist > li > span:first-child{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.ts-rowlist-end{display:flex;align-items:center;gap:.6rem;margin-left:auto}
.ts-checklist{list-style:none;margin:0 0 1rem;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.4rem .75rem;font-size:.8rem}
.ts-checklist li{display:flex;gap:.5rem;align-items:baseline;color:var(--text-s)}
.ts-checklist .is-ok i{color:var(--green)}
.ts-checklist .is-missing{color:var(--text)}
.ts-checklist .is-missing i{color:var(--orange)}
.ts-danger-zone{border-color:rgba(248,113,113,.35)}
.ts .ts-danger-zone .ts-panel-head h2{color:var(--red)}
.ts-auditlist{list-style:none;margin:0;padding:0}
.ts-auditlist > li{padding:.85rem 1.25rem;border-top:1px solid var(--border)}
.ts-auditlist > li:first-child{border-top:none}
.ts-auditlist-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;font-size:.84rem}
.ts-auditlist-head .ts-ttime{margin-left:auto}
.ts-auditlist-sql{margin:.5rem 0 0;padding:.6rem .75rem;background:var(--bg-el);border:1px solid var(--border);border-radius:8px;font-family:var(--mono);font-size:.74rem;color:var(--text-2);white-space:pre-wrap;overflow-wrap:anywhere;max-height:10rem;overflow:auto}
.ts .ts-code{width:100%;font-family:var(--mono);font-size:.82rem;line-height:1.55;min-height:9rem;resize:vertical;background:var(--bg-el);tab-size:2}
.ts-sql-bar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap;margin-top:.75rem}
.ts-sql-bar .ts-head-actions{width:auto}
.ts-check--danger input:checked + span{color:var(--orange)}
.ts-snippets{display:flex;flex-direction:column;gap:.35rem}
.ts-snippet{display:block;width:100%;text-align:left;padding:.45rem .65rem;border-radius:8px;border:1px solid var(--border);background:var(--bg2);color:var(--text-2);font-size:.82rem;cursor:pointer;transition:border-color .15s,color .15s}
.ts-snippet:hover,.ts-snippet:focus-visible{border-color:var(--accent);color:var(--text)}
.ts-snippet--code{font-family:var(--mono);font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-search--sm{flex:0 1 240px;min-width:0}
.ts .ts-hint{font-size:.76rem;color:var(--text-t);margin:.5rem 0 0}
.ts-panel-body > .ts-sub{margin:0 0 1rem;font-size:.85rem;max-width:62rem}
.ts-more-checks{margin-top:.85rem;font-size:.84rem;color:var(--text-s)}
.ts-more-checks summary{cursor:pointer;display:inline-flex;gap:.45rem;align-items:center}
.ts-more-checks .ts-plain{margin-top:.6rem;padding-left:1.4rem;font-size:.8rem}
.ts .ts-dtable:not(.ts-dtable--data) td{vertical-align:middle}
.ts-section-head--tight{margin:0 0 .85rem}
.ts .ts-panel-head .ts-link-btn,.ts .ts-section-head .ts-link-btn{margin-top:0;font-size:.82rem}
.ts .ts-link-btn:hover{color:var(--text)}
.ts .ts-icon-btn--danger:hover{color:var(--red);border-color:rgba(248,113,113,.5);background:rgba(248,113,113,.08)}
.ts-chips--tight{margin-top:.4rem;gap:.3rem}
.ts-person{display:flex;align-items:center;gap:.7rem;min-width:0}
.ts-person > span{display:flex;flex-direction:column;min-width:0}
.ts-person-line{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.ts-person strong{color:var(--text);font-weight:600}
.ts-person small{color:var(--text-t);font-size:.76rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:22rem}
.ts-roleform{flex-wrap:nowrap}
.ts-js .ts-roleform [data-ts-dirty-show]:not(.is-shown){visibility:hidden}
.ts-qlist{list-style:none;margin:0;padding:0}
.ts-qlist > li{display:flex;align-items:center;justify-content:space-between;gap:.75rem 1rem;flex-wrap:wrap;padding:.85rem 1.25rem;border-top:1px solid var(--border)}
.ts-qlist > li:first-child{border-top:none}
.ts-qlist-main{display:flex;flex-direction:column;gap:.3rem;min-width:0;flex:1 1 16rem;color:inherit}
.ts-qlist-main:hover .ts-qlist-title{color:var(--accent-l)}
.ts-qlist-title{color:var(--text);font-size:.9rem;font-weight:500;overflow-wrap:anywhere}
.ts-qlist-meta{display:flex;align-items:center;gap:.4rem;font-size:.76rem;color:var(--text-t)}
.ts-qlist-meta .ts-av{width:20px;height:20px;font-size:.6rem}
.ts-qlist-meta strong{color:var(--text-2);font-weight:500}
.ts-qlist-desc{font-size:.8rem;color:var(--text-s)}
.ts-qlist-actions{display:flex;gap:.4rem;flex-shrink:0}
.ts-qlist-actions form{margin:0}
.ts-queues{align-items:start}
.ts-queues .ts-more{margin:0 1.25rem 1rem}
.ts-teamgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;align-items:start}
.ts-teamgrid .ts-panel + .ts-panel{margin-top:0}
.ts-teamcard-desc{color:var(--text-2);font-size:.88rem;margin:0 0 .3rem}
.ts-members{list-style:none;margin:.9rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}
.ts-member{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .3rem .2rem .25rem;border:1px solid var(--border-h);border-radius:999px;background:var(--surface);font-size:.8rem;color:var(--text-2)}
.ts-member .ts-av{width:22px;height:22px;font-size:.62rem}
.ts-member > span{padding-right:.2rem}
.ts-member form{margin:0;display:inline-flex}
.ts-member-x{width:20px;height:20px;border-radius:50%;border:none;background:transparent;color:var(--text-t);font-size:.65rem;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.ts-member-x:hover,.ts-member-x:focus-visible{background:rgba(248,113,113,.15);color:var(--red)}
.ts-teamcard-add{margin-top:1rem}
.ts-details--first{margin:0 0 1rem}
.ts-setup{list-style:none;margin:0;padding:.4rem 1.25rem}
.ts-setup li{display:flex;justify-content:space-between;align-items:center;gap:.75rem;padding:.55rem 0;border-top:1px solid var(--border-s);font-size:.84rem}
.ts-setup li:first-child{border-top:none}
.ts-setup .ts-status{font-size:.84rem;color:var(--text-2)}
.ts-setup a,.ts-setup li > span:last-child{color:var(--text-s);font-size:.8rem;text-align:right}
.ts-setup a:hover{color:var(--accent-l)}
.ts .ts-perm th[scope=row]{background:transparent;font-family:var(--sans);text-transform:none;letter-spacing:0;font-size:.84rem;color:var(--text-2);font-weight:500;position:static;white-space:normal}
.ts .ts-perm th[scope=row] code{display:block;font-family:var(--mono);font-size:.68rem;color:var(--text-t);font-weight:400}
.ts .ts-perm thead th{z-index:2}
.ts .ts-perm-role{text-align:center}
.ts .ts-perm-role span{display:block;font-size:.6rem;color:var(--text-t);letter-spacing:.06em;margin-top:.15rem}
.ts .ts-hint--top{margin:-.25rem 0 1rem}
.ts .ts-hint a{color:var(--accent-l)}
.ts-kpis + .ts-cols,.ts-kpis + .ts-callout,.ts-kpis + .ts-tablewrap,.ts-kpis + .ts-empty{margin-top:1rem}
.ts .ts-perm-cell{text-align:center;width:5.5rem}
.ts .ts-perm-group th{position:static;background:var(--bg2);color:var(--accent-l);border-top:1px solid var(--border)}
.ts .ts-perm tbody tr:hover td,.ts .ts-perm tbody tr:hover th[scope=row]{background:rgba(124,92,252,.04)}
.ts .ts-perm tr[hidden]{display:none}
.ts-savebar{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;justify-content:flex-end;gap:1rem;margin-top:1rem;padding:.75rem 1rem;background:rgba(10,10,16,.88);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border);border-radius:12px}
.ts-savebar-note{font-size:.8rem;color:var(--text-t)}
.is-dirty .ts-savebar{border-color:rgba(124,92,252,.5);box-shadow:0 -10px 40px -20px rgba(124,92,252,.5)}
.is-dirty .ts-savebar-note{color:var(--accent-l)}
.ts-settings-list{display:flex;flex-direction:column;gap:0;padding-top:.4rem;padding-bottom:.4rem}
.ts-switchrow{display:flex;align-items:center;justify-content:space-between;gap:1.25rem;padding:.85rem 0;border-top:1px solid var(--border-s);cursor:pointer}
.ts-switchrow:first-child{border-top:none}
.ts-switchrow > span,.ts-switchrow > label{display:flex;flex-direction:column;gap:.15rem;min-width:0;cursor:inherit}
.ts-switchrow strong{font-weight:500;color:var(--text);font-size:.9rem}
.ts-switchrow small{color:var(--text-t);font-size:.78rem}
.ts input[type=checkbox].ts-switch{-webkit-appearance:none;appearance:none;flex-shrink:0;width:42px;height:24px;border-radius:999px;background:var(--surface-l);border:1px solid var(--border-h);position:relative;cursor:pointer;transition:background .2s,border-color .2s}
.ts input[type=checkbox].ts-switch::after{content:'';position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--text-s);transition:transform .2s var(--ease),background .2s}
.ts input[type=checkbox].ts-switch:checked{background:var(--accent);border-color:var(--accent)}
.ts input[type=checkbox].ts-switch:checked::after{transform:translateX(18px);background:#fff}
.ts input[type=checkbox].ts-switch:focus-visible{outline:2px solid var(--accent-l);outline-offset:2px}
.ts-settings .ts-fieldset{padding:.85rem 0 .5rem;box-shadow:inset 0 1px 0 var(--border-s)}
.ts .ts-settings .ts-legend{float:left;width:100%;padding:0;border:0;margin-bottom:.6rem;font-family:var(--sans);font-size:.9rem;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text)}
.ts-settings .ts-legend + *{clear:both}
.ts-checkchips{display:flex;flex-wrap:wrap;gap:.45rem}
.ts-checkchip{display:inline-flex;align-items:center;gap:.45rem;padding:.35rem .75rem .35rem .55rem;border:1px solid var(--border-h);border-radius:999px;font-size:.82rem;color:var(--text-2);cursor:pointer}
.ts-checkchip:has(input:checked){border-color:rgba(124,92,252,.55);background:var(--accent-bg);color:var(--text)}
.ts input.ts-input-num{width:6.5rem;flex-shrink:0}
.ts-cols--editor{grid-template-columns:minmax(0,1fr) 360px}
.ts-editor.is-editing{border-color:rgba(124,92,252,.55);box-shadow:0 0 0 3px rgba(124,92,252,.12)}
.ts-cardlist{list-style:none;margin:0;padding:0;display:grid;gap:.75rem}
.ts-cardlist > li{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem 1.15rem}
.ts-cardlist > li[hidden]{display:none}
.ts-cardlist .ts-panel + .ts-panel{margin-top:0}
.ts-cardlist-body{min-width:0}
.ts .ts-cardlist h3{font-size:.95rem;font-weight:600;margin:0 0 .25rem;color:var(--text)}
.ts-cardlist p{margin:0 0 .2rem;overflow-wrap:anywhere}
.ts-h-ic{font-size:.8em;color:var(--accent-l);margin-right:.15rem}
.ts-hook-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.ts .ts-hook-head h3{margin:0}
.ts-hook.is-paused .ts-cardlist-body > :not(.ts-hook-head){opacity:.6}
.ts-hook-url{color:var(--text-t);margin:.35rem 0 0;overflow-wrap:anywhere}
.ts-hook-health{margin:.6rem 0 0;line-height:1.6}
.ts-hook-actions{display:flex;align-items:center;gap:.35rem;flex-shrink:0}
.ts-hook-actions form{margin:0}
.ts-chip--warn{color:var(--orange);border-color:rgba(245,158,66,.4)}
.ts-events .ts-legend{display:flex;justify-content:space-between;align-items:center;width:100%;font-family:var(--sans);font-size:.82rem;font-weight:500;letter-spacing:0;text-transform:none;color:var(--text-2);border:0;padding:0;margin-bottom:.2rem}
.ts-events-quick{font-size:.76rem;color:var(--text-t)}
.ts .ts-checkchips .ts-link-btn,.ts .ts-events-quick .ts-link-btn{margin-top:0}
.ts-events .ts-subhead{margin:.8rem 0 .45rem}
.ts-events .ts-checkchip{font-size:.76rem;padding:.25rem .6rem .25rem .45rem}
.ts-field--gap{margin-top:1.15rem}
.ts-switchrow--compact{padding:.4rem 0 1rem;border-top:none}
.ts-narrow{max-width:720px}
.ts-form-foot{display:flex;justify-content:flex-end;margin-top:1.25rem}
.ts input.is-invalid{border-color:var(--red)}
.ts-chat{display:flex;flex-direction:column;height:min(72vh,760px);min-height:420px}
.ts-chat-log{flex:1;overflow-y:auto;padding:1.25rem;display:flex;flex-direction:column;gap:1rem;scrollbar-width:thin}
.ts-chat-empty{margin:auto;text-align:center;max-width:560px}
.ts-chat-empty-title{color:var(--text-s);font-size:.92rem;margin:0 0 1rem}
.ts-chat-suggest{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}
.ts-chat-suggest button{text-align:left;padding:.7rem .85rem;border-radius:10px;border:1px solid var(--border);background:var(--bg2);color:var(--text-2);font-size:.83rem;cursor:pointer;transition:border-color .15s,color .15s}
.ts-chat-suggest button:hover,.ts-chat-suggest button:focus-visible{border-color:var(--accent);color:var(--text)}
.ts-msgline{display:flex;flex-direction:column;max-width:min(78%,760px)}
.ts-msgline--user{align-self:flex-end;align-items:flex-end}
.ts-msgline--model{align-self:flex-start}
.ts-bubble{padding:.7rem .95rem;border-radius:14px;font-size:.88rem;line-height:1.55;overflow-wrap:anywhere;min-width:0;max-width:100%}
.ts-msgline--user .ts-bubble{background:linear-gradient(135deg,var(--accent),var(--accent-d));color:#fff;border-bottom-right-radius:4px;white-space:pre-wrap}
.ts-msgline--model .ts-bubble{background:var(--surface);color:var(--text);border-bottom-left-radius:4px}
.ts-msgline.is-error .ts-bubble{background:rgba(248,113,113,.08);border:1px solid rgba(248,113,113,.3);color:#fca5a5}
.ts-msgline-actions{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem}
.ts-msgline-actions .ts-btn--sm{padding:.25rem .55rem;font-size:.72rem}
.ts-dots{display:inline-flex;gap:4px;padding:.2rem 0}
.ts-dots i{width:6px;height:6px;border-radius:50%;background:var(--text-s);animation:tsDot 1.2s infinite ease-in-out}
.ts-dots i:nth-child(2){animation-delay:.15s}.ts-dots i:nth-child(3){animation-delay:.3s}
@keyframes tsDot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}
.ts-chat-composer{display:flex;gap:.6rem;align-items:flex-end;padding:.85rem 1rem;border-top:1px solid var(--border)}
.ts .ts-chat-composer textarea{resize:none;min-height:42px;max-height:220px;line-height:1.45}
.ts-chat-composer .ts-btn{height:42px;width:46px;padding:0;justify-content:center;flex-shrink:0}
.ts-chat-foot{margin:0;padding:0 1rem .75rem;font-size:.72rem;color:var(--text-t)}
.ts-md p{margin:0 0 .6rem}
.ts-md > :last-child{margin-bottom:0}
.ts-md ul,.ts-md ol{margin:0 0 .6rem;padding-left:1.25rem}
.ts-md ul{list-style:disc}.ts-md ol{list-style:decimal}
.ts-md li{margin:.15rem 0}
.ts-md code{font-family:var(--mono);font-size:.85em;background:rgba(255,255,255,.06);border:1px solid var(--border);border-radius:5px;padding:.05rem .3rem}
.ts-md strong{color:var(--text);font-weight:600}
.ts-md-h{font-weight:600;color:var(--text)}
.ts-md-code{position:relative;margin:.2rem 0 .7rem;padding:.75rem .9rem;background:var(--bg);border:1px solid var(--border);border-radius:9px;overflow-x:auto;font-size:.78rem;line-height:1.5}
.ts-md-code code{background:none;border:none;padding:0;font-size:inherit;white-space:pre}
.ts-md-code[data-lang]::before{content:attr(data-lang);position:absolute;top:.3rem;right:.55rem;font-family:var(--mono);font-size:.58rem;letter-spacing:.1em;text-transform:uppercase;color:var(--text-t)}
.ts-prompt-text{font-size:.8rem;color:var(--text-s);font-family:var(--mono);margin-top:.35rem!important;white-space:pre-wrap}
.ts-output{margin-top:1rem}
.ts-sqlc{display:grid;gap:1rem}
.ts-sqlc > *{min-width:0}
.ts-sqlc .ts-inline-form{flex-wrap:wrap}
.ts-sqlc .ts-panel + .ts-panel{margin-top:0}
.ts-sqlc .ts-inline-form input[type=text]{flex:1 1 16rem}
.ts-push-right{margin-left:auto}
.ts-loglist{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.ts-loglist > li + li{border-top:1px solid var(--border)}
.ts-loglist summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.65rem;padding:.75rem 1.1rem;font-size:.84rem}
.ts-loglist summary::-webkit-details-marker{display:none}
.ts-loglist summary:hover{background:var(--card-h)}
.ts-loglist-text{flex:1;min-width:0;color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-loglist-meta{flex-shrink:0;font-size:.74rem;color:var(--text-t)}
.ts-loglist-body{padding:0 1.1rem 1rem}
.ts-loglist-body pre{margin:0;padding:.65rem .8rem;background:var(--bg-el);border:1px solid var(--border);border-radius:8px;font-family:var(--mono);font-size:.75rem;color:var(--text-2);white-space:pre-wrap;overflow-wrap:anywhere;max-height:18rem;overflow:auto}
.ts-tablechips{margin-top:.6rem}
.ts-tablechips .ts-checkchip{font-size:.74rem}
.ts-mb{margin-bottom:1rem}
.ts-picker{position:relative}
.ts-picker-picked{margin:.35rem 0 0;color:var(--text-s);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-picker-list{position:absolute;left:0;right:0;top:calc(100% - 1rem);z-index:30;list-style:none;margin:0;padding:.3rem;max-height:280px;overflow-y:auto;background:var(--card);border:1px solid var(--border-h);border-radius:10px;box-shadow:0 20px 50px -15px rgba(0,0,0,.75)}
.ts-picker-opt{padding:.45rem .55rem;border-radius:7px;font-size:.82rem;color:var(--text-2);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-picker-opt[aria-selected=true],.ts-picker-opt:hover{background:var(--surface);color:var(--text)}
.ts-picker-none{padding:.5rem .6rem;font-size:.8rem;color:var(--text-t)}
.ts-linklist{list-style:none;margin:0;padding:0;background:var(--card);border:1px solid var(--border);border-radius:14px;overflow:hidden}
.ts-linklist > li{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto;align-items:center;gap:.35rem .85rem;padding:.8rem 1.1rem;border-top:1px solid var(--border)}
.ts-linklist > li:first-child{border-top:none}
.ts-linklist > li[hidden]{display:none}
.ts-linklist form{margin:0;grid-column:4;grid-row:1/3}
.ts-linkend{min-width:0;display:flex;gap:.4rem;align-items:baseline;color:var(--text-2);font-size:.86rem}
.ts-linkend:hover .ts-linkend-title{color:var(--accent-l)}
.ts-linkend-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ts-linkrel{display:inline-flex;align-items:center;gap:.35rem;padding:.18rem .55rem;border-radius:999px;font-size:.72rem;font-weight:500;white-space:nowrap;color:var(--text-2);background:var(--surface);border:1px solid var(--border-h)}
.ts-linkrel i{font-size:.6rem;color:var(--text-t)}
.ts-linkrel--blocks,.ts-linkrel--blockedby{color:#fca5a5;border-color:rgba(248,113,113,.35)}
.ts-linkrel--dependson,.ts-linkrel--requiredby{color:#fdba74;border-color:rgba(245,158,66,.35)}
.ts-linkrel--duplicate,.ts-linkrel--duplicatedby{color:var(--text-s)}
.ts-linkrel--parentchild,.ts-linkrel--childof{color:#c4b5fd;border-color:rgba(124,92,252,.4)}
.ts-linkmeta{grid-column:1/4;grid-row:2}
.ts-suggest-pair{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;font-size:.88rem}
.ts-suggest-pair a{color:var(--text)}
.ts-suggest-pair a:hover{color:var(--accent-l)}
.ts-suggest-why{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:.55rem}
.ts-bar--score{width:90px;flex-shrink:0}
.ts-suggest .ts-chips{margin-top:0}
.ts-suggest-form{flex-shrink:0;align-self:center}
.ts-errorpage .ts-auth{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1.5rem}
.ts-errorpage .ts-auth-card{max-width:460px}
.ts-errorpage code{font-family:var(--mono);color:var(--accent-l)}

/* ── Agents ───────────────────────────────────────────────────────── */
.ts-agent-accent{--ac:var(--violet)}
.ts-agentcard--violet,.ts-agentcard-ic--violet{--ac:#b4a2ff}
.ts-agentcard--blue,.ts-agentcard-ic--blue{--ac:#38bdf8}
.ts-agentcard--green,.ts-agentcard-ic--green{--ac:#3dd68c}
.ts-agentcard--orange,.ts-agentcard-ic--orange{--ac:#f59e42}
.ts-agentcard--rose,.ts-agentcard-ic--rose{--ac:#f472b6}
.ts-agentcard--cyan,.ts-agentcard-ic--cyan{--ac:#22d3ee}
.ts-agentcards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}
.ts-agentcard{position:relative;display:flex;flex-direction:column;padding:1.05rem 1.15rem 1rem;overflow:hidden;transition:border-color .15s,transform .15s}
.ts-agentcard:hover{border-color:color-mix(in srgb,var(--ac) 55%,var(--border));transform:translateY(-1px)}
.ts-agentcard-top{display:flex;align-items:center;gap:.75rem;min-width:0}
.ts-agentcard-ic{flex-shrink:0;width:36px;height:36px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:var(--ac,#b4a2ff);background:color-mix(in srgb,var(--ac,#b4a2ff) 14%,transparent);border:1px solid color-mix(in srgb,var(--ac,#b4a2ff) 30%,transparent)}
.ts-agentcard-h{flex:1;min-width:0;display:flex;flex-direction:column;gap:.15rem}
.ts-agentcard-name{display:flex;align-items:center;justify-content:space-between;gap:.6rem;min-width:0}
.ts-agentcard-name strong{min-width:0;color:var(--text);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-agentcard-name .ts-status{flex-shrink:0;font-size:.72rem}
.ts-agentcard-model{font-family:var(--mono);font-size:.7rem;color:var(--text-t);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-agentcard-desc{margin:.7rem 0 0;line-height:1.5}
.ts-agentcard-foot{display:flex;justify-content:space-between;gap:1rem;margin-top:auto;padding-top:.7rem;border-top:1px solid var(--border);font-size:.74rem;color:var(--text-t)}
.ts-agentcard-desc + .ts-agentcard-foot,.ts-agentcard-top + .ts-agentcard-foot{margin-top:.85rem}
.ts-agentcard-foot > span:last-child{text-align:right}
.ts-agentcard-budget{position:absolute;left:0;bottom:0;height:2px;width:var(--p);background:var(--ac);opacity:.7}
.ts-agentcard-budget.is-warn{background:var(--orange)}
.ts-agentcard-budget.is-full{background:var(--red);opacity:1}
.ts-c-orange{color:var(--orange)}
.ts-runlist > li.is-current > a{background:var(--surface)}
.ts-steps--live{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}
.ts-step--system .ts-step-body{background:transparent;border-style:dashed;color:var(--text-s);font-size:.78rem}
.ts-step--pending .ts-step-body{color:var(--text-t);border-style:dashed}
.ts-step--pending .ts-step-body::after{content:'';display:inline-block;width:.9em;height:.9em;margin-left:.45rem;vertical-align:-.12em;border:2px solid var(--border-h);border-top-color:var(--accent-l);border-radius:50%;animation:tsSpin .8s linear infinite}
@keyframes tsSpin{to{transform:rotate(360deg)}}
.ts-run-form .ts-form-foot{justify-content:space-between;align-items:center;gap:1rem}
.ts-run-form .ts-form-foot .ts-hint{margin:0}
.ts-pools{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.9rem;margin:1rem 0}
.ts-pool{min-width:0;margin:0;padding:.8rem .9rem;border:1px solid var(--border);border-radius:10px;background:var(--bg-el)}
.ts-pool legend{padding:0 .35rem;font-size:.8rem;font-weight:600;color:var(--text-2)}
.ts-pool textarea{font-size:.74rem;margin-top:.5rem}
.ts-poolkeys{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}
.ts-poolkeys li{display:flex;align-items:center;justify-content:space-between;gap:.5rem;font-size:.76rem}
.ts-poolkeys code{font-size:.72rem;color:var(--text-2)}
.ts-poolkeys-rm{display:inline-flex;align-items:center;gap:.3rem;color:var(--text-t);font-size:.72rem;cursor:pointer}
.ts-panel--flush > .ts-tablewrap{margin:0}
.ts-dtable .ts-agentdot{vertical-align:.05em;margin-right:.3rem}
.ts-head--sub{align-items:center}
.ts-agenttitle{display:flex;align-items:center;gap:.9rem;min-width:0}
.ts-agenttitle .ts-agentcard-ic{width:42px;height:42px;font-size:1.1rem}
.ts .ts-agenttitle h2{font-size:1.3rem;font-weight:600;display:flex;align-items:center;gap:.6rem;margin:0}
.ts-subscopes{display:flex;gap:.3rem;flex-wrap:wrap;margin:0 0 1.25rem;border-bottom:1px solid var(--border)}
.ts-subscope{padding:.5rem .85rem;font-size:.84rem;color:var(--text-s);border-bottom:2px solid transparent;margin-bottom:-1px;transition:color .15s,border-color .15s}
.ts-subscope:hover{color:var(--text)}
.ts-subscope.is-active{color:var(--text);border-bottom-color:var(--accent)}
.ts-narrow-wide{max-width:780px}
.ts-swatches{display:flex;gap:.5rem}
.ts-swatch{cursor:pointer}
.ts-swatch input{position:absolute;opacity:0;width:0;height:0}
.ts-swatch span{display:block;width:26px;height:26px;border-radius:50%;border:2px solid var(--border-h);background:var(--sw);transition:transform .12s}
.ts-swatch--violet{--sw:#b4a2ff}.ts-swatch--blue{--sw:#38bdf8}.ts-swatch--green{--sw:#3dd68c}.ts-swatch--orange{--sw:#f59e42}.ts-swatch--rose{--sw:#f472b6}.ts-swatch--cyan{--sw:#22d3ee}
.ts-swatch input:checked + span{border-color:#fff;transform:scale(1.12)}
.ts-swatch input:focus-visible + span{outline:2px solid var(--accent-l);outline-offset:2px}
.ts-budget{margin-bottom:.5rem}
.ts-budget-bar{height:8px;border-radius:99px;background:var(--bg-el);overflow:hidden}
.ts-budget-bar > span{display:block;height:100%;border-radius:inherit;background:var(--green)}
.ts-budget-bar.is-warn > span{background:var(--orange)}
.ts-budget-bar.is-full > span{background:var(--red)}
.ts-runlist{list-style:none;margin:0;padding:0}
.ts-runlist > li + li{border-top:1px solid var(--border)}
.ts-runlist a{display:flex;align-items:center;gap:.7rem;padding:.7rem 1.25rem}
.ts-runlist a:hover{background:var(--card-h)}
.ts-runlist-main{min-width:0;display:flex;flex-direction:column;gap:.1rem}
.ts-runlist-input{color:var(--text-2);font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-runlist-meta{font-size:.72rem;color:var(--text-t);font-family:var(--mono)}
.ts-run-input{font-size:.88rem;color:var(--text-2);margin:0 0 1rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}
.ts-steps{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.ts-step{display:grid;grid-template-columns:90px minmax(0,1fr);gap:.75rem;align-items:start}
.ts-step-role{font-family:var(--mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-t);padding-top:.3rem;overflow-wrap:anywhere}
.ts-step--tool .ts-step-role{color:var(--accent-l)}
.ts-step-body{background:var(--bg-el);border:1px solid var(--border);border-radius:9px;padding:.55rem .75rem;font-size:.82rem;color:var(--text-2);overflow-wrap:anywhere;white-space:pre-wrap}
.ts-step.is-error .ts-step-body{border-color:rgba(248,113,113,.4);color:#fca5a5}
.ts-step--model .ts-step-body{color:var(--text)}
.ts-diff{margin:.5rem 0 0;padding:.75rem;background:var(--bg);border:1px solid var(--border);border-radius:9px;font-family:var(--mono);font-size:.74rem;line-height:1.5;overflow-x:auto;max-height:28rem;overflow-y:auto}
.ts-diff span{display:block;white-space:pre}
.ts-diff-add{color:#86efac;background:rgba(61,214,140,.08)}
.ts-diff-del{color:#fca5a5;background:rgba(248,113,113,.08)}
.ts-diff-hunk{color:var(--accent-l)}
.ts-patch-actions{justify-content:flex-start;gap:.5rem}
.ts-spark{display:flex;align-items:flex-end;gap:3px;height:120px;padding-top:.5rem}
.ts-spark-bar{flex:1;min-width:2px;border-radius:3px 3px 0 0;background:linear-gradient(var(--accent-l),var(--accent))}
.ts-copyrow{display:flex;gap:.5rem}
.ts-copyrow input{flex:1;min-width:0}
.ts-copyrow .ts-btn{flex-shrink:0}
.ts-codeblock{margin:.75rem 0;padding:.7rem .85rem;background:var(--bg);border:1px solid var(--border);border-radius:9px;font-family:var(--mono);font-size:.76rem;color:var(--text-2);overflow-x:auto;white-space:pre}
.ts-agentform .ts-swatches{margin-top:.3rem}

/* ── Responsive ───────────────────────────────────────────────────── */
@media (max-width:1100px){
  .ts-cols,.ts-cols--editor{grid-template-columns:minmax(0,1fr)}
  .ts-cols-side{position:static}
  .ts-cols--editor .ts-cols-side{order:-1}
  .ts-detail{grid-template-columns:minmax(0,1fr)}
  .ts-detail-side{position:static}
  .ts-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:768px){
  body.ts{flex-direction:column}
  .ts .sidebar{position:fixed;top:0;bottom:0;left:0;height:100%;width:min(300px,86vw);transform:translateX(-100%);box-shadow:none}
  .ts .sidebar.active{transform:translateX(0);box-shadow:30px 0 80px rgba(0,0,0,.6)}
  .ts .sidebar .ts-sb-close{display:inline-flex}
  .ts .top-bar{display:flex;position:sticky;top:0;z-index:50;align-items:center;justify-content:space-between;gap:.75rem;padding:.7rem 1rem;background:rgba(6,6,10,.8);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}
  .ts .main-content-area{margin-top:0;padding:1.5rem 1rem 3rem}
  .ts .main-content-area::before{left:0}
  .ts .card{padding:1.15rem}
  .ts-kpis{gap:.65rem}
  .ts-kpi{padding:.9rem 1rem}
  .ts-kpi-value{font-size:2rem}
  .ts-grid{grid-template-columns:minmax(0,1fr)}
  .ts-row2{grid-template-columns:minmax(0,1fr)}
  .ts-trow{grid-template-columns:minmax(0,1fr) auto}
  .ts-trow .ts-ttime{display:none}
  .ts-search,.ts-search--head{min-width:0;width:100%}
  .ts-head-actions{width:100%}
  .ts-filters,.ts-js .ts-filters{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ts .ts-hide-sm{display:none}
  .ts-chat-suggest{grid-template-columns:minmax(0,1fr)}
  .ts-msgline{max-width:92%}
  .ts-chat{height:calc(100vh - 220px)}
  .ts-loglist-meta{display:none}
  .ts-linklist > li{grid-template-columns:minmax(0,1fr) auto;gap:.4rem .75rem}
  .ts-linklist .ts-linkend,.ts-linklist .ts-linkrel,.ts-linklist .ts-linkmeta{grid-column:1;grid-row:auto}
  .ts-linklist .ts-linkrel{justify-self:start}
  .ts-linklist form{grid-column:2;grid-row:1}
  .ts-cardlist > li.ts-suggest{flex-direction:column}
  .ts-qlist > li{padding:.85rem 1rem}
  .ts-switchrow{align-items:flex-start}
  .ts-savebar{justify-content:space-between}
  .ts-grid2{grid-template-columns:minmax(0,1fr)}
  .ts .ts-toolbar select,.ts .ts-toolbar .ts-toolbar-main{flex:1 1 40%;min-width:0}
  .ts-search--sm{flex:1 1 100%}
  .ts-inbox-item > a{grid-template-columns:auto minmax(0,1fr);padding-right:1rem}
  .ts-inbox-item .ts-ttime{grid-column:2}
  .ts-inbox-acts{opacity:1;pointer-events:auto;top:auto;bottom:.55rem;right:.75rem;transform:none;background:none;border:0;padding:0}
  .ts-inbox-keys{display:none}
  .ts-saveview-form{left:0;right:auto}
  .ts-head{align-items:flex-start}
  .ts input[type=text],.ts input[type=email],.ts input[type=password],.ts input[type=number],.ts input[type=search],.ts input[type=url],.ts select,.ts textarea{font-size:16px}
}
@media (max-width:420px){
  .ts-kpi-value{font-size:1.7rem}
  .ts-kpi-value.is-text{font-size:.95rem}
  .ts-auth-card{padding:1.5rem 1.15rem}
}
@media (prefers-reduced-motion:reduce){
  .ts *,.ts *::before,.ts *::after{transition:none!important;animation:none!important}
}

/* ── Agents · dispatcher heartbeat ────────────────────────────────── */
.ts-hb{--hb:var(--green);--hb-rgb:61,214,140}
.ts-hb--late{--hb:var(--orange);--hb-rgb:245,158,66}
.ts-hb--down,.ts-hb--never{--hb:var(--red);--hb-rgb:248,113,113}
.ts-hb .ts-panel-body{display:flex;flex-direction:column;gap:1.15rem}
.ts-hb-hero{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:1rem;align-items:center}
.ts-hb-pulse{position:relative;width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:rgba(var(--hb-rgb),.08);box-shadow:inset 0 0 0 1px rgba(var(--hb-rgb),.28)}
.ts-hb-pulse i{width:12px;height:12px;border-radius:50%;background:var(--hb);box-shadow:0 0 14px rgba(var(--hb-rgb),.7)}
.ts-hb--live .ts-hb-pulse::before,.ts-hb--live .ts-hb-pulse::after{content:'';position:absolute;inset:0;border-radius:50%;border:1px solid rgba(var(--hb-rgb),.55);animation:ts-hb-ring 2.4s var(--ease) infinite}
.ts-hb--live .ts-hb-pulse::after{animation-delay:1.2s}
@keyframes ts-hb-ring{0%{transform:scale(.45);opacity:1}100%{transform:scale(1.35);opacity:0}}
.ts-hb-lede{min-width:0}
.ts .ts-hb-title{margin:0;font-size:1.02rem;font-weight:600;color:var(--text);line-height:1.35}
.ts .ts-hb-sub{margin:.25rem 0 0;font-size:.85rem;color:var(--text-s);line-height:1.5}
.ts-hb-sub time{color:var(--text-2);font-variant-numeric:tabular-nums}
.ts-hb-testbtn{white-space:nowrap}
.ts-hb-test{font-size:.84rem;color:var(--text-2);background:var(--bg2);border:1px solid var(--border-h);border-radius:10px;padding:.7rem .9rem;display:flex;gap:.6rem;align-items:flex-start}
.ts-hb-test.is-ok{border-color:rgba(61,214,140,.3)}.ts-hb-test.is-ok i{color:var(--green)}
.ts-hb-test.is-bad{border-color:rgba(248,113,113,.3)}.ts-hb-test.is-bad i{color:var(--red)}
.ts-hb-test i{margin-top:.15rem}

.ts-hb-strip{display:grid;grid-template-columns:repeat(60,minmax(0,1fr));gap:3px;height:38px;margin:0;padding:0;list-style:none}
.ts-hb-strip li{border-radius:3px;background:var(--surface);transition:transform .15s var(--ease),filter .15s}
.ts-hb-strip li:hover{transform:scaleY(1.12);filter:brightness(1.25)}
.ts-hb-strip li:last-child{box-shadow:0 0 0 1px var(--border-h)}
.ts-hb-strip .is-o,.ts-hb-legend .is-o::before{background:rgba(61,214,140,.42)}
.ts-hb-strip .is-r,.ts-hb-legend .is-r::before{background:var(--green);box-shadow:0 0 10px rgba(61,214,140,.45)}
.ts-hb-strip .is-i,.ts-hb-legend .is-i::before{background:repeating-linear-gradient(135deg,var(--text-q) 0 3px,var(--surface-l) 3px 6px)}
.ts-hb-strip .is-d,.ts-hb-legend .is-d::before{background:var(--orange)}
.ts-hb-strip .is-x,.ts-hb-legend .is-x::before{background:var(--red)}
.ts-hb-legend .is-none::before{background:var(--surface);box-shadow:inset 0 0 0 1px var(--border-h)}
.ts-hb-axis{display:flex;justify-content:space-between;margin-top:.45rem;font-family:var(--mono);font-size:.64rem;letter-spacing:.06em;color:var(--text-t)}

.ts-hb-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.75rem;margin:0}
.ts-hb-stats > div{background:var(--bg2);border:1px solid var(--border);border-radius:12px;padding:.8rem .95rem;min-width:0;position:relative;overflow:hidden}
.ts-hb-stats dt{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-t)}
.ts-hb-stats dd{margin:.35rem 0 0;font-family:var(--serif);font-size:1.6rem;line-height:1.1;color:var(--text);font-variant-numeric:tabular-nums;position:relative}
.ts-hb-stats dd small{font-family:var(--sans);font-size:.74rem;color:var(--text-t);margin-left:.15rem}
.ts-hb-stats .ts-hb-who{font-family:var(--sans);font-size:.92rem;display:flex;flex-direction:column;gap:.1rem;margin-top:.45rem}
.ts-hb-who .ts-mono{font-family:var(--mono);color:var(--text);overflow-wrap:anywhere}
.ts-hb-stats .ts-hb-who small{margin:0}
.ts-hb-muted{color:var(--text-t)}
.ts-hb-bars{position:absolute;left:.95rem;right:.95rem;bottom:.6rem;height:22px;display:flex;align-items:flex-end;gap:2px;opacity:.9}
.ts-hb-bars i{flex:1;height:var(--h);min-height:2px;border-radius:2px 2px 0 0;background:linear-gradient(180deg,var(--accent-l),var(--accent-d))}
.ts-hb-bars i[style="--h:0%"]{background:var(--border-h)}
.ts-hb-day{padding-bottom:2.4rem !important}

.ts-hb-legend{display:flex;flex-wrap:wrap;gap:.35rem 1rem;margin:0;padding:0;list-style:none;font-size:.74rem;color:var(--text-s)}
.ts-hb-legend li{display:inline-flex;align-items:center;gap:.4rem}
.ts-hb-legend li::before{content:'';width:10px;height:10px;border-radius:3px}
.ts-hb .ts-callout{margin:0}

.ts-tabdot{position:relative;display:inline-block;width:7px;height:7px;border-radius:50%;margin-left:.1rem}
.ts-tabdot--warn{background:var(--orange);box-shadow:0 0 0 3px rgba(245,158,66,.15)}
.ts-tabdot--bad{background:var(--red);box-shadow:0 0 0 3px rgba(248,113,113,.15)}

@media (max-width:768px){
  .ts-hb-hero{grid-template-columns:auto minmax(0,1fr)}
  .ts-hb-testbtn{grid-column:1 / -1;justify-self:start}
  .ts-hb-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ts-hb-strip{gap:2px;height:32px}
}
@media (prefers-reduced-motion:reduce){
  .ts-hb--live .ts-hb-pulse::before,.ts-hb--live .ts-hb-pulse::after{animation:none;opacity:0}
  .ts-hb-strip li{transition:none}
}
.ts-nowrap{white-space:nowrap}
.ts-settings + .ts-routing{margin-top:1.25rem}

/* ── Support AI ───────────────────────────────────────────────────── */
.ts-asstcard .ts-agentcard-ic{color:var(--ac);background:color-mix(in srgb,var(--ac) 14%,transparent);border-color:color-mix(in srgb,var(--ac) 30%,transparent)}
.ts-choicecards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.6rem}
.ts-choicecard{position:relative;display:block;cursor:pointer}
.ts-choicecard input{position:absolute;opacity:0;width:0;height:0}
.ts-choicecard > span{display:flex;flex-direction:column;gap:.25rem;height:100%;padding:.75rem .85rem;border:1px solid var(--border-h);border-radius:10px;background:var(--bg-el);transition:border-color .15s,background .15s}
.ts-choicecard strong{color:var(--text);font-size:.86rem}
.ts-choicecard small{color:var(--text-t);font-size:.74rem;line-height:1.45}
.ts-choicecard input:checked + span{border-color:var(--accent);background:var(--accent-bg)}
.ts-choicecard input:focus-visible + span{outline:2px solid var(--accent-l);outline-offset:2px}
.ts-subscopes--pills{border-bottom:0;gap:.4rem;margin-bottom:1rem}
.ts-subscopes--pills .ts-subscope{border:1px solid var(--border);border-radius:999px;margin:0;padding:.3rem .75rem;font-size:.78rem;display:inline-flex;align-items:center;gap:.4rem}
.ts-subscopes--pills .ts-subscope.is-active{border-color:var(--accent);background:var(--accent-bg)}
.ts-subscopes--pills .ts-count{padding:0 .35rem;font-size:.64rem}
.ts-convgrid{display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);gap:1rem;align-items:start}
.ts-convlist{overflow:hidden}
.ts-convlist ul{list-style:none;margin:0;padding:0;max-height:70vh;overflow-y:auto}
.ts-convlist li + li{border-top:1px solid var(--border)}
.ts-convlist a{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;padding:.75rem .9rem;transition:background .15s}
.ts-convlist a:hover{background:var(--card-h)}
.ts-convlist li.is-current a{background:var(--surface);box-shadow:inset 3px 0 0 var(--accent)}
.ts-convlist-main{min-width:0;display:flex;flex-direction:column;gap:.15rem}
.ts-convlist-top{display:flex;align-items:center;gap:.4rem;min-width:0}
.ts-convlist-top strong{color:var(--text);font-size:.84rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-convlist-top i{font-size:.7rem}
.ts-convlist-top .ts-ttime{margin-left:auto;flex-shrink:0}
.ts-convlist-last{font-size:.8rem;color:var(--text-s);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-convlist-meta{font-size:.72rem;color:var(--text-t)}
.ts-convlist-meta .ts-status{font-size:.7rem}
.ts-transcript .ts-panel-head{align-items:flex-start;gap:1rem;flex-wrap:wrap}
.ts-transcript-who{min-width:0}
.ts-transcript-who h3{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.ts-transcript-who p{margin:.25rem 0 0}
.ts-transcript .ts-actions{flex-wrap:wrap;gap:.4rem}
.ts-transcript--empty .ts-panel-body{min-height:240px;display:flex;align-items:center;justify-content:center}
.ts-cmsglog{list-style:none;margin:0;padding:1rem 1.15rem;display:flex;flex-direction:column;gap:.7rem;max-height:60vh;overflow-y:auto}
.ts-cmsg{max-width:80%;display:flex;flex-direction:column;gap:.2rem}
.ts-cmsg-who{font-size:.7rem;color:var(--text-t);font-family:var(--mono)}
.ts-cmsg-body{padding:.6rem .8rem;border-radius:12px;font-size:.85rem;line-height:1.5;color:var(--text-2);overflow-wrap:anywhere}
.ts-cmsg--user{align-self:flex-start}
.ts-cmsg--user .ts-cmsg-body{background:var(--surface);border-bottom-left-radius:4px}
.ts-cmsg--assistant,.ts-cmsg--staff{align-self:flex-end;align-items:flex-end}
.ts-cmsg--assistant .ts-cmsg-body{background:var(--accent-bg);border:1px solid rgba(124,92,252,.25);border-bottom-right-radius:4px}
.ts-cmsg--staff .ts-cmsg-body{background:rgba(61,214,140,.1);border:1px solid rgba(61,214,140,.3);border-bottom-right-radius:4px}
.ts-cmsg--system{align-self:center;max-width:100%;font-size:.72rem;color:var(--text-t);font-family:var(--mono);text-align:center}
.ts-cmsg--tool{align-self:flex-end;max-width:90%}
.ts-cmsg--tool summary{cursor:pointer;font-size:.72rem;color:var(--text-t);font-family:var(--mono);list-style:none}
.ts-cmsg--tool summary::-webkit-details-marker{display:none}
.ts-cmsg--tool summary i{margin-right:.3rem;font-size:.65rem}
.ts-cmsg--tool pre{margin:.35rem 0 0;padding:.55rem .7rem;max-height:220px;overflow:auto;font-size:.7rem;color:var(--text-s);background:var(--bg);border:1px solid var(--border);border-radius:8px;white-space:pre-wrap;overflow-wrap:anywhere}
.ts-cmsgreply{display:flex;gap:.6rem;align-items:flex-end;padding:.85rem 1.15rem;border-top:1px solid var(--border)}
.ts-cmsgreply textarea{flex:1;min-width:0;resize:vertical}
.ts-assistant-stage{height:640px;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:radial-gradient(circle at 20% 0%,rgba(124,92,252,.08),transparent 50%),var(--bg2)}
.ts-colourrow{display:flex;align-items:center;gap:.7rem}
.ts-colourrow input[type=color]{width:44px;height:34px;padding:2px;border-radius:8px;border:1px solid var(--border-h);background:var(--bg-el);cursor:pointer}
.ts-widgetmock{position:relative;margin-top:1rem;padding:0 0 3.4rem;border-radius:12px;border:1px solid var(--border);background:var(--bg-el);overflow:hidden;font-size:.74rem}
.ts-widgetmock-head{display:flex;align-items:center;gap:.5rem;padding:.6rem .7rem;background:var(--c);color:#fff}
.ts-widgetmock-head span{width:18px;height:18px;border-radius:50%;background:rgba(255,255,255,.25)}
.ts-widgetmock-msg,.ts-widgetmock-me{margin:.55rem .7rem 0;padding:.45rem .6rem;border-radius:10px;max-width:80%}
.ts-widgetmock-msg{background:var(--surface);color:var(--text-2)}
.ts-widgetmock-me{margin-left:auto;background:var(--c);color:#fff;width:fit-content}
.ts-widgetmock-fab{position:absolute;right:.7rem;bottom:.6rem;width:34px;height:34px;border-radius:50%;background:var(--c);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.8rem}
.ts-radiolist{display:flex;flex-direction:column;gap:.55rem;margin-bottom:.9rem}
.ts-kbcats{margin-bottom:.5rem}
.ts-doclist{list-style:none;margin:0;padding:0}
.ts-doclist > li{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.15rem}
.ts-doclist > li + li{border-top:1px solid var(--border)}
.ts-doclist > li.is-off .ts-doclist-main{opacity:.55}
.ts-doclist-main{min-width:0;display:flex;flex-direction:column;gap:.15rem}
.ts-doclist-main strong{color:var(--text);font-size:.86rem}
.ts-kbhits{list-style:none;margin:.9rem 0 0;padding:0;display:flex;flex-direction:column;gap:.7rem}
.ts-kbhits p{margin:.25rem 0 0}
.ts-panel-body--tight{padding-top:.25rem}
.ts-segmented{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:.5rem;margin-bottom:.75rem}
.ts-segment{position:relative;cursor:pointer}
.ts-segment input{position:absolute;opacity:0;width:0;height:0}
.ts-segment > span{display:flex;flex-direction:column;gap:.2rem;padding:.65rem .8rem;border:1px solid var(--border-h);border-radius:10px;background:var(--bg-el);transition:border-color .15s,background .15s}
.ts-segment small{font-size:.74rem;color:var(--text-t)}
.ts-segment input:checked + span{border-color:var(--accent);background:var(--accent-bg)}
.ts-segment input:focus-visible + span{outline:2px solid var(--accent-l);outline-offset:2px}
.ts-tabsnip{margin-top:.5rem}
.ts-tabsnip-tabs{display:flex;gap:.25rem;margin-bottom:-.25rem}
.ts-tabsnip-tabs button{padding:.3rem .7rem;border:1px solid var(--border);border-bottom:0;border-radius:8px 8px 0 0;background:transparent;color:var(--text-t);font-size:.74rem;cursor:pointer}
.ts-tabsnip-tabs button[aria-selected=true]{background:var(--bg);color:var(--text)}
.ts-tabsnip .ts-codeblock{border-top-left-radius:0;white-space:pre-wrap;overflow-wrap:anywhere}
.ts-panel--danger{border-color:rgba(248,113,113,.25)}
.ts-panel--danger .ts-panel-head h2{color:#fca5a5}
.ts-rotate{display:flex;flex-direction:column;gap:.6rem}
.ts-rotate form{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
@media (max-width:1100px){.ts-convgrid{grid-template-columns:minmax(0,1fr)}.ts-convgrid.has-open .ts-convlist ul{max-height:260px}}
@media (max-width:768px){.ts-cmsg{max-width:92%}.ts-cmsgreply{flex-direction:column;align-items:stretch}.ts-assistant-stage{height:560px}}
.ts-nav-badge--warn{background:var(--orange);color:#1a1206}
.ts-convgrid > .ts-panel{margin:0}
.ts code,.ts pre,.ts .ts-mono,.ts .ts-codeblock,.ts kbd{font-variant-ligatures:none;font-feature-settings:"liga" 0,"calt" 0}
.ts-panel-body .ts-details > summary{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;color:var(--accent-l)}
.ts-panel-body .ts-details > summary::before{content:'\25B8';color:var(--text-t);transition:transform .15s}
.ts-panel-body .ts-details[open] > summary::before{transform:rotate(90deg)}
.ts-msg-bot{width:40px;height:40px;border-radius:50%;flex-shrink:0}
.ts-msg.is-agent .ts-msg-head .ts-inbox-tag{margin:0}
.ts-subnav-fold summary{list-style:none;cursor:pointer;color:var(--text-t);font-size:.74rem}
.ts-subnav-fold summary::-webkit-details-marker{display:none}
.ts-subnav-fold summary::before{display:none}
.ts-subnav-chev{width:8px;font-size:.55rem;transition:transform .15s}
.ts-subnav-fold details[open] .ts-subnav-chev{transform:rotate(90deg)}
.ts .ts-nav .ts-subnav.ts-subnav--inner{padding-left:0;margin:0}
.ts-subnav--inner::before{display:none}

/* ── Support AI · operator toolkit ────────────────────────────────── */
.ts-ops{display:flex;flex-wrap:wrap;gap:.35rem;padding:.65rem 1.15rem;border-top:1px solid var(--border);background:var(--bg2)}
.ts-ops-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .7rem;border:1px solid var(--border-h);border-radius:8px;background:var(--card);color:var(--text-s);font-size:.78rem;font-weight:500;cursor:pointer;transition:border-color .15s,color .15s,background .15s}
.ts-ops-btn:hover{color:var(--text);border-color:var(--accent-l)}
.ts-ops-btn.is-on{color:var(--text);border-color:var(--accent);background:var(--accent-bg)}
.ts-ops-btn i{font-size:.72rem}
.ts-ops-btn .ts-count{padding:0 .35rem;font-size:.62rem}
.ts-ops-drawer{padding:.85rem 1.15rem;border-top:1px solid var(--border);background:var(--bg2);max-height:420px;overflow-y:auto}
.ts-ops-drawer .ts-field{margin-bottom:.6rem}
.ts-ops-foot{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.ts-opsticket{padding:.65rem .75rem;border:1px solid var(--border);border-radius:10px;background:var(--card)}
.ts-opsticket + .ts-opsticket{margin-top:.5rem}
.ts-opsticket-head{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.ts-opsticket-head strong{color:var(--text);font-size:.85rem}
.ts-opsticket-head .ts-ttime{margin-left:auto}
.ts-opsticket p{margin:.35rem 0 0}
.ts-opsticket-acts{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.5rem}
.ts-opsticket-update{display:flex;align-items:center;gap:.5rem;flex:1;min-width:240px}
.ts-opsticket-update input[type=text]{flex:1;min-width:0;padding:.35rem .6rem;font-size:.8rem}
.ts-opsticket-acts form:not(.ts-opsticket-update){display:inline}
.ts-opschats{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.ts-opschats li{display:flex;flex-direction:column;gap:.1rem}
.ts-opschats a{font-size:.84rem;color:var(--text-2)}
.ts-opskb{padding:.55rem 0;border-bottom:1px solid var(--border)}
.ts-opskb p{margin:.2rem 0}
[data-ops-kb-results]{margin-top:.6rem}
.ts-opstool{padding:.6rem 0;border-bottom:1px solid var(--border)}
.ts-opstool-args{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.45rem}
.ts-opstool-args input{flex:1;min-width:160px;padding:.35rem .6rem;font-size:.8rem}
.ts-opsquick{display:flex;flex-direction:column;gap:.4rem}
.ts-opsquick-item{text-align:left;padding:.5rem .7rem;border:1px solid var(--border);border-radius:9px;background:var(--card);color:var(--text-2);font-size:.8rem;cursor:pointer}
.ts-opsquick-item:hover{border-color:var(--accent-l);color:var(--text)}
.ts-cmsgreply{flex-direction:column;align-items:stretch}
.ts-cmsgreply-acts{display:flex;justify-content:space-between;align-items:center;gap:.5rem}

/* ── Support AI · team, activity and the site staff console (console.php) ── */
.ts-factrow{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;font-size:.84rem;color:var(--text-2)}
.ts-factrow li{display:flex;align-items:center;gap:.45rem}
.ts-stafflist > li{justify-content:flex-start}
.ts-stafflist > li .ts-actions{margin-left:auto;flex-shrink:0}
.ts-stafflist .ts-doclist-main > span:first-child{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.ts-stafflist .ts-actions form{display:inline}
.ts-staffinvite{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr);gap:0 .75rem;align-items:end;padding-top:.9rem;border-top:1px solid var(--border)}
.ts-staffinvite .ts-field{margin-bottom:.6rem}
.ts-staffinvite-foot{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.ts-auditlog{list-style:none;margin:0;padding:.25rem 0;max-height:480px;overflow-y:auto}
.ts-auditlog li{display:grid;grid-template-columns:7.5rem minmax(0,1fr);gap:.75rem;padding:.45rem 1.15rem;font-size:.82rem;color:var(--text-2)}
.ts-auditlog li + li{border-top:1px solid var(--border-s)}
.ts-auditlog li.is-warn{background:rgba(251,146,60,.05)}
.ts-auditlog li.is-warn strong{color:#fdba74}
.ts-auditlog-when{color:var(--text-t);font-family:var(--mono);font-size:.7rem;padding-top:.15rem}
.ts-auditlog-what strong{color:var(--text);font-weight:600}
@media (max-width:768px){.ts-staffinvite{grid-template-columns:minmax(0,1fr)}.ts-auditlog li{grid-template-columns:minmax(0,1fr);gap:.1rem}.ts-stafflist > li{flex-wrap:wrap;gap:.35rem .75rem}.ts-stafflist .ts-doclist-main{flex:1 1 0}.ts-stafflist > li .ts-actions{flex-basis:100%;justify-content:flex-end}}

.ts-cbar-mark{width:32px;height:32px;flex-shrink:0;border-radius:9px;display:flex;align-items:center;justify-content:center;color:#fff;background:var(--ac,var(--accent));font-size:.85rem}
.ts-cbar-alerts{position:relative}
.ts-cbar-alerts > summary{list-style:none;position:relative}
.ts-cbar-alerts > summary::-webkit-details-marker{display:none}
.ts-cbar-alerts[open] > summary{color:var(--text);border-color:var(--border-h);background:var(--surface)}
.ts-cbar-alerts-on{position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 2px var(--bg2)}
.ts-cbar-pop{position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:min(320px,calc(100vw - 2rem));display:flex;flex-direction:column;gap:.55rem;padding:.95rem 1rem;border:1px solid var(--border-h);border-radius:12px;background:var(--card);box-shadow:0 18px 40px rgba(0,0,0,.45)}
.ts-cbar-pop strong{color:var(--text);font-size:.88rem}
.ts-cbar-pop p{margin:0;color:var(--text-2)}
.ts-cbar-pop .ts-hint{color:var(--text-t)}
.ts-cbar-pop-acts{display:flex;gap:.5rem;flex-wrap:wrap}
.ts-cmain{flex:1;padding:1.75rem clamp(1rem,3vw,2rem) 4rem}
.ts-cmain .ts-head h1{font-family:var(--serif);font-weight:400;font-size:clamp(1.6rem,3vw,2.1rem);line-height:1.15;letter-spacing:-.02em;margin:0}
.ts-console-login{flex:1;display:flex;align-items:center;justify-content:center;padding:3rem 1.25rem;background:radial-gradient(ellipse 50% 45% at 50% 0%,rgba(124,92,252,.14),transparent 70%)}
.ts-console-login .ts-auth-brand .ts-cbar-mark{width:38px;height:38px;font-size:1rem}
.ts-console-login .ts-auth-card h1{font-family:var(--serif);font-weight:400;font-size:1.7rem;line-height:1.15;letter-spacing:-.02em;margin:0 0 .4rem;text-align:center}
.ts-console-login .ts-flash{margin-bottom:1.25rem}
.ts-console-steps{margin:0;padding-left:1.1rem;font-size:.85rem;color:var(--text-2);display:flex;flex-direction:column;gap:.35rem}
.ts-console-foot{text-align:center;color:var(--text-t);font-size:.75rem;margin-top:1.25rem}

/* ── Staff console · the organization's tickets ───────────────────── */
.ts-ticketbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem 1rem;flex-wrap:wrap;margin-bottom:1rem}
.ts-ticketbar .ts-subscopes{margin:0}
.ts-ticketbar .ts-inline-form{flex:0 1 320px}
.ts-backlink{margin:0 0 .75rem;font-size:.84rem}
.ts-backlink a{color:var(--text-s)}
.ts-backlink a:hover{color:var(--text)}
.ts-ticketmeta{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem .9rem;margin-top:.6rem}
.ts-ticketmeta > span:not(.badge):not(.ts-prio){font-size:.82rem;color:var(--text-t)}
.ts-thread .ts-tevent{list-style:none;padding:.35rem 0 .35rem 3.1rem;font-size:.8rem;color:var(--text-t)}
.ts-thread .ts-tevent i{font-size:.7rem;margin-right:.3rem}
.ts-thread .ts-tevent strong{color:var(--text-2);font-weight:600}
.ts-tstatus{display:flex;flex-direction:column;gap:.4rem}
.ts-tstatus form{margin:0}
.ts-tstatus .ts-btn[disabled]{opacity:1;cursor:default}
@media (max-width:768px){.ts-ticketbar .ts-inline-form{flex:1 1 100%}.ts-console .ts-trow{grid-template-columns:minmax(0,1fr) auto}.ts-console .ts-trow .ts-prio{display:none}.ts-console .ts-trow-title{flex-wrap:wrap;row-gap:0}.ts-console .ts-trow-title a,.ts-console .ts-trow-meta{white-space:normal}}

/* ── Staff console · app shell: sidebar like Claude Code ──────────── */
.ts-cside{position:sticky;top:0;height:100vh;height:100dvh;width:272px;flex-shrink:0;z-index:60;display:flex;flex-direction:column;gap:.7rem;padding:.9rem .7rem .7rem;background:var(--bg2);border-right:1px solid var(--border-s)}
.ts-cside-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.15rem .3rem}
.ts-cside-brand{display:flex;align-items:center;gap:.65rem;min-width:0;color:var(--text)}
.ts-cside-brand > span:last-child{min-width:0}
.ts-cside-brand strong{display:block;font-family:var(--serif);font-weight:400;font-size:1.2rem;line-height:1.15;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-cside-brand small{display:block;margin-top:.15rem;font-family:var(--mono);font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-t)}
.ts-cside-close{display:none}
.ts-cside-search{display:flex;align-items:center;gap:.55rem;padding:0 .7rem;border:1px solid var(--border);border-radius:10px;background:var(--bg-el);color:var(--text-t);font-size:.8rem;transition:border-color .15s}
.ts-cside-search:focus-within{border-color:var(--accent-l)}
.ts .ts-cside-search input{flex:1;min-width:0;border:0;background:transparent;padding:.55rem 0;color:var(--text);font-size:.88rem;box-shadow:none;outline:none}
.ts-cside-nav{display:flex;flex-direction:column;gap:1px}
.ts-cside-nav a{display:flex;align-items:center;gap:.75rem;padding:.5rem .65rem;border-radius:9px;color:var(--text-2);font-size:.92rem;transition:background .15s,color .15s}
.ts-cside-nav a > i{width:18px;text-align:center;color:var(--text-s);font-size:.88rem}
.ts-cside-nav a:hover{background:var(--card-h);color:var(--text)}
.ts-cside-nav a.is-active{background:var(--surface);color:var(--text)}
.ts-cside-nav a.is-active > i{color:var(--accent-l)}
.ts-cside-nav .ts-count{margin-left:auto}
.ts-cside-recents{flex:1;min-height:0;display:flex;flex-direction:column;margin-top:.35rem}
.ts-cside-rhead{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.2rem .35rem .4rem .65rem}
.ts-cside-label{font-size:.8rem;color:var(--text-t)}
.ts-cside-seg{display:inline-flex;padding:2px;border:1px solid var(--border);border-radius:8px;background:var(--bg-el)}
.ts-cside-seg button{border:0;background:transparent;color:var(--text-t);font-size:.72rem;font-weight:500;padding:.18rem .55rem;border-radius:6px;cursor:pointer}
.ts-cside-seg button[aria-selected=true]{background:var(--surface);color:var(--text)}
.ts-cside-list{list-style:none;margin:0;padding:0 0 .5rem;flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}
.ts-cside-group{padding:.7rem .65rem .3rem;font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-t)}
.ts-cside-group:first-child{padding-top:.2rem}
.ts-cside-item{display:flex;align-items:center;gap:.6rem;padding:.48rem .65rem;border-radius:9px;color:var(--text-2);font-size:.88rem;transition:background .15s,color .15s}
.ts-cside-item:hover{background:var(--card-h);color:var(--text)}
.ts-cside-item.is-current{background:var(--surface);color:var(--text)}
.ts-cside-title{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-cside-meta{display:flex;align-items:center;gap:.5rem;flex-shrink:0;font-family:var(--mono);font-size:.66rem;color:var(--text-t)}
.ts-cside-meta i{font-size:.72rem;color:var(--text-s)}
.ts-cside-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--text-t)}
.ts-cside-dot.is-waiting{background:var(--orange);box-shadow:0 0 0 3px rgba(245,158,66,.16);animation:tsCsidePulse 2s ease-in-out infinite}
.ts-cside-dot.is-open{background:var(--blue)}
.ts-cside-dot.is-progress{background:var(--orange)}
.ts-cside-dot.is-resolved{background:var(--green)}
.ts-cside-dot.is-closed{background:var(--text-t)}
@keyframes tsCsidePulse{50%{box-shadow:0 0 0 5px rgba(245,158,66,.05)}}
@media (prefers-reduced-motion:reduce){.ts-cside-dot.is-waiting{animation:none}}
.ts-cside-empty{padding:.6rem .65rem;font-size:.8rem;color:var(--text-t)}
.ts-cside-foot{position:relative;display:flex;align-items:center;gap:.6rem;padding:.7rem .35rem 0;border-top:1px solid var(--border-s)}
.ts-cside-me{flex:1;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.ts-cside-me strong{font-size:.88rem;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-cside-me small{font-size:.72rem;color:var(--text-t)}
.ts-cside-foot form{margin:0}
.ts-cside-foot .ts-icon-btn{width:34px;height:34px;border-color:transparent}
.ts-cside-foot .ts-icon-btn:hover{border-color:var(--border-h)}
.ts-cside-foot .ts-cbar-alerts{position:static}
.ts-cside-foot .ts-cbar-pop{position:absolute;left:0;right:0;top:auto;bottom:calc(100% + 8px);width:auto}
.ts-cside-overlay{display:none}
.ts-cwrap{flex:1;min-width:0;display:flex;flex-direction:column}
.ts-cmobile{display:none}
/* the open chat fills the main area: transcript scrolls, the reply box stays at the bottom */
/* the console keeps its row layout at every width (its sidebar becomes a drawer on phones) */
body.ts.ts-console{flex-direction:row}
.ts-cwrap--chat{height:100vh;height:100dvh}
.ts-cmain--chat{flex:1;min-height:0;display:flex;flex-direction:column;padding:1rem clamp(.75rem,2vw,1.5rem);overflow:hidden}
.ts-cmain--chat > .ts-container{flex:1;min-height:0;width:100%;display:flex;flex-direction:column}
.ts-cmain--chat .ts-flash{margin-bottom:.75rem}
.ts-cchat{flex:1;min-height:0}
.ts-cchat .ts-transcript{height:100%;display:flex;flex-direction:column;margin:0}
.ts-cchat .ts-cmsglog{flex:1;min-height:0;max-height:none}
.ts-cchat .ts-ops-drawer{flex-shrink:0;max-height:34vh}
@media (max-width:900px){
  .ts-cside{position:fixed;left:0;top:0;bottom:0;width:min(300px,86vw);transform:translateX(-100%);transition:transform .25s var(--ease),visibility 0s linear .25s;box-shadow:0 0 40px rgba(0,0,0,.5);visibility:hidden}
  .ts-cside.is-open{transform:none;visibility:visible;transition:transform .25s var(--ease)}
  .ts-cside-close{display:inline-flex;width:34px;height:34px}
  .ts-cside.is-open + .ts-cside-overlay{display:block;position:fixed;inset:0;z-index:55;background:rgba(3,3,6,.6);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
  .ts-cmobile{display:flex;align-items:center;gap:.65rem;position:sticky;top:0;z-index:40;padding:.55rem 1rem;background:rgba(10,10,16,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-s)}
  .ts-cmobile-title{flex:1;min-width:0;font-weight:600;font-size:.94rem;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .ts-cmain--chat{padding:.5rem}
}
@media (prefers-reduced-motion:reduce){.ts-cside{transition:none}}

/* ── Support AI · portal forms (portal.php; the landing page has assets/landing.css) ──────── */
body.ts.ts-lp{display:block;background:radial-gradient(ellipse 60% 40% at 70% 0%,rgba(124,92,252,.13),transparent 70%),var(--bg)}
.lp-nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:1.5rem;padding:1rem max(clamp(1rem,4vw,2rem),calc(50% - 590px + 2rem));background:rgba(6,6,10,.72);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.lp-nav--slim{position:static;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}
.lp-brand{display:flex;align-items:center;gap:.65rem;color:var(--text)}
.lp-brand > span:last-child{display:flex;flex-direction:column;line-height:1.1;font-family:var(--serif);font-size:1.25rem;letter-spacing:-.01em}
.lp-brand small{font-family:var(--mono);font-size:.58rem;letter-spacing:.14em;text-transform:uppercase;color:var(--text-t);margin-top:.2rem}
.lp-mark{width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:.9rem;background:linear-gradient(135deg,var(--accent),var(--accent-d));box-shadow:0 4px 18px rgba(124,92,252,.35)}
.lp-formwrap{display:flex;justify-content:center;padding:clamp(1rem,5vw,3rem) 1rem 4rem}
.lp-formcard{width:100%;max-width:440px}
.lp-formcard--wide{max-width:620px}
.lp-formcard .ts-flash{margin-bottom:1.25rem}
.lp-form{display:flex;flex-direction:column}
.lp-form .ts-check{margin:.1rem 0 1.25rem}
.lp-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.lp-formfoot{margin:1.25rem 0 0;text-align:center;font-size:.84rem;color:var(--text-t)}
.lp-formfoot a,.lp-formnote a{color:var(--accent-l)}
.lp-formnote{text-align:center;font-size:.86rem;color:var(--text-s)}
.lp-done{width:56px;height:56px;margin:0 auto 1.25rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.3rem;background:var(--accent-bg);color:var(--accent-l)}
.lp-done.is-warn{background:rgba(245,158,66,.12);color:var(--orange)}
@media (max-width:640px){.lp-formcard .ts-row2{grid-template-columns:minmax(0,1fr)}}

/* ── Support AI · the organization portal (portal.php, signed in) ── */
.ts-cside-rhead .ts-mono{font-size:.7rem}
.ts-cside-new{color:var(--text-s)}
.ts-cside-new > i{width:18px;text-align:center;font-size:.8rem;color:var(--accent-l)}
.ts-portal-cols{margin-top:1.25rem}
.ts-portal .ts-kpis{margin-bottom:1rem}
.ts-portal-activity .ts-auditlog{max-height:560px;overflow-y:auto}
.ts-portal-activity .ts-auditlog li{grid-template-columns:minmax(0,1fr);gap:.1rem}
.ts-portal-steps{list-style:none;margin:0;padding:.35rem 0}
.ts-portal-steps li{display:flex;align-items:center;gap:.9rem;padding:.75rem 1.25rem;border-top:1px solid var(--border-s)}
.ts-portal-steps li:first-child{border-top:0}
.ts-portal-steps li > div{flex:1;min-width:0;display:flex;flex-direction:column}
.ts-portal-steps strong{font-weight:600;font-size:.9rem;color:var(--text)}
.ts-portal-steps small{font-size:.8rem;color:var(--text-s)}
.ts-portal-step-n{flex-shrink:0;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1px solid var(--border-h);font-family:var(--mono);font-size:.75rem;color:var(--text-s)}
.ts-portal-steps li.is-done .ts-portal-step-n{border-color:transparent;background:rgba(61,214,140,.14);color:var(--green)}
.ts-portal-steps li.is-done strong{color:var(--text-s);text-decoration:line-through;text-decoration-color:var(--text-q)}
.ts-portal-meter{display:flex;justify-content:space-between;font-size:.84rem;color:var(--text-s);margin-bottom:.45rem}
.ts-portal-meter b{color:var(--text);font-weight:600}
.ts-portal-bar{margin-bottom:1rem}

/* ── Support AI · Organizations review (TicketShare) ─────────────── */
.ts-orgs-intro{max-width:52rem;margin:0 0 1rem}
.ts-orgs-intro a{color:var(--accent-l)}
.ts-orglist{display:flex;flex-direction:column;gap:1rem}
.ts-orgcard .ts-panel-head h2{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}
.ts-orgcard-body{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,320px);gap:1.5rem}
.ts-dl--left dd{justify-content:flex-start;text-align:left}
.ts-dl--left dd a{color:var(--accent-l)}
.ts-chip--ok{color:var(--green);border-color:rgba(61,214,140,.3);background:rgba(61,214,140,.08)}
.ts-orgcard-use{margin:1rem 0 0;padding:.75rem 1rem;border-left:2px solid var(--border-h);background:var(--bg-el);border-radius:0 10px 10px 0;font-size:.86rem;color:var(--text-2)}
.ts-orgcard-link{margin:1rem 0 0}
.ts-orgcard-acts{display:flex;flex-direction:column;gap:.75rem;padding-left:1.5rem;border-left:1px solid var(--border-s)}
.ts-orgcard-acts form{margin:0}
.ts-orgcard-acts .ts-field{margin-bottom:.75rem}
.ts-orgcard-btns{display:flex;flex-wrap:wrap;gap:.5rem}
.ts-orgcard-del .ts-link-btn{margin-top:0;color:var(--text-t)}
.ts .ts-orgcard-del .ts-link-btn:hover{color:var(--red)}
@media (max-width:900px){.ts-orgcard-body{grid-template-columns:minmax(0,1fr)}.ts-orgcard-acts{padding:1rem 0 0;border-left:0;border-top:1px solid var(--border-s)}}

/* ── Model picker (partials/model_picker.php) ────────────────────── */
.ts-mp-row{display:flex;gap:.5rem}
.ts-mp-row input{flex:1;min-width:0}
.ts-mp-row .ts-btn{flex-shrink:0}
.ts-mp-info.is-warn{color:var(--orange)}
.ts-mp-panel{margin:-.35rem 0 1.15rem;border:1px solid var(--border-h);border-radius:12px;background:var(--bg-el);overflow:hidden;box-shadow:0 18px 40px rgba(0,0,0,.35)}
.ts-mp-bar{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;padding:.7rem;border-bottom:1px solid var(--border)}
.ts-mp-search{flex:1 1 240px;display:flex;align-items:center;gap:.55rem;padding:0 .75rem;border:1px solid var(--border);border-radius:9px;background:var(--card);color:var(--text-t);font-size:.8rem}
.ts-mp-search:focus-within{border-color:var(--accent-l)}
.ts .ts-mp-search input{flex:1;min-width:0;border:0;background:transparent;padding:.55rem 0;box-shadow:none;outline:none;color:var(--text)}
.ts-mp-chips{display:inline-flex;flex-wrap:wrap;gap:.3rem}
.ts-mp-chips button{padding:.28rem .75rem;border:1px solid var(--border);border-radius:99px;background:transparent;color:var(--text-s);font-size:.75rem;cursor:pointer}
.ts-mp-chips button:hover{color:var(--text);border-color:var(--border-h)}
.ts-mp-chips button[aria-pressed=true]{border-color:var(--accent);background:var(--accent-bg);color:var(--text)}
.ts-mp-list{list-style:none;margin:0;padding:.3rem;max-height:340px;overflow-y:auto;scrollbar-width:thin}
.ts-mp-item{width:100%;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.55rem .65rem;border:0;border-radius:8px;background:transparent;color:var(--text-2);text-align:left;cursor:pointer}
.ts-mp-item:hover,.ts-mp-item:focus-visible{background:var(--surface)}
.ts-mp-item.is-current{background:var(--accent-bg)}
.ts-mp-main{min-width:0;display:flex;flex-direction:column}
.ts-mp-main strong{font-size:.86rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-mp-main code{font-size:.7rem;color:var(--text-t);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ts-mp-meta{display:flex;align-items:center;gap:.4rem;flex-shrink:0}
.ts-mp-price,.ts-mp-ctx{font-family:var(--mono);font-size:.7rem;color:var(--text-s)}
.ts-mp-ctx{color:var(--text-t)}
.ts-mp-badge{padding:.08rem .45rem;border:1px solid var(--border-h);border-radius:99px;font-size:.62rem;font-weight:600;letter-spacing:.03em}
.ts-mp-badge.is-free{color:var(--green);border-color:rgba(61,214,140,.35);background:rgba(61,214,140,.08)}
.ts-mp-badge.is-rec{color:var(--accent-l);border-color:rgba(124,92,252,.35)}
.ts-mp-badge.is-warn{color:var(--orange);border-color:rgba(245,158,66,.35)}
.ts-mp-empty{padding:.8rem;font-size:.82rem;color:var(--text-t)}
.ts-mp-foot{margin:0;padding:.55rem .8rem;border-top:1px solid var(--border);font-size:.72rem;color:var(--text-t)}
@media (max-width:640px){.ts-mp-item{flex-direction:column;align-items:flex-start;gap:.3rem}.ts-mp-row{flex-wrap:wrap}}

/* ── Custom tools (Tools tab) ─────────────────────────────────────── */
.ts-toollist > li{flex-wrap:wrap}
.ts-chip--method{font-family:var(--mono);font-size:.62rem;letter-spacing:.06em;padding:.05rem .45rem}
.ts-toolstat{color:var(--text-s)}
.ts-c-green{color:var(--green)}
.ts-tooltest{flex-basis:100%;margin:.4rem 0 .2rem;padding:.85rem;border:1px solid var(--border-h);border-radius:10px;background:var(--bg-el);display:flex;flex-direction:column;gap:.45rem}
.ts-tooltest textarea{width:100%;font-size:.8rem}
.ts-tooltest-foot{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}
.ts-tooltest-foot .ts-hint{margin:0}
.ts-tooltest-out{padding:.7rem .8rem;border:1px solid var(--border);border-radius:8px;background:var(--card);font-size:.8rem;color:var(--text-s)}
.ts-tooltest-out.is-ok{border-color:rgba(61,214,140,.35)}
.ts-tooltest-out.is-bad{border-color:rgba(248,113,113,.4)}
.ts-tooltest-head{display:flex;justify-content:space-between;gap:.5rem;margin-bottom:.4rem}
.ts-tooltest-out.is-ok strong{color:var(--green)}
.ts-tooltest-out.is-bad strong{color:var(--red)}
.ts-tooltest-head span{font-family:var(--mono);font-size:.72rem;color:var(--text-t)}
.ts-tooltest-out pre{margin:0;max-height:260px;overflow:auto;font-size:.75rem;color:var(--text-2);white-space:pre-wrap;word-break:break-word}
.ts-tooltpl{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.4rem}
.ts-chip--btn{cursor:pointer;transition:border-color .15s,color .15s}
.ts-chip--btn:hover{border-color:var(--accent-l);color:var(--text)}
.ts-chip--btn i{font-size:.65rem;color:var(--accent-l)}
.ts-toolurl{align-items:flex-start}
.ts-toolurl > .ts-field:first-child{flex:0 0 92px}
.ts-toolurl > .ts-field:last-child{flex:1;min-width:0}
.ts-params{display:flex;flex-direction:column;gap:.4rem}
.ts-param{display:grid;grid-template-columns:minmax(0,1.1fr) 92px auto minmax(0,1.6fr) auto;gap:.35rem;align-items:center}
.ts-param input,.ts-param select{min-width:0;font-size:.8rem;padding:.4rem .5rem}
.ts-param-req{display:inline-flex;align-items:center;gap:.25rem;font-size:.72rem;color:var(--text-s);white-space:nowrap}
.ts-params-add{margin-top:.2rem;align-self:flex-start;font-size:.8rem}
.ts-cols-side .ts-param{grid-template-columns:minmax(0,1fr) 84px auto auto;grid-template-areas:"n t r x" "d d d d"}
.ts-cols-side .ts-param [data-k=name]{grid-area:n}.ts-cols-side .ts-param [data-k=type]{grid-area:t}.ts-cols-side .ts-param .ts-param-req{grid-area:r}.ts-cols-side .ts-param [data-k=desc]{grid-area:d}.ts-cols-side .ts-param button{grid-area:x}
.ts-cols-side .ts-param{padding-bottom:.4rem;border-bottom:1px dashed var(--border)}
.ts-toollog td{vertical-align:middle}
.ts-table-scroll{overflow-x:auto}
/* Assistant → Behaviour */
.ts-row3{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.6fr);gap:0 1rem}
.ts-daypick{display:flex;flex-wrap:wrap;gap:.35rem}
.ts-daypick label{position:relative;cursor:pointer}
.ts-daypick input{position:absolute;opacity:0;inset:0;cursor:pointer}
.ts-daypick span{display:inline-block;min-width:3rem;padding:.4rem .6rem;border:1px solid var(--border);border-radius:8px;text-align:center;font-size:.8rem;color:var(--text-s);transition:border-color .15s,background .15s,color .15s}
.ts-daypick input:checked + span{border-color:var(--accent);background:rgba(124,92,252,.14);color:var(--text)}
.ts-daypick input:focus-visible + span{outline:2px solid var(--accent-l);outline-offset:2px}
.ts-check--desc{margin:.45rem 0}
.ts-check--desc code{font-size:.7rem;color:var(--text-t)}
.ts-check--desc small{display:block;color:var(--text-t);font-size:.76rem;margin-top:.1rem}
.ts-btnrow{display:flex;flex-wrap:wrap;gap:.4rem;margin:.25rem 0 .5rem}
.ts-codeblock--wrap{white-space:pre-wrap;overflow-wrap:anywhere}
.ts-bh-hours{padding-top:.5rem}
@media (max-width:768px){.ts-row3{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.ts-row3 > :last-child{grid-column:1 / -1}}
.ts-panel-head--wrap{flex-wrap:wrap}
.ts-status--wrap{white-space:normal}
/* Assistant → Analytics. Palette validated for the dark card surface (#101018): series blue
   #3987e5 / orange #d95926 (categorical, adjacent CVD ΔE 26.8); heat = one blue ramp, darker = fewer. */
.ts-viz{--viz-s1:#3987e5;--viz-s2:#d95926;--viz-h0:var(--surface);--viz-h1:#184f95;--viz-h2:#256abf;--viz-h3:#3987e5;--viz-h4:#6da7ec;--viz-h5:#9ec5f4;--viz-grid:var(--border);--viz-axis:var(--text-t)}
.ts-viz-filters{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .5rem;margin:0 0 1rem}
.ts-viz-filters .ts-subscope{border:1px solid var(--border);border-radius:8px;margin:0}
.ts-viz-filters .ts-subscope.is-active{border-color:var(--accent);color:var(--text);background:var(--accent-bg)}
.ts-viz-range{margin-left:auto}
.ts-viz-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:.75rem;margin-bottom:1rem}
.ts-viz-tile{padding:.85rem 1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--card)}
.ts-viz-tile-label{font-size:.76rem;color:var(--text-s)}
.ts-viz-tile-value{font-size:1.55rem;font-weight:600;color:var(--text);line-height:1.25;margin:.2rem 0}
.ts-viz-tile-foot{font-size:.72rem;color:var(--text-t);display:flex;flex-wrap:wrap;gap:.15rem .45rem}
.ts-viz-delta{font-weight:600;color:var(--text-s)}
.ts-viz-delta.is-good{color:var(--green)}
.ts-viz-delta.is-bad{color:var(--red)}
.ts-viz-delta i{font-size:.62rem}
.ts-viz-card{margin-bottom:1rem}
.ts-viz-legend{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem 1rem;font-size:.76rem;color:var(--text-s)}
.ts-viz-legend .ts-link-btn{margin:0;font-size:.76rem}
.ts-viz-key{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:.4rem;vertical-align:-1px}
i.ts-viz-s1,.ts-viz-s1{background:var(--viz-s1)}
i.ts-viz-s2,.ts-viz-s2{background:var(--viz-s2)}
.ts-viz-plot{position:relative;padding-left:2.4rem}
.ts-viz-grid{position:absolute;left:0;right:0;top:0;height:180px;pointer-events:none}
.ts-viz-grid div{position:absolute;left:2.4rem;right:0;border-top:1px solid var(--viz-grid)}
.ts-viz-grid span{position:absolute;right:calc(100% + .45rem);top:-.55rem;font-size:.68rem;color:var(--viz-axis);font-variant-numeric:tabular-nums;white-space:nowrap}
.ts-viz-cols{position:relative;height:180px;display:flex;align-items:flex-end;gap:2px}
.ts-viz-col{flex:1 1 0;min-width:0;height:100%;display:flex;align-items:flex-end;justify-content:center;border-radius:4px;outline-offset:0}
.ts-viz-col:hover,.ts-viz-col:focus-visible{background:rgba(255,255,255,.035)}
.ts-viz-stack{width:min(24px,72%);display:flex;flex-direction:column;gap:2px;min-height:2px}
.ts-viz-stack i{display:block;flex-basis:0;min-height:2px}
.ts-viz-stack i:first-child{border-radius:4px 4px 0 0}
.ts-viz-col:hover .ts-viz-stack i,.ts-viz-col:focus-visible .ts-viz-stack i{filter:brightness(1.15)}
.ts-viz-xaxis{display:flex;gap:2px;margin-top:.4rem;border-top:1px solid var(--border-h);padding-top:.35rem}
.ts-viz-xaxis span{flex:1 1 0;min-width:0;text-align:center;font-size:.68rem;color:var(--viz-axis);white-space:nowrap;overflow:visible}
.ts-viz-empty{margin:0;padding:1rem 0}
.ts-viz-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
.ts-viz-row > .ts-viz-card{min-width:0;margin-top:0}
.ts-viz-heat{display:grid;grid-template-columns:2.2rem repeat(24,minmax(0,1fr));gap:2px;align-items:center}
.ts-viz-heat i{display:block;aspect-ratio:1;border-radius:3px;background:var(--viz-h0)}
.ts-viz-heat i:hover{outline:1px solid var(--text-2);outline-offset:0}
.ts-viz-heat-day,.ts-viz-heat-hour{font-size:.66rem;color:var(--viz-axis)}
.ts-viz-heat-hour{text-align:left;white-space:nowrap;overflow:visible}
i.ts-viz-h0{background:var(--viz-h0)}i.ts-viz-h1{background:var(--viz-h1)}i.ts-viz-h2{background:var(--viz-h2)}i.ts-viz-h3{background:var(--viz-h3)}i.ts-viz-h4{background:var(--viz-h4)}i.ts-viz-h5{background:var(--viz-h5)}
.ts-viz-scale{display:flex;align-items:center;gap:3px;margin-top:.75rem;font-size:.68rem;color:var(--viz-axis)}
.ts-viz-scale i{display:block;width:14px;height:10px;border-radius:2px}
.ts-viz-scale span:first-child{margin-right:.3rem}.ts-viz-scale span:last-child{margin-left:.3rem}
.ts-viz-table{margin-top:.75rem;font-variant-numeric:tabular-nums}
.ts-viz-meter{display:block;height:4px;max-width:180px;margin-top:.35rem;border-radius:2px;background:rgba(57,135,229,.16)}
.ts-viz-meter i{display:block;height:100%;border-radius:2px;background:var(--viz-s1)}
.ts-viz-list{list-style:none;margin:0;padding:0}
.ts-viz-list li{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.6rem 1.25rem;border-top:1px solid var(--border-s);font-size:.84rem;color:var(--text-2)}
.ts-viz-list li:first-child{border-top:0}
.ts-viz-list span{min-width:0;overflow-wrap:anywhere}
.ts-viz-list b{font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.ts-viz-gaphint{padding-top:.25rem}
.ts-viz-tip{position:fixed;z-index:80;pointer-events:none;min-width:150px;padding:.5rem .65rem;border:1px solid var(--border-h);border-radius:8px;background:var(--surface-l);box-shadow:0 8px 24px rgba(0,0,0,.45);font-size:.76rem;color:var(--text-s)}
.ts-viz-tip-h{color:var(--text-2);margin-bottom:.25rem}
.ts-viz-tip-r{display:flex;align-items:center;gap:.45rem}
.ts-viz-tip-r b{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums;min-width:1.5rem}
.ts-viz-tip-k{display:inline-block;width:12px;height:2px;border-radius:1px}
@media (max-width:1100px){.ts-viz-row{grid-template-columns:minmax(0,1fr)}}
@media (max-width:520px){.ts-viz-range{margin-left:0;flex-basis:100%}.ts-viz-heat{grid-template-columns:1.8rem repeat(24,minmax(0,1fr));gap:1px}.ts-viz-tile-value{font-size:1.3rem}}
@media (forced-colors:active){.ts-viz-stack i,.ts-viz-heat i,.ts-viz-key{forced-color-adjust:none}}
/* New assistant: guided setup with a live widget preview */
.ts-wizard{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:1.25rem;align-items:start}
.ts-wizard-main{display:flex;flex-direction:column;gap:1rem;min-width:0}
.ts-wizard-main > .ts-panel{margin:0}
.ts-wizard-step .ts-panel-head h2{display:flex;align-items:center;gap:.6rem}
.ts-wizard-n{display:inline-grid;place-items:center;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--accent-bg);border:1px solid rgba(124,92,252,.4);color:var(--accent-l);font-size:.75rem;font-weight:600;flex-shrink:0}
.ts-wizard-starters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}
.ts-wizard-models{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.6rem}
.ts-wizard-card{position:relative;display:block;cursor:pointer;min-width:0}
.ts-wizard-card input{position:absolute;opacity:0;width:0;height:0}
.ts-wizard-card > span{display:flex;flex-direction:column;gap:.3rem;height:100%;padding:.85rem .9rem;border:1px solid var(--border-h);border-radius:12px;background:var(--bg-el);transition:border-color .15s,background .15s,transform .15s}
.ts-wizard-card:hover > span{border-color:#3a3a58}
.ts-wizard-card > span > i{width:2rem;height:2rem;display:grid;place-items:center;border-radius:9px;background:var(--surface);color:var(--accent-l);font-size:.9rem;margin-bottom:.15rem}
.ts-wizard-card strong{color:var(--text);font-size:.88rem;font-weight:600}
.ts-wizard-card small{color:var(--text-t);font-size:.75rem;line-height:1.45}
.ts-wizard-card em{font-style:normal;font-size:.68rem;color:var(--text-s);margin-top:auto;padding-top:.3rem;overflow-wrap:anywhere}
.ts-wizard-card input:checked + span{border-color:var(--accent);background:var(--accent-bg)}
.ts-wizard-card input:checked + span > i{background:var(--accent);color:#fff}
.ts-wizard-card input:focus-visible + span{outline:2px solid var(--accent-l);outline-offset:2px}
.ts-wizard-any{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border-s)}
.ts-wizard-key{margin-top:1rem}
.ts-wizard-key .ts-field{margin-top:.6rem}
.ts-wizard-swatches{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.4rem}
.ts-wizard-swatches label{position:relative;cursor:pointer}
.ts-wizard-swatches input[type=radio]{position:absolute;opacity:0;width:0;height:0}
.ts-wizard-swatches label > span{display:block;width:30px;height:30px;border-radius:50%;background:var(--c);box-shadow:0 0 0 2px var(--card),0 0 0 3px transparent;transition:box-shadow .15s}
.ts-wizard-swatches input:checked + span{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--text)}
.ts-wizard-swatches input:focus-visible + span{outline:2px solid var(--accent-l);outline-offset:4px}
.ts-wizard-swatches label > span{border:1px solid rgba(255,255,255,.14)}
.ts-wizard-custom{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:var(--picked,conic-gradient(#e5484d,#f08c00,#facc15,#0f9d76,#2a78d6,#7c5cfc,#e5484d));box-shadow:0 0 0 2px var(--card),0 0 0 3px transparent;transition:box-shadow .15s}
.ts-wizard-custom input[type=color]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0}
.ts-wizard-custom i{font-size:.7rem;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.6);pointer-events:none}
.ts-wizard-custom.is-on{box-shadow:0 0 0 2px var(--card),0 0 0 4px var(--text)}
.ts-wizard-custom.is-on i{display:none}
.ts-wizard-custom:focus-within{outline:2px solid var(--accent-l);outline-offset:4px}
.ts-wizard-foot{display:flex;justify-content:flex-end;gap:.6rem;padding:.25rem 0 1rem}
.ts-wizard-side{min-width:0}
.ts-wizard-sticky{position:sticky;top:1.25rem}
.ts-wizard-widget{border-radius:16px;overflow:hidden;background:#fff;color:#1f2937;box-shadow:0 18px 50px rgba(0,0,0,.45);font-size:.8rem;margin-top:.6rem}
.ts-wizard-widget-head{display:flex;align-items:center;gap:.6rem;padding:.8rem .9rem;background:var(--c);color:#fff;transition:background .2s}
.ts-wizard-widget-head b{display:block;font-size:.88rem;font-weight:600;line-height:1.2;overflow-wrap:anywhere}
.ts-wizard-widget-head small{opacity:.8;font-size:.7rem}
.ts-wizard-widget-av{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.2);flex-shrink:0}
.ts-wizard-widget-body{padding:.9rem;min-height:170px;background:#f8f8fb;display:flex;flex-direction:column;gap:.6rem}
.ts-wizard-widget-msg{align-self:flex-start;max-width:88%;padding:.55rem .7rem;border-radius:12px 12px 12px 4px;background:#fff;border:1px solid #ececf3;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
.ts-wizard-widget-sugg{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;margin-top:auto}
.ts-wizard-widget-sugg span{padding:.35rem .65rem;border-radius:999px;border:1px solid var(--c);color:var(--c);background:#fff;font-size:.72rem;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-wizard-widget-input{display:flex;align-items:center;justify-content:space-between;padding:.65rem .9rem;border-top:1px solid #ececf3;color:#9ca3af}
.ts-wizard-widget-input i{color:var(--c)}
.ts-wizard-fab{width:46px;height:46px;border-radius:50%;margin:.75rem 0 0 auto;display:grid;place-items:center;background:var(--c);color:#fff;box-shadow:0 8px 20px rgba(0,0,0,.4)}
.ts-wizard-next{list-style:none;margin:1.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.ts-wizard-next li{display:flex;justify-content:flex-start;align-items:flex-start;gap:.6rem;margin:0;padding:0;border:0;font-size:.78rem;color:var(--text-s);line-height:1.45;text-align:left}
.ts-wizard-next li > span{flex:1;min-width:0;text-align:left}
.ts-wizard-next i{width:1.6rem;height:1.6rem;flex-shrink:0;display:grid;place-items:center;border-radius:7px;background:var(--surface);color:var(--text-t);font-size:.7rem}
.ts-wizard-next strong{color:var(--text-2);font-weight:600}
@media (max-width:1100px){.ts-wizard{grid-template-columns:minmax(0,1fr)}.ts-wizard-side{display:none}}
@media (max-width:900px){.ts-wizard-starters{grid-template-columns:repeat(2,minmax(0,1fr))}.ts-wizard-models{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.ts-wizard-starters,.ts-wizard-models{grid-template-columns:minmax(0,1fr)}.ts-wizard-card > span{flex-direction:row;flex-wrap:wrap;align-items:center;column-gap:.6rem}.ts-wizard-card > span > i{margin:0}.ts-wizard-card small,.ts-wizard-card em{flex-basis:100%}}
/* API & MCP page */
.ts-apihero{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:1.5rem;align-items:end;margin:0 0 1.25rem}
.ts-apihero h1{margin:.1rem 0 .4rem}
.ts-apihero-try{padding:1rem 1.1rem;border:1px solid var(--border-h);border-radius:var(--radius);background:linear-gradient(135deg,rgba(124,92,252,.12),rgba(124,92,252,.02))}
.ts-apihero-try blockquote{margin:.35rem 0 0;color:var(--text);font-size:.92rem;line-height:1.5}
.ts-apinew{border-color:rgba(245,158,66,.45)}
.ts-apigroups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1.25rem}
.ts-apigroup{display:flex;gap:.75rem;min-width:0}
.ts-apigroup > i{width:2rem;height:2rem;flex-shrink:0;display:grid;place-items:center;border-radius:9px;background:var(--surface);color:var(--accent-l);font-size:.85rem}
.ts-apigroup strong{color:var(--text);font-size:.88rem}
.ts-apigroup p{margin:.15rem 0 .35rem;font-size:.8rem;color:var(--text-s);line-height:1.45}
.ts-apigroup code{font-size:.68rem;color:var(--text-t);overflow-wrap:anywhere}
.ts-apitokens tr.is-off td{opacity:.55}
.ts-apinotes{margin:0;padding-left:1.1rem;font-size:.8rem;color:var(--text-s);display:flex;flex-direction:column;gap:.4rem}
.ts-apipage .ts-tabsnip .ts-codeblock{white-space:pre-wrap;overflow-wrap:anywhere}
@media (max-width:900px){.ts-apihero{grid-template-columns:minmax(0,1fr)}.ts-apigroups{grid-template-columns:minmax(0,1fr)}}
/* Forms: busy buttons, show/hide passwords, inline errors, character counts, password strength */
.ts-btn.is-busy{cursor:progress;opacity:.85}
.ts-btn.is-busy > i{display:none}
.ts-btn.is-busy::before{content:'';width:.85em;height:.85em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:tsSpin .7s linear infinite;flex-shrink:0}
.ts-pw{position:relative;display:block}
.ts-copyrow > .ts-pw{flex:1;min-width:0}
.ts-pw > input{width:100%;padding-right:2.6rem}
.ts-pw-eye{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);width:2rem;height:2rem;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:var(--text-t);cursor:pointer}
.ts-pw-eye:hover{color:var(--text-2);background:var(--surface)}
.ts [aria-invalid=true]{border-color:rgba(248,113,113,.7)!important;box-shadow:0 0 0 3px rgba(248,113,113,.12)}
.ts-field-error{margin:.35rem 0 0;font-size:.76rem;color:var(--red);display:flex;gap:.35rem}
.ts-field-error::before{content:'\f06a';font-family:'Font Awesome 6 Free';font-weight:900}
.ts-chars{display:block;text-align:right;font-size:.68rem;color:var(--text-t);margin-top:.2rem;font-variant-numeric:tabular-nums}
.ts-chars.is-near{color:var(--orange)}
.ts-chars.is-quiet{visibility:hidden}
.ts-pwmeter{display:flex;align-items:center;gap:.6rem;margin-top:.4rem}
.ts-pwmeter > span{flex:1;height:4px;border-radius:2px;background:var(--surface);overflow:hidden}
.ts-pwmeter i{display:block;height:100%;width:8%;background:var(--red);transition:width .2s,background .2s}
.ts-pwmeter small{font-size:.72rem;color:var(--text-s);white-space:nowrap}
.ts-pwmeter[data-score="1"] i{width:35%;background:var(--orange)}
.ts-pwmeter[data-score="2"] i{width:60%;background:var(--yellow)}
.ts-pwmeter[data-score="3"] i{width:82%;background:var(--green)}
.ts-pwmeter[data-score="4"] i{width:100%;background:var(--green)}
/* Firewall */
.ts-fw-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;margin:0 0 1rem}
.ts-fw-steps > div{padding:1rem 1.1rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--card)}
.ts-fw-steps span{display:inline-grid;place-items:center;width:1.6rem;height:1.6rem;border-radius:50%;background:var(--accent-bg);color:var(--accent-l);font-size:.78rem;font-weight:600;margin-bottom:.5rem}
.ts-fw-steps strong{display:block;color:var(--text);font-size:.92rem}
.ts-fw-steps p{margin:.2rem 0 0;font-size:.8rem;color:var(--text-s)}
.ts-fw-sites{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:.75rem;margin-bottom:1rem}
.ts-fw-site{display:flex;align-items:center;gap:.85rem;padding:1rem 1.1rem;margin:0;transition:border-color .15s}
.ts-fw-site:hover{border-color:var(--border-h)}
.ts-fw-site-ic{width:2.4rem;height:2.4rem;flex-shrink:0;display:grid;place-items:center;border-radius:10px;background:var(--surface);color:var(--accent-l)}
.ts-fw-site-main{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1}
.ts-fw-site-main strong{color:var(--text)}
.ts-fw-site-main .ts-mono{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-fw-site-chips{display:flex;flex-wrap:wrap;gap:.4rem .75rem;margin-top:.25rem}
.ts-fw-site-num{text-align:right;flex-shrink:0}
.ts-fw-site-num b{display:block;font-size:1.3rem;color:var(--text);font-weight:600}
.ts-fw-site-num small{font-size:.68rem;color:var(--text-t)}
.ts-fw-addbtn{display:flex;flex-direction:column;justify-content:flex-end;gap:.35rem}
.ts-fw-tilecat{text-transform:uppercase;font-size:1.2rem!important;letter-spacing:.02em}
.ts-fw-tops{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-bottom:1rem}
.ts-fw-tops > .ts-panel{margin:0;min-width:0}
.ts-fw-top{list-style:none;margin:0;padding:.35rem 0}
.ts-fw-top li{position:relative;display:flex;justify-content:space-between;gap:.75rem;padding:.45rem 1.1rem;font-size:.8rem;color:var(--text-2)}
.ts-fw-top li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-fw-top li b{font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}
.ts-fw-top li i{position:absolute;left:1.1rem;bottom:.2rem;height:2px;border-radius:1px;background:var(--viz-s1);opacity:.55;max-width:calc(100% - 2.2rem)}
.ts-fw-none{padding:.75rem 1.1rem;margin:0}
.ts-fw-testrow{display:flex;gap:.5rem}
.ts-fw-testrow select{flex:0 0 88px}
.ts-fw-testrow input{flex:1;min-width:0}
.ts-fw-testout{margin-top:.75rem;padding:.7rem .85rem;border:1px solid var(--border);border-radius:9px;background:var(--bg-el);font-size:.82rem;color:var(--text-s);display:flex;flex-direction:column;gap:.25rem;overflow-wrap:anywhere}
.ts-fw-testout.is-block{border-color:rgba(248,113,113,.45)}.ts-fw-testout.is-block strong{color:var(--red)}
.ts-fw-testout.is-monitor{border-color:rgba(245,158,66,.45)}.ts-fw-testout.is-monitor strong{color:var(--orange)}
.ts-fw-testout.is-allow strong{color:var(--green)}
.ts-fw-incidents{list-style:none;margin:0;padding:.35rem 0}
.ts-fw-incidents li{display:flex;gap:.6rem;padding:.55rem 1.1rem;font-size:.8rem;color:var(--text-2)}
.ts-fw-incidents i{color:var(--orange);margin-top:.2rem}
.ts-fw-incidents small{display:block;color:var(--text-t);font-size:.72rem}
.ts-fw-filters{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-bottom:.9rem}
.ts-fw-filters .ts-subscopes{margin:0}
.ts-fw-filters input[type=search]{flex:1;min-width:200px;max-width:340px}
.ts-fw-events{display:flex;flex-direction:column;gap:.5rem}
.ts-fw-ev{margin:0}
.ts-fw-ev > summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;list-style:none}
.ts-fw-ev > summary::-webkit-details-marker{display:none}
.ts-fw-ev-what{display:flex;flex-direction:column;min-width:0}
.ts-fw-ev-what strong{font-size:.86rem;color:var(--text);font-weight:500}
.ts-fw-ev-what code{font-size:.72rem;color:var(--text-t);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-fw-ev[open] > summary{border-bottom:1px solid var(--border)}
.ts-fw-ev-body{padding:.85rem 1rem}
.ts-fw-wrap{overflow-wrap:anywhere;word-break:break-word}
.ts-fw-ev-body form{display:inline}
.ts-fw-rulegroup{padding:.75rem 1.25rem;border-top:1px solid var(--border-s)}
.ts-fw-rulegroup:first-of-type{border-top:0}
.ts-fw-rulegroup ul{list-style:none;margin:.35rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem}
.ts-fw-rulegroup li{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;font-size:.82rem}
.ts-fw-rulegroup li form{margin-left:auto}
.ts-fw-builtin td{vertical-align:middle}
@media (max-width:900px){.ts-fw-steps,.ts-fw-tops{grid-template-columns:minmax(0,1fr)}.ts-fw-ev > summary{grid-template-columns:auto minmax(0,1fr)}.ts-fw-ev > summary > a,.ts-fw-ev > summary > .ts-muted{grid-column:2}}
.ts-fw-events > .ts-fw-ev + .ts-fw-ev{margin-top:0}
.ts-fw-ev-body .ts-btnrow{margin-top:.75rem}
.ts-fw-more{margin:.75rem 0 0;text-align:center}
.ts-fw .ts-panel-body > p.ts-small + .ts-btn{margin-top:.35rem}

/* ── Support AI · Available / Away (console sidebar, Support AI header, Behaviour) ── */
.ts-presence{display:inline-flex;align-items:center;gap:.45rem;padding:.3rem .75rem .3rem .6rem;border:1px solid var(--border-h);border-radius:999px;background:var(--bg-el);color:var(--text-2);font:inherit;font-size:.8rem;line-height:1.3;cursor:pointer;white-space:nowrap;transition:border-color .15s,background .15s}
.ts-presence:hover{border-color:var(--text-t);background:var(--card-h)}
.ts-presence:focus-visible{outline:2px solid var(--accent-l);outline-offset:2px}
.ts-presence:disabled{opacity:.6;cursor:progress}
.ts-presence-dot{width:8px;height:8px;border-radius:50%;background:var(--text-q);flex-shrink:0}
.ts-presence.is-available .ts-presence-dot,.ts-presence-dot.is-available{background:var(--green);box-shadow:0 0 0 3px rgba(61,214,140,.15)}
.ts-presence.is-away .ts-presence-dot,.ts-presence-dot.is-away{background:var(--orange)}
.ts-presence-dot.is-offline{background:var(--text-q)}
.ts-head-actions form[data-presence]{margin:0}
.ts-cside-me form{margin:0}
.ts-cside-me .ts-presence{align-self:flex-start;margin-top:.2rem;padding:.12rem .55rem .12rem .45rem;font-size:.72rem;border-color:var(--border)}
.ts-presence-list{list-style:none;margin:0;padding:.35rem 1.25rem 0}
.ts-presence-list li{display:flex;align-items:center;gap:.65rem;padding:.45rem 0;border-bottom:1px solid var(--border-s);min-width:0}
.ts-presence-list li > span:last-child{min-width:0}
.ts-presence-list strong{display:block;font-size:.86rem;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ts-presence-list small{display:block;font-size:.74rem;color:var(--text-t)}
.ts-presence-list + .ts-panel-body{padding-top:.75rem}
.ts-presence-tag{display:inline-flex;align-items:center;gap:.35rem;margin-left:.15rem;font-size:.74rem;color:var(--text-s);vertical-align:.05em}
.ts-teamnow{text-decoration:none}
.ts-teamnow:hover{color:var(--text)}
