/* Kai design system — the one canonical stylesheet. Version: see VERSION.
   Tokens, fonts, element base and shared components for every Kai-family app.
   Vendored into apps by kai-design-system/scripts/sync.mjs; do not edit a vendored copy.
   Specificity: element base uses :where() (zero), components are single classes. App
   stylesheets must remove their conflicting rules at the source instead of overriding these. */

@font-face{font-family:'Kai Display';src:url('./fonts/Manrope-Light.woff2') format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'Kai Geist';src:url('./fonts/Geist.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}

/* .kai-on-light / .kai-on-dark pin a subtree to one theme (e.g. a stage that is always dark). */
:root,.kai-on-light,.kai-on-dark{
  /* structure, type and motion: identical in both themes, so every scope gets them */
  --kai-radius-sheet:20px;--kai-radius-card:16px;--kai-radius-menu:12px;--kai-radius-control:10px;--kai-radius-item:8px;--kai-radius-pill:999px;
  --kai-display:'Kai Display','Kai Geist','Nirmala UI',sans-serif;
  --kai-body:'Kai Geist','Nirmala UI',system-ui,sans-serif;
  --kai-control-h:36px;--kai-field-h:38px;--kai-pill-h:44px;--kai-segment-h:30px;--kai-field-font:14px;
  --kai-ease:cubic-bezier(.2,.7,.2,1);--kai-fast:.16s;--kai-theme-fade:.45s;
  --kai-sp-1:8px;--kai-sp-2:14px;--kai-sp-3:22px;--kai-sp-4:34px;--kai-sp-5:52px;--kai-sp-6:80px;
  --kai-z-popover:1000;--kai-z-dialog:1100;
}
:root,.kai-on-light{
  /* surfaces */
  --kai-paper:#faf9f6;--kai-surface:#fffefa;--kai-wash:#f0f1ed;
  /* ink: one warm ink at three lightnesses */
  --kai-ink:#272e33;--kai-secondary:#49535b;--kai-muted:#626b72;
  /* edges */
  --kai-line:#e0e3df;--kai-line-soft:#eceeea;--kai-control:#869196;--kai-focus:#426e8a;
  --kai-action:#344f60;--kai-action-ink:#ffffff;--kai-select:#eaf0f1;
  /* the one accent: live state and "new" only, never chrome */
  --kai-accent:#d98c7f;--kai-accent-ink:#a94e41;--kai-accent-wash:#f8e8e3;
  /* state whispers: text or outline with a label, never a filled badge */
  --kai-good:oklch(.43 .12 145);--kai-critical:oklch(.46 .17 25);--kai-warn:oklch(.5 .11 70);
  /* shadows: popovers and dialogs only */
  --kai-shadow-pop:0 12px 32px #17242e26;--kai-shadow-dialog:0 24px 60px #17242e2e;
  --kai-backdrop:#18232c66;
  --kai-chevron: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.5 6 7.5 9 4.5' fill='none' stroke='%23626b72' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  color-scheme:light;
}

/* Dark is the same warm paper turned down, not a blue slate. */
:root[data-theme=dark],.kai-on-dark{
  --kai-paper:#131311;--kai-surface:#1a1a18;--kai-wash:#242422;
  --kai-ink:#f2f0ea;--kai-secondary:#c6c3ba;--kai-muted:#9a978e;
  --kai-line:#2d2d2a;--kai-line-soft:#252522;--kai-control:#6c6b64;--kai-focus:#d8d5cc;
  --kai-action:#e9e7e0;--kai-action-ink:#151513;--kai-select:#292926;
  --kai-accent:#e29a8c;--kai-accent-ink:#f0b3a6;--kai-accent-wash:#3b2c29;
  --kai-good:oklch(.76 .12 145);--kai-critical:oklch(.75 .13 25);--kai-warn:oklch(.8 .1 75);
  --kai-shadow-pop:0 12px 32px #0000008c;--kai-shadow-dialog:0 24px 60px #000000a6;
  --kai-backdrop:#000000a0;
  --kai-chevron: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.5 6 7.5 9 4.5' fill='none' stroke='%239a978e' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  color-scheme:dark;
}
:root[data-theme=dark] .kai-on-light{
  /* surfaces */
  --kai-paper:#faf9f6;--kai-surface:#fffefa;--kai-wash:#f0f1ed;
  /* ink: one warm ink at three lightnesses */
  --kai-ink:#272e33;--kai-secondary:#49535b;--kai-muted:#626b72;
  /* edges */
  --kai-line:#e0e3df;--kai-line-soft:#eceeea;--kai-control:#869196;--kai-focus:#426e8a;
  --kai-action:#344f60;--kai-action-ink:#ffffff;--kai-select:#eaf0f1;
  /* the one accent: live state and "new" only, never chrome */
  --kai-accent:#d98c7f;--kai-accent-ink:#a94e41;--kai-accent-wash:#f8e8e3;
  /* state whispers: text or outline with a label, never a filled badge */
  --kai-good:oklch(.43 .12 145);--kai-critical:oklch(.46 .17 25);--kai-warn:oklch(.5 .11 70);
  /* radii */
  /* type */
  /* control geometry: 36px dense on desktop, 44px on touch and phones */
  /* motion */
  /* spacing rhythm */
  /* shadows: popovers and dialogs only */
  --kai-shadow-pop:0 12px 32px #17242e26;--kai-shadow-dialog:0 24px 60px #17242e2e;
  --kai-backdrop:#18232c66;
  --kai-chevron: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.5 6 7.5 9 4.5' fill='none' stroke='%23626b72' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  color-scheme:light;
}

@media (max-width:800px),(pointer:coarse){
  :root,.kai-on-light,.kai-on-dark{--kai-control-h:44px;--kai-field-h:44px;--kai-segment-h:44px}
}
/* Phones: 16px field text so iOS does not zoom on focus. */
@media (max-width:600px),(pointer:coarse){:root,.kai-on-light,.kai-on-dark{--kai-field-font:16px}}

/* ---------- Element base (zero specificity) ---------- */
:where(html){background:var(--kai-paper);color:var(--kai-ink);font:14px/1.5 var(--kai-body);-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%}
:where(body){margin:0;background:var(--kai-paper);color:var(--kai-ink);font-family:var(--kai-body)}
:where(*,*::before,*::after){box-sizing:border-box}
:where(button,input,select,textarea){font:inherit;color:inherit;letter-spacing:inherit}
:where(h1,h2,h3,h4,h5,h6){font-synthesis:none;text-wrap:balance}
:where(h1){font-family:var(--kai-display);font-weight:300;letter-spacing:-.03em;line-height:1.15}
:where(a){color:inherit}
:where(:focus-visible){outline:2px solid var(--kai-focus);outline-offset:3px}
::selection{background:var(--kai-ink);color:var(--kai-paper)}
:where([hidden]:not([hidden=until-found])){display:none!important}

/* ---------- Typography helpers ---------- */
.kai-display{font-family:var(--kai-display);font-weight:300;font-synthesis:none;letter-spacing:-.03em}
.kai-title{font-family:var(--kai-display);font-weight:300;font-synthesis:none;font-size:32px;line-height:1.15;letter-spacing:-1px;margin:0;text-wrap:balance}
/* Generated stop: only on headings that end in a letter. Add data-no-stop to opt out. */
.kai-title.has-stop:not([data-no-stop])::after{content:".";color:var(--kai-muted)}
.kai-eyebrow{display:block;font-size:10px;letter-spacing:.14em;font-weight:600;color:var(--kai-muted);text-transform:uppercase}
.kai-muted{color:var(--kai-muted)}
.kai-small{font-size:12px}
.kai-num{font-variant-numeric:tabular-nums}
.kai-sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media (max-width:800px){.kai-title{font-size:28px}}

/* ---------- Buttons ----------
   One geometry for every state. The label is centred in the control on both axes; icon+label
   centre as a group; .has-edge reserves the same inline space on both sides so the label stays
   centred when an icon sits at one edge. Loading keeps the label in the flow (invisible) so the
   width never changes, and the spinner is laid over the centre. */
.kai-button{
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  min-height:var(--kai-control-h);min-width:var(--kai-control-h);padding:0 14px;margin:0;
  border:1px solid transparent;border-radius:var(--kai-radius-control);
  background:var(--kai-wash);color:var(--kai-secondary);
  font:500 14px/1.2 var(--kai-body);letter-spacing:normal;text-align:center;text-decoration:none;text-transform:none;
  white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;
  transition:background-color var(--kai-fast) ease,color var(--kai-fast) ease,border-color var(--kai-fast) ease,opacity var(--kai-fast) ease;
}
.kai-button:hover{background:color-mix(in oklab,var(--kai-wash),var(--kai-ink) 7%);color:var(--kai-ink)}
.kai-button:active{background:color-mix(in oklab,var(--kai-wash),var(--kai-ink) 12%)}
.kai-button:focus-visible{outline:2px solid var(--kai-focus);outline-offset:2px}
.kai-button.is-primary{background:var(--kai-ink);color:var(--kai-paper)}
.kai-button.is-primary:hover{background:var(--kai-ink);color:var(--kai-paper);opacity:.88}
.kai-button.is-primary:active{opacity:.8}
.kai-button.is-action{background:var(--kai-action);color:var(--kai-action-ink)}
.kai-button.is-action:hover{background:var(--kai-action);color:var(--kai-action-ink);opacity:.9}
.kai-button.is-danger{color:var(--kai-critical)}
.kai-button.is-danger:hover{color:var(--kai-critical)}
.kai-button.is-ghost{background:transparent;border-color:var(--kai-line);color:var(--kai-ink)}
.kai-button.is-ghost:hover{background:var(--kai-wash);border-color:var(--kai-control)}
.kai-button.is-quiet{background:transparent;color:var(--kai-secondary)}
.kai-button.is-quiet:hover{background:var(--kai-wash);color:var(--kai-ink)}
@media (min-width:801px) and (pointer:fine){.kai-button.is-small{min-height:32px;min-width:32px;padding:0 12px;font-size:12.5px}}
.kai-button.is-block{display:flex;width:100%}
.kai-button.is-pill{border-radius:var(--kai-radius-pill);min-height:var(--kai-pill-h);padding:0 20px;font-size:14px}
/* Controls never get squeezed by a flex row; only a button with a truncating .kai-label may shrink. */
.kai-button,.kai-pill{flex-shrink:0}
.kai-button:has(> .kai-label){flex-shrink:1;min-width:0}
.kai-pill.is-round{flex:none}
.kai-button > svg,.kai-icon-button > svg,.kai-pill > svg{flex:none;width:18px;height:18px}
.kai-button > .kai-label{min-width:0;overflow:hidden;text-overflow:ellipsis}
/* Edge icon: symmetric reserve so the label stays centred. */
.kai-button.has-edge{padding-inline:calc(14px + 18px + 8px)}
.kai-button.has-edge > .kai-edge{position:absolute;top:50%;translate:0 -50%;width:18px;height:18px;display:grid;place-items:center}
.kai-button.has-edge > .kai-edge:first-child{left:14px}
.kai-button.has-edge > .kai-edge:last-child{right:14px}
.kai-button:disabled,.kai-button[aria-disabled=true],.kai-icon-button:disabled,.kai-icon-button[aria-disabled=true]{opacity:.5;cursor:not-allowed;pointer-events:none}
.kai-button[aria-busy=true],.kai-icon-button[aria-busy=true]{cursor:progress;pointer-events:none}
.kai-button[aria-busy=true] > *:not(.kai-spinner),.kai-icon-button[aria-busy=true] > *:not(.kai-spinner){visibility:hidden}
.kai-button[aria-busy=true]{color:transparent}
.kai-button[aria-busy=true] > .kai-spinner,.kai-icon-button[aria-busy=true] > .kai-spinner{position:absolute;inset:0;margin:auto;visibility:visible;color:var(--kai-secondary)}
.kai-button.is-primary[aria-busy=true] > .kai-spinner{color:var(--kai-paper)}
.kai-button:not([aria-busy=true]) > .kai-spinner,.kai-icon-button:not([aria-busy=true]) > .kai-spinner{display:none}
.kai-spinner{display:inline-block;width:16px;height:16px;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:kai-spin .8s linear infinite}
@keyframes kai-spin{to{transform:rotate(360deg)}}

.kai-icon-button{
  position:relative;display:inline-grid;place-items:center;flex:none;
  width:var(--kai-control-h);height:var(--kai-control-h);padding:0;margin:0;border:0;
  border-radius:var(--kai-radius-control);background:transparent;color:var(--kai-secondary);
  font:400 18px/1 var(--kai-body);cursor:pointer;-webkit-tap-highlight-color:transparent;
  transition:background-color var(--kai-fast) ease,color var(--kai-fast) ease;
}
.kai-icon-button:hover,.kai-icon-button[aria-expanded=true],.kai-icon-button[aria-pressed=true]{background:var(--kai-wash);color:var(--kai-ink)}
.kai-icon-button:focus-visible{outline:2px solid var(--kai-focus);outline-offset:2px}

/* Chrome pill: masthead links, theme toggle, marketing calls to action. */
.kai-pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--kai-pill-h);padding:0 20px;
  border:1px solid var(--kai-line);border-radius:var(--kai-radius-pill);background:var(--kai-paper);color:var(--kai-ink);
  font:400 13px/1.2 var(--kai-body);white-space:nowrap;text-decoration:none;cursor:pointer;
  transition:background-color var(--kai-theme-fade) ease,border-color var(--kai-theme-fade) ease,color var(--kai-theme-fade) ease}
