/* ------------------------------------------------------------------
   Brand palette (derived from #ffc6d3, hue 346°). Contrast-checked:
   brand-600 on white 6.5:1, brand-300 on dark body 7.8:1.
   ------------------------------------------------------------------ */
:root {
  --brand-50: #fff0f3;  --brand-100: #ffe0e8; --brand-200: #ffc6d3; --brand-300: #fa9eb4;
  --brand-400: #e96382; --brand-500: #cf3055; --brand-600: #b22445; --brand-700: #921c37;
  --brand-800: #71142a; --brand-900: #4e0e1d;
}
:root, [data-bs-theme=light] {
  --brand: var(--brand-600); --brand-hover: var(--brand-700); --brand-strong: var(--brand-800);
  --brand-accent: var(--brand-200); --brand-soft: var(--brand-50); --brand-on: #fff;
  --bs-primary: var(--brand-600); --bs-primary-rgb: 178, 36, 69;
  --bs-link-color: var(--brand-600); --bs-link-color-rgb: 178, 36, 69;
  --bs-link-hover-color: var(--brand-800); --bs-link-hover-color-rgb: 113, 20, 42;
  --bs-primary-bg-subtle: var(--brand-50); --bs-primary-border-subtle: var(--brand-200);
  --bs-primary-text-emphasis: var(--brand-800);
  --bs-focus-ring-color: rgba(178, 36, 69, .25);
}
[data-bs-theme=dark] {
  --brand: var(--brand-500); --brand-hover: var(--brand-400); --brand-strong: var(--brand-300);
  --brand-accent: rgba(250, 158, 180, .25); --brand-soft: rgba(250, 158, 180, .08); --brand-on: #fff;
  --bs-primary: var(--brand-400); --bs-primary-rgb: 233, 99, 130;
  --bs-link-color: var(--brand-300); --bs-link-color-rgb: 250, 158, 180;
  --bs-link-hover-color: var(--brand-200); --bs-link-hover-color-rgb: 255, 198, 211;
  --bs-primary-bg-subtle: rgba(250, 158, 180, .12); --bs-primary-border-subtle: var(--brand-700);
  --bs-primary-text-emphasis: var(--brand-300);
  --bs-focus-ring-color: rgba(233, 99, 130, .3);
}
.btn-primary {
  --bs-btn-bg: var(--brand); --bs-btn-border-color: var(--brand); --bs-btn-color: var(--brand-on);
  --bs-btn-hover-bg: var(--brand-hover); --bs-btn-hover-border-color: var(--brand-hover); --bs-btn-hover-color: var(--brand-on);
  --bs-btn-active-bg: var(--brand-hover); --bs-btn-active-border-color: var(--brand-hover); --bs-btn-active-color: var(--brand-on);
  --bs-btn-disabled-bg: var(--brand); --bs-btn-disabled-border-color: var(--brand);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}
.btn-outline-primary {
  --bs-btn-color: var(--bs-link-color); --bs-btn-border-color: var(--brand-300);
  --bs-btn-hover-bg: var(--brand); --bs-btn-hover-border-color: var(--brand); --bs-btn-hover-color: var(--brand-on);
  --bs-btn-active-bg: var(--brand-hover); --bs-btn-active-border-color: var(--brand-hover); --bs-btn-active-color: var(--brand-on);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}
