/** GENERATED FILE — edit src/styles/* and run npm run build. */

/* ===== BEGIN 00-foundation-and-shell.css ===== */
/**
 * PeliPro style source unit.
 * Run `npm run build` after editing; do not edit public/assets/css/app.css directly.
 */
    :root {
      --background: #eef2f0;
      --surface: #ffffff;
      --surface-muted: #f7f9f8;
      --border: #d6ded9;
      --text: #1f2924;
      --text-muted: #68756e;
      --primary: #315f4d;
      --primary-hover: #254b3d;
      --danger: #a13d3d;
      --shadow: 0 16px 40px rgba(31, 41, 36, 0.12);
      --border-color: var(--border);
      --muted-text: var(--text-muted);
      --primary-color: var(--primary);
      --body-text: var(--text);
    }

    * {
      box-sizing: border-box;
    }

    body {
      min-height: 100vh;
      margin: 0;
      background: var(--background);
      color: var(--text);
      font-family:
        Inter,
        system-ui,
        -apple-system,
        BlinkMacSystemFont,
        "Segoe UI",
        sans-serif;
    }

    button,
    input {
      font: inherit;
    }

    button {
      cursor: pointer;
    }

    .hidden {
      display: none !important;
    }

    .loading-screen {
      display: grid;
      min-height: 100vh;
      place-items: center;
      padding: 24px;
    }

    .loading-card {
      display: grid;
      justify-items: center;
      gap: 14px;
      color: var(--text-muted);
      font-size: 15px;
    }

    .loading-logo {
      width: 92px;
      height: 92px;
      border-radius: 22px;
      object-fit: cover;
      box-shadow: var(--shadow);
    }

    .login-screen {
      display: grid;
      min-height: 100vh;
      place-items: center;
      padding: 24px;
    }

    .login-card {
      width: min(100%, 430px);
      padding: 38px;
      border: 1px solid var(--border);
      border-radius: 18px;
      background: var(--surface);
      box-shadow: var(--shadow);
    }

    .brand {
      margin-bottom: 30px;
      text-align: center;
    }

    .brand-artwork {
      display: block;
      width: min(100%, 340px);
      margin: 0 auto 24px;
      border-radius: 16px;
      box-shadow: 0 14px 34px rgba(31, 41, 36, 0.16);
    }

    .brand-kicker {
      margin: 0 0 8px;
      color: var(--primary);
      font-size: 13px;
      font-weight: 800;
      letter-spacing: 0.12em;
      text-transform: uppercase;
    }

    .brand h1 {
      margin: 0;
      font-size: 30px;
      line-height: 1.15;
    }

    .brand p {
      margin: 10px 0 0;
      color: var(--text-muted);
      line-height: 1.55;
    }

    .form-group {
      margin-bottom: 18px;
    }

    .form-group label {
      display: block;
      margin-bottom: 7px;
      font-size: 14px;
      font-weight: 700;
    }

    .form-group input {
      width: 100%;
      padding: 12px 13px;
      border: 1px solid var(--border);
      border-radius: 9px;
      background: var(--surface);
      color: var(--text);
      outline: none;
    }

    .form-group input:focus {
      border-color: var(--primary);
      box-shadow: 0 0 0 3px rgba(49, 95, 77, 0.13);
    }

    .primary-button {
      width: 100%;
      padding: 12px 16px;
      border: 0;
      border-radius: 9px;
      background: var(--primary);
      color: #ffffff;
      font-weight: 800;
    }

    .primary-button:hover {
      background: var(--primary-hover);
    }

    .primary-button:disabled {
      cursor: wait;
      opacity: 0.65;
    }

    .login-recovery-row {
      display: flex;
      justify-content: center;
      margin-top: 12px;
    }

    .login-recovery-button {
      padding: 4px 6px;
      border: 0;
      background: transparent;
      color: var(--primary);
      cursor: pointer;
      font: inherit;
      font-size: 14px;
      font-weight: 800;
      text-decoration: underline;
      text-underline-offset: 3px;
    }

    .login-recovery-button:hover {
      color: var(--primary-hover);
    }

    .login-recovery-button:disabled {
      cursor: wait;
      opacity: 0.65;
    }

    .login-recovery-status {
      min-height: 22px;
      margin: 10px 0 0;
      color: var(--text-muted);
      font-size: 13px;
      line-height: 1.45;
      text-align: center;
    }

    .error-message {
      min-height: 22px;
      margin: 14px 0 0;
      color: var(--danger);
      font-size: 14px;
      line-height: 1.45;
    }

    .app-shell {
      min-height: 100vh;
    }

    .app-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 20px;
      min-height: 72px;
      padding: 14px 28px;
      border-bottom: 1px solid var(--border);
      background: var(--surface);
    }

    .app-brand {
      display: flex;
      align-items: center;
      gap: 12px;
    }

    .app-brand-mark {
      width: 58px;
      height: 58px;
      object-fit: contain;
      flex: 0 0 auto;
    }

    .app-title {
      margin: 0;
      font-size: 20px;
    }

    .app-subtitle {
      margin: 2px 0 0;
      color: var(--text-muted);
      font-size: 12px;
      font-weight: 700;
    }

    .header-user {
      display: flex;
      align-items: center;
      gap: 14px;
    }

    .user-details {
      text-align: right;
    }

    .user-name {
      display: block;
      font-size: 14px;
      font-weight: 800;
    }

    .user-role {
      display: block;
      margin-top: 2px;
      color: var(--text-muted);
      font-size: 12px;
      text-transform: capitalize;
    }

    .secondary-button {
      padding: 9px 13px;
      border: 1px solid var(--border);
      border-radius: 8px;
      background: var(--surface);
      color: var(--text);
      font-weight: 700;
    }

    .secondary-button:hover {
      background: var(--surface-muted);
    }

    .app-content {
      width: min(1180px, calc(100% - 40px));
      margin: 0 auto;
      padding: 42px 0;
    }

    .welcome-panel {
      padding: 34px;
      border: 1px solid var(--border);
      border-radius: 16px;
      background: var(--surface);
      box-shadow: 0 8px 24px rgba(31, 41, 36, 0.06);
    }

    .welcome-panel h2 {
      margin: 0 0 10px;
      font-size: 28px;
    }

    .welcome-panel p {
      max-width: 720px;
      margin: 0;
      color: var(--text-muted);
      line-height: 1.6;
    }

    .status-grid {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 18px;
      margin-top: 24px;
    }

    .status-card {
      padding: 22px;
      border: 1px solid var(--border);
      border-radius: 12px;
      background: var(--surface-muted);
    }

    .status-label {
      display: block;
      margin-bottom: 7px;
      color: var(--text-muted);
      font-size: 13px;
      font-weight: 800;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    .status-value {
      font-size: 18px;
      font-weight: 800;
    }

     .workspace-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 20px;
      margin-bottom: 24px;
    }

    .workspace-heading h2 {
      margin: 0;
      font-size: 28px;
    }

    .workspace-heading p {
      margin: 8px 0 0;
      color: var(--text-muted);
      line-height: 1.5;
    }

    .action-button {
      flex-shrink: 0;
      padding: 11px 16px;
      border: 0;
      border-radius: 9px;
      background: var(--primary);
      color: #ffffff;
      font-weight: 800;
    }

    .action-button:hover {
      background: var(--primary-hover);
    }

    .pipeline-layout {
      display: grid;
      grid-template-columns: 220px minmax(0, 1fr);
      gap: 24px;
      align-items: start;
    }

    .side-navigation {
      overflow: hidden;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: 0 8px 24px rgba(31, 41, 36, 0.05);
    }

    .side-navigation-heading {
      padding: 16px 18px 10px;
      color: var(--text-muted);
      font-size: 12px;
      font-weight: 800;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    .side-navigation-section {
      padding: 15px 18px 7px;
      border-top: 1px solid var(--border);
      color: var(--text-muted);
      font-size: 10px;
      font-weight: 900;
      letter-spacing: 0.1em;
      text-transform: uppercase;
    }

    .side-navigation-heading + .navigation-button,
    .side-navigation-section + .navigation-button {
      border-top: 0;
    }

    .navigation-button {
      display: block;
      width: 100%;
      padding: 13px 18px;
      border: 0;
      border-top: 1px solid var(--border);
      background: var(--surface);
      color: var(--text);
      text-align: left;
      font-weight: 700;
    }

    .navigation-count {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 22px;
      min-height: 20px;
      margin-left: auto;
      padding: 1px 6px;
      border-radius: 999px;
      background: rgba(255, 255, 255, 0.12);
      color: inherit;
      font-size: 10px;
      font-weight: 800;
    }

    .navigation-button.has-work .navigation-count {
      background: rgba(161, 61, 61, 0.16);
      color: var(--danger);
    }

    #vendorsNavigationButton {
      display: flex;
      align-items: center;
      gap: 8px;
    }

    .navigation-button:hover {
      background: var(--surface-muted);
    }

    .navigation-button.active {
      background: rgba(49, 95, 77, 0.1);
      color: var(--primary);
      box-shadow: inset 4px 0 0 var(--primary);
    }

    .navigation-button:disabled {
      cursor: default;
      color: #99a39e;
    }

    .workspace-panel {
      width: 100%;
      min-width: 0;
      max-width: 100%;
      box-sizing: border-box;
      overflow-x: hidden;
    }

    .workspace-panel > * {
      width: 100%;
      max-width: 100%;
      box-sizing: border-box;
    }

    #opportunitiesWorkspace,
    #tasksWorkspace {
      width: 100%;
      min-width: 0;
      max-width: none;
      align-self: stretch;
    }

    #opportunitiesWorkspace .directory-panel,
    #tasksWorkspace .directory-panel,
    #opportunitiesWorkspace .summary-grid,
    #tasksWorkspace .summary-grid,
    #opportunitiesWorkspace .workspace-header,
    #tasksWorkspace .workspace-header {
      width: 100%;
      max-width: none;
      box-sizing: border-box;
    }

    .pipeline-layout {
      width: 100%;
      min-width: 0;
    }

    .directory-panel,
    .directory-section,
    .form-panel,
    .dashboard-panel,
    .dashboard-card,
    .report-panel,
    .report-controls-panel {
      min-width: 0;
      max-width: 100%;
      box-sizing: border-box;
    }

    .record-list,
    .report-table-wrap,
    .directory-toolbar,
    .form-grid {
      min-width: 0;
      max-width: 100%;
    }

    .thank-you-template-grid {
      display: grid;
      grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.85fr);
      gap: 20px;
      align-items: start;
    }

    .thank-you-pack-list {
      max-height: 360px;
      overflow: auto;
      border: 1px solid var(--border);
      border-radius: 10px;
      background: var(--surface);
    }

    .acknowledgment-summary-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }

    .acknowledgment-queue-toolbar {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      margin: 12px 0;
      flex-wrap: wrap;
    }

    .acknowledgment-pack-actions { margin-top: 14px; }

    .acknowledgment-post-print {
      margin-top: 14px;
      padding: 12px 14px;
      border: 1px solid var(--border);
      border-radius: 10px;
      background: var(--surface-muted, #f5f8f6);
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 14px;
      flex-wrap: wrap;
    }

    .thank-you-pack-row {
      display: grid;
      grid-template-columns: auto minmax(0, 1fr) auto;
      align-items: center;
      gap: 10px;
      padding: 12px 14px;
      border-bottom: 1px solid var(--border);
    }

    .thank-you-pack-main { min-width: 0; }
    .thank-you-pack-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
    .acknowledgment-status-pill { display:inline-flex; align-items:center; border-radius:999px; padding:3px 8px; margin-left:6px; font-size:11px; font-weight:700; background:#eef1f3; }
    .acknowledgment-status-pill.printed { background:#e7f4ef; color:#245b43; }
    .acknowledgment-status-pill.custom { background:#fff4d6; color:#735313; }
    .acknowledgment-letter-edit-modal { width:min(760px,100%); }
    .acknowledgment-letter-edit-modal textarea { min-height:360px; line-height:1.5; }

    @media (max-width: 900px) {
      .acknowledgment-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }
    @media (max-width: 650px) {
      .thank-you-pack-row { grid-template-columns:auto minmax(0,1fr); }
      .thank-you-pack-actions { grid-column:2; justify-content:flex-start; }
    }

    .thank-you-pack-row:last-child {
      border-bottom: 0;
    }

    .thank-you-pack-row input {
      margin-top: 3px;
    }

    .template-token-list {
      margin: 8px 0 0;
      color: var(--text-muted);
      font-size: 12px;
      line-height: 1.6;
    }

    .summary-grid {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 16px;
      margin-bottom: 24px;
    }

    .summary-card {
      padding: 18px;
      border: 1px solid var(--border);
      border-radius: 12px;
      background: var(--surface);
    }

    .summary-filter-card {
      width: 100%;
      color: var(--text);
      text-align: left;
      transition:
        border-color 0.15s ease,
        box-shadow 0.15s ease,
        transform 0.15s ease;
    }

    .summary-filter-card:hover {
      border-color: var(--primary);
      box-shadow: 0 8px 20px rgba(31, 41, 36, 0.08);
      transform: translateY(-1px);
    }

    .summary-filter-card.active {
      border-color: var(--primary);
      background: rgba(49, 95, 77, 0.08);
      box-shadow: inset 0 0 0 1px var(--primary);
    }

    .summary-filter-card:focus-visible {
      outline: 3px solid rgba(49, 95, 77, 0.2);
      outline-offset: 2px;
    }

    .summary-label {
      display: block;
      margin-bottom: 7px;
      color: var(--text-muted);
      font-size: 12px;
      font-weight: 800;
      letter-spacing: 0.05em;
      text-transform: uppercase;
    }

    .summary-value {
      font-size: 25px;
      font-weight: 800;
    }

    .dashboard-summary-grid {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 16px;
      margin-bottom: 24px;
    }

    .dashboard-panels {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 20px;
    }

    .dashboard-panel {
      min-width: 0;
      overflow: hidden;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: 0 8px 24px rgba(31, 41, 36, 0.05);
    }

    .dashboard-panel-header {
      padding: 18px 20px;
      border-bottom: 1px solid var(--border);
      background: rgba(49, 95, 77, 0.06);
    }

    .dashboard-panel-header h3 {
      margin: 0;
      font-size: 18px;
    }

    .dashboard-panel-header p {
      margin: 6px 0 0;
      color: var(--text-muted);
      font-size: 13px;
      line-height: 1.45;
    }

    .dashboard-list {
      display: grid;
    }

    .dashboard-list-item {
      display: grid;
      gap: 6px;
      width: 100%;
      padding: 16px 20px;
      border: 0;
      border-bottom: 1px solid var(--border);
      background: var(--surface);
      color: var(--text);
      text-align: left;
    }

    .dashboard-list-item:last-child {
      border-bottom: 0;
    }

    .dashboard-list-item:hover {
      background: var(--surface-muted);
    }

    .dashboard-list-item:focus-visible {
      outline: 3px solid rgba(49, 95, 77, 0.2);
      outline-offset: -3px;
    }

    .dashboard-list-title {
      font-size: 14px;
      font-weight: 800;
      line-height: 1.4;
    }

    .dashboard-list-meta {
      color: var(--text-muted);
      font-size: 12px;
      line-height: 1.45;
    }

    .dashboard-list-alert {
      color: var(--danger);
      font-weight: 800;
    }

    .dashboard-empty {
      padding: 28px 20px;
      color: var(--text-muted);
      font-size: 14px;
      line-height: 1.5;
      text-align: center;
    }
/* ===== END 00-foundation-and-shell.css ===== */


/* ===== BEGIN 10-common-components.css ===== */
/**
 * PeliPro style source unit.
 * Run `npm run build` after editing; do not edit public/assets/css/app.css directly.
 */
    body.viewer-mode .action-button,
    body.viewer-mode .form-actions,
    body.viewer-mode [data-action="edit-application"],
    body.viewer-mode [data-action="edit-task"],
    body.viewer-mode [data-action="edit-funder"],
    body.viewer-mode [data-action="edit-opportunity"],
    body.viewer-mode [data-action="edit-contact"],
    body.viewer-mode [data-action="log-contact-interaction"],
    body.viewer-mode [data-action="deactivate-opportunity"],
    body.viewer-mode [data-action="reactivate-opportunity"],
    body.viewer-mode .editor-only-control {
      display: none !important;
    }

    .admin-only-control,
    .admin-only-record-action {
      display: none !important;
    }

    body.admin-mode .navigation-button.admin-only-control {
      display: block !important;
    }

    body.admin-mode .side-navigation-section.admin-only-control:not(.hidden),
    body.admin-mode .workspace-panel.admin-only-control:not(.hidden),
    body.admin-mode section.admin-only-control:not(.hidden) {
      display: block !important;
    }

    body.admin-mode button.admin-only-control:not(.hidden),
    body.admin-mode .admin-only-record-action {
      display: inline-flex !important;
    }

    .access-note {
      margin: 0 0 20px;
      padding: 14px 16px;
      border: 1px solid var(--border);
      border-radius: 10px;
      background: rgba(49, 95, 77, 0.06);
      color: var(--text-muted);
      font-size: 13px;
      line-height: 1.5;
    }

    .admin-user-list {
      display: grid;
      gap: 16px;
      padding: 18px;
    }

    .admin-user-card {
      padding: 20px;
      border: 1px solid var(--border);
      border-radius: 13px;
      background: var(--surface);
      box-shadow: 0 6px 18px rgba(31, 41, 36, 0.06);
    }

    .admin-user-card-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 14px;
    }

    .admin-user-card h4 {
      margin: 0;
      font-size: 18px;
    }

    .admin-user-email {
      margin: 5px 0 0;
      color: var(--text-muted);
      font-size: 13px;
    }

    .admin-user-controls {
      display: grid;
      grid-template-columns: minmax(150px, 1fr) minmax(140px, 1fr);
      gap: 14px;
      margin-top: 18px;
    }

    .admin-user-actions {
      display: flex;
      align-items: center;
      justify-content: flex-end;
      flex-wrap: wrap;
      gap: 9px;
      margin-top: 16px;
    }

    .modal-overlay {
      position: fixed;
      z-index: 1000;
      inset: 0;
      display: grid;
      place-items: center;
      padding: 24px;
      background: rgba(18, 27, 23, 0.72);
    }

    .modal-card {
      width: min(100%, 520px);
      max-height: calc(100vh - 48px);
      overflow-y: auto;
      padding: 28px;
      border-radius: 16px;
      background: var(--surface);
      box-shadow: var(--shadow);
    }

    .modal-card h2 {
      margin: 0 0 8px;
      font-size: 25px;
    }

    .modal-card > p {
      margin: 0 0 22px;
      color: var(--text-muted);
      line-height: 1.55;
    }

    @media (max-width: 700px) {
      .admin-user-controls {
        grid-template-columns: 1fr;
      }
    }

    .form-panel {
      margin-bottom: 24px;
      padding: 24px;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: 0 8px 24px rgba(31, 41, 36, 0.05);
    }

    .form-panel-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      margin-bottom: 22px;
    }

    .form-panel-header h3 {
      margin: 0;
      font-size: 21px;
    }

    .form-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 18px;
    }

    .form-sections {
      display: grid;
      gap: 26px;
    }

    .form-section {
      min-width: 0;
      overflow: hidden;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: 0 6px 18px rgba(31, 41, 36, 0.06);
    }

    .form-section-header {
      padding: 16px 20px;
      border-bottom: 1px solid var(--border);
      background: rgba(49, 95, 77, 0.1);
    }

    .form-section-header h4 {
      margin: 0;
      color: var(--primary);
      font-size: 18px;
    }

    .form-section-header p {
      margin: 5px 0 0;
      color: var(--text-muted);
      font-size: 13px;
      line-height: 1.45;
    }

    .form-section .form-grid {
      padding: 22px;
    }

    .form-section .form-group {
      margin-bottom: 0;
    }

    .record-view-sections {
      display: grid;
      gap: 16px;
      margin-top: 18px;
    }

    .record-view-section {
      overflow: hidden;
      border: 1px solid var(--border);
      border-radius: 11px;
      background: var(--surface-muted);
    }

    .record-view-section-header {
      padding: 11px 14px;
      border-bottom: 1px solid var(--border);
      background: rgba(49, 95, 77, 0.08);
    }

    .record-view-section-header h5 {
      margin: 0;
      color: var(--primary);
      font-size: 13px;
      font-weight: 800;
      letter-spacing: 0.05em;
      text-transform: uppercase;
    }

    .record-view-section .opportunity-meta-grid {
      margin-top: 0;
      padding: 14px;
    }

    .record-view-section .opportunity-meta-item {
      background: var(--surface);
    }

    .record-view-section .opportunity-notes {
      margin: 0;
      padding: 0 14px 14px;
    }

    .form-group.full-width {
      grid-column: 1 / -1;
    }

    .form-group textarea,
    .form-group select {
      width: 100%;
      padding: 12px 13px;
      border: 1px solid var(--border);
      border-radius: 9px;
      background: var(--surface);
      color: var(--text);
      font: inherit;
      outline: none;
    }

    .form-group textarea {
      min-height: 110px;
      resize: vertical;
    }

    .form-group textarea:focus,
    .form-group select:focus {
      border-color: var(--primary);
      box-shadow: 0 0 0 3px rgba(49, 95, 77, 0.13);
    }

    .field-help {
      margin: 7px 0 0;
      color: var(--text-muted);
      font-size: 12px;
      line-height: 1.45;
    }

    .directory-toolbar {
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 14px;
      margin-top: 18px;
    }

    .directory-search-wrap {
      flex: 1 1 360px;
    }

    .directory-search-wrap label {
      display: block;
      margin-bottom: 7px;
      font-size: 13px;
      font-weight: 800;
    }

    .directory-search-input {
      width: 100%;
      padding: 11px 13px;
      border: 1px solid var(--border);
      border-radius: 9px;
      background: var(--surface);
      color: var(--text);
      font: inherit;
      outline: none;
    }

    .directory-search-input:focus {
      border-color: var(--primary);
      box-shadow: 0 0 0 3px rgba(49, 95, 77, 0.13);
    }

    .checkbox-control {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      min-height: 43px;
      color: var(--text-muted);
      font-size: 13px;
      font-weight: 700;
    }

    .checkbox-control input {
      width: 17px;
      height: 17px;
      margin: 0;
    }

    .directory-result-count {
      min-height: 18px;
      margin-top: 10px;
      color: var(--text-muted);
      font-size: 12px;
    }

    .directory-filter-controls {
      display: flex;
      align-items: flex-end;
      flex-wrap: wrap;
      gap: 10px;
    }

    .directory-filter-field {
      min-width: 180px;
    }

    .donor-report-year-field {
      flex: 0 0 180px;
      min-width: 180px;
    }

    .directory-filter-field label {
      display: block;
      margin-bottom: 7px;
      font-size: 13px;
      font-weight: 800;
    }

    .directory-filter-select {
      width: 100%;
      min-height: 43px;
      padding: 10px 12px;
      border: 1px solid var(--border);
      border-radius: 9px;
      background: var(--surface);
      color: var(--text);
      font: inherit;
      outline: none;
    }

    .directory-filter-select:focus {
      border-color: var(--primary);
      box-shadow: 0 0 0 3px rgba(49, 95, 77, 0.13);
    }

    .active-filter-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 10px;
      margin-top: 12px;
    }

    .active-filter-label {
      color: var(--primary);
      font-size: 13px;
      font-weight: 800;
    }

    .compact-button {
      padding: 7px 10px;
      font-size: 12px;
    }

    .card-action-group {
      display: flex;
      align-items: center;
      justify-content: flex-end;
      flex-wrap: wrap;
      gap: 9px;
    }

    .danger-button {
      padding: 9px 13px;
      border: 1px solid #d8aaaa;
      border-radius: 8px;
      background: #fff7f7;
      color: var(--danger);
      font-weight: 800;
    }

    .danger-button:hover {
      background: #f9e7e7;
    }

    .form-actions {
      display: flex;
      justify-content: flex-end;
      gap: 12px;
      margin-top: 22px;
    }

    .form-actions .primary-button {
      width: auto;
      min-width: 140px;
    }

    .directory-panel {
      overflow: hidden;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: 0 8px 24px rgba(31, 41, 36, 0.05);
    }

    .directory-header {
      padding: 20px 22px;
      border-bottom: 1px solid var(--border);
    }

    .directory-header h3 {
      margin: 0;
      font-size: 20px;
    }

    .directory-header p {
      margin: 6px 0 0;
      color: var(--text-muted);
      font-size: 14px;
    }

    .empty-state {
      padding: 54px 24px;
      text-align: center;
    }

    .empty-state h4 {
      margin: 0 0 8px;
      font-size: 18px;
    }

    .empty-state p {
      max-width: 470px;
      margin: 0 auto;
      color: var(--text-muted);
      line-height: 1.55;
    }

    .form-status {
      min-height: 22px;
      margin: 14px 0 0;
      color: var(--danger);
      font-size: 14px;
      text-align: right;
    }

    .opportunity-list {
      display: grid;
      gap: 18px;
      padding: 18px;
      background: var(--surface-muted);
    }

    .opportunity-card {
      padding: 22px;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: 0 7px 20px rgba(31, 41, 36, 0.06);
      transition:
        border-color 0.15s ease,
        box-shadow 0.15s ease;
    }

    .opportunity-card:hover {
      border-color: #b9c8c0;
      box-shadow: 0 10px 24px rgba(31, 41, 36, 0.09);
    }

    .opportunity-card:last-child {
      border-bottom: 1px solid var(--border);
    }

    .record-kind-label {
      display: block;
      margin-bottom: 7px;
      color: var(--primary);
      font-size: 11px;
      font-weight: 900;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    .record-activity-detail {
      display: block;
      margin-top: 4px;
      color: var(--text-muted);
      font-size: 12px;
      font-weight: 600;
    }

    .directory-help-note {
      margin: 12px 0 0;
      color: var(--text-muted);
      font-size: 12px;
      line-height: 1.5;
    }

    .opportunity-card-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 18px;
    }

    .opportunity-title-wrap {
      min-width: 0;
    }

    .opportunity-title-row {
      display: flex;
      align-items: center;
      flex-wrap: wrap;
      gap: 10px;
    }

    .opportunity-title {
      margin: 0;
      font-size: 19px;
      line-height: 1.35;
    }

    .opportunity-funder {
      margin: 6px 0 0;
      color: var(--text-muted);
      font-size: 14px;
    }

    .status-badge {
      display: inline-flex;
      align-items: center;
      padding: 5px 9px;
      border-radius: 999px;
      font-size: 11px;
      font-weight: 800;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    .status-new-lead {
      background: #edf1ef;
      color: #53615a;
    }

    .status-researching {
      background: #fff2ce;
      color: #745713;
    }

    .status-qualified {
      background: #dcefe5;
      color: #24593f;
    }

    .status-not-a-fit {
      background: #f3dddd;
      color: #813737;
    }

    .status-new-prospect {
      background: #edf1ef;
      color: #53615a;
    }

    .status-relationship-building {
      background: #e2e9f5;
      color: #35547a;
    }

    .status-active-funder {
      background: #dcefe5;
      color: #24593f;
    }

    .status-inactive {
      background: #f3dddd;
      color: #813737;
    }

    .status-closed {
      background: #e5e7e6;
      color: #4c5550;
    }

    .status-reapply-invited {
      background: #e2e9f5;
      color: #35547a;
    }

    .status-planning {
      background: #edf1ef;
      color: #53615a;
    }

    .status-drafting {
      background: #fff2ce;
      color: #745713;
    }

    .status-internal-review {
      background: #e2e9f5;
      color: #35547a;
    }

    .status-ready-to-submit {
      background: #dcefe5;
      color: #24593f;
    }

    .status-submitted {
      background: #dce8f2;
      color: #28536f;
    }

    .status-awarded {
      background: #cfe8d9;
      color: #174b32;
    }

    .status-declined,
    .status-withdrawn,
    .status-no-response {
      background: #f3dddd;
      color: #813737;
    }

    .status-pending {
      background: #fff2ce;
      color: #745713;
    }

    .status-unknown-needs-research {
      background: #e5e7e6;
      color: #4c5550;
    }

    .status-not-started {
      background: #edf1ef;
      color: #53615a;
    }

    .status-in-progress {
      background: #e2e9f5;
      color: #35547a;
    }

    .status-blocked {
      background: #f3dddd;
      color: #813737;
    }

    .status-completed {
      background: #dcefe5;
      color: #24593f;
    }

    .status-deactivated {
      background: #e5e7e6;
      color: #4c5550;
    }

    .priority-low {
      background: #edf1ef;
      color: #53615a;
    }

    .priority-normal {
      background: #e2e9f5;
      color: #35547a;
    }

    .priority-high {
      background: #fff2ce;
      color: #745713;
    }

    .priority-urgent {
      background: #f3dddd;
      color: #813737;
    }

    .opportunity-meta-grid {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 12px;
      margin-top: 18px;
    }

    .opportunity-meta-item {
      padding: 12px;
      border-radius: 9px;
      background: var(--surface-muted);
    }

    .opportunity-meta-label {
      display: block;
      margin-bottom: 5px;
      color: var(--text-muted);
      font-size: 11px;
      font-weight: 800;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    .opportunity-meta-value {
      display: block;
      font-size: 14px;
      font-weight: 700;
      line-height: 1.4;
    }

    .opportunity-tag-list {
      display: flex;
      flex-wrap: wrap;
      gap: 7px;
      margin-top: 16px;
    }
/* ===== END 10-common-components.css ===== */


/* ===== BEGIN 20-grants-and-records.css ===== */
/**
 * PeliPro style source unit.
 * Run `npm run build` after editing; do not edit public/assets/css/app.css directly.
 */
    .opportunity-tag {
      padding: 5px 9px;
      border: 1px solid var(--border);
      border-radius: 999px;
      background: var(--surface);
      color: var(--text-muted);
      font-size: 12px;
      font-weight: 700;
    }

    .opportunity-notes {
      margin: 16px 0 0;
      color: var(--text-muted);
      font-size: 14px;
      line-height: 1.55;
      white-space: pre-wrap;
    }

    .opportunity-card-footer {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      margin-top: 18px;
    }

    .source-link {
      color: var(--primary);
      font-size: 14px;
      font-weight: 800;
      text-decoration: none;
    }

    .source-link:hover {
      text-decoration: underline;
    }

    .source-missing {
      color: var(--text-muted);
      font-size: 13px;
    }

    .directory-message {
      padding: 46px 24px;
      color: var(--text-muted);
      text-align: center;
    }

    .directory-error {
      padding: 46px 24px;
      color: var(--danger);
      text-align: center;
    }

    .report-export-actions {
      display: flex;
      align-items: center;
      justify-content: flex-end;
      flex-wrap: wrap;
      gap: 10px;
    }

    .report-controls-panel {
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 18px;
      margin-bottom: 24px;
      padding: 18px 20px;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: 0 8px 24px rgba(31, 41, 36, 0.05);
    }

    .report-controls-panel .directory-filter-field {
      min-width: 220px;
    }

    .report-coverage-note {
      flex: 1 1 460px;
      margin: 0;
      color: var(--text-muted);
      font-size: 13px;
      line-height: 1.5;
    }

    .report-panels {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 20px;
    }

    .report-panel {
      min-width: 0;
      overflow: hidden;
      border: 1px solid var(--border);
      border-radius: 14px;
      background: var(--surface);
      box-shadow: 0 8px 24px rgba(31, 41, 36, 0.05);
    }

    .report-panel-wide {
      grid-column: 1 / -1;
    }

    .report-panel-header {
      padding: 18px 20px;
      border-bottom: 1px solid var(--border);
      background: rgba(49, 95, 77, 0.06);
    }

    .report-panel-header h3 {
      margin: 0;
      font-size: 18px;
    }

    .report-panel-header p {
      margin: 6px 0 0;
      color: var(--text-muted);
      font-size: 13px;
      line-height: 1.45;
    }

    .report-table-wrap {
      overflow-x: auto;
    }

    .report-table {
      width: 100%;
      border-collapse: collapse;
      font-size: 13px;
    }

    .report-table th,
    .report-table td {
      padding: 12px 14px;
      border-bottom: 1px solid var(--border);
      vertical-align: top;
      text-align: left;
    }

    .report-table th {
      background: var(--surface-muted);
      color: var(--text-muted);
      font-size: 11px;
      font-weight: 800;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      white-space: nowrap;
    }

    .report-table tbody tr:last-child td {
      border-bottom: 0;
    }

    .report-table tbody tr:hover td {
      background: rgba(49, 95, 77, 0.035);
    }

    .report-number {
      text-align: right !important;
      white-space: nowrap;
    }

    .report-title-cell {
      min-width: 190px;
      font-weight: 800;
    }

    .report-subtext {
      display: block;
      margin-top: 4px;
      color: var(--text-muted);
      font-size: 12px;
      font-weight: 400;
      line-height: 1.4;
    }

    .report-empty-cell {
      padding: 28px 20px !important;
      color: var(--text-muted);
      text-align: center !important;
    }

    .report-open-button {
      white-space: nowrap;
    }

    @media (max-width: 900px) {
      .pipeline-layout {
        grid-template-columns: 1fr;
      }

      .side-navigation {
        display: flex;
        overflow-x: auto;
      }

      .side-navigation-heading {
        display: none;
      }

      .navigation-button {
        width: auto;
        min-width: max-content;
        border-top: 0;
        border-left: 1px solid var(--border);
      }

      .navigation-button:first-of-type {
        border-left: 0;
      }

      .navigation-button.active {
        box-shadow: inset 0 -4px 0 var(--primary);
      }
    }    

    @media (max-width: 700px) {
      .workspace-header {
        flex-direction: column;
      }

      .action-button {
        width: 100%;
      }

      .summary-grid,
      .dashboard-summary-grid,
      .dashboard-panels,
      .report-panels,
      .thank-you-template-grid {
        grid-template-columns: 1fr;
      }

      .report-panel-wide {
        grid-column: auto;
      }

      .report-export-actions,
      .report-export-actions .secondary-button {
        width: 100%;
      }

      .form-grid {
        grid-template-columns: 1fr;
      }

      .form-section {
        padding: 18px;
      }

      .directory-filter-controls,
      .directory-filter-field {
        width: 100%;
      }

      .form-group.full-width {
        grid-column: auto;
      }

      .opportunity-card-header {
        flex-direction: column;
      }

      .opportunity-meta-grid {
        grid-template-columns: 1fr;
      }

      .opportunity-card-footer {
        align-items: stretch;
        flex-direction: column;
      }

      .opportunity-card-footer .secondary-button,
      .opportunity-card-footer .danger-button {
        width: 100%;
      }

      .card-action-group {
        width: 100%;
      }

      .login-card {
        padding: 28px 24px;
      }

      .app-header {
        align-items: flex-start;
        flex-direction: column;
        padding: 18px 20px;
      }

      .header-user {
        width: 100%;
        justify-content: space-between;
      }

      .user-details {
        text-align: left;
      }

      .app-content {
        width: min(100% - 28px, 1180px);
        padding: 26px 0;
      }

      .welcome-panel {
        padding: 24px;
      }

      .status-grid {
        grid-template-columns: 1fr;
      }
    }


    .crm-toolbar {
      display: flex;
      flex-wrap: wrap;
      gap: 0.75rem;
      align-items: center;
    }

    .crm-interaction-list {
      display: grid;
      gap: 0.7rem;
      margin-top: 1rem;
      padding-top: 1rem;
      border-top: 1px solid var(--border);
    }

    .crm-interaction-item {
      display: grid;
      gap: 0.25rem;
      padding: 0.8rem;
      border-radius: 0.7rem;
      background: var(--surface-muted);
    }

    .crm-interaction-heading {
      display: flex;
      flex-wrap: wrap;
      justify-content: space-between;
      gap: 0.5rem;
      font-weight: 700;
    }

    .crm-interaction-summary {
      margin: 0;
      white-space: pre-wrap;
    }

    .crm-follow-up-due {
      color: var(--danger);
      font-weight: 700;
    }

    .crm-follow-up-upcoming {
      color: var(--primary-hover);
      font-weight: 700;
    }

    .crm-contact-link-list {
      display: flex;
      flex-wrap: wrap;
      gap: 0.75rem;
      margin-top: 0.75rem;
    }

  
    .header-action-group { display:flex; gap:0.65rem; flex-wrap:wrap; align-items:center; }
    .import-preview-table-wrap { overflow:auto; max-height:560px; border:1px solid var(--border-color); border-radius:14px; background:#fff; }
    .import-preview-table { width:100%; border-collapse:collapse; min-width:1120px; font-size:0.84rem; }
    .import-preview-table th, .import-preview-table td { padding:0.65rem; border-bottom:1px solid var(--border-color); text-align:left; vertical-align:top; }
    .import-preview-table th { position:sticky; top:0; z-index:1; background:#f5f7f8; }
    .import-match-select { min-width:220px; max-width:320px; }
    .import-status-pill { display:inline-block; padding:0.2rem 0.5rem; border-radius:999px; font-weight:700; font-size:0.75rem; background:#edf1f3; }
    .import-status-pill.safe { background:#e5f5eb; color:#155d35; }
    .import-status-pill.review { background:#fff3d6; color:#795500; }
    .import-status-pill.skip { background:#fbe8e8; color:#8a2626; }

    /* Gifts workspace visual polish */
    #giftsWorkspace .directory-section {
      background: #ffffff;
      border: 1px solid var(--border-color);
      border-radius: 18px;
      padding: 22px;
      margin-top: 22px;
      box-shadow: 0 8px 24px rgba(27, 58, 48, 0.05);
    }
    #giftsWorkspace .directory-section-header {
      display: flex;
      align-items: flex-end;
      justify-content: space-between;
      gap: 18px;
      flex-wrap: wrap;
      margin-bottom: 18px;
    }
    #giftsWorkspace .directory-section-header h3 { margin: 0 0 5px; }
    #giftsWorkspace .directory-section-header p { margin: 0; color: var(--muted-text); }
    #giftsWorkspace .dashboard-grid { align-items: stretch; }
    #giftsWorkspace .dashboard-card {
      border: 1px solid var(--border-color);
      border-radius: 16px;
      padding: 18px;
      background: #fbfdfc;
      min-height: 180px;
    }
    #giftsWorkspace .record-list { display: grid; gap: 12px; }
    #giftsWorkspace .record-activity-row {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 16px;
      padding: 13px 14px;
      border: 1px solid var(--border-color);
      border-radius: 12px;
      background: #fff;
    }
    #giftDirectory.record-list { display: grid; grid-template-columns: repeat(auto-fit, minmax(290px, 1fr)); gap: 16px; }
    #giftDirectory .record-card {
      border: 1px solid var(--border-color);
      border-radius: 16px;
      padding: 18px;
      background: #fff;
      box-shadow: 0 5px 16px rgba(27, 58, 48, 0.05);
    }
    #giftDirectory .record-card-header { display:flex; justify-content:space-between; gap:14px; align-items:flex-start; }
    #giftDirectory .record-card-header h4 { margin:0 0 4px; }
    #giftDirectory .record-card-header p { margin:0; color:var(--muted-text); }
    #giftDirectory .record-card-header > strong { font-size:1.45rem; color:var(--primary-color); }
    #giftDirectory .record-meta { display:flex; flex-wrap:wrap; gap:7px; margin:14px 0; }
    #giftDirectory .record-meta span { background:#eef5f1; border-radius:999px; padding:5px 9px; font-size:.82rem; font-weight:700; }
    #giftDirectory .record-actions { margin-top:16px; display:flex; gap:8px; }
    #giftsWorkspace .donor-report-year-field { min-width: 150px; }
    #giftsWorkspace #donorReportYearInput { min-width: 150px; }

    .security-screen {
      min-height: 100vh;
      display: grid;
      place-items: center;
      padding: 24px;
      background:
        radial-gradient(circle at top left, rgba(31, 111, 95, 0.18), transparent 38%),
        #f4f7f6;
    }

    .security-card {
      width: min(520px, 100%);
      background: #ffffff;
      border: 1px solid #d8e2df;
      border-radius: 18px;
      box-shadow: 0 18px 50px rgba(31, 55, 48, 0.12);
      padding: 28px;
    }

    .security-card h1 {
      margin: 0 0 10px;
      font-size: 1.65rem;
    }

    .security-card p {
      line-height: 1.55;
    }

    .security-card .security-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
      margin-top: 18px;
    }

    .security-card .security-code-input {
      font-size: 1.35rem;
      letter-spacing: 0.22em;
      text-align: center;
      font-variant-numeric: tabular-nums;
    }

    .mfa-qr {
      display: grid;
      place-items: center;
      min-height: 220px;
      margin: 18px 0;
      padding: 12px;
      border: 1px solid #d8e2df;
      border-radius: 14px;
      background: #ffffff;
    }

    .mfa-secret {
      overflow-wrap: anywhere;
      padding: 12px;
      border-radius: 10px;
      background: #eef4f2;
      font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
      font-size: 0.9rem;
    }

    .migration-health-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:1rem; margin:1.25rem 0; }
    .migration-health-card { border:1px solid var(--border-color); border-radius:16px; background:#fff; padding:1rem; }
    .migration-health-card strong { display:block; font-size:1.8rem; margin-top:.35rem; }
    .migration-health-score { font-size:2.4rem !important; }
    .migration-health-toolbar { display:flex; gap:.75rem; flex-wrap:wrap; align-items:center; margin:1rem 0; }
    .migration-health-toolbar select { min-width:190px; }
    .migration-issue-table-wrap { overflow:auto; border:1px solid var(--border-color); border-radius:14px; background:#fff; }
    .migration-issue-table { width:100%; border-collapse:collapse; min-width:900px; }
    .migration-issue-table th,.migration-issue-table td { padding:.75rem; border-bottom:1px solid var(--border-color); text-align:left; vertical-align:top; }
    .migration-issue-table th { background:#f5f7f8; position:sticky; top:0; }
    .migration-issue-table tr.grouped-health-issue td { background:#f8fbfa; }
    .migration-health-affected-count { display:inline-flex; align-items:center; gap:.35rem; margin-top:.3rem; color:var(--muted-text); font-size:.78rem; font-weight:700; }
    .migration-health-pager { display:flex; align-items:center; justify-content:flex-end; gap:.75rem; margin-top:.85rem; }
    .migration-health-pager span { color:var(--muted-text); font-size:.88rem; font-weight:700; }
    .severity-pill { display:inline-block; border-radius:999px; padding:.2rem .55rem; font-size:.75rem; font-weight:700; background:#eef1f3; }
    .severity-pill.critical,.severity-pill.high { background:#fde8e8; }
    .severity-pill.medium { background:#fff4d6; }
    .severity-pill.low { background:#e7f4ef; }
    .merge-modal-backdrop { position:fixed; inset:0; z-index:1200; display:grid; place-items:center; padding:1rem; background:rgba(12,30,35,.58); }
    .merge-modal { width:min(920px,100%); max-height:92vh; overflow:auto; background:#fff; border-radius:18px; box-shadow:0 24px 70px rgba(0,0,0,.28); }
    .merge-modal-header,.merge-modal-footer { display:flex; justify-content:space-between; align-items:center; gap:1rem; padding:1rem 1.25rem; border-bottom:1px solid var(--border-color); }
    .merge-modal-footer { border-top:1px solid var(--border-color); border-bottom:0; justify-content:flex-end; }
    .merge-modal-body { padding:1.25rem; }
    .merge-record-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
    .merge-record-card { border:1px solid var(--border-color); border-radius:14px; padding:1rem; background:#f8faf9; }
    .merge-record-card.selected { outline:3px solid #7ea497; background:#f1f7f4; }
    .merge-record-card h4 { margin:.35rem 0 .75rem; }
    .merge-record-details { display:grid; gap:.45rem; font-size:.92rem; }
    .merge-preview-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:.75rem; margin:1rem 0; }
    .merge-preview-card { border:1px solid var(--border-color); border-radius:12px; padding:.8rem; }
    .merge-preview-card strong { display:block; font-size:1.35rem; margin-top:.2rem; }
    .merge-warning { padding:.8rem 1rem; border-radius:12px; background:#fff4d6; }
    @media (max-width:700px) { .merge-record-grid { grid-template-columns:1fr; } }


    /* Finance reconciliation */
    #financesWorkspace {
      --finance-success: #2f7454;
      --finance-warning: #986c19;
      --finance-danger: #9b4b3e;
      --finance-blue: #3c6688;
      position: relative;
    }

    #financesWorkspace .workspace-header {
      margin-bottom: 16px;
    }

    #financesWorkspace .workspace-heading {
      min-width: 0;
    }

    #financesWorkspace .header-action-group {
      flex-wrap: nowrap;
      flex-shrink: 0;
    }

    #financesWorkspace .header-action-group button {
      white-space: nowrap;
    }

    #financesWorkspace .workspace-heading p {
      max-width: 760px;
    }

    .finance-overview-grid {
      grid-template-columns: repeat(5, minmax(0, 1fr));
      gap: 10px;
      margin-bottom: 14px;
    }

    .finance-overview-grid .summary-card {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      min-height: 68px;
      padding: 12px 14px;
      text-align: left;
    }

    .finance-overview-grid .summary-filter-card.active {
      border-color: var(--primary);
      box-shadow: inset 0 0 0 1px var(--primary);
    }

    .finance-overview-grid .summary-label {
      max-width: 108px;
      margin: 0;
      font-size: 10px;
      line-height: 1.3;
    }


/* Grant reporting visual refresh (v28.3.2). */
.report-controls-panel-compact {
  align-items: center;
  margin-bottom: 18px;
  padding: 14px 16px;
}

.report-controls-panel-compact .report-year-field {
  min-width: 170px;
}

.report-summary-grid {
  margin-bottom: 20px;
}

/* Keep these summaries full-width. The application shell has a persistent
   sidebar, so viewport media queries alone were allowing cramped two-column
   cards even when the report workspace itself was too narrow. */
.report-overview-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 16px;
  margin-bottom: 20px;
}

.report-overview-panel {
  min-width: 0;
}

.report-panel-header-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.report-panel-eyebrow {
  display: block;
  margin-bottom: 5px;
  color: var(--primary);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.report-panel-count {
  flex: 0 0 auto;
  padding: 6px 9px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 800;
  white-space: nowrap;
}

.report-outcome-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(205px, 1fr));
  gap: 10px;
  padding: 12px;
  background: var(--surface-muted);
}

.report-outcome-item {
  display: flex;
  min-width: 0;
  min-height: 154px;
  flex-direction: column;
  justify-content: space-between;
  gap: 14px;
  padding: 15px 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
}

.report-outcome-title-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.report-outcome-title-row strong {
  font-size: 14px;
  line-height: 1.3;
}

.report-outcome-title-row span {
  flex: 0 0 auto;
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(49, 95, 77, 0.08);
  color: var(--primary);
  font-size: 10px;
  font-weight: 900;
  white-space: nowrap;
}

.report-outcome-copy p {
  margin: 6px 0 0;
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.4;
}

.report-outcome-bar {
  display: none;
}

.report-outcome-money {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
  text-align: left;
}

.report-outcome-money span,
.report-year-metric,
.report-related-record-stats span {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 2px;
}

.report-outcome-money small,
.report-year-metric small,
.report-related-record-stats small {
  color: var(--text-muted);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.035em;
  text-transform: uppercase;
}

.report-outcome-money b {
  overflow-wrap: anywhere;
  font-size: 13px;
}

.report-yearly-list {
  display: grid;
}

.report-year-row {
  display: grid;
  grid-template-columns: minmax(90px, 1.15fr) repeat(2, minmax(90px, 0.8fr)) minmax(130px, 1.15fr);
  gap: 18px;
  align-items: center;
  min-width: 0;
  padding: 13px 20px;
  border-bottom: 1px solid var(--border);
}

.report-year-row:last-child {
  border-bottom: 0;
}

.report-year-row:hover {
  background: rgba(49, 95, 77, 0.025);
}

.report-year-label {
  font-size: 14px;
}

.report-year-metric b {
  overflow-wrap: anywhere;
  font-size: 13px;
}

.report-year-awarded {
  text-align: right;
}

.report-visual-empty {
  padding: 30px 20px;
  color: var(--text-muted);
  font-size: 13px;
  text-align: center;
}

.report-funding-panels {
  align-items: start;
}

.report-table-wrap-contained {
  max-width: 100%;
}

.report-clickable-table tbody tr {
  transition: background 120ms ease;
}

.report-row-selected td {
  background: rgba(49, 95, 77, 0.075) !important;
}

.report-link-button {
  display: flex;
  width: 100%;
  flex-direction: column;
  align-items: flex-start;
  gap: 3px;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: 800;
  text-align: left;
  cursor: pointer;
}

.report-link-button span {
  text-decoration: underline;
  text-decoration-color: transparent;
  text-underline-offset: 3px;
  transition: text-decoration-color 120ms ease;
}

.report-link-button small {
  color: var(--primary);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.02em;
}

.report-link-button:hover span,
.report-link-button:focus-visible span {
  text-decoration-color: currentColor;
}

.report-pagination-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 11px 14px;
  border-top: 1px solid var(--border);
  background: var(--surface-muted);
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 700;
}

.report-pagination-actions {
  display: flex;
  gap: 8px;
}

.report-pagination-actions button:disabled {
  opacity: 0.45;
  cursor: default;
}

.report-drilldown-panel {
  scroll-margin-top: 24px;
}

.report-related-record-list {
  display: flex;
  flex-direction: column;
}

.report-related-record {
  display: grid;
  grid-template-columns: minmax(230px, 1fr) auto auto;
  gap: 18px;
  align-items: center;
  width: 100%;
  padding: 15px 18px;
  border: 0;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.report-related-record:last-child {
  border-bottom: 0;
}

.report-related-record:hover,
.report-related-record:focus-visible {
  background: rgba(49, 95, 77, 0.045);
  outline: none;
}

.report-related-record-main {
  min-width: 0;
}

.report-related-record-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.report-related-record-title-row strong {
  overflow: hidden;
  text-overflow: ellipsis;
}

.report-related-record-meta {
  display: block;
  margin-top: 4px;
  overflow: hidden;
  color: var(--text-muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.report-related-record-stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(80px, auto));
  gap: 14px;
  text-align: right;
}

.report-related-record-stats b {
  font-size: 12px;
  white-space: nowrap;
}

.report-related-record-open {
  color: var(--primary);
  font-size: 11px;
  font-weight: 900;
  white-space: nowrap;
}

.report-related-record-empty {
  padding: 34px 20px;
  color: var(--text-muted);
  font-size: 13px;
  text-align: center;
}

@media (max-width: 1100px) {
  .report-overview-grid,
  .report-funding-panels {
    grid-template-columns: 1fr;
  }

  .report-funding-panels .report-panel-wide {
    grid-column: auto;
  }
}

@media (max-width: 760px) {
  .report-year-row,
  .report-related-record {
    grid-template-columns: 1fr;
  }

  .report-outcome-list {
    grid-template-columns: 1fr;
  }

  .report-outcome-money,
  .report-related-record-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    text-align: left;
  }

  .report-related-record-stats {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .report-year-awarded {
    text-align: left;
  }

  .report-pagination-footer,
  .report-panel-header-row {
    align-items: stretch;
    flex-direction: column;
  }
}

/* v30.7.39 — donor insight workspace */
#giftsWorkspace .donor-insights-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

#giftsWorkspace .donor-insight-card {
  min-width: 0;
}

#giftsWorkspace .donor-insight-card-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 14px;
}

#giftsWorkspace .donor-insight-card-header h3 {
  margin: 0 0 4px;
}

#giftsWorkspace .donor-insight-card-header p {
  margin: 0;
  color: var(--muted-text);
  font-size: .88rem;
  line-height: 1.4;
}

