/* Kanban board theme aligned with public/css/site.css */ html, body.kanban-page { height: 100%; } body.kanban-page { margin: 0; overflow: hidden; background: radial-gradient(75rem 35rem at -12% -18%, #dae8ff 0%, transparent 44%), radial-gradient(68rem 32rem at 115% -16%, #d8f3ff 0%, transparent 40%), linear-gradient(180deg, #eef4ff 0%, #f4f8ff 58%, #f3f7ff 100%); } /* Top bar */ body.kanban-page .navbar { position: sticky; top: 0; z-index: 1000; border-bottom: 1px solid rgba(255, 255, 255, 0.18); backdrop-filter: blur(9px); background: linear-gradient(120deg, #102241 0%, #173a72 56%, #1c4c90 100%); box-shadow: 0 8px 24px rgba(8, 20, 48, 0.26); } body.kanban-page .navbar-brand { color: #f4f8ff !important; font-family: "Fraunces", Georgia, serif; letter-spacing: -0.01em; } .board-header-main { min-width: 0; } .board-header-actions { flex-shrink: 0; } .kanban-board-title { display: block; min-width: 0; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: clamp(1rem, 0.6vw + 0.95rem, 1.28rem); } body.kanban-page .navbar .btn-outline-light, body.kanban-page .navbar .btn-outline-secondary { border-color: rgba(213, 230, 255, 0.55) !important; color: #eef5ff !important; background: rgba(255, 255, 255, 0.06); } body.kanban-page .navbar .btn-outline-light:hover, body.kanban-page .navbar .btn-outline-secondary:hover { background: rgba(255, 255, 255, 0.16); border-color: rgba(234, 243, 255, 0.85) !important; } /* Board wrapper */ .kanban-wrapper { width: 100%; margin: 0 auto; height: calc(100vh - 65px); overflow: auto; padding: 0.9rem 1rem 1.1rem; -webkit-overflow-scrolling: touch; scroll-behavior: smooth; touch-action: pan-x pan-y; } .kanban-grid { display: grid; min-width: max(75vw, max-content); border: 1px solid var(--line, #d9e3f5); border-radius: 14px; background: rgba(255, 255, 255, 0.72); box-shadow: 0 12px 34px rgba(22, 48, 92, 0.12); overflow: hidden; } /* Sticky corner and headers */ .kanban-corner { position: sticky; top: 0; left: 0; z-index: 40; min-width: 240px; min-height: 56px; background: linear-gradient(135deg, #173864 0%, #1e4d8f 100%); border-right: 1px solid rgba(255, 255, 255, 0.15); border-bottom: 1px solid rgba(255, 255, 255, 0.15); } .kanban-col-header { position: sticky; top: 0; z-index: 30; min-width: 230px; padding: 0.75rem 0.88rem; color: #eff5ff; font-size: clamp(0.68rem, 0.16vw + 0.65rem, 0.78rem); font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; white-space: normal; line-height: 1.22; word-break: break-word; overflow-wrap: anywhere; background: linear-gradient(120deg, #173864 0%, #1e4d8f 100%); border-left: 1px solid rgba(255, 255, 255, 0.16); } .kanban-lane-header { position: sticky; left: 0; z-index: 20; min-width: 240px; padding: 0.85rem 0.82rem; font-size: clamp(0.7rem, 0.14vw + 0.66rem, 0.78rem); font-weight: 700; color: #2a3a58; background: linear-gradient(180deg, #f6faff 0%, #edf3ff 100%); border-top: 1px solid #d7e1f5; border-right: 1px solid #d4deef; } .kanban-lane-header .lane-label { display: inline-block; max-width: 100%; white-space: normal; line-height: 1.2; word-break: break-word; overflow-wrap: anywhere; } /* Cells */ .kanban-cell { min-width: 230px; min-height: 132px; padding: 0.56rem; border-top: 1px solid #dce5f4; border-left: 1px solid #dce5f4; display: flex; flex-direction: column; gap: 0.45rem; vertical-align: top; background: linear-gradient(180deg, rgba(255, 255, 255, 0.88) 0%, rgba(244, 248, 255, 0.93) 100%); } .kanban-cell.drag-over { background: linear-gradient(180deg, #e9f2ff 0%, #deecff 100%); box-shadow: inset 0 0 0 2px rgba(19, 99, 223, 0.24); } /* Cards */ .kanban-card { border: 1px solid #d5e1f6; border-radius: 12px; background: #ffffff; padding: 0.56rem 0.62rem; cursor: pointer; user-select: none; box-shadow: 0 4px 12px rgba(16, 44, 90, 0.08); transition: transform 120ms ease, box-shadow 140ms ease, border-color 120ms ease; touch-action: manipulation; } .kanban-card:hover { transform: translateY(-1px); border-color: #8eb0ea; box-shadow: 0 10px 22px rgba(16, 44, 90, 0.14); } .kanban-card.sortable-ghost { opacity: 0.38; } .kanban-card.sortable-chosen { border-color: #4d87e2; box-shadow: 0 14px 30px rgba(17, 46, 94, 0.22); } .card-job-number { display: inline-block; margin-bottom: 0.36rem; padding: 0.08rem 0.42rem; border-radius: 999px; font-size: 0.66rem; font-weight: 800; letter-spacing: 0.07em; text-transform: uppercase; color: #0e4fae; background: #e7f0ff; } .card-job-name { color: #1f2b43; font-size: 0.86rem; line-height: 1.32; } /* Settings panel */ .kanban-settings-overlay { position: fixed; inset: 0; z-index: 1040; background: rgba(13, 25, 48, 0.42); backdrop-filter: blur(2px); } .kanban-settings-panel { position: fixed; top: 0; right: 0; width: min(420px, 94vw); max-width: 100vw; height: 100%; z-index: 1050; background: linear-gradient(180deg, #f7fbff 0%, #f1f6ff 100%); border-left: 1px solid #d8e2f2; box-shadow: -8px 0 28px rgba(19, 40, 81, 0.2); display: flex; flex-direction: column; overflow: hidden; transform: translateX(104%); transition: transform 180ms cubic-bezier(0.2, 0.7, 0.2, 1); will-change: transform; } .kanban-settings-panel.open { transform: translateX(0); } .settings-header { background: rgba(255, 255, 255, 0.7); border-bottom-color: #dce6f5 !important; } .settings-header h6 { letter-spacing: -0.01em; } .settings-body { flex: 1; overflow-y: auto; } .settings-body .list-group-item { border-color: #d7e2f4; border-radius: 10px !important; margin-bottom: 0.45rem; background: #ffffff; box-shadow: 0 3px 9px rgba(25, 45, 84, 0.05); } .settings-sortable .drag-handle { color: #8fa1bf !important; } .settings-sortable .drag-handle:hover { color: var(--brand, #1363df) !important; } .inline-rename { height: auto; font-size: 0.84rem; padding: 0.23rem 0.45rem; } /* Modal polish */ #cardModal .modal-content { border: 1px solid #d7e2f5; border-radius: 14px; box-shadow: 0 22px 48px rgba(18, 43, 83, 0.22); } #cardModal .modal-header { border-bottom-color: #dfe8f7; background: #f7fbff; } #cardModal .modal-footer { border-top-color: #dfe8f7; background: #fbfdff; } /* Scrollbars */ .kanban-wrapper::-webkit-scrollbar, .settings-body::-webkit-scrollbar { width: 10px; height: 10px; } .kanban-wrapper::-webkit-scrollbar-track, .settings-body::-webkit-scrollbar-track { background: #eaf0fb; } .kanban-wrapper::-webkit-scrollbar-thumb, .settings-body::-webkit-scrollbar-thumb { background: #b8c9e6; border-radius: 999px; border: 2px solid #eaf0fb; } .kanban-wrapper::-webkit-scrollbar-thumb:hover, .settings-body::-webkit-scrollbar-thumb:hover { background: #97afd8; } /* Small screens */ @media (max-width: 900px) { .kanban-wrapper { padding: 0.7rem; height: calc(100vh - 62px); } .kanban-corner, .kanban-lane-header { min-width: 190px; } .kanban-col-header, .kanban-cell { min-width: 206px; } .kanban-board-title { font-size: clamp(0.92rem, 2.8vw, 1.1rem); } .board-header-actions { gap: 0.35rem !important; } .board-header-actions .btn { padding-left: 0.48rem; padding-right: 0.48rem; } } @media (max-width: 640px) { .kanban-settings-panel { width: 100vw; border-left: 0; box-shadow: none; } .settings-body { padding-bottom: 1.25rem; } }