.nav-pills { --bs-nav-pills-link-active-bg: var(--brand); --bs-nav-link-color: var(--bs-link-color); --bs-nav-link-hover-color: var(--bs-link-hover-color); }
.nav-tabs { --bs-nav-link-color: var(--bs-link-color); --bs-nav-link-hover-color: var(--bs-link-hover-color); }
.form-check-input:checked { background-color: var(--brand); border-color: var(--brand); }
.form-control:focus, .form-select:focus, .form-check-input:focus { border-color: var(--brand-300); box-shadow: 0 0 0 .25rem var(--bs-focus-ring-color); }
.page-link { --bs-pagination-color: var(--bs-link-color); --bs-pagination-active-bg: var(--brand); --bs-pagination-active-border-color: var(--brand); }
.bg-brand { background: var(--brand) !important; color: var(--brand-on) !important; }
.bg-brand-subtle { background: var(--brand-accent) !important; color: var(--bs-primary-text-emphasis) !important; }
.text-brand { color: var(--brand-strong) !important; }
h1, .h1, h2, .h2, h3, .h3, h4, .h4, .brand-heading { color: var(--brand-strong); }
.login-bg { background: linear-gradient(160deg, var(--brand-soft), var(--bs-tertiary-bg) 60%); }

body { background: var(--bs-tertiary-bg); }
a { text-decoration: none; }
a:hover { text-decoration: underline; }
.list-group-item .badge, .d-flex > .badge { align-self: center; }

/* Header: brand bar + horizontal tabs */
.app-header { background: var(--bs-body-bg); border-bottom: 1px solid var(--bs-border-color); }
.app-bar { display: flex; align-items: center; gap: 1rem; min-height: 56px; }
.app-brand { display: flex; align-items: center; gap: .6rem; font-weight: 600; font-size: 1.05rem; color: var(--brand-strong); text-decoration: none; white-space: nowrap; }
.app-brand:hover { color: var(--brand-strong); }
.app-search { position: relative; align-items: center; flex: 0 1 380px; margin-left: 1rem; }
.app-search i { position: absolute; left: .65rem; color: var(--bs-secondary-color); font-size: .85rem; }
.app-search input { padding-left: 2rem; border-radius: 2rem; background: var(--bs-tertiary-bg); }
.btn-icon { border: 0; font-size: 1.25rem; color: var(--bs-secondary-color); padding: .25rem .5rem; }
.btn-icon:hover, .btn-icon:focus-visible { color: var(--brand); background: var(--brand-soft); }
.badge-corner { position: absolute; top: 0; right: 0; font-size: .62rem; transform: translate(10%, -10%); }
.app-tabs { border-top: 1px solid var(--bs-border-color-translucent); }
.app-tabs .container-fluid { display: flex; gap: .15rem; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
.app-tabs .container-fluid::-webkit-scrollbar { display: none; }
.app-tab { flex: 0 0 auto; padding: .6rem .85rem .5rem; color: var(--bs-body-color); text-decoration: none; font-size: .92rem; border-bottom: 3px solid transparent; white-space: nowrap; }
.app-tab:hover { color: var(--brand); background: var(--brand-soft); }
.app-tab.active { color: var(--brand-strong); font-weight: 600; border-bottom-color: var(--brand); background: var(--brand-soft); }
.app-main { min-width: 0; }
.card { border-color: var(--bs-border-color-translucent); }
.row-link { cursor: pointer; }
.checkbox-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .15rem .75rem; max-height: 220px; overflow-y: auto; }
.sticky-actions { position: sticky; bottom: 0; background: var(--bs-body-bg); padding: .75rem 0 .25rem; }
.stat { font-size: 1.35rem; font-weight: 600; }
.stat-label { font-size: .78rem; color: var(--bs-secondary-color); }

/* Stacked tables on small screens */
@media (max-width: 767.98px) {
  .responsive-table thead { display: none; }
  .responsive-table tr { display: block; border-bottom: 1px solid var(--bs-border-color); padding: .5rem .25rem; }
  .responsive-table td { display: flex; justify-content: space-between; gap: 1rem; border: 0; padding: .2rem .5rem; text-align: right; }
  .responsive-table td::before { content: attr(data-label); color: var(--bs-secondary-color); text-align: left; font-size: .85rem; }
  .responsive-table td:first-child { font-size: 1.05rem; text-align: left; }
  .responsive-table td:first-child::before { content: none; }
}

