/* ===== Campaigns v2 (vulnerability-manager clone) — scoped under #cv2root =====
 * Generated by the P4 mechanical prefix transform (blueprint §D / cv2_spec_cloneCss).
 * Source: scratchpad/vulnerability-manager/styles.css
 * Every selector is scoped to the #cv2root mount root so nothing leaks onto the
 * console. Class renames (.pill->.c2pill .chip->.c2chip .tag->.c2tag .stat->.c2stat
 * .badge->.c2badge .toolbar->.c2toolbar .drawer->.c2drawer .toast->.c2toast) and id
 * renames (#app->#cv2root #sidebar->#cv2-sidebar #main->#cv2-main #topbar->#cv2-topbar
 * #mobileMenuBtn->#cv2-mobileMenuBtn) match the JS the sibling agent produces.
 * Keyframes renamed slideIn->cv2slideIn, pop->cv2pop.
 * Overlays confined to the pane: #cv2root is position:relative;overflow:hidden and
 * .scrim/.c2drawer/.toasts/#cv2-sidebar are absolute (ctx-menu left fixed — see note). */

/* theme tokens — scoped to the mount root, never the global :root */
#cv2root{
  --accent:#7b68ee; --accent-2:#fd71af; --accent-3:#49ccf9;
  --bg:#ffffff; --bg-2:#f7f8f9; --bg-3:#eef0f3;
  --sidebar:#fbfbfd; --panel:#ffffff;
  --border:#e5e7ec; --border-2:#d9dce3;
  --text:#2a2e34; --text-2:#5b6270; --muted:#8b909c;
  --shadow:0 4px 16px rgba(20,20,40,.10); --shadow-lg:0 12px 40px rgba(20,20,40,.18);
  --red:#e8506e; --amber:#f5a623; --green:#2ecc8f; --blue:#3b82f6; --gray:#9aa0ab;
  --radius:8px; --sb-w:264px;
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,Roboto,Helvetica,Arial,sans-serif;
}
#cv2root[data-theme="dark"]{
  --bg:#1a1a22; --bg-2:#15151c; --bg-3:#24242f;
  --sidebar:#121218; --panel:#1e1e27;
  --border:#2c2c38; --border-2:#3a3a48;
  --text:#e8e9ee; --text-2:#b3b6c0; --muted:#868a96;
  --shadow:0 4px 16px rgba(0,0,0,.4); --shadow-lg:0 14px 44px rgba(0,0,0,.55);
}
#cv2root *{box-sizing:border-box}
#cv2root{height:100%}
#cv2root{margin:0;font-family:var(--font);font-size:14px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}
#cv2root button,#cv2root input,#cv2root select,#cv2root textarea{font:inherit;color:inherit}
#cv2root a{color:inherit;text-decoration:none;cursor:pointer}
#cv2root .hidden{display:none !important}
#cv2root ::-webkit-scrollbar{width:10px;height:10px}
#cv2root ::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:6px;border:2px solid transparent;background-clip:content-box}
#cv2root ::-webkit-scrollbar-track{background:transparent}

/* the clone grid root IS #cv2root — confined to the pane (position:relative;overflow:hidden),
 * bounded height (100dvh minus the console nav+wrap band; 180px is a placeholder to tune). */
/* Full-bleed: break out of the console's centered .wrap column and fill the whole
   window below the nav. top is set precisely at runtime (cv2Fit) to the nav's height. */
#cv2root{display:grid;grid-template-columns:var(--sb-w) 1fr;position:fixed;top:64px;left:0;right:0;bottom:0;height:auto;overflow:hidden}
/* when the sidebar is hidden it leaves the grid flow, so main must own the only column */
#cv2root.sb-collapsed{grid-template-columns:1fr}
#cv2root.sb-collapsed #cv2-sidebar{display:none}
/* the collapse control lives in the sidebar, so expose a way back in the topbar */
#cv2root.sb-collapsed #cv2-mobileMenuBtn{display:grid}

