/* Manager page */
.admin-main { padding-block: 56px 96px; }
.admin-actions { display: flex; gap: 10px; }
.admin-actions[hidden], .login[hidden], #listView[hidden] { display: none; }

.login { display: grid; place-items: center; min-height: 60vh; }
.login-card { width: min(420px, 100%); display: grid; gap: 22px; }
.login-card .title { font-size: 2rem; text-align: center; }
.login-card[hidden] { display: none; }
.login-foot { text-align: center; color: var(--mink); font-size: .95rem; }
.login-foot a { color: var(--rose-glow); }

/* Messages between a modelist and the manager */
.thread { display: grid; gap: 10px; max-height: 360px; overflow-y: auto; padding: 4px; }
.thread:empty::before { content: attr(data-empty); color: var(--mink); font-size: .92rem; }
.bubble { max-width: 85%; padding: 10px 14px; border-radius: 16px; font-size: .95rem; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; }
.bubble small { display: block; font-size: .75rem; color: var(--mink); margin-top: 4px; }
.bubble.from-model { justify-self: start; background: rgba(245, 230, 220, .07); border: 1px solid var(--line); border-end-start-radius: 4px; }
.bubble.from-manager { justify-self: end; background: rgba(219, 168, 143, .16); border: 1px solid var(--line-strong); border-end-end-radius: 4px; }
.compose { display: grid; gap: 10px; }
.compose textarea { min-height: 80px; }
.compose .btn { justify-self: start; }
.badge-msg { font-size: .75rem; padding: 2px 10px; border-radius: 999px; background: var(--rose); color: #2a1812; margin-inline-start: 8px; vertical-align: middle; }
.waiting { text-align: center; justify-items: center; }
.waiting p { color: var(--champagne); opacity: .9; }
.waiting .muted { margin-top: -10px; font-size: .9rem; }
.pulse { width: 54px; height: 54px; border-radius: 50%; border: 1px solid var(--rose); position: relative; }
.pulse::after { content: ""; position: absolute; inset: 14px; border-radius: 50%; background: var(--rose-glow); animation: pulse 1.6s ease-in-out infinite; }
@keyframes pulse { 0%, 100% { transform: scale(.6); opacity: .5; } 50% { transform: scale(1); opacity: 1; } }

.admin-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 20px; margin-bottom: 24px; }
.admin-head .title { font-size: clamp(2rem, 1.5rem + 2vw, 2.8rem); }
.muted { color: var(--mink); }
.admin-search { width: min(360px, 100%); }
.status-filter { margin-bottom: 28px; }
.status-filter button {
  min-height: 40px; padding: 0 18px; border-radius: 999px; border: 1px solid var(--line-strong);
  background: none; color: var(--mink); cursor: pointer; font: 400 .92rem var(--sans);
}
.status-filter button[aria-pressed="true"] { background: var(--champagne); border-color: var(--champagne); color: #2a1812; }
.empty { color: var(--mink); padding: 40px 0; text-align: center; border-top: 1px solid var(--line); }

.cand-list { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--line); }
.cand-card { border-bottom: 1px solid var(--line); }
.cand-card summary {
  list-style: none; cursor: pointer; display: grid; grid-template-columns: 1fr auto; gap: 2px 16px; align-items: center;
  padding: 18px 4px;
}
.cand-card summary::-webkit-details-marker { display: none; }
.cand-card summary:hover .cand-name { color: var(--rose-glow); }
.cand-name { font-family: var(--serif); font-size: 1.35rem; transition: color .2s; }
.cand-meta { grid-column: 1; color: var(--mink); font-size: .9rem; }
.badge { grid-row: 1 / span 2; grid-column: 2; font-size: .82rem; padding: 4px 14px; border-radius: 999px; border: 1px solid var(--line-strong); color: var(--rose-glow); white-space: nowrap; }
.badge[data-s="approved"] { color: var(--ok); border-color: rgba(185, 211, 168, .5); }
.badge[data-s="rejected"] { color: var(--no); border-color: rgba(227, 160, 152, .5); }
.badge[data-s="frozen"] { color: var(--mink); }
.badge[data-s="new"] { background: rgba(219, 168, 143, .14); }

