/* Admin app layout — desktop-first, sidebar + content */

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  background: var(--bg);
  color: var(--txt);
  font-family: var(--ft);
  min-height: 100vh;
}

#admin-app {
  display: flex;
  min-height: 100vh;
}

/* ── Sidebar ── */

#sidebar {
  width: clamp(180px, 16vw, 220px);
  flex-shrink: 0;
  height: 100vh;
  position: sticky;
  top: 0;
  background: var(--surf);
  border-right: 1px solid var(--bdr);
  display: flex;
  flex-direction: column;
  padding: 0;
}

.sidebar-header {
  padding: 24px 20px 20px;
  border-bottom: 1px solid var(--bdr);
}

.sidebar-title {
  font-family: var(--fh);
  font-size: 18px;
  font-weight: 900;
  color: var(--accent);
  letter-spacing: 1px;
}

.sidebar-sub {
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 700;
  color: var(--txt3);
  text-transform: uppercase;
  letter-spacing: 2px;
  margin-top: 4px;
}

.sidebar-nav {
  display: flex;
  flex-direction: column;
  padding: 12px 0;
}

.sidebar-btn {
  background: none;
  border: none;
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  text-align: left;
  padding: 12px 20px;
  cursor: pointer;
  border-left: 3px solid transparent;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.sidebar-btn:hover {
  background: var(--surf2);
  color: var(--txt);
}

.sidebar-btn.on {
  color: var(--accent);
  border-left-color: var(--accent);
  background: var(--surf2);
}

/* ── Sidebar collapse ── */

.sb-close-btn {
  position: absolute;
  top: 22px;
  right: 10px;
  width: 28px;
  height: 28px;
  background: none;
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt3);
  font-size: 16px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 0.15s, border-color 0.15s;
}
.sb-close-btn:hover { color: var(--accent); border-color: var(--accent); }

.sb-open-btn {
  position: fixed;
  top: 12px;
  left: 12px;
  z-index: 1100;
  width: 36px;
  height: 36px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--accent);
  font-size: 18px;
  cursor: pointer;
  display: none;
  align-items: center;
  justify-content: center;
  transition: opacity 0.2s;
}
.sb-open-btn:hover { background: var(--surf); }

.sidebar-header { position: relative; }

#sidebar { transition: width 0.2s ease, min-width 0.2s ease, opacity 0.15s ease; }

.sb-collapsed #sidebar {
  width: 0;
  min-width: 0;
  overflow: hidden;
  border-right: none;
  padding: 0;
  opacity: 0;
  pointer-events: none;
}
.sb-collapsed .sb-open-btn { display: flex; }

@media (max-width: 1024px) {
  .sb-open-btn { display: flex; }
  #sidebar { position: fixed; z-index: 1050; height: 100vh; }
  .sb-collapsed #sidebar { width: 0; }
  #admin-app:not(.sb-collapsed) .sb-open-btn { display: none; }
  /* Larger tap targets on tablet/mobile */
  .sb-close-btn { width: 44px; height: 44px; font-size: 20px; top: 16px; right: 8px; }
  .sb-link-btn { min-height: 44px; display: flex; align-items: center; justify-content: center; font-size: 13px; }
  .sidebar-btn { min-height: 44px; }
}

/* ── Content area ── */

#content {
  flex: 1;
  padding: 32px clamp(16px, 2.5vw, 40px);
  overflow-y: auto;
  min-width: 0;
}

.domain {
  display: none;
}

.domain.active {
  display: block;
}

.domain-header {
  display: flex;
  align-items: baseline;
  gap: 16px;
  margin-bottom: 24px;
}

.domain-header h2 {
  font-family: var(--fl);
  font-size: 22px;
  color: var(--accent);
  font-weight: 600;
}

.domain-count {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--label-tertiary);
}

.btn-sm {
  font-size: 12px;
  padding: 4px 12px;
  background: var(--surf2);
  color: var(--accent);
  border: 1px solid var(--accent-a40);
  border-radius: 4px;
  cursor: pointer;
  margin-left: auto;
}
.btn-sm:hover { background: var(--surf3); }

.placeholder {
  color: var(--txt3);
  font-style: italic;
  padding: 40px 0;
}

/* ── Login screen ── */

#login-screen {
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 100vh;
  background: var(--bg);
}

.login-box {
  text-align: center;
  max-width: 360px;
  padding: 48px 40px;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 8px;
}

.login-title {
  font-family: var(--fh);
  font-size: 26px;
  color: var(--accent);
  letter-spacing: 1px;
}

.login-sub {
  font-family: var(--fl);
  font-size: 12px;
  color: var(--txt3);
  text-transform: uppercase;
  letter-spacing: 3px;
  margin-top: 4px;
}

.login-desc {
  color: var(--txt2);
  font-size: 14px;
  margin: 24px 0 32px;
  line-height: 1.5;
}

.login-discord-btn {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: var(--discord-bg);
  color: var(--txt-on-dark);
  border: none;
  border-radius: 6px;
  padding: 12px 28px;
  font-family: var(--fl);
  font-size: 15px;
  font-weight: 500;
  cursor: pointer;
  transition: background 0.15s;
}

.login-discord-btn:hover {
  background: var(--discord-bg-hover);
}

.login-error {
  color: var(--err);
  font-size: 13px;
  margin-top: 16px;
  min-height: 1em;
}

/* ── Sidebar footer nav ── */

.sidebar-footer-nav {
  margin-top: auto;
  padding: 12px 16px;
  border-top: 1px solid var(--bdr);
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.sb-link-btn {
  display: block;
  width: 100%;
  padding: 6px 12px;
  background: none;
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  color: var(--label-secondary);
  font-family: var(--fl);
  font-size: 11px;
  font-variant: small-caps;
  font-weight: 600;
  letter-spacing: .06em;
  text-align: center;
  text-decoration: none;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
  white-space: nowrap;
  box-sizing: border-box;
}

.sb-link-btn:hover {
  background: var(--surf2);
  color: var(--txt);
  border-color: var(--accent-a25);
}

/* ── Sidebar user (bottom) ── */

.sidebar-user {
  padding: 16px 20px;
  border-top: 1px solid var(--bdr);
  display: flex;
  align-items: center;
  gap: 10px;
}

.sidebar-avatar {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  flex-shrink: 0;
}

.sidebar-username {
  font-size: 13px;
  color: var(--txt2);
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sidebar-logout {
  background: none;
  border: none;
  color: var(--txt3);
  font-size: 12px;
  cursor: pointer;
  font-family: var(--fl);
  padding: 4px 8px;
  border-radius: 4px;
  transition: color 0.15s, background 0.15s;
}

.sidebar-logout:hover {
  color: var(--err);
  background: var(--crim-a12);
}

.sidebar-player-link {
  display: block;
  font-family: var(--fl);
  font-size: 13px;
  color: var(--accent);
  text-decoration: none;
  padding: 4px 8px;
  margin-bottom: 4px;
  opacity: .7;
  transition: opacity .2s;
}

.sidebar-player-link:hover { opacity: 1; }

.sidebar-dev-badge {
  display: inline-block;
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.12em;
  color: var(--txt-on-dark);
  background: rgba(180, 40, 40, 0.85);
  padding: 2px 7px;
  border-radius: 2px;
  margin: 4px 8px;
  cursor: help;
}

/* ── Character grid — desktop widths ── */

.char-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 12px;
}

.char-card { cursor: pointer; transition: border-color 0.15s; }
.char-card:hover { border-color: var(--accent); }
.char-card.retired { opacity: 0.5; }
.char-card.retired:hover { opacity: 0.75; }
.char-card.unlinked { background: rgba(139, 0, 0, 0.12); border-color: rgba(139, 0, 0, 0.4); }
.char-card.unlinked:hover { border-color: var(--crim); }
.cc-audit { display: flex; gap: 4px; align-items: center; margin-left: auto; flex-shrink: 0; }
.cc-audit-badge { font-size: 11px; padding: 2px 6px; border-radius: 3px; font-family: var(--fl); letter-spacing: .02em; cursor: default; white-space: pre-line; font-weight: 600; }
.cc-audit-err { background: var(--crim-a15); color: var(--crim2); border: 1px solid var(--crim-a25); }
.cc-audit-warn { background: var(--warn-dk-bg); color: var(--warn-dk); border: 1px solid var(--gold2-a25); }
.cc-ordeals {
  margin-left: auto;
  padding: 2px 8px;
  border: 1px solid var(--bdr);
  border-radius: 3px;
  cursor: pointer;
  transition: border-color 0.15s, background 0.15s;
}
.cc-ordeals:hover { border-color: var(--accent); background: var(--accent-a8); }

.retired-divider {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 0;
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 13px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.retired-divider::before,
.retired-divider::after {
  content: '';
  flex: 1;
  height: 1px;
  background: var(--bdr);
}

.cd-header-actions .dt-btn {
  background: none;
  border: 1px solid var(--bdr2);
  color: var(--accent);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  padding: 4px 10px;
  text-decoration: none;
}

.cd-header-actions .dt-btn:hover {
  background: var(--accent-a8);
  border-color: var(--accent);
  color: var(--accent);
}

.cd-header-actions .retire-btn {
  color: var(--err);
  border-color: transparent;
}

.cd-header-actions .retire-btn:hover {
  background: var(--crim-a12);
  border-color: var(--err);
  color: var(--err);
}

/* ── Character detail panel ── */

.char-detail {
  background: var(--surf);
  border: 1px solid var(--accent);
  border-radius: 8px;
  padding: 20px 24px;
  margin-top: 16px;
}

.cd-header {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 16px;
}

.cd-name {
  font-family: var(--fh);
  font-size: 18px;
  color: var(--accent);
  margin: 0;
}

.cd-player {
  font-size: 13px;
  color: var(--txt3);
}

.cd-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
}

.cd-dirty-badge {
  font-size: 13px;
  color: var(--accent);
  background: var(--accent-a8);
  padding: 2px 8px;
  border-radius: 3px;
}

.cd-close {
  background: none;
  border: none;
  color: var(--txt3);
  font-size: 20px;
  cursor: pointer;
  padding: 0 4px;
}

.cd-close:hover { color: var(--txt); }

.cd-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 12px;
  margin-bottom: 16px;
}

.cd-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.cd-label {
  font-size: 13px;
  color: var(--txt3);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  font-family: var(--fl);
}

.cd-field select,
.cd-field input {
  background: var(--bg);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 6px 8px;
  border-radius: 4px;
  font-size: 13px;
}

.cd-hidden { display: none; }

.cd-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.cd-save {
  background: var(--accent);
  color: var(--txt-on-dark);
  border: none;
  padding: 8px 24px;
  border-radius: 4px;
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
}

.cd-save:hover { opacity: 0.9; }

/* Admin-specific cd-sheet margin/border (sheet layout rules are in editor.css) */
.cd-sheet { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--bdr); }

.cd-status { font-size: 13px; }
.cd-saved { color: var(--result-succ); }
.cd-error { color: var(--err); }

/* ── Session log — Engine domain ── */

.log-toolbar {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 16px;
}

.log-date-label {
  font-size: 13px;
  color: var(--txt2);
  display: flex;
  align-items: center;
  gap: 8px;
}

.log-date-input {
  background: var(--surf);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 13px;
}

.log-form {
  display: flex;
  gap: 8px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}

.log-input {
  background: var(--surf);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 6px 10px;
  border-radius: 4px;
  font-size: 13px;
  min-width: 120px;
}

.log-input-wide { flex: 1; min-width: 200px; }

.log-input::placeholder { color: var(--txt3); }

.log-add-btn {
  background: var(--accent);
  color: var(--txt-on-dark);
  border: none;
  padding: 6px 16px;
  border-radius: 4px;
  font-family: var(--fl);
  font-size: 13px;
  cursor: pointer;
  font-weight: 600;
}

.log-add-btn:hover { opacity: 0.9; }

.log-list { display: flex; flex-direction: column; gap: 6px; }

.log-entry {
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 6px;
  padding: 10px 14px;
  gap: 12px;
}

.log-entry-main {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
  flex-wrap: wrap;
}

.log-entry-char {
  font-family: var(--fl);
  font-weight: 600;
  color: var(--accent);
  white-space: nowrap;
}

.log-entry-desc { color: var(--txt); }

.log-entry-result {
  font-weight: 600;
  color: var(--txt2);
  white-space: nowrap;
}

.log-entry-meta {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-shrink: 0;
}
.log-delete-btn {
  background: none;
  border: none;
  color: var(--txt3);
  font-size: 16px;
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 4px;
  opacity: 0;
  transition: opacity .15s;
}
.log-entry:hover .log-delete-btn { opacity: 1; }
.log-delete-btn:hover { color: var(--err); background: var(--crim-a15); }

.log-entry-time {
  font-size: 13px;
  color: var(--txt3);
  font-family: monospace;
}

.log-entry-st {
  font-size: 13px;
  color: var(--txt3);
}

/* ── City domain ── */

.city-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  align-items: start;
}

.city-section-title {
  font-family: var(--fl);
  font-size: 16px;
  color: var(--accent);
  margin: 28px 0 12px;
  font-weight: 600;
}

.city-section-title:first-child { margin-top: 0; }
.city-game-tag { font-size: 13px; color: var(--txt3); font-weight: 400; letter-spacing: .08em; }
.city-map-edit-launch {
  display: block; width: 100%; margin: 0 0 12px;
  padding: 10px 14px;
  background: var(--surf2); border: 1px solid var(--bdr);
  color: var(--accent); font-family: var(--fl); font-size: 13px;
  letter-spacing: .04em; cursor: pointer; border-radius: 6px;
}
.city-map-edit-launch:hover { background: var(--surf3); border-color: var(--accent); }

.asc-columns { display: flex; gap: 24px; }
.asc-block { flex: 1; }
.asc-label { font-family: var(--fl); font-size: 13px; letter-spacing: .1em; text-transform: uppercase; color: var(--txt3); margin-bottom: 8px; }
.asc-card { display: flex; align-items: center; gap: 12px; padding: 14px 16px; background: var(--surf); border: 1px solid var(--bdr); border-radius: 6px; margin-bottom: 6px; min-height: 56px; }
.asc-card img { flex-shrink: 0; }
.asc-name { font-size: 14px; color: var(--txt); flex: 1; }
.asc-val { font-family: var(--fl); font-size: 22px; color: var(--accent); font-weight: 600; }

.terr-card {
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 8px;
  margin-bottom: 12px;
  overflow: hidden;
}
.terr-card-open { border-color: var(--gold-a30); }

.terr-card-hd {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  width: 100%;
  padding: 14px 16px;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  color: inherit;
}
.terr-card-hd:hover { background: var(--surf2); }
.terr-hd-info { flex: 1; min-width: 0; }
.terr-chev { font-size: 10px; color: var(--txt3); padding-top: 3px; flex-shrink: 0; }

.terr-name {
  font-family: var(--fh);
  font-weight: 600;
  color: var(--txt);
  font-size: 14px;
  margin-bottom: 4px;
}

.terr-ambience {
  font-size: 12px;
  color: var(--txt3);
  margin-bottom: 8px;
}

.terr-regent {
  font-size: 13px;
  color: var(--accent);
}

.terr-vacant {
  color: var(--txt3);
  font-style: italic;
}

.terr-lt {
  font-size: 12px;
  color: var(--txt3);
  margin-top: 2px;
}

/* ── Territory expanded feeding rights ── */
.terr-regent-name { color: var(--accent); }
.terr-expand { border-top: 1px solid var(--bdr); padding: 14px 16px 16px; background: var(--surf2); }
.terr-feed-section { }
.terr-feed-label { font-family: var(--fl); font-size: 11px; text-transform: uppercase; letter-spacing: .1em; color: var(--txt3); margin-bottom: 8px; }
.terr-feed-list { display: flex; flex-wrap: wrap; gap: 6px; min-height: 24px; margin-bottom: 10px; }
.terr-feed-empty { font-size: 12px; color: var(--txt3); font-style: italic; }
.terr-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; background: var(--surf); border: 1px solid var(--bdr2); border-radius: 20px; font-size: 12px; color: var(--txt2); }
.terr-chip-rm { background: none; border: none; color: var(--txt3); cursor: pointer; font-size: 14px; line-height: 1; padding: 0 0 0 2px; }
.terr-chip-rm:hover { color: var(--crim); }
.terr-feed-add { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; }
.terr-feed-sel { flex: 1; padding: 6px 8px; background: var(--surf); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt); font-family: var(--ft); font-size: 13px; }
.terr-feed-add-btn { padding: 6px 12px; background: var(--surf); border: 1px solid var(--bdr2); border-radius: 4px; color: var(--txt2); font-family: var(--fl); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
.terr-feed-add-btn:hover { border-color: var(--accent-a40); color: var(--accent); }
.terr-feed-actions { display: flex; align-items: center; gap: 12px; }

/* ── Territory ambience override ── */
.terr-amb-section { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--bdr); }
.terr-amb-mod-inp { width: 64px; padding: 6px 8px; background: var(--surf); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt); font-family: var(--ft); font-size: 13px; }
.terr-amb-level-sel { padding: 6px 8px; background: var(--surf); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt); font-family: var(--ft); font-size: 13px; min-width: 130px; }

/* ── City edit controls ── */
.city-edit-toggle { background: none; border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt3); font-family: var(--fl); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; padding: 6px 12px; cursor: pointer; margin-top: 12px; }
.city-edit-toggle:hover { color: var(--accent); border-color: var(--accent); }
.court-edit-panel, .terr-edit-panel { margin-top: 12px; padding: 16px; background: var(--surf); border: 1px solid var(--bdr); border-radius: 6px; }
.court-edit-grid { display: flex; flex-direction: column; gap: 8px; }
.court-edit-row { display: flex; align-items: center; gap: 12px; }
.court-edit-label { font-family: var(--fl); font-size: 12px; color: var(--accent); min-width: 110px; }
.court-edit-sel, .terr-edit-sel { flex: 1; padding: 6px 8px; background: var(--surf2); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt); font-family: var(--ft); font-size: 13px; }
.city-save-btn { margin-top: 12px; padding: 8px 16px; background: var(--crim); border: 1px solid var(--crim-a70); border-radius: 4px; color: var(--txt-on-dark); font-family: var(--fl); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; cursor: pointer; }
.city-save-btn:hover { filter: brightness(1.2); }
.city-save-status { font-size: 12px; color: var(--green2); margin-left: 12px; }
.terr-edit-block { margin-bottom: 14px; padding-bottom: 14px; border-bottom: 1px solid var(--bdr); }
.terr-edit-block:last-of-type { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.terr-edit-name { font-family: var(--fl); font-size: 13px; color: var(--accent); margin-bottom: 6px; }
.terr-edit-row { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.terr-edit-row label { font-size: 12px; color: var(--txt3); min-width: 80px; }

/* ── Prestige view switcher ── */
.prestige-views { display: flex; gap: 6px; margin-bottom: 8px; }
.prestige-view-btn { padding: 5px 10px; border: 1px solid var(--bdr); border-radius: 4px; background: var(--surf2); color: var(--txt3); font-family: var(--fl); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; }
.prestige-view-btn:hover { border-color: var(--bdr2); color: var(--txt2); }
.prestige-view-btn.prestige-view-on { border-color: var(--accent-a40); color: var(--accent); background: var(--accent-a8); }
.prestige-view-desc { font-size: 13px; color: var(--txt3); font-style: italic; margin-bottom: 10px; }

.court-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.court-row {
  display: flex;
  align-items: center;
  gap: 12px;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 6px;
  padding: 8px 14px;
}

.court-title {
  font-family: var(--fl);
  font-weight: 600;
  color: var(--accent);
  min-width: 120px;
  flex-shrink: 0;
}

.court-name {
  font-size: 14px;
  color: var(--txt);
  flex: 1;
}

.court-detail {
  font-size: 12px;
  color: var(--txt3);
}

.court-edit-category {
  margin-bottom: 8px;
}
.court-slot-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
}
.court-slot-row .court-edit-sel {
  flex: 1;
}
.court-title-input {
  flex: 1;
  padding: 4px 8px;
  font-size: 13px;
  border: 1px solid var(--bdr);
  border-radius: 4px;
  background: var(--surf2);
  color: var(--txt);
}
.court-add-slot-btn {
  font-size: 12px;
  color: var(--accent);
  background: none;
  border: none;
  cursor: pointer;
  padding: 2px 0;
  margin-top: 2px;
}
.court-add-slot-btn:hover { text-decoration: underline; }
.court-remove-slot-btn {
  background: none;
  border: none;
  color: var(--txt3);
  cursor: pointer;
  font-size: 16px;
  line-height: 1;
  padding: 0 4px;
}
.court-remove-slot-btn:hover { color: var(--accent); }

.infl-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.infl-table th {
  text-align: left;
  font-family: var(--fl);
  font-size: 13px;
  color: var(--txt3);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 6px 10px;
  border-bottom: 1px solid var(--bdr);
}

.infl-table td {
  padding: 6px 10px;
  border-bottom: 1px solid var(--bdr);
  color: var(--txt2);
}

.infl-table tr:hover td { background: var(--surf); }

.infl-name {
  color: var(--txt);
  font-weight: 500;
}

.infl-num { text-align: center; }

.infl-total {
  font-weight: 700;
  color: var(--accent);
}

/* ── Spheres panel ── */

.spheres-list {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.sphere-block {
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 10px 12px;
}

.sphere-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 6px;
  padding-bottom: 6px;
  border-bottom: 1px solid var(--bdr);
}

.sphere-name {
  font-family: var(--fl);
  font-size: 15px;
  color: var(--accent);
  letter-spacing: 0.5px;
}

.sphere-total {
  font-size: 12px;
  color: var(--txt3);
  text-transform: uppercase;
}

.sphere-table {
  table-layout: auto;
  width: auto;
  max-width: 100%;
  margin: 0 auto;
}
.sphere-table th,
.sphere-table td { white-space: nowrap; }
.sphere-table .infl-name { white-space: nowrap; padding-right: 20px; }

/* ── Spheres compact grid (City Overview) ── */
.spheres-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 8px;
  padding: 8px 16px;
}
.sphere-card {
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 8px 10px;
}
.sphere-card-list {
  list-style: none;
  margin: 6px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.sphere-card-item {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 8px;
}
.sphere-char-name {
  font-size: 12px;
  color: var(--txt1);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sphere-char-meta {
  font-size: 11px;
  color: var(--txt3);
  white-space: nowrap;
  flex-shrink: 0;
}

.sphere-card-vacant {
  opacity: .55;
}

.sphere-vacant-msg {
  font-size: 12px;
  color: var(--txt3);
  font-style: italic;
  margin: 6px 0 2px;
}

.sphere-dominant .sphere-char-name {
  color: var(--gold2);
  font-weight: 600;
}

/* ── Sphere pyramid redesign ── */
.spheres-grid { grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); }

.sph-pyramid-split { display: flex; gap: 8px; margin-top: 8px; }

.sph-pyramid-col {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.sph-pyramid-col-head {
  font-size: 10px;
  color: var(--txt3);
  text-transform: uppercase;
  letter-spacing: .08em;
  text-align: center;
  padding-bottom: 4px;
  border-bottom: 1px solid var(--bdr);
  margin-bottom: 2px;
}

.sph-apex {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 8px;
  background: var(--surf2);
  border: 1px solid var(--gold2);
  border-radius: 4px;
  min-height: 44px;
}
.sph-apex.sph-vacant {
  justify-content: center;
  border-style: dashed;
  border-color: var(--bdr);
  opacity: .5;
}
.sph-apex-avatar { width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0; background: var(--surf3); object-fit: cover; }
.sph-apex-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.sph-apex-name { font-size: 11px; color: var(--txt); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sph-apex-dots { font-size: 9px; letter-spacing: 1px; color: var(--gold2); }
.sph-apex-val { font-family: var(--fl); font-size: 16px; color: var(--accent); flex-shrink: 0; }

.sph-high-row { display: flex; gap: 4px; }
.sph-high {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 5px 4px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  min-height: 44px;
  text-align: center;
}
.sph-high.sph-vacant { justify-content: center; border-style: dashed; opacity: .45; }
.sph-high-avatar { width: 20px; height: 20px; border-radius: 50%; background: var(--surf3); object-fit: cover; }
.sph-high-name { font-size: 10px; color: var(--txt1); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; width: 100%; }
.sph-high-val { font-size: 10px; color: var(--gold2); font-weight: 600; }
.sph-vacant-label { font-size: 10px; color: var(--txt3); }

.sph-floor { display: flex; flex-direction: column; gap: 3px; margin-top: 2px; }
.sph-floor-bracket { display: flex; align-items: baseline; gap: 4px; flex-wrap: wrap; }
.sph-floor-dots { font-size: 8px; letter-spacing: 1px; color: var(--gold2); flex-shrink: 0; }
.sph-floor-name { font-size: 11px; color: var(--txt1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.sph-contacts-section { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--bdr); }
.sph-contacts-label { font-size: 10px; color: var(--txt3); text-transform: uppercase; letter-spacing: .08em; margin-bottom: 5px; }
.sph-contacts-chips { display: flex; flex-wrap: wrap; gap: 5px; }
.sph-contact-chip {
  display: flex;
  align-items: center;
  gap: 4px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 12px;
  padding: 2px 8px 2px 3px;
}
.sph-contact-avatar { width: 18px; height: 18px; border-radius: 50%; background: var(--surf3); object-fit: cover; }
.sph-contact-name { font-size: 11px; color: var(--txt1); white-space: nowrap; }

/* ── City Overview ambience confirm button ── */
.city-amb-confirm-btn {
  padding: 3px 8px;
  background: var(--surf);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  color: var(--txt2);
  font-size: 11px;
  font-family: var(--fl);
  letter-spacing: .05em;
  cursor: pointer;
  white-space: nowrap;
}
.city-amb-confirm-btn:hover { border-color: var(--accent-a40); color: var(--accent); }

/* ── Downtime domain ── */

.dt-toolbar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 16px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}

.dt-drop-zone {
  flex: 1;
  min-width: 250px;
  border: 2px dashed var(--bdr);
  border-radius: 8px;
  padding: 16px 20px;
  text-align: center;
  color: var(--txt3);
  font-size: 13px;
  transition: border-color 0.15s, background 0.15s;
}

.dt-drop-zone.drag-over {
  border-color: var(--accent);
  background: var(--accent-a8);
}

.dt-file-label {
  color: var(--accent);
  cursor: pointer;
  text-decoration: underline;
}

.dt-btn {
  background: var(--surf);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 8px 16px;
  border-radius: 4px;
  font-family: var(--fl);
  font-size: 13px;
  cursor: pointer;
}

.dt-btn:hover { border-color: var(--accent); }

.dt-cycle-bar {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 10px 16px;
  margin-bottom: 0;
}

.dt-cycle-sel {
  background: var(--surf);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 6px 10px;
  border-radius: 4px;
  font-family: var(--fl);
  font-size: 13px;
  min-width: 200px;
}

.dt-cycle-status {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
/* ── DTUX-1: Cycle Phase Ribbon — clickable tabs with sign-off badges ── */
#dt-phase-ribbon {
  display: flex;
  align-items: stretch;
  justify-content: center;
  background: var(--surf2);
  border-bottom: 2px solid var(--accent);
  overflow-x: auto;
  min-height: 52px;
  gap: 0;
  padding: 0;
}
#dt-sub-ribbon { display: none; } /* DTUX-1: retired; markup remains for cleanup */

/* Clickable phase tabs */
.pr-tab {
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  min-width: 120px;
  padding: 0 24px;
  font-family: var(--fl);
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: transparent;
  border: none;
  border-right: 1px solid var(--bdr);
  color: var(--txt3);
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.pr-tab:last-child { border-right: none; }
.pr-tab:hover { background: var(--surf3); color: var(--txt2); }
.pr-tab-active {
  background: var(--accent);
  color: var(--txt-on-dark);
}
.pr-tab-active:hover { background: var(--accent); color: var(--txt-on-dark); }
.pr-tab-signed { color: var(--txt2); }
.pr-tab-signed.pr-tab-active { color: var(--txt-on-dark); }
.pr-tab-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  font-size: 12px;
  flex-shrink: 0;
}
.pr-tab-badge-signed { color: var(--gold2); }
.pr-tab-badge-empty  { color: var(--txt3); }
.pr-tab-active .pr-tab-badge-signed { color: var(--txt-on-dark); }
.pr-tab-active .pr-tab-badge-empty  { color: rgba(0,0,0,0.45); }
.pr-tab-label { line-height: 1; }

/* Sign-off button (rendered at bottom of each phase body) */
.dt-signoff-btn {
  font-family: var(--fl);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.dt-signoff-signed {
  background: rgba(224, 196, 122, 0.12);
  color: var(--gold2);
  border-color: var(--gold2);
}

/* Issue #231 — Manual "open downtimes" override (DT Prep tab) */
.dt-manual-open-on {
  background: rgba(224, 196, 122, 0.18);
  color: var(--gold2);
  border-color: var(--gold2);
}
.dt-manual-open-banner {
  margin: 0 0 12px;
  padding: 10px 14px;
  background: rgba(224, 196, 122, 0.10);
  border: 1px solid rgba(224, 196, 122, 0.35);
  border-left: 4px solid var(--gold2);
  border-radius: 4px;
  color: var(--txt);
  font-size: 14px;
  line-height: 1.4;
}
.dt-manual-open-banner strong { color: var(--gold2); }
.dt-manual-open-banner em { color: var(--gold2); font-style: italic; }

/* DT Ready panel content */
.dt-ready-content { padding: 24px; }
.dt-ready-title  { margin: 0 0 12px; color: var(--accent); font-family: var(--fh2); }
.dt-ready-summary { margin: 0 0 12px; color: var(--txt2); }
.dt-ready-hint    { margin: 0 0 16px; color: var(--txt3); font-size: 13px; }
.dt-ready-actions { padding-top: 12px; border-top: 1px solid var(--bdr); }

/* Main ribbon steps */
.pr-step {
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  padding: 0 28px;
  font-family: var(--fl);
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  position: relative;
  cursor: default;
}
.pr-step-num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  font-size: 11px;
  font-family: var(--fl);
  flex-shrink: 0;
}
.pr-done {
  color: rgba(224, 196, 122, 0.45);
}
.pr-done .pr-step-num {
  background: rgba(224, 196, 122, 0.15);
  color: rgba(224, 196, 122, 0.6);
  border: 1px solid rgba(224, 196, 122, 0.25);
}
.pr-active {
  color: var(--txt-on-dark);
  background: var(--accent);
}
.pr-active .pr-step-num {
  background: rgba(0,0,0,0.25);
  color: var(--txt-on-dark);
  border: none;
}
.pr-future {
  color: var(--txt3);
}
.pr-future .pr-step-num {
  background: var(--surf3);
  color: var(--txt3);
  border: 1px solid var(--bdr2);
}

/* Arrow connectors between main steps */
.pr-connector {
  width: 0;
  height: 0;
  border-top: 26px solid transparent;
  border-bottom: 26px solid transparent;
  border-left: 14px solid var(--surf2);
  flex-shrink: 0;
  position: relative;
  z-index: 1;
}
.pr-connector::before {
  content: '';
  position: absolute;
  top: -24px;
  left: -16px;
  width: 0;
  height: 0;
  border-top: 24px solid transparent;
  border-bottom: 24px solid transparent;
  border-left: 12px solid var(--surf3);
}

/* Sub-ribbon steps */
.pr-sub {
  white-space: nowrap;
  padding: 4px 12px;
  border-radius: 10px;
  font-size: 11px;
  letter-spacing: 0.03em;
}
.pr-sub.pr-done {
  color: rgba(224, 196, 122, 0.6);
  opacity: 1;
}
.pr-sub.pr-active {
  color: var(--accent);
  background: var(--accent-a8);
  border: 1px solid var(--accent-a25);
  font-weight: 600;
}
.pr-sub.pr-future {
  color: var(--txt3);
}
.pr-sub-connector {
  display: inline-block;
  width: 20px;
  height: 1px;
  background: var(--divider-neutral);
  vertical-align: middle;
  flex-shrink: 0;
}

/* ── Outer dashboard panels: canonical chrome (CSS-7, +CSS-9) ── */
.dt-snapshot-panel,
.dt-scene-panel,
.dt-matrix-panel,
.dt-conflict-panel,
.dt-chk-panel,
.dt-inv-panel,
.proc-amb-dashboard,
.proc-phase-section,
.proc-attach-panel,
.dt-story-section {
  border: 1px solid var(--bdr);
  border-radius: 6px;
  overflow: hidden;
  margin-bottom: 12px;
}

/* ── Collapsible panel headers: canonical loud (CSS-7) ── */
.dt-snapshot-toggle,
.dt-scene-toggle,
.dt-chk-toggle,
.dt-matrix-toggle,
.proc-phase-header,
.proc-amb-header,
.proc-disc-header {
  padding: 10px 16px;
  background: var(--surf2);
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 600;
  color: var(--accent);
  border-bottom: 1px solid var(--bdr);
  cursor: pointer;
  user-select: none;
  display: flex;
  align-items: center;
  gap: 10px;
}
.dt-snapshot-toggle:hover,
.dt-scene-toggle:hover,
.dt-chk-toggle:hover,
.dt-matrix-toggle:hover,
.proc-phase-header:hover,
.proc-amb-header:hover,
.proc-disc-header:hover { background: var(--surf3, var(--surf2)); }

/* ── Cycle Snapshot (GC-4) ── */
.dt-snapshot-body { padding: 12px 16px; }
.dt-snapshot-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  margin-bottom: 16px;
}
.dt-snapshot-table th {
  text-align: left;
  font-family: var(--fl);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--txt3);
  padding: 4px 10px 6px;
  border-bottom: 1px solid var(--bdr);
}
.dt-snapshot-table td {
  padding: 5px 10px;
  color: var(--txt2);
  border-bottom: 1px solid var(--surf2);
}
.dt-snapshot-table tbody tr:last-child td { border-bottom: none; }
.dt-snap-val {
  font-variant-numeric: tabular-nums;
  color: var(--accent);
  font-weight: 600;
  text-align: right;
}
.dt-snapshot-factions {
  display: flex;
  gap: 32px;
  flex-wrap: wrap;
}
.dt-snapshot-faction-col { flex: 1; min-width: 180px; }
.dt-snapshot-head {
  font-family: var(--fl);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--txt3);
  margin-bottom: 6px;
}
.dt-snap-faction-row {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  color: var(--txt2);
  padding: 3px 0;
  border-bottom: 1px solid var(--surf2);
}

