@import url('https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=Hanken+Grotesk:wght@400;500;600;700&family=Space+Mono:wght@400;700&display=swap');

/* ==========================================================================
   KIN PARTNERS , MASTER TOKENS.  Neutral graphite direction, 8 August 2026.
   Parent system for Kai Growth Desk, Cleo, Custom Builds and Kin Marketing.
   Two laws: grounds are neutral graphite (0,10% saturation); green is rationed
   to live state, focus and meaningful motion , never a broad fill or wash.
   ========================================================================== */
:root {
  /* --- Neutral graphite ladder , each plane ≥5 L* from its neighbour --- */
  --void: #08090A;          /* deepest ground: page base, hero field, empty field */
  --carbon: #0F1012;        /* application ground, fixed top header */
  --ink: #191B1E;           /* panel and card ground */
  --raised: #26282C;        /* raised surface, inputs, table head, hover target */
  --edge: #33363B;          /* machined hairline, dividers, bracket ticks */
  --hairline-hi: #42464C;   /* active or focused edge */

  /* --- Brand greens , LOCKED hexes, rationed use --- */
  --olive: #5F6D4C;         /* decision edges, borders that carry meaning */
  --olive-lift: #9BB068;    /* primary fill, enabled / approved live state, meters */
  --signal: #C4EE4F;        /* live dot and focus ring ONLY. never a fill, never a logo */
  --live: #9BB068;          /* current-step / live marker fill */

  /* --- Text neutrals , LOCKED --- */
  --sand: #EEE8DB;          /* primary text (15.6:1 on carbon, 14.1:1 on ink) */
  --sage: #8E9280;          /* labels, captions, muted text, secondary borders */

  /* --- Semantic signals , LOCKED --- */
  --amber: #D8BD78;         /* pending, degraded, after hours, budget warning */
  --clay: #E69A88;          /* failed, destructive, validation error, emergency */

  /* --- Lines , neutral, visible without any glow --- */
  --line: rgba(255, 255, 255, 0.08);
  --line-strong: rgba(255, 255, 255, 0.14);
  --line-soft: rgba(255, 255, 255, 0.05);

  /* --- Fills and surface treatments --- */
  --glow: rgba(255, 255, 255, 0.10);
  --hover: rgba(255, 255, 255, 0.03);
  --panel-soft: rgba(255, 255, 255, 0.045);
  --fill-faint: rgba(255, 255, 255, 0.03);
  --bevel: rgba(255, 255, 255, 0.06);
  --grid: rgba(255, 255, 255, 0.022);
  --focus: rgba(196, 238, 79, 0.55);

  /* --- Type --- */
  --font-display: "Bricolage Grotesque", "Avenir Next", sans-serif;
  --font-body: "Hanken Grotesk", "Avenir Next", system-ui, sans-serif;
  --font-mono: "Space Mono", ui-monospace, "Courier New", monospace;

  /* --- Type scale (product) --- */
  --t-display: clamp(38px, 4.4vw, 62px); /* @kind font */
  --t-h1: 30px; --t-h2: 22px; --t-h3: 17px;
  --t-body: 15px; --t-small: 13.5px;
  --t-label: 10.5px;  /* mono, tracked +0.16em, uppercase */

  /* --- Space scale --- */
  --s1: 4px; --s2: 8px; --s3: 12px; --s4: 16px; --s5: 20px;
  --s6: 28px; --s7: 40px; --s8: 56px; --s9: 80px;

  --header: 64px;
  --rail: 248px;
  --pad: 28px;
  --r-panel: 14px;
  --r-ctl: 8px;
  --r-pill: 999px;
  --lift: 0 24px 48px -32px rgba(0, 0, 0, 0.7);
  --lift-hi: 0 40px 80px -40px rgba(0, 0, 0, 0.85);

  /* --- Motion: instrument timings. Nothing decorative exceeds 240ms. --- */
  --e-out: cubic-bezier(0.2, 0.7, 0.2, 1); /* @kind other */
  --e-in-out: cubic-bezier(0.5, 0, 0.2, 1); /* @kind other */
  --d-tap: 90ms;      /* @kind other */ /* press, toggle, checkbox */
  --d-ui: 160ms;      /* @kind other */ /* hover, focus, pill change */
  --d-panel: 240ms;   /* @kind other */ /* drawer, modal, expand */
  --d-move: 420ms;    /* @kind other */ /* information moving between planes */
  --d-live: 2400ms;   /* @kind other */ /* live-state breathing loop */
}
@media (max-width: 1360px) { :root { --pad: 24px; --rail: 224px; } }
@media (max-width: 1024px) { :root { --pad: 20px; --rail: 0px; } }