/* ===== Sidebar ===== */
#cv2root #cv2-sidebar{background:var(--sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;min-width:0;overflow:hidden}
#cv2root .sb-head{display:flex;align-items:center;gap:6px;padding:12px 10px 8px}
#cv2root .workspace{display:flex;align-items:center;gap:9px;flex:1;padding:5px 6px;border-radius:6px;cursor:pointer;min-width:0}
#cv2root .workspace:hover{background:var(--bg-3)}
#cv2root .ws-avatar{width:26px;height:26px;border-radius:7px;display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent-2));flex:none}
#cv2root .ws-name{font-weight:650;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#cv2root .icon-btn{background:none;border:0;cursor:pointer;color:var(--text-2);width:28px;height:28px;border-radius:6px;display:grid;place-items:center;font-size:15px;flex:none}
#cv2root .icon-btn:hover{background:var(--bg-3);color:var(--text)}
#cv2root .icon-btn.sm{width:22px;height:22px;font-size:15px;line-height:1}

#cv2root .sb-search{display:flex;align-items:center;gap:7px;margin:2px 12px 10px;padding:6px 9px;background:var(--bg-3);border-radius:7px;border:1px solid transparent}
#cv2root .sb-search:focus-within{border-color:var(--accent);background:var(--panel)}
#cv2root .sb-search-ico{font-size:12px;opacity:.6}
#cv2root .sb-search input{flex:1;background:none;border:0;outline:0;font-size:13px;min-width:0}
#cv2root .sb-search kbd{font-size:10px;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--muted)}

#cv2root .sb-nav{padding:0 8px 8px;display:flex;flex-direction:column;gap:1px}
#cv2root .sb-link{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:6px;font-size:13.5px;font-weight:500;color:var(--text-2)}
#cv2root .sb-link:hover{background:var(--bg-3);color:var(--text)}
#cv2root .sb-link.active{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);font-weight:600}
#cv2root .sb-link .ico{font-size:13px;width:16px;text-align:center;flex:none}
#cv2root .c2pill{margin-left:auto;background:var(--bg-3);color:var(--text-2);font-size:10.5px;font-weight:700;padding:1px 6px;border-radius:9px}
#cv2root .sb-link.active .c2pill{background:var(--accent);color:#fff}

#cv2root .sb-section-head{display:flex;align-items:center;justify-content:space-between;padding:8px 16px 4px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-top:1px solid var(--border);margin-top:2px}
#cv2root .space-tree{flex:1;overflow-y:auto;padding:2px 8px 12px}

#cv2root .tree-row{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:6px;cursor:pointer;font-size:13.5px;color:var(--text-2);user-select:none;position:relative}
#cv2root .tree-row:hover{background:var(--bg-3);color:var(--text)}
#cv2root .tree-row.active{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);font-weight:600}
#cv2root .tree-row .caret{width:14px;flex:none;font-size:9px;color:var(--muted);transition:transform .12s;display:grid;place-items:center}
#cv2root .tree-row .caret.open{transform:rotate(90deg)}
#cv2root .tree-row .dot{width:9px;height:9px;border-radius:3px;flex:none}
#cv2root .tree-row .tr-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#cv2root .tree-row .tr-count{font-size:10.5px;color:var(--muted);font-weight:600}
#cv2root .tree-row .tr-actions{display:none;gap:2px}
#cv2root .tree-row:hover .tr-actions{display:flex}
#cv2root .tree-row:hover .tr-count{display:none}
#cv2root .tree-kids{margin-left:14px;border-left:1px solid var(--border);padding-left:3px}
#cv2root .tree-row.lvl-space{font-weight:650;color:var(--text)}
#cv2root .tree-row .ico-sm{font-size:12px;width:15px;text-align:center;flex:none;opacity:.75}