.kai-pill:hover{background:var(--kai-wash);border-color:var(--kai-control)}
.kai-pill.is-solid{background:var(--kai-ink);color:var(--kai-paper);border-color:var(--kai-ink)}
.kai-pill.is-solid:hover{background:var(--kai-secondary);border-color:var(--kai-secondary)}
.kai-pill.is-round{width:var(--kai-pill-h);padding:0;font-size:18px}
/* Matched dialog/confirm pair: same height, same min width, same type. */
.kai-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;align-items:stretch}
.kai-actions > .kai-button,.kai-actions > .kai-pill{min-width:min(168px,100%);min-height:44px;font-size:14px}
.kai-actions.is-end{justify-content:flex-end}
@media (max-width:480px){.kai-actions > .kai-button,.kai-actions > .kai-pill{flex:1 1 0}}

/* ---------- Fields ---------- */
.kai-field{display:grid;align-content:start;gap:8px;min-width:0}
.kai-field > label,.kai-field-label,:where(.kai-field) > legend{font-size:12px;font-weight:500;line-height:1.4;color:var(--kai-secondary)}
.kai-field-hint{font-size:12px;line-height:1.45;color:var(--kai-muted)}
.kai-field-error{font-size:13px;line-height:1.45;color:var(--kai-critical)}
.kai-field-error:empty{display:none}
.kai-required{color:var(--kai-muted);font-weight:400}
:where(input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file],[type=hidden],[type=submit],[type=button],[type=reset],[type=image]),select,textarea),.kai-input{
  display:block;width:100%;min-width:0;min-height:var(--kai-field-h);margin:0;padding:8px 12px;
  background:var(--kai-surface);color:var(--kai-ink);border:1px solid var(--kai-line);border-radius:var(--kai-radius-control);
  font:400 var(--kai-field-font)/1.4 var(--kai-body);
  transition:border-color var(--kai-fast) ease,background-color var(--kai-fast) ease;
}
:where(textarea){resize:vertical;line-height:1.55;min-height:88px}
:where(input,textarea)::placeholder{color:var(--kai-muted);opacity:1}
:where(input:not([type=checkbox],[type=radio],[type=range],[type=color],[type=file]),select,textarea):hover:not(:disabled){border-color:var(--kai-control)}
:where(input,select,textarea):focus-visible{outline:2px solid var(--kai-focus);outline-offset:2px}
:where(input,select,textarea):disabled{opacity:.6;cursor:not-allowed}
:where(input,select,textarea)[aria-invalid=true]{border-color:var(--kai-critical)}
:where(input[type=checkbox],input[type=radio]){width:16px;height:16px;margin:0;accent-color:var(--kai-ink);flex:none}
.kai-check{display:inline-flex;align-items:center;gap:10px;min-height:var(--kai-control-h);font-size:14px;color:var(--kai-ink);cursor:pointer}
:where(fieldset){border:0;margin:0;padding:0;min-width:0}
.kai-search{position:relative;display:block}
.kai-search > input{border-radius:var(--kai-radius-pill);padding-left:38px;background:var(--kai-wash);border-color:transparent}
.kai-search > input:focus-visible{background:var(--kai-surface)}
.kai-search > svg{position:absolute;left:13px;top:50%;translate:0 -50%;width:16px;height:16px;color:var(--kai-muted);pointer-events:none}