* { box-sizing: border-box; }
html { background: var(--void); }
body { margin: 0; font-family: var(--font-body); font-size: var(--t-body); line-height: 1.55; color: var(--sand); -webkit-font-smoothing: antialiased; text-wrap: pretty; }
a { color: var(--sand); text-decoration: none; }
a:hover { color: var(--olive-lift); }
button, input, select, textarea { font: inherit; color: inherit; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: 3px; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; } }

/* ==========================================================================
   KIN PARTNERS , SHARED COMPONENT LAYER.  Product-neutral.
   Every class here is safe in Kai Growth Desk, Cleo, Custom Builds and Marketing.
   Nothing here names a product, a caller, a campaign or a client.
   ========================================================================== */

/* --- 1. TYPE ROLES ------------------------------------------------------- */
.k-display { font-family: var(--font-display); font-weight: 800; font-size: var(--t-display); line-height: 0.98; letter-spacing: -0.025em; margin: 0; }
.k-h1 { font-family: var(--font-display); font-weight: 700; font-size: var(--t-h1); line-height: 1.1; letter-spacing: -0.02em; margin: 0; }
.k-h2 { font-family: var(--font-display); font-weight: 700; font-size: var(--t-h2); line-height: 1.2; letter-spacing: -0.015em; margin: 0; }
.k-h3 { font-family: var(--font-body); font-weight: 600; font-size: var(--t-h3); line-height: 1.35; margin: 0; }
.k-body { font-size: var(--t-body); margin: 0; }
.k-small { font-size: var(--t-small); color: var(--sage); margin: 0; }
.k-lede { font-size: 17px; line-height: 1.5; color: color-mix(in oklab, var(--sand) 82%, var(--sage)); margin: 0; max-width: 60ch; }
.k-label { font-family: var(--font-mono); font-size: var(--t-label); letter-spacing: 0.16em; text-transform: uppercase; color: var(--sage); margin: 0; }
.k-mono { font-family: var(--font-mono); font-size: var(--t-small); letter-spacing: 0.01em; font-variant-numeric: tabular-nums; }
.k-num { font-family: var(--font-mono); font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }
.k-link { color: var(--sand); box-shadow: inset 0 -1px 0 var(--line-strong); transition: color var(--d-ui) var(--e-out), box-shadow var(--d-ui) var(--e-out); }
.k-link:hover { color: var(--olive-lift); box-shadow: inset 0 -1px 0 var(--olive-lift); }

/* --- 2. SURFACES --------------------------------------------------------- */
.k-panel { background: var(--ink); border: 1px solid var(--line); border-radius: var(--r-panel); position: relative; }
.k-panel::before { content: ""; position: absolute; inset: 0 0 auto; height: 1px; background: var(--bevel); border-radius: var(--r-panel) var(--r-panel) 0 0; pointer-events: none; }
.k-panel-pad { padding: var(--pad); }
.k-raised { background: var(--raised); border: 1px solid var(--line); border-radius: var(--r-ctl); }
.k-sunken { background: var(--void); border: 1px solid var(--line-soft); border-radius: var(--r-ctl); }
.k-decision { border-left: 3px solid var(--olive); padding-left: var(--s5); }
.k-hr { height: 1px; background: var(--line); border: 0; margin: 0; }
.k-grid-field { background-image: linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px); background-size: 32px 32px; }
.k-glow-soft { box-shadow: 0 0 0 1px var(--glow), var(--lift); }