#cv2root .sb-foot{display:flex;gap:2px;padding:8px;border-top:1px solid var(--border)}
#cv2root .sb-foot-btn{flex:1;background:none;border:0;cursor:pointer;padding:7px 4px;border-radius:6px;color:var(--text-2);font-size:11px;display:flex;flex-direction:column;align-items:center;gap:3px}
#cv2root .sb-foot-btn:hover{background:var(--bg-3);color:var(--text)}
#cv2root .sb-foot-btn .ico{font-size:14px}

/* ===== Main ===== */
#cv2root #cv2-main{display:flex;flex-direction:column;min-width:0;overflow:hidden;background:var(--bg)}
#cv2root #cv2-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 18px;border-bottom:1px solid var(--border);flex:none}
#cv2root .tb-left{display:flex;align-items:center;gap:8px;min-width:0}
#cv2root .tb-right{display:flex;align-items:center;gap:10px}
#cv2root .breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);min-width:0;flex-wrap:wrap}
#cv2root .breadcrumb b{color:var(--text);font-size:16px;font-weight:680}
#cv2root .breadcrumb .sep{opacity:.5}
#cv2root .breadcrumb a:hover{color:var(--accent)}
#cv2root .only-mobile{display:none}

#cv2root .btn{background:var(--bg-3);border:1px solid transparent;border-radius:7px;padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:6px;color:var(--text)}
#cv2root .btn:hover{background:var(--border)}
#cv2root .btn.primary{background:linear-gradient(135deg,var(--accent),#8a79f0);color:#fff}
#cv2root .btn.primary:hover{filter:brightness(1.08)}
#cv2root .btn.ghost{background:none;border:1px solid var(--border-2);color:var(--text-2)}
#cv2root .btn.ghost:hover{background:var(--bg-3);color:var(--text)}
#cv2root .btn.danger{background:var(--red);color:#fff}
#cv2root .btn.sm{padding:4px 9px;font-size:12px}

#cv2root .avatar{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:10.5px;font-weight:700;color:#fff;flex:none;border:2px solid var(--panel)}
#cv2root .avatar.sm{width:22px;height:22px;font-size:9px}
#cv2root .avatar.me{background:linear-gradient(135deg,#3b82f6,#49ccf9)}
#cv2root .avatar-stack{display:flex}
#cv2root .avatar-stack .avatar+.avatar{margin-left:-8px}

#cv2root .timer-chip{display:flex;align-items:center;gap:7px;background:color-mix(in srgb,var(--green) 15%,transparent);color:var(--green);border:1px solid color-mix(in srgb,var(--green) 40%,transparent);padding:4px 10px;border-radius:20px;font-size:12px;font-weight:700;cursor:pointer}

/* ===== View bar / tabs ===== */
#cv2root .viewbar{display:flex;align-items:center;gap:2px;padding:0 18px;border-bottom:1px solid var(--border);flex:none;overflow-x:auto}
#cv2root .vtab{padding:9px 12px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;display:flex;align-items:center;gap:6px;background:none;border-top:0;border-left:0;border-right:0}
#cv2root .vtab:hover{color:var(--text)}
#cv2root .vtab.active{color:var(--accent);border-bottom-color:var(--accent)}

/* ===== Toolbar ===== */
#cv2root .c2toolbar{display:flex;align-items:center;gap:8px;padding:9px 18px;border-bottom:1px solid var(--border);flex:none;flex-wrap:wrap}
#cv2root .tool{display:flex;align-items:center;gap:5px;background:none;border:1px solid transparent;border-radius:6px;padding:4px 9px;font-size:12.5px;font-weight:600;color:var(--text-2);cursor:pointer}
#cv2root .tool:hover{background:var(--bg-3);color:var(--text)}
#cv2root .tool.on{background:color-mix(in srgb,var(--accent) 13%,transparent);color:var(--accent)}
#cv2root .tool select{background:none;border:0;outline:0;font-size:12.5px;font-weight:600;cursor:pointer}
#cv2root .tool-spacer{flex:1}
#cv2root .c2chip{display:inline-flex;align-items:center;gap:5px;background:var(--bg-3);border-radius:14px;padding:3px 5px 3px 10px;font-size:11.5px;font-weight:600}
#cv2root .c2chip button{background:none;border:0;cursor:pointer;color:var(--muted);font-size:13px;line-height:1;padding:0 3px}
#cv2root .c2chip button:hover{color:var(--red)}