#giftsWorkspace .donor-insight-control {
  min-width: 145px;
  flex: 0 0 auto;
}

#giftsWorkspace .donor-insight-list {
  display: grid;
  gap: 9px;
}

#giftsWorkspace .donor-insight-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 11px;
  align-items: center;
  padding: 12px 13px;
  border: 1px solid var(--border-color);
  border-radius: 12px;
  background: #fff;
}

#giftsWorkspace .donor-insight-row-lapsed {
  grid-template-columns: minmax(0, 1fr) auto;
}

#giftsWorkspace .donor-insight-rank {
  min-width: 30px;
  color: var(--muted-text);
  font-size: .78rem;
  font-weight: 800;
  text-align: center;
}

#giftsWorkspace .donor-insight-main {
  min-width: 0;
}

#giftsWorkspace .donor-insight-name {
  padding: 0;
  font-size: .96rem;
  font-weight: 850;
  text-align: left;
}

#giftsWorkspace .donor-insight-subdetail {
  margin-top: 3px;
  color: var(--muted-text);
  font-size: .76rem;
  line-height: 1.35;
}

#giftsWorkspace .donor-insight-amount,
#giftsWorkspace .donor-insight-lapsed-value strong {
  color: var(--primary-color);
  font-size: 1rem;
  white-space: nowrap;
}

#giftsWorkspace .donor-insight-lapsed-value {
  display: grid;
  justify-items: end;
  gap: 2px;
  text-align: right;
}

#giftsWorkspace .donor-insight-lapsed-value small {
  color: var(--muted-text);
  font-size: .68rem;
  font-weight: 750;
  text-transform: uppercase;
  letter-spacing: .03em;
}

@media (max-width: 980px) {
  #giftsWorkspace .donor-insights-grid { grid-template-columns: 1fr; }
}

@media (max-width: 620px) {
  #giftsWorkspace .donor-insight-card-header {
    align-items: stretch;
    flex-direction: column;
  }

  #giftsWorkspace .donor-insight-control { min-width: 0; }

  #giftsWorkspace .donor-insight-row,
  #giftsWorkspace .donor-insight-row-lapsed {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  #giftsWorkspace .donor-insight-rank { display: none; }
}

/* v30.7.45 — Donor Insights is one paged analysis at a time */
#giftsWorkspace .donor-insights-section { overflow: visible; }

#giftsWorkspace .donor-insights-header { align-items: center; }

#giftsWorkspace .donor-insight-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin: 2px 0 14px;
  padding: 5px;
  border: 1px solid var(--border-color);
  border-radius: 12px;
  background: var(--surface-muted);
}

#giftsWorkspace .donor-insight-tab {
  min-height: 34px;
  padding: 7px 13px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

#giftsWorkspace .donor-insight-tab.active {
  border-color: var(--border-color);
  background: var(--surface);
  color: var(--text);
  box-shadow: 0 1px 2px rgba(0,0,0,.04);
}

#giftsWorkspace .donor-insight-panel { margin: 0; }
#giftsWorkspace .donor-insight-panel.hidden { display: none; }

#giftsWorkspace .donor-insight-inline-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
  justify-content: flex-end;
}

#giftsWorkspace .donor-insight-context-strip {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: -2px 0 12px;
  padding: 9px 11px;
  border-radius: 9px;
  background: var(--surface-muted);
  color: var(--text-muted);
  font-size: 11px;
}

#giftsWorkspace .donor-insight-context-strip strong { color: var(--text); font-size: 18px; }

@media (max-width: 720px) {
  #giftsWorkspace .donor-insight-inline-controls { width: 100%; justify-content: stretch; }
  #giftsWorkspace .donor-insight-inline-controls .donor-insight-control { flex: 1 1 150px; }
}

/* Applications & Awards split workspace (v30.7.54). */
.grant-workspace-tabs {
  display: flex;
  gap: 8px;
  margin: 0 0 14px;
  padding: 5px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface-muted);
}

.grant-workspace-tab {
  display: inline-flex;
  flex: 1 1 0;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 10px 16px;
  border: 0;
  border-radius: 10px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-weight: 800;
  cursor: pointer;
}

.grant-workspace-tab.active {
  background: var(--surface);
  color: var(--primary);
  box-shadow: 0 2px 8px rgba(31, 41, 36, 0.08);
}

.grant-tab-count {
  min-width: 24px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(49, 95, 77, 0.09);
  font-size: 11px;
  line-height: 1.5;
}

.grant-award-filters {
  display: flex;
  gap: 8px;
  margin: 0 0 18px;
}

.grant-award-filters .active {
  border-color: var(--primary);
  color: var(--primary);
  box-shadow: inset 0 0 0 1px var(--primary);
}

.grant-compact-list {
  display: grid;
  gap: 9px;
}

.grant-compact-card {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(320px, 1fr);
  gap: 22px;
  align-items: center;
  width: 100%;
  padding: 15px 17px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  color: inherit;
  text-align: left;
  cursor: pointer;
  transition: border-color 120ms ease, box-shadow 120ms ease, transform 120ms ease;
}

.grant-compact-card:hover,
.grant-compact-card:focus-visible {
  border-color: rgba(49, 95, 77, 0.48);
  box-shadow: 0 8px 22px rgba(31, 41, 36, 0.08);
  outline: none;
  transform: translateY(-1px);
}

.grant-compact-main,
.grant-compact-title-row {
  min-width: 0;
}

.grant-compact-title-row {
  display: flex;
  align-items: center;
  gap: 9px;
}

.grant-compact-title-row h4 {
  min-width: 0;
  margin: 0;
  overflow: hidden;
  font-size: 15px;
  line-height: 1.35;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.grant-compact-title-row .status-badge {
  flex: 0 0 auto;
}

.grant-compact-funder {
  margin: 4px 0 0;
  overflow: hidden;
  color: var(--text-muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.grant-compact-meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  color: var(--text-muted);
  font-size: 11px;
}

.grant-compact-meta span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.grant-compact-meta strong {
  color: var(--text);
}

.grant-directory-pagination,
.application-pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 0;
  padding: 12px 18px 14px;
  border-top: 1px solid var(--border);
  background: var(--surface);
  box-sizing: border-box;
}

.grant-directory-pagination .directory-result-count,
.application-pagination .directory-result-count {
  margin: 0;
}

.grant-directory-pagination-actions,
.application-pagination-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.grant-directory-pagination-actions button:disabled,
.application-pagination-actions button:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.grant-detail-backdrop {
  position: fixed;
  inset: 0;
  z-index: 1300;
  background: rgba(12, 30, 35, 0.58);
}

.grant-detail-modal {
  position: fixed;
  z-index: 1301;
  top: 50%;
  left: 50%;
  width: min(880px, calc(100vw - 32px));
  max-height: min(860px, calc(100vh - 32px));
  overflow: auto;
  transform: translate(-50%, -50%);
  border: 1px solid var(--border);
  border-radius: 18px;
  background: var(--surface);
  box-shadow: 0 24px 70px rgba(0, 0, 0, 0.28);
}

.grant-detail-modal-header,
.grant-detail-modal-footer {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding: 20px 22px;
}

.grant-detail-modal-header {
  position: sticky;
  top: 0;
  z-index: 2;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}

.grant-detail-modal-header h3 {
  margin: 4px 0 0;
  font-size: 22px;
}

.grant-detail-modal-header .opportunity-funder {
  margin-bottom: 0;
}

.grant-detail-modal-body {
  display: grid;
  gap: 14px;
  padding: 20px 22px;
  background: var(--surface-muted);
}

.grant-detail-status-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: var(--text-muted);
  font-size: 12px;
}

.grant-detail-section {
  padding: 17px;
  border: 1px solid var(--border);
  border-radius: 13px;
  background: var(--surface);
}

.grant-detail-section h4 {
  margin: 0 0 13px;
  font-size: 14px;
}

.grant-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 18px;
}

.grant-detail-item {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.grant-detail-item span {
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 0.035em;
  text-transform: uppercase;
}

.grant-detail-item strong {
  overflow-wrap: anywhere;
  font-size: 13px;
  line-height: 1.45;
}

.grant-detail-note {
  margin-top: 13px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
  font-size: 12px;
  line-height: 1.55;
  white-space: pre-wrap;
}

.grant-detail-modal-footer {
  position: sticky;
  bottom: 0;
  align-items: center;
  border-top: 1px solid var(--border);
  background: var(--surface);
}

body.modal-open {
  overflow: hidden;
}

@media (max-width: 860px) {
  .grant-compact-card {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .grant-compact-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .grant-workspace-tabs,
  .grant-award-filters,
  .grant-directory-pagination,
  .application-pagination,
  .grant-detail-modal-header,
  .grant-detail-modal-footer,
  .grant-detail-status-row {
    align-items: stretch;
    flex-direction: column;
  }

  .grant-compact-title-row {
    align-items: flex-start;
    flex-direction: column;
  }

  .grant-compact-title-row h4,
  .grant-compact-funder,
  .grant-compact-meta span {
    overflow: visible;
    text-overflow: clip;
    white-space: normal;
  }

  .grant-compact-meta,
  .grant-detail-grid {
    grid-template-columns: 1fr;
  }
}
/* ===== END 20-grants-and-records.css ===== */


/* ===== BEGIN 21-campaign-reporting.css ===== */
/* PeliPro constituent campaign-reporting workspace. */
.campaign-report-section {
  margin-bottom: 30px;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--surface);
  box-shadow: 0 10px 30px rgba(31, 41, 36, 0.06);
}

.campaign-report-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  padding: 22px 24px;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(135deg, rgba(49, 95, 77, 0.11), rgba(49, 95, 77, 0.025));
}

.campaign-report-heading h3 {
  margin: 4px 0 6px;
  font-size: 22px;
}

.campaign-report-heading p {
  max-width: 760px;
  margin: 0;
  color: var(--text-muted);
  line-height: 1.5;
}

.campaign-report-eyebrow,
.report-area-eyebrow {
  color: var(--primary);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.campaign-report-controls {
  padding: 20px 24px;
}

.campaign-preset-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}

