/* styles-kanban.css — extracted from styles.css (Kanban board styles) */

/* ── Kanban (kanban.js) ──────────────────────────────────────── */

      .kanban-overlay {
        position: fixed;
        inset: 0;
        background: var(--bg);
        z-index: var(--z-modal-bg);
        display: none;
        flex-direction: column;
        padding: 0 20px 20px;
        -webkit-app-region: no-drag;
      }
      .kanban-overlay.active {
        display: flex;
        animation: gn-overlay-in var(--anim-open-speed) both;
      }
      .kanban-velocity {
        display: flex;
        gap: 10px;
        flex-wrap: wrap;
        align-items: center;
        margin: 0 auto;
      }
      .kanban-header {
        margin: 0 -20px 0;
        position: relative;
      }
      .kb-tools-row {
        display: flex;
        align-items: center;
        gap: 12px;
        padding: 10px 24px;
        flex-shrink: 0;
        flex-wrap: wrap;
        background: rgba(255, 255, 255, 0.015);
        border-bottom: 1px solid rgba(255, 255, 255, 0.03);
      }
      .kb-tools-row .kb-header-tools {
        display: flex;
        gap: 6px;
        margin-left: auto;
      }
      .kanban-header h2 {
        margin: 0;
      }
      .kanban-board {
        display: flex;
        gap: 16px;
        flex: 1;
        overflow-x: auto;
      }
      .kanban-col {
        flex: 1;
        min-width: 220px;
        background: var(--glass-bg);
        border: 1px solid var(--glass-border);
        border-radius: var(--radius-md);
        padding: 12px;
        display: flex;
        flex-direction: column;
      }
      .kanban-col-title {
        font-size: var(--fs-base);
        font-weight: 600;
        margin-bottom: 10px;
        padding-bottom: 8px;
        border-bottom: 1px solid var(--glass-border);
        position: relative;
      }
      .kanban-cards {
        flex: 1;
        display: flex;
        flex-direction: column;
        gap: 6px;
        min-height: 40px;
      }
      .kanban-card {
        background: rgba(255, 255, 255, 0.04);
        border: 1px solid var(--glass-border);
        border-radius: var(--radius-base);
        padding: 8px 10px;
        font-size: var(--fs-base);
        cursor: grab;
        transition: all 0.15s;
        position: relative;
      }
      .kanban-card:hover {
        background: rgba(var(--primary-rgb), 0.1);
        border-color: var(--primary);
      }
      .kanban-card.dragging {
        opacity: 0.4;
      }
      .kanban-col.drag-over {
        background: rgba(var(--primary-rgb), 0.08);
        border-color: var(--primary);
      }
      .kanban-card-header {
        display: flex;
        align-items: flex-start;
        gap: 6px;
        justify-content: space-between;
      }
      .kanban-card-text {
        flex: 1;
        line-height: 1.4;
        word-break: break-word;
      }
      .kanban-card-close {
        font-size: var(--fs-sm);
        background: none;
        border: none;
        color: var(--text-dim);
        cursor: pointer;
        padding: 0 2px;
        opacity: 0;
        transition: opacity 0.15s;
        line-height: 1;
        flex-shrink: 0;
      }
      .kanban-card:hover .kanban-card-close {
        opacity: 1;
      }
      .kanban-card-close:hover {
        color: rgba(var(--color-danger-rgb), 0.9) !important;
      }
      .kanban-add {
        margin-top: 8px;
        background: none;
        border: 1px dashed var(--glass-border);
        border-radius: var(--radius-base);
        padding: 6px;
        color: var(--text-dim);
        font-size: var(--fs-sm);
        cursor: pointer;
        transition: all 0.15s;
      }
      .kanban-add:hover {
        border-color: var(--primary);
        color: var(--primary);
      }
      .kanban-card-actions {
        display: flex;
        gap: 4px;
        margin-top: 5px;
        opacity: 0;
        transition: opacity 0.15s;
      }
      .kanban-card:hover .kanban-card-actions {
        opacity: 1;
      }
      .kanban-card-actions button {
        font-size: var(--fs-xs);
        background: none;
        border: none;
        color: var(--text-dim);
        cursor: pointer;
        padding: 2px 4px;
        border-radius: var(--radius-xs);
      }
      .kanban-card-actions button:hover {
        color: var(--primary);
        background: rgba(var(--primary-rgb), 0.1);
      }
      .kanban-col-count {
        font-size: var(--fs-sm);
        background: rgba(var(--primary-rgb), 0.2);
        color: rgba(var(--primary-rgb), 0.9);
        padding: 1px 6px;
        border-radius: var(--radius-base);
        margin-left: 6px;
        font-weight: normal;
      }
      .kanban-archive-section {
        margin-top: 16px;
        padding: 10px 12px;
        background: rgba(255, 255, 255, 0.02);
        border: 1px solid rgba(255, 255, 255, 0.06);
        border-radius: var(--radius-md);
      }
      .kanban-archive-toggle {
        background: none;
        border: none;
        color: var(--text-dim);
        font-size: var(--fs-base);
        cursor: pointer;
        padding: 0;
        display: flex;
        align-items: center;
        gap: 6px;
        width: 100%;
      }
      .kanban-archive-toggle:hover {
        color: var(--text-main);
      }
      .kanban-archive-cards {
        margin-top: 8px;
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
      }
      .kanban-archived-card {
        font-size: var(--fs-sm);
        background: rgba(255, 255, 255, 0.03);
        border: 1px solid rgba(255, 255, 255, 0.06);
        border-radius: var(--radius-sm);
        padding: 4px 8px;
        color: var(--text-dim);
        text-decoration: line-through;
        display: flex;
        align-items: center;
        gap: 6px;
        width: 100%;
      }
      .kanban-archived-card button {
        background: none;
        border: none;
        color: rgba(var(--color-danger-rgb), 0.5);
        cursor: pointer;
        font-size: var(--fs-sm);
        padding: 2px 4px;
        border-radius: var(--radius-xs);
        transition: all 0.15s;
      }
      .kanban-archived-card button:hover {
        color: rgba(var(--color-danger-rgb), 0.9);
        background: rgba(var(--color-danger-rgb), 0.08);
      }
      .kanban-card-footer {
        display: flex;
        align-items: center;
        gap: 6px;
        margin-top: 6px;
        flex-wrap: wrap;
      }
      .kanban-col:hover .kb-col-del {
        opacity: 1;
      }
      .kanban-col:hover .kb-col-drag-handle { color: rgba(255,255,255,0.5); }
      body.light-mode .kanban-col:hover .kb-col-drag-handle { color: rgba(0,0,0,0.4); }
      .kanban-card.kb-focused { outline: 2px solid rgba(var(--primary-rgb),0.5); outline-offset: -1px; transition: outline 0.15s; }
      .kanban-card.kb-aged-3 {
        opacity: 0.92;
      }
      .kanban-card.kb-aged-7 {
        opacity: 0.8;
      }
      .kanban-card.kb-aged-14 {
        opacity: 0.65;
        filter: saturate(0.7);
      }
      .kanban-card {
        position: relative;
      }
      .kanban-card:hover .kb-select-checkbox {
        opacity: 1;
      }
      .kanban-card:hover,
      .kanban-card.kb-selected {
        padding-left: 28px;
      }
      .kanban-card:hover .kb-select-checkbox,
      .kanban-card.kb-selected .kb-select-checkbox {
        opacity: 1;
      }
      .kanban-card.kb-selected {
        box-shadow: 0 0 0 2px rgba(var(--primary-rgb), 0.6) !important;
        background: rgba(var(--primary-rgb), 0.08);
      }
      .kb-quick-add-input {
        width: 100%;
        box-sizing: border-box;
        background: rgba(255,255,255,0.04);
        border: 1px solid rgba(var(--primary-rgb), 0.2);
        border-radius: var(--radius-base);
        padding: 6px 10px;
        color: var(--text-dim);
        font-size: var(--fs-base);
        outline: none;
        transition: border 0.2s;
      }
      .kb-quick-add-input:focus { border-color: rgba(var(--primary-rgb), 0.5); }
      .kb-tt-row {
        display: flex;
        gap: 8px;
        align-items: center;
      }
      .kb-tt-label {
        font-size: var(--fs-sm);
        color: var(--text-dim);
      }
      .kb-tt-input {
        width: 60px;
        padding: 4px 6px;
        background: rgba(0,0,0,0.2);
        border: 1px solid rgba(255,255,255,0.1);
        border-radius: var(--radius-sm);
        color: var(--text-dim);
        font-size: var(--fs-base);
        outline: none;
        box-sizing: border-box;
      }
      body.light-mode .kb-tt-input { background: #f5f7fa; border-color: rgba(0,0,0,0.12); color: var(--text-main); }
      .kb-tt-pomo-hint {
        font-size: var(--fs-sm);
        color: var(--text-dim);
      }
      .kb-drop-line {
        height: 2px;
        background: var(--primary);
        border-radius: var(--radius-xs);
        margin: 2px 0;
      }
      .kb-date-picker {
        position: fixed;
        background: var(--card-bg-solid);
        border: 1px solid rgba(255,255,255,0.12);
        border-radius: var(--radius-md);
        padding: 14px;
        z-index: var(--z-toast);
        box-shadow: 0 8px 32px rgba(0,0,0,0.6);
        width: 260px;
        user-select: none;
      }
      .kb-pomo-btn { padding: 6px 16px; font-size: var(--fs-base); }
      .kb-priority {
        cursor: pointer;
        font-size: var(--fs-base);
        transition: transform 0.15s;
        user-select: none;
      }
      .kb-priority:hover {
        transform: scale(1.3);
      }
      .kb-due {
        font-size: var(--fs-sm);
        color: var(--text-dim);
        background: rgba(255, 255, 255, 0.05);
        border-radius: var(--radius-xs);
        padding: 1px 6px;
        cursor: pointer;
        transition: all 0.15s;
      }
      .kb-due:hover {
        background: rgba(var(--primary-rgb), 0.15);
        color: var(--primary-light);
      }
      .kb-due.overdue {
        color: var(--color-danger);
        background: rgba(var(--color-danger-rgb), 0.12);
        animation: pulseDue 2s ease-in-out infinite;
      }
      @keyframes pulseDue {
        0%,
        100% {
          opacity: 1;
        }
        50% {
          opacity: 0.6;
        }
      }
      .kb-date-btn {
        font-size: var(--fs-sm);
        cursor: pointer;
        opacity: 0.6;
        transition: opacity 0.15s;
        user-select: none;
      }
      .kb-date-btn:hover {
        opacity: 1;
      }
      .kb-note-badge {
        font-size: var(--fs-sm);
        color: var(--primary-light);
        background: rgba(var(--primary-rgb), 0.1);
        border-radius: var(--radius-xs);
        padding: 1px 5px;
        cursor: pointer;
        max-width: 120px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
        transition: all 0.15s;
      }
      .kb-note-badge:hover {
        background: rgba(var(--primary-rgb), 0.25);
      }
      .kb-create-note-btn {
        font-size: var(--fs-base);
        cursor: pointer;
        opacity: 0.55;
        transition: opacity 0.15s;
        user-select: none;
        padding: 1px 3px;
        border-radius: var(--radius-xs);
      }
      .kb-create-note-btn:hover {
        opacity: 1;
        background: rgba(var(--primary-rgb), 0.15);
      }
      .kb-col-del {
        position: absolute;
        top: 8px;
        right: 8px;
        background: none;
        border: none;
        color: rgba(255, 255, 255, 0.15);
        cursor: pointer;
        font-size: var(--fs-xs);
        padding: 2px 4px;
        border-radius: var(--radius-xs);
        opacity: 0;
        transition: all 0.15s;
      }
      .kb-col-del:hover {
        color: var(--color-danger);
        background: rgba(var(--color-danger-rgb), 0.1);
      }
      .kb-col-title-text {
        cursor: default;
      }
      .kb-col-drag-handle {
        color: rgba(255,255,255,0.2);
        font-size: var(--fs-md);
        cursor: grab;
        user-select: none;
        margin-right: 4px;
        transition: color 0.15s;
        line-height: 1;
      }
      .kb-col-drag-handle:active { cursor: grabbing; }
      .kb-col-dragging { opacity: 0.35; transition: opacity 0.2s; }
      .kb-col-drop-left { box-shadow: -3px 0 0 0 var(--primary); }
      .kb-col-drop-right { box-shadow: 3px 0 0 0 var(--primary); }
      body.light-mode .kb-col-drag-handle { color: rgba(0,0,0,0.15); }
      .kb-col-add {
        min-width: 60px;
        display: flex;
        align-items: flex-start;
        justify-content: center;
        padding-top: 12px;
      }
      .kb-col-add-btn {
        background: none;
        border: 1px dashed rgba(255, 255, 255, 0.1);
        border-radius: var(--radius-md);
        padding: 8px 16px;
        color: var(--text-dim);
        font-size: var(--fs-base);
        cursor: pointer;
        font-family: inherit;
        transition: all 0.15s;
        white-space: nowrap;
      }
      .kb-col-add-btn:hover {
        border-color: var(--primary);
        color: var(--primary);
      }
      .kb-card-labels {
        display: flex;
        flex-wrap: wrap;
        gap: 3px;
        margin: 4px 0 2px;
      }
      .kb-card-label {
        font-size: var(--fs-xs);
        padding: 1px 6px;
        border-radius: var(--radius-xs);
        font-weight: 600;
        letter-spacing: 0.02em;
      }
      .kb-sub-badge {
        font-size: var(--fs-xs);
        color: var(--text-dim);
        background: rgba(255, 255, 255, 0.06);
        border-radius: var(--radius-xs);
        padding: 1px 5px;
        margin-left: 2px;
      }
      .kb-sub-badge.complete {
        color: var(--color-success);
        background: rgba(var(--color-success-rgb), 0.12);
      }
      .kb-created-badge { font-size:var(--fs-xs); color:var(--text-muted); margin-left:auto; white-space:nowrap; }
      .kb-days-badge { font-size:var(--fs-xs); color:var(--text-muted); background:rgba(255,255,255,0.06); border-radius: var(--radius-xs); padding:1px 4px; margin-left:2px; }
      .kb-days-badge.stale { color:var(--color-warning); background:rgba(var(--color-warning-rgb),0.12); }
      .kb-pomo-badge { font-size:var(--fs-xs); color:var(--color-danger); background:rgba(var(--color-danger-rgb),0.12); border-radius: var(--radius-xs); padding:1px 5px; margin-left:2px; }
      .kb-time-badge { font-size:var(--fs-xs); color:var(--color-info); background:rgba(59,130,246,0.12); border-radius: var(--radius-xs); padding:1px 5px; margin-left:2px; }
      .kb-preset-filters { display:flex; gap:6px; padding:4px 16px 8px; flex-wrap:wrap; }
      .kb-preset-btn {
        background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08);
        color: var(--text-muted); font-size: var(--fs-sm); padding: 3px 10px; border-radius: var(--radius-md);
        cursor: pointer; transition: all 0.2s; white-space: nowrap;
      }
      .kb-preset-btn:hover { background: rgba(var(--primary-rgb),0.12); border-color: rgba(var(--primary-rgb),0.3); color: var(--primary-light); }
      .kb-preset-btn.active { background: rgba(var(--primary-rgb),0.2); border-color: rgba(var(--primary-rgb),0.5); color: var(--primary-light); }
      .kb-modal-overlay {
        position: fixed;
        inset: 0;
        z-index: var(--z-modal-bg);
        background: rgba(0, 0, 0, 0.7);
        backdrop-filter: blur(8px);
        display: none;
        align-items: center;
        justify-content: center;
        -webkit-app-region: no-drag;
      }
      .kb-modal-overlay.active {
        display: flex;
        animation: gn-overlay-in var(--anim-open-speed) cubic-bezier(0.25, 0.1, 0.25, 1) both;
      }
      .kb-modal-overlay.active .kb-modal {
        animation: gn-modal-in 1s cubic-bezier(0.25, 0.1, 0.25, 1) both;
      }
      .kb-modal {
        background: var(--bg-solid);
        border: 1px solid rgba(var(--primary-rgb), 0.2);
        border-radius: var(--radius-lg);
        width: min(560px, 92vw);
        max-height: 85vh;
        display: flex;
        flex-direction: column;
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.6);
      }
      .kb-modal-header {
        display: flex;
        align-items: center;
        gap: 10px;
        padding: 18px 20px 14px;
        border-bottom: 1px solid rgba(255, 255, 255, 0.06);
      }
      .kb-modal-title {
        flex: 1;
        background: none;
        border: none;
        color: var(--text-dim);
        font-size: var(--fs-lg);
        font-weight: 600;
        font-family: inherit;
        outline: none;
        padding: 4px 0;
        border-bottom: 1px solid transparent;
        transition: border-color 0.15s;
      }
      .kb-modal-title:focus {
        border-bottom-color: rgba(var(--primary-rgb), 0.4);
      }
      .kb-modal-close {
        background: none;
        border: none;
        color: var(--text-dim);
        cursor: pointer;
        font-size: var(--fs-lg);
        padding: 4px 8px;
        border-radius: var(--radius-sm);
        transition: all 0.15s;
      }
      .kb-modal-close:hover {
        color: var(--color-danger);
        background: rgba(var(--color-danger-rgb), 0.1);
      }
      .kb-modal-body {
        padding: 16px 20px;
        overflow-y: auto;
        flex: 1;
        display: flex;
        flex-direction: column;
        gap: 16px;
      }
      .kb-modal-meta {
        display: flex;
        gap: 12px;
        flex-wrap: wrap;
      }
      .kb-meta-field {
        flex: 1;
        min-width: 120px;
      }
      .kb-modal-label {
        font-size: var(--fs-sm);
        color: rgba(255, 255, 255, 0.35);
        text-transform: uppercase;
        letter-spacing: 0.08em;
        margin-bottom: 6px;
        font-weight: 600;
      }
      .kb-modal-select {
        width: 100%;
        background: rgba(255, 255, 255, 0.05);
        border: 1px solid rgba(255, 255, 255, 0.1);
        border-radius: var(--radius-base);
        padding: 6px 10px;
        color: var(--text-dim);
        font-size: var(--fs-base);
        font-family: inherit;
        outline: none;
        cursor: pointer;
      }
      .kb-modal-select:focus {
        border-color: rgba(var(--primary-rgb), 0.4);
      }
      .kb-modal-date {
        width: 100%;
        background: rgba(255, 255, 255, 0.05);
        border: 1px solid rgba(255, 255, 255, 0.1);
        border-radius: var(--radius-base);
        padding: 6px 10px;
        color: var(--text-dim);
        font-size: var(--fs-base);
        font-family: inherit;
        outline: none;
      }
      .kb-modal-date:focus {
        border-color: rgba(var(--primary-rgb), 0.4);
      }
      .kb-prio-btns {
        display: flex;
        gap: 4px;
      }
      .kb-prio-btn {
        flex: 1;
        background: rgba(255, 255, 255, 0.04);
        border: 1px solid rgba(255, 255, 255, 0.1);
        border-radius: var(--radius-base);
        padding: 5px;
        text-align: center;
        cursor: pointer;
        font-size: var(--fs-md);
        transition: all 0.15s;
      }
      .kb-prio-btn:hover {
        background: rgba(255, 255, 255, 0.08);
      }
      .kb-prio-btn.active {
        border-width: 2px;
      }
      .kb-labels-wrap {
        display: flex;
        flex-wrap: wrap;
        gap: 6px;
      }
      .kb-label-chip {
        padding: 4px 12px;
        border-radius: var(--radius-sm);
        font-size: var(--fs-sm);
        font-weight: 600;
        cursor: pointer;
        border: 1px solid transparent;
        font-family: inherit;
        background: rgba(255, 255, 255, 0.05);
        color: var(--text-dim);
        transition: all 0.15s;
      }
      .kb-label-chip.active {
        border-color: currentColor;
      }
      .kb-label-chip:hover {
        opacity: 0.85;
      }
      .kb-modal-desc {
        width: 100%;
        min-height: 80px;
        resize: vertical;
        background: rgba(255, 255, 255, 0.04);
        border: 1px solid rgba(255, 255, 255, 0.08);
        border-radius: var(--radius-md);
        padding: 10px 12px;
        color: var(--text-dim);
        font-size: var(--fs-base);
        font-family: inherit;
        outline: none;
        line-height: 1.5;
        box-sizing: border-box;
      }
      .kb-modal-desc:focus {
        border-color: rgba(var(--primary-rgb), 0.3);
      }
      .kb-subtask-list {
        display: flex;
        flex-direction: column;
        gap: 4px;
      }
      .kb-subtask-row {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 4px 0;
        border-bottom: 1px solid rgba(255, 255, 255, 0.03);
      }
      .kb-subtask-row input[type="checkbox"] {
        accent-color: var(--primary);
        width: 15px;
        height: 15px;
        cursor: pointer;
        flex-shrink: 0;
      }
      .kb-subtask-text {
        flex: 1;
        font-size: var(--fs-base);
        color: var(--text-dim);
      }
      .kb-subtask-text.done {
        text-decoration: line-through;
        color: var(--text-muted);
      }
      .kb-subtask-del {
        background: none;
        border: none;
        color: rgba(255, 255, 255, 0.15);
        cursor: pointer;
        font-size: var(--fs-xs);
        padding: 2px 4px;
        border-radius: var(--radius-xs);
        transition: all 0.15s;
      }
      .kb-subtask-del:hover {
        color: var(--color-danger);
        background: rgba(var(--color-danger-rgb), 0.1);
      }
      .kb-subtask-input {
        width: 100%;
        background: rgba(255, 255, 255, 0.03);
        border: 1px dashed rgba(255, 255, 255, 0.1);
        border-radius: var(--radius-base);
        padding: 6px 10px;
        color: var(--text-dim);
        font-size: var(--fs-base);
        font-family: inherit;
        outline: none;
        margin-top: 4px;
      }
      .kb-subtask-input:focus {
        border-color: rgba(var(--primary-rgb), 0.3);
        border-style: solid;
      }
      .kb-sub-counter {
        font-size: var(--fs-xs);
        color: var(--primary);
        background: rgba(var(--primary-rgb), 0.12);
        padding: 1px 6px;
        border-radius: var(--radius-base);
        margin-left: 4px;
        font-weight: 400;
      }
      .kb-progress-bar {
        width: 100%;
        height: 4px;
        background: rgba(255, 255, 255, 0.06);
        border-radius: var(--radius-xs);
        margin-bottom: 8px;
        overflow: hidden;
      }
      .kb-progress-fill {
        height: 100%;
        background: var(--primary);
        border-radius: var(--radius-xs);
        transition: width 0.3s ease;
      }
      .kb-history-list {
        display: flex;
        flex-direction: column;
        gap: 3px;
      }
      .kb-history-row {
        font-size: var(--fs-sm);
        color: var(--text-dim);
        padding: 3px 0;
        border-bottom: 1px solid rgba(255, 255, 255, 0.03);
      }
      .kb-modal-footer {
        display: flex;
        align-items: center;
        gap: 8px;
        padding: 12px 20px;
        border-top: 1px solid rgba(255, 255, 255, 0.06);
      }
      .kb-modal-created {
        font-size: var(--fs-sm);
        color: var(--text-dim);
        margin-right: auto;
      }
      .kb-modal-btn-archive {
        background: rgba(255, 255, 255, 0.05);
        border: 1px solid rgba(255, 255, 255, 0.1);
        border-radius: var(--radius-base);
        padding: 6px 14px;
        color: var(--text-dim);
        font-size: var(--fs-base);
        cursor: pointer;
        font-family: inherit;
        transition: all 0.15s;
      }
      .kb-modal-btn-archive:hover {
        background: rgba(var(--primary-rgb), 0.1);
        border-color: rgba(var(--primary-rgb), 0.3);
        color: var(--primary-light);
      }
      .kb-modal-btn-delete {
        background: rgba(var(--color-danger-rgb), 0.08);
        border: 1px solid rgba(var(--color-danger-rgb), 0.2);
        border-radius: var(--radius-base);
        padding: 6px 14px;
        color: var(--color-danger);
        font-size: var(--fs-base);
        cursor: pointer;
        font-family: inherit;
        transition: all 0.15s;
      }
      .kb-modal-btn-delete:hover {
        background: rgba(var(--color-danger-rgb), 0.18);
        border-color: rgba(var(--color-danger-rgb), 0.4);
      }
      .kb-sp-badge {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        background: rgba(var(--primary-rgb), 0.15);
        border: 1px solid rgba(var(--primary-rgb), 0.3);
        color: var(--primary-light);
        border-radius: var(--radius-sm);
        font-size: var(--fs-xs);
        font-weight: 700;
        padding: 1px 5px;
        line-height: 1.4;
      }
      .kb-col-sp-sum {
        font-size: var(--fs-xs);
        color: var(--text-muted);
        margin-left: 4px;
        font-weight: 500;
      }
      .kb-sp-btns {
        display: flex;
        gap: 5px;
        flex-wrap: wrap;
      }
      .kb-sp-btn {
        background: rgba(255, 255, 255, 0.05);
        border: 1px solid rgba(255, 255, 255, 0.12);
        color: var(--text-muted);
        border-radius: var(--radius-base);
        padding: 4px 10px;
        font-size: var(--fs-base);
        cursor: pointer;
        font-family: inherit;
        transition: all 0.15s;
      }
      .kb-sp-btn.active {
        background: rgba(var(--primary-rgb), 0.2);
        border-color: rgba(var(--primary-rgb), 0.5);
        color: var(--primary-light);
      }
      .kb-sp-btn:hover {
        border-color: rgba(var(--primary-rgb), 0.4);
        color: var(--primary-light);
      }
      .kb-swimlane-header {
        font-size: var(--fs-xs);
        font-weight: 700;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        padding: 4px 8px;
        margin: 6px 0 3px;
        border-left: 3px solid;
        border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
        opacity: 0.85;
      }
      .kb-swimlane-btn {
        background: rgba(255, 255, 255, 0.06);
        border: 1px solid rgba(255, 255, 255, 0.12);
        color: var(--text-muted);
        border-radius: var(--radius-base);
        padding: 4px 10px;
        font-size: var(--fs-base);
        cursor: pointer;
        font-family: inherit;
        transition: all 0.15s;
        white-space: nowrap;
      }
      .kb-swimlane-btn.active {
        background: rgba(var(--primary-rgb), 0.15);
        border-color: rgba(var(--primary-rgb), 0.4);
        color: var(--primary-light);
      }
      .kb-swimlane-btn:hover {
        border-color: rgba(var(--primary-rgb), 0.3);
        color: var(--primary-light);
      }
      .kb-filters-row {
        display: flex;
        gap: 6px;
        flex-wrap: wrap;
        padding: 0;
        align-items: center;
        align-self: center;
      }
      .kb-filter-chip {
        background: rgba(255, 255, 255, 0.05);
        border: 1px solid rgba(255, 255, 255, 0.1);
        color: var(--text-muted);
        border-radius: var(--radius-lg);
        padding: 3px 12px;
        font-size: var(--fs-sm);
        cursor: pointer;
        font-family: inherit;
        transition: all 0.15s;
        white-space: nowrap;
      }
      .kb-filter-chip:hover {
        border-color: rgba(var(--primary-rgb), 0.4);
        color: var(--primary-light);
      }
      .kb-filter-chip.active {
        background: rgba(var(--primary-rgb), 0.15);
        border-color: rgba(var(--primary-rgb), 0.45);
        color: var(--primary-light);
        font-weight: 600;
      }
      .kb-select-checkbox {
        position: absolute;
        top: 6px;
        left: 6px;
        width: 16px;
        height: 16px;
        cursor: pointer;
        opacity: 0;
        transition: opacity 0.15s;
        z-index: var(--z-above);
        accent-color: var(--primary);
      }
      .kb-bulk-bar {
        position: fixed;
        bottom: 24px;
        left: 50%;
        transform: translateX(-50%);
        background: var(--card-bg-solid);
        border: 1px solid rgba(var(--primary-rgb), 0.35);
        border-radius: var(--radius-md);
        padding: 10px 16px;
        display: flex;
        align-items: center;
        gap: 10px;
        box-shadow: 0 8px 32px rgba(0, 0, 0, 0.6);
        z-index: var(--z-modal);
        animation: gn-drop-in 0.2s ease;
        font-size: var(--fs-base);
      }
      .kb-bulk-bar span {
        color: var(--text-muted);
        white-space: nowrap;
      }
      .kb-bulk-btn {
        background: rgba(255, 255, 255, 0.07);
        border: 1px solid rgba(255, 255, 255, 0.12);
        color: var(--text-dim);
        border-radius: var(--radius-base);
        padding: 6px 12px;
        font-size: var(--fs-base);
        cursor: pointer;
        font-family: inherit;
        transition: all 0.15s;
        white-space: nowrap;
      }
      .kb-bulk-btn:hover {
        background: rgba(var(--primary-rgb), 0.2);
        border-color: rgba(var(--primary-rgb), 0.4);
        color: var(--primary-light);
      }
      .kb-bulk-btn.danger {
        color: var(--color-danger);
      }
      .kb-bulk-btn.danger:hover {
        background: rgba(var(--color-danger-rgb), 0.15);
        border-color: rgba(var(--color-danger-rgb), 0.35);
      }
      .kb-bulk-sep {
        width: 1px;
        height: 20px;
        background: rgba(255, 255, 255, 0.1);
        margin: 0 2px;
      }
      .kb-repeat-badge {
        font-size: var(--fs-xs);
        color: var(--color-success);
        opacity: 0.85;
      }
      .kb-header-tools {
        display: flex;
        gap: 8px;
        align-items: center;
        margin-left: 8px;
      }
      .kb-tool-btn {
        background: rgba(255, 255, 255, 0.06);
        border: 1px solid rgba(255, 255, 255, 0.12);
        color: var(--text-muted);
        border-radius: var(--radius-base);
        padding: 5px 11px;
        font-size: var(--fs-base);
        cursor: pointer;
        font-family: inherit;
        transition: all 0.15s;
        white-space: nowrap;
      }
      .kb-tool-btn:hover {
        border-color: rgba(var(--primary-rgb), 0.4);
        color: var(--primary-light);
        background: rgba(var(--primary-rgb), 0.1);
      }
      .kb-burndown-overlay {
        position: fixed;
        inset: 0;
        background: rgba(0, 0, 0, 0.75);
        z-index: var(--z-modal-bg);
        display: flex;
        align-items: center;
        justify-content: center;
        backdrop-filter: blur(6px);
        animation: gn-overlay-in var(--anim-open-speed) cubic-bezier(0.25, 0.1, 0.25, 1) both;
      }
      .kb-burndown-modal {
        background: var(--card-bg-solid, #141b2d);
        animation: gn-modal-in 1s cubic-bezier(0.25, 0.1, 0.25, 1) both;
        border: 1px solid rgba(255, 255, 255, 0.1);
        border-radius: var(--radius-lg);
        padding: 20px;
        width: min(700px, 94vw);
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.7);
      }
      .kb-burndown-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 16px;
      }
      .kb-burndown-header h3 {
        margin: 0;
        font-size: var(--fs-md);
        color: var(--text-dim);
      }
      .kb-burndown-close {
        background: none;
        border: none;
        color: var(--text-muted);
        cursor: pointer;
        font-size: var(--fs-lg);
        padding: 4px 8px;
        border-radius: var(--radius-sm);
        transition: all 0.15s;
      }
      .kb-burndown-close:hover {
        color: var(--color-danger);
        background: rgba(var(--color-danger-rgb), 0.1);
      }
      .kb-burndown-legend {
        display: flex;
        gap: 16px;
        margin-bottom: 10px;
        font-size: var(--fs-sm);
      }
      .kb-burndown-legend span {
        display: flex;
        align-items: center;
        gap: 5px;
        color: var(--text-muted);
      }
      .kb-burndown-legend i {
        display: inline-block;
        width: 20px;
        height: 3px;
        border-radius: var(--radius-xs);
      }
      .kb-repeat-select {
        background: var(--card-bg-solid);
        border: 1px solid rgba(255, 255, 255, 0.12);
        border-radius: var(--radius-base);
        padding: 6px 10px;
        color: var(--text-muted);
        font-size: var(--fs-base);
        font-family: inherit;
        cursor: pointer;
        outline: none;
        width: 100%;
      }
      .kb-repeat-select:focus {
        border-color: rgba(var(--primary-rgb), 0.4);
      }
      .kb-hotkey-hint {
        position: fixed;
        bottom: 18px;
        right: 18px;
        background: rgba(20, 27, 45, 0.95);
        border: 1px solid rgba(var(--primary-rgb), 0.25);
        border-radius: var(--radius-md);
        padding: 8px 14px;
        font-size: var(--fs-sm);
        color: var(--text-muted);
        z-index: var(--z-modal);
        pointer-events: none;
        animation: gn-popup-in 0.2s ease;
        display: flex;
        flex-direction: column;
        gap: 3px;
      }
      .kb-hotkey-hint kbd {
        display: inline-block;
        background: rgba(255, 255, 255, 0.08);
        border: 1px solid rgba(255, 255, 255, 0.15);
        border-radius: var(--radius-xs);
        padding: 1px 5px;
        font-family: var(--font-mono);
        font-size: var(--fs-sm);
        color: var(--primary-light);
        margin-right: 4px;
      }
