/* components.css – Spalten, Karten, Tags, Badges, Toolbar. */

/* ── Board Column ── */

.board-column {
  display: flex;
  flex-direction: column;
  background: var(--surface-1);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  min-height: 0;
}

.column-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  /* rechts 12px wie der Kartenbereich, damit das „+" mit der Kartenkante fluchtet */
  padding: 12px 12px 12px 20px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.column-header-left {
  display: flex;
  align-items: center;
  gap: 8px;
}

.column-header-right {
  display: flex;
  align-items: center;
  gap: 4px;
}

.col-capacity {
  flex: 1;
  align-self: center;
  position: relative;
  height: 16px;
  min-width: 60px;
  margin: 0 10px;
  background: color-mix(in srgb, var(--text-muted) 15%, transparent);
  border-radius: 8px;
  overflow: hidden;
}

/* Dezente, abgetönte Füllfarben – gleiche Optik wie die Stunden-Boxen
   auf den Karten (color-mix statt Vollfarbe). */
.col-capacity-fill {
  height: 100%;
  border-radius: 8px;
  background: color-mix(in srgb, var(--status-success) 30%, transparent);
  transition: width 0.2s, background 0.2s;
}

.col-capacity.is-warn .col-capacity-fill {
  /* Auffälliges Gelb (Punkt 2): satter Ton, höhere Deckkraft als die dezenten
     Grün-/Rot-Füllungen – der Warnzustand soll bewusst ins Auge fallen. */
  background: color-mix(in srgb, var(--warning-vivid) 75%, transparent);
}

.col-capacity.is-crit .col-capacity-fill {
  background: color-mix(in srgb, var(--status-error) 30%, transparent);
}

.col-capacity-label {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
  pointer-events: none;
}

.column-title {
  font-size: var(--fs-label);
  font-weight: var(--fw-semibold);
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--ls-label);
  margin: 0;
}

.column-count {
  font-size: var(--fs-label);
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
}

.column-add {
  width: 24px;
  height: 24px;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: var(--fs-body);
  line-height: 1;
  transition: border-color 0.15s, color 0.15s;
}

.column-add:hover {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.someday-toggle {
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-disabled);
  font-size: var(--fs-body);
  line-height: 1;
  transition: border-color 0.15s, color 0.15s;
}

.someday-toggle:hover {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.someday-toggle.active {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
  background: color-mix(in srgb, var(--accent-sky) 15%, transparent);
}

.someday-toggle.exclusive {
  background: repeating-linear-gradient(
    -45deg,
    color-mix(in srgb, var(--accent-sky) 25%, transparent),
    color-mix(in srgb, var(--accent-sky) 25%, transparent) 3px,
    color-mix(in srgb, var(--accent-sky) 8%, transparent) 3px,
    color-mix(in srgb, var(--accent-sky) 8%, transparent) 6px
  );
}

.column-cards {
  flex: 1;
  padding: 12px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  overflow-y: auto;
}

/* Trennung der Warten-Karten in „Diese Woche" (Linie + „⧗ warten"-Label). */
.col-wait-sep {
  display: flex;
  align-items: center;
  gap: 8px;
  margin: 2px 0;
}

.col-wait-sep::before,
.col-wait-sep::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--border);
}

.col-wait-sep-label {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--fs-label);
  color: var(--text-muted);
}

.col-wait-sep-icon {
  color: var(--status-warning);
}

/* ── Collapsible Column (collapsed state) ── */

.column-label-vertical {
  display: none;
  writing-mode: vertical-lr;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 16px 0;
  font-size: var(--fs-label);
  color: var(--text-secondary);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: var(--ls-label);
  height: 100%;
  cursor: pointer;
  user-select: none;
}

.collapse-toggle {
  padding: 4px 8px;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: var(--fs-label);
  line-height: 1;
  transition: border-color 0.15s, color 0.15s;
}

.collapse-toggle:hover {
  border-color: var(--text-secondary);
  color: var(--text-secondary);
}

/* ── Card ── */