/* --- 3. BUTTONS ---------------------------------------------------------- */
.k-btn { display: inline-flex; align-items: center; gap: var(--s2); min-height: 40px; padding: 0 var(--s5); border-radius: var(--r-ctl); border: 1px solid var(--line-strong); background: var(--raised); color: var(--sand); font-size: var(--t-small); font-weight: 600; cursor: pointer; transition: background var(--d-ui) var(--e-out), border-color var(--d-ui) var(--e-out), transform var(--d-tap) var(--e-out); }
.k-btn:hover { border-color: var(--hairline-hi); background: color-mix(in oklab, var(--raised) 88%, var(--sand)); }
.k-btn:active { transform: translateY(1px); }
.k-btn--primary { background: var(--olive-lift); border-color: var(--olive-lift); color: #14170F; }
.k-btn--primary:hover { background: color-mix(in oklab, var(--olive-lift) 88%, var(--sand)); border-color: color-mix(in oklab, var(--olive-lift) 88%, var(--sand)); }
.k-btn--ghost { background: transparent; border-color: var(--line-strong); }
.k-btn--ghost:hover { background: var(--hover); }
.k-btn--quiet { background: transparent; border-color: transparent; color: var(--sage); }
.k-btn--quiet:hover { color: var(--sand); background: var(--hover); border-color: transparent; }
.k-btn--danger { background: transparent; border-color: color-mix(in oklab, var(--clay) 45%, transparent); color: var(--clay); }
.k-btn--danger:hover { background: color-mix(in oklab, var(--clay) 10%, transparent); border-color: var(--clay); }
.k-btn--sm { min-height: 32px; padding: 0 var(--s3); font-size: 12.5px; }
.k-btn--lg { min-height: 48px; padding: 0 var(--s6); font-size: 15px; }
.k-btn[disabled], .k-btn[aria-disabled="true"] { opacity: 0.42; cursor: not-allowed; transform: none; }
.k-btn-row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--s3); }
/* Disabled actions never stand alone , the reason sits beside the control. */
.k-why { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.04em; color: var(--sage); max-width: 34ch; }

/* --- 4. FIELDS ----------------------------------------------------------- */
.k-fieldset { display: grid; gap: var(--s2); }
.k-input, .k-select, .k-textarea { width: 100%; min-height: 42px; padding: 10px var(--s3); background: var(--fill-faint); border: 1px solid var(--line-strong); border-radius: var(--r-ctl); color: var(--sand); font-size: var(--t-body); transition: border-color var(--d-ui) var(--e-out), background var(--d-ui) var(--e-out); }
.k-textarea { min-height: 96px; resize: vertical; line-height: 1.5; }
.k-input::placeholder, .k-textarea::placeholder { color: color-mix(in oklab, var(--sage) 78%, transparent); }
.k-input:hover, .k-select:hover, .k-textarea:hover { border-color: var(--hairline-hi); }
.k-input:focus, .k-select:focus, .k-textarea:focus { outline: none; border-color: var(--olive-lift); background: var(--hover); box-shadow: 0 0 0 3px color-mix(in oklab, var(--signal) 18%, transparent); }
.k-select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--sage) 50%), linear-gradient(135deg, var(--sage) 50%, transparent 50%); background-position: right 18px center, right 12px center; background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; padding-right: 36px; }
.k-input[aria-invalid="true"], .k-textarea[aria-invalid="true"] { border-color: var(--clay); box-shadow: 0 0 0 3px color-mix(in oklab, var(--clay) 14%, transparent); }
.k-input[disabled], .k-select[disabled], .k-textarea[disabled] { opacity: 0.45; cursor: not-allowed; }
.k-help { font-size: 12.5px; color: var(--sage); }
.k-err { display: flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: 11.5px; letter-spacing: 0.04em; color: var(--clay); }
.k-ok { display: flex; align-items: center; gap: 6px; font-family: var(--font-mono); font-size: 11.5px; letter-spacing: 0.04em; color: var(--olive-lift); }
.k-search { position: relative; }
.k-search .k-input { padding-left: 38px; }
.k-search svg { position: absolute; left: 13px; top: 50%; transform: translateY(-50%); color: var(--sage); }
.k-check { display: inline-flex; align-items: flex-start; gap: var(--s3); cursor: pointer; }
.k-check input { appearance: none; flex: none; width: 18px; height: 18px; margin: 2px 0 0; border: 1px solid var(--line-strong); border-radius: 4px; background: var(--fill-faint); position: relative; cursor: pointer; transition: all var(--d-tap) var(--e-out); }
.k-check input:checked { background: var(--olive-lift); border-color: var(--olive-lift); }
.k-check input:checked::after { content: ""; position: absolute; left: 5px; top: 2px; width: 5px; height: 9px; border: 2px solid #14170F; border-top: 0; border-left: 0; transform: rotate(42deg); }
.k-switch { appearance: none; flex: none; width: 40px; height: 22px; border-radius: 999px; background: var(--raised); border: 1px solid var(--line-strong); position: relative; cursor: pointer; transition: background var(--d-ui) var(--e-out); }
.k-switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--sage); transition: transform var(--d-ui) var(--e-out), background var(--d-ui) var(--e-out); }
.k-switch:checked { background: color-mix(in oklab, var(--olive) 60%, var(--raised)); border-color: var(--olive); }
.k-switch:checked::after { transform: translateX(18px); background: var(--olive-lift); }