/* ── Regency bar (GC-1) ── */

.dt-btn-sm {
  padding: 4px 10px;
  font-size: 12px;
}

.dt-deadline { font-family: var(--fl); font-size: 12px; color: var(--txt-dim); }
.dt-deadline-past { color: var(--crim); font-weight: 600; }
.dt-deadline-edit { display: flex; align-items: center; gap: 6px; font-family: var(--fl); font-size: 12px; color: var(--txt-dim); margin-left: 8px; }
.dt-deadline-input {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 2px 6px;
  border-radius: 4px;
  font-family: var(--fl);
  font-size: 12px;
  color-scheme: dark;
}

.dt-regency-edit { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--txt-dim); margin-left: 8px; }
.dt-regency-sel {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 2px 6px;
  border-radius: 4px;
  font-family: var(--fl);
  font-size: 12px;
  max-width: 180px;
}
.dt-regency-badge { font-size: 12px; color: var(--accent); margin-left: 8px; }

.dt-cycle-info {
  display: flex;
  align-items: baseline;
  gap: 12px;
  margin-bottom: 16px;
}

.dt-cycle-label {
  font-family: var(--fl);
  font-size: 15px;
  font-weight: 600;
  color: var(--accent);
}

.dt-warnings { margin-bottom: 12px; }

.dt-warn {
  color: var(--crim2);
  font-size: 12px;
  padding: 4px 0;
}

.dt-success {
  color: var(--result-succ);
  font-size: 12px;
  padding: 4px 0;
}

.dt-sub-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 10px;
}

.dt-sub-card {
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 6px;
  padding: 10px 14px;
}

.dt-sub-top {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}

.dt-sub-name {
  font-family: var(--fl);
  font-weight: 600;
  color: var(--accent);
  font-size: 13px;
}

.dt-sub-player {
  font-size: 12px;
  color: var(--txt3);
  flex: 1;
}

.dt-attended { color: var(--result-succ); font-size: 13px; }
.dt-absent { color: var(--crim2); font-size: 13px; }

.dt-sub-stats {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.dt-sub-tag {
  font-size: 13px;
  color: var(--txt2);
  background: var(--bg);
  padding: 2px 8px;
  border-radius: 3px;
}

.dt-sub-list { display: flex; flex-direction: column; gap: 8px; }

.dt-sub-clickable { cursor: pointer; }
.dt-sub-card:hover { border-color: var(--accent); }
.dt-sub-expanded { border-color: var(--accent); }
.dt-sub-unmatched { border-color: var(--crim); }

.dt-match-icon { color: var(--result-succ); font-size: 12px; }
.dt-unmatch-icon { color: var(--crim2); font-size: 12px; }

/* ── Player Responses panel ── */
.dt-resp-panel {
  margin: 8px 0 12px;
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 10px 14px;
  background: rgba(0,0,0,0.15);
}
.dt-panel { margin: 8px 0 12px; }

/* ── Title tiers (CSS-10): T1 panel header label ── */
.dt-panel-title,
.proc-mod-panel-title,
.dt-feed-header,
.dt-prep-early-title,
.proc-amb-title,
.proc-attach-char-header,
.dt-narr-label {
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--accent);
  margin-bottom: 8px;
}

/* ── T2 sub-label / field label ── */
.proc-detail-label,
.proc-detail-section-title,
.dt-merit-summary-group-label,
.dt-conflict-section-head,
.dt-resp-section-title {
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-bottom: 6px;
}

/* ── T3 micro-label ── */
.dt-lbl,
.dt-exp-lbl,
.proc-feed-lbl,
.proc-char-strip-label {
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--txt3);
}

.dt-resp-section { margin-bottom: 10px; }
.dt-resp-section-title {
  border-bottom: 1px solid var(--bdr);
  padding-bottom: 3px;
}
.dt-resp-row {
  display: flex;
  gap: 10px;
  padding: 2px 0;
  font-size: 13px;
  line-height: 1.5;
  align-items: baseline;
}
.dt-resp-label {
  flex: 0 0 140px;
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 600;
  color: var(--txt3);
}
.dt-resp-val {
  flex: 1;
  font-family: var(--ft);
  font-size: 12px;
  color: var(--txt);
  white-space: pre-wrap;
  word-break: break-word;
}
/* Value-only rows (projects, sorcery, equipment) — indent to match the label column */
.dt-resp-row:not(:has(.dt-resp-label)) .dt-resp-val {
  padding-left: 150px;
}

.dt-match-bar {
  display: flex;
  gap: 16px;
  align-items: center;
  justify-content: center;
  font-family: var(--fl);
  font-size: 12px;
  margin-bottom: 12px;
}

.dt-match-ok { font-family: var(--fl); color: var(--result-succ); }
.dt-match-warn { font-family: var(--fl); color: var(--crim2); }

.dt-btn-gold { background: var(--accent); color: var(--bg); font-weight: 600; }
.dt-btn-gold:hover { opacity: 0.9; border-color: var(--accent); }

.dt-roll-badge {
  font-size: 13px;
  padding: 1px 8px;
  border-radius: 3px;
  margin-left: auto;
}
.dt-roll-badge.rolled { background: var(--result-succ-bg); color: var(--result-succ); }
.dt-roll-badge.unrolled { background: var(--bg); color: var(--txt3); }

.dt-feed-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--txt2);
  margin-bottom: 6px;
  flex-wrap: wrap;
}

.dt-feed-lbl {
  font-size: 13px;
  color: var(--txt3);
  min-width: 70px;
  flex-shrink: 0;
}

.dt-feed-roll-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
  flex-wrap: wrap;
}

.dt-pool-input {
  width: 50px;
  background: var(--bg);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 4px 6px;
  border-radius: 4px;
  font-size: 13px;
  text-align: center;
}

.dt-feed-roll-btn { padding: 4px 12px; font-size: 12px; }

.dt-feed-result {
  font-weight: 600;
  font-size: 13px;
}
.dt-feed-result.normal { color: var(--txt); }
.dt-feed-result.exceptional { color: var(--accent); }
.dt-feed-result.failure { color: var(--crim2); }

.dt-feed-dice {
  font-family: monospace;
  font-size: 13px;
  color: var(--txt3);
}

.dt-feed-vessels {
  font-size: 12px;
  color: var(--txt2);
}

.dt-method-btns {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.dt-method-btn {
  background: var(--bg);
  border: 1px solid var(--bdr);
  color: var(--txt2);
  padding: 3px 10px;
  border-radius: 4px;
  font-size: 13px;
  cursor: pointer;
}

.dt-method-btn:hover { border-color: var(--accent); }
.dt-method-btn.selected { border-color: var(--accent); color: var(--accent); background: var(--accent-a8); }

.dt-pool-breakdown {
  font-size: 13px;
  color: var(--txt2);
}

.dt-pool-breakdown b { color: var(--accent); }

.dt-rote-label { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--txt2); cursor: pointer; }
.dt-rote-label input[type="checkbox"] { accent-color: var(--accent); width: 14px; height: 14px; }
.dt-rote-hint { font-size: 11px; color: var(--accent); font-family: var(--fl); text-transform: uppercase; letter-spacing: .04em; }

/* ── Approval status ── */
.dt-status-badge {
  font-family: var(--fl);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 2px 8px;
  border-radius: 3px;
  white-space: nowrap;
}
.dt-status-pending { background: rgba(138, 126, 110, 0.15); color: var(--txt3); }
.dt-status-approved { background: var(--result-succ-bg); color: var(--result-succ); }
.dt-status-game { background: var(--accent-a8); color: var(--accent); font-weight: 600; }
.dt-status-prep { background: var(--surf2); color: var(--txt3); font-weight: 600; }
.dt-prep-panel { padding: 16px; border-bottom: 1px solid var(--bdr); }
/* DTUX-1: data-subtab CSS hotfix from DTSR-3 removed — panel visibility now
   driven directly by the phase ribbon's showDtuxPhase(). */
.dt-prep-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.dt-prep-field { display: flex; flex-direction: column; gap: 4px; }
.dt-prep-early { margin-bottom: 16px; }
.dt-early-list { max-height: 360px; overflow-y: auto; border: 1px solid var(--bdr); border-radius: 4px; }
.dt-early-toggle-row { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; border-bottom: 1px solid var(--bdr); cursor: pointer; transition: background .1s; }
.dt-early-toggle-row:last-child { border-bottom: none; }
.dt-early-toggle-row:hover { background: var(--surf2); }
.dt-early-name { font-size: 13px; color: var(--txt); }
.dt-early-toggle { width: 18px; height: 18px; accent-color: var(--accent); cursor: pointer; }
.dt-early-row { display: flex; align-items: center; justify-content: space-between; padding: 4px 0; font-size: 13px; }
.dt-prep-add-row { display: flex; gap: 8px; margin-top: 8px; }
.dt-prep-actions { padding-top: 8px; border-top: 1px solid var(--bdr); }

/* CHM-2: chapter-finale maintenance audit (rendered inside dt-prep-panel) */
.dt-maintenance-audit { margin-top: 16px; padding-top: 16px; border-top: 1px solid var(--bdr); }
.dt-maintenance-title { margin: 0 0 4px; font-family: var(--fh2); font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); }
.dt-maintenance-sub-label { font-size: 11px; color: var(--txt3); letter-spacing: 0; text-transform: none; }
.dt-maintenance-sub { margin: 0 0 10px; font-size: 12px; color: var(--txt3); font-style: italic; }
.dt-maintenance-empty { font-size: 13px; color: var(--txt3); font-style: italic; margin: 0; }
.dt-maintenance-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.dt-maintenance-table th { text-align: left; padding: 6px 8px; border-bottom: 1px solid var(--bdr); font-weight: 600; color: var(--txt2); }
.dt-maintenance-table th:nth-child(2), .dt-maintenance-table th:nth-child(3) { text-align: center; width: 60px; }
.dt-maintenance-table td { padding: 6px 8px; border-bottom: 1px solid var(--bdr); color: var(--txt); }
.dt-maintenance-cell { text-align: center; vertical-align: middle; }
.dt-maintenance-tick { width: 16px; height: 16px; accent-color: var(--accent); cursor: pointer; }
.dt-maintenance-cults { font-size: 10px; color: var(--txt3); margin-top: 2px; line-height: 1.3; }
.dt-btn-new { background: var(--accent); color: var(--bg); border-color: var(--accent); }
.dt-btn-new:hover { opacity: .85; }
.dt-status-modified { background: var(--accent-a8); color: var(--accent); }
.dt-status-rejected { background: var(--crim-a15); color: var(--crim2); }
.dt-btn-game { border-color: var(--accent); color: var(--accent); }
.dt-btn-export { border-color: var(--txt3); color: var(--txt3); }
.dt-export-row { display: flex; align-items: center; gap: 1rem; padding: .75rem 1rem; border-top: 1px solid var(--surf3); }
.dt-export-hint { font-size: .8rem; color: var(--txt3); }

.dt-sub-approved { border-left: 3px solid var(--result-succ); }
.dt-sub-modified { border-left: 3px solid var(--accent); }
.dt-sub-rejected { border-left: 3px solid var(--crim2); }

/* ── Feeding Scene Summary (GC-2) ── */
.dt-scene-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.dt-scene-table th {
  padding: 6px 12px;
  text-align: left;
  font-family: var(--fl);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--txt3);
  background: var(--surf);
  border-bottom: 1px solid var(--bdr);
}
.dt-scene-table td {
  padding: 7px 12px;
  border-bottom: 1px solid var(--bdr);
  color: var(--txt2);
}
.dt-scene-table tbody tr:last-child td { border-bottom: none; }
.dt-scene-nosub td { opacity: 0.6; }
.dt-scene-nosub-badge {
  font-size: 10px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  padding: 1px 5px;
  color: var(--txt3);
  margin-left: 6px;
  vertical-align: middle;
}
.dt-scene-name { color: var(--txt); font-weight: 500; }
.dt-scene-pool { font-variant-numeric: tabular-nums; font-weight: 600; color: var(--accent); }
.dt-scene-amb {
  font-size: 11px;
  background: var(--surf2);
  border-radius: 3px;
  padding: 1px 6px;
  color: var(--txt2);
}
.dt-scene-mod { color: var(--txt3); font-size: 10px; }
.dt-scene-dim { color: var(--txt3); }
.dt-scene-rote-lbl { cursor: pointer; }

/* ── Feeding Matrix & Conflicts ── */
/* City Overview header: toggle + export button side by side */
.dt-city-panel-head {
  display: flex;
  align-items: stretch;
  border-bottom: 1px solid var(--bdr);
}
.dt-city-title {
  flex: 1;
  border-bottom: none; /* parent supplies border */
}
.dt-city-export-btn {
  align-self: center;
  margin-right: 12px;
  padding: 4px 12px;
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  background: transparent;
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt3);
  cursor: pointer;
  white-space: nowrap;
}
.dt-city-export-btn:hover { border-color: var(--accent); color: var(--accent); }
/* City Overview: actions section header (no toggle, always shown) */
.dt-city-actions-head { cursor: default; }
.dt-city-actions-head:hover { background: var(--surf2); }
.dt-matrix-wrap { overflow-x: auto; }
.dt-matrix-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.dt-matrix-table th, .dt-matrix-table td { padding: 5px 8px; border: 1px solid var(--bdr); text-align: center; }
.dt-matrix-table th { background: var(--surf2); font-family: var(--fl); font-size: 11px; }
.dt-matrix-char { text-align: left; font-size: 12px; white-space: nowrap; }
.dt-matrix-amb { font-size: 10px; color: var(--txt-dim); font-family: var(--ft); }
.dt-matrix-resident { background: var(--result-succ-bg); color: var(--green3); font-weight: 700; }
.dt-matrix-poach { background: var(--warn-dk-bg); color: var(--warn-dk); font-weight: 700; }
.dt-matrix-other { color: var(--txt-dim); }
.dt-matrix-empty { color: var(--txt-dim); opacity: .4; }
.dt-matrix-overcap { background: rgba(139,0,0,.15); color: var(--crim); font-weight: 700; }
.dt-matrix-row { cursor: pointer; }
.dt-matrix-row:hover td { background: var(--surf2); }
.dt-matrix-nosub td { opacity: .45; }
.dt-matrix-nosub-badge { font-size: 10px; color: var(--txt-dim); font-style: italic; margin-left: 4px; }
.dt-matrix-note { font-size: 11px; color: var(--txt-dim); padding: 6px 12px; margin: 0; display: inline; margin-left: 8px; }
/* ── Submission Checklist (feature.55) ── */
.dt-proc-sticky {
  position: sticky;
  top: 0;
  z-index: 20;
  background: var(--bg);
  padding-bottom: 4px;
}

.dt-chk-wrap { overflow-x: auto; }
.dt-chk-table { width: 100%; border-collapse: collapse; font-size: 12px; }
.dt-chk-table th, .dt-chk-table td { padding: 4px 6px; border: 1px solid var(--bdr); text-align: center; }
.dt-chk-table th { background: var(--surf2); font-family: var(--fl); font-size: 11px; }
.dt-chk-name-col { text-align: left; }
.dt-chk-name { text-align: left; white-space: nowrap; font-family: var(--fl); font-size: 12px; font-variant: small-caps; font-weight: 600; color: var(--txt2); }
.dt-chk-nosub td { opacity: .45; }
.dt-chk-nosub-badge { font-size: 10px; color: var(--txt-dim); font-style: italic; margin-left: 4px; }
.dt-chk-empty     { color: var(--txt-dim); opacity: .4; }
.dt-chk-unsighted { color: var(--txt3); font-weight: 600; }
.dt-chk-sighted   { color: var(--txt2); font-weight: 700; }
.dt-chk-confirmed { color: var(--accent); font-weight: 700; }
.dt-chk-drafted   { color: var(--gold2); opacity: .85; }
.dt-chk-dice      { color: var(--txt2); }
.dt-chk-no-action { color: var(--txt2); }
.dt-chk-nav       { cursor: pointer; }
.dt-chk-nav:hover { background: var(--surf2); }
.dt-chk-legend      { margin-left: auto; font-size: 11px; font-weight: 400; color: var(--txt3); letter-spacing: .01em; }

.dt-conflict-list { padding: 8px 12px; }
.dt-conflict-section-head { padding: 6px 0 4px; }
.dt-conflict-item { font-size: 12px; padding: 6px 0; border-bottom: 1px solid var(--bdr); }
.dt-conflict-item:last-child { border-bottom: none; }
.dt-conflict-type { font-family: var(--fl); color: var(--accent); }
.dt-conflict-char { color: var(--accent); cursor: pointer; text-decoration: underline; font-family: var(--fl); }
.dt-conflict-char:hover { color: var(--txt); }
.dt-conflict-unknown { display: flex; flex-direction: column; gap: 4px; padding: 8px 0; }
.dt-conflict-unknown-who { font-family: var(--fl); font-size: 12px; font-weight: 600; }
.dt-conflict-unknown-who em { font-style: normal; color: var(--txt3); font-weight: 400; }
.dt-conflict-unknown-desc { font-family: var(--ft); font-size: 11px; color: var(--txt3); font-style: italic; line-height: 1.4; }
.dt-conflict-unknown-assign { display: flex; align-items: center; gap: 8px; margin-top: 2px; }
.dt-conflict-terr-sel { font-family: var(--fl); font-size: 12px; padding: 4px 8px; background: var(--surf); border: 1px solid var(--bdr2); border-radius: 4px; color: var(--txt); cursor: pointer; }

/* ── Territories at a Glance ── */
.dt-taag-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  font-family: var(--fl);
}
.dt-taag-table th {
  padding: 6px 10px;
  background: var(--surf2);
  color: var(--txt2);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  border-bottom: 1px solid var(--bdr);
  white-space: nowrap;
  text-align: left;
}
.dt-taag-table th:not(:first-child) { text-align: center; }
.dt-taag-table td {
  padding: 5px 8px;
  border-bottom: 1px solid var(--bdr);
  vertical-align: top;
}
.dt-taag-table tr:last-child td { border-bottom: none; }
.dt-taag-phase-lbl {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--txt3);
  white-space: nowrap;
}
.dt-taag-cell {
  text-align: center;
}
.dt-taag-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  justify-content: center;
}
.dt-taag-chip {
  display: inline-block;
  font-size: 10px;
  font-family: var(--fl);
  font-weight: 600;
  background: var(--accent-a8);
  color: var(--accent);
  border: 1px solid var(--accent-a40);
  border-radius: 3px;
  padding: 2px 7px;
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.1s;
}
.dt-taag-chip:hover { background: var(--accent-a25); }
.dt-taag-empty { color: var(--txt-dim); opacity: .3; font-size: 11px; }

/* ── Territory pill row (beneath proc-action-row for project entries) ── */
.proc-terr-pill-row {
  display: flex;
  align-items: center;
  gap: 5px;
}
.proc-terr-pill-label {
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-right: 2px;
  white-space: nowrap;
}
.proc-terr-pill {
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 600;
  padding: 2px 8px;
  border: 1px solid var(--bdr2);
  border-radius: 10px;
  background: none;
  color: var(--txt3);
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.1s, color 0.1s;
}
.proc-terr-pill:hover { background: var(--surf3); color: var(--txt); }
.proc-terr-pill.active {
  background: var(--accent-a8);
  color: var(--accent);
  border-color: var(--accent-a40);
  font-weight: 700;
}

/* ── Inline detail panels: canonical chrome (CSS-6) ── */
.dt-proj-slot,
.proc-feed-mod-panel,
.proc-feed-vitae-panel,
.proc-proj-succ-panel,
.proc-feed-right-section,
.proc-proj-roll-card,
.proc-pool-builder,
.proc-narr-action-ref,
.proc-acq-notes,
.proc-feed-info,
.proc-feed-desc-card,
.proc-proj-detail,
.proc-player-note-section,
.proc-proj-contested-panel,
.proc-xref-callout {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 6px;
  padding: 10px 12px;
}

/* ── Project & Merit Resolution Panels ── */
.dt-proj-slot {
  margin-bottom: 8px;
}
.dt-proj-resolved { border-left: 3px solid var(--green3); }
.dt-proj-unresolved { border-left: 3px solid var(--accent); }
.dt-proj-header { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.dt-proj-type { font-family: var(--fl); font-size: 13px; font-weight: 600; color: var(--accent); }
.dt-merit-action-type { font-size: 12px; color: var(--txt-dim); }
.dt-proj-done-badge { font-size: 11px; color: var(--green3); background: var(--result-succ-bg); padding: 1px 6px; border-radius: 10px; }
.dt-proj-pending-badge { font-size: 11px; color: var(--accent); background: var(--accent-a8); padding: 1px 6px; border-radius: 10px; }
.dt-merit-passive { font-size: 11px; color: var(--txt-dim); }
.dt-proj-outcome { font-size: 12px; color: var(--txt-dim); margin-bottom: 4px; }
.dt-proj-field { font-size: 12px; color: var(--txt2); padding: 2px 0; }
.dt-proj-lbl { color: var(--accent); font-family: var(--fl); font-size: 11px; letter-spacing: .03em; }
.dt-proj-desc { font-size: 12px; margin: 6px 0 8px; white-space: pre-wrap; color: var(--txt2); border-left: 2px solid var(--bdr); padding-left: 10px; }
.dt-merit-warn { font-size: 11px; color: var(--crim); background: rgba(139,0,0,.08); border-radius: 4px; padding: 4px 8px; margin: 4px 0; }
.dt-pool-builder { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 6px 0; }
.dt-pool-sel { background: var(--surf); border: 1px solid var(--bdr); color: var(--txt); padding: 3px 6px; border-radius: 4px; font-family: var(--fl); font-size: 12px; }
.dt-pool-mod { width: 60px; background: var(--surf); border: 1px solid var(--bdr); color: var(--txt); padding: 3px 6px; border-radius: 4px; font-family: var(--fl); font-size: 12px; text-align: center; }
.dt-pool-display { font-size: 12px; color: var(--accent); font-family: var(--fl); }
.dt-resolve-badge { font-size: 12px; padding: 2px 8px; border-radius: 10px; margin: 4px 0; display: inline-block; }
.dt-succ-ok { background: var(--result-succ-bg); color: var(--green3); }
.dt-succ-exc { background: var(--accent-a8); color: var(--accent); }
.dt-succ-fail { background: rgba(139,0,0,.12); color: var(--crim); }
.dt-proj-note { width: 100%; margin-top: 6px; background: var(--surf); border: 1px solid var(--bdr); color: var(--txt); padding: 5px 8px; border-radius: 4px; font-size: 12px; resize: vertical; min-height: 48px; box-sizing: border-box; }
.dt-proj-rote-lbl { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; margin-left: 6px; cursor: pointer; }
.dt-proj-writeup { width: 100%; margin-top: 4px; background: var(--surf); border: 1px solid var(--bdr); border-left: 3px solid var(--accent); color: var(--txt); padding: 5px 8px; border-radius: 4px; font-size: 12px; resize: vertical; min-height: 48px; box-sizing: border-box; }
.dt-skill-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 4px; }
.dt-pool-9a-auto { display: inline-block; background: var(--result-succ-bg); color: var(--green3); border-radius: 3px; padding: 1px 6px; font-size: 11px; font-weight: 600; }
.dt-spec-toggle-lbl { display: inline-flex; align-items: center; gap: 3px; font-size: 11px; cursor: pointer; color: var(--txt-dim); }
.dt-spec-toggle-lbl:hover { color: var(--txt); }
.dt-skill-meta-spec { display: inline-block; background: var(--accent-a8); color: var(--accent); border-radius: 3px; padding: 1px 6px; font-size: 11px; }

/* ── Detail wrapper sections: shared (CSS-8) ── */
.dt-feed-detail,
.dt-narr-detail,
.dt-mech-detail,
.dt-publish-panel,
.dt-approval-detail,
.dt-exp-panel,
.dt-notes-detail,
.dt-proj-detail,
.dt-merit-detail,
.proc-response-review-section,
.proc-retag-row {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--bdr);
}

/* ── Narrative Output (1.7) ── */
.dt-style-guide { margin-bottom: 8px; font-size: 12px; color: var(--txt-dim); }
.dt-style-guide summary { cursor: pointer; color: var(--accent); font-family: var(--fl); font-size: 12px; }
.dt-style-list { margin: 6px 0 0 16px; padding: 0; }
.dt-style-list li { margin-bottom: 3px; }
.dt-narr-block { margin-bottom: 10px; }
.dt-narr-block-header { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; margin-bottom: 4px; }
.dt-narr-hint { font-size: 11px; color: var(--txt-dim); flex: 1; }
.dt-narr-status-row { display: flex; gap: 4px; }
.dt-narr-status-btn { font-size: 11px; padding: 1px 8px; border: 1px solid var(--bdr); border-radius: 10px; background: transparent; color: var(--txt-dim); cursor: pointer; }
.dt-narr-status-btn.active { border-color: var(--accent); color: var(--accent); background: var(--accent-a8); }
.dt-narr-textarea { width: 100%; background: var(--surf); border: 1px solid var(--bdr); color: var(--txt); padding: 6px 8px; border-radius: 4px; font-size: 12px; font-family: var(--ft); resize: vertical; min-height: 100px; box-sizing: border-box; line-height: 1.5; }
.dt-narr-badge { font-size: 11px; color: var(--green3); background: var(--result-succ-bg); padding: 1px 8px; border-radius: 10px; margin-left: 8px; }

/* ── Mechanical Summary (1.8) ── */
.dt-mech-compiled {
  font-family: var(--ft);
  font-size: 12px;
  color: var(--txt);
  line-height: 1.6;
  white-space: pre-wrap;
  word-break: break-word;
  margin-top: 6px;
}
.dt-mech-compiled.dt-mech-empty {
  font-family: var(--fl);
  font-size: 11px;
  color: var(--txt3);
  font-style: italic;
}