.card {
  display: flex;
  flex-direction: column;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 6px 10px 8px;
  min-height: 132px;
  cursor: grab;
  transition: border-color 0.15s, transform 0.1s;
  user-select: none;
}

.card:hover {
  border-color: var(--accent-sky);
}

/* Liegengeblieben: gestern nicht fertig geworden – Rand verschwindet,
   sobald die Karte angefasst wird (Drag&Drop oder Detail öffnen). */
.card.card-carried {
  border-color: color-mix(in srgb, var(--status-warning) 70%, transparent);
}

/* Beim Hovern gewinnt der Hover-Rand auch bei liegengebliebenen Karten
   (sonst verdeckt der Warnrand ihn wegen gleicher Spezifität). */
.card.card-carried:hover {
  border-color: var(--accent-sky);
}

.card-body {
  display: flex;
  gap: 8px;
  flex: 1;
  min-height: 0;
}

.card-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

.card-body .card-title {
  padding-right: 0;
  flex: none;
}

.card-project {
  font-size: var(--fs-label);
  color: var(--text-muted);
  margin-top: 2px;
}

.card-main .card-tags {
  margin-top: auto;
  padding-top: 8px;
}

.card-side {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 6px;
  flex-shrink: 0;
  align-self: stretch;
}

.card-side .card-icons {
  margin-bottom: auto;
}

.card-side .card-done-dates {
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
}

.card.card-unseen {
  border-color: var(--accent-sky);
  border-width: 2px;
  padding: 5px 9px 7px;
}

.card.dragging {
  opacity: 0.4;
  transform: scale(0.97);
}

.drop-indicator {
  height: 3px;
  background: var(--accent-sky);
  border-radius: 2px;
  margin: 2px 0;
}

.card-header {
  display: flex;
  align-items: flex-start;
  gap: 6px;
}

.card-title {
  flex: 1;
  font-size: var(--fs-body);
  font-weight: var(--fw-regular);
  color: var(--text-primary);
  line-height: 1.5;
  padding-right: 28px;
}

.card-icons {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
  align-self: flex-start;
}

.card-someday,
.card-waiting,
.card-flag {
  font-size: var(--fs-body);
  color: var(--text-disabled);
  cursor: pointer;
  transition: color 0.15s;
}

.card-someday {
  font-size: var(--fs-body);
}

.card-someday:hover {
  color: var(--accent-sky);
}

.card-waiting:hover {
  color: var(--status-warning);
}

.card-flag:hover {
  color: var(--status-error);
}

.card-someday.active {
  color: var(--accent-sky);
}

.card-waiting.active {
  color: var(--status-warning);
}

.card-flag.active {
  color: var(--status-error);
}

.card-archive {
  font-size: 13px;
  color: var(--status-success);
  cursor: pointer;
  transition: color 0.15s, opacity 0.15s;
  opacity: 0.7;
  transform: translateY(3px);
}

.card-archive:hover {
  opacity: 1;
}

.card-cancelled {
  font-size: var(--fs-small);
  color: var(--text-disabled);
  cursor: pointer;
  transition: color 0.15s;
  transform: translateY(3px);
}

.card-cancelled:hover {
  color: var(--status-error);
}

.card-cancelled.active {
  color: var(--status-error);
}

.card-meta {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 8px;
  margin-top: auto;
  padding-top: 12px;
}