/* Kanban */
.kanban { display: flex; gap: .75rem; overflow-x: auto; padding-bottom: .75rem; scroll-snap-type: x proximity; }
.kanban-col { flex: 0 0 280px; background: var(--bs-body-bg); border: 1px solid var(--bs-border-color-translucent); border-radius: .5rem; display: flex; flex-direction: column; max-height: calc(100vh - 230px); scroll-snap-align: start; }
@media (max-width: 575.98px) { .kanban-col { flex-basis: 85vw; } }
.kanban-col header { padding: .6rem .75rem; border-bottom: 3px solid var(--col-color, #999); }
.kanban-items { padding: .5rem; overflow-y: auto; flex: 1; min-height: 80px; }
.kanban-items.drag-over { background: var(--bs-primary-bg-subtle); }
.kanban-card { background: var(--bs-tertiary-bg); border: 1px solid var(--bs-border-color-translucent); border-radius: .4rem; padding: .55rem .65rem; margin-bottom: .5rem; cursor: grab; }
.kanban-card:active { cursor: grabbing; }
.kanban-card a { color: inherit; text-decoration: none; }

/* Budget bar */
.budget-bar { height: 14px; border-radius: 7px; background: var(--bs-secondary-bg); overflow: hidden; display: flex; }
.budget-bar .committed { background: var(--bs-success); }
.budget-bar .forecast { background: repeating-linear-gradient(45deg, var(--bs-warning), var(--bs-warning) 6px, rgba(255,193,7,.6) 6px, rgba(255,193,7,.6) 12px); }

/* Timetable */
.timetable-wrap { overflow-x: auto; }
.timetable { display: grid; grid-template-columns: 56px repeat(var(--stages), minmax(170px, 1fr)); min-width: calc(56px + var(--stages) * 170px); }
.tt-head { position: sticky; top: 0; z-index: 3; background: var(--bs-body-bg); padding: .5rem; font-weight: 600; border-bottom: 1px solid var(--bs-border-color); text-align: center; }
.tt-col, .tt-hours { position: relative; border-left: 1px solid var(--bs-border-color-translucent); margin: .75rem 0; }
.tt-hours .tt-hour { position: absolute; right: 6px; font-size: .72rem; color: var(--bs-secondary-color); transform: translateY(-50%); }
.tt-gridline { position: absolute; left: 0; right: 0; border-top: 1px dashed var(--bs-border-color-translucent); }
.tt-block { position: absolute; left: 4px; right: 4px; border-radius: .35rem; padding: 2px 6px; font-size: .78rem; overflow: hidden; line-height: 1.2; }
.tt-slot { color: #fff; box-shadow: 0 1px 2px rgba(0,0,0,.25); z-index: 2; }
.tt-slot a { color: #fff; text-decoration: none; }
.tt-slot.conflict { outline: 3px solid var(--bs-danger); }
.tt-slot.draft { opacity: .65; border: 2px dashed #fff; }
.tt-changeover { background: repeating-linear-gradient(135deg, var(--bs-secondary-bg), var(--bs-secondary-bg) 5px, var(--bs-tertiary-bg) 5px, var(--bs-tertiary-bg) 10px); color: var(--bs-secondary-color); font-size: .68rem; z-index: 1; }
.tt-break { background: var(--bs-warning-bg-subtle); border: 1px solid var(--bs-warning-border-subtle); color: var(--bs-warning-text-emphasis); z-index: 1; }
.mail-body { white-space: pre-wrap; word-break: break-word; }
.mail-html { overflow-x: auto; }
@media print {
  .app-header, .btn, form, .nav-pills, .alert { display: none !important; }
  .tab-pane { display: block !important; opacity: 1 !important; }
  body { background: #fff; }
}

/* Activities */
.activity-item { display: flex; gap: .75rem; padding: .65rem .9rem; border-bottom: 1px solid var(--bs-border-color-translucent); }
.activity-item:last-child { border-bottom: 0; }
.activity-icon { flex: 0 0 2rem; height: 2rem; border-radius: 50%; display: grid; place-items: center; background: var(--brand-soft); color: var(--brand); }
.activity-icon.meeting { background: var(--bs-info-bg-subtle); color: var(--bs-info-text-emphasis); }
.activity-icon.task { background: var(--bs-success-bg-subtle); color: var(--bs-success-text-emphasis); }
.activity-item.done .activity-title { text-decoration: line-through; color: var(--bs-secondary-color); }
.activity-body { white-space: pre-wrap; word-break: break-word; font-size: .9rem; }
.activity-meta { font-size: .8rem; color: var(--bs-secondary-color); }
.task-check { border: 0; background: none; padding: 0; font-size: 1.25rem; line-height: 1; color: var(--bs-secondary-color); }
.task-check:hover { color: var(--bs-success); }
.composer .nav-link { padding: .35rem .75rem; font-size: .9rem; }

/* KI-Assistent */
body:has(.ai-fab) .app-main { padding-bottom: 5rem !important; }
.ai-fab { position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 1030; border-radius: 2rem; padding: .55rem 1rem; }
.ai-panel { --bs-offcanvas-width: 440px; }
.ai-log { overflow-y: auto; background: var(--bs-tertiary-bg); }
.ai-msg { margin-bottom: .75rem; display: flex; flex-direction: column; }
.ai-user { align-items: flex-end; }
.ai-bubble { max-width: 92%; padding: .5rem .75rem; border-radius: .75rem; font-size: .9rem; word-break: break-word; }
.ai-user .ai-bubble { background: var(--brand); color: var(--brand-on); border-bottom-right-radius: .2rem; }
.ai-assistant .ai-bubble { background: var(--bs-body-bg); border: 1px solid var(--bs-border-color-translucent); border-bottom-left-radius: .2rem; }
.ai-proposal { max-width: 92%; margin-top: .4rem; padding: .5rem .75rem; border-radius: .5rem; background: var(--brand-soft); border: 1px dashed var(--brand-300); }
@media print { .ai-fab { display: none !important; } }

/* Timetable drag & drop */
.tt-slot.editable { cursor: grab; user-select: none; -webkit-user-select: none; }
.tt-slot a { -webkit-user-drag: none; }
.tt-slot.dragging { opacity: .85; z-index: 5; box-shadow: 0 6px 18px rgba(0,0,0,.35); cursor: grabbing; transition: none; }
.tt-grip { position: absolute; top: 2px; right: 4px; font-size: .8rem; opacity: .8; cursor: grab; touch-action: none; padding: 2px 4px; }
.tt-resize { position: absolute; left: 0; right: 0; bottom: 0; height: 8px; cursor: ns-resize; touch-action: none; }
.tt-resize::after { content: ""; position: absolute; left: 40%; right: 40%; bottom: 2px; border-bottom: 2px solid rgba(255,255,255,.7); border-radius: 2px; }
.tt-time-hint { position: absolute; left: 4px; top: -1.4rem; background: var(--bs-dark); color: #fff; font-size: .7rem; padding: 1px 6px; border-radius: .25rem; white-space: nowrap; z-index: 6; }
.tt-col.drop-target { background: var(--brand-soft); }
.tt-chip[draggable=true] { cursor: grab; }

/* Dashboard KPIs */
.kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: .75rem; }
.kpi { color: var(--bs-body-color); transition: border-color .15s, box-shadow .15s; padding: .85rem 1rem; }
.kpi:hover { border-color: var(--brand-300); box-shadow: 0 2px 8px rgba(178, 36, 69, .12); }
.kpi-icon { color: var(--brand); }

/* Docked assistant (desktop) */
@media (min-width: 1200px) {
  body.ai-docked .app-main { margin-right: var(--bs-offcanvas-width, 440px); max-width: calc(100% - 440px); }
  body.ai-docked .ai-panel { top: var(--app-header-h, 0); box-shadow: none; border-left: 1px solid var(--bs-border-color); z-index: 1010; }
  body.ai-docked .ai-fab { display: none; }
}

/* Mail workspace */
.mail-ws { display: grid; grid-template-columns: 1fr; gap: .75rem; }
@media (min-width: 992px) {
  .mail-ws { grid-template-columns: 220px minmax(300px, 380px) 1fr; height: calc(100vh - var(--app-header-h, 110px) - 2rem); }
  .mail-col { min-height: 0; overflow-y: auto; }
}
.mail-col { background: var(--bs-body-bg); border: 1px solid var(--bs-border-color-translucent); border-radius: .5rem; }
.mail-folders { padding: .6rem; }
.mail-folder { display: flex; align-items: center; gap: .5rem; padding: .3rem .5rem; border-radius: .35rem; color: var(--bs-body-color); font-size: .9rem; }
.mail-folder:hover { background: var(--brand-soft); text-decoration: none; }
.mail-folder.active { background: var(--brand-accent); color: var(--bs-primary-text-emphasis); font-weight: 600; }
.mail-folder.inactive { color: var(--bs-secondary-color); }
.mail-folder.drop-target { outline: 2px dashed var(--brand); background: var(--brand-soft); }
.mail-list-head { padding: .6rem .6rem .25rem; border-bottom: 1px solid var(--bs-border-color-translucent); }
.mail-bulk { background: var(--brand-soft); border-radius: .4rem; padding: .35rem .5rem; margin: .25rem 0; }
.mail-item { display: flex; gap: .5rem; align-items: flex-start; padding: .55rem .6rem; cursor: pointer; }
.mail-item .mail-check { margin-top: .25rem; flex: 0 0 auto; }
.mail-item .mail-link { flex: 1 1 auto; min-width: 0; color: inherit; text-decoration: none; }
.mail-item.unread .mail-from, .mail-item.unread .mail-subject { font-weight: 600; }
.mail-item.unread { border-left: 3px solid var(--brand); }
.mail-item.active { background: var(--brand-accent); color: var(--bs-body-color); border-color: var(--bs-border-color-translucent); }
.mail-item.selected { background: var(--brand-soft); }
.mail-item.dragging { opacity: .5; }
.mail-subject { font-size: .88rem; }
.mail-pane { padding: 1rem; }
.mail-toolbar { position: sticky; top: -1rem; background: var(--bs-body-bg); padding: .25rem 0 .5rem; z-index: 2; border-bottom: 1px solid var(--bs-border-color-translucent); }
.mail-drag-ghost { position: absolute; top: -1000px; padding: .25rem .6rem; background: var(--brand); color: #fff; border-radius: .4rem; font-size: .85rem; }

/* Configurable lists */
.lv-group td { background: var(--brand-soft); font-weight: 600; color: var(--brand-strong); }
.lv-editable { cursor: text; }
.lv-editable:hover { background: var(--brand-soft); box-shadow: inset 0 -2px 0 var(--brand-300); }
.lv-editable .lv-pen { font-size: .7rem; opacity: 0; }
.lv-editable:hover .lv-pen { opacity: .6; }
.lv-editing { padding: .25rem !important; }
.lv-saved { animation: lvflash 1s; }
@keyframes lvflash { from { background: var(--bs-success-bg-subtle); } to { background: transparent; } }
@media (max-width: 767.98px) { .responsive-table tr.lv-group td { display: block; text-align: left; } .responsive-table td.lv-desktop, .responsive-table th.lv-desktop { display: none !important; } }

/* Detail layouts */
.lo-grid { display: flex; flex-direction: column; gap: 0 1rem; }
.lo-col { display: contents; }
.lo-block { order: var(--mo, 0); min-width: 0; }
.lo-hidden-mobile { display: none; }
@media (min-width: 992px) {
  .lo-grid { flex-direction: row; align-items: flex-start; }
  .lo-col { display: block; flex: var(--w) 1 0; min-width: 0; }
  .lo-block { order: 0; }
  .lo-hidden-mobile { display: block; }
}
.lo-fields th { width: 38%; padding-left: 0; }
@media (min-width: 768px) { .lo-fields-2 tbody { display: grid; grid-template-columns: 1fr 1fr; column-gap: 1.5rem; } .lo-fields-2 tr { display: table; width: 100%; } }
.lo-kanban .kanban-col { flex-basis: 220px; max-height: none; }

/* Charts - categorical palette (validated, light/dark stepped separately), fixed slot order */
:root, [data-bs-theme=light] { --series-1: #2a78d6; --series-2: #eb6834; --series-3: #1baf7a; --series-4: #eda100; --series-5: #e87ba4; --series-6: #008300; --series-7: #6250d6; --series-8: #e34948; --viz-track: #ecebe8; }
[data-bs-theme=dark] { --series-1: #3987e5; --series-2: #d95926; --series-3: #199e70; --series-4: #c98500; --series-5: #d55181; --series-6: #008300; --series-7: #9085e9; --series-8: #e66767; --viz-track: #2c2c2a; }
.viz-s1 { stroke: var(--series-1); } .viz-s2 { stroke: var(--series-2); } .viz-s3 { stroke: var(--series-3); } .viz-s4 { stroke: var(--series-4); }
.viz-s5 { stroke: var(--series-5); } .viz-s6 { stroke: var(--series-6); } .viz-s7 { stroke: var(--series-7); } .viz-s8 { stroke: var(--series-8); }
.viz-bg1 { background: var(--series-1); } .viz-bg2 { background: var(--series-2); } .viz-bg3 { background: var(--series-3); } .viz-bg4 { background: var(--series-4); }
.viz-bg5 { background: var(--series-5); } .viz-bg6 { background: var(--series-6); } .viz-bg7 { background: var(--series-7); } .viz-bg8 { background: var(--series-8); }
.viz-bars { display: grid; gap: .45rem; }
.viz-bar-row { display: grid; grid-template-columns: minmax(80px, 30%) 1fr auto; align-items: center; gap: .6rem; font-size: .85rem; }
.viz-bar-row:hover .viz-bar { filter: brightness(1.1); }
.viz-track { height: 14px; }
.viz-bar { display: block; height: 14px; min-width: 2px; background: var(--series-1); border-radius: 0 4px 4px 0; }
.viz-value { font-variant-numeric: tabular-nums; color: var(--bs-body-color); white-space: nowrap; }
.viz-label { color: var(--bs-secondary-color); }
.viz-stack { display: flex; gap: 2px; height: 24px; }
.viz-seg { display: block; min-width: 2px; }
.viz-seg:first-child { border-radius: 4px 0 0 4px; } .viz-seg:last-child { border-radius: 0 4px 4px 0; } .viz-seg:only-child { border-radius: 4px; }
.viz-ring-track { stroke: var(--viz-track); }
.viz-ring-total { font-size: 5px; font-weight: 600; fill: var(--bs-body-color); }
.viz-ring-sub { font-size: 3px; fill: var(--bs-secondary-color); }
.viz-legend { display: grid; gap: .25rem; font-size: .85rem; min-width: 200px; flex: 1; }
.viz-legend li { display: flex; align-items: center; gap: .5rem; }
.viz-key { width: 10px; height: 10px; border-radius: 2px; flex: 0 0 10px; }
.lo-editor-grid { display: flex; gap: 1rem; align-items: flex-start; flex-wrap: wrap; }
.lo-ed-col { min-width: 240px; }
.lo-ed-blocks { min-height: 60px; display: grid; gap: .5rem; margin-bottom: .5rem; }
.lo-ed-block { cursor: grab; }
.lo-ed-fieldlist { max-height: 45vh; overflow-y: auto; }