/* ── Publish Panel (1.9) ── */
.dt-publish-row { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.dt-publish-status { font-size: 12px; color: var(--txt-dim); }
.dt-pub-status { display: flex; align-items: center; gap: 8px; }
.dt-pub-when { font-size: 11px; color: var(--txt-dim); }
.dt-publish-ready { border-color: var(--green3) !important; color: var(--green3) !important; }
.dt-pub-badge { font-family: var(--fl); font-size: 11px; color: var(--green3); background: var(--result-succ-bg); padding: 1px 8px; border-radius: 10px; white-space: nowrap; }
.dt-ready-badge { font-family: var(--fl); font-size: 11px; color: var(--accent); background: var(--accent-a8); padding: 1px 8px; border-radius: 10px; white-space: nowrap; }
.dt-publish-hint { font-size: 11px; color: var(--txt-dim); }

/* ── Investigation Tracker (1.5) ── */
.dt-inv-body { padding: 10px 12px; }
.dt-inv-new-wrap { margin-bottom: 10px; }
.dt-inv-new-wrap summary { font-size: 12px; }
.dt-inv-form { padding: 8px 0; }
.dt-inv-row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.dt-inv-input { background: var(--surf); border: 1px solid var(--bdr); color: var(--txt); padding: 3px 8px; border-radius: 4px; font-size: 12px; margin-bottom: 6px; box-sizing: border-box; width: 100%; }
.dt-inv-item { border: 1px solid var(--bdr); border-radius: 6px; padding: 8px 10px; margin-bottom: 8px; }
.dt-inv-resolved { opacity: .65; border-left: 3px solid var(--green3); }
.dt-inv-header { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.dt-inv-target { font-family: var(--fl); font-size: 13px; }
.dt-inv-type-badge { font-size: 11px; color: var(--txt-dim); background: var(--surf2); padding: 1px 6px; border-radius: 8px; }
.dt-inv-investigator { font-size: 11px; color: var(--txt-dim); margin-bottom: 4px; }
.dt-inv-progress-wrap { position: relative; background: var(--surf2); border-radius: 4px; height: 18px; margin: 4px 0; overflow: hidden; }
.dt-inv-progress-bar { height: 100%; background: var(--accent); opacity: .5; transition: width .3s; }
.dt-inv-progress-label { position: absolute; left: 8px; top: 1px; font-size: 11px; line-height: 16px; color: var(--txt); }
.dt-inv-add-row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-top: 6px; }
.dt-inv-notes { margin-top: 6px; }
.dt-inv-note-entry { font-size: 11px; color: var(--txt-dim); padding: 2px 0; border-bottom: 1px solid var(--bdr); }
.dt-inv-note-entry:last-child { border-bottom: none; }
.dt-inv-note-when { color: var(--accent); }

.dt-approval-btns {
  display: flex;
  gap: 6px;
  margin-bottom: 10px;
}

.dt-approval-btn {
  font-family: var(--fl);
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 5px 14px;
  border-radius: 4px;
  border: 1px solid var(--bdr);
  background: var(--bg);
  color: var(--txt3);
  cursor: pointer;
}

.dt-approval-btn:hover { border-color: var(--txt3); }

.dt-appr-approved.active { background: var(--result-succ-bg); color: var(--result-succ); border-color: var(--result-succ); }
.dt-appr-modified.active { background: var(--accent-a8); color: var(--accent); border-color: var(--accent); }
.dt-appr-rejected.active { background: rgba(178, 34, 34, 0.15); color: var(--crim2); border-color: var(--crim2); }
.dt-appr-pending.active { background: rgba(138, 126, 110, 0.15); color: var(--txt3); border-color: var(--txt3); }

/* ── Expenditure Panel (GC-3) ── */
.dt-exp-fields {
  display: flex;
  gap: 16px;
  margin-top: 8px;
  flex-wrap: wrap;
}
.dt-exp-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dt-exp-input {
  width: 72px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  font-size: 14px;
  padding: 4px 8px;
  font-family: var(--ft);
}
.dt-exp-input:focus { outline: 1px solid var(--gold); }

/* ── ST Notes ── */
.dt-notes-csv {
  font-size: 12px;
  color: var(--txt3);
  margin-bottom: 8px;
  font-style: italic;
}

.dt-notes-input {
  width: 100%;
  min-height: 60px;
  background: var(--bg);
  border: 1px solid var(--bdr);
  color: var(--txt);
  padding: 8px 10px;
  border-radius: 4px;
  font-family: var(--ft);
  font-size: 12px;
  resize: vertical;
}

.dt-notes-input:focus { border-color: var(--accent); outline: none; }

.dt-notes-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-top: 8px;
}

.dt-notes-vis {
  font-size: 13px;
  color: var(--txt3);
  font-style: italic;
}

.dt-notes-xp {
  font-size: 12px;
  color: var(--txt2);
  margin-top: 8px;
}

/* ── Attendance & Finance ── */

.att-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 0;
  gap: 12px;
  flex-wrap: wrap;
}

.att-toolbar-left {
  display: flex;
  align-items: center;
  gap: 8px;
}

.att-label {
  font-family: var(--fl);
  font-size: 13px;
  color: var(--txt2);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.att-select {
  background: var(--surf2);
  color: var(--txt);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 6px 10px;
  font-size: 13px;
  font-family: var(--ft);
}

.att-date-input {
  background: var(--surf2);
  color: var(--txt);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 5px 10px;
  font-size: 13px;
  font-family: var(--ft);
  color-scheme: dark;
}

.att-btn {
  background: var(--surf2);
  color: var(--accent);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 6px 14px;
  font-size: 12px;
  font-family: var(--fl);
  cursor: pointer;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.att-btn:hover { border-color: var(--accent); }

.att-save-btn {
  background: var(--crim);
  color: var(--txt-on-dark);
  border-color: var(--crim);
}
.att-save-btn:hover { opacity: 0.9; }

.att-summary {
  display: flex;
  align-items: center;
  gap: 24px;
  padding: 8px 0 12px;
  font-family: var(--fl);
  font-size: 13px;
  color: var(--txt2);
  border-bottom: 1px solid var(--bdr);
  margin-bottom: 8px;
}

.att-stat strong { color: var(--accent); }

.att-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}

.att-table thead th {
  font-family: var(--fl);
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--txt3);
  padding: 8px 6px;
  text-align: center;
  border-bottom: 1px solid var(--bdr);
}

.att-name-col { text-align: left; min-width: 130px; }
.att-char-col { text-align: left; min-width: 140px; }
.att-sort-hd { cursor: pointer; user-select: none; white-space: nowrap; }
.att-sort-hd:hover { color: var(--accent); }
.att-check-col { width: 70px; }
.att-num-col { width: 60px; }
.att-xp-col { width: 50px; }
.att-pay-col { width: 120px; }

.att-row { border-bottom: 1px solid var(--bdr); }
.att-row:hover { background: var(--surf2); }
.att-row.att-absent { opacity: 0.45; }

.att-player-name {
  font-family: var(--ft);
  color: var(--txt);
  padding: 8px 6px;
  text-align: left;
  font-size: 13px;
}

.att-char-name {
  font-family: var(--fl);
  color: var(--accent);
  padding: 8px 6px;
  text-align: left;
  font-size: 12px;
}

.att-check {
  text-align: center;
  padding: 8px 6px;
}

.att-check input[type="checkbox"] {
  width: 16px;
  height: 16px;
  cursor: pointer;
  accent-color: var(--accent);
}

.att-num {
  text-align: center;
  padding: 8px 4px;
}

.att-num input {
  width: 40px;
  background: var(--surf2);
  color: var(--txt);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  text-align: center;
  padding: 3px;
  font-size: 12px;
}

.att-xp {
  text-align: center;
  padding: 8px 6px;
  font-family: var(--fl);
  color: var(--accent);
  font-weight: 600;
}

.att-pay {
  text-align: center;
  padding: 8px 4px;
}

.att-pay select {
  background: var(--surf2);
  color: var(--txt);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  padding: 3px 6px;
  font-size: 12px;
  width: 100%;
}

.att-empty {
  padding: 48px 24px;
  text-align: center;
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 14px;
}

.att-add-form {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  background: var(--surf1);
  border-bottom: 1px solid var(--surf2);
}

.att-add-form select {
  background: var(--surf2);
  color: var(--txt1);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 4px 8px;
  font-size: 13px;
  min-width: 200px;
}

.att-add-form select:focus {
  outline: none;
  border-color: var(--accent);
}

/* ── Engine split layout ── */
.engine-split {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 20px;
  align-items: start;
}
.engine-left, .engine-right {
  min-width: 0;
}

/* ── Dice Engine (reuses suite roll classes from theme) ── */
#dice-engine {
  display: flex;
  flex-direction: column;
  gap: 18px;
  padding: 20px;
  background: var(--bg);
  border-radius: 8px;
  border: 1px solid var(--bdr);
}
#dice-engine > * { width: 100%; }

/* Shared roll classes — suite.css defines these for mobile; we redefine for admin */
#dice-engine .slabel { font-family: var(--fl); font-size: 13px; letter-spacing: .2em; text-transform: uppercase; color: var(--txt2); margin-bottom: 8px; }
#dice-engine .crow { display: flex; align-items: center; gap: 8px; }
#dice-engine .cbtn { width: 48px; height: 48px; border-radius: 8px; flex-shrink: 0; border: 1px solid var(--bdr2); background: var(--surf2); color: var(--accent); font-size: 22px; display: flex; align-items: center; justify-content: center; cursor: pointer; user-select: none; }
#dice-engine .cbtn:hover { background: var(--surf3); }
#dice-engine .cval { flex: 1; height: 48px; border-radius: 8px; border: 1px solid var(--bdr); background: var(--surf2); display: flex; align-items: center; justify-content: center; font-size: 28px; font-weight: 500; color: var(--txt); }
#dice-engine .cval.chance { color: var(--err); }
#dice-engine .effline { text-align: center; font-family: var(--fl); font-size: 12px; color: var(--txt3); letter-spacing: .05em; margin-top: 8px; }
#dice-engine .effline span { color: var(--txt2); }
#dice-engine .bbtn { width: 48px; height: 48px; border-radius: 8px; flex-shrink: 0; border: 1px solid var(--bdr); background: var(--surf2); color: var(--txt3); font-size: 20px; display: flex; align-items: center; justify-content: center; cursor: pointer; user-select: none; }
#dice-engine .bbtn:hover { background: var(--surf3); }
#dice-engine .bval { flex: 1; height: 48px; border-radius: 8px; border: 1px solid var(--bdr); background: var(--surf2); display: flex; align-items: center; justify-content: center; font-size: 22px; color: var(--txt2); }
#dice-engine .bval.pos { color: var(--green2); }
#dice-engine .bval.neg { color: var(--err); }
#dice-engine .arow { display: flex; gap: 6px; }
#dice-engine .abtn { flex: 1; height: 42px; border-radius: 6px; border: 1px solid var(--bdr); background: var(--surf2); color: var(--txt3); font-family: var(--fl); font-size: 12px; letter-spacing: .04em; cursor: pointer; }
#dice-engine .abtn.on { border-color: var(--bdr2); color: var(--accent); background: var(--accent-a8); }
#dice-engine .mrow { display: flex; gap: 6px; }
#dice-engine .mchip { flex: 1; height: 42px; border-radius: 6px; border: 1px solid var(--bdr); background: var(--surf2); color: var(--txt3); font-family: var(--fl); font-size: 12px; letter-spacing: .06em; text-transform: uppercase; cursor: pointer; display: flex; align-items: center; justify-content: center; }
#dice-engine .mchip.on { border-color: var(--crim-a55); color: var(--accent); background: var(--crim-a15); }

/* Roll button */
.de-roll-btn { height: 50px; min-height: 48px; min-width: 120px; border-radius: 8px; background: var(--crim); border: 1px solid var(--crim-a70); color: var(--txt-on-dark); font-family: var(--fl); font-size: 15px; letter-spacing: .22em; text-transform: uppercase; cursor: pointer; }
.de-roll-btn:hover { background: var(--crim2); }
@media (max-width: 768px) { .de-roll-btn { width: 100%; font-size: 15px; } }

/* Result area */
.de-res-area { border: 1px solid var(--bdr); border-radius: 8px; background: var(--surf-a6); }
#de-res-hdr { padding: 12px 16px 8px; border-bottom: 1px solid var(--bdr); display: none; }
#de-res-hdr.on { display: block; }
#dice-engine .rcnt { font-size: 36px; font-weight: 600; margin-right: 8px; }
#dice-engine .rcnt.s { color: var(--green2); } #dice-engine .rcnt.e { color: var(--accent); } #dice-engine .rcnt.f { color: var(--txt3); } #dice-engine .rcnt.d { color: var(--err); }
#dice-engine .rlbl { font-family: var(--fl); font-size: 15px; }
#dice-engine .rlbl.s { color: var(--green2); } #dice-engine .rlbl.e { color: var(--accent); } #dice-engine .rlbl.f { color: var(--txt3); } #dice-engine .rlbl.d { color: var(--err); }
#dice-engine .rverd { font-family: var(--fl); font-size: 13px; color: var(--txt3); letter-spacing: .04em; margin-top: 4px; }
.de-dice-wrap { padding: 10px 14px; display: flex; flex-wrap: wrap; gap: 5px; min-height: 50px; align-content: flex-start; }
#dice-engine .die { width: 36px; height: 36px; border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 14px; font-weight: 600; animation: dp .2s ease both; }
@keyframes dp { from { transform: scale(.6); opacity: 0; } to { transform: scale(1); opacity: 1; } }
#dice-engine .die.sd { background: var(--green6-a40); border: 1px solid var(--green6-a70); color: var(--green4); }
#dice-engine .die.fd { background: var(--surf2-a8); border: 1px solid var(--bdr); color: var(--txt3); }
#dice-engine .die.ed { background: var(--info4-a30); border: 1px solid var(--info4-a60); color: var(--info2); }
#dice-engine .die.xd { border-color: var(--gdim); }
#dice-engine .die.cd { background: var(--crim3-a30, rgba(139,0,0,.3)); border: 1px solid var(--crim3-a60, rgba(139,0,0,.6)); color: var(--err); }
#dice-engine .dcol { display: flex; flex-direction: column; align-items: center; gap: 2px; }
#dice-engine .xconn { width: 2px; height: 5px; background: var(--gold-a20); }
#dice-engine .rote-blk { width: 100%; border-top: 1px solid var(--bdr); padding-top: 7px; margin-top: 2px; }
#dice-engine .rote-lbl { font-family: var(--fl); font-size: 8px; letter-spacing: .15em; color: var(--txt3); margin-bottom: 5px; }
#dice-engine .rote-blk.win { border-left: 2px solid var(--gold); padding-left: 5px; }
#dice-engine .empty-d { font-family: var(--fl); font-size: 12px; color: var(--txt3); letter-spacing: .1em; width: 100%; text-align: center; padding: 14px 0; }

/* Character & pool builder */
.de-shortcut-row { display: flex; gap: 8px; }
.de-sc-btn { flex: 1; height: 44px; border-radius: 8px; padding: 0 14px; border: 1px solid var(--bdr2); background: var(--surf2); color: var(--accent); font-family: var(--fl); font-size: 12px; letter-spacing: .06em; cursor: pointer; appearance: none; -webkit-appearance: none; }
.de-sc-btn:focus { outline: none; border-color: var(--gold); }

.de-pool-builder { display: flex; flex-direction: column; gap: 8px; }
.de-pb-row { display: flex; gap: 6px; }
.de-pb-sel { flex: 1; height: 38px; border-radius: 6px; border: 1px solid var(--bdr); background: var(--surf2); color: var(--txt); font-family: var(--ft); font-size: 13px; padding: 0 8px; cursor: pointer; appearance: none; -webkit-appearance: none; }
.de-pb-sel:focus { outline: none; border-color: var(--gold); }

.de-spec-row { display: flex; flex-wrap: wrap; gap: 6px; }
.de-spec-chip { border-radius: 10px; padding: 4px 10px; border: 0.5px solid var(--bdr); background: var(--surf2); color: var(--txt2); font-family: var(--fl); font-size: 12px; letter-spacing: .04em; cursor: pointer; }
.de-spec-chip.on { border-color: var(--accent-a40); background: var(--accent-a8); color: var(--accent); }
.de-spec-bonus { color: var(--accent); margin-left: 2px; }

.de-load-btn { height: 34px; border-radius: 6px; border: 1px solid var(--bdr2); background: var(--surf2); color: var(--accent); font-family: var(--fl); font-size: 13px; letter-spacing: .06em; cursor: pointer; }
.de-load-btn:hover { background: var(--surf3); }

/* Power info banner */
.de-power-info {
  background: var(--crim-a12);
  border: 1px solid var(--crim-a25);
  border-radius: 6px;
  padding: 10px 14px;
}
.de-power-name { font-family: var(--fl); font-size: 13px; color: var(--accent); letter-spacing: .04em; }
.de-power-stats { font-family: var(--fl); font-size: 12px; color: var(--txt3); letter-spacing: .04em; margin-top: 3px; }
.de-power-effect { font-size: 12px; color: var(--txt2); margin-top: 4px; line-height: 1.4; }
.de-hist-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 4px 0; border-bottom: 1px solid var(--surf2); font-size: 13px;
}
.de-hist-meta { color: var(--txt3); }
.de-hist-res { font-weight: 600; }

/* Roll history panel (right pane — reuses suite .hitem/.hmeta/.hres classes) */
.de-history {
  background: var(--bg);
  border: 1px solid var(--bdr);
  border-radius: 8px;
  padding: 16px 20px;
  margin-bottom: 20px;
}
.de-history .hist-hdr { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.de-history .hist-clr { font-family: var(--fl); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--txt3); background: none; border: none; cursor: pointer; padding: 10px 6px; }
.de-history .hist-clr:hover { color: var(--txt); }
.de-history .hlist { display: flex; flex-direction: column; gap: 3px; max-height: 500px; overflow-y: auto; }
.de-history .hitem { display: flex; justify-content: space-between; align-items: center; padding: 5px 10px; border-radius: 6px; background: var(--surf2); border: 1px solid var(--bdr); }
.de-history .hmeta { font-family: var(--fl); font-size: 13px; color: var(--txt3); letter-spacing: .02em; flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.de-history .hres { font-family: var(--fl); font-size: 13px; letter-spacing: .03em; flex-shrink: 0; margin-left: 10px; }
.de-history .hres.s { color: var(--green2); } .de-history .hres.e { color: var(--accent); } .de-history .hres.f { color: var(--txt3); } .de-history .hres.d { color: var(--err); }
.de-history .hempty { font-family: var(--fl); font-size: 12px; color: var(--txt3); letter-spacing: .08em; text-align: center; padding: 14px; }

/* ── Feeding Engine ── */
.fe-wrap {
  background: var(--bg);
  border: 1px solid var(--bdr);
  border-radius: 8px;
  padding: 20px;
}
.fe-methods { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-bottom: 10px; }
.fe-disc-row { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.fe-vitae-bar {
  display: flex; justify-content: space-between; align-items: center;
  padding: 8px 14px; margin-bottom: 10px;
  background: var(--crim-a12); border: 1px solid var(--crim-a30); border-radius: 4px;
}
.fe-vitae-label { font-family: var(--fl); font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--txt3); }
.fe-vitae-val { font-family: var(--fl); font-size: 20px; color: var(--err4-a9, #dc9696); }
.fe-apply-section {
  padding: 12px 14px; background: var(--crim-a8); border: 1px solid var(--crim-a30); border-top: none; border-radius: 0 0 4px 4px;
  display: flex; flex-direction: column; gap: 8px;
}
.fe-warn {
  font-family: var(--fl); font-size: 12px; color: var(--err); letter-spacing: .04em;
}

/* Reuse suite feed classes in admin context */
#feeding-engine .feed-method-card { padding: 10px; border: 1px solid var(--bdr); background: var(--surf2); cursor: pointer; text-align: left; border-radius: 4px; }
#feeding-engine .feed-method-card.selected { border-color: var(--accent); background: var(--accent-a8); }
#feeding-engine .feed-method-card:hover { border-color: var(--bdr2); }
#feeding-engine .feed-method-name { font-family: var(--fl); font-size: 12px; color: var(--txt); letter-spacing: .04em; margin-bottom: 2px; }
#feeding-engine .feed-method-desc { font-size: 13px; color: var(--txt3); font-style: italic; }
#feeding-engine .feed-pool-box { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; background: var(--surf); border: 1px solid var(--bdr); border-radius: 4px; margin-bottom: 10px; }
#feeding-engine .feed-pool-breakdown { font-family: var(--fl); font-size: 13px; color: var(--txt2); letter-spacing: .04em; line-height: 1.8; }
#feeding-engine .feed-pool-breakdown span { color: var(--accent); }
#feeding-engine .feed-pool-breakdown .feed-dim { color: var(--txt3); }
#feeding-engine .feed-pool-total { text-align: right; }
#feeding-engine .feed-pool-n { font-family: var(--fl); font-size: 36px; color: var(--accent); line-height: 1; }
#feeding-engine .feed-pool-lbl { display: block; font-family: var(--fl); font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--txt3); }
#feeding-engine .feed-disc-lbl { font-family: var(--fl); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--txt3); white-space: nowrap; }
#feeding-engine .feed-roll-btn { width: 100%; height: 48px; background: var(--crim-a25); border: 1px solid var(--crim-a60); border-radius: 6px; color: var(--err4-a95, #daa); font-family: var(--fl); font-size: 12px; letter-spacing: .18em; text-transform: uppercase; cursor: pointer; margin-bottom: 10px; }
#feeding-engine .feed-roll-btn:hover { background: var(--crim-a40); }
#feeding-engine .feed-result-box { background: var(--surf); border: 1px solid var(--bdr); border-radius: 4px; }
#feeding-engine .feed-suc { font-family: var(--fl); font-size: 40px; color: var(--accent); line-height: 1; }
#feeding-engine .feed-suc-lbl { font-family: var(--fl); font-size: 12px; letter-spacing: .2em; text-transform: uppercase; color: var(--txt3); margin-top: 2px; }
#feeding-engine .feed-suc-row { display: flex; align-items: center; padding: 12px 14px 4px; }
#feeding-engine .feed-dice-row { display: flex; flex-wrap: wrap; gap: 5px; padding: 8px 14px 12px; }
#feeding-engine .feed-die { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: 1px solid var(--bdr); background: var(--surf2); border-radius: 4px; font-family: var(--fl); font-size: 13px; color: var(--txt3); }
#feeding-engine .feed-die.fd-s { border-color: var(--gold); color: var(--accent); background: var(--gold-a10); }
#feeding-engine .feed-die.fd-1 { border-color: var(--crim-a50); color: var(--err6, #c86464); }
#feeding-engine .feed-vessel-row { background: var(--surf2); border: 1px solid var(--bdr); border-top: none; border-radius: 0 0 4px 4px; }
#feeding-engine .feed-v-num { font-family: var(--fl); font-size: 28px; color: var(--err4-a9, #dc9696); line-height: 1; }
#feeding-engine .feed-v-lbl { font-family: var(--fl); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--txt3); margin-top: 2px; }
#feeding-engine .feed-v-lbl b { color: var(--err4-a9, #dc9696); }
#feeding-engine .feed-apply-lbl { font-family: var(--fl); font-size: 12px; letter-spacing: .18em; text-transform: uppercase; color: var(--txt3); }
#feeding-engine .feed-apply-controls { display: flex; align-items: center; gap: 10px; }
#feeding-engine .feed-adj { width: 40px; height: 40px; background: var(--surf); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt2); font-size: 20px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
#feeding-engine .feed-adj:hover { border-color: var(--gold); }
#feeding-engine .feed-adj-val { font-family: var(--fl); font-size: 28px; color: var(--err4-a9, #dc9696); min-width: 40px; text-align: center; }
#feeding-engine .feed-apply-cap { font-family: var(--fl); font-size: 12px; color: var(--txt3); letter-spacing: .08em; }
#feeding-engine .feed-apply-btn { height: 44px; background: var(--crim-a25); border: 1px solid var(--crim-a60); border-radius: 4px; color: var(--err4-a95, #daa); font-family: var(--fl); font-size: 13px; letter-spacing: .14em; text-transform: uppercase; cursor: pointer; padding: 0 16px; }
#feeding-engine .feed-apply-btn:hover { background: var(--crim-a40); }

/* ── Player View link on character detail ── */
.cd-player-view { text-decoration: none; }

/* ══════════════════════════════════════════
   SESSION TRACKER (Engine domain)
   ══════════════════════════════════════════ */

#session-tracker {
  padding: 20px;
  background: var(--bg);
  border-radius: 8px;
  border: 1px solid var(--bdr);
}
#session-tracker .slabel { font-family: var(--fl); font-size: 13px; letter-spacing: .2em; text-transform: uppercase; color: var(--txt2); margin-bottom: 12px; }

.st-admin-pick { display: flex; gap: 8px; margin-bottom: 12px; }
.st-admin-controls { display: flex; gap: 8px; margin-bottom: 16px; }

.de-btn { padding: 8px 16px; border-radius: 4px; border: 1px solid var(--bdr); background: var(--surf2); font-family: var(--fl); font-size: 13px; letter-spacing: .08em; text-transform: uppercase; color: var(--txt2); cursor: pointer; }
.de-btn:hover { border-color: var(--bdr2); }
.de-btn.gold { border-color: var(--accent-a40); color: var(--accent); }
.de-btn.gold:hover { background: var(--accent-a8); }
.de-btn.crim { border-color: var(--crim-a45); color: var(--err); }
.de-btn.crim:hover { background: var(--crim-a12); }

.st-admin-empty { font-size: 13px; color: var(--txt3); font-style: italic; padding: 12px 0; }

.st-admin-row { background: var(--surf); border: 1px solid var(--bdr); border-radius: 6px; padding: 14px; margin-bottom: 12px; }
.st-admin-row-hdr { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px; }
.st-admin-row-hdr > div:first-child { flex: 1; min-width: 0; }
.st-admin-name { font-family: var(--fl); font-size: 14px; color: var(--accent); letter-spacing: .04em; }
.st-admin-meta { font-size: 12px; color: var(--txt3); margin-top: 2px; white-space: nowrap; }
.st-admin-dismiss { background: none; border: none; color: var(--txt3); cursor: pointer; font-size: 16px; padding: 4px; line-height: 1; }
.st-admin-dismiss:hover { color: var(--err); }

.st-admin-trackers { display: flex; gap: 12px; margin-bottom: 12px; }
.st-admin-cell { flex: 1; text-align: center; }
.st-admin-cell-lbl { font-family: var(--fl); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--txt3); margin-bottom: 4px; }
.st-admin-cell-row { display: flex; align-items: center; justify-content: center; gap: 6px; }
.st-admin-cell-val { font-family: var(--fl); font-size: 24px; color: var(--txt); min-width: 28px; }
.st-admin-cell-max { font-size: 12px; color: var(--txt3); }
.st-admin-adj { width: 28px; height: 28px; border-radius: 4px; border: 1px solid var(--bdr); background: var(--surf2); color: var(--accent); font-size: 16px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.st-admin-adj:hover { border-color: var(--gold-a30); background: var(--gold-a8); }

.st-admin-dt { border-top: 1px solid var(--bdr); padding-top: 10px; }
.st-admin-dt-lbl { font-family: var(--fl); font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--txt3); margin-bottom: 6px; }
.st-admin-dt-inputs { display: flex; gap: 12px; }
.st-admin-dt-field { flex: 1; }
.st-admin-dt-field label { display: block; font-size: 13px; color: var(--txt3); margin-bottom: 3px; }
.st-admin-dt-field input { width: 100%; padding: 6px 8px; background: var(--surf2); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt); font-size: 13px; font-family: var(--ft); }
.st-admin-dt-field input:focus { outline: none; border-color: var(--gold-a30); }

/* ── Player link modal ── */
.plm-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.65);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9000;
}
.plm-dialog {
  background: var(--surf1);
  border: 1px solid var(--bdr);
  border-radius: 8px;
  width: 640px;
  max-width: 96vw;
  max-height: 85vh;
  overflow-y: auto;
  padding: 20px 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.plm-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.plm-header h3 {
  font-family: var(--fl);
  font-size: 15px;
  color: var(--accent);
  margin: 0;
}
.plm-loading { color: var(--txt3); font-size: 13px; margin: 0; }
.plm-empty { color: var(--txt3); font-size: 13px; font-style: italic; margin: 0; }
.plm-error { color: var(--crim2); font-size: 13px; margin: 0; }
.plm-list { overflow-x: auto; }
.plm-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.plm-table thead th {
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--txt3);
  text-align: left;
  padding: 4px 8px;
  border-bottom: 1px solid var(--bdr);
}
.plm-table tbody td {
  padding: 7px 8px;
  color: var(--txt2);
  border-bottom: 1px solid rgba(255,255,255,0.04);
}
.plm-table tbody tr:last-child td { border-bottom: none; }
.plm-row-linked td { color: var(--txt); background: var(--gold-a5); }
.plm-did { font-family: var(--fc, monospace); font-size: 12px; color: var(--txt3) !important; }
.plm-role { font-size: 12px; color: var(--txt3) !important; }
.plm-badge {
  display: inline-block;
  background: var(--accent-a8);
  color: var(--accent);
  font-size: 11px;
  padding: 1px 7px;
  border-radius: 3px;
}
.plm-unlink-btn { color: var(--crim2) !important; border-color: var(--crim-a40) !important; }
.plm-unlink-btn:hover { border-color: var(--crim2) !important; }
.plm-create {
  border-top: 1px solid var(--bdr);
  padding-top: 14px;
}
.plm-create h4 {
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--txt3);
  margin: 0 0 10px;
}
.plm-form {
  display: flex;
  align-items: flex-end;
  gap: 10px;
  flex-wrap: wrap;
}
.plm-label {
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-size: 12px;
  color: var(--txt3);
}
.plm-input, .plm-select {
  padding: 5px 8px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  font-size: 13px;
  font-family: var(--ft);
  min-width: 140px;
}
.plm-input:focus, .plm-select:focus { outline: none; border-color: var(--gold-a30); }
.plm-select { min-width: 100px; }

/* ── Ordeals modal ── */
.om-dialog {
  width: 460px;
  max-width: 96vw;
  padding: 0;
  gap: 0;
  background: var(--surf1);
  border: 1px solid var(--bdr2, var(--bdr));
  box-shadow: 0 20px 60px rgba(0,0,0,0.6);
}
.om-header {
  padding: 16px 20px;
  border-bottom: 1px solid var(--bdr);
  background: var(--surf2);
}
.om-summary {
  margin: 0;
  padding: 12px 20px;
  font-size: 13px;
  color: var(--accent);
  font-family: var(--fl);
  letter-spacing: 0.04em;
  border-bottom: 1px solid var(--bdr);
  background: var(--accent-a8);
}
.om-table-wrap {
  padding: 0;
  background: var(--surf1);
}
.om-table { width: 100%; border-collapse: collapse; }
.om-table thead th {
  padding: 10px 16px;
  background: var(--surf2);
  border-bottom: 1px solid var(--bdr);
}
.om-table tbody td {
  padding: 12px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.04);
}
.om-table tbody tr:last-child td { border-bottom: none; }
.om-row { transition: background 0.1s; }
.om-row:hover { background: var(--gold-a4); }
.om-row-absent .om-name { color: var(--txt3); }
.om-check { text-align: center; }
.om-check input[type="checkbox"] {
  width: 18px;
  height: 18px;
  cursor: pointer;
  accent-color: var(--accent);
  vertical-align: middle;
}
.om-name {
  font-family: var(--fl);
  font-size: 14px;
  color: var(--txt);
  letter-spacing: 0.02em;
}
.om-xp {
  font-size: 12px;
  color: var(--accent);
  text-align: center;
  font-family: var(--fl);
}
.om-overlay .plm-error {
  margin: 0;
  padding: 10px 20px;
  background: var(--crim-a8);
  border-top: 1px solid var(--crim-a30);
}

/* ── Players domain ── */

.pv-toolbar {
  margin-bottom: 16px;
}

.pv-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.pv-card {
  background: var(--surf1);
  border: 1px solid var(--bdr);
  border-radius: 6px;
  overflow: hidden;
}
.pv-card-header {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 16px;
  cursor: pointer;
  transition: background 0.15s;
}
.pv-card-header:hover { background: var(--surf2); }
.pv-card-expanded { border-color: var(--accent-a40); }
.pv-row-actions { flex-shrink: 0; }
.pv-icon-btn {
  background: none;
  border: none;
  color: var(--txt3);
  font-size: 16px;
  cursor: pointer;
  padding: 4px 6px;
  border-radius: 3px;
  transition: color 0.15s, background 0.15s;
}
.pv-icon-btn:hover { color: var(--accent); background: var(--accent-a8); }
.pv-remove-btn:hover { color: var(--crim2); background: var(--crim-a8); }
.pv-detail {
  padding: 12px 16px;
  border-top: 1px solid var(--bdr);
  background: var(--surf);
}
.pv-detail-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px 16px;
  margin-bottom: 10px;
}
.pv-detail-wide { grid-column: 1 / -1; }
.pv-detail-field { font-size: 13px; color: var(--txt); }
.pv-detail-label {
  display: block;
  font-family: var(--fl);
  font-size: 10px;
  color: var(--txt3);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  margin-bottom: 2px;
}
.pv-detail-actions { display: flex; gap: 8px; }

