body { -webkit-user-select: none; user-select: none; }
input, textarea, [contenteditable]:not([contenteditable="false"]) { -webkit-user-select: text; user-select: text; }

/* ============================================================
   PEN UI — component library
   Values measured 1:1 from the pen editor:
   - dark: vector UI exported from pen file + live app.pen.dev DOM
   - light: derived (zinc scale), pending light-mode measurement
   Hover/active states: from live app.pen.dev Tailwind classes.
   ============================================================ */

/* ---------- tokens ---------- */
[data-theme="light"], :root {
  --pen-bg: #f6f6f6;            /* panel bg (measured light) */
  --pen-card: #ffffff;          /* floating cards (rail, pills) */
  --pen-canvas: #f4f4f5;
  --pen-sep: #ececee;           /* section separator */
  --pen-inbr: rgba(20,20,20,.06);
  --pen-title: #18181b;         /* section titles (measured light) */
  --pen-pre: #71717a;           /* input prefixes */
  --pen-val: #18181b;           /* input values, button text */
  --pen-fg: #020202;            /* sidebar/tab text */
  --pen-strong: #18181b;        /* icons, emphasized text */
  --pen-input: rgba(2,2,2,.04);
  --pen-input-br: transparent;  /* inputs have no stroke in light */
  --pen-ddbg: transparent;      /* dropdown: hairline, no fill */
  --pen-ddbr: #e4e4e7;
  --pen-chkoff: transparent;    /* unchecked checkbox */
  --pen-chkbr: #e4e4e7;
  --pen-drop: rgba(63,63,70,.12);
  --pen-btnbg: #fafafa;
  --pen-btnbr: #e4e4e7;
  --pen-tglon: #ffffff;
  --pen-tabon: rgba(0,0,0,.1);
  --pen-chkbg: #18181b;
  --pen-chkmark: #fafafa;
  --pen-sel: #3b82f6;
  --pen-selsoft: rgba(59,130,246,.2);
  --pen-link: #2f7fe0;
  --pen-mut: #e4e4e7;
  --pen-dis: #d4d4d8;
  --pen-hover: rgba(0,0,0,.05);
  --pen-treesel: #cdd8ed;
  --pen-shadow: 0 4px 6px -1px rgba(0,0,0,.1), 0 2px 4px -2px rgba(0,0,0,.1);
}
[data-theme="dark"] {
  --pen-bg: #1e1e1e;
  --pen-card: #141414;
  --pen-canvas: #1e1e1e;
  --pen-sep: #202020;
  --pen-inbr: #c8c8c80f;
  --pen-title: #828282;
  --pen-pre: #a1a1aa;
  --pen-val: #bebebe;
  --pen-fg: #c8c8c8;
  --pen-strong: #f4f4f5;
  --pen-input: #c8c8c81a;
  --pen-input-br: #c8c8c80f;
  --pen-ddbg: #3f3f464d;
  --pen-ddbr: transparent;
  --pen-chkoff: #3f3f464d;
  --pen-chkbr: transparent;
  --pen-drop: #3f3f464d;
  --pen-btnbg: #18181b;
  --pen-btnbr: #38383c;
  --pen-tglon: #52525c;
  --pen-tabon: #c8c8c833;
  --pen-chkbg: #fafafa;
  --pen-chkmark: #18181b;
  --pen-sel: #3B82F6;
  --pen-selsoft: #3b82f633;
  --pen-link: #3d99ff;
  --pen-mut: #27272a;
  --pen-dis: #3f3f46;
  --pen-hover: rgba(255,255,255,.05);
  --pen-treesel: #3b82f633;
  --pen-shadow: 0 4px 6px -1px rgba(0,0,0,.1), 0 2px 4px -2px rgba(0,0,0,.1);
}

.pen-ui, .pen-ui * { box-sizing: border-box; }
.pen-ui { font-family: Inter, Inter, Rubik, system-ui, sans-serif; color: var(--pen-fg); }

/* ---------- panel shell ---------- */
.pen-panel { width: 212px; background: var(--pen-bg); }
.pen-section { padding: 11px 14px 10px 16px; border-top: 1px solid var(--pen-inbr); }
.pen-section:first-child { border-top: 0; }
.pen-section-title { display: flex; align-items: center; justify-content: space-between;
  font: 500 11px/1.5 Inter, Rubik, sans-serif; color: var(--pen-title); min-height: 17px; margin-bottom: 6px; }
.pen-section-title .pen-iconbtn { width: 22px; height: 22px; margin: 0; }
.pen-section-title.tall { min-height: 20px; }
.pen-section.empty .pen-section-title { margin-bottom: 0; }
.pen-iconbtn.w22 { width: 22px; flex: 0 0 22px; }
.pen-btngroup { flex: 1; min-width: 0; display: flex; height: 24px; border-radius: 6px; background: var(--pen-input); }
.pen-btngroup button { flex: 1; height: 24px; border: 0; border-radius: 6px; background: transparent; padding: 0;
  display: flex; align-items: center; justify-content: center; color: var(--pen-strong); cursor: pointer; }