.card-due {
  font-size: var(--fs-label);
  color: var(--text-secondary);
  background: color-mix(in srgb, var(--text-muted) 18%, transparent);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  min-width: 46px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

.card-dates {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 3px;
  flex-shrink: 0;
  margin-left: auto;
}

.card-hours {
  font-size: var(--fs-label);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  min-width: 46px;
  height: 34px;
  text-align: center;
  font-variant-numeric: tabular-nums;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1.4;
}

.hours-worked {
  border-bottom: 1px solid currentColor;
  padding-bottom: 1px;
  opacity: 0.7;
  width: 100%;
}

.hours-estimate {
  padding-top: 1px;
  width: 100%;
}

.card-hours.hours-ok {
  color: var(--status-success);
  background: color-mix(in srgb, var(--status-success) 15%, transparent);
}

.card-hours.hours-warning {
  /* Muster wie Grün/Rot: farbige Ziffern + leicht getönte Fläche. Schrift in der
     Warnfarbe (lesbar), Fläche aber im echten Gelbton statt Amber und etwas
     kräftiger als früher (15 %), damit sie gelb wirkt statt bräunlich. */
  color: var(--status-warning);
  background: color-mix(in srgb, var(--warning-vivid) 30%, transparent);
}

.card-hours.hours-critical {
  color: var(--status-error);
  background: color-mix(in srgb, var(--status-error) 15%, transparent);
}

.card-hours.hours-neutral {
  color: var(--text-muted);
  background: color-mix(in srgb, var(--text-muted) 12%, transparent);
}

.card-done-dates {
  display: flex;
  gap: 6px;
}

.card-due.archived {
  color: var(--text-muted);
  background: color-mix(in srgb, var(--text-muted) 15%, transparent);
}

.card-duplicate {
  font-size: var(--fs-small);
  color: var(--text-disabled);
  cursor: pointer;
  transition: color 0.15s;
  transform: translateY(3px);
}

.card-duplicate:hover {
  color: var(--accent-sky);
}

.card-due.done {
  color: var(--status-success);
  background: color-mix(in srgb, var(--status-success) 15%, transparent);
}

.card-due.overdue {
  color: var(--status-error);
  background: color-mix(in srgb, var(--status-error) 15%, transparent);
}

.card-tags {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}

.tag-chip {
  font-size: var(--fs-label);
  padding: 2px 6px;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--tag-color) 18%, transparent);
  color: var(--tag-color);
  text-align: center;
  min-width: 56px;
}

.tag-chip.inactive {
  opacity: 0.6;
  background: repeating-linear-gradient(
    -45deg,
    color-mix(in srgb, var(--tag-color) 25%, transparent),
    color-mix(in srgb, var(--tag-color) 25%, transparent) 3px,
    color-mix(in srgb, var(--tag-color) 8%, transparent) 3px,
    color-mix(in srgb, var(--tag-color) 8%, transparent) 6px
  );
}

/* ── Capture Section ── */

.capture-section {
  background: var(--surface-1);
  border-radius: var(--radius-lg);
  border: 1px solid var(--border);
  flex-shrink: 0;
}

.capture-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 14px;
  cursor: pointer;
  user-select: none;
}

.capture-header .column-header-left {
  display: flex;
  align-items: center;
  gap: 8px;
}

.capture-collapse-icon {
  font-size: var(--fs-h3);
  color: var(--text-muted);
  line-height: 1;
}

.capture-cards {
  padding: 8px 12px 12px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  border-top: 1px solid var(--border);
}

.capture-card {
  min-height: auto;
  padding: 6px 10px;
}

.capture-card .card-title {
  padding-right: 8px;
}


/* ── Column Empty ── */

.column-empty {
  color: var(--text-disabled);
  font-size: var(--fs-small);
  text-align: center;
  padding: 24px 8px;
}

/* ── Board Toolbar ── */

.board-toolbar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 20px;
  flex-shrink: 0;
}

.toolbar-capture-btn {
  height: 32px;
  padding: 0 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--accent-sky);
  border-radius: var(--radius-md);
  color: var(--accent-sky);
  font-size: var(--fs-body);
  line-height: 1;
  transition: background 0.15s, color 0.15s;
}

.toolbar-capture-btn:hover {
  background: color-mix(in srgb, var(--accent-sky) 15%, transparent);
}

.search-input {
  height: 32px;
  padding: 0 12px;
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-size: var(--fs-small);
  font-family: inherit;
  width: 220px;
  transition: border-color 0.15s;
}

.search-input::placeholder {
  color: var(--text-disabled);
}

.search-input:focus {
  outline: none;
  border-color: var(--accent-sky);
}