.campaign-preset-button {
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.campaign-preset-button:hover,
.campaign-preset-button.active {
  border-color: var(--primary);
  background: rgba(49, 95, 77, 0.09);
  color: var(--primary);
}

.campaign-report-filter-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(150px, 1fr));
  gap: 14px;
}

.campaign-report-filter-grid .campaign-filter-wide {
  grid-column: span 2;
}

.campaign-report-note {
  margin: 16px 0 0;
  padding: 12px 14px;
  border-left: 4px solid var(--primary);
  border-radius: 0 8px 8px 0;
  background: rgba(49, 95, 77, 0.055);
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.5;
}

.campaign-report-summary {
  padding: 0 24px 20px;
}

.campaign-report-table-panel {
  border-top: 1px solid var(--border);
}

.campaign-report-table-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 16px 20px;
  background: var(--surface-muted);
}

.campaign-report-table-header p {
  margin: 0;
  color: var(--text-muted);
  font-size: 13px;
}

.campaign-report-table-header .directory-filter-field {
  min-width: 130px;
}

.campaign-lifecycle-label {
  display: block;
  margin-top: 7px;
  color: var(--text-muted);
  font-size: 12px;
  font-weight: 700;
}

.campaign-outreach-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 5px;
  min-width: 110px;
}

.campaign-report-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 14px 20px;
  border-top: 1px solid var(--border);
  background: var(--surface-muted);
}

.campaign-report-pagination {
  display: flex;
  align-items: center;
  gap: 10px;
}

.campaign-report-export-status {
  min-height: 18px;
  margin: 0;
  color: var(--text-muted);
  font-size: 12px;
}

.report-area-heading {
  margin: 30px 0 16px;
}

.report-area-heading h3 {
  margin: 4px 0 5px;
  font-size: 21px;
}

.report-area-heading p {
  margin: 0;
  color: var(--text-muted);
}

@media (max-width: 1100px) {
  .campaign-report-filter-grid {
    grid-template-columns: repeat(2, minmax(150px, 1fr));
  }
}

@media (max-width: 700px) {
  .campaign-report-heading,
  .campaign-report-table-header,
  .campaign-report-footer {
    align-items: stretch;
    flex-direction: column;
  }

  .campaign-report-filter-grid {
    grid-template-columns: 1fr;
  }

  .campaign-report-filter-grid .campaign-filter-wide {
    grid-column: auto;
  }

  .campaign-report-pagination {
    justify-content: space-between;
  }
}

/* The specialized rescue/species audience now belongs with Constituent Lists. */
.constituent-advanced-audience-shell {
  margin-top: 24px;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--surface);
  box-shadow: 0 10px 30px rgba(31, 41, 36, 0.05);
}

.constituent-advanced-audience-shell > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 17px 20px;
  list-style: none;
  cursor: pointer;
}

.constituent-advanced-audience-shell > summary::-webkit-details-marker {
  display: none;
}

.constituent-advanced-audience-shell > summary span {
  color: var(--text);
  font-size: 14px;
  font-weight: 900;
}

.constituent-advanced-audience-shell > summary small {
  max-width: 650px;
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.4;
  text-align: right;
}

.constituent-advanced-audience-shell > summary::after {
  content: "+";
  flex: 0 0 auto;
  color: var(--primary);
  font-size: 22px;
  font-weight: 400;
  line-height: 1;
}

.constituent-advanced-audience-shell[open] > summary::after {
  content: "−";
}

.constituent-list-advanced-campaign {
  margin: 0;
  border: 0;
  border-top: 1px solid var(--border);
  border-radius: 0;
  box-shadow: none;
}

@media (max-width: 700px) {
  .constituent-advanced-audience-shell > summary {
    align-items: flex-start;
    flex-direction: column;
  }

  .constituent-advanced-audience-shell > summary small {
    text-align: left;
  }
}
/* ===== END 21-campaign-reporting.css ===== */


/* ===== BEGIN 22-fundraising-attribution.css ===== */
.fundraising-setup-panel {
  border: 1px solid var(--border-color);
  background: var(--surface);
}

.fundraising-setup-layout {
  display: grid;
  grid-template-columns: minmax(320px, .85fr) minmax(420px, 1.4fr);
  gap: 1.25rem;
  align-items: start;
}

.fundraising-definition-form-card,
.fundraising-definition-directory-card {
  background: var(--surface-muted);
  border: 1px solid var(--border-color);
  border-radius: 16px;
  padding: 1rem;
}

.fundraising-definition-toolbar {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) minmax(150px, .45fr) minmax(130px, .4fr);
  gap: .75rem;
  margin: .9rem 0;
}

.fundraising-definition-list,
.fundraising-performance-list {
  display: grid;
  gap: .75rem;
}

.fundraising-definition-card {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem;
  border: 1px solid var(--border-color);
  border-radius: 14px;
  background: var(--surface);
}

.fundraising-definition-card-main {
  min-width: 0;
  flex: 1;
}

.fundraising-performance-section {
  margin-top: 1.25rem;
}

.fundraising-performance-row {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  align-items: center;
  padding: .9rem 1rem;
  border: 1px solid var(--border-color);
  border-radius: 12px;
  background: var(--surface);
}

.fundraising-unassigned-row {
  border-style: dashed;
  background: color-mix(in srgb, var(--warning-color, #b7791f) 7%, var(--surface));
}

.fundraising-goal-track {
  width: min(320px, 100%);
  height: 7px;
  margin-top: .45rem;
  overflow: hidden;
  border-radius: 999px;
  background: var(--border-color);
}

.fundraising-goal-track span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--primary);
}

@media (max-width: 980px) {
  .fundraising-setup-layout { grid-template-columns: 1fr; }
  .fundraising-definition-toolbar { grid-template-columns: 1fr; }
}

/* v30.7.39 — bulk General Support cleanup */
.fundraising-unassigned-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem;
  margin-top: .7rem;
}

.fundraising-unassigned-actions small {
  flex-basis: 100%;
  color: var(--text-muted);
  line-height: 1.35;
}

/* v30.7.43 — separate report filters from setup/export actions */
.fundraising-performance-header {
  align-items: flex-start !important;
}

.fundraising-performance-header > div:first-child {
  min-width: 0;
  flex: 1 1 520px;
}

.fundraising-header-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .55rem;
}

.fundraising-report-controls {
  display: grid;
  grid-template-columns: minmax(150px, 180px) minmax(190px, 260px) minmax(260px, 1fr);
  align-items: end;
  gap: .85rem;
  margin: 0 0 1rem;
  padding: .85rem 1rem;
  border: 1px solid var(--border-color);
  border-radius: 12px;
  background: var(--surface-muted);
}

.fundraising-report-controls .directory-filter-field {
  min-width: 0;
}

.fundraising-dimension-hint {
  margin: 0;
  padding: 0 0 .15rem;
  color: var(--text-muted);
  font-size: .78rem;
  line-height: 1.4;
}

.fundraising-auto-default-note {
  display: inline-block;
  padding: .45rem .6rem;
  border-radius: 8px;
  background: color-mix(in srgb, var(--primary) 8%, var(--surface));
  color: var(--text) !important;
  font-weight: 700;
}

@media (max-width: 820px) {
  .fundraising-report-controls { grid-template-columns: 1fr; }
  .fundraising-header-actions { width: 100%; }
}

/* v30.7.45 — fundraising reporting, cleanup, and paged management */
.fundraising-manage-button { white-space: nowrap; }

.fundraising-performance-main { min-width: 0; flex: 1 1 auto; }
.fundraising-performance-amount { flex: 0 0 auto; white-space: nowrap; }

.fundraising-performance-title-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .5rem;
}

.fundraising-unknown-row {
  border-style: solid;
  background: var(--surface-muted);
  color: var(--text-muted);
}

.fundraising-row-cleanup {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .55rem;
  margin-top: .7rem;
  padding-top: .65rem;
  border-top: 1px solid var(--border-color);
}

.fundraising-row-cleanup > span {
  color: var(--text-muted);
  font-size: .72rem;
  font-weight: 750;
}

.fundraising-row-map-controls {
  display: flex;
  flex: 1 1 360px;
  gap: .45rem;
  align-items: center;
}

.fundraising-row-map-controls select { min-width: 180px; max-width: 320px; }
.fundraising-row-edit { margin-top: .45rem; padding: 0; font-size: .75rem; }

@media (max-width: 680px) {
  .fundraising-performance-row { align-items: flex-start; flex-direction: column; }
  .fundraising-row-map-controls { flex-direction: column; align-items: stretch; }
  .fundraising-row-map-controls select { max-width: none; width: 100%; }
}

/* v30.7.48 — safely resolve referenced legacy appeal/event records before deletion */
.fundraising-legacy-resolution {
  display: flex;
  flex-wrap: wrap;
  gap: .65rem;
  align-items: end;
  margin-top: .85rem;
  padding-top: .8rem;
  border-top: 1px dashed var(--border-color);
}

.fundraising-legacy-resolution label {
  display: grid;
  gap: .3rem;
  min-width: min(320px, 100%);
  flex: 1;
  font-size: .82rem;
  font-weight: 700;
}

.fundraising-legacy-resolution select {
  width: 100%;
}
/* ===== END 22-fundraising-attribution.css ===== */


/* ===== BEGIN 23-stewardship-and-moves-management.css ===== */
/* PeliPro v28 stewardship and moves-management presentation. */
.stewardship-queue-panel {
  margin: 0 0 22px;
  padding: 18px;
  border: 1px solid var(--border-color);
  border-radius: 16px;
  background: var(--surface);
}

.stewardship-queue-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 10px;
}

.stewardship-queue-header h3 { margin: 0 0 4px; }
.stewardship-queue-header p { margin: 0; color: var(--text-muted); }
.stewardship-queue-controls { display: grid; gap: 5px; min-width: 190px; }
.stewardship-queue-controls label { font-size: 12px; font-weight: 700; color: var(--text-muted); }
.stewardship-queue-controls select { min-height: 38px; }

.stewardship-queue-list { display: grid; gap: 10px; margin-top: 12px; }
.stewardship-queue-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 18px;
  align-items: center;
  padding: 13px 14px;
  border: 1px solid var(--border-color);
  border-left: 4px solid var(--primary);
  border-radius: 12px;
  background: var(--surface-muted);
}
.stewardship-queue-item.overdue { border-left-color: var(--danger); }
.stewardship-queue-item.upcoming { border-left-color: #b7791f; }
.stewardship-queue-main h4 { margin: 5px 0 3px; font-size: 15px; }
.stewardship-queue-main p { margin: 0; color: var(--text-muted); font-size: 12px; }
.stewardship-queue-title-row { display: flex; gap: 7px; align-items: center; flex-wrap: wrap; }
.stewardship-move-label,
.stewardship-timing-badge,
.stewardship-stage-badge,
.solicitation-status-badge {
  display: inline-flex;
  align-items: center;
  min-height: 23px;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: .02em;
}
.stewardship-move-label { background: #e2e9f5; color: #315f4d; }
.stewardship-timing-badge { background: var(--surface); color: var(--text-muted); border: 1px solid var(--border-color); }
.stewardship-timing-badge.overdue { color: var(--danger); border-color: color-mix(in srgb, var(--danger) 45%, var(--border-color)); }
.stewardship-timing-badge.upcoming { color: #8a5a12; border-color: color-mix(in srgb, #b7791f 45%, var(--border-color)); }
.stewardship-queue-meta { display: grid; gap: 5px; color: var(--text-muted); font-size: 12px; min-width: 150px; }
.stewardship-queue-actions { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }

.stewardship-stage-badge { background: #e2e9f5; color: #315f4d; }
.stewardship-stage-badge.stage-stewardship { background: #dcefe5; color: #2f6b4d; }
.stewardship-stage-badge.stage-solicitation-ready,
.stewardship-stage-badge.stage-solicited { background: #fff2ce; color: #8a5a12; }
.stewardship-stage-badge.stage-paused { background: var(--surface-muted); color: var(--text-muted); }
.solicitation-status-badge.limited { background: #fff2ce; color: #8a5a12; }
.solicitation-status-badge.do-not-solicit { background: #f3dddd; color: var(--danger); }

.stewardship-restriction-fieldset {
  margin: 0;
  padding: 12px 14px;
  border: 1px solid var(--border-color);
  border-radius: 12px;
}
.stewardship-restriction-fieldset legend { padding: 0 6px; font-weight: 700; }
.stewardship-restriction-fieldset.is-global-restriction { opacity: .65; }
.stewardship-channel-options { display: flex; gap: 14px; flex-wrap: wrap; }
.stewardship-channel-options label,
.stewardship-checkbox-label { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; }
.stewardship-next-step-fields {
  padding: 14px;
  border: 1px dashed var(--border-color);
  border-radius: 12px;
  background: var(--surface-muted);
}
.constituent-moves-summary { display: grid; gap: 9px; }
.constituent-moves-summary > div { display: flex; justify-content: space-between; gap: 12px; }
.constituent-moves-summary span { color: var(--text-muted); font-size: 12px; }
.constituent-moves-summary p,
.constituent-moves-summary small { margin: 0; color: var(--text-muted); }
.constituent-next-step .stewardship-move-label { width: fit-content; margin-bottom: 4px; }

@media (max-width: 960px) {
  .stewardship-queue-header { align-items: stretch; flex-direction: column; }
  .stewardship-queue-controls { min-width: 0; }
  .stewardship-queue-item { grid-template-columns: 1fr; }
  .stewardship-queue-meta { min-width: 0; }
  .stewardship-queue-actions { justify-content: flex-start; }
}
/* ===== END 23-stewardship-and-moves-management.css ===== */


/* ===== BEGIN 24-fast-gift-entry.css ===== */
/* Fast gift entry */
.gift-entry-panel {
  max-width: 980px;
}

.gift-entry-panel .form-panel-header {
  align-items: flex-start;
}

.gift-entry-panel .form-panel-description {
  max-width: 680px;
  margin: 6px 0 0;
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.5;
}

.gift-entry-type-buttons {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 22px;
}

.gift-entry-type-button {
  min-height: 48px;
  padding: 11px 16px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: var(--surface-muted);
  color: var(--text);
  font-weight: 800;
}

.gift-entry-type-button:hover {
  border-color: var(--primary);
  background: rgba(49, 95, 77, 0.08);
}

.gift-entry-type-button.active {
  border-color: var(--primary);
  background: var(--primary);
  color: #fff;
  box-shadow: 0 7px 18px rgba(49, 95, 77, 0.2);
}

.gift-entry-section {
  overflow: hidden;
  margin-bottom: 20px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface);
}

.gift-entry-section-heading {
  display: flex;
  align-items: center;
  gap: 13px;
  padding: 15px 18px;
  border-bottom: 1px solid var(--border);
  background: rgba(49, 95, 77, 0.07);
}

.gift-entry-section-heading h4,
.gift-new-constituent-header h5 {
  margin: 0;
  color: var(--primary);
}

.gift-entry-section-heading .optional-label {
  margin-left: 6px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.gift-entry-section-heading p,
.gift-new-constituent-header p {
  margin: 4px 0 0;
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.4;
}

.gift-entry-step {
  display: grid;
  flex: 0 0 30px;
  width: 30px;
  height: 30px;
  place-items: center;
  border-radius: 50%;
  background: var(--primary);
  color: #fff;
  font-size: 14px;
  font-weight: 900;
}

#giftExistingConstituentPanel,
.gift-new-constituent-panel,
.gift-entry-core-grid {
  padding: 20px;
}

.gift-entry-core-grid .form-group,
.gift-new-constituent-grid .form-group {
  margin-bottom: 0;
}

.gift-donor-search-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 132px;
  gap: 10px;
}

.gift-donor-search-row input {
  width: 100%;
  min-width: 0;
  padding: 12px 13px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--surface);
  color: var(--text);
  outline: none;
}

.gift-donor-search-row input:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(49, 95, 77, 0.13);
}

.gift-donor-search-row .secondary-button {
  width: 100%;
}

.gift-search-status {
  min-height: 19px;
  margin: 8px 0 0;
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.45;
}

.gift-donor-search-results {
  display: grid;
  gap: 8px;
  margin-top: 10px;
}

.gift-donor-result {
  display: grid;
  gap: 4px;
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface-muted);
  color: var(--text);
  text-align: left;
}

.gift-donor-result:hover,
.gift-donor-result:focus-visible {
  border-color: var(--primary);
  background: rgba(49, 95, 77, 0.08);
  outline: none;
}

.gift-donor-result-name {
  font-weight: 800;
}

.gift-donor-result-detail,
.gift-donor-result-address {
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.35;
}

.gift-selected-constituent {
  margin-top: 12px;
  padding: 14px 16px;
  border: 1px solid rgba(49, 95, 77, 0.35);
  border-radius: 11px;
  background: rgba(49, 95, 77, 0.08);
}

.gift-selected-constituent > div {
  display: flex;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 8px;
}

.gift-selected-constituent strong {
  color: var(--primary);
}

.gift-selected-constituent span,
.gift-selected-constituent p {
  color: var(--text-muted);
  font-size: 13px;
}

.gift-selected-constituent p {
  margin: 7px 0 0;
  line-height: 1.45;
}

.gift-selected-label {
  color: var(--primary) !important;
  font-size: 11px !important;
  font-weight: 900;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.gift-donor-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 12px;
}

.gift-donor-actions .secondary-button {
  width: auto;
}

.gift-hidden-control {
  display: none;
}

.gift-new-constituent-panel {
  background: var(--surface-muted);
}

.gift-new-constituent-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 18px;
}

.gift-new-constituent-header .secondary-button {
  width: auto;
  flex: 0 0 auto;
}

.gift-new-constituent-grid {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}

.gift-new-constituent-grid > .form-group:not(.full-width) {
  grid-column: span 3;
}

.gift-new-constituent-grid > .gift-new-location-row {
  grid-column: span 1;
}

.gift-new-constituent-grid > .form-group:nth-last-child(3) {
  grid-column: span 4;
}

.gift-advanced-details {
  margin: 0 0 20px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-muted);
}

.gift-advanced-details summary {
  padding: 14px 17px;
  color: var(--primary);
  font-weight: 800;
  cursor: pointer;
}

.gift-advanced-details[open] summary {
  border-bottom: 1px solid var(--border);
}

.gift-advanced-details .form-grid {
  padding: 0 18px 20px;
}

.gift-advanced-details .form-group {
  margin-bottom: 0;
}

.gift-advanced-intro {
  margin: 16px 18px;
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.5;
}

@media (max-width: 760px) {
  .gift-entry-type-buttons {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .gift-donor-search-row {
    grid-template-columns: 1fr;
  }

  .gift-new-constituent-grid {
    grid-template-columns: 1fr;
  }

  .gift-new-constituent-grid > .form-group:not(.full-width),
  .gift-new-constituent-grid > .gift-new-location-row,
  .gift-new-constituent-grid > .form-group:nth-last-child(3) {
    grid-column: 1;
  }

  .gift-new-constituent-header {
    flex-direction: column;
  }
}


/* v30.7.44 — keep deposit batching at the top of fast gift entry */
.gift-deposit-fast-entry-heading {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 2px 0 7px;
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.4;
}

.gift-deposit-fast-entry-heading .record-kind-label {
  flex: 0 0 auto;
}

.gift-entry-panel form > .gift-deposit-session {
  margin-top: 0;
}

@media (max-width: 760px) {
  .gift-deposit-fast-entry-heading {
    align-items: flex-start;
    flex-direction: column;
    gap: 3px;
  }
}

.gift-deposit-session {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin: 12px 0 18px;
  padding: 14px 16px;
  border: 1px solid rgba(49, 95, 77, 0.35);
  border-radius: 12px;
  background: rgba(49, 95, 77, 0.08);
}

.gift-deposit-session-copy {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.gift-deposit-session-copy strong {
  color: var(--primary);
}

.gift-deposit-session-copy span {
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.4;
}

.gift-deposit-session-controls {
  display: flex;
  align-items: end;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.gift-deposit-session-controls label {
  display: grid;
  gap: 4px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.gift-deposit-session-controls input {
  min-width: 145px;
  padding: 7px 9px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  text-transform: none;
}

@media (max-width: 760px) {
  .gift-deposit-session {
    align-items: stretch;
    flex-direction: column;
  }

  .gift-deposit-session-controls {
    justify-content: flex-start;
  }
}


body.admin-mode details.gift-deposit-settings.admin-only-control:not(.hidden) {
  display: block !important;
}

.gift-deposit-settings {
  margin: -7px 0 18px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface-muted);
}

.gift-deposit-settings summary {
  padding: 11px 14px;
  color: var(--primary);
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.gift-deposit-settings-body {
  padding: 0 14px 14px;
  border-top: 1px solid var(--border);
}

.gift-deposit-settings-body > p {
  margin: 12px 0;
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.45;
}

.gift-deposit-settings-grid {
  display: grid;
  grid-template-columns: minmax(170px, 0.8fr) minmax(260px, 1.2fr);
  gap: 10px;
}

.gift-deposit-settings-grid label {
  display: grid;
  gap: 5px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 800;
}

.gift-deposit-settings-grid input {
  width: 100%;
  padding: 9px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
}

.gift-deposit-settings-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 10px;
}

.gift-deposit-settings-actions .gift-search-status {
  margin: 0;
}

@media (max-width: 760px) {
  .gift-deposit-settings-grid {
    grid-template-columns: 1fr;
  }

  .gift-deposit-settings-actions {
    align-items: stretch;
    flex-direction: column;
  }
}

.gift-deposit-recovery {
  margin: -8px 0 18px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
}

.gift-deposit-recovery-header,
.gift-deposit-recovery-actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.gift-deposit-recovery-header p {
  margin: 4px 0 0;
  color: var(--text-muted);
  font-size: 12px;
}

.gift-deposit-recovery-list {
  display: grid;
  gap: 6px;
  margin: 12px 0;
  max-height: 320px;
  overflow: auto;
}

.gift-deposit-recovery-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
}

.gift-deposit-recovery-row span {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.gift-deposit-recovery-row small {
  color: var(--text-muted);
  font-size: 11px;
}

.gift-deposit-contract {
  margin: -8px 0 18px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
}

.gift-deposit-contract-grid {
  margin-top: 14px;
}

.gift-deposit-contract-gl {
  min-height: 42px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface-muted);
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.4;
}

/* v30.7.38 — gift work queues + paged history */
.gift-workflow-bar {
  display: grid;
  grid-template-columns: minmax(180px, .9fr) minmax(320px, 1.6fr) minmax(140px, .7fr);
  gap: 14px;
  align-items: center;
  margin: -6px 0 22px;
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-muted);
}

.gift-workflow-copy strong,
.gift-workflow-copy span,
.gift-workflow-button span,
.gift-workflow-button small {
  display: block;
}

.gift-workflow-copy strong {
  font-size: 12px;
  font-weight: 850;
}

.gift-workflow-copy span {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.35;
}

.gift-workflow-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.gift-workflow-button {
  min-width: 0;
  padding: 9px 11px;
  border: 1px solid #bfd3c8;
  border-radius: 9px;
  background: #edf5f1;
  color: var(--primary-dark, #244c3c);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.gift-workflow-button:hover:not(:disabled) {
  border-color: #9bbcaf;
  background: #e4f0ea;
}

.gift-workflow-button:disabled {
  cursor: default;
  opacity: .55;
}

.gift-workflow-button span {
  font-size: 11.5px;
  font-weight: 850;
}

.gift-workflow-button small {
  margin-top: 2px;
  overflow: hidden;
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 700;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gift-workflow-status {
  color: var(--text-muted);
  font-size: 10.5px;
  font-weight: 700;
  line-height: 1.35;
}

.gift-assignment-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 14px;
  padding: 11px 13px;
  border: 1px solid #a9c8ba;
  border-radius: 10px;
  background: #edf5f1;
}

.gift-assignment-banner.hidden { display: none; }

.gift-assignment-banner > div:first-child {
  display: grid;
  gap: 2px;
}

.gift-assignment-banner strong {
  font-size: 12px;
}

.gift-assignment-banner span {
  color: var(--text-muted);
  font-size: 10.5px;
  font-weight: 700;
}

.gift-assignment-banner-actions {
  display: flex;
  gap: 7px;
}

.gift-history-pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 12px;
  padding: 10px 2px 0;
  border-top: 1px solid var(--border);
}

.gift-history-pagination.hidden { display: none; }

.gift-history-pagination-controls {
  display: flex;
  align-items: center;
  gap: 8px;
}

.gift-history-page-range,
.gift-history-page-status {
  color: var(--text-muted);
  font-size: 10.5px;
  font-weight: 750;
  font-variant-numeric: tabular-nums;
}

.fundraising-assign-unassigned {
  margin-top: 8px;
}

@media (max-width: 860px) {
  .gift-workflow-bar {
    grid-template-columns: 1fr;
  }

  .gift-workflow-status:empty { display: none; }
}

@media (max-width: 620px) {
  .gift-workflow-actions {
    grid-template-columns: 1fr;
  }

  .gift-assignment-banner,
  .gift-history-pagination {
    align-items: stretch;
    flex-direction: column;
  }

  .gift-assignment-banner-actions,
  .gift-history-pagination-controls {
    justify-content: space-between;
  }
}


/* v30.7.40 — Gifts workspace information architecture */
.gift-section-tabs {
  display: flex;
  gap: 6px;
  overflow-x: auto;
  margin: -4px 0 20px;
  padding: 5px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-muted);
}

.gift-section-tab {
  flex: 0 0 auto;
  padding: 9px 13px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.gift-section-tab:hover { background: var(--surface); color: var(--text); }
.gift-section-tab.active {
  border-color: var(--border);
  background: var(--surface);
  color: var(--text);
  box-shadow: 0 1px 2px rgba(0,0,0,.04);
}

#giftsWorkspace .gift-section-hidden { display: none !important; }

.gift-overview-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin: 0 0 22px;
}

.gift-overview-actions button {
  display: grid;
  gap: 4px;
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.gift-overview-actions button:hover { border-color: #9bbcaf; background: #f7faf8; }
.gift-overview-actions strong { font-size: 13px; }
.gift-overview-actions span { color: var(--text-muted); font-size: 11px; line-height: 1.4; }

@media (max-width: 700px) {
  .gift-overview-actions { grid-template-columns: 1fr; }
}

/* v30.7.41 — useful Gifts overview without another long dashboard */
.gift-overview-dashboard {
  display: grid;
  gap: 14px;
  margin-bottom: 22px;
}

.gift-overview-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 16px;
}

.gift-overview-heading h3 {
  margin: 3px 0 0;
  font-size: 18px;
}

.gift-overview-year-control {
  display: grid;
  gap: 4px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .035em;
}

.gift-overview-year-control select {
  min-width: 96px;
  text-transform: none;
  letter-spacing: normal;
}

.gift-overview-metrics {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
}

.gift-overview-metric {
  min-width: 0;
  padding: 15px 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
}

.gift-overview-metric > span {
  display: block;
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: .045em;
}

.gift-overview-metric > strong {
  display: block;
  margin-top: 5px;
  color: var(--text);
  font-size: clamp(20px, 2.25vw, 28px);
  line-height: 1.08;
  overflow-wrap: anywhere;
}

.gift-overview-metric > small {
  display: block;
  margin-top: 6px;
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.3;
}

.gift-overview-attention {
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-muted);
}

.gift-overview-attention-heading h3 { margin: 0; font-size: 14px; }
.gift-overview-attention-heading p { margin: 3px 0 0; color: var(--text-muted); font-size: 11px; }

.gift-overview-attention-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-top: 11px;
}

.gift-overview-attention-grid button {
  display: grid;
  gap: 4px;
  min-width: 0;
  padding: 11px 12px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.gift-overview-attention-grid button:hover {
  border-color: #9bbcaf;
  background: #f7faf8;
}

.gift-overview-attention-grid span {
  font-size: 12px;
  font-weight: 700;
  line-height: 1.2;
}

.gift-overview-attention-grid span strong {
  margin-right: 3px;
  font-size: 18px;
}

.gift-overview-attention-grid small {
  color: var(--text-muted);
  font-size: 10px;
  line-height: 1.3;
}

.gift-overview-lifetime {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 16px;
  padding: 10px 13px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  color: var(--text-muted);
  font-size: 11px;
}

.gift-overview-lifetime > strong {
  color: var(--text);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .04em;
}

.gift-overview-lifetime b { color: var(--text); }

.gift-overview-lifetime button {
  margin-left: auto;
  padding: 5px 8px;
  border: 0;
  background: transparent;
  color: var(--accent);
  font: inherit;
  font-weight: 800;
  cursor: pointer;
}

@media (max-width: 900px) {
  .gift-overview-metrics,
  .gift-overview-attention-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
  .gift-overview-heading { align-items: stretch; flex-direction: column; }
  .gift-overview-year-control { align-self: start; }
  .gift-overview-metrics,
  .gift-overview-attention-grid { grid-template-columns: 1fr; }
  .gift-overview-lifetime { align-items: flex-start; flex-direction: column; }
  .gift-overview-lifetime button { margin-left: 0; padding-left: 0; }
}

/* v30.7.43 — dedicated Add Gifts workspace instead of header action clutter */
.gift-entry-hub {
  display: grid;
  gap: 16px;
  margin: 0 0 22px;
  padding: 20px;
  border: 1px solid var(--border);
  border-radius: 16px;
  background: var(--surface);
}

.gift-entry-hub-heading h3 {
  margin: 4px 0 6px;
  font-size: 20px;
}

.gift-entry-hub-heading p {
  margin: 0;
  max-width: 720px;
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1.45;
}

.gift-entry-hub-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.gift-entry-hub-action {
  display: grid;
  align-content: start;
  gap: 5px;
  min-width: 0;
  min-height: 96px;
  padding: 15px 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-muted);
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.gift-entry-hub-action:hover {
  border-color: #9bbcaf;
  background: #f7faf8;
}

.gift-entry-hub-action-primary {
  border-color: var(--primary);
  background: color-mix(in srgb, var(--primary) 7%, var(--surface));
}

.gift-entry-hub-action strong {
  font-size: 14px;
}

.gift-entry-hub-action span {
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.4;
}

@media (max-width: 760px) {
  .gift-entry-hub-actions { grid-template-columns: 1fr; }
  .gift-entry-hub-action { min-height: 0; }
}

/* v30.7.45 — Gifts overview analytics instead of cleanup queues */
.gift-overview-analysis-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.35fr) minmax(300px, .9fr);
  gap: 16px;
}

.gift-overview-analysis-card {
  min-width: 0;
  padding: 18px;
  border: 1px solid var(--border-color);
  border-radius: 15px;
  background: var(--surface);
}

.gift-overview-analysis-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 16px;
}

.gift-overview-analysis-heading h3 { margin: 2px 0 0; font-size: 16px; }
.gift-overview-analysis-heading > small { max-width: 260px; color: var(--text-muted); font-size: 11px; line-height: 1.35; text-align: right; }