.pen-btngroup button:hover { background: var(--pen-hover); }
/* ---------- panel head (frame name, Create Component, Context) ---------- */
.pen-head-name { display: flex; align-items: center; gap: 4px; padding: 8px 14px 8px 16px; }
.pen-namefield { flex: 1; min-width: 0; position: relative; height: 26px; padding: 1px; border-radius: 4px; display: flex; align-items: center; }
.pen-namefield .ic { position: absolute; left: 1px; top: 1px; width: 24px; height: 24px; display: flex; align-items: center; justify-content: center; color: var(--pen-strong); }
.pen-namefield .lucide-frame { width: 14px; height: 14px; }
.pen-namefield .val { flex: 1; min-width: 0; height: 24px; padding: 0 8px 1px 24px; border-radius: 6px;
  font: 400 11px/24px "Roboto Mono", monospace; color: var(--pen-val); white-space: nowrap; overflow: hidden; }
.pen-head-cc { padding: 0 14px 8px 16px; }
.pen-cc { display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 6px 0 4px; border: 0; border-radius: 8px;
  background: transparent; font: 500 10px/1.5 Inter, Rubik, sans-serif; color: var(--pen-strong); cursor: pointer; }
.pen-cc:hover { background: var(--pen-hover); }
.pen-head-ctx { display: flex; align-items: center; justify-content: space-between; padding: 13px 14px 12px 16px;
  border-top: 1px solid var(--pen-inbr); font: 500 11px/1.45 Inter, Rubik, sans-serif; color: var(--pen-strong); }
.pen-head-ctx .ic { display: flex; color: var(--pen-pre); }
.pen-sublabel { font: 400 9px/1.5 Inter, Rubik, sans-serif; color: var(--pen-val); margin: 8px 0 4px; }

/* ---------- input (h24, mono value) ---------- */
.pen-input { display: flex; align-items: center; height: 24px; border-radius: 6px;
  background: var(--pen-input); border: 1px solid var(--pen-input-br); min-width: 0; }
.pen-input .pfx { width: 24px; flex: 0 0 24px; text-align: center;
  font: 500 11px/1 Inter, Rubik, sans-serif; color: var(--pen-pre); display: flex; align-items: center; justify-content: center; }
.pen-input input, .pen-input .val { flex: 1; min-width: 0; border: 0; background: transparent; padding: 0 8px 1px 0;
  font: 400 11px/1.5 "Roboto Mono", monospace; color: var(--pen-val); outline: none; }
.pen-input > input:first-child, .pen-input > .val:first-child { padding-left: 8px; }
.pen-input:focus-within { outline: 1.5px solid var(--pen-sel); outline-offset: -1.5px; background: var(--pen-selsoft); }
.pen-row { display: flex; gap: 6px; }
.pen-row > * { flex: 1; min-width: 0; }

/* ---------- buttons ---------- */
.pen-btn { display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  height: 24px; padding: 0 8px; border-radius: 6px; border: 1px solid var(--pen-btnbr);
  background: var(--pen-btnbg); font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-val);
  cursor: pointer; user-select: none; white-space: nowrap; }
.pen-btn:hover { background: var(--pen-hover); }
.pen-btn:active { background: var(--pen-drop); }
.pen-btn.wide { width: 100%; }
/* top bar buttons (h28, from live DOM) */
.pen-btn-secondary { height: 28px; border: 0; border-radius: 8px; background: #27272a; color: #c8c8c8;
  font: 500 12px/1 Inter, Rubik, sans-serif; padding: 0 10px; cursor: pointer; }
.pen-btn-secondary:hover { background: #3f3f46; }
.pen-btn-primary { height: 28px; border: 0; border-radius: 8px; background: #fff; color: #000;
  font: 500 12px/1 Inter, Rubik, sans-serif; padding: 0 12px; cursor: pointer; box-shadow: 0 0 0 1px var(--pen-inbr); }
.pen-btn-primary:hover { opacity: .92; }
/* icon-only button */
.pen-iconbtn { display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; border: 0; border-radius: 6px; background: transparent;
  color: var(--pen-strong); cursor: pointer; padding: 0; }
.pen-iconbtn:hover { background: var(--pen-hover); }

/* ---------- dropdown (h24 select) ---------- */
.pen-dropdown { position: relative; display: flex; align-items: center; justify-content: space-between;
  height: 24px; padding: 0 4px 0 8px; border-radius: 6px; background: var(--pen-ddbg); border: 1px solid var(--pen-ddbr);
  font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-val); cursor: pointer; user-select: none; gap: 4px; }
.pen-dropdown:hover { filter: brightness(1.15); }
.pen-dropdown .icon { flex: 0 0 auto; }
.pen-menu { position: absolute; top: calc(100% + 4px); left: 0; min-width: 100%; z-index: 30;
  background: var(--pen-card); border: 1px solid var(--pen-inbr); border-radius: 8px; padding: 3px;
  box-shadow: var(--pen-shadow); display: none; }
.pen-dropdown.open .pen-menu { display: block; }
.pen-menu-item { display: flex; align-items: center; height: 24px; padding: 0 8px; border-radius: 5px;
  font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-val); white-space: nowrap; }
.pen-menu-item:hover { background: var(--pen-input); }
.pen-menu-item.on { color: var(--pen-strong); }