.add-button {
  width: 34px;
  height: 34px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--accent-sky);
  color: var(--bg-base);
  border: none;
  border-radius: var(--radius-md);
  font-size: var(--fs-h3);
  font-weight: var(--fw-semibold);
  line-height: 1;
  transition: background 0.15s;
}

.add-button:hover {
  background: var(--accent-sky-hover);
}

/* ── Tag Filter ── */

.tag-filter-wrap {
  position: relative;
}

.toolbar-filter[id="btn-tag-filter"] {
  width: auto;
  padding: 0 10px;
  font-size: var(--fs-small);
}

.tag-dropdown {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  margin-top: 6px;
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 10px 12px;
  z-index: 100;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
}

.tag-dropdown.open {
  display: block;
}

.tag-filter-header {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 6px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--border);
  min-width: 310px;
}

.tag-dropdown-all {
  width: 90px;
  height: 28px;
  padding: 0;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: var(--fs-small);
  font-family: inherit;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}

.tag-dropdown-all:hover {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.tag-dropdown-btn {
  width: 90px;
  height: 28px;
  padding: 0;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: var(--fs-small);
  font-family: inherit;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}

.tag-dropdown-btn:hover {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.tag-dropdown-btn.active {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.tag-dropdown-edit {
  margin-left: auto;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: 14px;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}

.tag-dropdown-edit:hover {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.tag-dropdown-edit.active {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.tag-dropdown-close {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-secondary);
  font-size: 14px;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}

.tag-dropdown-close:hover {
  border-color: var(--status-error);
  color: var(--status-error);
}

.tag-dropdown .modal-tag {
  cursor: pointer;
}

.tag-tree-remove {
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  color: var(--text-muted);
  cursor: pointer;
  border-radius: var(--radius-sm);
  transition: color 0.15s, background 0.15s;
  flex-shrink: 0;
}

.tag-tree-remove:hover {
  color: var(--status-error);
  background: rgba(239, 68, 68, 0.1);
}

.tag-tree-activate {
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  color: var(--text-muted);
  cursor: pointer;
  border-radius: var(--radius-sm);
  transition: color 0.15s, background 0.15s;
  flex-shrink: 0;
}

.tag-tree-activate:hover {
  color: var(--status-success);
  background: rgba(34, 197, 94, 0.1);
}


.tag-color-palette {
  position: absolute;
  left: 0;
  top: 100%;
  margin-top: 4px;
  display: flex;
  gap: 4px;
  padding: 6px 8px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  z-index: 110;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.tag-color-option {
  width: 18px;
  height: 18px;
  border-radius: var(--radius-sm);
  cursor: pointer;
  border: 2px solid transparent;
  transition: border-color 0.15s;
}

.tag-color-option:hover {
  border-color: var(--text-primary);
}

.tag-chips-active {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}

.tag-chips-active:empty {
  display: none;
}

.toolbar-tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--fs-label);
  padding: 3px 8px;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--tag-color) 18%, transparent);
  color: var(--tag-color);
}

.tag-chip-notags {
  font-size: var(--fs-label);
  color: var(--text-muted);
}

.toolbar-tag-chip-notags {
  background: var(--surface-2);
  color: var(--text-secondary);
}

.chip-remove {
  cursor: pointer;
  font-size: var(--fs-body);
  line-height: 1;
  opacity: 0.6;
  transition: opacity 0.15s;
}

.chip-remove:hover {
  opacity: 1;
}

/* ── Toolbar Spacer & Card Count ── */

.toolbar-spacer {
  flex: 1;
}

.toolbar-date-label {
  font-size: var(--fs-small);
  color: var(--text-muted);
}

.toolbar-date-input {
  height: 32px;
  padding: 0 8px;
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-size: var(--fs-small);
  font-family: inherit;
  transition: border-color 0.15s;
}

.toolbar-date-input:focus {
  outline: none;
  border-color: var(--accent-sky);
}

.toolbar-card-count {
  font-size: var(--fs-small);
  color: var(--text-muted);
  white-space: nowrap;
}

/* ── Toolbar Separator ── */

.toolbar-separator {
  width: 1px;
  height: 20px;
  background: var(--border);
  margin: 0 4px;
}

/* ── Toolbar Filter ── */

.toolbar-filter {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-disabled);
  font-size: var(--fs-body);
  font-weight: var(--fw-semibold);
  line-height: 1;
  transition: border-color 0.15s, color 0.15s, background 0.15s;
}

