:root {
  --c8-bg: #f5f7fb;
  --c8-panel: #ffffff;
  --c8-text: #172033;
  --c8-muted: #667085;
  --c8-border: #e5e7ef;
  --c8-primary: var(--oper8-primary, #3157d5);
  --c8-primary-dark: color-mix(in srgb, var(--c8-primary) 78%, #000 22%);
  --c8-soft: #eef2ff;
  --c8-radius: 18px;
  --c8-shadow: 0 18px 45px rgba(31, 41, 55, .08);
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--c8-bg); color: var(--c8-text); font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; }
a { text-decoration: none; }
.app-icon { width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; object-fit: contain; flex: 0 0 auto; font-size: 20px; line-height: 1; color: currentColor; }
.brand-logo { object-fit: contain; }
.brand .brand-logo-sidebar { width: 30px; height: 30px; border-radius: 8px; }
.auth-brand-block .brand-logo-login { width: 74px; height: 74px; margin-bottom: 12px; }
.sidebar .brand img.brand-logo { filter: none; opacity: 1; }
.icon-xl { width: 52px; height: 52px; padding: 12px; border-radius: 5px; background: var(--c8-soft); }
.app-shell { display: grid; grid-template-columns: 280px minmax(0, 1fr); min-height: 100vh; }
.sidebar { position: sticky; top: 0; height: 100vh; overflow-y: auto; background: #12182a; color: #fff; padding: 24px 18px; z-index: 20; }
.brand { display: flex; gap: 12px; align-items: center; color: #fff; font-weight: 800; font-size: 1.05rem; line-height: 1.2; margin-bottom: 28px; }
.brand em { margin-left: auto; font-style: normal; font-size: .68rem; padding: 3px 7px; border-radius: 5px; background: rgba(255,255,255,.12); color: rgba(255,255,255,.72); }
.brand:hover { color: #fff; }
.sidebar .nav { gap: 6px; }
.sidebar .nav-link { display: flex; gap: 12px; align-items: center; color: rgba(255,255,255,.72); border-radius: 5px; padding: 12px 14px; font-weight: 650; }
.sidebar .nav-link:hover, .sidebar .nav-link.active { color: #fff; background: rgba(255,255,255,.12); }
.sidebar-shortcuts { margin-top: 18px; padding-top: 16px; border-top: 1px solid rgba(255,255,255,.12); }
.sidebar-shortcuts-title { padding: 0 14px 8px; color: rgba(255,255,255,.46); font-size: .68rem; font-weight: 850; letter-spacing: .12em; text-transform: uppercase; }
.sidebar img.app-icon { filter: invert(1); opacity: .9; }
.main-panel { min-width: 0; }
.topbar { position: sticky; top: 0; z-index: 10; background: rgba(245,247,251,.9); backdrop-filter: blur(14px); padding: 22px 32px; display: flex; justify-content: space-between; gap: 20px; align-items: center; border-bottom: 1px solid rgba(229,231,239,.7); transition: padding .18s ease, box-shadow .18s ease, background-color .18s ease; }
.topbar h1 { margin: 0; font-size: clamp(1.25rem, 2vw, 1.8rem); font-weight: 800; transition: font-size .18s ease; }
body.topbar-shrunk .topbar { padding-top: 10px; padding-bottom: 10px; background: rgba(245,247,251,.96); box-shadow: 0 10px 28px rgba(15,23,42,.08); }
body.topbar-shrunk .topbar h1 { font-size: clamp(1.05rem, 1.45vw, 1.38rem); }
body.topbar-shrunk .topbar-context { display: none; }
.user-chip { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.content-wrap { padding: 28px 32px 56px; }
.card-soft, .auth-card, .integration-card { background: var(--c8-panel); border: 1px solid var(--c8-border); box-shadow: var(--c8-shadow); border-radius: var(--c8-radius); padding: 24px; }
.sticky-card { position: sticky; top: 110px; }
.card-soft h2, .integration-card h2 { font-size: 1.15rem; font-weight: 800; margin-bottom: 14px; }
.section-heading { display: flex; justify-content: space-between; gap: 16px; align-items: center; margin-bottom: 16px; }
.section-heading h2 { margin: 0; }
.section-heading span, .section-heading a { color: var(--c8-muted); font-weight: 650; }
.hero-panel, .project-header, .public-hero { display: flex; justify-content: space-between; align-items: center; gap: 24px; background: linear-gradient(135deg, var(--c8-primary), #181f3b); color: #fff; border-radius: 5px; padding: 30px; box-shadow: var(--c8-shadow); margin-bottom: 24px; }
.hero-panel h2, .project-header h2, .public-hero h1 { font-weight: 850; margin: 0 0 8px; }
.hero-panel p, .project-header p, .public-hero p { color: rgba(255,255,255,.78); margin-bottom: 0; }
.eyebrow { text-transform: uppercase; letter-spacing: .12em; font-size: .75rem; font-weight: 800; color: var(--c8-muted); margin-bottom: 8px; }
.hero-panel .eyebrow, .project-header .eyebrow, .public-hero .eyebrow { color: rgba(255,255,255,.62); }
.project-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; }
.stat-card { display: flex; gap: 16px; align-items: center; padding: 20px; border-radius: var(--c8-radius); background: #fff; border: 1px solid var(--c8-border); box-shadow: 0 12px 30px rgba(31, 41, 55, .06); min-height: 112px; }
.stat-card .app-icon { width: 38px; height: 38px; padding: 9px; border-radius: 5px; background: var(--c8-soft); }
.stat-card span { display: block; color: var(--c8-muted); font-weight: 700; }
.stat-card strong { display: block; font-size: 2rem; font-weight: 850; line-height: 1; }
.theme-danger .app-icon { background: #fee2e2; }
.theme-warning .app-icon { background: #fef3c7; }
.theme-info .app-icon { background: #dbeafe; }
.task-row, .mini-project, .public-task { display: flex; justify-content: space-between; gap: 16px; align-items: center; padding: 14px; border: 1px solid var(--c8-border); border-radius: 5px; background: #fff; color: var(--c8-text); }
.task-row:hover { border-color: var(--c8-primary); }
.task-row > div:first-child { display: grid; grid-template-columns: 22px 1fr; column-gap: 10px; align-items: center; }
.task-row small, .mini-project small, .public-task small, .team-chip small { display: block; color: var(--c8-muted); }
.strong-link { font-weight: 800; color: var(--c8-primary-dark); }
.date-pill { display: inline-flex; align-items: center; padding: 4px 9px; border-radius: 5px; background: #f2f4f7; color: #475467; font-size: .8rem; font-weight: 700; margin-left: 6px; }
.date-pill-success { background: #dcfce7; color: #14532d; border: 1px solid #86efac; }
.date-pill-warning { background: #fed7aa; color: #7c2d12; border: 1px solid #fb923c; }
.date-pill-danger { background: #fecaca; color: #7f1d1d; border: 1px solid #ef4444; }
.ux-note { display: flex; align-items: center; gap: 14px; background: #eef2ff; border: 1px solid #c7d2fe; border-radius: 5px; padding: 14px 18px; margin-bottom: 20px; }
.kanban-board { display: grid; grid-template-columns: repeat(5, minmax(260px, 1fr)); gap: 16px; overflow-x: auto; padding-bottom: 10px; }
.kanban-column, .workload-column { background: #eef1f7; border: 1px solid var(--c8-border); border-radius: var(--c8-radius); min-height: 420px; display: flex; flex-direction: column; }
.kanban-column header, .workload-column header { display: flex; justify-content: space-between; align-items: center; padding: 14px 16px; border-bottom: 1px solid var(--c8-border); }
.kanban-column h2, .workload-column h2 { font-size: 1rem; font-weight: 850; margin: 0; }
.kanban-column header span, .workload-column header span { background: #fff; border-radius: 5px; padding: 4px 10px; font-size: .85rem; font-weight: 800; color: var(--c8-muted); }
.kanban-dropzone, .workload-dropzone { flex: 1; display: flex; flex-direction: column; gap: 10px; padding: 12px; min-height: 250px; transition: .2s ease; }
.drop-hover { background: rgba(49,87,213,.08); outline: 2px dashed rgba(49,87,213,.35); outline-offset: -8px; }
.kanban-card, .workload-card { position: relative; background: #fff; border: 1px solid var(--c8-border); border-radius: 5px; padding: 14px; box-shadow: 0 10px 24px rgba(31,41,55,.06); cursor: grab; }
.kanban-card:active, .workload-card:active { cursor: grabbing; }
.draggable-card.dragging { opacity: .45; transform: rotate(1deg); }
.draggable-card.saving { outline: 2px solid rgba(49,87,213,.4); }
.draggable-card.save-error { outline: 2px solid #dc3545; }
.oper8-save-indicator { position: fixed; right: 18px; bottom: 18px; z-index: 2147483000; display: inline-flex; align-items: center; gap: 8px; padding: 8px 12px; border: 1px solid rgba(49,87,213,.18); border-radius: 999px; background: rgba(255,255,255,.94); color: var(--c8-muted); box-shadow: 0 12px 30px rgba(15,23,42,.16); font-size: .82rem; font-weight: 800; opacity: 0; transform: translateY(8px); pointer-events: none; transition: opacity .18s ease, transform .18s ease; }
.oper8-save-indicator.is-active { opacity: 1; transform: translateY(0); }
.oper8-save-spinner { width: 13px; height: 13px; border-radius: 50%; border: 2px solid rgba(49,87,213,.22); border-top-color: var(--c8-primary); animation: oper8-spin .75s linear infinite; }
.oper8-activity-overlay { position: fixed; inset: 0; z-index: 2147482500; display: grid; place-items: center; background: rgba(15,23,42,.62); backdrop-filter: blur(1.5px); opacity: 0; pointer-events: none; transition: opacity .16s ease; }
.oper8-activity-overlay.is-active { opacity: 1; pointer-events: auto; }
.oper8-activity-overlay > div { display: inline-flex; align-items: center; gap: .6rem; padding: .85rem 1rem; border: 1px solid rgba(49,87,213,.18); border-radius: 12px; background: rgba(255,255,255,.96); color: var(--c8-primary); box-shadow: 0 18px 50px rgba(15,23,42,.18); }
body.oper8-busy { cursor: wait; }
@keyframes oper8-spin { to { transform: rotate(360deg); } }
.kanban-card strong, .workload-card strong { display: block; line-height: 1.25; }
.kanban-card small, .workload-card small { display: block; color: var(--c8-muted); margin-top: 4px; }
.board-filter-disclosure { margin-bottom: 16px; background: #fff; border: 1px solid var(--c8-border); border-radius: 8px; }
.board-filter-disclosure summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 12px; cursor: pointer; font-weight: 800; list-style: none; }
.board-filter-disclosure summary::-webkit-details-marker { display: none; }
.board-filter-disclosure summary::after { content: '\f282'; font-family: 'bootstrap-icons'; font-weight: 400; margin-left: 6px; }
.board-filter-disclosure[open] summary { border-bottom: 1px solid var(--c8-border); }
.board-filter-disclosure[open] summary::after { transform: rotate(180deg); }
.board-filter-disclosure summary small { margin-left: auto; color: var(--c8-muted); font-size: .78rem; font-weight: 700; }
.board-filter-bar { display: flex; flex-wrap: wrap; gap: 10px; align-items: end; padding: 12px; margin: 0; }
.board-filter-bar > div { flex: 1 1 140px; width: 100%; max-width: 300px; }
.board-filter-bar .form-label { margin-bottom: 5px; font-size: .78rem; }
.board-filter-actions { display: flex; align-items: end; }
.board-user-filter-actions { display: flex; }
.board-user-filter-actions .btn { display: inline-flex; align-items: center; justify-content: center; gap: .35rem; }
.board-filter-week-navigation { display: grid; grid-template-columns: 34px minmax(128px, 1fr) 34px; gap: 6px; align-items: end; min-width: 202px; max-width: 300px; }
.board-filter-week-navigation .planner-week-arrow { height: calc(2.25rem + 2px); padding-inline: 0; display: inline-flex; align-items: center; justify-content: center; border: 0; background: transparent; }
.board-filter-week-navigation .planner-week-arrow:hover { background: #f2f5fb; }
.board-filter-week-navigation #planner-week { height: calc(2.25rem + 2px); }
.board-filter-bar .dropdown-toggle, .project-icon-picker > .dropdown-toggle { padding: .78rem .95rem; line-height: 1.5; height: auto; min-height: 0; }
.btn-outline-secondary.dropdown-toggle { --bs-btn-border-color: #d0d5dd; --bs-btn-hover-border-color: #d0d5dd; --bs-btn-active-border-color: #d0d5dd; --bs-btn-disabled-border-color: #d0d5dd; border-color: #d0d5dd; }
.board-user-filter > .btn { width: 100%; text-align: left; }
.board-user-filter .dropdown-menu { width: 260px; max-height: min(420px, calc(100vh - 140px)); overflow: hidden; }
.board-user-filter .dropdown-menu.show { display: flex; flex-direction: column; }
.board-user-filter-list { display: grid; flex: 1 1 auto; gap: 2px; min-height: 0; overflow-y: auto; overscroll-behavior: contain; }
.board-user-filter-actions { flex: 0 0 auto; background: #fff; box-shadow: 0 -5px 10px rgba(15, 23, 42, .05); }
.board-user-filter .form-check { display: flex; align-items: center; gap: 8px; margin: 0; padding: 7px 8px 7px 28px; border-radius: 4px; cursor: pointer; }
.board-user-filter .form-check:hover { background: #f2f5fb; }
.board-user-filter .form-check span { display: inline-flex; align-items: center; gap: 7px; min-width: 0; }
.bootstrap-select.searchable-select-picker,
.bootstrap-select.form-select { width: 100% !important; max-width: 100%; }
.form-select.searchable-select-picker,
.bootstrap-select.form-select.searchable-select-picker { padding: 0 !important; border: 0 !important; background: transparent !important; box-shadow: none !important; }
.bootstrap-select > .dropdown-toggle { border: 1px solid #d7deea; background: #fff; color: var(--c8-text); padding: .72rem .9rem; border-radius: 8px; min-height: calc(2.25rem + 2px); }
.bootstrap-select > .dropdown-toggle:focus,
.bootstrap-select > select.mobile-device:focus + .dropdown-toggle { outline: 0 !important; box-shadow: 0 0 0 .2rem rgba(37, 99, 235, .12); border-color: #9ab4f8; }
.bootstrap-select .dropdown-menu { border: 1px solid #dbe3ef; box-shadow: 0 16px 42px rgba(15, 23, 42, .14); border-radius: 8px; max-width: 100%; }
.bootstrap-select .dropdown-menu.show { width: 100%; min-width: 100% !important; }
.bootstrap-select .dropdown-menu.inner { max-width: 100%; }
.bootstrap-select .bs-searchbox { padding: 8px; }
.bootstrap-select .bs-searchbox .form-control { border-radius: 7px; }
.project-name-with-icon { display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
.project-icon { color: currentColor; width: 1em; text-align: center; flex: 0 0 auto; }
.project-icon-preview { display: none !important; }
form .form-text { display: none !important; }
.project-icon-preview-mark { font-size: 1.1rem; color: currentColor; }
.project-icon-picker > .dropdown-toggle, .project-icon-picker-menu .dropdown-item { display: flex; align-items: center; gap: 8px; width: 100%; }
.project-icon-picker > .dropdown-toggle { justify-content: space-between; }
.project-icon-picker > .dropdown-toggle > i, .project-icon-picker-menu i { color: currentColor; width: 1em; text-align: center; }
.project-icon-picker-menu { max-height: 360px; overflow-y: auto; }
.project-icon-picker-menu .dropdown-header { position: sticky; top: 0; z-index: 1; margin: 0; padding: .55rem .85rem .35rem; background: #fff; color: var(--c8-muted); font-size: .72rem; font-weight: 800; letter-spacing: .04em; text-transform: uppercase; }
.kanban-card .kanban-card-footer { align-items: center; }
.kanban-card .assignee-picker { flex: 1 1 auto; min-width: 0; }
.kanban-card .assignee-picker-toggle { width: 100%; min-height: auto; border: 0; padding: 0; background: transparent; color: var(--c8-muted); box-shadow: none; }
.kanban-card .assignee-picker-toggle:focus { box-shadow: none; }
.kanban-card .assignee-picker-toggle::after { display: none; }
.kanban-card .assignee-picker-toggle img { width: 22px; height: 22px; }
.kanban-card .assignee-picker-toggle span { font-size: .8em; }
.task-visibility-icon, .task-priority-icon, .task-locked-icon { display: inline-block; margin-right: 5px; font-size: .86em; vertical-align: .02em; }
.task-visibility-icon, .task-locked-icon { color: var(--c8-muted); }
.task-priority-high { color: #f59e0b; }
.task-priority-urgent { color: #dc2626; }
.card-project-icon { position: absolute; top: 13px; right: 13px; font-size: 1rem; opacity: .62; }
.kanban-card strong, .workload-card strong, .personal-plan-card strong { padding-right: 28px; }
.task-card-title-link { color: inherit; text-decoration: none; font-weight: 700; }
.task-card-title-link:hover { color: var(--c8-primary); text-decoration: underline; }
.task-hours-progress { color: var(--c8-muted); font-size: .8rem; font-weight: 800; }
.task-edit-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; padding: 0; color: var(--c8-muted); border: 0; text-decoration: none; }
.task-edit-icon-btn:hover, .task-edit-icon-btn:focus { color: var(--c8-primary); background: #eef2ff; text-decoration: none; }
.task-edit-icon-btn .app-icon { margin-right: 0; }
.topbar h1 .topbar-project-title { gap: 9px; }
.card-limit-hidden { display: none !important; }
.card-limit-toggle { display: block; width: 100%; margin-top: 2px; text-align: left; }
.personal-planner-header { display: none; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.personal-planner-header h2 { margin: 0 0 4px; }
.planner-week-picker { display: flex; align-items: end; gap: 8px; }
.planner-week-navigation { display: flex; align-items: end; gap: 8px; }
.planner-week-picker .form-label { margin: 0 0 5px; display: block; font-size: .78rem; }
.personal-planner { display: grid; grid-template-columns: minmax(230px, 1.15fr) repeat(5, minmax(190px, 1fr)); gap: 12px; overflow-x: auto; align-items: stretch; }
.personal-plan-column { min-width: 190px; background: #f6f8fc; border: 1px solid var(--c8-border); border-radius: 8px; display: flex; flex-direction: column; }
.personal-plan-column > header { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 12px; border-bottom: 1px solid var(--c8-border); }
.personal-plan-column > header h2 { margin: 0; font-size: 1rem; font-weight: 850; }
.personal-plan-column > header span { color: var(--c8-muted); font-size: .8rem; }
.personal-plan-column > header [data-planner-hours-total] { display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 5px; background: #fff; color: var(--c8-primary-dark); border: 1px solid rgba(49,87,213,.18); font-weight: 850; }
.personal-plan-dropzone { flex: 1; min-height: 330px; padding: 10px; display: flex; flex-direction: column; gap: 10px; }
.personal-plan-card { position: relative; padding: 12px; background: #fff; border: 1px solid var(--c8-border); border-radius: 6px; box-shadow: 0 6px 14px rgba(31,41,55,.05); cursor: grab; }
.personal-plan-card:active { cursor: grabbing; }
.personal-plan-card strong, .personal-plan-card small { display: block; }
.personal-plan-card strong .task-hours-progress { margin-left: 6px; white-space: nowrap; vertical-align: .06em; }
.personal-plan-card small { color: var(--c8-muted); margin-top: 3px; font-size: .78rem; }
.personal-plan-meta { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; margin-top: 9px; }
.personal-plan-meta:empty { display: none; margin-top: 0; }
.personal-plan-card.is-collaborator { border-style: dashed; background: #f8fbff; }
.personal-plan-card.is-collaborator .badge { vertical-align: middle; }

.personal-plan-date-row { display: flex; align-items: center; gap: 6px; margin-top: 7px; }
.personal-plan-date-row .date-pill { margin-left: 0; }
.personal-plan-progress { margin-top: 10px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.personal-plan-progress .form-label { display: none; }
.personal-plan-progress .form-range { height: .75rem; padding: 0; }
.personal-plan-progress .form-select { min-height: 34px; max-width: 75px; margin-left: auto; padding: .42rem 1.8rem .42rem .65rem; font-size: .78rem; font-weight: 750; }
.personal-plan-backlog-reset { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 22px; margin-top: 10px; padding: 0; border: 0; color: var(--c8-muted); text-decoration: none; }
.personal-plan-backlog-reset:hover, .personal-plan-backlog-reset:focus { color: var(--c8-primary-dark); background: rgba(49,87,213,.08); text-decoration: none; }
.personal-plan-backlog-reset .app-icon { width: 16px; height: 16px; font-size: 16px; }
.planner-due { font-size: .75rem; font-weight: 650; }
.planner-due.is-success { color: #198754; }
.planner-due.is-warning { color: #a05a00; }
.planner-due.is-danger { color: #c62828; }
.workload-contributor-list { display: flex; flex-direction: column; gap: 8px; padding: 0 12px 4px; }
.workload-contributor-card { cursor: default; opacity: .62; background: #edf3ff; border-color: #b8cbff; box-shadow: none; }
.workload-contributor-card:active { cursor: default; }
.workload-contributor-card .badge { background: #6984c8 !important; }
.workload-contributor-list { padding-top: 10px; }
.workload-contributor-card, .personal-plan-card.is-readonly { padding-top: 16px; }
.workload-contributor-card .badge, .personal-plan-card.is-readonly .badge { vertical-align: middle; margin-left: 4px; }
.sortable-editor-list { display: grid; gap: 8px; }
.sortable-editor-item { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 10px; padding: 10px; border: 1px solid var(--c8-border); border-radius: 6px; background: #fff; }
.sortable-editor-item.dragging { opacity: .45; }
.sortable-editor-handle { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; color: var(--c8-muted); cursor: grab; }
.sidebar-order-item { grid-template-columns: auto auto 1fr auto; }
.sidebar-visibility-toggle { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; font-size: .85rem; color: #475569; }
.shortcut-editor-row { grid-template-columns: auto minmax(140px, 1fr) minmax(190px, 1.4fr) minmax(130px, .7fr) auto; }
.shortcut-editor-remove { text-decoration: none; font-size: 1.2rem; line-height: 1; }
.gantt-history-menu { min-width: 230px; max-height: 360px; overflow: auto; }
.gantt-history-menu .dropdown-item small { display: block; color: var(--c8-muted); margin-top: 2px; }
.card-meta, .kanban-card-meta { display: flex; justify-content: space-between; gap: 10px; margin-top: 10px; color: var(--c8-muted); font-size: .82rem; font-weight: 700; }
.workload-card-actions { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 10px; }
.workload-board { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }
.timeline-list { display: grid; gap: 12px; }
.timeline-row { display: grid; grid-template-columns: minmax(180px, 260px) 1fr; gap: 18px; align-items: center; padding: 12px; border-radius: 5px; background: #fff; border: 1px solid var(--c8-border); }
.timeline-meta small { display: block; color: var(--c8-muted); }
.timeline-track { position: relative; height: 24px; border-radius: 5px; background: #f2f4f7; overflow: hidden; }
.timeline-bar { position: absolute; top: 4px; bottom: 4px; border-radius: 5px; background: var(--c8-primary); min-width: 16px; }
.status-todo { background: #98a2b3; }
.status-in_progress { background: #3157d5; }
.status-review { background: #0ea5e9; }
.status-blocked { background: #dc3545; }
.status-done { background: #16a34a; }
.team-chip { border: 1px solid var(--c8-border); border-radius: 5px; padding: 10px 12px; background: #fff; }
.estimate-lines { display: grid; gap: 8px; }
.estimate-line { display: grid; grid-template-columns: 1fr 1.4fr .7fr .9fr; gap: 6px; }
.integration-card { min-height: 230px; }
.auth-wrap { min-height: 100vh; display: grid; place-items: center; padding: 24px; background: radial-gradient(circle at top left, #e0e7ff 0, transparent 34%), var(--c8-bg); }
.auth-card { width: min(100%, 460px); }
.install-card { width: min(100%, 980px); }
.auth-card h1 { font-weight: 850; font-size: 1.8rem; }
.auth-card h2 { margin-top: 8px; font-size: 1.1rem; font-weight: 800; }
.public-body { background: #f8fafc; }
.public-shell { max-width: 1100px; margin: 0 auto; padding: 32px 20px; }
.public-hero { align-items: flex-start; display: block; }
.table { margin-bottom: 0; }
.badge { font-weight: 750; line-height: 1rem; }
.btn .app-icon { width: 18px; height: 18px; margin-right: 6px; vertical-align: -4px; font-size: 18px; }
.form-label { font-weight: 750; }
.form-control, .form-select { border-radius: 5px; border-color: #d0d5dd; }
.form-control:focus, .form-select:focus { border-color: var(--c8-primary); box-shadow: 0 0 0 .2rem rgba(49,87,213,.14); }
@media (max-width: 1100px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar { position: fixed; left: -300px; width: 280px; transition: left .2s ease; }
  body.sidebar-open .sidebar { left: 0; }
  .topbar, .content-wrap { padding-left: 18px; padding-right: 18px; }
  .kanban-board { grid-template-columns: repeat(5, 280px); }
}
@media (max-width: 760px) {
  .topbar, .hero-panel, .project-header, .task-row, .mini-project, .public-task { flex-direction: column; align-items: flex-start; }
  .user-chip { justify-content: flex-start; }
  .timeline-row { grid-template-columns: 1fr; }
  .estimate-line { grid-template-columns: 1fr 1fr; }
  .sticky-card { position: static; }
}

.auth-divider { display:flex; align-items:center; gap:12px; color:var(--c8-muted); font-weight:700; margin:18px 0; }
.auth-divider::before, .auth-divider::after { content:""; flex:1; height:1px; background:var(--c8-border); }
.template-line { display:grid; grid-template-columns: 1fr 110px 110px; gap:8px; }
.settings-list { display:grid; grid-template-columns: 130px 1fr; gap:10px 16px; margin:0; }
.settings-list dt { color:var(--c8-muted); }
.settings-list dd { margin:0; font-weight:750; word-break:break-word; }
.integration-card h2 .app-icon { margin-right:8px; vertical-align:-4px; }
@media (max-width: 760px) { .template-line { grid-template-columns:1fr; } }

/* Oper8 v3 DHTMLX Gantt enhancements */
.gantt-page-header {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
    margin-bottom: 1rem;
}
.gantt-page-header h2 { margin: 0 0 .35rem; }
.gantt-toolbar {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    position: sticky;
    top: 82px;
    z-index: 5;
    margin: -24px -24px 16px;
    padding: 14px 24px;
    border: 0;
    margin-bottom: 0;
    background: var(--c8-panel);
    flex-wrap: wrap;
}
.gantt-toolbar .btn-group { gap: 0; }
.gantt-help { max-width: 520px; font-size: .9rem; }
.gantt-card { overflow: visible; }
.oper8-gantt {
    width: 100%;
    height: calc(100vh - 300px);
    min-height: 560px;
    border: 0;
    border-radius: 5px;
    overflow: hidden;
}
.gantt-card:fullscreen { position: relative; width: 100%; height: 100%; max-width: none; padding: 18px; background: var(--c8-bg); overflow: hidden; }
.gantt-card:fullscreen .gantt-toolbar { top: 0; margin: -18px -18px 0; padding: 14px 18px; }
.gantt-card:fullscreen .oper8-gantt { height: calc(100vh - 118px); min-height: 0; }
.gantt-fullscreen-exit { position: absolute; z-index: 3; top: 26px; right: 26px; }
.gantt-card:fullscreen .gantt-task-panel { position: fixed; z-index: 1100; }
.gantt-notice { margin-bottom: 1rem; }
.gantt-status-blocked .gantt_task_progress { background: #dc3545; }
.gantt-status-review .gantt_task_progress { background: #6f42c1; }
.gantt-visibility-icon, .gantt-priority-icon, .gantt-locked-icon { display: inline-block; margin-right: 5px; font-size: .84em; vertical-align: .02em; }
.gantt-visibility-icon, .gantt-locked-icon { color: var(--c8-muted); }
.gantt-priority-high { color: #f59e0b; }
.gantt-priority-urgent { color: #dc2626; }
.task-visibility-icon { display: inline-block; margin-right: 5px; color: var(--c8-muted); font-size: .86em; vertical-align: .05em; }
.task-title-inline { display: inline-flex; align-items: center; color: var(--c8-text); font-weight: 700; }
.task-description-disclosure { padding: 0; }
.task-description-disclosure > summary { display: flex; align-items: center; min-height: 40px; cursor: pointer; color: var(--c8-primary); font-weight: 650; list-style: none; }
.task-description-disclosure > summary::-webkit-details-marker { display: none; }
.task-description-disclosure > summary::before { content: '+'; margin-right: 8px; }
.task-description-disclosure[open] > summary::before { content: '-'; }
.task-description-disclosure > textarea { margin-top: 8px; }
.task-colour-presets { display: flex; flex-wrap: wrap; gap: 8px; padding: 5px 0; }
.task-colour-swatch { width: 28px; height: 28px; padding: 0; border: 2px solid transparent; border-radius: 50%; background: var(--task-swatch); box-shadow: inset 0 0 0 1px rgba(15, 23, 42, .16); transition: transform .16s ease, box-shadow .16s ease; }
.task-colour-swatch:hover { transform: scale(1.08); }
.task-colour-swatch.is-selected { border-color: var(--c8-text); box-shadow: 0 0 0 2px var(--c8-panel), 0 0 0 4px var(--c8-primary); }
.assignee-picker { width: 100%; }
.assignee-picker-toggle { width: 100%; min-height: 44px; display: inline-flex; align-items: center; gap: 8px; text-align: left; }
.oper8-slide-panel .assignee-picker-toggle { padding: .78rem .95rem; line-height: 1.5; height: auto; min-height: 0; }
.assignee-picker-toggle::after { margin-left: auto; }
.assignee-picker-toggle img, .assignee-picker-menu img { width: 24px; height: 24px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; }
.assignee-picker-menu { width: 100%; max-height: 280px; overflow: auto; }
.assignee-picker-menu .dropdown-item { display: flex; align-items: center; gap: 9px; }
.gantt-type-project .gantt_task_content { font-weight: 700; }
.gantt-type-milestone .gantt_task_content { font-size: 0; }
.oper8-gantt .gantt_container { border: 0 !important; }
.oper8-gantt .gantt_task_content { position: relative; margin-top: -24px; overflow: visible !important; color: transparent !important; }
.oper8-gantt .oper8-gantt-label { position: absolute; left: calc(100% + 26px); top: 50%; z-index: 2; color: var(--c8-text); font-size: .78rem; line-height: 1.2; white-space: nowrap; pointer-events: none; transform: translateY(-50%); }
.oper8-gantt .gantt-type-milestone .gantt_task_content { margin-top: 0; font-size: inherit; }
.oper8-gantt .gantt-type-milestone .oper8-gantt-label { display: none; }
.oper8-gantt .gantt_side_content.gantt_right { display: flex; align-items: center; min-height: 24px; margin-left: 20px; color: var(--c8-text); font-size: .78rem; line-height: 1.2; white-space: nowrap; }
.oper8-gantt .oper8-gantt-milestone-label { display: inline-flex; align-items: center; }
.oper8-gantt .gantt-assignee { display: inline-flex; align-items: center; justify-content: flex-start; gap: 6px; width: 100%; text-align: left; }
.oper8-gantt .gantt-assignee img { width: 21px; height: 21px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; }
.oper8-gantt .gantt_grid_head_cell { border-left: 0 !important; border-right: 0 !important; }
.oper8-gantt .gantt_scale_line:last-child .gantt_scale_cell { font-size: 0.8em; }
.oper8-gantt .gantt_task_line.gantt-status-done,
.public-gantt .gantt_task_line.gantt-status-done { opacity: .62; }
.oper8-gantt .gantt_task_line.gantt-locked-task { cursor: not-allowed; }
.oper8-gantt .gantt_task_cell.oper8-weekend,
.oper8-gantt .gantt_task_cell.oper8-non-working-day { background: rgba(250, 204, 21, .13) !important; }
.oper8-gantt .gantt_task_cell.oper8-public-holiday { background: rgba(245, 158, 11, .24) !important; }
.oper8-gantt .gantt_task_cell.oper8-today-cell { background: rgba(59, 130, 246, .18) !important; }
.oper8-gantt .oper8-today-marker { width: 2px !important; background: #2563eb !important; opacity: .9; z-index: 4; }
.oper8-gantt .oper8-today-marker .gantt_marker_content { top: 3px; left: 5px; color: #1d4ed8; font-size: .72rem; font-weight: 700; white-space: nowrap; }
.oper8-gantt .oper8-today-marker-hidden { display: none !important; }
.gantt-save-pending { box-shadow: 0 0 0 .2rem rgba(37, 99, 235, .18); }
.public-gantt {
    width: 100%;
    height: 540px;
    border: 1px solid rgba(15, 23, 42, .12);
    border-radius: 5px;
    overflow: hidden;
}
.public-timeline-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 0 0 12px; }
.public-timeline-toolbar .btn-group { gap: 0; }
.public-gantt .gantt_container { border: 0 !important; }
.public-gantt .gantt_task_content { position: relative; margin-top: -24px; overflow: visible !important; color: transparent !important; }
.public-gantt .public-gantt-label { position: absolute; left: calc(100% + 20px); top: 50%; z-index: 2; color: var(--c8-text); font-size: .78rem; line-height: 1.2; white-space: nowrap; pointer-events: none; transform: translateY(-50%); }
.public-gantt .public-gantt-milestone-label { display: inline-flex; align-items: center; color: var(--c8-text); font-size: .78rem; line-height: 1.2; white-space: nowrap; }
.public-pdf-exporting .public-timeline-toolbar { display: none !important; }
@media print {
  @page { size: landscape; margin: 10mm; }
  body.public-body { background: #fff !important; }
  .public-shell, .public-shell-wide { width: 100%; max-width: none; padding: 0; margin: 0; }
  .public-timeline-toolbar { display: none !important; }
  .public-hero { padding: 0 0 8mm; margin: 0; box-shadow: none; border: 0; }
  .public-gantt-card { padding: 0; border: 0; box-shadow: none; }
  .public-gantt { height: 165mm; min-height: 0; border: 0; }
  .public-gantt .gantt_task_content { overflow: visible !important; }
}
@media (max-width: 640px) { .public-timeline-toolbar { align-items: stretch; flex-direction: column; } .public-timeline-toolbar > * { width: 100%; } }
@media (max-width: 991px) {
    .gantt-page-header { flex-direction: column; }
    .oper8-gantt { height: 650px; min-height: 650px; }
    .gantt-toolbar { align-items: stretch; top: 0; }
}

/* Oper8 v3.3 layout refinements */
.topbar-title-group { display: flex; align-items: center; gap: 12px; min-width: 0; }
.topbar-person-title { display: inline-flex; align-items: center; gap: 10px; min-width: 0; }
.topbar-person-title > span { min-width: 0; }
.sidebar-collapse-toggle { align-items: center; justify-content: center; width: 36px; height: 36px; padding: 0; }
.sidebar-collapse-toggle .app-icon { width: 18px; height: 18px; margin: 0; transition: transform .18s ease; }
body.sidebar-collapsed .app-shell { grid-template-columns: 84px minmax(0, 1fr); }
body.sidebar-collapsed .sidebar { padding: 18px 12px; }
body.sidebar-collapsed .brand { justify-content: center; margin-bottom: 20px; }
body.sidebar-collapsed .brand span,
body.sidebar-collapsed .brand em,
body.sidebar-collapsed .sidebar .nav-link span { display: none; }
body.sidebar-collapsed .sidebar-shortcuts-title { display: none; }
body.sidebar-collapsed .sidebar .nav-link { justify-content: center; padding: 13px 0; gap: 0; }
body.sidebar-collapsed .sidebar .nav-link .app-icon { width: 22px; height: 22px; }
body.sidebar-collapsed .sidebar-collapse-toggle .app-icon { transform: rotate(180deg); }
.context-strip { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 20px; padding: 12px 16px; border: 1px solid var(--c8-border); border-radius: 5px; background: rgba(255,255,255,.82); box-shadow: 0 10px 26px rgba(31,41,55,.05); }
.context-main { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
.context-eyebrow { color: var(--c8-muted); text-transform: uppercase; letter-spacing: .1em; font-size: .72rem; font-weight: 850; }
.context-description { color: var(--c8-muted); max-width: min(760px, 52vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dropdown-item .app-icon { width: 18px; height: 18px; margin-right: 8px; vertical-align: -4px; }
.public-shell-wide { width: min(100%, 2080px); max-width: 2080px; padding: 18px 18px 24px; }
.public-hero-compact { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 18px; border-radius: 5px; margin-bottom: 14px; }
.public-hero-compact h1 { font-size: clamp(1.2rem, 2vw, 1.8rem); margin: 0; }
.public-hero-compact .eyebrow { margin-bottom: 2px; }
.public-meta { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.public-gantt-card { padding: 14px; }
.public-gantt { height: calc(100vh - 150px); min-height: 620px; }
@media (min-width: 1101px) {
  body.sidebar-collapsed .content-wrap { padding-left: 24px; padding-right: 24px; }
}
body.sidebar-collapsed.personal-workload-global-page .content-wrap { padding-bottom: 0; }
@media (max-width: 1100px) {
  body.sidebar-collapsed .app-shell { grid-template-columns: 1fr; }
  body.sidebar-collapsed .sidebar { padding: 24px 18px; }
  body.sidebar-collapsed .brand { justify-content: flex-start; }
  body.sidebar-collapsed .brand span,
  body.sidebar-collapsed .brand em,
  body.sidebar-collapsed .sidebar .nav-link span { display: inline; }
  body.sidebar-collapsed .sidebar-shortcuts-title { display: block; }
  body.sidebar-collapsed .sidebar .nav-link { justify-content: flex-start; padding: 12px 14px; gap: 12px; }
}
@media (max-width: 760px) {
  .context-strip, .public-hero-compact { flex-direction: column; align-items: stretch; }
  .context-description { max-width: 100%; white-space: normal; }
  .public-meta { justify-content: flex-start; }
  .public-shell-wide { padding-left: 10px; padding-right: 10px; }
  .public-gantt { height: 680px; min-height: 680px; }
}



/* Oper8 v3.4 UI refinements */
.projects-heading > div { min-width: 0; }
.projects-heading .btn { white-space: nowrap; }
.oper8-slide-panel { width: min(100%, 560px); }
.offcanvas.oper8-slide-panel { border-radius: 18px 0 0 18px; }
.offcanvas .offcanvas-header { border-bottom: 1px solid var(--c8-border); }
.offcanvas .offcanvas-title { font-size: 1.25rem; font-weight: 850; }
.nested-form-panel { margin-top: 10px; padding: 12px; border: 1px solid var(--c8-border); background: #f8fafc; }

@media (max-width: 760px) {
  .projects-heading { flex-direction: column; align-items: stretch; }
  .projects-heading .btn { width: 100%; justify-content: center; }
}


/* Oper8 v3.5 UI and application polish */
.card-soft, .auth-card, .integration-card, .stat-card, .kanban-column, .workload-column, .ux-note, .context-strip, .public-hero-compact, .public-gantt-card, .gantt-toolbar, .gantt-card, .team-chip, .nested-form-panel {
  border-radius: var(--c8-radius);
}
.btn, .dropdown-menu, .alert, .badge, .date-pill, .form-control, .form-select, .timeline-row, .timeline-track, .timeline-bar, .kanban-card, .workload-card {
  border-radius: 12px;
}
.sidebar .nav-link, .brand em, .stat-card .app-icon, .icon-xl { border-radius: 14px; }
.oper8-slide-panel { width: min(100%, 640px); }
.oper8-slide-panel-wide { width: min(100%, 820px); }
.offcanvas.oper8-slide-panel { box-shadow: -20px 0 60px rgba(15, 23, 42, .18); }
.offcanvas-body { padding: 22px 24px 28px; }
.offcanvas.oper8-slide-panel,
.offcanvas.oper8-slide-panel .offcanvas-header,
.offcanvas.oper8-slide-panel .offcanvas-body { text-align: left; }
.form-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.form-field-wide { grid-column: 1 / -1; }
.project-code-icon-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.form-grid-2 > .project-code-icon-row { grid-column: 1 / -1; }
.form-label { display: inline-flex; align-items: center; gap: 7px; margin-bottom: 7px; }
.field-help { width: 17px; height: 17px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: #eef2ff; color: var(--c8-primary); font-size: .72rem; font-weight: 850; cursor: help; }
.form-control, .form-select { padding: .78rem .95rem; min-height: 44px; }
.form-control[type="date"], .form-control[type="number"] { min-height: 44px; }
.brand-logo-settings-card {
  border: 1px solid rgba(226, 232, 240, .9);
  border-radius: 16px;
  padding: 16px;
  background: rgba(248, 250, 252, .72);
}
.brand-logo-settings-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.brand-logo-setting-item {
  display: grid;
  grid-template-columns: 82px minmax(0, 1fr);
  gap: 12px;
  align-items: start;
  padding: 12px;
  border: 1px solid rgba(226, 232, 240, .9);
  border-radius: 14px;
  background: #fff;
}
.brand-logo-preview {
  width: 82px;
  height: 82px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 14px;
  background: linear-gradient(135deg, #f8fafc, #eef2ff);
  border: 1px dashed rgba(148, 163, 184, .55);
  padding: 10px;
}
.brand-logo-preview img { max-width: 100%; max-height: 100%; object-fit: contain; }
.brand-logo-setting-body .form-label { margin-bottom: 6px; }
.brand-logo-reset-check { font-size: .86rem; color: var(--c8-muted); }
@media (max-width: 991.98px) {
  .brand-logo-settings-grid { grid-template-columns: 1fr; }
}
@media (max-width: 575.98px) {
  .brand-logo-setting-item { grid-template-columns: 1fr; }
  .brand-logo-preview { width: 100%; height: 96px; }
}
textarea.form-control { min-height: 94px; }
.was-validated .form-control:invalid, .was-validated .form-select:invalid { border-color: #dc3545; box-shadow: 0 0 0 .18rem rgba(220,53,69,.11); }
.was-validated .form-control:valid, .was-validated .form-select:valid, .task-assignee-select.is-valid { border-color: #16a34a; box-shadow: 0 0 0 .14rem rgba(22,163,74,.10); }
.task-assignee-select.is-invalid { border-color: #dc3545; }
.auth-brand-block .auth-logo { width: 74px; height: 74px; margin-bottom: 12px; }
.user-menu-toggle { display: inline-flex; align-items: center; gap: 7px; }
.install-app-btn { align-items: center; gap: 6px; }
.pwa-profile-card .icon-xl { margin-bottom: 12px; }
.pwa-install-banner { position: fixed; right: 20px; bottom: 20px; z-index: 1060; width: min(420px, calc(100vw - 32px)); background: #fff; border: 1px solid var(--c8-border); border-radius: 18px; box-shadow: 0 24px 70px rgba(15,23,42,.22); padding: 16px; display: flex; gap: 14px; justify-content: space-between; align-items: center; }
.pwa-install-banner span { display: block; color: var(--c8-muted); font-size: .9rem; }
.kanban-card-footer { display: grid; grid-template-columns: 1fr; gap: 10px; align-items: center; margin-top: 12px; }
.kanban-card-actions { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.kanban-card .form-select-sm { padding: .45rem 2rem .45rem .65rem; min-height: 34px; font-size: .82rem; }
.project-context-strip { margin-bottom: 18px; }
.table .dropdown .btn { white-space: nowrap; }
.gantt-page-header { display: none; }
@media (max-width: 760px) {
  .form-grid-2 { grid-template-columns: 1fr; }
  .project-code-icon-row { grid-template-columns: 1fr; }
  .oper8-slide-panel, .oper8-slide-panel-wide { width: 100%; border-radius: 0; }
  .pwa-install-banner { left: 16px; right: 16px; bottom: 16px; flex-direction: column; align-items: stretch; }
  .kanban-card-footer { grid-template-columns: 1fr; }
}

/* Oper8 v3.6 administration and form guidance */
@media (min-width: 761px) {
  .oper8-slide-panel,
  .oper8-slide-panel-wide { --bs-offcanvas-width: 700px; width: 700px !important; max-width: 100vw; }
  .project-register-table,
  .retainer-register-table,
  .organisation-register-table { overflow: visible; }
}
.topbar .install-app-btn { display: none !important; }
.field-help { border: 0; padding: 0; background: transparent; }
.field-help .bi { display: block; font-size: 17px; line-height: 1; }
.project-register-table .dropdown-menu,
.retainer-register-table .dropdown-menu,
.organisation-register-table .dropdown-menu { z-index: 1055; }
.field-help-library { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; max-height: 560px; overflow: auto; padding-right: 4px; }
.field-help-library .form-label { font-size: .85rem; }
.system-admin-card { background: linear-gradient(135deg, #fff 0%, #f7f9ff 100%); }
.team-member-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.team-member-remove { margin: 0; flex: 0 0 auto; }
.offcanvas.oper8-slide-panel { will-change: transform; transition: transform .34s cubic-bezier(.22,.61,.36,1), visibility 0s linear .34s !important; }
.offcanvas.oper8-slide-panel.showing, .offcanvas.oper8-slide-panel.show { transition: transform .34s cubic-bezier(.22,.61,.36,1), visibility 0s linear 0s !important; }
.offcanvas-backdrop.fade { transition: opacity .24s ease !important; }
.project-notes-list, .project-activity-list { display: grid; gap: 12px; max-height: 520px; overflow: auto; padding-right: 4px; }
.project-note { border-left: 3px solid var(--c8-primary); padding: 10px 12px; background: #f8faff; }
.project-note-meta { display: flex; justify-content: space-between; gap: 12px; color: var(--c8-muted); font-size: .82rem; }
.project-note p { margin: 8px 0 0; white-space: normal; }
.project-activity-item { display: grid; grid-template-columns: 10px 1fr; gap: 10px; align-items: start; padding-bottom: 12px; border-bottom: 1px solid var(--c8-border); }
.project-activity-item:last-child { border-bottom: 0; padding-bottom: 0; }
.project-activity-item strong, .project-activity-item small { display: block; }
.project-activity-item small { color: var(--c8-muted); margin-top: 3px; }
.project-activity-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--c8-primary); margin-top: 6px; }
@media (prefers-reduced-motion: reduce) { .offcanvas.oper8-slide-panel, .offcanvas-backdrop.fade { transition: none !important; } }

/* Oper8 v4.9 task workspace and Gantt editor */
.task-action-buttons { display: inline-flex; gap: 8px; flex-wrap: wrap; justify-content: flex-end; }
.task-context-strip .task-action-buttons { flex-wrap: nowrap; }
.task-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-bottom: 0; }
.task-detail-grid div { padding: 12px; border: 1px solid var(--c8-border); border-radius: var(--c8-radius); background: #fbfcfe; }
.task-detail-grid dt { margin: 0 0 5px; color: var(--c8-muted); font-size: .78rem; font-weight: 750; text-transform: uppercase; }
.task-detail-grid dd { margin: 0; font-weight: 700; }
.task-description { line-height: 1.65; }
.task-inline-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; }
.task-checklist-list { display: grid; gap: 8px; }
.task-checklist-item { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 9px 0; border-bottom: 1px solid var(--c8-border); }
.task-checklist-item:last-child { border-bottom: 0; }
.task-checklist-item.is-done span { color: var(--c8-muted); text-decoration: line-through; }
.task-check-toggle { margin: 0; }
.task-check-button { width: 22px; height: 22px; padding: 0; border: 1px solid var(--c8-border); border-radius: 50%; background: #fff; color: #fff; font-size: .8rem; line-height: 1; }
.task-checklist-item.is-done .task-check-button { border-color: #16a34a; background: #16a34a; }
.task-contributor-row { display: flex; justify-content: space-between; gap: 10px; align-items: center; }
.gantt-task-panel .offcanvas-body { padding-bottom: 32px; }
@media (max-width: 760px) {
  .task-detail-grid { grid-template-columns: 1fr; }
  .task-inline-form { grid-template-columns: 1fr; }
  .task-context-strip .task-action-buttons { width: 100%; }
  .task-context-strip .task-action-buttons .btn { flex: 1; }
}

/* Oper8 v4 project navigation and status controls */
.topbar-context { margin: 3px 0 0; color: var(--c8-muted); font-size: .84rem; font-weight: 650; }
.project-filters { display: grid; grid-template-columns: minmax(260px, 1fr) minmax(180px, 240px) auto auto; align-items: end; gap: 10px; margin: 0 0 18px; }
.project-filters-with-columns { grid-template-columns: minmax(260px, 1fr) minmax(180px, 220px) minmax(180px, 220px) auto; }
.project-filters-with-columns .btn, .project-column-dropdown, .project-column-dropdown > .btn { min-height: calc(2.25rem + 2px); height: 100%; }
.project-column-dropdown > .btn { display: inline-flex; align-items: center; justify-content: center; gap: 7px; white-space: nowrap; }
.project-search-field { min-width: 0; }
.status-manager-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr) minmax(220px, .75fr); gap: 24px; }
.status-manager-grid h3 { font-size: .95rem; margin: 0 0 10px; font-weight: 800; }
.status-manager-list { display: grid; gap: 8px; }
.status-manager-item { display: flex; gap: 9px; align-items: center; min-height: 38px; }
.status-manager-item form { margin-left: auto; }
@media (max-width: 900px) { .project-filters { grid-template-columns: 1fr 1fr; } .status-manager-grid { grid-template-columns: 1fr; } }
@media (max-width: 560px) { .project-filters { grid-template-columns: 1fr; } .project-filters .btn { width: 100%; } }

/* Oper8 v4.2 identity and access */
.microsoft-sign-in { display: inline-flex; align-items: center; justify-content: center; min-height: 54px; gap: 8px; }
.microsoft-sign-in .app-icon { color: currentColor; }
.admin-login-link { color: var(--c8-muted); text-decoration: none; font-weight: 700; }
.admin-login-link:hover { color: var(--c8-primary); text-decoration: underline; }
.administrator-network-card code { font-size: .9em; }
.user-avatar { display: inline-block; flex: 0 0 auto; width: 32px; height: 32px; border-radius: 50%; object-fit: cover; background: #eef2ff; border: 1px solid rgba(49, 87, 213, .16); }
.user-avatar-xs { width: 22px; height: 22px; }
.user-avatar-sm { width: 28px; height: 28px; }
.user-avatar-md { width: 34px; height: 34px; }
.user-inline { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.user-inline > span { min-width: 0; }
.gantt-assignee { display: inline-flex; align-items: center; justify-content: flex-start; gap: 5px; max-width: 112px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.gantt-assignee img { width: 21px; height: 21px; border-radius: 50%; object-fit: cover; flex: 0 0 auto; }
.role-manager-list { display: grid; gap: 10px; }
.role-manager-item { border: 1px solid var(--c8-border); border-radius: 12px; background: #fff; overflow: hidden; }
.role-manager-item summary { cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 15px 18px; list-style: none; }
.role-manager-item summary::-webkit-details-marker { display: none; }
.role-manager-item summary strong, .role-manager-item summary small { display: block; }
.role-manager-item summary small { color: var(--c8-muted); margin-top: 3px; }
.role-manager-body { border-top: 1px solid var(--c8-border); padding: 18px; background: #fafbfe; }
.permission-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
.permission-grid fieldset { margin: 0; padding: 14px; border: 1px solid var(--c8-border); border-radius: 10px; background: #fff; }
.permission-grid legend { float: none; width: auto; padding: 0 4px; margin: 0 0 7px; font-size: .84rem; font-weight: 800; }
.permission-grid .form-check { margin: 7px 0; font-size: .88rem; }
.role-create-panel { border-top: 1px solid var(--c8-border); padding-top: 20px; }
.role-create-panel h3 { font-size: 1rem; font-weight: 800; margin-bottom: 14px; }
.workload-team-manager { margin: 0 0 20px; padding: 18px; border: 1px solid var(--c8-border); border-radius: 12px; background: #fff; }
.workload-team-manager h2 { margin: 0 0 4px; font-size: 1.05rem; font-weight: 800; }
.workload-team-chips { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0; }
.workload-team-chip { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border: 1px solid var(--c8-border); border-radius: 10px; background: #fafbfe; }
.workload-team-chip strong, .workload-team-chip small { display: block; }
.workload-team-chip small { color: var(--c8-muted); font-size: .78rem; }
.workload-team-chip form { margin: 0; }
.workload-team-add { display: grid; grid-template-columns: minmax(180px, 280px) minmax(180px, 260px) auto; gap: 10px; align-items: center; }
.former-contributor-label { display: block; color: #8a5a00; font-size: .7rem; font-weight: 700; line-height: 1.15; }
.oper8-macos .pwa-profile-card { display: none; }
@media (max-width: 760px) {
  .field-help-library { grid-template-columns: 1fr; max-height: none; }
  .permission-grid { grid-template-columns: 1fr; }
  .workload-team-add { grid-template-columns: 1fr; }
  .board-filter-bar > div { flex-basis: calc(50% - 5px); }
  .board-filter-week-navigation { max-width: 300px; }
  .personal-planner-header { align-items: stretch; flex-direction: column; }
  .planner-week-picker { width: 100%; }
  .planner-week-navigation { width: 100%; flex-wrap: wrap; }
}

@media (max-width: 767px) {
  .shortcut-editor-row { grid-template-columns: auto 1fr; }
  .shortcut-editor-row > div { grid-column: 2; }
  .shortcut-editor-remove { grid-column: 2; justify-self: start; }
}

/* v4.9.36 osTicket mapping */
.integration-stats {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}
.osticket-map-table td {
    vertical-align: middle;
}
.osticket-map-table select.form-select-sm {
    min-width: 220px;
}
.osticket-map-bulk {
    display: flex;
    flex-wrap: wrap;
    gap: .65rem;
    align-items: center;
    padding: .75rem;
    border: 1px solid var(--c8-border);
    border-radius: 10px;
    background: #fafbfe;
}
.osticket-map-bulk .form-select {
    max-width: 290px;
}
.osticket-map-check-col {
    width: 34px;
}
.integration-diagnostic {
    padding: .85rem;
    border: 1px solid var(--c8-border);
    border-radius: 10px;
    background: #fafbfe;
}
.integration-diagnostic .table {
    font-size: .84rem;
}
.integration-diagnostic td {
    max-width: 260px;
    overflow-wrap: anywhere;
}
.integration-diagnostic summary {
    cursor: pointer;
    color: var(--c8-primary);
    font-weight: 700;
}
.ajax-view-shell {
    min-height: 48vh;
    display: grid;
    place-items: center;
}
.ajax-view-loader {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: .55rem;
    padding: 1.25rem 1.5rem;
    border: 1px solid var(--c8-border);
    border-radius: 12px;
    background: #fff;
    color: var(--c8-muted);
    box-shadow: 0 16px 42px rgba(15,23,42,.08);
}
.ajax-view-loader .oper8-save-spinner {
    width: 22px;
    height: 22px;
}
.ajax-view-loader strong {
    color: var(--c8-primary);
    font-size: 1rem;
}

/* v4.9.38 ticket boards and register */
.ticket-card .badge,
.workload-card .badge,
.personal-plan-card .badge { line-height: 1rem; }
.ticket-filter-grid {
    display: grid;
    grid-template-columns: minmax(220px, 2fr) repeat(6, minmax(130px, 1fr)) auto;
    gap: .75rem;
    align-items: end;
}
.ticket-filter-actions {
    display: flex;
    gap: .5rem;
    align-items: center;
}
.table-sort-link {
    color: inherit;
    text-decoration: none;
    font-weight: 800;
}
.table-sort-link:hover { color: var(--c8-primary); text-decoration: underline; }
.ticket-register-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding-top: 1rem;
    color: var(--c8-muted);
    font-size: .9rem;
}
@media (max-width: 1200px) {
  .ticket-filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 760px) {
  .ticket-filter-grid { grid-template-columns: 1fr; }
  .ticket-register-footer { align-items: stretch; flex-direction: column; }
}

/* v4.9.39 osTicket sync-back */
.integration-syncback-source {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: .75rem;
    align-items: center;
    padding: .75rem;
    border: 1px solid var(--c8-border);
    border-radius: 10px;
    background: #fafbfe;
}
@media (max-width: 760px) {
    .integration-syncback-source { grid-template-columns: 1fr; }
}

/* Oper8 v5.0.28 list and settings refinements */
.user-filters { grid-template-columns: minmax(260px, 1fr) minmax(170px, 220px) minmax(150px, 190px) auto auto; }
.user-register-table { overflow: visible; }
.project-table-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: -4px 0 14px; }
.project-column-menu { min-width: 220px; gap: 6px; }
.project-column-menu.show { display: grid; }
.project-column-menu .form-check { margin-bottom: 0; }
.project-optional-col { display: none; white-space: nowrap; }
th.project-optional-col.is-visible, td.project-optional-col.is-visible { display: table-cell; }
.oper8-tab-shell { display: grid; gap: 18px; }
.oper8-tabs { gap: 8px; border: 1px solid var(--c8-border); background: #fff; border-radius: var(--c8-radius); padding: 8px; box-shadow: 0 10px 26px rgba(31, 41, 55, .05); }
.oper8-tabs .nav-link { border-radius: 12px; color: var(--c8-muted); font-weight: 800; }
.oper8-tabs .nav-link.active { background: var(--c8-primary); color: #fff; }
.oper8-tab-content > .tab-pane { outline: none; }
.integration-card .form-control, .integration-card .form-select { min-height: 42px; }
@media (min-width: 761px) {
  .user-register-table { overflow: visible; }
}
@media (max-width: 1100px) {
  .user-filters { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 560px) {
  .project-table-toolbar { align-items: stretch; flex-direction: column; }
  .project-table-toolbar .dropdown, .project-table-toolbar .btn, .project-column-dropdown, .project-column-dropdown > .btn { width: 100%; }
  .user-filters { grid-template-columns: 1fr; }
}


/* Oper8 v5.0.34 task list, UAT ticket list and task workspace refinements */
.project-task-list-filters,
.project-uat-ticket-filters { grid-template-columns: minmax(260px, 1fr) minmax(170px, 220px) minmax(180px, 240px); }
.table-sort-link { display: inline-flex; align-items: center; gap: 6px; }
.table-sort-indicator { color: var(--c8-muted); font-size: .75rem; }
.oper8-inline-edit-table .inline-edit-form { margin: 0; min-width: 170px; }
.oper8-inline-edit-table .inline-date-form { min-width: 150px; }
.oper8-inline-edit-table .form-select-sm,
.oper8-inline-edit-table .form-control-sm { min-height: 34px; padding: .38rem .6rem; font-size: .83rem; }
.task-side-column { display: flex; flex-direction: column; }
.task-chat-list { display: grid; gap: 14px; max-height: 620px; overflow: auto; padding-right: 4px; }
.task-chat-message { display: grid; gap: 7px; max-width: 88%; }
.task-chat-message.is-current-user { justify-self: start; }
.task-chat-message.is-other-user { justify-self: end; }
.task-chat-author { display: inline-flex; align-items: center; gap: 8px; color: var(--c8-muted); font-size: .78rem; }
.task-chat-author strong,
.task-chat-author small { display: block; line-height: 1.2; }
.task-chat-bubble { border: 1px solid var(--c8-border); border-radius: 16px; padding: 12px 14px; background: #fff; box-shadow: 0 8px 20px rgba(15,23,42,.05); overflow-wrap: anywhere; }
.task-chat-message.is-current-user .task-chat-bubble { border-top-left-radius: 4px; background: #f8faff; }
.task-chat-message.is-other-user .task-chat-author { justify-self: end; flex-direction: row-reverse; text-align: right; }
.task-chat-message.is-other-user .task-chat-bubble { border-top-right-radius: 4px; background: #f4f6fb; }
.task-chat-bubble p:last-child { margin-bottom: 0; }
.task-note-form .ck-editor__editable { min-height: 150px; }
.task-activity-card-compact .activity-feed { gap: 8px; }
.task-activity-card-compact .activity-item { padding: 8px 0; }
.task-activity-card-compact .activity-meta,
.task-activity-card-compact .activity-item p { font-size: .76rem; line-height: 1.35; }
.task-activity-card-compact .section-heading h2 { font-size: .98rem; }
@media (max-width: 900px) {
  .project-task-list-filters,
  .project-uat-ticket-filters { grid-template-columns: 1fr; }
  .task-chat-message { max-width: 100%; }
}

/* v5.0.35 inline project/UAT register refinements */
.oper8-inline-table-wrap { overflow-x: auto; overflow-y: visible; }
@media (min-width: 992px) { .oper8-inline-table-wrap { overflow: visible; } }
.oper8-inline-edit-table { overflow: visible; }
.oper8-inline-edit-table td, .oper8-inline-edit-table th { overflow: visible; }
.oper8-inline-edit-table .inline-edit-form { margin: 0; min-width: 0; }
.oper8-inline-edit-table .inline-date-form { min-width: 0; }
.oper8-inline-edit-table .form-select-sm,
.oper8-inline-edit-table .form-control-sm {
    min-height: 30px;
    padding: 0 1.35rem 0 0;
    border: 0;
    border-radius: 0;
    background-color: transparent;
    box-shadow: none;
    color: inherit;
    font: inherit;
}
.oper8-inline-edit-table .form-control-sm[type="date"] { padding-right: 0; font-size: inherit; }
.oper8-inline-edit-table .form-select-sm:focus,
.oper8-inline-edit-table .form-control-sm:focus {
    box-shadow: 0 2px 0 rgba(49,87,213,.35);
    background-color: rgba(49,87,213,.04);
}
.inline-edit-form.is-saving .form-select-sm,
.inline-edit-form.is-saving .form-control-sm { opacity: .7; }
.inline-edit-form.is-saved .form-select-sm,
.inline-edit-form.is-saved .form-control-sm { box-shadow: 0 2px 0 rgba(22,163,107,.45); }
.inline-edit-form.is-error .form-select-sm,
.inline-edit-form.is-error .form-control-sm { box-shadow: 0 2px 0 rgba(220,53,69,.55); }
.gantt-ticket-item .gantt_task_content,
.gantt-ticket-item.gantt_task_line { font-style: italic; }

/* v5.0.36 inline assignee and UAT timeline refinements */
.oper8-inline-edit-table .assignee-picker { display: inline-block; min-width: 0; }
.oper8-inline-edit-table .assignee-picker-toggle,
.oper8-inline-edit-table .assignee-picker-toggle:hover,
.oper8-inline-edit-table .assignee-picker-toggle:focus,
.oper8-inline-edit-table .assignee-picker-toggle:active,
.oper8-inline-edit-table .assignee-picker-toggle.show {
    padding: 0;
    border: 0;
    background: transparent;
    color: inherit;
    box-shadow: none;
    min-height: 0;
}
.oper8-inline-edit-table .assignee-picker-toggle img { width: 22px; height: 22px; }
.oper8-inline-edit-table .assignee-picker-toggle::after { margin-left: .3rem; }
.gantt-task-panel.is-ticket-mode .gantt-panel-title input[readonly] {
    background: var(--c8-soft);
    cursor: default;
}
.gantt-ticket-item .gantt_task_content,
.gantt-ticket-item.gantt_task_line { cursor: grab; }

/* v5.0.38 activity, estimate lock and inline assignee refinements */
.activity-entity-pill {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: .12rem .42rem;
    margin-left: .35rem;
    background: var(--c8-soft);
    color: var(--c8-muted);
    font-size: .72rem;
    font-weight: 600;
    vertical-align: middle;
}
.project-budget-estimate-lock {
    min-height: 0;
    padding-top: .25rem;
    padding-bottom: .25rem;
}
.oper8-inline-edit-table .assignee-picker-toggle,
.oper8-inline-edit-table .assignee-picker-toggle:hover,
.oper8-inline-edit-table .assignee-picker-toggle:focus,
.oper8-inline-edit-table .assignee-picker-toggle:active,
.oper8-inline-edit-table .assignee-picker-toggle.show {
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    background-color: transparent !important;
    box-shadow: none !important;
}

/* v5.0.39 estimate detail and organisation contact refinements */
.estimate-filters { grid-template-columns: minmax(260px, 1fr) minmax(180px, 260px) minmax(160px, 220px); }
.estimate-detail-hero .badge { align-self: center; }
.organisation-contact-manager { border: 1px solid var(--c8-border); border-radius: 12px; padding: 14px; background: #fff; }
.organisation-contact-list { display: grid; gap: 12px; }
.organisation-contact-row { display: grid; grid-template-columns: minmax(130px, 1fr) minmax(160px, 1.1fr) minmax(110px, .8fr) minmax(130px, .9fr); gap: 10px; padding: 12px; border: 1px solid var(--c8-border); border-radius: 10px; background: var(--c8-soft); }
.organisation-contact-row-actions { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.organisation-contact-row .form-label.small { font-size: .74rem; color: var(--c8-muted); margin-bottom: .25rem; }
@media (max-width: 900px) { .estimate-filters, .organisation-contact-row { grid-template-columns: 1fr; } }

/* Oper8 v5.0.42 project finance tab and dropdown refinements */
.project-finance-tab-shell { margin-top: 18px; }
.project-finance-tab-content { position: relative; overflow: visible; }
.project-finance-tab-content .tab-pane,
.project-finance-card,
.project-finance-table-wrap,
.project-finance-table-wrap table,
.project-finance-table-wrap tbody,
.project-finance-table-wrap tr,
.project-finance-table-wrap td { overflow: visible; }
.project-finance-table-wrap { min-height: 160px; }
.project-finance-action-menu { position: relative; }
.project-finance-action-menu .dropdown-menu { z-index: 1085; }
@media (max-width: 760px) {
  .project-finance-table-wrap { overflow-x: auto; overflow-y: visible; }
}

/* Oper8 v5.0.55 audit log layout refinements */
.audit-filter-card { padding: 16px; }
.audit-filter-form {
  display: grid;
  grid-template-columns: minmax(220px, 1.35fr) minmax(145px, .85fr) minmax(130px, .7fr) minmax(150px, .85fr) minmax(125px, .65fr) minmax(125px, .65fr) auto auto;
  gap: 8px;
  align-items: end;
}
.audit-filter-form .form-control,
.audit-filter-form .form-select,
.audit-filter-form .btn {
  width: 100%;
  min-height: 40px;
  padding-top: .52rem;
  padding-bottom: .52rem;
  font-size: .9rem;
}
.audit-filter-form .btn { white-space: nowrap; }
.audit-log-table-wrap { width: 100%; overflow: visible; }
.audit-log-table { width: 100%; table-layout: fixed; }
.audit-log-table th,
.audit-log-table td {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
  vertical-align: top;
}
.audit-log-table th { font-size: .78rem; }
.audit-log-table td { font-size: .86rem; }
.audit-log-table code {
  white-space: normal;
  overflow-wrap: anywhere;
  word-break: break-word;
}
.audit-col-when { width: 15%; }
.audit-col-user { width: 13%; }
.audit-col-action { width: 17%; }
.audit-col-entity { width: 12%; }
.audit-col-details { width: 33%; }
.audit-col-ip { width: 10%; }
.audit-details-cell { line-height: 1.35; }
@media (max-width: 1399.98px) {
  .audit-filter-form {
    grid-template-columns: minmax(180px, 1.15fr) minmax(130px, .75fr) minmax(120px, .65fr) minmax(135px, .75fr) minmax(118px, .6fr) minmax(118px, .6fr) auto auto;
  }
  .audit-filter-form .form-control,
  .audit-filter-form .form-select,
  .audit-filter-form .btn {
    font-size: .84rem;
    padding-left: .65rem;
    padding-right: .65rem;
  }
}
@media (max-width: 1199.98px) {
  .audit-filter-form { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .audit-filter-search { grid-column: span 2; }
}
@media (max-width: 767.98px) {
  .audit-filter-form { grid-template-columns: 1fr; }
  .audit-filter-search { grid-column: auto; }
  .audit-log-table { table-layout: auto; }
  .audit-log-table th,
  .audit-log-table td { font-size: .78rem; padding-left: .35rem; padding-right: .35rem; }
}

/* Oper8 v5.0.60 invoice page, sent status, line items and payable allocations */
.project-finance-card .project-finance-create-invoice,
.project-finance-card .project-finance-create-invoice:visited,
.project-finance-card .project-finance-create-invoice:hover { color: #fff; }
.invoice-page-form .card-soft h2 { margin-bottom: .25rem; }
.invoice-details-card { padding-bottom: 18px; }
.compact-heading { margin-bottom: 10px; }
.invoice-details-grid {
  display: grid;
  grid-template-columns: minmax(180px, 1.5fr) minmax(130px, 1fr) minmax(160px, 1.1fr) minmax(110px, .85fr) minmax(115px, .75fr) minmax(115px, .75fr);
  gap: 10px;
  align-items: end;
}
.invoice-detail-notes { grid-column: 1 / -1; }
.invoice-details-grid .form-label,
.invoice-line-item .form-label {
  font-size: .72rem;
  margin-bottom: .22rem;
  color: var(--muted);
}
.invoice-line-card .section-heading { align-items: flex-start; gap: 12px; }
.invoice-line-headings {
  display: grid;
  grid-template-columns: var(--invoice-line-grid-columns, 76px minmax(220px, 1.7fr) minmax(170px, 1fr) minmax(80px, .42fr) minmax(115px, .58fr) minmax(115px, .58fr) 76px);
  gap: 10px;
  padding: 0 14px 8px;
  color: var(--muted);
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.invoice-line-items { display: grid; gap: 14px; }
.invoice-line-item {
  border: 1px solid rgba(148, 163, 184, .35);
  border-radius: 16px;
  padding: 14px;
  background: rgba(248, 250, 252, .72);
}
.invoice-line-main {
  display: grid;
  grid-template-columns: var(--invoice-line-grid-columns, 76px minmax(220px, 1.7fr) minmax(170px, 1fr) minmax(80px, .42fr) minmax(115px, .58fr) minmax(115px, .58fr) 76px);
  gap: 10px;
  align-items: end;
}
.invoice-line-main .form-label { display: none; }
.invoice-line-description textarea {
  min-height: 38px;
  resize: none;
  overflow: hidden;
}
.invoice-line-number .form-label { text-align: right; }
.invoice-line-remove { align-self: end; }
.invoice-icon-btn {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.invoice-line-total-field,
.invoice-line-total-field:read-only {
  background: #eef2f7;
  color: #475569;
  font-weight: 700;
  cursor: not-allowed;
}
.invoice-line-payable-toggle { margin-top: 10px; }
.invoice-line-payable-panel {
  margin-top: 10px;
  border-top: 1px dashed rgba(148, 163, 184, .55);
  padding-top: 10px;
}
.invoice-payable-heading,
.invoice-payable-allocation {
  display: grid;
  grid-template-columns: minmax(190px, 1fr) minmax(120px, .45fr) 34px;
  gap: 8px;
  align-items: center;
}
.invoice-payable-heading {
  margin-bottom: 6px;
  color: var(--muted);
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.invoice-payable-allocations { display: grid; gap: 8px; }
.invoice-add-payable-btn { margin-top: 8px; }
.invoice-summary-card { top: 88px; }
.invoice-total-row {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding: 9px 0;
  border-bottom: 1px solid rgba(226, 232, 240, .9);
}
.invoice-total-row span { color: var(--muted); }
.invoice-total-row-strong {
  font-size: 1.08rem;
  border-bottom: 0;
}
.invoice-total-row-strong strong { color: var(--brand); }
.invoice-total-row-strong span { font-weight: 700; }
.invoice-mini-list { display: grid; gap: 8px; }
.invoice-mini-row {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 9px 10px;
  border: 1px solid rgba(226, 232, 240, .9);
  border-radius: 12px;
  text-decoration: none;
  color: inherit;
  background: rgba(248, 250, 252, .7);
}
.invoice-mini-row:hover,
.invoice-mini-row.active { border-color: rgba(37, 99, 235, .35); background: rgba(239, 246, 255, .85); }
.invoice-mini-row span { display: grid; gap: 2px; min-width: 0; }
.invoice-mini-row strong { font-size: .85rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.invoice-mini-row small { color: var(--muted); }
.invoice-mini-row em { font-style: normal; font-weight: 700; white-space: nowrap; }
@media (max-width: 1199.98px) {
  .invoice-summary-card { position: static; }
  .invoice-details-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .invoice-detail-title { grid-column: span 2; }
}
@media (max-width: 991.98px) {
  .invoice-line-headings { display: none; }
  .invoice-line-main { grid-template-columns: 1fr 1fr; }
  .invoice-line-main .form-label { display: block; }
  .invoice-line-description { grid-column: 1 / -1; }
  .invoice-line-remove { grid-column: 1 / -1; }
  .invoice-payable-heading { display: none; }
}
@media (max-width: 767.98px) {
  .invoice-details-grid { grid-template-columns: 1fr 1fr; }
  .invoice-detail-title,
  .invoice-detail-notes { grid-column: 1 / -1; }
}
@media (max-width: 575.98px) {
  .invoice-line-main,
  .invoice-payable-allocation { grid-template-columns: 1fr; }
  .invoice-line-item { padding: 12px; }
  .invoice-line-number .form-label { text-align: left; }
}

/* Oper8 v5.0.60 invoice notes, panel fees and estimate line pull-in */
.invoice-details-grid {
  grid-template-columns: minmax(180px, 1.45fr) minmax(130px, .95fr) minmax(160px, 1.05fr) minmax(115px, .75fr) minmax(115px, .7fr) minmax(115px, .7fr);
}
.invoice-notes-details {
  border: 1px solid rgba(226, 232, 240, .9);
  border-radius: 14px;
  background: rgba(248, 250, 252, .72);
  padding: 10px 12px;
}
.invoice-notes-details summary {
  cursor: pointer;
  color: var(--muted);
  font-weight: 700;
  font-size: .86rem;
}
.invoice-notes-details[open] summary { color: var(--text); }
.invoice-line-heading { align-items: center; }
.invoice-line-tools {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.invoice-action-row {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.invoice-action-row .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  white-space: nowrap;
}
@media (max-width: 1399.98px) {
  .invoice-details-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .invoice-detail-title { grid-column: span 2; }
}
@media (max-width: 1199.98px) {
  .invoice-details-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 575.98px) {
  .invoice-line-heading { align-items: flex-start; }
  .invoice-line-tools { width: 100%; justify-content: flex-start; }
  .invoice-action-row { justify-content: stretch; }
  .invoice-action-row .btn { flex: 1 1 auto; }
}


/* Oper8 v5.0.62 invoice amount validation styling */
.invoice-total-row strong.text-danger {
  color: var(--danger, #dc2626) !important;
}

/* Oper8 v5.0.62 invoice and navigation refinements */
.project-finance-invoice-filters {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) minmax(150px, .42fr) minmax(150px, .42fr) auto auto;
  gap: 8px;
  align-items: center;
}
.project-finance-invoice-filters .btn {
  white-space: nowrap;
}
.invoice-line-tools [data-add-invoice-line] {
  width: auto;
  min-width: 0;
  padding: 0 12px;
  gap: 6px;
}
.invoice-linked-payable-label {
  font-size: .78rem;
  font-weight: 700;
}
.invoice-line-remove {
  align-self: end;
  margin: 0;
}
.invoice-line-remove .invoice-icon-btn {
  border: 0;
  margin: 0;
  box-shadow: none;
  background: transparent;
}
.invoice-line-remove .invoice-icon-btn .app-icon {
  margin: 0;
}
.invoice-line-remove .invoice-icon-btn:hover,
.invoice-line-remove .invoice-icon-btn:focus {
  background: rgba(220, 38, 38, .08);
}

.invoice-summary-card .invoice-total-row-secondary {
  font-size: .82rem;
  padding-top: 6px;
  padding-bottom: 6px;
}
.invoice-summary-card .invoice-total-row-secondary strong { font-size: .86rem; }
.invoice-project-summary-card summary {
  cursor: pointer;
  list-style: none;
  font-size: 1.05rem;
  font-weight: 800;
}
.invoice-project-summary-card summary::-webkit-details-marker { display: none; }
.invoice-project-summary-card summary::after {
  content: '+';
  float: right;
  color: var(--c8-muted);
  font-weight: 900;
}
.invoice-project-summary-card[open] summary::after { content: '–'; }
.invoice-line-tools [data-add-invoice-line],
.invoice-line-tools [data-add-invoice-line] .app-icon {
  color: var(--bs-btn-color, var(--c8-primary));
}
.invoice-line-tools [data-add-invoice-line]:hover,
.invoice-line-tools [data-add-invoice-line]:focus,
.invoice-line-tools [data-add-invoice-line]:hover .app-icon,
.invoice-line-tools [data-add-invoice-line]:focus .app-icon {
  color: var(--bs-btn-hover-color, #fff);
}
.invoice-payable-allocation [data-remove-invoice-payable] {
  border: 0;
  margin: 0;
  box-shadow: none;
  background: transparent;
}
.invoice-payable-allocation [data-remove-invoice-payable] .app-icon { margin: 0; }
.invoice-payable-allocation [data-remove-invoice-payable]:hover,
.invoice-payable-allocation [data-remove-invoice-payable]:focus,
.invoice-line-remove .invoice-icon-btn:hover,
.invoice-line-remove .invoice-icon-btn:focus {
  background: rgba(220, 38, 38, .08);
  color: var(--danger, #dc2626);
}
@media (max-width: 991.98px) {
  .project-finance-invoice-filters {
    grid-template-columns: 1fr 1fr;
  }
}
@media (max-width: 575.98px) {
  .project-finance-invoice-filters {
    grid-template-columns: 1fr;
  }
}

/* Oper8 v5.0.64 invoice polish and stable topbar shrink */
.topbar {
  will-change: padding, box-shadow, background-color;
}
body.topbar-shrunk .sticky-card {
  top: 78px;
}
.invoice-summary-card .invoice-total-row,
.invoice-summary-card .invoice-total-row span,
.invoice-summary-card .invoice-total-row strong {
  font-size: .95rem;
}
.invoice-summary-card .invoice-total-row {
  background: transparent !important;
  margin-left: 0;
  margin-right: 0;
  border-radius: 0;
}
.invoice-summary-card .invoice-total-row-strong {
  font-size: .95rem;
  border-bottom: 1px solid #cdcdcd;
  margin-bottom: .5em;
}
.invoice-summary-card .invoice-total-row-strong span,
.invoice-summary-card .invoice-total-row-strong strong {
  font-size: .95rem;
  font-weight: 700;
}
.invoice-line-tools {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.invoice-line-tools .btn {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-size: .875rem;
  font-weight: 700;
  line-height: 1;
}
.invoice-line-tools .btn .app-icon,
.invoice-line-tools .btn span {
  color: currentColor !important;
  margin: 0;
}
.invoice-line-tools [data-add-invoice-line] {
  color: var(--c8-primary) !important;
  border-color: var(--c8-primary) !important;
}
.invoice-line-tools [data-add-invoice-line]:hover,
.invoice-line-tools [data-add-invoice-line]:focus {
  color: #fff !important;
  background: var(--c8-primary) !important;
  border-color: var(--c8-primary) !important;
}
.invoice-line-remove {
  margin: .5em 0;
}
.invoice-line-remove .invoice-icon-btn {
  margin: 0 !important;
}
.invoice-payable-allocation [data-remove-invoice-payable] {
  border: 0 !important;
  margin: 0 !important;
}
.invoice-payable-allocation [data-remove-invoice-payable]:hover,
.invoice-payable-allocation [data-remove-invoice-payable]:focus,
.invoice-line-remove .invoice-icon-btn:hover,
.invoice-line-remove .invoice-icon-btn:focus {
  background: rgba(220, 38, 38, .08) !important;
  color: var(--danger, #dc2626) !important;
}

/* Oper8 v5.0.66 invoice categories, budget override and layout */
.invoice-line-category .form-control { min-height: 38px; }
.invoice-budget-override-panel {
  border: 1px dashed rgba(245, 158, 11, .55);
  border-radius: 12px;
  background: rgba(255, 251, 235, .8);
  padding: 10px;
}
.invoice-summary-card .invoice-total-row-secondary span,
.invoice-summary-card .invoice-total-row-secondary strong { font-size: .78rem; }
@media (max-width: 991.98px) {
  .invoice-line-category { grid-column: 1 / -1; }
}

/* Oper8 v5.0.67 reports workspace */
.report-filter-card .section-heading { margin-bottom: 14px; }
.report-filter-form {
  display: grid;
  grid-template-columns: 1.15fr 1.35fr 1.15fr 1.15fr .9fr .9fr auto;
  gap: 12px;
  align-items: end;
}
.report-filter-form .form-label { font-size: .78rem; margin-bottom: .25rem; color: #64748b; }
.report-filter-actions { display: flex; gap: 8px; align-items: center; flex-wrap: nowrap; }
.report-filter-actions .btn { white-space: nowrap; }
.report-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}
.report-kpi { padding: 18px; }
.report-kpi span { display: block; font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #64748b; }
.report-kpi strong { display: block; margin-top: 6px; font-size: 1.45rem; color: #0f172a; }
.report-kpi small { display: block; margin-top: 4px; color: #64748b; }
.report-card .section-heading span { font-size: .86rem; color: #64748b; }
.report-table th { font-size: .78rem; color: #64748b; }
.report-table td { vertical-align: middle; }
.report-invoice-list { display: flex; flex-direction: column; gap: 10px; }
.report-invoice-item {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding: 12px;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  color: inherit;
  text-decoration: none;
  background: #fff;
}
.report-invoice-item:hover { border-color: var(--oper8-primary); box-shadow: 0 8px 24px rgba(15, 23, 42, .08); }
.report-invoice-item small { display: block; margin-top: 3px; color: #64748b; }
.report-invoice-item .text-end { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; min-width: 110px; }
@media (max-width: 1400px) {
  .report-filter-form { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .report-filter-actions { grid-column: span 3; }
}
@media (max-width: 992px) {
  .report-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 640px) {
  .report-filter-form { grid-template-columns: 1fr; }
  .report-filter-actions { grid-column: auto; flex-wrap: wrap; }
  .report-summary-grid { grid-template-columns: 1fr; }
  .report-invoice-item { flex-direction: column; }
  .report-invoice-item .text-end { align-items: flex-start; }
}

/* Oper8 v5.0.69+ dedicated estimate builder */
.estimate-page-form .card-soft h2 { margin-bottom: .25rem; }
.estimate-details-grid {
  display: grid;
  grid-template-columns: minmax(220px, 1.6fr) minmax(140px, 1fr) minmax(160px, 1.05fr) minmax(130px, .8fr) minmax(130px, .8fr);
  gap: 10px;
  align-items: end;
}
.estimate-detail-title { grid-column: span 1; }
.estimate-line-card .section-heading { align-items: flex-start; gap: 12px; }
.estimate-line-headings,
.estimate-line-main {
  display: grid;
  grid-template-columns: minmax(180px, 1.25fr) minmax(145px, .85fr) minmax(145px, .85fr) minmax(100px, .45fr) minmax(90px, .4fr) minmax(110px, .5fr) 34px;
  gap: 10px;
  align-items: end;
}
.estimate-line-headings {
  padding: 0 14px 8px;
  color: var(--muted);
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.estimate-line-items { display: grid; gap: 14px; }
.estimate-line-item {
  border: 1px solid rgba(148, 163, 184, .35);
  border-radius: 16px;
  padding: 14px;
  background: rgba(248, 250, 252, .72);
}
.estimate-line-main .form-label { display: none; }
.estimate-line-number .form-label { text-align: right; }
.estimate-line-remove { align-self: end; margin: .5em 0; }
.estimate-line-total-field,
.estimate-line-total-field:read-only {
  background: #eef2f7;
  color: #475569;
  font-weight: 700;
  cursor: not-allowed;
}
.estimate-line-notes { margin-top: 10px; }
.estimate-line-notes summary,
.estimate-source-card summary {
  cursor: pointer;
  font-weight: 700;
  font-size: .86rem;
}
.estimate-line-notes textarea { resize: vertical; }
.estimate-adjustment-row {
  display: grid;
  grid-template-columns: minmax(130px, 1fr) 90px minmax(90px, .6fr) minmax(90px, .6fr) 34px;
  gap: 8px;
  align-items: center;
  margin-bottom: 8px;
}
.estimate-adjustment-row strong { text-align: right; white-space: nowrap; }
.estimate-excel-mapping {
  border: 1px dashed rgba(37, 99, 235, .35);
  background: rgba(239, 246, 255, .55);
  border-radius: 14px;
  padding: 12px;
}
.estimate-excel-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
@media (max-width: 1199.98px) {
  .estimate-details-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .estimate-excel-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 991.98px) {
  .estimate-line-headings { display: none; }
  .estimate-line-main { grid-template-columns: 1fr 1fr; }
  .estimate-line-main .form-label { display: block; }
  .estimate-line-title { grid-column: 1 / -1; }
  .estimate-line-remove { grid-column: 1 / -1; }
  .estimate-adjustment-row { grid-template-columns: 1fr 86px 1fr 1fr 34px; }
  .estimate-excel-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 767.98px) {
  .estimate-details-grid,
  .estimate-line-main,
  .estimate-adjustment-row,
  .estimate-excel-grid { grid-template-columns: 1fr; }
  .estimate-adjustment-row strong { text-align: left; }
}

/* Oper8 v5.0.70 estimate import and GST refinements */
.estimate-line-notes .ck-editor { margin-top: 8px; }
.estimate-line-notes .ck-editor__editable { min-height: 82px; }
.estimate-adjustment-row .invoice-icon-btn { margin: 0; }

/* Oper8 v5.0.73 estimate builder refinements */
.estimate-source-card {
  padding: 0;
  overflow: hidden;
}
.estimate-source-card > summary {
  list-style: none;
  cursor: pointer;
  padding: 18px 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.estimate-source-card > summary::-webkit-details-marker { display: none; }
.estimate-source-card > summary::after {
  content: '\f282';
  font-family: 'bootstrap-icons';
  font-size: .9rem;
  color: var(--muted);
  transition: transform .18s ease;
}
.estimate-source-card[open] > summary::after { transform: rotate(180deg); }
.estimate-source-card > summary strong {
  display: block;
  font-size: 1rem;
  color: var(--text);
}
.estimate-source-card > summary small {
  display: block;
  color: var(--muted);
  font-size: .78rem;
  margin-top: 2px;
}
.estimate-source-content {
  padding: 0 20px 20px;
}
.estimate-line-card [data-add-estimate-line].invoice-icon-btn,
.estimate-line-card .estimate-heading-btn {
  width: auto;
  min-width: 92px;
  height: 36px;
  padding: 0 .8rem;
  gap: .35rem;
}
.estimate-line-card [data-add-estimate-line].invoice-icon-btn .app-icon,
.estimate-line-card .estimate-heading-btn .app-icon {
  margin: 0;
}
.estimate-line-card .estimate-heading-btn {
  min-width: 132px;
  justify-content: center;
}
.estimate-line-remove .estimate-delete-icon-btn,
.estimate-adjustment-row .estimate-delete-icon-btn {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  margin: 0 !important;
}
.estimate-line-remove .estimate-delete-icon-btn .app-icon,
.estimate-adjustment-row .estimate-delete-icon-btn .app-icon {
  margin: 0 !important;
}
.estimate-line-remove .estimate-delete-icon-btn:hover,
.estimate-line-remove .estimate-delete-icon-btn:focus,
.estimate-adjustment-row .estimate-delete-icon-btn:hover,
.estimate-adjustment-row .estimate-delete-icon-btn:focus {
  background: rgba(220, 38, 38, .08) !important;
}
@media (max-width: 767.98px) {
  .estimate-line-card [data-add-estimate-line].invoice-icon-btn,
  .estimate-line-card .estimate-heading-btn { width: 100%; }
}

/* Oper8 v5.0.74 estimate review, source and PDF polish */
.estimate-source-card { overflow: visible; }
.estimate-source-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  align-items: end;
}
.estimate-source-control-row {
  display: flex;
  align-items: stretch;
  gap: 8px;
}
.estimate-source-control-row > .form-control,
.estimate-source-control-row > .form-select,
.estimate-source-control-row > .bootstrap-select {
  min-width: 0;
  flex: 1 1 auto;
}
.estimate-source-control-row .bootstrap-select > .dropdown-toggle,
.estimate-source-control-row > .form-control,
.estimate-source-control-row > .form-select,
.estimate-source-icon-btn {
  min-height: 44px;
}
.estimate-source-icon-btn {
  flex: 0 0 44px;
  width: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.estimate-source-icon-btn .app-icon { margin: 0; }
.estimate-source-card .dropdown-menu { z-index: 1060; }
.estimate-share-link-box {
  border: 1px solid rgba(37, 99, 235, .18);
  background: rgba(239, 246, 255, .55);
  border-radius: 12px;
  padding: 10px;
}
.estimate-line-card [data-add-estimate-line].invoice-icon-btn,
.estimate-line-card [data-add-estimate-line].invoice-icon-btn span,
.estimate-line-card [data-add-estimate-line].invoice-icon-btn .app-icon {
  color: var(--c8-primary) !important;
}
.estimate-line-card [data-add-estimate-line].invoice-icon-btn {
  border-color: var(--c8-primary) !important;
  min-width: 104px;
}
.estimate-line-card [data-add-estimate-line].invoice-icon-btn:hover,
.estimate-line-card [data-add-estimate-line].invoice-icon-btn:focus {
  background: var(--c8-primary) !important;
  color: #fff !important;
}
.estimate-line-card [data-add-estimate-line].invoice-icon-btn:hover span,
.estimate-line-card [data-add-estimate-line].invoice-icon-btn:hover .app-icon,
.estimate-line-card [data-add-estimate-line].invoice-icon-btn:focus span,
.estimate-line-card [data-add-estimate-line].invoice-icon-btn:focus .app-icon {
  color: #fff !important;
}
.estimate-delete-icon-btn,
.estimate-delete-icon-btn:hover,
.estimate-delete-icon-btn:focus {
  border: 0 !important;
}
@media (max-width: 1199.98px) {
  .estimate-source-row { grid-template-columns: 1fr; }
}
@media (max-width: 575.98px) {
  .estimate-source-control-row { flex-direction: column; }
  .estimate-source-icon-btn { width: 100%; flex-basis: 44px; }
}

/* Oper8 v5.0.75 estimate PDF designer and estimate builder refinements */
.estimate-line-headings,
.estimate-line-main {
  grid-template-columns: minmax(180px, 1.3fr) minmax(145px, .85fr) minmax(100px, .45fr) minmax(90px, .4fr) minmax(110px, .5fr) minmax(118px, .55fr) 34px;
}
.estimate-line-notes-inline {
  margin-top: 0;
  align-self: end;
  min-width: 0;
}
.estimate-line-notes-inline > summary {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  width: 100%;
  justify-content: center;
  border: 1px solid rgba(148, 163, 184, .55);
  border-radius: 10px;
  background: #fff;
  color: var(--text);
  padding: 0 .6rem;
}
.estimate-line-notes-inline[open] > summary { border-color: rgba(37, 99, 235, .45); color: var(--c8-primary); }
.estimate-line-notes-body {
  grid-column: 1 / -1;
  margin-top: 10px;
  padding: 12px;
  border: 1px solid rgba(148, 163, 184, .28);
  border-radius: 12px;
  background: rgba(255, 255, 255, .72);
  display: grid;
  grid-template-columns: minmax(180px, .35fr) minmax(260px, 1fr);
  gap: 12px;
}
.estimate-line-notes-editor .ck-editor__editable { min-height: 86px; }
.estimate-category-summary-card h2 { margin-bottom: .75rem; }
.estimate-category-summary-list { display: grid; gap: 8px; }
.estimate-category-summary-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid rgba(203, 213, 225, .8);
}
.estimate-category-summary-row:last-child { border-bottom: 0; }
.estimate-category-summary-row span { min-width: 0; }
.estimate-category-summary-row small { display: block; color: var(--muted); font-size: .74rem; margin-top: 2px; }
.estimate-active-share-pill { background: rgba(37, 99, 235, .08); color: var(--c8-primary); }
.estimate-actions-dropdown .dropdown-menu { min-width: 280px; }
.pdf-renderer-status-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.pdf-renderer-status {
  border: 1px solid rgba(148, 163, 184, .35);
  border-radius: 12px;
  padding: 10px 12px;
  background: rgba(248, 250, 252, .85);
}
.pdf-renderer-status strong { display: block; font-size: .82rem; }
.pdf-renderer-status span { display: block; color: var(--muted); font-size: .75rem; margin-top: 2px; overflow-wrap: anywhere; }
.pdf-renderer-status.is-ok { border-color: rgba(22, 163, 74, .28); background: rgba(240, 253, 244, .75); }
.pdf-renderer-status.is-ok span { color: #166534; }
.pdf-renderer-status.is-warn { border-color: rgba(245, 158, 11, .28); background: rgba(255, 251, 235, .8); }
.pdf-designer-grid {
  display: grid;
  grid-template-columns: minmax(280px, .95fr) minmax(320px, 1.05fr);
  gap: 18px;
  align-items: start;
}
.pdf-designer-editor textarea { font-size: .78rem; line-height: 1.45; }
.pdf-designer-preview-wrap { position: sticky; top: 86px; }
.pdf-designer-preview {
  width: 100%;
  min-height: 760px;
  border: 1px solid rgba(148, 163, 184, .45);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 18px 40px rgba(15, 23, 42, .08);
}
.placeholder-pill-list { display: flex; flex-wrap: wrap; gap: 6px; }
.placeholder-pill-list code { background: #f1f5f9; border: 1px solid #e2e8f0; border-radius: 999px; padding: 3px 8px; color: #1e293b; }
@media (max-width: 1199.98px) {
  .pdf-renderer-status-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .pdf-designer-grid { grid-template-columns: 1fr; }
  .pdf-designer-preview-wrap { position: static; }
}
@media (max-width: 991.98px) {
  .estimate-line-notes-inline { grid-column: 1 / -1; }
  .estimate-line-notes-body { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .pdf-renderer-status-grid { grid-template-columns: 1fr; }
}

/* Oper8 v5.0.76 estimate template designer and settings refinements */
.pdf-visual-builder {
  border: 1px solid rgba(148, 163, 184, .35);
  background: rgba(248, 250, 252, .75);
  border-radius: 14px;
  padding: 14px;
}
.pdf-block-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}
.pdf-block-item {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 42px;
  border: 1px solid rgba(148, 163, 184, .38);
  border-radius: 12px;
  background: #fff;
  padding: 9px 10px;
  cursor: grab;
  user-select: none;
}
.pdf-block-item span { display: inline-flex; align-items: center; gap: 6px; min-width: 0; }
.pdf-block-item .app-icon { margin: 0; color: var(--c8-primary); }
.pdf-block-item.is-dragging { opacity: .55; cursor: grabbing; }
.pdf-designer-editor textarea[data-pdf-template-css] { min-height: 360px; }
.settings-tab-shell .tab-content { overflow: visible; }
.estimate-source-card .bootstrap-select .dropdown-menu { max-width: min(720px, 90vw); }
.estimate-actions-dropdown .dropdown-item .app-icon { margin-right: .35rem; }
.estimate-line-notes-inline > summary::before { content: '\F4E8'; font-family: 'bootstrap-icons'; font-size: .9rem; }
.estimate-line-notes-inline[open] > summary::before { content: '\F4E2'; }
@media (max-width: 1199.98px) { .pdf-block-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .pdf-block-list { grid-template-columns: 1fr; } }

/* Oper8 v5.0.77 estimate PDF/client link and line item refinements */
.estimate-line-headings,
.estimate-line-main {
  grid-template-columns: minmax(180px, 1.1fr) minmax(145px, .75fr) minmax(92px, .38fr) minmax(82px, .34fr) minmax(105px, .44fr) minmax(240px, 1.2fr) 34px;
}
.estimate-line-notes-editor .ck-editor { margin-top: 0; }
.estimate-line-notes-editor .ck-editor__editable { min-height: 92px; }
.estimate-line-extra {
  display: flex;
  align-items: flex-end;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px dashed rgba(148, 163, 184, .36);
}
.estimate-line-other-check {
  min-height: 38px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin: 0;
  padding: 8px 10px;
  border: 1px solid rgba(148, 163, 184, .45);
  border-radius: 10px;
  background: #fff;
}
.estimate-line-other-check .form-check-input { margin: 0; }
.estimate-line-service-field { min-width: min(360px, 100%); flex: 1 1 260px; }
.public-estimate-card { max-width: 680px; }
.public-estimate-meta {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin-top: 18px;
}
.public-estimate-meta > div {
  border: 1px solid rgba(148, 163, 184, .32);
  border-radius: 12px;
  padding: 10px 12px;
  background: rgba(248, 250, 252, .75);
}
.public-estimate-meta span { display: block; color: var(--muted); font-size: .74rem; margin-bottom: 3px; }
.public-estimate-meta strong { display: block; color: var(--text); font-size: .9rem; overflow-wrap: anywhere; }
@media (max-width: 1199.98px) {
  .estimate-line-headings { display: none; }
  .estimate-line-main { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .estimate-line-main .form-label { display: block; }
  .estimate-line-title,
  .estimate-line-notes-editor { grid-column: 1 / -1; }
}
@media (max-width: 767.98px) {
  .estimate-line-main { grid-template-columns: 1fr; }
  .estimate-line-extra { align-items: stretch; }
  .estimate-line-other-check,
  .estimate-line-service-field { width: 100%; }
  .public-estimate-meta { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
  .public-estimate-meta { grid-template-columns: 1fr; }
}

/* Oper8 v5.0.81 estimate plain descriptions and Xero quote refinements */
.estimate-line-description-field {
  min-height: 38px;
  resize: none;
  overflow: hidden;
  line-height: 1.45;
}
.estimate-line-notes-editor .estimate-line-description-field {
  margin: 0;
}
.estimate-line-notes-editor .ck-editor { display: none; }

/* Oper8 v5.0.82 estimate/Xero PDF cleanup */
.public-estimate-review > .container { max-width: 1700px; }
.estimate-column-menu .dropdown-menu { min-width: 220px; }
.estimate-line-headings,
.estimate-line-main {
  grid-template-columns: minmax(170px, 1.05fr) minmax(260px, 1.35fr) minmax(92px, .42fr) minmax(82px, .38fr) minmax(145px, .75fr) minmax(145px, .75fr) minmax(110px, .48fr) 34px;
}
.estimate-line-main [data-estimate-column].d-none,
.estimate-line-headings [data-estimate-column].d-none { display: none !important; }
.estimate-line-service-field { min-width: 0; flex: initial; }
.estimate-line-extra,
.estimate-line-other-check { display: none !important; }
@media (max-width: 1199.98px) {
  .estimate-line-headings { display: none; }
  .estimate-line-main { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .estimate-line-title,
  .estimate-line-notes-editor { grid-column: 1 / -1; }
}
@media (max-width: 767.98px) {
  .estimate-line-main { grid-template-columns: 1fr; }
}

/* Oper8 v5.0.89 estimate line-item layout polish */
@media (min-width: 1200px) {
  .estimate-line-headings,
  .estimate-line-main {
    grid-template-columns: var(--estimate-line-grid-columns, minmax(180px, 1.2fr) minmax(260px, 1.75fr) minmax(92px, .48fr) minmax(82px, .42fr) minmax(145px, .9fr) minmax(110px, .52fr) 34px);
  }
}
.estimate-line-main {
  align-items: start;
}
.estimate-line-main .estimate-line-field,
.estimate-line-main .estimate-line-remove {
  align-self: start;
}
.estimate-line-main .estimate-line-field .form-control,
.estimate-line-main .estimate-line-field .form-select,
.estimate-line-total-field,
.estimate-line-total-field:read-only {
  min-height: 50px;
  background: transparent !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}
.estimate-line-main .estimate-line-field .form-control:focus,
.estimate-line-main .estimate-line-field .form-select:focus {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
}
.estimate-line-description-field {
  min-height: 50px;
}
.estimate-line-title .form-control {
  font-weight: 700;
}
.estimate-line-remove {
  margin-top: 6px;
}

/* Oper8 v5.0.90 workload, retainer SLA and hosting polish */
.personal-calendar-sync {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border-radius: 999px;
  text-decoration: none;
}
.personal-calendar-sync .app-icon { margin: 0; }
.hosting-register-actions { display: flex; gap: .5rem; justify-content: flex-end; flex-wrap: wrap; }


/* Oper8 v5.0.91 error fix and estimate line-item UI tidy */
.estimate-line-headings,
.estimate-line-main {
  align-items: start;
}
.estimate-line-main .estimate-line-field,
.estimate-line-main .estimate-line-remove {
  align-self: start;
}
.estimate-line-main .estimate-line-field .form-control,
.estimate-line-main .estimate-line-field .form-select {
  min-height: 50px;
  background: #fff !important;
  border: 1px solid rgba(203, 213, 225, .95) !important;
  border-radius: 10px !important;
  box-shadow: none !important;
}
.estimate-line-main .estimate-line-field .form-control:focus,
.estimate-line-main .estimate-line-field .form-select:focus {
  background: #fff !important;
  border-color: rgba(37, 99, 235, .55) !important;
  box-shadow: 0 0 0 .18rem rgba(37, 99, 235, .12) !important;
}
.estimate-line-total-field,
.estimate-line-total-field:read-only {
  min-height: 50px;
  background: #eef2f7 !important;
  border: 1px solid rgba(203, 213, 225, .95) !important;
  border-radius: 10px !important;
  color: #475569;
  font-weight: 700;
}
.estimate-line-description-field { min-height: 50px; }
.estimate-line-title .form-control { font-weight: 700; }
.estimate-line-card .estimate-heading-btn:hover,
.estimate-line-card .estimate-heading-btn:focus {
  background: var(--c8-primary) !important;
  border-color: var(--c8-primary) !important;
  color: #fff !important;
}
.estimate-line-card .estimate-heading-btn:hover span,
.estimate-line-card .estimate-heading-btn:hover .app-icon,
.estimate-line-card .estimate-heading-btn:focus span,
.estimate-line-card .estimate-heading-btn:focus .app-icon {
  color: #fff !important;
}

/* Oper8 v5.0.92 estimate register actions and pagination */
.section-heading .btn.estimate-create-btn,
.section-heading .btn.estimate-create-btn:visited {
  color: #fff !important;
}
.section-heading .btn.estimate-create-btn:hover,
.section-heading .btn.estimate-create-btn:focus {
  color: #fff !important;
  background: var(--c8-primary-dark) !important;
  border-color: var(--c8-primary-dark) !important;
}
.section-heading .btn.estimate-create-btn .app-icon { color: currentColor; }
.estimate-register-table .estimate-actions-dropdown .btn { white-space: nowrap; }
.estimate-register-table .estimate-actions-dropdown .dropdown-menu { min-width: 300px; }
.estimate-register-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding-top: 14px;
  border-top: 1px solid rgba(226, 232, 240, .9);
  color: var(--c8-muted);
  font-size: .88rem;
  font-weight: 650;
}
@media (max-width: 640px) {
  .estimate-register-footer { align-items: stretch; }
  .estimate-register-footer .btn-group { width: 100%; }
  .estimate-register-footer .btn-group .btn { flex: 1; }
}

/* Oper8 v5.0.93 estimate register Xero status and filters */
.estimate-filters {
  grid-template-columns: minmax(260px, 1fr) minmax(180px, 260px) minmax(150px, 210px) minmax(130px, 170px);
  align-items: end;
}
.estimate-register-status-cell small {
  display: inline-block;
  margin-top: 4px;
  max-width: 280px;
  line-height: 1.35;
}
@media (max-width: 1100px) {
  .estimate-filters { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 640px) {
  .estimate-filters { grid-template-columns: 1fr; }
}

/* Oper8 v5.0.102 retainer action menu hardening */
.table-responsive.retainer-register-table { overflow: visible; }
.retainer-context-strip .dropdown-menu, .retainer-register-table .dropdown-menu { z-index: 1060; }

.hosting-register-table-wrap { overflow: visible; }
.invoice-repeat-role { display: inline-flex; align-items: center; gap: 4px; margin-right: 6px; padding: 2px 7px; border-radius: 999px; font-size: .72rem; font-weight: 800; line-height: 1.2; vertical-align: middle; background: #eef2ff; color: #3730a3; }
.invoice-repeat-role .app-icon { width: 13px; height: 13px; margin: 0; }
.invoice-repeat-role-child { background: #ecfdf5; color: #047857; }
.invoice-repeat-role-scheduled { background: #fff7ed; color: #c2410c; }
@media (max-width: 767.98px) { .hosting-register-table-wrap { overflow-x: auto; overflow-y: visible; } }

/* Oper8 v6.0.6 delivery reports dashboard */
.report-delivery-table-wrap { overflow: visible; }
.report-delivery-table th { font-size: .78rem; color: #64748b; text-transform: uppercase; letter-spacing: .04em; }
.report-delivery-table td { vertical-align: top; }
.report-delivery-name { min-width: 260px; }
.report-delivery-name .badge { margin-bottom: 8px; }
.report-delivery-name a { display: block; color: #0f172a; text-decoration: none; }
.report-delivery-name a:hover { color: var(--c8-primary); }
.report-delivery-name small { display: block; color: #64748b; margin-top: 4px; }
.report-delivery-bars { min-width: 260px; }
.report-delivery-bar-row { display: grid; gap: 6px; margin-bottom: 12px; }
.report-delivery-bar-row:last-child { margin-bottom: 0; }
.report-delivery-bar-label { display: flex; justify-content: space-between; gap: 8px; font-size: .82rem; color: #475569; }
.report-delivery-bar-label strong { color: #0f172a; }
.report-delivery-bar { display: flex; height: 12px; border-radius: 999px; background: #e2e8f0; overflow: hidden; }
.report-delivery-bar span { display: block; min-width: 0; }
.report-delivery-bar .is-done { background: #16a34a; }
.report-delivery-bar .is-remaining { background: #93c5fd; }
.report-delivery-bar .is-overdue { background: #dc2626; }
.report-todo-cell { min-width: 360px; }
.report-todo-list { display: grid; gap: 10px; }
.report-todo-item { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; padding: 10px; border: 1px solid #e2e8f0; border-radius: 12px; background: #fff; }
.report-todo-check button { width: 22px; height: 22px; border-radius: 999px; border: 2px solid #cbd5e1; background: #fff; margin-top: 2px; }
.report-todo-check button:hover { border-color: #16a34a; background: #dcfce7; }
.report-todo-main strong { display: block; color: #0f172a; }
.report-todo-main small { display: block; color: #64748b; margin-top: 3px; }
.report-todo-manage { margin-top: 7px; }
.report-todo-manage summary { cursor: pointer; color: var(--c8-primary); font-weight: 700; font-size: .82rem; }
.report-todo-manage-form { margin-top: 8px; padding: 10px; border-radius: 10px; background: #f8fafc; border: 1px solid #e2e8f0; }
.report-todo-add-form { display: grid; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px dashed #cbd5e1; }
.report-todo-add-options { display: grid; grid-template-columns: minmax(150px, 1fr) minmax(150px, 1fr) auto; gap: 8px; align-items: end; }
.report-delivery-email-form { display: grid; grid-template-columns: minmax(190px, 1fr) minmax(160px, 220px) minmax(160px, 220px) minmax(220px, 1.2fr) auto; gap: 12px; align-items: end; }
.report-delivery-email-form .form-check { align-self: center; margin-bottom: 0; }
@media (max-width: 1200px) {
  .report-delivery-email-form { grid-template-columns: 1fr 1fr; }
  .report-delivery-email-form .report-filter-actions { grid-column: span 2; }
}
@media (max-width: 767.98px) {
  .report-delivery-table-wrap { overflow-x: auto; }
  .report-todo-add-options, .report-delivery-email-form { grid-template-columns: 1fr; }
  .report-delivery-email-form .report-filter-actions { grid-column: auto; }
}

/* v6.0.7 Reports dashboard tabs, compact delivery rows and inline checklist UI */
.oper8-report-tabs .nav-link { display: inline-flex; align-items: center; gap: 7px; font-weight: 700; color: #475569; }
.oper8-report-tabs .nav-link.active { color: var(--c8-primary); }
.report-delivery-dashboard-compact { padding: 14px; }
.report-delivery-dashboard-compact .section-heading { margin-bottom: 10px; }
.report-delivery-dashboard-compact .report-delivery-table { margin-bottom: 0; }
.report-delivery-dashboard-compact .report-delivery-table th { padding: 8px 10px; }
.report-delivery-dashboard-compact .report-delivery-table td { padding: 10px; }
.report-delivery-dashboard-compact .report-delivery-name { min-width: 230px; width: 25%; }
.report-delivery-dashboard-compact .report-delivery-bars { min-width: 220px; width: 25%; }
.report-delivery-dashboard-compact .report-delivery-bar-row { gap: 4px; margin-bottom: 8px; }
.report-delivery-dashboard-compact .report-delivery-bar-label { font-size: .76rem; }
.report-delivery-dashboard-compact .report-delivery-bar { height: 9px; }
.report-todo-cell { min-width: 440px; }
.report-todo-list { gap: 7px; }
.report-todo-item { grid-template-columns: auto minmax(190px, 1fr) auto auto; align-items: center; gap: 8px; padding: 7px; border-radius: 10px; }
.report-todo-item.is-saving { opacity: .72; }
.report-todo-editable { min-width: 0; }
.report-todo-title-input { border-color: transparent; background: #f8fafc; font-weight: 650; }
.report-todo-title-input:focus { background: #fff; border-color: var(--c8-primary); box-shadow: 0 0 0 .15rem rgba(37,99,235,.12); }
.report-todo-meta-line { min-height: 20px; margin-top: 3px; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.report-task-link-badge { display: inline-flex; align-items: center; gap: 4px; color: #334155 !important; text-decoration: none; border: 1px solid #e2e8f0; }
.report-assignee-menu { position: relative; }
.report-assignee-toggle { min-width: 58px; padding: 4px 7px; }
.report-assignee-toggle::after { margin-left: 5px; }
.report-assignee-stack { display: inline-flex; align-items: center; }
.report-assignee-stack img, .report-assignee-initial, .report-assignee-empty { width: 24px; height: 24px; border-radius: 999px; object-fit: cover; display: inline-flex; align-items: center; justify-content: center; border: 2px solid #fff; background: #e2e8f0; color: #475569; font-size: .72rem; font-weight: 800; }
.report-assignee-stack img + img, .report-assignee-stack img + .report-assignee-more, .report-assignee-initial + .report-assignee-initial { margin-left: -8px; }
.report-assignee-more { width: 24px; height: 24px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; background: #dbeafe; color: #1d4ed8; border: 2px solid #fff; margin-left: -8px; font-size: .68rem; font-weight: 800; }
.report-assignee-dropdown { width: 260px; max-height: 330px; overflow: auto; }
.report-assignee-option { display: flex; align-items: center; gap: 8px; }
.report-assignee-option img, .report-assignee-option .report-assignee-initial { width: 24px; height: 24px; }
.report-assignee-option .report-assignee-avatar,
.report-assignee-stack .report-assignee-avatar {
  width: 24px;
  height: 24px;
  min-width: 24px;
  border-radius: 50% !important;
  object-fit: cover;
  overflow: hidden;
  display: block;
}
.report-todo-actions .dropdown-toggle { white-space: nowrap; }
.report-todo-add-button { width: 100%; margin-top: 8px; border-style: dashed; }
.report-todo-task-panel .bootstrap-select, .report-todo-task-panel .dropdown.bootstrap-select { width: 100% !important; }
.reports-gantt .gantt_task_line.gantt-locked-task { cursor: default; }
.reports-gantt .gantt_grid_head_cell, .reports-gantt .gantt_cell { font-size: .82rem; }
@media (max-width: 992px) {
  .report-todo-cell { min-width: 360px; }
  .report-todo-item { grid-template-columns: auto minmax(170px, 1fr); }
  .report-todo-assignees, .report-todo-actions { grid-column: 2; }
}

/* Oper8 v6.0.8 Reports delivery dashboard refinements */
.reports-tab-shell { margin-bottom: 18px; }
.reports-tabs .nav-link { display: inline-flex; align-items: center; gap: 7px; }
.report-delivery-dashboard .section-heading .dropdown { flex-shrink: 0; }
.report-delivery-bar-row.has-overdue .report-delivery-bar-label span { color: #b91c1c; font-weight: 800; }
.report-delivery-bar .is-done-overdue { background: #fecaca; }
.report-delivery-bar-row.has-overdue .report-delivery-bar { background: #fee2e2; }
.report-sharing-recipient-list { display: grid; gap: 8px; max-height: 360px; overflow: auto; padding-right: 4px; }
.report-sharing-recipient { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border: 1px solid #e2e8f0; border-radius: 12px; background: #fff; cursor: pointer; }
.report-sharing-recipient:hover { background: #f8fafc; }
.report-sharing-recipient img { width: 28px; height: 28px; border-radius: 999px; object-fit: cover; }
.report-todo-item { border: 0 !important; box-shadow: none; }
.report-todo-title-input { font-weight: 400; min-height: 34px; }
.report-todo-assignees .btn,
.report-todo-actions .btn,
.report-todo-task-button { min-height: 34px; height: 34px; display: inline-flex; align-items: center; justify-content: center; }
.report-assignee-toggle.dropdown-toggle::after,
.report-todo-actions .dropdown-toggle::after { display: none; }
.report-todo-actions .dropdown-toggle { width: 36px; padding-left: 0; padding-right: 0; }
.report-todo-actions .dropdown-toggle i,
.report-todo-task-button i { font-size: 1rem; line-height: 1; }
.report-todo-task-button { width: 36px; padding-left: 0; padding-right: 0; border-color: #dbeafe; background: #eff6ff; color: #1d4ed8; }
.report-todo-task-converted { border-color: #dcfce7; background: #f0fdf4; color: #15803d; }
.report-todo-add-button { width: auto; margin-top: 8px; padding-left: 14px; padding-right: 14px; justify-self: start; }
.report-todo-list { align-items: start; }
@media (max-width: 992px) {
  .report-todo-assignees, .report-todo-actions, .report-todo-task-button { grid-column: auto; }
}

/* Oper8 v6.0.9 Reports delivery board refinements */
.report-delivery-dashboard .section-heading h2 .app-icon { display: none; }
.report-delivery-dashboard .section-heading span { display: none; }
.report-delivery-todos { padding-left: 2em !important; }
.report-todo-list { gap: 0 !important; }
.report-todo-item { padding-top: 0 !important; padding-bottom: 0 !important; }
.report-todo-add-button { margin-bottom: 2em; }
.report-row-tools { display: inline-flex; align-items: center; gap: 4px; margin-right: 6px; vertical-align: top; }
.report-row-drag-handle { cursor: grab; }
.report-row-drag-handle:active { cursor: grabbing; }
tr.is-dragging { opacity: .55; }
.report-delivery-table tr.is-collapsed .report-delivery-bars > *,
.report-delivery-table tr.is-collapsed .report-delivery-todos > * { display: none !important; }
.report-delivery-table tr.is-collapsed .report-delivery-bars,
.report-delivery-table tr.is-collapsed .report-delivery-todos {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
.report-delivery-fullscreen-scope:fullscreen { background: #f8fafc; padding: 18px; overflow: auto; }
.report-delivery-fullscreen-scope:fullscreen .report-delivery-dashboard { min-height: calc(100vh - 36px); }
.report-delivery-budget-row .report-delivery-bar-label strong { font-size: .74rem; }
.report-delivery-bar-row.has-overdue .report-delivery-bar .is-overdue { background: #dc2626; }
@media (max-width: 992px) { .report-delivery-todos { padding-left: 10px !important; } }

/* Oper8 v6.0.10 Reports delivery notes/order/timeline refinements */
.report-delivery-todos-heading { padding-left: 3em !important; }
.report-todo-title-input { background: transparent !important; padding: 2px 5px !important; }
.report-todo-item { border-radius: 0 !important; border-bottom: 1px solid #efefef !important; }
.report-delivery-bar { background: #f1f5f9; }
.report-delivery-bar .is-done,
.report-delivery-bar .is-done-overdue { background: #64748b; }
.report-delivery-bar .is-remaining { background: #cbd5e1; }
.report-delivery-bar .is-overdue { background: #991b1b; }
.report-delivery-bar-row.has-overdue .report-delivery-bar { background: #fee2e2; }
.report-delivery-bar-row.has-overdue .report-delivery-bar .is-done,
.report-delivery-bar-row.has-overdue .report-delivery-bar .is-done-overdue { background: #fca5a5; }
.report-delivery-bar-row.has-overdue .report-delivery-bar .is-remaining,
.report-delivery-bar-row.has-overdue .report-delivery-bar .is-overdue { background: #dc2626; }
.report-notes-checklist-card .section-heading { align-items: start; gap: 12px; }
.report-notes-checklist-group h3 { font-size: .86rem; text-transform: uppercase; letter-spacing: .04em; color: #64748b; margin: 0 0 10px; }
.report-notes-checklist-item { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: start; padding: 10px 0; border-bottom: 1px solid #e2e8f0; }
.report-notes-checklist-item:last-child { border-bottom: 0; }
.report-notes-checklist-item strong { display: block; color: #0f172a; line-height: 1.35; }
.report-notes-checklist-item small { display: block; color: #64748b; margin-top: 3px; line-height: 1.35; }
.report-notes-check-form { margin: 0; }
.report-notes-check-done { width: 28px; height: 28px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; background: #dcfce7; color: #15803d; }
.report-notes-checklist-item.is-done strong { color: #64748b; text-decoration: line-through; text-decoration-thickness: 1px; }
@media (max-width: 992px) { .report-delivery-todos-heading { padding-left: 10px !important; } }
.report-todo-item[draggable="true"] { cursor: grab; }
.report-todo-item.is-dragging { opacity: .55; }
.reports-gantt-filter .bootstrap-select { width: 100% !important; }
.reports-gantt-filter .dropdown-menu { max-width: 420px; }
.report-delivery-dashboard-compact .report-todo-item { grid-template-columns: auto auto minmax(190px, 1fr) auto auto; }
.report-todo-sort-handle { height: 30px; width: 26px; padding: 0; cursor: grab; color: #94a3b8; }
.report-todo-sort-handle:hover { color: #475569; }

/* v6.0.12 Reports timeline and retainer Kanban refinements */
.retainer-kanban-board {
  min-height: calc(100vh - 250px);
  overflow-x: visible;
  overflow-y: visible;
}
.retainer-kanban-board .kanban-column {
  min-height: 620px;
  overflow: visible;
}
.retainer-kanban-board .kanban-dropzone {
  min-height: 470px;
  overflow: visible;
}
.retainer-kanban-board .kanban-card,
.retainer-kanban-board .kanban-card-footer {
  overflow: visible;
}
.retainer-kanban-board .task-assignee-select {
  position: relative;
  z-index: 3;
}
@media (max-width: 1100px) {
  .retainer-kanban-board {
    overflow-x: auto;
  }
}

/* v6.0.15 project validation and public estimate totals */
.project-name-live-feedback { display: none; }
input.is-invalid + .project-name-live-feedback { display: block; }
input.is-checking { background-image: none; }
.public-estimate-total-list { border-top: 1px solid var(--border, #e2e8f0); margin-top: 1rem; padding-top: .75rem; display: grid; gap: .45rem; }
.public-estimate-total-row { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; font-size: .94rem; }
.public-estimate-total-row small, .estimate-category-summary-row small { color: var(--muted, #64748b); font-weight: 500; margin-left: .25rem; }
.public-estimate-total-row-strong { border-top: 1px solid var(--border, #e2e8f0); margin-top: .25rem; padding-top: .65rem; font-size: 1rem; }
.public-estimate-total-row-strong strong { font-size: 1.1rem; }

/* Oper8 v6.0.18 estimate/invoice line sorting and category manager */
.oper8-line-item-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.oper8-line-drag-handle { cursor: grab; }
.oper8-line-item-toolbar .oper8-line-summary {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--muted);
  font-size: .86rem;
}
.invoice-line-item.is-dragging,
.estimate-line-item.is-dragging,
.estimate-group-category-row.dragging {
  opacity: .65;
  box-shadow: 0 18px 40px rgba(15, 23, 42, .14);
}
.invoice-line-item.is-collapsed .invoice-line-main,
.invoice-line-item.is-collapsed .invoice-line-payable-toggle,
.invoice-line-item.is-collapsed .invoice-line-payable-panel,
.estimate-line-item.is-collapsed .estimate-line-main {
  display: none !important;
}
.oper8-line-collapse-btn {
  min-height: 34px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.estimate-group-category-manager {
  border: 1px solid rgba(148, 163, 184, .35);
  border-radius: 14px;
  padding: 12px;
  background: rgba(248, 250, 252, .72);
}
.estimate-group-category-head,
.estimate-group-category-row {
  display: grid;
  grid-template-columns: 34px minmax(80px, .35fr) minmax(180px, 1fr) 34px;
  gap: 8px;
  align-items: center;
}
.estimate-group-category-head {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-bottom: 6px;
  padding: 0 2px;
}
.estimate-group-category-list {
  display: grid;
  gap: 8px;
}
.estimate-group-category-row[data-sortable-item] { cursor: default; }
.estimate-group-category-row [data-estimate-group-category-drag] { cursor: grab; }
.estimate-line-field .bootstrap-select.searchable-select-picker,
.estimate-line-field .dropdown.bootstrap-select { width: 100% !important; }
.estimate-line-field .bootstrap-select > .dropdown-toggle {
  min-height: 50px;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
}
@media (max-width: 767.98px) {
  .oper8-line-item-toolbar { flex-wrap: wrap; }
  .oper8-line-item-toolbar .oper8-line-summary { width: 100%; }
  .estimate-group-category-head { display: none; }
  .estimate-group-category-row { grid-template-columns: 34px 1fr 34px; }
  .estimate-group-category-row input[name="estimate_group_category_name[]"] { grid-column: 2 / 3; }
}

/* Oper8 v6.0.19 line sorting and estimate category picker refinements */
.invoice-line-item.is-collapsed .oper8-line-item-toolbar,
.estimate-line-item.is-collapsed .oper8-line-item-toolbar {
  margin-bottom: 0;
}
.invoice-line-item:not(.is-collapsed) .oper8-line-summary,
.estimate-line-item:not(.is-collapsed) .oper8-line-summary {
  display: none;
}
.estimate-line-field[data-estimate-column="group"] .bootstrap-select .dropdown-menu.show {
  min-width: min(420px, calc(100vw - 40px)) !important;
  width: max-content !important;
  max-width: calc(100vw - 40px) !important;
}
.estimate-line-field[data-estimate-column="group"] .bootstrap-select .dropdown-menu.inner,
.estimate-line-field[data-estimate-column="group"] .bootstrap-select .dropdown-menu.inner.show {
  min-width: 100% !important;
  width: max-content !important;
  max-width: calc(100vw - 40px) !important;
}
.estimate-line-field[data-estimate-column="group"] .bootstrap-select .dropdown-toggle .filter-option-inner-inner {
  overflow: hidden;
  text-overflow: ellipsis;
}
.oper8-create-category-option {
  border-top: 1px solid rgba(148, 163, 184, .35);
  font-weight: 700;
  white-space: normal;
}


/* Oper8 v6.0.21 invoice/service category pickers and invoice line columns */
.invoice-column-menu .dropdown-menu { min-width: 230px; }
.invoice-line-field .bootstrap-select.searchable-select-picker,
.invoice-line-field .dropdown.bootstrap-select { width: 100% !important; }
.invoice-line-field .bootstrap-select > .dropdown-toggle {
  min-height: 38px;
}
.estimate-line-field[data-estimate-column="service"] .bootstrap-select .dropdown-menu.show,
.invoice-line-field[data-invoice-column="category"] .bootstrap-select .dropdown-menu.show,
.invoice-line-field[data-invoice-column="service"] .bootstrap-select .dropdown-menu.show {
  min-width: min(420px, calc(100vw - 40px)) !important;
  width: max-content !important;
  max-width: calc(100vw - 40px) !important;
}
.estimate-line-field[data-estimate-column="service"] .bootstrap-select .dropdown-menu.inner,
.estimate-line-field[data-estimate-column="service"] .bootstrap-select .dropdown-menu.inner.show,
.invoice-line-field[data-invoice-column="category"] .bootstrap-select .dropdown-menu.inner,
.invoice-line-field[data-invoice-column="category"] .bootstrap-select .dropdown-menu.inner.show,
.invoice-line-field[data-invoice-column="service"] .bootstrap-select .dropdown-menu.inner,
.invoice-line-field[data-invoice-column="service"] .bootstrap-select .dropdown-menu.inner.show {
  min-width: 100% !important;
  width: max-content !important;
  max-width: calc(100vw - 40px) !important;
}
.estimate-line-field[data-estimate-column="service"] .bootstrap-select .dropdown-toggle .filter-option-inner-inner,
.invoice-line-field[data-invoice-column="category"] .bootstrap-select .dropdown-toggle .filter-option-inner-inner,
.invoice-line-field[data-invoice-column="service"] .bootstrap-select .dropdown-toggle .filter-option-inner-inner {
  overflow: hidden;
  text-overflow: ellipsis;
}


/* Oper8 v6.0.26 project stage manager */
.project-stage-manager {
  border: 1px solid rgba(148, 163, 184, .35);
  border-radius: 14px;
  padding: 12px;
  background: rgba(248, 250, 252, .72);
}
.project-stage-head,
.project-stage-row {
  display: grid;
  grid-template-columns: 34px minmax(180px, 1fr) 34px;
  gap: 8px;
  align-items: center;
}
.project-stage-head {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  margin-bottom: 6px;
  padding: 0 2px;
}
.project-stage-list {
  display: grid;
  gap: 8px;
}
.project-stage-row[data-sortable-item] { cursor: default; }
.project-stage-row [data-project-stage-drag] { cursor: grab; }
.project-stage-row.dragging {
  opacity: .65;
  box-shadow: 0 18px 40px rgba(15, 23, 42, .14);
}
@media (max-width: 767.98px) {
  .project-stage-head { display: none; }
  .project-stage-row { grid-template-columns: 34px 1fr 34px; }
}

/* Oper8 v6.0.27 project navigation and breadcrumbs */
.project-context-breadcrumb-main { min-width: 0; }
.project-breadcrumbs { display: flex; align-items: center; flex-wrap: wrap; gap: 0.45rem; font-size: 0.95rem; font-weight: 600; }
.project-breadcrumbs a { color: inherit; text-decoration: none; display: inline-flex; align-items: center; gap: 0.35rem; }
.project-breadcrumbs a:hover { text-decoration: underline; }
.project-breadcrumbs [aria-current="page"] { color: var(--muted); font-weight: 600; }
.project-breadcrumbs .breadcrumb-separator { color: var(--muted); font-weight: 500; }
.project-team-manage-row { align-items: center; gap: 0.85rem; }
.project-team-manage-row .form-check { flex: 1 1 auto; }
.project-team-role-input { max-width: 220px; }
@media (max-width: 720px) {
  .project-team-manage-row { align-items: flex-start; flex-direction: column; }
  .project-team-role-input { max-width: none; width: 100%; }
}
.project-context-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 0.45rem; margin-top: 0; }

/* v6.0.28 project actions grouping/current section */
.project-actions-menu .dropdown-header {
    font-size: 0.68rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #7a8494;
    padding-top: 0.35rem;
    padding-bottom: 0.2rem;
}
.project-actions-menu .dropdown-divider {
    margin: 0.35rem 0;
}
.project-actions-menu .project-action-current {
    font-weight: 800;
}
.project-actions-menu .project-action-current::after {
    content: none;
}
.project-stage-context-badge {
    font-weight: 600;
}

/* v6.0.29 project actions primary button */
.project-actions-button,
.project-actions-button:hover,
.project-actions-button:focus {
    color: #fff;
}


/* Oper8 v6.0.31 project context, notes, activity and compact controls */
.project-context-meta {
  margin-left: 1em;
}
.project-context-meta .date-pill {
  margin-left: 0;
}
.project-icon {
  margin-right: .2em;
}
.project-stage-head,
.project-stage-row {
  grid-template-columns: 34px 74px minmax(180px, 1fr) 34px;
}
.project-stage-colour-input {
  width: 58px;
  height: 34px;
  padding: 3px;
}
.project-stage-context-badge {
  border: 1px solid currentColor;
  font-weight: 700;
}
.project-notes-list {
  align-items: start;
}
.project-note-bubble {
  position: relative;
  width: fit-content;
  max-width: min(100%, 760px);
  border: 1px solid rgba(148, 163, 184, .35);
  border-radius: 18px 18px 18px 4px;
  border-left: 0;
  background: #f8faff;
  padding: 12px 14px;
  box-shadow: 0 8px 18px rgba(15, 23, 42, .06);
}
.project-note-bubble.project-note-mine {
  background: #eef6ff;
  border-color: rgba(37, 99, 235, .18);
}
.project-note-bubble::before {
  content: "";
  position: absolute;
  left: -7px;
  bottom: 10px;
  width: 14px;
  height: 14px;
  background: inherit;
  border-left: 1px solid rgba(148, 163, 184, .35);
  border-bottom: 1px solid rgba(148, 163, 184, .35);
  transform: rotate(45deg);
}
.report-notes-checklist-card .btn.btn-sm.btn-outline-success {
  border-radius: 50%;
  width: 32px;
  height: 32px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.project-activity-table .date-pill,
.project-activity-date {
  margin-left: 0;
  white-space: nowrap;
}
.card-limit-toggle {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  width: auto;
  margin-top: 8px;
  padding: 1em;
  border: 0 !important;
  text-align: center;
  text-decoration: none;
  background: transparent;
  box-shadow: none;
}
.card-limit-toggle:hover,
.card-limit-toggle:focus,
.card-limit-toggle:active {
  border: 0 !important;
  background: transparent;
  box-shadow: none;
  text-decoration: none;
}
.card-limit-toggle .bi {
  font-size: .9rem;
}
@media (max-width: 767.98px) {
  .project-stage-row { grid-template-columns: 34px 58px 1fr 34px; }
  .project-stage-head { display: none; }
  .project-context-meta { margin-left: 0; }
}

/* v6.0.39 retainer navigation refinements */
.retainer-context-strip .retainer-context-meta { margin-left: 1em; }
.retainer-actions-dropdown .project-actions-menu { min-width: 260px; }
.project-filters .project-filter-submit {
  min-height: calc(2.25rem + 2px);
  height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
}

/* v6.0.40 retainer/hosting UI refinements */
.section-heading .btn-primary { color: #fff !important; }
.hosting-invoice-filters .btn,
.hosting-invoice-filters .form-control,
.hosting-invoice-filters .form-select { min-height: calc(2.25rem + 2px); }
.hosting-context-strip .hosting-context-meta { margin-left: 1em; }
.hosting-actions-dropdown .project-actions-button { color: #fff; }
.retainer-board-filter-disclosure { margin-top: 0; }


/* Oper8 v6.0.43 invoice and context strip button refinements */
.hosting-filters .btn,
.project-filters .project-filter-submit {
  min-height: calc(2.25rem + 2px);
}
.invoice-line-row-controls {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 6px;
  align-self: end;
}
.invoice-line-row-controls .oper8-line-collapse-btn {
  width: 34px;
  height: 34px;
  padding: 0;
  justify-content: center;
}
.invoice-line-row-controls .oper8-line-collapse-btn span {
  display: none;
}
.invoice-line-item:not(.is-collapsed) .invoice-line-summary-toolbar {
  display: none;
}
.invoice-line-item.is-collapsed .invoice-line-field,
.invoice-line-item.is-collapsed .invoice-line-remove {
  display: none !important;
}
.invoice-line-item.is-collapsed .invoice-line-main {
  display: grid !important;
  grid-template-columns: 76px minmax(0, 1fr) !important;
  align-items: center;
  margin-top: 0;
}
.invoice-line-item.is-collapsed .invoice-line-summary-toolbar {
  display: flex;
  align-items: center;
  min-width: 0;
}
.invoice-line-item.is-collapsed .invoice-line-summary-toolbar .oper8-line-summary {
  display: block;
}
.invoice-line-tools .btn {
  min-width: 136px;
  border-color: #cbd5e1 !important;
  background: #fff !important;
  color: #334155 !important;
}
.invoice-line-tools .btn:hover,
.invoice-line-tools .btn:focus {
  border-color: var(--c8-primary) !important;
  background: rgba(239, 246, 255, .92) !important;
  color: var(--c8-primary) !important;
}
.invoice-line-tools .btn .app-icon,
.invoice-line-tools .btn span {
  color: currentColor !important;
}
@media (max-width: 991.98px) {
  .invoice-line-row-controls {
    grid-column: 1 / -1;
  }
  .invoice-line-item.is-collapsed .invoice-line-main {
    grid-template-columns: 1fr !important;
  }
}

/* Oper8 v6.0.45 estimate line heading and summary toolbar alignment */
.estimate-line-tools {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  flex-wrap: wrap;
}
.estimate-line-tools .btn {
  min-width: 136px;
  border-color: #cbd5e1 !important;
  background: #fff !important;
  color: #334155 !important;
}
.estimate-line-tools .btn:hover,
.estimate-line-tools .btn:focus {
  border-color: var(--c8-primary) !important;
  background: rgba(239, 246, 255, .92) !important;
  color: var(--c8-primary) !important;
}
.estimate-line-tools .btn .app-icon,
.estimate-line-tools .btn span {
  color: currentColor !important;
}
.estimate-line-card [data-add-estimate-line].invoice-icon-btn {
  min-width: 136px;
  width: auto;
  height: auto;
  min-height: calc(2.25rem + 2px);
  padding: 0 .75rem;
}
.estimate-line-row-controls {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 6px;
  align-self: end;
}
.estimate-line-row-controls .oper8-line-collapse-btn {
  width: 34px;
  height: 34px;
  padding: 0;
  justify-content: center;
}
.estimate-line-row-controls .oper8-line-collapse-btn span { display: none; }
.estimate-line-item:not(.is-collapsed) .estimate-line-summary-toolbar { display: none; }
.estimate-line-item.is-collapsed .estimate-line-field,
.estimate-line-item.is-collapsed .estimate-line-remove {
  display: none !important;
}
.estimate-line-item.is-collapsed .estimate-line-main {
  display: grid !important;
  grid-template-columns: 76px minmax(0, 1fr) !important;
  align-items: center;
  margin-top: 0;
}
.estimate-line-item.is-collapsed .estimate-line-summary-toolbar {
  display: flex;
  align-items: center;
  min-width: 0;
}
.estimate-line-item.is-collapsed .estimate-line-summary-toolbar .oper8-line-summary { display: block; }
@media (max-width: 575.98px) {
  .estimate-line-tools { width: 100%; justify-content: flex-start; }
  .estimate-line-tools .btn { flex: 1 1 auto; }
}


/* Oper8 v6.0.46 invoice line outsourcing toolbar button */
.invoice-line-row-actions {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
}
.invoice-outsourcing-toggle.is-active {
  background: rgba(239, 246, 255, .92);
}
@media (max-width: 991.98px) {
  .invoice-line-row-actions {
    justify-content: flex-start;
  }
}

/* Oper8 v6.0.47 estimate/invoice line control button sizing */
.invoice-line-row-controls .oper8-line-drag-handle,
.invoice-line-row-controls .oper8-line-collapse-btn,
.estimate-line-row-controls .oper8-line-drag-handle,
.estimate-line-row-controls .oper8-line-collapse-btn {
  width: 20px !important;
  min-width: 20px !important;
  height: 20px !important;
  min-height: 20px !important;
  padding: 0 !important;
  margin: 0 0 .5em !important;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.invoice-line-row-controls .oper8-line-drag-handle .app-icon,
.invoice-line-row-controls .oper8-line-collapse-btn .app-icon,
.estimate-line-row-controls .oper8-line-drag-handle .app-icon,
.estimate-line-row-controls .oper8-line-collapse-btn .app-icon {
  margin: 0 !important;
  width: 18px;
  height: 18px;
}
.invoice-line-row-controls .oper8-line-drag-handle:hover,
.invoice-line-row-controls .oper8-line-drag-handle:focus,
.invoice-line-row-controls .oper8-line-collapse-btn:hover,
.invoice-line-row-controls .oper8-line-collapse-btn:focus,
.estimate-line-row-controls .oper8-line-drag-handle:hover,
.estimate-line-row-controls .oper8-line-drag-handle:focus,
.estimate-line-row-controls .oper8-line-collapse-btn:hover,
.estimate-line-row-controls .oper8-line-collapse-btn:focus {
  background: rgba(15, 23, 42, .06) !important;
}

/* Oper8 v6.0.48 invoice/estimate line item spacing and compact icon toolbar refinements */
.section-heading.compact-heading.invoice-line-heading {
  margin-bottom: 2em;
}
.invoice-line-row-controls .oper8-line-drag-handle,
.invoice-line-row-controls .oper8-line-collapse-btn,
.estimate-line-row-controls .oper8-line-drag-handle,
.estimate-line-row-controls .oper8-line-collapse-btn {
  margin-bottom: 1em !important;
}
.invoice-line-item.is-collapsed .invoice-line-row-controls .oper8-line-drag-handle,
.invoice-line-item.is-collapsed .invoice-line-row-controls .oper8-line-collapse-btn,
.estimate-line-item.is-collapsed .estimate-line-row-controls .oper8-line-drag-handle,
.estimate-line-item.is-collapsed .estimate-line-row-controls .oper8-line-collapse-btn {
  margin-bottom: 0 !important;
}
.invoice-line-row-controls .oper8-line-drag-handle.btn-outline-secondary,
.invoice-line-row-controls .oper8-line-collapse-btn.btn-outline-secondary,
.estimate-line-row-controls .oper8-line-drag-handle.btn-outline-secondary,
.estimate-line-row-controls .oper8-line-collapse-btn.btn-outline-secondary {
  border-color: transparent !important;
}
.invoice-line-item .invoice-icon-btn {
  width: 25px;
  min-width: 25px;
}
.invoice-line-number input,
.estimate-line-number input {
  text-align: right;
}
.invoice-line-tools .btn {
  min-width: inherit !important;
  width: auto !important;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  padding-left: .4rem;
  padding-right: .4rem;
}
.invoice-line-tools .btn span {
  display: none !important;
}
.invoice-line-tools .btn:hover,
.invoice-line-tools .btn:focus {
  border: 0 !important;
  background: rgba(15, 23, 42, .06) !important;
}

/* Oper8 v6.0.49 invoice/estimate line icon tool refinements */
.invoice-outsourcing-toggle {
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  color: #64748b;
}
.invoice-outsourcing-toggle .invoice-outsourcing-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.invoice-outsourcing-toggle .invoice-outsourcing-icon-on {
  display: none;
}
.invoice-outsourcing-toggle.is-active {
  color: var(--c8-primary);
  background: rgba(239, 246, 255, .92) !important;
}
.invoice-outsourcing-toggle.is-active .invoice-outsourcing-icon-on {
  display: inline-flex;
}
.invoice-outsourcing-toggle.is-active .invoice-outsourcing-icon-off {
  display: none;
}
.invoice-outsourcing-toggle .app-icon {
  margin: 0 !important;
}
.invoice-line-tools .btn,
.estimate-line-tools .btn {
  min-width: inherit !important;
  width: auto !important;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  padding-left: .4rem !important;
  padding-right: .4rem !important;
}
.invoice-line-tools .btn span,
.estimate-line-tools .btn span {
  display: none !important;
}
.invoice-line-tools .btn:hover,
.invoice-line-tools .btn:focus,
.estimate-line-tools .btn:hover,
.estimate-line-tools .btn:focus {
  border: 0 !important;
  background: rgba(15, 23, 42, .06) !important;
}
.estimate-line-card [data-add-estimate-line].invoice-icon-btn,
.estimate-line-tools [data-add-estimate-line],
.estimate-line-tools .estimate-heading-btn {
  min-width: inherit !important;
  width: auto !important;
  height: auto;
  min-height: 34px;
  padding: .4rem !important;
}
.line-card-footer {
  display: flex;
  justify-content: flex-end;
  margin-top: 1em;
}
.line-card-footer .btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .35rem;
  border: 0 !important;
  box-shadow: none !important;
  background: transparent !important;
  color: var(--c8-primary);
  font-weight: 700;
}
.line-card-footer .btn:hover,
.line-card-footer .btn:focus {
  background: rgba(15, 23, 42, .06) !important;
}
@media (max-width: 575.98px) {
  .estimate-line-tools .btn {
    flex: 0 0 auto !important;
  }
}

/* v6.0.52 timeline row indent/outdent controls */
.oper8-gantt .gantt-indent-controls {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
  width: 100%;
}
.oper8-gantt .gantt-indent-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 25px;
  height: 25px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--c8-muted);
  line-height: 1;
}
.oper8-gantt .gantt-indent-btn:hover:not(:disabled) {
  background: rgba(37, 99, 235, .08);
  color: var(--c8-primary);
}
.oper8-gantt .gantt-indent-btn:disabled {
  opacity: .32;
  cursor: not-allowed;
}

/* v6.0.54 timeline grid polish */
.oper8-gantt .gantt_grid_head_text { text-align: left !important; padding-left: 1em !important; }
.oper8-gantt .gantt_grid_head_assignee_id { text-align: center !important; }
.oper8-gantt .gantt-assignee-avatar-btn { width: 28px; height: 28px; padding: 0; border: 0; border-radius: 50%; background: transparent; display: inline-flex; align-items: center; justify-content: center; vertical-align: middle; cursor: pointer; }
.oper8-gantt .gantt-assignee-avatar-btn:hover, .oper8-gantt .gantt-assignee-avatar-btn:focus-visible { background: rgba(15, 23, 42, .08); outline: none; }
.oper8-gantt .gantt-assignee-avatar-btn:focus-visible { box-shadow: 0 0 0 .18rem rgba(37, 99, 235, .24); }
.oper8-gantt .gantt-assignee-avatar-btn img { width: 24px; height: 24px; border-radius: 50%; object-fit: cover; display: block; }
.oper8-gantt .gantt-assignee-avatar-btn.is-unassigned { color: rgba(15, 23, 42, .58); background: rgba(15, 23, 42, .06); }
.oper8-gantt .gantt-assignee-avatar-btn.is-unassigned i { font-size: 1rem; line-height: 1; }
.oper8-gantt .gantt_hor_scroll { height: 8px !important; opacity: .34; transition: opacity .16s ease; }
.oper8-gantt:hover .gantt_hor_scroll, .oper8-gantt:focus-within .gantt_hor_scroll { opacity: .72; }
.oper8-gantt .gantt_hor_scroll::-webkit-scrollbar, .oper8-gantt .gantt_task::-webkit-scrollbar, .oper8-gantt .gantt_grid_data::-webkit-scrollbar { height: 8px; width: 8px; }
.oper8-gantt .gantt_hor_scroll::-webkit-scrollbar-track, .oper8-gantt .gantt_task::-webkit-scrollbar-track, .oper8-gantt .gantt_grid_data::-webkit-scrollbar-track { background: transparent; }
.oper8-gantt .gantt_hor_scroll::-webkit-scrollbar-thumb, .oper8-gantt .gantt_task::-webkit-scrollbar-thumb, .oper8-gantt .gantt_grid_data::-webkit-scrollbar-thumb { background: rgba(15, 23, 42, .18); border-radius: 999px; }
.oper8-gantt .gantt_hor_scroll::-webkit-scrollbar-thumb:hover, .oper8-gantt .gantt_task::-webkit-scrollbar-thumb:hover, .oper8-gantt .gantt_grid_data::-webkit-scrollbar-thumb:hover { background: rgba(15, 23, 42, .32); }
.oper8-gantt .gantt_task, .oper8-gantt .gantt_grid_data { scrollbar-color: rgba(15, 23, 42, .18) transparent; scrollbar-width: thin; }


/* v6.0.59 timeline soft delete and vertical scrollbar polish */
.oper8-gantt .gantt_ver_scroll {
    width: 6px !important;
    opacity: .12;
    transition: opacity .16s ease;
}
.oper8-gantt:hover .gantt_ver_scroll,
.oper8-gantt:focus-within .gantt_ver_scroll {
    opacity: .5;
}
.oper8-gantt .gantt_ver_scroll::-webkit-scrollbar {
    width: 6px;
}
.oper8-gantt .gantt_ver_scroll::-webkit-scrollbar-track {
    background: transparent;
}
.oper8-gantt .gantt_ver_scroll::-webkit-scrollbar-thumb {
    background: rgba(15, 23, 42, .11);
    border-radius: 999px;
}
.oper8-gantt .gantt_ver_scroll::-webkit-scrollbar-thumb:hover {
    background: rgba(15, 23, 42, .22);
}
.oper8-gantt .gantt_task,
.oper8-gantt .gantt_grid_data,
.oper8-gantt .gantt_ver_scroll {
    scrollbar-color: rgba(15, 23, 42, .16) transparent;
    scrollbar-width: thin;
}
.oper8-gantt .gantt-row-delete-btn {
    width: 25px;
    height: 25px;
    padding: 0;
    border: 0;
    border-radius: 5px;
    background: transparent;
    color: rgba(220, 53, 69, .78);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}
.oper8-gantt .gantt-row-delete-btn:hover:not(:disabled),
.oper8-gantt .gantt-row-delete-btn:focus-visible:not(:disabled) {
    background: rgba(220, 53, 69, .08);
    color: #dc3545;
    outline: none;
}
.oper8-gantt .gantt-row-delete-btn:disabled {
    opacity: .28;
    cursor: not-allowed;
}

/* v6.0.60 timeline delete slide-out and personal workload past-day safeguards */
.gantt-delete-task-panel textarea {
    min-height: 150px;
}
.personal-plan-column.is-past-day {
    background: #eef1f6;
    opacity: .72;
}
.personal-plan-column.is-past-day .personal-plan-dropzone {
    background: repeating-linear-gradient(135deg, rgba(148, 163, 184, .08), rgba(148, 163, 184, .08) 8px, rgba(255, 255, 255, .16) 8px, rgba(255, 255, 255, .16) 16px);
}
.personal-plan-column.is-past-day .personal-plan-card {
    cursor: default;
}
.board-filter-week-navigation .planner-week-arrow.disabled {
    pointer-events: none;
    opacity: .45;
}

/* v6.0.61 payable line items / Xero PO sync */
.project-payable-lines-card {
  border: 1px solid rgba(15, 23, 42, .09);
  border-radius: 16px;
  padding: 1rem;
  margin-top: 1rem;
  background: rgba(248, 250, 252, .8);
}
.project-payable-line-row {
  display: grid;
  grid-template-columns: minmax(220px, 1.5fr) minmax(180px, 1fr) minmax(72px, .42fr) minmax(120px, .62fr) minmax(145px, .78fr) minmax(120px, .62fr) 42px;
  gap: .75rem;
  align-items: end;
}
.project-payable-line-list {
  display: grid;
  gap: .75rem;
}
.project-payable-line-actions {
  display: flex;
  align-items: end;
  justify-content: flex-end;
  padding-bottom: 1px;
}
.project-payable-totals {
  display: flex;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: .8rem 1.25rem;
  border-top: 1px solid rgba(15, 23, 42, .08);
  margin-top: 1rem;
  padding-top: .85rem;
  font-size: .88rem;
}
.project-payable-totals span {
  color: #64748b;
}
.project-payable-totals strong {
  color: #0f172a;
  margin-left: .25rem;
}
@media (max-width: 991.98px) {
  .project-payable-line-row { grid-template-columns: 1fr 1fr; }
  .project-payable-line-description { grid-column: 1 / -1; }
  .project-payable-line-category { grid-column: 1 / -1; }
  .project-payable-line-actions { justify-content: flex-start; }
}

/* v6.0.67 task time recording */
.task-time-log-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:0;text-decoration:none}.task-action-buttons{display:inline-flex;align-items:center;gap:.25rem}.task-time-register-card .table td,.task-time-register-card .table th{vertical-align:middle}.personal-plan-date-row .task-time-log-btn{padding:0}.kanban-card-actions .task-time-log-btn,.workload-card-actions .task-time-log-btn{min-width:auto}


/* v6.0.71 team time log reporting */
.time-log-filters { padding: 1rem; }
.time-week-grid { display: grid; grid-template-columns: repeat(7, minmax(180px, 1fr)); gap: 1rem; overflow-x: auto; padding-bottom: .5rem; }
.time-day-column { min-height: 280px; border: 1px solid var(--bs-border-color); border-radius: .75rem; background: var(--bs-body-bg); }
.time-day-column > header { display: grid; grid-template-columns: auto 1fr auto; gap: .5rem; align-items: baseline; padding: .9rem 1rem; border-bottom: 1px solid var(--bs-border-color); }
.time-day-column > header span, .time-day-column > header em { color: var(--bs-secondary-color); font-size: .8rem; font-style: normal; }
.time-day-cards { display: grid; gap: .65rem; padding: .8rem; }
.time-person-card { display: flex; align-items: center; gap: .65rem; padding: .7rem; border-radius: .65rem; background: var(--bs-tertiary-bg); text-decoration: none; color: inherit; }
.time-person-card span { min-width: 0; display: flex; flex-direction: column; }
.time-person-card strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.time-person-card small { color: var(--bs-secondary-color); }
.time-people-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 1rem; align-items: start; }
.time-person-column { border: 1px solid var(--bs-border-color); border-radius: .75rem; overflow: hidden; background: var(--bs-body-bg); }
.time-person-column > header { padding: 1rem; border-bottom: 1px solid var(--bs-border-color); }
.time-person-column > header a { display: flex; gap: .75rem; align-items: center; color: inherit; text-decoration: none; }
.time-person-column > header span { display: flex; flex-direction: column; }
.time-person-column > header small { color: var(--bs-secondary-color); }
.time-entry-cards { display: grid; gap: .75rem; padding: .8rem; max-height: 650px; overflow: auto; }
.time-entry-card { padding: .8rem; border-radius: .65rem; background: var(--bs-tertiary-bg); }
.time-entry-card > div { display: flex; justify-content: space-between; gap: 1rem; }
.time-entry-card > div span, .time-entry-card small { color: var(--bs-secondary-color); font-size: .8rem; }
.time-entry-card > a { display: block; font-weight: 600; margin-top: .35rem; }
.time-entry-card p { margin: .5rem 0 0; font-size: .875rem; }
.time-calendar { border: 1px solid var(--bs-border-color); border-radius: .75rem; overflow: hidden; }
.time-calendar-head, .time-calendar-grid { display: grid; grid-template-columns: repeat(7, minmax(110px, 1fr)); }
.time-calendar-head span { padding: .7rem; text-align: center; font-weight: 600; background: var(--bs-tertiary-bg); border-right: 1px solid var(--bs-border-color); }
.time-calendar-day { min-height: 115px; padding: .65rem; border-top: 1px solid var(--bs-border-color); border-right: 1px solid var(--bs-border-color); display: flex; flex-direction: column; gap: .35rem; }
.time-calendar-day.is-outside { opacity: .4; background: var(--bs-tertiary-bg); }
.time-calendar-day .day-number { align-self: flex-end; color: var(--bs-secondary-color); font-size: .8rem; }
.time-calendar-day strong { font-size: 1.15rem; }
.time-calendar-day small { color: var(--bs-secondary-color); }
@media (max-width: 991.98px) { .time-week-grid { grid-template-columns: repeat(7, 220px); } .time-calendar { overflow-x: auto; } .time-calendar-head, .time-calendar-grid { min-width: 780px; } }

/* v6.0.72 time reporting layout and calendar totals */
.time-log-filters { padding: 1rem; }
.time-log-filter-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; flex-wrap:wrap; }
.time-log-filter-head + .collapse.show { margin-top:1rem; }
.time-log-view-nav { flex-wrap:wrap; }
.time-calendar { background:#fff; }
.time-calendar-head, .time-calendar-grid { grid-template-columns: repeat(7, minmax(110px, 1fr)) minmax(120px, .8fr); }
.time-calendar-day { background:#fff; }
.time-calendar-week-total,
.time-calendar-day-total,
.time-calendar-grand-total { min-height:115px; padding:.65rem; border-top:1px solid var(--bs-border-color); border-right:1px solid var(--bs-border-color); background:#fff; display:flex; flex-direction:column; justify-content:center; gap:.35rem; text-align:center; }
.time-calendar-week-total { background:var(--bs-tertiary-bg); }
.time-calendar-day-total,
.time-calendar-grand-total { min-height:auto; background:var(--bs-tertiary-bg); }
.time-calendar-week-total span,
.time-calendar-day-total span,
.time-calendar-grand-total span { color:var(--bs-secondary-color); font-size:.78rem; }
.time-calendar-total-head { background:var(--bs-tertiary-bg)!important; }
@media (max-width: 991.98px) {
  .time-calendar-head, .time-calendar-grid { min-width:900px; }
}

/* v6.0.73 time reporting tabs and filter consistency */
.time-log-tab-shell { margin-bottom: 1rem; }
.time-log-tab-shell .oper8-tabs { margin-bottom: 0; }
.time-log-view-nav { flex-wrap: wrap; }
.time-log-filter-disclosure { margin-bottom: 1rem; }
.time-log-filters { padding: 1rem; }
.time-log-filters .btn[type="submit"],
.time-log-filters .btn.time-log-apply { min-height: calc(1.5em + .75rem + 2px); display: inline-flex; align-items: center; justify-content: center; }

/* v6.0.75 time reporting filter layout correction */
.board-filter-bar.time-log-filters > .row {
  flex: 1 1 100%;
  width: 100%;
  max-width: none;
}
.board-filter-bar.time-log-filters .btn,
.board-filter-bar.time-log-filters .board-filter-actions .btn,
.board-filter-bar.time-log-filters .btn[type="submit"],
.board-filter-bar.time-log-filters .btn.time-log-apply {
  height: 44px;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}


/* Oper8 v6.0.76 global invoice and estimate registers */
.project-finance-invoice-filters.global-invoice-filters {
  grid-template-columns: minmax(220px, 1fr) minmax(170px, .55fr) minmax(150px, .42fr) minmax(150px, .42fr) minmax(120px, .34fr) auto auto;
}
@media (max-width: 1199.98px) {
  .project-finance-invoice-filters.global-invoice-filters {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 575.98px) {
  .project-finance-invoice-filters.global-invoice-filters {
    grid-template-columns: 1fr;
  }
}

/* v6.0.77 white-label, Help and AI assistant */
body { background: var(--oper8-page-bg, #f3f4f6); }
a { color: var(--oper8-link, #1d4ed8); }
.sidebar { background: var(--oper8-sidebar, #0f172a); color: var(--oper8-sidebar-text, #fff); }
.sidebar .nav-link, .sidebar .brand, .sidebar .brand span { color: var(--oper8-sidebar-text, #fff); }
.btn-primary { --bs-btn-bg: var(--oper8-primary, #172554); --bs-btn-border-color: var(--oper8-primary, #172554); --bs-btn-color: var(--oper8-button-text, #fff); --bs-btn-hover-color: var(--oper8-button-text, #fff); }
.card-soft, .integration-card { background: var(--oper8-card-bg, #fff); }
.brand-colour-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:1rem; }
.brand-colour-grid label>span { display:block; font-size:.875rem; font-weight:600; margin-bottom:.35rem; }
.brand-colour-input { display:grid; grid-template-columns:54px 1fr; gap:.5rem; align-items:center; }
.brand-colour-input input[type=color] { width:54px; height:44px; padding:.2rem; border:1px solid #ced4da; border-radius:.5rem; background:#fff; }
.email-preview-shell iframe { width:100%; min-height:620px; border:1px solid #dbe2ea; border-radius:14px; background:#fff; }
.help-layout { display:grid; grid-template-columns:minmax(220px,280px) minmax(0,1fr); gap:1.5rem; align-items:start; }
.help-nav { position:sticky; top:1rem; display:flex; flex-direction:column; gap:.45rem; }
.help-nav a { padding:.55rem .7rem; border-radius:.5rem; text-decoration:none; }
.help-nav a:hover { background:#f3f4f6; }
.help-content { display:grid; gap:1rem; }
.help-content section { scroll-margin-top:1rem; }
.help-content li { margin-bottom:.55rem; }
.oper8-ai-launcher { position:fixed; right:24px; bottom:24px; width:58px; height:58px; border:0; border-radius:50%; background:var(--oper8-primary,#172554); color:var(--oper8-button-text,#fff); box-shadow:0 14px 35px rgba(15,23,42,.28); z-index:1040; font-size:1.35rem; }
.oper8-ai-panel { width:min(460px,100vw)!important; }
.oper8-ai-messages { display:flex; flex-direction:column; gap:.75rem; overflow:auto; padding-bottom:1rem; }
.oper8-ai-message { max-width:92%; padding:.8rem 1rem; border-radius:14px; white-space:pre-wrap; line-height:1.45; }
.oper8-ai-message.is-assistant { background:#f1f5f9; align-self:flex-start; }
.oper8-ai-message.is-user { background:var(--oper8-primary,#172554); color:var(--oper8-button-text,#fff); align-self:flex-end; }
.oper8-ai-message.is-error { background:#fee2e2; color:#991b1b; }
@media (max-width: 900px) { .help-layout { grid-template-columns:1fr; } .help-nav { position:static; } }

/* v6.0.79: settings pages use server-routed tabs. Hide every inactive pane
   regardless of browser DOM correction or nesting so hidden panes cannot
   reserve vertical space above the active settings section. */
.settings-tab-shell .tab-pane:not(.active) {
  display: none !important;
}
.settings-tab-shell .tab-pane.active {
  display: block !important;
  opacity: 1 !important;
}

/* Restore normal dropdown-item alignment for the shared task Log time action.
   Card and tile time buttons intentionally use the compact global rule above. */
.dropdown-menu .task-time-log-btn.dropdown-item {
  display: flex;
  width: 100%;
  align-items: center;
  justify-content: flex-start;
  gap: .5rem;
  padding: .25rem 1rem;
  text-align: left;
  white-space: nowrap;
}

/* Oper8 v6.0.82 — keep the side navigation scrollable without a visible scrollbar. */
.sidebar {
  -ms-overflow-style: none;
  scrollbar-width: none;
}
.sidebar::-webkit-scrollbar {
  width: 0;
  height: 0;
  display: none;
}

/* Oper8 v6.0.85 public timeline parity and compact controls */
.public-hero.public-hero-compact {
  min-height: 0;
  padding: 10px 14px;
  gap: 14px;
  align-items: center;
  flex-wrap: nowrap;
}
.public-hero-summary,
.public-hero-title,
.public-timeline-toolbar {
  display: flex;
  align-items: center;
}
.public-hero-summary { gap: 14px; min-width: 0; flex: 1 1 auto; }
.public-hero-title { gap: 10px; min-width: 0; }
.public-hero-compact .eyebrow {
  margin: 0;
  white-space: nowrap;
  font-size: .68rem;
  line-height: 1;
}
.public-hero-compact h1 {
  font-size: clamp(1rem, 1.55vw, 1.35rem);
  line-height: 1.15;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.public-hero-compact .public-meta { flex-wrap: nowrap; white-space: nowrap; }
.public-hero-compact .public-timeline-toolbar {
  flex: 0 0 auto;
  justify-content: flex-end;
  gap: 8px;
  margin: 0;
}
.public-hero-compact .public-timeline-toolbar .btn { min-height: 36px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
.public-hero-compact [data-public-gantt-scale].active { background: #fff; color: var(--c8-primary); border-color: #fff; }
.public-gantt .gantt_scale_line:last-child .gantt_scale_cell { font-size: .8em; }
.public-gantt .gantt_task_line.gantt-type-project .gantt_task_content { font-weight: 700; }
.public-gantt .gantt_task_line.gantt-type-milestone .gantt_task_content { margin-top: 0; font-size: inherit; }
.public-gantt .gantt_task_cell.oper8-weekend { background: rgba(250, 204, 21, .13) !important; }
.public-gantt .gantt_task_cell.oper8-today-cell { background: rgba(59, 130, 246, .18) !important; }
.public-gantt .gantt_hor_scroll,
.public-gantt .gantt_ver_scroll { opacity: 0 !important; scrollbar-width: none !important; -ms-overflow-style: none !important; }
.public-gantt .gantt_hor_scroll::-webkit-scrollbar,
.public-gantt .gantt_ver_scroll::-webkit-scrollbar,
.public-gantt .gantt_task::-webkit-scrollbar,
.public-gantt .gantt_grid_data::-webkit-scrollbar { width: 0 !important; height: 0 !important; display: none !important; }
.public-gantt .gantt_task,
.public-gantt .gantt_grid_data { scrollbar-width: none !important; -ms-overflow-style: none !important; }
@media (max-width: 900px) {
  .public-hero.public-hero-compact { flex-wrap: wrap; }
  .public-hero-summary { flex-basis: 100%; }
  .public-hero-compact .public-timeline-toolbar { margin-left: auto; }
}
@media (max-width: 640px) {
  .public-hero-summary { align-items: flex-start; flex-direction: column; gap: 6px; }
  .public-hero-title { align-items: flex-start; flex-direction: column; gap: 3px; }
  .public-hero-compact .public-meta { flex-wrap: wrap; }
  .public-hero-compact .public-timeline-toolbar { width: 100%; align-items: center; flex-direction: row; }
  .public-hero-compact .public-timeline-toolbar > * { width: auto; }
}


/* Oper8 v6.0.86 public timeline header and grid refinements */
.public-hero-compact .project-name-with-icon.public-project-title {
  padding-left: .5em;
}
.public-hero-compact .public-timeline-toolbar .btn {
  font-size: .9em;
}
.public-gantt {
  border: 0 !important;
}
.public-gantt .gantt_grid_head_cell:first-child {
  text-align: left !important;
  padding-left: 1em;
}

/* Timeline hierarchy: make parent rows easier to scan in both internal and public Gantt grids. */
.gantt-grid-task-label.is-parent { font-weight: 800; }

/* Oper8 v6.0.88 password-protected read-only client Kanban */
.public-kanban-share-tools { margin-top: -2px; }
.public-client-kanban { background: var(--oper8-page-bg, #f5f7fb); min-height: 100vh; }
.public-kanban-shell { padding: 24px; max-width: 1800px; margin: 0 auto; }
.public-kanban-hero { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 20px; }
.public-kanban-hero h1 { margin: 0; font-size: clamp(1.35rem, 2vw, 2rem); }
.public-kanban-hero p { margin: 3px 0 0; color: #64748b; }
.public-kanban-live { display: flex; align-items: center; gap: 8px; color: #475569; white-space: nowrap; }
.public-kanban-live small { color: #94a3b8; }
.public-kanban-live-dot { width: 9px; height: 9px; border-radius: 999px; background: #22c55e; box-shadow: 0 0 0 4px rgba(34,197,94,.14); }
.public-client-kanban-board .kanban-column { min-width: 260px; }
.public-client-kanban-board .kanban-dropzone { min-height: 180px; }
.public-client-kanban-board .kanban-card { cursor: default; }
.public-client-kanban-board .kanban-card h3 { margin-bottom: 10px; }
.public-client-kanban-board .kanban-card-footer { align-items: center; }
.public-client-kanban-auth { background: var(--oper8-page-bg, #f5f7fb); min-height: 100vh; }
@media (max-width: 720px) { .public-kanban-shell { padding: 16px; } .public-kanban-hero { align-items: flex-start; flex-direction: column; } }

/* v6.0.89: compact client Kanban controls inside the project context strip. */
.project-client-link-menu {
    width: min(390px, calc(100vw - 2rem));
    padding: 1rem;
}
.project-client-link-menu-header {
    display: grid;
    gap: .2rem;
    margin-bottom: 1rem;
}
.project-client-link-menu-header strong { font-size: 1rem; }
.project-client-link-menu-header span {
    color: var(--bs-secondary-color);
    font-size: .82rem;
    line-height: 1.35;
}
.project-client-link-menu .form-label { margin-bottom: .35rem; }
.project-client-link-menu .input-group .btn { white-space: nowrap; }
@media (max-width: 575.98px) {
    .project-client-link-dropdown { position: static; }
    .project-client-link-menu {
        left: 1rem !important;
        right: 1rem !important;
        width: auto;
    }
}

/* Oper8 v6.0.90: AJAX Client link controls and public Kanban refinements. */
.project-client-link-menu .project-client-link-current { margin-bottom: 1rem; }
.project-client-link-menu .form-control,
.project-client-link-menu .btn {
  min-height: 40px;
  font-size: .9rem;
}
.project-client-link-menu .project-client-link-url-group > .form-control { min-width: 0; }
.project-client-link-menu .project-client-link-url-group > .btn { flex: 0 0 auto; }
.project-client-link-menu .form-text { margin-top: .35rem; font-size: .78rem; line-height: 1.35; }
.public-kanban-filters {
  display: grid;
  grid-template-columns: minmax(150px, .8fr) minmax(145px, .7fr) minmax(145px, .7fr) minmax(190px, 1fr) auto;
  align-items: end;
  gap: .75rem;
  padding: 1rem;
  margin-bottom: 1rem;
  background: var(--oper8-card-bg, #fff);
  border: 1px solid rgba(15, 23, 42, .08);
  border-radius: 14px;
}
.public-kanban-filters .form-label { margin-bottom: .3rem; font-size: .82rem; font-weight: 700; }
.public-kanban-filters .form-control,
.public-kanban-filters .form-select,
.public-kanban-filters .btn { min-height: 42px; }
.public-kanban-filter-actions { display: flex; gap: .5rem; }
.public-client-kanban-board .kanban-card h3 { font-size: 1.3rem; line-height: 1.25; }
.public-client-kanban-board .kanban-card-footer { gap: .6rem; flex-wrap: wrap; }
.public-client-kanban-board .public-kanban-date-pill { width: auto; max-width: max-content; flex: 0 0 auto; white-space: nowrap; }
.public-kanban-assignee { display: inline-flex; align-items: center; gap: .4rem; }
.public-kanban-assignee .user-avatar { flex: 0 0 auto; }
@media (max-width: 980px) {
  .public-kanban-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .public-kanban-filter-actions { grid-column: 1 / -1; }
}
@media (max-width: 575.98px) {
  .public-kanban-filters { grid-template-columns: 1fr; }
  .public-kanban-filter-actions { grid-column: auto; }
  .public-kanban-filter-actions .btn { flex: 1; }
}

/* Oper8 v6.0.94 — export the complete public timeline rather than the viewport. */
body.public-pdf-exporting {
  overflow: visible !important;
}
body.public-pdf-exporting .public-shell,
body.public-pdf-exporting .public-gantt-card,
body.public-pdf-exporting .public-gantt {
  overflow: visible !important;
}
body.public-pdf-exporting .public-timeline-toolbar {
  display: none !important;
}
body.public-pdf-exporting .public-gantt .gantt_hor_scroll,
body.public-pdf-exporting .public-gantt .gantt_ver_scroll {
  display: none !important;
}


/* Oper8 v6.0.98 public timeline white compact header */
.public-body .public-hero.public-hero-compact {
  background: #fff;
  color: var(--c8-text, #1f2937);
  box-shadow: none;
  border: 0;
  border-radius: 0;
  padding: 10px 0 14px;
}
.public-body .public-hero.public-hero-compact h1,
.public-body .public-hero.public-hero-compact .public-project-title {
  color: var(--c8-text, #1f2937);
}
.public-body .public-hero.public-hero-compact .eyebrow,
.public-body .public-hero.public-hero-compact p,
.public-body .public-hero.public-hero-compact .public-meta {
  color: var(--c8-muted, #6b7280);
}
.public-body .public-hero-compact [data-public-gantt-scale].active {
  background: var(--c8-primary) !important;
  color: #fff;
  border-color: var(--c8-primary);
}
.public-body .public-hero-compact .public-timeline-toolbar .btn-outline-secondary {
  background: #fff;
}
.public-body .public-hero-compact .public-timeline-toolbar .btn-outline-secondary:hover,
.public-body .public-hero-compact .public-timeline-toolbar .btn-outline-secondary:focus {
  background: #f3f4f6;
  color: var(--c8-text, #1f2937);
}
.public-body .public-hero-compact [data-public-gantt-scale].active:hover,
.public-body .public-hero-compact [data-public-gantt-scale].active:focus {
  background: var(--c8-primary) !important;
  color: #fff;
}

/* v6.0.102: constrain Kanban avatar/title rows to the card width */
.kanban-card > div {
  width: 100%;
  min-width: 0;
}
.kanban-card .kanban-title-line {
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: start;
  column-gap: .5rem;
  width: 100%;
  min-width: 0;
}
.kanban-card .kanban-title-line > .task-assignee-select.visually-hidden {
  position: absolute !important;
}
.kanban-card .kanban-title-line > strong {
  display: block;
  width: 100%;
  min-width: 0;
  padding-right: 28px;
  overflow-wrap: anywhere;
  word-break: normal;
}
.kanban-card .kanban-title-line .task-card-title-link {
  display: inline-block;
  max-width: 100%;
  padding-bottom: 10px;
  white-space: normal;
}
.kanban-card .kanban-project-line {
  display: block;
  min-width: 0;
  margin-top: 4px;
  padding-left: 32px;
}
.kanban-card .kanban-project-line > small {
  display: block;
  min-width: 0;
  margin-top: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.kanban-card .kanban-title-line .assignee-picker {
  flex: 0 0 auto;
}
.kanban-card .kanban-title-line .assignee-picker-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  min-height: 24px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  box-shadow: none;
}
.kanban-card .kanban-title-line .assignee-picker-toggle::after,
.kanban-card .kanban-title-line .assignee-picker-toggle span {
  display: none;
}
.kanban-card .kanban-title-line .assignee-picker-toggle img {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  object-fit: cover;
}
.kanban-card .kanban-title-line .assignee-picker-toggle > i {
  font-size: 1rem;
  color: var(--c8-muted);
}
.kanban-card .kanban-title-line .assignee-picker-toggle:focus-visible {
  outline: 2px solid var(--c8-primary);
  outline-offset: 2px;
}

/* v6.0.103: larger Kanban assignee avatars and unconstrained assignee menus */
.kanban-card .kanban-title-line {
  grid-template-columns: 32px minmax(0, 1fr);
  column-gap: .6rem;
}
.kanban-card .kanban-title-line .assignee-picker {
  position: relative;
  width: 32px;
  min-width: 32px;
}
.kanban-card .kanban-title-line .assignee-picker-toggle {
  width: 32px;
  height: 32px;
  min-height: 32px;
}
.kanban-card .kanban-title-line .assignee-picker-toggle img {
  width: 32px;
  height: 32px;
}
.kanban-card .kanban-title-line .assignee-picker-toggle > i {
  font-size: 1.2rem;
}
.kanban-card .kanban-title-line .assignee-picker-menu {
  width: max-content;
  min-width: 240px;
  max-width: min(320px, calc(100vw - 32px));
  max-height: none;
  overflow: visible;
  padding: .4rem;
  white-space: nowrap;
}
.kanban-card .kanban-title-line .assignee-picker-menu .dropdown-item {
  width: 100%;
  min-width: 0;
  padding: .5rem .7rem;
  white-space: nowrap;
}
.kanban-card .kanban-title-line .assignee-picker-menu .dropdown-item span {
  display: block;
  overflow: visible;
  text-overflow: clip;
}
.kanban-card .kanban-project-line {
  padding-left: 42px;
}

/* v6.0.104: tighten Kanban title and project spacing. */
.kanban-card .kanban-project-line {
  margin-top: -10px;
}
.kanban-card .kanban-title-line .task-card-title-link {
  display: inline-block;
  padding-bottom: 10px;
}


/* v6.0.105: show Support/UAT source badges beside the project label. */
.kanban-card .kanban-project-line {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}
.kanban-card .kanban-project-line small {
  min-width: 0;
}
.kanban-card .kanban-project-line > .badge {
  flex: 0 0 auto;
}

/* Oper8 v7.0.0 timeline multi-select and simplified row-drag preview */
.oper8-gantt .gantt_grid_head_multi_select {
  padding: 0 !important;
  text-align: center !important;
}
.oper8-gantt .gantt-multi-select-heading {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  color: var(--c8-muted);
  font-size: .88rem;
}
.oper8-gantt .gantt-row-select-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  padding: 0;
  border: 1px solid rgba(15, 23, 42, .24);
  border-radius: 5px;
  background: #fff;
  color: transparent;
  line-height: 1;
  transition: border-color .15s ease, background-color .15s ease, box-shadow .15s ease, color .15s ease;
}
.oper8-gantt .gantt-row-select-btn:hover:not(:disabled),
.oper8-gantt .gantt-row-select-btn:focus-visible:not(:disabled) {
  border-color: var(--c8-primary);
  box-shadow: 0 0 0 .16rem rgba(37, 99, 235, .14);
  outline: none;
}
.oper8-gantt .gantt-row-select-btn.is-selected {
  border-color: var(--c8-primary);
  background: var(--c8-primary);
  color: #fff;
}
.oper8-gantt .gantt-row-select-btn:disabled {
  border-color: rgba(15, 23, 42, .1);
  background: rgba(15, 23, 42, .035);
  opacity: .55;
  cursor: not-allowed;
}
.oper8-gantt .gantt-row-select-btn i {
  font-size: .82rem;
  line-height: 1;
}
.oper8-gantt .gantt_row.oper8-gantt-row-selected {
  background: rgba(37, 99, 235, .075) !important;
}
.oper8-gantt .gantt_task_row.oper8-gantt-row-selected {
  box-shadow: inset 0 1px 0 rgba(37, 99, 235, .28), inset 0 -1px 0 rgba(37, 99, 235, .28);
}
.oper8-gantt .gantt_task_row.oper8-gantt-row-selected .gantt_task_cell {
  background-color: rgba(37, 99, 235, .045);
}
.gantt-selection-status {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  min-height: 34px;
  padding: .25rem .35rem .25rem .7rem;
  border: 1px solid rgba(37, 99, 235, .18);
  border-radius: 999px;
  background: rgba(37, 99, 235, .07);
  color: var(--c8-primary);
  font-size: .82rem;
  font-weight: 700;
  white-space: nowrap;
}
.gantt-selection-status[hidden] {
  display: none !important;
}
.gantt-selection-status .gantt-selection-clear {
  min-height: 26px;
  padding: .18rem .45rem;
  color: var(--c8-primary);
  font-size: .78rem;
  font-weight: 700;
  text-decoration: none;
}
.gantt-selection-status .gantt-selection-clear:hover,
.gantt-selection-status .gantt-selection-clear:focus-visible {
  background: rgba(37, 99, 235, .1);
}
/* Oper8 v7.0.17: keep DHTMLX row-drag helpers visible inside the native fullscreen element. */
.gantt-card:fullscreen > .gantt_grid_dnd_marker {
  z-index: 100001 !important;
  pointer-events: none !important;
}
.gantt_drag_marker.oper8-gantt-drag-marker {
  width: auto !important;
  height: auto !important;
  max-width: min(420px, calc(100vw - 32px)) !important;
  overflow: visible !important;
  border: 0 !important;
  background: transparent !important;
  box-shadow: none !important;
  opacity: 1 !important;
  pointer-events: none !important;
  z-index: 100000 !important;
}
.oper8-gantt-drag-preview {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  max-width: 100%;
  min-height: 36px;
  padding: .45rem .7rem;
  border: 1px solid rgba(15, 23, 42, .16);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 8px 22px rgba(15, 23, 42, .16);
  color: var(--c8-text);
  font-size: .88rem;
  line-height: 1.25;
}
.oper8-gantt-drag-preview-title {
  display: block;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-weight: 700;
}
.oper8-gantt-drag-preview-count {
  flex: 0 0 auto;
  padding: .15rem .42rem;
  border-radius: 999px;
  background: rgba(37, 99, 235, .1);
  color: var(--c8-primary);
  font-size: .72rem;
  font-weight: 800;
  white-space: nowrap;
}
@media (max-width: 760px) {
  .gantt-selection-status {
    width: 100%;
    justify-content: space-between;
    white-space: normal;
  }
}

/* Oper8 v7.0.4 workload status controls and Kanban closure action */
.bi-ticket-perforated.gantt-ticket-icon { margin-right: 4px; }
.personal-plan-controls-row { display: flex; align-items: center; gap: 8px; margin-top: 9px; min-width: 0; }
.personal-plan-status-control { flex: 1 1 auto; min-width: 0; margin: 0; }
.personal-plan-status-control .form-select { width: 100%; min-width: 0; max-width: none; min-height: 34px; padding-top: .35rem; padding-bottom: .35rem; font-size: .78rem; font-weight: 750; }
.personal-plan-controls-row .personal-plan-progress { flex: 0 0 auto; margin-top: 0; gap: 4px; }
.personal-plan-controls-row .personal-plan-progress .form-select { width: auto; max-width: 72px; margin-left: 0; }
.personal-plan-controls-row .personal-plan-backlog-reset { flex: 0 0 auto; margin-top: 0; }
.kanban-card-action-buttons { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.kanban-close-btn { white-space: nowrap; }

/* v7.0.5-v7.0.10 contextual planner, filter controls and sticky Backlog */
.board-filter-bar > .personal-planner-filter-control {
  width: auto;
  max-width: none;
}
.board-filter-bar > .personal-planner-filter-view {
  flex: 0 0 auto;
}
.board-filter-bar > .personal-planner-filter-period {
  flex: 0 1 300px;
  min-width: 245px;
}
.personal-planner-filter-control .form-label {
  display: flex;
  align-items: center;
  margin-left: 3.5em;
}
.personal-planner-filter-view .form-label {
  margin-left: 0;
}
.personal-planner-view-nav {
  margin: 0;
  gap: 4px;
  padding: 4px;
  box-shadow: none;
  white-space: nowrap;
}
.personal-planner-view-nav .nav-link {
  padding: .55rem .8rem;
}
.personal-planner-period-navigation {
  display: grid;
  grid-template-columns: 36px minmax(165px, 220px) 36px;
  align-items: center;
  gap: 6px;
}
.personal-planner-period-navigation .planner-period-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: calc(2.25rem + 2px);
  padding: 0;
  border: 0;
  background: transparent;
}
.personal-planner-period-navigation .planner-period-arrow:hover,
.personal-planner-period-navigation .planner-period-arrow:focus {
  background: #f2f5fb;
}
.personal-planner-period-navigation .planner-period-arrow.disabled {
  pointer-events: none;
  opacity: .45;
}
.personal-planner-period-navigation #planner-period {
  height: calc(2.25rem + 2px);
  min-width: 0;
}
.personal-planner > .personal-plan-backlog {
  position: sticky;
  left: 0;
  z-index: 6;
  align-self: start;
  box-shadow: 8px 0 18px rgba(15, 23, 42, .06);
}
.personal-planner-week,
.personal-planner-month {
  grid-template-columns: minmax(230px, 280px) minmax(0, 1fr);
  align-items: start;
  overflow: visible;
}
.personal-planner-week > .personal-plan-backlog,
.personal-planner-month > .personal-plan-backlog {
  /* Keep the full Backlog card below the expanded topbar. The compact-state
     override below uses a smaller fixed offset. Explicit values are used here
     rather than a JavaScript-measured custom property so sticky positioning
     remains deterministic on global, project and retainer planners. */
  top: 104px;
  box-sizing: border-box;
  height: auto;
  max-height: calc(100vh - 120px);
  max-height: calc(100dvh - 120px);
  min-height: 0;
  overflow: hidden;
  transition: top .18s ease, height .18s ease, max-height .18s ease;
}
body.topbar-shrunk .personal-planner-week > .personal-plan-backlog,
body.topbar-shrunk .personal-planner-month > .personal-plan-backlog {
  top: 64px;
  height: auto;
  max-height: calc(100vh - 80px);
  max-height: calc(100dvh - 80px);
}
.personal-planner-week > .personal-plan-backlog > header,
.personal-planner-month > .personal-plan-backlog > header {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  background: #f6f8fc;
}
.personal-planner-week > .personal-plan-backlog > .personal-plan-dropzone,
.personal-planner-month > .personal-plan-backlog > .personal-plan-dropzone {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scroll-padding-block: 10px 24px;
  padding-bottom: 24px;
  -webkit-overflow-scrolling: touch;
  -ms-overflow-style: none;
  scrollbar-width: none;
}
.personal-planner-week > .personal-plan-backlog > .personal-plan-dropzone::-webkit-scrollbar,
.personal-planner-month > .personal-plan-backlog > .personal-plan-dropzone::-webkit-scrollbar {
  display: none;
  width: 0;
  height: 0;
}
.personal-plan-backlog .personal-backlog-load-more {
  flex: 0 0 auto;
  align-self: flex-start;
  margin: 0 10px 10px;
  padding: .5rem .25rem;
  color: var(--c8-primary);
  font-weight: 750;
}
.personal-planner-schedule-scroll {
  min-width: 0;
  overflow-x: auto;
  padding-bottom: .5rem;
}
.personal-week-planner {
  min-width: 950px;
  display: grid;
  grid-template-columns: repeat(5, minmax(180px, 1fr));
  gap: 12px;
  align-items: stretch;
}
.personal-plan-card.is-static { cursor: default; }
.personal-plan-card.is-static:active { cursor: default; }
.personal-month-planner {
  min-width: 950px;
  display: grid;
  gap: 8px;
}
.personal-month-weekday-row,
.personal-month-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(180px, 1fr));
  gap: 10px;
}
.personal-month-weekday-row span {
  padding: 0 10px 2px;
  color: var(--c8-muted);
  font-size: .76rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.personal-month-day {
  min-width: 0;
  min-height: 245px;
}
.personal-month-day.is-outside-month {
  min-height: 245px;
  border: 1px dashed rgba(148, 163, 184, .28);
  border-radius: 8px;
  background: rgba(248, 250, 252, .55);
}
.personal-month-day > header {
  align-items: center;
  padding: 9px 10px;
}
.personal-month-day > header h2 {
  display: inline-flex;
  align-items: center;
  gap: 5px;
}
.personal-month-day > header h2 > span {
  color: var(--c8-text);
  font-size: 1rem;
}
.personal-month-day > header h2 small {
  color: var(--c8-muted);
  font-size: .72rem;
  font-weight: 750;
  text-transform: uppercase;
}
.personal-month-day .personal-plan-dropzone {
  min-height: 185px;
  padding: 8px;
  gap: 8px;
}
.personal-month-day .personal-plan-card { padding: 10px; }
.personal-planner-list {
  grid-template-columns: minmax(230px, 280px) minmax(0, 1fr);
  align-items: start;
}
.personal-plan-list {
  min-width: 0;
  display: grid;
  gap: 12px;
}
.personal-plan-list-day { min-width: 0; }
.personal-plan-list-day > header { align-items: center; }
.personal-plan-list-items {
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  align-content: start;
}
.personal-plan-list-empty {
  min-height: 180px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 24px;
  border: 1px dashed var(--c8-border);
  border-radius: 8px;
  background: #fff;
  color: var(--c8-muted);
  text-align: center;
}
.personal-plan-list-empty strong { color: var(--c8-text); }
@media (max-width: 760px) {
  .personal-planner-week > .personal-plan-backlog,
  .personal-planner-month > .personal-plan-backlog {
    top: 132px;
    height: auto;
    max-height: calc(100vh - 148px);
    max-height: calc(100dvh - 148px);
  }
  body.topbar-shrunk .personal-planner-week > .personal-plan-backlog,
  body.topbar-shrunk .personal-planner-month > .personal-plan-backlog {
    top: 92px;
    height: auto;
    max-height: calc(100vh - 108px);
    max-height: calc(100dvh - 108px);
  }
  .board-filter-bar > .personal-planner-filter-control {
    flex-basis: 100%;
    width: 100%;
  }
  .personal-planner-period-navigation { width: 100%; grid-template-columns: 36px minmax(0, 1fr) 36px; }
  .personal-planner-view-nav { width: 100%; }
  .personal-planner-view-nav .nav-link { flex: 1 1 auto; text-align: center; }
}


/* Oper8 v7.0.15: rich Ask Oper8 replies and animated waiting state. */
.oper8-ai-message.is-assistant.has-rich-content {
  width: 100%;
  max-width: 100%;
  white-space: normal;
  padding: 1rem 1.05rem;
}
.oper8-ai-message.is-loading {
  display: inline-flex;
  width: auto;
  align-items: center;
  gap: .55rem;
  white-space: normal;
}
.oper8-ai-spinner {
  width: 1rem;
  height: 1rem;
  border-width: .13em;
}
.oper8-ai-thinking-dots {
  display: inline-flex;
  align-items: center;
  gap: .18rem;
  margin-left: -.25rem;
}
.oper8-ai-thinking-dots span {
  width: .28rem;
  height: .28rem;
  border-radius: 50%;
  background: currentColor;
  opacity: .3;
  animation: oper8-ai-thinking-dot 1.15s infinite ease-in-out;
}
.oper8-ai-thinking-dots span:nth-child(2) { animation-delay: .14s; }
.oper8-ai-thinking-dots span:nth-child(3) { animation-delay: .28s; }
@keyframes oper8-ai-thinking-dot {
  0%, 70%, 100% { opacity: .25; transform: translateY(0); }
  35% { opacity: 1; transform: translateY(-2px); }
}
.oper8-ai-rich {
  min-width: 0;
  overflow-wrap: anywhere;
}
.oper8-ai-rich > :first-child { margin-top: 0; }
.oper8-ai-rich > :last-child { margin-bottom: 0; }
.oper8-ai-rich h3,
.oper8-ai-rich h4,
.oper8-ai-rich h5,
.oper8-ai-rich h6 {
  margin: 1rem 0 .45rem;
  color: #0f172a;
  font-weight: 700;
  line-height: 1.3;
}
.oper8-ai-rich h3 { font-size: 1.05rem; }
.oper8-ai-rich h4 { font-size: .98rem; }
.oper8-ai-rich h5,
.oper8-ai-rich h6 { font-size: .92rem; }
.oper8-ai-rich p { margin: 0 0 .75rem; }
.oper8-ai-rich ul,
.oper8-ai-rich ol {
  margin: 0 0 .85rem;
  padding-left: 1.3rem;
}
.oper8-ai-rich li { margin-bottom: .35rem; }
.oper8-ai-rich li:last-child { margin-bottom: 0; }
.oper8-ai-rich blockquote {
  margin: .85rem 0;
  padding: .65rem .8rem;
  border-left: 3px solid var(--oper8-primary, #172554);
  background: rgba(255, 255, 255, .72);
  color: #475569;
  border-radius: 0 .45rem .45rem 0;
}
.oper8-ai-rich code {
  padding: .08rem .32rem;
  border-radius: .3rem;
  background: #e2e8f0;
  color: #0f172a;
  font-size: .86em;
}
.oper8-ai-rich pre {
  max-width: 100%;
  margin: .85rem 0;
  padding: .8rem;
  overflow: auto;
  border-radius: .55rem;
  background: #0f172a;
  color: #f8fafc;
  white-space: pre;
}
.oper8-ai-rich pre code {
  padding: 0;
  background: transparent;
  color: inherit;
  font-size: .82rem;
}
.oper8-ai-table-wrap {
  margin: .8rem 0 1rem;
  border: 1px solid #dbe2ea;
  border-radius: .55rem;
  background: #fff;
}
.oper8-ai-table {
  min-width: 420px;
  margin: 0;
  font-size: .84rem;
  vertical-align: top;
}
.oper8-ai-table > :not(caption) > * > * {
  padding: .55rem .65rem;
  border-color: #e2e8f0;
}
.oper8-ai-table thead th {
  background: #e9eef5;
  color: #0f172a;
  font-weight: 700;
  white-space: nowrap;
}
.oper8-ai-table tbody tr:last-child td { border-bottom: 0; }
.oper8-ai-link {
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
}
.oper8-ai-form button[type="submit"] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .4rem;
}
@media (prefers-reduced-motion: reduce) {
  .oper8-ai-thinking-dots span { animation: none; opacity: .65; }
}
.oper8-ai-code-link { text-decoration: none; }
.oper8-ai-code-link:hover code { text-decoration: underline; text-underline-offset: 2px; }

/* Oper8 v7.0.16: expanded project icons, persistent assignee-filter actions and role-scoped AI assistant. */

/* Oper8 v7.0.21 service category to Xero account mapping */
.estimate-service-category-manager .estimate-group-category-head,
.estimate-service-category-manager .estimate-group-category-row {
  grid-template-columns: 34px minmax(70px, .28fr) minmax(150px, .75fr) minmax(210px, 1fr) 34px;
}
.estimate-service-category-manager .bootstrap-select,
.estimate-service-category-manager .bootstrap-select > .dropdown-toggle {
  width: 100% !important;
}
@media (max-width: 767.98px) {
  .estimate-service-category-manager .estimate-group-category-row {
    grid-template-columns: 34px minmax(0, 1fr) 34px;
  }
  .estimate-service-category-manager .estimate-group-category-row [data-estimate-group-category-drag] {
    grid-column: 1;
    grid-row: 1;
  }
  .estimate-service-category-manager .estimate-group-category-row input[name="estimate_service_category_code[]"] {
    grid-column: 2;
    grid-row: 1;
  }
  .estimate-service-category-manager .estimate-group-category-row input[name="estimate_service_category_name[]"] {
    grid-column: 2;
    grid-row: 2;
  }
  .estimate-service-category-manager .estimate-group-category-row .bootstrap-select,
  .estimate-service-category-manager .estimate-group-category-row select[name="estimate_service_category_xero_account_code[]"] {
    grid-column: 2;
    grid-row: 3;
  }
  .estimate-service-category-manager .estimate-group-category-row [data-remove-estimate-group-category] {
    grid-column: 3;
    grid-row: 1;
  }
}

/* Oper8 v7.0.27 AJAX global finance register filters */
.global-finance-register-filters {
  display: flex !important;
  flex-wrap: nowrap;
  align-items: flex-end;
  gap: 10px;
  width: 100%;
  margin: 0 0 18px;
}
.global-finance-register-filters .finance-filter-control {
  flex: 0 0 auto;
  min-width: 0;
}
.global-finance-register-filters .finance-filter-search {
  flex: 1 1 260px;
  min-width: 220px;
}
.global-finance-register-filters .finance-filter-context-type {
  width: 145px;
}
.global-finance-register-filters .finance-filter-context-record {
  width: 205px;
}
.global-finance-register-filters .finance-filter-status {
  width: 145px;
}
.global-finance-register-filters .finance-filter-sent {
  width: 145px;
}
.global-finance-register-filters .finance-filter-per-page {
  width: 125px;
}
.global-finance-register-filters .form-control,
.global-finance-register-filters .form-select,
.global-finance-register-filters .finance-filter-reset {
  box-sizing: border-box;
  height: 44px;
  min-height: 44px;
  line-height: 1.25;
}
.global-finance-register-filters .form-control {
  padding: .5rem .8rem;
}
.global-finance-register-filters .form-select {
  padding: .5rem 2.25rem .5rem .8rem;
  background-position: right .8rem center;
}
[data-finance-register][aria-busy="true"] {
  opacity: .82;
  transition: opacity .16s ease;
}
.global-finance-register-filters .finance-filter-reset {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  padding-inline: 14px;
  white-space: nowrap;
}
.global-finance-register-filters .finance-filter-reset .app-icon {
  margin: 0;
}
@media (max-width: 1199.98px) {
  .global-finance-register-filters {
    flex-wrap: wrap;
  }
  .global-finance-register-filters .finance-filter-search {
    flex-basis: calc(50% - 5px);
  }
  .global-finance-register-filters .finance-filter-context-record {
    flex: 1 1 210px;
  }
}
@media (max-width: 575.98px) {
  .global-finance-register-filters {
    display: grid !important;
    grid-template-columns: 1fr;
  }
  .global-finance-register-filters .finance-filter-control,
  .global-finance-register-filters .finance-filter-search,
  .global-finance-register-filters .finance-filter-context-type,
  .global-finance-register-filters .finance-filter-context-record,
  .global-finance-register-filters .finance-filter-status,
  .global-finance-register-filters .finance-filter-sent,
  .global-finance-register-filters .finance-filter-per-page,
  .global-finance-register-filters .finance-filter-reset {
    width: 100%;
    min-width: 0;
  }
}

/* Oper8 v7.0.30 full-screen global search */
.topbar-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; min-width: 0; }
.oper8-global-search-close kbd,
.oper8-global-search-footer kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 25px; min-height: 22px; padding: 2px 6px; border: 1px solid #d0d5dd; border-bottom-width: 2px; border-radius: 5px; background: #fff; color: #475467; box-shadow: none; font-family: inherit; font-size: .7rem; font-weight: 800; line-height: 1; }
body.oper8-global-search-open { overflow: hidden; }
.oper8-global-search-overlay[hidden] { display: none !important; }
.oper8-global-search-overlay { position: fixed; inset: 0; z-index: 12000; display: flex; width: 100%; height: 100dvh; background: rgba(15,23,42,.34); opacity: 0; visibility: hidden; transition: opacity .15s ease, visibility .15s ease; }
.oper8-global-search-overlay.is-open { opacity: 1; visibility: visible; }
.oper8-global-search-shell { width: 100%; min-width: 0; height: 100%; display: grid; grid-template-rows: auto auto auto minmax(0,1fr) auto; background: #f7f8fb; transform: translateY(-8px); transition: transform .15s ease; }
.oper8-global-search-overlay.is-open .oper8-global-search-shell { transform: translateY(0); }
.oper8-global-search-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 22px clamp(20px,4vw,64px); border-bottom: 1px solid #e4e7ec; background: rgba(255,255,255,.98); }
.oper8-global-search-heading { display: flex; align-items: center; gap: 14px; min-width: 0; }
.oper8-global-search-heading h2 { margin: 0; font-size: clamp(1.25rem,2vw,1.75rem); font-weight: 850; color: #101828; }
.oper8-global-search-mark { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; flex: 0 0 44px; border-radius: 8px; background: rgba(49,87,213,.1); color: var(--c8-primary); font-size: 1.25rem; }
.oper8-global-search-close { display: inline-flex; align-items: center; gap: 8px; min-height: 40px; border-color: #d0d5dd; }
.oper8-global-search-input-wrap { position: relative; display: flex; align-items: center; width: min(1120px,calc(100% - 40px)); margin: 26px auto 0; }
.oper8-global-search-input-wrap > .bi { position: absolute; left: 20px; z-index: 2; color: #667085; font-size: 1.2rem; pointer-events: none; }
.oper8-global-search-input-wrap .form-control { height: 60px; padding: 12px 98px 12px 54px; border: 1px solid #b9c1ce; border-radius: 10px; background: #fff; box-shadow: 0 10px 30px rgba(15,23,42,.08); font-size: clamp(1rem,1.5vw,1.2rem); font-weight: 650; }
.oper8-global-search-input-wrap .form-control:focus { border-color: var(--c8-primary); box-shadow: 0 0 0 .22rem rgba(49,87,213,.13),0 12px 34px rgba(15,23,42,.1); }
.oper8-global-search-shortcut { position: absolute; right: 17px; display: inline-flex; align-items: center; min-height: 28px; padding: 3px 9px; border: 1px solid #d0d5dd; border-radius: 6px; background: #f9fafb; color: #667085; font-size: .75rem; font-weight: 800; pointer-events: none; }
.oper8-global-search-summary { width: min(1120px,calc(100% - 40px)); margin: 11px auto 0; color: #667085; font-size: .84rem; font-weight: 650; }
.oper8-global-search-results { min-height: 0; overflow: auto; padding: 22px clamp(20px,4vw,64px) 40px; scrollbar-gutter: stable; }
.oper8-global-search-grid { width: min(1500px,100%); margin: 0 auto; display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,315px),1fr)); align-items: start; gap: 18px; }
.oper8-global-search-group { min-width: 0; overflow: hidden; border: 1px solid #e4e7ec; border-radius: 10px; background: #fff; box-shadow: 0 8px 24px rgba(15,23,42,.04); }
.oper8-global-search-group > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 52px; padding: 13px 15px; border-bottom: 1px solid #eaecf0; background: #fcfcfd; }
.oper8-global-search-group > header h3 { display: flex; align-items: center; gap: 9px; margin: 0; color: #344054; font-size: .92rem; font-weight: 850; }
.oper8-global-search-group > header h3 i { color: var(--c8-primary); font-size: 1rem; }
.oper8-global-search-group-count { display: inline-flex; align-items: center; justify-content: center; min-width: 27px; min-height: 25px; padding: 2px 7px; border-radius: 999px; background: #eef2ff; color: var(--c8-primary-dark); font-size: .74rem; font-weight: 850; }
.oper8-global-search-group-list { display: flex; flex-direction: column; }
.oper8-global-search-result { position: relative; display: block; min-width: 0; padding: 14px 42px 14px 15px; border-bottom: 1px solid #f0f1f3; color: inherit; text-decoration: none; outline: none; transition: background-color .12s ease,box-shadow .12s ease; }
.oper8-global-search-result:last-child { border-bottom: 0; }
.oper8-global-search-result:hover,
.oper8-global-search-result:focus,
.oper8-global-search-result.is-keyboard-active { background: #f5f7ff; color: inherit; box-shadow: inset 3px 0 0 var(--c8-primary); }
.oper8-global-search-result-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; min-width: 0; }
.oper8-global-search-result-top strong { min-width: 0; overflow-wrap: anywhere; color: #101828; font-size: .91rem; line-height: 1.35; }
.oper8-global-search-identifier { flex: 0 0 auto; max-width: 45%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #667085; font-size: .72rem; font-weight: 750; }
.oper8-global-search-result-meta { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 6px; min-width: 0; color: #667085; font-size: .75rem; }
.oper8-global-search-result-meta > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.oper8-global-search-status { flex: 0 0 auto; padding: 2px 7px; border-radius: 999px; background: #f2f4f7; color: #475467; text-transform: capitalize; font-size: .68rem; font-weight: 800; }
.oper8-global-search-result p { display: -webkit-box; margin: 7px 0 0; overflow: hidden; color: #667085; font-size: .76rem; line-height: 1.4; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
.oper8-global-search-result-arrow { position: absolute; top: 17px; right: 15px; color: #98a2b3; font-size: .9rem; transition: color .12s ease,transform .12s ease; }
.oper8-global-search-result:hover .oper8-global-search-result-arrow,
.oper8-global-search-result:focus .oper8-global-search-result-arrow,
.oper8-global-search-result.is-keyboard-active .oper8-global-search-result-arrow { color: var(--c8-primary); transform: translate(2px,-2px); }
.oper8-global-search-empty,
.oper8-global-search-loading { min-height: 280px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 9px; text-align: center; color: #667085; }
.oper8-global-search-empty > i { display: inline-flex; align-items: center; justify-content: center; width: 54px; height: 54px; border-radius: 12px; background: #eef2ff; color: var(--c8-primary); font-size: 1.35rem; }
.oper8-global-search-empty h3 { margin: 5px 0 0; color: #344054; font-size: 1.08rem; font-weight: 850; }
.oper8-global-search-empty p { margin: 0; max-width: 460px; }
.oper8-global-search-loading .spinner-border { width: 2rem; height: 2rem; color: var(--c8-primary); }
.oper8-global-search-loading strong { color: #344054; }
.oper8-global-search-footer { display: flex; align-items: center; justify-content: center; gap: 22px; min-height: 48px; padding: 9px 20px; border-top: 1px solid #e4e7ec; background: rgba(255,255,255,.96); color: #667085; font-size: .74rem; font-weight: 700; }
.oper8-global-search-footer span { display: inline-flex; align-items: center; gap: 5px; }
@media (max-width: 767.98px) {
  .topbar-actions { width: 100%; justify-content: flex-start; }
  .oper8-global-search-header { padding: 16px 18px; }
  .oper8-global-search-heading .eyebrow { display: none; }
  .oper8-global-search-heading h2 { font-size: 1.1rem; }
  .oper8-global-search-mark { width: 38px; height: 38px; flex-basis: 38px; }
  .oper8-global-search-close span { display: none; }
  .oper8-global-search-input-wrap { width: calc(100% - 28px); margin-top: 16px; }
  .oper8-global-search-input-wrap .form-control { height: 54px; padding-right: 76px; font-size: 1rem; }
  .oper8-global-search-summary { width: calc(100% - 28px); }
  .oper8-global-search-results { padding: 16px 14px 28px; }
  .oper8-global-search-grid { grid-template-columns: 1fr; }
  .oper8-global-search-footer { gap: 12px; }
  .oper8-global-search-footer span:nth-child(2) { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  .oper8-global-search-overlay,
  .oper8-global-search-shell,
  .oper8-global-search-result,
  .oper8-global-search-result-arrow { transition: none !important; scroll-behavior: auto !important; }
}

/* Oper8 v7.0.31 organisation linked work register */
.organisation-linked-work-cell {
  min-width: 360px;
}
.organisation-linked-work {
  display: grid;
  gap: 10px;
  min-width: 320px;
}
.organisation-linked-work-group {
  display: grid;
  grid-template-columns: 104px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
}
.organisation-linked-work-label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 30px;
  color: var(--c8-muted);
  font-size: .76rem;
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
}
.organisation-linked-work-label > span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: 999px;
  background: #eef2f7;
  color: #475569;
  font-size: .7rem;
}
.organisation-linked-work-links {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.organisation-linked-work-link {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  min-height: 30px;
  max-width: 240px;
  padding: 5px 9px;
  border: 1px solid #d0d5dd;
  border-radius: 8px;
  background: #fff;
  color: var(--c8-primary);
  font-size: .78rem;
  font-weight: 650;
  line-height: 1.2;
  text-decoration: none;
}
.organisation-linked-work-link:hover,
.organisation-linked-work-link:focus-visible {
  border-color: var(--c8-primary);
  background: #f8faff;
  color: var(--c8-primary);
}
.organisation-linked-work-link small {
  display: block;
  max-width: 100%;
  margin-top: 2px;
  overflow: hidden;
  color: var(--c8-muted);
  font-size: .68rem;
  font-weight: 500;
  text-overflow: ellipsis;
  white-space: nowrap;
}
@media (max-width: 767.98px) {
  .organisation-linked-work-cell {
    min-width: 300px;
  }
  .organisation-linked-work-group {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* v7.0.34 non-blocking integration status notices */
.oper8-notice-region {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 2147483600;
  display: grid;
  gap: .65rem;
  width: min(28rem, calc(100vw - 2rem));
  pointer-events: none;
}
.oper8-notice {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: start;
  gap: .7rem;
  padding: .85rem .9rem;
  border: 1px solid #d0d5dd;
  border-radius: .75rem;
  background: #fff;
  box-shadow: 0 .75rem 2rem rgba(15, 23, 42, .16);
  color: #344054;
  opacity: 0;
  transform: translateY(-.5rem);
  transition: opacity .18s ease, transform .18s ease;
  pointer-events: auto;
}
.oper8-notice.is-visible { opacity: 1; transform: translateY(0); }
.oper8-notice.is-leaving { opacity: 0; transform: translateY(-.35rem); }
.oper8-notice > .bi { margin-top: .1rem; font-size: 1.05rem; }
.oper8-notice-warning { border-color: #f5c451; background: #fffbeb; }
.oper8-notice-warning > .bi { color: #b54708; }
.oper8-notice-danger { border-color: #fda29b; background: #fff5f4; }
.oper8-notice-danger > .bi { color: #d92d20; }
.oper8-notice-success { border-color: #6ce9a6; background: #ecfdf3; }
.oper8-notice-success > .bi { color: #079455; }
.oper8-notice-message { min-width: 0; white-space: normal; overflow-wrap: anywhere; line-height: 1.45; }
.oper8-notice-close {
  border: 0;
  background: transparent;
  color: inherit;
  padding: .1rem;
  line-height: 1;
  opacity: .65;
}
.oper8-notice-close:hover, .oper8-notice-close:focus-visible { opacity: 1; }
@media (max-width: 575.98px) {
  .oper8-notice-region { top: .65rem; right: .65rem; width: calc(100vw - 1.3rem); }
}
@media (prefers-reduced-motion: reduce) {
  .oper8-notice { transition: none; }
}

/* Oper8 v7.0.37: AJAX report ToDos and title-first delivery rows. */
.report-delivery-dashboard-compact .report-delivery-name {
  min-width: 300px;
  width: 29%;
  padding-top: 14px;
  padding-bottom: 14px;
}
.report-delivery-title-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.report-delivery-title-link {
  display: inline-flex !important;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex: 1 1 auto;
}
.report-delivery-title-icon {
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 11px;
  background: #eef2ff;
  color: var(--c8-primary);
  border: 1px solid #dbe4ff;
}
.report-delivery-title-icon.is-retainer {
  background: #ecfeff;
  color: #0e7490;
  border-color: #cffafe;
}
.report-delivery-title-icon .project-icon,
.report-delivery-title-icon .app-icon {
  margin: 0;
  font-size: 1.08rem;
  line-height: 1;
}
.report-delivery-title-copy {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px 8px;
  min-width: 0;
}
.report-delivery-title-copy strong {
  font-size: 1.02rem;
  line-height: 1.28;
  overflow-wrap: anywhere;
}
.report-delivery-title-copy .badge {
  margin: 0;
  font-size: .66rem;
}
.report-delivery-title-row .report-row-tools {
  order: 2;
  margin: 0;
  flex: 0 0 auto;
}
.report-delivery-title-row .report-row-tools .btn {
  width: 32px;
  height: 32px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.report-todo-item.is-completing {
  opacity: .58;
  pointer-events: none;
  transition: opacity .16s ease;
}
.report-todo-item.is-completing .report-todo-check button {
  border-color: #16a34a;
  background: #dcfce7;
  position: relative;
}
.report-todo-item.is-completing .report-todo-check button::after {
  content: '';
  width: 9px;
  height: 9px;
  border: 2px solid #16a34a;
  border-right-color: transparent;
  border-radius: 999px;
  animation: oper8-report-todo-spin .65s linear infinite;
  position: absolute;
  inset: 0;
  margin: auto;
}
@keyframes oper8-report-todo-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
  .report-todo-item.is-completing,
  .report-todo-item.is-completing .report-todo-check button::after { transition: none; animation: none; }
}
@media (max-width: 992px) {
  .report-delivery-dashboard-compact .report-delivery-name { min-width: 270px; width: auto; }
  .report-delivery-title-row { align-items: center; }
}


/* Oper8 v7.0.40: delivery-row context actions, complete collapsed borders and clean report routes. */
.report-delivery-title-main {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
  flex: 1 1 auto;
}
.report-delivery-title-main .report-delivery-title-link {
  flex: 0 1 auto;
}
.report-context-actions {
  flex: 0 0 auto;
}
.report-context-actions-toggle {
  min-height: 32px;
  padding: 4px 9px;
  font-size: .72rem;
  white-space: nowrap;
}
.report-context-actions-toggle .app-icon {
  width: 14px;
  height: 14px;
  margin-right: 4px;
}
.report-context-actions-menu {
  min-width: 245px;
}
.report-delivery-table tr.is-collapsed > td {
  border-bottom-color: var(--bs-border-color, #dee2e6);
}
@media (max-width: 767.98px) {
  .report-delivery-title-main { align-items: flex-start; }
  .report-context-actions { margin-left: 48px; }
}

/* Oper8 v7.0.41 user display ordering */
.user-order-heading,
.user-order-cell { width: 88px; white-space: nowrap; }
.user-order-cell { display: flex; align-items: center; gap: 8px; }
.user-order-handle { width: 32px; height: 32px; padding: 0; cursor: grab; display: inline-flex; align-items: center; justify-content: center; }
.user-order-handle:active { cursor: grabbing; }
.user-order-position { min-width: 1.5rem; color: var(--c8-muted); font-weight: 700; text-align: center; }
[data-user-order-row].is-dragging { opacity: .55; }
[data-user-order-row].is-dragging > td { background: var(--bs-tertiary-bg); }

/* v7.0.49 user, workload and ticket-register refinements */
.user-register-identity { display: flex; flex-direction: column; align-items: flex-start; min-width: 0; line-height: 1.25; }
.user-register-identity strong,
.user-register-identity small { display: block; max-width: 100%; overflow-wrap: anywhere; }
.user-register-identity small { margin-top: 3px; color: var(--c8-muted); font-size: .78rem; font-weight: 500; }
.workload-card-status-control { margin-top: 10px; }
.workload-card-status-control .form-select { width: 100%; min-width: 0; min-height: 34px; padding-top: .35rem; padding-bottom: .35rem; font-size: .78rem; font-weight: 750; }
.ticket-register-assignee-cell { min-width: 72px; width: 72px; white-space: nowrap; }
.ticket-register-assignee-select { min-width: 0; }

/* v7.0.50 Kanban-style assignee avatar picker on the ticket register */
.ticket-register-assignee-cell .assignee-picker {
  position: relative;
  display: inline-flex;
  width: 34px;
  min-width: 34px;
  vertical-align: middle;
}
.ticket-register-assignee-cell .assignee-picker-toggle,
.ticket-register-assignee-cell .assignee-picker-toggle:hover,
.ticket-register-assignee-cell .assignee-picker-toggle:focus,
.ticket-register-assignee-cell .assignee-picker-toggle:active,
.ticket-register-assignee-cell .assignee-picker-toggle.show {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  min-height: 34px;
  padding: 0 !important;
  border: 0 !important;
  border-radius: 50%;
  background: transparent !important;
  color: var(--c8-muted);
  box-shadow: none !important;
}
.ticket-register-assignee-cell .assignee-picker-toggle::after,
.ticket-register-assignee-cell .assignee-picker-toggle span { display: none; }
.ticket-register-assignee-cell .assignee-picker-toggle img {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  object-fit: cover;
}
.ticket-register-assignee-cell .assignee-picker-toggle > i {
  font-size: 1.25rem;
  line-height: 1;
}
.ticket-register-assignee-cell .assignee-picker-toggle:focus-visible {
  outline: 2px solid var(--c8-primary);
  outline-offset: 2px;
}
.ticket-register-assignee-cell .assignee-picker-menu {
  width: max-content;
  min-width: 240px;
  max-width: min(320px, calc(100vw - 32px));
  max-height: 320px;
  overflow-y: auto;
  padding: .4rem;
  z-index: 1085;
}
.ticket-register-assignee-cell .assignee-picker-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  padding: .5rem .7rem;
  white-space: nowrap;
}
.ticket-register-assignee-cell .assignee-picker-menu .dropdown-item span {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
}



/* Oper8 v7.0.53 Retainer commercial fields and template menu hardening */
@media (min-width: 768px) {
  .template-register-table { overflow: visible; }
}
.template-register-table .dropdown-menu { z-index: 1065; }

/* Oper8 v7.0.54 Retainer SharePoint document attachments */
.retainer-documents-card .section-heading { margin-bottom: 1rem; }
.retainer-document-list {
  display: grid;
  gap: .75rem;
}
.retainer-document-row {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  gap: .85rem;
  align-items: center;
  padding: .85rem 1rem;
  border: 1px solid var(--c8-border, #d0d5dd);
  border-radius: .75rem;
  background: #fff;
}
.retainer-document-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 42px;
  height: 42px;
  border-radius: .65rem;
  background: var(--c8-soft, #f6f7f9);
  color: var(--c8-primary);
  font-size: 1.25rem;
}
.retainer-document-main { min-width: 0; }
.retainer-document-name {
  display: inline-block;
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
  font-weight: 700;
  text-decoration: none;
}
.retainer-document-meta {
  display: flex;
  flex-wrap: wrap;
  gap: .25rem .75rem;
  margin-top: .25rem;
  color: var(--c8-muted);
  font-size: .82rem;
}
.retainer-document-actions {
  display: flex;
  gap: .35rem;
  align-items: center;
}
.sharepoint-picker-dialog { max-width: min(1120px, calc(100vw - 2rem)); }
.sharepoint-picker-layout {
  display: grid;
  grid-template-columns: minmax(240px, .72fr) minmax(0, 1.65fr);
  gap: 1rem;
  min-height: 430px;
}
.sharepoint-picker-sidebar,
.sharepoint-picker-browser,
.sharepoint-selected-panel {
  min-width: 0;
  padding: 1rem;
  border: 1px solid var(--c8-border, #d0d5dd);
  border-radius: .75rem;
  background: #fff;
}
.sharepoint-picker-sidebar {
  max-height: 560px;
  overflow-y: auto;
}
.sharepoint-picker-browser {
  display: flex;
  flex-direction: column;
  min-height: 430px;
}
.sharepoint-browser-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 1rem;
}
.sharepoint-result-list {
  display: grid;
  gap: .4rem;
}
.sharepoint-result-button {
  display: grid;
  grid-template-columns: 26px minmax(0, 1fr);
  gap: .6rem;
  align-items: center;
  width: 100%;
  padding: .65rem .7rem;
  border: 1px solid transparent;
  border-radius: .55rem;
  background: transparent;
  color: inherit;
  text-align: left;
}
.sharepoint-result-button:hover,
.sharepoint-result-button:focus-visible {
  border-color: var(--c8-border, #d0d5dd);
  background: var(--c8-soft, #f6f7f9);
}
.sharepoint-result-button.is-active {
  border-color: var(--c8-primary);
  background: color-mix(in srgb, var(--c8-primary) 8%, white);
}
.sharepoint-result-button > i {
  font-size: 1.15rem;
  color: var(--c8-primary);
}
.sharepoint-result-button span,
.sharepoint-result-button strong,
.sharepoint-result-button small { display: block; min-width: 0; }
.sharepoint-result-button strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sharepoint-result-button small {
  color: var(--c8-muted);
  font-size: .75rem;
}
.sharepoint-file-list {
  flex: 1 1 auto;
  min-height: 260px;
  max-height: 500px;
  overflow-y: auto;
  border: 1px solid var(--c8-border, #d0d5dd);
  border-radius: .65rem;
  background: #fff;
}
.sharepoint-item-row {
  display: grid;
  grid-template-columns: 24px 30px minmax(0, 1fr) auto;
  gap: .55rem;
  align-items: center;
  width: 100%;
  min-height: 58px;
  padding: .6rem .8rem;
  border: 0;
  border-bottom: 1px solid var(--c8-border, #e4e7ec);
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.sharepoint-item-row:last-child { border-bottom: 0; }
.sharepoint-item-row.is-folder { grid-template-columns: 30px minmax(0, 1fr) auto; }
.sharepoint-item-row:hover,
.sharepoint-item-row:focus-within { background: var(--c8-soft, #f6f7f9); }
.sharepoint-item-row .form-check-input { margin: 0; }
.sharepoint-item-icon {
  color: var(--c8-primary);
  font-size: 1.18rem;
  text-align: center;
}
.sharepoint-item-main,
.sharepoint-item-main strong,
.sharepoint-item-main small { display: block; min-width: 0; }
.sharepoint-item-main strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sharepoint-item-main small {
  margin-top: .1rem;
  color: var(--c8-muted);
  font-size: .76rem;
}
.sharepoint-item-arrow { color: var(--c8-muted); }
.sharepoint-browser-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .65rem;
  min-height: 250px;
  padding: 2rem;
  color: var(--c8-muted);
  text-align: center;
}
.sharepoint-browser-empty > i { font-size: 2rem; }
.sharepoint-browser-empty p { margin: 0; }
.sharepoint-selected-panel { margin-top: 1rem; }
.sharepoint-selected-row {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) minmax(165px, 220px) auto;
  gap: .7rem;
  align-items: center;
  padding: .65rem 0;
  border-bottom: 1px solid var(--c8-border, #e4e7ec);
}
.sharepoint-selected-row:last-child { border-bottom: 0; }
.sharepoint-selected-icon { color: var(--c8-primary); font-size: 1.15rem; text-align: center; }
.sharepoint-selected-main,
.sharepoint-selected-main strong,
.sharepoint-selected-main span { display: block; min-width: 0; }
.sharepoint-selected-main strong {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sharepoint-selected-main span { color: var(--c8-muted); font-size: .76rem; }
@media (max-width: 900px) {
  .sharepoint-picker-layout { grid-template-columns: 1fr; }
  .sharepoint-picker-sidebar { max-height: none; }
  .sharepoint-selected-row { grid-template-columns: 30px minmax(0, 1fr) auto; }
  .sharepoint-selected-row .form-select { grid-column: 2 / -1; }
}
@media (max-width: 575.98px) {
  .retainer-document-row { grid-template-columns: 38px minmax(0, 1fr); }
  .retainer-document-icon { width: 38px; height: 38px; }
  .retainer-document-actions { grid-column: 2; }
  .sharepoint-picker-dialog { max-width: calc(100vw - 1rem); margin: .5rem; }
  .sharepoint-picker-sidebar,
  .sharepoint-picker-browser,
  .sharepoint-selected-panel { padding: .75rem; }
}
.sharepoint-organisation-shortcut {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: .5rem 1rem;
  margin-bottom: 1rem;
  padding: .65rem .8rem;
  border: 1px solid var(--c8-border, #d0d5dd);
  border-radius: .6rem;
  background: var(--c8-soft, #f6f7f9);
  font-size: .85rem;
}
.sharepoint-organisation-shortcut a { font-weight: 650; text-decoration: none; }
.sharepoint-connect-state p { max-width: 620px; }

/* Oper8 v7.0.55 SharePoint integration diagnostics */
#microsoft-sharepoint { scroll-margin-top: 7rem; }

/* Oper8 v7.0.57 ticket register filtering and quick-edit controls */
.ticket-status-filter { min-width: 0; }
.ticket-status-filter > .dropdown { width: 100%; }
.ticket-status-filter .ticket-status-filter-toggle,
.ticket-status-filter .ticket-status-filter-toggle:hover,
.ticket-status-filter .ticket-status-filter-toggle:focus,
.ticket-status-filter .ticket-status-filter-toggle:active,
.ticket-status-filter .ticket-status-filter-toggle.show {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  padding: .55rem 2.25rem .55rem .75rem;
  border-color: var(--c8-border, #d0d5dd) !important;
  border-radius: .55rem;
  background-color: #fff !important;
  color: #344054 !important;
  box-shadow: none !important;
  text-align: left;
}
.ticket-status-filter .ticket-status-filter-toggle:focus-visible {
  border-color: var(--c8-primary, #3157d5) !important;
  box-shadow: 0 0 0 .2rem rgba(49, 87, 213, .16) !important;
}
.ticket-status-filter .dropdown-menu {
  width: 100%;
  min-width: 240px;
  max-width: min(320px, calc(100vw - 32px));
  padding: .5rem !important;
  border-color: var(--c8-border, #d0d5dd);
  border-radius: .65rem;
  box-shadow: 0 14px 34px rgba(15, 23, 42, .14);
  z-index: 1085;
}
.ticket-status-filter-list {
  display: grid;
  gap: .15rem;
  max-height: 280px;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.ticket-status-filter-option {
  display: grid;
  grid-template-columns: 18px 10px minmax(0, 1fr);
  align-items: center;
  gap: .55rem;
  min-height: 38px;
  margin: 0;
  padding: .45rem .55rem;
  border-radius: .45rem;
  color: #344054;
  cursor: pointer;
}
.ticket-status-filter-option:hover { background: var(--c8-surface-soft, #f6f8fb); }
.ticket-status-filter-option .form-check-input {
  position: static;
  float: none;
  width: 18px;
  height: 18px;
  margin: 0;
  border: 1px solid #98a2b3;
  box-shadow: none;
}
.ticket-status-filter-option .form-check-input:checked { border-color: var(--c8-primary, #3157d5); background-color: var(--c8-primary, #3157d5); }
.ticket-status-filter-dot { width: 9px; height: 9px; border-radius: 999px; background: #98a2b3; }
.ticket-status-filter-actions { background: #fff; }

.ticket-register-status-cell { min-width: 150px; width: 150px; }
.ticket-register-status-select {
  min-width: 132px;
  min-height: 34px !important;
  padding: .35rem 2rem .35rem .65rem !important;
  border: 1px solid transparent !important;
  border-radius: 999px !important;
  background-position: right .65rem center !important;
  box-shadow: none !important;
  font-size: .78rem !important;
  font-weight: 750 !important;
}
.ticket-register-status-select.status-tone-todo { background-color: #eef0f3 !important; border-color: #d0d5dd !important; color: #344054 !important; }
.ticket-register-status-select.status-tone-in_progress { background-color: #e8edff !important; border-color: #aebcf5 !important; color: #173889 !important; }
.ticket-register-status-select.status-tone-review { background-color: #e8f7fd !important; border-color: #9ddcf2 !important; color: #075985 !important; }
.ticket-register-status-select.status-tone-blocked { background-color: #fff0f1 !important; border-color: #f4b4ba !important; color: #9f1d2b !important; }
.ticket-register-status-select.status-tone-done,
.ticket-register-status-select.status-tone-closed { background-color: #eaf8ef !important; border-color: #a9dfbb !important; color: #166534 !important; }
.ticket-register-status-select:focus { box-shadow: 0 0 0 .18rem rgba(49,87,213,.14) !important; }

.status-tone-todo { background: #98a2b3; }
.status-tone-in_progress { background: #3157d5; }
.status-tone-review { background: #0ea5e9; }
.status-tone-blocked { background: #dc3545; }
.status-tone-done,
.status-tone-closed { background: #16a34a; }

.ticket-register-due-cell { min-width: 142px; width: 142px; }
.ticket-register-due-input {
  min-width: 128px;
  padding: .35rem .45rem !important;
  border: 1px solid var(--c8-border, #d0d5dd) !important;
  border-radius: .45rem !important;
  background-color: #fff !important;
}
.ticket-register-due-input.is-overdue { border-color: #dc3545 !important; background-color: #fff5f5 !important; color: #a61e2b; }
.ticket-register-overdue-badge { margin-top: .3rem; }
.ticket-register-hours-cell { min-width: 112px; width: 112px; }
.ticket-register-hours-control { display: inline-flex; align-items: center; gap: .35rem; }
.ticket-register-hours-input {
  width: 76px;
  min-width: 76px;
  padding: .35rem .45rem !important;
  border: 1px solid var(--c8-border, #d0d5dd) !important;
  border-radius: .45rem !important;
  background-color: #fff !important;
  text-align: right;
}
.ticket-register-hours-control > span { color: var(--c8-muted); font-size: .8rem; font-weight: 700; }
.ticket-register-status-select.is-valid,
.ticket-register-due-input.is-valid,
.ticket-register-hours-input.is-valid { border-color: #16a34a !important; }
.ticket-register-status-select.is-invalid,
.ticket-register-due-input.is-invalid,
.ticket-register-hours-input.is-invalid { border-color: #dc3545 !important; }



/* Oper8 v7.0.58 ticket register actions and status dropdown */
.ticket-register-table { font-size: .9em; }

/* Oper8 v7.0.59 ticket register context column widths */
.ticket-register-table th:nth-child(3),
.ticket-register-table td:nth-child(3),
.ticket-register-table th:nth-child(4),
.ticket-register-table td:nth-child(4) {
  width: 150px;
  max-width: 150px;
  white-space: normal;
  overflow-wrap: anywhere;
}
.ticket-register-status-cell { min-width: 150px; width: 150px; }
.ticket-register-status-picker { display: inline-block; min-width: 132px; }
.ticket-register-status-toggle,
.ticket-register-status-toggle:hover,
.ticket-register-status-toggle:focus,
.ticket-register-status-toggle:active,
.ticket-register-status-toggle.show {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  width: 100%;
  min-width: 132px;
  min-height: 34px;
  padding: .35rem 1.8rem .35rem .65rem !important;
  border: 1px solid transparent !important;
  border-radius: .45rem !important;
  box-shadow: none !important;
  font-size: .78rem !important;
  font-weight: 750 !important;
  text-align: left;
}
.ticket-register-status-toggle::after { position: absolute; right: .65rem; top: 50%; transform: translateY(-50%); }
.ticket-register-status-toggle.status-tone-todo { background-color: #eef0f3 !important; border-color: #d0d5dd !important; color: #344054 !important; }
.ticket-register-status-toggle.status-tone-in_progress { background-color: #e8edff !important; border-color: #aebcf5 !important; color: #173889 !important; }
.ticket-register-status-toggle.status-tone-review { background-color: #e8f7fd !important; border-color: #9ddcf2 !important; color: #075985 !important; }
.ticket-register-status-toggle.status-tone-blocked { background-color: #fff0f1 !important; border-color: #f4b4ba !important; color: #9f1d2b !important; }
.ticket-register-status-toggle.status-tone-done,
.ticket-register-status-toggle.status-tone-closed { background-color: #eaf8ef !important; border-color: #a9dfbb !important; color: #166534 !important; }
.ticket-register-status-toggle:focus-visible { box-shadow: 0 0 0 .18rem rgba(49,87,213,.14) !important; }
.ticket-register-status-toggle.is-valid { border-color: #16a34a !important; }
.ticket-register-status-toggle.is-invalid { border-color: #dc3545 !important; }
.ticket-status-picker-dot {
  flex: 0 0 auto;
  width: 9px;
  height: 9px;
  border-radius: 999px;
}
.ticket-register-status-toggle > span:last-child { flex: 1 1 auto; min-width: 0; }
.ticket-register-status-menu {
  min-width: 190px;
  max-height: 300px;
  overflow-y: auto;
  padding: .4rem;
  z-index: 1085;
}
.ticket-register-status-menu .dropdown-item {
  display: flex;
  align-items: center;
  gap: .6rem;
  min-height: 36px;
  padding: .45rem .65rem;
  border-radius: .4rem;
  font-size: .86rem;
}
.ticket-register-status-menu .dropdown-item.active,
.ticket-register-status-menu .dropdown-item:active {
  background: var(--c8-surface-soft, #f6f8fb);
  color: inherit;
  font-weight: 700;
}
.ticket-register-actions-cell { width: 92px; min-width: 92px; }
.ticket-register-actions .dropdown-menu { min-width: 210px; z-index: 1085; }


/* Oper8 v7.0.61: match custom ticket filters to the native form-select box model. */
.ticket-register-filters .ticket-status-filter-toggle,
.ticket-register-filters .ticket-status-filter-toggle:hover,
.ticket-register-filters .ticket-status-filter-toggle:focus,
.ticket-register-filters .ticket-status-filter-toggle:active,
.ticket-register-filters .ticket-status-filter-toggle.show {
  box-sizing: border-box;
  height: auto !important;
  min-height: calc(1.5em + 1.56rem + 2px) !important;
  padding: .78rem 2.25rem .78rem .95rem !important;
  border-radius: 5px;
  line-height: 1.5;
}
.ticket-register-filters .ticket-assignee-filter .form-select {
  height: auto !important;
}

/* Oper8 v7.0.62: align the visible Tickets assignee picker with native filters and remove horizontal menu scrolling. */
.ticket-register-filters .ticket-assignee-filter .assignee-picker {
  width: 100%;
  min-width: 0;
}
.ticket-register-filters .ticket-assignee-filter .assignee-picker-toggle,
.ticket-register-filters .ticket-assignee-filter .assignee-picker-toggle:hover,
.ticket-register-filters .ticket-assignee-filter .assignee-picker-toggle:focus,
.ticket-register-filters .ticket-assignee-filter .assignee-picker-toggle:active,
.ticket-register-filters .ticket-assignee-filter .assignee-picker-toggle.show {
  box-sizing: border-box;
  width: 100%;
  height: auto !important;
  min-height: calc(1.5em + 1.56rem + 2px) !important;
  padding: .78rem 2.25rem .78rem .95rem !important;
  border-radius: 5px;
  line-height: 1.5;
}
.ticket-register-filters .ticket-assignee-filter .assignee-picker-menu {
  box-sizing: border-box;
  width: 280px;
  min-width: 100%;
  max-width: min(320px, calc(100vw - 1.5rem));
  max-height: 280px;
  overflow-x: hidden;
  overflow-y: auto;
}
.ticket-register-filters .ticket-assignee-filter .assignee-picker-menu .dropdown-item {
  min-width: 0;
  white-space: normal;
}
.ticket-register-filters .ticket-assignee-filter .assignee-picker-menu .dropdown-item span {
  min-width: 0;
  overflow-wrap: anywhere;
}
@media (max-width: 760px) {
  .ticket-register-filters .ticket-assignee-filter .assignee-picker-menu {
    width: 100%;
    max-width: 100%;
  }
}


/* Oper8 v7.0.63: multi-select Assignee filter on the Tickets register. */
.ticket-register-filters .ticket-assignee-filter { min-width: 0; }
.ticket-register-filters .ticket-assignee-filter > .dropdown { width: 100%; }
.ticket-register-filters .ticket-assignee-filter .ticket-assignee-filter-toggle,
.ticket-register-filters .ticket-assignee-filter .ticket-assignee-filter-toggle:hover,
.ticket-register-filters .ticket-assignee-filter .ticket-assignee-filter-toggle:focus,
.ticket-register-filters .ticket-assignee-filter .ticket-assignee-filter-toggle:active,
.ticket-register-filters .ticket-assignee-filter .ticket-assignee-filter-toggle.show {
  position: relative;
  box-sizing: border-box;
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  height: auto !important;
  min-height: calc(1.5em + 1.56rem + 2px) !important;
  padding: .78rem 2.25rem .78rem .95rem !important;
  border: 1px solid var(--c8-border, #d0d5dd) !important;
  border-radius: 5px;
  background: #fff !important;
  color: #344054 !important;
  box-shadow: none !important;
  line-height: 1.5;
  text-align: left;
}
.ticket-register-filters .ticket-assignee-filter .ticket-assignee-filter-toggle::after {
  position: absolute;
  right: .95rem;
  top: 50%;
  transform: translateY(-50%);
}
.ticket-register-filters .ticket-assignee-filter .ticket-assignee-filter-toggle:focus-visible {
  border-color: var(--c8-primary, #3157d5) !important;
  box-shadow: 0 0 0 .2rem rgba(49, 87, 213, .16) !important;
}
.ticket-assignee-filter-summary {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: .45rem;
}
.ticket-assignee-filter-summary > span:last-child {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ticket-assignee-filter-summary > img,
.ticket-assignee-filter-avatars img {
  flex: 0 0 auto;
}
.ticket-assignee-filter-avatars {
  display: inline-flex;
  align-items: center;
  padding-left: 2px;
}
.ticket-assignee-filter-avatars img {
  margin-left: -5px;
  border: 2px solid #fff;
}
.ticket-assignee-filter-avatars img:first-child { margin-left: 0; }
.ticket-register-filters .ticket-assignee-filter-menu {
  box-sizing: border-box;
  width: 280px;
  min-width: 100%;
  max-width: min(340px, calc(100vw - 1.5rem));
  padding: .5rem !important;
  border-color: var(--c8-border, #d0d5dd);
  border-radius: .65rem;
  box-shadow: 0 14px 34px rgba(15, 23, 42, .14);
  overflow: hidden;
  z-index: 1085;
}
.ticket-assignee-filter-list {
  display: grid;
  gap: .15rem;
  max-height: 280px;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.ticket-assignee-filter-option {
  display: grid;
  grid-template-columns: 18px minmax(0, 1fr);
  align-items: center;
  gap: .6rem;
  min-width: 0;
  min-height: 40px;
  margin: 0;
  padding: .4rem .55rem;
  border-radius: .45rem;
  color: #344054;
  cursor: pointer;
}
.ticket-assignee-filter-option:hover { background: var(--c8-surface-soft, #f6f8fb); }
.ticket-assignee-filter-option .form-check-input {
  position: static;
  float: none;
  width: 18px;
  height: 18px;
  margin: 0;
  border: 1px solid #98a2b3;
  box-shadow: none;
}
.ticket-assignee-filter-option .form-check-input:checked {
  border-color: var(--c8-primary, #3157d5);
  background-color: var(--c8-primary, #3157d5);
}
.ticket-assignee-filter-person {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: .55rem;
}
.ticket-assignee-filter-person > span:last-child {
  min-width: 0;
  overflow-wrap: anywhere;
}
.ticket-assignee-filter-actions { background: #fff; }
@media (max-width: 760px) {
  .ticket-register-filters .ticket-assignee-filter-menu {
    width: 100%;
    max-width: 100%;
  }
}

/* Oper8 v7.0.65: Payable category Xero mapping layout */
.payable-category-manager .estimate-group-category-head,
.payable-category-manager .estimate-group-category-row {
  grid-template-columns: 34px minmax(110px, .3fr) minmax(220px, .8fr) minmax(320px, 1.25fr) 34px;
}
.payable-category-manager .estimate-group-category-row > * {
  min-width: 0;
}
.payable-category-manager .bootstrap-select,
.payable-category-manager .bootstrap-select > .dropdown-toggle,
.payable-category-manager select[name="payable_category_xero_account_code[]"] {
  width: 100% !important;
}
.payable-category-manager .estimate-group-category-head > span:nth-child(4) {
  white-space: normal;
}
@media (max-width: 991.98px) {
  .payable-category-manager .estimate-group-category-head {
    display: none;
  }
  .payable-category-manager .estimate-group-category-row {
    grid-template-columns: 34px minmax(0, 1fr) 34px;
    align-items: start;
  }
  .payable-category-manager .estimate-group-category-row [data-estimate-group-category-drag] {
    grid-column: 1;
    grid-row: 1;
  }
  .payable-category-manager .estimate-group-category-row input[name="payable_category_code[]"] {
    grid-column: 2;
    grid-row: 1;
  }
  .payable-category-manager .estimate-group-category-row input[name="payable_category_name[]"] {
    grid-column: 2;
    grid-row: 2;
  }
  .payable-category-manager .estimate-group-category-row .bootstrap-select,
  .payable-category-manager .estimate-group-category-row select[name="payable_category_xero_account_code[]"] {
    grid-column: 2;
    grid-row: 3;
  }
  .payable-category-manager .estimate-group-category-row [data-remove-estimate-group-category] {
    grid-column: 3;
    grid-row: 1;
  }
}


/* v7.0.69 guided clean-install wizard / PHP 8.2+ baseline */
.setup-wizard-grid{display:grid;gap:1.25rem}.setup-copy-value{padding:.7rem .85rem;border:1px solid var(--bs-border-color);border-radius:.65rem;background:var(--bs-tertiary-bg);overflow-wrap:anywhere}.setup-copy-value code{font-size:.84rem}.install-wizard-card{max-width:980px!important;width:min(980px,calc(100% - 2rem))!important}.install-step-nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.5rem;margin:1rem 0 1.5rem}.install-step-nav span{padding:.55rem .7rem;border-radius:.6rem;background:#eef2f7;font-size:.8rem;font-weight:700;text-align:center}.install-step-nav span.active{background:var(--bs-primary);color:#fff}.install-requirements{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.6rem}.install-requirement{padding:.65rem .75rem;border:1px solid var(--bs-border-color);border-radius:.65rem;background:#fff}.install-requirement strong{display:block}.install-wizard-panel[hidden]{display:none!important}@media(max-width:767.98px){.install-step-nav{grid-template-columns:1fr 1fr}}