/* ---------- Select (closed state, every browser) ----------
   The native <select> stays the focusable, labelled form control. kai.js replaces the OS popup
   with an in-page listbox of exactly the trigger's width in every engine. (appearance:base-select
   was evaluated and rejected: its internal label cannot truncate inside the trigger, so long
   selected values ran under the chevron in Chromium 151 and WebKit 26.4.) */
:where(select:not([multiple],[size])){
  appearance:none;-webkit-appearance:none;cursor:pointer;
  padding-right:36px;background-image:var(--kai-chevron);background-repeat:no-repeat;background-position:right 12px center;background-size:12px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left;
}
/* In-page listbox (kai.js): the open state of every select, and of custom comboboxes. */
.kai-listbox{
  position:fixed;z-index:var(--kai-z-popover);box-sizing:border-box;margin:0;padding:5px;
  overflow:auto;overscroll-behavior:contain;list-style:none;
  background:var(--kai-surface);color:var(--kai-ink);border:1px solid var(--kai-line);border-radius:var(--kai-radius-menu);box-shadow:var(--kai-shadow-pop);
  font:400 14px/1.4 var(--kai-body);inset:auto;
}
.kai-listbox:popover-open{display:block}
.kai-listbox [role=option]{display:flex;align-items:center;gap:10px;min-height:40px;padding:9px 12px;border-radius:var(--kai-radius-item);white-space:normal;overflow-wrap:anywhere;cursor:pointer}
.kai-listbox [role=option][aria-selected=true]{font-weight:500;background:var(--kai-wash)}
.kai-listbox [role=option][aria-selected=true]::after{content:"";flex:none;margin-left:auto;width:9px;height:5px;border-left:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(-45deg)}
.kai-listbox:focus,.kai-listbox:focus-visible{outline:none}
.kai-listbox [role=option].is-active{background:var(--kai-wash)}
.kai-listbox.is-kbd [role=option].is-active{outline:2px solid var(--kai-focus);outline-offset:-2px}
.kai-listbox [role=option][aria-disabled=true]{color:var(--kai-muted);opacity:.6;cursor:not-allowed}
.kai-listbox [role=group] > [role=presentation]{display:block;padding:10px 12px 4px;font-size:10px;letter-spacing:.14em;font-weight:600;text-transform:uppercase;color:var(--kai-muted)}
.kai-listbox .kai-listbox-empty{padding:10px 12px;color:var(--kai-muted)}
select[aria-expanded=true]{border-color:var(--kai-control)}

