:root { --sidebar: #152231; }
body { background: #f4f6f8; color: #1d2935; font-size: 14px; }
.login-page { margin: 10vh auto; max-width: 420px; }
html.embedded-frame .sidebar { display: none; }
html.embedded-frame .content { margin-left: 0; max-width: none; min-height: 0; padding: 1rem !important; width: 100%; }
html.embedded-frame body { background: #fff; }
html.embedded-frame .task-editor-back { display: none; }
html.embedded-frame .project-editor-back { display: none; }
html.embedded-frame .component-editor-back { display: none; }
.component-process-checklist { overflow: visible; }
.component-process-choice { align-items: flex-start; border-bottom: 1px solid #e4e9ed; display: flex; gap: .55rem; padding: .6rem 0; }
.component-process-choice .form-check-input { flex: 0 0 auto; margin-left: 0; margin-top: .2rem; }
.component-process-choice:last-child { border-bottom: 0; }
.component-process-choice small { color: #6c7a86; display: block; margin-top: .15rem; }
.sidebar { background: var(--sidebar); display: flex; flex-direction: column; height: 100vh; left: 0; overflow-y: auto; position: fixed; top: 0; transition: width .18s ease, padding .18s ease; width: 220px; }
.sidebar-top { align-items: center; display: flex; justify-content: space-between; }
.brand { color: #fff; font-size: 1.25rem; font-weight: 700; letter-spacing: .04em; }
.brand-mini { display: none; }
.sidebar-toggle { background: transparent; border: 1px solid rgb(191 208 221 / 38%); border-radius: .25rem; color: #bfd0dd; font-size: 1.35rem; height: 26px; line-height: 1; padding: 0; width: 26px; }
.sidebar-toggle:hover { background: #25465c; color: #fff; }
.sidebar .nav-link { align-items: center; color: #bfd0dd; border-radius: .25rem; display: flex; gap: .55rem; padding: .45rem .6rem; white-space: nowrap; }
.sidebar-icon { display: inline-block; flex: 0 0 1rem; font-size: 1rem; text-align: center; }
.sidebar-label { overflow: hidden; }
.sidebar .nav-link.active { background: #25465c; color: #fff; }
.sidebar .nav-link.disabled { color: #71879a; }
.content { margin-left: 220px; transition: margin-left .18s ease, width .18s ease; width: calc(100vw - 220px); max-width: 1800px; }
.sidebar-collapsed .sidebar { overflow-x: hidden; padding: .75rem !important; width: 64px; }
.sidebar-collapsed .content { margin-left: 64px; width: calc(100vw - 64px); }
.sidebar-collapsed .sidebar-top { justify-content: center; }
.sidebar-collapsed .brand, .sidebar-collapsed .sidebar-label { display: none; }
.sidebar-collapsed .sidebar-toggle { display: block; }
.sidebar-collapsed .sidebar .nav-link { justify-content: center; padding-left: .35rem; padding-right: .35rem; }
.sidebar-collapsed .sidebar-activity { padding-left: 0; padding-right: 0; text-align: center; }
.sidebar-collapsed .sidebar-activity span, .sidebar-collapsed .sidebar-activity small { display: none; }
.sidebar-collapsed .sidebar-activity strong { font-size: 1.1rem; margin: .35rem 0; }
.sidebar-activity { border-top: 1px solid rgb(191 208 221 / 25%); color: #bfd0dd; display: block; margin-top: 1.5rem; padding: .9rem .6rem .25rem; text-decoration: none; }
.sidebar-activity:hover { color: #fff; }
.sidebar-activity span, .sidebar-activity small { display: block; font-size: .72rem; }
.sidebar-activity strong { color: #fff; display: inline-block; font-size: 2rem; line-height: 1.1; margin: .15rem 0; }
.sidebar-week-task { border-top: 1px solid rgb(191 208 221 / 18%); margin-top: .45rem; padding-top: .45rem; }
.sidebar-week-task strong { font-size: 1.2rem; }
.brand .sidebar-version { color: #8fa6b7; display: block; font-size: .68rem; font-weight: 400; letter-spacing: 0; margin-top: .2rem; }
.sidebar-user { color: #fff; font-size: .85rem; }
.sidebar-user strong { color: #fff; display: block; font-weight: 600; }
.sidebar-user .btn-link { color: #9fc7e2; font-size: .76rem; text-decoration: none; }
.sidebar-user .btn-link:hover { color: #fff; text-decoration: underline; }
.sidebar-collapsed .sidebar-version { display: none; }
.activity-chart { min-height: 180px; position: relative; }
.activity-chart svg { height: 145px; overflow: visible; width: 100%; }
.activity-axis { stroke: #d9e0e5; stroke-width: 1; }
.activity-line { fill: none; stroke: #176b87; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3; vector-effect: non-scaling-stroke; }
.activity-chart-labels { display: grid; grid-template-columns: repeat(7, 1fr); margin-top: .25rem; text-align: center; }
.activity-chart-labels span { color: #617281; font-size: .75rem; }
.metric { background: #fff; border: 1px solid #e3e8ed; border-radius: .4rem; min-width: 145px; padding: .8rem 1rem; }
.metric span { color: #617281; display: block; font-size: .75rem; text-transform: uppercase; }
.metric strong { display: block; font-size: 1.55rem; line-height: 1.2; margin-top: .2rem; }
.metric-link { color: inherit; display: block; text-decoration: none; }
.metric-link:hover { border-color: #9fb2c1; box-shadow: 0 1px 3px rgb(29 41 53 / 10%); }
.metric.danger strong { color: #b42318; }
.compact-card { border-color: #e3e8ed; }
.table th { color: #617281; font-size: .75rem; text-transform: uppercase; white-space: nowrap; }
.edit-link { color: #176b87; text-decoration: none; }
.edit-link:hover { color: #0f5269; text-decoration: underline; }
.edit-page { max-width: 1050px; }
.form-label { color: #536575; font-size: .78rem; font-weight: 600; margin-bottom: .25rem; }
body .form-control, body .form-select { font-size: .82rem; }
body .form-control-sm, body .form-select-sm { font-size: .76rem; }
.process-row { cursor: grab; transition: background-color .12s ease, opacity .12s ease; }
.process-row:active { cursor: grabbing; }
.process-row.dragging { background: #e9f3f7; opacity: .55; }
.component-row { cursor: grab; transition: background-color .12s ease, opacity .12s ease; }
.component-row:active { cursor: grabbing; }
.component-row.dragging { background: #e9f3f7; opacity: .55; }
.drag-handle { color: #8293a1; display: inline-block; font-weight: 700; letter-spacing: -2px; margin-right: .45rem; user-select: none; }
.duration-unit { flex: 0 0 92px !important; }
.component-task-button { font-size: .72rem; line-height: 1.2; padding: .2rem .42rem; white-space: nowrap; }
.process-task-button { margin-left: .45rem; }
#project-task-form { display: none !important; }
.process-dates { color: #667887; font-size: .75rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.inline-timeline-editor { align-items: center; display: inline-flex; gap: .18rem; white-space: nowrap; }
.quick-timeline-duration, .quick-timeline-date { background: #f4f6f8; border: 1px solid #aebbc5; border-radius: .25rem; color: #263744; font-size: .73rem; height: 24px; padding: .08rem .25rem; }
.quick-timeline-duration { appearance: textfield; font-weight: 700; text-align: right; width: 38px; }
.quick-timeline-duration::-webkit-inner-spin-button, .quick-timeline-duration::-webkit-outer-spin-button { appearance: none; margin: 0; }
.quick-timeline-date { font-variant-numeric: tabular-nums; width: 86px; }
.quick-timeline-date-picker { height: 1px !important; opacity: 0; padding: 0 !important; pointer-events: none; position: absolute; width: 1px !important; }
.quick-timeline-duration:hover, .quick-timeline-date:hover { background: #e9eef2; border-color: #8797a4; }
.quick-timeline-duration:focus, .quick-timeline-date:focus { border-color: #86b7fe; outline: 0; }
.quick-timeline-duration:disabled, .quick-timeline-date:disabled { background: #edf0f2; color: #93a1ab; cursor: not-allowed; }
.gantt-bulk-toggle { color: #667887; cursor: pointer; font-size: .72rem; white-space: nowrap; }
.gantt-bulk-toggle .form-check-input { margin-right: .18rem; }
.task-status-filters { display: flex; flex-wrap: wrap; gap: .2rem; justify-content: flex-end; }
.task-status-filter-button { background: #eef1f4; border: 1px solid #c9d2db; border-radius: .25rem; color: #263744; font-size: .66rem; line-height: 1.1; padding: .18rem .38rem; white-space: nowrap; }
.task-status-filter-button:hover { background: #e1e7ec; }
.task-status-filter-button.active { background: #0d6efd; border-color: #0d6efd; color: #fff; }
.task-editor-modal { align-items: center; background: rgb(21 34 49 / 42%); display: flex; inset: 0; justify-content: center; padding: 2rem; position: fixed; z-index: 1200; }
.task-editor-modal.d-none { display: none; }
.task-editor-dialog { background: #fff; border-radius: .45rem; box-shadow: 0 .7rem 2rem rgb(0 0 0 / 30%); display: flex; flex-direction: column; height: 96vh; max-width: 1040px; overflow: hidden; width: min(90vw, 1040px); }
.task-editor-modal-header { align-items: center; border-bottom: 1px solid #d8e0e6; display: flex; justify-content: space-between; padding: .55rem .8rem; }
.task-editor-modal-header button { background: transparent; border: 0; color: #526270; font-size: 1.5rem; line-height: 1; padding: 0 .2rem; }
.task-editor-modal iframe { border: 0; flex: 1; min-height: 0; width: 100%; }
.component-editor-modal .task-editor-dialog { height: min(86vh, 820px); max-width: 1200px; width: min(94vw, 1200px); }
.task-context { color: #4e6170; font-size: .82rem; white-space: nowrap; }
.task-status { font-weight: 600; }
.task-status-follow-up { color: #d97706 !important; }
.task-status-action { color: #c62828 !important; }
.task-status-completed { color: #198754 !important; }
.task-status-waiting { color: #0d6efd !important; }
.task-status-cancelled { color: #6c757d !important; }
.task-status-default { color: #4e6170; }
.task-status-select { font-weight: 600; }
.task-status-select option[value="Action"] { color: #c62828; }
.task-status-select option[value="Follow-up"] { color: #d97706; }
.task-status-select option[value="Waiting"] { color: #0d6efd; }
.task-status-select option[value="Completed"] { color: #198754; }
.task-status-select option[value="Cancelled"] { color: #6c757d; }
.task-status-filter { font-weight: 600; }
.task-status-filter.active { background-color: #fff; }
.sort-button { color: inherit; display: inline-block; font-size: .8rem; line-height: 1; margin-right: .18rem; text-decoration: none; }
.sort-button:hover { color: #176b87; }
.filter-row { align-items: center; display: flex; gap: .8rem; min-height: 34px; }
.filter-label { color: #536575; flex: 0 0 110px; font-size: .78rem; font-weight: 600; }
.filter-options { display: flex; flex-wrap: wrap; gap: .35rem; }
.filter-chip { cursor: pointer; margin: 0; }
.filter-chip input { position: absolute; opacity: 0; pointer-events: none; }
.filter-chip span { background: #e9ecef; border-radius: .3rem; color: #212529; display: block; font-size: .8rem; line-height: 1.2; padding: .32rem .6rem; transition: background-color .12s ease, color .12s ease; white-space: nowrap; }
.filter-chip:hover span { background: #dce2e7; }
.filter-chip input:checked + span { background: #0d6efd; color: #fff; }
.project-pin-col { width: 44px; }
.pin-button { background: none; border: 0; color: #8b9aa6; font-size: 1.15rem; line-height: 1; padding: 0 .15rem; }
.pin-button:hover { color: #d97706; }
.project-pinned .pin-button { color: #d97706; }
.project-pinned td { background: #fffaf0; }
.dashboard-task-table { table-layout: fixed; width: 100%; }
.dashboard-project-col { width: 18%; }
.dashboard-task-col { width: 29%; }
.dashboard-status-col { width: 14%; }
.dashboard-priority-col { width: 10%; }
.dashboard-finish-col { width: 11%; }
.dashboard-progress-col { width: 18%; }
.dashboard-task-table td { overflow: hidden; }
.dashboard-task-table thead th { background: #e8eef3; border-bottom: 1px solid #ced8e0; color: #405766; }
.dashboard-sort-button { background: transparent; border: 0; color: inherit; font: inherit; font-weight: 700; padding: 0; text-align: left; white-space: nowrap; }
.dashboard-sort-button:hover, .dashboard-sort-button:focus-visible { color: #0d6efd; outline: 0; }
.dashboard-sort-button span { color: #778895; font-size: .72em; margin-left: .1rem; }
.dashboard-progress { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dashboard-project-link { font-weight: 700; }
.dashboard-layout { display: flex; flex-direction: column; height: calc(100vh - 3rem); min-height: 0; }
.dashboard-summary { flex: 0 0 auto; }
.dashboard-filters { background: #fff; border: 1px solid #e3e8ed; border-radius: .35rem; padding: .35rem .55rem; }
.dashboard-filter-row { align-items: center; display: flex; gap: .45rem; min-height: 24px; }
.dashboard-filter-row > span { color: #536575; flex: 0 0 46px; font-size: .7rem; font-weight: 700; text-transform: uppercase; }
.filter-chip-compact span { font-size: .68rem; padding: .16rem .38rem; }
.filter-all-button { background: #e9ecef; border: 0; border-radius: .3rem; color: #212529; cursor: pointer; font-size: .68rem; line-height: 1.2; padding: .16rem .38rem; }
.filter-all-button:hover { background: #dce2e7; }
.filter-all-button.active { background: #0d6efd; color: #fff; }
.export-filter-select { max-width: 190px; }
.dashboard-metrics { display: flex; gap: .4rem; }
.metric-compact { flex: 0 1 132px; min-width: 0; padding: .35rem .55rem; }
.metric-compact span { font-size: .64rem; }
.metric-compact strong { font-size: 1.05rem; margin-top: 0; }
.dashboard-quadrants { display: grid; flex: 1 1 auto; gap: .65rem; grid-template-columns: repeat(2, minmax(0, 1fr)); min-height: 0; overflow-y: auto; padding: 0 .25rem .25rem 0; }
.dashboard-quadrant { min-height: 220px; }
.dashboard-quadrant-pending .card-header { border-left: 3px solid #d97706; }
.dashboard-task-table tr[draggable="true"] { cursor: grab; }
.dashboard-dragging { opacity: .45; }
.dashboard-drop-target { outline: 2px solid #0d6efd; outline-offset: -2px; background: #eef5ff; }
.dashboard-quadrant .card-header { font-size: .8rem; padding: .42rem .6rem; }
.dashboard-quadrant .card-header .small { font-size: .65rem; }
.dashboard-quadrant-immediate .card-header { border-left: 3px solid #c62828; }
.dashboard-quadrant-planned .card-header { border-left: 3px solid #176b87; }
.dashboard-quadrant-routine .card-header { border-left: 3px solid #d97706; }
.dashboard-quadrant-risk .card-header { border-left: 3px solid #7c3aed; }
@media (max-width: 1100px) { .dashboard-quadrants { grid-template-columns: 1fr; } .dashboard-layout { height: auto; } }
.gantt-chart { min-width: 920px; }
.gantt-axis { display: grid; grid-template-columns: 225px minmax(520px, 1fr); gap: .75rem; color: #667887; font-size: .72rem; }
.gantt-calendar { display: grid; grid-template-columns: repeat(var(--gantt-weeks), minmax(0, 1fr)); }
.gantt-month { border-left: 1px solid #d9e0e5; font-weight: 600; padding: 0 .3rem .2rem; }
.gantt-week { border-left: 1px solid #d9e0e5; min-height: 56px; padding: .1rem .2rem; position: relative; text-align: center; }
.gantt-week-cw { display: block; font-size: .66rem; font-weight: 600; }
.gantt-week-date { background: #fff; font-size: .65rem; left: 0; padding: 0 .08rem; position: absolute; top: 35px; transform: translateX(-50%) rotate(-90deg); transform-origin: center; white-space: nowrap; z-index: 2; }
.gantt-row { display: grid; grid-template-columns: 225px minmax(520px, 1fr); gap: .75rem; align-items: center; min-height: 30px; border-top: 1px solid #edf0f2; }
.gantt-label { align-items: center; display: grid; font-size: .78rem; grid-template-columns: minmax(0, 1fr) auto; min-width: 0; }
.gantt-title { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gantt-label-process .gantt-title { color: #123b66; font-weight: 700; }
.gantt-label-task .gantt-title { color: #6c757d; font-weight: 400; }
.gantt-track { position: relative; height: 16px; background-color: #f3f5f7; background-image: linear-gradient(90deg, transparent calc(100% - 1px), #d9e0e5 calc(100% - 1px)); background-size: calc(100% / var(--gantt-weeks)) 100%; border-radius: 3px; }
.gantt-bar { position: absolute; top: 2px; height: 12px; min-width: 5px; border-radius: 3px; background: #6c757d; z-index: 1; }
.gantt-bar[data-start-locked="true"][data-finish-locked="true"] { cursor: not-allowed; opacity: .85; }
.gantt-bar:not([data-start-locked="true"][data-finish-locked="true"]) { cursor: grab; }
.gantt-bar.gantt-dragging { cursor: grabbing; opacity: .75; }
.gantt-resize-handle { bottom: 0; display: block; position: absolute; top: 0; width: 8px; z-index: 3; }
.gantt-resize-start { cursor: ew-resize; left: -2px; }
.gantt-resize-finish { cursor: ew-resize; right: -2px; }
.gantt-bar[data-start-locked="true"] .gantt-resize-start, .gantt-bar[data-finish-locked="true"] .gantt-resize-finish { cursor: not-allowed; opacity: .25; }
.gantt-link-marker { background: #8ec5ff; bottom: -2px; display: block; position: absolute; top: -2px; width: 2px; z-index: 4; }
.gantt-link-marker-start { left: 0; }
.gantt-link-marker-finish { right: 0; }
.gantt-link-choice { background: #39a96b; border: 1px solid #fff; border-radius: 2px; bottom: -4px; cursor: pointer; display: none; height: 9px; padding: 0; position: absolute; top: -4px; width: 9px; z-index: 6; }
.gantt-link-choice-start { left: -4px; }
.gantt-link-choice-finish { right: -4px; }
.gantt-bar.gantt-link-target .gantt-link-choice { display: block; }
.gantt-bar.gantt-link-target .gantt-resize-handle, .gantt-bar.gantt-link-target .gantt-bar-date { pointer-events: none; }
.gantt-bar.gantt-link-source { box-shadow: 0 0 0 2px #39a96b; }
.gantt-link-menu { background: #fff; border: 1px solid #b9c5ce; border-radius: .35rem; box-shadow: 0 .3rem .8rem rgb(29 41 53 / 20%); display: flex; gap: .3rem; padding: .35rem; position: fixed; z-index: 1100; }
.gantt-link-menu.d-none { display: none; }
.gantt-link-menu button { align-items: center; background: #f4f6f8; border: 1px solid #aebbc5; border-radius: .25rem; color: #263744; display: inline-flex; height: 28px; justify-content: center; padding: 0; width: 28px; }
.gantt-link-menu button svg { fill: none; height: 16px; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.5; width: 16px; }
.gantt-link-menu button:hover { background: #e4eaee; }
.gantt-duration-confirm { background: #fff; border: 1px solid #b9c5ce; border-radius: .4rem; box-shadow: 0 .4rem 1rem rgb(29 41 53 / 24%); left: 50%; max-width: 340px; padding: .8rem; position: fixed; text-align: center; top: 50%; transform: translate(-50%, -50%); z-index: 1110; }
.gantt-duration-confirm.d-none { display: none; }
.gantt-duration-confirm p { color: #263744; font-size: .85rem; margin: 0 0 .65rem; }
.gantt-duration-confirm strong { white-space: nowrap; }
.gantt-duration-confirm .btn + .btn { margin-left: .4rem; }
.gantt-bar-date { font-size: .63rem; line-height: 12px; white-space: nowrap; position: absolute; }
.gantt-date-inside { color: #fff; left: .25rem; }
.gantt-date-outside { color: #526270; left: calc(100% + .3rem); }
.gantt-today-marker { background: #dc3545; height: 16px; left: 0; position: absolute; top: 0; width: 1px; z-index: 0; }
.gantt-bar.gantt-process { background: #123b66; height: 16px; top: 0; }
.gantt-bar.gantt-process .gantt-bar-date { line-height: 16px; }
.gantt-bar.task-status-follow-up { background: #d97706; }
.gantt-bar.task-status-action { background: #c62828; }
.gantt-bar.task-status-completed { background: #198754; }
.gantt-bar.task-status-waiting { background: #0d6efd; }
.gantt-bar.task-status-cancelled { background: #6c757d; }
.gantt-bar:not(.gantt-process) { background: #6ea8fe; }
.context-divider { color: #a2afb8; margin: 0 .35rem; }
.task-table td { vertical-align: middle; }
.task-plan { min-width: 370px; }
.task-plan-fields { align-items: center; display: flex; gap: .3rem; }
.task-plan-fields input[type="date"] { flex: 0 0 124px; min-width: 124px; }
.task-plan-fields .input-group { flex: 0 0 132px; min-width: 132px; }
.task-plan-fields .duration-unit { background-position: right .35rem center; flex: 0 0 69px !important; min-width: 69px; padding-left: .3rem; padding-right: 1.4rem; }
.task-plan [data-duration-hint] { display: none; }
.gantt-visibility-form { display: inline-block; line-height: 1; }
.timeline-duration-editor { align-items: center; display: inline-flex; gap: .15rem; white-space: nowrap; }
.timeline-duration-editor input { appearance: textfield; border: 1px solid #ced4da; border-radius: .25rem; font-size: .75rem; font-weight: 700; padding: .1rem .2rem; text-align: right; width: 43px; }
.timeline-duration-editor input::-webkit-inner-spin-button, .timeline-duration-editor input::-webkit-outer-spin-button { appearance: none; margin: 0; }
.timeline-duration-editor input:focus { border-color: #86b7fe; outline: 0; }
.timeline-duration-editor span { color: #617281; font-size: .72rem; font-weight: 400; }
.gantt-duration-editor { background: #f4f6f8; border: 1px solid #aebbc5; border-radius: .25rem; flex: 0 0 auto; margin-left: .2rem; margin-right: .2rem; padding: .08rem .24rem; }
.gantt-duration-editor:hover { background: #e9eef2; border-color: #8797a4; }
.gantt-duration-editor input { background: transparent; border: 0; padding: 0; width: 28px; }
.task-collapse-button { font-size: 1rem; line-height: 1; min-width: 28px; padding: .15rem .4rem; }
.project-task-table { table-layout: fixed; width: 100%; }
/* Keep all timeline controls visible. Only task name and current progress absorb viewport changes. */
.project-task-context-col { width: 11.5rem; }
.project-task-name-col, .project-task-progress-col { width: auto; }
.project-task-status-col { width: 7.6rem; }
.project-task-priority-col { width: 4.4rem; }
.project-task-timeline-col { width: 12.2rem; }
.project-task-gantt-col { width: 3.1rem; }
.project-task-duration-col { width: 4rem; }
.project-task-start-col, .project-task-finish-col { width: 5.8rem; }
.project-task-table td { overflow: visible; }
.project-task-table th, .project-task-table td { padding-left: .3rem; padding-right: .3rem; }
.project-task-table td.task-context, .project-task-table td:nth-child(2) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.project-task-table .component-group-title { color: inherit; text-align: left !important; }
.component-group-badge { background: #0d6efd; border-radius: .3rem; color: #fff !important; display: inline-block; line-height: 1.25; padding: .1rem .4rem; }
.project-task-progress { overflow: hidden !important; text-overflow: ellipsis; white-space: nowrap; }
.project-task-meta { font-size: .78rem; padding-left: .2rem !important; padding-right: .2rem !important; text-align: center; white-space: nowrap; }
.project-task-table td.project-task-meta.inline-timeline-editor { display: table-cell; overflow: visible; vertical-align: middle; }
.project-task-table .task-timeline-compact { text-align: center; white-space: nowrap; }
.project-task-table .task-timeline-compact .quick-timeline-date { box-sizing: border-box; flex: 0 0 68px; font-size: .62rem; max-width: none; min-width: 68px; padding-left: .1rem; padding-right: .1rem; width: 68px; }
.task-timeline-arrow { color: #667887; display: inline-block; margin: 0 .12rem; }
.project-task-table th:nth-child(6) { text-align: center; }
.project-task-table th:last-child, .project-task-table td:last-child { padding-left: .15rem; padding-right: .15rem; text-align: center; }
.progress-history-text { white-space: pre-line; }
.content:has(#quickCreateProjectModal) .table-responsive { overflow: visible; }
.content:has(#quickCreateProjectModal) .dropdown-menu { z-index: 1080; }
.process-row-actions { position: relative; z-index: 4; }
.process-row-actions .dropdown-menu { z-index: 1090; }
.process-row.process-actions-open { position: relative; z-index: 20; }
.template-step summary { cursor: pointer; list-style: none; padding: .7rem .9rem; }
.template-step summary::-webkit-details-marker { display: none; }
.template-step summary::before { color: #64748b; content: '›'; display: inline-block; margin-right: .35rem; transition: transform .15s ease; }
.template-step[open] summary::before { transform: rotate(90deg); }
.template-gantt { min-width: 0; }
.template-gantt-row { align-items: center; display: grid; gap: .75rem; grid-template-columns: minmax(130px, 35%) 1fr; margin-bottom: .55rem; }
.template-gantt-label { font-size: .82rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.template-gantt-track { background: repeating-linear-gradient(90deg, #f1f4f6, #f1f4f6 calc(12.5% - 1px), #dce3e8 calc(12.5% - 1px), #dce3e8 12.5%); border-radius: .2rem; height: 1.35rem; position: relative; }
.template-gantt-bar { background: #123b66; border-radius: .2rem; color: #fff; font-size: .68rem; height: 1.1rem; line-height: 1.1rem; overflow: hidden; padding: 0 .25rem; position: absolute; text-align: center; top: .12rem; white-space: nowrap; }
@media (max-width: 640px) { .template-gantt-row { grid-template-columns: 1fr; gap: .15rem; } }