.toolbar-filter:hover {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.toolbar-filter.active {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
  background: color-mix(in srgb, var(--accent-sky) 15%, transparent);
}

/* ── Toolbar Action (Undo/Redo) ── */

.toolbar-action {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-secondary);
  font-size: 18px;
  line-height: 1;
  transition: border-color 0.15s, color 0.15s;
}

.toolbar-action:hover:not(:disabled) {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.toolbar-action:disabled {
  color: var(--text-disabled);
  border-color: var(--border);
  cursor: default;
}

/* ── Drag & Drop Feedback ── */

.board-column.drag-over {
  border-color: var(--accent-sky);
  box-shadow: inset 0 0 0 1px var(--accent-sky);
}

.drop-indicator {
  height: 2px;
  background: var(--accent-sky);
  border-radius: 1px;
  margin: -1px 0;
}

/* ── Modal ── */

.modal-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.6);
  z-index: 200;
  align-items: center;
  justify-content: center;
}

.modal-overlay.open {
  display: flex;
}

.modal {
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  max-width: 90vw;
  max-height: 85vh;
  display: flex;
  flex-direction: row;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5);
}

.modal-main {
  width: 560px;
  display: flex;
  flex-direction: column;
  min-height: 0;
}

.modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--border);
}

.modal-header h2 {
  font-size: var(--fs-h3);
  font-weight: var(--fw-semibold);
  color: var(--text-primary);
  margin: 0;
}

.modal-title-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}

.modal-title-row .modal-textarea {
  flex: 1;
}

.modal-title-row .modal-flag {
  margin-top: 8px;
}

.modal-effort-row {
  display: flex;
  align-items: flex-end;
  gap: 16px;
}

.modal-effort-row .modal-toggle {
  flex-shrink: 0;
  padding-bottom: 8px;
}

.modal-effort-row .modal-field {
  flex-shrink: 0;
}

.modal-effort-row .modal-field .modal-input {
  width: 72px;
}

.modal-flag {
  font-size: var(--fs-h3);
  color: var(--text-disabled);
  cursor: pointer;
  transition: color 0.15s;
  margin-left: 8px;
}

.modal-header .modal-flag {
  flex: 1;
}

.modal-flag:hover {
  color: var(--status-error);
}

.modal-flag.active {
  color: var(--status-error);
}

.modal-close {
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-muted);
  font-size: var(--fs-h3);
  line-height: 1;
  transition: border-color 0.15s, color 0.15s;
}

.modal-close:hover {
  border-color: var(--status-error);
  color: var(--status-error);
}