.pv-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--surf2);
}

.pv-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.pv-name-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.pv-name {
  font-family: var(--fl);
  font-size: 14px;
  color: var(--txt);
}

.pv-badge {
  font-size: 10px;
  font-family: var(--fl);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 1px 7px;
  border-radius: 3px;
}

.pv-badge-st     { background: var(--accent-a8); color: var(--accent); }
.pv-badge-coord  { background: var(--gold1, #C9A962); color: var(--bg, #0D0B09); }
.pv-badge-player { background: var(--surf2); color: var(--txt3); }

.pv-discord-row {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 12px;
}

.pv-handle { color: var(--txt2); }
.pv-did    { font-family: var(--fc, monospace); color: var(--txt3); font-size: 11px; }
.pv-dim    { color: var(--txt3); font-style: italic; }

.pv-chars {
  font-size: 12px;
  color: var(--accent);
}

.pv-meta {
  text-align: right;
  flex-shrink: 0;
}

.pv-login {
  font-size: 11px;
  color: var(--txt3);
  white-space: nowrap;
}

.pv-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}

.pv-remove-btn { color: var(--crim2) !important; border-color: var(--crim-a40) !important; }
.pv-remove-btn:hover { border-color: var(--crim2) !important; }

/* Players add / edit form */

.pv-form {
  background: var(--surf1);
  border: 1px solid var(--accent-a40);
  border-radius: 6px;
  padding: 18px 20px;
  margin-bottom: 16px;
}

.pv-form-title {
  font-family: var(--fl);
  font-size: 13px;
  color: var(--accent);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  margin-bottom: 14px;
}

.pv-form-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 14px;
  margin-bottom: 12px;
  align-items: start;
}

.pv-label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 12px;
  color: var(--txt3);
}

.pv-req { color: var(--accent); }

.pv-char-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  padding: 8px 0 4px;
}
.pv-char-check {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--txt);
  cursor: pointer;
  white-space: nowrap;
}
.pv-char-cb { accent-color: var(--accent); cursor: pointer; }

.pv-input, .pv-select {
  padding: 6px 9px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  font-size: 13px;
  font-family: var(--ft);
}

.pv-input:focus, .pv-select:focus { outline: none; border-color: var(--gold-a30); }

.pv-hint {
  font-size: 11px;
  color: var(--txt3);
  line-height: 1.4;
}

.pv-hint-inline { font-size: 11px; color: var(--txt3); }

.pv-err {
  color: var(--crim2);
  font-size: 12px;
  margin-bottom: 8px;
}

.pv-form-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

/* ── Data Portability (DP-1) ── */
.dp-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
  gap: 16px;
  padding: 8px 0;
}
.dp-card {
  background: var(--surf1);
  border: 1px solid var(--bdr);
  border-radius: 8px;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.dp-card-name {
  font-family: var(--fl);
  font-size: 14px;
  color: var(--accent);
  font-weight: 600;
}
.dp-card-desc {
  font-size: 12px;
  color: var(--txt2);
  flex: 1;
}
.dp-card-btns { display: flex; gap: 8px; flex-wrap: wrap; }
.dp-result-box {
  margin-top: 20px;
  background: var(--surf1);
  border: 1px solid var(--bdr);
  border-radius: 8px;
  padding: 16px 20px;
}
.dp-result-summary { display: flex; gap: 16px; margin-bottom: 10px; }
.dp-stat { font-size: 13px; color: var(--txt2); }
.dp-stat-ok { color: var(--result-succ); }
.dp-stat-err { color: var(--crim2); }
.dp-result-ok { font-size: 13px; color: var(--result-succ); margin: 0; }
.dp-result-err { font-size: 13px; color: var(--crim2); margin: 0; }
.dp-result-loading { font-size: 13px; color: var(--txt2); margin: 0; }
.dp-error-list {
  list-style: none;
  padding: 0;
  margin: 8px 0 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dp-error-list li { font-size: 12px; color: var(--txt2); }
.dp-error-list strong { color: var(--txt); }

/* Excel import preview */
.dp-excel-preview { margin-top: 16px; }
.dp-excel-header { display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap; }
.dp-excel-warnings { margin-bottom: 10px; }
.dp-excel-warn { font-size: 11px; color: var(--warn-dk); padding: 2px 0; }
.dp-excel-tbl { width: 100%; border-collapse: collapse; font-size: 13px; margin-bottom: 12px; }
.dp-excel-tbl th { text-align: left; padding: 6px 8px; background: var(--surf2); color: var(--accent); font-size: 11px; text-transform: uppercase; border-bottom: 1px solid var(--bdr); }
.dp-excel-tbl td { padding: 5px 8px; border-bottom: 1px solid rgba(201,169,98,.06); }
.dp-excel-row { cursor: pointer; }
.dp-excel-row:hover { background: rgba(201,169,98,.04); }
.dp-excel-dimmed { opacity: .4; cursor: default; }
.dp-excel-name { font-family: var(--fl); }
.dp-badge { font-size: 10px; padding: 1px 6px; border-radius: 3px; text-transform: uppercase; letter-spacing: .5px; }
.dp-badge-update { background: var(--accent-a8); color: var(--accent); }
.dp-badge-new { background: var(--result-succ-bg); color: var(--result-succ); }
.dp-badge-dim { background: rgba(120,120,120,.1); color: var(--txt3); }
.dp-badge-warn { background: var(--warn-dk-bg); color: var(--warn-dk); }
.dp-excel-actions { display: flex; align-items: center; gap: 12px; margin-top: 8px; }
.dp-excel-progress { font-size: 12px; color: var(--txt2); }
.dp-excel-errors { margin-top: 8px; }
.dp-diff-panel { padding: 8px 12px; background: var(--surf2); border-radius: 4px; }
.dp-diff-section { margin-bottom: 8px; }
.dp-diff-title { font-size: 10px; color: var(--accent); text-transform: uppercase; letter-spacing: .5px; margin-bottom: 4px; font-family: var(--fl); }
.dp-diff-row { display: flex; align-items: center; gap: 8px; padding: 2px 0; font-size: 12px; }
.dp-diff-field { color: var(--txt2); min-width: 100px; }
.dp-diff-old { color: var(--txt3); }
.dp-diff-arrow { color: var(--txt3); }
.dp-diff-new { color: var(--accent); }
.dp-diff-warn { font-size: 11px; color: var(--warn-dk); padding: 1px 0; }
.dp-warning {
  background: var(--crim-a15);
  border: 1px solid var(--crim-a50);
  border-radius: 6px;
  color: var(--result-pend);
  font-size: 13px;
  padding: 12px 16px;
  margin-bottom: 20px;
  line-height: 1.5;
}
.dp-warning strong { color: var(--result-pend); margin-right: 4px; }
.dp-section { margin-bottom: 28px; }
.dp-section-heading {
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 600;
  color: var(--accent);
  text-transform: uppercase;
  letter-spacing: .8px;
  border-bottom: 1px solid var(--bdr);
  padding-bottom: 6px;
  margin-bottom: 12px;
}
.dp-card-placeholder { opacity: .55; }
.dp-placeholder-note { color: var(--txt3); font-style: italic; }
.dp-rules-card { min-width: 280px; }
.dp-rules-filters { display: flex; gap: 6px; margin-bottom: 8px; flex-wrap: wrap; }
.dp-rules-select {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  font-size: 12px;
  padding: 4px 6px;
  flex: 0 0 auto;
}
.dp-rules-parent {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  font-size: 12px;
  padding: 4px 8px;
  flex: 1 1 120px;
  min-width: 0;
}
.dp-rules-parent::placeholder { color: var(--txt3); }
.dp-rules-import-note { font-size: 11px; color: var(--txt3); margin-top: 6px; font-style: italic; }

/* ── Ordeals (OR-2 / OR-3) ── */

.or-shell {
  display: flex;
  flex-direction: column;
  gap: 0;
  height: 100%;
}

/* View toggle */
.or-view-toggle {
  display: flex;
  gap: 8px;
  padding: 12px 20px;
  border-bottom: 1px solid var(--bdr);
  background: var(--surf);
  flex-shrink: 0;
}

.or-toggle-btn {
  padding: 6px 16px;
  border-radius: 6px;
  border: 1px solid var(--bdr);
  background: transparent;
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 13px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.or-toggle-btn:hover { color: var(--txt); border-color: var(--txt3); }
.or-toggle-btn.on {
  background: var(--surf2);
  color: var(--accent);
  border-color: var(--accent);
  font-weight: 600;
}

/* Two-panel marking layout */
.or-marking-shell {
  display: flex;
  flex: 1;
  overflow: hidden;
  min-height: 0;
}

/* Left panel */
.or-left {
  width: 280px;
  flex-shrink: 0;
  border-right: 1px solid var(--bdr);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.or-type-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--bdr);
  background: var(--surf);
  flex-shrink: 0;
}

.or-tab-btn {
  padding: 4px 10px;
  border-radius: 5px;
  border: 1px solid var(--bdr);
  background: transparent;
  color: var(--txt2);
  font-size: 12px;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
  white-space: nowrap;
}
.or-tab-btn:hover { color: var(--txt); }
.or-tab-btn.on {
  background: var(--surf2);
  color: var(--accent);
  border-color: var(--accent);
}
.or-tab-count {
  font-size: 11px;
  color: var(--txt3);
  margin-left: 2px;
}

.or-list-summary {
  display: flex;
  gap: 12px;
  padding: 8px 12px;
  border-bottom: 1px solid var(--bdr);
  font-size: 12px;
  color: var(--txt3);
  flex-shrink: 0;
}
.or-complete-count { color: var(--result-succ); }
.or-pending-count  { color: var(--accent); }

.or-list {
  flex: 1;
  overflow-y: auto;
  padding: 4px 0;
}

.or-list-heading {
  font-family: var(--fl);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
  padding: 10px 14px 4px;
}

.or-list-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 14px;
  cursor: pointer;
  border-left: 3px solid transparent;
  transition: background 0.1s, border-color 0.1s;
}
.or-list-item:hover { background: var(--surf1); }
.or-list-item.active {
  background: var(--surf2);
  border-left-color: var(--accent);
}

.or-list-name {
  font-size: 13px;
  color: var(--txt);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Status badges */
.or-status-badge {
  font-size: 11px;
  padding: 2px 7px;
  border-radius: 10px;
  font-weight: 600;
  flex-shrink: 0;
  margin-left: 8px;
}
.or-status-badge.or-status-unmarked {
  background: rgba(255,255,255,0.06);
  color: var(--txt3);
}
.or-status-badge.or-status-in_progress {
  background: var(--accent-a8);
  color: var(--accent);
}
.or-status-badge.or-status-complete {
  background: var(--result-succ-bg);
  color: var(--result-succ);
}

/* Right panel */
.or-right {
  flex: 1;
  overflow-y: auto;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.or-placeholder {
  padding: 40px 24px;
  color: var(--txt3);
  font-size: 14px;
}

.or-detail-header {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 10px;
  padding: 16px 24px 14px;
  border-bottom: 1px solid var(--bdr);
  background: var(--surf);
  flex-shrink: 0;
}
.or-detail-title {
  flex: 1;
  min-width: 0;
}
.or-detail-char {
  font-family: var(--fh);
  font-size: 16px;
  color: var(--accent);
  font-weight: 600;
}
.or-detail-type {
  font-size: 13px;
  color: var(--txt2);
  margin-left: 8px;
}
.or-detail-meta {
  font-size: 12px;
  color: var(--txt3);
  width: 100%;
}
.or-marked-at {
  font-size: 12px;
  color: var(--txt3);
}

/* Q&A table */
.or-qa-table {
  flex: 1;
  padding: 16px 24px;
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.or-qa-head {
  display: grid;
  grid-template-columns: 1.2fr 1.5fr 1.5fr;
  gap: 0;
  padding: 0 0 6px;
  border-bottom: 1px solid var(--bdr);
  margin-bottom: 6px;
}
.or-qa-head span {
  font-family: var(--fl);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
  padding: 0 10px;
}
.or-qa-head span:first-child { padding-left: 0; }

.or-qa-row {
  background: var(--surf1);
  border: 1px solid var(--bdr);
  border-radius: 6px;
  margin-bottom: 6px;
  overflow: hidden;
}
.or-qa-row.or-result-yes     { border-left: 3px solid var(--result-succ); }
.or-qa-row.or-result-close   { border-left: 3px solid var(--accent); }
.or-qa-row.or-result-no      { border-left: 3px solid var(--crim); }

.or-qa-cell {
  padding: 10px 12px;
  font-size: 13px;
  line-height: 1.5;
}

/* Cells in a 3-column grid */
.or-qa-row > .or-qa-cell,
.or-qa-row > .or-qa-mark-row {
  display: block;
}

/* Stack question/answer/expected in a flex row, mark row below */
.or-qa-row {
  display: flex;
  flex-direction: column;
}
.or-qa-cells {
  display: grid;
  grid-template-columns: 1.2fr 1.5fr 1.5fr;
}

/* Re-use the or-qa-head column widths for the cells */
.or-qa-row > .or-qa-question,
.or-qa-row > .or-qa-answer,
.or-qa-row > .or-qa-expected {
  /* rendered as siblings — use flex instead */
  flex: 1;
}

/* Override: make the 3 cell siblings appear side by side */
.or-qa-row {
  display: grid;
  grid-template-columns: 1.2fr 1.5fr 1.5fr;
  grid-template-rows: auto auto;
}
.or-qa-question { grid-column: 1; grid-row: 1; }
.or-qa-answer   { grid-column: 2; grid-row: 1; }
.or-qa-expected { grid-column: 3; grid-row: 1; }
.or-qa-mark-row { grid-column: 1 / -1; grid-row: 2; border-top: 1px solid var(--bdr); padding: 8px 12px; display: flex; align-items: flex-start; gap: 10px; }

.or-qa-question { color: var(--txt); }
.or-qa-answer   { color: var(--txt2); }
.or-qa-expected { color: var(--txt2); }
.or-placeholder-text { color: var(--txt3); font-style: italic; }

.or-qa-saved-feedback {
  grid-column: 1 / -1;
  grid-row: 2;
  font-size: 12px;
  color: var(--txt3);
  font-style: italic;
  padding: 6px 12px;
  border-top: 1px solid var(--bdr);
}

/* Yes/Close/No */
.or-ync-btns {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
}
.or-ync-btn {
  padding: 4px 12px;
  border-radius: 4px;
  border: 1px solid var(--bdr);
  background: transparent;
  color: var(--txt2);
  font-size: 12px;
  cursor: pointer;
  transition: background 0.1s, color 0.1s, border-color 0.1s;
}
.or-ync-btn:hover { color: var(--txt); }
.or-ync-btn[data-result="yes"].active   { background: var(--result-succ-bg); color: var(--result-succ); border-color: var(--result-succ); }
.or-ync-btn[data-result="close"].active { background: var(--accent-a8); color: var(--accent); border-color: var(--accent); }
.or-ync-btn[data-result="no"].active    { background: var(--crim-a25); color: var(--result-pend); border-color: var(--crim); }

.or-feedback-input {
  flex: 1;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 12px;
  padding: 6px 8px;
  resize: vertical;
  min-width: 0;
}
.or-feedback-input:focus { outline: none; border-color: var(--accent); }

/* Overall feedback */
.or-overall-section {
  border-top: 1px solid var(--bdr);
  padding: 14px 24px;
  flex-shrink: 0;
}
.or-overall-label {
  font-family: var(--fl);
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
  margin-bottom: 8px;
}
.or-overall-input {
  width: 100%;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 6px;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 13px;
  padding: 8px 10px;
  resize: vertical;
}
.or-overall-input:focus { outline: none; border-color: var(--accent); }
.or-overall-saved {
  font-size: 13px;
  color: var(--txt2);
  font-style: italic;
}

/* Action buttons */
.or-actions {
  display: flex;
  gap: 10px;
  padding: 14px 24px;
  border-top: 1px solid var(--bdr);
  flex-shrink: 0;
}
.or-complete-btn {
  border-color: var(--result-succ);
  color: var(--result-succ);
}
.or-complete-btn:hover:not(:disabled) {
  background: var(--result-succ-bg);
}
.or-complete-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* Rubric editor */
.or-rubric-shell {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow: hidden;
}
.or-rubric-shell .or-type-tabs {
  flex-shrink: 0;
}

.or-rubric-header {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 12px 20px;
  border-bottom: 1px solid var(--bdr);
  flex-shrink: 0;
}
.or-rubric-type {
  font-family: var(--fl);
  font-size: 15px;
  color: var(--accent);
  font-weight: 600;
}
.or-rubric-count {
  font-size: 12px;
  color: var(--txt3);
}

.or-rubric-list {
  flex: 1;
  overflow-y: auto;
  padding: 12px 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.or-rubric-row {
  background: var(--surf1);
  border: 1px solid var(--bdr);
  border-radius: 8px;
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.or-rubric-row.or-rubric-unfilled {
  border-left: 3px solid var(--accent-a40);
  background: var(--accent-a8);
}

.or-rubric-q {
  font-size: 13px;
  color: var(--txt);
  font-weight: 500;
  line-height: 1.5;
}

.or-rubric-fields {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
@media (max-width: 900px) {
  .or-rubric-fields { grid-template-columns: 1fr; }
}

.or-rubric-label {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
}
.or-rubric-expected,
.or-rubric-notes {
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 5px;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 13px;
  padding: 7px 9px;
  resize: vertical;
  width: 100%;
}
.or-rubric-expected:focus,
.or-rubric-notes:focus { outline: none; border-color: var(--accent); }

.or-rubric-save-btn {
  align-self: flex-end;
}

/* ── AR-3: Admin Archive ─────────────────────────────────────────────────────── */

.ar-admin-shell { display: flex; flex-direction: column; gap: 20px; padding: 16px; }

.ar-admin-header {
  display: flex; align-items: center; justify-content: space-between;
}
.ar-admin-title { font-family: var(--fl); font-size: 15px; color: var(--accent); }

.ar-admin-table {
  width: 100%; border-collapse: collapse; font-size: 13px;
}
.ar-admin-table th {
  text-align: left; padding: 6px 10px; font-family: var(--fl); font-size: 11px;
  letter-spacing: .06em; text-transform: uppercase; color: var(--txt-dim);
  border-bottom: 1px solid var(--bdr);
}
.ar-admin-table td { padding: 7px 10px; border-bottom: 1px solid var(--bdr); color: var(--txt); }
.ar-admin-table tr:last-child td { border-bottom: none; }

.ar-upload-form {
  background: var(--surf1); border: 1px solid var(--bdr); border-radius: 6px; padding: 16px;
}
.ar-upload-title {
  font-family: var(--fl); font-size: 12px; letter-spacing: .06em;
  text-transform: uppercase; color: var(--txt-dim); margin-bottom: 12px;
}
.ar-upload-fields { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 12px; }
.ar-upload-label { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--txt-dim); }
.ar-optional { font-size: 11px; opacity: .6; }
.ar-upload-select, .ar-upload-input {
  background: var(--surf2); border: 1px solid var(--bdr); color: var(--txt);
  padding: 4px 8px; border-radius: 4px; font-family: var(--ft); font-size: 12px;
}
.ar-upload-actions { display: flex; align-items: center; gap: 12px; }
.ar-upload-status { font-size: 12px; color: var(--txt-dim); }

/* ── Tickets admin domain ── */
.tk-admin { padding: 0; }
.tk-admin-split { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: start; }
.tk-admin-queue-panel { min-width: 0; }
/* Shared ticket form styles (mirrors player-layout.css tk-* rules for admin page) */
.tk-submit-form { background: var(--surf); border: 1px solid var(--bdr); border-radius: 6px; padding: 16px; }
.tk-submit-form h4 { font-family: var(--fl); font-size: 14px; color: var(--accent); margin: 0 0 12px; }
.tk-form-row { margin-bottom: 10px; }
.tk-form-label { display: block; font-size: 12px; color: var(--txt3); margin-bottom: 4px; }
.tk-select, .tk-input { width: 100%; background: var(--surf2); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt1); padding: 7px 10px; font-size: 13px; box-sizing: border-box; }
.tk-textarea { width: 100%; background: var(--surf2); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt1); padding: 7px 10px; font-size: 13px; box-sizing: border-box; resize: vertical; }
.tk-btn-submit { background: none; border: 1px solid var(--accent); color: var(--accent); font-family: var(--fl); font-size: 12px; letter-spacing: 0.06em; text-transform: uppercase; padding: 8px 18px; border-radius: 4px; cursor: pointer; margin-top: 6px; }
.tk-btn-submit:hover { background: var(--accent-a8); }
.tk-error { color: var(--crim); font-size: 12px; margin-top: 6px; }
.tk-empty { color: var(--txt3); font-style: italic; font-size: 13px; padding: 20px 0; }
.tk-badge { font-size: 11px; padding: 2px 7px; border-radius: 10px; font-weight: 600; letter-spacing: 0.03em; white-space: nowrap; }
.tk-badge-open { background: var(--accent-a8); color: var(--accent); }
.tk-badge-in_progress { background: var(--tk-inprog-bg); color: var(--tk-inprog-fg); }
.tk-badge-resolved { background: var(--tk-resolved-bg); color: var(--tk-resolved-fg); }
.tk-badge-closed { background: rgba(120,120,120,0.15); color: var(--txt3); }
.tk-badge-bug { background: var(--tk-bug-bg); color: var(--tk-bug-fg); }
.tk-badge-feature { background: var(--tk-feature-bg); color: var(--tk-feature-fg); }
.tk-badge-question { background: var(--tk-question-bg); color: var(--tk-question-fg); }
.tk-badge-sheet { background: var(--tk-sheet-bg); color: var(--tk-sheet-fg); }
.tk-badge-other { background: rgba(120,120,120,0.15); color: var(--txt3); }
.tk-filter-bar { display: flex; gap: 6px; margin-bottom: 14px; flex-wrap: wrap; }
.tk-filter-btn { background: none; border: 1px solid var(--bdr); color: var(--txt3); font-size: 12px; padding: 5px 12px; border-radius: 4px; cursor: pointer; }
.tk-filter-btn:hover { border-color: var(--accent); color: var(--accent); }
.tk-filter-btn-on { border-color: var(--accent); color: var(--accent); background: var(--accent-a8); }
.tk-admin-list { display: flex; flex-direction: column; gap: 6px; }
.tk-admin-row { background: var(--surf); border: 1px solid var(--bdr); border-radius: 5px; overflow: hidden; }
.tk-admin-row:hover { border-color: var(--accent); }
.tk-admin-row-expanded { border-color: var(--accent); }
.tk-admin-top { display: flex; align-items: center; gap: 10px; padding: 10px 12px; cursor: pointer; flex-wrap: wrap; }
.tk-admin-title { font-size: 13px; font-weight: 600; color: var(--txt1); flex: 1; min-width: 0; }
.tk-admin-sub { font-size: 11px; color: var(--txt3); }
.tk-admin-detail { padding: 0 12px 12px; border-top: 1px solid var(--bdr); }
.tk-admin-body { font-size: 13px; color: var(--txt2); white-space: pre-wrap; padding: 10px 0 8px; }
.tk-admin-controls { display: flex; gap: 10px; align-items: flex-start; flex-wrap: wrap; margin-top: 8px; }
.tk-admin-note { flex: 1; min-width: 200px; }
.tk-admin-note label { display: block; font-size: 11px; color: var(--txt3); margin-bottom: 4px; }
.tk-admin-note textarea { width: 100%; background: var(--surf2); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt1); padding: 6px 8px; font-size: 12px; box-sizing: border-box; resize: vertical; }
.tk-status-sel { background: var(--surf2); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt1); padding: 5px 8px; font-size: 12px; }
.tk-priority-btn { background: none; border: 1px solid var(--bdr); color: var(--txt3); font-size: 12px; padding: 5px 10px; border-radius: 4px; cursor: pointer; }
.tk-priority-high { border-color: var(--crim); color: var(--result-pend); }
.tk-admin-edit-row { margin-bottom: 8px; padding-top: 10px; }
.tk-admin-edit-row label { display: block; font-size: 11px; color: var(--txt3); margin-bottom: 4px; }
.tk-admin-edit-title { width: 100%; background: var(--surf2); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt1); padding: 6px 8px; font-size: 13px; font-weight: 600; box-sizing: border-box; }
.tk-admin-edit-body { width: 100%; background: var(--surf2); border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt1); padding: 6px 8px; font-size: 13px; box-sizing: border-box; resize: vertical; }