/* ---------- checkbox (16, r4) ---------- */
.pen-checkbox { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; user-select: none;
  font: 500 10px/1.5 Inter, Rubik, sans-serif; color: var(--pen-val); }
.pen-checkbox .box { width: 16px; height: 16px; flex: 0 0 16px; border-radius: 4px;
  background: var(--pen-chkoff); border: 1px solid var(--pen-chkbr); display: inline-flex; align-items: center; justify-content: center;
  color: transparent; transition: background .12s ease; }
.pen-checkbox.on .box, .pen-checkbox:has(input:checked) .box { background: var(--pen-chkbg); border-color: var(--pen-chkbg); color: var(--pen-chkmark); }
.pen-checkbox input { position: absolute; opacity: 0; width: 0; height: 0; }
.pen-checkbox .box svg, .pen-checkbox .box .icon { pointer-events: none; }

/* ---------- toggle group (track p1 r6, segment h20) ---------- */
.pen-toggle { display: flex; padding: 1px; gap: 4px; border-radius: 6px; background: var(--pen-input); }
.pen-toggle button { flex: 1; height: 20px; border: 0; border-radius: 6px; background: transparent;
  display: flex; align-items: center; justify-content: center; color: var(--pen-strong); cursor: pointer; padding: 0; }
.pen-toggle button:hover { background: var(--pen-hover); }
.pen-toggle button.on { background: var(--pen-tglon); }
[data-theme="light"] .pen-toggle button.on { box-shadow: 0 1px 2px rgba(0,0,0,.08); }

/* ---------- tabs (h20, active #c8c8c833) ---------- */
.pen-tabs { display: flex; align-items: center; justify-content: flex-start; gap: 2px; padding: 8px 4px 2px; }
.pen-tab { height: 20px; padding: 2px 6px; border: 0; border-radius: 6px; background: transparent;
  font: 600 12px/1.3 Inter, Rubik, sans-serif; color: var(--pen-fg); cursor: pointer; white-space: nowrap; }
.pen-tab:hover { background: var(--pen-hover); }
.pen-tab.on { background: var(--pen-tabon); }
.pen-tabpanel { display: none; }
.pen-tabpanel.on { display: block; }

/* ---------- sidebar shell ---------- */
.pen-sidebar { width: 320px; background: var(--pen-card); }

/* ---------- tree row (h28, from live DOM) ---------- */
.pen-tree { padding: 4px 0; }
.pen-tree-row { position: relative; display: flex; align-items: center; height: 28px; padding-left: 10px; cursor: default; }
.pen-tree-row > * { position: relative; }
.pen-tree-row::before { content: ''; position: absolute; inset: 0 6px; border-radius: 4px; }
.pen-tree-row:hover::before { background: color-mix(in srgb, var(--pen-mut) 50%, transparent); }
.pen-tree-row.sel::before { inset: 0; border-radius: 0; background: var(--pen-treesel, var(--pen-selsoft)); }
.pen-tree-row .chev { width: 16px; display: flex; justify-content: center; color: var(--pen-pre); }
.pen-tree-row .ic { display: flex; align-items: center; justify-content: center; width: 22px; padding: 0 4px; color: var(--pen-strong); }
.pen-tree-row .lbl { font: 500 11px/28px Inter, Rubik, sans-serif; color: var(--pen-fg); padding: 0 4px; white-space: nowrap; }
.pen-tree-row .eye { margin-left: auto; margin-right: 6px; width: 32px; height: 28px; display: none;
  align-items: center; justify-content: center; background: var(--pen-mut); border-radius: 4px; border: 0; cursor: pointer; color: var(--pen-fg); }
.pen-tree-row:hover .eye { display: flex; }

/* ---------- tool rail (36, buttons 28, active border) ---------- */
.pen-rail { display: flex; flex-direction: column; gap: 4px; width: 36px; background: var(--pen-card);
  border-radius: 10px; padding: 4px; box-shadow: var(--pen-shadow); }
.pen-tool { width: 28px; height: 28px; border: 1px solid transparent; border-radius: 6px; background: transparent;
  display: flex; align-items: center; justify-content: center; cursor: pointer; color: var(--pen-strong); padding: 0; }
.pen-tool:hover { background: var(--pen-hover); }
.pen-tool .lucide-frame { width: 16px; height: 16px; }
.pen-tool.on { border-color: var(--pen-dis); background: var(--pen-drop); }
.pen-tool.chev { height: 12px; }

/* ---------- zoom pill ---------- */
.pen-zoom { display: inline-flex; align-items: center; gap: 4px; background: var(--pen-card);
  border-radius: 8px; padding: 2px; box-shadow: var(--pen-shadow); }
.pen-zoom button { width: 28px; height: 28px; border: 0; border-radius: 6px; background: transparent;
  color: var(--pen-strong); display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 14px; padding: 0; }
.pen-zoom button:hover { background: var(--pen-hover); }
.pen-zoom .lvl { width: 44px; height: 24px; border-radius: 4px; font: 400 12px/24px "Roboto Mono", monospace;
  color: var(--pen-strong); text-align: center; }

/* ---------- top bar chips ---------- */
.pen-doc-chip { display: inline-flex; align-items: center; gap: 6px; height: 28px; background: var(--pen-canvas);
  border-radius: 8px; padding: 0 10px; font: 500 12px/1 Inter, Rubik, sans-serif; color: var(--pen-fg); cursor: pointer; }
