/* ============================================================
   Deal Detail (case detail) page.
   Structure in @layer layout, paint in @layer design. Content-named
   classes only — no legacy/appearance names, no hardcoded color.
   Reuses .app-screen and .btn/.btn--outline/.btn--primary from elements.css.

   DESK page: prosecutors / coaches / case managers read this under the
   default light .app-screen palette; the participant variant rebinds only
   --t-* tokens via the citizen theme, so the same markup reskins. This
   stylesheet only references --t-* semantic tokens, which app/theme.css
   rebinds per theme, so the page reskins without any role-specific color
   rules here. The assign-coach / add-note / transition dialogs carry the
   .app-screen .deal-detail root classes so the same --t-* tokens resolve
   when they are appended to <body>. See docs/FRONTEND-ARCHITECTURE.md.
   ============================================================ */

@layer layout {
  /* Page rhythm: the detail stacks back-link, summary, facts, then the
     main/aside two-up grid. */
  .deal-detail { display: grid; gap: var(--mea-space-5); align-content: start; }
  .deal-detail__back { display: inline-block; justify-self: start;
                       cursor: pointer; text-decoration: none; }

  /* Case-summary header: avatar beside heading, actions trailing. */
  .deal-summary { display: grid; grid-template-columns: auto 1fr auto;
                  gap: var(--mea-space-4); align-items: center;
                  padding: var(--mea-space-5); border-radius: var(--mea-radius-xl); }
  .deal-summary__avatar { display: inline-flex; align-items: center; justify-content: center;
                          inline-size: 3rem; block-size: 3rem; flex-shrink: 0;
                          border-radius: var(--mea-radius-circle); }
  .deal-summary__heading { display: grid; gap: var(--mea-space-2); min-inline-size: 0; }
  .deal-summary__name, .deal-summary__meta, .deal-summary__status { margin: 0; }
  .deal-summary__actions { display: flex; flex-wrap: wrap; gap: var(--mea-space-2);
                           justify-content: flex-end; }

  /* Participant variant: hero photo spans the top, heading + supervisor stack. */
  .deal-summary--participant { grid-template-columns: 1fr; padding: 0; overflow: hidden; }
  .deal-summary--participant .deal-summary__heading { padding: var(--mea-space-5); }
  .deal-hero-photo { block-size: 8rem; background-size: cover; background-position: center;
                     display: flex; align-items: flex-end; }
  .deal-hero-photo__overlay { display: grid; gap: var(--mea-space-1); padding: var(--mea-space-5); }
  .deal-hero-photo__eyebrow, .deal-hero-photo__program { margin: 0; }
  .deal-supervisor { display: grid; grid-template-columns: auto 1fr auto; align-items: center;
                     gap: var(--mea-space-3); margin: var(--mea-space-5);
                     padding: var(--mea-space-4); border-radius: var(--mea-radius-lg); }
  .deal-supervisor__avatar { display: inline-flex; align-items: center; justify-content: center;
                             inline-size: 2.25rem; block-size: 2.25rem; flex-shrink: 0;
                             border-radius: var(--mea-radius-circle); }
  .deal-supervisor__detail { display: grid; gap: var(--mea-space-1); min-inline-size: 0; }
  .deal-supervisor__name, .deal-supervisor__role { margin: 0; }
  .deal-supervisor__action { flex-shrink: 0; text-decoration: none; white-space: nowrap; }

  @container (max-width: 32rem) {
    .deal-summary { grid-template-columns: auto 1fr; }
    .deal-summary__actions { grid-column: 1 / -1; justify-content: flex-start; }
  }

  /* Case facts: a label/value definition grid. */
  .deal-facts { display: grid; grid-template-columns: repeat(3, 1fr);
                gap: var(--mea-space-4); margin: 0; padding: var(--mea-space-5);
                border-radius: var(--mea-radius-xl); }
  .deal-fact { display: grid; gap: var(--mea-space-1); min-inline-size: 0; }
  .deal-fact__label, .deal-fact__value { margin: 0; }
  .deal-charge { display: inline-block; padding: var(--mea-space-1) var(--mea-space-3);
                 border-radius: var(--mea-radius-pill); }
  @container (max-width: 40rem) { .deal-facts { grid-template-columns: repeat(2, 1fr); } }
  @container (max-width: 26rem) { .deal-facts { grid-template-columns: 1fr; } }

  /* Two-up body: main column + sidebar. */
  .deal-detail__layout { display: grid; grid-template-columns: 2fr 1fr; gap: var(--mea-space-5);
                         align-items: start; }
  .deal-detail__main, .deal-detail__aside { display: grid; gap: var(--mea-space-5);
                                             align-content: start; min-inline-size: 0; }
  @container (max-width: 48rem) { .deal-detail__layout { grid-template-columns: 1fr; } }

  /* A card: header (title + optional action/meta) then body. */
  .deal-card { display: grid; gap: 0; border-radius: var(--mea-radius-xl); overflow: hidden;
               align-content: start; }
  .deal-card__header { display: flex; flex-wrap: wrap; align-items: center;
                       gap: var(--mea-space-3); padding: var(--mea-space-4) var(--mea-space-5); }
  .deal-card__title { margin: 0; min-inline-size: 0; }
  .deal-card__meta { margin-inline-start: auto; }
  .deal-card__action { margin-inline-start: auto; }
  .deal-card__body { display: grid; gap: var(--mea-space-4);
                     padding: var(--mea-space-5); min-inline-size: 0; }
  .deal-empty { margin: 0; }

  /* Secondary-source load error fallback (D7). */
  .deal-secondary-load-error { display: grid; gap: var(--mea-space-2); justify-items: start;
                               padding: var(--mea-space-4); border-radius: var(--mea-radius-md); }
  .deal-secondary-load-error__title, .deal-secondary-load-error__body { margin: 0; }

  /* Missions list. */
  .mission-list { display: grid; gap: var(--mea-space-4); margin: 0; padding: 0; list-style: none; }
  .mission { display: grid; grid-template-columns: auto 1fr auto; gap: var(--mea-space-3);
             align-items: center; min-inline-size: 0; }
  .mission__icon { display: inline-flex; align-items: center; justify-content: center;
                   inline-size: 1.75rem; block-size: 1.75rem; flex-shrink: 0;
                   border-radius: var(--mea-radius-circle); }
  .mission__detail { display: grid; gap: var(--mea-space-1); min-inline-size: 0; }
  .mission__name, .mission__sub { margin: 0; }
  .mission__status { flex-shrink: 0; }

  /* Timeline: a dot beside text + timestamp. */
  .deal-timeline { display: grid; gap: var(--mea-space-4); margin: 0; padding: 0; list-style: none; }
  .deal-timeline__event { display: grid; grid-template-columns: auto 1fr;
                          gap: var(--mea-space-3); align-items: start; }
  .deal-timeline__dot { display: inline-flex; align-items: center; justify-content: center;
                        inline-size: 1.75rem; block-size: 1.75rem; flex-shrink: 0;
                        border-radius: var(--mea-radius-circle); }
  .deal-timeline__detail { display: grid; gap: var(--mea-space-1); min-inline-size: 0; }
  .deal-timeline__text, .deal-timeline__time { margin: 0; }

  /* Compliance notes. */
  .deal-note-list { display: grid; gap: var(--mea-space-4); margin: 0; padding: 0; list-style: none; }
  .deal-note { display: grid; gap: var(--mea-space-1); }
  .deal-note__head { display: flex; flex-wrap: wrap; align-items: baseline;
                     justify-content: space-between; gap: var(--mea-space-2); }
  .deal-note__author, .deal-note__time, .deal-note__body { margin: 0; }

  /* Sidebar rules & conditions. */
  .deal-card__body > .deal-rules__group + .deal-rules__group { margin-block-start: var(--mea-space-4); }
  .deal-rules__group { display: grid; gap: var(--mea-space-3); }
  .deal-rules__heading { margin: 0; }
  .deal-rules__list { display: grid; gap: var(--mea-space-3); margin: 0; padding: 0; list-style: none; }
  .deal-rules__item { display: grid; grid-template-columns: auto 1fr; gap: var(--mea-space-3);
                      align-items: start; }
  .deal-rules__icon { flex-shrink: 0; }
  .deal-rules__text { min-inline-size: 0; }
  .deal-elig-link-row { margin: var(--mea-space-3) 0 0; }
  .deal-elig-link { text-decoration: none; }

  /* Sidebar action stack. */
  .deal-actions { gap: var(--mea-space-3); }
  .deal-actions__divider { inline-size: 100%; block-size: 1px; border: 0; margin: var(--mea-space-1) 0; }

  /* Gang-unit alert. */
  .gang-unit-alert { display: grid; gap: 0; border-radius: var(--mea-radius-xl); overflow: hidden; }
  .gang-unit-alert__banner { display: flex; align-items: center; gap: var(--mea-space-2);
                             margin: 0; padding: var(--mea-space-3) var(--mea-space-4); }
  .gang-unit-alert__body { display: grid; gap: var(--mea-space-2); padding: var(--mea-space-4); }
  .gang-unit-alert__row { display: flex; align-items: center; justify-content: space-between;
                          gap: var(--mea-space-3); margin: 0; }
  .gang-threat-badge { display: inline-block; padding: var(--mea-space-1) var(--mea-space-3);
                       border-radius: var(--mea-radius-pill); white-space: nowrap; }
  .gang-unit-alert__note { margin: 0; }

  /* Assign-coach / add-note / transition dialogs. */
  .deal-modal-overlay { position: fixed; inset: 0; display: grid; place-items: center;
                        padding: var(--mea-space-4); z-index: 1000; }
  .deal-modal { display: grid; gap: 0; inline-size: 100%; max-inline-size: 30rem;
                max-block-size: 90vh; overflow-y: auto; border-radius: var(--mea-radius-xl); }
  .deal-modal__header { display: flex; align-items: center; justify-content: space-between;
                        gap: var(--mea-space-3); padding: var(--mea-space-5); }
  .deal-modal__title { margin: 0; min-inline-size: 0; }
  .deal-modal__close { flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center;
                       inline-size: 2rem; block-size: 2rem; padding: 0; border: 0; background: transparent;
                       border-radius: var(--mea-radius-md); cursor: pointer; }
  .deal-modal__body { display: grid; gap: var(--mea-space-4); padding: var(--mea-space-5); }
  .deal-modal__desc { margin: 0; }
  .deal-modal__error { margin: 0; padding: var(--mea-space-3); border-radius: var(--mea-radius-md); }
  .deal-modal__footer { display: flex; flex-wrap: wrap; justify-content: flex-end;
                        gap: var(--mea-space-3); }
  .deal-field { display: grid; gap: var(--mea-space-2); }
  .deal-field__label { margin: 0; }
  .deal-field__control { inline-size: 100%; min-height: var(--t-target-min, 44px);
                         padding: var(--mea-space-2) var(--mea-space-3);
                         border-radius: var(--mea-radius-md); font: inherit; }
  textarea.deal-field__control { min-height: auto; resize: vertical; }

  @container (max-width: 30rem) {
    .deal-modal__footer { flex-direction: column-reverse; align-items: stretch; }
  }
}

