/* ================================================
   POSITION DETAIL PAGE
   Inline page surface for a single position (replaces the
   position-details modal). Scoped under `.detail-page`; the
   positions-table / page-header chrome and the competency / task /
   tag cell styles come from talent-management.css (.talent-management-page).
   ================================================ */

@layer components {
  .detail-page {
    /* --- Header --- */
    .detail-header {
      align-items: flex-start;
      flex-wrap: wrap;
      gap: var(--space-lg);
    }

    .detail-lede {
      max-inline-size: 64ch;
    }

    .header-title {
      flex: 1 1 480px;
      min-inline-size: 0;
    }

    .header-actions {
      display: flex;
      flex-wrap: wrap;
      gap: var(--space-sm);
      align-items: center;
      flex-shrink: 0;

      .secondary-button {
        transition:
          background 0.15s ease-out,
          border-color 0.15s ease-out,
          transform 0.15s ease-out;

        &:hover {
          transform: translateY(-1px);
        }
      }
    }

    .detail-back-link {
      display: inline-flex;
      align-items: center;
      gap: var(--space-xs);
      margin-block-end: var(--space-md);
      font-size: var(--fs-small);
      text-decoration: none;
      transition: color 0.15s ease-out;

      svg {
        flex-shrink: 0;
      }
    }

    /* Header density is app-wide now (base-local.css); only the lede
       size is page-specific */
    .detail-header .detail-lede {
      font-size: var(--fs-small);
    }

    /* --- Record tabs --- */
    .detail-tabs {
      position: relative;
      z-index: 1;
      display: flex;
      gap: var(--space-xs);
      margin-block-start: var(--space-lg);
      border-block-end: 1px solid transparent;
    }

    .detail-tab {
      font: inherit;
      font-size: var(--fs-small);
      font-weight: var(--fw-medium);
      cursor: pointer;
      padding: var(--space-xs) var(--space-md) var(--space-sm);
      transition:
        color 0.15s ease-out,
        border-color 0.15s ease-out;
    }

    .detail-section[hidden] {
      display: none;
    }

    /* --- Body: main column + sticky record summary --- */
    .detail-body {
      position: relative;
      z-index: 1;
      display: grid;
      grid-template-columns: minmax(0, 1fr) 300px;
      align-items: start;
      gap: var(--space-xl);
      max-inline-size: 1280px;
      margin-block-start: var(--space-xl);
    }

    .detail-main {
      display: flex;
      flex-direction: column;
      gap: var(--space-xl);
      min-inline-size: 0;
    }

    .detail-side {
      position: sticky;
      inset-block-start: var(--space-xl);
      display: flex;
      flex-direction: column;
      gap: var(--space-lg);

      .card {
        padding: var(--space-md);
      }
    }

    /* Read-only brief depth (Overview tab) */
    .brief-list-section {
      margin-block-start: var(--space-lg);
      padding-block-start: var(--space-lg);

      h3 {
        margin-block-end: var(--space-md);
      }
    }

    .brief-list {
      list-style: none;
      margin: 0;
      padding: 0;
      display: flex;
      flex-direction: column;
      gap: var(--space-xs);
    }

    .brief-list-item {
      padding: var(--space-sm) var(--space-md);
      border-radius: 8px;
      font-size: var(--fs-small);
    }

    /* Read-only simulation depth — lives inside the template card, below
       the identity row */
    .sim-info {
      margin-block-start: var(--space-lg);
      padding-block-start: var(--space-lg);

      .sim-info-desc {
        font-size: var(--fs-small);
        line-height: 1.6;
      }

      .sim-info-kv {
        margin-block-start: var(--space-md);
      }

      .sim-skills {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-xs);
        margin-block-start: var(--space-md);
      }
    }

    /* Scoring profile as its own trailing card: the dl's separator
       spacing was designed for sitting under the identity row */
    .template-profile-card .template-profile {
      margin-block-start: 0;
      padding-block-start: 0;
    }

    .task-list-section {
      margin-block-start: var(--space-md);

      h3 {
        margin-block-end: var(--space-md);
      }
    }

    .task-list {
      list-style: none;
      margin: 0;
      padding: 0;
      display: flex;
      flex-direction: column;
      gap: var(--space-sm);
      counter-reset: task;
    }

    .task-row {
      padding: var(--space-sm) var(--space-md);
      border-radius: 8px;

      .task-row-head {
        display: flex;
        align-items: center;
        gap: var(--space-sm);
        flex-wrap: wrap;

        strong {
          font-size: var(--fs-small);

          &::before {
            counter-increment: task;
            content: counter(task) '. ';
          }
        }
      }

      .task-row-kind {
        font-size: var(--fs-xsmall);

        &:empty {
          display: none;
        }
      }

      .task-row-desc {
        margin-block-start: var(--space-2xs);
        font-size: var(--fs-xsmall);
        line-height: 1.5;
      }
    }

    /* Evaluation criteria tab */
    .criteria-group {
      margin-block-end: var(--space-lg);

      h3 {
        margin-block-end: var(--space-md);
      }
    }

    .criteria-items {
      display: flex;
      flex-direction: column;
      gap: var(--space-md);
    }

    .criterion {
      padding: var(--space-sm) var(--space-md);
      border-radius: 8px;

      .criterion-head {
        display: flex;
        align-items: baseline;
        gap: var(--space-sm);
        flex-wrap: wrap;

        strong {
          font-size: var(--fs-small);
        }
      }

      .criterion-meta {
        font-size: var(--fs-xsmall);
      }

      .criterion-desc {
        margin-block-start: var(--space-2xs);
        font-size: var(--fs-xsmall);
        line-height: 1.5;
      }

      .criterion-questions {
        list-style: none;
        margin: var(--space-sm) 0 0;
        padding: 0;
        display: flex;
        flex-direction: column;
        gap: var(--space-xs);

        &:empty {
          display: none;
        }
      }

      .criterion-question {
        display: grid;
        grid-template-columns: max-content minmax(0, 1fr);
        gap: var(--space-sm);
        align-items: baseline;
        font-size: var(--fs-xsmall);
        line-height: 1.5;
      }

      .cq-weight {
        font-variant-numeric: tabular-nums;
      }
    }

    .criteria-empty {
      font-size: var(--fs-small);
    }

    .activity-list {
      list-style: none;
      margin: 0;
      padding: 0;
      display: flex;
      flex-direction: column;
      gap: var(--space-sm);
      font-size: var(--fs-small);
    }

    .activity-item {
      display: grid;
      /* max-content so prior-year dates ("Jun 8, 2025") don't overflow */
      grid-template-columns: minmax(3.5em, max-content) minmax(0, 1fr);
      gap: var(--space-sm);
      align-items: baseline;
    }

    .activity-item--empty {
      display: block;
    }

    .activity-when {
      font-size: var(--fs-xsmall);
      white-space: nowrap;
    }

    .side-kv {
      display: grid;
      grid-template-columns: auto minmax(0, 1fr);
      gap: var(--space-sm) var(--space-md);
      margin: 0;
      font-size: var(--fs-small);

      dt {
        font-weight: var(--fw-medium);
      }

      dd {
        margin: 0;
        min-inline-size: 0;
        overflow-wrap: anywhere;
      }

      .status-badge:empty {
        display: none;
      }
    }

    @media (max-width: 1100px) {
      .detail-body {
        grid-template-columns: 1fr;
      }

      .detail-side {
        position: static;
      }
    }

    .section-head {
      display: flex;
      align-items: center;
      gap: var(--space-sm);
      margin-block-end: var(--space-md);

      h2 {
        /* --fs-body, not --fs-base: the latter never existed as a token
           (the old value silently fell back to inherited size) */
        font-size: var(--fs-body);
        margin: 0;
      }

      .section-head-action {
        margin-inline-start: auto;
        font-size: var(--fs-xsmall);
        padding: var(--space-2xs) var(--space-md);
      }

      .section-icon {
        display: inline-flex;
        justify-content: center;
        align-items: center;
        inline-size: 28px;
        block-size: 28px;
        border-radius: 8px;
      }
    }

    .detail-footer {
      .footer-meta {
        font-size: var(--fs-xsmall);
      }
    }

    /* --- Cards --- */
    .card {
      padding: var(--space-lg);
      border-radius: 12px;
    }

    .overview-text {
      line-height: 1.55;
    }

    .must-haves {
      margin-block-start: var(--space-lg);
      padding-block-start: var(--space-lg);

      h3 {
        font-size: var(--fs-small);
        margin-block-end: var(--space-md);
      }

      .must-haves-list {
        display: flex;
        flex-direction: column;
        gap: var(--space-sm);
      }

      .must-have-item {
        display: flex;
        align-items: center;
        gap: var(--space-sm);
        padding: var(--space-sm) var(--space-md);
        border-radius: 10px;
        font-size: var(--fs-small);

        svg {
          flex-shrink: 0;
        }
      }
    }

    /* --- Assessment template (clickable card → simulation editor) --- */
    /* No hover affordance: the card itself is no longer a link — only
       the inner Edit action is */
    .template-card {
      display: block;
    }

    .template-info {
      display: flex;
      align-items: center;
      flex-wrap: wrap;
      gap: var(--space-md);

      .status-badge {
        padding: var(--space-3xs) var(--space-sm);
        border-radius: 100px;
        font-size: var(--fs-xsmall);
      }

      .template-version {
        font-size: var(--fs-xsmall);
      }

      .template-edit-hint {
        display: inline-flex;
        align-items: center;
        gap: var(--space-3xs);
        margin-inline-start: auto;
        font-size: var(--fs-xsmall);
        font-weight: var(--fw-medium);

        svg {
          flex-shrink: 0;
        }
      }
    }

    .template-profile {
      display: grid;
      gap: var(--space-lg);
      grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
      margin: 0;
      margin-block-start: var(--space-lg);
      padding-block-start: var(--space-lg);

      .profile-group {
        dt {
          font-size: var(--fs-xsmall);
          font-weight: var(--fw-medium);
          text-transform: uppercase;
          letter-spacing: 0.06em;
          margin-block-end: var(--space-sm);
        }

        dd {
          margin: 0;
        }
      }
    }

    /* --- Add candidates form --- */
    .candidates-form {
      padding: var(--space-lg);
      border-radius: 12px;
    }

    .add-mode-toggle {
      display: inline-flex;
      gap: var(--space-3xs);
      padding: var(--space-3xs);
      border-radius: 10px;
      margin-block-end: var(--space-md);
    }

    .add-mode-tab {
      padding: var(--space-xs) var(--space-md);
      border: none;
      border-radius: 8px;
      background: transparent;
      cursor: pointer;
      font-size: var(--fs-small);
      font-weight: 500;
      transition: all 0.15s ease-out;
    }

    /* Each mode pane hides via the `hidden` attribute; guard display so a bare
       rule can't override [hidden]. */
    .add-mode-panel:not([hidden]) {
      display: flex;
      flex-direction: column;
      gap: var(--space-sm);
    }

    .invitation-window {
      display: grid;
      gap: var(--space-md);
      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
      margin-block-end: var(--space-lg);
      padding-block-end: var(--space-md);
      border-block-end: 1px solid oklch(from var(--glass-tint) l c h / 0.08);
    }

    .candidates-list {
      display: flex;
      flex-direction: column;
      gap: var(--space-lg);
      margin-block-end: var(--space-lg);
    }

    .candidate-row {
      display: flex;
      gap: var(--space-md);
      align-items: flex-start;

      .candidate-fields {
        flex: 1;
        display: grid;
        gap: var(--space-md);
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
      }

      .remove-candidate-btn {
        margin-block-start: calc(var(--fs-small) + var(--space-xs) + var(--space-sm));
      }
    }

    .field-group {
      display: flex;
      flex-direction: column;
      gap: var(--space-xs);

      label {
        font-size: var(--fs-small);
        font-weight: var(--fw-medium);
      }

      input {
        padding: var(--space-sm) var(--space-md);
        border-radius: 10px;
        font-size: var(--fs-small);
      }
    }

    .error-banner {
      padding: var(--space-md);
      border-radius: 10px;
      font-size: var(--fs-small);
      margin-block-end: var(--space-lg);
    }

    .form-actions {
      display: flex;
      gap: var(--space-md);
      flex-wrap: wrap;

      .secondary-button {
        flex: 0 0 auto;
      }

      .primary-button {
        flex: 1;
      }
    }

    /* --- Corpus search / suggestions --- */
    .corpus-search {
      display: flex;
      gap: var(--space-sm);

      input {
        flex: 1;
        min-inline-size: 0;
      }
    }

    .corpus-subhead {
      font-size: var(--fs-small);
      font-weight: 600;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      margin-block-end: var(--space-xs);
    }

    /* The "Matches" subhead opens the results section — a top rule + extra
       space separates it from the invitation-window inputs above. */
    .corpus-subhead--matches {
      margin-block-start: var(--space-md);
      padding-block-start: var(--space-md);
      border-block-start: 1px solid transparent;
    }

    .corpus-subhint {
      font-size: var(--fs-small);
      margin-block-end: var(--space-sm);
    }

    .corpus-status {
      padding: var(--space-md);
      text-align: center;
      font-size: var(--fs-small);
    }

    .corpus-results {
      display: flex;
      flex-direction: column;
      gap: var(--space-sm);
    }

    .corpus-card {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: var(--space-md);
      padding: var(--space-md);
      border: 1px solid transparent;
      border-radius: 12px;

      .corpus-card-main {
        flex: 1;
        min-inline-size: 0;
      }

      .corpus-card-name {
        display: flex;
        align-items: center;
        gap: var(--space-sm);
        font-weight: 600;
      }

      .corpus-card-meta {
        font-size: var(--fs-small);
        margin-block-start: var(--space-3xs);
      }

      .corpus-card-blurb {
        font-size: var(--fs-small);
        font-style: italic;
        margin-block-start: var(--space-xs);
      }

      .corpus-skills {
        display: flex;
        flex-wrap: wrap;
        gap: var(--space-3xs);
        margin-block-start: var(--space-xs);
      }

      .corpus-skill-chip {
        padding: var(--space-3xs) var(--space-xs);
        border-radius: 999px;
        font-size: var(--fs-xsmall);
      }

      .corpus-invite-btn {
        flex: 0 0 auto;
        white-space: nowrap;
      }
    }

    /* --- Success --- */
    .success-overlay {
      &[hidden] {
        display: none;
      }

      &:not([hidden]) {
        display: flex;
        align-items: center;
        justify-content: center;
        min-block-size: 220px;
      }
    }

    .success-content {
      text-align: center;

      .success-icon {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        inline-size: 80px;
        block-size: 80px;
        border-radius: 50%;
        margin-block-end: var(--space-lg);
      }

      h3 {
        font-size: var(--fs-lg);
        margin-block-end: var(--space-sm);
      }
    }

    /* --- Buttons --- */
    .icon-button {
      display: flex;
      align-items: center;
      justify-content: center;
      padding: var(--space-sm);
      background: transparent;
      border-radius: 10px;
      cursor: pointer;
      line-height: 1;
      transition: all 0.2s ease-out;
    }

    /* --- Sent invitations table --- */
    .sent-invitations {
      margin-block-start: var(--space-xl);
      padding-block-start: var(--space-lg);
      border-block-start: 1px solid oklch(from var(--glass-tint) l c h / 0.08);

      .sent-invitations-head {
        font-size: var(--fs-small);
        font-weight: var(--fw-medium);
        margin-block-end: var(--space-md);
      }
    }

    .sent-invitations-empty {
      font-size: var(--fs-small);
    }

    .invitations-table {
      width: 100%;
      border-collapse: collapse;
      font-size: var(--fs-small);

      th,
      td {
        text-align: start;
        padding: var(--space-sm) var(--space-md);
        vertical-align: top;
      }

      th {
        font-weight: var(--fw-medium);
        font-size: var(--fs-xsmall);
      }

      .invite-candidate-cell {
        .invite-name {
          display: block;
          font-weight: var(--fw-medium);
        }

        .invite-email {
          display: block;
          font-size: var(--fs-xsmall);
        }
      }

      .invite-actions-cell {
        display: flex;
        gap: var(--space-sm);
        flex-wrap: wrap;
      }
    }

    .invite-status-pill {
      display: inline-block;
      padding: 2px var(--space-sm);
      border-radius: 999px;
      font-size: var(--fs-xsmall);
      font-weight: var(--fw-medium);
    }

    .invite-window-input {
      padding: var(--space-xs) var(--space-sm);
      border-radius: 8px;
      font-size: var(--fs-small);
    }

    .link-button {
      padding: 0;
      border: none;
      background: none;
      font-size: var(--fs-small);
      font-weight: var(--fw-medium);
      cursor: pointer;

      &:disabled {
        cursor: default;
        opacity: 0.5;
      }
    }

    /* --- Entrance --- */
    .detail-section {
      animation: entrance-slide-up 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
    }
  }
}