/* ---------- Menus (action menus, account menus) ---------- */
.kai-menu{position:fixed;z-index:var(--kai-z-popover);display:grid;gap:2px;box-sizing:border-box;margin:0;padding:6px;inset:auto;
  background:var(--kai-surface);color:var(--kai-ink);border:1px solid var(--kai-line);border-radius:var(--kai-radius-menu);box-shadow:var(--kai-shadow-pop);
  max-height:min(360px,60dvh);overflow:auto;overscroll-behavior:contain}
.kai-menu:not(:popover-open):not(.is-static)[popover]{display:none}
.kai-menu.is-static{position:absolute}
.kai-menu-item{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:8px 10px;margin:0;border:0;border-radius:var(--kai-radius-item);
  background:transparent;color:var(--kai-ink);font:400 13.5px/1.4 var(--kai-body);text-align:left;text-decoration:none;cursor:pointer;white-space:normal;overflow-wrap:anywhere}
.kai-menu-item:hover,.kai-menu-item:focus-visible{background:var(--kai-wash);outline:none}
.kai-menu-item.is-danger{color:var(--kai-critical)}
.kai-menu-item:disabled,.kai-menu-item[aria-disabled=true]{color:var(--kai-muted);cursor:not-allowed;background:transparent}
.kai-menu-item > svg{flex:none;width:18px;height:18px}
.kai-menu-sep{height:1px;margin:4px 6px;background:var(--kai-line)}
@media (max-width:800px),(pointer:coarse){.kai-menu-item{min-height:44px}}

