
/* ── BaseButton styles ── */
.bp-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  font-family: inherit;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  border: 1px solid transparent;
  white-space: nowrap;
  text-decoration: none;
}
.bp-btn:disabled { opacity: 0.6; cursor: not-allowed;
}

/* Sizes */
.bp-btn--sm { padding: 6px 14px; font-size: 12px;
}
.bp-btn--md { padding: 9px 20px;
}
.bp-btn--lg { padding: 12px 28px; font-size: 14px;
}

/* Variants */
.bp-btn--primary { background: #da2128; color: #fff; border-color: #da2128;
}
.bp-btn--primary:hover:not(:disabled) { background: #c41e24; border-color: #c41e24;
}
.bp-btn--outline { background: #fff; color: #4e5a82; border-color: #d1d5e8;
}
.bp-btn--outline:hover:not(:disabled) { background: #f8f9fc;
}
.bp-btn--text { background: transparent; color: #6b7db8; border-color: transparent; padding-left: 4px; padding-right: 4px;
}
.bp-btn--text:hover:not(:disabled) { color: #1a1d35;
}
.bp-btn--danger { background: #fee2e2; color: #b91c1c; border-color: #fecaca;
}
.bp-btn--danger:hover:not(:disabled) { background: #fecaca;
}
.bp-btn--navy { background: #1a1d35; color: #fff; border-color: #1a1d35;
}
.bp-btn--navy:hover:not(:disabled) { background: #2d3154; border-color: #2d3154;
}

/* Loading spinner */
.bp-btn-spinner {
  width: 14px;
  height: 14px;
  border: 2px solid currentColor;
  border-top-color: transparent;
  border-radius: 50%;
  animation: bp-spin 0.6s linear infinite;
  flex-shrink: 0;
}
@keyframes bp-spin {
to { transform: rotate(360deg);
}
}

/* ── bp- form primitives (global, prefixed to avoid conflicts) ── */
.bp-form-group {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.bp-form-group--full { grid-column: 1 / -1;
}
.bp-label {
  font-size: 12px;
  font-weight: 600;
  color: #000;
  letter-spacing: 0.4px;
}
.bp-required { color: #da2128;
}
.bp-input {
  padding: 9px 12px;
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  font-size: 13.5px;
  color: #1a1d35;
  outline: none;
  transition: border-color 0.15s;
  font-family: inherit;
  width: 100%;
  box-sizing: border-box;
}
.bp-input:focus {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
}
.bp-input--error    { border-color: #b91c1c !important;
}
.bp-input--disabled { background: #f8f9fc; color: #9098b0; cursor: not-allowed;
}
.bp-input--readonly { background: #f8f9fc; color: #1a1d35; cursor: default; border-color: #c0c1cb;
}
.bp-field-error  { font-size: 11px; color: #b91c1c;
}
.bp-field-helper { font-size: 11px; color: #9098b0;
}

/* ── BaseSelect component styles ── */
.bp-select-wrap { width: 100%;
}
.bp-select { width: 100%;
}
.bp-select.p-select {
  width: 100%;
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  box-shadow: none;
  transition: border-color 0.15s;
}
.bp-select.p-select:hover:not(.p-disabled) { border-color: #a0a1ab;
}
.bp-select.p-select.p-focus {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
  outline: none;
}
.bp-select-wrap--open .bp-select.p-select {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
  outline: none;
}
.bp-select .p-select-label {
  padding: 9px 12px;
  font-size: 13.5px;
  color: #1a1d35;
  font-family: inherit;
}
.bp-select .p-select-label.p-placeholder { color: #9098b0;
}
.bp-select .p-select-dropdown {
  width: 36px;
  color: #6b7db8;
  display: flex;
  align-items: center;
  justify-content: center;
}
.bp-select .p-select-dropdown svg { width: 14px; height: 14px;
}
.bp-select--error.p-select  { border-color: #b91c1c !important;
}
.bp-select.p-disabled { background: #f8f9fc;
}
.bp-select.p-disabled .p-select-label { color: #9098b0;
}

/* ── PrimeVue Select overlay — teleported to body, must be global ── */
.p-select-overlay,
.p-select-overlay.p-component {
  z-index: 9999 !important;
  background-color: #ffffff !important;
  border: 1px solid #c0c1cb !important;
  border-radius: 8px !important;
  box-shadow: 0 8px 24px rgba(25, 26, 55, 0.14) !important;
  font-family: inherit;
  font-size: 13.5px;
  overflow: hidden;
}
.p-select-overlay .p-select-list-container,
.p-select-overlay .p-select-list {
  background-color: #ffffff !important;
}
.p-select-overlay .p-select-filter-container {
  padding: 8px 12px;
  border-bottom: 1px solid #e4e7f0;
  background-color: #ffffff !important;
}
.p-select-overlay .p-select-filter {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid #c0c1cb;
  border-radius: 6px;
  font-size: 13px;
  font-family: inherit;
  outline: none;
  background-color: #fff !important;
}
.p-select-overlay .p-select-filter:focus { border-color: #5b6af0;
}
.p-select-overlay .p-select-list {
  /* No max-height or overflow here — PrimeVue sets max-height on the parent
     .p-select-list-container via its scrollHeight prop. Competing here causes
     nested scroll containers that collapse item padding on long lists. */
  padding: 6px 0;
}
.p-select-overlay .p-select-option,
.p-select-overlay .p-select-option-container {
  padding: 11px 14px !important;
  line-height: 1.4 !important;
  font-size: 13.5px !important;
  color: #1a1d35 !important;
  cursor: pointer !important;
  background-color: #ffffff !important;
}
.p-select-overlay .p-select-option:hover,
.p-select-overlay .p-select-option-container:hover      { background-color: #f5f6fb !important;
}
.p-select-overlay .p-select-option.p-focus,
.p-select-overlay .p-select-option-container.p-focus    { background-color: #f5f6fb !important;
}
.p-select-overlay .p-select-option.p-selected,
.p-select-overlay .p-select-option-container.p-selected { background-color: #eef0fd !important; color: #3d4db0 !important; font-weight: 600 !important;
}
.p-select-overlay .p-select-empty-message               { padding: 12px 14px !important; font-size: 13px !important; color: #9098b0 !important; background-color: #ffffff !important;
}

/* ── BaseMultiSelect component styles ── */
.bp-mselect-wrap { width: 100%;
}
.bp-mselect { width: 100%;
}
.bp-mselect.p-multiselect {
  width: 100%;
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  box-shadow: none;
  transition: border-color 0.15s;
}
.bp-mselect.p-multiselect:hover:not(.p-disabled) { border-color: #a0a1ab;
}
.bp-mselect.p-multiselect.p-focus {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
  outline: none;
}
.bp-mselect-wrap--open .bp-mselect.p-multiselect {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
  outline: none;
}
.bp-mselect .p-multiselect-label {
  padding: 9px 12px;
  font-size: 13.5px;
  color: #1a1d35;
  font-family: inherit;
}
.bp-mselect .p-multiselect-label.p-placeholder { color: #9098b0;
}
.bp-mselect .p-multiselect-dropdown {
  width: 36px;
  color: #6b7db8;
  display: flex;
  align-items: center;
  justify-content: center;
}
.bp-mselect .p-multiselect-dropdown svg { width: 14px; height: 14px;
}
.bp-mselect--error.p-multiselect { border-color: #b91c1c !important;
}
.bp-mselect.p-disabled { background: #f8f9fc;
}
.bp-mselect.p-disabled .p-multiselect-label { color: #9098b0;
}

/* chip display mode */
.bp-mselect .p-multiselect-chip {
  background: rgba(218, 33, 40, 0.08);
  color: #da2128;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 600;
  padding: 2px 7px;
  margin: 2px 3px 2px 0;
}
.bp-mselect .p-multiselect-chip-icon {
  font-size: 10px;
  margin-left: 4px;
  cursor: pointer;
  opacity: 0.7;
}
.bp-mselect .p-multiselect-chip-icon:hover { opacity: 1;
}

/* ── PrimeVue MultiSelect overlay — teleported to body, must be global ── */
.p-multiselect-overlay,
.p-multiselect-overlay.p-component {
  z-index: 9999 !important;
  background-color: #ffffff !important;
  border: 1px solid #c0c1cb !important;
  border-radius: 8px !important;
  box-shadow: 0 8px 24px rgba(25, 26, 55, 0.14) !important;
  font-family: inherit;
  font-size: 13.5px;
  overflow: hidden;
}
.p-multiselect-overlay .p-multiselect-header {
  padding: 8px 12px;
  border-bottom: 1px solid #e4e7f0;
  background-color: #ffffff !important;
  display: flex;
  align-items: center;
  gap: 8px;
}
.p-multiselect-overlay .p-multiselect-filter-container {
  flex: 1;
}
.p-multiselect-overlay .p-multiselect-filter {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid #c0c1cb;
  border-radius: 6px;
  font-size: 13px;
  font-family: inherit;
  outline: none;
  background-color: #fff !important;
}
.p-multiselect-overlay .p-multiselect-filter:focus { border-color: #da2128;
}
.p-multiselect-overlay .p-multiselect-list-container,
.p-multiselect-overlay .p-multiselect-list {
  background-color: #ffffff !important;
}
.p-multiselect-overlay .p-multiselect-list { padding: 6px 0;
}
.p-multiselect-overlay .p-multiselect-option,
.p-multiselect-overlay .p-multiselect-option-container {
  padding: 11px 14px !important;
  line-height: 1.4 !important;
  font-size: 13.5px !important;
  color: #1a1d35 !important;
  cursor: pointer !important;
  background-color: #ffffff !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
}
.p-multiselect-overlay .p-multiselect-option:hover,
.p-multiselect-overlay .p-multiselect-option-container:hover    { background-color: #f5f6fb !important;
}
.p-multiselect-overlay .p-multiselect-option.p-focus,
.p-multiselect-overlay .p-multiselect-option-container.p-focus  { background-color: #f5f6fb !important;
}
.p-multiselect-overlay .p-multiselect-option.p-selected,
.p-multiselect-overlay .p-multiselect-option-container.p-selected {
  background-color: #fff3f3 !important;
  color: #da2128 !important;
  font-weight: 600 !important;
}

/* checkbox inside each option */
.p-multiselect-overlay .p-checkbox {
  width: 16px;
  height: 16px;
  flex-shrink: 0;
}
.p-multiselect-overlay .p-checkbox-box {
  width: 16px;
  height: 16px;
  border: 1.5px solid #c0c1cb;
  border-radius: 4px;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color 0.15s, background 0.15s;
}
.p-multiselect-overlay .p-checkbox-box.p-checked {
  background: #da2128 !important;
  border-color: #da2128 !important;
}
.p-multiselect-overlay .p-checkbox-box.p-checked svg { color: #fff !important;
}
.p-multiselect-overlay .p-multiselect-empty-message {
  padding: 12px 14px !important;
  font-size: 13px !important;
  color: #9098b0 !important;
  background-color: #ffffff !important;
}

/* ── tagsPosition='below' — selected items render as removable tags BELOW the input ── */
.bp-mselect-trigger-placeholder {
  color: #9098b0;
}
.bp-mselect-trigger-count {
  color: #1a1d35;
  font-weight: 600;
}
.bp-mselect-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
  max-height: 120px;
  overflow-y: auto;
}
.bp-mselect-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 4px 4px 10px;
  background: rgba(218, 33, 40, 0.08);
  color: #da2128;
  border-radius: 14px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
}
.bp-mselect-tag-remove {
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-radius: 50%;
  color: #da2128;
  cursor: pointer;
  padding: 0;
  transition: background 0.15s, color 0.15s;
}
.bp-mselect-tag-remove:hover {
  background: #da2128;
  color: #fff;
}

.bp-textarea {
  padding: 9px 12px;
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  font-size: 13.5px;
  color: #1a1d35;
  outline: none;
  transition: border-color 0.15s;
  font-family: inherit;
  width: 100%;
  box-sizing: border-box;
  min-height: 80px;
}
.bp-textarea:focus {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
}
.bp-textarea--error    { border-color: #b91c1c !important;
}
.bp-textarea--disabled { background: #f8f9fc; color: #9098b0; cursor: not-allowed;
}

/* ── Wrapper ── */
.bp-tbl-wrap { display: flex; flex-direction: column;
}
.bp-tbl-scroll { overflow-x: auto; border-radius: 10px; border: 1px solid #e4e7f0;
}

/* ── Table base ── */
.bp-tbl {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: 12px;
  font-weight: 600;
  color: #1a1d35;
  background: #fff;
  min-width: 820px;
}

/* ── Header: sort row ── */
.bp-tbl-thead-sort { background: #191a37;
}
.bp-tbl-th {
  padding: 0;
  border-bottom: 2px solid #2d2f52;
  white-space: nowrap;
  font-weight: 700;
  font-size: 11px;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  vertical-align: middle;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.bp-tbl-th--sortable { cursor: pointer;
}
.bp-tbl-th--sortable:hover { background: #23254a;
}
.bp-tbl-th--left   { text-align: left;
}
.bp-tbl-th--right  { text-align: right;
}
.bp-tbl-th--center { text-align: center;
}
.bp-tbl-th-inner {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 11px 14px;
}
.bp-tbl-th--right  .bp-tbl-th-inner { justify-content: flex-end;
}
.bp-tbl-th--center .bp-tbl-th-inner { justify-content: center;
}
.bp-tbl-th-label { flex: 1;
}
.bp-tbl-sort-icon { color: #da2128; flex-shrink: 0; display: flex;
}
.bp-tbl-sort-icon--idle { color: #4e5a82;
}

/* ── Header: search row ── */
.bp-tbl-thead-search { background: #f9fafc;
}
.bp-tbl-th-search {
  padding: 6px 8px;
  border-bottom: 1px solid #e4e7f0;
  vertical-align: middle;
}
.bp-tbl-search-wrap {
  display: flex;
  align-items: center;
  gap: 5px;
  background: #fff;
  border: 1px solid #d1d5e8;
  border-radius: 6px;
  padding: 0 7px;
  height: 28px;
  transition: border-color 0.15s;
}
.bp-tbl-search-wrap:focus-within {
  border-color: #da2128;
  box-shadow: 0 0 0 2px rgba(218, 33, 40, 0.08);
}
.bp-tbl-search-icon { color: #9098b0; flex-shrink: 0;
}
.bp-tbl-search-input {
  border: none;
  outline: none;
  font-size: 11.5px;
  color: #1a1d35;
  background: transparent;
  width: 100%;
  min-width: 0;
  font-family: inherit;
}
.bp-tbl-search-input::-moz-placeholder { color: #c4c9de;
}
.bp-tbl-search-input::placeholder { color: #c4c9de;
}
.bp-tbl-search-clear {
  background: none;
  border: none;
  cursor: pointer;
  color: #9098b0;
  font-size: 14px;
  line-height: 1;
  padding: 0;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 14px;
  height: 14px;
}
.bp-tbl-search-clear:hover { color: #da2128;
}

/* ── Body rows ── */
.bp-tbl-row { transition: background 0.12s;
}
.bp-tbl-row--clickable { cursor: pointer;
}
.bp-tbl-row:nth-child(odd)  { background: #fff;
}
.bp-tbl-row:nth-child(even) { background: #f4f4f7;
}
.bp-tbl-row:hover { background: #fdf5f5;
}
.bp-tbl-td {
  padding: 11px 14px;
  vertical-align: middle;
}
.bp-tbl-td--clip   { overflow: hidden;
}
.bp-tbl-td--right  { text-align: right;
}
.bp-tbl-td--center { text-align: center;
}
.bp-tbl-cell-text {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── Status badge ── */
.bp-tbl-status {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  white-space: nowrap;
}
.bp-tbl-status-dot { width: 5px; height: 5px; border-radius: 50%; flex-shrink: 0;
}
.bp-tbl-status--draft      { background: rgba(250,204,21,0.15); color: #b45309;
}
.bp-tbl-status--draft      .bp-tbl-status-dot { background: #f59e0b;
}
.bp-tbl-status--active     { background: rgba(34,197,94,0.12);  color: #15803d;
}
.bp-tbl-status--active     .bp-tbl-status-dot { background: #22c55e;
}
.bp-tbl-status--closed     { background: rgba(107,114,128,0.12); color: #374151;
}
.bp-tbl-status--closed     .bp-tbl-status-dot { background: #9ca3af;
}
.bp-tbl-status--approved   { background: rgba(34,197,94,0.12);  color: #15803d;
}
.bp-tbl-status--approved   .bp-tbl-status-dot { background: #22c55e;
}
.bp-tbl-status--completed  { background: rgba(59,130,246,0.12); color: #1d4ed8;
}
.bp-tbl-status--completed  .bp-tbl-status-dot { background: #3b82f6;
}

/* ── Loading skeleton ── */
.bp-tbl-row--skeleton { pointer-events: none;
}
.bp-tbl-skeleton {
  height: 14px;
  border-radius: 6px;
  background: linear-gradient(90deg, #f0f1f5 25%, #e8eaf2 50%, #f0f1f5 75%);
  background-size: 200% 100%;
  animation: bp-tbl-shimmer 1.4s infinite;
}
@keyframes bp-tbl-shimmer {
0%   { background-position: 200% 0;
}
100% { background-position: -200% 0;
}
}

/* ── Empty state ── */
.bp-tbl-td-empty { text-align: center; padding: 48px 20px;
}
.bp-tbl-empty { display: flex; flex-direction: column; align-items: center; gap: 10px;
}
.bp-tbl-empty-icon { color: #c4c9de;
}
.bp-tbl-empty p { font-size: 13px; color: #9098b0; margin: 0;
}

/* ── Footer ── */
.bp-tbl-footer { display: flex; justify-content: flex-end; padding: 8px 4px 0;
}
.bp-tbl-count { font-size: 11.5px; color: #9098b0;
}

/* ── Cell alignment ── */
.bp-tbl-td--center { text-align: center;
}
.bp-tbl-td--right  { text-align: right;
}

/* ── Text truncation with ellipsis for default-rendered cells ── */
.bp-tbl-td--clip .bp-tbl-cell-text {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 100%;
}

/* ── Expandable parent row ── */
.bp-tbl-row--expandable { cursor: pointer;
}

/* ── Expand column cell wrapper ── */
.bp-tbl-expand-cell {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
}

/* ── Expand chevron button ── */
.bp-tbl-expand-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 1.5px solid #d1d5e8;
  background: #fff;
  color: #6b7db8;
  cursor: pointer;
  padding: 0;
  font-family: inherit;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
  flex-shrink: 0;
}
.bp-tbl-expand-btn svg {
  transition: transform 0.2s ease;
}
.bp-tbl-expand-btn:hover {
  background: #f5f6fb;
  border-color: #b0b7d8;
  color: #1a1d35;
}
.bp-tbl-expand-btn--open {
  background: #1a1d35;
  border-color: #1a1d35;
  color: #fff;
}
.bp-tbl-expand-btn--open:hover {
  background: #2d3152;
  border-color: #2d3152;
}
.bp-tbl-expand-btn--open svg {
  transform: rotate(90deg);
}

/* ── Version count badge ── */
.bp-tbl-expand-count {
  position: absolute;
  top: -4px;
  right: -4px;
  min-width: 15px;
  height: 15px;
  padding: 0 3px;
  border-radius: 99px;
  background: #da2128;
  color: #fff;
  font-size: 8.5px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  pointer-events: none;
}

/* ── Child rows — same appearance as parent ── */
.bp-tbl-row--child { background: inherit;
}
.bp-tbl-cell-text--muted { color: #c4c9de !important;
}

.bp-tabbar {
  border-bottom: 1px solid #e4e7f0;
  background: #fff;
  overflow-x: hidden;
}
.bp-tabbar-row {
  display: flex;
  gap: 2px;
  padding: 0 4px;
}
.bp-tabbar-btn {
  position: relative;
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  padding: 14px 14px 11px;
  border: none;
  border-bottom: 3px solid transparent;
  background: transparent;
  cursor: pointer;
  border-radius: 8px 8px 0 0;
  white-space: nowrap;
  font-family: inherit;
  transition: background 0.15s;
  flex-shrink: 0;
}
.bp-tabbar-btn:hover { background: #f8f9fc;
}
.bp-tabbar-btn--active {
  border-bottom-color: #da2128;
  background: #fff5f5;
}
.bp-tabbar-btn--disabled {
  opacity: 0.38;
  cursor: not-allowed;
  pointer-events: none;
}
.bp-tabbar-icon {
  width: 34px;
  height: 34px;
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #f0f1f5;
  color: #6b7db8;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s;
}
.bp-tabbar-btn--active .bp-tabbar-icon {
  background: #fee2e2;
  color: #da2128;
}
.bp-tabbar-text {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
}
.bp-tabbar-code {
  font-size: 11px;
  font-weight: 700;
  color: #4e5a82;
  letter-spacing: 0.3px;
}
.bp-tabbar-btn--active .bp-tabbar-code { color: #da2128;
}
.bp-tabbar-name {
  font-size: 9.5px;
  color: #9098b0;
}
.bp-tabbar-name--solo {
  font-size: 12px;
  font-weight: 600;
  color: #4e5a82;
}
.bp-tabbar-btn--active .bp-tabbar-name { color: #da2128;
}
.bp-tabbar-count {
  position: absolute;
  top: 5px;
  right: 5px;
  min-width: 18px;
  height: 20px;
  border-radius: 9px;
  background: #e4e7f0;
  color: #1a1d35;
  font-size: 10px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 5px 10px;
  line-height: 1;
  pointer-events: none;
}
.bp-tabbar-btn--active .bp-tabbar-count {
  background: #da2128;
  color: #fff;
}

.bp-rs-box {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  height: 34px;
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  padding: 0 12px;
  box-sizing: border-box;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.bp-rs-val {
  font-size: 11.5px;
  font-weight: 700;
  color: #da2128;
  white-space: nowrap;
  flex-shrink: 0;
}
.bp-rs-track-wrap {
  position: relative;
  flex: 1;
  height: 24px;
  display: flex;
  align-items: center;
  cursor: pointer;
  min-width: 0;
  touch-action: none;
}
.bp-rs-track {
  position: absolute;
  left: 0;
  right: 0;
  height: 4px;
  border-radius: 99px;
  background: #e4e7f0;
}
.bp-rs-fill {
  position: absolute;
  height: 4px;
  border-radius: 99px;
  background: #da2128;
  pointer-events: none;
}
.bp-rs-handle {
  position: absolute;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #da2128;
  border: 2px solid #fff;
  box-shadow: 0 1px 5px rgba(218, 33, 40, 0.35);
  transform: translateX(-50%);
  top: 50%;
  margin-top: -9px;
  cursor: grab;
  pointer-events: none;
}
.bp-rs-track-wrap:active .bp-rs-handle { cursor: grabbing;
}
.bp-rs-box--active {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
}

.bp-filter-card {
  background: #fff;
  border: 1px solid #e4e7f0;
  border-radius: 10px;
}
.bp-filter-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 12px 18px;
}
.bp-filter-bar-left {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 0;
}
.bp-filter-icon { color: #da2128; flex-shrink: 0;
}
.bp-filter-title {
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: #4e5a82;
  white-space: nowrap;
  flex-shrink: 0;
}
.bp-filter-badge {
  display: inline-flex;
  align-items: center;
  background: #da2128;
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  border-radius: 99px;
  padding: 2px 8px;
  white-space: nowrap;
  flex-shrink: 0;
}
.bp-filter-clear {
  background: none;
  border: 1px solid #d1d5e8;
  border-radius: 6px;
  padding: 3px 10px;
  font-size: 11.5px;
  font-weight: 600;
  color: #4e5a82;
  cursor: pointer;
  font-family: inherit;
  transition: border-color 0.15s, color 0.15s;
  white-space: nowrap;
  flex-shrink: 0;
}
.bp-filter-clear:hover { border-color: #da2128; color: #da2128;
}
.bp-filter-toggle {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: none;
  border: 1px solid #d1d5e8;
  border-radius: 6px;
  padding: 4px 12px;
  font-size: 12px;
  font-weight: 600;
  color: #4e5a82;
  cursor: pointer;
  font-family: inherit;
  white-space: nowrap;
  transition: border-color 0.15s, color 0.15s;
  flex-shrink: 0;
}
.bp-filter-toggle:hover { border-color: #da2128; color: #da2128;
}
.bp-filter-body {
  border-top: 1px solid #e4e7f0;
  padding: 16px 18px 14px;
}
.bp-filter-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 12px 16px;
  align-items: end;
}

/* ── Active filter tags ── */
.bp-filter-tags {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1;
  min-width: 0;
  overflow-x: auto;
  padding-bottom: 4px;
  scrollbar-width: thin;
  scrollbar-color: #d1d5e8 transparent;
}
.bp-filter-tags::-webkit-scrollbar { height: 3px;
}
.bp-filter-tags::-webkit-scrollbar-track { background: transparent;
}
.bp-filter-tags::-webkit-scrollbar-thumb { background: #d1d5e8; border-radius: 99px;
}
.bp-filter-tags::-webkit-scrollbar-thumb:hover { background: #9098b0;
}
.bp-filter-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 4px 2px 8px;
  border-radius: 99px;
  background: rgba(218, 33, 40, 0.07);
  border: 1px solid rgba(218, 33, 40, 0.2);
  white-space: nowrap;
  flex-shrink: 0;
}
.bp-filter-tag-label {
  font-size: 10.5px;
  font-weight: 700;
  color: #da2128;
  text-transform: uppercase;
  letter-spacing: 0.3px;
}
.bp-filter-tag-value {
  font-size: 11px;
  font-weight: 600;
  color: #1a1d35;
}
.bp-filter-tag-remove {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  border: none;
  background: none;
  cursor: pointer;
  font-size: 13px;
  line-height: 1;
  color: #9098b0;
  padding: 0;
  font-family: inherit;
  transition: background 0.12s, color 0.12s;
}
.bp-filter-tag-remove:hover { background: rgba(218, 33, 40, 0.12); color: #da2128;
}

.bp-alert-overlay {
  position: fixed;
  inset: 0;
  /* Topmost interactive layer — alerts must render above every modal,
     popup, picker, etc. Matches BaseToast (9999) so notifications and
     alerts share the same "always on top" tier. */
  z-index: 9999;
  background: rgba(0, 0, 0, 0.45);
}
.bp-alert {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 10000;
  width: 480px;
  min-width: 360px;
  max-width: 95vw;
  background: #fff;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
  display: flex;
  flex-direction: column;
}

/* ── Header ── */
.bp-alert-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  background: #1a1d35;
  cursor: grab;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  gap: 12px;
  flex-shrink: 0;
  height: 40px;
}
.bp-alert-header:active { cursor: grabbing;
}
.bp-alert-header-left {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  flex: 1;
}
.bp-alert-header-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  flex-shrink: 0;
}
.bp-alert-title {
  font-size: 14px;
  font-weight: 600;
  color: #fff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bp-alert-close {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border: none;
  background: rgba(255, 255, 255, 0.1);
  color: #fff;
  border-radius: 6px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}
.bp-alert-close:hover { background: rgba(255, 255, 255, 0.22);
}

/* ── Content ── */
.bp-alert-content {
  display: flex;
  flex-direction: row;
  min-height: 135px;
  flex: 1;
}
.bp-alert-type-panel {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 68px;
  flex-shrink: 0;
}
.bp-alert-body {
  flex: 1;
  padding: 20px;
  font-size: 13.5px;
  color: #1a1d35;
  line-height: 1.65;
  word-break: break-word;
  overflow-y: auto;
}

/* ── Footer ── */
.bp-alert-footer {
  display: flex;
  justify-content: flex-end;
  align-items: center;
  gap: 10px;
  padding: 10px 20px;
  border-top: 1px solid #e4e7f0;
  background: #f8f9fc;
  flex-shrink: 0;
}

/* ── Responsive ── */
@media (max-width: 480px) {
.bp-alert { width: 95vw; min-width: 0;
}
.bp-alert-footer { flex-direction: column-reverse; align-items: stretch;
}
.bp-alert-footer .bp-btn { width: 100%; justify-content: center;
}
}

.bp-toast-container {
  position: fixed;
  top: 20px;
  right: 20px;
  z-index: 9999;
  width: 340px;
  max-width: calc(100vw - 40px);
  pointer-events: none;
}
.bp-toast-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  position: relative;
}
.bp-toast {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 12px 14px 14px;
  background: #fff;
  border-radius: 10px;
  border-left: 4px solid;
  box-shadow: 0 4px 20px rgba(25, 26, 55, 0.13);
  pointer-events: all;
  min-height: 52px;
  width: 100%;
  box-sizing: border-box;
}
.bp-toast-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 20px;
}
.bp-toast-message {
  flex: 1;
  font-size: 13.5px;
  color: #1a1d35;
  line-height: 1.5;
  margin: 0;
  word-break: break-word;
}
.bp-toast-close {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  border: none;
  background: rgba(0, 0, 0, 0.06);
  color: #6b7280;
  border-radius: 6px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, color 0.15s;
  padding: 0;
}
.bp-toast-close:hover {
  background: rgba(0, 0, 0, 0.12);
  color: #1a1d35;
}

/* ── Transition animations ── */
.bp-toast-enter-active {
  transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1);
}
.bp-toast-leave-active {
  transition: all 0.25s ease-in;
  position: absolute;
  right: 0;
  left: 0;
}
.bp-toast-enter-from {
  opacity: 0;
  transform: translateX(110%);
}
.bp-toast-leave-to {
  opacity: 0;
  transform: translateX(110%);
}
.bp-toast-move {
  transition: transform 0.22s ease;
}

/* ── Responsive ── */
@media (max-width: 480px) {
.bp-toast-container {
    top: 12px;
    right: 12px;
    left: 12px;
    width: auto;
    max-width: 100%;
}
}

/* ── BaseLoader overlay ── */
/* Full-viewport dimmer that blocks all interaction while any load is
   active. z-index sits above BaseToast (9999) so a loader triggered
   from within a toast-heavy screen still lands on top. */
