/* People: the list, a person's page, adding people, teams and roles, the profile reminder bar, and the sign-in page
   with the sign-in service. Loads after app.css and uses its color variables. */

/* ---------- shared bits ---------- */
.back { display: inline-block; margin-block-end: 14px; font: 500 12px/1.2 var(--font); letter-spacing: 0; text-transform: none; text-decoration: none; }
.back::before { content: "\2190\00a0"; }
.nowrap { white-space: nowrap; }
.plain-list { margin: 0; padding-inline-start: 18px; display: grid; gap: 2px; font-size: 14px; }
.warn-note { font-size: 13px; font-weight: 600; color: var(--warn); }
.count-plain { margin-inline-start: 6px; font-weight: 600; }
.stack-gap.tight { gap: 18px; }
.with-unit { display: flex; align-items: center; gap: 10px; }
.with-unit input { max-inline-size: 120px; }

/* ---------- everyone ---------- */
.people-filters { gap: 12px 16px; }
.people-filters .find { min-inline-size: 220px; flex: 1 1 220px; max-inline-size: 320px; }
.people-table th.pick, .people-table td.pick { inline-size: 44px; padding-inline-end: 0; }
.people-table .pname { color: var(--ink); font-weight: 600; text-decoration: none; }
.people-table .pname:hover { color: var(--red-ink); text-decoration: underline; }
.people-table td.who { min-inline-size: 200px; }
.people-table td.ready .status, .people-table td.sign .status { white-space: normal; }
.bulkbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 12px; padding: 10px 14px; background: var(--inverse); color: var(--on-inverse); position: sticky; inset-block-start: 72px; z-index: 5; }
.bulkbar .btn { background: var(--field); color: var(--ink); }
.bulkbar .btn:hover { background: var(--band); }
.bulkbar .btn.dark { background: var(--red); color: var(--on-red); }
.bulkbar select { inline-size: auto; min-height: 32px; padding: 4px 8px; }
.bulkbar .saved, .bulkbar .warn-note { color: var(--on-inverse); }
label.inline { display: inline-flex; }

/* ---------- one person ---------- */
.person-chips { gap: 8px; }
.person-chips .status, .person-chips .chip { font-size: 12px; }
.person-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 40px 48px; align-items: start; }
.person-main section { display: grid; gap: 14px; }
.person-side { display: grid; gap: 0; }
.person-side .pside { display: grid; gap: 12px; padding-block: 0 24px; margin-block-end: 24px; border-block-end: 1px solid var(--line); }
.person-side .pside:last-child { border-block-end: 0; }
.person-side h2 { font-size: 16px; }
.person-side .kv { grid-template-columns: 96px minmax(0, 1fr); }
.person-side .kv dd { overflow-wrap: anywhere; }
.stack-actions { display: grid; gap: 8px; justify-items: start; }
.stack-actions { justify-items: stretch; }
.stack-actions > .btn { justify-content: flex-start; }
.repair { display: grid; gap: 10px; }
.repair-body { display: grid; gap: 10px; padding: 14px 16px; background: var(--ground-alt); }
.repair-body h3 { font-size: 12px; }
.role-preview { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; font-size: 14px; }
.role-preview .lbl { display: block; margin-block-end: 4px; }
.inline-form { display: grid; gap: 12px; inline-size: 100%; }
.inline-form fieldset.keep { border: 0; padding: 0; margin: 0; display: grid; gap: 8px; }
.team-picks { display: flex; flex-wrap: wrap; gap: 10px 22px; }
label.need input, label.need select { box-shadow: inset 0 0 0 2px var(--warn); }
.need-tag { color: var(--warn); font: 600 11px/1.4 var(--font); letter-spacing: 0; }