/* --- 5. SEGMENTED / TABS / FILTERS --------------------------------------- */
.k-seg { display: inline-flex; padding: 3px; gap: 2px; background: var(--void); border: 1px solid var(--line); border-radius: var(--r-pill); }
.k-seg > button { min-height: 30px; padding: 0 var(--s4); border: 0; border-radius: var(--r-pill); background: transparent; color: var(--sage); font-size: 12.5px; font-weight: 600; cursor: pointer; transition: all var(--d-ui) var(--e-out); }
.k-seg > button:hover { color: var(--sand); }
.k-seg > button[aria-selected="true"] { background: var(--raised); color: var(--sand); box-shadow: inset 0 1px 0 var(--bevel); }
.k-tabs { display: flex; gap: var(--s6); border-bottom: 1px solid var(--line); }
.k-tabs > button { padding: 0 0 var(--s3); border: 0; background: transparent; color: var(--sage); font-size: var(--t-small); font-weight: 600; cursor: pointer; position: relative; transition: color var(--d-ui) var(--e-out); }
.k-tabs > button:hover { color: var(--sand); }
.k-tabs > button[aria-selected="true"] { color: var(--sand); }
.k-tabs > button[aria-selected="true"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: var(--olive-lift); }
.k-chip { display: inline-flex; align-items: center; gap: 6px; min-height: 30px; padding: 0 var(--s3); border-radius: var(--r-pill); border: 1px solid var(--line); background: transparent; color: var(--sage); font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase; cursor: pointer; transition: all var(--d-ui) var(--e-out); }
.k-chip:hover { color: var(--sand); border-color: var(--line-strong); }
.k-chip[aria-pressed="true"] { color: var(--sand); border-color: var(--olive); background: color-mix(in oklab, var(--olive) 16%, transparent); }

/* --- 6. STATUS ----------------------------------------------------------- */
.k-pill { display: inline-flex; align-items: center; gap: 7px; height: 24px; padding: 0 10px; border-radius: var(--r-pill); border: 1px solid var(--line-strong); background: var(--fill-faint); font-family: var(--font-mono); font-size: 10.5px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--sage); white-space: nowrap; }
.k-pill i { flex: none; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.k-pill--live { color: var(--sand); border-color: color-mix(in oklab, var(--olive-lift) 46%, transparent); }
.k-pill--live i { background: var(--signal); box-shadow: 0 0 0 3px color-mix(in oklab, var(--signal) 22%, transparent); animation: k-breathe var(--d-live) var(--e-in-out) infinite; }
.k-pill--ok { color: var(--olive-lift); border-color: color-mix(in oklab, var(--olive-lift) 40%, transparent); }
.k-pill--pending { color: var(--amber); border-color: color-mix(in oklab, var(--amber) 38%, transparent); }
.k-pill--fail { color: var(--clay); border-color: color-mix(in oklab, var(--clay) 40%, transparent); }
.k-pill--off { color: var(--sage); }
@keyframes k-breathe { 0%, 100% { opacity: 1; } 50% { opacity: 0.34; } }
.k-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--sage); }
.k-dot--live { background: var(--signal); box-shadow: 0 0 0 3px color-mix(in oklab, var(--signal) 20%, transparent); animation: k-breathe var(--d-live) var(--e-in-out) infinite; }
.k-meter { height: 6px; border-radius: 3px; background: var(--raised); overflow: hidden; }
.k-meter > span { display: block; height: 100%; border-radius: 3px; background: var(--olive-lift); transition: width var(--d-move) var(--e-out); }
.k-meter--warn > span { background: var(--amber); }
.k-meter--over > span { background: var(--clay); }
.k-skel { background: linear-gradient(90deg, var(--raised) 0%, color-mix(in oklab, var(--raised) 72%, var(--sand)) 50%, var(--raised) 100%); background-size: 200% 100%; border-radius: 4px; animation: k-shim 1400ms linear infinite; }
@keyframes k-shim { to { background-position: -200% 0; } }