body.light-mode .kb-modal-btn-archive {
  background: rgba(0, 0, 0, 0.06);
  color: var(--text-main);
}
body.light-mode .kb-modal-btn-delete {
  background: rgba(var(--color-danger-rgb), 0.08);
  color: var(--color-danger);
}
body.light-mode .kb-bulk-bar {
  background: var(--bg);
  border: 1px solid var(--glass-border);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
}
body.light-mode .kb-sub-badge,
body.light-mode .kb-days-badge,
body.light-mode .kb-pomo-badge,
body.light-mode .kb-time-badge {
  background: rgba(0, 0, 0, 0.06);
  color: var(--text-muted);
}
      .kv-chip {
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 2px;
        padding: 8px 18px;
        background: rgba(255, 255, 255, 0.04);
        border: 1px solid rgba(255, 255, 255, 0.07);
        border-radius: var(--radius-md);
        min-width: 80px;
        transition: 0.2s;
      }
      .kv-chip .kv-num {
        font-size: var(--fs-xl);
        font-weight: 700;
        color: var(--primary);
        line-height: 1.1;
      }
      .kv-chip .kv-label {
        font-size: var(--fs-xs);
        color: var(--text-muted);
        white-space: nowrap;
      }

      /* ── Light mode: Kanban search/prio ── */
      body.light-mode .kanban-search-inp {
        background: rgba(0,0,0,0.04) !important;
        border-color: rgba(0,0,0,0.12) !important;
        color: var(--text-main) !important;
      }

      /* Kanban close btn — now uses .cal-close-btn */
      .kanban-search-wrap {
        display: flex;
        align-items: center;
        gap: 8px;
        margin-left: auto;
      }
      .kanban-search-inp {
        background: rgba(255, 255, 255, 0.05);
        border: 1px solid rgba(var(--primary-rgb), 0.2);
        border-radius: var(--radius-base);
        padding: 5px 10px;
        color: var(--text-dim);
        font-size: var(--fs-base);
        font-family: inherit;
        outline: none;
        width: 140px;
        transition: border-color 0.15s;
      }
      .kanban-search-inp:focus {
        border-color: rgba(var(--primary-rgb), 0.5);
        background: rgba(var(--primary-rgb), 0.07);
      }
      .kanban-prio-sel {
        background: var(--bg-solid);
        border: 1px solid rgba(var(--primary-rgb), 0.2);
        border-radius: var(--radius-base);
        padding: 5px 8px;
        color: var(--primary-light);
        font-size: var(--fs-base);
        font-family: inherit;
        outline: none;
        cursor: pointer;
        transition: border-color 0.15s;
      }
      .kanban-prio-sel:hover {
        border-color: rgba(var(--primary-rgb), 0.45);
      }

      body.light-mode .kanban-overlay {
        background: var(--bg) !important;
      }
      body.light-mode .kanban-header h2 {
        color: var(--text-main) !important;
      }
      body.light-mode .kanban-board,
      body.light-mode .kanban-col {
        background: var(--bg) !important;
        border-color: rgba(0,0,0,0.18) !important;
      }
      body.light-mode .kanban-col-title {
        color: var(--text-main) !important;
        border-bottom-color: rgba(0,0,0,0.14) !important;
      }
      body.light-mode .kanban-card {
        background: var(--card-bg-solid) !important;
        color: var(--text-main) !important;
        border-color: rgba(0,0,0,0.08) !important;
        box-shadow: 0 1px 4px rgba(0,0,0,0.06) !important;
      }
      body.light-mode .kanban-card-title {
        color: var(--text-main) !important;
      }
      body.light-mode .kanban-card-footer {
        color: var(--text-muted) !important;
      }
      body.light-mode .kanban-card:hover {
        background: rgba(var(--primary-rgb),0.06) !important;
        border-color: var(--primary) !important;
      }
      body.light-mode .kb-due {
        color: var(--text-muted) !important;
        background: rgba(0,0,0,0.05) !important;
      }
      body.light-mode .kb-due.overdue {
        color: var(--color-danger) !important;
        background: rgba(var(--color-danger-rgb),0.1) !important;
      }
      body.light-mode .kb-note-badge {
        color: var(--primary-dark) !important;
        background: rgba(var(--primary-rgb),0.1) !important;
      }
      body.light-mode .kb-days-badge {
        color: var(--text-muted) !important;
        background: rgba(0,0,0,0.05) !important;
      }
      body.light-mode .kb-sp-badge {
        color: var(--primary-dark) !important;
        background: rgba(var(--primary-rgb),0.1) !important;
        border-color: rgba(var(--primary-rgb),0.25) !important;
      }
      body.light-mode .kb-created-badge {
        color: var(--text-muted) !important;
      }
      body.light-mode .kanban-add {
        border-color: rgba(0,0,0,0.12) !important;
        color: var(--text-muted) !important;
      }
      body.light-mode .kanban-add:hover {
        border-color: var(--primary) !important;
        color: var(--primary) !important;
      }
      body.light-mode .kb-tool-btn {
        background: rgba(0,0,0,0.04) !important;
        border-color: rgba(0,0,0,0.1) !important;
        color: var(--text-muted) !important;
      }
      body.light-mode .kb-tool-btn:hover {
        background: rgba(var(--primary-rgb),0.1) !important;
        color: var(--primary-dark) !important;
      }
      body.light-mode .kb-filter-chip {
        background: rgba(0,0,0,0.04) !important;
        border-color: rgba(0,0,0,0.1) !important;
        color: var(--text-muted) !important;
      }
      body.light-mode .kb-filter-chip:hover {
        border-color: rgba(var(--primary-rgb),0.4) !important;
        color: var(--primary-dark) !important;
      }
      body.light-mode .kb-filter-chip.active {
        background: rgba(var(--primary-rgb),0.12) !important;
        border-color: rgba(var(--primary-rgb),0.4) !important;
        color: var(--primary-dark) !important;
      }
      body.light-mode .kb-filters-row {
        color: var(--text-muted) !important;
      }
      body.light-mode .kanban-velocity {
        color: var(--text-muted) !important;
      }
      body.light-mode .kb-quick-add-input {
        background: rgba(0,0,0,0.03) !important;
        border-color: rgba(0,0,0,0.1) !important;
        color: var(--text-main) !important;
      }
      body.light-mode .kanban-search-wrap input {
        background: rgba(0,0,0,0.04) !important;
        border-color: rgba(0,0,0,0.1) !important;
        color: var(--text-main) !important;
      }
      body.light-mode .kanban-prio-sel {
        background: var(--card-bg-solid) !important;
        border-color: rgba(0,0,0,0.15) !important;
        color: var(--text-main) !important;
      }
      body.light-mode .kanban-prio-sel:hover {
        border-color: rgba(var(--primary-rgb),0.4) !important;
      }
      body.light-mode .kanban-prio-sel option {
        background: var(--card-bg-solid) !important;
        color: var(--text-main) !important;
      }
      body.light-mode .kv-chip {
        background: rgba(0,0,0,0.04) !important;
        border-color: rgba(0,0,0,0.08) !important;
      }
      body.light-mode .kv-chip .kv-label {
        color: var(--text-muted) !important;
      }
      body.light-mode .kb-preset-btn {
        background: rgba(0,0,0,0.04) !important;
        border-color: rgba(0,0,0,0.1) !important;
        color: var(--text-muted) !important;
      }
      body.light-mode .kb-preset-btn:hover {
        background: rgba(var(--primary-rgb),0.1) !important;
        border-color: rgba(var(--primary-rgb),0.3) !important;
        color: var(--primary-dark) !important;
      }
      body.light-mode .kb-preset-btn.active {
        background: rgba(var(--primary-rgb),0.12) !important;
        border-color: rgba(var(--primary-rgb),0.4) !important;
        color: var(--primary-dark) !important;
      }