#cv2root .content{flex:1;overflow:auto;position:relative}

/* ===== Generic table/list view ===== */
#cv2root .group{margin:0 0 4px}
#cv2root .group-head{display:flex;align-items:center;gap:9px;padding:9px 18px;position:sticky;top:0;background:var(--bg);z-index:5;cursor:pointer;border-bottom:1px solid var(--border)}
#cv2root .group-head:hover{background:var(--bg-2)}
#cv2root .status-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:750;text-transform:uppercase;letter-spacing:.04em;color:#fff;padding:3px 9px;border-radius:5px}
#cv2root .group-count{font-size:11.5px;color:var(--muted);font-weight:650}
#cv2root .group-caret{font-size:9px;color:var(--muted);transition:transform .12s}
#cv2root .group-caret.open{transform:rotate(90deg)}

#cv2root .trow{display:grid;grid-template-columns:26px minmax(0,1fr) 130px 108px 92px 74px 72px;gap:10px;align-items:center;padding:0 18px;height:38px;border-bottom:1px solid var(--border);cursor:pointer;font-size:13.5px}
#cv2root .trow:hover{background:var(--bg-2)}
#cv2root .trow.done .t-name{color:var(--muted);text-decoration:line-through}
#cv2root .trow .t-name{display:flex;align-items:center;gap:8px;min-width:0}
#cv2root .trow .t-name span.nm{flex:1 1 auto;min-width:3ch;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#cv2root .trow .t-name .subcount,#cv2root .trow .t-name .c2tag,#cv2root .trow .t-name .group-caret{flex:none}
#cv2root .trow .cell{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-2);min-width:0}
#cv2root .thead{display:grid;grid-template-columns:26px minmax(0,1fr) 130px 108px 92px 74px 72px;gap:10px;padding:0 18px;height:32px;align-items:center;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg);z-index:6}

#cv2root .checkbox{width:17px;height:17px;border:1.8px solid var(--border-2);border-radius:50%;display:grid;place-items:center;cursor:pointer;flex:none;font-size:9px;color:transparent;transition:.12s}
#cv2root .checkbox:hover{border-color:var(--green)}
#cv2root .checkbox.on{background:var(--green);border-color:var(--green);color:#fff}

#cv2root .prio{font-size:13px;line-height:1;cursor:pointer}
#cv2root .prio-1{color:var(--red)} #cv2root .prio-2{color:var(--amber)} #cv2root .prio-3{color:var(--blue)} #cv2root .prio-4{color:var(--gray)}
#cv2root .due{font-size:12px;font-weight:600;padding:2px 7px;border-radius:5px}
#cv2root .due.over{color:var(--red);background:color-mix(in srgb,var(--red) 13%,transparent)}
#cv2root .due.today{color:var(--amber);background:color-mix(in srgb,var(--amber) 15%,transparent)}
#cv2root .due.soon{color:var(--text-2)}
#cv2root .c2tag{font-size:10.5px;font-weight:700;padding:2px 7px;border-radius:4px;white-space:nowrap}
#cv2root .subcount{font-size:10.5px;color:var(--muted);background:var(--bg-3);padding:1px 6px;border-radius:9px;font-weight:650}

#cv2root .addrow{display:flex;align-items:center;gap:8px;padding:7px 18px;color:var(--muted);font-size:13px;cursor:pointer;border-bottom:1px solid var(--border)}
#cv2root .addrow:hover{color:var(--accent);background:var(--bg-2)}
#cv2root .addrow input{flex:1;background:none;border:0;outline:0;font-size:13.5px}