/* --- 7. BANNERS / TOASTS / EMPTY ----------------------------------------- */
.k-banner { display: flex; gap: var(--s4); align-items: flex-start; padding: var(--s4) var(--s5); border: 1px solid var(--line); border-left: 3px solid var(--sage); border-radius: var(--r-ctl); background: var(--fill-faint); }
.k-banner--ok { border-left-color: var(--olive-lift); }
.k-banner--warn { border-left-color: var(--amber); }
.k-banner--fail { border-left-color: var(--clay); }
.k-toast { display: flex; gap: var(--s3); align-items: center; padding: var(--s3) var(--s4); background: var(--raised); border: 1px solid var(--line-strong); border-radius: var(--r-ctl); box-shadow: var(--lift); font-size: var(--t-small); }
.k-empty { display: grid; gap: var(--s3); justify-items: center; text-align: center; padding: var(--s8) var(--s5); border: 1px dashed var(--line-strong); border-radius: var(--r-panel); background: var(--void); }
.k-empty svg { color: var(--edge); }

/* --- 8. TABLES / DATA ---------------------------------------------------- */
.k-table { width: 100%; border-collapse: separate; border-spacing: 0; font-size: var(--t-small); }
.k-table th { text-align: left; padding: 10px var(--s4); background: var(--raised); border-bottom: 1px solid var(--line); font-family: var(--font-mono); font-size: var(--t-label); letter-spacing: 0.14em; text-transform: uppercase; color: var(--sage); font-weight: 400; }
.k-table th:first-child { border-radius: var(--r-ctl) 0 0 0; }
.k-table th:last-child { border-radius: 0 var(--r-ctl) 0 0; }
.k-table td { padding: 13px var(--s4); border-bottom: 1px solid var(--line-soft); vertical-align: middle; }
.k-table tbody tr { transition: background var(--d-ui) var(--e-out); }
.k-table tbody tr:hover { background: var(--hover); }
.k-table tbody tr[aria-selected="true"] { background: var(--panel-soft); box-shadow: inset 3px 0 0 var(--olive); }
.k-table .k-num { font-size: 13px; }
.k-page { display: flex; align-items: center; gap: var(--s2); }
.k-page > button { min-width: 32px; height: 32px; border-radius: 6px; border: 1px solid var(--line); background: transparent; color: var(--sage); font-family: var(--font-mono); font-size: 12px; cursor: pointer; }
.k-page > button[aria-current="page"] { color: var(--sand); border-color: var(--hairline-hi); background: var(--raised); }
.k-metrics { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); border: 1px solid var(--line); border-radius: var(--r-ctl); overflow: hidden; }
.k-metric { padding: var(--s5); border-right: 1px solid var(--line); background: var(--fill-faint); }
.k-metric:last-child { border-right: 0; }
.k-metric b { display: block; font-family: var(--font-mono); font-weight: 700; font-size: 30px; line-height: 1.1; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; }
.k-metric span { display: block; margin-top: 6px; font-family: var(--font-mono); font-size: var(--t-label); letter-spacing: 0.14em; text-transform: uppercase; color: var(--sage); }