/* ── Kanban label colors ──────────────────────────────── */
.kb-label--bug { color: var(--color-danger); background: rgba(var(--color-danger-rgb),0.15); }
.kb-label--feature { color: var(--color-success); background: rgba(var(--color-success-rgb),0.15); }
.kb-label--design { color: var(--secondary); background: rgba(var(--secondary-rgb),0.15); }
.kb-label--test { color: var(--accent); background: rgba(var(--accent-rgb),0.15); }
.kb-label--docs { color: var(--color-info); background: rgba(var(--color-info-rgb),0.15); }

/* ── Kanban column title editing ──────────────────────── */
.kb-col-title--editing { outline: 1px solid var(--primary); border-radius: var(--radius-xs); padding: 2px 6px; }

/* ── Kanban pomo stats + time-tracking spacing ───────── */
.kb-pomo-stats { font-weight: 400; color: var(--text-dim); font-size: var(--fs-sm); }
.kb-tt-label--spaced { margin-left: var(--sp-sm); }

/* ── Focus-visible (a11y) ─────────────────── */
.kanban-add:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.kb-tool-btn:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.kb-filter-chip:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.kb-preset-btn:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.kb-swimlane-btn:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.kanban-search-inp:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }
.kb-modal-select:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; }

/* ── Date picker cells ─────────────────────────── */
.kb-dp-header-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 2px;
    margin-bottom: 6px;
}
.kb-dp-day-label {
    text-align: center;
    font-size: var(--fs-xs);
    color: var(--text-muted, #64748b);
    padding: 2px 0;
}
.kb-dp-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 3px;
}
.kb-date-cell {
    text-align: center;
    padding: 5px 2px;
    border-radius: var(--radius-base);
    cursor: pointer;
    font-size: var(--fs-sm);
    transition: background 0.15s;
    border: 1px solid transparent;
}
.kb-date-cell--today { border-color: var(--primary); color: var(--primary-light); }
.kb-date-cell--selected { background: var(--primary); color: #fff; font-weight: 700; }
.kb-dp-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}
.kb-dp-month-label {
    color: var(--text-dim);
    font-size: var(--fs-base);
    font-weight: 600;
}
.kb-dp-footer {
    display: flex;
    justify-content: space-between;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid rgba(255,255,255,0.07);
}

/* ─── TASK-1365: inline-style → CSS classes ──────────────────────────────── */
/* kanban.js: inline card text edit mode */
.kb-card-inline-edit {
    outline: 1px solid var(--primary);
    border-radius: var(--radius-xs);
    padding: 2px 4px;
}

/* kanban.js: compact empty state (column drop zone) */
.kb-empty-state--compact { padding: 16px 8px; }

/* kanban.js: quick-add wrap */
.kb-quick-add { padding: 4px 8px; }

/* kanban.js: WIP limit exceeded — count badge turns danger color */
.kb-wip-count--exceeded { color: var(--color-danger); }

/* kanban.js: WIP limit exceeded — column top border turns danger */
.kb-col--wip-exceeded { border-top: 3px solid var(--color-danger); }

/* kanban.js: overdue card — danger ring (replaces style.boxShadow) */
.kb-card--overdue { box-shadow: 0 0 0 1px rgba(var(--color-danger-rgb), 0.3) !important; }

/* kanban.js: burndown chart canvas size */
.kb-burndown-canvas { width: 100%; height: 280px; }