.pen-doc-chip .icon { opacity: .6; }
.pen-pill-saved { display: inline-flex; align-items: center; height: 24px; background: var(--pen-card);
  border-radius: 999px; padding: 0 10px; font: 500 11px/1 Inter, Rubik, sans-serif; color: var(--pen-pre); }

/* ---------- fill row ---------- */
.pen-fillrow { display: flex; align-items: center; gap: 0; }
.pen-fillrow + .pen-fillrow { margin-top: 6px; }
.pen-fillrow[hidden] { display: none; }
.pen-fillrow .hex { flex: 1 1 98px; min-width: 0; position: relative; border-radius: 6px 0 0 6px; }
.pen-fillrow .hex .swatch { position: absolute; left: 3px; top: 3px; width: 16px; height: 16px; box-sizing: border-box;
  border-radius: 4px; border: 1px solid var(--pen-btnbr); cursor: pointer; }
.pen-fillrow .hex input { padding-left: 24px; }
.pen-fillrow .pct { flex: 0 0 56px; width: 56px; border-radius: 0 6px 6px 0; }
.pen-fillrow .pct input { padding: 0 0 1px 8px; }
.pen-fillrow .pct .sfx { width: 24px; flex: 0 0 24px; text-align: center; font: 500 11px/1 Inter, Rubik, sans-serif; color: var(--pen-pre); }
.pen-fillrow .rm { margin-left: 6px; }

/* ---------- icon sizing ---------- */
.pen-ui .icon { display: inline-block; position: relative; overflow: hidden; flex: 0 0 auto; }

/* ---------- agent UI (measured from light screenshots 2026-08-24; dark derived) ---------- */
[data-theme="light"], :root {
  --pen-ag-side: #ededed;        /* sidebar bg */
  --pen-ag-canvas: #f6f6f6;
  --pen-ag-card: #ffffff;        /* input card, popovers */
  --pen-ag-border: rgba(0,0,0,.1);
  --pen-ag-chipbr: #dcdce0;
  --pen-ag-text: #0a0a0a;
  --pen-ag-gray: #5d5d5d;
  --pen-ag-soft: rgba(0,0,0,.05);
  --pen-ag-amber: #bb4d00;
  --pen-ag-amberbg: rgba(254,154,0,.15);
  --pen-ag-hl: #f4f4f6;          /* menu row highlight */
  --pen-ag-send: #e9eaec;        /* send idle */
  --pen-ag-sendon: #52525b;      /* send active */
  --pen-ag-user: #5b5b66;        /* sent user message */
  --pen-ag-user-text: #ffffff;
  --pen-ag-shadow: 0 8px 24px rgba(0,0,0,.1), 0 2px 6px rgba(0,0,0,.06);
}
[data-theme="dark"] {
  --pen-ag-side: #141414;
  --pen-ag-canvas: #1e1e1e;
  --pen-ag-card: #1e1e1e;
  --pen-ag-border: #3f3f46;
  --pen-ag-chipbr: #3f3f46;
  --pen-ag-text: #e4e4e7;
  --pen-ag-gray: #a1a1aa;
  --pen-ag-soft: rgba(255,255,255,.07);
  --pen-ag-amber: #f59e0b;
  --pen-ag-amberbg: rgba(245,158,11,.16);
  --pen-ag-hl: #27272a;
  --pen-ag-send: #3f3f46;
  --pen-ag-sendon: #e4e4e7;
  --pen-ag-user: #5b5b66;
  --pen-ag-user-text: #ffffff;
  --pen-ag-shadow: 0 8px 24px rgba(0,0,0,.4), 0 2px 6px rgba(0,0,0,.3);
}
.pen-agent-side { width: 320px; background: var(--pen-ag-side); display: flex; flex-direction: column; }
.pen-side-header { display: flex; align-items: center; gap: 0; padding: 0 8px 1px 12px; height: 40px; flex: 0 0 40px; color: var(--pen-ag-text); }
.pen-side-header .sp { flex: 1; }
.pen-side-header .ic { width: 28px; height: 28px; display: flex; align-items: center; justify-content: center; opacity: .9; cursor: pointer; border-radius: 6px; }
.pen-side-header .ic:hover { background: var(--pen-hover); }
.pen-side-header .agents { font: 400 12px/1 Inter, Rubik, sans-serif; height: 28px; padding: 0 12px; border-radius: 8px; display: flex; gap: 4px; align-items: center; cursor: pointer; }
.pen-side-header .agents:hover { background: var(--pen-hover); }
.pen-agent-side .pen-tabs { justify-content: flex-start; gap: 2px; padding: 8px 4px 2px 12px; }
.pen-agent-bar { display: flex; align-items: center; gap: 8px; padding: 12px 14px 10px 12px; }
.pen-agent-dd { flex: 1; display: flex; align-items: center; justify-content: space-between; height: 28px;
  padding: 0 8px 0 10px; border-radius: 8px; background: var(--pen-ag-soft); border: 1px solid var(--pen-ag-border);
  font: 600 12px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-gray); cursor: pointer; }