.cand-body { display: grid; grid-template-columns: 1.4fr 1fr; gap: 32px; padding: 6px 4px 30px; }
.cand-data { display: grid; grid-template-columns: 150px 1fr; gap: 8px 16px; margin: 0; font-size: .96rem; }
.cand-data dt { color: var(--mink); }
.cand-data dd { margin: 0; overflow-wrap: anywhere; }
.cand-data a { color: var(--rose-glow); }
.cand-manage { display: grid; gap: 16px; align-content: start; padding: 22px; border: 1px solid var(--line); border-radius: var(--radius-m); background: rgba(36, 23, 19, .7); }
.cand-buttons { display: flex; gap: 10px; }
.decide { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.btn-approve { background: rgba(185, 211, 168, .16); border-color: rgba(185, 211, 168, .6); color: var(--ok); }
.btn-approve:hover { background: rgba(185, 211, 168, .28); }
.btn-reject { background: rgba(227, 160, 152, .1); border-color: rgba(227, 160, 152, .5); color: var(--no); }
.btn-reject:hover { background: rgba(227, 160, 152, .22); }
.cand-card.is-done .cand-name { color: var(--mink); }
#listStatus:empty { display: none; }
.btn-danger { color: var(--no); border-color: rgba(227, 160, 152, .4); }
.btn-danger:hover { border-color: var(--no); }

@media (max-width: 800px) {
  .cand-body { grid-template-columns: 1fr; }
  .cand-data { grid-template-columns: 1fr; gap: 2px; }
  .cand-data dd { margin-bottom: 10px; }
  .admin-actions .btn { padding: 0 14px; }
}

.compose-block { display: grid; gap: 10px; border-top: 1px solid var(--line); padding-top: 16px; }
.field-label { font-size: .88rem; color: var(--mink); }

/* Parent approval review */
.parent-review { display: grid; gap: 10px; padding: 16px; border-radius: var(--radius-s); border: 1px solid var(--rose); background: rgba(219, 168, 143, .07); }
.parent-review[hidden], .parent-doc[hidden], .decide[hidden] { display: none; }
.parent-state { margin: 0; color: var(--rose-glow); }
.parent-state[data-s="ok"] { color: var(--ok); }
.parent-state[data-s="rejected"] { color: var(--no); }
.parent-doc { padding: 0; border: 0; background: none; cursor: zoom-in; }
.parent-doc img { display: block; max-width: 100%; max-height: 360px; border-radius: var(--radius-s); background: #fff; object-fit: contain; }
.parent-doc.is-big { position: fixed; inset: 0; z-index: 100; background: rgba(13, 8, 6, .92); display: grid; place-items: center; cursor: zoom-out; padding: 24px; }
.parent-doc.is-big img { max-height: 100%; max-width: 100%; }
.badge-minor { background: transparent; border: 1px solid var(--rose); color: var(--rose-glow); }
.cand-body > .parent-review { grid-column: 1 / -1; justify-items: start; }
.parent-review [hidden] { display: none !important; }

/* Phones: the status filters become one swipeable row instead of many lines */
@media (max-width: 640px) {
  .status-filter {
    flex-wrap: nowrap; overflow-x: auto; overscroll-behavior-x: contain;
    margin-inline: calc(var(--gutter) * -1); padding: 2px var(--gutter) 8px;
    scrollbar-width: none;
  }
  .status-filter::-webkit-scrollbar { display: none; }
  .status-filter button { flex: none; }
  .cand-manage { padding: 16px; }
}

/* A card or message that just arrived glows for a moment */
.cand-card.just-in { animation: just-in 2.4s ease-out; }
.bubble.just-in { animation: just-in 2.4s ease-out; }
@keyframes just-in { 0%, 30% { background-color: rgba(219, 168, 143, .22); } 100% { background-color: transparent; } }
@media (prefers-reduced-motion: reduce) { .cand-card.just-in, .bubble.just-in { animation: none; } }
