/* ============================================================
   views.css — saved views (tab strip + per-view toolbar), the
   popover/menu primitive, and the list / gallery / calendar /
   dashboard view bodies. Loaded last so it can lean on the atoms
   in base.css, fields.css and kanban.css.
   ============================================================ */

/* ---- reusable anchored popover + menu ---- */
.pop{display:inline-flex}
.pop__panel{
  position:fixed;z-index:120;background:var(--surface);border:1px solid var(--line-2);
  border-radius:var(--radius-sm);box-shadow:var(--shadow-pop);padding:6px;max-width:min(92vw,420px);
}
.menu{display:flex;flex-direction:column;gap:1px;min-width:190px}
.menu__label{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);padding:7px 10px 4px}
.menu__sep{height:1px;background:var(--line);margin:4px 2px}
.menu__item{display:flex;align-items:center;gap:9px;border:none;background:transparent;border-radius:var(--radius-xs);padding:8px 10px;font-size:.9rem;font-weight:500;color:var(--ink-2);text-align:left;width:100%}
.menu__item:hover{background:var(--sink);color:var(--ink)}
.menu__item .icon{color:var(--muted);flex:none}
.menu__item--on{color:var(--ink);font-weight:600}
.menu__item--on .icon{color:var(--accent-ink)}
.menu__check{margin-left:auto;color:var(--accent-ink)}
.menu__item--danger{color:var(--bad)}
.menu__item--danger:hover{background:var(--bad-tint);color:var(--bad)}
.menu__item--danger .icon{color:var(--bad)}
.menu__item--rich{align-items:flex-start;padding:8px 10px}
.menu__item--rich .icon{margin-top:2px;color:var(--accent-ink)}
.menu__rich{display:flex;flex-direction:column;gap:1px;line-height:1.3}
.menu__rich b{font-weight:600;color:var(--ink)}
.menu__rich small{color:var(--muted);font-size:.78rem}

/* ---- saved-views tab strip ---- */
.viewbar{padding:2px 22px 0}
.viewbar__tabs{display:flex;align-items:center;gap:3px;flex-wrap:wrap;border-bottom:1px solid var(--line);padding-bottom:0}
.vtab{display:inline-flex;align-items:center;position:relative}
.vtab__btn{
  display:inline-flex;align-items:center;gap:7px;border:none;background:transparent;color:var(--muted);
  padding:9px 4px 10px;margin:0 8px;font-weight:600;font-size:.9rem;border-bottom:2px solid transparent;margin-bottom:-1px;
}
.vtab__btn .icon{color:var(--line-2)}
.vtab__btn:hover{color:var(--ink-2)}
.vtab__btn:hover .icon{color:var(--muted)}
.vtab--on .vtab__btn{color:var(--ink);border-bottom-color:var(--accent)}
.vtab--on .vtab__btn .icon{color:var(--accent-ink)}
.vtab__name{white-space:nowrap}
.vtab__more{border:none;background:transparent;color:var(--muted);padding:3px;border-radius:6px;display:grid;place-items:center;margin-left:-6px}
.vtab__more:hover{background:var(--sink);color:var(--ink)}
.vtab__rename{border:1px solid var(--accent);background:var(--accent-tint);border-radius:var(--radius-xs);padding:5px 8px;font:inherit;font-weight:600;font-size:.9rem;width:140px;margin:2px 6px}
.vtab__rename:focus{outline:none}
.vtab__add{display:inline-flex;align-items:center;gap:5px;border:none;background:transparent;color:var(--muted);padding:8px 10px;font-weight:600;font-size:.85rem;border-radius:var(--radius-xs)}
.vtab__add:hover{background:var(--sink);color:var(--accent-ink)}

/* ---- per-view toolbar ---- */
.vtoolbar{display:flex;align-items:center;gap:10px;padding:10px 22px 2px;flex-wrap:wrap}
.vtoolbar__sp{flex:1;min-width:8px}
.vtoolbar__count{font-family:"IBM Plex Mono",monospace;font-size:.76rem;color:var(--muted)}
.vtotal{font-size:.9rem;color:var(--ink-2)}
.vtotal b{font-family:"IBM Plex Mono",monospace;color:var(--ink);font-weight:600}