/* ================================================
   THEME
   ================================================ */
@layer theme {
  .detail-page {
    /* Header actions: solid surfaces with a hover lift so they read as
       buttons, not as metadata chips */
    .header-actions {
      .secondary-button {
        background: light-dark(oklch(0% 0 0 / 0.05), oklch(100% 0 0 / 0.07));
        border-color: light-dark(oklch(0% 0 0 / 0.15), oklch(100% 0 0 / 0.18));
        color: var(--text-primary);

        &:hover {
          background: light-dark(
            oklch(from var(--accent-primary) l c h / 0.1),
            oklch(from var(--accent-primary) l c h / 0.15)
          );
          border-color: light-dark(
            oklch(from var(--accent-primary) l c h / 0.35),
            oklch(from var(--accent-primary) l c h / 0.45)
          );
        }
      }
    }

    .section-head {
      .section-icon {
        background: light-dark(oklch(0% 0 0 / 0.03), oklch(100% 0 0 / 0.05));
        color: var(--accent-primary);
      }
    }

    .detail-footer .footer-meta {
      color: var(--text-secondary);
    }

    .detail-tabs {
      border-block-end-color: oklch(from var(--glass-tint) l c h / 0.08);
    }

    .detail-tab {
      background: none;
      border: none;
      /* Underline marker; transparent when inactive so tabs don't shift */
      border-block-end: 2px solid transparent;
      color: var(--text-secondary);

      &:hover {
        color: var(--text-primary);
      }

      &.is-active {
        color: var(--text-primary);
        border-block-end-color: var(--accent-primary);
      }
    }

    .side-kv {
      dt {
        color: var(--text-secondary);
      }

      #detail-updated-date {
        color: var(--text-secondary);
      }
    }

    .activity-when,
    .activity-item--empty {
      color: var(--text-secondary);
    }

    .brief-list-section,
    .sim-info {
      border-block-start: 1px solid oklch(from var(--glass-tint) l c h / 0.06);
    }

    .brief-list-item,
    .task-row,
    .criterion {
      background: light-dark(oklch(0% 0 0 / 0.02), oklch(100% 0 0 / 0.03));
    }

    /* Markdown bold inside brief lists — same accent as the overview text */
    .brief-list-item strong {
      color: var(--accent-primary);
      font-weight: 600;
    }

    .sim-info-desc,
    .task-row-desc,
    .task-row-kind,
    .criterion-meta,
    .criterion-desc,
    .cq-weight,
    .criteria-empty {
      color: var(--text-secondary);
    }

    .detail-back-link {
      color: var(--text-secondary);

      &:hover {
        color: var(--accent-primary);
      }
    }

    /* Markdown-rendered AI content: bold text in description/lede */
    .overview-text strong,
    .detail-lede strong {
      color: var(--accent-primary);
      font-weight: 600;
    }

    .card {
      background: light-dark(oklch(0% 0 0 / 0.02), oklch(100% 0 0 / 0.03));
      border: 1px solid oklch(from var(--glass-tint) l c h / 0.06);
    }

    .must-haves {
      border-block-start: 1px solid oklch(from var(--glass-tint) l c h / 0.06);
    }

    .must-have-item {
      background: light-dark(oklch(0% 0 0 / 0.02), oklch(100% 0 0 / 0.03));
      border: 1px solid oklch(from var(--glass-tint) l c h / 0.06);
      transition: all 0.15s ease-out;

      svg {
        color: var(--color-success);
      }

      &:hover {
        border-color: light-dark(
          oklch(from var(--color-success) l c h / 0.2),
          oklch(from var(--color-success) l c h / 0.25)
        );
      }
    }

    .template-info {
      .status-badge {
        background: light-dark(
          oklch(from var(--color-success) l c h / 0.08),
          oklch(from var(--color-success) l c h / 0.12)
        );
        border: 1px solid
          light-dark(
            oklch(from var(--color-success) l c h / 0.2),
            oklch(from var(--color-success) l c h / 0.25)
          );
        color: var(--color-success);
      }

      .template-version {
        color: var(--text-secondary);
      }

      .template-edit-hint {
        color: var(--accent-primary);
      }
    }

    .template-profile {
      border-block-start: 1px solid oklch(from var(--glass-tint) l c h / 0.06);

      .profile-group dt {
        color: var(--text-secondary);
      }
    }

    /* Standalone card: the dl's identity-row separator doesn't apply.
       Must live in the theme layer — that's where the border is set,
       and theme outranks components. */
    .template-profile-card .template-profile {
      border-block-start: none;
    }

    .candidates-form {
      background: light-dark(oklch(0% 0 0 / 0.02), oklch(100% 0 0 / 0.03));
      border: 1px solid oklch(from var(--glass-tint) l c h / 0.06);
    }

    .field-group input {
      background: light-dark(oklch(100% 0 0), oklch(100% 0 0 / 0.04));
      border: 1px solid light-dark(oklch(0% 0 0 / 0.1), oklch(100% 0 0 / 0.08));
      color: var(--text-primary);
      transition: all 0.15s ease-out;

      &::placeholder {
        color: var(--text-secondary);
      }

      &:focus {
        outline: none;
        border-color: light-dark(
          oklch(from var(--accent-primary) l c h / 0.4),
          oklch(from var(--accent-primary) l c h / 0.5)
        );
        box-shadow: 0 0 0 3px
          light-dark(
            oklch(from var(--accent-primary) l c h / 0.1),
            oklch(from var(--accent-primary) l c h / 0.15)
          );
      }
    }

    .error-banner {
      background: light-dark(
        oklch(from var(--color-error) l c h / 0.06),
        oklch(from var(--color-error) l c h / 0.08)
      );
      border: 1px solid
        light-dark(
          oklch(from var(--color-error) l c h / 0.15),
          oklch(from var(--color-error) l c h / 0.2)
        );
      color: var(--color-error);
    }

    .success-content {
      .success-icon {
        background: light-dark(
          oklch(from var(--color-success) l c h / 0.08),
          oklch(from var(--color-success) l c h / 0.12)
        );
        border: 1px solid
          light-dark(
            oklch(from var(--color-success) l c h / 0.2),
            oklch(from var(--color-success) l c h / 0.25)
          );
        color: var(--color-success);
      }

      p {
        color: var(--text-secondary);
      }
    }

    .icon-button {
      border: 1px solid oklch(from var(--glass-tint) l c h / 0.08);
      color: var(--text-primary);

      &:hover {
        background: light-dark(oklch(0% 0 0 / 0.04), oklch(100% 0 0 / 0.06));
        border-color: oklch(from var(--glass-tint) l c h / 0.12);
      }
    }

    .add-mode-toggle {
      background: light-dark(oklch(0% 0 0 / 0.03), oklch(100% 0 0 / 0.04));
      border: 1px solid oklch(from var(--glass-tint) l c h / 0.06);
    }

    .add-mode-tab {
      color: var(--text-secondary);

      &.is-active {
        background: var(--surface-elevated);
        color: var(--text-primary);
      }
    }

    .corpus-search input {
      background: light-dark(oklch(0% 0 0 / 0.02), oklch(100% 0 0 / 0.03));
      border: 1px solid oklch(from var(--glass-tint) l c h / 0.08);
      border-radius: 8px;
      padding: var(--space-xs) var(--space-sm);
      color: var(--text-primary);
    }

    .corpus-status {
      color: var(--text-secondary);
    }

    .corpus-subhead {
      color: var(--accent-primary);
    }

    .corpus-subhead--matches {
      border-block-start-color: oklch(from var(--glass-tint) l c h / 0.08);
    }

    .corpus-subhint {
      color: var(--text-secondary);
    }

    .corpus-card {
      background: light-dark(oklch(0% 0 0 / 0.02), oklch(100% 0 0 / 0.03));
      border-color: oklch(from var(--glass-tint) l c h / 0.06);

      &:hover {
        border-color: oklch(from var(--accent-primary) l c h / 0.25);
      }

      .corpus-card-rank {
        color: var(--accent-primary);
      }

      .corpus-card-meta {
        color: var(--text-secondary);
      }

      .corpus-card-blurb {
        color: var(--accent-primary);
      }

      .corpus-skill-chip {
        background: oklch(from var(--glass-tint) l c h / 0.08);
        color: var(--text-secondary);
      }
    }

    /* --- Sent invitations table --- */
    .sent-invitations-empty {
      color: var(--text-secondary);
    }

    .invitations-table {
      th {
        color: var(--text-secondary);
      }

      th,
      td {
        border-block-end: 1px solid oklch(from var(--glass-tint) l c h / 0.06);
      }

      .invite-email {
        color: var(--text-secondary);
      }
    }

    .invite-status-pill {
      background: oklch(from var(--glass-tint) l c h / 0.1);
      color: var(--text-secondary);

      &.invite-status-pill--invited,
      &.invite-status-pill--started {
        background: oklch(from var(--accent-primary) l c h / 0.12);
        color: var(--accent-primary);
      }

      &.invite-status-pill--submitted,
      &.invite-status-pill--scored {
        background: oklch(from var(--color-success) l c h / 0.14);
        color: var(--color-success);
      }

      &.invite-status-pill--expired,
      &.invite-status-pill--retake-required,
      &.invite-status-pill--revoked {
        background: oklch(from var(--color-error) l c h / 0.1);
        color: var(--color-error);
      }
    }

    .invite-window-input {
      background: light-dark(oklch(0% 0 0 / 0.02), oklch(100% 0 0 / 0.03));
      border: 1px solid oklch(from var(--glass-tint) l c h / 0.15);
      color: var(--text-primary);
    }

    .link-button {
      color: var(--accent-primary);

      &:hover {
        text-decoration: underline;
      }

      &.link-button--danger {
        color: var(--color-error);
      }
    }
  }
}

