/* ============================================================
   SWIFT Session (desk/staff) — prosecutor review queue.
   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--primary/.btn--outline from elements.css.

   DESK page: prosecutors review referred encounters under the default
   light .app-screen palette. 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 session header
   is an accent panel; the queue is an ordered list of case buttons; the
   review pane is a real form with a stepper and decision buttons; the
   offer pane is a real form. See docs/FRONTEND-ARCHITECTURE.md.
   ============================================================ */

@layer layout {
  /* Session header: heading + live timer on top, progress + end below. */
  .swift-header { display: grid; gap: var(--mea-space-4);
                  padding: var(--mea-space-5); border-radius: var(--mea-radius-xl); }
  .swift-header__lead { display: flex; flex-wrap: wrap; align-items: center;
                        justify-content: space-between; gap: var(--mea-space-4); }
  .swift-header__heading { display: grid; gap: var(--mea-space-1); min-inline-size: 0; }
  .swift-header__title, .swift-header__subtitle { margin: 0; }
  .swift-header__timer { font-variant-numeric: tabular-nums; }
  .swift-header__status { display: flex; flex-wrap: wrap; align-items: center;
                          gap: var(--mea-space-4); }
  .swift-header__progress-text { margin: 0; white-space: nowrap; }
  .swift-progress { flex: 1; min-inline-size: 8rem; block-size: .5rem;
                    border-radius: var(--mea-radius-pill); overflow: hidden; }
  .swift-progress__fill { display: block; inline-size: 0; block-size: 100%;
                          border-radius: var(--mea-radius-pill);
                          transition: inline-size var(--mea-dur-normal); }
  .swift-header__end { flex-shrink: 0; }

  /* Stats row: equal-width metric blocks. */
  .swift-stats { display: grid; grid-template-columns: repeat(5, 1fr);
                 gap: var(--mea-space-3); }
  .swift-stat { display: grid; gap: var(--mea-space-1); margin: 0;
                padding: var(--mea-space-4); border-radius: var(--mea-radius-lg);
                align-content: start; }
  .swift-stat__label, .swift-stat__value, .swift-stat__sub { margin: 0; }
  @container (max-width: 48rem) { .swift-stats { grid-template-columns: repeat(2, 1fr); } }

  /* Two panels: case queue beside the review pane. */
  .swift-panels { display: grid; grid-template-columns: minmax(0, 22rem) minmax(0, 1fr);
                  gap: var(--mea-space-4); align-items: start; }
  @container (max-width: 52rem) { .swift-panels { grid-template-columns: 1fr; } }
  .swift-panel { display: grid; align-content: start;
                 border-radius: var(--mea-radius-xl); overflow: hidden; }
  .swift-panel__header { display: flex; align-items: center; justify-content: space-between;
                         gap: var(--mea-space-3); padding: var(--mea-space-4) var(--mea-space-5); }
  .swift-panel__title { margin: 0; min-inline-size: 0; }
  .swift-panel__meta { flex-shrink: 0; }
  .swift-panel__body { padding: var(--mea-space-4) var(--mea-space-5) var(--mea-space-5); min-inline-size: 0; }

  /* Queue: ordered list of selectable case buttons. */
  .swift-queue-list { display: grid; gap: var(--mea-space-2); margin: 0; padding: 0; list-style: none; }
  .swift-case { display: grid; min-inline-size: 0; }
  .swift-case__btn { display: grid; grid-template-columns: auto 1fr auto;
                     gap: var(--mea-space-3); align-items: start; inline-size: 100%;
                     text-align: start; padding: var(--mea-space-3) var(--mea-space-4);
                     border: 1px solid transparent; border-radius: var(--mea-radius-lg);
                     cursor: pointer; min-inline-size: 0; }
  .swift-case__num { 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); }
  .swift-case__detail { display: grid; gap: var(--mea-space-1); min-inline-size: 0; }
  .swift-case__name, .swift-case__charge, .swift-case__date { margin: 0; min-inline-size: 0; }
  .swift-case__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .swift-case__badge { flex-shrink: 0; }

  /* Charge tag + queue badge. */
  .swift-charge { display: inline-block; padding: var(--mea-space-1) var(--mea-space-3);
                  border-radius: var(--mea-radius-pill); white-space: nowrap; }
  .swift-badge { display: inline-block; padding: var(--mea-space-1) var(--mea-space-2);
                 border-radius: var(--mea-radius-pill); white-space: nowrap; }

  /* Empty / cleared states. */
  .swift-empty { display: grid; gap: var(--mea-space-2); justify-items: center;
                 text-align: center; padding: var(--mea-space-8) var(--mea-space-4); }
  .swift-empty__icon, .swift-empty__title, .swift-empty__sub { margin: 0; }
  .swift-empty__actions { display: flex; flex-wrap: wrap; justify-content: center;
                          gap: var(--mea-space-2); margin-block-start: var(--mea-space-3); }

  /* Review pane. */
  .swift-review { display: grid; gap: var(--mea-space-5); }
  .swift-review__identity { display: grid; grid-template-columns: auto 1fr;
                            gap: var(--mea-space-3); align-items: center; min-inline-size: 0; }
  .swift-review__avatar { display: inline-flex; align-items: center; justify-content: center;
                          inline-size: 2.75rem; block-size: 2.75rem; flex-shrink: 0;
                          border-radius: var(--mea-radius-circle); }
  .swift-review__who { display: grid; gap: var(--mea-space-1); min-inline-size: 0; }
  .swift-review__name, .swift-review__date { margin: 0; }

  /* Info: a two-column definition grid. */
  .swift-info { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
                gap: var(--mea-space-4); margin: 0; }
  .swift-info__item { display: grid; gap: var(--mea-space-1); min-inline-size: 0; }
  .swift-info__label, .swift-info__value { margin: 0; min-inline-size: 0; }
  @container (max-width: 28rem) { .swift-info { grid-template-columns: 1fr; } }

  /* Decision notes. */
  .swift-notes { display: grid; gap: var(--mea-space-2); }
  .swift-notes__label { margin: 0; }
  .swift-notes__input { inline-size: 100%; padding: var(--mea-space-3);
                        border-radius: var(--mea-radius-md); font: inherit; resize: vertical; }

  /* Stepper: three segments + a label. */
  .swift-stepper { display: grid; grid-template-columns: repeat(3, 1fr);
                   gap: var(--mea-space-2); }
  .swift-stepper__segment { block-size: .375rem; border-radius: var(--mea-radius-pill); }
  .swift-stepper__label { margin: 0; }

  /* Decision actions: a primary action over a row of three. */
  .swift-decision-actions { display: grid; gap: var(--mea-space-2); }
  .swift-decision-actions__row { display: grid; grid-template-columns: repeat(3, 1fr);
                                 gap: var(--mea-space-2); }
  .swift-action { inline-size: 100%; }

  /* Offer pane + form. */
  .swift-offer { display: grid; gap: var(--mea-space-4); }
  .swift-offer__header { display: flex; flex-wrap: wrap; align-items: center;
                         justify-content: space-between; gap: var(--mea-space-3); }
  .swift-offer__title { margin: 0; min-inline-size: 0; }
  .swift-offer__status { justify-self: start; }
  .swift-offer__retry { justify-self: start; }
  .swift-offer-form { display: grid; gap: var(--mea-space-2); }
  .swift-offer-form .swift-action { margin-block-start: var(--mea-space-2); }
  .swift-field__label { margin: 0; }
  .swift-field__control { inline-size: 100%; padding: var(--mea-space-3);
                          border-radius: var(--mea-radius-md); font: inherit; }
  .swift-field__control--multiline { resize: vertical; }

  /* Session summary. */
  .swift-summary { display: grid; inline-size: 100%; max-inline-size: 40rem;
                   margin-inline: auto; border-radius: var(--mea-radius-xl); overflow: hidden; }
  .swift-summary__header { padding: var(--mea-space-5); text-align: center; }
  .swift-summary__title { margin: 0; }
  .swift-summary__body { display: grid; gap: var(--mea-space-3); justify-items: center;
                         text-align: center; padding: var(--mea-space-6) var(--mea-space-5); }
  .swift-summary__count, .swift-summary__lead, .swift-summary__meta { margin: 0; }
  .swift-summary__stats { display: grid; grid-template-columns: repeat(4, 1fr);
                          gap: var(--mea-space-3); inline-size: 100%; margin: 0;
                          margin-block: var(--mea-space-3); }
  .swift-summary-stat { display: grid; gap: var(--mea-space-1); justify-items: center;
                        padding: var(--mea-space-4); border-radius: var(--mea-radius-lg); }
  .swift-summary-stat__value, .swift-summary-stat__label, .swift-summary-stat__sub { margin: 0; }
  @container (max-width: 36rem) { .swift-summary__stats { grid-template-columns: repeat(2, 1fr); } }
  .swift-savings { display: grid; gap: var(--mea-space-1); inline-size: 100%;
                   padding: var(--mea-space-4); border-radius: var(--mea-radius-lg); }
  .swift-savings__label, .swift-savings__amount, .swift-savings__basis { margin: 0; }
  .swift-summary__actions { display: flex; flex-wrap: wrap; justify-content: center;
                            gap: var(--mea-space-3); margin-block-start: var(--mea-space-3); }
}