@layer design {
  .deal-detail__back { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold);
                       color: var(--t-link); }
  .deal-detail__back:hover { color: var(--t-link-hover); }

  /* Case-summary header. */
  .deal-summary { background: var(--t-card-bg); border: 1px solid var(--t-card-border);
                  box-shadow: var(--mea-shadow-sm); }
  .deal-summary__avatar { background: var(--t-bg-active); color: var(--t-text);
                          font-size: var(--mea-text-lg); font-weight: var(--mea-w-bold); }
  .deal-summary__name { font-family: var(--mea-font-citizen); font-size: var(--mea-text-2xl);
                        font-weight: var(--mea-w-bold); color: var(--t-text); }
  .deal-summary__meta { font-size: var(--mea-text-sm); color: var(--t-text-muted); }
  .deal-summary__meta span { color: var(--t-text-secondary); font-weight: var(--mea-w-semibold); }

  /* Participant variant. */
  .deal-hero-photo { background-color: var(--t-bg-active); }
  .deal-hero-photo--gradient { background-image: linear-gradient(135deg, var(--t-accent), var(--t-accent-hover)); }
  .deal-hero-photo__eyebrow { font-size: var(--mea-text-sm); color: var(--t-accent-text); opacity: .85; }
  .deal-hero-photo__program { font-family: var(--mea-font-citizen); font-size: var(--mea-text-lg);
                              font-weight: var(--mea-w-bold); color: var(--t-accent-text); }
  .deal-supervisor { background: var(--t-bg-recessed); border: 1px solid var(--t-border); }
  .deal-supervisor__avatar { background: var(--t-accent); color: var(--t-accent-text);
                             font-size: var(--mea-text-sm); font-weight: var(--mea-w-bold); }
  .deal-supervisor__name { font-size: var(--mea-text-md); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .deal-supervisor__role { font-size: var(--mea-text-xs); color: var(--t-text-muted); }

  /* Case facts. */
  .deal-facts { background: var(--t-card-bg); border: 1px solid var(--t-card-border);
                box-shadow: var(--mea-shadow-sm); }
  .deal-fact__label { font-size: var(--mea-text-xs); font-weight: var(--mea-w-semibold);
                      color: var(--t-text-muted); text-transform: uppercase;
                      letter-spacing: var(--mea-ls-wide); }
  .deal-fact__value { font-size: var(--mea-text-md); font-weight: var(--mea-w-semibold); color: var(--t-text); }

  /* Charge tag — category modifiers recolour the tag only. */
  .deal-charge { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold);
                 background: var(--t-bg-recessed); color: var(--t-text-secondary); }
  .deal-charge--drug { background: var(--t-accent); color: var(--t-accent-text); }
  .deal-charge--theft { background: var(--t-warning-bg); color: var(--t-warning-text); }
  .deal-charge--property { background: var(--t-bg-active); color: var(--t-text); }
  .deal-charge--conduct { background: var(--t-success-bg); color: var(--t-success-text); }
  .deal-charge--dui { background: var(--t-error-bg); color: var(--t-error-text); }
  .deal-charge--trespass { background: var(--t-bg-active); color: var(--t-text); }
  .deal-charge--assault { background: var(--t-error-bg); color: var(--t-error-text); }

  /* Cards. */
  .deal-card { background: var(--t-card-bg); border: 1px solid var(--t-card-border);
               box-shadow: var(--mea-shadow-sm); }
  .deal-card__header { border-block-end: 1px solid var(--t-border); }
  .deal-card__title { font-family: var(--mea-font-citizen); font-size: var(--mea-text-lg);
                      font-weight: var(--mea-w-bold); color: var(--t-text); }
  .deal-card__meta { font-size: var(--mea-text-sm); color: var(--t-text-muted); }
  .deal-empty { font-size: var(--mea-text-md); color: var(--t-text-muted); }

  /* Secondary-source load error fallback. */
  .deal-secondary-load-error { background: var(--t-error-bg, var(--t-bg-recessed)); }
  .deal-secondary-load-error__title { font-size: var(--mea-text-md); font-weight: var(--mea-w-bold);
                                      color: var(--t-error-text); }
  .deal-secondary-load-error__body { font-size: var(--mea-text-sm); color: var(--t-text-secondary); }

  /* Missions — state modifiers recolour the icon only. */
  .mission__icon { background: var(--t-bg-recessed); color: var(--t-text-muted);
                   font-size: var(--mea-text-sm); font-weight: var(--mea-w-bold); }
  .mission--completed .mission__icon { background: var(--t-success); color: var(--t-accent-text); }
  .mission--active .mission__icon { background: var(--t-accent); color: var(--t-accent-text); }
  .mission--pending .mission__icon { background: var(--t-bg-active); color: var(--t-text-muted); }
  .mission__name { font-size: var(--mea-text-md); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .mission__sub { font-size: var(--mea-text-sm); color: var(--t-text-muted); }

  /* Timeline — colour modifiers recolour the dot only. */
  .deal-timeline__dot { background: var(--t-bg-active); color: var(--t-text);
                        font-size: var(--mea-text-sm); font-weight: var(--mea-w-bold); }
  .deal-timeline__dot--blue { background: var(--t-accent); color: var(--t-accent-text); }
  .deal-timeline__dot--green { background: var(--t-success); color: var(--t-accent-text); }
  .deal-timeline__dot--amber { background: var(--t-warning); color: var(--t-accent-text); }
  .deal-timeline__dot--red { background: var(--t-error); color: var(--t-accent-text); }
  .deal-timeline__text { font-size: var(--mea-text-md); color: var(--t-text); }
  .deal-timeline__time { font-size: var(--mea-text-xs); color: var(--t-text-muted); }

  /* Compliance notes. */
  .deal-note { padding-block-end: var(--mea-space-3); border-block-end: 1px solid var(--t-border); }
  .deal-note-list .deal-note:last-child { padding-block-end: 0; border-block-end: 0; }
  .deal-note__author { font-size: var(--mea-text-md); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .deal-note__time { font-size: var(--mea-text-sm); color: var(--t-text-muted); }
  .deal-note__body { font-size: var(--mea-text-md); color: var(--t-text-secondary);
                     line-height: var(--mea-lh-normal); }

  /* Sidebar rules & conditions. */
  .deal-rules__heading { font-size: var(--mea-text-xs); font-weight: var(--mea-w-bold);
                         color: var(--t-text-muted); text-transform: uppercase;
                         letter-spacing: var(--mea-ls-wide); }
  .deal-rules__icon { font-weight: var(--mea-w-bold); }
  .deal-rules__item--eligibility .deal-rules__icon { color: var(--t-success-text); }
  .deal-rules__item--condition .deal-rules__icon { color: var(--t-warning-text); }
  .deal-rules__item--requirement .deal-rules__icon { color: var(--t-accent); }
  .deal-rules__text { font-size: var(--mea-text-md); color: var(--t-text-secondary); }
  .deal-elig-link { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold); color: var(--t-link); }
  .deal-elig-link:hover { color: var(--t-link-hover); }

  /* Sidebar action stack — outcome modifiers recolour the resolution buttons. */
  .deal-actions__divider { background: var(--t-border); }
  .deal-action--complete { background: var(--t-success); color: var(--t-accent-text); }
  .deal-action--fail { background: var(--t-error); color: var(--t-accent-text); }
  .deal-action--revoke { color: var(--t-error-text); border-color: var(--t-error); }

  /* Gang-unit alert. */
  .gang-unit-alert { background: var(--t-card-bg); border: 1px solid var(--t-error); box-shadow: var(--mea-shadow-sm); }
  .gang-unit-alert__banner { background: var(--t-error-bg, var(--t-bg-recessed)); }
  .gang-unit-alert__icon { color: var(--t-error-text); font-size: var(--mea-text-md); }
  .gang-unit-alert__label { font-size: var(--mea-text-sm); font-weight: var(--mea-w-bold);
                            color: var(--t-error-text); text-transform: uppercase;
                            letter-spacing: var(--mea-ls-wide); }
  .gang-unit-alert__row span:first-child { font-size: var(--mea-text-sm); color: var(--t-text-secondary); }
  .gang-threat-badge { font-size: var(--mea-text-xs); font-weight: var(--mea-w-bold);
                       background: var(--t-bg-recessed); color: var(--t-text-secondary); }
  .gang-threat-badge--high { background: var(--t-error-bg); color: var(--t-error-text); }
  .gang-threat-badge--medium { background: var(--t-warning-bg); color: var(--t-warning-text); }
  .gang-threat-badge--low { background: var(--t-success-bg); color: var(--t-success-text); }
  .gang-unit-alert__note { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold);
                           color: var(--t-error-text); }

  /* Dialogs. */
  .deal-modal-overlay { background: var(--t-overlay, var(--t-bg-active)); }
  .deal-modal { background: var(--t-card-bg); border: 1px solid var(--t-card-border);
                box-shadow: var(--mea-shadow-lg); }
  .deal-modal__header { border-block-end: 1px solid var(--t-border); }
  .deal-modal__title { font-family: var(--mea-font-citizen); font-size: var(--mea-text-lg);
                       font-weight: var(--mea-w-bold); color: var(--t-text); }
  .deal-modal__close { color: var(--t-text-muted); font-size: var(--mea-text-xl);
                       transition: background var(--mea-dur-fast), color var(--mea-dur-fast); }
  .deal-modal__close:hover { background: var(--t-bg-recessed); color: var(--t-text); }
  .deal-modal__desc { font-size: var(--mea-text-md); color: var(--t-text-secondary);
                      line-height: var(--mea-lh-normal); }
  .deal-modal__error { background: var(--t-error-bg, var(--t-bg-recessed)); color: var(--t-error-text);
                       font-size: var(--mea-text-sm); }
  .deal-field__label { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .deal-field__control { background: var(--t-bg-elevated); color: var(--t-text);
                         border: 1px solid var(--t-border); font-size: var(--mea-text-md); }
  .deal-field__control:focus { outline: none; border-color: var(--t-border-focus); }
  .deal-field__control::placeholder { color: var(--t-text-muted); }
}