/* ===== Board ===== */
#cv2root .board{display:flex;gap:12px;padding:16px 18px;align-items:flex-start;min-height:100%;overflow-x:auto}
#cv2root .bcol{background:var(--bg-2);border-radius:10px;width:288px;flex:none;display:flex;flex-direction:column;max-height:calc(100vh - 210px)}
#cv2root .bcol.dragover{outline:2px dashed var(--accent);outline-offset:-2px}
#cv2root .bcol-head{display:flex;align-items:center;gap:8px;padding:11px 12px 9px;flex:none}
#cv2root .bcol-body{overflow-y:auto;padding:0 9px 9px;display:flex;flex-direction:column;gap:8px;flex:1;min-height:44px}
#cv2root .card{background:var(--panel);border:1px solid var(--border);border-radius:9px;padding:10px 11px;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.05)}
#cv2root .card:hover{border-color:var(--accent)}
#cv2root .card.dragging{opacity:.4}
#cv2root .card-top{display:flex;align-items:flex-start;gap:8px;margin-bottom:7px}
#cv2root .card-name{flex:1;font-size:13.5px;font-weight:550;line-height:1.35}
#cv2root .card-meta{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
#cv2root .card-tags{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:7px}
#cv2root .bcol-add{padding:8px 12px;color:var(--muted);font-size:12.5px;cursor:pointer;font-weight:600;flex:none}
#cv2root .bcol-add:hover{color:var(--accent)}

/* ===== Calendar ===== */
#cv2root .cal{padding:14px 18px}
#cv2root .cal-head{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:6px}
#cv2root .cal-dow{font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);text-align:center;letter-spacing:.05em}
#cv2root .cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
#cv2root .cal-cell{min-width:0;background:var(--bg-2);border:1px solid var(--border);border-radius:8px;min-height:104px;padding:6px;display:flex;flex-direction:column;gap:4px}
#cv2root .cal-cell.other{opacity:.42}
#cv2root .cal-cell.today{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}
#cv2root .cal-dnum{font-size:11.5px;font-weight:700;color:var(--text-2)}
#cv2root .cal-cell.today .cal-dnum{color:var(--accent)}
#cv2root .cal-task{font-size:11px;padding:3px 6px;border-radius:5px;background:var(--panel);border-left:3px solid var(--gray);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#cv2root .cal-task:hover{background:var(--bg-3)}

/* ===== Gantt ===== */
#cv2root .gantt{padding:0;overflow:auto;min-height:100%}
#cv2root .g-wrap{display:grid;grid-template-columns:230px 1fr;min-width:min-content}
#cv2root .g-left{border-right:1px solid var(--border);background:var(--bg);position:sticky;left:0;z-index:4}
#cv2root .g-lh,#cv2root .g-th{height:36px;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px;font-size:11px;font-weight:700;text-transform:uppercase;color:var(--muted);letter-spacing:.05em;background:var(--bg);position:sticky;top:0;z-index:3}
#cv2root .g-lrow{height:34px;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px;font-size:12.5px;gap:7px;cursor:pointer;white-space:nowrap;overflow:hidden}
#cv2root .g-lrow:hover{background:var(--bg-2)}
#cv2root .g-lrow .nm{overflow:hidden;text-overflow:ellipsis}
#cv2root .g-right{position:relative}
#cv2root .g-days{display:flex;height:36px;position:sticky;top:0;background:var(--bg);z-index:3;border-bottom:1px solid var(--border)}
#cv2root .g-day{width:34px;flex:none;border-right:1px solid var(--border);font-size:10px;text-align:center;color:var(--muted);display:flex;flex-direction:column;justify-content:center;line-height:1.2}
#cv2root .g-day.wk{background:var(--bg-2)}
#cv2root .g-day.today{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);font-weight:800}
#cv2root .g-row{height:34px;border-bottom:1px solid var(--border);position:relative}
#cv2root .g-row:hover{background:var(--bg-2)}
#cv2root .g-bar{position:absolute;top:6px;height:22px;border-radius:5px;display:flex;align-items:center;padding:0 8px;font-size:11px;font-weight:650;color:#fff;cursor:pointer;white-space:nowrap;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.18)}
#cv2root .g-bar:hover{filter:brightness(1.1)}
#cv2root .g-grid{position:absolute;inset:36px 0 0 0;display:flex;pointer-events:none}
#cv2root .g-gcol{width:34px;flex:none;border-right:1px solid var(--border)}
#cv2root .g-gcol.wk{background:color-mix(in srgb,var(--text) 3%,transparent)}