.pen-agent-new { font: 600 11px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-text); cursor: pointer; white-space: nowrap; }
.pen-agent-body { flex: 1; display: flex; flex-direction: column; justify-content: flex-end; padding: 0 12px 10px; min-height: 120px; }
.pen-agent-greet { font: 400 11px/1.4 Inter, Rubik, sans-serif; color: var(--pen-ag-text); margin-bottom: 10px; }
.pen-chip-suggest { display: block; align-self: flex-start; width: fit-content; max-width: 100%; height: 24px; padding: 0 12px; margin-bottom: 7px;
  border: 1px solid var(--pen-ag-chipbr); border-radius: 999px; background: transparent; text-align: left;
  font: 400 11px/22px Inter, Rubik, sans-serif; color: var(--pen-ag-text); white-space: nowrap; overflow: hidden;
  text-overflow: ellipsis; cursor: pointer; }
.pen-chip-suggest:hover { background: var(--pen-ag-soft); }
.pen-agent-hint { margin-top: 12px; }
.pen-agent-hint b { display: block; font: 600 11.5px/1.5 Inter, Rubik, sans-serif; color: var(--pen-ag-text); }
.pen-agent-hint span { font: 400 11.5px/1.45 Inter, Rubik, sans-serif; color: var(--pen-ag-gray); }
.pen-agent-hint span b { display: inline; }
.pen-agent-input { margin: 10px 12px 12px; background: var(--pen-ag-card); border-radius: 14px;
  box-shadow: var(--pen-ag-shadow); padding: 12px 8px 8px 12px; }
.pen-agent-input .ph { font: 400 13px/1.4 Inter, Rubik, sans-serif; color: var(--pen-ag-gray); min-height: 34px; }
.pen-agent-input .ph[contenteditable]:focus { outline: none; color: var(--pen-ag-text); }
.pen-agent-foot { display: flex; align-items: center; gap: 10px; font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-gray); }
.pen-agent-foot .plus { font-size: 17px; cursor: pointer; color: var(--pen-ag-text); opacity: .8; }
.pen-agent-foot .sp { flex: 1; }
.pen-agent-foot .amber { color: var(--pen-ag-amber); font-weight: 500; cursor: pointer; }
.pen-agent-foot .opt { cursor: pointer; display: flex; align-items: center; gap: 3px; }
.pen-send { width: 30px; height: 30px; border-radius: 50%; border: 0; background: var(--pen-ag-send);
  color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.pen-send.on { background: var(--pen-ag-sendon); }
[data-theme="dark"] .pen-send.on { color: #18181b; }
.pen-ctx-chip { display: inline-flex; align-items: center; gap: 5px; height: 24px; padding: 0 9px;
  border: 1px solid var(--pen-ag-border); border-radius: 7px; background: var(--pen-ag-soft);
  font: 400 11.5px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-text); }
/* floating widget */
.pen-agent-widget { width: 300px; background: var(--pen-ag-card); border-radius: 14px; box-shadow: var(--pen-ag-shadow); overflow: hidden; }
.pen-agent-widget .wh { display: flex; align-items: center; gap: 7px; height: 34px; padding: 0 12px;
  background: var(--pen-ag-soft); font: 400 12px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-gray); }
.pen-agent-widget .wh .sp { flex: 1; }
.pen-agent-widget .wb { padding: 10px 12px 8px; }
/* popovers */
.pen-pop { width: max-content; max-width: 300px; background: var(--pen-ag-card); border-radius: 8px;
  box-shadow: var(--pen-ag-shadow); padding: 13px; }
.pen-pop.pen-ctxpop { padding: 5px; }
.pen-pop.pen-cookpop { border-radius: 14px; }
.pen-ctxpop .pt { padding: 6px 8px; margin: 0; }
.pen-pop.pen-parallelpop { padding: 9px; }
.pen-parallelpop .pt { padding: 0 4px; margin-bottom: 6px; }
.pen-pop .pt { font: 500 10px/1.5 Inter, Rubik, sans-serif; letter-spacing: .02em; color: var(--pen-ag-text);
  text-transform: uppercase; margin-bottom: 4px; }
.pen-pop .pt.gray { color: var(--pen-pre); }
.pen-ctxpop .pt.gray { color: color-mix(in srgb, var(--pen-ag-text) 50%, transparent); }
.pen-pop h4 { margin: 0 0 6px; font: 600 12px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-text); }
.pen-pop .sub { font: 400 12px/1 Inter, Rubik, sans-serif; color: var(--pen-pre); margin-bottom: 12px; }
.pen-pop .sub u { text-decoration: underline dotted; }
.pen-parallel { display: flex; gap: 4px; padding-bottom: 8px; }
.pen-parallel button { flex: 1; height: 30px; border-radius: 8px; border: 1px solid var(--pen-ag-border);
  background: transparent; font: 500 11px/1 Inter, Rubik, sans-serif; color: color-mix(in srgb, var(--pen-ag-text) 50%, transparent); cursor: pointer;
  display: flex; align-items: center; justify-content: center; gap: 4px; }