/* ---------- Dialogs ---------- */
.kai-dialog{
  box-sizing:border-box;width:calc(100% - 32px);max-width:440px;max-height:calc(var(--kai-vvh,100dvh) - 32px);
  margin:auto;padding:32px 28px 28px;overflow:auto;overscroll-behavior:contain;
  background:var(--kai-surface);color:var(--kai-ink);border:1px solid var(--kai-line);border-radius:var(--kai-radius-card);box-shadow:var(--kai-shadow-dialog);
}
.kai-dialog.is-wide{max-width:640px}
.kai-dialog::backdrop{background:var(--kai-backdrop);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.kai-dialog[open]{display:grid;gap:14px;align-content:start}
.kai-dialog-title{font-family:var(--kai-display);font-weight:300;font-synthesis:none;font-size:28px;letter-spacing:-.8px;line-height:1.2;margin:0;padding-right:28px}
.kai-dialog-body{font-size:14px;line-height:1.6;color:var(--kai-secondary);margin:0}
.kai-dialog-close{position:absolute;right:10px;top:10px}
.kai-dialog > .kai-actions{margin-top:8px}
/* Phone: a bottom sheet that rides above the on-screen keyboard (kai.js sets --kai-vvh/--kai-vvb). */
@media (max-width:600px){
  .kai-dialog.is-sheet{width:100%;max-width:none;margin:auto 0 var(--kai-vvb,0px);border-radius:var(--kai-radius-card) var(--kai-radius-card) 0 0;border-bottom:0;
    padding:24px 20px calc(20px + env(safe-area-inset-bottom));max-height:calc(var(--kai-vvh,100dvh) - 24px)}
  .kai-dialog{padding:24px 20px 20px}
}

/* ---------- Tables and workspaces ---------- */
.kai-workspace{display:flex;flex-direction:column;min-height:0;height:100%}
.kai-workspace > .kai-workspace-head{flex:none}
.kai-table-wrap{position:relative;min-height:0;max-width:100%;overflow:auto;overscroll-behavior:contain;border:1px solid var(--kai-line);border-radius:var(--kai-radius-card);background:var(--kai-surface);scrollbar-width:thin}
.kai-workspace > .kai-table-wrap{flex:1}
.kai-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}
.kai-table th{position:sticky;top:0;z-index:1;background:var(--kai-surface);text-align:left;font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--kai-muted);padding:12px 14px;border-bottom:1px solid var(--kai-ink);white-space:nowrap}
.kai-table td{padding:12px 14px;border-bottom:1px solid var(--kai-line);vertical-align:top;overflow-wrap:anywhere}
.kai-table tr:last-child td{border-bottom:0}
.kai-table tbody tr:hover td{background:var(--kai-wash)}
.kai-table .is-num,.kai-table [data-num]{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.kai-table th button{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:4px}
.kai-table th button:focus-visible{outline:2px solid var(--kai-focus);outline-offset:2px;border-radius:4px}

/* ---------- Navigation ---------- */
.kai-nav{display:grid;grid-template-columns:minmax(0,1fr);gap:2px}
.kai-nav a,.kai-nav-item{display:flex;align-items:center;gap:10px;min-height:var(--kai-control-h);padding:0 12px;border-radius:var(--kai-radius-control);font-size:14px;color:var(--kai-secondary);text-decoration:none;transition:background-color var(--kai-fast) ease,color var(--kai-fast) ease}
button.kai-nav-item{width:100%;margin:0;border:0;background:transparent;font:inherit;font-size:14px;text-align:left;justify-content:flex-start;cursor:pointer}
.kai-nav a:hover,.kai-nav-item:hover{background:var(--kai-wash);color:var(--kai-ink)}
.kai-nav a[aria-current],.kai-nav-item[aria-current]{background:var(--kai-wash);color:var(--kai-ink);font-weight:500}
.kai-nav svg{flex:none;width:18px;height:18px}
.kai-tabs{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--kai-line)}
.kai-tabs > a,.kai-tabs > button,.kai-tab{flex:none;display:inline-flex;align-items:center;justify-content:center;min-height:var(--kai-control-h);min-width:var(--kai-control-h);padding:0 12px;margin:0 0 -1px;border:0;border-bottom:2px solid transparent;background:none;color:var(--kai-secondary);font:400 14px/1.2 var(--kai-body);text-decoration:none;cursor:pointer}
.kai-tabs > a:hover,.kai-tabs > button:hover,.kai-tab:hover{color:var(--kai-ink)}
.kai-tabs > [aria-selected=true],.kai-tabs > [aria-current],.kai-tab[aria-selected=true]{color:var(--kai-ink);font-weight:500;border-bottom-color:var(--kai-ink)}
.kai-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--kai-surface);border-top:1px solid var(--kai-line)}
.kai-tabbar a,.kai-tabbar button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:48px;padding:6px 2px;border:0;border-radius:var(--kai-radius-control);background:none;font:400 10.5px/1.2 var(--kai-body);color:var(--kai-muted);text-decoration:none;cursor:pointer}
.kai-tabbar svg{width:20px;height:20px}
.kai-tabbar [aria-current],.kai-tabbar [aria-selected=true]{color:var(--kai-ink);font-weight:500;background:var(--kai-wash)}