/* ---------- adding people ---------- */
.add-people { display: grid; gap: 32px; max-inline-size: 900px; }
.add-people textarea { font: 14px/1.5 var(--mono); }
.signin-choice { display: grid; gap: 10px; justify-items: start; }
.signin-choice .pw { inline-size: min(360px, 100%); }
.add-check { display: grid; gap: 14px; }
.add-team label { min-inline-size: 240px; }
.add-team { align-items: end; }

/* ---------- roles ---------- */
.roles-table td { vertical-align: top; }
.roles-table td:first-child { white-space: nowrap; }

/* ---------- the bar asking you to finish your profile ---------- */
.profile-banner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 18px; padding: 12px 16px; margin-block-end: 24px; background: var(--band); color: var(--ink); font-weight: 600; }
.settings .profile-banner { margin: 0; }
/* "Travels for work": a label and a Yes/No switch on one line, above the details it shows or hides. */
.travels-choice { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; }
.travels-choice .lbl { display: inline-flex; align-items: center; gap: 4px; }
.travels-choice .seg > button { min-inline-size: 64px; justify-content: center; }

/* ---------- sign-in page with the sign-in service ---------- */
.gate-form { inline-size: min(440px, 100%); display: grid; gap: 18px; }
.btn.big { min-height: 52px; padding-inline: 40px; font-size: 15px; }

@media (max-width: 1080px) {
  .person-layout { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 720px) {
  /* people as stacked rows on a phone: pick box, then name, then role, sign-in and profile underneath */
  .people-table thead { display: none; }
  .people-table, .people-table tbody { display: block; }
  .people-table tr { display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 4px 8px; padding: 12px 0; border-block-end: 1px solid var(--line); }
  .people-table tr[hidden] { display: none; }
  .people-table td { display: block; padding: 0; border: 0; min-inline-size: 0; }
  .people-table td.pick { grid-row: 1 / span 5; grid-column: 1; inline-size: auto; padding-block-start: 2px; }
  .people-table td:not(.pick) { grid-column: 2; }
  .people-table td.hide-sm, .people-table td.role:has(> .dash) { display: none; }
  .people-filters, .people-filters > * { inline-size: 100%; max-inline-size: none; }
  .page-head .seg, .people-filters .seg { inline-size: 100%; }
  .page-head .actions { inline-size: 100%; }
  .people-table td.who { min-inline-size: 0; }
  .people-table td.role { font-size: 16px; color: var(--ink-muted); }
  .people-table td.sign, .people-table td.ready { display: inline-block; }
  .people-filters .find { max-inline-size: none; }
  .bulkbar { inset-block-start: 64px; }
  .role-preview { grid-template-columns: 1fr; }
  .save-bar { position: sticky; inset-block-end: 0; z-index: 5; padding: 10px 0; background: var(--ground); box-shadow: 0 -1px 0 var(--line); }
}
.copy-link { display: flex; gap: 6px; align-items: center; margin-top: 6px; max-width: 560px; }
.copy-link input { flex: 1; min-width: 0; font-family: var(--mono, ui-monospace, monospace); font-size: 12px; }

/* People on a phone: Find first, the filters folded behind one Filter button, Download CSV inside them */
.pf-find { display: contents; }
.pf-more { display: contents; }
.pf-toggle, .pf-narrow { display: none; }
@media (max-width: 720px) {
  .page-head .pf-wide { display: none; }
  .pf-find { display: flex; gap: 10px; align-items: end; inline-size: 100%; }
  .pf-find .find { flex: 1 1 auto; min-inline-size: 0; }
  .pf-toggle { display: inline-flex; flex: 0 0 auto; }
  .people-filters .pf-toggle { inline-size: auto; }
  .people-filters:not(.open) .pf-more { display: none; }
  .people-filters.open .pf-more { display: grid; gap: 12px; inline-size: 100%; }
  .pf-narrow { display: inline-flex; justify-self: start; }
  .people-filters .pf-find { inline-size: 100%; }
}
.pf-toggle[aria-expanded="true"] { background: var(--inverse); color: var(--on-inverse); }