.pen-parallel button:hover { background: var(--pen-ag-soft); }
.pen-parallel button.on { background: var(--pen-ag-amberbg); border-color: transparent; color: var(--pen-ag-amber); }
.pen-modecards { display: flex; gap: 4px; margin-top: 0; padding-bottom: 4px; }
.pen-modecards button { flex: 1; border-radius: 8px; border: 1px solid var(--pen-ag-border); background: transparent;
  padding: 6px; cursor: pointer; text-align: center; }
.pen-modecards button.on { background: var(--pen-ag-hl); border-color: transparent; }
.pen-cookpop .pen-modecards button { height: 32px; padding: 6px 0; border: 1px solid var(--pen-ag-border); }
.pen-modecards b { display: block; font: 500 11px/1.3 Inter, Rubik, sans-serif; color: color-mix(in srgb, var(--pen-ag-text) 50%, transparent); }
.pen-modecards button.on b { color: var(--pen-ag-text); }
.pen-modecards span { font: 400 10px/1.35 Inter, Rubik, sans-serif; color: color-mix(in srgb, var(--pen-ag-text) 40%, transparent); }
.pen-menu-list { display: flex; flex-direction: column; }
.pen-menu-list .mi { display: flex; align-items: center; gap: 8px; height: 28px; padding: 0 8px; border-radius: 6px;
  font: 400 12px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-text); cursor: pointer; }
.pen-menu-list .mi:hover { background: var(--pen-ag-hl); }
.pen-menu-list .mi .mic { width: 16px; opacity: .75; display: flex; }
/* model picker */
.pen-models { width: 180px; padding: 5px; }
.pen-models .search { display: flex; align-items: center; gap: 7px; padding: 8px 8px 9px;
  font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-gray); border-bottom: 1px solid var(--pen-ag-soft); margin-bottom: 6px; }
.pen-models .grp { font: 500 10.5px/1 Inter, Rubik, sans-serif; letter-spacing: .08em; color: var(--pen-ag-gray);
  text-transform: uppercase; padding: 8px 8px 6px; }
.pen-models .mrow { display: flex; align-items: center; justify-content: space-between; height: 28px; padding: 0 8px;
  border-radius: 6px; font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-text); cursor: pointer; }
.pen-models .mrow:hover, .pen-models .mrow.on { background: var(--pen-ag-hl); }
.pen-models .mrow.dis { color: var(--pen-ag-gray); opacity: .75; }
.pen-models .setup { font: 500 11px/1 Inter, Rubik, sans-serif; background: var(--pen-ag-soft); border-radius: 6px; padding: 5px 9px; color: var(--pen-ag-text); }
.pen-models .addmore { display: flex; align-items: center; gap: 7px; padding: 9px 8px 8px;
  font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-text); border-top: 1px solid var(--pen-ag-soft); margin-top: 6px; cursor: pointer; }

/* ---------- agent footer popovers ---------- */
.pen-agent-foot { position: relative; }
.pen-foot-pop { position: absolute; bottom: calc(100% + 12px); left: -4px; z-index: 60; display: none; }
.pen-foot-pop.right { left: auto; right: -4px; }
.pen-foot-pop.open { display: block; }
.pen-agent-widget { overflow: visible; }
.pen-agent-widget .wh { border-radius: 14px 14px 0 0; }
.pen-models .mwrap { max-height: 260px; overflow-y: auto; }