/* ── Rules domain ── */
.rules-filters { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.rules-cat-btn { padding: 5px 12px; border: 1px solid var(--bdr, rgba(201,169,98,.2)); border-radius: 14px; background: var(--surf, #1A1714); color: var(--txt2, #aaa); font-size: 12px; cursor: pointer; font-family: var(--fl); }
.rules-cat-btn:hover { background: var(--surf2, #252119); }
.rules-cat-btn.rules-cat-active { background: var(--accent); color: var(--txt-on-dark); border-color: var(--accent); }
.rules-search-row { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; }
.rules-search-wrap { flex: 1; position: relative; }
.rules-search { width: 100%; box-sizing: border-box; padding: 8px 32px 8px 12px; background: var(--surf, #1A1714); border: 1px solid var(--bdr, rgba(201,169,98,.2)); border-radius: 4px; color: var(--txt1, #E8E0D0); font-size: 13px; font-family: inherit; }
.rules-search:focus { border-color: var(--accent); outline: none; }
.rules-search-clear { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--txt3, #777); font-size: 14px; cursor: pointer; padding: 2px 6px; line-height: 1; }
.rules-search-clear:hover { color: var(--txt1, #E8E0D0); }
.rules-result-count { font-size: 12px; color: var(--txt2, #aaa); white-space: nowrap; }
.rules-add-btn { font-size: 12px; padding: 6px 14px; white-space: nowrap; }

/* Table */
.rules-tbl-wrap { overflow-x: auto; margin-bottom: 12px; }
.rules-tbl { width: 100%; border-collapse: collapse; font-size: 13px; }
.rules-tbl thead { position: sticky; top: 0; z-index: 1; }
.rules-tbl th { text-align: left; padding: 8px 10px; background: var(--surf2, #252119); color: var(--accent); font-family: var(--fl); font-size: 11px; text-transform: uppercase; letter-spacing: .5px; border-bottom: 1px solid var(--bdr, rgba(201,169,98,.2)); white-space: nowrap; }
.rules-th-sort { cursor: pointer; user-select: none; }
.rules-th-sort:hover { color: var(--txt1, #E8E0D0); }
.rules-th-active { color: var(--txt1, #E8E0D0); }
.rules-tbl td { padding: 7px 10px; border-bottom: 1px solid rgba(201,169,98,.06); vertical-align: middle; }
.rules-tbl tbody tr:nth-child(even) { background: rgba(201,169,98,.02); }
.rules-tbl tbody tr:hover { background: rgba(201,169,98,.06); }
.rules-td-name { font-family: var(--fl); color: var(--txt1); white-space: nowrap; }
.rules-td-dim { color: var(--txt2, #aaa); font-size: 12px; }
.rules-td-dots { color: var(--accent); font-size: 11px; letter-spacing: 1px; white-space: nowrap; }
.rules-td-prereq { font-size: 11px; color: var(--txt3, #777); max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rules-td-held { font-family: var(--fl); font-size: 12px; color: var(--txt2); text-align: center; cursor: help; min-width: 56px; }
.rules-td-held:empty { color: var(--txt3); }
.rules-th-held { cursor: help; }
.rules-td-empty { text-align: center; color: var(--txt3); padding: 24px; }
.rules-cat-tag { font-size: 10px; text-transform: uppercase; letter-spacing: .5px; padding: 1px 6px; border-radius: 3px; background: var(--accent-a8); color: var(--accent); }
.rules-edit-btn { background: none; border: none; color: var(--txt3, #777); font-size: 16px; cursor: pointer; padding: 2px 6px; line-height: 1; }
.rules-edit-btn:hover { color: var(--accent); }
.rules-del-btn { background: none; border: none; color: var(--txt3, #777); font-size: 14px; cursor: pointer; padding: 2px 6px; line-height: 1; margin-left: 2px; }
.rules-del-btn:hover { color: var(--crim); }

/* Pagination */
.rules-pag { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 10px 0; font-size: 13px; }
.rules-pag-btn { padding: 5px 12px; border: 1px solid var(--bdr, rgba(201,169,98,.2)); border-radius: 4px; background: var(--surf, #1A1714); color: var(--txt2, #aaa); cursor: pointer; font-size: 12px; }
.rules-pag-btn:hover:not(:disabled) { background: var(--surf2); color: var(--txt1); }
.rules-pag-btn:disabled { opacity: .35; cursor: default; }
.rules-pag-info { color: var(--txt2); font-size: 12px; }
.rules-pag-size { padding: 4px 8px; background: var(--surf, #1A1714); border: 1px solid var(--bdr, rgba(201,169,98,.2)); border-radius: 4px; color: var(--txt1); font-size: 12px; }

/* Modal overlay + dialog */
.rules-modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.65); display: flex; align-items: center; justify-content: center; z-index: 9000; }
.rules-modal-dialog { background: var(--surf); border: 1px solid var(--bdr, rgba(201,169,98,.25)); border-radius: 8px; width: 700px; max-width: 96vw; max-height: 88vh; overflow-y: auto; display: flex; flex-direction: column; }
.rules-modal-header { padding: 16px 20px 12px; font-family: var(--fl); font-size: 16px; color: var(--accent); border-bottom: 1px solid var(--bdr); }
.rules-modal-body { padding: 16px 20px; display: flex; flex-direction: column; gap: 10px; }
.rules-modal-footer { padding: 12px 20px; border-top: 1px solid var(--bdr); display: flex; align-items: center; gap: 10px; justify-content: flex-end; }
.rules-modal-status { font-size: 12px; color: var(--txt2); margin-right: auto; }
.rules-modal-err { color: var(--crim); }

/* Modal read-only */
.rules-modal-ro { display: flex; gap: 20px; padding: 8px 0; margin-bottom: 4px; }
.rules-modal-ro-field { font-size: 12px; }
.rules-modal-ro-label { color: var(--txt3, #777); }
.rules-modal-ro-value { color: var(--txt1); font-family: var(--fl); margin-left: 4px; }

/* Modal fields */
.rules-modal-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; }
.rules-modal-field { display: flex; flex-direction: column; gap: 3px; }
.rules-modal-rr { grid-column: 1 / -1; }
.rules-modal-label { font-size: 11px; color: var(--accent); font-family: var(--fl); }
.rules-modal-input { width: 100%; box-sizing: border-box; padding: 7px 10px; background: var(--surf, #1A1714); color: var(--txt1); border: 1px solid var(--bdr, rgba(201,169,98,.2)); border-radius: 4px; font-family: inherit; font-size: 13px; }
.rules-modal-input:focus { border-color: var(--accent); outline: none; }
.rules-modal-num { width: 80px; }
.rules-modal-mono { font-family: monospace; font-size: 12px; resize: vertical; }
.rules-modal-hint { font-size: 10px; color: var(--txt3); }
.rules-rating-inputs { display: flex; align-items: center; gap: 6px; }
.rules-rating-sep { color: var(--txt3); }

/* Prereq builder */
.prereq-builder-wrap { grid-column: 1 / -1; }
.prereq-tabs { display: flex; gap: 4px; margin-bottom: 8px; }
.prereq-tab { padding: 4px 12px; border: 1px solid var(--bdr, rgba(201,169,98,.2)); border-radius: 4px 4px 0 0; background: var(--surf, #1A1714); color: var(--txt3, #777); font-size: 11px; cursor: pointer; font-family: var(--fl); }
.prereq-tab:hover { color: var(--txt1); }
.prereq-tab-active { background: var(--surf2, #252119); color: var(--accent); border-bottom-color: var(--surf2); }
.prereq-panel { min-height: 40px; }
.prereq-combinator-row { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font-size: 12px; }
.prereq-combo-label { color: var(--txt2); }
.prereq-combo-sel { width: auto; padding: 4px 8px; font-size: 12px; }
.prereq-leaves { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.prereq-leaf { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.prereq-type-sel { width: 130px; flex-shrink: 0; padding: 5px 8px; font-size: 12px; }
.prereq-leaf-name { flex: 1; min-width: 100px; padding: 5px 8px; font-size: 12px; }
.prereq-leaf-qual { width: 100px; padding: 5px 8px; font-size: 12px; }
.prereq-rm-btn { background: none; border: none; color: var(--txt3); font-size: 16px; cursor: pointer; padding: 2px 6px; }
.prereq-rm-btn:hover { color: var(--crim); }
.prereq-empty { font-size: 12px; color: var(--txt3); font-style: italic; padding: 6px 0; }
.prereq-add-btn { font-size: 11px; padding: 4px 12px; align-self: flex-start; }

/* ── Processing Mode (feature.43) ──────────────────────────────────────────── */

.proc-mode-btn {
  border-color: var(--accent);
  color: var(--accent);
}
.proc-mode-btn.active {
  background: var(--accent);
  color: var(--txt-on-dark);
  font-weight: 600;
}

.proc-queue {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* ── Queue controls bar ── */
.proc-queue-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0 2px;
}

.proc-hide-done-btn {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--txt3);
  background: none;
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  padding: 3px 10px;
  cursor: pointer;
  transition: background 0.1s, color 0.1s, border-color 0.1s;
}
.proc-hide-done-btn:hover { background: var(--surf3); color: var(--txt); }
.proc-hide-done-btn.active {
  background: var(--accent-a8);
  border-color: var(--accent);
  color: var(--accent);
}

/* ── Character status strip ── */
.proc-char-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 0 4px;
  flex-wrap: wrap;
}

.proc-char-strip-label {
  font-weight: 700;
  white-space: nowrap;
  margin-right: 2px;
}

.proc-char-chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  padding: 4px 10px;
  border-radius: 4px;
  border: 1px solid var(--bdr2);
  background: var(--surf2);
  cursor: pointer;
  transition: background 0.1s, border-color 0.1s;
  min-width: 60px;
}
.proc-char-chip:hover { background: var(--surf3); border-color: var(--txt3); }

.proc-char-chip-name {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 600;
  color: var(--txt1);
  white-space: nowrap;
}

.proc-char-chip-prog {
  font-family: var(--fl);
  font-size: 9px;
  font-weight: 600;
  letter-spacing: .04em;
  color: var(--txt3);
  white-space: nowrap;
}

/* State variants — left border colour communicates overall state */
.proc-char-chip.state-none     { border-left: 3px solid var(--bdr2); }
.proc-char-chip.state-partial  { border-left: 3px solid var(--gold2); }
.proc-char-chip.state-complete { border-left: 3px solid var(--accent); }
.proc-char-chip.state-ready    { border-left: 3px solid var(--result-succ); }
.proc-char-chip.state-published{ border-left: 3px solid var(--txt3); opacity: 0.6; }

.proc-char-chip.state-partial  .proc-char-chip-prog { color: var(--gold2); }
.proc-char-chip.state-complete .proc-char-chip-prog { color: var(--accent); }
.proc-char-chip.state-ready    .proc-char-chip-prog { color: var(--result-succ); }

.proc-phase-label { flex: 1; }

.proc-phase-count {
  font-size: 11px;
  font-weight: 400;
  color: var(--txt3);
  font-family: var(--fl);
}

.proc-phase-toggle {
  font-size: 11px;
  color: var(--txt3);
  font-family: var(--fl);
  font-weight: 400;
}

/* ── Shared submission-row styles (sign-off, XP review, narrative, etc.) ── */
.proc-preread-char {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 16px;
  border-bottom: 1px solid var(--bdr);
  cursor: pointer;
  transition: background 0.12s;
}
.proc-preread-char:hover { background: var(--surf3); }
.proc-preread-char.expanded { background: var(--accent-a8); }

.proc-preread-body {
  padding: 10px 16px 14px;
  border-bottom: 1px solid var(--bdr);
  background: var(--surf);
}


/* ── Narrative step (Step 9) ── */
.proc-narr-progress {
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .05em;
  background: var(--accent-a25);
  color: var(--accent);
  padding: 1px 6px;
  border-radius: 3px;
  margin-left: 6px;
}

.proc-narr-action-ref {
  margin-bottom: 10px;
}

.proc-narr-action-ref-row {
  padding: 6px 0;
  border-top: 1px solid var(--bdr);
}
.proc-narr-action-ref-row:first-child { border-top: none; }

.proc-narr-action-ref-title {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  color: var(--txt2);
  text-transform: uppercase;
  letter-spacing: .05em;
  margin-bottom: 3px;
}

.proc-narr-action-ref-desc {
  font-weight: 400;
  text-transform: none;
  letter-spacing: 0;
  color: var(--txt3);
}

.proc-narr-action-ref-text {
  font-family: var(--ft);
  font-size: 12px;
  color: var(--txt1);
  white-space: pre-wrap;
  word-break: break-word;
  line-height: 1.5;
}

/* Narrative panel inside proc-preread-body — suppress redundant top border */
.proc-preread-body .dt-narr-detail {
  border-top: none;
  margin-top: 0;
  padding-top: 0;
}

/* ── XP Review step (Step 10) ── */
.proc-xp-table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--fl);
  font-size: 12px;
}
.proc-xp-table thead th {
  text-align: left;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .07em;
  text-transform: uppercase;
  color: var(--txt3);
  padding: 4px 8px 6px;
  border-bottom: 1px solid var(--bdr);
}
.proc-xp-row td {
  padding: 7px 8px;
  border-bottom: 1px solid var(--bdr);
  vertical-align: middle;
  color: var(--txt1);
}
.proc-xp-row.flagged td { background: var(--crim-a8, rgba(139,0,0,.06)); }
.proc-xp-cat  { color: var(--txt3); font-size: 11px; width: 110px; }
.proc-xp-item { flex: 1; }
.proc-xp-cost { width: 60px; color: var(--txt2); font-variant-numeric: tabular-nums; }
.proc-xp-status { width: 170px; display: flex; gap: 6px; align-items: center; }
.proc-xp-note-row td { padding: 4px 8px 8px; border-bottom: 1px solid var(--bdr); }
.proc-xp-note-input {
  width: 100%;
  background: var(--surf2);
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 12px;
  padding: 4px 8px;
  box-sizing: border-box;
}
.proc-xp-note-input:focus { border-color: var(--accent); outline: none; }
.proc-xp-approve-btn.active { border-color: var(--green3, var(--toast-succ-fg)); color: var(--green3, var(--toast-succ-fg)); background: rgba(76,175,80,.1); }
.proc-xp-flag-btn.active    { border-color: var(--crim); color: var(--crim); background: var(--crim-a8, rgba(139,0,0,.08)); }

/* XP trait field in project action detail */
.proc-proj-xp .proc-feed-lbl { color: var(--accent); }

/* ── Sign-off step (Step 11) ── */
.proc-signoff-approval {
  margin-bottom: 12px;
}

.proc-signoff-btns {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin: 6px 0 8px;
}

.proc-signoff-note {
  width: 100%;
  box-sizing: border-box;
  background: var(--surf2);
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 12px;
  padding: 6px 8px;
  resize: vertical;
  line-height: 1.5;
}
.proc-signoff-note:focus { border-color: var(--accent); outline: none; }

.proc-signoff-ready-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  padding-top: 4px;
}

.proc-signoff-ready-btn[disabled] {
  opacity: .4;
  cursor: not-allowed;
}

.proc-signoff-blockers {
  margin: 4px 0 0 0;
  padding: 0 0 0 18px;
  font-family: var(--fl);
  font-size: 11px;
  color: var(--txt3);
  width: 100%;
}
.proc-signoff-blockers li { margin-bottom: 2px; }

.proc-signoff-rejected {
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .05em;
  background: var(--crim-a25);
  color: var(--crim);
  padding: 1px 6px;
  border-radius: 3px;
  margin-left: 6px;
}

.proc-action-row {
  display: grid;
  grid-template-columns: minmax(120px, 160px) minmax(140px, 180px) 1fr 90px auto auto;
  gap: 12px;
  align-items: center;
  padding: 10px 16px;
  border-bottom: 1px solid var(--bdr);
  cursor: pointer;
  transition: background 0.12s;
}

/* ── JDT-5: Joint Projects phase grouping ──────────────────────────── */
.proc-joint-group {
  margin: 12px 8px 16px;
  border: 2px solid var(--gold2);
  border-radius: 4px;
  background: var(--surf);
}
.proc-joint-group-orphan {
  border-color: var(--crim);
  padding: 10px 14px;
  background: var(--crim-a8);
}
.proc-joint-orphan-msg { margin: 0; color: var(--crim); font-style: italic; }
.proc-joint-shared-header {
  padding: 12px 16px 14px;
  background: var(--gold2-a12);
  border-bottom: 1px solid var(--gold2-a25);
}
.proc-joint-action-label {
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gold2);
  margin-bottom: 6px;
}
.proc-joint-description {
  font-family: var(--fb);
  font-size: 14px;
  line-height: 1.5;
  color: var(--txt1);
  white-space: pre-wrap;
  margin-bottom: 8px;
}
.proc-joint-target {
  font-size: 12px;
  color: var(--accent);
  margin-bottom: 8px;
}
.proc-joint-participant-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.proc-joint-participant-pill {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 999px;
  font-size: 12px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
}
.proc-joint-participant-pill em { font-style: normal; color: var(--gold); margin-left: 4px; font-size: 11px; }
.proc-joint-pill-lead { background: var(--gold2); color: var(--bg); border-color: var(--gold2); }
.proc-joint-pill-lead em { color: var(--bg); opacity: .85; }

.proc-joint-row { background: transparent; }
.proc-joint-row:not(:last-of-type) { border-bottom: 1px solid var(--gold2-a25); }
.proc-joint-row.expanded { background: var(--accent-a8); }

.proc-joint-role-badge {
  display: inline-block;
  padding: 1px 7px;
  margin-left: 6px;
  border-radius: 999px;
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: .06em;
  text-transform: uppercase;
  vertical-align: middle;
}
.proc-joint-role-lead { background: var(--gold2); color: var(--bg); }
.proc-joint-role-support { background: var(--surf2); color: var(--gold2); border: 1px solid var(--gold2-a25); }

.proc-joint-outcome-zone {
  padding: 14px 16px 16px;
  background: var(--surf2);
  border-top: 1px solid var(--gold2-a25);
}
.proc-joint-outcome-help {
  font-size: 12px;
  color: var(--txt2);
  margin: 4px 0 8px;
  font-style: italic;
}
.proc-joint-outcome-ta {
  width: 100%;
  min-height: 140px;
  font-family: var(--fb);
  font-size: 13px;
  line-height: 1.5;
  padding: 8px 10px;
  border: 1px solid var(--bdr);
  border-radius: 3px;
  background: var(--surf);
  resize: vertical;
}
.proc-joint-outcome-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
}
.proc-joint-outcome-status {
  font-size: 12px;
  color: var(--gold2);
}

/* JDT-6: ST safety-valve override on the joint group panel */
.proc-joint-st-override-zone {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px 14px;
  background: var(--crim-a8);
  border-top: 1px solid var(--crim-a40);
}
.proc-joint-st-override-btn {
  background: transparent;
  color: var(--crim);
  border: 1px solid var(--crim-a40);
  padding: 5px 12px;
  border-radius: 3px;
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: .04em;
  text-transform: uppercase;
  cursor: pointer;
}
.proc-joint-st-override-btn:hover { background: var(--crim-a12); }
.proc-joint-st-override-help {
  font-size: 11.5px;
  font-style: italic;
  opacity: .8;
}
.proc-joint-st-override-status {
  margin-left: auto;
  font-size: 12px;
  color: var(--crim);
}

.proc-action-row.multiline { align-items: start; padding: 10px 16px; }
.proc-action-row:last-child { border-bottom: none; }
.proc-action-row:hover { background: var(--accent-a8); }
.proc-action-row.expanded { background: var(--accent-a8); border-bottom: none; }

.proc-row-char {
  font-family: var(--fl);
  font-size: 13px;
  color: var(--txt1);
  font-weight: 500;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.proc-row-label {
  font-size: 12px;
  color: var(--accent);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.proc-row-st-badge {
  display: inline-block;
  font-size: 10px;
  font-weight: 700;
  color: var(--gold2);
  font-family: var(--fl);
  margin-left: 5px;
  vertical-align: middle;
  letter-spacing: 0.02em;
}

.proc-row-actions {
  display: flex;
  gap: 4px;
  align-items: center;
  justify-content: flex-end;
}

.proc-duplicate-btn,
.proc-delete-row-btn {
  padding: 2px 7px;
  font-size: 11px;
  background: transparent;
  border: 1px solid var(--bdr);
  border-radius: 3px;
  color: var(--txt3);
  cursor: pointer;
  font-family: var(--ft);
  white-space: nowrap;
}
.proc-duplicate-btn:hover {
  border-color: var(--gold2);
  color: var(--gold2);
}
.proc-delete-row-btn:hover {
  border-color: var(--crim);
  color: var(--crim);
}

.proc-acq-notes {
  font-size: 13px;
  line-height: 1.6;
  color: var(--txt2);
  white-space: pre-wrap;
}

.proc-add-st-action-row {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 6px 10px;
  border-bottom: 1px solid var(--surf3);
}

.proc-add-st-char {
  font-size: 12px;
  color: var(--txt2);
  font-family: var(--fl);
  min-width: 140px;
}

.proc-add-st-form {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  flex: 1;
}

.proc-add-st-form select,
.proc-add-st-form input[type="text"] {
  font-size: 12px;
  background: var(--surf2);
  border: 1px solid var(--surf3);
  color: var(--txt);
  border-radius: 3px;
  padding: 3px 7px;
}

.proc-add-st-form .proc-add-st-label {
  flex: 1;
  min-width: 180px;
}

.proc-add-st-form .proc-add-st-desc {
  flex: 2;
  min-width: 220px;
}

.proc-add-st-section #proc-add-st-form {
  display: none;
  padding: 10px 14px;
  background: var(--surf1);
  border-top: 1px solid var(--bdr);
  flex-direction: column;
  gap: 8px;
}
.proc-add-st-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.proc-add-st-sorcery,
.proc-add-st-general {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.proc-delete-st-action {
  color: var(--crim);
  border-color: var(--crim);
  opacity: 0.8;
}
.proc-delete-st-action:hover {
  opacity: 1;
  background: var(--crim-a15);
}

.proc-row-second-opinion-dot {
  color: var(--gold2);
  font-size: 0.65rem;
  margin-left: 0.3rem;
  flex-shrink: 0;
}

.proc-second-opinion-btn {
  font-size: 11px;
  padding: 3px 10px;
  border: 1px solid var(--surf4);
  border-radius: 3px;
  background: transparent;
  color: var(--txt3);
  cursor: pointer;
  font-family: var(--fl);
}
.proc-second-opinion-btn:hover {
  border-color: var(--gold2);
  color: var(--gold2);
}
.proc-second-opinion-btn.active {
  background: var(--gold2);
  border-color: var(--gold2);
  color: var(--txt-on-gold);
  font-weight: 600;
}

.proc-add-st-section .proc-phase-header {
  cursor: pointer;
}

.proc-row-desc {
  font-size: 12px;
  color: var(--txt2);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.proc-row-desc-multi {
  font-size: 12px;
  color: var(--txt2);
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 2px 0;
}
.proc-row-desc-multi > div {
  line-height: 1.4;
}
.proc-row-desc-lbl {
  color: var(--txt3);
  font-size: 11px;
  font-family: var(--fl);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  margin-right: 4px;
}

.proc-row-status {
  font-size: 11px;
  padding: 3px 8px;
  border-radius: 3px;
  text-align: center;
  font-family: var(--fl);
}
.proc-row-status-cell {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}
.proc-row-validator {
  font-size: 11px;
  font-family: var(--fl);
  font-style: italic;
  color: var(--txt3);
  white-space: nowrap;
}
.proc-row-status.pending     { background: var(--crim-a25); color: var(--result-pend); }
.proc-row-status.validated   { background: rgba(60,140,60,.25); color: var(--result-succ); }
.proc-row-status.committed   { background: rgba(180,140,60,0.18); color: var(--gold2); }
.proc-row-status.rolled      { background: rgba(180,140,60,0.28); color: var(--gold2); }
.proc-row-status.no_roll     { background: rgba(100,100,100,.25); color: var(--txt2); }
.proc-row-status.no_feed     { background: var(--crim-a25); color: var(--result-pend); }
.proc-row-status.maintenance { background: var(--accent-a15); color: var(--accent); }
.proc-row-status.resolved    { background: rgba(60,140,60,.25); color: var(--result-succ); }
.proc-row-status.no_effect   { background: rgba(100,100,100,.25); color: var(--txt2); }
.proc-row-status.skipped     { background: rgba(100,100,100,.18); color: var(--txt3); }
.proc-row-status.obvious     { background: var(--crim-a25); color: var(--result-pend); }
.proc-row-status.neutral     { background: rgba(180,140,60,0.18); color: var(--gold2); }
.proc-row-status.subtle      { background: rgba(60,140,60,.25); color: var(--result-succ); }

.proc-row-author {
  font-family: var(--fl);
  font-size: 10px;
  color: var(--txt3);
  white-space: nowrap;
  font-style: italic;
}

.proc-action-detail {
  padding: 16px;
  background: var(--surf);
  border-bottom: 1px solid var(--bdr);
}
.proc-action-detail:last-child { border-bottom: none; }

.proc-detail-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
  gap: 16px;
  margin-bottom: 14px;
}

.proc-detail-col { display: flex; flex-direction: column; gap: 8px; }

.proc-detail-value {
  font-size: 13px;
  color: var(--txt1);
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 6px 10px;
}

.proc-pool-input {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  padding: 6px 10px;
  border-radius: 4px;
  font-size: 13px;
  font-family: var(--ft);
  width: 100%;
  box-sizing: border-box;
}
.proc-pool-input:focus { border-color: var(--accent); outline: none; }

/* ── Pool Builder (feature.50) ─────────────────────────────── */
.proc-pool-player-row {
  margin-bottom: 12px;
}
.proc-pool-player-structured {
  font-style: italic;
  color: var(--txt2);
}
.proc-pool-player-csv {
  color: var(--txt2);
}

.proc-pool-builder {
  margin-top: 8px;
  margin-bottom: 12px;
}

.proc-pool-builder-selects {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 10px;
}
.proc-pool-builder-selects select {
  background: var(--surf3);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  padding: 4px 8px;
  border-radius: 4px;
  font-size: 13px;
  font-family: var(--ft);
  flex: 1;
  min-width: 120px;
}
.proc-pool-builder-selects select:focus { border-color: var(--accent); outline: none; }
.proc-pool-plus {
  color: var(--txt3);
  font-size: 14px;
  font-weight: bold;
  flex-shrink: 0;
}

.proc-pool-builder-controls {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.proc-pool-mod-group {
  display: flex;
  align-items: center;
  gap: 6px;
}
.proc-pool-mod-label {
  font-size: 12px;
  color: var(--txt3);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.proc-pool-mod-dec,
.proc-pool-mod-inc {
  background: var(--surf3);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  width: 28px;
  height: 28px;
  border-radius: 4px;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}
.proc-pool-mod-dec:hover,
.proc-pool-mod-inc:hover { border-color: var(--accent); color: var(--accent); }
.proc-pool-mod-disp {
  font-size: 14px;
  font-family: var(--fm);
  color: var(--txt1);
  min-width: 30px;
  text-align: center;
}
.proc-pool-rote-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--txt2);
  cursor: pointer;
}
.proc-pool-rote-label input[type="checkbox"] {
  accent-color: var(--accent);
}

.proc-pool-total {
  font-size: 14px;
  font-weight: bold;
  color: var(--accent);
  font-family: var(--fm);
  padding-top: 6px;
  border-top: 1px solid var(--bdr);
}

.proc-pool-parse-ref {
  font-size: 12px;
  color: var(--txt3);
  background: var(--surf3);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 4px 8px;
  margin-bottom: 8px;
  font-style: italic;
}
.proc-pool-nochar-warn {
  font-size: 12px;
  color: var(--warn-dk);
  background: var(--warn-dk-bg);
  border: 1px solid var(--gold2-a25);
  border-radius: 4px;
  padding: 4px 10px;
  margin-bottom: 6px;
}

.proc-feedback-input {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  padding: 6px 10px;
  border-radius: 4px;
  font-size: 13px;
  font-family: var(--ft);
  width: 100%;
  box-sizing: border-box;
}
.proc-feedback-input:focus { border-color: var(--accent); outline: none; }

.proc-player-note-input {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  padding: 6px 10px;
  border-radius: 4px;
  font-size: 13px;
  font-family: var(--ft);
  width: 100%;
  box-sizing: border-box;
  resize: vertical;
}
.proc-player-note-input:focus { border-color: var(--accent); outline: none; }

.proc-val-status {
  display: flex;
  gap: 6px;
  align-items: center;
}

.proc-val-status button {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt3);
  padding: 5px 12px;
  border-radius: 4px;
  font-size: 12px;
  font-family: var(--fl);
  cursor: pointer;
  transition: border-color 0.12s, color 0.12s;
}
.proc-val-status button:hover { border-color: var(--accent); color: var(--txt1); }
.proc-val-status button.active.pending     { border-color: var(--result-pend); color: var(--result-pend); background: var(--crim-a15); }
.proc-val-status button.active.validated   { border-color: var(--result-succ); color: var(--result-succ); background: var(--result-succ-bg); }
.proc-val-status button.active.no_roll     { border-color: var(--txt2); color: var(--txt2); background: rgba(100,100,100,.15); }
.proc-val-status button.active.no_feed     { border-color: var(--result-pend); color: var(--result-pend); background: var(--crim-a15); }
.proc-val-status button.active.maintenance { border-color: var(--accent); color: var(--accent); background: var(--accent-a15); }
.proc-val-status button.active.resolved    { border-color: var(--result-succ); color: var(--result-succ); background: var(--result-succ-bg); }
.proc-val-status button.active.no_effect   { border-color: var(--txt2); color: var(--txt2); background: rgba(100,100,100,.15); }
.proc-val-status button.active.skipped     { border-color: var(--txt2); color: var(--txt2); background: rgba(100,100,100,.15); }
.proc-val-status button.active.committed   { border-color: var(--gold2); color: var(--gold2); background: rgba(180,140,60,0.15); }
.proc-val-status button.active.rolled      { border-color: var(--gold2); color: var(--gold2); background: rgba(180,140,60,0.2); }

.proc-notes-thread {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 8px;
  max-height: 200px;
  overflow-y: auto;
}

.proc-note-entry {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 8px 10px;
  font-size: 12px;
}

.proc-note-meta {
  color: var(--txt3);
  font-size: 11px;
  margin-bottom: 3px;
  font-family: var(--fl);
  display: flex;
  align-items: center;
  gap: 6px;
}
.proc-note-delete-btn {
  background: none;
  border: none;
  color: var(--txt3);
  cursor: pointer;
  font-size: 14px;
  line-height: 1;
  padding: 0 2px;
  margin-left: auto;
  opacity: 0.6;
}
.proc-note-delete-btn:hover { color: var(--crim); opacity: 1; }

.proc-note-text {
  color: var(--txt1);
  line-height: 1.4;
}

.proc-note-add {
  display: flex;
  gap: 8px;
  align-items: flex-start;
}

.proc-note-textarea {
  flex: 1;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  padding: 7px 10px;
  border-radius: 4px;
  font-size: 12px;
  font-family: var(--ft);
  resize: vertical;
  min-height: 44px;
}
.proc-note-textarea:focus { border-color: var(--accent); outline: none; }

/* ── DTX-3: notes / feedback visual hierarchy ──────────────────── */
.proc-feedback-section {
  background: var(--surf2);
  border-radius: 4px;
  padding: 8px 10px;
  margin-top: 4px;
}
.proc-feedback-section .proc-detail-label {
  margin-bottom: 4px;
}
.proc-player-note-section {
  border-left: 3px solid var(--accent);
  margin-top: 4px;
}
.proc-player-note-section .proc-detail-label {
  margin-bottom: 4px;
}
.proc-label-sub {
  font-size: 11px;
  color: var(--txt3);
  font-weight: normal;
  font-family: var(--ft);
}

/* ── Story 1.15: resident/poacher mismatch flag ─────────────────── */
.proc-mismatch-flag {
  margin-top: 6px;
  padding: 5px 10px;
  background: rgba(139, 0, 0, 0.12);
  border: 1px solid var(--crim);
  border-left: 3px solid var(--crim);
  border-radius: 4px;
  font-size: 12px;
  color: var(--crim);
  font-family: var(--fl);
}

/* ── DTX-1: cross-reference callout ────────────────────────────── */
.proc-xref-callout {
  margin-top: 8px;
  border-left: 3px solid var(--gold2);
  font-size: 12px;
  color: var(--txt2);
}
.proc-xref-line {
  line-height: 1.5;
}
.proc-xref-line + .proc-xref-line {
  margin-top: 4px;
  padding-top: 4px;
  border-top: 1px solid var(--bdr);
}

/* ── Travel Review panel ────────────────────────────────────────── */
.proc-travel-detail {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.proc-travel-desc {
  font-size: 13px;
  color: var(--txt1);
  line-height: 1.6;
  white-space: pre-wrap;
  max-height: 160px;
  overflow-y: auto;
  padding: 10px 12px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
}

.proc-travel-btns {
  display: flex;
  gap: 6px;
}

.proc-travel-btn {
  flex: 1;
  padding: 6px 10px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  border-radius: 4px;
  font-size: 12px;
  cursor: pointer;
  font-family: var(--ft);
  transition: background 0.15s;
}

.proc-travel-btn:hover {
  border-color: var(--gold2);
  color: var(--gold2);
}

.proc-travel-btn.active[data-discretion="obvious"] {
  background: var(--crim);
  color: var(--txt-on-dark);
  border-color: var(--crim);
  font-weight: 600;
}

.proc-travel-btn.active[data-discretion="neutral"] {
  background: var(--gold2);
  color: var(--bg);
  border-color: var(--gold2);
  font-weight: 600;
}

.proc-travel-btn.active[data-discretion="subtle"] {
  background: rgba(60,140,60,.8);
  color: var(--txt-on-dark);
  border-color: rgba(60,140,60,.8);
  font-weight: 600;
}

/* ── DTR-2: contested roll panel ───────────────────────────────── */
.proc-proj-contested-panel {
  border-left: 3px solid var(--crim);
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.proc-contested-toggle {
  padding: 5px 10px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt2);
  font-size: 12px;
  cursor: pointer;
  font-family: var(--ft);
}

.proc-contested-toggle.active {
  background: var(--crim-a25);
  border-color: var(--crim);
  color: var(--result-pend);
  font-weight: 600;
}

.proc-contested-pool-input {
  flex: 1;
  padding: 4px 8px;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt1);
  font-size: 12px;
  font-family: var(--ft);
}

/* ── DTX-2: compact merit panel ────────────────────────────────── */
.proc-compact-merit-panel {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* DTSR-5: relocated Outcome zone in left column of merit panels */
.proc-merit-outcome-zone {
  margin-top: 12px;
}

.proc-merit-outcome-btns {
  display: flex;
  gap: 6px;
}

.proc-merit-outcome-btn {
  flex: 1;
  padding: 6px 10px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  border-radius: 4px;
  font-size: 12px;
  cursor: pointer;
  font-family: var(--ft);
  transition: background 0.15s;
}

.proc-merit-outcome-btn:hover {
  border-color: var(--gold2);
  color: var(--gold2);
}

.proc-merit-outcome-btn.active {
  background: var(--gold2);
  color: var(--bg);
  border-color: var(--gold2);
  font-weight: 600;
}

.proc-outcome-summary-input {
  width: 100%;
  box-sizing: border-box;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-left: 3px solid var(--accent);
  color: var(--txt1);
  padding: 5px 8px;
  border-radius: 4px;
  font-size: 12px;
  font-family: var(--ft);
  margin-top: 6px;
}
.proc-outcome-summary-input:focus { border-color: var(--accent); outline: none; }
.proc-outcome-summary-input::placeholder { color: var(--txt3); font-style: italic; }

.proc-compact-notes-panel {
  margin-top: 4px;
}

/* ── ST Response section (feature.66) ─────────────────────────── */
.proc-st-response-section {
  margin-bottom: 12px;
}

.proc-st-response-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}

.proc-st-response-textarea {
  width: 100%;
  box-sizing: border-box;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  padding: 7px 10px;
  border-radius: 4px;
  font-size: 13px;
  font-family: var(--ft);
  resize: vertical;
  min-height: 88px;
  display: block;
}
.proc-st-response-textarea:focus { border-color: var(--accent); outline: none; }

.proc-st-response-footer {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 6px;
}

.proc-st-response-author {
  font-size: 11px;
  color: var(--txt3);
  font-family: var(--fl);
  display: flex;
  align-items: center;
  gap: 6px;
}

.proc-response-status-badge {
  font-size: 10px;
  font-weight: 700;
  font-family: var(--fl);
  letter-spacing: 0.05em;
  padding: 1px 6px;
  border-radius: 3px;
  text-transform: uppercase;
}
.proc-response-status-draft    { background: rgba(100,100,100,.2); color: var(--txt2); border: 1px solid var(--bdr); }
.proc-response-status-reviewed { background: var(--accent-a8); color: var(--accent); border: 1px solid var(--accent-a25); }

.proc-response-reviewed-label {
  font-size: 11px;
  font-family: var(--fl);
  color: var(--accent);
  letter-spacing: 0.04em;
}

.proc-open-sub-link {
  font-size: 11px;
  color: var(--txt3);
  cursor: pointer;
  text-decoration: underline;
  margin-top: 4px;
  display: inline-block;
}
.proc-open-sub-link:hover { color: var(--accent); }

.proc-retag-row {
  display: flex;
  align-items: center;
  gap: 8px;
}

.proc-retag-sel {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt2);
  padding: 5px 8px;
  border-radius: 4px;
  font-size: 12px;
  font-family: var(--ft);
}

/* ── feature.44: Sorcery reminder badge ── */
.proc-reminder-badge {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  margin-bottom: 10px;
  background: var(--accent-a8);
  border-left: 3px solid var(--accent);
  border-radius: 3px;
  font-size: 12px;
  color: var(--accent);
  font-family: var(--fl);
}

/* ── feature.44: Attach Reminder panel ── */
/* .proc-attach-panel: outer padding kept as documented exception (no .proc-attach-body inner element exists; markup unchanged per CSS-7 constraint) */
.proc-attach-panel {
  padding: 14px;
}

.proc-attach-actions {
  max-height: 260px;
  overflow-y: auto;
  margin-bottom: 12px;
  border: 1px solid var(--bdr);
  border-radius: 4px;
  background: var(--surf0, var(--bg));
}

.proc-attach-char-group {
  border-bottom: 1px solid var(--bdr);
  padding: 6px 10px;
}
.proc-attach-char-group:last-child { border-bottom: none; }

.proc-attach-target-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-size: 12px;
  color: var(--txt2);
  margin-bottom: 3px;
  cursor: pointer;
}
.proc-attach-target-row:hover { color: var(--txt1); }

.proc-attach-text {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  border-radius: 4px;
  padding: 6px 10px;
  font-size: 13px;
  width: 100%;
}
.proc-attach-text:focus { outline: none; border-color: var(--accent); }

.proc-attach-btn-row {
  display: flex;
  gap: 8px;
}

.proc-attach-count {
  font-size: 11px;
  color: var(--txt3);
  font-style: italic;
  margin-bottom: 12px;
}

/* ── Ritual roll section (sorcery entries, inline panel) ── */
.proc-ritual-section { margin-top: 10px; }

/* Rite selector row */
.proc-rite-select-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.proc-rite-select {
  flex: 1;
  font-family: var(--fl);
  font-size: 12px;
  color: var(--txt);
  background: var(--surf2);
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  padding: 4px 6px;
  cursor: pointer;
}
.proc-rite-select:focus { outline: none; border-color: var(--accent); }

.proc-rite-custom-lbl {
  display: flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: var(--txt2);
  font-family: var(--fl);
  white-space: nowrap;
}

/* Mechanical result textarea */
.proc-ritual-note-input {
  width: 100%;
  box-sizing: border-box;
  margin-top: 4px;
  background: var(--surf2);
  color: var(--txt1);
  border: 1px solid var(--surf3);
  border-radius: 3px;
  padding: 6px 8px;
  font-family: var(--fl);
  font-size: 13px;
  resize: vertical;
}
.proc-ritual-note-input:focus { outline: none; border-color: var(--accent); }

.proc-ritual-info {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-bottom: 8px;
  font-family: var(--fl);
  font-size: 12px;
  color: var(--txt2);
}

.proc-ritual-info-item { display: flex; gap: 5px; align-items: baseline; }

.proc-ritual-no-rule {
  font-family: var(--fl);
  font-size: 11px;
  color: var(--txt3);
  font-style: italic;
  margin-bottom: 8px;
}

.proc-ritual-summary {
  margin-top: 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.proc-ritual-attempt-line {
  font-family: var(--fl);
  font-size: 11px;
  color: var(--txt3);
}

.proc-ritual-attempt-line.succ { color: var(--accent); font-weight: 700; }

.proc-ritual-potency-line {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  color: var(--accent);
  margin-top: 2px;
}

.proc-ritual-potency-line.proc-ritual-pending {
  color: var(--txt3);
  font-weight: 400;
  font-style: italic;
}

.proc-ritual-fail-line {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  color: var(--crim);
  margin-top: 2px;
}


/* ── feature.45: Feeding info in processing panel ── */
.proc-feed-info {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}

.proc-feed-field {
  font-size: 12px;
  color: var(--txt2);
  white-space: nowrap;
}

.proc-feed-lbl {
  margin-right: 4px;
}



.proc-feed-no-method {
  font-size: 12px;
  color: var(--txt3);
  font-style: italic;
  margin-bottom: 12px;
}

/* ── Feeding description card (editable) ── */
.proc-feed-desc-card {
  margin-bottom: 10px;
}
.proc-feed-desc-card-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
}
.proc-feed-desc-card-hd .proc-detail-label {
  margin-bottom: 0;
}
.proc-feed-desc-card-hd .dt-btn {
  padding: 2px 10px;
  font-size: 11px;
}
.proc-feed-desc-empty {
  color: var(--txt3);
  font-style: italic;
  font-size: 12px;
}
/* ── Detail card shared input styles (feeding / project / sorcery / merit) ── */
.proc-detail-input,
.proc-detail-ta {
  width: 100%;
  box-sizing: border-box;
  margin-top: 4px;
  background: var(--surf2);
  color: var(--txt1);
  border: 1px solid var(--surf3);
  border-radius: 3px;
  padding: 6px 8px;
  font-family: var(--fl);
  font-size: 13px;
}
.proc-detail-ta {
  resize: vertical;
}
.proc-feed-desc-actions {
  display: flex;
  gap: 8px;
  margin-top: 8px;
}

.proc-feed-roll-result {
  font-size: 12px;
  color: var(--accent);
  margin-bottom: 10px;
  padding: 4px 8px;
  background: var(--accent-a8);
  border-radius: 4px;
}

/* ── feature.51: Feeding panel two-column layout ── */
.proc-feed-layout {
  display: flex;
  gap: 16px;
  align-items: flex-start;
}
.proc-feed-left {
  flex: 3;
  min-width: 0;
}
.proc-feed-right {
  flex: 1;
  min-width: 180px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.proc-proj-succ-total-val {
  font-family: var(--fl);
  font-size: 14px;
  font-weight: 600;
  color: var(--txt1);
}

.proc-proj-roll-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.proc-proj-roll-result {
  font-size: 11px;
  color: var(--txt2);
  word-break: break-word;
  line-height: 1.5;
}
.proc-proj-roll-result.proc-roll-net-zero {
  color: var(--result-pend);
}

.proc-proj-val-notation {
  font-size: 11px;
  color: var(--accent);
  margin-top: 4px;
  letter-spacing: 0.02em;
}

.proc-validated-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 0.75rem;
  padding: 2px 6px;
  border-radius: 3px;
  background: var(--surf3);
  color: var(--txt2);
  line-height: 1.4;
  margin-top: 4px;
}

/* Modifier rows */
.proc-mod-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 12px;
  color: var(--txt2);
  margin-bottom: 5px;
}
.proc-mod-row:last-child { margin-bottom: 0; }

.proc-mod-label {
  color: var(--txt3);
  font-size: 11px;
}

.proc-mod-val {
  font-size: 12px;
  font-weight: 600;
  color: var(--txt2);
  min-width: 28px;
  text-align: right;
}
.proc-mod-pos  { color: var(--proc-pos, #5dbb6a); }
.proc-mod-neg  { color: var(--crim); }
.proc-mod-muted { color: var(--txt3); font-weight: 400; }

/* Total row */
.proc-mod-total-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 8px;
  padding-top: 6px;
  border-top: 1px solid var(--bdr);
}
.proc-mod-total-val,
.proc-vitae-total-val {
  font-size: 15px;
  font-weight: 700;
  color: var(--accent);
  min-width: 28px;
  text-align: right;
}

/* Ticker controls (shared by equipment and manual vitae) */
.proc-mod-ticker {
  display: flex;
  align-items: center;
  gap: 4px;
}
.proc-mod-ticker button {
  background: var(--surf3);
  border: 1px solid var(--bdr);
  color: var(--txt1);
  border-radius: 3px;
  width: 20px;
  height: 20px;
  font-size: 13px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}
.proc-mod-ticker button:hover { border-color: var(--accent); }
.proc-equip-mod-disp,
.proc-vitae-mod-disp {
  min-width: 28px;
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  color: var(--txt1);
}

/* Rite cost input */
.proc-rite-cost-input {
  background: var(--surf3);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  color: var(--txt1);
  font-size: 12px;
  padding: 2px 4px;
  width: 52px;
  text-align: center;
}
.proc-rite-cost-input:focus { border-color: var(--accent); outline: none; }

.proc-feed-rote-right {
  font-size: 13px;
  color: var(--txt2);
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 6px;
}
.proc-feed-right-validation .proc-val-status {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 8px;
}
.proc-feed-committed-pool {
  margin-top: 10px;
  padding: 6px 8px;
  background: var(--surf1);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  font-size: 12px;
  color: var(--accent);
  font-family: monospace;
  word-break: break-word;
}
.proc-pool-clear-btn {
  display: block;
  margin-left: auto;
  margin-top: 4px;
}

/* ── feature.46: Project detail and allies hint ── */
.proc-proj-detail {
  margin-bottom: 12px;
}

.proc-proj-field {
  font-size: 12px;
  color: var(--txt2);
  margin-bottom: 4px;
  line-height: 1.5;
}
.proc-proj-field:last-child { margin-bottom: 0; }

/* ── feature.68: Merit action validator ── */
.proc-merit-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

.proc-merit-cat-chip {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 2px 7px;
  border-radius: 3px;
  white-space: nowrap;
}
.proc-merit-cat-allies   { background: var(--gold2); color: var(--txt-on-gold); }
.proc-merit-cat-status   { background: rgba(139,0,0,0.55); color: var(--txt); border: 1px solid var(--crim); }
.proc-merit-cat-retainer { background: var(--surf2); color: var(--txt2); border: 1px solid var(--bdr); }
.proc-merit-cat-staff    { background: var(--surf1); color: var(--txt3); border: 1px solid var(--bdr); }
.proc-merit-cat-contacts { background: var(--surf2); color: var(--gold2); border: 1px solid var(--bdr2); }

.proc-merit-qualifier {
  font-size: 12px;
  color: var(--txt2);
}

.proc-merit-dots {
  font-size: 11px;
  letter-spacing: -0.08em;
  color: var(--gold2);
}

/* Merit action mode chip (right panel) */
.proc-merit-mode-chip {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: 3px;
}
.proc-merit-mode-instant  { background: var(--proc-instant-bg); color: var(--proc-instant-fg); border: 1px solid var(--proc-instant-bdr); }
.proc-merit-mode-contested{ background: var(--proc-contested-bg); color: var(--gold2); border: 1px solid var(--proc-contested-bdr); }
.proc-merit-mode-auto     { background: var(--proc-auto-bg); color: var(--proc-auto-fg); border: 1px solid var(--proc-auto-bdr); }
.proc-merit-mode-blocked  { background: var(--proc-blocked-bg); color: var(--proc-blocked-fg); border: 1px solid var(--proc-blocked-bdr); }

.proc-merit-mode-row,
.proc-merit-effect-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 4px;
}
.proc-merit-effect-row:last-child { margin-bottom: 0; }

.proc-merit-effect-text {
  font-size: 11px;
  color: var(--txt2);
  line-height: 1.4;
  flex: 1;
}

.proc-merit-effect-auto .proc-merit-effect-text {
  color: var(--txt3);
  font-style: italic;
}

/* Investigation matrix reference (collapsible) */
/* ── Investigation: Lead toggle buttons ── */
.proc-inv-lead-btns {
  display: flex;
  gap: 4px;
}
.proc-inv-lead-btn {
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 2px 7px;
  border-radius: 3px;
  border: 1px solid var(--bdr2);
  background: var(--surf2);
  color: var(--txt3);
  cursor: pointer;
}
.proc-inv-lead-btn.active {
  background: var(--accent-a8);
  border-color: var(--accent-a40);
  color: var(--accent);
}

/* ── Action type recategorisation ── */
.proc-recat-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--bdr);
}
.proc-recat-row-tight  { margin-top: 4px; padding-top: 4px; border-top: none; }
.proc-recat-row-spaced { margin-top: 8px; padding-top: 8px; }

/* Pool committed state — locks pool builder and modifier panels */
.proc-pool-committed { opacity: 0.65; pointer-events: none; user-select: none; }
.proc-pool-committed-badge {
  color: var(--gold2);
  font-size: 10px;
  font-family: var(--fl);
  letter-spacing: 0.07em;
  margin-left: 6px;
  text-transform: uppercase;
  vertical-align: middle;
}

/* Territory pills rendered inline alongside the Action Type selector (ambience actions) */
.proc-terr-inline-pills {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: 12px;
}

.proc-recat-select {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 600;
  color: var(--txt);
  background: var(--surf2);
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  padding: 3px 6px;
  cursor: pointer;
}
.proc-recat-select:focus { outline: none; border-color: var(--accent); }

.proc-recat-original {
  font-family: var(--fl);
  font-size: 10px;
  color: var(--txt3);
  font-style: italic;
}



.proc-hwv-badge {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 2px 6px;
  border-radius: 3px;
  background: rgba(180, 120, 30, 0.2);
  color: var(--gold2);
  border: 1px solid rgba(180, 120, 30, 0.4);
  white-space: nowrap;
}

/* ── Ambience Dashboard (feature.47) ─────────────────────────────────────── */

.proc-amb-header,
.proc-disc-header {
  justify-content: space-between;
}

.proc-disc-header {
  background: var(--surf1);
  border-bottom: none;
  border-top: 1px solid var(--bdr);
  margin-top: 16px;
}

.proc-amb-toggle {
  font-size: 11px;
  color: var(--txt3);
}

.proc-amb-pending-chip {
  font-size: 10px;
  font-family: var(--fl);
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  background: var(--warn-dk-bg);
  color: var(--warn-dk);
  border: 1px solid var(--gold2-a25);
  border-radius: 3px;
  padding: 2px 7px;
  margin-left: 10px;
}

.proc-amb-body {
  padding: 14px;
}

.proc-amb-table,
.proc-disc-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  margin-bottom: 8px;
}

.proc-amb-table th,
.proc-disc-table th {
  text-align: left;
  padding: 5px 8px;
  background: var(--surf2);
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: .3px;
  border-bottom: 1px solid var(--bdr);
  white-space: nowrap;
}

.proc-amb-table td,
.proc-disc-table td {
  padding: 5px 8px;
  border-bottom: 1px solid rgba(255,255,255,.04);
  color: var(--txt1);
  white-space: nowrap;
}

.proc-amb-table tr:last-child td,
.proc-disc-table tr:last-child td { border-bottom: none; }

.proc-amb-terr {
  font-weight: 500;
}

.proc-amb-net {
  font-weight: 700;
  font-size: 13px;
}

.proc-amb-pos,
.proc-amb-table td.proc-amb-pos { color: var(--result-succ); }
.proc-amb-neg,
.proc-amb-table td.proc-amb-neg { color: var(--result-pend); }
.proc-amb-neutral,
.proc-amb-table td.proc-amb-neutral { color: var(--txt2); }

.proc-amb-confirm-btn { padding: 3px 8px; background: var(--surf); border: 1px solid var(--bdr2); border-radius: 3px; color: var(--txt2); font-size: 11px; font-family: var(--fl); letter-spacing: .05em; cursor: pointer; white-space: nowrap; }
.proc-amb-confirm-btn:hover { border-color: var(--accent-a40); color: var(--accent); }
.proc-amb-reconfirm { opacity: 0.6; font-size: 10px; margin-left: 4px; }
.proc-amb-confirmed { color: var(--accent); font-size: 12px; white-space: nowrap; }

.proc-amb-note {
  font-size: 11px;
  color: var(--txt3);
  font-style: italic;
  margin: 4px 0 12px;
}

.proc-amb-empty {
  font-size: 12px;
  color: var(--txt3);
  font-style: italic;
  padding: 10px 14px;
}

.proc-disc-name {
  font-weight: 500;
  color: var(--txt2);
}

.proc-disc-used { color: var(--txt1); }
.proc-disc-high {
  color: var(--accent);
  font-weight: 700;
  background: var(--accent-a8);
}

.proc-amb-notes-block {
  padding: 14px;
  border-top: 1px solid var(--bdr);
}

.proc-amb-notes-lbl {
  display: block;
  font-size: 11px;
  color: var(--txt3);
  font-family: var(--fl);
  letter-spacing: .3px;
  margin-bottom: 6px;
}

.proc-amb-notes {
  width: 100%;
  min-height: 60px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt1);
  font-size: 12px;
  font-family: var(--ft);
  padding: 8px 10px;
  resize: vertical;
  box-sizing: border-box;
}
.proc-amb-notes:focus { border-color: var(--accent); outline: none; }

/* ══════════════════════════════════════════
   Extracted utility classes (replaces inline styles)
   ══════════════════════════════════════════ */

/* Section block — replaces bare <div style="margin-bottom:12px"> wrappers */
.proc-section { margin-bottom: 12px; }

/* Scrollable table container — replaces overflow-x:auto;padding:0 2px 2px */
.dt-scroll-wrap { overflow-x: auto; padding: 0 2px 2px; }

/* Small number input — replaces width:52px on <input type="number"> */
.dt-num-input-sm { width: 52px; }

/* Compact button — replaces padding:2px 8px;font-size:11px on action buttons */
.dt-btn-sm { padding: 2px 8px; font-size: 11px; }

/* Dim button — replaces opacity:.5 on archive/disabled-state buttons */
.dt-btn-dim { opacity: .5; }

/* Muted button — replaces opacity:.6/.7 on secondary/cancel buttons */
.dt-btn-muted { opacity: .6; }

/* Inline hint text — replaces color:var(--txt3);font-size:10px spans */
.dt-hint { font-size: 10px; color: var(--txt3); }

/* Dim italic — replaces color:var(--txt3);font-style:italic spans */
.dt-dim-italic { color: var(--txt3); font-style: italic; }

/* Empty state message — replaces font-size:12px;color:var(--txt3);padding:8px 0 */
.dt-empty-msg { font-size: 12px; color: var(--txt3); padding: 8px 0; }

/* Full description paragraph — replaces font-size:13px;color:var(--txt1);margin:0 0 12px */
.proc-full-desc { font-size: 13px; color: var(--txt1); margin: 0 0 12px; }

/* Plain label — overrides uppercase/tracking on proc-detail-label for inline labels */
.proc-detail-label-plain { text-transform: none; letter-spacing: 0; }

/* Preview-mode warning — replaces hardcoded gold inline override on .dt-warn */
.dt-warn-preview { background: var(--accent-a8); border-color: var(--accent); color: var(--accent); }

/* Open-submission link wrapper — replaces <div style="margin-top:10px"> */
.proc-open-sub-wrap { margin-top: 10px; }

/* NPC/investigation textarea height variants */
.dt-narr-textarea-sm { min-height: 48px; }
.dt-narr-textarea-xs { min-height: 36px; margin-top: 6px; }

/* Inline summary element (details/summary "new investigation" trigger) */
.dt-summary-btn { display: inline-block; cursor: pointer; margin-bottom: 8px; }

/* Territories at a glance — empty state table cell */
.dt-taag-empty-row td { text-align: center; color: var(--txt3); padding: 12px; font-size: 12px; }

/* ══════════════════════════════════════════
   Parchment overrides
   Dark mode reads thin Cinzel fine (contrast does the work).
   Parchment needs 600+ weight — stroke width carries legibility on a light bg.
   Also corrects hardcoded dark-mode colours in status badges.
   ══════════════════════════════════════════ */

/* Status row badges — dark-mode colours (#ff9090 / #90d090) are unreadable on cream */
html:not([data-theme="dark"]) .proc-row-status.pending  { background: var(--crim-a15); color: var(--crim); }
html:not([data-theme="dark"]) .proc-row-status.validated{ background: var(--green-a15); color: var(--green3); }
html:not([data-theme="dark"]) .proc-row-status.committed { background: rgba(180,140,60,0.12); color: var(--gold2); }
html:not([data-theme="dark"]) .proc-row-status.rolled   { background: rgba(180,140,60,0.18); color: var(--gold2); }
html:not([data-theme="dark"]) .proc-row-status.no_roll  { background: var(--gold-a10); color: var(--txt2); }
html:not([data-theme="dark"]) .proc-row-status.no_feed  { background: var(--crim-a15); color: var(--crim); }
html:not([data-theme="dark"]) .proc-row-status.skipped  { background: rgba(100,100,100,.12); color: var(--label-tertiary); }

/* Character name in processing row — 700 for prominence (Cinzel entity name) */
html:not([data-theme="dark"]) .proc-row-char { font-weight: 700; }

/* Feeding Matrix / Checklist toggles — surf2 blends into parchment bg; use surf3 */
html:not([data-theme="dark"]) .dt-matrix-toggle,
html:not([data-theme="dark"]) .dt-chk-toggle { background: var(--surf3); }
html:not([data-theme="dark"]) .dt-matrix-toggle:hover,
html:not([data-theme="dark"]) .dt-chk-toggle:hover { background: var(--surf4, var(--bdr)); }
/* Discipline Profile Matrix header — match dark parchment tier */
html:not([data-theme="dark"]) .proc-disc-header { background: var(--surf3); }
html:not([data-theme="dark"]) .proc-disc-header:hover { background: var(--surf4, var(--bdr)); }

/* Font size floor: bump 10px readable-text elements to 12px on parchment */
html:not([data-theme="dark"]) .dt-scene-mod,
html:not([data-theme="dark"]) .dt-matrix-amb,
html:not([data-theme="dark"]) .dt-matrix-nosub-badge,
html:not([data-theme="dark"]) .dt-chk-nosub-badge { font-size: 12px; }

/* text-align: centre on Cinzel button variants */
html:not([data-theme="dark"]) .btn-sm { text-align: center; }


/* Character strip — gold2 is too bright on parchment */
html:not([data-theme="dark"]) .proc-char-chip.state-partial  { border-left-color: var(--crim); }
html:not([data-theme="dark"]) .proc-char-chip.state-partial  .proc-char-chip-prog { color: var(--crim); }

/* Processing validation status buttons — neon colours fail on parchment */
html:not([data-theme="dark"]) .proc-val-status button.active.pending      { border-color: var(--crim); color: var(--crim); background: var(--crim-a12); }
html:not([data-theme="dark"]) .proc-val-status button.active.validated    { border-color: var(--green3); color: var(--green3); background: var(--green-a15); }
html:not([data-theme="dark"]) .proc-val-status button.active.resolved     { border-color: var(--green3); color: var(--green3); background: var(--green-a15); }
html:not([data-theme="dark"]) .proc-val-status button.active.no_effect    { border-color: var(--txt2); color: var(--txt2); background: var(--gold-a10); }
html:not([data-theme="dark"]) .proc-val-status button.active.skipped      { border-color: var(--txt2); color: var(--txt2); background: var(--gold-a10); }
html:not([data-theme="dark"]) .proc-val-status button.active.maintenance  { border-color: var(--accent); color: var(--accent); background: var(--accent-a12); }
html:not([data-theme="dark"]) .proc-val-status button.active.committed    { border-color: var(--story-compl); color: var(--story-compl); background: var(--story-compl-a15); }
html:not([data-theme="dark"]) .proc-val-status button.active.rolled       { border-color: var(--story-compl); color: var(--story-compl); background: var(--story-compl-a15); }
html:not([data-theme="dark"]) .proc-val-status button:hover               { border-color: var(--crim-a40); color: var(--txt); }
html:not([data-theme="dark"]) .proc-row-status.maintenance                { background: var(--accent-a12); color: var(--accent); }
html:not([data-theme="dark"]) .proc-row-status.resolved                   { background: var(--green-a15); color: var(--green3); }
html:not([data-theme="dark"]) .proc-row-status.no_effect                  { background: var(--gold-a10); color: var(--txt2); }

/* Merit action mode chips — dark-mode neon colours fail on parchment */
html:not([data-theme="dark"]) .proc-merit-mode-instant   { background: var(--green-a15); color: var(--green3); border-color: var(--green3); }
html:not([data-theme="dark"]) .proc-merit-mode-contested { background: var(--accent-a12); color: var(--accent); border-color: var(--accent); }
html:not([data-theme="dark"]) .proc-merit-mode-auto      { background: var(--gold-a10); color: var(--txt2); border-color: var(--bdr); }
html:not([data-theme="dark"]) .proc-merit-mode-blocked   { background: var(--crim-a12); color: var(--crim); border-color: var(--crim-a40); }


/* Audit badges — base colours are too faint on cream parchment.
   Error → strong crimson. Warning → dark parchment gold (#8B6010) for semantic
   distinction from error while staying legible on the light background. */
html:not([data-theme="dark"]) .cc-audit-err {
  color: var(--crim);
  background: var(--crim-a15);
  border-color: var(--crim-a40);
}

/* Ambience pending chip — dark background/neon text don't suit parchment */
html:not([data-theme="dark"]) .proc-amb-pending-chip { background: var(--crim-a12); color: var(--crim2); border-color: var(--crim-a30); }

/* ── Connected Characters ────────────────────────────────────────────────── */
.proc-connected-section {
  margin-top: 10px;
  padding: 8px 12px 10px;
  border-top: 1px solid var(--bdr);
}
.proc-connected-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  margin-top: 6px;
}
.proc-conn-char-lbl {
  display: flex;
  align-items: center;
  gap: 5px;
  font-family: var(--fl);
  font-size: 11px;
  color: var(--txt);
  cursor: pointer;
  white-space: nowrap;
}
.proc-conn-char-lbl input[type="checkbox"] { accent-color: var(--accent); cursor: pointer; }
.proc-targets-checkbox-list {
  max-height: 150px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.proc-investigate-target-list {
  max-height: 150px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.proc-conn-char-lbl input[type="radio"] { accent-color: var(--accent); cursor: pointer; }

/* ── Attack Target ───────────────────────────────────────────────────────── */
.proc-attack-target-section {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--bdr);
}
.proc-attack-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 6px;
}
.proc-attack-char-sel,
.proc-attack-merit-sel {
  font-family: var(--fl);
  font-size: 11px;
  color: var(--txt);
  background: var(--surf2);
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  padding: 3px 6px;
  cursor: pointer;
  flex: 1;
  min-width: 0;
}
.proc-attack-char-sel:focus,
.proc-attack-merit-sel:focus { outline: none; border-color: var(--accent); }

/* Vitae tally positive values — use --green2 (medium forest green, matches dice success on parchment) */
html:not([data-theme="dark"]) .proc-mod-pos { color: var(--green2); }

/* Ambience pos/neg colour values — neon green/red replaced with legible theme tokens */
html:not([data-theme="dark"]) .proc-amb-pos,
html:not([data-theme="dark"]) .proc-amb-table td.proc-amb-pos { color: var(--green2); }
html:not([data-theme="dark"]) .proc-amb-neg,
html:not([data-theme="dark"]) .proc-amb-table td.proc-amb-neg { color: var(--crim); }

/* ── Downtime tab: gold → crimson sweep ───────────────────────────────────── */

/* Pipeline ribbon — done steps: faded gold → faded crimson */
html:not([data-theme="dark"]) .pr-done { color: var(--crim-a60); }
html:not([data-theme="dark"]) .pr-done .pr-step-num {
  background: var(--crim-a12);
  color: var(--crim-a60);
  border-color: var(--crim-a30);
}

/* Pipeline sub-ribbon — done steps */
html:not([data-theme="dark"]) .pr-sub.pr-done { color: var(--crim-a60); }

/* btn-sm (utility action button) — gold text/border → neutral dark */
html:not([data-theme="dark"]) .btn-sm {
  color: var(--txt);
  border-color: var(--bdr2);
}



/* Feeding matrix poach cells — hardcoded amber → crimson */
html:not([data-theme="dark"]) .dt-matrix-poach {
  color: var(--crim);
  background: var(--crim-a8);
}

/* CRITICAL — dark orange bg hardcoded (#5a3010 equiv): completely unreadable on cream */
html:not([data-theme="dark"]) .proc-pool-nochar-warn {
  color: var(--crim);
  background: var(--crim-a8);
  border-color: var(--crim-a25);
}

/* ══════════════════════════════════════════
   ROLL MODAL — shared by downtime processing roll buttons.
   CSS was only in downtime_helper; ported here with admin token mapping:
     --surf1 → --surf  |  --border → --bdr  |  --radius → 6px
     --muted → --txt3  |  --text → --txt    |  --surf4 → --surf3
     --gold1 → --gold  |  all others same
   ══════════════════════════════════════════ */

.roll-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.75);
  z-index: 1000;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.roll-panel {
  background: var(--surf);
  border: 1px solid var(--bdr2);
  border-radius: 8px;
  box-shadow: 0 8px 40px rgba(0,0,0,0.7);
  width: 100%;
  max-width: 580px;
  padding: 24px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.roll-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}
.roll-title {
  font-family: var(--fl);
  font-size: 16px;
  color: var(--accent);
  margin-bottom: 3px;
}
.roll-subtitle {
  font-family: var(--ft);
  font-size: 13px;
  color: var(--txt3);
}
.roll-close-btn {
  background: none;
  border: none;
  color: var(--txt3);
  font-size: 16px;
  cursor: pointer;
  line-height: 1;
  padding: 2px 5px;
  border-radius: 3px;
  transition: color 0.15s;
}
.roll-close-btn:hover { color: var(--txt); }

.roll-params {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.roll-param {
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--txt3);
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  padding: 2px 8px;
}

/* Dice display */
.roll-dice-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 6px;
  padding: 16px;
  min-height: 64px;
  align-items: center;
}
.roll-chain {
  display: flex;
  align-items: center;
  gap: 4px;
}
.roll-die {
  width: 35px;
  height: 35px;
  border-radius: 5px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 700;
  border: 2px solid transparent;
  transition: transform 0.1s;
}
.roll-die.succ {
  background: rgba(74,124,89,0.3);
  color: var(--success-exceptional);
  border-color: rgba(74,124,89,0.6);
}
.roll-die.fail {
  background: var(--surf3);
  color: var(--txt3);
  border-color: var(--surf3);
}
.roll-die.again {
  border-color: var(--accent) !important;
  box-shadow: 0 0 6px rgba(139,96,16,0.4);
}
.roll-arrow {
  color: var(--txt3);
  font-size: 11px;
  line-height: 1;
}

/* Result summary */
.roll-summary {
  text-align: center;
  padding: 8px 0;
}
.roll-count {
  font-family: var(--fl);
  font-size: 48px;
  line-height: 1;
  color: var(--accent);
}
.roll-count.exceptional { color: var(--success-exceptional); }
.roll-count.failure     { color: var(--crim2); }
.roll-count-label {
  font-family: var(--fl);
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-top: 6px;
}
.roll-count-label.exceptional { color: var(--success-exceptional); }
.roll-count-label.failure     { color: var(--crim2); }

.roll-btn-row {
  display: flex;
  gap: 12px;
  justify-content: center;
}
/* Generic .btn used by roll modal buttons */
.roll-btn-row .btn {
  background: none;
  border: 1px solid var(--bdr2);
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 8px 18px;
  border-radius: 4px;
  cursor: pointer;
  transition: border-color 0.12s, color 0.12s;
}
.roll-btn-row .btn:hover { border-color: var(--bdr3); color: var(--txt); }

/* Rote two-column dice layout */
.roll-rote-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.roll-dice-block { display: flex; flex-direction: column; gap: 8px; }
.roll-dice-block.dimmed .roll-die       { opacity: 0.4; }
.roll-dice-block.dimmed .roll-dice-wrap { background: var(--surf); }
.roll-dice-label {
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--txt3);
}
.roll-dice-label.winner { color: var(--success-exceptional); }
.rote-tag {
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.08em;
  color: var(--accent);
  border: 1px solid var(--accent-a40);
  border-radius: 3px;
  padding: 1px 6px;
  vertical-align: middle;
  margin-left: 8px;
}
.roll-rote-toggle {
  cursor: pointer;
  color: var(--accent) !important;
  border-color: var(--accent-a40) !important;
}

/* Roll button semantic colours (not inline styles) */
.roll-btn-save  { border-color: var(--story-compl) !important; color: var(--story-compl) !important; }
.roll-btn-close { border-color: var(--txt3) !important; color: var(--txt3) !important; }
.roll-btn-save:hover  { border-color: var(--success-exceptional) !important; color: var(--success-exceptional) !important; }
.roll-btn-close:hover { border-color: var(--txt2) !important; color: var(--txt2) !important; }

/* ── Roll modal parchment overrides ── */
html:not([data-theme="dark"]) .roll-overlay       { background: rgba(80,60,30,0.45); }
html:not([data-theme="dark"]) .roll-panel         { background: var(--bg); box-shadow: 0 8px 32px rgba(0,0,0,0.22); border-color: var(--bdr2); }
html:not([data-theme="dark"]) .roll-title         { color: var(--txt); }
html:not([data-theme="dark"]) .roll-count         { color: var(--crim); }
html:not([data-theme="dark"]) .roll-count.exceptional { color: var(--success-exceptional-hover); }
html:not([data-theme="dark"]) .roll-count-label.exceptional { color: var(--success-exceptional-hover); }
html:not([data-theme="dark"]) .roll-count.failure { color: var(--crim2); }
html:not([data-theme="dark"]) .roll-count-label.failure { color: var(--crim2); }
html:not([data-theme="dark"]) .roll-die.again     { border-color: var(--gold2) !important; box-shadow: 0 0 5px rgba(180,140,60,0.2); }
html:not([data-theme="dark"]) .roll-rote-toggle   { color: var(--txt2) !important; border-color: var(--bdr2) !important; }
html:not([data-theme="dark"]) .rote-tag           { color: var(--crim); border-color: rgba(139,0,0,0.35); }
html:not([data-theme="dark"]) .roll-dice-wrap     { background: var(--surf2); border-color: var(--bdr); }
html:not([data-theme="dark"]) .roll-die.succ      { background: rgba(60,100,70,0.15); color: var(--success-exceptional); border-color: rgba(60,100,70,0.4); }
html:not([data-theme="dark"]) .roll-die.fail      { background: var(--surf3); color: var(--txt3); border-color: var(--bdr); }
html:not([data-theme="dark"]) .roll-btn-save      { border-color: var(--success-exceptional) !important; color: var(--success-exceptional) !important; }
html:not([data-theme="dark"]) .roll-btn-save:hover { border-color: var(--success-exceptional-hover) !important; color: var(--success-exceptional-hover) !important; }

/* ── DT Story Tab ─────────────────────────────────────────────────── */

/* Sub-tab bar */
#dt-sub-tab-bar {
  display: flex;
  gap: 4px;
  margin-left: auto;
  padding-left: 16px;
}
.dt-sub-tab-btn {
  background: transparent;
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  color: var(--txt2);
  cursor: pointer;
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.06em;
  padding: 4px 12px;
  text-transform: uppercase;
  transition: color 0.15s, border-color 0.15s;
}
.dt-sub-tab-btn:hover { color: var(--txt); border-color: var(--bdr3); }
.dt-sub-tab-btn.active {
  background: var(--gold2);
  border-color: var(--gold2);
  color: var(--txt-on-gold);
  font-weight: 700;
}

/* Panel display management */
.dt-panel { width: 100%; }

/* Character nav rail */
.dt-story-nav-rail {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--bdr);
  background: var(--surf);
}
.dt-story-pill {
  align-items: center;
  background: var(--surf2);
  border: 1px solid var(--bdr2);
  border-radius: 14px;
  color: var(--txt2);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--fl);
  font-size: 11px;
  gap: 5px;
  letter-spacing: 0.05em;
  padding: 4px 10px;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.dt-story-pill:hover,
.dt-story-pill.active {
  background: var(--surf3);
  border-color: var(--bdr3);
  color: var(--txt);
}
.dt-story-pill-dot {
  border-radius: 50%;
  display: inline-block;
  height: 7px;
  width: 7px;
}
.dt-story-pill.amber .dt-story-pill-dot { background: var(--chip-draft); }
.dt-story-pill.green  .dt-story-pill-dot { background: var(--story-compl); }
.dt-story-pill.amber { border-color: rgba(200,144,64,0.4); }
.dt-story-pill.green  { border-color: var(--story-compl-a40); }

.dt-story-pill-row {
  align-items: center;
  display: flex;
  gap: 6px;
}
.dt-story-push-btn {
  background: transparent;
  border: 1px solid var(--gold2);
  border-radius: 3px;
  color: var(--gold2);
  cursor: pointer;
  font-size: 10px;
  padding: 2px 6px;
}
.dt-story-push-btn:disabled { opacity: 0.5; cursor: default; }
.dt-story-repush-btn { border-color: var(--gold-a40); color: var(--gold-a60); font-size: 12px; padding: 1px 5px; }
.dt-error-msg { color: var(--crim); font-size: 10px; }
.dt-story-rail-header { display: flex; align-items: center; gap: 8px; padding: 0 0 8px; border-bottom: 1px solid var(--bdr); margin-bottom: 8px; width: 100%; }
.dt-story-publish-all-btn { background: transparent; border: 1px solid var(--gold2); border-radius: 3px; color: var(--gold2); cursor: pointer; font-size: 11px; padding: 3px 10px; }
.dt-story-publish-all-btn:disabled { opacity: 0.5; cursor: default; }

/* ── DTSR-9: Player flag inbox ── */
.dt-story-flag-inbox { margin-bottom: 12px; }
.dt-flag-inbox-empty {
  padding: 8px 12px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt3);
  font-style: italic;
  font-size: 12px;
}
.dt-flag-inbox-header { padding: 6px 0; }
.dt-flag-inbox-header h3 {
  margin: 0;
  color: var(--gold2);
  font-family: var(--ft);
  font-size: 14px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.dt-flag-inbox-rows { display: flex; flex-direction: column; gap: 6px; }
.dt-flag-inbox-row {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-left: 3px solid var(--gold2);
  border-radius: 4px;
  padding: 8px 12px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.dt-flag-inbox-row-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 12px; }
.dt-flag-inbox-char { color: var(--txt1); font-weight: 600; }
.dt-flag-inbox-section { color: var(--txt2); }
.dt-flag-inbox-cat {
  padding: 1px 7px;
  border-radius: 10px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-weight: 700;
}
.dt-flag-inbox-cat-inconsistent { background: rgba(224, 196, 122, 0.15); color: var(--gold2); border: 1px solid var(--gold-a40); }
.dt-flag-inbox-cat-wrong_story  { background: rgba(139, 0, 0, 0.15); color: var(--crim); border: 1px solid rgba(139, 0, 0, 0.4); }
.dt-flag-inbox-cat-other        { background: var(--surf3); color: var(--txt2); border: 1px solid var(--bdr); }
.dt-flag-inbox-time { color: var(--txt3); font-size: 11px; margin-left: auto; }
.dt-flag-inbox-reason { color: var(--txt2); font-size: 12px; font-style: italic; padding: 2px 0; }
.dt-flag-inbox-actions { display: flex; gap: 6px; align-items: center; margin-top: 2px; }
.dt-flag-inbox-open-btn,
.dt-flag-inbox-resolve-btn {
  background: transparent;
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  color: var(--txt2);
  cursor: pointer;
  font-family: var(--ft);
  font-size: 11px;
  padding: 3px 10px;
}
.dt-flag-inbox-open-btn:hover,
.dt-flag-inbox-resolve-btn:hover { border-color: var(--gold2); color: var(--gold2); }
.dt-flag-inbox-resolve-form { margin-top: 4px; display: flex; flex-direction: column; gap: 6px; }
.dt-flag-inbox-resolve-note {
  background: var(--surf);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 12px;
  padding: 4px 8px;
  resize: vertical;
}
.dt-flag-inbox-resolve-actions { display: flex; gap: 6px; align-items: center; }
.dt-flag-inbox-resolve-confirm {
  background: var(--gold2);
  border: 1px solid var(--gold2);
  border-radius: 3px;
  color: var(--bg);
  cursor: pointer;
  font-family: var(--ft);
  font-size: 11px;
  padding: 3px 10px;
  font-weight: 600;
}
.dt-flag-inbox-resolve-cancel {
  background: transparent;
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  color: var(--txt2);
  cursor: pointer;
  font-size: 11px;
  padding: 3px 10px;
}
.dt-flag-inbox-resolve-status { color: var(--txt3); font-size: 11px; }
/* DTSR-11: global collapse-complete toggle in rail header */
.dt-story-collapse-global-btn {
  background: transparent;
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  color: var(--txt2);
  cursor: pointer;
  font-family: var(--ft);
  font-size: 11px;
  padding: 3px 10px;
}
.dt-story-collapse-global-btn:hover { border-color: var(--gold2); color: var(--gold2); }
.dt-story-collapse-global-btn.active { border-color: var(--gold2); color: var(--gold2); }
.dt-story-publish-summary { color: var(--gold2); font-size: 11px; padding: 4px 0 6px; width: 100%; }

/* ── DTX.7: Regent feeding gate ── */
.dt-feeding-locked-msg { color: var(--txt2); font-size: 13px; margin: 0 0 6px; }
.dt-feeding-locked-pending { color: var(--txt3); font-size: 12px; margin: 0; }
.reg-cta-banner { background: rgba(224,196,122,0.08); border: 1px solid rgba(224,196,122,0.35); border-radius: 4px; color: var(--txt2); font-size: 13px; margin-bottom: 14px; padding: 12px 14px; }
.reg-confirmed-chip { background: rgba(60,180,80,0.15); border: 1px solid rgba(60,180,80,0.35); border-radius: 10px; color: var(--reg-confirmed-fg); font-size: 11px; padding: 2px 8px; white-space: nowrap; }
.reg-confirmed-badge { color: var(--reg-confirmed-fg); font-size: 12px; }
/* Lock indicator: this character has already fed here this cycle. */
.reg-locked-chip { background: var(--gold-a12); border: 1px solid var(--gold-a30); border-radius: 10px; color: var(--gold); font-size: 11px; padding: 2px 8px; white-space: nowrap; cursor: help; }
.terr-confirm-chip { border-radius: 10px; display: inline-block; font-size: 11px; margin-top: 2px; padding: 2px 8px; }
.terr-confirm-chip--confirmed { background: rgba(60,180,80,0.12); border: 1px solid rgba(60,180,80,0.3); color: var(--reg-confirmed-fg); }
.terr-confirm-chip--pending { background: var(--surf); border: 1px solid var(--bdr2); color: var(--txt3); }

/* Character view */
.dt-story-char-view {
  padding: 16px;
  overflow-y: auto;
}
.dt-story-char-header {
  align-items: center;
  display: flex;
  gap: 12px;
  margin-bottom: 16px;
}
.dt-story-char-name {
  font-family: var(--fh);
  font-size: 16px;
  font-weight: 600;
  letter-spacing: 0.04em;
  margin: 0;
}
.dt-story-locked-badge {
  background: var(--story-compl-a15);
  border: 1px solid var(--story-compl-a40);
  border-radius: 3px;
  color: var(--story-compl);
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.08em;
  padding: 2px 7px;
  text-transform: uppercase;
}

/* Progress tracker */
.dt-story-progress-tracker {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 18px;
}
.dt-story-tracker-chip {
  border-radius: 3px;
  border: 1px solid var(--bdr2);
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.04em;
  padding: 3px 8px;
}
.dt-story-tracker-chip.draft {
  border-color: rgba(200,144,64,0.5);
  color: var(--chip-draft);
}
.dt-story-tracker-chip.revision {
  border-color: rgba(139,0,0,0.4);
  color: var(--crim);
}
.dt-story-tracker-chip.complete {
  border-color: var(--story-compl-a40);
  color: var(--story-compl);
}

/* Section cards */
.dt-story-section-header {
  align-items: center;
  background: var(--surf2);
  border-bottom: 1px solid var(--bdr);
  display: flex;
  justify-content: space-between;
  padding: 9px 14px;
}
.dt-story-section-label {
  color: var(--txt);
  font-family: var(--fl);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
}
.dt-story-completion-dot {
  border-radius: 50%;
  display: inline-block;
  flex-shrink: 0;
  height: 9px;
  width: 9px;
}
.dt-story-dot-complete { background: var(--story-compl); }
.dt-story-dot-pending  { background: var(--bdr3); }

.dt-story-section-empty {
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 11px;
  font-style: italic;
  padding: 10px 14px;
}

/* ── Story 1.13: Merit Summary ledger ────────────────────────────── */
.dt-merit-summary-group { margin-bottom: 12px; }
.dt-merit-summary-group-label {
  padding: 0 14px 4px;
  border-bottom: 1px solid var(--bdr);
  margin-bottom: 4px;
}
.dt-merit-summary-rows { padding: 0 14px; }
.dt-merit-summary-row {
  display: grid;
  grid-template-columns: 170px minmax(0, 2fr) minmax(0, 1.5fr);
  gap: 12px;
  padding: 5px 0;
  border-bottom: 1px solid var(--surf3);
  font-size: 12px;
  align-items: baseline;
}
.dt-merit-summary-row:last-child { border-bottom: none; }
.dt-merit-summary-merit { color: var(--txt1); font-weight: 500; }
.dt-merit-summary-desired { color: var(--txt2); }
.dt-merit-summary-outcome { color: var(--txt1); }
.dt-merit-summary-desired.dt-merit-summary-empty,
.dt-merit-summary-missing .dt-merit-summary-outcome { color: var(--txt3); font-style: italic; }
.dt-story-section-actions {
  padding: 8px 14px;
  font-size: 12px;
  font-family: var(--fl);
}
.dt-story-complete-badge { color: var(--result-succ); }
.dt-story-pending-note { color: var(--txt3); font-style: italic; }

/* Sign-off panel */
.dt-story-sign-off {
  align-items: center;
  display: flex;
  gap: 14px;
  margin-top: 12px;
  padding: 10px 14px;
}
.dt-story-sign-off-count {
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 11px;
}
.dt-story-sign-off-btn {
  background: transparent;
  border: 1px solid var(--gold2);
  border-radius: 4px;
  color: var(--gold2);
  cursor: pointer;
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.06em;
  padding: 4px 12px;
  text-transform: uppercase;
  transition: background 0.15s;
}
.dt-story-sign-off-btn:hover:not(:disabled) { background: rgba(224,196,122,0.1); }
.dt-story-sign-off-btn:disabled {
  border-color: var(--bdr2);
  color: var(--txt3);
  cursor: default;
}
.dt-story-locked-label {
  color: var(--story-compl);
  font-family: var(--fl);
  font-size: 11px;
  font-style: italic;
}

/* Loading / empty states */
.dt-story-loading,
.dt-story-empty {
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 12px;
  font-style: italic;
  padding: 24px 16px;
}

/* ── DT Story — Project Cards (B2) ──────────────────────────────────── */

.dt-story-section-body { padding: 10px 12px; }

/* ── Feeding Validation section ── */
.dt-feed-val-status { font-size: 13px; color: var(--txt2); font-style: italic; margin: 4px 0 0; }
.dt-feed-val-dl { display: flex; flex-direction: column; gap: 5px; margin: 0 0 10px; }
.dt-feed-val-row { display: flex; align-items: baseline; gap: 8px; font-size: 13px; }
.dt-feed-val-row dt { font-family: var(--fl); font-size: 11px; color: var(--txt3); letter-spacing: .3px; white-space: nowrap; min-width: 110px; }
.dt-feed-val-row dd { margin: 0; color: var(--txt1); }
.dt-feed-val-dice { font-family: monospace; font-size: 12px; color: var(--txt2); }
.dt-feed-val-feedback-row dd { color: var(--txt2); font-style: italic; }
.dt-feed-val-actions { display: flex; align-items: center; gap: 10px; margin-top: 8px; }
.dt-feed-val-approved-lbl { font-size: 12px; color: var(--accent); font-family: var(--fl); }

/* DTSR-7: ST-authored feeding narrative — sits below the existing feeding
   data block, separated by a thin rule. Sub-head + prompt mirror the
   typographic treatment used in other DT Story narrative authoring areas. */
.dt-feed-val-narrative-block {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--bdr);
}
.dt-story-section-subhead {
  color: var(--txt);
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  margin: 0 0 4px;
}
.dt-story-section-prompt {
  color: var(--txt3);
  font-size: 12px;
  font-style: italic;
  margin: 0 0 8px;
}

/* ── Story-tab inner cards: canonical chrome (CSS-9) ── */
.dt-story-proj-card,
.dt-story-merit-card,
.dt-story-resources-card,
.dt-story-context-block,
.dt-story-sign-off,
.dt-feeding-locked {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 6px;
}
/* .dt-feeding-locked stripe override must come AFTER the grouped border shorthand to survive */
.dt-feeding-locked { border-left: 3px solid var(--gold2); padding: 14px 16px; }

.dt-story-proj-card {
  margin-bottom: 10px;
  padding: 10px 12px;
}
.dt-story-proj-card.complete { border-color: var(--story-compl-a40); }

.dt-story-proj-header {
  align-items: center;
  display: flex;
  gap: 8px;
  margin-bottom: 6px;
}
.dt-story-action-chip {
  background: var(--surf3);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  color: var(--txt2);
  flex-shrink: 0;
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 2px 6px;
  text-transform: uppercase;
}
.dt-story-proj-title {
  color: var(--txt);
  flex: 1;
  font-family: var(--fl);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.03em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dt-story-copy-ctx-btn {
  background: transparent;
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  color: var(--txt3);
  cursor: pointer;
  flex-shrink: 0;
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.05em;
  padding: 3px 8px;
  text-transform: uppercase;
  transition: color 0.15s, border-color 0.15s;
}
.dt-story-copy-ctx-btn:hover { border-color: var(--gold2); color: var(--gold2); }

.dt-story-proj-meta {
  color: var(--txt3);
  display: flex;
  flex-wrap: wrap;
  font-family: var(--fl);
  font-size: 11px;
  gap: 8px;
  margin-bottom: 8px;
}

.dt-story-context-block {
  margin-bottom: 8px;
  padding: 8px 10px;
}
.dt-story-context-text {
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 10px;
  line-height: 1.6;
  margin: 0 0 6px 0;
  overflow-x: auto;
  white-space: pre-wrap;
  word-break: break-word;
}
.dt-story-context-block.collapsed .dt-story-context-text { display: none; }
.dt-story-context-toggle {
  color: var(--gold2);
  cursor: pointer;
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.05em;
  text-decoration: none;
  text-transform: uppercase;
}
.dt-story-context-toggle:hover { text-decoration: underline; }

.dt-story-notes-thread {
  background: var(--surf);
  border-left: 2px solid var(--bdr2);
  margin-bottom: 8px;
  padding: 6px 10px;
}
.dt-story-note {
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 11px;
  line-height: 1.5;
  margin-bottom: 3px;
}
.dt-story-note-author { color: var(--txt2); font-weight: 700; }

.dt-story-response-ta {
  background: var(--surf);
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  box-sizing: border-box;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 13px;
  line-height: 1.6;
  margin-bottom: 8px;
  min-height: 280px;
  padding: 8px 10px;
  resize: vertical;
  width: 100%;
}
.dt-story-response-ta:focus { border-color: var(--gold2); outline: none; }

/* ── DTX.8: ST Notes free-text field ── */
.dt-story-general-notes {
  border-top: 1px solid var(--bdr);
  padding: 16px;
}
.dt-story-notes-label {
  color: var(--txt3);
  display: block;
  font-size: 11px;
  letter-spacing: .06em;
  margin-bottom: 6px;
  text-transform: uppercase;
}
.dt-story-notes-ta {
  background: var(--surf);
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  box-sizing: border-box;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 13px;
  min-height: 120px;
  padding: 8px 10px;
  resize: vertical;
  width: 100%;
}
.dt-story-notes-ta:focus { border-color: var(--gold2); outline: none; }
.dt-story-save-status { color: var(--green2, var(--reg-confirmed-fg)); font-size: 11px; margin-top: 4px; display: block; }

.dt-story-format-row { align-items: center; display: flex; flex-wrap: wrap; gap: 16px; margin-bottom: 12px; }
.dt-story-format-radio { align-items: center; color: var(--txt2); cursor: pointer; display: inline-flex; font-size: 12px; gap: 6px; }
.dt-story-format-radio input[type="radio"] { accent-color: var(--gold2); cursor: pointer; }
.dt-story-legacy-load-note { font-style: italic; font-weight: 400; margin-left: auto; }

.dt-story-card-actions { align-items: center; display: flex; gap: 8px; }
.dt-story-save-draft-btn,
.dt-story-mark-complete-btn {
  align-items: center;
  background: transparent;
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  color: var(--txt2);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--fl);
  font-size: 10px;
  gap: 5px;
  letter-spacing: 0.06em;
  padding: 4px 10px;
  text-transform: uppercase;
  transition: border-color 0.15s, color 0.15s;
}
.dt-story-save-draft-btn:hover  { border-color: var(--gold2); color: var(--gold2); }
.dt-story-mark-complete-btn:hover { border-color: var(--story-compl); color: var(--story-compl); }
.dt-story-save-draft-btn:disabled,
.dt-story-mark-complete-btn:disabled { color: var(--txt3); cursor: default; }
.dt-story-revision-note-btn {
  align-items: center;
  background: transparent;
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  color: var(--txt2);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--fl);
  font-size: 10px;
  gap: 5px;
  letter-spacing: 0.06em;
  padding: 4px 10px;
  text-transform: uppercase;
  transition: border-color 0.15s, color 0.15s;
}
.dt-story-revision-note-btn:hover { border-color: var(--crim); color: var(--crim); }
.dt-story-revision-note-btn.active { border-color: var(--crim); color: var(--crim); }
.dt-story-revision-save-btn {
  align-items: center;
  background: transparent;
  border: 1px solid rgba(139,0,0,0.4);
  border-radius: 4px;
  color: var(--crim);
  cursor: pointer;
  display: inline-flex;
  font-family: var(--fl);
  font-size: 10px;
  letter-spacing: 0.06em;
  padding: 4px 10px;
  text-transform: uppercase;
  transition: border-color 0.15s, color 0.15s;
}
.dt-story-revision-save-btn:hover { border-color: var(--crim); background: rgba(139,0,0,0.08); }
.dt-story-revision-save-btn:disabled { color: var(--txt3); cursor: default; }
.dt-story-revision-area {
  border-top: 1px solid rgba(139,0,0,0.2);
  margin-top: 8px;
  padding-top: 8px;
}
.dt-story-revision-area.hidden { display: none; }
.dt-story-revision-ta {
  background: rgba(139,0,0,0.04);
  border: 1px solid rgba(139,0,0,0.25);
  border-radius: 4px;
  box-sizing: border-box;
  color: var(--txt1);
  font-family: var(--fl);
  font-size: 12px;
  line-height: 1.5;
  margin-bottom: 6px;
  padding: 6px 8px;
  resize: vertical;
  width: 100%;
}
.dt-story-revision-ta:focus { border-color: var(--crim); outline: none; }
.dt-story-proj-card.revision { border-color: rgba(139,0,0,0.3); }
.dt-story-merit-card.revision { border-color: rgba(139,0,0,0.3); }
.dt-story-cs-slot.revision { border-color: rgba(139,0,0,0.3); }

/* ── DT Story — Letter from Home (B4) ───────────────────────────────── */

.dt-story-section-header-actions {
  align-items: center;
  display: flex;
  gap: 8px;
}

.dt-story-touchstone-list {
  margin-bottom: 8px;
}
.dt-story-touchstone-entry {
  font-family: var(--fl);
  font-size: 11px;
  line-height: 1.7;
  padding: 1px 0;
}
.dt-story-ts-attached { color: var(--txt2); }
.dt-story-ts-detached { color: var(--txt3); text-decoration: line-through; text-decoration-color: var(--bdr3); }

.dt-story-player-letter {
  background: var(--surf);
  border-left: 2px solid var(--bdr2);
  margin-bottom: 8px;
  padding: 6px 10px;
}
.dt-story-player-letter .dt-story-context-text {
  margin-top: 4px;
  max-height: 140px;
  overflow-y: auto;
}

/* B5 — Touchstone Vignette */
.dt-story-context-identity {
  color: var(--txt3);
  font-size: 11px;
  letter-spacing: 0.03em;
  margin-bottom: 8px;
}
.dt-story-aspirations {
  background: var(--surf);
  border-left: 2px solid var(--bdr2);
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 11px;
  font-style: italic;
  line-height: 1.5;
  margin-bottom: 8px;
  padding: 6px 10px;
}
.dt-story-aspirations .dt-story-note-author {
  font-size: 11px;
}

/* B3 — Merit Action Cards */
.dt-story-merit-card {
  margin-bottom: 10px;
  padding: 8px 10px;
}
.dt-story-merit-card.complete { border-color: var(--gold2); opacity: 0.8; }

.dt-story-merit-header {
  align-items: center;
  display: flex;
  gap: 8px;
  margin-bottom: 4px;
}

.dt-story-merit-label {
  color: var(--txt1);
  flex: 1;
  font-family: var(--fl);
  font-size: 12px;
  font-weight: 600;
}

.dt-story-mode-chip {
  border-radius: 3px;
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.05em;
  padding: 1px 6px;
  text-transform: uppercase;
}
.dt-story-mode-chip.rolled { background: rgba(224,196,122,0.15); color: var(--gold2); }
.dt-story-mode-chip.auto   { background: rgba(139,0,0,0.15); color: var(--crim); }

.dt-story-merit-meta {
  display: flex;
  flex-wrap: wrap;
  font-family: var(--fl);
  font-size: 11px;
  gap: 6px;
  margin-bottom: 6px;
}

/* B3 — Resources Approval Cards */
.dt-story-resources-card {
  margin-bottom: 8px;
  padding: 8px 10px;
}

.dt-story-resource-btns {
  display: flex;
  gap: 6px;
}

.dt-story-approve-btn,
.dt-story-flag-btn {
  background: transparent;
  border: 1px solid var(--bdr3);
  border-radius: 3px;
  color: var(--txt3);
  cursor: pointer;
  font-family: var(--fl);
  font-size: 11px;
  padding: 2px 8px;
  transition: background 0.15s, color 0.15s;
}
.dt-story-approve-btn:hover { border-color: var(--gold2); color: var(--gold2); }
.dt-story-flag-btn:hover    { border-color: var(--crim);  color: var(--crim); }
.dt-story-approve-btn.active { background: rgba(224,196,122,0.2); border-color: var(--gold2); color: var(--gold2); }
.dt-story-flag-btn.active    { background: rgba(139,0,0,0.2); border-color: var(--crim); color: var(--crim); }

/* B6 — Territory Report */
.dt-story-terr-section {
  border-top: 1px solid var(--bdr2);
  margin-bottom: 12px;
  padding-top: 10px;
}
.dt-story-terr-section:first-child { border-top: none; padding-top: 0; }

.dt-story-terr-header {
  align-items: center;
  display: flex;
  gap: 8px;
  margin-bottom: 6px;
}

.dt-story-terr-name {
  color: var(--accent);
  flex: 1;
  font-family: var(--fl);
  font-size: 11px;
  letter-spacing: 0.08em;
}

.dt-story-terr-coresidents,
.dt-story-terr-own-actions,
.dt-story-terr-events {
  font-size: 11px;
  line-height: 1.6;
  margin-bottom: 6px;
}

.dt-story-terr-list {
  list-style: disc;
  margin: 2px 0 0 16px;
  padding: 0;
}
.dt-story-terr-list li {
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 11px;
  line-height: 1.7;
  padding: 1px 0;
}

.dt-story-terr-no-territory {
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 12px;
  font-style: italic;
  padding: 8px 0;
}

/* ── B7: Cacophony Savvy section ──────────────────────────────────────────── */

.dt-story-cs-header {
  display: flex;
  align-items: center;
  padding: 8px 12px;
  border-bottom: 1px solid var(--surf2);
}

.dt-story-cs-slot {
  border-bottom: 1px solid var(--surf2);
  padding: 10px 12px 12px;
}

.dt-story-cs-slot:last-child {
  border-bottom: none;
}

.dt-story-cs-slot.complete {
  opacity: 0.75;
}

.dt-story-cs-slot-header {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
}

.dt-story-cs-slot-label {
  flex: 1;
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.dt-story-cs-meta {
  display: block;
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 12px;
  line-height: 1.6;
}

.dt-story-cs-empty {
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 12px;
  font-style: italic;
  padding: 4px 0 2px;
}

/* ── DT Story — Collapse complete cards (per-character + DTSR-11 global) ── */
.dt-story-char-content[data-collapse-complete="true"] .dt-story-proj-card.complete > *:not(.dt-story-proj-header),
.dt-story-char-content[data-collapse-complete="true"] .dt-story-merit-card.complete > *:not(.dt-story-merit-header),
.dt-story-char-content[data-collapse-complete="true"] .dt-story-cs-slot.complete > *:not(.dt-story-cs-slot-header),
.dt-story-char-content[data-collapse-complete="true"] .dt-story-section.complete > *:not(.dt-story-section-header),
.dt-story-char-content[data-collapse-complete="true"] .dt-story-terr-section.complete > *:not(.dt-story-terr-header),
.dt-story-char-content[data-collapse-complete-global="true"] .dt-story-proj-card.complete > *:not(.dt-story-proj-header),
.dt-story-char-content[data-collapse-complete-global="true"] .dt-story-merit-card.complete > *:not(.dt-story-merit-header),
.dt-story-char-content[data-collapse-complete-global="true"] .dt-story-cs-slot.complete > *:not(.dt-story-cs-slot-header),
.dt-story-char-content[data-collapse-complete-global="true"] .dt-story-section.complete > *:not(.dt-story-section-header),
.dt-story-char-content[data-collapse-complete-global="true"] .dt-story-terr-section.complete > *:not(.dt-story-terr-header) {
  display: none;
}

/* ── DT Story — Collapse toggle button ── */
.dt-story-collapse-toggle {
  background: transparent;
  border: 1px solid var(--bdr2);
  border-radius: 4px;
  color: var(--txt2);
  cursor: pointer;
  font-family: var(--ft);
  font-size: 11px;
  margin-left: auto;
  padding: 3px 8px;
}
.dt-story-collapse-toggle:hover { border-color: var(--gold2); color: var(--gold2); }
.dt-story-collapse-toggle.active { border-color: var(--gold2); color: var(--gold2); }

/* Rule Data — table rows use hardcoded dark-mode gold tints; replace on parchment */
html:not([data-theme="dark"]) .rules-tbl td                        { border-bottom-color: var(--surf3); }
html:not([data-theme="dark"]) .rules-tbl tbody tr:nth-child(even)  { background: var(--surf2); }
html:not([data-theme="dark"]) .rules-tbl tbody tr:hover            { background: var(--surf3); }

/* ── Deleted Actions Recovery (DT Processing) ── */
.proc-deleted-section { border-color: var(--crim) !important; }
.proc-deleted-section .proc-phase-header { color: var(--crim); }

.proc-deleted-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px 12px;
}

.proc-deleted-row {
  display: grid;
  grid-template-columns: 160px 1fr auto;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  font-size: 13px;
}

.proc-deleted-label {
  color: var(--txt2);
  font-style: italic;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.proc-restore-btn {
  background: transparent;
  border: 1px solid var(--crim);
  color: var(--crim);
  font-size: 11px;
  padding: 2px 10px;
  border-radius: 3px;
  cursor: pointer;
  white-space: nowrap;
}
.proc-restore-btn:hover {
  background: var(--crim);
  color: var(--txt-on-dark);
}

/* ── Emergency contact modal ── */
.ec-modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 2000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.ec-modal-box { max-width: 420px; width: 100%; background: var(--surf); border: 1px solid var(--bdr); border-radius: 6px; padding: 18px 20px; box-shadow: 0 6px 24px rgba(0,0,0,.45); }
.ec-modal-box .panel-label { font-family: var(--fl); font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--accent); padding-bottom: 10px; margin-bottom: 4px; border-bottom: 1px solid var(--bdr); }
.ec-modal-body { display: flex; flex-direction: column; gap: 10px; margin: 14px 0; }
.ec-row { display: flex; gap: 10px; align-items: baseline; }
.ec-lbl { font-family: var(--fl); font-size: 10px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--label-secondary); flex-shrink: 0; width: 60px; }
.ec-val { font-family: var(--ft); font-size: 14px; color: var(--txt); }
.ec-val a { color: var(--accent); text-decoration: none; }
.ec-empty { font-family: var(--ft); font-size: 13px; color: var(--txt3); font-style: italic; }
.ec-close-btn { margin-top: 4px; margin-left: auto; display: block; }


/* ── NPC Register (NPCR.1) ── */

.npcr-layout {
  display: grid;
  grid-template-columns: minmax(200px, 260px) 1fr;
  gap: 16px;
  align-items: start;
}

.npcr-picker {
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  overflow: hidden;
  position: sticky;
  top: 16px;
}

.npcr-picker-header {
  padding: 10px 14px;
  font-family: var(--fh);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--accent);
  border-bottom: 1px solid var(--bdr);
}

.npcr-picker-list {
  max-height: calc(100vh - 160px);
  overflow-y: auto;
  padding: 6px 0;
}

.npcr-main {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-width: 0;
}

.npcr-empty {
  padding: 14px;
  color: var(--txt3);
  font-style: italic;
}

.npcr-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
  padding: 8px 14px;
  background: transparent;
  border: 0;
  border-left: 2px solid transparent;
  color: var(--txt);
  font-family: var(--ft);
  font-size: 14px;
  text-align: left;
  cursor: pointer;
}

.npcr-row:hover {
  background: var(--surf2, var(--surf));
}

.npcr-row.on {
  background: var(--surf2, var(--surf));
  border-left-color: var(--accent);
  color: var(--accent);
}

.npcr-row.dim .npcr-row-name {
  color: var(--txt3);
  font-style: italic;
}

.npcr-row-name {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.npcr-row-count {
  font-family: var(--fl);
  font-size: 12px;
  font-weight: 700;
  color: var(--txt3);
  padding: 1px 8px;
  background: var(--bg);
  border: 1px solid var(--bdr);
  border-radius: 10px;
  min-width: 24px;
  text-align: center;
}

.npcr-row.on .npcr-row-count {
  color: var(--accent);
  border-color: var(--accent);
}

.npcr-main-header {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--bdr);
}

.npcr-main-title {
  font-family: var(--fh);
  font-size: 18px;
  font-weight: 700;
  color: var(--accent);
}

.npcr-main-sub {
  font-family: var(--fl);
  font-size: 12px;
  color: var(--txt3);
  text-transform: uppercase;
  letter-spacing: 1px;
}

.npcr-add-btn {
  align-self: flex-start;
  padding: 6px 14px;
  background: var(--accent);
  color: var(--bg);
  border: 0;
  border-radius: 2px;
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  cursor: pointer;
  margin-bottom: 12px;
}

.npcr-add-btn:hover {
  opacity: 0.85;
}

.npcr-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 12px;
}

.npcr-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 12px;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  text-align: left;
  cursor: pointer;
  font-family: var(--ft);
  transition: border-color 120ms;
}

.npcr-card:hover {
  border-color: var(--accent);
}

.npcr-card.on {
  border-color: var(--accent);
  box-shadow: 0 0 0 1px var(--accent) inset;
}

.npcr-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.npcr-card-name {
  font-family: var(--fh);
  font-size: 15px;
  font-weight: 700;
  color: var(--accent);
}

.npcr-card-status {
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
  padding: 1px 6px;
  border: 1px solid var(--bdr);
  border-radius: 2px;
}

.npcr-card-status.pending {
  color: var(--gold2, var(--accent));
  border-color: var(--gold2, var(--accent));
}

.npcr-card-status.inactive {
  color: var(--crim, var(--txt3));
  border-color: var(--crim, var(--bdr));
}

.npcr-card-badges {
  display: flex;
  gap: 4px;
}

.npcr-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 18px;
  padding: 0 5px;
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  color: var(--bg);
  background: var(--accent);
  border-radius: 2px;
}

.npcr-badge.sug {
  background: var(--gold2, var(--accent));
}

.npcr-badge.flag {
  background: var(--crim, #8B0000);
  color: var(--txt-on-dark, #fff);
}

.npcr-card.flagged {
  border-left: 3px solid var(--crim, #8B0000);
}

.npcr-chip-btn.flagged {
  color: var(--crim, #8B0000);
  border-color: var(--crim, #8B0000);
}

.npcr-chip-btn.flagged.on {
  background: var(--crim, #8B0000);
  color: var(--txt-on-dark, #fff);
  border-color: var(--crim, #8B0000);
}

.npcr-chip-flagged {
  display: inline-block;
  margin-left: 8px;
  padding: 2px 8px;
  font-size: 12px;
  font-weight: 600;
  color: var(--txt-on-dark, #fff);
  background: var(--crim, #8B0000);
  border-radius: 3px;
  vertical-align: middle;
}

.npcr-flags-section {
  margin-top: 12px;
  padding: 10px 12px;
  background: var(--surf1, rgba(139, 0, 0, 0.06));
  border: 1px solid var(--crim, #8B0000);
  border-radius: 3px;
}

.npcr-flags-head {
  font-weight: 600;
  color: var(--crim, #8B0000);
  margin-bottom: 8px;
  font-size: 13px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
}

.npcr-flag-row {
  padding: 8px 0;
  border-top: 1px solid var(--border, rgba(255, 255, 255, 0.08));
}

.npcr-flag-row:first-of-type {
  border-top: none;
}

.npcr-flag-meta {
  font-size: 12px;
  margin-bottom: 4px;
}

.npcr-flag-reason {
  font-size: 13px;
  color: var(--txt, #fff);
  margin-bottom: 6px;
  white-space: pre-wrap;
}

.npcr-flag-actions {
  display: flex;
  gap: 6px;
}

/* Resolved flag rows (session-only) render muted in place. */
.npcr-flag-row.resolved {
  opacity: 0.6;
  background: var(--surf1, rgba(255, 255, 255, 0.03));
}

.npcr-flag-row.resolved .npcr-flag-reason {
  text-decoration: line-through;
  color: var(--txt2, var(--txt));
}

.npcr-flag-resolved-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 1px 6px;
  font-size: 11px;
  font-weight: 500;
  color: var(--txt2, var(--txt));
  background: var(--surf2, rgba(255, 255, 255, 0.04));
  border: 1px solid var(--border, rgba(255, 255, 255, 0.1));
  border-radius: 2px;
}

.npcr-flag-resolution-note {
  margin-top: 4px;
  font-size: 12px;
  color: var(--txt2, var(--txt));
  font-style: italic;
}

.npcr-card-desc {
  font-size: 13px;
  color: var(--txt2, var(--txt));
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

.npcr-detail {
  margin-top: 8px;
  padding: 14px;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 4px;
}

.npcr-detail:empty {
  display: none;
}

.npcr-detail-preview {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.npcr-detail-title {
  font-family: var(--fh);
  font-size: 18px;
  font-weight: 700;
  color: var(--accent);
  margin-bottom: 4px;
}

.npcr-detail-row {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 10px;
  font-size: 14px;
}

.npcr-detail-label {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
}

.npcr-detail-placeholder {
  margin-top: 10px;
  font-style: italic;
  color: var(--txt3);
  font-size: 13px;
}

.npcr-detail-form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.npcr-detail-err {
  color: var(--crim, #8B0000);
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 700;
  min-height: 1em;
}

.npcr-detail-err:empty {
  display: none;
}

.npcr-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.npcr-field-label {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
}

.npcr-field-row {
  display: flex;
  gap: 14px;
  align-items: flex-end;
}

.npcr-field-row > .npcr-field {
  flex: 1;
}

.npcr-field-inline {
  display: flex;
  align-items: center;
  gap: 6px;
  padding-bottom: 6px;
  font-size: 14px;
  color: var(--txt);
  cursor: pointer;
}

.npcr-input,
.npcr-textarea {
  width: 100%;
  padding: 6px 10px;
  background: var(--bg);
  color: var(--txt);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  font-family: var(--ft);
  font-size: 14px;
}

.npcr-textarea {
  resize: vertical;
  min-height: 48px;
}

.npcr-input:focus,
.npcr-textarea:focus {
  outline: none;
  border-color: var(--accent);
}

.npcr-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.npcr-chip {
  padding: 3px 8px;
  background: var(--bg);
  border: 1px solid var(--bdr);
  border-radius: 10px;
  font-size: 12px;
  color: var(--txt);
}

.npcr-meta {
  margin-top: 6px;
  padding-top: 8px;
  border-top: 1px dashed var(--bdr);
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.npcr-meta-row {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 10px;
  font-size: 12px;
  color: var(--txt3);
}

.npcr-meta-label {
  text-transform: uppercase;
  letter-spacing: 1px;
  font-family: var(--fl);
  font-weight: 700;
}

.npcr-actions {
  display: flex;
  gap: 8px;
  margin-top: 6px;
}

.npcr-btn {
  padding: 6px 14px;
  background: var(--surf2, var(--surf));
  color: var(--txt);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  cursor: pointer;
}

.npcr-btn:hover {
  border-color: var(--accent);
}

.npcr-btn.save {
  background: var(--accent);
  color: var(--bg);
  border-color: var(--accent);
}

.npcr-btn.save:hover {
  opacity: 0.85;
}

.npcr-btn.dim {
  color: var(--txt3);
  margin-left: auto;
}

.npcr-btn.muted {
  color: var(--txt3);
  background: var(--surf2);
}

.npcr-btn.muted:hover {
  color: var(--txt);
  border-color: var(--bdr2);
}

.npcr-btn.danger {
  color: var(--err);
  border-color: var(--err);
}

.npcr-btn.danger:hover {
  background: var(--err);
  color: var(--bg);
}

.npcr-main-head-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
}

.npcr-main-header {
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
  padding-bottom: 10px;
}

.npcr-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.npcr-search {
  flex: 1;
  min-width: 200px;
  padding: 6px 10px;
  background: var(--bg);
  color: var(--txt);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  font-family: var(--ft);
  font-size: 14px;
}

.npcr-search:focus {
  outline: none;
  border-color: var(--accent);
}

.npcr-chips-filter {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

.npcr-chip-btn {
  padding: 4px 10px;
  background: transparent;
  color: var(--txt3);
  border: 1px solid var(--bdr);
  border-radius: 12px;
  font-family: var(--fl);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  cursor: pointer;
}

.npcr-chip-btn:hover {
  border-color: var(--accent);
  color: var(--txt);
}

.npcr-chip-btn.on {
  background: var(--accent);
  color: var(--bg);
  border-color: var(--accent);
}

/* ── Relationship editor (NPCR.2) ── */

.npcr-hidden { display: none !important; }

.npcr-rels-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 6px 0;
}

.npcr-rels-title {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
}

.npcr-rels-err {
  color: var(--crim, #8B0000);
  font-family: var(--fl);
  font-size: 13px;
  font-weight: 700;
}

.npcr-rels-err:empty { display: none; }

.npcr-rels-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.npcr-rels-family {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.npcr-rels-family-head {
  font-family: var(--fh);
  font-size: 12px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 2px;
  color: var(--accent);
  padding-bottom: 2px;
  border-bottom: 1px dashed var(--bdr);
}

.npcr-rels-row {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px 10px;
  background: var(--bg);
  border: 1px solid var(--bdr);
  border-radius: 3px;
}

.npcr-rels-row.retired {
  opacity: 0.55;
  background: transparent;
}

.npcr-rels-row.disp-positive { border-left: 3px solid #5a7d3a; }
.npcr-rels-row.disp-neutral  { border-left: 3px solid var(--txt3); }
.npcr-rels-row.disp-negative { border-left: 3px solid var(--crim, #8B0000); }

.npcr-rels-row-head {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.npcr-rels-side {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  color: var(--bg);
  background: var(--accent);
  border-radius: 2px;
}

.npcr-rels-kind {
  font-family: var(--fh);
  font-weight: 700;
  color: var(--accent);
}

.npcr-rels-dir {
  color: var(--txt3);
  font-size: 14px;
}

.npcr-rels-other {
  flex: 1;
  color: var(--txt);
}

.npcr-rels-hidden-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 16px;
  height: 16px;
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  color: var(--bg);
  background: var(--gold2, var(--accent));
  border-radius: 2px;
}

.npcr-rels-status {
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  padding: 1px 6px;
  border: 1px solid var(--bdr);
  border-radius: 2px;
  color: var(--txt3);
}

.npcr-rels-status.pending {
  color: var(--gold2, var(--accent));
  border-color: var(--gold2, var(--accent));
}

.npcr-rels-state {
  font-size: 13px;
  color: var(--txt2, var(--txt));
  padding-left: 26px;
}

.npcr-rels-disp {
  font-size: 12px;
  color: var(--txt3);
  padding-left: 26px;
}

.npcr-rels-row-actions {
  display: flex;
  gap: 6px;
  justify-content: flex-end;
}

.npcr-rels-form {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 12px;
  background: var(--bg);
  border: 1px solid var(--accent);
  border-radius: 3px;
}

.npcr-rels-form-title {
  font-family: var(--fh);
  font-weight: 700;
  color: var(--accent);
  margin-bottom: 2px;
}

.npcr-rels-form-row {
  display: flex;
  gap: 10px;
}

.npcr-rels-form-row > .npcr-field {
  flex: 1;
}

.npcr-rels-side-indicator {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 22px;
  font-family: var(--fh);
  font-weight: 700;
  color: var(--bg);
  background: var(--accent);
  border-radius: 2px;
}

.npcr-rels-disp-chips {
  display: flex;
  gap: 4px;
}

.npcr-rels-history {
  margin-top: 4px;
  padding: 6px 8px;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 3px;
  font-size: 12px;
}

.npcr-rels-history summary {
  cursor: pointer;
  font-family: var(--fl);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: var(--txt3);
}

.npcr-rels-history ul {
  margin: 4px 0 0 18px;
  padding: 0;
  list-style: disc;
}

.npcr-rels-history-fields {
  margin: 2px 0 4px 16px !important;
  list-style: circle;
}

.npcr-rels-history .before { color: var(--txt3); }
.npcr-rels-history .after  { color: var(--accent); }

.npcr-rels-mount {
  margin-top: 8px;
  padding-top: 10px;
  border-top: 1px dashed var(--bdr);
}

/* ─── DT Intelligence Layer (DTIL) ──────────────────────────────────────── */
/* Cycle-level synthesis surfaces mounted into the DT Prep tab.            */

.dt-cycle-intelligence {
  margin-top: 24px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* DTIL-1: Court Pulse */
.dt-court-pulse-panel {
  padding: 16px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
}
.dt-court-pulse-title {
  font-family: var(--fh);
  font-size: 14px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 6px;
}
.dt-court-pulse-hint {
  font-size: 12px;
  color: var(--txt3);
  margin: 0 0 14px;
  line-height: 1.5;
}
.dt-court-pulse-prompt-block,
.dt-court-pulse-synthesis-block {
  margin-top: 10px;
}
.dt-court-pulse-synthesis-block { margin-top: 18px; }
.dt-court-pulse-label {
  display: block;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--txt2);
  margin-bottom: 6px;
}
.dt-court-pulse-placeholder {
  padding: 12px;
  background: var(--surf);
  border: 1px dashed var(--bdr2);
  border-radius: 3px;
  font-style: italic;
  color: var(--txt3);
  font-size: 13px;
}
.dt-court-pulse-prompt-ta {
  width: 100%;
  min-height: 240px;
  font-family: 'Consolas', 'Menlo', 'Courier New', monospace;
  font-size: 12px;
  line-height: 1.5;
  background: var(--surf);
  color: var(--txt);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  padding: 8px;
  resize: vertical;
}
.dt-court-pulse-synthesis-ta {
  width: 100%;
  min-height: 200px;
  font-family: var(--ft);
  font-size: 14px;
  line-height: 1.55;
  background: var(--surf);
  color: var(--txt);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  padding: 8px;
  resize: vertical;
}
.dt-court-pulse-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 8px;
}
.dt-court-pulse-copy-status,
.dt-court-pulse-save-status {
  font-size: 11px;
  color: var(--gold2);
  letter-spacing: 0.04em;
}

/* DTIL-2: Action Queue */
.dt-action-queue-panel {
  padding: 16px;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
}
.dt-action-queue-title {
  font-family: var(--fh);
  font-size: 14px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 6px;
}
.dt-action-queue-hint {
  font-size: 12px;
  color: var(--txt3);
  margin: 0 0 12px;
  line-height: 1.5;
}
.dt-action-queue-filter-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 12px;
}
.dt-action-queue-filter-pill {
  padding: 4px 10px;
  background: var(--surf);
  border: 1px solid var(--bdr2);
  border-radius: 999px;
  cursor: pointer;
  font-size: 12px;
  color: var(--txt2);
  font-family: inherit;
}
.dt-action-queue-filter-pill:hover { color: var(--txt); border-color: var(--bdr3); }
.dt-action-queue-filter-pill.active {
  background: var(--gold2);
  color: var(--bg);
  border-color: var(--gold2);
}
.dt-action-queue-empty {
  padding: 14px;
  font-style: italic;
  color: var(--txt3);
  text-align: center;
}
.dt-action-queue-rows { display: flex; flex-direction: column; }
.dt-action-queue-row {
  display: grid;
  grid-template-columns: minmax(8rem, auto) auto minmax(12rem, 3fr) minmax(8rem, auto) minmax(10rem, 2fr);
  gap: 10px;
  align-items: start;
  padding: 8px 0;
  border-bottom: 1px solid var(--bdr);
  font-size: 13px;
}
.dt-action-queue-row:last-child { border-bottom: none; }
.dt-action-queue-char-btn {
  background: none;
  border: none;
  color: var(--accent);
  font-weight: 600;
  cursor: pointer;
  text-align: left;
  padding: 0;
  font-family: inherit;
  font-size: inherit;
}
.dt-action-queue-char-btn:hover { text-decoration: underline; }
.dt-action-queue-slot {
  font-size: 11px;
  color: var(--txt3);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  padding-top: 1px;
}
.dt-action-queue-text { color: var(--txt); line-height: 1.5; }
.dt-action-queue-text-full { display: none; }
.dt-action-queue-row.expanded .dt-action-queue-text-truncated { display: none; }
.dt-action-queue-row.expanded .dt-action-queue-text-full { display: inline; }
.dt-action-queue-text-toggle {
  display: inline-block;
  margin-left: 6px;
  background: none;
  border: none;
  color: var(--gdim);
  font-size: 11px;
  cursor: pointer;
  padding: 0;
  font-family: inherit;
}
.dt-action-queue-text-toggle:hover { color: var(--accent); }
.dt-action-queue-row.expanded .dt-action-queue-text-toggle::after { content: ' (collapse)'; }
.dt-action-queue-state-select {
  background: var(--surf);
  color: var(--txt);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  padding: 3px 6px;
  font-size: 12px;
  font-family: inherit;
}
.dt-action-queue-row.state-action_needed .dt-action-queue-state-select {
  border-color: var(--crim);
  color: var(--crim);
}
.dt-action-queue-row.state-resolved .dt-action-queue-state-select { color: var(--gdim); }
.dt-action-queue-row.state-ignored .dt-action-queue-state-select  { color: var(--txt3); }
.dt-action-queue-row.state-acknowledged .dt-action-queue-state-select { color: var(--gold2); }
.dt-action-queue-note-input {
  background: var(--surf);
  color: var(--txt);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  padding: 3px 8px;
  font-size: 12px;
  font-family: inherit;
  width: 100%;
}

/* DTIL-4: Territory Pulse */
.dt-territory-pulse-list {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 8px 0;
}
.dt-territory-pulse-row {
  padding: 12px;
  background: var(--surf);
  border: 1px solid var(--bdr);
  border-radius: 3px;
}
.dt-territory-pulse-row-head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 8px;
}
.dt-territory-pulse-name {
  font-family: var(--fh);
  font-size: 13px;
  letter-spacing: 0.08em;
  color: var(--accent);
  flex: 1;
}
.dt-territory-pulse-ambience {
  font-size: 11px;
  color: var(--txt3);
  letter-spacing: 0.04em;
}
.dt-territory-pulse-toggle-btn {
  background: none;
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  padding: 3px 8px;
  font-size: 11px;
  color: var(--txt2);
  cursor: pointer;
  font-family: inherit;
}
.dt-territory-pulse-toggle-btn:hover { color: var(--txt); border-color: var(--bdr3); }
.dt-territory-pulse-prompt-block {
  margin: 6px 0 10px;
  padding: 8px;
  background: var(--surf2);
  border-radius: 3px;
}
.dt-territory-pulse-prompt-ta {
  width: 100%;
  min-height: 200px;
  font-family: 'Consolas', 'Menlo', 'Courier New', monospace;
  font-size: 12px;
  line-height: 1.5;
  background: var(--surf);
  color: var(--txt);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  padding: 8px;
  resize: vertical;
}
.dt-territory-pulse-draft-lbl {
  display: block;
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--txt2);
  margin: 8px 0 4px;
}
.dt-territory-pulse-draft-ta {
  width: 100%;
  min-height: 140px;
  font-family: var(--ft);
  font-size: 14px;
  line-height: 1.55;
  background: var(--surf);
  color: var(--txt);
  border: 1px solid var(--bdr2);
  border-radius: 3px;
  padding: 8px;
  resize: vertical;
}
.dt-territory-pulse-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 6px;
}
.dt-territory-pulse-copy-status,
.dt-territory-pulse-save-status {
  font-size: 11px;
  color: var(--gold2);
  letter-spacing: 0.04em;
}

/* ══════════════════════════════════════════
   Rules Engine admin view (RDE-4)
   ══════════════════════════════════════════ */

.rde-shell {
  display: flex;
  min-height: 500px;
}

/* Left rail */
.rde-left-rail {
  width: 200px;
  flex-shrink: 0;
  background: var(--surf);
  border-right: 1px solid var(--bdr);
  border-radius: 4px 0 0 4px;
  display: flex;
  flex-direction: column;
  padding: 8px 0;
}

.rde-rail-btn {
  background: none;
  border: none;
  border-left: 3px solid transparent;
  color: var(--txt2);
  font-family: var(--fl);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  text-align: left;
  padding: 10px 14px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
}
.rde-rail-btn:hover { background: var(--surf2); color: var(--txt); }
.rde-rail-active { color: var(--gold2); border-left-color: var(--gold2); background: var(--surf2); }

.rde-rail-label { flex: 1; }

.rde-rail-count {
  background: var(--gold2);
  color: var(--bg);
  border-radius: 10px;
  font-size: 10px;
  font-weight: 700;
  padding: 1px 6px;
  min-width: 18px;
  text-align: center;
}

/* Main area */
.rde-main {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-width: 0;
  border: 1px solid var(--bdr);
  border-left: none;
  border-radius: 0 4px 4px 0;
  overflow: hidden;
  background: var(--surf);
}

/* List panel */
.rde-list-toolbar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--bdr);
  background: var(--surf);
}

.rde-search {
  flex: 1;
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  font-family: var(--fl);
  font-size: 13px;
  padding: 6px 10px;
}
.rde-search:focus { outline: none; border-color: var(--gold2); }

.rde-new-btn { margin-left: auto; }

.rde-tbl-wrap {
  overflow-y: auto;
  flex: 1;
}

.rde-tbl {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.rde-tbl th {
  background: var(--surf);
  color: var(--txt3);
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 8px 12px;
  text-align: left;
  border-bottom: 1px solid var(--bdr);
  white-space: nowrap;
  position: sticky;
  top: 0;
  z-index: 1;
}
.rde-tbl td {
  padding: 8px 12px;
  border-bottom: 1px solid var(--bdr);
  vertical-align: middle;
}
.rde-row { cursor: pointer; transition: background 0.1s; }
.rde-row:hover { background: var(--surf2); }
.rde-row-active { background: var(--surf2); border-left: 2px solid var(--gold2); }
.rde-td-source { font-weight: 600; color: var(--txt); }
.rde-td-tier { font-family: monospace; color: var(--gold2); }
.rde-td-notes { color: var(--txt3); font-size: 12px; max-width: 220px; }
.rde-td-actions { white-space: nowrap; text-align: right; }
.rde-empty { text-align: center; color: var(--txt3); padding: 32px; font-style: italic; }

.rde-edit-btn,
.rde-del-btn,
.rde-del-confirm-btn {
  background: none;
  border: none;
  cursor: pointer;
  padding: 2px 6px;
  font-size: 14px;
  border-radius: 3px;
  transition: background 0.1s;
}
.rde-edit-btn { color: var(--gold2); }
.rde-edit-btn:hover { background: var(--surf2); }
.rde-del-btn,
.rde-del-confirm-btn { color: var(--crim); }
.rde-del-btn:hover,
.rde-del-confirm-btn:hover { background: var(--surf2); }

/* Side panel — fixed drawer that slides in from the right */
.rde-side-panel {
  position: fixed;
  right: 0;
  top: 0;
  height: 100vh;
  width: 400px;
  background: var(--surf);
  border-left: 1px solid var(--bdr);
  display: flex;
  flex-direction: column;
  overflow-y: auto;
  z-index: 300;
  box-shadow: -4px 0 32px rgba(0, 0, 0, 0.5);
}

.rde-main > .rde-list-toolbar { flex: 0 0 auto; }
.rde-main > .rde-tbl-wrap { flex: 1 1 300px; overflow-y: auto; max-height: 70vh; }

.rde-form-header {
  font-family: var(--fh);
  font-size: 15px;
  font-weight: 700;
  color: var(--gold2);
  padding: 16px 16px 12px;
  border-bottom: 1px solid var(--bdr);
  letter-spacing: 0.04em;
}

.rde-form-body {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  flex: 1;
  overflow-y: auto;
}

.rde-form-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.rde-field-err .rde-form-input { border-color: var(--crim); }

.rde-form-label {
  font-family: var(--fl);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--txt3);
}

.rde-form-input {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  color: var(--txt);
  font-family: var(--fl);
  font-size: 13px;
  padding: 6px 10px;
  width: 100%;
}
.rde-form-input:focus { outline: none; border-color: var(--gold2); }
.rde-form-num { width: 80px; }

.rde-notes-ta {
  resize: vertical;
  min-height: 60px;
}

.rde-form-hint {
  font-size: 11px;
  color: var(--txt3);
  font-style: italic;
}

.rde-form-err {
  font-size: 11px;
  color: var(--crim);
  font-weight: 600;
  min-height: 14px;
}

.rde-form-status {
  padding: 6px 16px;
  font-size: 12px;
  color: var(--txt3);
  min-height: 24px;
}
.rde-status-err { color: var(--crim); font-weight: 600; }

.rde-form-actions {
  display: flex;
  gap: 8px;
  padding: 12px 16px;
  border-top: 1px solid var(--bdr);
  align-items: center;
}
.rde-cancel-btn { margin-right: auto; }

/* Preview */
.rde-preview-section {
  border-top: 1px solid var(--bdr);
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.rde-preview-header {
  font-family: var(--fh);
  font-size: 13px;
  font-weight: 700;
  color: var(--gold2);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.rde-preview-ctrl {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.rde-preview-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-top: 6px;
}

.rde-preview-col {
  background: var(--surf2);
  border: 1px solid var(--bdr);
  border-radius: 4px;
  padding: 8px;
}

.rde-preview-col-hdr {
  font-family: var(--fl);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--txt3);
  margin-bottom: 6px;
}

.rde-preview-merits {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.rde-preview-merit-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  font-size: 12px;
}

.rde-preview-merit-name {
  color: var(--txt2);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.rde-preview-merit-dots { white-space: nowrap; }

.rde-preview-empty {
  color: var(--txt3);
  font-style: italic;
  font-size: 12px;
  padding: 8px 0;
}

/* ── Hard-delete confirm modal ── */
.hd-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.65); z-index: 2100; display: flex; align-items: center; justify-content: center; padding: 20px; }
.hd-modal { max-width: 420px; width: 100%; background: var(--surf); border: 1px solid rgba(139,0,0,.6); border-radius: 6px; padding: 18px 20px; box-shadow: 0 6px 24px rgba(0,0,0,.55); }
.hd-title { font-family: var(--fl); font-size: 13px; font-weight: 700; letter-spacing: .08em; color: var(--err, #c0392b); margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid var(--bdr); }
.hd-body { display: flex; flex-direction: column; gap: 12px; margin-bottom: 14px; font-size: 13px; color: var(--txt); }
.hd-cascade-info { font-size: 12px; color: var(--txt2); }
.hd-label { display: block; font-size: 11px; color: var(--accent); font-family: var(--fl); margin-bottom: 4px; }
.hd-confirm-input { width: 100%; box-sizing: border-box; padding: 7px 10px; background: var(--surf); color: var(--txt1); border: 1px solid var(--bdr); border-radius: 4px; font-family: inherit; font-size: 13px; }
.hd-confirm-input:focus { border-color: var(--crim); outline: none; }
.hd-error { font-size: 12px; color: var(--err, #c0392b); min-height: 16px; }
.hd-footer { display: flex; gap: 8px; justify-content: flex-end; }
.hd-btn-cancel { padding: 6px 16px; background: none; border: 1px solid var(--bdr); border-radius: 4px; color: var(--txt2); cursor: pointer; font-family: inherit; font-size: 12px; }
.hd-btn-cancel:hover { border-color: var(--txt2); color: var(--txt); }
.hd-btn-delete { padding: 6px 16px; background: var(--crim, #8B0000); border: 1px solid var(--crim, #8B0000); border-radius: 4px; color: #fff; cursor: pointer; font-family: inherit; font-size: 12px; }
.hd-btn-delete:disabled { opacity: .4; cursor: not-allowed; }
.hd-btn-delete:not(:disabled):hover { background: #a00; }
.cd-hard-delete-btn { border-color: var(--crim, #8B0000) !important; color: var(--err, #c0392b) !important; }
.cd-hard-delete-btn:hover { background: rgba(139,0,0,.15) !important; }