.modal-body {
  padding: 20px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.modal-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.modal-label {
  font-size: var(--fs-label);
  font-weight: var(--fw-medium);
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: var(--ls-label);
  white-space: nowrap;
}

.modal-static-text {
  font-size: var(--fs-body);
  color: var(--text-secondary);
  padding: 2px 0;
}

.modal-input {
  padding: 8px 12px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-size: var(--fs-body);
  font-family: inherit;
  transition: border-color 0.15s;
}

.modal-input:focus {
  outline: none;
  border-color: var(--accent-sky);
}

.modal-textarea {
  padding: 8px 12px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-size: var(--fs-body);
  font-family: inherit;
  resize: vertical;
  min-height: 60px;
  transition: border-color 0.15s;
}

.modal-textarea:focus {
  outline: none;
  border-color: var(--accent-sky);
}

.modal-title-textarea {
  min-height: auto;
  height: calc(2lh + 18px);
  resize: none;
}

.modal-row {
  display: flex;
  gap: 12px;
}

.modal-row .modal-field {
  flex: 1;
}

.modal-flags {
  display: flex;
  align-items: center;
  gap: 10px;
}

.modal-flag-item {
  display: flex;
  align-items: center;
  gap: 4px;
  color: var(--text-disabled);
  font-size: var(--fs-small);
  cursor: pointer;
  transition: color 0.15s;
}

.modal-flag-item:hover {
  color: var(--text-secondary);
}

.modal-flag-item .modal-flag-icon {
  font-size: var(--fs-body);
}

.modal-flag-item.active[data-action="qa-toggle-someday"],
.modal-flag-item.active[data-action="cd-toggle-someday"] {
  color: var(--accent-sky);
}

.modal-flag-item.active[data-action="qa-toggle-waiting"],
.modal-flag-item.active[data-action="cd-toggle-waiting"] {
  color: var(--status-warning);
}

.modal-flag-item.active[data-action="qa-toggle-flagged"],
.modal-flag-item.active[data-action="cd-toggle-flagged"] {
  color: var(--status-error);
}

.modal-flag-item.active[data-action="cd-toggle-cancelled"] {
  color: var(--status-error);
}

.modal-flags-sep {
  color: var(--border);
  font-size: var(--fs-small);
  user-select: none;
}

.modal-tags {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
  gap: 6px;
}

.modal-tag {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 5px 12px;
  border-radius: var(--radius-sm);
  background: color-mix(in srgb, var(--tag-color) 18%, transparent);
  color: var(--tag-color);
  font-size: var(--fs-small);
  cursor: pointer;
  border: 1px solid transparent;
  transition: border-color 0.15s;
  height: 30px;
}

.modal-tag.selected {
  border-color: var(--tag-color);
}

.modal-tag.inactive {
  opacity: 0.6;
  background: repeating-linear-gradient(
    -45deg,
    color-mix(in srgb, var(--tag-color) 25%, transparent),
    color-mix(in srgb, var(--tag-color) 25%, transparent) 3px,
    color-mix(in srgb, var(--tag-color) 8%, transparent) 3px,
    color-mix(in srgb, var(--tag-color) 8%, transparent) 6px
  );
  cursor: default;
}


.modal-tags-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}

.modal-tags-chips .modal-tag {
  min-width: 90px;
}

.tag-search-wrap {
  position: relative;
}

.tag-search-input {
  width: 90px;
  font-size: var(--fs-small);
  padding: 5px 10px;
}

.tag-search-results {
  position: absolute;
  bottom: 100%;
  left: 0;
  margin-bottom: 4px;
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  z-index: 300;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
  width: 102px;
  max-height: 200px;
  overflow-y: auto;
}

.tag-search-results .modal-tag {
  width: 90px;
}

.tag-search-result {
  cursor: pointer;
}

.modal-tags-selected {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.tag-panel {
  display: flex;
  flex-direction: column;
  min-width: 0;
  align-self: stretch;
  border-left: 1px solid var(--border);
}

.tag-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border-bottom: 1px solid var(--border);
}

.tag-panel-header .modal-label {
  font-size: var(--fs-h3);
  font-weight: var(--fw-semibold);
  text-transform: none;
  letter-spacing: normal;
  color: var(--text-primary);
}

.tag-panel-close {
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
  color: var(--text-muted);
  font-size: var(--fs-body);
  line-height: 1;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}

.tag-panel-close:hover {
  border-color: var(--text-secondary);
  color: var(--text-secondary);
}

.tag-panel-body {
  padding: 12px;
  flex: 1;
  overflow-y: auto;
}

.tag-tree-add {
  width: 90px;
}

.tag-tree-grid {
  display: grid;
  gap: 2px 4px;
  align-items: start;
}

.tag-tree-cell {
  min-height: 28px;
  display: flex;
  align-items: center;
  gap: 4px;
}

.tag-tree-cell:empty {
  min-height: 0;
}

.tag-tree-add-inline {
  width: 22px;
  height: 22px;
  flex-shrink: 0;
}

.tag-tree-cell .modal-tag {
  width: 100%;
  white-space: nowrap;
}

.modal-tag-add {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0 0 1px;
  border-radius: var(--radius-sm);
  border: 1px dashed var(--border);
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  transition: border-color 0.15s, color 0.15s;
}


