Files
ankn a5f8fb49ab Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
2026-06-30 20:39:52 +02:00

892 lines
15 KiB
CSS

/* Base tidy styles */
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
background-color: #f9f9f9;
margin: 0;
padding: 0;
}
header {
background-color: #ffffff;
padding: 1rem 2rem;
border-bottom: 1px solid #eaeaea;
}
h1 {
margin: 0;
font-size: 1.5rem;
color: #111;
}
main {
padding: 2rem;
max-width: 1200px;
margin: 0 auto;
}
.top-nav {
display: flex;
gap: 1rem;
}
.nav-btn {
background: none;
border: none;
border-bottom: 2px solid transparent;
padding: 0.5rem 1rem;
font-size: 1rem;
cursor: pointer;
color: #555;
}
.nav-btn:hover {
color: #111;
}
.nav-btn.active {
border-bottom: 2px solid #1a73e8;
color: #1a73e8;
font-weight: 500;
}
#dashboard {
/* Removed default card style from wrapper */
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.card {
background: #ffffff;
padding: 1.5rem;
border-radius: 8px;
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
border: 1px solid #eaeaea;
}
.card h2 {
margin-top: 0;
font-size: 1.25rem;
color: #222;
border-bottom: 2px solid #f0f0f0;
padding-bottom: 0.5rem;
}
.grid-2 {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1.5rem;
}
@media (max-width: 768px) {
.grid-2 {
grid-template-columns: 1fr;
}
}
.tidy-list {
list-style: none;
padding: 0;
margin: 0;
}
.tidy-list li {
padding: 0.75rem 0;
border-bottom: 1px solid #f5f5f5;
}
.tidy-list li:last-child {
border-bottom: none;
}
.priority-high {
color: #d93025;
font-weight: 500;
}
.suggestion-box {
background-color: #e8f0fe;
border-left: 4px solid #1a73e8;
padding: 0.75rem;
margin-top: 1rem;
font-size: 0.9rem;
}
/* Task Item Layout */
.task-item {
display: flex;
align-items: flex-start;
gap: 0.5rem;
padding: 0.75rem 0;
border-bottom: 1px solid #f5f5f5;
transition: background 0.15s;
}
.task-item:last-child {
border-bottom: none;
}
.drag-handle {
cursor: grab;
color: #bbb;
font-size: 1.1rem;
user-select: none;
padding-top: 2px;
}
.drag-handle:active {
cursor: grabbing;
}
.task-content {
flex: 1;
min-width: 0;
}
.task-actions {
display: flex;
align-items: center;
gap: 0.4rem;
flex-shrink: 0;
}
.btn-edit, .btn-done {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
font-size: 0.85rem;
padding: 2px 6px;
line-height: 1;
color: #555;
transition: all 0.15s;
}
.btn-edit:hover {
background: #e8f0fe;
border-color: #1a73e8;
color: #1a73e8;
}
.btn-done:hover {
background: #e6f4ea;
border-color: #34a853;
color: #34a853;
}
.priority-badge {
display: inline-block;
padding: 2px 6px;
border-radius: 4px;
font-size: 0.75rem;
font-weight: 500;
background: #eee;
}
.priority-badge.priority-1 {
background: #fce8e6;
color: #d93025;
}
.priority-badge.priority-2 {
background: #fef7e0;
color: #ea8600;
}
.priority-badge.priority-3 {
background: #e8f0fe;
color: #1a73e8;
}
/* Drag and Drop States */
.task-item.dragging {
opacity: 0.4;
}
.task-item.drag-over {
border-top: 2px solid #1a73e8;
padding-top: calc(0.75rem - 2px);
}
/* Delete button */
.btn-delete {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
font-size: 0.85rem;
padding: 2px 6px;
line-height: 1;
color: #555;
transition: all 0.15s;
}
.btn-delete:hover {
background: #fce8e6;
border-color: #d93025;
color: #d93025;
}
/* Agent-ready button */
.btn-agent {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
font-size: 0.85rem;
padding: 2px 6px;
line-height: 1;
color: #aaa;
transition: all 0.15s;
}
.btn-agent:hover {
background: #e8f0fe;
border-color: #1a73e8;
}
.btn-agent.active {
background: #e8f0fe;
border-color: #1a73e8;
color: #1a73e8;
}
/* Agent-ready task highlight */
.task-item.agent-ready {
border-left: 3px solid #1a73e8;
padding-left: 0.5rem;
}
/* Sort bar */
.sort-bar {
display: flex;
align-items: center;
gap: 0.5rem;
margin-bottom: 1rem;
padding-bottom: 0.75rem;
border-bottom: 1px solid #f0f0f0;
}
.sort-btn {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
padding: 4px 10px;
font-size: 0.8rem;
cursor: pointer;
color: #555;
transition: all 0.15s;
}
.sort-btn:hover {
border-color: #1a73e8;
color: #1a73e8;
}
.sort-btn.active {
background: #1a73e8;
border-color: #1a73e8;
color: white;
}
/* Due date badge */
.due-badge {
display: inline-block;
padding: 2px 6px;
border-radius: 4px;
font-size: 0.7rem;
background: #e8f5e9;
color: #2e7d32;
}
.due-badge.overdue {
background: #fce8e6;
color: #d93025;
font-weight: 600;
}
/* Mobile responsiveness */
@media (max-width: 600px) {
header {
padding: 1rem;
}
main {
padding: 1rem;
}
.top-nav {
flex-wrap: wrap;
}
.actions {
display: flex;
flex-wrap: wrap;
gap: 6px;
}
.sort-bar {
flex-wrap: wrap;
}
/* Task item: stack vertically on mobile */
.task-item {
flex-direction: column;
gap: 0.25rem;
}
/* Task content header: stack title and actions into two rows */
.task-content > div:first-child {
flex-direction: column !important;
align-items: flex-start !important;
gap: 0.5rem;
}
/* Action buttons: full-width row below the title */
.task-actions {
display: flex;
flex-wrap: wrap;
gap: 4px;
width: 100%;
padding-top: 0.4rem;
border-top: 1px solid #f0f0f0;
margin-top: 0.25rem;
}
.drag-handle {
display: none;
}
.move-arrows {
display: none;
}
#add-task-form {
flex-direction: column;
}
#add-task-form input,
#add-task-form select,
#add-task-form button {
width: 100% !important;
min-width: unset !important;
}
}
/* Origin badge */
.origin-badge {
display: inline-block;
padding: 2px 6px;
border-radius: 4px;
font-size: 0.7rem;
background: #f3e5f5;
color: #7b1fa2;
}
/* Move arrows */
.move-arrows {
display: flex;
flex-direction: column;
gap: 1px;
margin-right: 4px;
}
.btn-move-top, .btn-move-bottom {
background: none;
border: none;
cursor: pointer;
font-size: 0.75rem;
color: #aaa;
padding: 0;
line-height: 1;
transition: color 0.15s;
}
.btn-move-top:hover, .btn-move-bottom:hover {
color: #1a73e8;
}
@media (max-width: 600px) {
.move-arrows {
display: none;
}
}
/* Suggestion severity */
.suggestion-high {
background-color: #fce8e6;
border-left: 4px solid #d93025;
}
.suggestion-medium {
background-color: #fef7e0;
border-left: 4px solid #ea8600;
}
.suggestion-low {
background-color: #e8f5e9;
border-left: 4px solid #34a853;
}
/* Retro stats */
.retro-stats {
display: flex;
gap: 1.5rem;
flex-wrap: wrap;
}
.retro-stat {
text-align: center;
flex: 1;
min-width: 60px;
}
.retro-num {
font-size: 2rem;
font-weight: bold;
color: #1a73e8;
}
/* Origin link (clickable) */
.origin-link {
text-decoration: none;
cursor: pointer;
}
.origin-link:hover {
background: #e1bee7;
text-decoration: underline;
}
/* Purge (permanent delete) button */
.btn-purge {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
font-size: 0.75rem;
padding: 2px 5px;
line-height: 1;
color: #555;
transition: all 0.15s;
}
.btn-purge:hover {
background: #fce8e6;
border-color: #d93025;
color: #d93025;
}
/* Kanban Board */
.kanban-board {
display: flex;
gap: 1rem;
overflow-x: auto;
padding-bottom: 1rem;
}
.kanban-column {
min-width: 200px;
flex: 1;
background: #f5f5f5;
border-radius: 8px;
padding: 0.75rem;
}
.kanban-column h3 {
margin: 0 0 0.75rem 0;
font-size: 0.9rem;
color: #333;
}
.kanban-cards {
display: flex;
flex-direction: column;
gap: 0.5rem;
min-height: 50px;
}
.kanban-card {
background: white;
border: 1px solid #e0e0e0;
border-radius: 6px;
padding: 0.6rem;
font-size: 0.85rem;
}
.kanban-card-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
}
.kanban-repo {
display: inline-block;
background: #e8f0fe;
color: #1a73e8;
padding: 1px 6px;
border-radius: 3px;
font-size: 0.7rem;
margin-top: 4px;
}
.kanban-desc {
font-size: 0.75rem;
color: #666;
margin: 4px 0 0;
}
.kanban-actions {
display: flex;
gap: 4px;
margin-top: 6px;
}
.kanban-move {
background: none;
border: 1px solid #ddd;
border-radius: 3px;
cursor: pointer;
padding: 2px 8px;
font-size: 0.75rem;
color: #555;
}
.kanban-move:hover {
background: #e8f0fe;
border-color: #1a73e8;
color: #1a73e8;
}
.kanban-empty {
color: #999;
font-size: 0.8rem;
text-align: center;
padding: 1rem 0;
}
.btn-delete-project {
background: none;
border: none;
cursor: pointer;
color: #aaa;
font-size: 0.8rem;
}
.btn-delete-project:hover {
color: #d93025;
}
@media (max-width: 768px) {
.kanban-board {
flex-direction: column;
}
.kanban-column {
min-width: unset;
}
}
/* Email sender subtitle */
.task-sender {
font-size: 0.8rem;
color: #7b1fa2;
margin-top: 2px;
}
/* --- Calls View --- */
.call-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0.75rem 0;
border-bottom: 1px solid #f5f5f5;
}
.call-item:last-child {
border-bottom: none;
}
.call-item a[href^="tel:"] {
color: #1a73e8;
text-decoration: none;
}
.call-item a[href^="tel:"]:hover {
text-decoration: underline;
}
.btn-call {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
font-size: 0.85rem;
padding: 2px 6px;
line-height: 1;
color: #555;
transition: all 0.15s;
}
.btn-call:hover {
background: #e8f0fe;
border-color: #1a73e8;
color: #1a73e8;
}
.btn-call-done {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
font-size: 0.85rem;
padding: 4px 10px;
line-height: 1;
color: #555;
transition: all 0.15s;
}
.btn-call-done:hover {
background: #e6f4ea;
border-color: #34a853;
color: #34a853;
}
.btn-call-delete {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
font-size: 0.85rem;
padding: 4px 10px;
line-height: 1;
color: #555;
transition: all 0.15s;
}
.btn-call-delete:hover {
background: #fce8e6;
border-color: #d93025;
color: #d93025;
}
/* Priority badge: low (missing variant) */
.priority-badge.priority-4 {
background: #f5f5f5;
color: #757575;
}
/* Inline phone edit in calls view */
.call-phone-input {
border: 1px solid #ddd;
border-radius: 4px;
padding: 2px 6px;
font-size: 0.85rem;
width: 140px;
transition: border-color 0.15s;
}
.call-phone-input:focus {
outline: none;
border-color: #1a73e8;
}
/* Snooze button */
.btn-snooze {
background: none;
border: 1px solid #ddd;
border-radius: 4px;
cursor: pointer;
font-size: 0.85rem;
padding: 2px 6px;
line-height: 1;
color: #555;
transition: all 0.15s;
}
.btn-snooze:hover {
background: #fef7e0;
border-color: #ea8600;
color: #ea8600;
}
/* Label badges */
.label-badge {
display: inline-block;
padding: 1px 6px;
border-radius: 10px;
font-size: 0.7rem;
background: #e0f2f1;
color: #00695c;
margin-right: 3px;
}
/* --- Conflict Resolution --- */
/* Conflict badge on task items */
.conflict-badge {
display: inline-block;
cursor: pointer;
font-size: 0.9rem;
margin-left: 6px;
animation: conflict-pulse 2s infinite;
vertical-align: middle;
}
.conflict-badge:hover {
transform: scale(1.2);
}
@keyframes conflict-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
/* Task item with conflict highlight */
.task-item.has-conflict {
border-left: 3px solid #ea8600;
padding-left: 0.5rem;
}
/* Conflict notice on dashboard */
.conflict-notice {
background: #fef7e0;
border: 1px solid #ea8600;
border-left: 4px solid #ea8600;
border-radius: 6px;
padding: 0.75rem 1rem;
margin-bottom: 1rem;
font-size: 0.9rem;
color: #5d4e37;
}
.conflict-notice a {
color: #1a73e8;
text-decoration: underline;
cursor: pointer;
}
/* Conflict modal overlay */
.conflict-modal-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
display: flex;
justify-content: center;
align-items: center;
z-index: 10000;
}
.conflict-modal {
background: white;
border-radius: 12px;
padding: 1.5rem;
max-width: 700px;
width: 90%;
max-height: 80vh;
overflow-y: auto;
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
}
.conflict-modal h3 {
margin: 0 0 0.5rem 0;
font-size: 1.25rem;
}
.conflict-comparison {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 1rem;
margin: 1rem 0;
}
@media (max-width: 600px) {
.conflict-comparison {
grid-template-columns: 1fr;
}
}
.conflict-version {
border: 1px solid #e0e0e0;
border-radius: 8px;
padding: 1rem;
}
.conflict-version h4 {
margin: 0 0 0.75rem 0;
font-size: 0.95rem;
}
.conflict-local {
border-color: #1a73e8;
background: #f8fbff;
}
.conflict-remote {
border-color: #ea8600;
background: #fffdf5;
}
.conflict-field {
font-size: 0.85rem;
margin-bottom: 0.5rem;
word-break: break-word;
}
.conflict-field strong {
color: #333;
}
.conflict-actions {
display: flex;
gap: 0.75rem;
margin-top: 1rem;
justify-content: flex-end;
}
.conflict-btn-local {
background: #1a73e8 !important;
color: white !important;
border: none !important;
padding: 8px 16px !important;
border-radius: 4px !important;
cursor: pointer !important;
font-weight: 500 !important;
}
.conflict-btn-local:hover {
background: #1557b0 !important;
}
.conflict-btn-remote {
background: #ea8600 !important;
color: white !important;
border: none !important;
padding: 8px 16px !important;
border-radius: 4px !important;
cursor: pointer !important;
font-weight: 500 !important;
}
.conflict-btn-remote:hover {
background: #c77200 !important;
}
.conflict-btn-cancel {
background: #f5f5f5 !important;
color: #555 !important;
border: 1px solid #ddd !important;
padding: 8px 16px !important;
border-radius: 4px !important;
cursor: pointer !important;
}
.conflict-btn-cancel:hover {
background: #e8e8e8 !important;
}