.searchbox{display:inline-flex;align-items:center;gap:7px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:var(--r-pill);padding:4px 8px 4px 12px;color:var(--muted);transition:border-color .15s ease}
.searchbox:focus-within{border-color:var(--accent);color:var(--ink-2)}
.searchbox--on{border-color:var(--accent-tint-2)}
.searchbox input{border:none;background:transparent;font-size:.88rem;width:150px;padding:2px 0}
.searchbox input:focus{outline:none}
.searchbox input::-webkit-search-cancel-button{display:none}
.searchbox__x{border:none;background:transparent;color:var(--muted);padding:2px;border-radius:50%;display:grid;place-items:center}
.searchbox__x:hover{background:var(--sink);color:var(--ink)}

.vbtn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-2);background:var(--surface-2);color:var(--ink-2);border-radius:var(--r-pill);padding:6px 12px;font-weight:600;font-size:.84rem}
.vbtn:hover{border-color:var(--ink-2);color:var(--ink)}
.vbtn .icon{color:var(--muted)}
.vbtn--on{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-ink)}
.vbtn--on .icon{color:var(--accent-ink)}
.vbtn__badge{display:inline-grid;place-items:center;min-width:17px;height:17px;padding:0 4px;border-radius:var(--r-pill);background:var(--accent);color:#1B1A17;font-family:"IBM Plex Mono",monospace;font-size:.68rem;font-weight:700}

/* ---- filter editor (inside the filter popover) ---- */
.filed{display:flex;flex-direction:column;gap:9px;min-width:320px}
.filed__empty{color:var(--muted);font-size:.82rem;line-height:1.45;padding:2px 2px 4px}
.filed__row{display:grid;grid-template-columns:1fr auto 26px;align-items:center;gap:6px}
.filed__val{grid-column:1 / -1}
.filed__val .input{width:100%;border:1px solid var(--line-2);background:var(--surface);border-radius:var(--radius-xs);padding:7px 9px;font-size:.88rem}
.filed__val .input:focus{outline:none;border-color:var(--accent);background:var(--accent-tint)}
.filed__op{min-width:96px}
.filed__x{border:none;background:transparent;color:var(--muted);padding:5px;border-radius:6px;display:grid;place-items:center}
.filed__x:hover{background:var(--bad-tint);color:var(--bad)}
/* filter/sort popovers use the compact control rhythm, not the tall form one */
.filed .selm--input .selm__btn,
.sorted .selm--input .selm__btn{padding:7px 9px;font-size:.88rem;border-radius:var(--radius-xs)}
.filed__foot{display:flex;align-items:center;gap:8px;margin-top:2px}
.filed__clear{border:none;background:transparent;color:var(--muted);font-weight:600;font-size:.82rem;padding:4px 6px;border-radius:6px}
.filed__clear:hover{color:var(--bad);background:var(--bad-tint)}

/* ---- sort popover ---- */
.sorted{display:flex;flex-direction:column;gap:8px;min-width:220px}
.sorted__dir{display:flex;gap:4px;background:var(--sink);border-radius:var(--r-pill);padding:3px}
.sorted__dir button{flex:1;border:none;background:transparent;border-radius:var(--r-pill);padding:6px 8px;font-weight:600;font-size:.82rem;color:var(--muted)}
.sorted__dir button.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}