.gift-size-mix-bar {
  display: flex;
  width: 100%;
  height: 18px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--surface-muted);
}

.gift-size-segment { display: block; min-width: 0; height: 100%; transition: width .2s ease; }
.gift-size-small { background: #8ca89d; }
.gift-size-medium { background: #4f7968; }
.gift-size-large { background: #244f40; }

.gift-size-mix-legend {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 14px;
}

.gift-size-mix-legend > div {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 4px 7px;
  align-items: center;
  min-width: 0;
  padding: 10px 11px;
  border: 1px solid var(--border-color);
  border-radius: 11px;
  background: var(--surface-muted);
}

.gift-size-key { width: 9px; height: 9px; border-radius: 999px; }
.gift-size-mix-legend strong { font-size: 12px; }
.gift-size-mix-legend b { font-size: 15px; text-align: right; }
.gift-size-mix-legend small { grid-column: 1 / -1; color: var(--text-muted); font-size: 10px; line-height: 1.3; }

.donor-health-metrics { display: grid; gap: 13px; }
.donor-health-metrics > div { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 1px 10px; align-items: baseline; }
.donor-health-metrics strong { grid-row: 1 / 3; min-width: 68px; font-size: 22px; color: var(--primary); }
.donor-health-metrics span { font-size: 12px; font-weight: 800; }
.donor-health-metrics small { color: var(--text-muted); font-size: 10px; line-height: 1.3; }

.donor-health-track {
  height: 9px;
  margin-top: 16px;
  overflow: hidden;
  border-radius: 999px;
  background: color-mix(in srgb, var(--warning-color, #b7791f) 24%, var(--surface));
}
.donor-health-track span { display: block; height: 100%; border-radius: inherit; background: var(--primary); transition: width .2s ease; }

@media (max-width: 900px) {
  .gift-overview-analysis-grid { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .gift-size-mix-legend { grid-template-columns: 1fr; }
  .gift-overview-analysis-heading { flex-direction: column; }
  .gift-overview-analysis-heading > small { max-width: none; text-align: left; }
}
/* ===== END 24-fast-gift-entry.css ===== */


/* ===== BEGIN 25-historical-grant-review.css ===== */
/* Historical Grant Review */
.historical-review-workspace-header {
  margin-bottom: 18px;
}

.historical-review-kicker,
.historical-review-panel-kicker {
  display: block;
  margin-bottom: 6px;
  color: var(--primary);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: 0.09em;
  text-transform: uppercase;
}

.historical-review-summary-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.historical-review-summary-card {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 3px 12px;
  min-width: 0;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  color: var(--text);
  text-align: left;
  transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
}

.historical-review-summary-card:hover {
  border-color: var(--primary);
  box-shadow: 0 7px 18px rgba(31, 41, 36, 0.08);
  transform: translateY(-1px);
}

.historical-review-summary-card.active {
  border-color: var(--primary);
  background: rgba(49, 95, 77, 0.07);
  box-shadow: inset 0 0 0 1px var(--primary);
}

.historical-review-summary-card > span {
  align-self: center;
  font-size: 13px;
  font-weight: 800;
}

.historical-review-summary-card > strong {
  grid-row: 1 / span 2;
  grid-column: 2;
  align-self: center;
  color: var(--primary);
  font-size: 26px;
  line-height: 1;
}

.historical-review-summary-card > small {
  min-width: 0;
  overflow: hidden;
  color: var(--text-muted);
  font-size: 11px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.historical-review-toolbar {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 190px;
  gap: 12px 14px;
  margin-bottom: 18px;
  padding: 15px 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: 0 6px 18px rgba(31, 41, 36, 0.04);
}

.historical-review-search-field label,
.historical-review-sort-field label,
.historical-review-form label {
  display: block;
  margin-bottom: 6px;
  font-size: 12px;
  font-weight: 800;
}

.historical-review-search-field input,
.historical-review-sort-field select,
.historical-review-form select,
.historical-review-form textarea {
  width: 100%;
  padding: 10px 11px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  outline: none;
}

.historical-review-search-field input:focus,
.historical-review-sort-field select:focus,
.historical-review-form select:focus,
.historical-review-form textarea:focus {
  border-color: var(--primary);
  box-shadow: 0 0 0 3px rgba(49, 95, 77, 0.12);
}

.historical-review-candidate-note {
  grid-column: 1 / -1;
  margin: 0;
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.45;
}

.historical-review-layout {
  display: grid;
  grid-template-columns: minmax(285px, 0.38fr) minmax(0, 0.62fr);
  gap: 18px;
  align-items: start;
}

.historical-review-queue-panel,
.historical-review-detail-panel {
  min-width: 0;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface);
  box-shadow: 0 8px 24px rgba(31, 41, 36, 0.05);
}

.historical-review-panel-header,
.historical-review-section-header,
.historical-review-detail-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.historical-review-panel-header {
  padding: 16px 17px;
  border-bottom: 1px solid var(--border);
  background: rgba(49, 95, 77, 0.05);
}

.historical-review-panel-header h3,
.historical-review-section-header h4,
.historical-review-detail-heading h3 {
  margin: 0;
}

.historical-review-panel-header h3 {
  font-size: 17px;
}

.historical-review-result-count,
.historical-review-history-count {
  flex-shrink: 0;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 800;
}

.historical-review-queue {
  display: grid;
}

.historical-review-queue-item {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  width: 100%;
  padding: 14px 15px;
  border: 0;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  text-align: left;
}

.historical-review-queue-item:last-child {
  border-bottom: 0;
}

.historical-review-queue-item:hover {
  background: var(--surface-muted);
}

.historical-review-queue-item.active {
  background: rgba(49, 95, 77, 0.08);
  box-shadow: inset 4px 0 0 var(--primary);
}

.historical-review-queue-year,
.historical-review-history-year {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 29px;
  padding: 5px 7px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface-muted);
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 900;
}

.historical-review-queue-main,
.historical-review-history-main {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.historical-review-queue-main strong,
.historical-review-history-main strong {
  overflow: hidden;
  font-size: 13px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.historical-review-queue-main > span,
.historical-review-history-main > span {
  overflow: hidden;
  color: var(--text-muted);
  font-size: 12px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.historical-review-queue-main small,
.historical-review-history-main small {
  color: var(--text-muted);
  font-size: 11px;
}

.historical-review-queue-state,
.historical-review-state-badge,
.historical-review-source-lock {
  display: inline-flex;
  align-items: center;
  width: max-content;
  max-width: 100%;
  padding: 5px 8px;
  border-radius: 999px;
  background: var(--surface-muted);
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 900;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.historical-review-state-reviewed {
  background: #dcefe5;
  color: #24593f;
}

.historical-review-state-flagged {
  background: #fff2ce;
  color: #745713;
}

.historical-review-state-unreviewed {
  background: #edf1ef;
  color: #53615a;
}

.historical-review-pager {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 14px;
  border-top: 1px solid var(--border);
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 800;
}

.historical-review-empty,
.historical-review-detail-empty,
.historical-review-history-empty {
  display: grid;
  place-items: center;
  gap: 6px;
  padding: 36px 22px;
  color: var(--text-muted);
  text-align: center;
}

.historical-review-empty strong,
.historical-review-detail-empty h3 {
  margin: 0;
  color: var(--text);
  font-size: 15px;
}

.historical-review-empty span,
.historical-review-detail-empty p,
.historical-review-history-empty {
  margin: 0;
  font-size: 12px;
  line-height: 1.5;
}

.historical-review-detail-icon {
  display: grid;
  width: 38px;
  height: 38px;
  place-items: center;
  border-radius: 50%;
  background: rgba(49, 95, 77, 0.08);
  color: var(--primary);
  font-size: 20px;
}

.historical-review-detail-heading {
  padding: 18px 19px;
  border-bottom: 1px solid var(--border);
}

.historical-review-detail-heading h3 {
  font-size: 20px;
  line-height: 1.3;
}

.historical-review-detail-heading p {
  margin: 5px 0 0;
  color: var(--text-muted);
  font-size: 12px;
}

.historical-review-heading-badges {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 7px;
}

.historical-review-section {
  padding: 18px 19px;
  border-bottom: 1px solid var(--border);
}

.historical-review-section:last-child {
  border-bottom: 0;
}

.historical-review-source-section {
  background: var(--surface-muted);
}

.historical-review-section-header {
  margin-bottom: 13px;
}

.historical-review-section-header h4 {
  font-size: 15px;
}

.historical-review-section-note {
  margin: -5px 0 14px;
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.45;
}

.historical-review-field-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 9px;
}

.historical-review-field {
  min-width: 0;
  padding: 10px 11px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--surface);
}

.historical-review-field span {
  display: block;
  margin-bottom: 4px;
  color: var(--text-muted);
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.historical-review-field strong {
  display: block;
  overflow-wrap: anywhere;
  font-size: 12px;
  line-height: 1.4;
}

.historical-review-text-block {
  margin-top: 10px;
  padding: 11px 12px;
  border-left: 3px solid var(--border);
  background: var(--surface);
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.5;
  white-space: pre-wrap;
}


.historical-review-text-block > span {
  display: block;
  margin-bottom: 4px;
  color: var(--text-muted);
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.historical-review-text-block > p {
  margin: 0;
}

.historical-review-toolbar-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 12px;
}

.historical-review-form {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 13px;
}

.historical-review-form .full-width {
  grid-column: 1 / -1;
}

.historical-review-form textarea {
  min-height: 100px;
  resize: vertical;
}

.historical-review-form-status {
  min-height: 18px;
  margin: 0;
  color: var(--danger);
  font-size: 11px;
}

.historical-review-form-footer {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-top: 4px;
  color: var(--text-muted);
  font-size: 11px;
}

.historical-review-form-actions {
  display: flex;
  gap: 8px;
}

.historical-review-save-next {
  width: auto;
}

.historical-review-history-list {
  display: grid;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 10px;
}

.historical-review-history-item {
  display: grid;
  grid-template-columns: 54px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  width: 100%;
  padding: 11px 12px;
  border: 0;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  text-align: left;
}

.historical-review-history-item:last-child {
  border-bottom: 0;
}

.historical-review-history-item:hover {
  background: var(--surface-muted);
}

@media (max-width: 1120px) {
  .historical-review-summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .historical-review-layout {
    grid-template-columns: 1fr;
  }

  .historical-review-queue {
    max-height: 520px;
    overflow-y: auto;
  }
}

@media (max-width: 760px) {
  .historical-review-toolbar {
    grid-template-columns: 1fr;
  }

  .historical-review-field-grid,
  .historical-review-form {
    grid-template-columns: 1fr;
  }

  .historical-review-form .full-width {
    grid-column: auto;
  }

  .historical-review-form-footer,
  .historical-review-panel-header,
  .historical-review-section-header,
  .historical-review-detail-heading {
    align-items: stretch;
    flex-direction: column;
  }

  .historical-review-form-actions {
    width: 100%;
  }

  .historical-review-form-actions button {
    flex: 1;
  }

  .historical-review-heading-badges {
    justify-content: flex-start;
  }
}

@media (max-width: 560px) {
  .historical-review-summary-grid {
    grid-template-columns: 1fr;
  }

  .historical-review-queue-item,
  .historical-review-history-item {
    grid-template-columns: 48px minmax(0, 1fr);
  }

  .historical-review-queue-state,
  .historical-review-history-item .status-badge {
    grid-column: 2;
    justify-self: start;
  }
}
/* ===== END 25-historical-grant-review.css ===== */


/* ===== BEGIN 30-finance.css ===== */
/**
 * PeliPro style source unit.
 * Run `npm run build` after editing; do not edit public/assets/css/app.css directly.
 */
    .finance-overview-grid .summary-value {
      flex: 0 0 auto;
      font-size: 23px;
      font-variant-numeric: tabular-nums;
    }

    .finance-layout {
      display: block;
      min-width: 0;
    }

    .finance-panel {
      min-width: 0;
      border: 1px solid var(--border);
      border-radius: 18px;
      background: var(--surface);
      overflow: hidden;
      box-shadow: 0 8px 24px rgba(28, 47, 39, 0.05);
    }

    .finance-panel-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 16px;
      padding: 16px 20px;
      border-bottom: 1px solid var(--border);
      background: linear-gradient(180deg, #fbfdfc 0%, var(--surface-muted) 100%);
    }

    .finance-panel-header h3,
    .finance-panel-header p {
      margin: 0;
    }

    .finance-panel-header p {
      margin-top: 4px;
      color: var(--text-muted);
      font-size: 12px;
      line-height: 1.45;
    }

    .finance-toolbar {
      display: grid;
      grid-template-columns: minmax(240px, 1.45fr) repeat(4, minmax(135px, 0.8fr));
      gap: 11px;
      padding: 14px 16px;
      border-bottom: 1px solid var(--border);
      background: #fbfcfb;
    }

    .finance-toolbar .form-group {
      min-width: 0;
      margin: 0;
    }

    .finance-toolbar label {
      font-size: 10px;
      letter-spacing: 0.035em;
      text-transform: uppercase;
    }

    .finance-toolbar input,
    .finance-toolbar select {
      min-width: 0;
      width: 100%;
    }

    .finance-filter-footer {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      padding: 9px 16px;
      border-bottom: 1px solid var(--border);
      background: var(--surface-muted);
    }

    .finance-filter-footer .directory-result-count {
      margin: 0;
    }

    .finance-text-button {
      padding: 0;
      border: 0;
      background: transparent;
      color: var(--primary);
      font: inherit;
      font-size: 12px;
      font-weight: 750;
      cursor: pointer;
    }

    .finance-text-button:hover {
      text-decoration: underline;
    }

    .finance-list {
      display: grid;
      gap: 0;
    }

    .finance-work-queue {
      max-height: 680px;
      overflow: auto;
      overscroll-behavior: contain;
      scrollbar-gutter: stable;
    }

    .finance-transaction-row {
      display: grid;
      grid-template-columns: 52px minmax(0, 1fr) minmax(95px, auto);
      gap: 14px;
      align-items: center;
      width: 100%;
      padding: 13px 16px;
      border: 0;
      border-bottom: 1px solid var(--border);
      background: var(--surface);
      color: inherit;
      text-align: left;
      cursor: pointer;
      transition: background 120ms ease, box-shadow 120ms ease, transform 90ms ease;
    }

    .finance-transaction-row:last-child {
      border-bottom: 0;
    }

    .finance-transaction-row:hover {
      background: #f7faf8;
    }

    .finance-transaction-row:active {
      transform: translateY(1px);
    }

    .finance-transaction-row.selected {
      position: relative;
      z-index: 1;
      background: #eef6f2;
      box-shadow: inset 4px 0 0 var(--primary);
    }

    .finance-date-tile {
      display: grid;
      align-content: center;
      justify-items: center;
      min-height: 50px;
      border: 1px solid var(--border);
      border-radius: 12px;
      background: #fff;
      line-height: 1;
    }

    .finance-date-tile span {
      color: var(--text-muted);
      font-size: 10px;
      font-weight: 800;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }

    .finance-date-tile strong {
      margin-top: 4px;
      font-size: 18px;
      font-variant-numeric: tabular-nums;
    }

    .finance-row-main {
      min-width: 0;
    }

    .finance-row-title {
      display: block;
      overflow: hidden;
      margin: 0;
      font-size: 14px;
      font-weight: 800;
      line-height: 1.35;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .finance-row-subtitle {
      display: block;
      overflow: hidden;
      margin-top: 3px;
      color: var(--text-muted);
      font-size: 12px;
      line-height: 1.35;
      text-overflow: ellipsis;
      white-space: nowrap;
    }

    .finance-row-statuses {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
      margin-top: 7px;
    }

    .finance-row-amount {
      justify-self: end;
      padding-left: 10px;
      font-size: 17px;
      font-weight: 850;
      font-variant-numeric: tabular-nums;
      white-space: nowrap;
    }

    .finance-row-amount.income {
      color: var(--finance-success);
    }

    .finance-mini-status,
    .finance-status {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      min-height: 23px;
      padding: 3px 8px;
      border-radius: 999px;
      background: #eef1ef;
      color: #435049;
      font-size: 10px;
      font-weight: 800;
      line-height: 1.2;
    }

    .finance-mini-status::before {
      width: 6px;
      height: 6px;
      border-radius: 50%;
      background: currentColor;
      content: "";
      opacity: 0.7;
    }

    .finance-status.matched,
    .finance-mini-status.matched,
    .finance-status.coded,
    .finance-mini-status.coded {
      background: #dfeee6;
      color: var(--finance-success);
    }

    .finance-status.unmatched,
    .finance-mini-status.unmatched {
      background: #fff1ce;
      color: var(--finance-warning);
    }

    .finance-status.ignored,
    .finance-mini-status.ignored {
      background: #eceff1;
      color: #626c71;
    }

    .finance-status.income,
    .finance-mini-status.income {
      background: #e6eef6;
      color: var(--finance-blue);
    }

    .finance-status.uncoded,
    .finance-mini-status.uncoded {
      background: #f7e5e1;
      color: var(--finance-danger);
    }

    .finance-inspector-backdrop {
      position: fixed;
      inset: 0;
      z-index: 109;
      border: 0;
      background: rgba(20, 32, 27, 0.24);
      opacity: 0;
      pointer-events: none;
      transition: opacity 160ms ease;
    }

    .finance-inspector-backdrop.open {
      opacity: 1;
      pointer-events: auto;
    }

    .finance-inspector {
      position: fixed;
      top: 16px;
      right: 16px;
      bottom: 16px;
      z-index: 110;
      display: flex;
      flex-direction: column;
      width: min(540px, calc(100vw - 32px));
      min-width: 0;
      border-radius: 20px;
      box-shadow: 0 24px 70px rgba(18, 30, 25, 0.24);
      opacity: 0;
      pointer-events: none;
      transform: translateX(calc(100% + 28px));
      transition: transform 180ms ease, opacity 160ms ease;
    }

    .finance-inspector.open {
      opacity: 1;
      pointer-events: auto;
      transform: translateX(0);
    }

    .finance-inspector-header {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: center;
      gap: 8px;
      padding: 8px;
      border-bottom: 1px solid var(--border);
      background: var(--surface-muted);
    }

    .finance-inspector-tabs {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 6px;
      min-width: 0;
    }

    .finance-inspector-tab {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 7px;
      min-width: 0;
      min-height: 40px;
      padding: 8px 10px;
      border: 1px solid transparent;
      border-radius: 10px;
      background: transparent;
      color: var(--text-muted);
      font: inherit;
      font-size: 12px;
      font-weight: 800;
      cursor: pointer;
    }

    .finance-inspector-tab.active {
      border-color: var(--border);
      background: #fff;
      color: var(--text);
      box-shadow: 0 2px 8px rgba(28, 47, 39, 0.06);
    }

    .finance-inspector-close {
      align-self: stretch;
      min-width: 64px;
    }

    .finance-tab-count {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 23px;
      min-height: 20px;
      padding: 1px 6px;
      border-radius: 999px;
      background: #e7ece9;
      color: #4f5d56;
      font-size: 10px;
    }

    .finance-inspector-body {
      flex: 1;
      min-height: 0;
      overflow: auto;
      overscroll-behavior: contain;
    }

    .finance-detail {
      padding: 24px;
    }

    .finance-detail-hero {
      padding-bottom: 19px;
      border-bottom: 1px solid var(--border);
    }

    .finance-detail-kicker {
      margin: 0 0 8px;
      color: var(--text-muted);
      font-size: 11px;
      font-weight: 800;
      letter-spacing: 0.05em;
      text-transform: uppercase;
    }

    .finance-detail-title-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: start;
      gap: 16px;
    }

    .finance-detail-title {
      min-width: 0;
      margin: 0;
      font-size: 20px;
      line-height: 1.32;
      overflow-wrap: anywhere;
    }

    .finance-detail-amount {
      flex: 0 0 auto;
      font-size: 21px;
      font-weight: 900;
      font-variant-numeric: tabular-nums;
      white-space: nowrap;
    }

    .finance-detail-amount.income {
      color: var(--finance-success);
    }

    .finance-status-row {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 7px;
      margin-top: 12px;
    }

    .finance-facts {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px;
      margin-top: 16px;
    }

    .finance-fact {
      min-width: 0;
      padding: 11px 12px;
      border: 1px solid var(--border);
      border-radius: 11px;
      background: var(--surface-muted);
    }

    .finance-fact span {
      display: block;
      color: var(--text-muted);
      font-size: 10px;
      font-weight: 800;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    .finance-fact strong {
      display: block;
      overflow-wrap: anywhere;
      margin-top: 4px;
      font-size: 12px;
      line-height: 1.4;
    }

    .finance-detail-section {
      padding: 20px 0;
      border-bottom: 1px solid var(--border);
    }

    .finance-detail-section:last-child {
      padding-bottom: 0;
      border-bottom: 0;
    }

    .finance-section-heading {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 11px;
    }

    .finance-section-heading h4,
    .finance-section-heading p {
      margin: 0;
    }

    .finance-section-heading h4 {
      font-size: 14px;
    }

    .finance-section-heading p,
    .finance-helper-text {
      color: var(--text-muted);
      font-size: 11px;
      line-height: 1.45;
    }

    .finance-control-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: end;
      gap: 9px;
    }

    .finance-control-row .form-group {
      min-width: 0;
      margin: 0;
    }

    .finance-control-row input,
    .finance-control-row select {
      width: 100%;
    }

    .finance-receipt-match-card {
      padding: 13px;
      border: 1px solid #cedfd6;
      border-radius: 12px;
      background: #f0f7f3;
    }

    .finance-receipt-match-card.warning {
      border-color: #ead8aa;
      background: #fff8e8;
    }

    .finance-receipt-match-card h5,
    .finance-receipt-match-card p {
      margin: 0;
    }

    .finance-receipt-match-card h5 {
      font-size: 13px;
    }

    .finance-receipt-match-card p {
      margin-top: 4px;
      color: var(--text-muted);
      font-size: 11px;
      line-height: 1.45;
    }

    .finance-card-actions {
      display: flex;
      flex-wrap: wrap;
      gap: 7px;
      margin-top: 10px;
    }

    .finance-divider-label {
      display: flex;
      align-items: center;
      gap: 10px;
      margin: 12px 0;
      color: var(--text-muted);
      font-size: 10px;
      font-weight: 800;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    .finance-divider-label::before,
    .finance-divider-label::after {
      flex: 1;
      height: 1px;
      background: var(--border);
      content: "";
    }

    .finance-receipt-inbox {
      max-height: none;
      overflow: visible;
    }

    .finance-receipt-card {
      padding: 18px 20px;
      border-bottom: 1px solid var(--border);
    }

    .finance-receipt-card:last-child {
      border-bottom: 0;
    }

    .finance-receipt-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 12px;
    }

    .finance-record-title {
      margin: 0;
      font-size: 14px;
      line-height: 1.35;
    }

    .finance-record-meta {
      display: flex;
      flex-wrap: wrap;
      gap: 5px 10px;
      margin-top: 5px;
      color: var(--text-muted);
      font-size: 11px;
      line-height: 1.35;
    }

    .finance-amount {
      flex: 0 0 auto;
      font-size: 16px;
      font-weight: 850;
      font-variant-numeric: tabular-nums;
      white-space: nowrap;
    }

    .finance-receipt-gl {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: end;
      gap: 7px;
      margin-top: 11px;
    }

    .finance-receipt-gl .form-group {
      min-width: 0;
      margin: 0;
    }

    .finance-empty {
      padding: 46px 24px;
      color: var(--text-muted);
      text-align: center;
      line-height: 1.5;
    }

    .finance-empty strong {
      display: block;
      margin-bottom: 5px;
      color: var(--text);
    }

    .finance-import-preview {
      overflow: auto;
      max-height: 340px;
      margin-top: 14px;
      border: 1px solid var(--border);
      border-radius: 12px;
      background: var(--surface);
    }

    .finance-import-preview table {
      width: 100%;
      min-width: 760px;
      border-collapse: collapse;
      font-size: 12px;
    }

    .finance-import-preview th,
    .finance-import-preview td {
      padding: 9px 10px;
      border-bottom: 1px solid var(--border);
      text-align: left;
      vertical-align: top;
    }

    .finance-import-preview th {
      position: sticky;
      top: 0;
      z-index: 1;
      background: #f4f7f5;
    }

    .finance-file-note {
      margin: 7px 0 0;
      color: var(--text-muted);
      font-size: 12px;
      line-height: 1.4;
    }

    @media (max-width: 1050px) {
      .finance-overview-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }

      .finance-toolbar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .finance-toolbar .form-group:first-child {
        grid-column: 1 / -1;
      }
    }


/* v29 — live finance reporting and GL summaries */
.finance-report-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 9px;
}

.finance-activity-view-toggle {
  display: inline-flex;
  gap: 3px;
  padding: 3px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #eef3f1;
}

.finance-activity-view-button {
  min-height: 32px;
  padding: 6px 10px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
}

.finance-activity-view-button.active {
  background: #fff;
  color: var(--text);
  box-shadow: 0 1px 4px rgba(28, 47, 39, 0.11);
}

.finance-live-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border-bottom: 1px solid var(--border);
  background: #fff;
}

.finance-live-metric {
  min-width: 0;
  padding: 14px 16px 12px;
  border-right: 1px solid var(--border);
}

.finance-live-summary > .finance-live-metric:nth-child(4) {
  border-right: 0;
}

.finance-live-cashflow {
  display: grid;
  grid-column: 1 / -1;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: 1px solid var(--border);
  background: #fbfcfb;
}

.finance-live-cashflow-metric:last-child {
  border-right: 0;
}

.finance-live-metric span {
  display: block;
  color: var(--text-muted);
  font-size: 9.5px;
  font-weight: 850;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.finance-live-metric strong {
  display: block;
  margin-top: 5px;
  overflow: hidden;
  font-size: 20px;
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.finance-live-metric strong.positive,
.finance-gl-summary-table td.positive {
  color: var(--finance-success);
}

.finance-live-metric strong.negative,
.finance-gl-summary-table td.negative {
  color: #7d4b45;
}

.finance-live-note {
  grid-column: 1 / -1;
  margin: 0;
  padding: 7px 16px 8px;
  border-top: 1px solid #eef2f0;
  background: var(--surface-muted);
  color: var(--text-muted);
  font-size: 10.5px;
  line-height: 1.35;
}

.finance-gl-summary-table-wrap {
  overflow: auto;
}

.finance-gl-summary-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

.finance-gl-summary-table th,
.finance-gl-summary-table td {
  padding: 11px 14px;
  border-bottom: 1px solid var(--border);
  text-align: right;
  vertical-align: middle;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.finance-gl-summary-table th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #f4f7f5;
  color: var(--text-muted);
  font-size: 9.5px;
  font-weight: 850;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.finance-gl-summary-table th:first-child,
.finance-gl-summary-table td:first-child {
  width: 100%;
  text-align: left;
  white-space: normal;
}

.finance-gl-summary-table td:first-child strong,
.finance-gl-summary-table td:first-child span {
  display: block;
}

.finance-gl-summary-table td:first-child strong {
  color: var(--text);
  font-size: 12.5px;
}

.finance-gl-summary-table td:first-child span {
  margin-top: 2px;
  color: var(--text-muted);
  font-size: 10.5px;
}

.finance-gl-summary-table tbody tr:hover {
  background: #f8faf9;
}

.finance-gl-summary-table tbody tr:last-child td {
  border-bottom: 0;
}

.finance-gl-sort-button {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 5px;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  font-weight: inherit;
  letter-spacing: inherit;
  text-transform: inherit;
  cursor: pointer;
}

.finance-gl-summary-table th:first-child .finance-gl-sort-button {
  justify-content: flex-start;
}

.finance-gl-sort-button:hover,
.finance-gl-sort-button:focus-visible,
.finance-gl-sort-button.active {
  color: var(--finance-accent, #285a45);
}

.finance-gl-sort-button span {
  min-width: 10px;
  font-size: 11px;
  line-height: 1;
}

.finance-gl-account-cell {
  position: relative;
  padding-left: calc(var(--finance-gl-depth, 0) * 24px);
}

.finance-gl-child-row .finance-gl-account-cell::before {
  position: absolute;
  top: -12px;
  bottom: -12px;
  left: calc((var(--finance-gl-depth, 1) * 24px) - 14px);
  width: 1px;
  background: #d7e0dc;
  content: "";
}

.finance-gl-child-row .finance-gl-account-cell::after {
  position: absolute;
  top: 14px;
  left: calc((var(--finance-gl-depth, 1) * 24px) - 14px);
  width: 10px;
  height: 1px;
  background: #d7e0dc;
  content: "";
}

.finance-gl-parent-row > td {
  background: #f7f9f8;
  font-weight: 700;
}

.finance-gl-parent-row:not(:first-child) > td {
  border-top: 2px solid #dfe7e3;
}

.finance-gl-parent-row .finance-gl-account-cell > span {
  color: var(--text);
  font-weight: 700;
}

.finance-gl-rollup-note {
  display: block;
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 9.5px;
  font-weight: 600;
  line-height: 1.25;
}

@media (max-width: 900px) {
  .finance-panel-header {
    align-items: flex-start;
    flex-direction: column;
  }

  .finance-report-actions {
    width: 100%;
    justify-content: space-between;
  }

  .finance-live-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .finance-live-summary > .finance-live-metric:nth-child(2) {
    border-right: 0;
  }

  .finance-live-summary > .finance-live-metric:nth-child(-n+2) {
    border-bottom: 1px solid var(--border);
  }

  .finance-live-cashflow {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 620px) {
  .finance-report-actions {
    align-items: stretch;
    flex-direction: column;
  }

  .finance-activity-view-toggle {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .finance-live-summary {
    grid-template-columns: 1fr;
  }

  .finance-live-summary > .finance-live-metric,
  .finance-live-summary > .finance-live-metric:nth-child(2),
  .finance-live-summary > .finance-live-metric:nth-child(4),
  .finance-live-cashflow-metric {
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .finance-live-summary > .finance-live-metric:nth-child(4) {
    border-bottom: 0;
  }

  .finance-live-cashflow {
    grid-template-columns: 1fr;
  }

  .finance-live-cashflow-metric:last-child {
    border-bottom: 0;
  }
}


/* Purchase requests */
.finance-section-tabs {
  display:flex;
  gap:8px;
  margin:0 0 18px;
  padding:5px;
  width:max-content;
  max-width:100%;
  border:1px solid var(--border-color, #d9e1df);
  border-radius:12px;
  background:#f4f7f6;
}
.finance-section-tab {
  border:0;
  border-radius:9px;
  background:transparent;
  color:#526563;
  padding:9px 14px;
  font:inherit;
  font-weight:800;
  cursor:pointer;
}
.finance-section-tab.active { background:#fff; color:#244a47; box-shadow:0 1px 4px rgba(24,58,55,.12); }
.finance-section-tab.has-work:not(.active) { color:#805d10; }
.purchase-request-view-header { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:18px; }
.purchase-request-view-header h3 { margin:3px 0 5px; font-size:25px; color:#244a47; }
.purchase-request-view-header p { margin:0; color:#697775; max-width:720px; }
.purchase-request-kicker { display:block; color:#66817e; text-transform:uppercase; letter-spacing:.08em; font-size:11px; font-weight:900; }
.purchase-request-public-link { text-decoration:none; white-space:nowrap; }
.purchase-request-summary-grid { grid-template-columns:repeat(4,minmax(0,1fr)); margin-bottom:16px; }
.purchase-request-toolbar { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin-bottom:16px; }
.purchase-request-toolbar .form-group { flex:1; max-width:520px; margin:0; }
.purchase-request-list { display:grid; gap:15px; }
.purchase-request-card { position:relative; overflow:hidden; background:#fff; border:1px solid #dce4e2; border-left:6px solid #d7dfdd; border-radius:16px; padding:18px; box-shadow:0 4px 16px rgba(28,62,59,.06); }
.purchase-request-card.status-pending,.purchase-request-card.status-more-info { border-left-color:#d6a84f; }
.purchase-request-card.status-approved { border-left-color:#5f9c70; }
.purchase-request-card.status-purchased { border-left-color:#6689b3; }
.purchase-request-card.status-received { border-left-color:#6d74b1; }
.purchase-request-card.status-denied { border-left-color:#bd6969; }
.purchase-request-card.status-closed { border-left-color:#759086; }
.purchase-request-card-head { display:flex; justify-content:space-between; gap:20px; align-items:flex-start; }
.purchase-request-card-head h3 { margin:5px 0 3px; color:#263f3d; font-size:20px; }
.purchase-request-card-head p { margin:0; color:#6b7977; font-size:13px; }
.purchase-request-id-row { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.purchase-request-id { font-weight:900; color:#315e59; font-size:12px; letter-spacing:.04em; }
.purchase-request-priority { padding:4px 8px; border-radius:999px; background:#eff3f2; color:#526865; font-size:11px; font-weight:800; }
.purchase-request-priority.priority-urgent { background:#f9e7e7; color:#8e2b2b; }
.purchase-request-priority.priority-needed-soon { background:#fff1d3; color:#805d10; }
.purchase-request-cost { text-align:right; min-width:120px; }
.purchase-request-cost span,.purchase-request-cost small { display:block; color:#74817f; font-size:11px; }
.purchase-request-cost strong { display:block; color:#244a47; font-size:21px; margin:2px 0; }
.purchase-request-status { display:inline-flex; margin:12px 0 14px; padding:6px 10px; border-radius:999px; background:#eef2f1; color:#4d625f; font-size:12px; font-weight:900; }
.purchase-request-status.status-pending,.purchase-request-status.status-more-info { background:#fff3d8; color:#7b5b14; }
.purchase-request-status.status-approved { background:#e7f3ea; color:#2f6740; }
.purchase-request-status.status-purchased,.purchase-request-status.status-received { background:#e8eff8; color:#34577d; }
.purchase-request-status.status-denied { background:#f9e8e8; color:#8a3030; }
.purchase-request-status.status-closed { background:#e9f0ed; color:#385a4e; }
.purchase-request-detail-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-bottom:14px; }
.purchase-request-detail-grid > div { min-width:0; padding:10px 11px; border-radius:10px; background:#f6f8f7; }
.purchase-request-detail-grid span,.purchase-request-copy > span { display:block; margin-bottom:3px; color:#788582; text-transform:uppercase; letter-spacing:.05em; font-size:10px; font-weight:900; }
.purchase-request-detail-grid strong { display:block; overflow-wrap:anywhere; color:#334c49; font-size:13px; }
.purchase-request-detail-grid a { color:#315e59; }
.purchase-request-copy { padding:11px 0; border-top:1px solid #edf1f0; }
.purchase-request-copy p { margin:0; white-space:pre-wrap; color:#425754; line-height:1.45; }
.purchase-request-decision-note { margin:8px 0 12px; padding:11px 12px; border-left:4px solid #c99b47; border-radius:8px; background:#fff7e7; }
.purchase-request-decision-note p { margin:3px 0 0; white-space:pre-wrap; }
.purchase-request-accounting { display:grid; grid-template-columns:1.6fr 1.2fr .7fr auto; gap:10px; align-items:end; margin:12px 0; padding:12px; border-radius:12px; background:#f1f6f4; }
.purchase-request-accounting .form-group { margin:0; }
.purchase-request-accounting-readonly,.purchase-request-purchase-summary { margin:12px 0; padding:10px 12px; border-radius:10px; background:#f4f7f6; color:#435956; font-size:13px; }
.purchase-request-card-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; padding-top:12px; border-top:1px solid #e8eeec; }
.purchase-received-button { border-color:#587f74; color:#315f54; }
.purchase-request-reconcile-box { display:grid; grid-template-columns:1fr minmax(320px,.9fr); gap:15px; align-items:center; margin-top:14px; padding:13px; border:1px solid #d8e3df; border-radius:12px; background:#f4f8f6; }
.purchase-request-reconcile-box h4 { margin:3px 0; color:#31564f; }
.purchase-request-reconcile-box p { margin:0; color:#667774; font-size:13px; }
.purchase-request-reconcile-controls { display:flex; gap:8px; }
.purchase-request-reconcile-controls select { min-width:0; flex:1; }
.purchase-request-history { margin-top:13px; border-top:1px solid #edf1f0; padding-top:11px; }
.purchase-request-history summary { cursor:pointer; color:#4d6763; font-size:12px; font-weight:800; }
.purchase-request-timeline { display:grid; gap:8px; margin-top:10px; }
.purchase-request-timeline > div { display:grid; grid-template-columns:150px 150px 1fr; gap:10px; align-items:start; font-size:12px; }
.purchase-request-timeline span { color:#7b8785; }
.purchase-request-timeline strong { color:#34514d; }
.purchase-request-timeline small { color:#657572; }
.purchase-request-modal-backdrop { position:fixed; inset:0; z-index:1180; background:rgba(18,34,32,.48); }
.purchase-request-modal { position:fixed; z-index:1190; top:50%; left:50%; transform:translate(-50%,-50%); width:min(620px,calc(100vw - 30px)); max-height:calc(100vh - 40px); overflow:auto; padding:20px; border:1px solid #d8e0de; border-radius:16px; background:#fff; box-shadow:0 20px 65px rgba(14,38,35,.28); }
.purchase-request-modal-header { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; margin-bottom:16px; }
.purchase-request-modal-header h3 { margin:3px 0 0; color:#294b47; }
.purchase-request-modal textarea { min-height:110px; }

@media (max-width:1000px) {
  .purchase-request-detail-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .purchase-request-accounting { grid-template-columns:1fr 1fr; }
  .purchase-request-reconcile-box { grid-template-columns:1fr; }
}
@media (max-width:720px) {
  .finance-section-tabs { width:100%; }
  .finance-section-tab { flex:1; }
  .purchase-request-view-header,.purchase-request-card-head,.purchase-request-toolbar { flex-direction:column; align-items:stretch; }
  .purchase-request-summary-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .purchase-request-cost { text-align:left; }
  .purchase-request-detail-grid,.purchase-request-accounting { grid-template-columns:1fr; }
  .purchase-request-reconcile-controls { flex-direction:column; }
  .purchase-request-timeline > div { grid-template-columns:1fr; gap:2px; }
  .purchase-request-public-link { text-align:center; }
}


/* v28.4.7: admin-only purchase-request cleanup */
.purchase-request-admin-actions {
  margin-left: auto;
}
.purchase-request-delete-button {
  border: 0;
  background: transparent;
  color: #9b3d38;
  font: inherit;
  font-size: .84rem;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
  padding: .45rem .25rem;
}
.purchase-request-delete-button:hover { color: #6f211d; }
.purchase-request-delete-button:disabled { opacity: .55; cursor: wait; }
.purchase-request-card-actions { align-items: center; }

/* v28.4.9: purchase-request card hierarchy and decision-area polish */
.purchase-request-card {
  padding: 20px 20px 16px;
  border-radius: 18px;
  box-shadow: 0 8px 24px rgba(28,62,59,.065);
}
.purchase-request-card-title-block { min-width: 0; }
.purchase-request-card-head { align-items: flex-start; }
.purchase-request-card-head h3 {
  margin: 7px 0 4px;
  font-size: 22px;
  line-height: 1.2;
  letter-spacing: -.015em;
}
.purchase-request-id-row { gap: 7px; }
.purchase-request-status {
  margin: 0;
  min-height: 24px;
  align-items: center;
  padding: 4px 9px;
  font-size: 10.5px;
}
.purchase-request-priority {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 4px 9px;
}
.purchase-request-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
  color: #71807d;
  font-size: 12.5px;
}
.purchase-request-meta strong { color: #536663; font-weight: 800; }
.purchase-request-meta > * + *::before {
  margin: 0 7px;
  color: #a4aeac;
  content: "•";
}
.purchase-request-cost {
  min-width: 112px;
  padding: 3px 0 0 16px;
}
.purchase-request-cost span { text-transform: uppercase; letter-spacing: .055em; font-size: 9px; font-weight: 850; }
.purchase-request-cost strong { font-size: 24px; line-height: 1.05; letter-spacing: -.025em; }
.purchase-request-cost small { margin-top: 4px; }
.purchase-request-detail-grid {
  gap: 9px;
  margin: 17px 0 12px;
}
.purchase-request-detail-grid > div {
  min-height: 56px;
  padding: 11px 12px;
  border: 1px solid #edf1f0;
  border-radius: 11px;
  background: #f7f9f8;
}
.purchase-request-detail-grid span,
.purchase-request-copy > span {
  margin-bottom: 4px;
  color: #71817e;
  font-size: 9.5px;
}
.purchase-request-detail-grid strong { font-size: 13.5px; }
.purchase-request-detail-grid a { text-underline-offset: 2px; }
.purchase-request-brief {
  display: grid;
  grid-template-columns: minmax(0, 1.55fr) minmax(260px, .85fr);
  gap: 10px;
  margin: 10px 0 14px;
}
.purchase-request-brief.single { grid-template-columns: 1fr; }
.purchase-request-copy {
  min-width: 0;
  min-height: 78px;
  padding: 13px 14px;
  border: 1px solid #e7eeec;
  border-radius: 12px;
  background: #fff;
}
.purchase-request-copy p {
  font-size: 13.5px;
  line-height: 1.5;
}
.purchase-request-notes { background: #f8faf9; }
.purchase-request-accounting-panel {
  margin: 14px 0 0;
  padding: 13px 14px 14px;
  border: 1px solid #dce8e4;
  border-radius: 14px;
  background: linear-gradient(180deg, #f4f8f6 0%, #f1f6f4 100%);
}
.purchase-request-section-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 10px;
}
.purchase-request-section-heading > div { display: grid; gap: 1px; }
.purchase-request-section-heading span {
  color: #758681;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: .075em;
  text-transform: uppercase;
}
.purchase-request-section-heading strong { color: #365851; font-size: 14px; }
.purchase-request-section-heading small { color: #7b8986; font-size: 11px; }
.purchase-request-accounting {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(125px, .55fr) auto;
  grid-template-areas:
    "gl gl gl"
    "funding budget save";
  gap: 9px 10px;
  align-items: end;
  margin: 0;
  padding: 0;
  background: transparent;
}
.purchase-request-accounting-gl { grid-area: gl; }
.purchase-request-accounting-funding { grid-area: funding; }
.purchase-request-accounting-budget { grid-area: budget; }
.purchase-request-accounting-save { grid-area: save; align-self: end; white-space: nowrap; }
.purchase-request-accounting .form-group label {
  margin-bottom: 5px;
  color: #6b7d79;
  font-size: 10px;
  font-weight: 850;
}
.purchase-request-accounting input,
.purchase-request-accounting select {
  min-height: 40px;
  background: #fff;
}
.purchase-request-accounting-readonly {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 6px 14px;
  margin: 0;
  padding: 10px 12px;
  border: 1px solid #e2ebe8;
  background: #fff;
}
.purchase-request-accounting-readonly strong { color: #365851; }
.purchase-request-accounting-readonly span { color: #6d7c79; }
.purchase-request-card-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 13px;
  padding-top: 13px;
}
.purchase-request-workflow-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.purchase-request-card-actions .primary-button,
.purchase-request-card-actions .secondary-button,
.purchase-request-card-actions .danger-button {
  width: auto;
  min-height: 34px;
  padding: 8px 12px;
}
.purchase-request-card-actions .primary-button { min-width: 108px; }
.purchase-request-card-actions .danger-button { background: #fffafa; }
.purchase-request-admin-actions {
  margin-left: auto;
  padding-left: 10px;
  border-left: 1px solid #e4eae8;
}
.purchase-request-delete-button {
  text-decoration: none;
  font-size: 11.5px;
  font-weight: 800;
}
.purchase-request-delete-button:hover { text-decoration: underline; text-underline-offset: 3px; }
.purchase-request-history {
  margin-top: 12px;
  padding-top: 10px;
}
.purchase-request-history summary {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: #5b706c;
}

@media (max-width: 820px) {
  .purchase-request-brief { grid-template-columns: 1fr; }
  .purchase-request-section-heading { align-items: flex-start; flex-direction: column; gap: 4px; }
}
@media (max-width: 720px) {
  .purchase-request-card { padding: 16px; }
  .purchase-request-meta { display: grid; gap: 2px; }
  .purchase-request-meta > * + *::before { display: none; }
  .purchase-request-accounting {
    grid-template-columns: 1fr;
    grid-template-areas: "gl" "funding" "budget" "save";
  }
  .purchase-request-accounting-save { width: 100%; }
  .purchase-request-card-actions { align-items: stretch; flex-direction: column; }
  .purchase-request-workflow-actions { width: 100%; }
  .purchase-request-workflow-actions > button { flex: 1 1 140px; }
  .purchase-request-admin-actions {
    margin-left: 0;
    padding: 8px 0 0;
    border-top: 1px solid #e4eae8;
    border-left: 0;
  }
}

/* v28.5: multi-item purchase requests */
.purchase-request-items-panel {
  margin: 16px 0 13px;
  padding: 13px 14px 10px;
  border: 1px solid #e1e9e7;
  border-radius: 14px;
  background: #fbfcfc;
}
.purchase-request-line-items {
  overflow: hidden;
  border: 1px solid #e4ebe9;
  border-radius: 11px;
  background: #fff;
}
.purchase-request-line-item {
  display: grid;
  grid-template-columns: 30px minmax(220px, 1.7fr) minmax(54px, .35fr) minmax(92px, .55fr) minmax(100px, .6fr);
  gap: 10px;
  align-items: center;
  padding: 11px 12px;
}
.purchase-request-line-item + .purchase-request-line-item { border-top: 1px solid #e8eeec; }
.purchase-request-line-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 25px;
  height: 25px;
  border-radius: 999px;
  background: #edf4f2;
  color: #42625d;
  font-size: 11px;
  font-weight: 900;
}
.purchase-request-line-main { min-width: 0; display: grid; gap: 3px; }
.purchase-request-line-main > strong { color: #284b46; font-size: 13.5px; line-height: 1.3; }
.purchase-request-line-main small { overflow: hidden; color: #75837f; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.purchase-request-line-main a { color: #2f645b; font-weight: 800; text-underline-offset: 2px; }
.purchase-request-line-qty,
.purchase-request-line-unit,
.purchase-request-line-total { display: grid; gap: 2px; text-align: right; }
.purchase-request-line-qty span,
.purchase-request-line-unit span,
.purchase-request-line-total span { color: #87928f; font-size: 9px; font-weight: 850; letter-spacing: .05em; text-transform: uppercase; }
.purchase-request-line-qty strong,
.purchase-request-line-unit strong { color: #526762; font-size: 12.5px; }
.purchase-request-line-total strong { color: #294f48; font-size: 13.5px; }

@media (max-width: 780px) {
  .purchase-request-line-item {
    grid-template-columns: 28px minmax(0, 1fr) auto;
    grid-template-areas:
      "number main total"
      ". details details";
    align-items: start;
  }
  .purchase-request-line-number { grid-area: number; }
  .purchase-request-line-main { grid-area: main; }
  .purchase-request-line-total { grid-area: total; }
  .purchase-request-line-qty,
  .purchase-request-line-unit { display: inline-flex; align-items: baseline; gap: 5px; text-align: left; }
  .purchase-request-line-qty { grid-area: details; justify-self: start; }
  .purchase-request-line-unit { grid-area: details; justify-self: end; }
  .purchase-request-line-main small { white-space: normal; }
}

/* v28.6: purchase-request cost breakdowns */
.purchase-request-cost-breakdown {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
  margin: 10px 0 14px;
  padding: 10px 11px;
  border: 1px solid #e2e9e7;
  border-radius: 12px;
  background: #f8faf9;
}
.purchase-request-cost-breakdown > div {
  min-width: 0;
  padding: 3px 7px;
}
.purchase-request-cost-breakdown span {
  display: block;
  margin-bottom: 3px;
  color: #7a8784;
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .05em;
  text-transform: uppercase;
}
.purchase-request-cost-breakdown strong {
  display: block;
  color: #46605c;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
}
.purchase-request-cost-breakdown-total {
  border-left: 1px solid #dfe7e5;
}
.purchase-request-cost-breakdown-total strong {
  color: #294f48;
  font-size: 15px;
}
.purchase-request-purchase-summary {
  display: grid;
  gap: 7px;
}
.purchase-request-actual-breakdown {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  color: #6b7976;
  font-size: 11px;
}
.purchase-request-actual-breakdown strong { color: #345750; }
.purchase-request-actual-total {
  display: flex;
  align-items: center;
  min-height: 40px;
  padding: 9px 11px;
  border: 1px solid #dce5e2;
  border-radius: 9px;
  background: #f3f7f5;
  color: #2f5650;
  font-size: 18px;
  font-weight: 850;
  font-variant-numeric: tabular-nums;
}
@media (max-width: 900px) {
  .purchase-request-cost-breakdown { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .purchase-request-cost-breakdown-total { border-left: 0; border-top: 1px solid #dfe7e5; grid-column: 1 / -1; padding-top: 8px; }
}
@media (max-width: 620px) {
  .purchase-request-cost-breakdown { grid-template-columns: 1fr; }
  .purchase-request-cost-breakdown-total { grid-column: auto; }
}


/* v28.7: vendor-grouped, collapsible multi-item purchase-request cards */
.purchase-request-vendor-summaries {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(165px, 1fr));
  gap: 8px;
  margin: 0 0 10px;
}
.purchase-request-vendor-summary {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "vendor total"
    "meta total";
  gap: 2px 10px;
  align-items: center;
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid #e2e9e7;
  border-radius: 10px;
  background: #f6f9f8;
}
.purchase-request-vendor-summary > span {
  grid-area: vendor;
  min-width: 0;
  overflow: hidden;
  color: #3f5d58;
  font-size: 12px;
  font-weight: 850;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.purchase-request-vendor-summary > small {
  grid-area: meta;
  color: #7a8885;
  font-size: 10px;
}
.purchase-request-vendor-summary > strong {
  grid-area: total;
  color: #2f554f;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.purchase-request-vendor-groups {
  display: grid;
  gap: 10px;
}
.purchase-request-vendor-group {
  overflow: hidden;
  border: 1px solid #dfe8e5;
  border-radius: 11px;
  background: #fff;
}
.purchase-request-vendor-heading {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: center;
  padding: 9px 12px;
  border-bottom: 1px solid #e6ecea;
  background: #f3f7f5;
}
.purchase-request-vendor-heading > div {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 8px;
  min-width: 0;
}
.purchase-request-vendor-heading > div > strong {
  color: #315650;
  font-size: 12.5px;
}
.purchase-request-vendor-heading span {
  color: #7c8986;
  font-size: 10.5px;
}
.purchase-request-vendor-heading > strong {
  color: #294f48;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.purchase-request-vendor-group .purchase-request-line-items {
  border: 0;
  border-radius: 0;
}
.purchase-request-items-expander {
  margin-top: 2px;
}
.purchase-request-items-expander > summary {
  display: block;
  cursor: pointer;
  list-style: none;
}
.purchase-request-items-expander > summary::-webkit-details-marker { display: none; }
.purchase-request-items-preview {
  overflow: hidden;
  border: 1px solid #e4ebe9;
  border-radius: 11px;
  background: #fff;
}
.purchase-request-items-expander[open] .purchase-request-items-preview { display: none; }
.purchase-request-items-toggle {
  display: flex;
  justify-content: center;
  margin-top: 8px;
  padding: 8px 10px;
  border: 1px solid #dce7e4;
  border-radius: 9px;
  background: #f7faf9;
  color: #3d625b;
  font-size: 11.5px;
  font-weight: 850;
  transition: background .15s ease, border-color .15s ease;
}
.purchase-request-items-expander > summary:hover .purchase-request-items-toggle {
  border-color: #c9d9d4;
  background: #f0f6f4;
}
.purchase-request-items-expander .when-open { display: none; }
.purchase-request-items-expander[open] .when-closed { display: none; }
.purchase-request-items-expander[open] .when-open { display: inline; }
.purchase-request-items-expander[open] .purchase-request-items-toggle { margin-bottom: 10px; }
.purchase-request-line-item.is-preview .purchase-request-line-main small {
  color: #788783;
}

@media (max-width: 760px) {
  .purchase-request-vendor-summaries { grid-template-columns: 1fr; }
  .purchase-request-vendor-heading { align-items: flex-start; }
}

/* v28.8 — Amazon printable-order-summary batch import */
.amazon-import-panel {
  margin: 0 0 18px;
  border: 1px solid #d9e6e2;
  background: linear-gradient(180deg, #fbfdfc 0%, #f5f9f7 100%);
}
.amazon-import-progress {
  margin: 10px 0;
  padding: 9px 11px;
  border-radius: 9px;
  background: #eef5f2;
  color: #45655f;
  font-size: 12px;
  font-weight: 700;
}
.amazon-import-preview,
.amazon-order-list {
  display: grid;
  gap: 12px;
}
.amazon-import-card,
.amazon-order-card {
  overflow: hidden;
  border: 1px solid #dbe6e3;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 3px 12px rgba(32, 65, 58, .06);
}
.amazon-import-card { padding: 14px; }
.amazon-import-card.is-disabled { opacity: .68; }
.amazon-import-card-header,
.amazon-order-card-header {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  justify-content: space-between;
}
.amazon-import-select {
  display: flex;
  align-items: center;
  padding-top: 2px;
}
.amazon-import-select input { width: 18px; height: 18px; }
.amazon-import-card-title { flex: 1 1 auto; min-width: 0; }
.amazon-import-card-title h4,
.amazon-order-card-header h4 {
  margin: 4px 0 2px;
  color: #214d46;
  font-size: 15px;
}
.amazon-import-card-title p,
.amazon-order-card-header p {
  margin: 0;
  color: #71827e;
  font-size: 11px;
}
.amazon-import-total,
.amazon-order-total strong {
  color: #214d46;
  font-size: 18px;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.amazon-import-badge-row,
.amazon-order-heading-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
}
.amazon-import-badge,
.amazon-order-status {
  display: inline-flex;
  align-items: center;
  padding: 4px 7px;
  border-radius: 999px;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: .02em;
}
.amazon-import-badge.ready,
.amazon-order-status.matched { background: #e4f4ea; color: #286441; }
.amazon-import-badge.update,
.amazon-order-status.partially_matched { background: #e7f0f8; color: #285b7a; }
.amazon-import-badge.duplicate { background: #eef0ef; color: #687470; }
.amazon-import-badge.awaiting,
.amazon-order-status.awaiting_shipment { background: #f0ebf7; color: #614985; }
.amazon-order-status.needs_match { background: #fff1cf; color: #7b5a08; }
.amazon-import-cost-strip,
.amazon-order-cost-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
}
.amazon-import-cost-strip span,
.amazon-order-cost-summary span {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 8px 9px;
  border-radius: 9px;
  background: #f5f8f7;
  color: #788783;
  font-size: 9.5px;
  text-transform: uppercase;
  letter-spacing: .035em;
}
.amazon-import-cost-strip strong,
.amazon-order-cost-summary strong {
  color: #335a53;
  font-size: 12px;
  font-variant-numeric: tabular-nums;
}
.amazon-import-items {
  display: grid;
  gap: 5px;
  margin-top: 10px;
  padding: 10px;
  border: 1px solid #e7ecea;
  border-radius: 9px;
  background: #fcfdfd;
}
.amazon-import-items > div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  color: #425f59;
  font-size: 11px;
}
.amazon-import-items > div > span { min-width: 0; }
.amazon-import-items > div > strong { white-space: nowrap; }
.amazon-import-items small { color: #7d8c88; }
.amazon-import-charge-list { margin-top: 12px; }
.amazon-import-charge-list h5,
.amazon-order-section-heading h5 { margin: 0 0 7px; color: #3b5d57; font-size: 11px; text-transform: uppercase; letter-spacing: .05em; }
.amazon-import-charge-row,
.amazon-order-charge-row {
  display: grid;
  grid-template-columns: minmax(180px, .75fr) minmax(280px, 1.25fr);
  gap: 12px;
  align-items: end;
  padding: 10px 0;
  border-top: 1px solid #edf1f0;
}
.amazon-import-charge-row:first-of-type,
.amazon-order-charge-row:first-of-type { border-top: 0; }
.amazon-import-charge-row > div:first-child,
.amazon-order-charge-main { display: grid; gap: 2px; }
.amazon-import-charge-row span,
.amazon-order-charge-main span,
.amazon-order-charge-main small { color: #768581; font-size: 10.5px; }
.amazon-import-charge-row .form-group { margin: 0; }
.amazon-import-charge-row select,
.amazon-order-charge-match select { width: 100%; }
.amazon-import-warning {
  margin-top: 10px;
  padding: 8px 10px;
  border-radius: 8px;
  background: #fff7df;
  color: #795c15;
  font-size: 10.5px;
}
.amazon-import-file-name {
  display: block;
  margin-top: 9px;
  color: #8a9693;
  word-break: break-all;
}
.amazon-import-charge-empty,
.amazon-order-no-charge {
  padding: 10px;
  border-radius: 9px;
  background: #f5f7f7;
  color: #667570;
  font-size: 11px;
}
.amazon-orders-view-header { margin-bottom: 14px; }
.amazon-order-summary-grid { margin-bottom: 14px; }
.amazon-order-toolbar { margin-bottom: 12px; }
.amazon-order-card { padding: 16px; }
.amazon-order-card-header > div:first-child { min-width: 0; }
.amazon-order-card-header h4 span { color: #82908d; font-size: 11px; font-weight: 700; }
.amazon-order-number { color: #3c665f; font-size: 11px; font-weight: 900; letter-spacing: .035em; }
.amazon-order-total { text-align: right; }
.amazon-order-total span { display: block; color: #82908d; font-size: 9.5px; text-transform: uppercase; letter-spacing: .04em; }
.amazon-order-items {
  margin-top: 12px;
  border: 1px solid #e2e9e7;
  border-radius: 10px;
  background: #fbfdfc;
}
.amazon-order-items > summary {
  cursor: pointer;
  padding: 9px 11px;
  color: #45665f;
  font-size: 11px;
  font-weight: 850;
}
.amazon-order-item-table { border-top: 1px solid #e5ebe9; }
.amazon-order-item-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto auto;
  gap: 14px;
  align-items: center;
  padding: 9px 11px;
  border-top: 1px solid #edf1f0;
  color: #485f5b;
  font-size: 11px;
}
.amazon-order-item-row:first-child { border-top: 0; }
.amazon-order-item-row > div { display: grid; gap: 2px; min-width: 0; }
.amazon-order-item-row small { color: #85918e; }
.amazon-order-item-row > span,
.amazon-order-item-row > strong { font-variant-numeric: tabular-nums; white-space: nowrap; }
.amazon-order-charges { margin-top: 14px; }
.amazon-order-section-heading p { margin: -3px 0 0; color: #7c8986; font-size: 10.5px; }
.amazon-order-charge-match {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 7px;
  align-items: center;
}
.amazon-order-card-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  margin-top: 12px;
  padding-top: 10px;
  border-top: 1px solid #edf1f0;
}
.amazon-order-warning-count { color: #8a6e31; font-size: 10.5px; }
.amazon-document-card p + p { margin-top: 5px; }

@media (max-width: 760px) {
  .amazon-import-cost-strip,
  .amazon-order-cost-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .amazon-import-charge-row,
  .amazon-order-charge-row { grid-template-columns: 1fr; align-items: stretch; }
  .amazon-order-charge-match { grid-template-columns: 1fr; }
  .amazon-order-card-header { flex-direction: column; }
  .amazon-order-total { text-align: left; }
  .amazon-order-item-row { grid-template-columns: minmax(0, 1fr) auto; }
  .amazon-order-item-row > strong { grid-column: 2; }
}

/* v28.8.1 — make pre-existing manual receipt reconciliation explicit during Amazon imports. */
.amazon-preserved-match {
  display: block;
  margin-top: 3px;
  color: #2d6a4f !important;
  font-weight: 750;
}

/* v28.8.2 — compact accounting/documentation inspector */
.finance-accounting-docs {
  display: grid;
  gap: 16px;
}

.finance-accounting-heading {
  margin-bottom: 0;
}

.finance-accounting-block {
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-muted);
}

.finance-accounting-block > label {
  display: block;
  margin-bottom: 7px;
  font-size: 11px;
  font-weight: 800;
  color: var(--text);
}

.finance-accounting-block .finance-helper-text {
  margin: 7px 0 0;
}

.finance-document-stack {
  display: grid;
  gap: 8px;
}

.finance-document-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  padding: 12px 13px;
  border: 1px solid var(--border);
  border-radius: 11px;
  background: #fff;
}

.finance-document-row.amazon-linked {
  border-color: #cfe0d8;
  background: #f5faf7;
}

.finance-document-row.suggested {
  border-color: #bcd8ca;
  background: #f4faf6;
}

.finance-document-row.warning {
  border-color: #ead8aa;
  background: #fff8e8;
}

.finance-document-row.muted {
  background: var(--surface-muted);
}

.finance-document-copy {
  min-width: 0;
  display: grid;
  gap: 2px;
}

.finance-document-copy strong,
.finance-document-copy small,
.finance-document-label {
  min-width: 0;
  overflow-wrap: anywhere;
}

.finance-document-copy strong {
  font-size: 12.5px;
  line-height: 1.35;
}

.finance-document-copy small {
  color: var(--text-muted);
  font-size: 10.5px;
  line-height: 1.4;
}

.finance-document-label {
  color: #657671;
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: .055em;
  text-transform: uppercase;
}

.finance-document-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
}

.finance-document-picker-copy select {
  width: 100%;
  margin-top: 4px;
}

.finance-inline-link {
  width: fit-content;
  padding: 2px 0;
  border: 0;
  background: transparent;
  color: #356653;
  font: inherit;
  font-size: 10.5px;
  font-weight: 700;
  cursor: pointer;
  text-decoration: none;
}

.finance-inline-link:hover,
.finance-inline-link:focus-visible {
  text-decoration: underline;
}

@media (max-width: 720px) {
  .finance-document-row {
    grid-template-columns: 1fr;
    align-items: stretch;
  }

  .finance-document-actions {
    justify-content: flex-start;
  }
}

/* Internal transfers */
.finance-status.transfer,
.finance-mini-status.transfer,
.finance-status.not-required,
.finance-mini-status.not-required {
  background: #e9edf6;
  color: #52658a;
}

.finance-document-row.transfer-linked,
.finance-transfer-suggestion {
  border-color: #cfd8ea;
  background: #f6f8fc;
}

.finance-transfer-suggestion {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 12px;
  margin-top: 10px;
  padding: 12px 13px;
  border: 1px solid #cfd8ea;
  border-radius: 11px;
}

.finance-transfer-accounting-note {
  display: grid;
  gap: 2px;
  padding: 12px 13px;
  border: 1px solid #cfd8ea;
  border-radius: 11px;
  background: #f6f8fc;
}

.finance-transfer-accounting-note strong {
  font-size: 12.5px;
}

.finance-transfer-accounting-note small {
  color: var(--text-muted);
  font-size: 10.5px;
  line-height: 1.4;
}

.finance-mark-transfer-link {
  margin-top: 7px;
}

@media (max-width: 700px) {
  .finance-transfer-suggestion {
    grid-template-columns: 1fr;
  }
}

/* Vendor/provider directory ------------------------------------------------ */
.vendor-view-header {
  align-items: flex-start;
}

.vendor-header-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: flex-end;
}

.vendor-import-status {
  min-height: 0;
  margin: 8px 0 0;
}

.vendor-summary-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 18px;
}

.vendor-form-panel {
  margin-top: 18px;
}

.vendor-form-grid textarea {
  min-height: 88px;
}

.vendor-toolbar {
  display: grid;
  grid-template-columns: minmax(260px, 1.6fr) minmax(180px, .8fr) minmax(180px, .8fr) auto;
  gap: 12px;
  align-items: end;
  margin: 18px 0 14px;
}

.vendor-toolbar .form-group {
  margin: 0;
}

.vendor-toolbar .directory-result-count {
  align-self: end;
  padding-bottom: 11px;
  white-space: nowrap;
}

.vendor-directory-layout {
  display: grid;
  grid-template-columns: minmax(330px, .92fr) minmax(0, 1.45fr);
  gap: 16px;
  min-height: 560px;
}

.vendor-list,
.vendor-detail {
  background: var(--panel-background, #fff);
  border: 1px solid var(--border-color, #d9dee7);
  border-radius: 16px;
  overflow: hidden;
}

.vendor-list {
  display: flex;
  flex-direction: column;
  align-self: start;
  max-height: 720px;
  overflow-y: auto;
}

.vendor-list-card {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 15px 16px;
  border: 0;
  border-bottom: 1px solid var(--border-color, #e4e7ec);
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.vendor-list-card:last-child {
  border-bottom: 0;
}

.vendor-list-card:hover,
.vendor-list-card.selected {
  background: rgba(47, 93, 80, .07);
}

.vendor-list-card.selected {
  box-shadow: inset 3px 0 0 currentColor;
}

.vendor-list-main,
.vendor-list-metrics {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.vendor-list-main > strong,
.vendor-list-metrics > strong {
  font-size: .98rem;
}

.vendor-list-main > small,
.vendor-list-metrics > small {
  color: var(--muted-text, #667085);
  line-height: 1.35;
}

.vendor-list-metrics {
  align-items: flex-end;
  text-align: right;
  white-space: nowrap;
}

.vendor-card-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 4px;
}

.vendor-chip {
  display: inline-flex;
  align-items: center;
  min-height: 22px;
  padding: 2px 8px;
  border-radius: 999px;
  background: #eef2f6;
  color: #475467;
  font-size: .72rem;
  font-weight: 700;
}

.vendor-chip.review,
.vendor-chip.renewal {
  background: #fff4e5;
  color: #92400e;
}

.vendor-chip.ok {
  background: #e9f7ef;
  color: #166534;
}

.vendor-chip.inactive {
  background: #f2f4f7;
  color: #667085;
}

.vendor-detail {
  align-self: start;
  padding: 20px;
}

.vendor-detail-header,
.vendor-section-heading {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
}

.vendor-detail-header h3,
.vendor-detail-section h4,
.vendor-section-heading h4 {
  margin: 4px 0 4px;
}

.vendor-detail-header p,
.vendor-section-heading p {
  margin: 0;
  color: var(--muted-text, #667085);
}

.vendor-knowledge-warning,
.vendor-knowledge-complete {
  margin: 18px 0;
  padding: 13px 14px;
  border-radius: 12px;
  display: flex;
  gap: 8px;
}

.vendor-knowledge-warning {
  flex-direction: column;
  background: #fff8eb;
  border: 1px solid #f1d69b;
}

.vendor-knowledge-warning ul {
  margin: 0;
  padding-left: 20px;
}

.vendor-knowledge-complete {
  align-items: baseline;
  flex-wrap: wrap;
  background: #eef8f2;
  border: 1px solid #b9ddc7;
}

.vendor-knowledge-complete span {
  color: #466554;
}

.vendor-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.vendor-detail-card {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 14px;
  border: 1px solid var(--border-color, #e4e7ec);
  border-radius: 12px;
  background: rgba(248, 250, 252, .72);
}

.vendor-detail-card > span,
.vendor-fact-grid span,
.vendor-notes > span {
  color: var(--muted-text, #667085);
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .03em;
  text-transform: uppercase;
}

.vendor-detail-card > small,
.vendor-fact-grid small {
  color: var(--muted-text, #667085);
  line-height: 1.4;
}

.vendor-detail-section {
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid var(--border-color, #e4e7ec);
}

.vendor-fact-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.vendor-fact-grid > div {
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 0;
  padding: 12px;
  border-radius: 10px;
  background: rgba(248, 250, 252, .72);
}

.vendor-fact-grid strong,
.vendor-fact-grid small,
.vendor-notes p {
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.vendor-notes {
  margin-top: 10px;
  padding: 12px;
  border-radius: 10px;
  background: rgba(248, 250, 252, .72);
}

.vendor-notes p {
  margin: 6px 0 0;
  line-height: 1.5;
}

.vendor-transaction-history {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: 10px;
  border: 1px solid var(--border-color, #e4e7ec);
  border-radius: 12px;
  overflow: hidden;
}

.vendor-transaction-row {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  align-items: center;
  width: 100%;
  padding: 11px 12px;
  border: 0;
  border-bottom: 1px solid var(--border-color, #e4e7ec);
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.vendor-transaction-row:last-child {
  border-bottom: 0;
}

.vendor-transaction-row:hover {
  background: rgba(47, 93, 80, .06);
}

.vendor-transaction-row > span:first-child {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.vendor-transaction-row small {
  color: var(--muted-text, #667085);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.vendor-transaction-row > span:last-child {
  font-weight: 700;
  white-space: nowrap;
}

.finance-vendor-assignment {
  margin-bottom: 12px;
}

@media (max-width: 1050px) {
  .vendor-summary-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vendor-toolbar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vendor-toolbar .directory-result-count {
    padding-bottom: 0;
  }

  .vendor-directory-layout {
    grid-template-columns: 1fr;
  }

  .vendor-list {
    max-height: 420px;
  }
}

@media (max-width: 680px) {
  .vendor-header-actions,
  .vendor-detail-header,
  .vendor-section-heading {
    flex-direction: column;
    align-items: stretch;
  }

  .vendor-summary-grid,
  .vendor-toolbar,
  .vendor-detail-grid,
  .vendor-fact-grid {
    grid-template-columns: 1fr;
  }

  .vendor-list-card {
    grid-template-columns: 1fr;
  }

  .vendor-list-metrics {
    align-items: flex-start;
    text-align: left;
  }
}

/* One-at-a-time GL coding queue */
.finance-gl-queue-backdrop {
  position: fixed;
  inset: 0;
  z-index: 119;
  border: 0;
  background: rgba(20, 32, 27, 0.38);
  opacity: 0;
  pointer-events: none;
  transition: opacity 160ms ease;
}

.finance-gl-queue-backdrop.open {
  opacity: 1;
  pointer-events: auto;
}

.finance-gl-queue-panel {
  position: fixed;
  top: 50%;
  left: 50%;
  z-index: 120;
  width: min(760px, calc(100vw - 32px));
  max-height: min(820px, calc(100vh - 32px));
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 22px;
  background: var(--surface);
  box-shadow: 0 28px 90px rgba(18, 30, 25, 0.28);
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, calc(-50% + 16px)) scale(0.985);
  transition: opacity 150ms ease, transform 170ms ease;
}

.finance-gl-queue-panel.open {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, -50%) scale(1);
}

.finance-gl-queue-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding: 20px 22px 16px;
  border-bottom: 1px solid var(--border);
  background: linear-gradient(180deg, #fbfdfc 0%, var(--surface-muted) 100%);
}

.finance-gl-queue-header h3,
.finance-gl-queue-header p {
  margin: 0;
}

.finance-gl-queue-header h3 {
  margin-top: 2px;
  font-size: 22px;
}

.finance-gl-queue-header p {
  margin-top: 5px;
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.45;
}

.finance-gl-queue-kicker {
  color: var(--primary);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: 0.085em;
  text-transform: uppercase;
}

.finance-gl-queue-progress {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 10px 20px;
  padding: 10px 22px;
  border-bottom: 1px solid var(--border);
  background: var(--surface-muted);
  color: var(--text-muted);
  font-size: 12px;
}

.finance-gl-queue-progress strong {
  color: var(--text);
  font-variant-numeric: tabular-nums;
}

.finance-gl-queue-body {
  max-height: calc(min(820px, 100vh - 32px) - 132px);
  overflow: auto;
  overscroll-behavior: contain;
}

.finance-gl-queue-card {
  padding: 24px;
}

.finance-gl-queue-transaction-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 20px;
  align-items: start;
}

.finance-gl-queue-date {
  display: block;
  margin-bottom: 5px;
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 750;
}

.finance-gl-queue-transaction-head h4 {
  margin: 0;
  font-size: 22px;
  line-height: 1.25;
}

.finance-gl-queue-amount {
  font-size: 25px;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.finance-gl-queue-amount.income {
  color: var(--finance-success);
}

.finance-gl-queue-context {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 12px;
  margin-top: 9px;
  color: var(--text-muted);
  font-size: 11px;
}

.finance-gl-queue-context span {
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.finance-gl-queue-details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 20px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 14px;
  background: var(--surface-muted);
}

.finance-gl-queue-details > div:last-child:nth-child(odd) {
  grid-column: 1 / -1;
}

.finance-gl-queue-details span,
.finance-gl-queue-suggestion span {
  display: block;
  color: var(--text-muted);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.055em;
  text-transform: uppercase;
}

.finance-gl-queue-details strong {
  display: block;
  margin-top: 3px;
  font-size: 12px;
  line-height: 1.4;
  overflow-wrap: anywhere;
}

.finance-gl-queue-suggestion {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: 16px;
  padding: 12px 14px;
  border: 1px solid #cfe0d6;
  border-radius: 13px;
  background: #f1f7f4;
}

.finance-gl-queue-suggestion strong {
  display: block;
  margin-top: 3px;
  font-size: 13px;
}

.finance-gl-queue-suggestion small {
  display: block;
  margin-top: 4px;
  color: var(--text-muted);
  font-size: 10px;
}

.finance-gl-queue-suggestion-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.finance-gl-queue-bulk-hint {
  margin: 7px 2px 0;
  color: var(--text-muted);
  font-size: 10px;
  line-height: 1.45;
}

.finance-gl-queue-entry {
  margin-top: 20px;
}

.finance-gl-queue-entry label {
  display: block;
  margin-bottom: 7px;
  font-size: 12px;
  font-weight: 850;
}

.finance-gl-queue-entry input {
  width: 100%;
  min-height: 50px;
  padding: 10px 13px;
  border-width: 2px;
  font-size: 15px;
}

.finance-gl-queue-entry p {
  margin: 6px 0 0;
  color: var(--text-muted);
  font-size: 11px;
}

.finance-gl-queue-remember {
  display: flex !important;
  align-items: flex-start;
  gap: 8px;
  margin-top: 11px !important;
  color: var(--text-muted);
  font-size: 11px !important;
  font-weight: 650 !important;
  line-height: 1.35;
  cursor: pointer;
}

.finance-gl-queue-remember input {
  width: 16px !important;
  min-height: 16px !important;
  margin: 0;
  padding: 0;
  flex: 0 0 auto;
}

.finance-gl-queue-bulk-current {
  display: block;
  margin-top: 10px;
  text-align: left;
}

.finance-gl-queue-transfer {
  display: grid;
  width: 100%;
  margin-top: 14px;
  padding: 11px 13px;
  border: 1px solid #d8ddd9;
  border-radius: 13px;
  background: #fafbfa;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.finance-gl-queue-transfer:hover {
  background: var(--surface-muted);
}

.finance-gl-queue-transfer span {
  color: var(--text-muted);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.055em;
  text-transform: uppercase;
}

.finance-gl-queue-transfer strong {
  margin-top: 2px;
  font-size: 12px;
}

.finance-gl-queue-transfer small {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 10px;
}

.finance-gl-queue-mark-transfer {
  display: block;
  margin-top: 12px;
}

.finance-gl-queue-actions {
  display: grid;
  grid-template-columns: minmax(120px, 0.42fr) minmax(190px, 1fr);
  gap: 10px;
  margin-top: 22px;
}

.finance-gl-queue-actions button {
  min-height: 44px;
}

.finance-gl-queue-finish {
  display: grid;
  justify-items: center;
  padding: 48px 28px;
  text-align: center;
}

.finance-gl-queue-finish-mark {
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  border-radius: 50%;
  background: #dfeee6;
  color: var(--finance-success);
  font-size: 24px;
  font-weight: 900;
}

.finance-gl-queue-finish h4 {
  margin: 14px 0 0;
  font-size: 20px;
}

.finance-gl-queue-finish p {
  max-width: 470px;
  margin: 7px 0 0;
  color: var(--text-muted);
  line-height: 1.5;
}

.finance-gl-queue-finish-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 9px;
  margin-top: 20px;
}

@media (max-width: 700px) {
  .finance-gl-queue-panel {
    top: 8px;
    right: 8px;
    bottom: 8px;
    left: 8px;
    width: auto;
    max-height: none;
    transform: translateY(12px);
  }

  .finance-gl-queue-panel.open {
    transform: translateY(0);
  }

  .finance-gl-queue-body {
    max-height: calc(100vh - 150px);
  }

  .finance-gl-queue-card {
    padding: 18px;
  }

  .finance-gl-queue-transaction-head {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .finance-gl-queue-amount {
    justify-self: start;
  }

  .finance-gl-queue-details {
    grid-template-columns: 1fr;
  }

  .finance-gl-queue-details > div {
    grid-column: 1 / -1;
  }

  .finance-gl-queue-actions {
    grid-template-columns: 1fr;
  }
}

/* v30.3 — split GL allocations */
.finance-gl-split-disclosure {
  margin-top: 14px;
  border-top: 1px solid var(--border-subtle, #e1e5e2);
  padding-top: 12px;
}

.finance-gl-split-disclosure > summary {
  color: var(--finance-accent, #285a45);
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}

.finance-gl-split-editor {
  margin-top: 13px;
  padding: 14px;
  border: 1px solid #d9e1dc;
  border-radius: 14px;
  background: #fbfcfb;
}

.finance-gl-split-editor.queue {
  padding: 0;
  border: 0;
  background: transparent;
}

.finance-gl-split-ledger {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}

.finance-gl-split-ledger > div {
  min-width: 0;
  padding: 9px 10px;
  border: 1px solid #e0e5e2;
  border-radius: 11px;
  background: #fff;
}

.finance-gl-split-ledger span,
.finance-gl-split-ledger strong {
  display: block;
}

.finance-gl-split-ledger span {
  color: var(--text-muted);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .045em;
  text-transform: uppercase;
}

.finance-gl-split-ledger strong {
  margin-top: 3px;
  font-size: 13px;
}

.finance-gl-split-ledger strong.balanced {
  color: var(--finance-success, #17693f);
}

.finance-gl-split-ledger strong.unbalanced {
  color: #9a4b26;
}

.finance-gl-split-rows {
  display: grid;
  gap: 8px;
}

.finance-gl-split-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(105px, .28fr) 30px;
  gap: 8px;
  align-items: end;
}

.finance-gl-split-row label {
  display: block;
  margin: 0 0 5px;
  color: var(--text-muted);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .035em;
  text-transform: uppercase;
}

.finance-gl-split-row input {
  width: 100%;
  min-height: 40px;
}

.finance-gl-split-remove {
  display: grid;
  width: 30px;
  height: 40px;
  padding: 0;
  place-items: center;
  border: 0;
  background: transparent;
  color: var(--text-muted);
  font-size: 20px;
  cursor: pointer;
}

.finance-gl-split-remove:hover {
  color: #8a332d;
}

.finance-gl-split-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 10px;
}

.finance-gl-split-toolbar small {
  color: var(--text-muted);
  font-size: 10px;
  text-align: right;
}

.finance-gl-split-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 10px;
}

.finance-gl-split-current {
  display: grid;
  gap: 10px;
}

.finance-gl-split-current > div:first-child strong,
.finance-gl-split-current > div:first-child small {
  display: block;
}

.finance-gl-split-current > div:first-child small {
  margin-top: 3px;
  color: var(--text-muted);
  font-size: 10px;
}

.finance-gl-split-one-gl {
  margin-top: 5px;
}

.finance-gl-split-summary {
  overflow: hidden;
  border: 1px solid #dde4df;
  border-radius: 12px;
  background: #fff;
}

.finance-gl-split-summary > div {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 10px;
  border-bottom: 1px solid #edf0ee;
  font-size: 11px;
}

.finance-gl-split-summary > div:last-child {
  border-bottom: 0;
}

.finance-gl-split-summary-total {
  background: #f5f8f6;
  font-weight: 800;
}

.finance-gl-queue-split-link {
  display: block;
  margin-top: 10px;
}

.finance-gl-queue-split-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.finance-gl-queue-split-heading strong {
  display: block;
  margin-top: 2px;
  font-size: 13px;
}

@media (max-width: 700px) {
  .finance-gl-split-ledger {
    grid-template-columns: 1fr;
  }

  .finance-gl-split-row {
    grid-template-columns: minmax(0, 1fr) 100px 30px;
  }

  .finance-gl-split-toolbar,
  .finance-gl-queue-split-heading {
    align-items: flex-start;
    flex-direction: column;
  }

  .finance-gl-split-toolbar small {
    text-align: left;
  }
}

/* Amazon-assisted GL coding */
.finance-amazon-gl-assist {
  margin: 14px 0;
  border: 1px solid #dce6e3;
  border-radius: 14px;
  background: #fbfdfc;
  overflow: hidden;
}

.finance-amazon-gl-assist.queue {
  margin: 0 0 16px;
}

.finance-amazon-gl-assist.unsafe {
  background: #fffdf8;
  border-color: #eadfca;
}

.finance-amazon-gl-assist-heading {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: flex-start;
  padding: 14px 16px 10px;
}

.finance-amazon-gl-assist-heading > div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.finance-amazon-gl-assist-heading > div > strong {
  font-size: 0.98rem;
}

.finance-amazon-gl-assist-heading small,
.finance-amazon-gl-item-copy small,
.finance-amazon-gl-item-account small,
.finance-amazon-gl-footer p,
.finance-amazon-gl-scope {
  color: #72807c;
}

.finance-amazon-gl-recognized {
  flex: 0 0 auto;
  font-size: 0.78rem;
  font-weight: 700;
  color: #4f6660;
  background: #eef4f2;
  border-radius: 999px;
  padding: 5px 9px;
}

.finance-amazon-gl-scope {
  margin: 0;
  padding: 0 16px 12px;
  font-size: 0.82rem;
  line-height: 1.45;
}

.finance-amazon-gl-scope.warning {
  color: #8a6424;
}

.finance-amazon-gl-items {
  border-top: 1px solid #e7edeb;
}

.finance-amazon-gl-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(210px, 0.72fr);
  gap: 12px;
  align-items: center;
  padding: 11px 16px;
  border-top: 1px solid #edf1f0;
}

.finance-amazon-gl-item:first-child {
  border-top: 0;
}

.finance-amazon-gl-item-copy {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.finance-amazon-gl-item-copy strong {
  font-size: 0.86rem;
  line-height: 1.35;
}

.finance-amazon-gl-item-copy small,
.finance-amazon-gl-item-account small {
  font-size: 0.75rem;
}

.finance-amazon-gl-item-total {
  white-space: nowrap;
  font-size: 0.86rem;
  font-variant-numeric: tabular-nums;
}

.finance-amazon-gl-item-account {
  display: grid;
  gap: 4px;
}

.finance-amazon-gl-item-account input {
  width: 100%;
  min-width: 0;
}

.finance-amazon-gl-item-account small.suggested {
  color: #45665d;
}

.finance-amazon-gl-item-account small.needs-choice {
  color: #9b6a24;
  font-weight: 600;
}

.finance-amazon-gl-footer {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  align-items: center;
  padding: 12px 16px 14px;
  border-top: 1px solid #e7edeb;
  background: #f8fbfa;
}

.finance-amazon-gl-footer p {
  margin: 0;
  max-width: 680px;
  font-size: 0.78rem;
  line-height: 1.4;
}

@media (max-width: 820px) {
  .finance-amazon-gl-assist-heading,
  .finance-amazon-gl-footer {
    flex-direction: column;
    align-items: stretch;
  }

  .finance-amazon-gl-recognized {
    align-self: flex-start;
  }

  .finance-amazon-gl-item {
    grid-template-columns: minmax(0, 1fr) auto;
  }

  .finance-amazon-gl-item-account {
    grid-column: 1 / -1;
  }
}

/* v30.6: focused documentation recovery queue */
.finance-documentation-queue-panel { width: min(800px, calc(100vw - 32px)); }
.finance-documentation-recovery-hint {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-top: 16px;
  padding: 12px 14px;
  border: 1px solid #e1e5e2;
  border-radius: 13px;
  background: #fafbfa;
}
.finance-documentation-recovery-hint.recoverable { border-color: #cfe0d6; background: #f1f7f4; }
.finance-documentation-recovery-hint span { display:block; color:var(--primary); font-size:9px; font-weight:850; letter-spacing:.06em; text-transform:uppercase; }
.finance-documentation-recovery-hint strong { display:block; margin-top:3px; font-size:12px; line-height:1.4; }
.finance-documentation-queue-section { margin-top:18px; padding-top:16px; border-top:1px solid var(--border); }
.finance-documentation-queue-section > label { display:block; margin-bottom:7px; font-size:12px; font-weight:850; }
.finance-documentation-queue-section > p { margin:6px 0 0; color:var(--text-muted); font-size:10.5px; line-height:1.45; }
.finance-documentation-match-row,
.finance-documentation-upload-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:9px; align-items:center; }
.finance-documentation-match-row select,
.finance-documentation-upload-row input[type="file"] { width:100%; min-height:42px; }
.finance-documentation-queue-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:flex-end; gap:9px; margin-top:20px; padding-top:16px; border-top:1px solid var(--border); }
.finance-documentation-queue-actions .finance-text-button { margin-right:auto; }
@media (max-width: 640px) {
  .finance-documentation-match-row,
  .finance-documentation-upload-row { grid-template-columns:1fr; }
  .finance-documentation-match-row button,
  .finance-documentation-upload-row button { width:100%; }
  .finance-documentation-queue-actions { align-items:stretch; flex-direction:column; }
  .finance-documentation-queue-actions .finance-text-button { margin-right:0; }
}


/* v30.7: optional internal notes on bank transactions */
.finance-internal-note-card {
  margin-top: 12px;
  padding: 12px;
  border: 1px solid #dfe5e1;
  border-radius: 12px;
  background: #fbfcfb;
}

.finance-internal-note-heading,
.finance-internal-note-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.finance-internal-note-heading > div > span {
  display: block;
  color: var(--primary);
  font-size: 10px;
  font-weight: 850;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.finance-internal-note-heading > div > strong {
  display: block;
  margin-top: 2px;
  font-size: 12px;
}

.finance-note-present-badge {
  flex: 0 0 auto;
  padding: 4px 7px;
  border-radius: 999px;
  background: #edf5f1;
  color: #3f6557;
  font-size: 9px;
  font-weight: 850;
  letter-spacing: .03em;
  text-transform: uppercase;
}

.finance-internal-note-card textarea {
  width: 100%;
  min-height: 78px;
  margin-top: 9px;
  resize: vertical;
  line-height: 1.45;
}

.finance-internal-note-footer {
  align-items: flex-end;
  margin-top: 8px;
}

.finance-internal-note-footer small {
  max-width: 430px;
  color: var(--text-muted);
  font-size: 10px;
  line-height: 1.4;
}

.finance-row-note-preview {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  margin-top: 5px;
  color: #52645b;
  font-size: 11px;
  line-height: 1.35;
}

.finance-row-note-preview > span {
  flex: 0 0 auto;
  padding: 2px 5px;
  border-radius: 999px;
  background: #edf3ef;
  color: #456154;
  font-size: 8px;
  font-weight: 900;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.finance-row-note-preview > strong {
  min-width: 0;
  overflow: hidden;
  font-weight: 650;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.finance-queue-internal-note {
  grid-column: 1 / -1;
  padding: 9px 10px;
  border: 1px solid #dce6e0;
  border-radius: 10px;
  background: #f5f8f6;
}

@media (max-width: 640px) {
  .finance-internal-note-heading,
  .finance-internal-note-footer {
    align-items: stretch;
    flex-direction: column;
  }

  .finance-internal-note-footer button {
    width: 100%;
  }
}

/* v30.7.3 — inferred Amazon shipment totals are reference estimates, not bank-charge rows */
.amazon-import-charge-row.amazon-inferred-charge-row,
.amazon-order-charge-row.amazon-inferred-charge-row {
  grid-template-columns: 1fr;
  align-items: start;
  padding: 7px 0;
}
.amazon-order-total-match-row,
.amazon-import-charge-row.amazon-order-total-match-row {
  margin-top: 4px;
  padding: 12px;
  border: 1px solid #dce8e4;
  border-radius: 10px;
  background: #f7faf9;
}

.finance-load-more {
  display: flex;
  justify-content: center;
  padding: 14px 0 4px;
}

/* v30.7.23 — grouped Vetcove payments + payroll historical GL assistance */
.finance-vetcove-payment-warning {
  display: grid;
  gap: 4px;
  margin: 10px 0;
  padding: 10px 12px;
  border: 1px solid #e7d8a4;
  border-radius: 10px;
  background: #fff9e8;
}

.finance-vetcove-payment-warning strong {
  color: #6f5511;
  font-size: 12px;
}

.finance-vetcove-payment-warning span {
  color: #665f48;
  font-size: 11px;
  line-height: 1.45;
}

.finance-vetcove-linked-list {
  display: flex;
  flex-wrap: wrap;
  gap: 5px 10px;
  margin-top: 7px;
}

.finance-payroll-assist {
  display: grid;
  gap: 9px;
  margin: 12px 0;
  padding: 12px;
  border: 1px solid #d8e5df;
  border-radius: 12px;
  background: #f7faf8;
}

.finance-payroll-assist.queue {
  margin: 10px 0 0;
}

.finance-payroll-assist.review {
  border-color: #ead9ad;
  background: #fffaf0;
}

.finance-payroll-assist-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.finance-payroll-assist-head > div > strong,
.finance-payroll-assist-head > div > small {
  display: block;
}

.finance-payroll-assist-head > div > strong {
  margin-top: 2px;
  font-size: 13px;
}

.finance-payroll-assist-head > div > small {
  margin-top: 2px;
  color: var(--text-muted);
  font-size: 10px;
}

.finance-payroll-assist > p {
  margin: 0;
  color: #4b5b53;
  font-size: 11px;
  line-height: 1.5;
}

.finance-payroll-account {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 10px;
  border-radius: 9px;
  background: rgba(255,255,255,.7);
}

.finance-payroll-account span {
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 750;
  text-transform: uppercase;
}

.finance-payroll-account strong {
  font-size: 11px;
  text-align: right;
}

.finance-payroll-batch {
  border-top: 1px solid rgba(84, 105, 95, .16);
  padding-top: 7px;
}

.finance-payroll-batch summary {
  cursor: pointer;
  color: #465b50;
  font-size: 10px;
  font-weight: 750;
}

.finance-payroll-batch > div {
  display: grid;
  gap: 4px;
  margin-top: 7px;
}

.finance-payroll-batch-row {
  display: grid;
  grid-template-columns: minmax(90px, 1fr) auto minmax(90px, 1fr);
  gap: 8px;
  align-items: center;
  padding: 5px 7px;
  border-radius: 7px;
  background: rgba(255,255,255,.55);
  font-size: 10px;
}

.finance-payroll-batch-row.current {
  background: #edf5f1;
}

.finance-payroll-batch-row > small {
  color: var(--text-muted);
  text-align: right;
}

.finance-payroll-review,
.finance-payroll-confidence {
  display: block;
  color: #76622f;
  font-size: 10px;
  line-height: 1.4;
}

.finance-payroll-confidence {
  color: #49675a;
}

@media (max-width: 640px) {
  .finance-payroll-assist-head,
  .finance-payroll-account {
    align-items: stretch;
    flex-direction: column;
  }

  .finance-payroll-account strong {
    text-align: left;
  }

  .finance-payroll-batch-row {
    grid-template-columns: 1fr auto;
  }

  .finance-payroll-batch-row > small {
    grid-column: 1 / -1;
    text-align: left;
  }
}

/* Generated deposit slip ↔ bank deposit reconciliation */
.finance-deposit-reconciliation-stack:empty { display: none; }
.finance-deposit-variance { font-weight: 700; }
.deposit-linked { border-left: 3px solid currentColor; }

/* v30.7.31 — fast bank vendor tagging */
.finance-gl-queue-entry select {
  width: 100%;
  min-height: 50px;
  padding: 10px 13px;
  border: 2px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 15px;
}

/* v30.7.33 — learned vendor matching + quick vendor creation */
.finance-vendor-queue-label-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 7px;
}

.finance-vendor-queue-label-row label {
  margin-bottom: 0;
}

.finance-vendor-queue-quick-add {
  margin-top: 14px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface-soft, var(--surface));
}

.finance-vendor-queue-quick-add[hidden] {
  display: none;
}

.finance-vendor-queue-quick-add > label {
  display: block;
  margin-bottom: 7px;
  font-size: 12px;
  font-weight: 850;
}

.finance-vendor-queue-quick-add-row {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) auto auto;
  gap: 8px;
  align-items: center;
}

.finance-vendor-queue-quick-add-row input {
  width: 100%;
  min-height: 42px;
  padding: 9px 11px;
}

.finance-vendor-queue-quick-add small {
  display: block;
  margin-top: 7px;
  color: var(--text-muted);
  font-size: 10px;
  line-height: 1.4;
}

.finance-vendor-queue-actions {
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}

@media (max-width: 680px) {
  .finance-vendor-queue-quick-add-row {
    grid-template-columns: 1fr;
  }

  .finance-vendor-queue-label-row {
    align-items: flex-start;
  }
}

/* v30.7.37 — finance workspace declutter + paged bank activity */
.finance-work-queue {
  max-height: none;
  overflow: visible;
}

.finance-workflow-bar {
  display: grid;
  grid-template-columns: minmax(180px, .8fr) minmax(0, 2fr) auto;
  gap: 14px;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  background: #f8faf9;
}

.finance-workflow-copy {
  min-width: 0;
}

.finance-workflow-copy strong,
.finance-workflow-copy span {
  display: block;
}

.finance-workflow-copy strong {
  font-size: 12px;
  font-weight: 850;
}

.finance-workflow-copy span {
  margin-top: 2px;
  color: var(--text-muted);
  font-size: 10.5px;
  line-height: 1.35;
}

.finance-workflow-actions {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  min-width: 0;
}

.finance-workflow-button {
  min-width: 0;
  min-height: 46px;
  padding: 8px 10px;
  border: 1px solid #bfd3c8;
  border-radius: 10px;
  background: #edf5f1;
  color: var(--primary-dark, #244c3c);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.finance-workflow-button:hover:not(:disabled) {
  border-color: #9bbcaf;
  background: #e4f0ea;
}

.finance-workflow-button:disabled {
  cursor: default;
  opacity: .62;
}

.finance-workflow-button span,
.finance-workflow-button small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.finance-workflow-button span {
  font-size: 11.5px;
  font-weight: 850;
}

.finance-workflow-button small {
  margin-top: 2px;
  color: var(--text-muted);
  font-size: 9.5px;
  font-weight: 650;
}

.finance-more-actions {
  position: relative;
  justify-self: end;
}

.finance-more-actions > summary {
  min-height: 34px;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: #fff;
  color: var(--text);
  font-size: 10.5px;
  font-weight: 800;
  cursor: pointer;
  list-style: none;
  white-space: nowrap;
}

.finance-more-actions > summary::-webkit-details-marker {
  display: none;
}

.finance-more-actions > summary::after {
  margin-left: 6px;
  content: "▾";
  color: var(--text-muted);
}

.finance-more-actions[open] > summary::after {
  content: "▴";
}

.finance-more-actions-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 12;
  display: grid;
  gap: 6px;
  min-width: 210px;
  padding: 8px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(28, 47, 39, .14);
}

.finance-more-actions-menu button {
  width: 100%;
  justify-content: flex-start;
}

.finance-pagination {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 11px 16px;
  border-top: 1px solid var(--border);
  background: #fbfcfb;
}

.finance-pagination.hidden {
  display: none;
}

.finance-page-range,
.finance-page-status {
  color: var(--text-muted);
  font-size: 10.5px;
  font-weight: 750;
  font-variant-numeric: tabular-nums;
}

.finance-pagination-controls {
  display: flex;
  align-items: center;
  gap: 8px;
}

.finance-pagination-controls button:disabled {
  opacity: .45;
}

@media (max-width: 980px) {
  .finance-workflow-bar {
    grid-template-columns: 1fr auto;
  }

  .finance-workflow-copy {
    grid-column: 1 / -1;
  }

  .finance-workflow-actions {
    grid-template-columns: repeat(3, minmax(120px, 1fr));
  }
}

@media (max-width: 680px) {
  .finance-workflow-bar {
    display: block;
  }

  .finance-workflow-actions {
    grid-template-columns: 1fr;
    margin-top: 10px;
  }

  .finance-more-actions {
    margin-top: 8px;
  }

  .finance-more-actions > summary {
    width: 100%;
  }

  .finance-more-actions-menu {
    position: static;
    margin-top: 6px;
  }

  .finance-pagination {
    align-items: stretch;
    flex-direction: column;
  }

  .finance-pagination-controls {
    justify-content: space-between;
  }
}

/* v30.7.38 — keep finance KPI cards readable at normal desktop widths */
.finance-overview-grid {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.finance-overview-grid .summary-card {
  min-width: 0;
}

.finance-overview-grid .summary-label {
  max-width: none;
  padding-right: 8px;
}

.finance-overview-grid .summary-value {
  white-space: nowrap;
}

@media (max-width: 820px) {
  .finance-overview-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 480px) {
  .finance-overview-grid {
    grid-template-columns: 1fr;
  }
}


/* v30.7.57 — scanned checks on Counter Credit bank items */
.finance-scanned-check-row { align-items:flex-start; gap:18px; }
.finance-scanned-check-list { display:grid; gap:7px; margin-top:10px; }
.finance-scanned-check-item { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 10px; border:1px solid var(--border, #d9e1df); border-radius:8px; background:rgba(255,255,255,.55); }
.finance-scanned-check-item > span { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; }
.finance-scanned-check-actions { display:flex; align-items:center; gap:8px; flex:0 0 auto; }
.finance-scanned-check-upload { display:grid; gap:8px; min-width:220px; max-width:300px; }
.finance-scanned-check-upload input[type="file"] { width:100%; font-size:12px; }
@media (max-width: 720px) {
  .finance-scanned-check-row { display:grid; grid-template-columns:1fr; }
  .finance-scanned-check-upload { min-width:0; max-width:none; width:100%; }
  .finance-scanned-check-item { align-items:flex-start; flex-direction:column; }
}
/* ===== END 30-finance.css ===== */


/* ===== BEGIN 31-vendor-documents.css ===== */
.vendor-summary-card {
  display: block;
  width: 100%;
  padding: 20px;
  text-align: left;
  color: #263b34;
  background: #f5f9f7;
  border: 1px solid #d8e5de;
  border-radius: 14px;
  cursor: pointer;
  font: inherit;
}
.vendor-summary-card:hover { background: #edf5f0; border-color: #97b5a4; }
.vendor-summary-card:focus-visible,
.vendor-document-edit summary:focus-visible,
.vendor-document-upload-button:focus-within { outline: 3px solid #448569; outline-offset: 3px; }
.vendor-summary-heading { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; }
.vendor-summary-heading > span:first-child { min-width: 0; }
.vendor-summary-heading .vendor-chip { flex-shrink: 0; }
.vendor-summary-name { display: block; font-size: 1.35rem; margin: 5px 0; overflow-wrap: anywhere; }
.vendor-summary-subtitle { display: block; color: #677b71; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
.vendor-summary-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin: 20px 0 16px; }
.vendor-summary-facts small { display: block; color: #677b71; margin-bottom: 4px; }
.vendor-summary-facts strong { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vendor-summary-footer { border-top: 1px solid #d8e5de; padding-top: 13px; display: flex; justify-content: space-between; color: #38634f; font-weight: 600; font-size: .83rem; }
.vendor-documents .vendor-section-heading p { font-size: .85rem; line-height: 1.5; }
.vendor-document-upload-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 10px 14px; margin: 16px 0; }
.vendor-document-upload-bar > span { font-size: .73rem; color: #6d7c74; }
.vendor-document-upload-button { position: relative; display: inline-flex; align-items: center; padding: 10px 14px; border: 1px solid #cadcd1; border-radius: 9px; background: #eef5f0; color: #305d46; font-size: .83rem; font-weight: 700; cursor: pointer; overflow: hidden; }
.vendor-document-upload-button:hover { background: #e2eee6; }
.vendor-document-upload-button input { position: absolute; inset: 0; opacity: 0; width: 100%; height: 100%; cursor: pointer; }
.vendor-document-upload-button:has(input:disabled) { opacity: .5; }
.vendor-document-status { font-size: .82rem; color: #426453; overflow-wrap: anywhere; }
.vendor-document-status:empty { display: none; }
.vendor-document-list { display: grid; gap: 12px; }
.vendor-document-card { border: 1px solid #dce5df; border-radius: 12px; padding: 16px; background: #fff; box-shadow: 0 2px 5px #20382c05; min-width: 0; }
.vendor-document-card-heading { display: flex; gap: 12px; align-items: flex-start; }
.vendor-document-format { flex: 0 0 40px; display: grid; place-items: center; min-height: 46px; background: #eff4f1; border: 1px solid #dce7df; border-radius: 7px; color: #547762; font-size: .62rem; font-weight: 800; letter-spacing: .03em; }
.vendor-document-main { min-width: 0; }
.vendor-document-title { display: block; color: #284e3c; text-decoration: none; font-size: .94rem; font-weight: 700; line-height: 1.45; overflow-wrap: anywhere; }
.vendor-document-title:hover { text-decoration: underline; }
.vendor-document-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px; margin-top: 7px; color: #738078; font-size: .7rem; }
.vendor-document-tag { display: inline-block; border-radius: 5px; padding: 3px 7px; background: #f0f2f4; color: #67717c; font-weight: 700; }
.vendor-document-tag[data-kind="contract"] { background: #e9f1fc; color: #41669a; }
.vendor-document-tag[data-kind="quote"] { background: #fff3db; color: #947021; }
.vendor-document-tag[data-kind="mou"] { background: #f1eafa; color: #7a559b; }
.vendor-document-notes { margin: 14px 0 0; padding: 10px 12px; background: #f7f9f7; border-radius: 7px; color: #52675b; font-size: .83rem; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; }
.vendor-document-no-notes { color: #87938b; margin: 12px 0 0; font-size: .78rem; }
.vendor-document-edit { margin-top: 13px; border-top: 1px solid #eef1ee; padding-top: 10px; }
.vendor-document-edit summary { cursor: pointer; color: #52745f; font-weight: 600; font-size: .78rem; width: fit-content; }
.vendor-document-edit form { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 12px; margin-top: 16px; }
.vendor-document-edit label { display: flex; flex-direction: column; gap: 6px; font-size: .78rem; font-weight: 600; color: #4b6153; min-width: 0; }
.vendor-document-edit input, .vendor-document-edit select, .vendor-document-edit textarea { width: 100%; min-width: 0; box-sizing: border-box; padding: 10px; border: 1px solid #ccd9d0; border-radius: 7px; font: inherit; color: #263b34; background: white; }
.vendor-document-edit textarea { resize: vertical; line-height: 1.5; }
.vendor-document-notes-field, .vendor-document-original, .vendor-document-edit-actions, .vendor-document-edit .vendor-document-status { grid-column: 1 / -1; }
.vendor-document-edit label small, .vendor-document-original { font-size: .7rem; color: #7b887f; font-weight: 400; margin: 0; overflow-wrap: anywhere; }
.vendor-document-edit-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.vendor-document-edit-actions .danger-button { margin-left: auto; }
.vendor-document-empty { padding: 24px 16px; border: 1px dashed #d4dfd7; border-radius: 10px; text-align: center; background: #fafcfb; color: #728078; font-size: .82rem; }
.vendor-document-empty strong, .vendor-document-empty span { display: block; }
.vendor-document-empty strong { color: #4b6456; margin-bottom: 7px; }
.vendor-lightbox { width: min(900px, calc(100vw - 40px)); max-height: calc(100dvh - 48px); padding: 0; border: 1px solid #d9e4dc; border-radius: 18px; color: #263b34; background: #fff; box-shadow: 0 24px 90px #102c3340; overflow-y: auto; }
.vendor-lightbox::backdrop { background: #172d26a6; backdrop-filter: blur(3px); }
.vendor-lightbox-toolbar { position: sticky; top: 0; z-index: 1; padding: 14px 24px; display: flex; justify-content: space-between; align-items: center; background: #f5f8f6; border-bottom: 1px solid #e0e8e2; color: #667a6d; font-size: .82rem; font-weight: 600; }
.vendor-lightbox-body { padding: 24px; }
.vendor-lightbox-open { overflow: hidden; }
@media (max-width: 600px) {
  .vendor-summary-card { padding: 16px; }
  .vendor-summary-heading { flex-wrap: wrap; }
  .vendor-summary-facts { gap: 8px; font-size: .82rem; }
  .vendor-document-edit form { grid-template-columns: minmax(0, 1fr); }
  .vendor-document-edit-actions .danger-button { margin-left: 0; }
  .vendor-lightbox { width: calc(100vw - 20px); max-height: calc(100dvh - 20px); border-radius: 12px; }
  .vendor-lightbox-body, .vendor-lightbox-toolbar { padding: 16px; }
  .vendor-lightbox .vendor-detail-header { flex-wrap: wrap; }
  .vendor-lightbox .vendor-detail-grid, .vendor-lightbox .vendor-fact-grid { grid-template-columns: minmax(0, 1fr); }
}
/* ===== END 31-vendor-documents.css ===== */


/* ===== BEGIN 40-constituents-and-imports.css ===== */
/**
 * PeliPro style source unit.
 * Run `npm run build` after editing; do not edit public/assets/css/app.css directly.
 */
    @media (max-width: 700px) {
      #financesWorkspace .workspace-header {
        gap: 12px;
      }

      #financesWorkspace .header-action-group {
        width: 100%;
      }

      #financesWorkspace .header-action-group button {
        flex: 1 1 0;
        padding-inline: 10px;
      }

      .finance-overview-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .finance-overview-grid .summary-card {
        min-height: 62px;
      }

      .finance-toolbar,
      .finance-control-row,
      .finance-receipt-gl {
        grid-template-columns: 1fr;
      }

      .finance-toolbar .form-group:first-child {
        grid-column: auto;
      }

      .finance-transaction-row {
        grid-template-columns: 45px minmax(0, 1fr);
      }

      .finance-row-amount {
        grid-column: 2;
        justify-self: start;
        padding-left: 0;
      }

      .finance-inspector {
        inset: 8px;
        width: auto;
        border-radius: 16px;
      }

      .finance-inspector-header {
        grid-template-columns: minmax(0, 1fr) auto;
      }

      .finance-inspector-close {
        min-width: 56px;
        padding-inline: 9px;
      }

      .finance-detail {
        padding: 20px;
      }

      .finance-detail-title-row,
      .finance-receipt-header {
        grid-template-columns: 1fr;
        flex-direction: column;
      }

      .finance-detail-amount {
        justify-self: start;
      }

      .finance-facts {
        grid-template-columns: 1fr;
      }
    }


    /* Constituent list builder */
    #constituentListsWorkspace {
      --list-accent: #1f6f5f;
      --list-accent-dark: #185748;
      --list-accent-soft: #eaf4f0;
      --list-ink: #17362f;
    }

    .constituent-lists-hero {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 24px;
      padding: 23px 26px;
      border: 1px solid rgba(31, 111, 95, 0.17);
      border-radius: 20px;
      background: linear-gradient(135deg, #f8fbfa 0%, #edf6f2 68%, #faf7ee 100%);
      box-shadow: 0 10px 26px rgba(27, 58, 48, 0.055);
    }

    .constituent-lists-hero h2 {
      margin: 4px 0 6px;
      color: var(--list-ink);
      font-size: clamp(1.55rem, 2.6vw, 2rem);
    }

    .constituent-lists-hero p {
      max-width: 760px;
      margin: 0;
      color: var(--muted-text);
      line-height: 1.5;
    }

    .constituent-lists-kicker {
      color: var(--list-accent);
      font-size: 0.71rem;
      font-weight: 800;
      letter-spacing: 0.105em;
      text-transform: uppercase;
    }

    .constituent-list-protection-note {
      display: flex;
      align-items: center;
      gap: 9px;
      flex: 0 0 auto;
      max-width: 300px;
      padding: 10px 12px;
      border: 1px solid #cfe4dc;
      border-radius: 12px;
      background: rgba(255, 255, 255, 0.75);
      color: #355a50;
      font-size: 0.79rem;
      line-height: 1.35;
    }

    .constituent-list-protection-icon {
      display: grid;
      place-items: center;
      flex: 0 0 23px;
      width: 23px;
      height: 23px;
      border-radius: 50%;
      background: #dcefe7;
      color: #176044;
      font-weight: 900;
    }

    .constituent-list-quick-starts {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      gap: 8px;
      margin: 14px 0;
      padding: 0 2px;
    }

    .constituent-list-quick-starts > span {
      margin-right: 3px;
      color: var(--muted-text);
      font-size: 0.76rem;
      font-weight: 800;
      text-transform: uppercase;
      letter-spacing: 0.065em;
    }

    .constituent-list-preset {
      border: 1px solid var(--border-color);
      border-radius: 999px;
      padding: 8px 12px;
      background: #fff;
      color: var(--body-text);
      font: inherit;
      font-size: 0.83rem;
      font-weight: 700;
      cursor: pointer;
      transition: transform 120ms ease, border-color 120ms ease, background 120ms ease;
    }

    .constituent-list-preset:hover { border-color: #8eb8aa; transform: translateY(-1px); }
    .constituent-list-preset:active { transform: translateY(1px) scale(0.99); }
    .constituent-list-preset.active {
      border-color: var(--list-accent);
      background: var(--list-accent);
      color: #fff;
      box-shadow: 0 5px 14px rgba(31, 111, 95, 0.18);
    }

    .constituent-list-builder-layout {
      display: grid;
      gap: 18px;
    }

    .constituent-list-filter-panel,
    .constituent-list-results-panel {
      min-width: 0;
      border: 1px solid var(--border-color);
      border-radius: 18px;
      background: #fff;
      box-shadow: 0 8px 24px rgba(27, 58, 48, 0.05);
    }

    .constituent-list-filter-panel { padding: 20px 22px 22px; }

    .constituent-list-panel-heading,
    .constituent-list-results-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 16px;
    }

    .constituent-list-panel-heading { margin-bottom: 17px; }
    .constituent-list-panel-heading h3,
    .constituent-list-results-header h3 { margin: 3px 0 0; }
    .constituent-list-panel-heading p {
      margin: 5px 0 0;
      color: var(--muted-text);
      font-size: 0.86rem;
    }

    .text-button {
      border: 0;
      padding: 6px 4px;
      background: transparent;
      color: var(--list-accent);
      font: inherit;
      font-weight: 800;
      cursor: pointer;
    }

    .constituent-list-filter-grid {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 14px;
      align-items: end;
    }

    .constituent-list-filter-grid .form-group { min-width: 0; margin: 0; }
    .constituent-list-filter-grid .filter-span-2 { grid-column: span 2; }
    .constituent-list-filter-grid label { font-size: 0.78rem; }
    .constituent-list-filter-grid input,
    .constituent-list-filter-grid select { width: 100%; min-width: 0; }
    .constituent-list-filter-grid .field-help {
      display: block;
      min-height: 1.05rem;
      margin-top: 5px;
      color: var(--muted-text);
      font-size: 0.7rem;
      line-height: 1.25;
    }

    .currency-input-wrap {
      display: grid;
      grid-template-columns: auto minmax(0, 1fr);
      align-items: center;
      border: 1px solid var(--border-color);
      border-radius: 8px;
      background: #fff;
      overflow: hidden;
    }
    .currency-input-wrap:focus-within { border-color: var(--primary-color); box-shadow: 0 0 0 3px rgba(31, 111, 95, 0.1); }
    .currency-input-wrap span { padding-left: 10px; color: var(--muted-text); font-weight: 700; }
    .currency-input-wrap input { border: 0 !important; box-shadow: none !important; }

    .constituent-list-results-panel { padding: 20px; }
    .constituent-list-summary-grid {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 10px;
      margin: 17px 0;
    }

    .constituent-list-summary-grid article {
      min-width: 0;
      padding: 12px 14px;
      border: 1px solid #dfe8e4;
      border-radius: 13px;
      background: #f9fbfa;
    }
    .constituent-list-summary-grid span { display: block; color: var(--muted-text); font-size: 0.72rem; font-weight: 800; text-transform: uppercase; letter-spacing: 0.045em; }
    .constituent-list-summary-grid strong { display: block; margin-top: 5px; color: var(--list-ink); font-size: 1.22rem; }

    .constituent-list-results-header {
      align-items: flex-end;
      padding-bottom: 15px;
      border-bottom: 1px solid var(--border-color);
    }
    .constituent-list-results-header p { margin: 5px 0 0; color: var(--muted-text); }
    .constituent-list-page-size { display: flex; align-items: center; gap: 8px; }
    .constituent-list-page-size label { color: var(--muted-text); font-size: 0.8rem; font-weight: 700; }
    .constituent-list-page-size select { min-width: 74px; }

    .constituent-list-export-bar {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 18px;
      margin: 0 0 16px;
      padding: 15px 16px;
      border: 1px solid #c9ded6;
      border-radius: 15px;
      background: linear-gradient(135deg, #f3faf7 0%, #eef6f2 100%);
    }

    .constituent-list-export-copy { min-width: 190px; }
    .constituent-list-export-copy strong { display: block; color: var(--list-ink); }
    .constituent-list-export-copy span {
      display: block;
      margin-top: 3px;
      color: #60746e;
      font-size: 0.78rem;
      line-height: 1.35;
    }

    .constituent-list-export-actions {
      display: flex;
      flex-wrap: wrap;
      justify-content: flex-end;
      gap: 8px;
    }

    .constituent-list-export-actions button {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 7px;
      white-space: nowrap;
    }

    .constituent-list-button-count {
      display: inline-grid;
      place-items: center;
      min-width: 24px;
      min-height: 21px;
      padding: 1px 6px;
      border-radius: 999px;
      background: rgba(20, 65, 54, 0.1);
      font-size: 0.72rem;
      font-weight: 900;
    }

    .action-button .constituent-list-button-count {
      background: rgba(255, 255, 255, 0.2);
      color: #fff;
    }

    .constituent-list-export-status {
      min-height: 1.2rem;
      margin: -8px 2px 10px;
      color: var(--list-accent-dark);
      font-size: 0.8rem;
      font-weight: 700;
      text-align: right;
    }

    .constituent-list-table-wrap {
      overflow: auto;
      max-height: 720px;
      border: 1px solid var(--border-color);
      border-radius: 13px;
    }
    .constituent-list-table { width: 100%; min-width: 760px; border-collapse: separate; border-spacing: 0; font-size: 0.86rem; }
    .constituent-list-table th,
    .constituent-list-table td { padding: 13px 12px; border-bottom: 1px solid #e7ecea; text-align: left; vertical-align: top; }
    .constituent-list-table th { position: sticky; top: 0; z-index: 2; background: #f4f7f6; color: #49615a; font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.05em; }
    .constituent-list-table tbody tr:last-child td { border-bottom: 0; }
    .constituent-list-table tbody tr:hover { background: #fafcfb; }
    .constituent-list-table .constituent-name { color: var(--list-ink); font-weight: 800; }
    .constituent-list-table .constituent-meta { margin-top: 3px; color: var(--muted-text); font-size: 0.76rem; line-height: 1.35; }
    .constituent-list-contact-lines { display: grid; gap: 3px; max-width: 360px; }
    .constituent-list-contact-lines a { color: var(--primary-color); text-decoration: none; overflow-wrap: anywhere; }
    .constituent-list-contact-lines address { color: #4f625d; font-style: normal; white-space: pre-line; }
    .constituent-list-giving-cell strong { display: block; color: var(--list-ink); font-size: 0.97rem; }
    .constituent-list-readiness { display: flex; flex-wrap: wrap; gap: 5px; }
    .constituent-list-pill { display: inline-flex; align-items: center; border-radius: 999px; padding: 4px 7px; background: #edf1ef; color: #52645f; font-size: 0.69rem; font-weight: 800; }
    .constituent-list-pill.ready { background: #e2f2ea; color: #176044; }
    .constituent-list-pill.blocked { background: #f7e8e7; color: #8a3430; }

    .constituent-list-pagination {
      display: flex;
      align-items: center;
      justify-content: flex-end;
      gap: 12px;
      margin-top: 14px;
      color: var(--muted-text);
      font-size: 0.86rem;
    }


    .constituent-list-results-tools {
      display: flex;
      align-items: flex-end;
      justify-content: flex-end;
      gap: 12px;
      flex-wrap: wrap;
    }

    .constituent-list-export-trigger {
      min-height: 42px;
      padding-inline: 18px;
      box-shadow: 0 7px 18px rgba(31, 111, 95, 0.18);
    }

    .constituent-list-export-trigger .constituent-list-button-count {
      background: rgba(255, 255, 255, 0.2);
    }

    .constituent-export-modal {
      width: min(900px, 100%);
    }

    .constituent-export-intro {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      gap: 18px;
      align-items: center;
      margin-bottom: 18px;
      padding: 16px 18px;
      border: 1px solid #d7e5df;
      border-radius: 14px;
      background: #f5faf7;
    }

    .constituent-export-intro strong {
      display: block;
      color: var(--list-ink);
      font-size: 1.05rem;
    }

    .constituent-export-intro span {
      display: block;
      margin-top: 4px;
      color: var(--muted-text);
      font-size: 0.84rem;
      line-height: 1.45;
    }

    .constituent-export-audience-count {
      min-width: 110px;
      text-align: right;
    }

    .constituent-export-audience-count b {
      display: block;
      color: var(--list-accent);
      font-size: 2rem;
      line-height: 1;
    }

    .constituent-export-audience-count small {
      color: var(--muted-text);
      font-weight: 700;
    }

    .constituent-export-options {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 13px;
    }

    .constituent-export-option {
      display: flex;
      flex-direction: column;
      min-width: 0;
      min-height: 260px;
      padding: 17px;
      border: 1px solid var(--border-color);
      border-radius: 16px;
      background: #fff;
      box-shadow: 0 6px 18px rgba(27, 58, 48, 0.045);
    }

    .constituent-export-option.recommended {
      border-color: #9cc7b8;
      background: linear-gradient(180deg, #f7fcfa 0%, #ffffff 100%);
    }

    .constituent-export-option-label {
      color: var(--list-accent);
      font-size: 0.72rem;
      font-weight: 900;
      letter-spacing: 0.06em;
      text-transform: uppercase;
    }

    .constituent-export-option h4 {
      margin: 6px 0 6px;
      color: var(--list-ink);
      font-size: 1.05rem;
    }

    .constituent-export-option p {
      margin: 0 0 13px;
      color: var(--muted-text);
      font-size: 0.82rem;
      line-height: 1.45;
    }

    .constituent-export-option-count {
      margin-top: auto;
      padding: 12px 0;
      border-top: 1px solid #e3ebe7;
      color: var(--muted-text);
      font-size: 0.8rem;
    }

    .constituent-export-option-count strong {
      color: var(--list-ink);
      font-size: 1.25rem;
    }

    .constituent-export-option button {
      width: 100%;
      justify-content: center;
    }

    .constituent-export-mail-setting {
      display: flex;
      align-items: flex-start;
      gap: 9px;
      margin: 12px 0 0;
      padding: 10px 11px;
      border-radius: 10px;
      background: #f4f7f5;
      color: #425c54;
      font-size: 0.76rem;
      line-height: 1.4;
    }

    .constituent-export-mail-setting input {
      flex: 0 0 auto;
      width: auto;
      margin-top: 2px;
    }

    .constituent-export-footnote {
      margin: 15px 0 0;
      color: var(--muted-text);
      font-size: 0.78rem;
      line-height: 1.45;
    }

    .constituent-list-export-status {
      min-height: 1.3rem;
      margin-top: 12px;
      color: var(--list-accent);
      font-size: 0.83rem;
      font-weight: 700;
    }

    @media (max-width: 1120px) {
      .constituent-lists-hero { align-items: flex-start; }
      .constituent-list-filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
      .constituent-list-filter-grid .filter-span-2 { grid-column: span 2; }
      .constituent-list-export-bar { align-items: flex-start; flex-direction: column; }
      .constituent-list-export-actions { justify-content: flex-start; }
      .constituent-list-export-status { text-align: left; }
    }

    @media (max-width: 820px) {
      .constituent-lists-hero { flex-direction: column; padding: 20px; }
      .constituent-list-protection-note { max-width: none; }
      .constituent-list-filter-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .constituent-list-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .constituent-list-results-header { align-items: flex-start; flex-direction: column; }
      .constituent-list-results-tools { width: 100%; justify-content: space-between; }
      .constituent-export-options { grid-template-columns: 1fr; }
      .constituent-export-option { min-height: 0; }
    }

    @media (max-width: 560px) {
      .constituent-list-filter-panel,
      .constituent-list-results-panel { padding: 16px; }
      .constituent-list-filter-grid { grid-template-columns: 1fr; }
      .constituent-list-filter-grid .filter-span-2 { grid-column: auto; }
      .constituent-list-export-actions { width: 100%; }
      .constituent-list-export-actions button { width: 100%; }
      .constituent-list-pagination { justify-content: space-between; }
      .constituent-list-results-tools { align-items: stretch; flex-direction: column; }
      .constituent-list-export-trigger { width: 100%; justify-content: center; }
      .constituent-export-intro { grid-template-columns: 1fr; }
      .constituent-export-audience-count { text-align: left; }
    }


    /* Constituent list visual refresh v11 */
    #constituentListsWorkspace {
      --list-surface: #ffffff;
      --list-surface-soft: #f6f9f8;
      --list-line: #dbe5e1;
      --list-label: #31554b;
    }

    .constituent-list-quick-starts {
      display: grid;
      grid-template-columns: minmax(150px, 0.7fr) minmax(0, 3.3fr);
      gap: 18px;
      align-items: center;
      margin: 16px 0 18px;
      padding: 14px 16px;
      border: 1px solid var(--list-line);
      border-radius: 16px;
      background: rgba(255, 255, 255, 0.82);
      box-shadow: 0 5px 16px rgba(27, 58, 48, 0.035);
    }

    .constituent-list-quick-start-heading {
      min-width: 0;
      padding-right: 16px;
      border-right: 1px solid var(--list-line);
    }

    .constituent-list-quick-start-heading > span {
      display: block;
      color: var(--list-ink);
      font-size: 0.82rem;
      font-weight: 900;
      letter-spacing: 0;
      text-transform: none;
    }

    .constituent-list-quick-start-heading small {
      display: block;
      margin-top: 3px;
      color: var(--muted-text);
      font-size: 0.7rem;
      line-height: 1.3;
    }

    .constituent-list-quick-start-buttons {
      display: grid;
      grid-template-columns: repeat(6, minmax(0, 1fr));
      gap: 7px;
      min-width: 0;
    }

    .constituent-list-preset {
      min-height: 38px;
      padding: 7px 9px;
      border-color: #d7e1dd;
      border-radius: 10px;
      background: #fff;
      font-size: 0.76rem;
      line-height: 1.15;
      text-align: center;
      box-shadow: 0 1px 2px rgba(27, 58, 48, 0.025);
    }

    .constituent-list-preset:hover {
      border-color: #8eb8aa;
      background: #f6faf8;
      transform: translateY(-1px);
    }

    .constituent-list-preset.active {
      border-color: var(--list-accent);
      background: linear-gradient(135deg, var(--list-accent), var(--list-accent-dark));
      color: #fff;
      box-shadow: 0 5px 14px rgba(31, 111, 95, 0.2);
    }

    .constituent-list-filter-panel {
      padding: 22px;
      border-color: #d7e2de;
      background: #fbfcfc;
      box-shadow: 0 10px 28px rgba(27, 58, 48, 0.055);
    }

    .constituent-list-panel-heading {
      align-items: center;
      margin-bottom: 16px;
      padding: 0 2px 15px;
      border-bottom: 1px solid var(--list-line);
    }

    .constituent-list-panel-heading .constituent-lists-kicker {
      display: inline-flex;
      align-items: center;
      min-height: 24px;
      padding: 3px 8px;
      border-radius: 999px;
      background: var(--list-accent-soft);
      font-size: 0.66rem;
      letter-spacing: 0.08em;
    }

    .constituent-list-panel-heading h3 {
      margin-top: 7px;
      font-size: 1.2rem;
    }

    .constituent-list-panel-heading p {
      max-width: 620px;
      font-size: 0.8rem;
    }

    .constituent-list-panel-heading .text-button {
      flex: 0 0 auto;
      padding: 8px 12px;
      border: 1px solid #cfded8;
      border-radius: 10px;
      background: #fff;
      font-size: 0.78rem;
    }

    .constituent-list-panel-heading .text-button:hover {
      border-color: #8eb8aa;
      background: var(--list-accent-soft);
    }

    .constituent-filter-sections {
      display: grid;
      gap: 12px;
    }

    .constituent-filter-section {
      min-width: 0;
      padding: 16px;
      border: 1px solid var(--list-line);
      border-radius: 15px;
      background: var(--list-surface);
    }

    .constituent-filter-section-search {
      border-color: #c9ded6;
      background: linear-gradient(135deg, #ffffff 0%, #f6faf8 100%);
    }

    .constituent-filter-section-heading {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 18px;
      margin-bottom: 13px;
    }

    .constituent-filter-section-heading > div {
      display: flex;
      align-items: center;
      gap: 9px;
      min-width: 0;
    }

    .constituent-filter-section-number {
      display: inline-grid;
      place-items: center;
      flex: 0 0 24px;
      width: 24px;
      height: 24px;
      border-radius: 8px;
      background: var(--list-accent-soft);
      color: var(--list-accent-dark);
      font-size: 0.72rem;
      font-weight: 900;
    }

    .constituent-filter-section-heading h4 {
      margin: 0;
      color: var(--list-ink);
      font-size: 0.92rem;
    }

    .constituent-filter-section-heading p {
      max-width: 460px;
      margin: 0;
      color: var(--muted-text);
      font-size: 0.72rem;
      line-height: 1.35;
      text-align: right;
    }

    .constituent-list-filter-grid {
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 11px 12px;
      align-items: start;
    }

    .constituent-list-filter-grid-search {
      grid-template-columns: minmax(0, 1.35fr) minmax(0, 1.35fr) repeat(2, minmax(0, 1fr));
    }

    .constituent-list-filter-grid-giving {
      grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .constituent-list-filter-grid-outreach {
      grid-template-columns: 1.35fr 1fr 1fr;
    }

    .constituent-list-filter-grid label {
      display: block;
      margin-bottom: 6px;
      color: var(--list-label);
      font-size: 0.73rem;
      font-weight: 800;
      line-height: 1.2;
    }

    .constituent-list-filter-grid input,
    .constituent-list-filter-grid select,
    .constituent-list-filter-grid .currency-input-wrap {
      min-height: 43px;
      border-color: #d3ded9;
      border-radius: 10px;
      background: #fff;
      font-size: 0.85rem;
    }

    .constituent-list-filter-grid input:focus,
    .constituent-list-filter-grid select:focus {
      border-color: var(--list-accent);
      box-shadow: 0 0 0 3px rgba(31, 111, 95, 0.1);
    }

    .constituent-list-filter-grid .field-help {
      display: none;
    }

    .constituent-list-search-wrap {
      position: relative;
    }

    .constituent-list-search-icon {
      position: absolute;
      top: 50%;
      left: 14px;
      z-index: 1;
      width: 12px;
      height: 12px;
      border: 2px solid #6f847e;
      border-radius: 50%;
      transform: translateY(-58%);
      pointer-events: none;
    }

    .constituent-list-search-icon::after {
      content: "";
      position: absolute;
      right: -5px;
      bottom: -3px;
      width: 6px;
      height: 2px;
      border-radius: 999px;
      background: #6f847e;
      transform: rotate(45deg);
      transform-origin: left center;
    }

    .constituent-list-search-wrap input {
      width: 100%;
      padding-left: 38px;
    }

    .currency-input-wrap span {
      padding-left: 12px;
      color: #557069;
    }

    .currency-input-wrap input {
      min-height: 41px;
    }

    @media (max-width: 1120px) {
      .constituent-list-quick-starts {
        grid-template-columns: 1fr;
        gap: 10px;
      }

      .constituent-list-quick-start-heading {
        padding-right: 0;
        padding-bottom: 9px;
        border-right: 0;
        border-bottom: 1px solid var(--list-line);
      }

      .constituent-list-quick-start-buttons {
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }

      .constituent-list-filter-grid-search,
      .constituent-list-filter-grid-giving {
        grid-template-columns: repeat(3, minmax(0, 1fr));
      }

      .constituent-list-filter-grid-search .filter-span-2,
      .constituent-list-filter-grid-giving .filter-span-2 {
        grid-column: span 2;
      }
    }

    @media (max-width: 820px) {
      .constituent-list-quick-start-buttons {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .constituent-filter-section-heading {
        align-items: flex-start;
        flex-direction: column;
        gap: 5px;
      }

      .constituent-filter-section-heading p {
        padding-left: 33px;
        text-align: left;
      }

      .constituent-list-filter-grid-search,
      .constituent-list-filter-grid-giving,
      .constituent-list-filter-grid-outreach {
        grid-template-columns: repeat(2, minmax(0, 1fr));
      }

      .constituent-list-filter-grid-search .filter-span-2,
      .constituent-list-filter-grid-giving .filter-span-2 {
        grid-column: span 2;
      }
    }

    @media (max-width: 560px) {
      .constituent-list-quick-start-buttons,
      .constituent-list-filter-grid-search,
      .constituent-list-filter-grid-giving,
      .constituent-list-filter-grid-outreach {
        grid-template-columns: 1fr;
      }

      .constituent-list-filter-grid-search .filter-span-2,
      .constituent-list-filter-grid-giving .filter-span-2 {
        grid-column: auto;
      }

      .constituent-filter-section {
        padding: 14px;
      }
    }


    /* Historical giving import and cleanup workflow */
    .historical-import-intro {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      gap: 18px;
      align-items: center;
      margin-bottom: 18px;
      padding: 16px 18px;
      border: 1px solid #d9e5e0;
      border-radius: 15px;
      background: #f7faf8;
    }
    .historical-import-intro strong { display: block; color: #17362f; }
    .historical-import-intro span { display: block; margin-top: 4px; color: var(--muted-text); font-size: 0.88rem; line-height: 1.45; }
    .historical-mapping-panel {
      margin: 18px 0;
      border: 1px solid var(--border-color);
      border-radius: 16px;
      background: #fbfcfb;
      overflow: hidden;
    }
    .historical-mapping-panel summary {
      padding: 14px 16px;
      cursor: pointer;
      color: #244d43;
      font-weight: 800;
      background: #f3f7f5;
    }
    .historical-mapping-grid {
      display: grid;
      grid-template-columns: repeat(4, minmax(150px, 1fr));
      gap: 12px;
      padding: 16px;
    }
    .historical-mapping-grid .form-group { margin: 0; }
    .historical-import-preview-wrap {
      overflow: auto;
      max-height: 600px;
      margin-top: 12px;
      border: 1px solid var(--border-color);
      border-radius: 14px;
      background: #fff;
    }
    .historical-import-preview-table { width: 100%; min-width: 1040px; border-collapse: collapse; font-size: 0.86rem; }
    .historical-import-preview-table th,
    .historical-import-preview-table td { padding: 12px 11px; border-bottom: 1px solid #e7ecea; text-align: left; vertical-align: top; }
    .historical-import-preview-table th { position: sticky; top: 0; z-index: 2; background: #f4f7f6; color: #49615a; font-size: 0.73rem; text-transform: uppercase; letter-spacing: .045em; }
    .historical-import-preview-table select { min-width: 185px; max-width: 300px; }
    .historical-import-preview-table tr.import-row-skipped { background: #fafafa; color: #71807b; }
    .historical-import-preview-table tr.import-row-complete { background: #f2f8f5; }
    .historical-import-preview-table .row-action-stack { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; }
    .historical-import-preview-table .compact-action { padding: 7px 10px; min-height: 34px; font-size: 0.8rem; }
    .historical-review-toolbar {
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 14px;
      flex-wrap: wrap;
      margin: 12px 0;
      padding: 13px 15px;
      border: 1px solid #dbe7e2;
      border-radius: 14px;
      background: #f7faf9;
    }
    .historical-review-toolbar strong { display: block; color: #17362f; }
    .historical-review-toolbar span { display: block; margin-top: 3px; color: var(--muted-text); font-size: 0.84rem; }
    .historical-review-toolbar-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
    .historical-page-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
    .historical-decision-select { min-width: 150px !important; font-weight: 700; }
    .historical-edit-modal { width: min(980px, 100%); }
    .historical-edit-note {
      margin: 0 0 16px;
      padding: 12px 14px;
      border-radius: 12px;
      background: #f1f6f4;
      color: #385a51;
      line-height: 1.45;
    }
    .historical-edit-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
    .historical-edit-grid .form-group { margin: 0; }
    .historical-edit-grid .span-two { grid-column: span 2; }

    .medical-import-safety-note {
      display: flex;
      flex-wrap: wrap;
      gap: 7px 12px;
      margin-bottom: 16px;
      padding: 13px 15px;
      border: 1px solid #c8ded7;
      border-radius: 12px;
      background: #eef7f4;
      color: #285247;
      line-height: 1.45;
    }

    .medical-import-safety-note strong { flex: 0 0 auto; }
    .medical-review-queue {
      margin: 0 0 18px;
      padding: 16px;
      border: 1px solid #d9e4e0;
      border-radius: 16px;
      background: #fbfcfc;
    }
    .medical-review-queue-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 16px;
      margin-bottom: 12px;
    }
    .medical-review-queue-header h4 { margin: 0 0 4px; color: #17362f; }
    .medical-review-queue-header p { margin: 0; color: var(--muted-text); line-height: 1.4; }
    .medical-review-card-list { display: grid; gap: 12px; }
    .medical-review-card {
      display: grid;
      grid-template-columns: minmax(0, 1fr) minmax(260px, 340px);
      gap: 18px;
      padding: 15px;
      border: 1px solid #dbe7e2;
      border-radius: 14px;
      background: #fff;
      box-shadow: 0 4px 12px rgba(28, 62, 53, 0.05);
    }
    .medical-review-card-heading {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 10px;
    }
    .medical-review-card h5 { margin: 7px 0 0; font-size: 1rem; color: #17362f; }
    .medical-review-card p { margin: 6px 0 0; color: #46635b; line-height: 1.45; }
    .medical-review-source { color: var(--muted-text); font-size: 0.78rem; text-align: right; }
    .medical-review-resolution {
      display: flex;
      flex-direction: column;
      justify-content: center;
      gap: 8px;
      padding-left: 16px;
      border-left: 1px solid #e1e9e6;
    }
    .medical-review-resolution label { font-weight: 700; color: #284b42; }
    .medical-review-resolution .import-match-select { width: 100%; min-width: 0; }
    .compact-empty-state { padding: 18px; }
    @media (max-width: 900px) {
      .medical-review-card { grid-template-columns: 1fr; }
      .medical-review-resolution { padding: 14px 0 0; border-left: 0; border-top: 1px solid #e1e9e6; }
      .medical-review-card-heading { flex-direction: column; }
      .medical-review-source { text-align: left; }
    }
    .medical-import-table { min-width: 1260px; }
    .medical-import-table .import-match-select { min-width: 270px; max-width: 390px; }
    .constituent-list-segment-line { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; margin-top: 7px; }


    /* Medical-intake correction and relinking workspace */
    .medical-correction-workspace {
      display: grid;
      gap: 14px;
      margin: 18px 0;
      padding: 18px;
      border: 1px solid #d9e6e1;
      border-radius: 16px;
      background: #fbfdfc;
    }

    .medical-correction-toolbar {
      display: grid;
      grid-template-columns: minmax(180px, 240px) minmax(0, 1fr);
      align-items: center;
      gap: 12px;
    }

    .medical-correction-toolbar label {
      color: #284b42;
      font-weight: 700;
    }

    .medical-correction-card-list { display: grid; gap: 12px; }

    .medical-correction-card {
      border: 1px solid #dce7e3;
      border-radius: 14px;
      background: #fff;
      overflow: hidden;
    }

    .medical-correction-summary {
      display: grid;
      grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr) auto;
      align-items: center;
      gap: 16px;
      padding: 14px 16px;
    }

    .medical-correction-summary h5 { margin: 0 0 5px; color: #17362f; font-size: 1rem; }
    .medical-correction-summary p { margin: 0; color: #516b64; line-height: 1.4; }
    .medical-correction-meta { color: var(--muted-text); font-size: 0.78rem; }
    .medical-correction-link { color: #284b42; font-weight: 700; }

    .medical-correction-form {
      display: grid;
      gap: 14px;
      padding: 16px;
      border-top: 1px solid #e2ebe7;
      background: #f8fbfa;
    }

    .medical-correction-grid {
      display: grid;
      grid-template-columns: repeat(4, minmax(0, 1fr));
      gap: 12px;
    }

    .medical-correction-grid .form-group { margin: 0; min-width: 0; }
    .medical-correction-grid .span-2 { grid-column: span 2; }
    .medical-correction-grid .span-4 { grid-column: 1 / -1; }
    .medical-correction-grid input,
    .medical-correction-grid select,
    .medical-correction-grid textarea { width: 100%; min-width: 0; }

    .medical-correction-key-note {
      margin: 0;
      padding: 9px 11px;
      border-radius: 10px;
      background: #eef5f2;
      color: #526d65;
      font-size: 0.78rem;
      line-height: 1.4;
    }

    .medical-correction-history {
      display: grid;
      gap: 7px;
      padding: 0 16px 14px;
    }

    .medical-correction-history strong { color: #284b42; font-size: 0.8rem; }
    .medical-correction-history-entry {
      padding: 9px 11px;
      border-left: 3px solid #a8c8bc;
      border-radius: 0 8px 8px 0;
      background: #f7faf9;
      color: #506860;
      font-size: 0.77rem;
      line-height: 1.4;
    }

    @media (max-width: 900px) {
      .medical-correction-summary { grid-template-columns: 1fr; }
      .medical-correction-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .medical-correction-grid .span-4 { grid-column: 1 / -1; }
      .medical-correction-toolbar { grid-template-columns: 1fr; }
    }

    @media (max-width: 620px) {
      .medical-correction-grid { grid-template-columns: 1fr; }
      .medical-correction-grid .span-2,
      .medical-correction-grid .span-4 { grid-column: auto; }
    }


    /* Medical CSV import management */
    .medical-import-management,
    .medical-import-history {
      margin: 18px 0;
      padding: 18px;
      border: 1px solid #d8e7e2;
      border-radius: 16px;
      background: #fbfdfc;
    }

    .medical-import-source-grid { margin-top: 16px; }

    .medical-column-mapping-panel {
      margin-top: 14px;
      border: 1px solid #dfe9e6;
      border-radius: 13px;
      background: #fff;
    }

    .medical-column-mapping-panel > summary {
      cursor: pointer;
      padding: 13px 15px;
      color: #244b41;
      font-weight: 800;
    }

    .medical-mapping-save-row {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: end;
      gap: 12px;
      padding: 0 15px 14px;
    }

    .medical-mapping-save-row .form-group { margin: 0; }

    .medical-column-mapping-grid {
      display: grid;
      grid-template-columns: repeat(3, minmax(0, 1fr));
      gap: 12px;
      padding: 15px;
      border-top: 1px solid #e8efed;
      background: #f8fbfa;
    }

    .medical-column-mapping-grid .form-group { min-width: 0; margin: 0; }
    .medical-column-mapping-grid select { width: 100%; min-width: 0; }
    .medical-mapping-important { color: #9a5a12; font-size: 0.68rem; font-weight: 800; text-transform: uppercase; }

    .medical-overlap-warning {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto;
      align-items: center;
      gap: 18px;
      margin-top: 14px;
      padding: 13px 15px;
      border: 1px solid #e5bd78;
      border-radius: 13px;
      background: #fff8e9;
      color: #684410;
    }

    .medical-overlap-warning strong,
    .medical-overlap-warning span { display: block; }
    .medical-overlap-warning span { margin-top: 3px; font-size: 0.82rem; line-height: 1.4; }
    .medical-overlap-warning label { display: flex; align-items: center; gap: 8px; max-width: 270px; font-size: 0.82rem; font-weight: 750; }

    .medical-import-summary-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 14px;
      margin-top: 14px;
    }

    .medical-import-history-list { display: grid; gap: 10px; margin-top: 14px; }

    .medical-import-history-card {
      display: grid;
      grid-template-columns: minmax(0, 1.4fr) minmax(260px, 0.8fr) auto;
      align-items: center;
      gap: 16px;
      padding: 14px;
      border: 1px solid #dde8e5;
      border-radius: 13px;
      background: #fff;
    }

    .medical-import-history-title { display: flex; align-items: center; gap: 8px; }
    .medical-import-history-card p { margin: 5px 0 2px; color: #46635b; font-size: 0.82rem; }
    .medical-import-history-card small { color: var(--muted-text); }
    .medical-import-history-metrics { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 12px; }
    .medical-import-history-metrics span { color: #526d65; font-size: 0.78rem; }
    .medical-import-history-metrics strong { color: #244b41; }

    @media (max-width: 950px) {
      .medical-column-mapping-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .medical-import-history-card { grid-template-columns: 1fr; }
      .medical-import-history-metrics { grid-template-columns: repeat(4, minmax(0, 1fr)); }
      .medical-overlap-warning { grid-template-columns: 1fr; }
    }

    @media (max-width: 650px) {
      .medical-column-mapping-grid,
      .medical-mapping-save-row { grid-template-columns: 1fr; }
      .medical-import-summary-row { align-items: stretch; flex-direction: column; }
      .medical-import-history-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }


/* Google Places mailing-address autocomplete */
.address-autocomplete-host {
  width: 100%;
  min-height: 44px;
}

.address-autocomplete-host .pelipro-address-autocomplete,
.address-autocomplete-host gmp-place-autocomplete {
  display: block;
  width: 100%;
  max-width: 100%;
}

.address-autocomplete-unavailable {
  display: flex;
  align-items: center;
  min-height: 42px;
  padding: 0.65rem 0.8rem;
  border: 1px dashed var(--border-color, #cbd5e1);
  border-radius: 8px;
  color: var(--muted-text, #64748b);
  background: rgba(148, 163, 184, 0.08);
  font-size: 0.9rem;
}

.address-autocomplete-status[data-state="error"] {
  color: var(--danger-color, #b42318);
}

.address-autocomplete-status[data-state="ready"] {
  color: var(--muted-text, #64748b);
}
/* ===== END 40-constituents-and-imports.css ===== */


/* ===== BEGIN 50-data-health-and-responsive.css ===== */
/**
 * PeliPro style source unit.
 * Run `npm run build` after editing; do not edit public/assets/css/app.css directly.
 */
    .historical-edit-grid .span-three { grid-column: 1 / -1; }
    .historical-edit-grid textarea { min-height: 88px; resize: vertical; }
    .historical-edit-validation { min-height: 1.35em; margin: 12px 0 0; }
    @media (max-width: 820px) {
      .historical-edit-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
      .historical-edit-grid .span-three { grid-column: 1 / -1; }
    }
    @media (max-width: 580px) {
      .historical-edit-grid { grid-template-columns: 1fr; }
      .historical-edit-grid .span-two,
      .historical-edit-grid .span-three { grid-column: auto; }
    }
    .cleanup-focus-note {
      display: flex;
      align-items: center;
      gap: 10px;
      margin: 0 0 16px;
      padding: 13px 15px;
      border: 1px solid #d7e4df;
      border-radius: 14px;
      background: #f7faf9;
      color: #385a51;
    }
    .cleanup-focus-note strong { color: #17362f; }
    @media (max-width: 1050px) {
      .historical-mapping-grid { grid-template-columns: repeat(2, minmax(150px, 1fr)); }
    }
    @media (max-width: 650px) {
      .historical-import-intro { grid-template-columns: 1fr; }
      .historical-mapping-grid { grid-template-columns: 1fr; }
    }



    /* Fast, paginated constituent directory */
    .contact-directory-status-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 12px;
      margin-top: 12px;
    }

    .contact-directory-status-row .directory-result-count { margin: 0; }

    .contact-directory-pagination {
      display: flex;
      align-items: center;
      gap: 10px;
    }

    .contact-directory-pagination span {
      min-width: 92px;
      color: var(--text-muted);
      font-size: 13px;
      font-weight: 750;
      text-align: center;
    }

    #contactDirectory.opportunity-list {
      content-visibility: auto;
      contain-intrinsic-size: 1px 900px;
    }

    #contactDirectory .opportunity-card { contain: layout paint style; }

    @media (max-width: 640px) {
      .contact-directory-status-row { align-items: stretch; }
      .contact-directory-pagination { justify-content: space-between; width: 100%; }
    }

    /* Constituent relationship command center */
    .constituent-profile-trigger {
      align-items: center;
      display: inline-flex;
      gap: 7px;
    }

    .constituent-tag-row,
    .constituent-profile-tags {
      display: flex;
      flex-wrap: wrap;
      gap: 7px;
    }

    .constituent-effort-tag {
      align-items: center;
      display: inline-flex;
      gap: 5px;
      max-width: 100%;
      padding: 5px 9px;
      border: 1px solid #cfdcd5;
      border-radius: 999px;
      background: #f4f8f6;
      color: #365247;
      font-size: 12px;
      font-weight: 750;
      line-height: 1.2;
    }

    .constituent-effort-tag b {
      color: var(--primary);
      font-size: 10px;
      letter-spacing: .06em;
      text-transform: uppercase;
    }

    .donor-lifecycle-badge {
      align-items: center;
      display: inline-flex;
      padding: 6px 10px;
      border-radius: 999px;
      font-size: 12px;
      font-weight: 800;
    }

    .donor-lifecycle-badge.recurring { background: #e4f4ea; color: #24613d; }
    .donor-lifecycle-badge.active { background: #e8f0f8; color: #315873; }
    .donor-lifecycle-badge.lapsed { background: #fff1dc; color: #82551c; }
    .donor-lifecycle-badge.reactivated { background: #eee9fb; color: #5a4387; }
    .donor-lifecycle-badge.non-donor { background: #eef1ef; color: #68756e; }

    .relationship-segment-badge {
      align-items: center;
      display: inline-flex;
      padding: 6px 10px;
      border-radius: 999px;
      font-size: 12px;
      font-weight: 800;
      background: #eef1ef;
      color: #50615a;
    }
    .relationship-segment-badge.rescuer-donor { background: #e6f4f0; color: #206354; }
    .relationship-segment-badge.rescuer-non-donor { background: #e8f1f8; color: #315d78; }
    .relationship-segment-badge.donor { background: #f0ecf8; color: #624b83; }
    .relationship-segment-badge.non-donor { background: #f1f2f1; color: #68736e; }

    .constituent-profile-modal {
      width: min(1180px, calc(100vw - 36px));
      max-height: calc(100vh - 36px);
      overflow: hidden;
    }

    .constituent-profile-body {
      display: grid;
      gap: 20px;
      max-height: calc(100vh - 150px);
      overflow-y: auto;
      padding: 22px;
    }

    .constituent-profile-hero {
      display: grid;
      grid-template-columns: minmax(0, 1.5fr) minmax(260px, .75fr);
      gap: 18px;
      align-items: start;
      padding: 20px;
      border: 1px solid var(--border);
      border-radius: 16px;
      background: linear-gradient(135deg, #f8fbf9, #edf5f1);
    }

    .constituent-profile-title-row {
      display: flex;
      align-items: center;
      flex-wrap: wrap;
      gap: 10px;
      margin-bottom: 7px;
    }

    .constituent-profile-title-row h3 {
      margin: 0;
      font-size: clamp(24px, 3vw, 34px);
    }

    .constituent-profile-subtitle {
      margin: 0;
      color: var(--text-muted);
      line-height: 1.5;
    }

    .constituent-profile-actions {
      display: flex;
      justify-content: flex-end;
      flex-wrap: wrap;
      gap: 9px;
    }

    .constituent-profile-summary {
      display: grid;
      grid-template-columns: repeat(5, minmax(0, 1fr));
      gap: 12px;
    }

    .constituent-profile-stat {
      min-width: 0;
      padding: 15px;
      border: 1px solid var(--border);
      border-radius: 13px;
      background: var(--surface);
    }

    .constituent-profile-stat span {
      display: block;
      margin-bottom: 7px;
      color: var(--text-muted);
      font-size: 11px;
      font-weight: 800;
      letter-spacing: .07em;
      text-transform: uppercase;
    }

    .constituent-profile-stat strong {
      display: block;
      overflow-wrap: anywhere;
      font-size: 19px;
    }

    .constituent-profile-stat small {
      display: block;
      margin-top: 5px;
      color: var(--text-muted);
      line-height: 1.35;
    }

    .constituent-profile-grid {
      display: grid;
      grid-template-columns: minmax(0, 1.45fr) minmax(280px, .72fr);
      gap: 20px;
      align-items: start;
    }

    .constituent-profile-panel {
      min-width: 0;
      border: 1px solid var(--border);
      border-radius: 15px;
      background: var(--surface);
      overflow: hidden;
    }

    .constituent-profile-panel-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      flex-wrap: wrap;
      gap: 12px;
      padding: 17px 18px;
      border-bottom: 1px solid var(--border);
      background: var(--surface-muted);
    }

    .constituent-profile-panel-header h4 {
      margin: 0 0 3px;
      font-size: 18px;
    }

    .constituent-profile-panel-header p {
      margin: 0;
      color: var(--text-muted);
      font-size: 13px;
    }

    .constituent-timeline-filters {
      display: flex;
      flex-wrap: wrap;
      gap: 6px;
    }

    .constituent-timeline-filter {
      padding: 7px 10px;
      border: 1px solid var(--border);
      border-radius: 999px;
      background: var(--surface);
      color: var(--text-muted);
      font-size: 12px;
      font-weight: 750;
    }

    .constituent-timeline-filter.active {
      border-color: var(--primary);
      background: var(--primary);
      color: #fff;
    }

    .constituent-timeline {
      display: grid;
      gap: 0;
      padding: 8px 18px 18px;
    }

    .constituent-timeline-item {
      position: relative;
      display: grid;
      grid-template-columns: 22px minmax(0, 1fr);
      gap: 12px;
      padding: 15px 0;
    }

    .constituent-timeline-item:not(:last-child)::after {
      content: "";
      position: absolute;
      top: 36px;
      bottom: -4px;
      left: 10px;
      width: 2px;
      background: #dfe7e2;
    }

    .constituent-timeline-dot {
      position: relative;
      z-index: 1;
      width: 20px;
      height: 20px;
      margin-top: 2px;
      border: 4px solid #e5eee9;
      border-radius: 50%;
      background: var(--primary);
    }

    .constituent-timeline-item.gift .constituent-timeline-dot { background: #327552; }
    .constituent-timeline-item.interaction .constituent-timeline-dot { background: #486e91; }
    .constituent-timeline-item.task .constituent-timeline-dot { background: #91643c; }
    .constituent-timeline-item.rescue .constituent-timeline-dot { background: #2f7f86; }
    .constituent-timeline-item.record .constituent-timeline-dot { background: #777f7b; }

    .constituent-timeline-card {
      min-width: 0;
      padding: 13px 14px;
      border: 1px solid var(--border);
      border-radius: 12px;
      background: #fff;
    }

    .constituent-timeline-heading {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 6px;
    }

    .constituent-timeline-heading strong { font-size: 14px; }
    .constituent-timeline-heading time { color: var(--text-muted); font-size: 12px; white-space: nowrap; }
    .constituent-timeline-card p { margin: 0; color: #44524b; line-height: 1.5; }
    .constituent-timeline-meta { display: flex; flex-wrap: wrap; gap: 6px 12px; margin-top: 8px; color: var(--text-muted); font-size: 12px; }

    .constituent-profile-side {
      display: grid;
      gap: 16px;
    }

    .constituent-side-section {
      padding: 17px;
      border: 1px solid var(--border);
      border-radius: 15px;
      background: var(--surface);
    }

    .constituent-side-section h4 { margin: 0 0 12px; font-size: 17px; }
    .constituent-side-section p { margin: 0; color: var(--text-muted); line-height: 1.45; }

    .constituent-next-step {
      display: grid;
      gap: 7px;
      padding: 12px;
      border: 1px solid #d8e2dc;
      border-radius: 11px;
      background: #f8faf9;
    }

    .constituent-next-step + .constituent-next-step { margin-top: 9px; }
    .constituent-next-step strong { font-size: 14px; }
    .constituent-next-step span { color: var(--text-muted); font-size: 12px; }

    .constituent-fund-table {
      width: 100%;
      border-collapse: collapse;
      font-size: 13px;
    }

    .constituent-fund-table th,
    .constituent-fund-table td {
      padding: 9px 5px;
      border-bottom: 1px solid #e7ece9;
      text-align: left;
      vertical-align: top;
    }

    .constituent-fund-table th:last-child,
    .constituent-fund-table td:last-child { text-align: right; }

    .constituent-owner-editor {
      display: grid;
      gap: 9px;
    }

    .constituent-owner-editor input { width: 100%; }

    @media (max-width: 920px) {
      .constituent-profile-hero,
      .constituent-profile-grid { grid-template-columns: 1fr; }
      .constituent-profile-actions { justify-content: flex-start; }
      .constituent-profile-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    }

    @media (max-width: 560px) {
      .constituent-profile-modal { width: calc(100vw - 16px); max-height: calc(100vh - 16px); }
      .constituent-profile-body { padding: 13px; }
      .constituent-profile-summary { grid-template-columns: 1fr; }
      .constituent-timeline-heading { display: grid; }
    }
/* ===== END 50-data-health-and-responsive.css ===== */
