/* Firm, in the dashboard's terms: SF Mono labels, figures in Iowan with tabular numerals, a state line with a live
   dot, and hairline-ruled tables that stack into entries on a phone. */
.pnl-up { color: var(--good); }
.pnl-down { color: var(--bad); }
.is-zero, .is-empty { color: var(--muted); }

/* Sign in */
.access { display: flex; flex-direction: column; gap: 28px; max-width: 420px; }
.login-form .label { margin-bottom: 4px; }
.password-line { display: flex; align-items: center; border-bottom: 1px solid var(--muted); }
.password-line:focus-within { border-bottom-color: var(--ink); box-shadow: 0 1px 0 var(--ink); }
.password-line input { flex: 1; min-width: 0; height: 44px; padding: 0; border: 0; border-radius: 0; background: transparent; font-size: 17px; letter-spacing: .04em; outline: none; }
.reveal-button { flex: none; min-height: 44px; padding: 0 0 0 14px; border: 0; background: none; color: var(--muted); font: 11px var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.enter-button { margin-top: 22px; min-height: 40px; padding: 0 22px; border: 1px solid var(--ink); border-radius: 0; background: var(--ink); color: var(--bg); font-size: 14px; transition: opacity .2s ease; }
.enter-button:hover:not(:disabled) { opacity: .82; }
.enter-button:disabled { opacity: .5; cursor: progress; }
.status-line { margin-top: 14px; color: var(--muted); font-size: 13px; }
.status-line:empty { display: none; }
.data-status { margin-bottom: 18px; color: var(--warn); font-size: 13px; }

/* Figures */
.firm-section { max-width: 860px; outline: none; }
.firm-section .label { margin: 32px 0 10px; }
.firm-section > .label:first-child { margin: 0 0 12px; }
.firm-section:focus-visible { outline: 1px solid var(--muted); outline-offset: 10px; }
.figs { display: flex; flex-wrap: wrap; gap: 14px 48px; }
.fig .n { font: 400 28px/1.2 var(--serif); letter-spacing: -.005em; font-variant-numeric: lining-nums tabular-nums; white-space: nowrap; }
.fig .l { margin-top: 6px; color: var(--muted); font: 11px/1.6 var(--mono); letter-spacing: .12em; text-transform: uppercase; }
.fig .s { margin-top: 4px; color: var(--muted); font-size: 13px; }
.state { margin-top: 20px; color: var(--ink2); font-size: 14px; font-variant-numeric: tabular-nums; }
.dot { display: inline-block; width: 7px; height: 7px; margin-right: 8px; border-radius: 50%; vertical-align: 1px; background: var(--muted); }
.pulse[data-state="fresh"] { background: var(--good); }
.pulse[data-state="stale"] { background: var(--warn); }
.dot.arming { background: var(--warn); }
.dot.hollow { background: transparent; box-shadow: inset 0 0 0 1px var(--muted); }
.state-cell { white-space: nowrap; }
.warn { margin-top: 12px; color: var(--warn); font-size: 13px; }
.warn:empty { display: none; }
.note { margin-top: 18px; max-width: 46em; color: var(--muted); font-size: 13px; line-height: 1.55; }
@media (prefers-reduced-motion: no-preference) {
  [data-changed] { animation: refresh .9s ease-out; }
  @keyframes refresh { from { opacity: .35; } }
}

/* Lists: a table on a wide screen; on a phone each row stacks into an entry, its name across the top (with its
   state at the right where it has one) and its figures in columns beneath, each over its label. */
table { border-collapse: collapse; width: 100%; }
.desk th { padding: 0 0 8px 14px; color: var(--muted); font: 400 11px/1.6 var(--mono); letter-spacing: .12em; text-transform: uppercase; text-align: right; white-space: nowrap; vertical-align: bottom; }
.desk td { padding: 10px 0 10px 14px; border-top: 1px solid var(--rule); font-size: 14px; font-variant-numeric: tabular-nums; text-align: right; white-space: nowrap; vertical-align: baseline; }
.desk :is(th, td):first-child { padding-left: 0; }
.desk :is(th, td).l { text-align: left; white-space: normal; }
.desk td.lead .v { font: 16px var(--serif); }
.desk td .sub { display: block; margin-top: 2px; color: var(--muted); font: 12px/1.45 var(--sans); white-space: normal; }
.desk td.dim, .desk td.meta { color: var(--muted); }
.desk td.total { border-top-color: var(--muted); }

.kv { display: grid; gap: 10px; max-width: 34rem; }
.kv > div { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; padding-bottom: 10px; border-bottom: 1px solid var(--rule); }
.kv dt { color: var(--ink2); }
.kv dt .sub { display: block; margin-top: 2px; color: var(--muted); font-size: 12px; }
.kv dd { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* Capital: each venue's share of the total as one thin bar. */
.split { display: flex; max-width: 34rem; height: 2px; margin-top: 18px; background: var(--rule); }
.split span { display: block; width: 0; height: 100%; }
.split .part-0 { background: var(--ink); }
.split .part-1 { background: var(--muted); }
.split .part-2 { background: var(--ink2); }

@media (max-width: 720px) {
  .figs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px 16px; }
  .fig .n { font-size: 22px; }
  .fig .l { font-size: 10px; letter-spacing: .1em; }
  .fig .s { font-size: 12px; }
  .stack { display: block; }
  .stack caption { display: block; }
  .stack thead { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
  .stack tbody { display: block; }
  .stack tr { display: grid; grid-template-columns: repeat(var(--cols), minmax(0, 1fr)); gap: 8px 12px; padding: 14px 0; border-top: 1px solid var(--rule); }
  .stack tr:first-child { padding-top: 4px; border-top: 0; }
  .stack td { display: block; min-width: 0; padding: 0; border: 0; text-align: left; white-space: normal; }
  .stack td:first-child { grid-column: 1 / -1; }
  .stack tr:has(td.cell-side) td:first-child { grid-column: 1 / -2; }
  .stack td.cell-side { grid-column: -2 / -1; text-align: right; }
  .stack td.cell-wide { grid-column: 1 / -1; }
  .stack td.cell-hide { display: none; }
  .stack td.lead .v { font-size: 18px; }
  .stack td:not(.lead) .v { font-size: 15px; white-space: nowrap; }
  .stack td[data-label]::after { content: attr(data-label); display: block; margin-top: 1px; color: var(--muted); font: 10px/1.6 var(--mono); letter-spacing: .1em; text-transform: uppercase; }
  .stack tr:has(td.total) { border-top-color: var(--muted); }
  .cols-2 { --cols: 2; }
  .stack.cols-2 tr { grid-template-columns: minmax(0, 1fr) auto; }
  .cols-3 { --cols: 3; }
  .cols-4 { --cols: 4; }
}
@media (max-width: 401px) { .stack td:not(.lead) .v { font-size: 13px; } }
@media (max-width: 359px) { .cols-4 { --cols: 2; } .fig .n { font-size: 19px; } }
