/* 15-polish.css — notices, dialogs and keyboard focus (pairs with js/21-polish.js). */

:root {
  --phi-surface: #ffffff;
  --phi-surface-ink: #1a2e28;
  --phi-surface-muted: #5a7870;
  --phi-accent: #235f40;
  --phi-accent-ink: #ffffff;
  --phi-danger: #b3261e;
  --phi-focus: #c87000;
  --phi-radius: 13px;
  --phi-shadow: 0 12px 32px rgba(10, 30, 22, .22), 0 2px 6px rgba(10, 30, 22, .12);
}
body.phi-dark {
  --phi-surface: #17231f;
  --phi-surface-ink: #e6efec;
  --phi-surface-muted: #9db3ab;
  --phi-accent: #3f8f66;
  --phi-danger: #e5675f;
  --phi-focus: #f0b04a;
}

/* ── keyboard focus: visible for keyboard users, invisible for mouse clicks ── */
:focus-visible {
  outline: 2px solid var(--phi-focus) !important;
  outline-offset: 2px !important;
  border-radius: 4px;
}
[role="button"][tabindex="0"] { cursor: pointer; }

/* ── notices ── */
.phi-toasts {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 2147483646;
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-width: min(420px, calc(100vw - 48px));
  pointer-events: none;
}
.phi-toast {
  pointer-events: auto;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 14px 14px 18px;
  background: var(--phi-surface);
  color: var(--phi-surface-ink);
  border-radius: var(--phi-radius);
  border-left: 4px solid var(--phi-accent);
  box-shadow: var(--phi-shadow);
  font: 400 14px/1.45 'Filson Pro', -apple-system, 'Segoe UI', sans-serif;
  white-space: pre-line;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity .2s ease, transform .2s ease;
}
.phi-toast--in { opacity: 1; transform: none; }
.phi-toast--out { opacity: 0; transform: translateY(4px); }
.phi-toast--error { border-left-color: var(--phi-danger); }
.phi-toast__body { flex: 1; overflow-wrap: anywhere; }
.phi-toast__close {
  border: 0;
  background: transparent;
  color: var(--phi-surface-muted);
  font-size: 20px;
  line-height: 1;
  padding: 0 4px;
  cursor: pointer;
}
.phi-toast__close:hover { color: var(--phi-surface-ink); }

/* ── dialogs ── */
.phi-dialog-backdrop {
  position: fixed;
  inset: 0;
  z-index: 2147483647;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(8, 24, 18, .45);
  opacity: 0;
  transition: opacity .16s ease;
}
.phi-dialog-backdrop--in { opacity: 1; }
.phi-dialog-backdrop--out { opacity: 0; }
.phi-dialog {
  width: min(440px, 100%);
  background: var(--phi-surface);
  color: var(--phi-surface-ink);
  border-radius: var(--phi-radius);
  border-top: 4px solid var(--phi-accent);
  box-shadow: var(--phi-shadow);
  padding: 22px 24px 18px;
  font: 400 15px/1.5 'Filson Pro', -apple-system, 'Segoe UI', sans-serif;
}
.phi-dialog__title { font-size: 17px; font-weight: 600; margin: 0 0 8px; }
.phi-dialog__msg { margin: 0 0 16px; white-space: pre-line; }
.phi-dialog__input {
  width: 100%;
  margin: 0 0 16px;
  padding: 9px 12px;
  border: 1px solid #9bbfb8;
  border-radius: 8px;
  font: inherit;
  background: transparent;
  color: inherit;
}
.phi-dialog__actions { display: flex; justify-content: flex-end; gap: 10px; }
.phi-btn {
  border: 1px solid transparent;
  border-radius: 8px;
  padding: 8px 16px;
  font: 600 14px/1.2 'Filson Pro', -apple-system, 'Segoe UI', sans-serif;
  cursor: pointer;
}
.phi-btn--primary { background: var(--phi-accent); color: var(--phi-accent-ink); }
.phi-btn--danger { background: var(--phi-danger); color: #fff; }
.phi-btn--quiet { background: transparent; color: var(--phi-surface-ink); border-color: rgba(127, 150, 140, .5); }
.phi-btn:hover { filter: brightness(1.06); }

@media (prefers-reduced-motion: reduce) {
  .phi-toast, .phi-dialog-backdrop { transition: none; }
}

/* Sara 2026-10-25: campaign member list - every status is a clickable pill, plus school and role under each name */
.cmt-name-stack{display:flex;flex-direction:column;line-height:1.2;min-width:0}
.cmt-aff{font-size:11px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:320px}
.cmt-rsvp{display:inline-block;border:1px solid rgba(127,127,127,.35)!important;user-select:none;white-space:nowrap}
.cmt-rsvp:hover{filter:brightness(1.12);box-shadow:0 0 0 2px rgba(127,127,127,.25)}
.cmt-rsvp.st-open{background:rgba(127,127,127,.14);color:inherit}
.cmt-rsvp.st-wait{background:#d8ecf7;color:#155178}
.cmt-rsvp.st-good{background:#d4edda;color:#1d5c37}
.cmt-rsvp.st-off{background:#efe2e2;color:#7a2e2e}

.camp-member-tbl td.cmt-role,.camp-member-tbl td.cmt-school{font-size:11.5px;max-width:220px}
.cmt-groups{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0 0 8px;font-size:12px}
.cmt-grp-lbl{color:var(--muted);font-weight:600;margin-right:2px}
.cmt-grp{background:rgba(127,127,127,.14);border-radius:10px;padding:2px 9px}