/* ---------- Chips, segmented, status ---------- */
.kai-chips{display:flex;flex-wrap:wrap;gap:8px}
.kai-chip{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--kai-control-h);padding:0 14px;margin:0;
  border:1px solid var(--kai-line);border-radius:var(--kai-radius-pill);background:var(--kai-surface);color:var(--kai-secondary);
  font:500 13px/1.2 var(--kai-body);white-space:nowrap;cursor:pointer;transition:background-color var(--kai-fast) ease,color var(--kai-fast) ease,border-color var(--kai-fast) ease}
.kai-chip:hover{background:var(--kai-wash)}
.kai-chip[aria-pressed=true],.kai-chip[aria-selected=true],.kai-chip:has(input:checked){background:var(--kai-ink);color:var(--kai-paper);border-color:var(--kai-ink)}
.kai-chip:disabled,.kai-chip[aria-disabled=true]{border-style:dashed;color:var(--kai-muted);background:transparent;cursor:not-allowed}
.kai-chip > input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.kai-chip:has(input:focus-visible){outline:2px solid var(--kai-focus);outline-offset:2px}
.kai-segmented{display:inline-flex;padding:3px;gap:2px;border-radius:var(--kai-radius-control);background:var(--kai-wash)}
.kai-segmented > button,.kai-segmented > label{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:var(--kai-segment-h);min-width:var(--kai-segment-h);padding:0 12px;border:0;border-radius:8px;background:transparent;color:var(--kai-secondary);font:500 13px/1.2 var(--kai-body);cursor:pointer}
.kai-segmented > [aria-pressed=true],.kai-segmented > [aria-selected=true],.kai-segmented > label:has(input:checked){background:var(--kai-surface);color:var(--kai-ink);box-shadow:0 0 0 1px var(--kai-line)}
.kai-segmented > label > input{position:absolute;inset:0;opacity:0;margin:0;cursor:pointer}
.kai-status{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:var(--kai-radius-pill);background:var(--kai-wash);color:var(--kai-secondary);font:400 12px/1.5 var(--kai-body);white-space:nowrap}
.kai-status.is-good{color:var(--kai-good)}.kai-status.is-critical{color:var(--kai-critical)}.kai-status.is-warn{color:var(--kai-warn)}
.kai-live{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--kai-accent);animation:kai-breathe 1.8s ease-out infinite}
@keyframes kai-breathe{0%{box-shadow:0 0 0 0 color-mix(in oklab,var(--kai-accent),transparent 30%)}100%{box-shadow:0 0 0 10px transparent}}