/* ================================================
   PRINT — "Download PDF" renders the overview as a
   clean job description on a white page
   ================================================ */
@layer overrides {
  @media print {
    nav.navbar,
    .detail-page .page-bg,
    .detail-page .detail-back-link,
    .detail-page .header-actions,
    .detail-page .detail-tabs,
    .detail-page .detail-side,
    .detail-page .section-head .section-icon,
    .detail-page .section-head-action {
      display: none !important;
    }

    html,
    body {
      background: white !important;
    }

    #main-content {
      margin-inline-start: 0 !important;
      padding: 0 !important;
    }

    /* Print the overview regardless of which tab is active; never the
       template/candidates panels */
    .detail-page [data-detail-tab] {
      display: none !important;
    }

    .detail-page .overview-section {
      display: block !important;
    }

    .detail-page .detail-body {
      display: block;
      max-inline-size: none;
      margin-block-start: 0;
    }

    /* Dark-theme tokens would print near-white text on white paper */
    .detail-page,
    .detail-page * {
      color: oklch(15% 0 0) !important;
    }

    .detail-page .overview-text strong,
    .detail-page .detail-lede strong {
      color: oklch(35% 0.12 270) !important;
    }

    .detail-page .card,
    .detail-page .must-have-item,
    .detail-page .brief-list-item {
      background: none !important;
      border-color: oklch(80% 0 0) !important;
      box-shadow: none !important;
    }
  }
}