/* ===== Dashboard / Home ===== */
#cv2root .dash{padding:18px;display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
#cv2root .card-panel{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:15px 16px}
#cv2root .card-panel h3{margin:0 0 12px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
#cv2root .stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:0}
#cv2root .c2stat{background:var(--panel);border:1px solid var(--border);border-radius:11px;padding:13px 15px}
#cv2root .c2stat .n{font-size:26px;font-weight:750;line-height:1.1}
#cv2root .c2stat .l{font-size:11.5px;color:var(--muted);font-weight:650;text-transform:uppercase;letter-spacing:.04em;margin-top:3px}
#cv2root .bar-track{height:8px;background:var(--bg-3);border-radius:5px;overflow:hidden;margin-top:5px}
#cv2root .bar-fill{height:100%;border-radius:5px}
#cv2root .mini-row{display:flex;align-items:center;gap:9px;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px;cursor:pointer}
#cv2root .mini-row:last-child{border-bottom:0}
#cv2root .mini-row:hover{color:var(--accent)}
#cv2root .mini-row .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#cv2root .legend{display:flex;flex-direction:column;gap:7px;margin-top:10px}
#cv2root .legend-item{display:flex;align-items:center;gap:8px;font-size:12.5px}
#cv2root .legend-item .sw{width:11px;height:11px;border-radius:3px;flex:none}
#cv2root .legend-item .v{margin-left:auto;font-weight:700;color:var(--text-2)}
#cv2root .donut-wrap{display:flex;align-items:center;gap:16px}

#cv2root .empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:70px 20px;color:var(--muted);text-align:center}
#cv2root .empty .big{font-size:40px;opacity:.55}
#cv2root .empty h4{margin:0;font-size:15px;color:var(--text)}