/* --- 9. SHELL: HEADER / RAIL / FOOTER ----------------------------------- */
.k-app { min-height: 100%; background: var(--carbon); }
.k-header { position: sticky; top: 0; z-index: 40; display: flex; align-items: center; gap: var(--s6); height: var(--header); padding: 0 var(--pad); background: color-mix(in oklab, var(--carbon) 88%, transparent); backdrop-filter: blur(14px); border-bottom: 1px solid var(--line); }
.k-nav { display: flex; align-items: center; gap: var(--s2); }
.k-nav a { padding: 7px var(--s3); border-radius: 6px; font-size: var(--t-small); font-weight: 600; color: var(--sage); transition: all var(--d-ui) var(--e-out); }
.k-nav a:hover { color: var(--sand); background: var(--hover); }
.k-nav a[aria-current="page"] { color: var(--sand); background: var(--raised); box-shadow: inset 0 1px 0 var(--bevel); }
.k-rail { width: var(--rail); flex: none; padding: var(--s5) var(--s4); border-right: 1px solid var(--line); background: var(--carbon); }
.k-rail a { display: flex; align-items: center; gap: var(--s3); padding: 9px var(--s3); border-radius: 6px; font-size: var(--t-small); font-weight: 600; color: var(--sage); }
.k-rail a[aria-current="page"] { color: var(--sand); background: var(--raised); box-shadow: inset 3px 0 0 var(--olive); }
.k-mobnav { display: flex; align-items: stretch; height: 60px; border-top: 1px solid var(--line); background: color-mix(in oklab, var(--carbon) 94%, transparent); backdrop-filter: blur(14px); }
.k-mobnav a { flex: 1; display: grid; place-items: center; gap: 3px; padding: 8px 0; min-height: 44px; font-family: var(--font-mono); font-size: 9.5px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--sage); }
.k-mobnav a[aria-current="page"] { color: var(--sand); }
.k-mobnav a[aria-current="page"] svg { color: var(--olive-lift); }
.k-footer { padding: var(--s9) var(--pad) var(--s6); background: var(--void); border-top: 1px solid var(--line); }
.k-attrib { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.1em; color: var(--sage); }

/* --- 10. OVERLAYS -------------------------------------------------------- */
.k-modal { width: min(520px, 92vw); background: var(--ink); border: 1px solid var(--line-strong); border-radius: var(--r-panel); box-shadow: var(--lift-hi); overflow: hidden; }
.k-modal-h { display: flex; align-items: center; justify-content: space-between; gap: var(--s4); padding: var(--s5) var(--s6); border-bottom: 1px solid var(--line); }
.k-modal-b { padding: var(--s6); display: grid; gap: var(--s4); }
.k-modal-f { display: flex; justify-content: flex-end; gap: var(--s3); padding: var(--s4) var(--s6); border-top: 1px solid var(--line); background: var(--fill-faint); }
.k-drawer { width: min(420px, 94vw); height: 100%; background: var(--ink); border-left: 1px solid var(--line-strong); box-shadow: var(--lift-hi); }
.k-scrim { position: absolute; inset: 0; background: rgba(8, 9, 10, 0.72); backdrop-filter: blur(2px); }