.bp-loader-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(15, 17, 40, 0.42);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
}
.bp-loader-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  padding: 26px 34px;
  background: #ffffff;
  border-radius: 14px;
  box-shadow: 0 12px 40px rgba(15, 17, 40, 0.22);
  min-width: 200px;
  max-width: min(80vw, 420px);
}

/* Ring spinner — same `bp-spin` keyframe used by BaseButton so the
   whole app shares a single spin animation. Colour is the brand red
   (#da2128) to stay on-tone with primary actions and the required-
   field indicator. */
.bp-loader-spinner {
  width: 44px;
  height: 44px;
  border: 4px solid rgba(218, 33, 40, 0.18);
  border-top-color: #da2128;
  border-radius: 50%;
  animation: bp-spin 0.8s linear infinite;
  flex-shrink: 0;
}
.bp-loader-text {
  margin: 0;
  font-size: 13.5px;
  font-weight: 600;
  color: #1a1d35;
  text-align: center;
  line-height: 1.5;
  word-break: break-word;
  min-height: 20px;
}

/* Enter/leave — quick fade so the overlay never feels heavy. Card
   also scales in slightly to give a subtle "arriving" cue. */
.bp-loader-enter-active,
.bp-loader-leave-active {
  transition: opacity 0.18s ease;
}
.bp-loader-enter-active .bp-loader-card,
.bp-loader-leave-active .bp-loader-card {
  transition: transform 0.18s ease, opacity 0.18s ease;
}
.bp-loader-enter-from,
.bp-loader-leave-to {
  opacity: 0;
}
.bp-loader-enter-from .bp-loader-card,
.bp-loader-leave-to .bp-loader-card {
  opacity: 0;
  transform: scale(0.94);
}

/* Mobile — tighten the card so it fits comfortably on narrow screens. */
@media (max-width: 480px) {
.bp-loader-card {
    padding: 20px 24px;
    min-width: 160px;
    max-width: calc(100vw - 32px);
}
.bp-loader-spinner {
    width: 38px;
    height: 38px;
    border-width: 3px;
}
}

/* ── Overlay ── */
.bp-popup-overlay {
  position: fixed;
  inset: 0;
  background: rgba(15, 17, 40, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1100;
  padding: 16px;
}

/* ── Dialog ── */
.bp-popup-dialog {
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 16px 48px rgba(15, 17, 40, 0.22);
  width: 100%;
  max-height: 90vh;
  display: flex;
  flex-direction: column;
}

/* ── Header ── */
.bp-popup-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px 15px;
  border-bottom: 1px solid #d0d4e4;
  gap: 12px;
}
.bp-popup-title {
  font-size: 20px;
  font-weight: 600;
  color: #1a1d35;
  line-height: 1.3;
}
.bp-popup-close {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 5px;
  border-radius: 6px;
  color: #4e5a82;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s;
}
.bp-popup-close:hover {
  background: #eeeef5;
  color: #1a1d35;
}

/* ── Body ── */
.bp-popup-body {
  padding: 20px;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
}

/* ── Transition ── */
.bp-popup-fade-enter-active,
.bp-popup-fade-leave-active {
  transition: opacity 0.2s ease;
}
.bp-popup-fade-enter-active .bp-popup-dialog,
.bp-popup-fade-leave-active .bp-popup-dialog {
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.bp-popup-fade-enter-from,
.bp-popup-fade-leave-to {
  opacity: 0;
}
.bp-popup-fade-enter-from .bp-popup-dialog,
.bp-popup-fade-leave-to .bp-popup-dialog {
  transform: scale(0.96) translateY(-8px);
  opacity: 0;
}

/* ── Mobile ── */
@media (max-width: 480px) {
.bp-popup-dialog { border-radius: 10px;
}
.bp-popup-body   { padding: 16px;
}
}

/* ── Container (multi-mode) ── */
.bp-search-multi.p-autocomplete {
  display: block;
  width: 100%;
}
.bp-search-multi-wrap {
  position: relative;
  width: 100%;
}
.bp-search-multi-icon {
  position: absolute;
  right: 12px;
  top: 14px;
  color: #6b7db8;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 1;
}
.bp-search-multi .p-autocomplete-input-multiple {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  padding: 8px 36px 8px 12px;
  border: 1px solid #d1d5e8;
  border-radius: 8px;
  background: #fff;
  min-height: 44px;
  /* Cap chip-area height so the popup doesn't grow indefinitely when many users are added */
  max-height: 120px;
  overflow-y: auto;
  width: 100%;
  cursor: text;
  list-style: none;
  margin: 0;
  transition: border-color 0.15s, box-shadow 0.15s;
}

/* When tagsPosition='below', suppress chips inside the input — they render in the list below */
.bp-search-multi--tags-below .p-autocomplete-chip-item {
  display: none !important;
}
.bp-search-multi--error .p-autocomplete-input-multiple {
  border-color: #b91c1c;
}
.bp-search-multi .p-autocomplete-input-multiple:focus-within {
  border-color: #5b6af0;
  box-shadow: 0 0 0 3px rgba(91, 106, 240, 0.12);
  outline: none;
}

/* ── Input slot (the typing area) ── */
/* flex-basis 100% forces the input onto its own row so "Add more" sits below the chips */
.bp-search-multi .p-autocomplete-input-chip {
  flex: 1 1 100%;
  min-width: 100%;
  padding: 0;
  list-style: none;
}
.bp-search-multi .p-autocomplete-input-chip input,
.bp-search-multi .p-autocomplete-input-multiple input {
  border: none;
  outline: none;
  background: transparent;
  font-size: 13.5px;
  color: #1a1d35;
  width: 100%;
  padding: 4px 2px;
}
.bp-search-multi .p-autocomplete-input-chip input::-moz-placeholder, .bp-search-multi .p-autocomplete-input-multiple input::-moz-placeholder {
  color: #6b7db8;
}
.bp-search-multi .p-autocomplete-input-chip input::placeholder,
.bp-search-multi .p-autocomplete-input-multiple input::placeholder {
  color: #6b7db8;
}

/* ── Chips (PrimeVue chip token) ── */
.bp-search-multi .p-autocomplete-chip {
  background: #eef2ff !important;
  border: 1px solid #d1d9f3 !important;
  border-radius: 999px !important;
  padding: 2px 4px 2px 2px !important;
  display: inline-flex !important;
  align-items: center !important;
  gap: 4px !important;
  font-size: 13px !important;
  color: #1a1d35 !important;
  list-style: none !important;
}
.bp-search-multi .p-autocomplete-chip:hover {
  background: #e0e7ff !important;
  border-color: #b8c4ee !important;
}

/* Hide PrimeVue's default × icon when using our custom slot button */
.bp-search-multi .p-autocomplete-chip-icon { display: none !important;
}

/* ── Chip content (custom slot) ── */
.bp-search-multi-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.bp-search-multi-chip-remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: #4e5a82;
  cursor: pointer;
  padding: 0;
  margin-left: 2px;
  transition: background 0.15s, color 0.15s;
}
.bp-search-multi-chip-remove:hover {
  background: #da2128;
  color: #fff;
}
.bp-search-multi-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  font-size: 10.5px;
  font-weight: 600;
  color: #fff;
  flex-shrink: 0;
  letter-spacing: 0.2px;
}
.bp-search-multi-chip-label {
  font-size: 13px;
  color: #1a1d35;
  line-height: 1.2;
}

/* ── Loader ── */
.bp-search-multi .p-autocomplete-loader {
  color: #4e5a82;
}

/* ── Overlay panel ── */
.p-autocomplete-overlay {
  /* PrimeVue 4 theme variables don't resolve consistently — force opaque surface */
  background: #fff !important;
  border: 1px solid #d1d5e8 !important;
  border-radius: 8px;
  box-shadow: 0 8px 20px rgba(15, 17, 40, 0.12) !important;
  margin-top: 4px;
  padding: 8px 4px;
  max-height: 280px;
  overflow-y: auto;
  /* PrimeVue applies z-index inline (default ~1000); override to sit above BasePopup at 1100 */
  z-index: 1300 !important;
}
.p-autocomplete-list {
  padding: 0 !important;
  margin: 0 !important;
  list-style: none !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 4px !important;
}
.p-autocomplete-option {
  padding: 8px 10px !important;
  border-radius: 6px !important;
  cursor: pointer;
  font-size: 13.5px;
  color: #1a1d35 !important;
  list-style: none;
}
.p-autocomplete-option:hover,
.p-autocomplete-option.p-autocomplete-option-focus,
.p-autocomplete-option.p-focus {
  background: #eef2ff !important;
  color: #1a1d35 !important;
}
.bp-search-multi-option {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.bp-search-multi-opt-text { min-width: 0;
}
.bp-search-multi-opt-name {
  font-size: 13.5px;
  color: #1a1d35;
  font-weight: 500;
  line-height: 1.25;
}
.bp-search-multi-opt-sub {
  font-size: 11.5px;
  color: #6b7db8;
  line-height: 1.25;
  margin-top: 1px;
}
.bp-search-multi-empty {
  padding: 12px;
  font-size: 13px;
  color: #6b7db8;
  text-align: center;
}

/* ── Below-mode pill chips (tagsPosition='below') ── */
.bp-search-multi-below {
  margin-top: 8px;
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 6px;
  max-height: 120px;
  overflow-y: auto;
  padding: 2px;
}
.bp-search-multi-below-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: #eef2ff;
  border: 1px solid #d1d9f3;
  border-radius: 999px;
  padding: 4px 4px 4px 12px;
  font-size: 13px;
  color: #1a1d35;
  line-height: 1.2;
  transition: background 0.15s, border-color 0.15s;
}
.bp-search-multi-below-chip:hover {
  background: #e0e7ff;
  border-color: #b8c4ee;
}
.bp-search-multi-below-label {
  white-space: nowrap;
}
.bp-search-multi-below-remove {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: #4e5a82;
  cursor: pointer;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s;
}
.bp-search-multi-below-remove:hover {
  background: #da2128;
  color: #fff;
}

.bp-search-single-wrap {
  position: relative;
  width: 100%;
}
.bp-search-single.p-autocomplete {
  display: block;
  width: 100%;
}
.bp-search-single .p-autocomplete-input {
  width: 100%;
  padding: 9px 32px 9px 12px;
  font-size: 13.5px;
  color: #1a1d35;
  border: 1px solid #d1d5e8;
  border-radius: 8px;
  background: #fff;
  transition: border-color 0.15s, box-shadow 0.15s;
  outline: none;
}
.bp-search-single .p-autocomplete-input::-moz-placeholder {
  color: #6b7db8;
}
.bp-search-single .p-autocomplete-input::placeholder {
  color: #6b7db8;
}
.bp-search-single .p-autocomplete-input:focus {
  border-color: #5b6af0;
  box-shadow: 0 0 0 3px rgba(91, 106, 240, 0.12);
}
.bp-search-single--error .p-autocomplete-input {
  border-color: #b91c1c;
}
.bp-search-single-clear {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: #4e5a82;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background 0.15s, color 0.15s;
}
.bp-search-single-clear:hover {
  background: #da2128;
  color: #fff;
}
.bp-search-single-icon {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  color: #6b7db8;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
}
.bp-search-single-create {
  padding: 6px 4px;
}
.bp-search-single-create-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: transparent;
  border: none;
  padding: 6px 10px;
  font-size: 12.5px;
  font-weight: 600;
  color: #5b6af0;
  cursor: pointer;
  border-radius: 6px;
  transition: background 0.15s, color 0.15s;
}
.bp-search-single-create-link:hover {
  background: #eef0ff;
  color: #3b48d0;
}

.bp-skills-picker { position: relative; width: 100%;
}

/* ── Trigger button ────────────────────────────────────────────────────── */
.bp-skills-picker-trigger {
  width: 100%;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 0 8px 0 10px;
  font-size: 13.5px;
  font-family: inherit;
  background: #fff;
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  outline: none;
  cursor: pointer;
  transition: border-color 0.15s;
}
.bp-skills-picker-trigger:hover                  { border-color: #a0a1ab;
}
.bp-skills-picker-trigger--open                  { border-color: #a0a1ab;
}
.bp-skills-picker-trigger-inner {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}
.bp-skills-picker-trigger-icon {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  color: #6b7db8;
}
.bp-skills-picker-trigger-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #9098b0;
}
.bp-skills-picker-trigger-label--filled { color: #1a1d35; font-weight: 600;
}
.bp-skills-picker-clear {
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  color: #9098b0;
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  padding: 0;
}
.bp-skills-picker-clear:hover { color: #da2128;
}

/* ── tagsPosition='below' chips ─────────────────────────────────────────── */
.bp-skills-picker-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
  max-height: 120px;
  overflow-y: auto;
}
.bp-skills-picker-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 4px 4px 10px;
  background: rgba(218, 33, 40, 0.08);
  color: #da2128;
  border-radius: 14px;
  font-size: 12px;
  font-weight: 600;
  line-height: 1;
}
.bp-skills-picker-tag-remove {
  width: 18px;
  height: 18px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-radius: 50%;
  color: #da2128;
  cursor: pointer;
  padding: 0;
  transition: background 0.15s, color 0.15s;
}
.bp-skills-picker-tag-remove:hover {
  background: #da2128;
  color: #fff;
}

/* ── Modal overlay ─────────────────────────────────────────────────────── */
.bp-skills-picker-overlay {
  position: fixed;
  inset: 0;
  z-index: 1200;
  background: rgba(0, 0, 0, 0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
}
.bp-skills-picker-modal {
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(15, 17, 40, 0.25);
  width: 100%;
  max-width: 800px;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  font-family: inherit;
}

/* ── Header ────────────────────────────────────────────────────────────── */
.bp-skills-picker-modal-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 14px 20px;
  border-bottom: 1px solid #f1f1f6;
}
.bp-skills-picker-modal-eyebrow {
  font-size: 10.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  color: #9098b0;
}
.bp-skills-picker-modal-title {
  font-size: 14px;
  font-weight: 600;
  color: #1a1d35;
  margin-top: 2px;
}
.bp-skills-picker-modal-close {
  width: 28px;
  height: 28px;
  background: transparent;
  border: none;
  border-radius: 6px;
  color: #9098b0;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.bp-skills-picker-modal-close:hover { background: #f5f6fb; color: #1a1d35;
}

/* ── Proficiency note ──────────────────────────────────────────────────── */
.bp-skills-picker-modal-note {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 9px 20px;
  background: #fffbeb;
  border-bottom: 1px solid #fde68a;
  color: #92400e;
  font-size: 11px;
  line-height: 1.4;
}
.bp-skills-picker-modal-note svg { flex-shrink: 0; margin-top: 1px; color: #f59e0b;
}
.bp-skills-picker-modal-note p { margin: 0;
}

/* ── Body ──────────────────────────────────────────────────────────────── */
.bp-skills-picker-modal-body {
  display: grid;
  grid-template-columns: 1fr 280px;
  flex: 1;
  overflow: hidden;
}
.bp-skills-picker-pane { display: flex; flex-direction: column; overflow: hidden;
}
.bp-skills-picker-pane--left  { border-right: 1px solid #f1f1f6;
}
.bp-skills-picker-pane--right { padding: 12px; background: #fafafd; overflow-y: auto;
}
@media (max-width: 640px) {
.bp-skills-picker-modal-body { grid-template-columns: 1fr;
}
.bp-skills-picker-pane--left { border-right: none; border-bottom: 1px solid #f1f1f6; max-height: 50%;
}
}

/* Search row */
.bp-skills-picker-search-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 12px 8px;
  border-bottom: 1px solid #f1f1f6;
}
.bp-skills-picker-search-row svg { color: #9098b0; flex-shrink: 0;
}
.bp-skills-picker-search-input {
  flex: 1;
  height: 28px;
  font-size: 12.5px;
  color: #1a1d35;
  background: transparent;
  border: 0;
  outline: none;
  font-family: inherit;
}
.bp-skills-picker-search-input::-moz-placeholder { color: #9098b0;
}
.bp-skills-picker-search-input::placeholder { color: #9098b0;
}
.bp-skills-picker-search-clear {
  font-size: 11px;
  color: #9098b0;
  background: transparent;
  border: 0;
  cursor: pointer;
}
.bp-skills-picker-search-clear:hover { color: #1a1d35;
}