/* ===== Drawer ===== */
#cv2root .scrim{position:absolute;inset:0;background:rgba(15,15,25,.42);z-index:60;display:grid;place-items:center}
#cv2root .c2drawer{position:absolute;top:0;right:0;bottom:0;width:min(660px,94vw);background:var(--panel);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:70;display:flex;flex-direction:column;animation:cv2slideIn .16s ease-out}
@keyframes cv2slideIn{from{transform:translateX(24px);opacity:.4}to{transform:none;opacity:1}}
#cv2root .dw-head{display:flex;align-items:center;gap:8px;padding:12px 16px;border-bottom:1px solid var(--border);flex:none}
#cv2root .dw-crumb{font-size:12px;color:var(--muted);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#cv2root .dw-body{flex:1;overflow-y:auto;padding:16px 20px 40px}
#cv2root .dw-title{width:100%;border:0;outline:0;background:none;font-size:21px;font-weight:680;line-height:1.3;resize:none;overflow:hidden;font-family:inherit;margin-bottom:12px}
#cv2root .dw-props{display:grid;grid-template-columns:104px minmax(0,1fr);gap:5px 12px;align-items:center;margin-bottom:18px}
#cv2root .dw-props label{font-size:12px;color:var(--muted);font-weight:650}
#cv2root .dw-field{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-height:30px}
#cv2root .sel{background:var(--bg-3);border:1px solid transparent;border-radius:6px;padding:4px 8px;font-size:12.5px;font-weight:600;cursor:pointer;outline:0}
#cv2root .sel:hover{border-color:var(--border-2)}
#cv2root input.sel[type="date"],#cv2root input.sel[type="number"]{font-weight:600}
#cv2root .dw-sec{margin-top:20px}
#cv2root .dw-sec h4{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 9px;display:flex;align-items:center;gap:8px}
#cv2root .dw-desc{width:100%;min-height:88px;background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;outline:0;font-family:inherit;font-size:13.5px;line-height:1.55;resize:vertical}
#cv2root .dw-desc:focus{border-color:var(--accent);background:var(--panel)}
#cv2root .chk-item{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:13.5px}
#cv2root .chk-item.done span.txt{color:var(--muted);text-decoration:line-through}
#cv2root .chk-item span.txt{flex:1;cursor:text}
#cv2root .chk-item .x{opacity:0;background:none;border:0;color:var(--muted);cursor:pointer;font-size:14px}
#cv2root .chk-item:hover .x{opacity:1}
#cv2root .sub-item{display:flex;align-items:center;gap:9px;padding:6px 8px;border:1px solid var(--border);border-radius:7px;margin-bottom:5px;font-size:13px;cursor:pointer}
#cv2root .sub-item:hover{border-color:var(--accent)}
#cv2root .sub-item.done .nm{color:var(--muted);text-decoration:line-through}
#cv2root .sub-item .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#cv2root .inline-add{display:flex;align-items:center;gap:8px;padding:6px 0;color:var(--muted);font-size:13px}
#cv2root .inline-add input{flex:1;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:5px 9px;outline:0;font-size:13px}
#cv2root .inline-add input:focus{border-color:var(--accent)}
#cv2root .cmt{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
#cv2root .cmt-body{flex:1;min-width:0}
#cv2root .cmt-head{display:flex;align-items:baseline;gap:8px;margin-bottom:3px}
#cv2root .cmt-head b{font-size:13px}
#cv2root .cmt-head time{font-size:11px;color:var(--muted)}
#cv2root .cmt-text{font-size:13.5px;line-height:1.5;white-space:pre-wrap;word-break:break-word}
#cv2root .progress-lbl{display:flex;justify-content:space-between;font-size:11.5px;color:var(--muted);font-weight:650}

/* ===== Modal ===== */
#cv2root .modal{background:var(--panel);border-radius:13px;box-shadow:var(--shadow-lg);width:min(520px,94vw);max-height:86vh;overflow:auto;padding:20px 22px}
#cv2root .modal h3{margin:0 0 4px;font-size:17px}
#cv2root .modal p.sub{margin:0 0 16px;font-size:13px;color:var(--muted)}
#cv2root .field{margin-bottom:13px}
#cv2root .field label{display:block;font-size:12px;font-weight:650;color:var(--text-2);margin-bottom:5px}
#cv2root .field input[type=text],#cv2root .field input[type=date],#cv2root .field input[type=number],#cv2root .field select,#cv2root .field textarea{width:100%;background:var(--bg-2);border:1px solid var(--border);border-radius:7px;padding:8px 10px;outline:0;font-size:13.5px;font-family:inherit}
#cv2root .field input:focus,#cv2root .field select:focus,#cv2root .field textarea:focus{border-color:var(--accent);background:var(--panel)}
#cv2root .modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}
#cv2root .swatches{display:flex;gap:7px;flex-wrap:wrap}
#cv2root .sw-btn{width:24px;height:24px;border-radius:7px;border:2px solid transparent;cursor:pointer}
#cv2root .sw-btn.on{border-color:var(--text)}
#cv2root .kbd-list{display:grid;grid-template-columns:1fr auto;gap:8px 18px;font-size:13px;align-items:center}
#cv2root .kbd-list kbd{background:var(--bg-3);border:1px solid var(--border);border-radius:5px;padding:2px 7px;font-size:11.5px;font-family:var(--font);font-weight:700}
#cv2root .status-editor{display:flex;align-items:center;gap:8px;margin-bottom:7px}
#cv2root .status-editor input[type=text]{flex:1;background:var(--bg-2);border:1px solid var(--border);border-radius:6px;padding:5px 8px;outline:0;font-size:13px}

