/* pages.css : the few rules the tenant, owner and public pages need on top of ds.css.
   Tokens only (npm run lint:theme covers this file). Class prefix uvp- = "portal page". */

/* Stat row whose sub-line sits under the number instead of beside it. */
.uvp-stat-stack dd small { display: block; margin: var(--space-1) 0 0; }
.uvp-stat-stack dd { overflow-wrap: anywhere; }

/* A table row group the page can fold: rows tagged .uvp-fold hide until the table is expanded. */
.uvp-fold-table:not(.is-expanded) tr.uvp-fold { display: none; }
.uvp-fold-toggle { margin-top: var(--space-2); min-height: var(--tap-min); }

/* Phone fold: .ds-table-data joins ADJACENT meta cells with a dot; hidden cells between two meta
   cells break adjacency, so join any later meta cell (and skip empty ones). */
@media (max-width: 767px) {
  .uvp-join td[data-phone="meta"] ~ td[data-phone="meta"]:not(:empty)::before { content: " \00b7 "; }
  .uvp-join td[data-phone="meta"]:empty { display: none; }
}

/* A document row in a side panel: name and date on the left, one button on the right. */
.uvp-doc-row { display: flex; align-items: center; gap: var(--space-3); }
.uvp-doc-row > div { flex: 1 1 0; min-width: 0; }
.uvp-doc-row .ds-btn { flex: none; }

/* Money and dates never wrap inside a cell or a key/value row. */
.uvp-nowrap { white-space: nowrap; }

/* The page's one banner sits above the content with room below. */
.uvp-banner { margin-bottom: var(--space-4); }

/* Skeleton block that matches a stat row. */
.uvp-skel-stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-4) var(--space-5); padding: var(--space-3) 0; }
@media (min-width: 768px) { .uvp-skel-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

/* Sections that are not the focus of the page get a rule above them, not a card. */
.uvp-sec { margin-top: var(--space-6); }

/* Sign-in / verify: a plain form on paper (no card), left column beside the brand photo. */
.uvp-auth { max-width: 26rem; margin: var(--space-2) 0 0; }
.uvp-auth .ds-btn { width: 100%; justify-content: center; }
.uvp-sent { text-align: left; }

/* Check instructions: a mailing address keeps its line breaks. */
.uvp-address { white-space: pre-line; font-style: normal; }

/* Owner upload zone. */
.uvp-drop { border: 1px dashed var(--rule); border-radius: var(--radius-lg); padding: var(--space-5) var(--space-4); text-align: center; color: var(--text-muted); font-size: var(--text-sm); }
.uvp-drop.is-over { border-color: var(--accent); background: rgba(var(--ink), 0.04); }
.uvp-drop input[type="file"] { display: none; }
.uvp-upload-fields { display: grid; gap: var(--space-3); margin-top: var(--space-3); }
@media (min-width: 768px) { .uvp-upload-fields { grid-template-columns: minmax(0, 1fr) 14rem; } }

/* Ticket list under the support form. */
.uvp-tickets { margin-top: var(--space-4); }

/* Space between a stat row and the record grid that follows it. */
.uvp-stat-stack + .ds-record { margin-top: var(--space-5); }

/* Plain list (contacts): no bullets, no indent. */
.uvp-plain { list-style: none; margin: 0; padding: 0; }

/* Link row under a table. */
.uvp-foot { margin-top: var(--space-4); }

/* Text link that is also a touch target. */
.uvp-tap { display: inline-flex; align-items: center; min-height: var(--tap-min); }