/* Tree */
.bp-skills-picker-tree {
  flex: 1;
  overflow-y: auto;
  padding: 4px 0;
  font-size: 12.5px;
}
.bp-skills-picker-empty {
  padding: 24px 12px;
  text-align: center;
  font-size: 11.5px;
  color: #9098b0;
}
.bp-skills-picker-row {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.bp-skills-picker-row--domain   { cursor: pointer;
}
.bp-skills-picker-row--category { cursor: pointer; padding-left: 28px;
}
.bp-skills-picker-row--group    { padding-left: 48px; padding-top: 2px; padding-bottom: 2px;
}
.bp-skills-picker-row--skill    { cursor: pointer; padding-left: 84px; padding-top: 2px; padding-bottom: 2px;
}
.bp-skills-picker-row:hover     { background: #fafafd;
}
.bp-skills-picker-caret {
  width: 16px;
  height: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #9098b0;
  flex-shrink: 0;
}
.bp-skills-picker-caret-btn { background: transparent; border: 0; cursor: pointer; padding: 0;
}
.bp-skills-picker-caret-svg { width: 10px; height: 10px; transition: transform 0.15s;
}
.bp-skills-picker-caret-svg--open { transform: rotate(90deg);
}
.bp-skills-picker-domain-label   { font-weight: 600; color: #1a1d35; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.bp-skills-picker-category-label { font-weight: 500; color: #4e5a82; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.bp-skills-picker-group-inner {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 0;
  cursor: pointer;
}
.bp-skills-picker-group-label { font-weight: 600; color: #4e5a82; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.bp-skills-picker-skill-label { color: #4e5a82; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.bp-skills-picker-checkbox {
  width: 14px;
  height: 14px;
  border: 1px solid #c0c1cb;
  border-radius: 3px;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  color: #fff;
}
.bp-skills-picker-checkbox--all     { background: #da2128; border-color: #da2128;
}
.bp-skills-picker-checkbox--partial { background: #f0a0a3; border-color: #f0a0a3;
}

/* Right pane — selected list */
.bp-skills-picker-pane-title {
  font-size: 10.5px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  color: #4e5a82;
  margin-bottom: 8px;
}
.bp-skills-picker-pane-empty {
  font-size: 11.5px;
  color: #9098b0;
  font-style: italic;
  text-align: center;
  padding: 16px 0;
}
.bp-skills-picker-selected-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px;
}
.bp-skills-picker-selected-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 8px;
  background: #fff;
  border: 1px solid #e4e7f0;
  border-radius: 6px;
  font-size: 12px;
}
.bp-skills-picker-selected-text { flex: 1; min-width: 0;
}
.bp-skills-picker-selected-name {
  color: #1a1d35;
  font-weight: 500;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bp-skills-picker-selected-meta {
  color: #9098b0;
  font-size: 10.5px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.bp-skills-picker-selected-remove {
  width: 20px;
  height: 20px;
  background: transparent;
  border: 0;
  color: #9098b0;
  cursor: pointer;
  flex-shrink: 0;
}
.bp-skills-picker-selected-remove:hover { color: #da2128;
}

/* ── Footer ────────────────────────────────────────────────────────────── */
.bp-skills-picker-modal-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
  padding: 10px 20px;
  border-top: 1px solid #f1f1f6;
  background: #fafafd;
}
.bp-skills-picker-footer-clear {
  font-size: 12px;
  color: #9098b0;
  background: transparent;
  border: 0;
  cursor: pointer;
}
.bp-skills-picker-footer-clear:hover { color: #da2128;
}
.bp-skills-picker-footer-cancel {
  height: 30px;
  padding: 0 12px;
  font-size: 12px;
  font-family: inherit;
  font-weight: 500;
  color: #4e5a82;
  background: #fff;
  border: 1px solid #e4e7f0;
  border-radius: 6px;
  cursor: pointer;
}
.bp-skills-picker-footer-cancel:hover { background: #fafafd;
}
.bp-skills-picker-footer-apply {
  height: 30px;
  padding: 0 12px;
  font-size: 12px;
  font-family: inherit;
  font-weight: 600;
  color: #fff;
  background: #0d1526;
  border: 0;
  border-radius: 6px;
  cursor: pointer;
}
.bp-skills-picker-footer-apply:hover { background: #1e2d45;
}

/* Transition */
.bp-skills-picker-fade-enter-active,
.bp-skills-picker-fade-leave-active { transition: opacity 0.15s ease;
}
.bp-skills-picker-fade-enter-from,
.bp-skills-picker-fade-leave-to     { opacity: 0;
}

/* ── Overlay ── */
.ds-cm-overlay[data-v-e1e6d52e] {
  position: fixed;
  inset: 0;
  background: rgba(15, 17, 40, 0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1100;
  padding: 16px;
}

/* ── Dialog ── */
.ds-cm-dialog[data-v-e1e6d52e] {
  background: #fff;
  border-radius: 14px;
  box-shadow: 0 16px 48px rgba(15, 17, 40, 0.22);
  width: 100%;
  max-width: 862px;
  overflow: hidden;
}

/* ── Header ── */
.ds-cm-header[data-v-e1e6d52e] {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 18px 22px 16px;
  border-bottom: 1px solid #d0d4e4;
  background: #fff;
  gap: 12px;
}
.ds-cm-header-text[data-v-e1e6d52e] {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.ds-cm-title[data-v-e1e6d52e] {
  font-size: 15px;
  font-weight: 700;
  color: #1a1d35;
  line-height: 1.25;
}
.ds-cm-subtitle[data-v-e1e6d52e] {
  font-size: 12px;
  color: #7b84a3;
  line-height: 1.4;
}
.ds-cm-close[data-v-e1e6d52e] {
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 5px;
  border-radius: 6px;
  color: #2563eb;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 1px;
  transition: background 0.15s;
}
.ds-cm-close[data-v-e1e6d52e]:hover {
  background: #eff4ff;
}

/* ── Body: two-panel grid ── */
.ds-cm-body[data-v-e1e6d52e] {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  min-height: 300px;
}

/* ── Single panel ── */
.ds-cm-panel[data-v-e1e6d52e] {
  display: flex;
  flex-direction: column;
  padding: 24px 24px 22px;
  min-width: 0; /* prevent grid blowout when content is wider than 1fr */
}
.ds-cm-panel-top[data-v-e1e6d52e] {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* ── Panel icon ── */
.ds-cm-panel-icon[data-v-e1e6d52e] {
  width: 42px;
  height: 42px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 8px;
  flex-shrink: 0;
}
.ds-cm-panel-icon--blue[data-v-e1e6d52e] {
  background: #eff4ff;
  color: #2563eb;
}
.ds-cm-panel-icon--red[data-v-e1e6d52e] {
  background: #fff0f0;
  color: #da2128;
}

/* ── Panel heading ── */
.ds-cm-panel-title[data-v-e1e6d52e] {
  font-size: 13.5px;
  font-weight: 700;
  line-height: 1.3;
}
.ds-cm-panel-title--blue[data-v-e1e6d52e] { color: #2563eb;
}
.ds-cm-panel-title--red[data-v-e1e6d52e]  { color: #da2128;
}
.ds-cm-panel-desc[data-v-e1e6d52e] {
  font-size: 11px;
  color: #9098b0;
  line-height: 1.45;
  margin-bottom: 4px;
}
.ds-cm-panel-help[data-v-e1e6d52e] {
  font-size: 11.5px;
  color: #6b7280;
  line-height: 1.65;
  margin: 6px 0 0;
  padding: 10px 12px;
  background: #f6f8ff;
  border-left: 3px solid #2563eb;
  border-radius: 0 6px 6px 0;
}
.ds-cm-panel-help--red[data-v-e1e6d52e] {
  background: #fff5f5;
  border-left-color: #da2128;
}

/* ── Duplicate alert (inline, per panel) ── */
.ds-cm-dup-alert[data-v-e1e6d52e] {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 11px;
  background: #fffbeb;
  border: 1px solid #fde68a;
  border-radius: 7px;
  font-size: 11.5px;
  color: #92400e;
  margin-top: 8px;
}

/* ── CRM error banner ── */
.ds-cm-crm-error[data-v-e1e6d52e] {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 11px;
  background: #fff1f2;
  border: 1px solid #fecaca;
  border-radius: 7px;
  font-size: 11.5px;
  color: #b91c1c;
  margin-top: 6px;
}

/* ── Fields ── */
.ds-cm-panel-fields[data-v-e1e6d52e] {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 10px;
}

/* Truncate long selected value in the dropdown trigger */
.ds-cm-panel-fields[data-v-e1e6d52e] .p-select,
.ds-cm-panel-fields[data-v-e1e6d52e] .bp-select {
  min-width: 0;
  width: 100%;
}
.ds-cm-panel-fields[data-v-e1e6d52e] .p-select-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── Note ── */
.ds-cm-note[data-v-e1e6d52e] {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 9px 12px;
  background: #fffbef;
  border: 1px solid #fde68a;
  border-radius: 8px;
}
.ds-cm-note-icon[data-v-e1e6d52e] {
  font-size: 13px;
  flex-shrink: 0;
  line-height: 1.5;
}
.ds-cm-note-text[data-v-e1e6d52e] {
  font-size: 11px;
  color: #7c5e10;
  line-height: 1.5;
}

/* ── Panel CTA ── */
.ds-cm-panel-cta[data-v-e1e6d52e] {
  margin-top: 20px;
}
.ds-cm-panel-cta[data-v-e1e6d52e] button {
  width: 100%;
  justify-content: center;
}

/* Blue button override */
.ds-cm-btn-blue[data-v-e1e6d52e] button {
  background: #2563eb;
  border-color: #2563eb;
}
.ds-cm-btn-blue[data-v-e1e6d52e] button:hover:not(:disabled) {
  background: #1d4ed8;
  border-color: #1d4ed8;
}
.ds-cm-btn-blue[data-v-e1e6d52e] button:active:not(:disabled) {
  background: #1e40af;
  border-color: #1e40af;
}

/* ── Separator ── */
.ds-cm-sep[data-v-e1e6d52e] {
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 44px;
  padding: 28px 0;
}
.ds-cm-sep-line[data-v-e1e6d52e] {
  flex: 1;
  width: 1px;
  background: #d0d4e4;
}
.ds-cm-sep-or[data-v-e1e6d52e] {
  padding: 7px 0;
  font-size: 10.5px;
  font-weight: 600;
  color: #b0b8cc;
  text-transform: uppercase;
  letter-spacing: 0.7px;
}

/* ── Transition ── */
.ds-cm-fade-enter-active[data-v-e1e6d52e],
.ds-cm-fade-leave-active[data-v-e1e6d52e] {
  transition: opacity 0.2s ease;
}
.ds-cm-fade-enter-active .ds-cm-dialog[data-v-e1e6d52e],
.ds-cm-fade-leave-active .ds-cm-dialog[data-v-e1e6d52e] {
  transition: transform 0.2s ease, opacity 0.2s ease;
}
.ds-cm-fade-enter-from[data-v-e1e6d52e],
.ds-cm-fade-leave-to[data-v-e1e6d52e] {
  opacity: 0;
}
.ds-cm-fade-enter-from .ds-cm-dialog[data-v-e1e6d52e],
.ds-cm-fade-leave-to .ds-cm-dialog[data-v-e1e6d52e] {
  transform: scale(0.96) translateY(-8px);
  opacity: 0;
}

/* ── Mobile ── */
@media (max-width: 640px) {
.ds-cm-body[data-v-e1e6d52e] {
    grid-template-columns: 1fr;
}
.ds-cm-sep[data-v-e1e6d52e] {
    flex-direction: row;
    width: auto;
    padding: 0 24px;
}
.ds-cm-sep-line[data-v-e1e6d52e] {
    flex: 1;
    width: auto;
    height: 1px;
}
.ds-cm-sep-or[data-v-e1e6d52e] {
    padding: 0 10px;
}
}

.ds-share[data-v-9c7866e3] {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* ── Step 1 picker row ── */
.ds-share-row[data-v-9c7866e3] {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.ds-share-picker[data-v-9c7866e3] {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.ds-share-picker[data-v-9c7866e3] .bp-form-group {
  flex: 1;
  min-width: 0;
  margin: 0;
}
.ds-share-icon[data-v-9c7866e3] {
  width: 36px;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #4e5a82;
  flex-shrink: 0;
}
.ds-share-perm[data-v-9c7866e3] {
  width: 150px;
  flex-shrink: 0;
}
.ds-share-perm[data-v-9c7866e3] .bp-form-group { margin: 0;
}

/* ── Footer ── */
.ds-share-footer[data-v-9c7866e3] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 4px;
  gap: 8px;
}
.ds-share-footer-right[data-v-9c7866e3] {
  display: flex;
  gap: 8px;
}

/* ── Step 2 manage list ── */
.ds-manage-list[data-v-9c7866e3] {
  border: 1px solid #e4e7f0;
  border-radius: 10px;
  background: #fff;
  max-height: 320px;
  overflow-y: auto;
  padding: 4px;
}
.ds-manage-empty[data-v-9c7866e3] {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 28px 16px;
  color: #6b7db8;
  font-size: 13px;
}
.ds-manage-row[data-v-9c7866e3] {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  transition: background 0.15s;
}
.ds-manage-row[data-v-9c7866e3]:hover { background: #f5f6fb;
}
.ds-manage-avatar[data-v-9c7866e3] {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 600;
  color: #fff;
  flex-shrink: 0;
}
.ds-manage-text[data-v-9c7866e3] { flex: 1; min-width: 0;
}
.ds-manage-name[data-v-9c7866e3] {
  font-size: 13.5px;
  font-weight: 600;
  color: #1a1d35;
  line-height: 1.2;
}
.ds-manage-email[data-v-9c7866e3] {
  font-size: 12px;
  color: #6b7db8;
  line-height: 1.2;
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ds-manage-perm[data-v-9c7866e3] { width: 130px; flex-shrink: 0;
}
.ds-manage-perm[data-v-9c7866e3] .bp-form-group { margin: 0;
}
.ds-manage-remove[data-v-9c7866e3] {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  border: none;
  background: transparent;
  color: #4e5a82;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s;
}
.ds-manage-remove[data-v-9c7866e3]:hover {
  background: #da2128;
  color: #fff;
}

/* ── Share note (Step 1) ── */
.ds-share-note[data-v-9c7866e3] {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 9px 12px;
  background: #fffbef;
  border: 1px solid #fde68a;
  border-radius: 8px;
  font-size: 12px;
  color: #7c5e10;
  line-height: 1.45;
}
.ds-share-note-icon[data-v-9c7866e3] {
  flex-shrink: 0;
  margin-top: 1px;
}

/* ── Permission cell (icon + label) ── */
.ds-perm-cell[data-v-9c7866e3] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.ds-perm-icon[data-v-9c7866e3] {
  color: #4e5a82;
  flex-shrink: 0;
}
@media (max-width: 560px) {
.ds-share-row[data-v-9c7866e3] { flex-direction: column; gap: 8px;
}
.ds-share-perm[data-v-9c7866e3] { width: 100%;
}
}

.dsv-page[data-v-dcdcb09e] {
  display: flex;
  flex-direction: column;
  gap: 20px;
  padding: 20px 24px 32px;
}

/* ── Page header ── */
.dsv-header[data-v-dcdcb09e] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.dsv-actions-bar[data-v-dcdcb09e] {
  display: flex;
  justify-content: flex-end;
}
.dsv-header-identity[data-v-dcdcb09e] {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}
.dsv-icon-box[data-v-dcdcb09e] {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: #fff0f0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.dsv-header-text[data-v-dcdcb09e] {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.dsv-title[data-v-dcdcb09e] {
  font-size: 20px;
  font-weight: 700;
  color: #1a1d35;
  margin: 0;
}
.dsv-subtitle[data-v-dcdcb09e] {
  font-size: 13px;
  color: #6b7db8;
  margin: 0;
}



/* ── Filter grid ── */
.dsv-filter-field--wide[data-v-dcdcb09e] { grid-column: span 2;
}
.dsv-filter-field .bp-label[data-v-dcdcb09e] { font-size: 11px; font-weight: 700; margin-bottom: 1px;
}
.dsv-filter-field .bp-form-group[data-v-dcdcb09e] { gap: 5px;
}


/* ── Truncating text cell (Sales Owner, Account Name) ── */
.dsv-cell-truncate[data-v-dcdcb09e] {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #1a1d35;
}

/* ── Deal ID + version badge ── */
.dsv-deal-cell[data-v-dcdcb09e] {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 8px;
}
.dsv-deal-id-stack[data-v-dcdcb09e] {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.dsv-deal-id[data-v-dcdcb09e] {
  display: block;
  font-weight: 700;
  color: #1a1d35;
}
.dsv-version-badge[data-v-dcdcb09e] {
  display: inline-block;
  margin-top: 2px;
  font-size: 10px;
  font-weight: 700;
  padding: 1px 5px;
  border-radius: 6px;
  background: transparent;
  color: #1a1d35;
  letter-spacing: 0.2px;
}

/* ── More-actions (⋯) button + popover menu ── */
.dsv-more-btn[data-v-dcdcb09e] {
  margin-left: auto;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  border: 1px solid #d1d5e8;
  background: #fff;
  color: #4e5a82;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  box-shadow: 0 1px 2px rgba(15, 17, 40, 0.04);
  transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;
}
.dsv-more-btn[data-v-dcdcb09e]:hover:not(:disabled) {
  background: #eef2ff;
  border-color: #b8c4ee;
  color: #1a1d35;
  box-shadow: 0 2px 4px rgba(15, 17, 40, 0.08);
}
.dsv-more-btn[data-v-dcdcb09e]:active:not(:disabled) {
  background: #e0e7ff;
  box-shadow: 0 1px 2px rgba(15, 17, 40, 0.06);
}
.dsv-more-btn--disabled[data-v-dcdcb09e],
.dsv-more-btn[data-v-dcdcb09e]:disabled {
  opacity: 0.4;
  cursor: not-allowed;
  box-shadow: none;
}
/* .dsv-more-menu and .dsv-more-item rules live in the unscoped \3c style> block below
   because the menu is teleported to <body> and wouldn't pick up scoped data attributes. */

/* ── Action buttons group ── */
.dsv-action-btns[data-v-dcdcb09e] {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  padding-right: 5px;
}

/* ── Revenue cell ── */
.dsv-revenue[data-v-dcdcb09e] {
  display: block;
  text-align: right;
  font-weight: 600;
  color: #1a1d35;
  white-space: nowrap;
}

/* ── Opportunity Name cell ── */
.dsv-opp-cell[data-v-dcdcb09e] {
  display: flex;
  align-items: center;
  gap: 8px;
}
.dsv-opp-text-stack[data-v-dcdcb09e] {
  flex: 1 1 auto;
  min-width: 0;
}
.dsv-opp-name[data-v-dcdcb09e] {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: #1a1d35;
  font-weight: 700;
}
.dsv-opp-number[data-v-dcdcb09e] {
  display: block;
  font-size: 11px;
  font-weight: 600;
  color: #6b7db8;
  margin-top: 2px;
  white-space: nowrap;
}


/* ── Win % bar ── */
.dsv-winbar[data-v-dcdcb09e] { display: flex; align-items: center; gap: 5px;
}
.dsv-winbar-track[data-v-dcdcb09e] {
  flex: 1;
  height: 7px;
  background: #e9eaf2;
  border-radius: 99px;
  overflow: hidden;
  min-width: 28px;
}
.dsv-winbar-fill[data-v-dcdcb09e] { height: 100%; border-radius: 99px; transition: width 0.3s ease;
}
.dsv-winbar-fill--green[data-v-dcdcb09e] { background: #22c55e;
}
.dsv-winbar-fill--red[data-v-dcdcb09e]   { background: #da2128;
}
.dsv-winbar-label[data-v-dcdcb09e] {
  font-size: 11px;
  font-weight: 600;
  color: #4e5a82;
  white-space: nowrap;
  min-width: 26px;
  text-align: right;
}

/* ── Copy icon button ── */
.dsv-copy-btn[data-v-dcdcb09e] {
  display:        inline-flex;
  align-items:    center;
  justify-content: center;
  width:          30px;
  height:         30px;
  border-radius:  7px;
  border:         1px solid #d1d5e8;
  background:     #fff;
  color:          #6b7db8;
  cursor:         pointer;
  flex-shrink:    0;
  transition:     background 0.15s, border-color 0.15s, color 0.15s;
}
.dsv-copy-btn[data-v-dcdcb09e]:hover {
  background:     #f5f6fb;
  border-color:   #b0b7d8;
  color:          #1a1d35;
}
.dsv-copy-btn[data-v-dcdcb09e]:disabled {
  opacity: 0.45;
  cursor:  not-allowed;
}

/* ── Child row version badge — outlined grey style ── */
[data-v-dcdcb09e] .bp-tbl-row--child .dsv-version-badge {
  background: transparent;
  border: 1px solid #9098b0;
  color: #9098b0;
}

/* ── Child row left accent border ── */
[data-v-dcdcb09e] .bp-tbl-row--child td:first-child {
  box-shadow: inset 3px 0 0 #b91c22;
}

/* ── Status badges ── */
.bp-tbl-status[data-v-dcdcb09e] {
  display:        inline-flex;
  align-items:    center;
  gap:            5px;
  padding:        3px 9px;
  border-radius:  99px;
  font-size:      11px;
  font-weight:    600;
  white-space:    nowrap;
  letter-spacing: 0.2px;
}
.bp-tbl-status-dot[data-v-dcdcb09e] {
  width:        6px;
  height:       6px;
  border-radius: 50%;
  flex-shrink:  0;
}
/* InProgress — blue */
.bp-tbl-status--inprogress[data-v-dcdcb09e] {
  background: #eff6ff;
  color:      #2563eb;
}
.bp-tbl-status--inprogress .bp-tbl-status-dot[data-v-dcdcb09e] { background: #3b82f6;
}
/* Develop — amber */
.bp-tbl-status--develop[data-v-dcdcb09e] {
  background: #fffbeb;
  color:      #b45309;
}
.bp-tbl-status--develop .bp-tbl-status-dot[data-v-dcdcb09e] { background: #f59e0b;
}
/* Proposed — green */
.bp-tbl-status--proposed[data-v-dcdcb09e] {
  background: #f0fdf4;
  color:      #16a34a;
}
.bp-tbl-status--proposed .bp-tbl-status-dot[data-v-dcdcb09e] { background: #22c55e;
}
/* NoGo — red */
.bp-tbl-status--nogo[data-v-dcdcb09e] {
  background: #fff1f2;
  color:      #dc2626;
}
.bp-tbl-status--nogo .bp-tbl-status-dot[data-v-dcdcb09e] { background: #ef4444;
}
/* Rejected — grey */
.bp-tbl-status--rejected[data-v-dcdcb09e] {
  background: #f3f4f6;
  color:      #6b7280;
}
.bp-tbl-status--rejected .bp-tbl-status-dot[data-v-dcdcb09e] { background: #9ca3af;
}

/* ── Add New button ── */
.dsv-new-btn[data-v-dcdcb09e] {
  display:         inline-flex    !important;
  flex-direction:  row            !important;
  align-items:     center         !important;
  gap:             8px            !important;
  background:      #da2128        !important;
  color:           #fff           !important;
  border:          1px solid #da2128 !important;
  border-radius:   8px            !important;
  padding:         9px 20px       !important;
  font-size:       13px           !important;
  font-weight:     600            !important;
  font-family:     inherit        !important;
  cursor:          pointer        !important;
  white-space:     nowrap         !important;
  text-decoration: none           !important;
  line-height:     1.4            !important;
}
.dsv-new-btn[data-v-dcdcb09e]:hover { background: #b91c22 !important; border-color: #b91c22 !important;
}

/* ── Error ── */
.dsv-error[data-v-dcdcb09e] {
  background: #fff5f5;
  border: 1px solid #fca5a5;
  border-radius: 8px;
  padding: 12px 16px;
  font-size: 13px;
  color: #b91c1c;
}

/* ── KPI card ── */
.dsv-kpi-card[data-v-dcdcb09e] {
  display: flex;
  align-items: stretch;
  gap: 0;
  background: #fff;
  border: 1px solid #e4e7f0;
  border-radius: 12px;
  overflow: hidden;
  flex-shrink: 0;
}
.dsv-kpi-year[data-v-dcdcb09e] {
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 14px 20px;
  font-size: 22px;
  font-weight: 800;
  color: #1a1d35;
  letter-spacing: -0.5px;
  background: #f9fafc;
  min-width: 80px;
}
.dsv-kpi-divider[data-v-dcdcb09e] {
  width: 1px;
  background: #e4e7f0;
  flex-shrink: 0;
}
.dsv-kpi-stat[data-v-dcdcb09e] {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
  padding: 12px 18px;
}
.dsv-kpi-numbers[data-v-dcdcb09e] {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.dsv-kpi-count[data-v-dcdcb09e] {
  font-size: 22px;
  font-weight: 800;
  color: #1a1d35;
  line-height: 1;
}
.dsv-kpi-rev[data-v-dcdcb09e] {
  font-size: 14px;
  font-weight: 700;
  color: #da2128;
}
.dsv-kpi-label[data-v-dcdcb09e] {
  font-size: 10.5px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  color: #9098b0;
  white-space: nowrap;
}
@media (max-width: 639px) {
.dsv-page[data-v-dcdcb09e] { padding: 16px 16px 24px;
}
.dsv-kpi-card[data-v-dcdcb09e] { width: 100%;
}
.dsv-kpi-year[data-v-dcdcb09e] { padding: 12px 14px; font-size: 18px; min-width: 60px;
}
.dsv-kpi-stat[data-v-dcdcb09e] { padding: 10px 14px;
}
}

.dsv-more-menu {
  position: fixed;
  z-index: 1200;
  min-width: 160px;
  background: #fff;
  border: 1px solid #d1d5e8;
  border-radius: 8px;
  box-shadow: 0 8px 20px rgba(15, 17, 40, 0.12);
  padding: 4px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.dsv-more-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  border: none;
  background: transparent;
  border-radius: 6px;
  font-size: 13px;
  color: #1a1d35;
  cursor: pointer;
  text-align: left;
  white-space: nowrap;
  transition: background 0.15s;
}
.dsv-more-item:hover {
  background: #eef2ff;
}
.dsv-more-item svg {
  color: #4e5a82;
  flex-shrink: 0;
}

/* Prevent long CRM user labels from expanding the select width */
[data-v-e8f6e25c] .p-select-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ds-placeholder[data-v-e8f6e25c] { color: #6b7db8;
}

/* Combined-answer alert line. Same light-red banner style used by the
   W&R Box 1 helper (`.wr-helper--warn` in WrTab.vue) — light red bg,
   deep red bold text, rounded corners. Keeps a consistent visual for
   "please act on this" messages across the dealsheet. */
.obi-work-inclusion-alert[data-v-e8f6e25c] {
  margin: 4px 0 0;
  padding: 10px 14px;
  background: #fee2e2;
  color: #b91c1c;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 700;
  letter-spacing: 0.03em;
}

/* Work-inclusion reference callout — amber notice panel rendered below
   the "Is the Work Included…" dropdown. Read-only reference list; content
   swaps based on the Industry Aligned answer above. Palette matches the
   read-only badge convention (amber tint + deep amber-brown text). */
.obi-work-inclusion[data-v-e8f6e25c] {
  background: #fef3c7;
  border: 1px solid #fcd34d;
  border-radius: 10px;
  padding: 12px 14px;
  color: #92400e;
}
.obi-work-inclusion-header[data-v-e8f6e25c] {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}
.obi-work-inclusion-header svg[data-v-e8f6e25c] { flex-shrink: 0;
}
.obi-work-inclusion-grid[data-v-e8f6e25c] {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 10px;
}
.obi-wi-tile[data-v-e8f6e25c] {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 12px 10px;
  background: #fff;
  border: 1px solid #fde68a;
  border-radius: 8px;
  text-align: center;
  min-height: 82px;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.obi-wi-icon[data-v-e8f6e25c] {
  color: #b45309;
  flex-shrink: 0;
}
.obi-wi-tile-label[data-v-e8f6e25c] {
  font-size: 12px;
  font-weight: 600;
  color: #78350f;
  line-height: 1.3;
}

/* Custom prefix input for Est. Project revenue (base). Mimics the shared
   `.bp-input` visually (border, radius, focus ring) but its content is a
   flex row of [symbol, native input] so both children sit on the same
   baseline via `align-items: center` — no absolute positioning, no font
   metric guesswork. The native input has its own border/outline removed
   so the outer container renders the single visible border. */
.ds-currency-field[data-v-e8f6e25c] {
  display: flex;
  align-items: center;
  gap: 8px;                 /* space between symbol and numeric text */
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  background: #fff;
  padding: 0 12px;
  transition: border-color 0.15s, box-shadow 0.15s;
  box-sizing: border-box;
  min-height: 38px;         /* match .bp-input rendered height */
}
.ds-currency-field[data-v-e8f6e25c]:focus-within {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
}
.ds-currency-prefix[data-v-e8f6e25c] {
  color: #4e5a82;
  font-weight: 700;
  font-size: 13.5px;
  white-space: nowrap;
  pointer-events: none;
  flex-shrink: 0;
}
.ds-currency-native[data-v-e8f6e25c] {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: transparent;
  padding: 9px 0;
  font-family: inherit;
  font-size: 13.5px;
  color: #1a1d35;
  /* Hide the native spin buttons — matches `.bp-input type=number` behaviour
     which browsers vary on. Keeps the field visually clean. */
  -moz-appearance: textfield;
}
.ds-currency-native[data-v-e8f6e25c]::-webkit-outer-spin-button,
.ds-currency-native[data-v-e8f6e25c]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* ── Add account popup body ── */
.ds-add-account-body[data-v-e8f6e25c] {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.ds-add-account-footer[data-v-e8f6e25c] {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 4px;
}

/* ── Practice selection ── */
.ds-practice-grid[data-v-e8f6e25c] {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.ds-practice-card[data-v-e8f6e25c] {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 20px 10px 16px;
  border: 2px solid #e4e7f0;
  border-radius: 12px;
  background: #f8f9fc;
  cursor: pointer;
  transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
  text-align: center;
  font-family: inherit;
  outline: none;
  width: 100%;
}
.ds-practice-card[data-v-e8f6e25c]:hover {
  border-color: #aab0cc;
  background: #f0f2fb;
  box-shadow: 0 3px 10px rgba(25,26,55,0.09);
}
.ds-practice-check[data-v-e8f6e25c] {
  position: absolute;
  top: 9px; right: 9px;
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 2px solid #d1d5e8;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color 0.2s, background 0.2s;
  flex-shrink: 0;
}
.ds-practice-card--on .ds-practice-check[data-v-e8f6e25c] { border-color: #da2128; background: #da2128;
}
.ds-practice-icon[data-v-e8f6e25c] {
  width: 52px; height: 52px;
  border-radius: 14px;
  background: #e9eaf2;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #6b7db8;
  transition: background 0.2s, color 0.2s;
}
.ds-practice-card--on .ds-practice-icon[data-v-e8f6e25c] { background: #fee2e2; color: #da2128;
}
.ds-practice-code[data-v-e8f6e25c] { font-size: 13px; font-weight: 800; color: #4e5a82; letter-spacing: 0.4px; margin-top: 2px;
}
.ds-practice-card--on .ds-practice-code[data-v-e8f6e25c] { color: #da2128;
}
.ds-practice-name[data-v-e8f6e25c] { font-size: 10.5px; color: #9098b0; line-height: 1.35;
}
.ds-practice-card--on .ds-practice-name[data-v-e8f6e25c] { color: #b05560;
}
.ds-practice-loading[data-v-e8f6e25c] { font-size: 12px; color: #9098b0; padding: 16px 0; text-align: center;
}
@media (max-width: 640px)  {
.ds-practice-grid[data-v-e8f6e25c] { grid-template-columns: repeat(2, 1fr); max-width: 100%;
}
}

/* ── dss+ Assets ── */
.ds-asset-trigger[data-v-e8f6e25c] { max-width: 480px;
}
.ds-asset-reveal[data-v-e8f6e25c] {
  margin-top: 18px;
  padding: 16px 16px 10px;
  background: #f8f9fc;
  border: 1px solid #e4e7f0;
  border-radius: 10px;
}
.ds-asset-grid-header[data-v-e8f6e25c] { font-size: 12.5px; color: #4e5a82; line-height: 1.55; margin-bottom: 14px;
}
.ds-asset-legend[data-v-e8f6e25c] { display: flex; gap: 16px; align-items: center; margin-bottom: 14px; flex-wrap: wrap;
}
.ds-asset-legend-item[data-v-e8f6e25c] { display: flex; align-items: center; gap: 5px; font-size: 11px; color: #9098b0; font-weight: 500;
}
.ds-asset-legend-icon[data-v-e8f6e25c] { width: 20px; height: 20px; border-radius: 5px; display: inline-flex; align-items: center; justify-content: center;
}
.ds-asset-legend-item--ppt .ds-asset-legend-icon[data-v-e8f6e25c] { background: #fff0f0; border: 1px solid #f5c6c6; color: #da2128;
}
.ds-asset-legend-item--url .ds-asset-legend-icon[data-v-e8f6e25c] { background: #eff6ff; border: 1px solid #bcd0f7; color: #2563eb;
}
.ds-asset-loading[data-v-e8f6e25c] { font-size: 12px; color: #9098b0; padding: 12px 0; text-align: center;
}
.ds-asset-grid[data-v-e8f6e25c] { display: grid; grid-template-columns: 1fr 1fr; gap: 3px 24px;
}
.ds-asset-row[data-v-e8f6e25c] {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 8px; border-radius: 8px; border: none;
  background: transparent; cursor: pointer; text-align: left;
  font-family: inherit; transition: background 0.15s; width: 100%;
}
.ds-asset-row[data-v-e8f6e25c]:hover { background: #eef0f8;
}
.ds-asset-row--checked[data-v-e8f6e25c] { background: #fff5f5;
}
.ds-asset-check[data-v-e8f6e25c] {
  width: 17px; height: 17px; border-radius: 4px;
  border: 2px solid #d1d5e8; background: #fff; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  transition: border-color 0.15s, background 0.15s;
}
.ds-asset-row--checked .ds-asset-check[data-v-e8f6e25c] { border-color: #da2128; background: #da2128;
}
.ds-asset-label[data-v-e8f6e25c] { flex: 1; font-size: 12.5px; color: #4e5a82; line-height: 1.3; min-width: 0;
}
.ds-asset-row--checked .ds-asset-label[data-v-e8f6e25c] { color: #da2128; font-weight: 600;
}
.ds-asset-link[data-v-e8f6e25c] {
  flex-shrink: 0; width: 27px; height: 27px; border-radius: 6px;
  border: 1px solid #e4e7f0; background: #f8f9fc;
  display: flex; align-items: center; justify-content: center;
  color: #9098b0; text-decoration: none;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.ds-asset-link--ppt[data-v-e8f6e25c]:hover { background: #fff0f0; color: #da2128; border-color: #f5c6c6;
}
.ds-asset-link--url[data-v-e8f6e25c]:hover { background: #eff6ff; color: #2563eb; border-color: #bcd0f7;
}
.ds-asset-link--empty[data-v-e8f6e25c] { border-color: transparent; background: transparent;
}
.ds-asset-extra-info[data-v-e8f6e25c] {
  margin-top: 18px; padding: 14px 16px; background: #fff;
  border: 1px solid #e4e7f0; border-radius: 8px;
  display: flex; flex-direction: column; gap: 8px;
}
.ds-asset-extra-line[data-v-e8f6e25c] { font-size: 13px; line-height: 1.5; color: #4e5a82; margin: 0;
}
.ds-asset-extra-line--red[data-v-e8f6e25c]  { color: #da2128;
}
.ds-asset-extra-line--bold[data-v-e8f6e25c] { font-weight: 800;
}
.ds-asset-extra-line--gray[data-v-e8f6e25c] { color: #9098b0;
}
.ds-asset-extra-link[data-v-e8f6e25c] { color: #da2128; font-weight: 600; text-decoration: underline; text-underline-offset: 2px;
}
.ds-asset-extra-link[data-v-e8f6e25c]:hover { color: #b01820;
}
@media (max-width: 640px) {
.ds-asset-grid[data-v-e8f6e25c] { grid-template-columns: 1fr;
}
}

/* ── Key Milestone Dates ── */
.ds-ms-timeline[data-v-e8f6e25c] { display: flex; align-items: flex-start; overflow-x: auto; padding: 4px 0;
}
.ds-ms-card[data-v-e8f6e25c] { display: flex; flex-direction: column; align-items: center; min-width: 100px; flex: 1;
}
.ds-ms-connector[data-v-e8f6e25c] {
  flex: 1; height: 3px; min-width: 12px;
  background: #9098b8; margin-top: 19px;
  border-radius: 2px; flex-shrink: 0; transition: background 0.2s;
}
.ds-ms-connector--filled[data-v-e8f6e25c] { background: #191a37;
}
.ds-ms-badge[data-v-e8f6e25c] {
  width: 40px; height: 40px; border-radius: 50%;
  background: #e4e6f0; color: #9098b0;
  display: flex; align-items: center; justify-content: center;
  font-size: 10.5px; font-weight: 700; flex-shrink: 0;
  box-shadow: 0 1px 4px rgba(25,26,55,0.08);
  transition: background 0.2s, color 0.2s;
}
.ds-ms-badge--filled[data-v-e8f6e25c] { background: #191a37; color: #fff; box-shadow: 0 2px 6px rgba(25,26,55,0.22);
}
.ds-ms-body[data-v-e8f6e25c] { width: 100%; display: flex; flex-direction: column; align-items: center;
}
.ds-ms-name[data-v-e8f6e25c] {
  font-size: 10.5px; font-weight: 600; color: #4e5a82;
  text-align: center; margin: 8px 0 6px;
  min-height: 28px; display: flex; align-items: center;
  line-height: 1.3; padding: 0 4px;
}
.ds-ms-date-wrap[data-v-e8f6e25c] { width: 100%; display: flex; flex-direction: column; gap: 4px; padding: 0 3px; box-sizing: border-box;
}
.ds-ms-date-input[data-v-e8f6e25c] {
  width: 100%; padding: 5px 4px; border-radius: 6px;
  border: 1px solid #e0d88a; background: #fffde7;
  font-size: 11px; font-family: inherit; color: #1a1d35;
  outline: none; text-align: center;
  transition: border-color 0.15s; box-sizing: border-box;
}
.ds-ms-date-input[data-v-e8f6e25c]:focus { border-color: #c8b800;
}
.ds-ms-ind-label[data-v-e8f6e25c] { font-size: 9.5px; font-weight: 600; color: #9098b0; font-style: italic; text-align: center; margin-top: 1px;
}
.ds-ms-ind-input[data-v-e8f6e25c] {
  width: 100%; padding: 5px 4px; border-radius: 6px;
  border: 1px solid #d1d5e8; background: #f0f1f5;
  font-size: 11px; font-family: inherit; color: #9098b0;
  outline: none; text-align: center; cursor: not-allowed; box-sizing: border-box;
}
/* Applied only when the indicative slot has been populated by the milestone
   calculation (onMilestoneChange). Visually separates "calculated" indicative
   dates from the placeholder empty state so the user can see at a glance which
   downstream milestones have been auto-projected. Also inverts the date-picker
   glyph so it stays visible against the dark background. */
.ds-ms-ind-input--filled[data-v-e8f6e25c] {
  background: #191a37;
  color: #fff;
  border-color: #191a37;
}
.ds-ms-ind-input--filled[data-v-e8f6e25c]::-webkit-calendar-picker-indicator { filter: invert(1);
}
@media (max-width: 640px) {
.ds-ms-timeline[data-v-e8f6e25c] { flex-direction: column; align-items: stretch; overflow-x: visible; position: relative;
}
.ds-ms-timeline[data-v-e8f6e25c]::before {
    content: ''; position: absolute;
    left: 19px; top: 20px; bottom: 20px;
    width: 3px; background: #9098b8; border-radius: 2px; z-index: 0;
}
.ds-ms-connector[data-v-e8f6e25c] { display: none;
}
.ds-ms-card[data-v-e8f6e25c] { flex-direction: row; align-items: flex-start; min-width: unset; gap: 14px; margin-bottom: 20px; position: relative; z-index: 1;
}
.ds-ms-card[data-v-e8f6e25c]:last-child { margin-bottom: 0;
}
.ds-ms-badge[data-v-e8f6e25c] { box-shadow: 0 0 0 4px #fff; flex-shrink: 0;
}
.ds-ms-body[data-v-e8f6e25c] { align-items: flex-start; flex: 1;
}
.ds-ms-name[data-v-e8f6e25c] { margin: 2px 0 6px; min-height: unset; text-align: left; padding: 0;
}
.ds-ms-date-wrap[data-v-e8f6e25c] { flex-direction: column; padding: 0; align-items: stretch; gap: 5px;
}
.ds-ms-date-input[data-v-e8f6e25c], .ds-ms-ind-input[data-v-e8f6e25c] { text-align: left;
}
}

/* ── NCDD / KYC ── */
.ds-kyc-list[data-v-1c1fe4bc] { display: flex; flex-direction: column; gap: 0;
}

/* Groups a KYC row with its optional red note strip so the mandatory-field
   highlight outline wraps around both cleanly. flow-root prevents the note's
   margin-bottom from collapsing outside the wrapper box. */
.ds-kyc-row-group[data-v-1c1fe4bc] { display: flow-root;
}
.ds-kyc-row[data-v-1c1fe4bc] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 0;
  flex-wrap: wrap;
}
.ds-kyc-question[data-v-1c1fe4bc] {
  flex: 1;
  min-width: 0;
  font-size: 13.5px;
  color: #1a1d35;
  line-height: 1.5;
  font-weight: 500;
}
.ds-kyc-radios[data-v-1c1fe4bc] {
  display: flex;
  gap: 8px;
  flex-shrink: 0;
}
.ds-kyc-radio[data-v-1c1fe4bc] {
  display: inline-flex;
  align-items: center;
  padding: 0.3rem 1rem;
  border: 1.5px solid #e5e7eb;
  border-radius: 9999px;
  background: transparent;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.ds-kyc-radio[data-v-1c1fe4bc]:hover { border-color: #9ca3af;
}
.ds-kyc-radio--yes[data-v-1c1fe4bc] { border-color: #16a34a; background: #f0fdf4;
}
.ds-kyc-radio--no[data-v-1c1fe4bc]  { border-color: #dc2626; background: #fff1f2;
}
.ds-kyc-radio-input[data-v-1c1fe4bc] { display: none;
}
.ds-kyc-radio-label[data-v-1c1fe4bc] {
  font-size: 0.8125rem;
  font-weight: 500;
  color: #6b7280;
  transition: color 0.15s;
}
.ds-kyc-radio--yes .ds-kyc-radio-label[data-v-1c1fe4bc] { color: #15803d;
}
.ds-kyc-radio--no  .ds-kyc-radio-label[data-v-1c1fe4bc] { color: #b91c1c;
}
.ds-kyc-radio--active .ds-kyc-radio-label[data-v-1c1fe4bc] { color: #fff;
}
.ds-kyc-note[data-v-1c1fe4bc] {
  margin: 0 0 10px;
  padding: 8px 12px;
  background: #fff5f5;
  border-left: 3px solid #da2128;
  border-radius: 0 6px 6px 0;
  font-size: 12px;
  color: #b91c1c;
  line-height: 1.5;
}
.ds-kyc-justify[data-v-1c1fe4bc] { padding-bottom: 12px;
}
.ds-kyc-freetext[data-v-1c1fe4bc] { padding: 14px 0;
}
.ds-kyc-divider[data-v-1c1fe4bc] { height: 1px; background: #e4e7f0;
}
@media (max-width: 640px) {
.ds-kyc-row[data-v-1c1fe4bc] { flex-direction: column; align-items: flex-start; gap: 10px;
}
.ds-kyc-radios[data-v-1c1fe4bc] { width: 100%;
}
.ds-kyc-radio[data-v-1c1fe4bc] { flex: 1; justify-content: center;
}
}

/* ── Credit Check Approval Matrix ── */
.ds-matrix-body[data-v-1c1fe4bc] { padding: 12px 16px 0;
}
.ds-matrix-list[data-v-1c1fe4bc] { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px;
}
.ds-matrix-item[data-v-1c1fe4bc] {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  border-radius: 8px;
  background: #f8f9fc;
  border: 1px solid #eeeef5;
}
.ds-matrix-band[data-v-1c1fe4bc] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px; height: 28px;
  border-radius: 7px;
  font-size: 13px;
  font-weight: 800;
  flex-shrink: 0;
}
.ds-matrix-band--green[data-v-1c1fe4bc]  { background: #dcfce7; color: #166534; border: 1.5px solid #86efac;
}
.ds-matrix-band--blue[data-v-1c1fe4bc]   { background: #dbeafe; color: #1e40af; border: 1.5px solid #93c5fd;
}
.ds-matrix-band--amber[data-v-1c1fe4bc]  { background: #fef9c3; color: #713f12; border: 1.5px solid #fde047;
}
.ds-matrix-band--orange[data-v-1c1fe4bc] { background: #ffedd5; color: #9a3412; border: 1.5px solid #fdba74;
}
.ds-matrix-band--red[data-v-1c1fe4bc]    { background: #fee2e2; color: #991b1b; border: 1.5px solid #fca5a5;
}
.ds-matrix-score[data-v-1c1fe4bc] {
  font-size: 11px;
  font-weight: 600;
  color: #6b7db8;
  white-space: nowrap;
  min-width: 72px;
}
.ds-matrix-desc[data-v-1c1fe4bc] {
  flex: 1;
  font-size: 12.5px;
  color: #1a1d35;
  min-width: 0;
}
.ds-matrix-approval[data-v-1c1fe4bc] {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 600;
  color: #1a1d35;
  white-space: nowrap;
  flex-shrink: 0;
}
.ds-matrix-dot[data-v-1c1fe4bc] {
  width: 7px; height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
}
.ds-matrix-dot--green[data-v-1c1fe4bc]  { background: #22c55e;
}
.ds-matrix-dot--blue[data-v-1c1fe4bc]   { background: #3b82f6;
}
.ds-matrix-dot--amber[data-v-1c1fe4bc]  { background: #f59e0b;
}
.ds-matrix-dot--orange[data-v-1c1fe4bc] { background: #f97316;
}
.ds-matrix-dot--red[data-v-1c1fe4bc]    { background: #ef4444;
}
.ds-matrix-footer-note[data-v-1c1fe4bc] {
  margin: 0;
  padding: 10px 0 12px;
  border-top: 1px solid #e4e7f0;
  font-size: 11px;
  color: #9098b0;
  line-height: 1.6;
}
@media (max-width: 640px) {
.ds-matrix-item[data-v-1c1fe4bc] { flex-wrap: wrap;
}
.ds-matrix-score[data-v-1c1fe4bc] { min-width: unset;
}
.ds-matrix-approval[data-v-1c1fe4bc] { width: 100%; padding-top: 6px; border-top: 1px dashed #e4e7f0; margin-top: 2px;
}
}

/* Two-column grid for the top of the Delivery Work Location section.
   The conditional "Specify language(s)" field wraps to row 2 col 1 when shown. */
.osq-delivery-grid[data-v-a69da2c0] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 20px;
}
.osq-delivery-grid[data-v-a69da2c0] > * { min-width: 0;
}
@media (max-width: 640px) {
.osq-delivery-grid[data-v-a69da2c0] { grid-template-columns: 1fr;
}
}

/* ── On-site delivery sub-section ── */
.osq-sub-divider[data-v-a69da2c0] {
  border: none;
  border-top: 1px solid #e5e7eb;
  margin: 0.25rem 0;
}
.osq-sub-header[data-v-a69da2c0] {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: #374151;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Grid: label col | dropdown col | other-input col | btn col */
.osq-loc-headers[data-v-a69da2c0],
.osq-loc-row[data-v-a69da2c0] {
  display: grid;
  grid-template-columns: 170px 1fr 1fr 32px;
  align-items: center;
  gap: 0.5rem 0.75rem;
}
.osq-loc-col-head[data-v-a69da2c0] {
  font-size: 0.75rem;
  font-weight: 600;
  color: #9ca3af;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.osq-loc-col-other[data-v-a69da2c0] { padding-left: 0;
}
.osq-loc-col-btn[data-v-a69da2c0],
.osq-loc-btn-placeholder[data-v-a69da2c0] { width: 32px;
}
.osq-loc-label[data-v-a69da2c0] {
  font-size: 0.875rem;
  font-weight: 500;
  color: #374151;
  line-height: 1.3;
}
.osq-loc-other-input[data-v-a69da2c0] {
  width: 100%;
  padding: 0.4rem 0.75rem;
  border: 1px solid #d1d5db;
  border-radius: 0.375rem;
  font-size: 0.875rem;
  outline: none;
  min-width: 0;
  box-sizing: border-box;
}
.osq-loc-other-input[data-v-a69da2c0]:focus { border-color: #3b82f6; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
}
.osq-loc-remove-btn[data-v-a69da2c0] {
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fee2e2;
  color: #dc2626;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
  flex-shrink: 0;
}
.osq-loc-remove-btn[data-v-a69da2c0]:hover { background: #fecaca;
}
.osq-loc-additional-header[data-v-a69da2c0] {
  font-size: 0.8125rem;
  font-weight: 600;
  color: #6b7280;
  margin-top: 0.25rem;
}
.osq-loc-add-btn[data-v-a69da2c0] {
  align-self: flex-start;
  padding: 0.375rem 0.875rem;
  background: #f0f9ff;
  color: #0369a1;
  border: 1px dashed #7dd3fc;
  border-radius: 0.375rem;
  cursor: pointer;
  font-size: 0.8125rem;
  font-weight: 500;
  margin-top: 0.25rem;
}
.osq-loc-add-btn[data-v-a69da2c0]:hover { background: #e0f2fe; border-color: #38bdf8;
}
@media (max-width: 640px) {
.osq-loc-headers[data-v-a69da2c0] { display: none;
}
.osq-loc-row[data-v-a69da2c0] {
    grid-template-columns: 1fr 32px;
    grid-template-rows: auto auto auto;
}
.osq-loc-row .osq-loc-label[data-v-a69da2c0]      { grid-column: 1 / -1;
}
.osq-loc-row[data-v-a69da2c0] .bp-select   { grid-column: 1;
}
.osq-loc-row .osq-loc-other-input[data-v-a69da2c0] { grid-column: 1;
}
.osq-loc-row .osq-loc-remove-btn[data-v-a69da2c0]  { grid-column: 2; grid-row: 2;
}
.osq-loc-row .osq-loc-btn-placeholder[data-v-a69da2c0] { display: none;
}
}

/* ── Opportunity Score ── */
.osq-score-list[data-v-a69da2c0] {
  display: flex;
  flex-direction: column;
  border: 1px solid #e5e7eb;
  border-radius: 0.5rem;
  overflow: hidden;
}
.osq-score-item[data-v-a69da2c0] {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid #f3f4f6;
  transition: background 0.15s;
}
.osq-score-item[data-v-a69da2c0]:last-child { border-bottom: none;
}
.osq-score-item[data-v-a69da2c0]:hover { background: #f9fafb;
}
.osq-score-item-left[data-v-a69da2c0] {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.osq-score-item-label[data-v-a69da2c0] {
  font-size: 0.875rem;
  color: #111827;
  line-height: 1.45;
}
.osq-score-item-question[data-v-a69da2c0] {
  font-size: 0.8rem;
  color: #da2128;
  line-height: 1.4;
}
.osq-score-item-right[data-v-a69da2c0] {
  flex-shrink: 0;
}
.osq-score-radios[data-v-a69da2c0] {
  display: flex;
  gap: 0.375rem;
}
.osq-score-radio[data-v-a69da2c0] {
  display: inline-flex;
  align-items: center;
  padding: 0.3rem 1rem;
  border: 1.5px solid #e5e7eb;
  border-radius: 9999px;
  cursor: pointer;
  font-size: 0.8125rem;
  font-weight: 500;
  color: #6b7280;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.osq-score-radio[data-v-a69da2c0]:hover { border-color: #9ca3af; color: #374151;
}
.osq-score-radio--yes[data-v-a69da2c0] {
  border-color: #16a34a;
  background: #f0fdf4;
  color: #15803d;
}
.osq-score-radio--no[data-v-a69da2c0] {
  border-color: #dc2626;
  background: #fff1f2;
  color: #b91c1c;
}
.osq-score-radio-input[data-v-a69da2c0] { display: none;
}
.osq-score-footer[data-v-a69da2c0] {
  margin-top: 1rem;
  padding-top: 0.75rem;
}
.osq-score-result-row[data-v-a69da2c0] {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.75rem;
}
.osq-score-result-label[data-v-a69da2c0] {
  font-size: 0.875rem;
  font-weight: 600;
  color: #374151;
  text-align: right;
}
.osq-score-result-value[data-v-a69da2c0] {
  min-width: 90px;
  padding: 0.375rem 0.75rem;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
  border-radius: 0.375rem;
  font-size: 1rem;
  font-weight: 700;
  color: #15803d;
  text-align: right;
}
@media (max-width: 640px) {
.osq-score-item[data-v-a69da2c0] { flex-direction: column; gap: 0.5rem;
}
.osq-score-radios[data-v-a69da2c0] { justify-content: flex-start;
}
}

/* ── Win Probability ── */
.osq-wp-groups[data-v-a69da2c0] {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
.osq-wp-group[data-v-a69da2c0] {
  border: 1px solid #e5e7eb;
  border-radius: 0.5rem;
  overflow: hidden;
}
.osq-wp-group-header[data-v-a69da2c0] {
  padding: 0.5rem 0.875rem;
  background: #f3f4f6;
  font-size: 0.8rem;
  font-weight: 700;
  color: #374151;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-bottom: 1px solid #e5e7eb;
}
/* Sub-hint appended to the 4 Win-Probability group headers ("Select the one
   that best applies"). Softer weight and colour so the primary header text
   stays dominant. Only added to the v-for groups — the Opportunity Score
   sub-section reuses the same .osq-wp-group-header class without the hint. */
.osq-wp-group-hint[data-v-a69da2c0] {
  margin-left: 6px;
  font-weight: 500;
  font-size: 0.72rem;
  text-transform: none;
  letter-spacing: 0;
  color: #6b7280;
}

/* Single-select row cards for the four Win Probability sub-boxes. Whole
   row is clickable; selected state shows a light-green wash, a solid green
   4px left border, and flips the right-side pill from "Select…" to
   "✓ Selected". Radio-group semantics are wired via ARIA on the container
   and each row (see the template). */
.osq-wp-row-card[data-v-a69da2c0] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.55rem 0.875rem 0.55rem 0.75rem;
  border-bottom: 1px solid #f3f4f6;
  border-left: 4px solid transparent;
  cursor: pointer;
  transition: background-color 120ms ease, border-color 120ms ease;
}
.osq-wp-row-card[data-v-a69da2c0]:last-child { border-bottom: none;
}
.osq-wp-row-card[data-v-a69da2c0]:hover:not(.osq-wp-row-card--selected) {
  background: #f9fafb;
}
.osq-wp-row-card[data-v-a69da2c0]:focus-visible {
  outline: none;
  box-shadow: inset 0 0 0 2px #86efac;
}
.osq-wp-row-card--selected[data-v-a69da2c0] {
  background: #f0fdf4;
  border-left-color: #22c55e;
}
.osq-wp-row-card-label[data-v-a69da2c0] {
  font-size: 0.85rem;
  color: #1a1d35;
  line-height: 1.35;
  flex: 1 1 auto;
  min-width: 0;
}

/* Right-side pill. Width targets the space previously occupied by the
   Yes+No pair combined so the row alignment matches the Opportunity Score
   section above (~120px). */
.osq-wp-select-btn[data-v-a69da2c0] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-width: 120px;
  padding: 5px 12px;
  border: 1px solid #d1d5e8;
  border-radius: 999px;
  background: #fff;
  font-size: 0.75rem;
  font-weight: 600;
  color: #4e5a82;
  white-space: nowrap;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  transition: background-color 120ms ease, border-color 120ms ease, color 120ms ease;
}
.osq-wp-row-card:hover:not(.osq-wp-row-card--selected) .osq-wp-select-btn[data-v-a69da2c0] {
  border-color: #86efac;
  color: #16a34a;
}
.osq-wp-select-btn--selected[data-v-a69da2c0] {
  background: #22c55e;
  border-color: #16a34a;
  color: #fff;
}
.osq-score-result-value--neutral[data-v-a69da2c0] {
  background: #f9fafb;
  border-color: #e5e7eb;
  color: #374151;
}
.osq-wp-sub-result[data-v-a69da2c0] {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 0.75rem;
  padding: 0.5rem 1rem 0.75rem;
  border-top: 1px solid #f3f4f6;
}

/* ── Potential Competitors inner box (Win Strategy section) ── */
.osq-potential-competitors[data-v-a69da2c0] {
  border: 1px solid #e5e7eb;
  border-radius: 0.5rem;
  overflow: hidden;
  background: #fff;
}
.osq-potential-competitors .osq-wp-group-header[data-v-a69da2c0] {
  padding: 0.5rem 0.875rem;
}
/* Multiselect on the left, conditional "Others" free-text on the right —
   two-column grid on desktop, stacks on narrow screens. When "Others"
   isn't picked the second cell is empty and the multiselect stays in
   col 1 at half width (matches other 2-column layouts in this tab). */
.osq-comp-grid[data-v-a69da2c0] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
  padding: 0.875rem;
  align-items: start;
}
@media (max-width: 560px) {
.osq-comp-grid[data-v-a69da2c0] { grid-template-columns: 1fr;
}
}
/* Brand-red label on the "Others" free-text so users can visually
   distinguish the free-text field from the parent multiselect at a
   glance. `:deep` pierces the scoped-style boundary into BaseInput's
   internal `.bp-label`. */
.osq-comp-other[data-v-a69da2c0] .bp-label {
  color: #da2128;
}

.ds-ois-wrap[data-v-db71c5d0] {
  display: flex;
  flex-direction: column;
  gap: 24px;
  padding: 20px 0 8px;
}

/* Section header colour overrides */
.ds-ois-section--red .ds-section-header[data-v-db71c5d0] { background: #da2128;
}
.ds-section--dark    .ds-section-header[data-v-db71c5d0] { background: #0f172a;
}

/* Legal Entity & Financial Parameters — 2-column grid */
.ds-ois-lf-grid[data-v-db71c5d0] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 20px;
  align-items: start;
}
@media (max-width: 640px) {
.ds-ois-lf-grid[data-v-db71c5d0] { grid-template-columns: 1fr;
}
}

/* Read-only OBI field display */
.ds-ois-readonly-field[data-v-db71c5d0] {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.ds-ois-readonly-label[data-v-db71c5d0] {
  font-size: 12px;
  font-weight: 600;
  color: #374151;
}
.ds-ois-readonly-value[data-v-db71c5d0] {
  display: block;
  height: 36px;
  line-height: 36px;
  padding: 0 10px;
  background: #f0f1f5;
  border: 1px solid #e4e7f0;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 600;
  color: #4e5a82;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Currency-code prefix for the read-only Est. Project revenue (base) / USD
   informative rows. Bold, dark navy, followed by a small gap before the
   number. Sits on the same line as the value because the parent
   .ds-ois-readonly-value is `line-height: 36px` — inline children share
   that line box automatically. */
.ds-ois-currency-prefix[data-v-db71c5d0] {
  font-weight: 700;
  color: #1a1d35;
  margin-right: 6px;
}

/* Description */
.ds-ois-desc[data-v-db71c5d0] {
  font-size: 13.5px;
  font-weight: 700;
  color: #1a1d35;
  line-height: 1.5;
  margin-bottom: 16px;
}

/* Table wrapper */
.ds-ois-table-wrap[data-v-db71c5d0] { overflow-x: auto;
}

/* Table */
.ds-ois-table[data-v-db71c5d0] {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
}

/* Header */
.ds-ois-th[data-v-db71c5d0] {
  padding: 8px 10px;
  font-size: 11.5px;
  font-weight: 600;
  color: #6b7280;
  text-align: left;
  border-bottom: 2px solid #e8eaf2;
  white-space: nowrap;
  background: #fafbfc;
}
.ds-ois-th--role[data-v-db71c5d0]  { width: 160px;
}
.ds-ois-th--name[data-v-db71c5d0]  { min-width: 200px;
}
.ds-ois-th--hours[data-v-db71c5d0] { width: 130px;
}
.ds-ois-th--date[data-v-db71c5d0]  { width: 180px;
}
.ds-ois-th--del[data-v-db71c5d0]   { width: 48px;
}

/* Rows */
.ds-ois-row:not(:last-child) .ds-ois-td[data-v-db71c5d0] { border-bottom: 1px solid #f0f2f8;
}

/* Cells */
.ds-ois-td[data-v-db71c5d0] { padding: 6px 10px; vertical-align: middle;
}
.ds-ois-td--role[data-v-db71c5d0] { padding-left: 10px;
}
.ds-ois-td--del[data-v-db71c5d0]  { text-align: center;
}

/* Role label */
.ds-ois-role-label[data-v-db71c5d0] {
  font-size: 12.5px;
  font-weight: 600;
  color: #1a1d35;
  white-space: nowrap;
}

/* Date field wrapper */
.ds-ois-date-field[data-v-db71c5d0] { display: flex; flex-direction: column; gap: 5px;
}
.ds-ois-date-label[data-v-db71c5d0] { font-size: 12px; font-weight: 600; color: #374151;
}

/* Date input */
.ds-ois-date-input[data-v-db71c5d0] {
  width: 100%;
  height: 36px;
  padding: 0 10px;
  border: 1px solid #d1d5e8;
  border-radius: 6px;
  font-size: 13px;
  color: #1a1d35;
  background: #fff;
  outline: none;
  box-sizing: border-box;
  transition: border-color 0.15s;
  font-family: inherit;
}
.ds-ois-date-input[data-v-db71c5d0]:focus {
  border-color: #2563eb;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.12);
}
/* Inline error for the "end date must be after start date" check. Shown as a
   small red helper below the end-date input while the range is invalid. Same
   colour as the app's `.bp-field-error`. */
.ds-ois-date-error[data-v-db71c5d0] {
  font-size: 11px;
  color: #b91c1c;
  line-height: 1.35;
}

/* Delete button */
.ds-ois-delete-btn[data-v-db71c5d0] {
  background: transparent;
  border: 1px solid #fca5a5;
  border-radius: 6px;
  color: #dc2626;
  cursor: pointer;
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}
.ds-ois-delete-btn[data-v-db71c5d0]:hover:not(:disabled) { background: #fef2f2;
}
.ds-ois-delete-btn[data-v-db71c5d0]:disabled { opacity: 0.35; cursor: not-allowed;
}

/* Add row */
.ds-ois-add-row[data-v-db71c5d0] { margin-top: 12px;
}
.ds-ois-empty[data-v-db71c5d0] {
  padding: 24px 12px;
  text-align: center;
  font-size: 13px;
  color: #9098b0;
  background: #f5f6fb;
  border-radius: 8px;
}

/* ── Practice Split ── */
.ds-split-loading[data-v-db71c5d0] {
  font-size: 12px;
  color: #9098b0;
  padding: 16px 0;
  text-align: center;
}
.ds-split-none[data-v-db71c5d0] {
  font-size: 13px;
  color: #9098b0;
  padding: 20px 0 8px;
  font-style: italic;
}
.ds-split-grid[data-v-db71c5d0] {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.ds-practice-card[data-v-db71c5d0] {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 20px 10px 14px;
  border: 2px solid #e4e7f0;
  border-radius: 12px;
  background: #f8f9fc;
  text-align: center;
  font-family: inherit;
  cursor: default;
}
.ds-practice-card--inactive[data-v-db71c5d0] { opacity: 0.55;
}
.ds-practice-card--on[data-v-db71c5d0] { border-color: #f5c6c6; background: #fff8f8;
}
.ds-practice-card--clickable[data-v-db71c5d0] { cursor: pointer; -webkit-user-select: none; -moz-user-select: none; user-select: none;
}
.ds-practice-card--clickable[data-v-db71c5d0]:hover { border-color: #f5c6c6;
}
.ds-practice-card--clickable.ds-practice-card--inactive[data-v-db71c5d0]:hover { opacity: 0.8;
}
.ds-practice-check[data-v-db71c5d0] {
  position: absolute;
  top: 9px; right: 9px;
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 2px solid #d1d5e8;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.ds-practice-card--on .ds-practice-check[data-v-db71c5d0] { border-color: #da2128; background: #da2128;
}
.ds-practice-icon[data-v-db71c5d0] {
  width: 52px; height: 52px;
  border-radius: 14px;
  background: #e9eaf2;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #6b7db8;
}
.ds-practice-card--on .ds-practice-icon[data-v-db71c5d0] { background: #fee2e2; color: #da2128;
}
.ds-practice-code[data-v-db71c5d0] { font-size: 13px; font-weight: 800; color: #4e5a82; letter-spacing: 0.4px; margin-top: 2px;
}
.ds-practice-card--on .ds-practice-code[data-v-db71c5d0] { color: #da2128;
}
.ds-practice-name[data-v-db71c5d0] { font-size: 10.5px; color: #9098b0; line-height: 1.35;
}
.ds-practice-card--on .ds-practice-name[data-v-db71c5d0] { color: #b05560;
}

/* Wrapper around the "Split %" label + numeric field inside each selected
   practice card. Column so the label stacks above the input row. */
.ds-split-field[data-v-db71c5d0] {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 8px;
  width: 100%;
}
.ds-split-label[data-v-db71c5d0] {
  font-size: 11.5px;
  font-weight: 600;
  color: #4e5a82;
  align-self: flex-start;
}
.ds-split-input-row[data-v-db71c5d0] {
  display: flex;
  align-items: center;
  gap: 5px;
  width: 100%;
}
.ds-split-input[data-v-db71c5d0] {
  flex: 1;
  min-width: 0;
  height: 34px;
  border: 1.5px solid #d1d5e8;
  border-radius: 6px;
  font-size: 14px;
  font-weight: 700;
  color: #1a1d35;
  text-align: center;
  background: #fff;
  outline: none;
  box-sizing: border-box;
  font-family: inherit;
  transition: border-color 0.15s;
}
.ds-split-input[data-v-db71c5d0]:focus { border-color: #da2128; box-shadow: 0 0 0 2px rgba(218, 33, 40, 0.1);
}
.ds-split-pct[data-v-db71c5d0] { font-size: 13px; font-weight: 600; color: #6b7280; flex-shrink: 0;
}
.ds-split-footer[data-v-db71c5d0] {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1.5px dashed #e4e7f0;
}
.ds-split-total-row[data-v-db71c5d0] {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
}
.ds-split-total-label[data-v-db71c5d0] { font-size: 13px; font-weight: 600; color: #4e5a82;
}
.ds-split-total-input-wrap[data-v-db71c5d0] { display: flex; align-items: center; gap: 5px;
}
.ds-split-input--total[data-v-db71c5d0] {
  width: 72px;
  background: #f0f1f5;
  cursor: not-allowed;
  font-weight: 800;
  color: #1a1d35;
  border-color: #e4e7f0;
}
.ds-split-input--total[data-v-db71c5d0]:focus { border-color: #e4e7f0; box-shadow: none;
}
.ds-split-warning[data-v-db71c5d0] {
  margin-top: 8px;
  text-align: right;
  font-size: 12px;
  font-weight: 600;
  color: #dc2626;
}

/* ── GO / NO-GO DECISION ── */
.ds-gonogo-meta-row[data-v-db71c5d0] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  align-items: start;
  margin-bottom: 24px;
}
.ds-gonogo-grid[data-v-db71c5d0] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.ds-gonogo-btn[data-v-db71c5d0] {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 28px 20px 24px;
  border-radius: 18px;
  cursor: pointer;
  border: 2px solid transparent;
  transition: all 0.22s ease;
  font-family: inherit;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  outline: none;
}

/* GO — default state */
.ds-gonogo-btn--go[data-v-db71c5d0] {
  background: linear-gradient(145deg, #f0fdf4, #dcfce7);
  border-color: #86efac;
  color: #15803d;
}
.ds-gonogo-btn--go[data-v-db71c5d0]:hover:not(.ds-gonogo-btn--active) {
  background: linear-gradient(145deg, #dcfce7, #bbf7d0);
  border-color: #4ade80;
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(22, 163, 74, 0.18);
}
/* GO — active state */
.ds-gonogo-btn--go.ds-gonogo-btn--active[data-v-db71c5d0] {
  background: linear-gradient(145deg, #22c55e, #16a34a, #15803d);
  border-color: #166534;
  color: #fff;
  box-shadow: 0 6px 28px rgba(22, 163, 74, 0.45), 0 0 0 4px rgba(22, 163, 74, 0.18);
  transform: translateY(-1px);
}

/* NO GO — default state */
.ds-gonogo-btn--nogo[data-v-db71c5d0] {
  background: linear-gradient(145deg, #fff1f2, #ffe4e6);
  border-color: #fca5a5;
  color: #b91c1c;
}
.ds-gonogo-btn--nogo[data-v-db71c5d0]:hover:not(.ds-gonogo-btn--active) {
  background: linear-gradient(145deg, #ffe4e6, #fecdd3);
  border-color: #f87171;
  transform: translateY(-2px);
  box-shadow: 0 4px 16px rgba(220, 38, 38, 0.18);
}
/* NO GO — active state */
.ds-gonogo-btn--nogo.ds-gonogo-btn--active[data-v-db71c5d0] {
  background: linear-gradient(145deg, #f87171, #dc2626, #b91c1c);
  border-color: #991b1b;
  color: #fff;
  box-shadow: 0 6px 28px rgba(220, 38, 38, 0.45), 0 0 0 4px rgba(220, 38, 38, 0.18);
  transform: translateY(-1px);
}

/* Icon circle */
.ds-gonogo-icon[data-v-db71c5d0] {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.22s ease;
  flex-shrink: 0;
}
.ds-gonogo-btn--go .ds-gonogo-icon[data-v-db71c5d0] {
  background: rgba(22, 163, 74, 0.12);
  color: #16a34a;
}
.ds-gonogo-btn--go.ds-gonogo-btn--active .ds-gonogo-icon[data-v-db71c5d0] {
  background: rgba(255, 255, 255, 0.22);
  color: #fff;
}
.ds-gonogo-btn--nogo .ds-gonogo-icon[data-v-db71c5d0] {
  background: rgba(220, 38, 38, 0.12);
  color: #dc2626;
}
.ds-gonogo-btn--nogo.ds-gonogo-btn--active .ds-gonogo-icon[data-v-db71c5d0] {
  background: rgba(255, 255, 255, 0.22);
  color: #fff;
}
.ds-gonogo-label[data-v-db71c5d0] {
  font-size: 20px;
  font-weight: 900;
  letter-spacing: 2px;
  line-height: 1;
}
.ds-gonogo-sublabel[data-v-db71c5d0] {
  font-size: 11.5px;
  font-weight: 500;
  opacity: 0.72;
  letter-spacing: 0.2px;
}

/* Notes textarea */
.ds-gonogo-notes[data-v-db71c5d0] { margin-top: 20px;
}

/* Transition for notes slide-in */
.ds-fade-enter-active[data-v-db71c5d0] { transition: opacity 0.22s ease, transform 0.22s ease;
}
.ds-fade-leave-active[data-v-db71c5d0] { transition: opacity 0.16s ease, transform 0.16s ease;
}
.ds-fade-enter-from[data-v-db71c5d0]  { opacity: 0; transform: translateY(-8px);
}
.ds-fade-leave-to[data-v-db71c5d0]    { opacity: 0; transform: translateY(-4px);
}
@media (max-width: 640px) {
.ds-split-grid[data-v-db71c5d0]         { grid-template-columns: repeat(2, 1fr);
}
.ds-gonogo-meta-row[data-v-db71c5d0]    { grid-template-columns: 1fr;
}
.ds-gonogo-btn[data-v-db71c5d0]         { padding: 22px 16px 18px;
}
.ds-gonogo-icon[data-v-db71c5d0]        { width: 48px; height: 48px;
}
.ds-gonogo-label[data-v-db71c5d0]       { font-size: 17px;
}
}

.tee-info-wrap[data-v-5a03bc76] {
  position: relative;
  display: inline-flex;
  margin-left: auto;
  vertical-align: middle;
  cursor: help;
  outline: none;
}
.tee-info-icn[data-v-5a03bc76]                        { color: #da2128;
}
.tee-info-wrap:hover      .tee-info-icn[data-v-5a03bc76],
.tee-info-wrap:focus-visible .tee-info-icn[data-v-5a03bc76] { color: #a3161c;
}

.tee-info-tip-portal {
  position: fixed;
  background: #1a1d35;
  color: #fff;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: 11.5px;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0;
  text-transform: none;
  white-space: pre-line;
  min-width: 200px;
  max-width: 300px;
  width: -moz-max-content;
  width: max-content;
  text-align: left;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.18);
  pointer-events: none;
  z-index: 10000;
}
.tee-info-tip-arrow {
  position: absolute;
  bottom: 100%;
  right: 6px;  /* aligned near icon centre (icon 12px wide, arrow 10px total) */
  width: 0;
  height: 0;
  border: 5px solid transparent;
  border-bottom-color: #1a1d35;
}
/* When the balloon opens rightward (icon near viewport left edge), the arrow
   flips to the LEFT side of the balloon so it still visually connects to the
   icon underneath. */
.tee-info-tip-portal--right-anchor .tee-info-tip-arrow {
  right: auto;
  left: 6px;
}

.tee-wrap[data-v-4c8b9248] { display: flex; flex-direction: column; gap: 0;
}

/* Grid section — flush body, toolbar carries the padding */
.ds-tee-grid-section[data-v-4c8b9248] .ds-section-body { padding: 20px 18px;
}

/* ── KPI panel ── */
.tee-kpi-body[data-v-4c8b9248] { display: flex; gap: 10px; flex-wrap: wrap;
}
.kpi-card[data-v-4c8b9248] { background: #f8f9fc; border: 1px solid #e4e7f0; border-radius: 10px; padding: 10px 14px; min-width: 110px;
}
.kpi-lbl[data-v-4c8b9248] { font-size: 10px; font-weight: 700; color: #9098b0; text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 4px; display: flex; align-items: center; gap: 6px;
}
.kpi-val[data-v-4c8b9248] { font-size: 16px; font-weight: 800; color: #1a1d35; line-height: 1.1;
}
/* Currency-symbol prefix on the Calc-Pricing / Calc-Blended KPI values.
   Slightly smaller + muted colour so the numeric amount stays visually
   dominant, with a small right margin as breathing room. */
.kpi-val .kpi-currency[data-v-4c8b9248] {
  font-size: 13px;
  font-weight: 700;
  color: #4e5a82;
  margin-right: 4px;
}
.kpi-val--date[data-v-4c8b9248] { font-size: 13px; font-weight: 600; color: #1a1d35;
}
.kpi-val--blue[data-v-4c8b9248] { color: #2563eb;
}
.kpi-val--pending[data-v-4c8b9248] { color: #c8cde0;
}
.kpi-card--calc[data-v-4c8b9248] { border-style: dashed;
}
/* Blended-rate status backgrounds — added alongside kpi-card--calc so they
   inherit the dashed border but override the default grey fill. */
.kpi-card--status-ok[data-v-4c8b9248]   { background: #dcfce7; border-color: #86efac;
}
.kpi-card--status-warn[data-v-4c8b9248] { background: #fef3c7; border-color: #fde68a;
}
.kpi-card--status-ok   .kpi-val--status[data-v-4c8b9248] { color: #166534;
}
.kpi-card--status-warn .kpi-val--status[data-v-4c8b9248] { color: #92400e;
}
.kpi-val--status[data-v-4c8b9248] { font-size: 13px; font-weight: 700;
}
/* Info icon + hover-balloon tooltip live in the shared InfoTooltip.vue
   component — it teleports the balloon to <body> so ancestor overflow:hidden
   in the TEE Summary strip can't clip it. */
.tee-info-wrap:hover .tee-info-tip[data-v-4c8b9248],
.tee-info-wrap:focus-within .tee-info-tip[data-v-4c8b9248] { visibility: visible; opacity: 1;
}

/* ── Toolbar ── */
.tee-toolbar[data-v-4c8b9248] { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; margin-bottom: 18px; flex-wrap: wrap;
}
.tee-toolbar-left[data-v-4c8b9248]  { flex: 1; min-width: 200px; max-width: 300px;
}
.tee-toolbar-right[data-v-4c8b9248] { display: flex; align-items: center; gap: 8px; flex-shrink: 0;
}
.tee-pm-select[data-v-4c8b9248] { width: 100%;
}
@media (max-width: 640px) {
.tee-toolbar-left[data-v-4c8b9248]  { max-width: 100%; width: 100%;
}
.tee-toolbar-right[data-v-4c8b9248] { width: 100%; justify-content: flex-end;
}
}
.tee-btn-primary[data-v-4c8b9248] { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; background: #191a37; color: #fff; border: none; border-radius: 8px; font-size: 12px; font-weight: 600; cursor: pointer; font-family: inherit; white-space: nowrap;
}
.tee-btn-primary[data-v-4c8b9248]:hover { background: #23254a;
}
.tee-btn-ghost[data-v-4c8b9248] { display: inline-flex; align-items: center; gap: 5px; padding: 6px 12px; background: #fff; color: #4e5a82; border: 1px solid #d1d5e8; border-radius: 7px; font-size: 11.5px; font-weight: 600; cursor: pointer; font-family: inherit; white-space: nowrap;
}
.tee-btn-ghost[data-v-4c8b9248]:hover { border-color: #da2128; color: #da2128;
}

/* ── Section banners ── */
.tee-banners[data-v-4c8b9248] { display: flex;
}
.tee-banner-res[data-v-4c8b9248] { flex-shrink: 0; padding: 5px 12px; background: #191a37; border-radius: 8px 0 0 0; display: flex; align-items: center; gap: 7px;
}
.tee-banner-handle-spacer[data-v-4c8b9248] { width: 8px; background: #b8bdd0; flex-shrink: 0;
}
.tee-banner-wee[data-v-4c8b9248] { flex: 1; padding: 5px 12px; background: #0f4c75; border-radius: 0 8px 0 0; display: flex; align-items: center; gap: 7px; min-width: 0;
}
.banner-txt[data-v-4c8b9248] { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.7px; color: rgba(255,255,255,0.85); white-space: nowrap;
}
.banner-sub[data-v-4c8b9248] { font-size: 10px; color: rgba(255,255,255,0.4); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ── Grid outer ── */
.tee-grid-outer[data-v-4c8b9248] { display: flex; border: 1px solid #d1d5e8; border-top: none; overflow: hidden;
}

/* ── Frozen panel ── */
.tee-frozen-panel[data-v-4c8b9248] { flex-shrink: 0; overflow-x: auto; overflow-y: hidden; background: #fff; position: relative; z-index: 2;
}
.tee-frozen-panel[data-v-4c8b9248]::-webkit-scrollbar { height: 7px;
}
.tee-frozen-panel[data-v-4c8b9248]::-webkit-scrollbar-track { background: #f0f1f5;
}
.tee-frozen-panel[data-v-4c8b9248]::-webkit-scrollbar-thumb { background: #c8cde0; border-radius: 4px;
}

/* ── Resize handle ── */
.tee-resize-handle[data-v-4c8b9248] { flex-shrink: 0; width: 8px; background: #b8bdd0; cursor: col-resize; position: relative; z-index: 3; display: flex; align-items: center; justify-content: center; transition: background 0.15s; -webkit-user-select: none; -moz-user-select: none; user-select: none;
}
.tee-resize-handle[data-v-4c8b9248]:hover { background: #6b7db8;
}
.tee-resize-handle.tee-resizing[data-v-4c8b9248] { background: #da2128 !important;
}
.tee-resize-grip[data-v-4c8b9248] { display: flex; flex-direction: column; gap: 3px; pointer-events: none;
}
.tee-resize-grip span[data-v-4c8b9248] { display: block; width: 2px; height: 2px; border-radius: 50%; background: rgba(255,255,255,0.8);
}
.tee-resize-tip[data-v-4c8b9248] { position: absolute; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%); background: #191a37; color: #fff; white-space: nowrap; padding: 5px 9px; border-radius: 5px; pointer-events: none; opacity: 0; transition: opacity 0.15s; text-align: center;
}
.tee-resize-tip-w[data-v-4c8b9248] { font-size: 11px; font-weight: 700;
}
.tee-resize-tip-h[data-v-4c8b9248] { font-size: 10px; font-weight: 500; color: rgba(255,255,255,0.75); margin-top: 2px;
}
.tee-resize-handle:hover .tee-resize-tip[data-v-4c8b9248],
.tee-resize-handle.tee-resizing .tee-resize-tip[data-v-4c8b9248] { opacity: 1;
}

/* Helper note above the two-panel grid — explains the drag/reset UX so
   users notice the resize behavior. Info icon + soft-blue pill; sits
   between the toolbar and the ROLE LIST / WEEKLY EFFORT banners. */
.tee-resize-note[data-v-4c8b9248] {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  margin: 0 0 8px;
  padding: 8px 12px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 6px;
  color: #1e3a8a;
  font-size: 12.5px;
  line-height: 1.45;
}
.tee-resize-note svg[data-v-4c8b9248] { flex-shrink: 0; margin-top: 1px;
}
.tee-resize-note-body[data-v-4c8b9248] { min-width: 0;
}
.tee-resize-note-body strong[data-v-4c8b9248] { display: inline; font-weight: 700; margin-right: 4px;
}

/* ── Scroll panel ── */
.tee-scroll[data-v-4c8b9248] { flex: 1; overflow-x: auto; overflow-y: hidden; min-width: 0;
}
.tee-scroll[data-v-4c8b9248]::-webkit-scrollbar { height: 7px;
}
.tee-scroll[data-v-4c8b9248]::-webkit-scrollbar-track { background: #f0f1f5;
}
.tee-scroll[data-v-4c8b9248]::-webkit-scrollbar-thumb { background: #c8cde0; border-radius: 4px;
}

/* ── Tables ── */
.tee-tbl[data-v-4c8b9248] { border-collapse: separate; border-spacing: 0; table-layout: fixed;
}

/* Frozen header */
.tee-fh[data-v-4c8b9248] { background: #f5f6fa; font-size: 10.5px; font-weight: 700; color: #4e5a82; text-align: left; padding: 4px 7px; white-space: normal; line-height: 1.25; word-break: break-word; border-right: 1px solid #e4e7f0; border-bottom: 1px solid #d1d5e8; height: 36px; vertical-align: middle;
}
.tee-fh.center[data-v-4c8b9248] { text-align: center;
}
.tee-fh.right[data-v-4c8b9248]  { text-align: right;
}

/* Frozen placeholder rows */
.fp-r1 th[data-v-4c8b9248] { height: 26px; background: #f0f1f8; border-bottom: 1px solid #d1d5e8;
}
.fp-r3 td[data-v-4c8b9248] { height: 22px; background: #f8f9fc; border-bottom: 2px solid #c8cde0;
}

/* Frozen data cells */
.tee-fd[data-v-4c8b9248] { background: #fff; font-size: 12.5px; color: #1a1d35; border-right: 1px solid #e8eaf2; border-bottom: 1px solid #f0f2f8; height: 40px; padding: 0 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; vertical-align: middle;
}
.tee-fd.center[data-v-4c8b9248] { text-align: center;
}
.tee-fd.right[data-v-4c8b9248]  { text-align: right;
}

/* Inline cell inputs */
.tee-cell-inp[data-v-4c8b9248] { border: none; background: transparent; font-size: 12.5px; font-weight: 600; color: #1a1d35; width: 100%; outline: none; font-family: inherit;
}
.tee-cell-inp[data-v-4c8b9248]::-moz-placeholder { color: #c8cde0; font-weight: 400;
}
.tee-cell-inp[data-v-4c8b9248]::placeholder { color: #c8cde0; font-weight: 400;
}
.tee-cell-inp[data-v-4c8b9248]:focus { background: #fffbeb;
}
.tee-cell-ro[data-v-4c8b9248] { cursor: default; color: #8a95b0 !important; pointer-events: none;
}
.tee-cell-ro[data-v-4c8b9248]:focus { background: transparent;
}
.tee-cell-select[data-v-4c8b9248] { border: none; background: transparent; font-size: 11px; font-weight: 600; width: 100%; outline: none; font-family: inherit; color: #1a1d35; cursor: pointer;
}

/* BaseSelect inside frozen table cells */
.tee-fd--bs[data-v-4c8b9248] { padding: 0 !important; overflow: visible;
}
[data-v-4c8b9248] .tee-cell-bs { width: 100%;
}
[data-v-4c8b9248] .tee-cell-bs .bp-form-group { margin: 0;
}
[data-v-4c8b9248] .tee-cell-bs .bp-label { display: none;
}
[data-v-4c8b9248] .tee-cell-bs .bp-select.p-select { border: none; border-radius: 0; background: transparent; box-shadow: none !important;
}
[data-v-4c8b9248] .tee-cell-bs .bp-select.p-select:hover:not(.p-disabled) { background: #fffbeb;
}
[data-v-4c8b9248] .tee-cell-bs .bp-select.p-select.p-focus { border-color: transparent; box-shadow: none !important;
}
[data-v-4c8b9248] .tee-cell-bs .bp-select .p-select-label { font-size: 11px; font-weight: 600; color: #1a1d35; padding: 9px 2px; line-height: 1;
}
[data-v-4c8b9248] .tee-cell-bs .bp-select .p-select-label.p-placeholder { font-weight: 400; color: #c8cde0;
}
[data-v-4c8b9248] .tee-cell-bs .bp-select .p-select-dropdown { display: none;
}

/* BaseSearchSelect (Preferred Resource) — strip visible border / background so
   it visually matches the borderless BaseSelects and native inputs in this
   row. Keep the built-in search icon and clear (×) icon fully visible — they
   sit as absolute-positioned siblings of the input, so hiding the input's own
   border doesn't remove them. Compact padding + smaller font align with the
   other row cells. */
[data-v-4c8b9248] .tee-cell-bs .bp-search-single .p-autocomplete-input {
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none !important;
  font-size: 11px;
  font-weight: 600;
  color: #1a1d35;
  /* Right padding keeps ~26px of clearance for the icon/× button on that side. */
  padding: 9px 26px 9px 4px;
  line-height: 1;
}
[data-v-4c8b9248] .tee-cell-bs .bp-search-single .p-autocomplete-input:hover { background: #fffbeb;
}
[data-v-4c8b9248] .tee-cell-bs .bp-search-single .p-autocomplete-input:focus { background: #fffbeb; box-shadow: none;
}
[data-v-4c8b9248] .tee-cell-bs .bp-search-single .p-autocomplete-input::-moz-placeholder {
  color: #c8cde0;
  font-weight: 400;
}
[data-v-4c8b9248] .tee-cell-bs .bp-search-single .p-autocomplete-input::placeholder {
  color: #c8cde0;
  font-weight: 400;
}
/* Icons sit at right:8-10px on top of the input — shift them a hair right so
   they sit flush against the cell edge like the placeholder icons do on
   sibling BaseSelects. */
[data-v-4c8b9248] .tee-cell-bs .bp-search-single-icon  { right: 4px;
}
[data-v-4c8b9248] .tee-cell-bs .bp-search-single-clear { right: 2px;
}

/* Row hover */
.tee-row:nth-child(even) .tee-fd[data-v-4c8b9248] { background: #fafbfd;
}
.tee-row:hover .tee-fd[data-v-4c8b9248], .tee-row.hovered .tee-fd[data-v-4c8b9248] { background: #eef2ff !important;
}
.tee-wk-row:hover .tee-wk[data-v-4c8b9248], .tee-wk-row.hovered .tee-wk[data-v-4c8b9248] { background: #f4f6ff !important;
}

/* Delete button toggle */
.row-num[data-v-4c8b9248] { font-size: 11.5px; font-weight: 600; color: #9098b0; display: block;
}
.row-del[data-v-4c8b9248] { display: none; background: transparent; border: none; color: #f87171; cursor: pointer; width: 22px; height: 22px; border-radius: 4px; align-items: center; justify-content: center; font-family: inherit;
}
.row-del[data-v-4c8b9248]:hover { background: #fef2f2; color: #dc2626;
}
.tee-row:hover .row-num[data-v-4c8b9248], .tee-row.hovered .row-num[data-v-4c8b9248] { display: none;
}
.tee-row:hover .row-del[data-v-4c8b9248], .tee-row.hovered .row-del[data-v-4c8b9248] { display: inline-flex;
}

/* Edit button */
.tee-fd--edit-btn[data-v-4c8b9248] { padding: 0 !important; text-align: center; vertical-align: middle;
}
.row-edit[data-v-4c8b9248] {
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; border-radius: 5px;
  background: transparent; border: none; cursor: pointer;
  color: #9098b0; transition: background 0.12s, color 0.12s;
}
.row-edit[data-v-4c8b9248]:hover { background: #eef2ff; color: #4f46e5;
}

/* Rate colours */
.rate-low[data-v-4c8b9248] { color: #da2128 !important; font-weight: 700;
}
.rate-ok[data-v-4c8b9248]  { color: #16a34a !important; font-weight: 700;
}

/* Weekly header cells */
.tee-mh[data-v-4c8b9248] { font-size: 9.5px; font-weight: 700; color: #4e5a82; text-align: center; text-transform: uppercase; letter-spacing: 0.3px; border-right: 1px solid #c8cde0; border-bottom: 1px solid #d1d5e8; background: #f0f1f8; height: 26px; padding: 0 2px; white-space: nowrap; overflow: hidden;
}
.tee-wh[data-v-4c8b9248] { width: 40px; min-width: 40px; max-width: 40px; font-size: 11px; font-weight: 700; color: #1a1d35; text-align: center; background: #f5f6fa; border-right: 1px solid #e8eaf2; border-bottom: 1px solid #d1d5e8; height: 32px; white-space: nowrap; overflow: hidden;
}
.tee-wh.cur[data-v-4c8b9248] { background: #dbeafe; color: #1d4ed8;
}
.tee-dh[data-v-4c8b9248] { width: 40px; min-width: 40px; max-width: 40px; font-size: 9px; font-weight: 500; color: #9098b0; text-align: center; background: #f8f9fc; border-right: 1px solid #e8eaf2; border-bottom: 2px solid #c8cde0; height: 22px; overflow: hidden;
}
.tee-dh.cur[data-v-4c8b9248] { background: #dbeafe; color: #1d4ed8;
}

/* Effort cells */
.tee-wk[data-v-4c8b9248] { width: 40px; min-width: 40px; max-width: 40px; border-right: 1px solid #eaecf4; border-bottom: 1px solid #f0f2f8; text-align: center; height: 40px; padding: 0; vertical-align: middle;
}
.tee-wk.cur[data-v-4c8b9248]  { background: #eff6ff;
}
.tee-wk.past[data-v-4c8b9248] { background: #fafbfd;
}
.tee-eff-inp[data-v-4c8b9248] { width: 100%; height: 100%; border: none; background: transparent; text-align: center; font-size: 12.5px; font-weight: 600; color: #1a1d35; font-family: inherit; cursor: pointer; outline: none; padding: 0 2px;
}
.tee-eff-inp[data-v-4c8b9248]:focus { background: #fffbeb; box-shadow: inset 0 0 0 2px #f59e0b;
}
.tee-eff-inp[data-v-4c8b9248]::-moz-placeholder { color: #d1d5e8; font-weight: 400; font-size: 12px;
}
.tee-eff-inp[data-v-4c8b9248]::placeholder { color: #d1d5e8; font-weight: 400; font-size: 12px;
}

/* Heat-map — text colour only, no background */
.e1 .tee-eff-inp[data-v-4c8b9248] { color: #3b82f6;
}
.e2 .tee-eff-inp[data-v-4c8b9248] { color: #2563eb;
}
.e3 .tee-eff-inp[data-v-4c8b9248] { color: #1d4ed8;
}
.e4 .tee-eff-inp[data-v-4c8b9248] { color: #1e40af;
}
.e5 .tee-eff-inp[data-v-4c8b9248] { color: #1e3a8a;
}
/* Over-cap week (6 or 7 days) — brand-red tinted background so reviewers
   see the heavy allocation at a glance. Value is still capped at 7 by the
   input handler; this styling is a visual heads-up for 6/7. */
.tee-wk.e-over[data-v-4c8b9248]                        { background: #fee2e2 !important;
}
.tee-wk.e-over .tee-eff-inp[data-v-4c8b9248]           { color: #b91c1c;
}
.tee-wk-row:hover .tee-wk.e-over[data-v-4c8b9248],
.tee-wk-row.hovered .tee-wk.e-over[data-v-4c8b9248]    { background: #fecaca !important;
}

/* Totals row */
.tee-totals-row .tee-fd[data-v-4c8b9248] { background: #f0f4fa !important; font-weight: 700; font-size: 12px; border-top: 2px solid #c8cde0;
}
.tee-totals-row .tee-wk[data-v-4c8b9248] { background: #f0f4fa !important; font-size: 11.5px; font-weight: 700; color: #1a1d35; border-top: 2px solid #c8cde0;
}

/* Empty-state row used by both panels — preserves the height of ~3 normal rows
   (3 × 40px) so the grid layout doesn't collapse when there are no resources.
   Brand-red text signals a prerequisite is missing (no resources / no dates),
   matching .tee-target-rate-note and .tee-save-error weight. */
.tee-empty-row .tee-empty-cell[data-v-4c8b9248] {
  background: #fafbfd;
  height: 126px;
  text-align: center;
  vertical-align: middle;
  color: #da2128;
  font-size: 12.5px;
  font-style: italic;
  border-bottom: 1px solid #f0f2f8;
}
/* Scrollable-panel variant — left-aligned with the text pinned to the visible
   left edge via position:sticky, so the message stays in view no matter how
   far the user has scrolled horizontally. */
.tee-empty-row .tee-empty-cell--scroll[data-v-4c8b9248] {
  text-align: left;
  padding: 0;
}
.tee-empty-cell-text[data-v-4c8b9248] {
  display: inline-block;
  position: sticky;
  left: 0;
  padding-left: 14px;
}
.tee-totals-row .tee-wk.cur[data-v-4c8b9248] { background: #dbeafe !important; color: #1d4ed8;
}
.tot-num[data-v-4c8b9248] { font-size: 11.5px; font-weight: 700; color: #1a1d35;
}
.tee-save-error[data-v-4c8b9248] { margin: 8px 0 0; font-size: 12px; color: #da2128; font-weight: 600;
}

/* Target Rate prerequisite note — shown below the Target Rate field in the
   Add Resource popup and beneath the Role List table. Brand-red matches the
   attention weight of the save-error style but is a persistent note, not
   an error state. */
.tee-target-rate-note[data-v-4c8b9248] {
  margin: 6px 0 0;
  font-size: 11.5px;
  line-height: 1.4;
  color: #da2128;
  font-weight: 500;
}
.tee-target-rate-note--under-table[data-v-4c8b9248] {
  margin: 10px 4px 0;
}

/* ── Add Resource Modal ── */

/* Single vertical-scroll column */
.tee-modal-body[data-v-4c8b9248] { display: flex; flex-direction: column; gap: 20px;
}

/* Resource details: 2-column grid */
.tee-modal-form[data-v-4c8b9248] { display: grid; grid-template-columns: 1fr 1fr; -moz-column-gap: 20px; column-gap: 20px; row-gap: 0;
}
.tee-modal-form[data-v-4c8b9248] .bp-form-group { margin-bottom: 10px;
}
.tee-modal-span2[data-v-4c8b9248] { grid-column: 1 / -1;
}

/* Custom prefix input for Target Rate / Proposed Rate in the popup — same
   pattern as the OBI-tab "Est. Project revenue (base)" field. Flex row of
   [symbol, native input] inside a bordered container that mimics `.bp-input`.
   The `--readonly` modifier gives the Target Rate row the muted background
   used elsewhere for read-only display fields. */
.tee-currency-field[data-v-4c8b9248] {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  background: #fff;
  padding: 0 12px;
  transition: border-color 0.15s, box-shadow 0.15s;
  box-sizing: border-box;
  min-height: 38px;
}
.tee-currency-field[data-v-4c8b9248]:focus-within:not(.tee-currency-field--readonly) {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
}
.tee-currency-field--readonly[data-v-4c8b9248] {
  background: #f8f9fc;
}
.tee-currency-prefix[data-v-4c8b9248] {
  color: #4e5a82;
  font-weight: 700;
  font-size: 13.5px;
  white-space: nowrap;
  pointer-events: none;
  flex-shrink: 0;
}
.tee-currency-native[data-v-4c8b9248] {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: transparent;
  padding: 9px 0;
  font-family: inherit;
  font-size: 13.5px;
  color: #1a1d35;
  -moz-appearance: textfield;
}
.tee-currency-native[data-v-4c8b9248]::-webkit-outer-spin-button,
.tee-currency-native[data-v-4c8b9248]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.tee-currency-native[readonly][data-v-4c8b9248] {
  cursor: default;
  color: #1a1d35;
}

/* Weekly effort: full-width at bottom */
.tee-modal-effort[data-v-4c8b9248] { display: flex; flex-direction: column; gap: 8px; background: #f8f9fc; border: 1px solid #e4e7f0; border-radius: 10px; padding: 14px;
}
.tee-modal-effort-hdr[data-v-4c8b9248] { font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.6px; color: #0f4c75; display: flex; align-items: center; gap: 6px; padding-bottom: 10px; border-bottom: 2px solid #d1d5e8;
}
.effort-hdr-weeks[data-v-4c8b9248] { margin-left: auto; font-size: 10px; font-weight: 600; color: #9098b0; text-transform: none; letter-spacing: 0;
}

/* Horizontal scroll for tiles only */
.tee-modal-effort-scroll[data-v-4c8b9248] { overflow-x: auto; overflow-y: visible; display: flex; gap: 10px; padding-bottom: 6px; padding-top: 10px;
}
.tee-modal-effort-scroll[data-v-4c8b9248]::-webkit-scrollbar { height: 6px;
}
.tee-modal-effort-scroll[data-v-4c8b9248]::-webkit-scrollbar-track { background: #eaecf4; border-radius: 4px;
}
.tee-modal-effort-scroll[data-v-4c8b9248]::-webkit-scrollbar-thumb { background: #c8cde0; border-radius: 4px;
}
/* Popup empty state shown when project dates are missing — visual match for
   .tee-empty-cell on the main Role List calendar. Brand-red text matches
   the outer panel's empty state so the same prerequisite signal reads
   consistently in the popup. */
.tee-modal-effort-empty[data-v-4c8b9248] {
  padding: 32px 14px;
  background: #fafbfd;
  border: 1px dashed #dcdfea;
  border-radius: 8px;
  color: #da2128;
  font-size: 12.5px;
  font-style: italic;
  text-align: center;
}
.tee-modal-month[data-v-4c8b9248] { flex-shrink: 0;
}
.tee-modal-month-hdr[data-v-4c8b9248] { font-size: 9px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; color: #6b7db8; padding: 2px 0 5px; border-bottom: 2px solid #d1d5e8; margin-bottom: 5px; white-space: nowrap;
}
.tee-modal-tiles[data-v-4c8b9248] { display: flex; gap: 3px;
}
.tee-week-tile[data-v-4c8b9248] { width: 54px; display: flex; flex-direction: column; align-items: center; border: 1px solid #e4e7f0; border-radius: 6px; background: #fff; overflow: hidden;
}
.tee-week-tile.tile-cur[data-v-4c8b9248] { border-color: #93c5fd; background: #eff6ff;
}
.tee-week-tile.tile-past[data-v-4c8b9248] { background: #fafbfd; opacity: 0.75;
}
.tile-wlbl[data-v-4c8b9248] { font-size: 11px; font-weight: 700; color: #4e5a82; padding: 5px 2px 2px; line-height: 1;
}
.tile-date[data-v-4c8b9248] { font-size: 10px; color: #9098b0; padding-bottom: 4px; line-height: 1;
}
.tile-inp[data-v-4c8b9248] { width: 100%; border: none; border-top: 1px solid #e8eaf2; background: transparent; text-align: center; font-size: 13px; font-weight: 700; color: #1a1d35; font-family: inherit; padding: 6px 2px; outline: none; cursor: pointer;
}
.tee-week-tile.tile-cur .tile-inp[data-v-4c8b9248] { border-top-color: #93c5fd;
}
.tile-inp[data-v-4c8b9248]:focus { background: #fffbeb;
}
.tile-inp[data-v-4c8b9248]::-moz-placeholder { color: #d1d5e8; font-weight: 400; font-size: 11px;
}
.tile-inp[data-v-4c8b9248]::placeholder { color: #d1d5e8; font-weight: 400; font-size: 11px;
}
/* Popup tile — brand-red tint when draft effort exceeds 5 days.
   Mirrors the .tee-wk.e-over styling on the inline row so the popup and
   the row show the "heavy allocation" signal identically. */
.tee-week-tile.tile-over[data-v-4c8b9248]                 { background: #fee2e2;
}
.tee-week-tile.tile-over .tile-inp[data-v-4c8b9248]       { color: #b91c1c;
}

/* Modal footer */
.tee-modal-footer[data-v-4c8b9248] { display: flex; align-items: center; justify-content: space-between; width: 100%; gap: 12px;
}
.tee-modal-footer-total[data-v-4c8b9248] { display: flex; align-items: baseline; gap: 8px;
}
.footer-total-lbl[data-v-4c8b9248] { font-size: 11px; font-weight: 600; color: #9098b0; text-transform: uppercase; letter-spacing: 0.5px;
}
.footer-total-val[data-v-4c8b9248] { font-size: 20px; font-weight: 800; color: #1a1d35;
}
.tee-modal-footer-actions[data-v-4c8b9248] { display: flex; gap: 8px;
}

/* ── Preferred Skills trigger (scoped — reaches component root) ── */
.tee-skill-section[data-v-4c8b9248] { position: relative; display: flex; flex-direction: column; gap: 6px;
}
.tee-skill-label[data-v-4c8b9248]   { font-size: 12px; font-weight: 600; color: #374151; letter-spacing: 0.1px;
}
.tee-skill-tree[data-v-4c8b9248]    { width: 100%;
}
[data-v-4c8b9248] .tee-skill-tree.p-treeselect {
  display: flex; align-items: center; width: 100%; overflow: visible;
  border: 1.5px solid #d1d5e8; border-radius: 10px; background: #fff;
  min-height: 42px; cursor: pointer;
  transition: border-color 0.18s, box-shadow 0.18s;
}
[data-v-4c8b9248] .tee-skill-tree.p-treeselect:hover { border-color: #9098b0;
}
[data-v-4c8b9248] .tee-skill-tree.p-treeselect.p-focus { border-color: #4f46e5; box-shadow: 0 0 0 3px rgba(79,70,229,0.10); outline: none;
}
[data-v-4c8b9248] .tee-skill-tree .p-treeselect-label-container { flex: 1; min-width: 0; display: flex; align-items: center; overflow: hidden;
}
[data-v-4c8b9248] .tee-skill-tree .p-treeselect-label { width: 100%; padding: 0; display: flex; align-items: center;
}
[data-v-4c8b9248] .tee-skill-tree .p-treeselect-dropdown {
  flex-shrink: 0; display: flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; background: transparent; border: none;
  border-left: 1.5px solid #e4e7f0; color: #6b7db8; border-radius: 0 9px 9px 0;
}

/* Value slot content */
.tee-skill-ph[data-v-4c8b9248] { font-size: 13px; color: #9098b0; padding: 0 12px; display: block; width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tee-skill-badge[data-v-4c8b9248] {
  display: inline-flex; align-items: center; gap: 5px; margin: 0 10px;
  padding: 4px 10px 4px 7px; border-radius: 20px;
  background: #eef2ff; border: 1.5px solid #c7d2fe;
  font-size: 12.5px; font-weight: 700; color: #3730a3; white-space: nowrap;
}
.tee-skill-badge svg[data-v-4c8b9248] { color: #4f46e5; flex-shrink: 0;
}

/* Table cell skill badge — compact, no margin */
.tee-fd--skill[data-v-4c8b9248] { padding: 0 6px !important; vertical-align: middle;
}
/* Compact plain-count variant of the skill cell — no badge, centred number */
.tee-fd--skill-count[data-v-4c8b9248] { text-align: center; font-weight: 700; color: #4e5a82;
}
.tee-fd--skill-count .tee-skill-none[data-v-4c8b9248] { font-weight: 400; color: #9098b0;
}
.tee-skill-badge--cell[data-v-4c8b9248] {
  margin: 0; padding: 3px 7px 3px 5px; font-size: 11px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 100%; display: inline-flex;
}
.tee-skill-none[data-v-4c8b9248] { font-size: 12px; color: #c2c8d8; padding: 0 4px;
}

/* ── Resource modal dark header ── */
.tee-resource-modal .p-dialog-header {
  background: #191a37 !important;
  padding: 14px 20px !important;
  border-radius: 10px 10px 0 0 !important;
}
.tee-resource-modal .p-dialog-title {
  color: #ffffff !important;
  font-size: 15px !important;
  font-weight: 700 !important;
  letter-spacing: 0.2px !important;
}
.tee-resource-modal .p-dialog-header-close {
  color: rgba(255,255,255,0.65) !important;
  border-radius: 6px !important;
  transition: background 0.15s, color 0.15s !important;
}
.tee-resource-modal .p-dialog-header-close:hover {
  background: rgba(255,255,255,0.12) !important;
  color: #ffffff !important;
}
.tee-resource-modal .p-dialog-header-close-icon {
  width: 14px !important;
  height: 14px !important;
}

/* ══════════════════════════════════════════════════════
   tee-skill-panel — non-scoped so it reaches the
   PrimeVue teleported overlay DOM unconditionally
   ══════════════════════════════════════════════════════ */

/* Panel container */
.tee-skill-panel {
  background: #fff !important;
  border: 1px solid #c8cde0 !important;
  border-radius: 10px !important;
  box-shadow: 0 4px 6px rgba(0,0,0,0.06), 0 16px 40px rgba(15,20,55,0.12) !important;
  overflow: hidden !important;
}

/* ── Search header ── */
.tee-skill-panel .p-treeselect-header {
  padding: 8px !important;
  background: #fff !important;
  border-bottom: 1px solid #e4e7f0 !important;
  margin: 0 !important;
}

/* Container — relative so the icon can be absolute inside */
.tee-skill-panel .p-treeselect-filter-container,
.tee-skill-panel .p-iconfield {
  position: relative !important;
  display: block !important;
  width: 100% !important;
}

/*
  Use element+class selector to guarantee this beats PrimeVue's
  class-only !important rules (e.g. .p-inputtext, .p-treeselect-filter).
  Targeting the raw <input> element directly is the highest reliable override.
*/
.tee-skill-panel .p-treeselect-header input[type="text"] {
  display: block !important;
  width: 100% !important;
  height: 42px !important;
  box-sizing: border-box !important;
  border: 1px solid #d1d5e8 !important;
  border-radius: 6px !important;
  padding: 0 40px 0 12px !important;
  font-size: 14px !important;
  font-family: inherit !important;
  color: #1a1d35 !important;
  background: #ffffff !important;
  outline: none !important;
  box-shadow: none !important;
  -webkit-appearance: none !important;
  -moz-appearance: none !important;
       appearance: none !important;
  transition: border-color 0.15s, box-shadow 0.15s !important;
}
.tee-skill-panel .p-treeselect-header input[type="text"]:hover {
  border-color: #9098b0 !important;
}
.tee-skill-panel .p-treeselect-header input[type="text"]:focus {
  border-color: #4f46e5 !important;
  box-shadow: 0 0 0 3px rgba(79,70,229,0.15) !important;
}
.tee-skill-panel .p-treeselect-header input[type="text"]::-moz-placeholder {
  color: #9098b0 !important;
  opacity: 1 !important;
}
.tee-skill-panel .p-treeselect-header input[type="text"]::placeholder {
  color: #9098b0 !important;
  opacity: 1 !important;
}

/* Icon — absolute right inside the container */
.tee-skill-panel .p-treeselect-filter-icon,
.tee-skill-panel .p-inputicon,
.tee-skill-panel .p-treeselect-header svg {
  position: absolute !important;
  right: 10px !important;
  top: 50% !important;
  transform: translateY(-50%) !important;
  color: #9098b0 !important;
  pointer-events: none !important;
  width: 16px !important;
  height: 16px !important;
}

/* ── Tree scroll ── */
.tee-skill-panel .p-tree { background: #fff !important; padding: 8px !important;
}
.tee-skill-panel .p-tree-wrapper,
.tee-skill-panel .p-tree-container { max-height: 280px; overflow-y: auto;
}
.tee-skill-panel .p-tree-wrapper::-webkit-scrollbar,
.tee-skill-panel .p-tree-container::-webkit-scrollbar { width: 5px;
}
.tee-skill-panel .p-tree-wrapper::-webkit-scrollbar-thumb,
.tee-skill-panel .p-tree-container::-webkit-scrollbar-thumb { background: #d1d5e8; border-radius: 10px;
}

/* ── Group spacing ── */
.tee-skill-panel .p-tree-root > .p-tree-node { margin-bottom: 2px;
}

/* ── All rows ── */
.tee-skill-panel .p-tree-node-content {
  display: flex !important; align-items: center !important; gap: 7px !important;
  padding: 8px 10px !important; border-radius: 8px !important; cursor: pointer;
  transition: background 0.12s;
}
.tee-skill-panel .p-tree-node-content:hover      { background: #f0f1f9 !important;
}
.tee-skill-panel .p-tree-node-content.p-highlight { background: #eef2ff !important;
}

/* ── Parent group headers ── */
.tee-skill-panel .p-tree-node:not(.p-tree-node-leaf) > .p-tree-node-content { padding: 7px 10px !important;
}
.tee-skill-panel .p-tree-node:not(.p-tree-node-leaf) > .p-tree-node-content .p-tree-node-label {
  font-size: 11px !important; font-weight: 800 !important; color: #4e5a82 !important;
  text-transform: uppercase !important; letter-spacing: 0.6px !important;
}

/* ── Child leaf nodes ── */
.tee-skill-panel .p-tree-node-leaf > .p-tree-node-content { padding-left: 18px !important;
}
.tee-skill-panel .p-tree-node-leaf > .p-tree-node-content .p-tree-node-label {
  font-size: 13px !important; font-weight: 500 !important; color: #2d3452 !important;
}
.tee-skill-panel .p-tree-node-leaf > .p-tree-node-content.p-highlight .p-tree-node-label {
  color: #3730a3 !important; font-weight: 600 !important;
}

/* ── Toggle button ── */
.tee-skill-panel .p-tree-node-toggle-button {
  display: flex !important; align-items: center !important; justify-content: center !important;
  width: 22px !important; height: 22px !important; flex-shrink: 0 !important;
  background: transparent !important; border: none !important; border-radius: 5px !important;
  color: #6b7db8 !important; cursor: pointer; transition: background 0.12s, color 0.12s;
}
.tee-skill-panel .p-tree-node-toggle-button:hover { background: #dde1f0 !important; color: #191a37 !important;
}
.tee-skill-panel .p-tree-node-toggle-icon { width: 11px !important; height: 11px !important;
}

/* ── Checkboxes ── */
.tee-skill-panel .p-checkbox { flex-shrink: 0;
}
.tee-skill-panel .p-checkbox .p-checkbox-box {
  width: 17px !important; height: 17px !important; border-radius: 5px !important;
  border: 2px solid #c8cde0 !important; background: #fff !important;
  display: flex !important; align-items: center !important; justify-content: center !important;
  transition: border-color 0.15s, background 0.15s;
}
.tee-skill-panel .p-checkbox[data-p-checked="true"] .p-checkbox-box,
.tee-skill-panel .p-checkbox.p-highlight .p-checkbox-box { border-color: #4f46e5 !important; background: #4f46e5 !important;
}
.tee-skill-panel .p-checkbox[data-p-indeterminate="true"] .p-checkbox-box,
.tee-skill-panel .p-checkbox.p-indeterminate .p-checkbox-box { border-color: #6b7db8 !important; background: #6b7db8 !important;
}
.tee-skill-panel .p-checkbox[data-p-checked="true"] .p-checkbox-icon,
.tee-skill-panel .p-checkbox[data-p-indeterminate="true"] .p-checkbox-icon,
.tee-skill-panel .p-checkbox.p-highlight .p-checkbox-icon { color: #fff !important;
}

.dss-tab[data-v-46a3027e] {
  padding: 4px 2px;
}

/* Column titles at the top of the tab, aligned to the row grid below.
   First cell is an empty spacer so the header labels sit exactly above the
   input and phase-total columns in every section. */
.dss-col-headers[data-v-46a3027e] {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 260px 160px 160px;
  gap: 0;
  padding: 6px 16px 10px;
  font-size: 11px;
  font-weight: 700;
  color: #1a1d35;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.dss-col-headers > div[data-v-46a3027e]:nth-child(2) { text-align: left;  padding-left: 12px;
}
.dss-col-headers > div[data-v-46a3027e]:nth-child(3) { text-align: right; padding-right: 12px;
}
.dss-col-headers > div[data-v-46a3027e]:nth-child(4) { text-align: right; padding-right: 12px;
}

/* Section body reset — we drive layout via the .dss-row grid rather than
   the default `.ds-grid` used by ObiTab. */
.dss-section-body[data-v-46a3027e] {
  padding: 0;
}

/* Row — 3-column grid (label / input / phase total). Same template as
   .dss-col-headers so the header row lines up perfectly. */
.dss-row[data-v-46a3027e] {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 260px 160px 160px;
  align-items: center;
  padding: 8px 16px;
  border-bottom: 1px solid #f1f2f5;
  min-height: 48px;
}
.dss-row[data-v-46a3027e]:last-child { border-bottom: none;
}
.dss-cell-label[data-v-46a3027e] {
  font-size: 13px;
  color: #1a1d35;
  font-weight: 600;
  margin: 0;
}
.dss-cell-input[data-v-46a3027e] {
  padding: 0 12px;
}
/* Trim the extra vertical padding the shared BaseInput / BaseSelect wrappers
   add so rows keep a consistent 48px height. */
.dss-cell-input[data-v-46a3027e] .bp-form-group {
  margin: 0;
}
.dss-cell-input[data-v-46a3027e] .bp-label {
  display: none;
}
.dss-cell-total[data-v-46a3027e] {
  text-align: right;
  padding-right: 12px;
  font-size: 13px;
  color: #1a1d35;
  font-weight: 600;
}
.dss-cell-total.dim[data-v-46a3027e] {
  color: #9ca3af;
  font-weight: 400;
}
/* 4th column — mirrors .dss-cell-total for the OBI-currency conversion.
   Rendered on every row (dim placeholder or value) so the grid stays aligned. */
.dss-cell-total-fx[data-v-46a3027e] {
  text-align: right;
  padding-right: 12px;
  font-size: 13px;
  color: #1a1d35;
  font-weight: 600;
}
.dss-cell-total-fx.dim[data-v-46a3027e] {
  color: #9ca3af;
  font-weight: 400;
}
.dss-readonly[data-v-46a3027e] {
  padding: 8px 12px;
  font-size: 13px;
  color: #1a3ea6;
  background: #f4f6fb;
  border: 1px solid #e5e7eb;
  border-radius: 6px;
  min-height: 34px;
  display: flex;
  align-items: center;
}

/* Yes / No pill radios — visual match with OSQ Win Prob / Opportunity Score
   radios so the pattern reads the same across tabs. Hidden native radio +
   styled label; green when Yes, red when No. */
.dss-yn-radios[data-v-46a3027e] {
  display: inline-flex;
  gap: 0.375rem;
}
.dss-yn-radio[data-v-46a3027e] {
  display: inline-flex;
  align-items: center;
  padding: 0.3rem 1rem;
  border: 1.5px solid #e5e7eb;
  border-radius: 9999px;
  cursor: pointer;
  font-size: 0.8125rem;
  font-weight: 500;
  color: #6b7280;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.dss-yn-radio[data-v-46a3027e]:hover { border-color: #9ca3af; color: #374151;
}
.dss-yn-radio--yes[data-v-46a3027e] {
  border-color: #16a34a;
  background: #f0fdf4;
  color: #15803d;
}
.dss-yn-radio--no[data-v-46a3027e] {
  border-color: #dc2626;
  background: #fff1f2;
  color: #b91c1c;
}
.dss-yn-radio-input[data-v-46a3027e] { display: none;
}
/* Locked variant — used when a Y/N row is gated off (e.g. Q3 when Q2 = No).
   Muted colours + not-allowed cursor make it clear the control is inert. */
.dss-yn-radio--locked[data-v-46a3027e],
.dss-yn-radio--locked[data-v-46a3027e]:hover {
  border-color: #e5e7eb;
  background: #f9fafb;
  color: #9ca3af;
  cursor: not-allowed;
}

/* Section-level disabled state — used when a section's gating Q hasn't been
   answered Yes. Body fades and inputs receive pointer-events:none so the
   section is clearly inert but its header (red or blue) stays legible. */
.dss-section--disabled .ds-section-body[data-v-46a3027e] {
  opacity: 0.55;
  pointer-events: none;
  filter: grayscale(0.2);
}
/* Small hint next to the section title indicating the gating question. */
.dss-section-gate[data-v-46a3027e] {
  font-size: 11px;
  font-weight: 500;
  font-style: italic;
  opacity: 0.9;
  margin-left: 6px;
}

/* Plain numeric text input used for the Assessment duration field. Matches
   the padding / border of other inputs in the tab. */
.dss-plain-input[data-v-46a3027e] {
  width: 100%;
  min-height: 34px;
  padding: 6px 10px;
  font-size: 13px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  font-family: inherit;
  color: #1a1d35;
  background: #fff;
  outline: none;
}
.dss-plain-input[data-v-46a3027e]:focus {
  border-color: #1a3ea6;
  box-shadow: 0 0 0 3px rgba(26, 62, 166, 0.10);
}
.dss-plain-input[data-v-46a3027e]:disabled {
  background: #f3f4f6;
  color: #9ca3af;
  cursor: not-allowed;
}

/* Currency field — flex row with a $ prefix + a native numeric input inside
   a single bordered container. Mirrors the ObiTab pattern; defined locally
   because scoped styles don't leak across component boundaries. */
.ds-currency-field[data-v-46a3027e] {
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid #c0c1cb;
  border-radius: 8px;
  background: #fff;
  padding: 0 12px;
  transition: border-color 0.15s, box-shadow 0.15s;
  min-height: 38px;
}
.ds-currency-field[data-v-46a3027e]:focus-within {
  border-color: #da2128;
  box-shadow: 0 0 0 3px rgba(218, 33, 40, 0.12);
}
.ds-currency-prefix[data-v-46a3027e] {
  color: #4e5a82;
  font-weight: 700;
  font-size: 13.5px;
  white-space: nowrap;
  pointer-events: none;
  flex-shrink: 0;
}
.ds-currency-native[data-v-46a3027e] {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: transparent;
  padding: 9px 0;
  font-family: inherit;
  font-size: 13.5px;
  color: #1a1d35;
  text-align: right;
}

/* Readonly variant — non-editable calculated value. Background greys out
   slightly so it reads as inert. */
.dss-currency-readonly[data-v-46a3027e] {
  background: #f4f6fb;
}
.dss-currency-readonly .ds-currency-native[data-v-46a3027e] {
  cursor: default;
}

/* Subtotal row — bold label + bold phase-total value, tinted background so
   the summing row stands apart from the individual line rows above it. */
.dss-row--subtotal[data-v-46a3027e] {
  background: #fbfafc;
  font-weight: 700;
}
.dss-row--subtotal .dss-cell-label[data-v-46a3027e],
.dss-row--subtotal .dss-cell-total[data-v-46a3027e] {
  font-weight: 700;
}
.dss-row--subtotal .dss-cell-input[data-v-46a3027e] {
  color: #9ca3af;
  text-align: center;
}

/* ── Section 7 (Deal Summary) — bold all col 3 values inside this section
   to match the finance-summary read style. */
.dss-section--summary .dss-row .dss-cell-total[data-v-46a3027e] {
  font-weight: 700;
}

/* Highlighted list-price + final-price rows. */
.dss-row--list-price[data-v-46a3027e] {
  background: #f4f6fb;
}
.dss-row--list-price .dss-cell-total[data-v-46a3027e] { font-size: 14px;
}
.dss-row--final-price[data-v-46a3027e] {
  background: #eef4ee;
  border-top: 2px solid #3d5c48;
  border-bottom: 2px solid #3d5c48;
}
.dss-row--final-price .dss-cell-label[data-v-46a3027e],
.dss-row--final-price .dss-cell-total[data-v-46a3027e] {
  color: #14532d;
  font-size: 15px;
  font-weight: 800;
}

/* Percentage input — flex wrap with a % suffix icon that sits inside the
   bordered container next to the input. */
.dss-pct-field[data-v-46a3027e] {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid #d1d5db;
  border-radius: 6px;
  background: #fff;
  padding: 0 10px;
  transition: border-color 0.15s, box-shadow 0.15s;
  min-height: 34px;
  width: 100%;
}
.dss-pct-field[data-v-46a3027e]:focus-within {
  border-color: #1a3ea6;
  box-shadow: 0 0 0 3px rgba(26, 62, 166, 0.10);
}
.dss-pct-input[data-v-46a3027e] {
  flex: 1;
  min-width: 0;
  border: none;
  outline: none;
  background: transparent;
  padding: 6px 0;
  font-family: inherit;
  font-size: 13px;
  color: #1a1d35;
  text-align: right;
}
.dss-pct-input[data-v-46a3027e]:disabled { color: #9ca3af; cursor: not-allowed;
}
.dss-pct-suffix[data-v-46a3027e] {
  color: #6b7280;
  font-weight: 600;
  font-size: 13px;
  pointer-events: none;
}

/* Approval status chip. */
.dss-approval[data-v-46a3027e] {
  display: inline-block;
  padding: 3px 12px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.dss-approval--ok[data-v-46a3027e]   { background: #dcfce7; color: #14532d;
}
.dss-approval--warn[data-v-46a3027e] { background: #fef3c7; color: #92400e;
}

/* Whole row de-emphasised when its question is disabled. Combined with the
   red hint below, the state is unmistakable. */
.dss-row--disabled .dss-cell-label[data-v-46a3027e] {
  color: #9ca3af;
}

/* Red hint row shown directly under a gated Y/N question. Uses the same
   4-column grid template as .dss-row (via the wrapper's grid) so the hint
   text sits in the input column, aligned with the radios above. */
.dss-row-hint[data-v-46a3027e] {
  display: grid;
  grid-template-columns: minmax(220px, 1fr) 260px 160px 160px;
  padding: 0 16px 8px;
}
.dss-row-hint__body[data-v-46a3027e] {
  grid-column: 2 / span 2;
  font-size: 12px;
  color: #b91c1c;
  padding: 0 12px;
  font-weight: 500;
}
@media (max-width: 900px) {
.dss-row-hint[data-v-46a3027e] {
    grid-template-columns: 1fr;
    padding: 4px 16px 8px;
}
.dss-row-hint__body[data-v-46a3027e] {
    grid-column: auto;
    padding: 0;
}
}
.ds-save-error[data-v-46a3027e] {
  color: #b91c1c;
  font-size: 13px;
  padding: 8px 16px;
}

/* Responsive: on narrow screens collapse to a single column so labels sit
   above inputs and the phase-total cell drops below. */
@media (max-width: 900px) {
.dss-col-headers[data-v-46a3027e] { display: none;
}
.dss-row[data-v-46a3027e] {
    grid-template-columns: 1fr;
    row-gap: 6px;
    align-items: start;
    padding: 12px 16px;
}
.dss-cell-input[data-v-46a3027e], .dss-cell-total[data-v-46a3027e] {
    text-align: left;
    padding: 0;
}
}

.tpv-tab[data-v-85aa42f6] {
  padding: 4px 2px;
}

/* Vendor section: dark blue header with remove button on the right, body
   holds the two-column form. Uses the shared .ds-section-* classes so the
   visual matches every other tab. */
.tpv-vendor[data-v-85aa42f6] {
  margin-bottom: 16px;
}
.tpv-vendor-header[data-v-85aa42f6] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.tpv-vendor-title[data-v-85aa42f6] {
  display: flex;
  align-items: center;
  gap: 8px;
}
.tpv-remove-btn[data-v-85aa42f6] {
  background: transparent;
  border: none;
  color: #fff;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  padding: 2px 8px;
  border-radius: 4px;
  transition: background 120ms ease;
}
.tpv-remove-btn[data-v-85aa42f6]:hover:not(:disabled) { background: rgba(255, 255, 255, 0.15);
}
.tpv-remove-btn[data-v-85aa42f6]:disabled              { opacity: 0.4; cursor: not-allowed;
}
.tpv-section-body[data-v-85aa42f6] {
  padding: 20px 18px;
}
.tpv-two-col[data-v-85aa42f6] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 24px;
}
@media (max-width: 640px) {
.tpv-two-col[data-v-85aa42f6] { grid-template-columns: 1fr;
}
}

/* Vendor summary strip — three read-only fields laid out below the
   Vendor Name / Budget row and above the rate-card grid. Collapses to
   a single column on narrow viewports, matching the two-col above. */
.tpv-three-col[data-v-85aa42f6] {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px 24px;
  margin-top: 16px;
}
@media (max-width: 640px) {
.tpv-three-col[data-v-85aa42f6] { grid-template-columns: 1fr;
}
}

/* Status pill (OK / GAP). Colours are applied to the shared BaseInput's
   underlying <input> via :deep so we don't have to fork the component.
   OK  → light-gray fill, black text.
   GAP → red alert fill (same #da2128 tone as the grid's Gap column),
         white text. */
.tpv-status--ok[data-v-85aa42f6] input {
  background: #f1f2f5 !important;
  color: #1a1d35 !important;
  font-weight: 600;
}
.tpv-status--gap[data-v-85aa42f6] input {
  background: #da2128 !important;
  color: #ffffff !important;
  font-weight: 700;
  letter-spacing: 0.5px;
}

/* Note under the GAP status — small red hint that tells the user which
   TEE-tab row to reconcile against. Hidden by v-if when there's no gap. */
.tpv-status-note[data-v-85aa42f6] {
  margin-top: 6px;
  font-size: 12px;
  color: #b91c1c;
  line-height: 1.4;
}
.tpv-field[data-v-85aa42f6] {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.tpv-label[data-v-85aa42f6] {
  font-size: 12px;
  font-weight: 600;
  color: #1a1d35;
}

/* Budget number input — strip the browser's native up/down spin arrows
   per the "no incrementer" spec. */
.tpv-num-input[data-v-85aa42f6] {
  -moz-appearance: textfield;
}
.tpv-num-input[data-v-85aa42f6]::-webkit-outer-spin-button,
.tpv-num-input[data-v-85aa42f6]::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Add Vendor button row */
.tpv-add-row[data-v-85aa42f6] {
  display: flex;
  justify-content: flex-start;
  padding: 8px 0 4px;
}
.tpv-add-btn[data-v-85aa42f6] {
  background: #191a37;
  color: #fff;
  border: none;
  padding: 8px 16px;
  border-radius: 6px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 120ms ease;
}
.tpv-add-btn[data-v-85aa42f6]:hover:not(:disabled) { background: #262957;
}
.tpv-add-btn[data-v-85aa42f6]:disabled             { opacity: 0.5; cursor: not-allowed;
}

/* ═══════════════ Freeze-pane rate card ═══════════════ */

/* Wrapper for the top-scrollbar + main scroll container. Owns the
   OUTER border so both scrollbars visually sit inside a single framed
   block with a clean top border above the top scrollbar and matching
   bottom border below the bottom one. MUST NOT set overflow (any value
   other than visible would trap position:sticky descendants and break
   the frozen-column left-pin inside .tpv-grid-scroll). */
.tpv-grid-block[data-v-85aa42f6] {
  margin-top: 20px;
  border: 1px solid #c5c6c9;
  border-radius: 4px;
  background: #fff;
}

/* Duplicate scrollbar sitting above the header. Its inner div is width-
   matched to the table's scrollWidth via JS (ResizeObserver) so the two
   scrollbars stay in sync. When the vendor's table becomes sticky, this
   element receives the SAME transform as the <thead>, keeping the pair
   stacked as: topscroll | thead | tbody. Solid background covers tbody
   rows behind it when stuck; will-change promotes it to its own
   compositor layer for cheap transform updates. Own borders removed
   now — the wrapper owns the outer frame; a single border-bottom
   remains here to visually divide the topscroll strip from the table
   content. */
.tpv-grid-topscroll[data-v-85aa42f6] {
  overflow-x: auto;
  overflow-y: hidden;
  height: 14px;                                /* ~native scrollbar thickness */
  background: #fff;
  border-bottom: 1px solid #c5c6c9;
  border-top-left-radius:  4px;
  border-top-right-radius: 4px;
  will-change: transform;
  position: relative;
  z-index: 5;                                  /* sits at the same layer as .tpv-grid thead */
}
.tpv-grid-topscroll-inner[data-v-85aa42f6] {
  height: 1px;                                 /* just enough to trigger the scrollbar */
}

/* Main scroll container. No own borders — the wrapper draws the outer
   frame. Rounded bottom corners so the wrapper's border-radius carves
   through cleanly. */
.tpv-grid-scroll[data-v-85aa42f6] {
  overflow-x: auto;
  overflow-y: hidden;
  background: #fff;
  border-bottom-left-radius:  4px;
  border-bottom-right-radius: 4px;
}
.tpv-grid[data-v-85aa42f6] {
  border-collapse: separate;
  border-spacing: 0;
  width: -moz-max-content;
  width: max-content;         /* let columns claim their natural width */
  min-width: 100%;            /* stretch to container if narrower */
  font-size: 13px;
  color: #1a1d35;
}

/* Sticky-positioning the <thead> element gives it a positioned stacking
   context that accepts an explicit z-index (transforms alone create a
   stacking context with z-index:auto, which loses to tbody's sticky
   role-col cells at z-index 2 — so their dropdowns leak through the
   header). Sticky here is functionally a no-op because .tpv-grid-scroll
   isn't a vertical scroll container in practice; the JS-driven transform
   remains the actual pin driver. */
.tpv-grid thead[data-v-85aa42f6] {
  position: sticky;
  top: 0;
  z-index: 5;
  /* Promote to compositor layer so the JS-driven translate3d updates on
     scroll are cheap and independent of tbody repaints — reduces the
     one-frame shake you'd otherwise see while scrolling. */
  will-change: transform;
}

/* Column headers: centered on both axes so a tall (wrapped) header cell
   still shows its label vertically middle-aligned, bold weight 700.
   Border color #c5c6c9 (darker than tbody's #eef0f5) so the header's
   perimeter reads distinctly from the data rows below. */
.tpv-grid thead th[data-v-85aa42f6] {
  background: #f4f6fb;
  color: #1a1d35;
  font-weight: 700;
  text-align: center;
  vertical-align: middle;
  padding: 10px;
  border-bottom: 1px solid #c5c6c9;
  border-right: 1px solid #c5c6c9;
}
.tpv-grid tbody th[data-v-85aa42f6],
.tpv-grid tbody td[data-v-85aa42f6] {
  padding: 8px 10px;
  border-bottom: 1px solid #eef0f5;
  border-right: 1px solid #eef0f5;
  white-space: nowrap;
}
.tpv-grid tbody td[data-v-85aa42f6] {
  color: #6b7086;             /* placeholder cells read as inactive */
  text-align: center;
}

/* Cells that host a BaseSelect (Local Currency, etc.) — give the select a
   sensible min-width so it doesn't collapse and let its native styling
   take over the cell's text-align. */
.tpv-grid-cell-select[data-v-85aa42f6] {
  padding: 4px 6px !important;
  min-width: 140px;
  color: #1a1d35;
}
.tpv-grid-cell-select[data-v-85aa42f6] .bp-select {
  min-height: 30px;
}

/* Cells that host a numeric input — tight padding so the input hugs the
   cell, and a modest min-width so all number cells align visually. */
.tpv-grid-cell-num[data-v-85aa42f6] {
  padding: 4px 6px !important;
  min-width: 120px;
  color: #1a1d35;
}
.tpv-grid-cell-num .tpv-num-input[data-v-85aa42f6] {
  width: 100%;
  padding: 5px 8px;
  font-size: 13px;
  text-align: right;
}

/* #days cell — narrower than the LC rate cells, and deliberately does
   NOT hide the native spin buttons (unlike .tpv-num-input which strips
   them) so the user gets ↑↓ arrows for quick +/− stepping. */
.tpv-grid-cell-days[data-v-85aa42f6] {
  padding: 4px 6px !important;
  min-width: 100px;
  color: #1a1d35;
}
.tpv-grid-cell-days .tpv-days-input[data-v-85aa42f6] {
  width: 100%;
  padding: 5px 8px;
  font-size: 13px;
  text-align: right;
}

/* Cells that show static, read-only text (Currency Bill mirror, hard-coded
   USD label). Explicit dark colour so they don't render dim like the
   placeholder `—` cells. */
.tpv-grid-cell-static[data-v-85aa42f6] {
  color: #1a1d35;
  font-weight: 600;
  min-width: 88px;
}

/* Gap column (col 14) — matched rows render a plain dash on the standard
   cell background, mismatched rows fill the whole cell with our red alert
   tone so a scanning eye lands on them immediately. Padding is inherited
   from `.tpv-grid td` so the coloured fill spans edge-to-edge.
   Scoped under `.tpv-grid tbody td` so specificity beats the generic
   `.tpv-grid tbody td` rule that would otherwise reset text colour. */
.tpv-grid tbody td.tpv-grid-cell-match[data-v-85aa42f6] {
  text-align: center;
  color: #6b7280;
}
.tpv-grid tbody td.tpv-grid-cell-gap[data-v-85aa42f6] {
  background: #da2128;
  color: #ffffff;
  text-align: center;
  font-weight: 700;
  letter-spacing: 0.5px;
}

/* (No wrap rule any more — the wide "LE Currency/hour Cost rate LC"
   header was replaced by the two-row header split; each half now lives
   in its own <th>, so a stacked layout comes for free.) */
.tpv-grid tbody tr:last-child th[data-v-85aa42f6],
.tpv-grid tbody tr:last-child td[data-v-85aa42f6] {
  border-bottom: none;
}

/* Freeze the first column — position:sticky keeps it pinned to the left
   edge of the scroll container while everything else scrolls. Requires an
   explicit background so scrolled cells don't bleed through. z-index keeps
   the header <th> above body <th>. */
.tpv-grid-role-col[data-v-85aa42f6] {
  position: sticky;
  left: 0;
  z-index: 2;
  background: #f4f6fb;
  min-width: 180px;
  box-shadow: 2px 0 0 0 #e2e5ee;
  color: #1a1d35;
}
/* Body rows: role names stay left-aligned (readability); header row
   inherits the centered thead th rule above. */
.tpv-grid tbody th.tpv-grid-role-col[data-v-85aa42f6] {
  text-align: left;
  font-weight: 600;
}
/* Header cell of the first column must sit above the body's first-column
   cells during horizontal scroll, so bump its z-index one higher. */
.tpv-grid thead .tpv-grid-role-col[data-v-85aa42f6] {
  z-index: 3;
}

.wr-wrap[data-v-73eeae9c] {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.wr-section-body[data-v-73eeae9c] {
  padding: 20px 18px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.wr-two-col[data-v-73eeae9c] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 24px;
}
@media (max-width: 640px) {
.wr-two-col[data-v-73eeae9c] { grid-template-columns: 1fr;
}
}
.wr-field[data-v-73eeae9c] {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.wr-label[data-v-73eeae9c] {
  font-size: 12px;
  font-weight: 600;
  color: #1a1d35;
}

/* Box 1 helper. */
.wr-helper[data-v-73eeae9c] {
  font-size: 12.5px;
  color: #4e5a82;
  padding: 8px 10px;
  border-radius: 6px;
  background: #f4f6fb;
}
.wr-helper--warn[data-v-73eeae9c] {
  color: #b91c1c;
  background: #fee2e2;
}

/* Box 1 table. */
.wr-table-scroll[data-v-73eeae9c] {
  overflow-x: auto;
  border: 1px solid #e2e5ee;
  border-radius: 6px;
  background: #ffffff;
}
.wr-table[data-v-73eeae9c] {
  width: 100%;
  border-collapse: collapse;
  font-size: 12.5px;
}
.wr-table thead th[data-v-73eeae9c] {
  background: #f4f6fb;
  color: #1a1d35;
  font-weight: 700;
  text-align: center;
  padding: 8px 10px;
  border-bottom: 1px solid #e2e5ee;
  white-space: nowrap;
}
.wr-table tbody td[data-v-73eeae9c] {
  padding: 8px 10px;
  border-bottom: 1px solid #eef0f5;
  color: #1a1d35;
  white-space: nowrap;
}
.wr-table tbody tr:last-child td[data-v-73eeae9c] {
  border-bottom: none;
}
.wr-table tbody tr:nth-child(even) td[data-v-73eeae9c] {
  background: #f7f8fc;
}
.wr-cell-num[data-v-73eeae9c] {
  text-align: center;
  font-variant-numeric: tabular-nums;
}

/* Box 2 — Resource Planning grid.
   Single-table layout with two sticky columns (Resource Name + Total
   Days) — mirrors the Excel-style freeze-pane pattern used on the TPV
   rate-card grid. The scroll container's `overflow-x: auto` handles
   horizontal overflow when the week strip is wider than available
   space; the table itself uses `min-width: 100%` so it stretches to
   fill the container when the week strip is narrower.
   Fonts, tile widths, current-week accent, and e1..e5 value tints
   match TEE so the two calendars read the same across the app. */
.wr-planning-scroll[data-v-73eeae9c] {
  overflow-x: auto;
  overflow-y: hidden;
  border: 1px solid #e2e5ee;
  border-radius: 6px;
  background: #ffffff;
}
.wr-planning-scroll[data-v-73eeae9c]::-webkit-scrollbar        { height: 7px;
}
.wr-planning-scroll[data-v-73eeae9c]::-webkit-scrollbar-track  { background: #f0f1f5;
}
.wr-planning-scroll[data-v-73eeae9c]::-webkit-scrollbar-thumb  { background: #c8cde0; border-radius: 4px;
}
.wr-planning-tbl[data-v-73eeae9c] {
  /* Matches TPV's freeze-pane pattern:
       width: max-content  → table takes its natural (col-sum) width
       min-width: 100%     → stretches to fill the container when the
                             natural width is narrower (few weeks).
     No `table-layout: fixed` and no <col> widths — those turned out
     to be unreliable across browsers for this pattern. Instead,
     min-width on individual header/body cells (below) authoritatively
     drives each column's actual rendered width, which keeps the
     sticky columns' `left` offsets aligned with reality. */
  border-collapse: separate;
  border-spacing: 0;
  width: -moz-max-content;
  width: max-content;
  min-width: 100%;
  font-size: 12px;
  color: #1a1d35;
}

/* Header rows — kept at fixed pixel heights so alignment is trivial
   and doesn't depend on content wrapping. */
.wr-planning-mh[data-v-73eeae9c] {
  background: #eef1f7;
  color: #4e5a82;
  font-weight: 700;
  height: 26px;
  padding: 0 6px;
  text-align: center;
  border-bottom: 1px solid #e2e5ee;
  white-space: nowrap;
}
.wr-planning-fh[data-v-73eeae9c] {
  background: #f4f6fb;
  color: #1a1d35;
  font-weight: 700;
  height: auto;
  padding: 8px 10px;
  text-align: left;
  border-bottom: 1px solid #e2e5ee;
  border-right: 1px solid #eef0f5;
  white-space: nowrap;
  vertical-align: middle;
}
.wr-planning-wh[data-v-73eeae9c] {
  background: #f4f6fb;
  color: #1a1d35;
  font-weight: 700;
  height: 30px;
  padding: 0;
  text-align: center;
  border-bottom: 1px solid #e2e5ee;
  border-right: 1px solid #eef0f5;
  font-size: 11px;
  /* Match .wr-planning-wk's min-width so header + body columns line
     up. Without this, the header cell can auto-grow past 44px on
     wider labels (e.g. "W100●") and desync from the body. */
  min-width: 44px;
}
.wr-planning-wh.cur[data-v-73eeae9c] { color: #1d4ed8; background: #eff6ff;
}
.wr-planning-dh[data-v-73eeae9c] {
  height: 22px;
  padding: 0;
  text-align: center;
  color: #6b7086;
  font-size: 10.5px;
  font-weight: 500;
  border-bottom: 1px solid #e2e5ee;
  border-right: 1px solid #eef0f5;
  background: #ffffff;
  min-width: 44px;
}
.wr-planning-dh.cur[data-v-73eeae9c] { color: #1d4ed8; background: #eff6ff;
}

/* Body cells. */
.wr-planning-row[data-v-73eeae9c] {
  height: 32px;
}
.wr-planning-td[data-v-73eeae9c] {
  padding: 6px 10px;
  border-bottom: 1px solid #eef0f5;
  border-right: 1px solid #eef0f5;
  color: #1a1d35;
  white-space: nowrap;
  vertical-align: middle;
  background: #ffffff;
}
.wr-planning-td.center[data-v-73eeae9c] {
  text-align: center;
  font-variant-numeric: tabular-nums;
}
.wr-planning-row:nth-child(even) .wr-planning-td[data-v-73eeae9c] { background: #f7f8fc;
}
.wr-planning-wk[data-v-73eeae9c] {
  height: 32px;
  padding: 0;
  text-align: center;
  border-bottom: 1px solid #eef0f5;
  border-right: 1px solid #eef0f5;
  vertical-align: middle;
  color: #1a1d35;
  font-variant-numeric: tabular-nums;
  background: #ffffff;
  /* Fixed min-width per week column — enforced on the cell rather
     than via <col>, which the browser was silently ignoring under
     `width: max-content`. */
  min-width: 44px;
}
.wr-planning-wk.past[data-v-73eeae9c] { background: #fafbfd; color: #6b7086;
}
.wr-planning-wk.cur[data-v-73eeae9c]  { background: #eff6ff;
}
.wr-planning-row:nth-child(even) .wr-planning-wk[data-v-73eeae9c]:not(.cur):not(.past) { background: #f7f8fc;
}
.wr-planning-wk-val[data-v-73eeae9c] {
  display: inline-block;
  font-size: 11.5px;
  font-weight: 600;
}

/* Value-driven tint — matches TEE's e1..e5 scale so the two calendars
   read the same. `.cur` / `.past` are set alongside these classes; the
   ordering in the class list (past/cur first, then eN) means CSS
   specificity ties get broken by source-order and eN wins for coloured
   cells while past/cur wins for empty cells. */
.wr-planning-wk.e1[data-v-73eeae9c] { background: #eef6ff;
}
.wr-planning-wk.e2[data-v-73eeae9c] { background: #dbeafe;
}
.wr-planning-wk.e3[data-v-73eeae9c] { background: #bfdbfe;
}
.wr-planning-wk.e4[data-v-73eeae9c] { background: #93c5fd; color: #ffffff;
}
.wr-planning-wk.e5[data-v-73eeae9c] { background: #60a5fa; color: #ffffff;
}

/* Totals row — sits at the bottom, no zebra tint, subtle divider up
   top so it reads as a summary section. */
.wr-planning-totals-row .wr-planning-td[data-v-73eeae9c],
.wr-planning-totals-row .wr-planning-wk[data-v-73eeae9c] {
  background: #f4f6fb;
  font-weight: 700;
  border-top: 2px solid #d5dae7;
  border-bottom: none;
}

/* Sticky freeze — first two columns pin to the left edge while the
   week strip scrolls. `left` values must sum with the previous
   sticky column's min-width to stay visually adjacent (260 → 260px). */
.wr-planning-sticky-name[data-v-73eeae9c] {
  position: sticky;
  left: 0;
  z-index: 2;
  min-width: 260px;
  max-width: 260px;
  box-shadow: 2px 0 0 0 #e2e5ee;
  overflow: hidden;
  text-overflow: ellipsis;
}
.wr-planning-sticky-total[data-v-73eeae9c] {
  position: sticky;
  left: 260px;
  z-index: 2;
  min-width: 110px;
  max-width: 110px;
  box-shadow: 2px 0 0 0 #e2e5ee;
}
/* Header row cells that are sticky need higher z-index to sit above
   scrolled body cells during horizontal scroll. */
.wr-planning-tbl thead .wr-planning-sticky-name[data-v-73eeae9c],
.wr-planning-tbl thead .wr-planning-sticky-total[data-v-73eeae9c] {
  z-index: 3;
}
.wr-planning-empty[data-v-73eeae9c] {
  padding: 20px 10px;
  text-align: center;
  color: #9098b0;
  font-style: italic;
  border-bottom: none;
  background: #ffffff;
}

.rsp-pending[data-v-8f1a98b8] {
  margin: 0;
  padding: 16px 4px;
  color: #6b7280;
  font-size: 13px;
  font-style: italic;
}

/* Summary box 3-field row.
   Three equal columns on desktop. Each field stacks its label above the
   value; fields 2 & 3 split their value area into a sum + percentage
   pair. Collapses to a single column on narrow screens to keep numbers
   readable on mobile. */
.rsp-summary-row[data-v-8f1a98b8] {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}
.rsp-summary-field[data-v-8f1a98b8] {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
/* First field (single input) — half-width input so it visually mirrors
   the "input half" of the split-value pair used in fields 2 & 3. */
.rsp-summary-field--half input[data-v-8f1a98b8] {
  width: 50%;
}
.rsp-summary-pair[data-v-8f1a98b8] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  align-items: center;
}
.rsp-summary-pct[data-v-8f1a98b8] {
  padding: 6px 8px;
  font-size: 13px;
  font-weight: 600;
  text-align: center;
  font-variant-numeric: tabular-nums;
  color: #1a1d35;
}
@media (max-width: 720px) {
.rsp-summary-row[data-v-8f1a98b8] { grid-template-columns: 1fr;
}
}

/* Vertical gap between the 3-field row and the practice-summary table
   in Box 1 — the 3-field row uses `gap:16px` but that only spaces its
   own children; the table sits outside that grid. */
.rsp-summary-table-wrap[data-v-8f1a98b8] {
  margin-top: 16px;
}
/* Slightly taller rows on this table only — the practice-summary rows
   need a bit more breathing room than the compact split-detail rows
   used in the practice boxes below. */
.rsp-summary-table-wrap .rsp-table tbody td[data-v-8f1a98b8] {
  padding-top: 12px;
  padding-bottom: 12px;
}

/* Mismatch warning — inline red notice shown under a practice table
   when its Level 1 value ≠ Level 2 sum. Matches the soft-red pill tone
   used elsewhere for validation messages (WR helper--warn, BaseAlert
   error palette). */
.rsp-mismatch[data-v-8f1a98b8] {
  margin: 0 0 10px;
  padding: 8px 12px;
  background: #fee2e2;
  border: 1px solid #f87171;
  border-radius: 6px;
  color: #b91c1c;
  font-size: 12.5px;
  font-weight: 600;
}

/* "Practice not selected" notice — shown in place of the split table
   when the practice isn't in the OIS selection. Muted amber to signal a
   soft blocker (user can fix by editing OIS), not an error. */
.rsp-not-selected[data-v-8f1a98b8] {
  margin: 0;
  padding: 14px 16px;
  color: #92400e;
  background: #fef3c7;
  border: 1px solid #fcd34d;
  border-radius: 6px;
  font-size: 13px;
  line-height: 1.5;
}

/* ORM table — 5-column grid.
   Layout mirrors the wr-table + tle-grid pattern used elsewhere in the
   dealsheet so tables stay visually consistent across every tab. */
.rsp-table-scroll[data-v-8f1a98b8] {
  overflow-x: auto;
  border: 1px solid #e2e5ee;
  border-radius: 6px;
  background: #ffffff;
}
.rsp-table[data-v-8f1a98b8] {
  width: 100%;
  border-collapse: collapse;
  font-size: 12.5px;
  min-width: 720px;
}
.rsp-table thead th[data-v-8f1a98b8] {
  background: #f4f6fb;
  color: #1a1d35;
  font-weight: 700;
  text-align: center;
  padding: 8px 10px;
  border-bottom: 1px solid #e2e5ee;
  white-space: nowrap;
}
.rsp-th-desc[data-v-8f1a98b8] {
  text-align: left !important;
  min-width: 320px;
}
.rsp-table tbody td[data-v-8f1a98b8] {
  padding: 6px 10px;
  border-bottom: 1px solid #eef0f5;
  color: #1a1d35;
  white-space: nowrap;
}
.rsp-table tbody tr:last-child td[data-v-8f1a98b8] {
  border-bottom: none;
}
.rsp-cell-desc[data-v-8f1a98b8] {
  text-align: left;
}

/* Number cells — right-aligned tabular-nums for clean column alignment.
   No background tint on inputs — the shared .bp-input styling is used
   as-is so number cells look identical to every other tab in the app. */
.rsp-cell-num[data-v-8f1a98b8] {
  padding: 4px 6px;
  min-width: 130px;
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.rsp-cell-static[data-v-8f1a98b8] {
  text-align: right;
  padding-right: 12px;
  min-width: 90px;
  font-variant-numeric: tabular-nums;
}
.rsp-num-input[data-v-8f1a98b8] {
  width: 100%;
  padding: 5px 8px;
  font-size: 13px;
  text-align: right;
}
/* Readonly variant — matches the .ds-ois-readonly-value styling in
   OisTab.vue so readonly numeric cells across dealsheet tabs share the
   same soft-grey pill treatment. Only affects <input readonly>; plain
   readonly text (spans / <td> cells) is untouched. */
.rsp-num-input[readonly][data-v-8f1a98b8] {
  background: #f0f1f5;
  border-color: #e4e7f0;
  color: #4e5a82;
  font-weight: 600;
}

/* Brand-red label — applies only to the BaseSelect wearing `.tle-label-red`
   so other TLE labels stay default dark grey. */
.tle-label-red[data-v-938564c8] .bp-label {
  color: #da2128;
}

/* Yes / No state tint on the "Is T&L to be invoice back to the client?"
   dropdown. Uses the platform's semantic light-tint pill style — soft
   background, matching border, deep saturated text — instead of a solid
   colour fill, which reads noisy against the red label above and red
   message below. Same palette convention used by BaseAlert and the OSQ
   Win-Prob row-card selected state. */
/* Yes state — paint only the outer .p-select background so the rounded
   corners stay clean. The inner .p-select-label is left transparent so it
   inherits the parent's pink visual; only its text colour is overridden. */
.tle-invoiced-yes[data-v-938564c8] .p-select {
  background: #fee2e2 !important;
  border-color: #f87171 !important;
}
.tle-invoiced-yes[data-v-938564c8] .p-select .p-select-label {
  background: transparent !important;
  color: #b91c1c !important;
}
.tle-invoiced-yes[data-v-938564c8] .p-select .p-select-dropdown svg {
  color: #b91c1c !important;
  stroke: #b91c1c !important;
}

/* No state — same pattern, business-green palette. */
.tle-invoiced-no[data-v-938564c8] .p-select {
  background: #dcfce7 !important;
  border-color: #86efac !important;
}
.tle-invoiced-no[data-v-938564c8] .p-select .p-select-label {
  background: transparent !important;
  color: #166534 !important;
}
.tle-invoiced-no[data-v-938564c8] .p-select .p-select-dropdown svg {
  color: #166534 !important;
  stroke: #166534 !important;
}
.tle-msg-block[data-v-938564c8] { margin-top: 6px;
}
.tle-msg[data-v-938564c8] {
  margin: 6px 0 0;
  font-size: 12.5px;
  line-height: 1.45;
}
.tle-msg--red-caps[data-v-938564c8] {
  color: #da2128;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.tle-msg--grey[data-v-938564c8] {
  color: #4e5a82;
  font-weight: 500;
}
.tle-msg--red[data-v-938564c8] {
  color: #da2128;
  font-weight: 600;
}

/* Three-column summary row above the resource table. Cards mirror the
   TEE Summary KPI-card style — dashed border marks them as derived (like
   TEE's `kpi-card--calc`). Local class prefix (`tle-kpi-*`) because
   TeeTab's scoped styles don't leak here. */
.tle-summary-row[data-v-938564c8] {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  padding-bottom: 16px;
  margin-bottom: 16px;
  border-bottom: 1px solid #eef1f8;
}
.tle-kpi-card[data-v-938564c8] {
  background: #f8f9fc;
  border: 1px solid #e4e7f0;
  border-radius: 10px;
  padding: 10px 14px;
  min-width: 110px;
}
.tle-kpi-card--calc[data-v-938564c8] { border-style: dashed;
}
.tle-kpi-lbl[data-v-938564c8] {
  font-size: 10px;
  font-weight: 700;
  color: #9098b0;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-bottom: 4px;
  display: flex;
  align-items: center;
  gap: 6px;
}
.tle-kpi-val[data-v-938564c8] {
  font-size: 16px;
  font-weight: 800;
  color: #1a1d35;
  line-height: 1.1;
}
.tle-kpi-currency[data-v-938564c8] {
  color: #4e5a82;
  margin-right: 4px;
}
@media (max-width: 760px) {
.tle-summary-row[data-v-938564c8] { grid-template-columns: 1fr;
}
}

/* Empty state — same visual tone as TPV / TEE empties. */
.tle-empty[data-v-938564c8] {
  padding: 24px 12px;
  text-align: center;
  color: #6b7280;
  font-size: 13px;
}

/* Horizontally-scrollable 17-column grid. Sticky first column keeps
   Resource Name visible while scrolling right through the transport
   modes. Cells are compact (36px min-height) to keep the grid dense —
   TPV uses the same convention. */
.tle-grid-scroll[data-v-938564c8] {
  overflow-x: auto;
  border: 1px solid #e4e7f0;
  border-radius: 6px;
  background: #fff;
}
.tle-grid[data-v-938564c8] {
  border-collapse: collapse;
  width: -moz-max-content;
  width: max-content;
  min-width: 100%;
  font-size: 12px;
  color: #1a1d35;
}
.tle-grid thead th[data-v-938564c8] {
  position: sticky;
  top: 0;
  background: #f4f6fb;
  color: #4e5a82;
  font-weight: 700;
  font-size: 11px;
  text-align: center;
  padding: 8px 6px;
  border-bottom: 1px solid #d1d5e8;
  white-space: nowrap;
  z-index: 1;
}
.tle-grid tbody th[data-v-938564c8],
.tle-grid tbody td[data-v-938564c8] {
  padding: 6px 6px;
  border-bottom: 1px solid #eef1f8;
  min-height: 36px;
  height: 36px;
  vertical-align: middle;
}
.tle-grid tbody tr:last-child th[data-v-938564c8],
.tle-grid tbody tr:last-child td[data-v-938564c8] { border-bottom: none;
}

/* First column — sticky left. Higher z-index than the sticky header so the
   header still overlays it correctly at the top-left crossing. */
.tle-grid-name-col[data-v-938564c8] {
  position: sticky;
  left: 0;
  background: #fff;
  min-width: 200px;
  max-width: 240px;
  z-index: 2;
  border-right: 1px solid #d1d5e8;
  text-align: left;
  padding-left: 12px;
}
.tle-grid thead .tle-grid-name-col[data-v-938564c8] {
  background: #f4f6fb;
  z-index: 3;
}
.tle-grid-name-cell[data-v-938564c8] {
  font-weight: 600;
  color: #1a1d35;
}

/* Numeric input cells — match the TPV grid pattern: minimum wrapper padding,
   inherit border / background / border-radius / focus ring from the shared
   `.bp-input` (from @dssplus/bizplus-fe-ui). Only fine-tune width, padding,
   font-size and right-alignment so the input fills its cell tidily and
   digits line up cleanly across rows. */
.tle-grid-cell-num[data-v-938564c8] {
  padding: 4px 6px;
  min-width: 120px;
}
.tle-grid-cell-num .tle-num-input[data-v-938564c8] {
  width: 100%;
  padding: 5px 8px;
  font-size: 13px;
  text-align: right;
}

/* Static (computed) cells — grand-total column + per-transport total
   columns. Light grey wash flags them as read-only / derived at a glance
   and separates them visually from the editable numeric inputs on either
   side. Right-aligned to match the input cells. */
.tle-grid-cell-static[data-v-938564c8] {
  text-align: right;
  padding-right: 12px;
  color: #4e5a82;
  font-weight: 600;
  min-width: 100px;
  background: #f4f6fb;
}

/* Contract Details section body — 3-column grid. Col 1 holds the
   payment-terms field; the warning slot always occupies cols 2-3 so
   grid auto-flow of later fields lands cleanly on the next row. */
.cfc-contract-grid[data-v-357cc917] {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 16px;
  align-items: end;
}
.cfc-warning-slot[data-v-357cc917] {
  grid-column: 2 / -1;
}
@media (max-width: 720px) {
.cfc-contract-grid[data-v-357cc917] { grid-template-columns: 1fr;
}
.cfc-warning-slot[data-v-357cc917]  { grid-column: 1 / -1;
}
}

/* Payment-terms row — BaseInput on the left with its own label above
   the input; the "days" suffix flex-aligned at the bottom so it sits
   next to the input, not the label. */
.cfc-payment-row[data-v-357cc917] {
  display: flex;
  align-items: flex-end;
  gap: 8px;
}
.cfc-num-input[data-v-357cc917] {
  flex: 1;
  min-width: 0;
}
.cfc-suffix[data-v-357cc917] {
  padding-bottom: 8px;
  font-size: 13px;
  font-weight: 600;
  color: #4e5a82;
  white-space: nowrap;
}

/* Payment-terms warning — brand-red text, aligns with the input row
   (not the label) via padding. Just red text per the spec — no pill
   background. */
.cfc-warning[data-v-357cc917] {
  padding-bottom: 8px;
  color: #b91c1c;
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.4;
}

/* Yes/No question list — visual match for the OSQ Opportunity Score
   sub-section (bordered card, per-row pill radios, green for Yes / red
   for No). Kept as its own cfc-q-* namespace since scoped styles don't
   cross component boundaries. If a third tab ever needs the same list,
   promote to fe-ui. */
.cfc-q-list[data-v-357cc917] {
  display: flex;
  flex-direction: column;
  border: 1px solid #e5e7eb;
  border-radius: 0.5rem;
  overflow: hidden;
}
.cfc-q-item[data-v-357cc917] {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 0.75rem 1rem;
  border-bottom: 1px solid #f3f4f6;
  transition: background 0.15s;
}
.cfc-q-item[data-v-357cc917]:last-child { border-bottom: none;
}
.cfc-q-item[data-v-357cc917]:hover      { background: #f9fafb;
}
.cfc-q-label[data-v-357cc917] {
  flex: 1;
  font-size: 0.875rem;
  color: #111827;
  line-height: 1.45;
}
.cfc-q-radios[data-v-357cc917] {
  flex-shrink: 0;
  display: flex;
  gap: 0.375rem;
}
.cfc-q-radio[data-v-357cc917] {
  display: inline-flex;
  align-items: center;
  padding: 0.3rem 1rem;
  border: 1.5px solid #e5e7eb;
  border-radius: 9999px;
  cursor: pointer;
  font-size: 0.8125rem;
  font-weight: 500;
  color: #6b7280;
  transition: border-color 0.15s, background 0.15s, color 0.15s;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.cfc-q-radio[data-v-357cc917]:hover { border-color: #9ca3af; color: #374151;
}
.cfc-q-radio--yes[data-v-357cc917] {
  border-color: #16a34a;
  background: #f0fdf4;
  color: #15803d;
}
.cfc-q-radio--no[data-v-357cc917] {
  border-color: #dc2626;
  background: #fff1f2;
  color: #b91c1c;
}
.cfc-q-radio-input[data-v-357cc917] { display: none;
}

/* Inline follow-up sub-panel — appears right below its parent question
   inside the bordered card. Soft grey background matches the row hover
   tone so it reads as a nested detail, not a separate section. */
.cfc-q-followup[data-v-357cc917] {
  padding: 0.75rem 1rem 0.85rem;
  background: #f9fafb;
  border-bottom: 1px solid #f3f4f6;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.cfc-q-followup[data-v-357cc917]:last-child { border-bottom: none;
}
.cfc-q-followup-label[data-v-357cc917] {
  font-size: 0.85rem;
  font-weight: 600;
  color: #374151;
}

/* Dropdown cell on the classification row — mirrors the flex-shrink
   sizing of .cfc-q-radios so the row's left-cell (label) still
   flex-grows and the right-cell stays a comfortable dropdown width. */
.cfc-q-select[data-v-357cc917] {
  flex-shrink: 0;
  width: 240px;
}

/* Warning strip — brand-red banner that flows inside the same
   bordered card as the question rows. Keeps the card's outline
   uninterrupted; last-child rule drops the trailing separator when
   this is the final child. */
.cfc-q-strip[data-v-357cc917] {
  padding: 0.7rem 1rem;
  font-size: 12.5px;
  font-weight: 600;
  line-height: 1.4;
  border-bottom: 1px solid #f3f4f6;
}
.cfc-q-strip[data-v-357cc917]:last-child { border-bottom: none;
}
.cfc-q-strip--warn[data-v-357cc917] {
  background: #fee2e2;
  color: #b91c1c;
}
@media (max-width: 640px) {
.cfc-q-item[data-v-357cc917]   { flex-direction: column; gap: 0.5rem;
}
.cfc-q-radios[data-v-357cc917] { justify-content: flex-start;
}
.cfc-q-select[data-v-357cc917] { width: 100%;
}
}

/* ── Invoicing Countries — per-market sub-boxes ────────────────
   One bordered card per market, laid out on a 3-column grid so all
   five markets fit in two rows (WCENA / TMEA / AP on row 1, LA / USC
   on row 2). Cells stretch to the tallest in each row via grid's
   default align-self so boxes stay level even when one has the "Other"
   free-text input open and others don't. Collapses to 2 then 1 column
   on narrower screens. */
.cfc-ic-body[data-v-357cc917] {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1rem;
}
@media (max-width: 960px) {
.cfc-ic-body[data-v-357cc917] { grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 640px) {
.cfc-ic-body[data-v-357cc917] { grid-template-columns: 1fr;
}
}
.cfc-ic-box[data-v-357cc917] {
  border: 1px solid #e5e7eb;
  border-radius: 0.5rem;
  overflow: hidden;
  background: #fff;
}
.cfc-ic-header[data-v-357cc917] {
  padding: 0.55rem 0.875rem;
  background: #f3f4f6;
  font-size: 0.8rem;
  font-weight: 700;
  color: #374151;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  border-bottom: 1px solid #e5e7eb;
}
.cfc-ic-content[data-v-357cc917] {
  padding: 0.875rem;
  display: flex;
  flex-direction: column;
  gap: 0.7rem;
}
/* Brand-red label on the "Other" free-text input for visual
   distinction, matching the same treatment used in OSQ Potential
   Competitors. `:deep` pierces the BaseInput scoped boundary. */
.cfc-ic-other[data-v-357cc917] .bp-label {
  color: #da2128;
}

/* ── Financial Items to Consider (advisory content) ────────────
   Static reference block — no inputs. Bold intros followed by
   bullet lists, capped by three tax-clause cards on the shared
   table-header background (#f4f6fb). */
.cfc-fin-body[data-v-357cc917] {
  display: flex;
  flex-direction: column;
  gap: 0.9rem;
}
.cfc-fin-bold[data-v-357cc917] {
  margin: 0;
  font-size: 13px;
  font-weight: 700;
  color: #1a1d35;
  line-height: 1.55;
}
/* Normal-weight advisory paragraph — same font-size as bullets, no
   emphasis. Used for the reference-note blocks that flow between the
   bold headings inside the Financial Items box. */
.cfc-fin-normal[data-v-357cc917] {
  margin: 0;
  font-size: 12.5px;
  font-weight: 400;
  color: #374151;
  line-height: 1.55;
}
/* Modifier used to insert a slightly larger visual gap ABOVE a normal
   paragraph — flags a "line break" separator between logical sections
   without needing an empty <hr> or spacer element. */
.cfc-fin-normal--divider[data-v-357cc917] {
  margin-top: 0.5rem;
}
/* Native list bullets are suppressed by display:flex — we render our
   own small red disc via ::before so each item carries a visible
   marker that matches the section's red-tone header. */
.cfc-fin-bullets[data-v-357cc917] {
  margin: 0 0 0 0.4rem;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  font-size: 12.5px;
  color: #374151;
  line-height: 1.55;
}
.cfc-fin-bullets li[data-v-357cc917] {
  position: relative;
  padding-left: 1.1rem;
}
.cfc-fin-bullets li[data-v-357cc917]::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.55em;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #da2128;
}
/* Italic sub-text under the "Example:" bullet — two worked-example
   paragraphs sit indented beneath the bullet, unbulleted and italic
   so they read as an illustration rather than another point. */
.cfc-fin-example[data-v-357cc917] {
  margin-top: 0.35rem;
  font-style: italic;
  color: #4b5563;
  display: flex;
  flex-direction: column;
  gap: 0.35rem;
}
.cfc-fin-example p[data-v-357cc917] { margin: 0;
}

/* Tax clauses — three paragraphs share ONE bordered box with the
   shared table header background so they read as a single reference
   block. Paragraph spacing (gap) provides visual separation between
   clauses without splitting the container into three cards. */
.cfc-fin-clauses[data-v-357cc917] {
  margin-top: 0.2rem;
  padding: 0.9rem 1rem;
  background: #f4f6fb;
  border: 1px solid #e2e5ee;
  border-radius: 6px;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.cfc-fin-clause[data-v-357cc917] {
  font-size: 12.5px;
  color: #1a1d35;
  line-height: 1.55;
  white-space: pre-line;
}

/* BaseAlert's default width is 480px which feels cramped when the field list
   includes "Please Justify" entries prefixed with long parent questions.
   Bump to 600px specifically for this modal via :deep() — leaves other
   BaseAlert usages untouched. */
[data-v-1db63393] .bp-alert { width: 600px;
}
.mand-intro[data-v-1db63393]    { margin: 0 0 12px; color: #4e5a82;
}
/* Cap the list height so the modal never exceeds the viewport — the intro
   text stays visible above and the button row stays visible below. 45vh is
   a comfortable middle ground; the list scrolls internally when long. */
.mand-scroll[data-v-1db63393]   { max-height: 45vh; overflow-y: auto; padding-right: 4px;
}
.mand-group[data-v-1db63393]    { margin-bottom: 16px;
}
.mand-group[data-v-1db63393]:last-child { margin-bottom: 0;
}
.mand-tab-label[data-v-1db63393] {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: #9098b0;
  margin-bottom: 6px;
}
.mand-list[data-v-1db63393]     { margin: 0; padding-left: 18px; list-style: disc;
}
.mand-list li[data-v-1db63393]  { margin-bottom: 4px;
}
.mand-jump[data-v-1db63393]     {
  background: none;
  border: none;
  color: #da2128;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  padding: 0;
  text-decoration: none;
  text-align: left;
}
.mand-jump[data-v-1db63393]:hover { text-decoration: underline;
}

.ds-section { border: 1px solid #d1d5e8; border-radius: 10px; overflow: hidden; margin-bottom: 16px;
}
.ds-section:last-child { margin-bottom: 0;
}
.ds-section-header {
  padding: 9px 18px; font-size: 11px; font-weight: 700;
  text-transform: uppercase; letter-spacing: 0.7px;
  color: #fff; display: flex; align-items: center; gap: 8px;
}
.ds-section--blue .ds-section-header { background: #191a37;
}
.ds-section--red  .ds-section-header { background: #da2128;
}
.ds-section-body { padding: 20px 18px; background: #fff;
}
.ds-grid   { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px 20px;
}
.ds-grid-2 { display: grid; grid-template-columns: 1fr 1fr;     gap: 16px 20px;
}
.ds-grid > *, .ds-grid-2 > * { min-width: 0;
}
.ds-stack { display: flex; flex-direction: column; gap: 16px;
}
.ds-save-error { margin-top: 16px; padding: 10px 14px; border-radius: 8px; background: #fee2e2; color: #b91c1c; font-size: 13px;
}
.ds-tab-placeholder { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60px 24px; gap: 12px; text-align: center;
}
.ds-placeholder-title { font-size: 15px; font-weight: 600; color: #4e5a82;
}
.ds-placeholder-sub   { font-size: 13px; color: #9098b0;
}
@media (max-width: 640px) {
.ds-grid, .ds-grid-2 { grid-template-columns: 1fr;
}
}

/* Red `*` marker used on every mandatory field label. Enlarged so it's
   readable even on small (10-12px) section headers where the default
   label-inherited size would be nearly invisible. The line-height:0 keeps
   it from stretching the line box; vertical-align middle sits it on the
   label baseline neatly. */
.bp-required {
  font-size: 16px;
  font-weight: 700;
  line-height: 0;
  vertical-align: middle;
  /* Guarantees breathing room between the label text and the `*` regardless
     of whether the source component included a leading space inside the
     span. BaseSearchSelect renders it with no space, others with " *". */
  margin-inline-start: 4px;
}

/* Mandatory-field highlight — applied for ~2.5s after the user clicks a
   field in the mandatory-fields modal. Global so it cascades through the
   Base component roots inside tab templates.
   Uses a positioned ::after pseudo-element (not outline or box-shadow):
   – outline gets clipped by .ds-card { overflow: clip } when the target
     spans the full card width (e.g. Practice Selection section).
   – inset box-shadow gets painted OVER by opaque children (header + body
     backgrounds inside .ds-section cover the parent's inset shadow).
   A positioned ::after with z-index sits on top of children and can't be
   clipped by ancestor overflow because it's inside the element's border-box. */
.ds-field-highlight {
  position: relative;
}
.ds-field-highlight::after {
  content: '';
  position: absolute;
  inset: 0;
  border: 2px solid #da2128;
  border-radius: inherit;
  pointer-events: none;
  z-index: 10;
  animation: ds-field-pulse 0.6s ease-in-out 2;
}
@keyframes ds-field-pulse {
0%, 100% { border-color: #da2128;
}
50%      { border-color: rgba(218, 33, 40, 0.35);
}
}

.ds-page[data-v-4b1f64a1] { padding: 20px;
}
.ds-page-header[data-v-4b1f64a1] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
  gap: 12px;
  flex-wrap: wrap;
}
.ds-page-identity[data-v-4b1f64a1] {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}
.ds-page-icon-box[data-v-4b1f64a1] {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: #fff0f0;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.ds-page-title[data-v-4b1f64a1] { font-size: 22px; font-weight: 700; color: #1a1d35; margin: 0;
}
.ds-page-sub[data-v-4b1f64a1] { font-size: 13px; color: #6b7db8; margin-top: 3px;
}
.ds-page-actions[data-v-4b1f64a1] { display: flex; align-items: center; gap: 10px; flex-shrink: 0;
}
.ds-card[data-v-4b1f64a1] {
  overflow: clip; /* clip keeps border-radius visual but does not block position:sticky */
}

/* ── Sticky tab nav + content header ── */
.ds-sticky-bar[data-v-4b1f64a1] {
  position: sticky;
  top: 0;
  z-index: 20;
  background: #fff;
  box-shadow: 0 2px 8px rgba(25, 26, 55, 0.1);
}

/* ── Step bar ── */
.ds-step-bar[data-v-4b1f64a1] { background: #f8f9fc; border-bottom: 1px solid #e4e7f0;
}
.ds-step-track[data-v-4b1f64a1] { display: flex; align-items: stretch;
}
.ds-step-item[data-v-4b1f64a1] {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 20px 6px 16px; flex: 1; cursor: pointer;
  border-radius: 8px 8px 0 0; transition: background 0.2s;
}
.ds-step--active[data-v-4b1f64a1] {
  background: #fff; border: 1px solid #e4e7f0;
  border-bottom: 3px solid #da2128;
  border-bottom-left-radius: 0; border-bottom-right-radius: 0;
}
.ds-step--locked[data-v-4b1f64a1] { cursor: not-allowed;
}
.ds-step--locked .ds-step-name[data-v-4b1f64a1] { color: #9098b0;
}
.ds-step-circle[data-v-4b1f64a1] {
  width: 20px; height: 20px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 700; flex-shrink: 0;
  background: #e4e7f0; color: #9098b0;
}
.ds-step--active .ds-step-circle[data-v-4b1f64a1] { background: #da2128; color: #fff;
}
.ds-step--done   .ds-step-circle[data-v-4b1f64a1] { background: #22c55e; color: #fff;
}
.ds-step-text[data-v-4b1f64a1] { flex: 1;
}
.ds-step-label[data-v-4b1f64a1] { font-size: 9px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: #9098b0;
}
.ds-step--active .ds-step-label[data-v-4b1f64a1] { color: #da2128;
}
.ds-step-name[data-v-4b1f64a1] { font-size: 12px; font-weight: 700; color: #1a1d35;
}
.ds-step-arrow[data-v-4b1f64a1] { color: #c8cde0; font-size: 14px; align-self: center; flex-shrink: 0;
}
.ds-step-badge[data-v-4b1f64a1] {
  font-size: 9px; font-weight: 600; padding: 1px 6px; border-radius: 8px;
  background: rgba(218,33,40,0.10); color: #da2128; white-space: nowrap;
}
.ds-step-badge--locked[data-v-4b1f64a1] { background: #f0f1f5; color: #9098b0;
}

/* ── Tab nav ── */
.ds-tab-nav[data-v-4b1f64a1] { display: flex; align-items: stretch; border-bottom: 1px solid #e4e7f0; background: #fff;
}
.ds-tab-nav[data-v-4b1f64a1] .bp-tabbar { flex: 1; border-bottom: none;
}
.ds-tab-arrow[data-v-4b1f64a1] {
  flex-shrink: 0; width: 36px;
  border: none; border-bottom: 3px solid transparent;
  background: #fff; color: #6b7db8; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background 0.15s, color 0.15s;
}
.ds-tab-arrow[data-v-4b1f64a1]:hover { background: #f5f6fb; color: #da2128;
}
.ds-tab-arrow[data-v-4b1f64a1]:disabled { opacity: 0.25; cursor: not-allowed;
}

/* ── Tab content ── */
.ds-tab-content[data-v-4b1f64a1] { padding: 28px 0px;
}
.ds-content-header[data-v-4b1f64a1] { display: flex; align-items: center; gap: 12px; padding: 10px 20px; background: white; border-bottom: #bbbbbb 1px solid; margin-top: 10px;
}

/* Fieldset wrapper on every tab template root — used to blanket-disable
   every native form control inside when the dealsheet is opened readonly.
   Reset default fieldset appearance so it stays invisible; `:deep` pierces
   the scoped-style boundary into each child tab component's template. */
[data-v-4b1f64a1] .tab-fieldset {
  border: 0;
  padding: 0;
  margin: 0;
  min-width: 0; /* fieldset defaults to min-content — breaks flex/grid children */
}
/* When the fieldset is disabled, use the default arrow cursor across the
   tab. The `not-allowed` red-circle cursor felt too aggressive as a
   whole-tab treatment; disabled fields still look disabled via their own
   greying, and the read-only pill in the sticky header makes the mode
   explicit. */
[data-v-4b1f64a1] .tab-fieldset[disabled],[data-v-4b1f64a1] .tab-fieldset[disabled] * {
  cursor: default !important;
}
/* Custom clickable divs (Win Prob row cards, GO/NO-GO tiles) and custom
   Base* triggers (PrimeVue's Select/MultiSelect/AutoComplete render as
   `<div>`s, not native form controls, so `fieldset[disabled]` doesn't
   cascade to them). `pointer-events: none` on them under the disabled
   fieldset blocks the trigger click — which in turn prevents PrimeVue's
   overlay dropdown from ever opening (the overlay itself teleports to
   body, so this trigger-side block is the right place to gate it). */
[data-v-4b1f64a1] .tab-fieldset[disabled] [role="radio"],[data-v-4b1f64a1] .tab-fieldset[disabled] [role="button"],[data-v-4b1f64a1] .tab-fieldset[disabled] .ds-gonogo-btn,[data-v-4b1f64a1] .tab-fieldset[disabled] .osq-wp-row-card,[data-v-4b1f64a1] .tab-fieldset[disabled] .osq-score-radio,[data-v-4b1f64a1] .tab-fieldset[disabled] .dss-yn-radio,[data-v-4b1f64a1] .tab-fieldset[disabled] .ds-practice-card--clickable,[data-v-4b1f64a1] .tab-fieldset[disabled] .p-select,[data-v-4b1f64a1] .tab-fieldset[disabled] .p-multiselect,[data-v-4b1f64a1] .tab-fieldset[disabled] .p-autocomplete,[data-v-4b1f64a1] .tab-fieldset[disabled] .bp-search-single-clear,[data-v-4b1f64a1] .tab-fieldset[disabled] .bp-search-single-wrap {
  pointer-events: none;
}
/* Base* triggers should visually look disabled too — soften the tint. */
[data-v-4b1f64a1] .tab-fieldset[disabled] .p-select,[data-v-4b1f64a1] .tab-fieldset[disabled] .p-multiselect,[data-v-4b1f64a1] .tab-fieldset[disabled] .p-autocomplete {
  opacity: 0.75;
  background: #f8f9fc;
}

/* Read-only mode badge — amber pill with lock icon, sits between the tab
   title and the status badge in the sticky content-header row. Visible
   only when the dealsheet was opened for viewing (props.readonly). */
.ds-readonly-badge[data-v-4b1f64a1] {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: 999px;
  background: #fef3c7;
  color: #92400e;
  border: 1px solid #fcd34d;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.4px;
  white-space: nowrap;
  flex-shrink: 0;
}
.ds-readonly-badge svg[data-v-4b1f64a1] { flex-shrink: 0;
}

/* ── Identity info strip (page header top-right) ── */
.ds-info-strip[data-v-4b1f64a1] {
  display: flex;
  align-items: stretch;
  background: #fff;
  border: 1px solid #e4e7f0;
  border-radius: 10px;
  overflow: hidden;
}
.ds-info-item[data-v-4b1f64a1] {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 18px;
  min-width: 0;
}
.ds-info-sep[data-v-4b1f64a1] {
  width: 1px;
  background: #e4e7f0;
  margin: 8px 0;
  flex-shrink: 0;
}
.ds-info-label[data-v-4b1f64a1] {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: #9098b0;
  white-space: nowrap;
}
.ds-info-value[data-v-4b1f64a1] {
  font-size: 13px;
  font-weight: 700;
  color: #1a1d35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 160px;
}
.ds-info-value--id[data-v-4b1f64a1] {
  display: flex;
  align-items: center;
  gap: 6px;
}
.ds-version-badge[data-v-4b1f64a1] {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 6px;
  background: #1a1d35;
  color: #fff;
  letter-spacing: 0.2px;
  flex-shrink: 0;
}
.ds-content-title-wrap[data-v-4b1f64a1] {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
}
.ds-content-title[data-v-4b1f64a1] {
  font-size: 16px;
  font-weight: 700;
  color: #1a1d35;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ds-content-subtitle[data-v-4b1f64a1] { font-size: 12px; color: #9098b0; margin-top: 2px;
}

/* Back link in the sticky header — left side. Mirrors the bottom footer back-link semantics. */
/* Layout hook only — visuals come from BaseButton variant="navy" size="sm".
   flex-shrink keeps the button intact when the header title next to it is
   long enough to compress its siblings. */
.ds-back-link[data-v-4b1f64a1] { flex-shrink: 0;
}

/* ── Status badge ── */
.ds-status-badge[data-v-4b1f64a1] {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 10px; border-radius: 20px;
  font-size: 11px; font-weight: 600;
  background: rgba(250,204,21,0.15); color: #b45309;
}
.ds-status-dot[data-v-4b1f64a1] { width: 6px; height: 6px; border-radius: 50%; background: #f59e0b;
}

/* Status colour modifiers — mirrors listing screen bp-tbl-status colours exactly */
.ds-status-badge--draft[data-v-4b1f64a1]      { background: #f3f4f6; color: #6b7280;
}
.ds-status-badge--draft      .ds-status-dot[data-v-4b1f64a1] { background: #9ca3af;
}
.ds-status-badge--inprogress[data-v-4b1f64a1] { background: #eff6ff; color: #2563eb;
}
.ds-status-badge--inprogress .ds-status-dot[data-v-4b1f64a1] { background: #3b82f6;
}
.ds-status-badge--develop[data-v-4b1f64a1]    { background: #fffbeb; color: #b45309;
}
.ds-status-badge--develop    .ds-status-dot[data-v-4b1f64a1] { background: #f59e0b;
}
.ds-status-badge--proposed[data-v-4b1f64a1]   { background: #f0fdf4; color: #16a34a;
}
.ds-status-badge--proposed   .ds-status-dot[data-v-4b1f64a1] { background: #22c55e;
}
.ds-status-badge--approved[data-v-4b1f64a1]   { background: #f0fdf4; color: #16a34a;
}
.ds-status-badge--approved   .ds-status-dot[data-v-4b1f64a1] { background: #22c55e;
}
.ds-status-badge--completed[data-v-4b1f64a1]  { background: #f0fdf4; color: #16a34a;
}
.ds-status-badge--completed  .ds-status-dot[data-v-4b1f64a1] { background: #22c55e;
}
.ds-status-badge--closed[data-v-4b1f64a1]     { background: #f3f4f6; color: #6b7280;
}
.ds-status-badge--closed     .ds-status-dot[data-v-4b1f64a1] { background: #9ca3af;
}
.ds-status-badge--nogo[data-v-4b1f64a1]       { background: #fff1f2; color: #dc2626;
}
.ds-status-badge--nogo       .ds-status-dot[data-v-4b1f64a1] { background: #ef4444;
}
.ds-status-badge--rejected[data-v-4b1f64a1]   { background: #f3f4f6; color: #6b7280;
}
.ds-status-badge--rejected   .ds-status-dot[data-v-4b1f64a1] { background: #9ca3af;
}

/* ── Footer ── */
.ds-footer[data-v-4b1f64a1] {
  display: flex; justify-content: space-between; align-items: center;
}
.ds-footer-left[data-v-4b1f64a1]  { display: flex; gap: 10px; align-items: center;
}
.ds-footer-right[data-v-4b1f64a1] { display: flex; gap: 10px;
}
@media (max-width: 768px) {
.ds-page[data-v-4b1f64a1] { padding: 12px;
}
.ds-tab-content[data-v-4b1f64a1] { padding: 16px;
}
.ds-footer[data-v-4b1f64a1] { flex-direction: column; gap: 12px; padding: 16px;
}
.ds-footer-right[data-v-4b1f64a1] { width: 100%; justify-content: flex-end;
}
.ds-info-strip[data-v-4b1f64a1] { display: none;
}
}
*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}/*
! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com
*//*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box; /* 1 */
  border-width: 0; /* 2 */
  border-style: solid; /* 2 */
  border-color: #e5e7eb; /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5; /* 1 */
  -webkit-text-size-adjust: 100%; /* 2 */
  -moz-tab-size: 4; /* 3 */
  -o-tab-size: 4;
     tab-size: 4; /* 3 */
  font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */
  font-feature-settings: normal; /* 5 */
  font-variation-settings: normal; /* 6 */
  -webkit-tap-highlight-color: transparent; /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0; /* 1 */
  line-height: inherit; /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0; /* 1 */
  color: inherit; /* 2 */
  border-top-width: 1px; /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */
  font-feature-settings: normal; /* 2 */
  font-variation-settings: normal; /* 3 */
  font-size: 1em; /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0; /* 1 */
  border-color: inherit; /* 2 */
  border-collapse: collapse; /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit; /* 1 */
  font-feature-settings: inherit; /* 1 */
  font-variation-settings: inherit; /* 1 */
  font-size: 100%; /* 1 */
  font-weight: inherit; /* 1 */
  line-height: inherit; /* 1 */
  letter-spacing: inherit; /* 1 */
  color: inherit; /* 1 */
  margin: 0; /* 2 */
  padding: 0; /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button; /* 1 */
  background-color: transparent; /* 2 */
  background-image: none; /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield; /* 1 */
  outline-offset: -2px; /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button; /* 1 */
  font: inherit; /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/
dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1; /* 1 */
  color: #9ca3af; /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/
:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block; /* 1 */
  vertical-align: middle; /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */
[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}
.container {
  width: 100%;
}
@media (min-width: 640px) {

  .container {
    max-width: 640px;
  }
}
@media (min-width: 768px) {

  .container {
    max-width: 768px;
  }
}
@media (min-width: 1024px) {

  .container {
    max-width: 1024px;
  }
}
@media (min-width: 1280px) {

  .container {
    max-width: 1280px;
  }
}
@media (min-width: 1536px) {

  .container {
    max-width: 1536px;
  }
}
:where([data-mfe="dealsheetApp"]) .\!visible {
  visibility: visible !important;
}
:where([data-mfe="dealsheetApp"]) .visible {
  visibility: visible;
}
:where([data-mfe="dealsheetApp"]) .invisible {
  visibility: hidden;
}
:where([data-mfe="dealsheetApp"]) .collapse {
  visibility: collapse;
}
:where([data-mfe="dealsheetApp"]) .static {
  position: static;
}
:where([data-mfe="dealsheetApp"]) .fixed {
  position: fixed;
}
:where([data-mfe="dealsheetApp"]) .absolute {
  position: absolute;
}
:where([data-mfe="dealsheetApp"]) .relative {
  position: relative;
}
:where([data-mfe="dealsheetApp"]) .sticky {
  position: sticky;
}
:where([data-mfe="dealsheetApp"]) .mb-1 {
  margin-bottom: 0.25rem;
}
:where([data-mfe="dealsheetApp"]) .mb-6 {
  margin-bottom: 1.5rem;
}
:where([data-mfe="dealsheetApp"]) .\!block {
  display: block !important;
}
:where([data-mfe="dealsheetApp"]) .block {
  display: block;
}
:where([data-mfe="dealsheetApp"]) .inline {
  display: inline;
}
:where([data-mfe="dealsheetApp"]) .flex {
  display: flex;
}
:where([data-mfe="dealsheetApp"]) .inline-flex {
  display: inline-flex;
}
:where([data-mfe="dealsheetApp"]) .table {
  display: table;
}
:where([data-mfe="dealsheetApp"]) .flow-root {
  display: flow-root;
}
:where([data-mfe="dealsheetApp"]) .grid {
  display: grid;
}
:where([data-mfe="dealsheetApp"]) .hidden {
  display: none;
}
:where([data-mfe="dealsheetApp"]) .w-full {
  width: 100%;
}
:where([data-mfe="dealsheetApp"]) .flex-shrink {
  flex-shrink: 1;
}
:where([data-mfe="dealsheetApp"]) .grow {
  flex-grow: 1;
}
:where([data-mfe="dealsheetApp"]) .border-collapse {
  border-collapse: collapse;
}
:where([data-mfe="dealsheetApp"]) .transform {
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
:where([data-mfe="dealsheetApp"]) .resize {
  resize: both;
}
:where([data-mfe="dealsheetApp"]) .flex-col {
  flex-direction: column;
}
:where([data-mfe="dealsheetApp"]) .flex-col-reverse {
  flex-direction: column-reverse;
}
:where([data-mfe="dealsheetApp"]) .flex-wrap {
  flex-wrap: wrap;
}
:where([data-mfe="dealsheetApp"]) .items-start {
  align-items: flex-start;
}
:where([data-mfe="dealsheetApp"]) .justify-between {
  justify-content: space-between;
}
:where([data-mfe="dealsheetApp"]) .gap-2 {
  gap: 0.5rem;
}
:where([data-mfe="dealsheetApp"]) .gap-3 {
  gap: 0.75rem;
}
:where([data-mfe="dealsheetApp"]) :is(.space-y-4 > :not([hidden]) ~ :not([hidden])) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1rem * var(--tw-space-y-reverse));
}
:where([data-mfe="dealsheetApp"]) .rounded {
  border-radius: 0.25rem;
}
:where([data-mfe="dealsheetApp"]) .border {
  border-width: 1px;
}
:where([data-mfe="dealsheetApp"]) .p-6 {
  padding: 1.5rem;
}
:where([data-mfe="dealsheetApp"]) .px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}
:where([data-mfe="dealsheetApp"]) .py-12 {
  padding-top: 3rem;
  padding-bottom: 3rem;
}
:where([data-mfe="dealsheetApp"]) .pt-4 {
  padding-top: 1rem;
}
:where([data-mfe="dealsheetApp"]) .text-center {
  text-align: center;
}
:where([data-mfe="dealsheetApp"]) .text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}
:where([data-mfe="dealsheetApp"]) .text-xl {
  font-size: 1.25rem;
  line-height: 1.75rem;
}
:where([data-mfe="dealsheetApp"]) .font-medium {
  font-weight: 500;
}
:where([data-mfe="dealsheetApp"]) .font-semibold {
  font-weight: 600;
}
:where([data-mfe="dealsheetApp"]) .uppercase {
  text-transform: uppercase;
}
:where([data-mfe="dealsheetApp"]) .italic {
  font-style: italic;
}
:where([data-mfe="dealsheetApp"]) .tabular-nums {
  --tw-numeric-spacing: tabular-nums;
  font-variant-numeric: var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction);
}
:where([data-mfe="dealsheetApp"]) .text-gray-500 {
  --tw-text-opacity: 1;
  color: rgb(107 114 128 / var(--tw-text-opacity, 1));
}
:where([data-mfe="dealsheetApp"]) .text-gray-700 {
  --tw-text-opacity: 1;
  color: rgb(55 65 81 / var(--tw-text-opacity, 1));
}
:where([data-mfe="dealsheetApp"]) .text-red-600 {
  --tw-text-opacity: 1;
  color: rgb(220 38 38 / var(--tw-text-opacity, 1));
}
:where([data-mfe="dealsheetApp"]) .underline {
  text-decoration-line: underline;
}
:where([data-mfe="dealsheetApp"]) .shadow {
  --tw-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1);
  --tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
:where([data-mfe="dealsheetApp"]) .outline {
  outline-style: solid;
}
:where([data-mfe="dealsheetApp"]) .ring {
  --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
  --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);
  box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000);
}
:where([data-mfe="dealsheetApp"]) .blur {
  --tw-blur: blur(8px);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
:where([data-mfe="dealsheetApp"]) .grayscale {
  --tw-grayscale: grayscale(100%);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
:where([data-mfe="dealsheetApp"]) .invert {
  --tw-invert: invert(100%);
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
:where([data-mfe="dealsheetApp"]) .filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}
:where([data-mfe="dealsheetApp"]) .backdrop-filter {
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}
:where([data-mfe="dealsheetApp"]) .transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}
:where([data-mfe="dealsheetApp"]) .ease-in-out {
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}

/* ─────────────────────────────────────────────────────────────────────────
   PrimeVue design-token fallbacks
   The shell uses PrimeVue in unstyled/headless mode so none of the
   --p-* design-token variables are set globally.  @primeuix/styles converts
   dt('x.y') → var(--p-x-y) at runtime; without these values every Dialog
   element (mask, box, header, footer) renders transparent.
   ───────────────────────────────────────────────────────────────────────── */
:root {
  /* Overlay mask (used by Dialog, Drawer, etc.) */
  --px-mask-background:          rgba(0, 0, 0, 0.5);
  --p-mask-background:           rgba(0, 0, 0, 0.5);
  --p-mask-color:                rgba(255, 255, 255, 0.7);
  --p-mask-transition-duration:  0.2s;

  /* Dialog box */
  --p-dialog-background:         #ffffff;
  --p-dialog-border-color:       #e4e7f0;
  --p-dialog-color:              #1a1d35;
  --p-dialog-border-radius:      12px;
  --p-dialog-shadow:             0 20px 60px -8px rgba(0, 0, 0, 0.25), 0 4px 16px rgba(0, 0, 0, 0.08);

  /* Dialog header */
  --p-dialog-header-padding:     1.125rem 1.375rem;
  --p-dialog-header-gap:         0.5rem;

  /* Dialog title */
  --p-dialog-title-font-size:    1rem;
  --p-dialog-title-font-weight:  700;

  /* Dialog content */
  --p-dialog-content-padding:    1.25rem 1.375rem;

  /* Dialog footer */
  --p-dialog-footer-padding:     0.75rem 1.375rem;
  --p-dialog-footer-gap:         0.5rem;
}
@media (min-width: 640px) {

  :where([data-mfe="dealsheetApp"]) .sm\:flex-row {
    flex-direction: row;
  }

  :where([data-mfe="dealsheetApp"]) .sm\:items-center {
    align-items: center;
  }

  :where([data-mfe="dealsheetApp"]) .sm\:justify-end {
    justify-content: flex-end;
  }
}