/* ===== Context menu ===== */
/* OVERLAY NOTE: ctx-menu kept position:fixed (fallback) with z-index bumped to 1020.
 * Its placement is driven by JS clientX/clientY math (app.js) owned by the sibling
 * agent; leaving it fixed keeps those viewport coordinates valid. */
#cv2root .ctx-menu{position:fixed;z-index:1020;background:var(--panel);border:1px solid var(--border);border-radius:9px;box-shadow:var(--shadow-lg);padding:5px;min-width:180px}
#cv2root .ctx-item{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:6px;font-size:13px;cursor:pointer;color:var(--text)}
#cv2root .ctx-item:hover{background:var(--bg-3)}
#cv2root .ctx-item.danger{color:var(--red)}
#cv2root .ctx-sep{height:1px;background:var(--border);margin:4px 2px}

/* ===== Toast ===== */
#cv2root .toasts{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);z-index:120;display:flex;flex-direction:column;gap:8px;align-items:center}
#cv2root .c2toast{background:var(--text);color:var(--bg);padding:9px 16px;border-radius:8px;font-size:13px;font-weight:600;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:11px;animation:cv2pop .16s}
#cv2root .c2toast button{background:none;border:0;color:var(--accent-3);font-weight:700;cursor:pointer;font-size:12.5px}
@keyframes cv2pop{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}

@media (max-width:900px){
  #cv2root{grid-template-columns:1fr}
  #cv2root #cv2-sidebar{position:absolute;left:0;top:0;bottom:0;width:var(--sb-w);z-index:80;box-shadow:var(--shadow-lg);display:none}
  #cv2root.sb-open #cv2-sidebar{display:flex}
  #cv2root #cv2-topbar{padding:10px 12px}
  #cv2root .viewbar,#cv2root .c2toolbar{padding-left:12px;padding-right:12px}
  #cv2root .trow,#cv2root .thead,#cv2root .group-head,#cv2root .addrow{padding-left:12px;padding-right:12px}
  #cv2root .board{padding:12px}
  #cv2root .bcol{width:82vw}
  #cv2root .dash{padding:12px;grid-template-columns:1fr}
  #cv2root .cal{padding:12px}
  #cv2root .cal-cell{min-height:64px}
  #cv2root .trow .t-name .c2tag{display:none}
  #cv2root .only-mobile{display:grid}
  #cv2root .trow,#cv2root .thead{grid-template-columns:26px minmax(0,1fr) 84px 72px}
  #cv2root .trow .hide-sm,#cv2root .thead .hide-sm{display:none}
}

/* ===== Settings: branding + themes ===== */
#cv2root .set-sec{margin-bottom:20px;padding-bottom:18px;border-bottom:1px solid var(--border)}
#cv2root .set-sec:last-child{border-bottom:0;margin-bottom:0;padding-bottom:0}
#cv2root .set-sec h4{margin:0 0 11px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
#cv2root .brand-preview{display:flex;align-items:center;gap:10px;padding:11px 13px;background:var(--bg-2);border:1px solid var(--border);border-radius:9px;margin-top:4px}
#cv2root .theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:9px}
#cv2root .theme-card{display:flex;flex-direction:column;gap:7px;padding:9px;background:var(--bg-2);border:2px solid var(--border);border-radius:9px;cursor:pointer;text-align:left}
#cv2root .theme-card:hover{border-color:var(--border-2)}
#cv2root .theme-card.on{border-color:var(--accent)}
#cv2root .theme-sw{display:flex;gap:3px;height:22px}
#cv2root .theme-sw i{flex:1;border-radius:4px;border:1px solid rgba(128,128,128,.25)}
#cv2root .theme-nm{font-size:12px;font-weight:650}
#cv2root .color-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:8px}
#cv2root .color-row{display:flex;align-items:center;justify-content:space-between;gap:9px;background:var(--bg-2);border:1px solid var(--border);border-radius:8px;padding:7px 10px;font-size:12.5px;font-weight:600}
#cv2root .color-row input[type=color]{width:34px;height:26px;border:0;background:none;cursor:pointer;padding:0;flex:none}