/* ---------- Surfaces and states ---------- */
.kai-sheet{background:var(--kai-surface);border:1px solid var(--kai-line);border-radius:var(--kai-radius-sheet)}
.kai-card{background:var(--kai-surface);border:1px solid var(--kai-line);border-radius:var(--kai-radius-card)}
.kai-notice{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:var(--kai-radius-card);background:var(--kai-wash);color:var(--kai-ink);font-size:14px;line-height:1.5;overflow-wrap:anywhere}
.kai-notice.is-critical{color:var(--kai-critical)}
.kai-notice.is-good{color:var(--kai-good)}
.kai-empty{padding:32px 16px;margin:0 auto;max-width:40ch;text-align:center;color:var(--kai-muted);font-size:14px;line-height:1.6}
.kai-error{color:var(--kai-critical);font-size:13px;line-height:1.45}
.kai-skeleton{border-radius:var(--kai-radius-item);background:var(--kai-wash);animation:kai-pulse 1.6s ease-in-out infinite}
@keyframes kai-pulse{50%{opacity:.55}}
.kai-hairline{border:0;border-top:1px solid var(--kai-line);margin:0}
.kai-link{color:var(--kai-ink);text-decoration:underline;text-decoration-color:var(--kai-control);text-underline-offset:4px}
.kai-link:hover{text-decoration-color:var(--kai-ink)}
.kai-skip{position:fixed;left:16px;top:-100px;z-index:2000;padding:12px;border-radius:8px;background:var(--kai-ink);color:var(--kai-paper)}
.kai-skip:focus{top:12px}

/* Theme cross-fade on the chrome that shows it. */
.kai-theme-fade,.kai-theme-fade body{transition:background-color var(--kai-theme-fade) ease,color var(--kai-theme-fade) ease}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
}