/* ---------- scrollbars (measured: thumb 6px rounded, no track, 4px inset; light #c1c1c1) ---------- */
.pen-ui *, .pen-ui { scrollbar-width: thin; scrollbar-color: #c1c1c1 transparent; }
[data-theme="dark"] .pen-ui *, [data-theme="dark"] .pen-ui { scrollbar-color: #3f3f46 transparent; }
.pen-ui *::-webkit-scrollbar { width: 14px; height: 14px; }
.pen-ui *::-webkit-scrollbar-track { background: transparent; }
.pen-ui *::-webkit-scrollbar-thumb { background: #c1c1c1; border-radius: 999px;
  border: 4px solid transparent; background-clip: padding-box; }
[data-theme="dark"] .pen-ui *::-webkit-scrollbar-thumb { background: #3f3f46; border: 4px solid transparent; background-clip: padding-box; }
.pen-ui *::-webkit-scrollbar-button { display: none; }

/* ---------- fill color picker (1:1 per vector export 248 wide) ---------- */
.pen-fillrow { position: relative; }
.pen-fill-pop { position: absolute; right: calc(100% + 14px); top: -12px; z-index: 70; display: none;
  width: 248px; background: var(--pen-ag-card); border-radius: 14px; box-shadow: var(--pen-ag-shadow); padding: 12px; }
.pen-fill-pop.open { display: block; }
.pen-fill-pop.hosted { right: auto; }
.cp-tabs { display: flex; align-items: center; gap: 4px; padding-bottom: 13px; margin-bottom: 12px; }
.cp-seg { display: flex; gap: 1px; padding: 1px; width: 164px; flex: 0 0 164px; border-radius: 5px; background: var(--pen-ag-soft); }
.cp-seg button { flex: 1; width: auto; border-radius: 4px; }
.cp-seg button.on { background: color-mix(in srgb, var(--pen-ag-text) 20%, transparent); }
.cp-tabs > button { width: 26px; height: 26px; border-radius: 5px; padding: 5px; }
.cp-tabs button { width: 30px; height: 24px; border: 0; border-radius: 6px; background: transparent;
  color: var(--pen-ag-gray); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.cp-tabs button.on { background: var(--pen-ag-soft); color: var(--pen-ag-text); }
.cp-tabs .sp { flex: 1; }
.cp-spec { position: relative; height: 180px; border-radius: 8px; cursor: crosshair; margin-bottom: 6px; }
.cp-knob { position: absolute; width: 14px; height: 14px; border-radius: 50%; border: 2px solid #fff; background: #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,.35); translate: -50% -50%; pointer-events: none; }
.cp-slider { position: relative; height: 16px; border-radius: 10px; cursor: pointer; margin-bottom: 6px; }
.cp-slider .cp-knob { top: 50%; }
.cp-alpha { background-image: linear-gradient(45deg,#cccccc 25%,transparent 25%,transparent 75%,#cccccc 75%),
  linear-gradient(45deg,#cccccc 25%,transparent 25%,transparent 75%,#cccccc 75%); background-size: 8px 8px; background-position: 0 0,4px 4px; }
.cp-alpha .ov { position: absolute; inset: 0; border-radius: 999px; }
.cp-row { display: flex; align-items: center; gap: 8px; margin: 6px 0 12px; }
.cp-eyed { width: 24px; height: 24px; border-radius: 6px; border: 1px solid var(--pen-btnbr); padding: 0;
  background: transparent; color: var(--pen-strong); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.cp-mode { position: relative; display: inline-flex; align-items: center; gap: 4px; height: 24px; padding: 0 5px 0 9px;
  border: 1px solid var(--pen-btnbr); border-radius: 6px; box-shadow: 0 1px 2px rgba(0,0,0,.05); font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-val); cursor: pointer; user-select: none; }
.cp-mode .pen-menu { left: 0; top: auto; bottom: calc(100% + 4px); min-width: 88px; }
.cp-mode.open .pen-menu { display: block; }
.cp-mode svg { color: var(--pen-pre); }
.cp-inputs { display: flex; gap: 2px; }
.cp-inputs[data-mode="hex"] input:first-child { width: 98px; }
.cp-inputs input { width: 48px; height: 24px; border-radius: 6px; border: 0; background: var(--pen-input);
  font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-val); text-align: left; padding: 0 8px 1px; outline: none; min-width: 0; }
.cp-inputs input:focus { outline: 1.5px solid var(--pen-sel); outline-offset: -1.5px; }
.cp-alt { font: 400 11.5px/1.5 Inter, Rubik, sans-serif; color: var(--pen-ag-gray); padding: 6px 2px; }
/* fill kinds: gradient / image / shader panels (measured from the Pen picker variants) */
.cp-panel { display: none; flex-direction: column; gap: 8px; }
.cp-panel.on { display: flex; }
.cp-shd { gap: 16px; }
.cp-dd { box-shadow: 0 1px 2px rgba(0,0,0,.05); }
.cp-dd.open { z-index: 40; }
.cp-gbar-wrap { position: relative; height: 36px; padding-top: 12px; }
.cp-gbar { height: 24px; border-radius: 4px; border: 1px solid var(--pen-btnbr); background: repeating-conic-gradient(#ccc 0 25%,#fff 0 50%) 0 0/8px 8px; }
.cp-stop { position: absolute; top: 0; width: 20px; height: 24px; translate: -50% 0; cursor: grab; }
.cp-stop i { display: block; width: 20px; height: 20px; box-sizing: border-box; border-radius: 4px; border: 2px solid var(--pen-btnbr); background: #000; }
.cp-stop b { position: absolute; left: 6px; top: 20px; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent; border-top: 4px solid var(--pen-btnbr); }
.cp-stops-head { display: flex; align-items: center; justify-content: space-between; height: 22px; font: 500 11px/1.5 Inter, Rubik, sans-serif; color: var(--pen-strong); }
.cp-stops-head .pen-iconbtn { width: 22px; height: 22px; }
.cp-stops { display: flex; flex-direction: column; margin-top: -4px; }
.cp-stoprow { display: flex; align-items: center; justify-content: space-between; gap: 4px; height: 28px; padding: 2px 0; }
.cp-stoprow .pos { width: 48px; flex: 0 0 48px; }
.cp-stoprow .pos input { padding: 0 8px 1px; }
.cp-stoprow .col { display: flex; width: 145px; flex: 0 0 145px; }
.cp-stoprow .cp-hex { position: relative; flex: 0 0 89px; width: 89px; border-radius: 6px 0 0 6px; }
.cp-stoprow .cp-hex .swatch { position: absolute; left: 3px; top: 3px; width: 16px; height: 16px; box-sizing: border-box; border-radius: 4px; border: 1px solid var(--pen-btnbr); }
.cp-stoprow .cp-hex input { padding: 0 2px 1px 24px; }
.cp-stoprow .cp-pct { flex: 0 0 56px; width: 56px; border-radius: 0 6px 6px 0; }
.cp-stoprow .cp-pct input { padding: 0 0 1px 8px; }
.cp-stoprow .cp-pct .sfx { width: 24px; flex: 0 0 24px; text-align: center; font: 500 11px/1 Inter, Rubik, sans-serif; color: var(--pen-pre); }
.cp-stoprow .rm:disabled { opacity: .35; cursor: default; }
.pen-input.cp-brd { border-color: var(--pen-btnbr); }
.cp-pathrow { display: flex; align-items: center; gap: 4px; }
.cp-path { flex: 1; min-width: 0; }
.cp-path input { padding: 0 8px 1px; }
.cp-path input::placeholder { color: var(--pen-pre); }
.cp-up { width: 24px; height: 24px; flex: 0 0 24px; border-radius: 6px; border: 1px solid var(--pen-btnbr); background: var(--pen-btnbg);
  display: flex; align-items: center; justify-content: center; padding: 0; color: var(--pen-strong); cursor: pointer; }
.cp-up:hover { background: var(--pen-hover); }
.cp-tip { display: flex; gap: 6px; font: 400 11px/1.5 Inter, Rubik, sans-serif; color: var(--pen-pre); }
.cp-tip .ic { flex: 0 0 12px; display: flex; margin-top: 2px; color: var(--pen-pre); }
.cp-alt input { width: 100%; height: 26px; border-radius: 7px; border: 1px solid var(--pen-ag-border); background: transparent;
  font: 400 11.5px/1 Inter, Rubik, sans-serif; color: var(--pen-ag-text); padding: 0 9px; outline: none; margin-top: 5px; }

/* ---------- Libraries tab (měřeno z leftpanel-2f.pen křivek) ---------- */
.pen-libs { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.pen-libs .scrolla { flex: 1; min-height: 0; overflow-y: auto; padding-top: 8px; }
.pen-lib-head { font: 700 12px/1.3 Inter, Rubik, sans-serif; color: var(--pen-val); padding: 12px 12px 8px; }
.pen-lib-card { margin: 4px 12px 8px; cursor: pointer; }
.pen-lib-card .thumb { width: 100%; aspect-ratio: 296 / 222; border-radius: 8px; overflow: hidden;
  background: var(--pen-input); }
.pen-lib-card .thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pen-lib-card:hover .thumb { outline: 1.5px solid var(--pen-inbr); }
.pen-lib-card .nm { font: 400 11px/1.3 Inter, Rubik, sans-serif; color: var(--pen-pre); margin-top: 5px; }
.pen-lib-foot { padding: 8px; }
.pen-lib-foot button { width: 100%; height: 21px; border: 0; border-radius: 6px; background: var(--pen-mut);
  font: 400 11px/1 Inter, Rubik, sans-serif; color: var(--pen-val); cursor: pointer; }
.pen-lib-foot button:hover { filter: brightness(1.15); }

/* ---------- Slides tab (měřeno z leftpanel-2f.pen křivek) ---------- */
.pen-slides { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.pen-slides .scrolla { flex: 1; min-height: 0; overflow-y: auto; padding: 12px 12px 0; }
.pen-slide { width: 100%; aspect-ratio: 296 / 160; border-radius: 8px; overflow: hidden;
  background: var(--pen-tabon); margin-bottom: 4px; cursor: pointer; }
.pen-slide img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pen-slide:hover { outline: 1.5px solid var(--pen-inbr); }
.pen-slide.sel { outline: 1.5px solid var(--pen-sel); }
.pen-slides .bar { display: flex; gap: 6px; padding: 8px; }
.pen-slides .bar button { flex: 1; height: 24px; border: 0; border-radius: 6px; background: var(--pen-mut);
  font: 500 11px/1 Inter, Rubik, sans-serif; color: var(--pen-title); display: flex;
  align-items: center; justify-content: center; gap: 6px; cursor: pointer; }
.pen-slides .bar button:hover { filter: brightness(1.15); }

/* side-header: velikost ikon (SVG bez atributů) + traffic lights dle křivek */
.pen-side-header .ic svg,
.pen-head-name .lucide-panel-right { width: 15px; height: 15px; }
.pen-side-header .tl3 { display: flex; align-items: center; gap: 8px; margin-right: 8px; flex: 0 0 auto; }
.pen-side-header .tl3 i { display: block; width: 12px; height: 12px; border-radius: 50%; }
.pen-side-header .tl3 i:nth-child(1) { background: #FF5F57; }
.pen-side-header .tl3 i:nth-child(2) { background: #FEBC2E; }
.pen-side-header .tl3 i:nth-child(3) { background: #28C840; }

/* Align the text ink within the titlebar, above its 1px divider. */
.cam .stage-topbar { box-sizing: border-box; padding-bottom: 1px; }
.stage-topbar :is(.tb-title, .tb-sub) { translate: 0 -1px; }
.stage-topbar .tb-pill { padding-bottom: 1px; }

/* Selection dimensions stay in screen pixels, as in ResizeHandles. */
.cam .artboard .dim, .cam .sel .dim, .cam .selection-overlay .dim {
  position: absolute; left: 50%; top: calc(100% + 6px * var(--dimension-scale, 1)); bottom: auto;
  translate: -50% 0; scale: var(--dimension-scale, 1); transform-origin: top center;
  width: max-content; padding: 2px 4px; border-radius: 4px;
  background: var(--pen-sel); color: #fff; font: 400 12px/15px "PenDimensions", Inter, sans-serif;
  white-space: nowrap; z-index: 5;
}