/* --- 11. MEDIA: AUDIO, WAVEFORM, TIMELINE ------------------------------- */
.k-audio { display: flex; align-items: center; gap: var(--s4); padding: var(--s3) var(--s4); background: var(--void); border: 1px solid var(--line); border-radius: var(--r-ctl); }
.k-play { flex: none; display: grid; place-items: center; width: 38px; height: 38px; min-width: 38px; border-radius: 50%; border: 1px solid var(--line-strong); background: var(--raised); color: var(--sand); cursor: pointer; transition: all var(--d-ui) var(--e-out); }
.k-play:hover { border-color: var(--olive-lift); color: var(--olive-lift); }
.k-play--primary { background: var(--olive-lift); border-color: var(--olive-lift); color: #14170F; }
.k-wave { flex: 1; display: flex; align-items: center; gap: 2px; height: 34px; min-width: 0; }
.k-wave > i { flex: 1; min-width: 1px; border-radius: 1px; background: var(--edge); transition: background var(--d-ui) var(--e-out); }
.k-wave > i.on { background: var(--olive-lift); }
.k-wave > i.cur { background: var(--signal); }
.k-time { font-family: var(--font-mono); font-size: 11.5px; letter-spacing: 0.04em; color: var(--sage); font-variant-numeric: tabular-nums; white-space: nowrap; }
.k-scrub { position: relative; height: 4px; border-radius: 2px; background: var(--raised); }
.k-scrub > span { position: absolute; inset: 0 auto 0 0; border-radius: 2px; background: var(--olive-lift); }
.k-scrub > b { position: absolute; top: -4px; width: 12px; height: 12px; border-radius: 50%; background: var(--sand); box-shadow: 0 0 0 3px color-mix(in oklab, var(--signal) 22%, transparent); }
.k-timeline { display: grid; gap: 0; }
.k-tl-step { display: grid; grid-template-columns: 22px 1fr; gap: var(--s4); padding-bottom: var(--s5); position: relative; }
.k-tl-step::before { content: ""; position: absolute; left: 10px; top: 18px; bottom: 0; width: 1px; background: var(--line); }
.k-tl-step:last-child { padding-bottom: 0; }
.k-tl-step:last-child::before { display: none; }
.k-tl-dot { width: 21px; height: 21px; border-radius: 50%; border: 1px solid var(--line-strong); background: var(--carbon); display: grid; place-items: center; }
.k-tl-dot > i { width: 7px; height: 7px; border-radius: 50%; background: var(--edge); }
.k-tl-step[data-state="done"] .k-tl-dot > i { background: var(--olive); }
.k-tl-step[data-state="live"] .k-tl-dot { border-color: var(--olive-lift); }
.k-tl-step[data-state="live"] .k-tl-dot > i { background: var(--signal); animation: k-breathe var(--d-live) var(--e-in-out) infinite; }

/* --- 12. VOICEPRINT , the parent Kin signal, seven bars ------------------ */
.k-voice { display: inline-flex; align-items: center; gap: 3px; height: 22px; }
.k-voice > i { width: 3px; border-radius: 2px; background: var(--sand); height: 40%; }
.k-voice > i:nth-child(1) { height: 34%; } .k-voice > i:nth-child(2) { height: 62%; }
.k-voice > i:nth-child(3) { height: 92%; } .k-voice > i:nth-child(4) { height: 100%; }
.k-voice > i:nth-child(5) { height: 92%; } .k-voice > i:nth-child(6) { height: 62%; }
.k-voice > i:nth-child(7) { height: 34%; }
.k-voice--live > i { background: var(--olive-lift); animation: k-vp 1600ms var(--e-in-out) infinite; }
.k-voice--live > i:nth-child(4) { background: var(--signal); }
.k-voice--live > i:nth-child(1) { animation-delay: 0ms } .k-voice--live > i:nth-child(2) { animation-delay: 90ms }
.k-voice--live > i:nth-child(3) { animation-delay: 180ms } .k-voice--live > i:nth-child(4) { animation-delay: 270ms }
.k-voice--live > i:nth-child(5) { animation-delay: 180ms } .k-voice--live > i:nth-child(6) { animation-delay: 90ms }
.k-voice--live > i:nth-child(7) { animation-delay: 0ms }
@keyframes k-vp { 0%, 100% { transform: scaleY(0.4); } 50% { transform: scaleY(1); } }
.k-voice--lg { height: 44px; gap: 5px; }
.k-voice--lg > i { width: 5px; }

/* --- 13. LAYOUT UTILITIES ----------------------------------------------- */
.k-row { display: flex; align-items: center; gap: var(--s3); }
.k-row--between { justify-content: space-between; }
.k-col { display: grid; gap: var(--s3); }
.k-stack { display: grid; gap: var(--s5); }
.k-wrap { width: 100%; max-width: 1240px; margin: 0 auto; padding: 0 var(--pad); }
.k-g2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--s5); }
.k-g3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--s5); }
.k-g4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--s4); }
@media (max-width: 900px) { .k-g3, .k-g4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 620px) { .k-g2, .k-g3, .k-g4 { grid-template-columns: minmax(0, 1fr); } }
.k-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