@layer design {
  /* Session header — accent panel. */
  .swift-header { background: var(--t-accent); box-shadow: var(--mea-shadow-md); }
  .swift-header__title { font-family: var(--mea-font-citizen); font-size: var(--mea-text-xl);
                         font-weight: var(--mea-w-bold); color: var(--t-accent-text); }
  .swift-header__subtitle { font-size: var(--mea-text-sm); color: var(--t-accent-text); opacity: .8; }
  .swift-header__timer { font-size: var(--mea-text-2xl); font-weight: var(--mea-w-bold);
                         color: var(--t-accent-text); }
  .swift-header__progress-text { font-size: var(--mea-text-sm); color: var(--t-accent-text); opacity: .85; }
  .swift-progress { background: var(--t-accent-text); }
  .swift-progress__fill { background: var(--t-accent-text); }

  /* Stats. State modifiers recolour the value only. */
  .swift-stat { background: var(--t-card-bg); border: 1px solid var(--t-card-border);
                box-shadow: var(--mea-shadow-sm); }
  .swift-stat__label { font-size: var(--mea-text-xs); font-weight: var(--mea-w-semibold);
                       text-transform: uppercase; letter-spacing: var(--mea-ls-wide);
                       color: var(--t-text-muted); }
  .swift-stat__value { font-size: var(--mea-text-2xl); font-weight: var(--mea-w-bold);
                       color: var(--t-text); }
  .swift-stat__sub { font-size: var(--mea-text-xs); color: var(--t-text-muted); }
  .swift-stat--approved .swift-stat__value { color: var(--t-success-text); }
  .swift-stat--denied .swift-stat__value { color: var(--t-error-text); }
  .swift-stat--continued .swift-stat__value { color: var(--t-warning-text); }

  /* Panels. */
  .swift-panel { background: var(--t-card-bg); border: 1px solid var(--t-card-border);
                 box-shadow: var(--mea-shadow-sm); }
  .swift-panel__header { border-block-end: 1px solid var(--t-border); }
  .swift-panel__title { font-family: var(--mea-font-citizen); font-size: var(--mea-text-md);
                        font-weight: var(--mea-w-bold); color: var(--t-text); }
  .swift-panel__meta { font-size: var(--mea-text-sm); color: var(--t-text-muted); }

  /* Queue case buttons. .is-selected is toggled by the controller. */
  .swift-case__btn { background: var(--t-bg-elevated); color: var(--t-text);
                     border-color: var(--t-border);
                     transition: background var(--mea-dur-fast), border-color var(--mea-dur-fast); }
  .swift-case__btn:hover { background: var(--t-bg-recessed); }
  .swift-case__btn.is-selected { background: var(--t-bg-active); border-color: var(--t-border-focus); }
  .swift-case__num { background: var(--t-bg-recessed); color: var(--t-text-secondary);
                     font-size: var(--mea-text-sm); font-weight: var(--mea-w-bold); }
  .swift-case__name { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .swift-case__offense { font-size: var(--mea-text-sm); color: var(--t-text-muted); }
  .swift-case__date { font-size: var(--mea-text-xs); color: var(--t-text-muted); }

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

  /* Queue badge — state modifiers recolour the badge only. */
  .swift-badge { font-size: var(--mea-text-xs); font-weight: var(--mea-w-semibold);
                 background: var(--t-bg-recessed); color: var(--t-text-secondary); }
  .swift-badge--offer { background: var(--t-accent); color: var(--t-accent-text); }
  .swift-badge--continued { background: var(--t-warning-bg); color: var(--t-warning-text); }
  .swift-badge--escalated { background: var(--t-error-bg); color: var(--t-error-text); }
  .swift-badge--prior { background: var(--t-error-bg); color: var(--t-error-text); }
  .swift-badge--new { background: var(--t-bg-active); color: var(--t-text); }

  /* Empty / cleared states. */
  .swift-empty__icon { font-size: var(--mea-text-3xl); line-height: 1; color: var(--t-text-muted); }
  .swift-empty--clear .swift-empty__icon { color: var(--t-success-text); }
  .swift-empty__title { font-size: var(--mea-text-md); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .swift-empty__sub { font-size: var(--mea-text-sm); color: var(--t-text-muted); }

  /* Review pane. */
  .swift-review__avatar { background: var(--t-accent); color: var(--t-accent-text);
                          font-size: var(--mea-text-md); font-weight: var(--mea-w-bold); }
  .swift-review__name { font-size: var(--mea-text-md); font-weight: var(--mea-w-bold); color: var(--t-text); }
  .swift-review__date { font-size: var(--mea-text-sm); color: var(--t-text-muted); }

  .swift-info__label { font-size: var(--mea-text-xs); font-weight: var(--mea-w-semibold);
                       text-transform: uppercase; letter-spacing: var(--mea-ls-wide);
                       color: var(--t-text-muted); }
  .swift-info__value { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold); color: var(--t-text-secondary); }
  .swift-info__offense { font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .swift-info__value--has-prior { color: var(--t-error-text); }
  .swift-info__value--no-prior { color: var(--t-success-text); }

  .swift-notes__label { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .swift-notes__input { background: var(--t-bg-elevated); color: var(--t-text);
                        border: 1px solid var(--t-border); font-size: var(--mea-text-md); }
  .swift-notes__input:focus { outline: none; border-color: var(--t-border-focus); }
  .swift-notes__input::placeholder { color: var(--t-text-muted); }

  .swift-stepper__segment { background: var(--t-bg-active); }
  .swift-stepper__segment.is-active { background: var(--t-accent); }
  .swift-stepper__label { font-size: var(--mea-text-xs); font-weight: var(--mea-w-semibold);
                          text-transform: uppercase; letter-spacing: var(--mea-ls-wide);
                          color: var(--t-text-muted); }

  /* Decision action buttons. */
  .swift-action--approve { background: var(--t-success); color: var(--t-accent-text); }
  .swift-action--deny { background: var(--t-error); color: var(--t-accent-text); }
  .swift-action--defer { background: var(--t-warning); color: var(--t-accent-text); }
  .swift-action--escalate { background: var(--t-bg-active); color: var(--t-text); }
  .swift-btn--disabled { opacity: .5; cursor: default; }

  /* Offer form fields. */
  .swift-offer__title { font-family: var(--mea-font-citizen); font-size: var(--mea-text-md);
                        font-weight: var(--mea-w-bold); color: var(--t-text); }
  .swift-field__label { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .swift-field__control { background: var(--t-bg-elevated); color: var(--t-text);
                          border: 1px solid var(--t-border); font-size: var(--mea-text-md); }
  .swift-field__control:focus { outline: none; border-color: var(--t-border-focus); }
  .swift-field__control::placeholder { color: var(--t-text-muted); }

  /* Inline error fallback (D7) — appended by the controller. */
  .swift-error { padding: var(--mea-space-3); border-radius: var(--mea-radius-md);
                 background: var(--t-error-bg, var(--t-bg-recessed)); color: var(--t-error-text);
                 font-size: var(--mea-text-sm); }

  /* Session summary. */
  .swift-summary { background: var(--t-card-bg); border: 1px solid var(--t-card-border);
                   box-shadow: var(--mea-shadow-md); }
  .swift-summary__header { border-block-end: 1px solid var(--t-border); }
  .swift-summary__title { font-family: var(--mea-font-citizen); font-size: var(--mea-text-lg);
                          font-weight: var(--mea-w-bold); color: var(--t-text); }
  .swift-summary__count { font-size: var(--mea-text-3xl); font-weight: var(--mea-w-bold); color: var(--t-text); }
  .swift-summary__lead { font-size: var(--mea-text-md); color: var(--t-text-secondary); }
  .swift-summary__meta { font-size: var(--mea-text-sm); color: var(--t-text-muted); }
  .swift-summary-stat { background: var(--t-bg-recessed); border: 1px solid var(--t-border); }
  .swift-summary-stat__value { font-size: var(--mea-text-2xl); font-weight: var(--mea-w-bold); color: var(--t-text); }
  .swift-summary-stat--approved .swift-summary-stat__value { color: var(--t-success-text); }
  .swift-summary-stat--denied .swift-summary-stat__value { color: var(--t-error-text); }
  .swift-summary-stat--continued .swift-summary-stat__value { color: var(--t-warning-text); }
  .swift-summary-stat__label { font-size: var(--mea-text-sm); font-weight: var(--mea-w-semibold); color: var(--t-text); }
  .swift-summary-stat__sub { font-size: var(--mea-text-xs); color: var(--t-text-muted); }
  .swift-savings { background: var(--t-accent); color: var(--t-accent-text); }
  .swift-savings__label { font-size: var(--mea-text-xs); font-weight: var(--mea-w-semibold);
                          text-transform: uppercase; letter-spacing: var(--mea-ls-wide); opacity: .85; }
  .swift-savings__amount { font-size: var(--mea-text-2xl); font-weight: var(--mea-w-bold); }
  .swift-savings__basis { font-size: var(--mea-text-xs); opacity: .85; }
}