.modal-tag-add:hover {
  border-color: var(--accent-sky);
  color: var(--accent-sky);
}

.modal-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  font-size: var(--fs-body);
  color: var(--text-secondary);
}

.modal-toggle input[type="checkbox"] {
  accent-color: var(--accent-sky);
  width: 16px;
  height: 16px;
}

.modal-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  padding: 16px 20px;
  border-top: 1px solid var(--border);
}

.modal-footer .modal-btn {
  text-align: center;
  padding: 8px 12px;
  min-width: 100px;
}

.modal-footer .modal-btn-cancel[data-action="cd-done"],
.modal-footer .modal-btn-cancel[data-action="cd-archive"],
.modal-footer .modal-btn-cancel[data-action="cd-unarchive"] {
  margin-right: auto;
}

.modal-shortcut-hint {
  font-size: var(--fs-label);
  opacity: 0.6;
  margin-left: 6px;
}

.modal-input-invalid {
  border-color: var(--status-error) !important;
}

.modal-btn {
  padding: 8px 16px;
  border-radius: var(--radius-md);
  font-size: var(--fs-small);
  font-weight: var(--fw-medium);
  font-family: inherit;
  transition: background 0.15s, border-color 0.15s;
}

.modal-footer .modal-btn-icon {
  min-width: auto;
  padding-left: 6px;
  padding-right: 6px;
}

.modal-btn-cancel {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--text-secondary);
}

.modal-btn-cancel:hover {
  border-color: var(--text-muted);
  color: var(--text-primary);
}

.modal-btn-save {
  background: var(--accent-sky);
  border: 1px solid var(--accent-sky);
  color: var(--bg-base);
}

.modal-btn-save:hover {
  background: var(--accent-sky-hover);
  border-color: var(--accent-sky-hover);
}

.modal-btn-danger {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--status-error);
}

.modal-btn-danger:hover {
  border-color: var(--status-error);
  background: color-mix(in srgb, var(--status-error) 15%, transparent);
}

/* Reset-Bestätigungs-Modals (Test-Auswahl + Live-JA!) */
.reset-modal .modal-main { width: 360px; }
.reset-modal-body {
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.reset-modal-body p {
  margin: 0;
  color: var(--text-secondary);
  font-size: var(--fs-small);
  line-height: 1.5;
}
.reset-choice-btn { width: 100%; }
.reset-confirm-input { width: 100%; }
.modal-btn:disabled { opacity: 0.45; cursor: not-allowed; }

.modal-select {
  padding: 8px 12px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-primary);
  font-size: var(--fs-body);
  font-family: inherit;
  transition: border-color 0.15s;
}

.modal-select:focus {
  outline: none;
  border-color: var(--accent-sky);
}

.modal-date-effort-row {
  display: flex;
  align-items: flex-end;
  gap: 12px;
}

.modal-date-effort-row .modal-field-date {
  flex: 1;
}

.modal-date-row {
  display: flex;
  gap: 6px;
  align-items: center;
}

.modal-input-date {
  width: 172px;
}

.modal-date-label {
  padding: 8px 12px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-md);
  color: var(--text-muted);
  font-size: var(--fs-body);
  cursor: pointer;
  width: 140px;
  transition: border-color 0.15s;
}

.modal-date-label:hover {
  border-color: var(--accent-sky);
  color: var(--text-secondary);
}

.hidden {
  display: none !important;
}

.modal-date-row .modal-btn {
  flex-shrink: 0;
}

.modal-input-hours {
  width: 80px;
  text-align: left;
  -moz-appearance: textfield;
}

.modal-input-hours::-webkit-outer-spin-button,
.modal-input-hours::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* ── Mobile ── */