/* ---- active-filter chips (under the toolbar) ---- */
.filterchips{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:8px 22px 2px}
.fchip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--accent-tint-2);background:var(--accent-tint);color:var(--accent-ink);border-radius:var(--r-pill);padding:3px 9px;font-size:.78rem}
.fchip b{font-weight:700}
.fchip__op{opacity:.7}
.fchip__val{font-weight:600;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fchip .icon{opacity:.65}
.fchip:hover{border-color:var(--accent)}
.fchip:hover .icon{opacity:1}
.fchip--clear{background:transparent;border-style:dashed;color:var(--muted)}
.fchip--clear:hover{color:var(--bad);border-color:var(--bad)}

/* ---- shared chip row (list/gallery) ---- */
.rchips{display:flex;flex-wrap:wrap;gap:6px}

/* ---- collection form: default-view picker (constructor surface) ---- */
.vpick{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.vpick__opt{display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;border:1px solid var(--line-2);background:var(--surface);border-radius:var(--radius-sm);padding:10px 11px;color:var(--ink-2)}
.vpick__opt .icon{color:var(--muted)}
.vpick__opt:hover{border-color:var(--admin);background:var(--admin-tint)}
.vpick__opt--on{border-color:var(--admin);background:var(--admin-tint);color:var(--admin-ink);box-shadow:0 0 0 2px var(--admin-tint-2)}
.vpick__opt--on .icon{color:var(--admin)}
.vpick__l{font-weight:600;font-size:.9rem}
.vpick__h{font-size:.74rem;color:var(--muted);line-height:1.25}

/* ============================================================
   List view
   ============================================================ */
.listview-wrap{flex:1;min-height:0;overflow:auto;padding:6px 22px 26px}
.lgroup{margin-bottom:16px}
.lgroup__hd{display:flex;align-items:center;gap:8px;padding:6px 4px;position:sticky;top:0;background:var(--bg);z-index:1}
.lgroup__name{font-weight:700;font-size:.95rem}
.lgroup__count{font-family:"IBM Plex Mono",monospace;font-size:.76rem;color:var(--muted)}
.lgroup__sum{margin-left:auto;font-family:"IBM Plex Mono",monospace;font-size:.8rem;color:var(--ink-2)}
.lgroup__sigma{color:var(--muted)}
.lgroup__rows{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}
.lrow{display:flex;align-items:center;gap:11px;padding:10px 12px;border:none;background:transparent;border-bottom:1px solid var(--line);text-align:left;width:100%;color:var(--ink)}
.lrow:last-of-type{border-bottom:none}
.lrow:hover{background:var(--surface-2)}
.lrow__ava{width:26px;height:26px;border-radius:7px;font-size:.78rem}
.lrow__title{font-weight:600;font-size:.94rem;flex:none;max-width:34%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lrow__title.placeholder{color:var(--muted);font-weight:500}
.lrow__meta{flex:1;min-width:0;overflow:hidden;justify-content:flex-end}
.lrow__go{color:var(--line-2);flex:none}
.lrow:hover .lrow__go{color:var(--muted)}
.lrow-add{display:flex;align-items:center;gap:8px;border:none;background:transparent;color:var(--muted);padding:9px 12px;font-weight:600;font-size:.85rem;width:100%;border-top:1px dashed var(--line)}
.lrow-add:hover{background:var(--sink);color:var(--accent-ink)}

/* ============================================================
   Gallery view
   ============================================================ */
.gallery-wrap{flex:1;min-height:0;overflow:auto;padding:10px 22px 26px}
.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.gcard{display:flex;flex-direction:column;text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-1);transition:box-shadow .15s ease,border-color .15s ease,transform .12s ease;color:var(--ink)}
.gcard:hover{box-shadow:var(--shadow-2);border-color:var(--line-2)}
.gcard:active{transform:translateY(1px)}
.gcard__cover{height:96px;display:grid;place-items:center;background:linear-gradient(135deg,var(--accent-tint),var(--sink));background-size:cover;background-position:center;border-bottom:1px solid var(--line)}
.gcard__cover--img{background-color:var(--sink)}
.gcard__mono{font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:1.8rem;color:color-mix(in srgb,var(--accent-ink) 60%,transparent)}
.gcard__body{display:flex;flex-direction:column;gap:8px;padding:12px}
.gcard__stage{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.gcard__title{font-weight:700;font-size:1rem;line-height:1.3;word-break:break-word}
.gcard__title.placeholder{color:var(--muted);font-weight:500}
.gcard__meta{margin-top:1px}
.gcard--add{align-items:center;justify-content:center;gap:9px;flex-direction:row;min-height:120px;border-style:dashed;border-color:var(--line-2);background:transparent;color:var(--muted);box-shadow:none;font-weight:600}
.gcard--add:hover{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-tint)}

/* ============================================================
   Calendar view
   ============================================================ */
.calendar-wrap{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;padding:6px 22px 22px}
.cal-nodate{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;color:var(--muted);padding:40px}
.cal-nodate .icon{color:var(--line-2)}
.cal-nodate p{max-width:42ch;line-height:1.5;font-size:.92rem}
.cal-nodate b{color:var(--ink-2)}
.cal-head{display:flex;align-items:center;gap:12px;padding:4px 2px 12px}
.cal-nav{display:inline-flex;gap:2px}
.cal-title{font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:1.2rem;letter-spacing:-.01em}
.cal-field{font-size:.82rem;color:var(--muted)}
.cal-grid{flex:1;min-height:440px;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:auto repeat(6,minmax(84px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}
.cal-dow{background:var(--surface-2);font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:center;padding:7px 0}
.cal-cell{background:var(--surface);min-height:92px;padding:4px;display:flex;flex-direction:column;gap:3px;transition:background .12s ease}
.cal-cell--out{background:var(--surface-2)}
.cal-cell--out .cal-cell__num{color:var(--line-2)}
.cal-cell--over{background:var(--accent-tint);box-shadow:inset 0 0 0 2px var(--accent)}
.cal-cell__hd{display:flex;align-items:center;justify-content:space-between}
.cal-cell__num{font-size:.8rem;font-weight:600;color:var(--ink-2);width:22px;height:22px;display:grid;place-items:center}
.cal-cell--today .cal-cell__num{background:var(--accent);color:#1B1A17;border-radius:50%}
.cal-cell__add{opacity:0;border:none;background:transparent;color:var(--muted);padding:2px;border-radius:5px;display:grid;place-items:center;transition:opacity .12s ease}
.cal-cell:hover .cal-cell__add{opacity:1}
.cal-cell__add:hover{background:var(--sink);color:var(--accent-ink)}
.cal-cell__events{display:flex;flex-direction:column;gap:3px;overflow:auto;min-height:0}
.cal-ev{display:flex;align-items:baseline;gap:5px;border:none;border-radius:6px;background:var(--accent-tint);color:var(--accent-ink);padding:3px 7px;font-size:.78rem;font-weight:600;text-align:left;width:100%;touch-action:none;border:1px solid var(--accent-tint-2)}
.cal-ev:hover{filter:brightness(.98);border-color:var(--accent)}
.cal-ev--drag{opacity:.4}
.cal-ev__time{font-family:"IBM Plex Mono",monospace;font-size:.66rem;color:var(--accent-ink);opacity:.8;flex:none}
.cal-ev__t{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-ev__t.placeholder{font-weight:500;opacity:.8}
.cal-ev--loose{width:auto;display:inline-flex}
.cal-undated{display:flex;align-items:center;flex-wrap:wrap;gap:7px;padding:12px 2px 0;margin-top:10px;border-top:1px dashed var(--line-2)}
.cal-undated__lbl{display:inline-flex;align-items:center;gap:5px;font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.cal-ghost{position:fixed;z-index:1200;pointer-events:none;transform:translate(8px,8px);background:var(--surface);border:1px solid var(--accent);border-radius:6px;box-shadow:var(--shadow-pop);padding:3px 9px;font-size:.8rem;font-weight:600;color:var(--accent-ink);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ============================================================
   Dashboard view
   ============================================================ */
.dash-wrap{flex:1;min-height:0;overflow:auto;padding:10px 22px 26px;display:flex;flex-direction:column;gap:16px}
.dash-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;display:flex;flex-direction:column;gap:6px;box-shadow:var(--shadow-1)}
.kpi--accent{background:var(--accent-tint);border-color:var(--accent-tint-2)}
.kpi__v{font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:1.9rem;line-height:1;letter-spacing:-.01em}
.kpi--accent .kpi__v{color:var(--accent-ink)}
.kpi__k{display:inline-flex;align-items:center;gap:5px;font-size:.82rem;color:var(--muted);font-weight:500}
.kpi__k .icon{color:var(--muted)}
.dash-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-1)}
.dash-card__hd{display:flex;align-items:center;gap:8px;font-weight:700;font-size:.98rem;margin-bottom:14px}
.dash-card__hd .icon{color:var(--accent-ink)}
.dash-bars{display:flex;flex-direction:column;gap:11px}
.dbar{display:grid;grid-template-columns:minmax(110px,1.4fr) 3fr auto;align-items:center;gap:12px}
.dbar__name{display:inline-flex;align-items:center;gap:7px;font-size:.88rem;font-weight:500;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dbar__track{height:12px;background:var(--sink);border-radius:var(--r-pill);overflow:hidden}
.dbar__fill{height:100%;border-radius:var(--r-pill);background:var(--oc,var(--accent));min-width:3px;transition:width .3s cubic-bezier(.22,.61,.36,1)}
.dbar__val{font-family:"IBM Plex Mono",monospace;font-size:.82rem;color:var(--ink-2);white-space:nowrap;text-align:right}
.dbar__sum{color:var(--muted)}

/* ============================================================
   Board power-ups: quick filters, card face, column collapse,
   swimlanes, FLIP, multi-select, bulk bar, shortcuts help
   ============================================================ */

/* ---- quick filters (toolbar) ---- */
.quick{display:inline-flex;align-items:center;gap:5px}
.qchip{border:1px solid var(--line-2);background:var(--surface-2);color:var(--ink-2);border-radius:var(--r-pill);padding:5px 11px;font-weight:600;font-size:.82rem;display:inline-flex;align-items:center;gap:5px}
.qchip:hover{border-color:var(--ink-2);color:var(--ink)}
.qchip .icon{color:var(--muted)}
.qchip--on{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-ink)}
.qchip--on .icon{color:var(--accent-ink)}
.qme{border:none;background:transparent;padding:0;border-radius:50%}
.qme__ava{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:.78rem;background:var(--accent-tint);color:var(--accent-ink);border:1px solid var(--accent-tint-2)}
.qme:hover .qme__ava{border-color:var(--accent)}
.qme__ava--sm{width:22px;height:22px;font-size:.72rem}

/* ---- card face editor (popover) ---- */
.cardcfg{display:flex;flex-direction:column;gap:14px;min-width:260px}
.cardcfg__fields{display:flex;flex-direction:column;gap:2px;max-height:210px;overflow:auto;margin-bottom:6px}
.cardcfg__f{display:flex;align-items:center;gap:9px;padding:5px 6px;border-radius:var(--radius-xs);font-size:.88rem;color:var(--ink-2)}
.cardcfg__f:hover{background:var(--sink)}
.cardcfg__f input{accent-color:var(--accent);width:15px;height:15px}
.cardcfg__empty{color:var(--muted);font-size:.82rem;padding:4px 6px}

/* ---- card: colour tag, owner avatar, select, hover actions, focus ---- */
/* :not(.drag-ghost) — the drag clone must keep .drag-ghost's position:fixed,
   which this rule would otherwise override (same specificity, later file). */
.kcard:not(.drag-ghost){position:relative}
.kcard--tagged{border-left:3px solid var(--oc,var(--line-2))}
.kcard--selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-tint)}
.kcard--focused{box-shadow:0 0 0 2px var(--accent),var(--shadow-2)}
.kcard__owner{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:.72rem;background:var(--accent-tint);color:var(--accent-ink);border:1px solid var(--accent-tint-2)}
.kcard__check{position:absolute;top:7px;left:7px;z-index:2;color:var(--muted);background:var(--surface);border-radius:5px;display:grid;place-items:center;opacity:0;transition:opacity .12s ease;cursor:pointer}
.kcard:hover .kcard__check,.kcard__check--show{opacity:1}
.kcard__check:hover{color:var(--accent-ink)}
.kcard--selected .kcard__check{color:var(--accent-ink);opacity:1}
.kcard:hover .kcard__grip{visibility:hidden}            /* checkbox takes the corner on hover */
.kcard__actions{position:absolute;right:7px;bottom:7px;display:flex;gap:4px;opacity:0;transition:opacity .12s ease}
.kcard:hover .kcard__actions{opacity:1}
.kcard__act{border:1px solid var(--line);background:var(--surface);color:var(--muted);border-radius:6px;padding:3px;display:grid;place-items:center;box-shadow:var(--shadow-1)}
.kcard__act:hover{color:var(--bad);border-color:var(--bad);background:var(--bad-tint)}
.kcol__cards{display:flex;flex-direction:column;gap:9px}

/* ---- FLIP: cards re-flow when the order changes ---- */
.kflip-move{transition:transform .26s cubic-bezier(.2,.9,.3,1)}
.kflip-enter-active{transition:opacity .2s ease, transform .2s cubic-bezier(.2,.9,.3,1.3)}
.kflip-enter-from{opacity:0;transform:translateY(-6px) scale(.98)}

/* ---- column collapse to a thin strip ---- */
.kcol__fold{margin-left:2px;border:none;background:transparent;color:var(--line-2);padding:3px;border-radius:5px;display:grid;place-items:center;flex:none}
.kcol__fold:hover{background:var(--sink);color:var(--muted)}
.kcol--collapsed{
  flex:0 0 44px;align-self:stretch;min-height:130px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:10px;padding:10px 4px;
  background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius);
}
.kcol--collapsed:hover{border-color:var(--line-2);background:var(--sink)}
.kcol--collapsed.kcol--over{border-color:var(--accent);background:var(--accent-tint)}
.kcol--collapsed .kcol__dot{margin-top:2px}
.kcol__cname{writing-mode:vertical-rl;transform:rotate(180deg);font-weight:600;font-size:.86rem;color:var(--ink-2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-height:220px}
.kcol__ccount{font-family:"IBM Plex Mono",monospace;font-size:.72rem;color:var(--muted)}

/* ---- swimlanes ---- */
.board--lanes{flex-direction:column;gap:18px;align-items:stretch}
.klane{display:flex;flex-direction:column;gap:8px}
.klane__hd{display:flex;align-items:center;gap:8px;position:sticky;left:0;padding:2px 2px 0;width:max-content}
.klane__name{font-weight:700;font-size:.95rem}
.klane__name:empty::before{content:'—';color:var(--muted)}
.klane__count{font-family:"IBM Plex Mono",monospace;font-size:.76rem;color:var(--muted)}
.klane__cols{display:flex;gap:14px;align-items:flex-start}

/* ---- multi-select bulk bar (floating) ---- */
.bulkbar{
  position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:70;
  display:flex;align-items:center;gap:10px;padding:8px 10px 8px 16px;
  background:var(--surface);border:1px solid var(--line-2);border-radius:var(--r-pill);box-shadow:var(--shadow-pop);
}
.bulkbar__n{font-weight:700;font-size:.9rem}
.bulkbar__sp{width:1px;height:22px;background:var(--line)}
.bulk-enter-active,.bulk-leave-active{transition:opacity .2s ease, transform .2s cubic-bezier(.2,.9,.3,1.3)}
.bulk-enter-from,.bulk-leave-to{opacity:0;transform:translate(-50%,12px)}

/* ---- shortcuts help overlay ---- */
.kbhelp{position:fixed;inset:0;z-index:140;display:grid;place-items:center;padding:24px;background:rgba(20,18,15,.4);backdrop-filter:blur(2px)}
.kbhelp__panel{width:min(560px,96vw);max-height:86vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:var(--shadow-pop);overflow:hidden}
.kbhelp__hd{display:flex;align-items:center;gap:10px;padding:16px 18px;border-bottom:1px solid var(--line)}
.kbhelp__hd h3{font-family:"Bricolage Grotesque",sans-serif;font-weight:700;font-size:1.15rem}
.kbhelp__hd .icon{color:var(--accent-ink)}
.kbhelp__body{padding:8px 18px 14px;overflow:auto;display:grid;grid-template-columns:1fr 1fr;gap:4px 26px}
.kbhelp__group{padding:8px 0}
.kbhelp__gname{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.kbhelp__row{display:flex;align-items:center;gap:10px;padding:4px 0}
.kbhelp__desc{font-size:.88rem;color:var(--ink-2)}
.kbhelp__keys,.kbhelp__foot kbd{
  font-family:"IBM Plex Mono",monospace;font-size:.76rem;color:var(--ink);
  background:var(--sink);border:1px solid var(--line-2);border-bottom-width:2px;border-radius:6px;padding:3px 7px;white-space:nowrap;flex:none;
}
.kbhelp__foot{padding:12px 18px;border-top:1px solid var(--line);color:var(--muted);font-size:.82rem}
.kb-enter-active,.kb-leave-active{transition:opacity .18s ease}
.kb-enter-active .kbhelp__panel,.kb-leave-active .kbhelp__panel{transition:transform .2s cubic-bezier(.2,.9,.3,1.3)}
.kb-enter-from,.kb-leave-to{opacity:0}
.kb-enter-from .kbhelp__panel,.kb-leave-to .kbhelp__panel{transform:scale(.96) translateY(8px)}

@media (max-width:900px){
  .viewbar,.vtoolbar,.filterchips{padding-left:12px;padding-right:12px}
  .listview-wrap,.gallery-wrap,.calendar-wrap,.dash-wrap{padding-left:12px;padding-right:12px}
  .lrow__title{max-width:50%}
  .dbar{grid-template-columns:minmax(84px,1fr) 2fr auto}
  .kbhelp__body{grid-template-columns:1fr}
}
