/* ITZA Tab harvest - two CSS pieces from an earlier ITZA app, v111.
   1. The receipt columns (label left, amount right, tabular numerals,
      ellipsized labels, muted modifiers).
   2. The + fan menu - two round icon discs sprung over the FAB, the
      owner's own sketch (2026-08-22). Built for the scanner; a natural
      fit for Tab's own + button. Mind the z-index note: anything meant
      to be TAPPED above a scrim must clear the scrim. */

/* A RECEIPT'S LINES - label left, amount right, the shape a till prints.
   Only the renderer's receipt pass emits these classes, and it only runs
   for entries sealed kind:'receipt'. */
.rcpt-line {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1.2em;
  margin: 0.12em 0;
}
/* ONE LINE PER ITEM, always. A long label used to wrap and carry its
   amount underneath, breaking the right-hand column (owner screenshot,
   Fig & Ricotta Stuffed French Toast, 2026-08-22). The label shortens
   with an ellipsis instead - tap it and the full wording appears - and
   every amount stays put on the right. */
.rcpt-line .rcpt-label {
  flex: 1 1 auto;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.rcpt-line .rcpt-amt {
  flex: none;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.rcpt-mod {
  margin: 0.05em 0 0.05em 1.3em;
  font-size: 0.9em;
  color: var(--muted);
}

/* THE + MENU, journal mode only: two round buttons FANNED over the +,
   the shape the owner sketched (2026-08-22) - satellites of the button
   that summoned them, not a stack of bars. Each is a raised disc with an
   icon over its word; the scrim beneath is the drawer's own, so a tap
   anywhere else puts the menu away.
   z-index: the scrim is 80, and anything meant to be TAPPED above it is
   81 - the sheet, the drawer, and this (a 60 here once let the scrim eat
   every tap; owner, 2026-08-21). */
.fab-pop {
  position: fixed;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(var(--safe-b) + var(--bar-h) + 4px);
  z-index: 81;
  width: 0;
  height: 0;
}
/* Fanned: one up-left, one up-right, like the sketch. */
.fab-pill { transform: translate(var(--fp-x), var(--fp-y)); }
.fab-pill.fp-left  { --fp-x: -58px; --fp-y: -66px; }
.fab-pill.fp-right { --fp-x: 58px;  --fp-y: -66px; }
.fab-pill.fp-right { animation-delay: 0.05s; }
@keyframes fabPillIn {
  from { transform: translate(0, 0) scale(0.4); opacity: 0; }
  to   { transform: translate(var(--fp-x), var(--fp-y)) scale(1); opacity: 1; }
}

/* ---------------------------------------------------------------------
   iOS Safari: the floating-app fix. Safari zooms the page when a focused
   field's font is under 16px and the zoom sticks after blur; the fix is
   the FIELD, not the viewport, so pinch-zoom stays available to a
   low-vision reader. Scoped to iOS engines only.
   THE LAST FONT-SIZE RULE IN THE WHOLE CASCADE - do not add font-size
   rules below this block, in this file or any stylesheet loaded after.
   --------------------------------------------------------------------- */
@supports (-webkit-touch-callout: none) {
  input[type="text"],
  input[type="password"],
  input[type="email"],
  input[type="number"],
  input[type="search"],
  input:not([type]),
  textarea,
  select {
    font-size: max(1em, 16px);
  }
  /* THE FLOOR MUST ALSO OUT-RANK, NOT JUST COME LAST: ID-scoped screens
     style their own fields at (1,0,1), which beats the attribute
     selectors above no matter the order. Any future ID-scoped screen
     that styles its own fields must be added here at its own weight. */
  #screen-onboard input,
  #screen-onboard textarea,
  #modal input,
  #modal textarea {
    font-size: max(1em, 16px);
  }
}