@media (max-width: 767px) {
  .board-toolbar {
    padding: 8px 12px;
    gap: 6px;
    overflow-x: auto;
    max-width: 100%;
  }

  .toolbar-capture-btn {
    display: none;
  }

  .toolbar-capture-btn + .toolbar-separator {
    display: none;
  }

  .toolbar-action {
    display: none;
  }

  .toolbar-separator:has(+ .toolbar-action) {
    display: none;
  }

  .toolbar-spacer,
  .toolbar-card-count {
    display: none;
  }

  .mobile-only {
    display: flex;
  }

  #mobile-someday { order: 10; }
  #filter-waiting { order: 11; }
  #filter-flagged { order: 12; }
  #filter-overdue { order: 13; }

  .tag-filter-wrap {
    display: none;
  }

  .tag-chips-active {
    display: none;
  }

  .toolbar-filter {
    min-width: 32px;
    min-height: 32px;
  }

  .card {
    cursor: pointer;
  }

  .fab {
    display: flex;
    align-items: center;
    justify-content: center;
    position: fixed;
    bottom: 20px;
    right: 20px;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--accent-sky);
    color: var(--bg-base);
    font-size: 28px;
    line-height: 1;
    border: none;
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
    z-index: 200;
  }

  .fab:active {
    background: var(--accent-sky-hover);
  }

  .column-tabs {
    display: flex;
    gap: 3px;
    padding: 6px 12px;
    flex-shrink: 0;
  }

  .column-tab {
    flex: 1;
    padding: 6px 2px;
    background: var(--surface-1);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    color: var(--text-muted);
    font-size: 10px;
    font-family: inherit;
    white-space: nowrap;
    text-align: center;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
  }

  .column-tab.active {
    background: var(--accent-sky);
    border-color: var(--accent-sky);
    color: var(--bg-base);
    font-weight: var(--fw-medium);
  }

  .modal {
    width: 100%;
    height: 100%;
    max-width: none;
    max-height: none;
    border-radius: 0;
    margin: 0;
    flex-direction: column;
    overflow-y: auto;
  }

  /* Inhaltsbereich folgt der Modal-Breite statt der Desktop-Festbreite. */
  .modal-main {
    width: 100%;
    min-width: 0;
  }

  /* Fällig/Ist/Plan: Datum in voller Breite, Stundenfelder darunter. */
  .modal-date-effort-row {
    flex-wrap: wrap;
  }

  .modal-date-effort-row .modal-field-date {
    flex-basis: 100%;
  }

  /* Karten-Dialog: Spaltenwahl ohne Inbox/Backlog; Fußzeile einzeilig –
     Löschen links, Abbrechen + Speichern rechts. „Erledigt" läuft mobil
     über die Spaltenzeile (setzt denselben Zeitstempel). */
  .cd-move-btn[data-column="capture"],
  .cd-move-btn[data-column="inbox"],
  .modal-footer .modal-btn[data-action="cd-done"] {
    display: none;
  }

  .modal-footer .modal-btn-danger[data-action="cd-delete"] {
    margin-right: auto;
  }

  .modal-overlay {
    padding: 0;
  }

  .tag-panel {
    border-left: none;
    border-top: 1px solid var(--border);
  }

  .tag-tree-remove,
  .tag-tree-activate,
  .tag-tree-add,
  .tag-tree-add-inline,
  .tag-color-palette {
    display: none;
  }

  .modal-footer {
    flex-wrap: wrap;
  }

  .cd-move-row {
    display: flex;
    gap: 4px;
    width: 100%;
    padding-bottom: 8px;
    margin-bottom: 4px;
    border-bottom: 1px solid var(--border);
  }

  .cd-move-btn {
    flex: 1;
    padding: 6px 4px;
    background: var(--surface-2);
    border: 1px solid var(--border);
    border-radius: var(--radius-md);
    color: var(--text-muted);
    font-size: var(--fs-label);
    font-family: inherit;
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
  }

  .cd-move-btn.active {
    background: var(--accent-sky);
    border-color: var(--accent-sky);
    color: var(--bg-base);
    font-weight: var(--fw-medium);
  }
}

@media (min-width: 768px) {
  .cd-move-row {
    display: none;
  }
}

@media (min-width: 768px) {
  .fab {
    display: none;
  }

  .column-tabs {
    display: none;
  }

  .mobile-only {
    display: none;
  }
}

