@import './admin-theme.css';
@import './gift-code-manager.css';
@import './feedback-manager.css';



* { box-sizing: border-box; }
html, body { width: 100%; height: 100%; margin: 0; overflow: hidden; }
body {
  color: var(--text);
  background:
    var(--dashboard-surface);
}
button, input, select, textarea { font: inherit; }
button { color: inherit; }
[hidden] { display: none !important; }

.app-shell { display: grid; grid-template-rows: 84px minmax(0, 1fr); width: 100%; height: 100%; }
.topbar {
  display: grid;
  grid-template-columns: minmax(260px, 1fr) auto minmax(180px, 1fr);
  align-items: center;
  gap: 24px;
  padding: 0 28px;
  border-bottom: 1px solid var(--dashboard-border);
  background: var(--dashboard-surface);
  box-shadow: none;
  z-index: 2;
}
.brand { display: flex; align-items: center; gap: 13px; min-width: 0; }
.brand-mark {
  display: grid;
  width: 48px;
  height: 48px;
  place-items: center;
  border: 2px solid var(--gold-300);
  border-radius: 15px;
  color: var(--muted);
  font-size: 1.25rem;
  font-weight: 700;
  background: var(--dashboard-surface);
  box-shadow: none;
}
.brand > span:last-child { display: grid; gap: 2px; min-width: 0; }
.brand strong { color: var(--cream); font-size: 1.3125rem; letter-spacing: .02em; }
.brand small { overflow: hidden; color: var(--muted); font-size: 0.875rem; text-overflow: ellipsis; white-space: nowrap; }
.tab-list { display: flex; align-items: center; gap: 7px; padding: 6px; border: 1px solid var(--dashboard-border); border-radius: 17px; background: var(--dashboard-surface); }
.tab-button {
  min-width: 142px;
  height: 43px;
  padding: 0 17px;
  border: 1px solid transparent;
  border-radius: 12px;
  color: var(--muted);
  font-weight: 700;
  background: transparent;
  cursor: pointer;
}
.tab-button:hover, .tab-button:focus-visible { color: var(--text); background: var(--dashboard-surface); outline: none; }
.tab-button.active { border-color: var(--dashboard-border); color: var(--muted); background: var(--dashboard-surface); box-shadow: none; }
.connection-pill { justify-self: end; display: flex; align-items: center; gap: 8px; color: var(--admin-primary-strong); font-size: 0.9375rem; font-weight: 700; }
.status-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--success); box-shadow: none; }
.connection-logout { height: 30px; padding: 0 10px; border: 1px solid var(--dashboard-border); border-radius: 9px; color: var(--admin-primary-strong); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; cursor: pointer; }

.admin-login-screen {
  display: grid;
  grid-template-columns: minmax(0, 1.08fr) minmax(440px, .92fr);
  width: 100%;
  height: 100%;
  min-height: 100%;
  overflow: auto;
  background: var(--dashboard-surface);
}
.admin-login-intro {
  position: relative;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto auto;
  gap: 38px;
  min-height: 100vh;
  padding: clamp(34px, 5vw, 74px);
  overflow: hidden;
  border-right: 1px solid var(--dashboard-border);
  background:
    var(--dashboard-surface);
}
.admin-login-intro::before,
.admin-login-intro::after {
  position: absolute;
  content: '';
  pointer-events: none;
}
.admin-login-intro::before {
  inset: 0;
  opacity: .22;
  background-image:
    linear-gradient(90deg, transparent 49.5%, #73dcff 50%, transparent 50.5%),
    linear-gradient(transparent 49.5%, #73dcff 50%, transparent 50.5%);
  background-size: 84px 84px;
  mask-image: linear-gradient(120deg, #0008, transparent 72%);
}
.admin-login-intro::after {
  right: clamp(30px, 6vw, 96px);
  bottom: 112px;
  width: clamp(180px, 24vw, 350px);
  height: 1px;
  background: var(--dashboard-surface);
  box-shadow: none;
}
.admin-login-brand,
.admin-login-brand > span:last-child {
  display: flex;
  align-items: center;
}
.admin-login-brand { position: relative; z-index: 1; gap: 14px; }
.admin-login-brand > span:last-child { align-items: flex-start; flex-direction: column; gap: 2px; }
.admin-login-brand strong { color: var(--text); font-size: 1.3125rem; letter-spacing: .01em; }
.admin-login-brand small { color: var(--muted); font-size: 0.875rem; }
.admin-login-message {
  position: relative;
  z-index: 1;
  align-self: center;
  max-width: 720px;
}
.admin-login-message h1 {
  max-width: 700px;
  margin: 14px 0 24px;
  color: var(--text);
  font-size: clamp(48px, 5.3vw, 82px);
  font-weight: 700;
  letter-spacing: -.055em;
  line-height: .96;
}
.admin-login-message p {
  max-width: 620px;
  margin: 0;
  color: var(--muted);
  font-size: clamp(15px, 1.25vw, 19px);
  line-height: 1.7;
}
.admin-login-contracts {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
.admin-login-contracts span {
  display: grid;
  gap: 7px;
  min-width: 0;
  padding: 14px 15px;
  border-top: 1px solid var(--dashboard-border);
  color: var(--muted);
  font-size: 0.875rem;
}
.admin-login-contracts strong { color: var(--admin-primary-strong); font-size: 0.8125rem; letter-spacing: .16em; }
.admin-login-intro footer { position: relative; z-index: 1; color: var(--muted); font-size: 0.8125rem; letter-spacing: .08em; text-transform: uppercase; }
.admin-login-form-region {
  display: grid;
  place-items: center;
  min-height: 100vh;
  padding: clamp(28px, 5vw, 74px);
  background:
    var(--dashboard-surface);
}
.admin-login-form {
  display: grid;
  width: min(100%, 460px);
  gap: 24px;
  padding: 0;
}
.admin-login-form header { display: grid; gap: 10px; }
.admin-login-seal {
  display: grid;
  width: 68px;
  height: 68px;
  margin-bottom: 10px;
  place-items: center;
  border: 1px solid var(--dashboard-border);
  border-radius: 18px;
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: .08em;
  background: var(--dashboard-surface);
  box-shadow: none;
}
.admin-login-form h2 { margin: 0; color: var(--text); font-size: clamp(30px, 3vw, 40px); font-weight: 700; letter-spacing: -.035em; }
.admin-login-form header p,
.admin-login-privacy { margin: 0; color: var(--muted); font-size: 0.9375rem; line-height: 1.6; }
.admin-login-fields { display: grid; gap: 18px; }
.admin-login-form .field { display: grid; gap: 8px; margin: 0; color: var(--text); font-size: 0.875rem; font-weight: 700; letter-spacing: .02em; }
.admin-login-form .form-control {
  height: 54px;
  padding: 0 16px;
  border: 1px solid var(--dashboard-border);
  border-radius: 10px;
  color: var(--text);
  background: var(--dashboard-surface);
  box-shadow: none;
}
.admin-login-form .form-control::placeholder { color: var(--muted); }
.admin-login-form .form-control:hover { border-color: var(--dashboard-border); }
.admin-login-form .form-control:focus { border-color: var(--dashboard-border); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.admin-login-form .btn.primary-button { width: 100%; min-height: 54px; height: 54px; border-radius: 10px; }
.admin-login-form[aria-busy="true"] .primary-button span::after { content: '…'; }
.admin-login-error { margin: -6px 0 0; padding: 11px 13px; border-left: 3px solid var(--dashboard-border); color: var(--danger) !important; background: var(--admin-danger-soft); font-size: 0.875rem; line-height: 1.45; }
.admin-login-privacy { padding-top: 3px; text-align: center; }

@media (max-width: 900px) {
  .admin-login-screen { grid-template-columns: 1fr; }
  .admin-login-intro { min-height: auto; padding: 28px; border-right: 0; border-bottom: 1px solid var(--dashboard-border); }
  .admin-login-message { align-self: start; }
  .admin-login-message h1 { margin: 12px 0 16px; font-size: clamp(38px, 10vw, 60px); }
  .admin-login-message p { max-width: 680px; }
  .admin-login-contracts { display: none; }
  .admin-login-intro footer { display: none; }
  .admin-login-form-region { min-height: auto; padding: 42px 24px 54px; place-items: start center; }
}

@media (max-width: 520px) {
  .admin-login-intro { gap: 24px; padding: 22px 20px 26px; }
  .admin-login-message h1 br { display: none; }
  .admin-login-message p { display: none; }
  .admin-login-form-region { padding: 34px 20px 46px; }
  .admin-login-form { gap: 20px; }
  .admin-login-seal { width: 56px; height: 56px; border-radius: 15px; }
}

.workspace { min-height: 0; overflow: hidden; padding: 22px 28px 28px; }
.manager-panel, .functions-panel, .audit-panel { display: grid; grid-template-rows: auto auto minmax(0, 1fr); gap: 16px; width: 100%; height: 100%; min-height: 0; }
.functions-panel, .audit-panel { grid-template-rows: auto minmax(0, 1fr); }
.section-heading { display: flex; align-items: end; justify-content: space-between; gap: 24px; min-height: 72px; }
.section-heading h1 { margin: 3px 0 4px; color: var(--cream); font-size: clamp(26px, 2.2vw, 38px); line-height: 1; text-shadow: none; }
.section-heading p { margin: 0; color: var(--muted); font-size: 1rem; }
.eyebrow, .panel-kicker { color: var(--cyan-500); font-size: 0.8125rem; font-weight: 700; letter-spacing: .16em; text-transform: uppercase; }
.heading-actions, .editor-actions { display: flex; align-items: center; flex-wrap: wrap; justify-content: flex-end; gap: 10px; }

.primary-button, .secondary-button, .danger-button, .modal-close {
  height: var(--control-height);
  padding: 0 19px;
  border-radius: var(--radius);
  font-weight: 700;
  cursor: pointer;
  transition: filter .16s ease, transform .16s ease, box-shadow .16s ease;
}
.primary-button { border: 2px solid var(--dashboard-border); color: var(--muted); background: var(--dashboard-surface); box-shadow: none; }
.secondary-button { border: 1px solid var(--dashboard-border); color: var(--admin-primary-strong); background: var(--dashboard-surface); box-shadow: none; }
.danger-button { border: 2px solid var(--dashboard-border); color: var(--text); background: var(--dashboard-surface); box-shadow: none; }
button:hover:not(:disabled), button:focus-visible:not(:disabled) { filter: brightness(1.12); outline: none; }
button:focus-visible:not(:disabled) { box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
button:active:not(:disabled) { transform: translate(2px, 2px); }
button:disabled { cursor: default; filter: grayscale(.65) brightness(.58); box-shadow: none; }

.summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 12px; }
.summary-card { display: grid; gap: 3px; min-height: 72px; padding: 13px 18px; border: 1px solid var(--dashboard-border); border-radius: 18px; background: var(--dashboard-surface); box-shadow: none; }
.summary-card small { color: var(--muted); font-size: 0.8125rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.summary-card strong { color: var(--gold-300); font-size: 1.6875rem; }

.manager-grid { display: grid; grid-template-columns: minmax(300px, 25%) minmax(0, 1fr); gap: 16px; min-height: 0; }
.panel { min-width: 0; min-height: 0; border: 1px solid var(--dashboard-border); border-radius: var(--panel-radius); background: var(--dashboard-surface); box-shadow: none; overflow: hidden; }
.panel-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 76px; padding: 14px 18px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.panel-header h2 { margin: 3px 0 0; color: var(--cream); font-size: 1.3125rem; }
.panel-badge { padding: 7px 10px; border: 1px solid var(--dashboard-border); border-radius: 999px; color: var(--admin-primary-strong); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; white-space: nowrap; }
.function-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(360px, 540px)); align-content: start; gap: 16px; min-height: 0; overflow: auto; }
.function-card { display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; align-items: center; gap: 18px; min-height: 190px; padding: 24px; }
.function-icon { display: grid; width: 72px; height: 72px; place-items: center; border: 2px solid var(--gold-300); border-radius: 21px; color: var(--muted); background: var(--dashboard-surface); box-shadow: none; font-size: 0.9375rem; font-weight: 700; }
.function-copy { display: grid; gap: 8px; min-width: 0; }
.function-copy h2 { margin: 0; color: var(--cream); font-size: 1.5rem; }
.function-copy p { margin: 0; color: var(--muted); font-size: 0.9375rem; line-height: 1.5; }
.function-contracts { display: flex; flex-wrap: wrap; gap: 7px; }
.function-contracts span { padding: 5px 8px; border: 1px solid var(--dashboard-border); border-radius: 999px; color: var(--admin-primary-strong); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; }
.function-card > .primary-button { min-width: 140px; }
.drop-catalog-manager { display: grid; grid-template-columns: 290px minmax(0, 1fr); min-height: 570px; gap: 16px; }
.drop-catalog-manager > aside, .drop-catalog-manager > main { min-width: 0; border: 1px solid var(--dashboard-border); border-radius: 16px; background: var(--dashboard-surface); overflow: hidden; }
.drop-catalog-manager > aside { display: grid; grid-template-rows: auto auto minmax(0, 1fr); }
.drop-catalog-manager > aside > header, .drop-items-heading { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 12px; }
.drop-catalog-manager button { min-height: 34px; }
.drop-catalog-filters { display: grid; grid-template-columns: 105px minmax(0, 1fr); gap: 7px; padding: 0 12px 12px; }
.drop-catalog-filters select, .drop-catalog-filters input, .drop-pool-fields input, .drop-pool-fields select, .drop-items-heading input, .drop-item-row input { min-width: 0; height: 36px; border: 1px solid var(--dashboard-border); border-radius: 9px; color: var(--text); background: var(--dashboard-surface); }
.drop-pool-list { padding: 8px; overflow: auto; }
.drop-pool-card { display: grid; width: 100%; margin-bottom: 7px; padding: 10px; border: 1px solid var(--dashboard-border); border-radius: 11px; color: var(--admin-primary-strong); text-align: left; background: var(--dashboard-surface); }
.drop-pool-card.selected { border-color: var(--dashboard-border); box-shadow: inset 3px 0 var(--admin-primary); }
.drop-pool-card span, .drop-pool-card small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.drop-catalog-manager > main { position: relative; padding: 14px; overflow: auto; }
.drop-catalog-empty { display: grid; min-height: 500px; place-items: center; color: var(--muted); }
.drop-pool-fields { display: grid; grid-template-columns: 1.2fr .8fr 1fr .6fr 1.4fr .6fr; gap: 9px; }
.drop-pool-fields label { display: grid; gap: 5px; color: var(--admin-primary-strong); font-size: 0.875rem; }
.drop-pool-fields .drop-enabled { grid-column: 1 / -1; display: flex; align-items: center; }
.drop-items-heading { position: relative; margin-top: 10px; padding-inline: 0; }
.drop-items-heading > div { display: flex; gap: 7px; align-items: center; }
.drop-items-heading small { color: var(--admin-primary-strong); }
.drop-item-table { overflow-x: auto; }
.drop-item-table > header, .drop-item-row { display: grid; grid-template-columns: minmax(220px, 1.35fr) 110px 90px 90px 110px 70px 100px 42px; gap: 7px; min-width: 920px; align-items: center; }
.drop-item-table > header { padding: 8px 5px; color: var(--admin-primary-strong); font-size: 0.875rem; }
.drop-item-row { padding: 6px 5px; border-top: 1px solid var(--dashboard-border); }
.drop-item-row input[type="checkbox"] { justify-self: center; }
.drop-delete-pool { margin-top: 18px; }
.explorer-panel { display: grid; grid-template-rows: auto auto minmax(0, 1fr); }
.explorer-filters { display: grid; grid-template-columns: 1fr; gap: 10px; padding: 13px 15px; border-bottom: 1px solid var(--dashboard-border); }
.field { display: grid; gap: 7px; color: var(--muted); font-size: 0.875rem; font-weight: 700; }
.field input, .field select, .field textarea {
  width: 100%;
  min-width: 0;
  height: var(--control-height);
  padding: 0 14px;
  border: 1px solid var(--dashboard-border);
  border-radius: 13px;
  color: var(--text);
  background: var(--dashboard-surface);
  outline: none;
}
.field textarea { height: auto; min-height: 110px; padding-block: 12px; resize: vertical; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--gold-300); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.compact-field { gap: 5px; }
.compact-field input, .compact-field select { height: 43px; }

.file-list { min-height: 0; padding: 8px; overflow: auto; }
.file-item { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; min-height: 62px; margin: 0 0 6px; padding: 8px 10px; border: 1px solid transparent; border-radius: 14px; color: var(--text); text-align: left; background: transparent; cursor: pointer; }
.file-item:hover { border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.file-item.selected { border-color: var(--dashboard-border); background: var(--dashboard-surface); box-shadow: inset 3px 0 var(--admin-primary); }
.file-icon { display: grid; width: 36px; height: 36px; place-items: center; border: 1px solid var(--dashboard-border); border-radius: 11px; color: var(--cyan-300); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; }
.file-copy { display: grid; min-width: 0; gap: 3px; }
.file-copy strong, .file-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.file-copy strong { color: var(--text); font-size: 0.9375rem; }
.file-copy small { color: var(--muted); font-size: 0.8125rem; }
.file-size { color: var(--admin-warning); font-size: 0.8125rem; font-weight: 700; }
.empty-list { display: grid; min-height: 180px; place-items: center; color: var(--muted); text-align: center; }

.editor-panel { display: grid; grid-template-rows: auto minmax(0, 1fr); }
.editor-header { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 92px; padding: 14px 18px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.editor-identity { min-width: 220px; }
.editor-identity h2 { overflow: hidden; max-width: 46vw; margin: 4px 0; color: var(--cream); font-size: 1.375rem; text-overflow: ellipsis; white-space: nowrap; }
.editor-identity p { overflow: hidden; max-width: 48vw; margin: 0; color: var(--muted); font: 0.8125rem/1.4 Inter, sans-serif; text-overflow: ellipsis; white-space: nowrap; }
.editor-view-switch { display: inline-flex; gap: 4px; margin-top: 8px; padding: 4px; border: 1px solid var(--dashboard-border); border-radius: 12px; background: var(--dashboard-surface); }
.editor-view-switch button { height: 30px; padding: 0 12px; border: 0; border-radius: 8px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; background: transparent; cursor: pointer; }
.editor-view-switch button.active { color: var(--muted); background: var(--dashboard-surface); box-shadow: none; }
.editor-view-switch button:disabled { cursor: default; filter: grayscale(.7) brightness(.6); }
.editor-actions .primary-button, .editor-actions .secondary-button, .editor-actions .danger-button { height: 44px; padding-inline: 14px; font-size: 0.875rem; }
.editor-empty { display: grid; align-content: center; justify-items: center; gap: 10px; color: var(--muted); text-align: center; }
.editor-empty strong { color: var(--cream); font-size: 1.375rem; }
.editor-empty p { margin: 0; }
.empty-orb { display: grid; width: 92px; height: 92px; place-items: center; border: 2px solid var(--gold-300); border-radius: 28px; color: var(--muted); font: 700 1.625rem Inter, sans-serif; background: var(--dashboard-surface); box-shadow: none; }
.editor-workspace { display: grid; grid-template-rows: minmax(0, 1fr) 42px; min-height: 0; padding: 12px; }
.editor-view-stack { position: relative; min-width: 0; min-height: 0; overflow: hidden; }
#json-editor { width: 100%; height: 100%; min-height: 0; padding: 18px 20px; resize: none; border: 1px solid var(--dashboard-border); border-radius: 15px 15px 8px 8px; color: var(--text); background: var(--dashboard-surface); outline: none; font: 0.9375rem/1.55 Inter, sans-serif; tab-size: 2; white-space: pre; overflow: auto; }
#json-editor:focus { border-color: var(--gold-300); box-shadow: none; }
#json-editor:read-only { color: var(--muted); cursor: not-allowed; }
.editor-statusbar { display: flex; align-items: center; gap: 15px; min-width: 0; padding: 0 12px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; }
.validity-pill { padding: 5px 8px; border-radius: 999px; color: var(--text); background: var(--success); }
.validity-pill.invalid { color: var(--text); background: var(--danger); }
.lock-state { color: var(--admin-warning); }
.dirty-state { margin-left: auto; color: var(--success); }
.dirty-state.dirty { color: var(--admin-warning); }

.json-table-host, .json-table-editor { width: 100%; height: 100%; min-width: 0; min-height: 0; }
.json-table-editor { display: grid; grid-template-rows: auto minmax(0, 1fr) 44px; overflow: hidden; border: 1px solid var(--dashboard-border); border-radius: 15px 15px 8px 8px; background: var(--dashboard-surface); }
.table-editor-toolbar { display: grid; grid-template-columns: minmax(170px, .75fr) minmax(190px, 1fr) auto auto auto; align-items: end; gap: 10px; padding: 10px 12px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.table-collection-field, .table-search-field, .table-page-size { display: grid; gap: 4px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; text-transform: uppercase; }
.table-collection-field select, .table-search-field input, .table-page-size select { height: 38px; border: 1px solid var(--dashboard-border); border-radius: 11px; color: var(--text); background: var(--dashboard-surface); outline: none; }
.table-collection-field select { width: 100%; min-width: 0; padding: 0 10px; text-overflow: ellipsis; }
.table-search-field input { width: 100%; padding: 0 12px; }
.table-page-size select { min-width: 76px; padding: 0 10px; }
.table-collection-field select:focus, .table-search-field input:focus, .table-page-size select:focus { border-color: var(--gold-300); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.table-structure-pill { align-self: end; min-height: 38px; padding: 11px 12px; border: 1px solid var(--dashboard-border); border-radius: 11px; color: var(--admin-primary-strong); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; white-space: nowrap; }
.table-add-row { align-self: end; height: 38px; padding-inline: 14px; border-radius: 11px; font-size: 0.8125rem; }
.table-editor-viewport { min-width: 0; min-height: 0; overflow: auto; overscroll-behavior: contain; }
.data-table { width: max-content; min-width: 100%; border-collapse: separate; border-spacing: 0; color: var(--text); font-size: 0.8125rem; }
.data-table th { position: sticky; top: 0; z-index: 2; min-width: 130px; max-width: 260px; height: 39px; padding: 0 10px; border-right: 1px solid var(--dashboard-border); border-bottom: 1px solid var(--dashboard-border); color: var(--cyan-300); text-align: left; background: var(--dashboard-surface); box-shadow: none; white-space: nowrap; }
.data-table th:first-child { min-width: 64px; }
.data-table td { height: 42px; max-width: 280px; padding: 0; border-right: 1px solid var(--dashboard-border); border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.data-table tr:nth-child(even) td { background: var(--dashboard-surface); }
.data-table tbody tr:hover td { background: var(--dashboard-surface); }
.table-cell-button { width: 100%; height: 41px; overflow: hidden; padding: 0 10px; border: 0; color: var(--text); text-align: left; text-overflow: ellipsis; white-space: nowrap; background: transparent; cursor: pointer; }
.table-cell-button:hover:not(:disabled), .table-cell-button:focus-visible:not(:disabled) { color: var(--text); background: var(--dashboard-surface); outline: none; filter: none; }
.table-readonly-cell { display: block; overflow: hidden; padding: 0 10px; color: var(--muted); text-overflow: ellipsis; white-space: nowrap; }
.table-actions-column { right: 0; min-width: 86px !important; text-align: center !important; }
.table-actions-cell { position: sticky; right: 0; z-index: 1; min-width: 86px; padding: 4px 7px !important; background: var(--dashboard-surface) !important; }
.table-delete-row { width: 100%; height: 31px; border: 1px solid var(--dashboard-border); border-radius: 9px; color: var(--danger); font-size: 0.8125rem; font-weight: 700; background: var(--dashboard-surface); cursor: pointer; }
.table-delete-row:hover:not(:disabled) { color: var(--admin-on-accent); background: var(--danger); }
.table-empty-cell { height: 180px !important; color: var(--muted); text-align: center; }
.table-editor-footer { display: grid; grid-template-columns: minmax(150px, 1fr) auto minmax(150px, 1fr); align-items: center; gap: 12px; padding: 5px 10px; border-top: 1px solid var(--dashboard-border); color: var(--muted); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; }
.table-paging { display: flex; align-items: center; justify-content: center; gap: 8px; }
.table-page-button { height: 32px; padding: 0 12px; border-radius: 10px; font-size: 0.8125rem; }
.table-paging strong { min-width: 84px; color: var(--gold-300); text-align: center; }
.table-column-notice { overflow: hidden; color: var(--admin-warning); text-align: right; text-overflow: ellipsis; white-space: nowrap; }

.audit-card { display: grid; grid-template-rows: auto 40px minmax(0, 1fr); }
.audit-table-header, .audit-row { display: grid; grid-template-columns: 150px 100px 140px 85px minmax(180px, 1fr) 104px; align-items: center; gap: 12px; padding: 0 18px; }
.audit-table-header { color: var(--cyan-300); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.audit-list { min-height: 0; overflow: auto; }
.audit-row { min-height: 54px; border-bottom: 1px solid var(--dashboard-border); color: var(--text); font-size: 0.875rem; }
.audit-row:hover { background: var(--dashboard-surface); }
.audit-path { overflow: hidden; color: var(--muted); font-family: Inter, sans-serif; text-overflow: ellipsis; white-space: nowrap; }
.audit-action { color: var(--gold-300); font-weight: 700; text-transform: uppercase; }
.audit-entry-actions { display: flex; justify-content: flex-end; color: var(--muted); }
.audit-reuse-cart { width: 100%; padding-inline: 8px; }

.modal-root { position: fixed; inset: 0; z-index: 20; display: grid; place-items: center; padding: 28px; }
#secondary-modal-root { z-index: 30; }
#secondary-modal-root .modal-backdrop { background: rgb(25 42 65 / 38%); backdrop-filter: blur(10px); }
.modal-backdrop { position: absolute; inset: 0; background: rgb(25 42 65 / 38%); backdrop-filter: blur(8px); }
.modal-card { position: relative; display: grid; grid-template-rows: auto minmax(0, 1fr) auto; width: min(680px, 92vw); max-height: 88vh; border: 2px solid var(--gold-300); border-radius: 24px; overflow: hidden; background: var(--dashboard-surface); box-shadow: none; }
.modal-root[data-size="workspace"] { padding: 16px; }
.modal-root[data-size="workspace"] .modal-card { width: min(1480px, calc(100vw - 32px)); height: min(920px, calc(100vh - 32px)); max-height: none; border-radius: 20px; }
.modal-root[data-size="workspace"] .modal-header { min-height: 72px; padding: 12px 20px; }
.modal-root[data-size="workspace"] .modal-header h2 { font-size: 1.5rem; }
.modal-root[data-size="workspace"] .modal-body { min-height: 0; padding: 16px; overflow: hidden; }
.modal-root[data-size="workspace"] .modal-footer { min-height: 72px; padding: 10px 20px 14px; }
.modal-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 78px; padding: 14px 20px; border-bottom: 1px solid var(--dashboard-border); }
.modal-header h2 { margin: 3px 0 0; color: var(--cream); font-size: 1.5rem; }
.modal-close { width: 48px; padding: 0; border: 2px solid var(--dashboard-border); color: var(--admin-on-accent); background: var(--dashboard-surface); box-shadow: none; font-size: 1.875rem; }
.modal-body { min-height: 0; padding: 22px; overflow: auto; }
.modal-footer { display: flex; justify-content: flex-end; gap: 11px; min-height: 78px; padding: 14px 20px; border-top: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.modal-message { display: grid; gap: 8px; padding: 18px; border: 1px solid var(--dashboard-border); border-radius: 16px; background: var(--dashboard-surface); }
.modal-message strong { color: var(--cream); font-size: 1.25rem; }
.modal-message p { margin: 0; color: var(--admin-primary-strong); line-height: 1.5; }
.error-message { border-color: var(--danger); background: var(--admin-danger-soft); }
.success-message { border-color: var(--success); background: var(--admin-success-soft); }
.modal-form { display: grid; gap: 15px; }
.modal-form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.compact-button { height: 36px; padding: 0 12px; border-radius: 11px; font-size: 0.8125rem; }
.game-mail-form { padding-bottom: 2px; }
.game-mail-form > .field > textarea { min-height: 150px; }
.game-mail-attachments { display: grid; gap: 9px; padding: 14px; border: 1px solid var(--dashboard-border); border-radius: 16px; background: var(--dashboard-surface); }
.game-mail-attachments > header { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 0 2px 5px; }
.game-mail-attachments > header > span:first-child { display: grid; gap: 3px; }
.game-mail-attachments > header strong { color: var(--cream); font-size: 1.0625rem; }
.game-mail-attachments > header small { color: var(--muted); font-size: 0.8125rem; }
.game-mail-cart-actions { display: flex; align-items: center; gap: 8px; }
.game-mail-cart-list { display: grid; gap: 8px; max-height: 350px; overflow: auto; overscroll-behavior: contain; }
.game-mail-cart-empty { display: grid; min-height: 74px; place-items: center; padding: 16px; border: 1px dashed var(--dashboard-border); border-radius: 13px; color: var(--muted); text-align: center; font-size: 0.8125rem; }
.game-mail-cart-row { display: grid; grid-template-columns: 58px minmax(170px, 1fr) minmax(210px, .8fr) auto; align-items: center; gap: 12px; min-height: 78px; padding: 9px 11px; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); }
.game-mail-cart-row:hover { border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.game-mail-cart-identity { display: grid; min-width: 0; gap: 4px; }
.game-mail-cart-identity small { color: var(--cyan-300); font-size: 0.8125rem; font-weight: 700; }
.game-mail-cart-identity strong { overflow: hidden; color: var(--cream); font-size: 0.9375rem; text-overflow: ellipsis; white-space: nowrap; }
.game-mail-cart-attributes { overflow: hidden; color: var(--muted); font-size: 0.8125rem; text-overflow: ellipsis; white-space: nowrap; }
.game-mail-cart-edit { min-width: 58px; }
.mail-item-icon { display: block; width: 54px; height: 54px; padding: 3px; object-fit: contain; border: 1px solid var(--dashboard-border); border-radius: 13px; background: var(--dashboard-surface); }
.mail-item-icon.loading { opacity: .48; filter: saturate(.5); }
.mail-item-icon.missing { opacity: .28; }
.game-mail-bind-field { display: flex; height: var(--control-height); align-items: center; justify-content: center; gap: 9px; border: 1px solid var(--dashboard-border); border-radius: 13px; color: var(--muted); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; cursor: pointer; }
.remote-search-select { position: relative; min-width: 0; }
.remote-search-select-native { position: absolute; width: 1px !important; height: 1px !important; margin: 0; padding: 0 !important; opacity: 0; pointer-events: none; }
.remote-search-select-trigger, .remote-search-select-search {
  width: 100%;
  min-width: 0;
  height: var(--control-height);
  padding: 0 14px;
  border: 1px solid var(--dashboard-border);
  border-radius: 13px;
  color: var(--text);
  text-align: left;
  background: var(--dashboard-surface);
  outline: none;
}
.remote-search-select-trigger { position: relative; padding-right: 42px; cursor: pointer; }
.remote-search-select-trigger::after { position: absolute; top: 50%; right: 15px; content: ''; border: 6px solid transparent; border-top-color: var(--cyan-300); transform: translateY(-20%); }
.remote-search-select-value { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.remote-search-select.open .remote-search-select-trigger { border-color: var(--gold-300); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.remote-search-select-dropdown { position: absolute; top: calc(100% + 7px); left: 0; z-index: 8; width: 100%; min-width: 320px; padding: 8px; border: 1px solid var(--dashboard-border); border-radius: 15px; background: var(--dashboard-surface); box-shadow: none; }
.remote-search-select-search { height: 42px; border-radius: 10px; }
.remote-search-select-search:focus { border-color: var(--gold-300); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.remote-search-select-results { display: grid; gap: 4px; max-height: 240px; margin-top: 7px; overflow: auto; }
.remote-search-select-option { display: grid; gap: 3px; width: 100%; min-height: 52px; padding: 8px 11px; border: 1px solid transparent; border-radius: 11px; color: var(--text); text-align: left; background: transparent; cursor: pointer; }
.remote-search-select-option strong { overflow: hidden; color: var(--cream); font-size: 0.875rem; text-overflow: ellipsis; white-space: nowrap; }
.remote-search-select-option small { color: var(--muted); font-size: 0.8125rem; }
.remote-search-select-option:hover, .remote-search-select-option.active { border-color: var(--dashboard-border); background: var(--dashboard-surface); filter: none; }
.remote-search-select-option[aria-selected="true"] { border-color: var(--gold-300); box-shadow: inset 3px 0 var(--admin-primary); }
.remote-search-select-empty { display: grid; min-height: 70px; place-items: center; padding: 12px; color: var(--muted); text-align: center; font-size: 0.8125rem; }
.remote-search-select-empty.error { color: var(--danger); }
.mail-item-picker { display: grid; grid-template-columns:minmax(0,1fr); grid-template-rows: auto 40px minmax(0, 1fr) auto; gap: 8px; height: 100%; min-height: 0; min-width:0; overflow:hidden; }
.mail-item-picker-filters { display: grid; grid-template-columns: minmax(135px, .65fr) minmax(200px, 1.4fr) minmax(120px, .55fr) minmax(180px, .85fr); align-items: end; gap: 10px; }
.mail-item-picker-filters .field { gap: 5px; font-size: 0.8125rem; min-width:0; }
.mail-item-picker-filters .field input, .mail-item-picker-filters .field select { height: 44px; border-radius: 11px; }
.mail-item-picker-filters .remote-search-select-trigger { height: 44px; border-radius: 11px; }
.mail-item-picker-filters .mail-item-catalog-field { width: calc(100% - 50px); justify-self: start; }
.mail-item-catalog-field .remote-search-select-dropdown { min-width: 100%; }
.mail-item-picker-search { width: 100%; height: var(--control-height); padding: 0 15px; border: 1px solid var(--dashboard-border); border-radius: 13px; color: var(--text); background: var(--dashboard-surface); outline: none; }
.mail-item-picker-search:focus { border-color: var(--gold-300); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.mail-item-picker-columns, .mail-item-picker-row { display: grid; grid-template-columns: 72px 120px minmax(160px, .75fr) minmax(240px, 1.25fr); align-items: center; gap: 12px; padding: 0 13px; min-width:654px; }
.mail-item-picker-columns { color: var(--cyan-300); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.mail-item-picker-list { min-height: 0; min-width:0; overflow: auto; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); overscroll-behavior: contain; touch-action:none; }
.mail-item-picker-row { width: 100%; min-height: 72px; border: 0; border-bottom: 1px solid var(--dashboard-border); color: var(--text); text-align: left; background: transparent; cursor: pointer; }
.mail-item-picker-row:hover:not(:disabled), .mail-item-picker-row.selected { color: var(--text); background: var(--dashboard-surface); filter: none; }
.mail-item-picker-row.selected { box-shadow: inset 3px 0 var(--admin-primary); }
.mail-item-picker-row > strong { color: var(--gold-300); font-size: 0.875rem; overflow-wrap:anywhere; }
.mail-item-picker-row > span { overflow: hidden; color: var(--text); text-overflow: ellipsis; white-space: nowrap; }
.mail-item-picker-row > .mail-item-picker-description { color: var(--muted); font-size: 0.875rem; white-space:normal; padding-block:8px; }
.mail-item-picker-status { min-height: 20px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; text-align: right; }
.mail-item-picker-empty { display: grid; min-height: 180px; place-items: center; padding: 20px; color: var(--muted); text-align: center; }
.mail-item-picker-empty.error { color: var(--danger); }
.mail-item-editor-summary { display: grid; grid-template-columns: 64px minmax(0, 1fr); align-items: center; gap: 13px; padding: 12px; border: 1px solid var(--dashboard-border); border-radius: 15px; background: var(--dashboard-surface); }
.mail-item-editor-summary > span { display: grid; gap: 5px; min-width: 0; }
.mail-item-editor-summary strong { overflow: hidden; color: var(--cream); font-size: 1.125rem; text-overflow: ellipsis; white-space: nowrap; }
.mail-item-editor-summary small { color: var(--muted); font-size: 0.8125rem; }
.mail-item-stat-section { display: grid; gap: 11px; padding: 13px; border: 1px solid var(--dashboard-border); border-radius: 15px; background: var(--dashboard-surface); }
.mail-item-stat-section > header { display: flex; align-items: end; justify-content: space-between; gap: 12px; }
.mail-item-stat-section > header strong { color: var(--cream); font-size: 1rem; }
.mail-item-stat-section > header small { color: var(--muted); font-size: 0.8125rem; }
.mail-item-stat-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.mail-item-stat-grid .field { gap: 5px; font-size: 0.8125rem; }
.mail-item-stat-grid .field input { height: 42px; padding-inline: 10px; border-radius: 11px; }
.typed-value-editor { display: grid; grid-template-columns: 130px minmax(0, 1fr); align-items: start; gap: 12px; }
.typed-value-type { display: grid; gap: 6px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; }
.typed-value-type span { text-transform: uppercase; letter-spacing: .08em; }
.typed-value-type select, .typed-value-control input, .typed-value-control select, .typed-value-control textarea, .table-custom-column-name {
  width: 100%;
  min-width: 0;
  height: var(--control-height);
  padding: 0 13px;
  border: 1px solid var(--dashboard-border);
  border-radius: 12px;
  color: var(--text);
  background: var(--dashboard-surface);
  outline: none;
}
.typed-value-control textarea { min-height: 118px; padding-block: 11px; resize: vertical; font: 0.875rem/1.5 Inter, sans-serif; }
.typed-value-control input:focus, .typed-value-control select:focus, .typed-value-control textarea:focus, .typed-value-type select:focus, .table-custom-column-name:focus { border-color: var(--gold-300); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.typed-null-value { display: flex; align-items: center; min-height: var(--control-height); padding: 0 14px; border: 1px dashed var(--dashboard-border); border-radius: 12px; color: var(--muted); background: var(--dashboard-surface); }
.table-row-form { display: grid; min-height: 0; gap: 12px; }
.table-row-form-heading { position: sticky; top: -22px; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 0 12px; background: var(--dashboard-surface); }
.table-row-form-heading > span { display: grid; gap: 3px; }
.table-row-form-heading strong { color: var(--cream); font-size: 1.1875rem; }
.table-row-form-heading small { color: var(--muted); }
.table-row-add-field { height: 40px; border-radius: 11px; font-size: 0.8125rem; }
.table-row-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.table-row-field { display: grid; gap: 9px; min-width: 0; padding: 12px; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); }
.table-row-field-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0; }
.table-row-field-heading strong { overflow: hidden; color: var(--gold-300); text-overflow: ellipsis; white-space: nowrap; }
.table-field-include { display: flex; flex: none; align-items: center; gap: 7px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; cursor: pointer; }
.table-row-field .typed-value-editor { grid-template-columns: 92px minmax(0, 1fr); }
.table-row-field .typed-value-type, .table-row-field .typed-value-field { display: grid; min-width: 0; gap: 6px; color: var(--muted); font: 400 0.8125rem/1.4 Inter, sans-serif; }
.table-row-field .typed-value-type > span, .table-row-field .typed-value-field > span { text-transform: uppercase; letter-spacing: .08em; }
.table-row-field .typed-value-control { min-width: 0; }
.table-row-field .typed-value-editor input, .table-row-field .typed-value-editor select { font-family: Inter, sans-serif; font-weight: 400; }
.table-row-field .typed-value-control textarea { min-height: 86px; font: 400 0.875rem/1.5 Inter, sans-serif; }
.modal-code-preview { min-height: 150px; padding: 14px; border: 1px solid var(--dashboard-border); border-radius: 14px; color: var(--admin-primary-strong); background: var(--dashboard-surface); font: 0.875rem/1.5 Inter, sans-serif; white-space: pre-wrap; }
.backup-list { display: grid; gap: 9px; }
.backup-item { display: grid; grid-template-columns: 24px 1fr auto; align-items: center; gap: 12px; min-height: 58px; padding: 10px 13px; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); cursor: pointer; }
.backup-item:has(input:checked) { border-color: var(--gold-300); background: var(--dashboard-surface); }
.backup-item strong, .backup-item small { display: block; }
.backup-item small { margin-top: 3px; color: var(--muted); }

/* Managed-content workspaces share one catalog/editor information architecture. */
.manager-section-label { display: block; color: var(--cyan-500); font-size: 0.8125rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.manager-editor-heading { display: flex; min-height: 66px; align-items: center; justify-content: space-between; gap: 16px; padding-bottom: 14px; border-bottom: 1px solid var(--dashboard-border); }
.manager-editor-heading > div { display: grid; gap: 4px; min-width: 0; }
.manager-editor-heading strong { overflow: hidden; color: var(--cream); font-size: 1.375rem; text-overflow: ellipsis; white-space: nowrap; }
.manager-editor-heading small { color: var(--muted); font-size: 0.8125rem; }
.manager-status-pill { flex: none; padding: 7px 11px; border: 1px solid var(--dashboard-border); border-radius: 999px; color: var(--success); background: var(--admin-success-soft); font-size: 0.8125rem; font-weight: 700; letter-spacing: .08em; }
.manager-status-pill.disabled { border-color: var(--dashboard-border); color: var(--muted); background: var(--dashboard-surface); }
.manager-danger-zone { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: auto; padding: 13px 14px; border: 1px solid var(--dashboard-border); border-radius: 13px; background: var(--admin-danger-soft); }
.manager-danger-zone > span { display: grid; gap: 3px; }
.manager-danger-zone strong { color: var(--danger); font-size: 0.875rem; }
.manager-danger-zone small { color: var(--danger); font-size: 0.8125rem; }
.drop-catalog-manager button:not(.danger-button), .pve-chapter-manager button:not(.danger-button) { border: 1px solid var(--dashboard-border); color: var(--admin-primary-strong); background: var(--dashboard-surface); box-shadow: none; }

.drop-catalog-manager, .pve-chapter-manager { grid-template-columns: 320px minmax(0, 1fr); width: 100%; height: 100%; min-height: 0; gap: 16px; }
.drop-catalog-manager > aside, .drop-catalog-manager > main, .pve-chapter-manager > aside, .pve-chapter-manager > main { min-width: 0; min-height: 0; border: 1px solid var(--dashboard-border); border-radius: 16px; background: var(--dashboard-surface); overflow: hidden; }
.drop-catalog-manager > aside, .pve-chapter-manager > aside { display: grid; grid-template-rows: auto auto minmax(0, 1fr); padding: 0; }
.drop-catalog-manager > aside > header, .pve-chapter-manager > aside > header { min-height: 68px; padding: 11px 13px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.drop-catalog-manager > aside > header > div, .pve-chapter-manager > aside > header > div { display: grid; gap: 3px; }
.drop-catalog-manager > aside > header strong, .pve-chapter-manager > aside > header strong { font-size: 1.125rem; }
.drop-catalog-filters { grid-template-columns: 112px minmax(0, 1fr); gap: 8px; padding: 11px 12px; border-bottom: 1px solid var(--dashboard-border); }
.pve-chapter-manager > aside > input { width: auto; margin: 11px 12px; }
.drop-catalog-filters select, .drop-catalog-filters input, .drop-pool-fields input, .drop-pool-fields select, .drop-items-heading input, .drop-item-row input { height: 40px; padding: 0 10px; border-radius: 10px; }
.drop-pool-list, .pve-chapter-list { min-height: 0; padding: 8px; overflow: auto; }
.drop-pool-list .drop-pool-card, .pve-chapter-list .pve-chapter-card { height: auto; min-height: 66px; margin: 0 0 7px; padding: 10px 11px !important; border-radius: 11px; }
.drop-pool-card strong, .pve-chapter-card strong { font-size: 0.875rem; }
.drop-pool-card span, .drop-pool-card small, .pve-chapter-card span, .pve-chapter-card small { font-size: 0.8125rem; }
.drop-catalog-manager > main, .pve-chapter-manager > main { padding: 16px 18px; overflow: auto; }
.drop-catalog-manager form, .pve-chapter-manager form { min-height: 100%; align-content: start; gap: 14px; }
.drop-catalog-empty, .pve-chapter-empty { min-height: 100%; align-content: center; justify-items: center; gap: 7px; }
.drop-catalog-empty strong, .pve-chapter-empty strong { color: var(--cream); font-size: 1.25rem; }
.drop-catalog-empty span, .pve-chapter-empty span { color: var(--muted); font-size: 0.875rem; }
.drop-pool-fields { grid-template-columns: 1.1fr .8fr .9fr .55fr 1.35fr .65fr; gap: 10px; padding: 13px; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); }
.drop-pool-fields label { gap: 6px; font-size: 0.8125rem; font-weight: 700; }
.drop-pool-fields .drop-enabled { grid-column: 1 / -1; min-height: 48px; gap: 10px; padding: 8px 11px; border: 1px solid var(--dashboard-border); border-radius: 10px; background: var(--dashboard-surface); }
.drop-pool-fields .drop-enabled > span { display: grid; gap: 2px; }
.drop-pool-fields .drop-enabled strong { color: var(--cream); font-size: 0.8125rem; }
.drop-pool-fields .drop-enabled small { color: var(--muted); font-size: 0.8125rem; }
.drop-rewards-section { display: grid; grid-template-rows: auto minmax(150px, 1fr); min-height: 260px; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); overflow: hidden; }
.drop-items-heading { min-height: 68px; margin: 0; padding: 10px 12px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.drop-items-heading > div:first-child { display: grid; gap: 2px; }
.drop-items-heading > div:first-child strong { color: var(--cream); font-size: 1rem; }
.drop-items-heading > button { flex: none; }
.drop-item-table { max-height: 270px; overflow: auto; }
.drop-item-table > header { position: sticky; z-index: 2; top: 0; min-height: 38px; padding-inline: 10px; background: var(--dashboard-surface); }
.drop-item-row { min-height: 64px; padding: 6px 10px; }
.drop-pool-heading-actions { display: flex !important; flex: none; align-items: center; gap: 8px !important; }
.drop-catalog-manager button.drop-item-identity:not(.danger-button) { display: grid; grid-template-columns: 46px minmax(0, 1fr); align-items: center; gap: 9px; min-width: 0; min-height: 52px; padding: 3px 6px; border: 1px solid transparent; border-radius: 8px; color: var(--text); text-align: left; background: transparent; box-shadow: none; }
.drop-catalog-manager button.drop-item-identity:hover:not(:disabled) { border-color: var(--dashboard-border); background: var(--admin-hover); }
.drop-item-icon { width: 44px; height: 44px; border-radius: 8px; }
.drop-item-copy { display: grid; min-width: 0; gap: 3px; }
.drop-item-copy strong, .drop-item-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.drop-item-copy strong { color: var(--text); font-size: 0.8125rem; font-weight: 700; }
.drop-item-copy small { color: var(--muted); font-size: 0.8125rem; }
.pve-chapter-warning { margin-bottom: 12px; }
.pve-chapter-fields { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; padding: 13px; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); }
.pve-chapter-manager > main { display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; }
.pve-chapter-manager form { grid-template-rows: auto auto minmax(0, 1fr) auto; min-height: 0; height: 100%; }

.task-manager { display: grid; grid-template-columns: 320px minmax(0, 1fr); width: 100%; height: 100%; min-height: 0; gap: 16px; }
.task-manager > aside, .task-manager > main { min-width: 0; min-height: 0; overflow: hidden; border: 1px solid var(--dashboard-border); border-radius: 16px; background: var(--dashboard-surface); }
.task-manager > aside { display: grid; grid-template-rows: 68px 62px minmax(0, 1fr); }
.task-manager > aside > header { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 13px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.task-manager > aside > header > div { display: grid; gap: 3px; }
.task-manager > aside button:not(.danger-button), .task-manager > main button:not(.danger-button) { min-height: 36px; padding: 0 11px; border: 1px solid var(--dashboard-border); border-radius: 10px; color: var(--admin-primary-strong); background: var(--dashboard-surface); box-shadow: none; }
.task-manager-filters { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 8px; padding: 11px 12px; border-bottom: 1px solid var(--dashboard-border); }
.task-manager input, .task-manager select { width: 100%; min-width: 0; height: 40px; padding: 0 10px; border: 1px solid var(--dashboard-border); border-radius: 10px; color: var(--text); background: var(--dashboard-surface); outline: none; }
.task-manager input:focus, .task-manager select:focus { border-color: var(--gold-300); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.task-manager-list { min-height: 0; overflow: auto; padding: 8px; }
.task-manager-card { display: grid; width: 100%; min-height: 76px; margin-bottom: 7px; padding: 10px 11px !important; text-align: left; }
.task-manager-card strong, .task-manager-card span, .task-manager-card small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.task-manager-card strong { color: var(--cream); font-size: 0.9375rem; }
.task-manager-card span { color: var(--cyan-300); font-size: 0.8125rem; }
.task-manager-card small { color: var(--muted); font-size: 0.8125rem; }
.task-manager-card.selected { border-color: var(--gold-300) !important; background: var(--dashboard-surface) !important; }
.task-manager > main { display: grid; grid-template-rows: minmax(0, 1fr); padding: 16px 18px; }
.task-manager-empty { display: grid; min-height: 100%; place-content: center; justify-items: center; gap: 7px; color: var(--muted); }
.task-manager-empty strong { color: var(--cream); font-size: 1.25rem; }
.task-manager form { display: grid; grid-template-rows: auto 48px minmax(0, 1fr); min-height: 0; height: 100%; gap: 14px; }
.task-manager .task-heading-actions { display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex-shrink: 0; }
.task-heading-actions .danger-button { white-space: nowrap; }
.task-reward-summary { display: flex; flex-wrap: wrap; gap: 10px; padding: 12px; border-bottom: 1px solid var(--dashboard-border); }
.task-reward-summary > span { display: grid; gap: 4px; min-width: 110px; padding: 10px 14px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface-raised); }
.task-reward-summary small { color: var(--muted); font-weight: 400; }
.task-reward-summary strong { color: var(--text); font-weight: 700; }
.modal-root[data-size="task-currency"] .modal-body { display: flex; overflow: hidden; }
.task-currency-form { flex: 1; min-height: 0; max-height: 60vh; overflow: auto; padding: 2px 8px 2px 2px; scrollbar-gutter: stable; font-family: Inter, sans-serif; font-weight: 400; }
.task-currency-form .field > span { font-weight: 700; }
.task-currency-form p { margin: 0; color: var(--muted); line-height: 1.6; }
.task-manager-tabs { display: flex; gap: 8px; border-bottom: 1px solid var(--dashboard-border); }
.task-manager-tabs button { border-radius: 10px 10px 0 0 !important; box-shadow: none !important; }
.task-manager-tabs button.active { border-color: var(--gold-300) !important; color: var(--text) !important; background: var(--dashboard-surface) !important; }
.task-definition-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-content: start; gap: 12px; overflow: auto; padding: 2px 4px 10px 2px; }
.task-definition-fields label { display: grid; gap: 6px; min-width: 0; color: var(--muted); font-size: 0.8125rem; font-weight: 700; }
.task-definition-fields label:nth-child(3), .task-definition-fields label:nth-child(4) { grid-column: span 2; }
.task-repeat-toggle { display: flex !important; grid-column: span 3; grid-template-columns: 20px 1fr !important; align-items: center; padding: 12px; border: 1px solid var(--dashboard-border); border-radius: 12px; background: var(--dashboard-surface); }
.task-relation-pane { min-height: 0; overflow: hidden; }
.task-relation-pane:not([hidden]) { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 10px; }
.task-relation-pane > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.task-relation-pane > header div { display: grid; gap: 3px; }
.task-relation-pane > header small { color: var(--muted); }
.task-condition-table, .task-reward-table { min-height: 0; overflow: auto; border: 1px solid var(--dashboard-border); border-radius: 12px; }
.task-relation-header, .task-relation-row { display: grid; align-items: center; gap: 8px; min-width: 720px; padding: 8px 10px; }
.task-condition-table .task-relation-header, .task-condition-table .task-relation-row { grid-template-columns: 48px minmax(180px, 1fr) minmax(220px, 1.2fr) 100px 140px 42px; }
.task-handler-picker, .task-handler-form { display: grid; gap: 16px; min-height: 0; font-family: Inter, sans-serif; font-weight: 400; }
.task-handler-picker p, .task-handler-form p { margin: 0; color: var(--muted); line-height: 1.6; }
.modal-root[data-size="task-handler-picker"] .modal-card { width: min(730px, 92vw); }
.modal-root[data-size="task-handler-picker"] .modal-body, .modal-root[data-size="task-handler-parameters"] .modal-body { display: flex; overflow: hidden; }
.task-handler-picker, .task-handler-form { flex: 1; }
.task-handler-picker { grid-template-rows: auto auto minmax(0, 1fr); }
.task-handler-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; max-height: 52vh; overflow: auto; scrollbar-gutter: stable; padding: 2px 14px 2px 2px; }
.task-handler-option { display: grid; gap: 7px; align-content: start; text-align: left; padding: 14px; border: 1px solid var(--border, var(--dashboard-border)); border-radius: 10px; background: var(--panel, var(--dashboard-surface-raised)); color: inherit; }
.task-handler-option small, .task-handler-option span { color: var(--muted); font-weight: 400; }
.task-handler-option strong { font-size: 1rem; font-weight: 700; }
.task-handler-option.selected, .task-handler-option:hover { border-color: var(--admin-primary); }
.task-handler-form { max-height: 60vh; overflow: auto; padding: 2px; }
.event-handler-fields { display: grid; gap: 16px; }
.task-handler-form label { display: grid; gap: 7px; }
.task-handler-form label > span { font-size: 0.875rem; font-weight: 700; }
.task-handler-form input, .task-handler-form select, .task-handler-picker > input { width: 100%; min-height: 38px; padding: 8px 10px; border: 1px solid var(--dashboard-border); border-radius: 7px; background: var(--dashboard-surface-raised); color: var(--text); font: inherit; }
.task-handler-form .task-handler-reset-note { padding: 12px; border: 1px solid var(--dashboard-border); border-radius: 8px; color: var(--admin-warning); }
.task-handler-form .remote-search-select-dropdown { position: relative; top: auto; min-width: 0; margin-top: 8px; }
.task-handler-form .remote-search-select-results { max-height: 210px; scrollbar-gutter: stable; padding-right: 8px; }
.task-handler-form .remote-search-select-value { white-space: normal; text-align: left; }
.task-handler-form .task-target-with-icon { display: grid; grid-template-columns: 40px minmax(0, 1fr); column-gap: 10px; align-items: center; }
.task-handler-form .task-target-icon { width: 40px; height: 40px; grid-row: 1 / span 2; }
.task-handler-form .remote-search-select-trigger:has(.task-target-icon) { height: auto; min-height: 56px; }
.task-condition-copy { display: grid; gap: 5px; overflow-wrap: anywhere; }
.task-condition-copy small { color: var(--muted); }
@media (max-width: 680px) { .task-handler-options { grid-template-columns: 1fr; } }
.task-reward-table .task-relation-header, .task-reward-table .task-relation-row { grid-template-columns: minmax(220px, 1.25fr) 120px 110px 100px 120px 42px; min-width: 900px; }
.task-relation-header { position: sticky; top: 0; z-index: 1; color: var(--cyan-300); background: var(--dashboard-surface); font-size: 0.8125rem; font-weight: 700; }
.task-relation-row { border-top: 1px solid var(--dashboard-border); }
.task-relation-row .danger-button { width: 38px; height: 38px; padding: 0; }
.task-manager > main button.task-reward-item-picker { display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; gap: 10px; min-height: 52px; min-width: 0; padding: 4px 6px; border-color: transparent; color: inherit; text-align: left; background: transparent; box-shadow: none; }
.task-manager > main button.task-reward-item-picker:hover, .task-manager > main button.task-reward-item-picker:focus-visible { border-color: var(--dashboard-border); background: var(--admin-primary-soft); outline: none; }
.task-reward-item-icon { width: 44px; height: 44px; border-radius: 8px; }
.task-reward-item-copy { display: grid; min-width: 0; gap: 3px; }
.task-reward-item-copy strong, .task-reward-item-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.task-reward-item-copy strong { color: var(--text); font-size: 0.875rem; }
.task-reward-item-copy small { color: var(--muted); font-size: 0.8125rem; }

@media (max-width: 1050px) {
  .task-manager { grid-template-columns: 250px minmax(600px, 1fr); }
  .task-definition-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .task-repeat-toggle { grid-column: span 2; }
}
.pve-difficulties { grid-template-rows: auto minmax(0, 1fr); min-height: 0; height: auto; gap: 0; padding: 0; border-radius: 14px; overflow: hidden; }
.pve-difficulties > header { min-height: 68px; padding: 10px 13px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.pve-difficulties > div { gap: 10px; min-height: 0; padding: 12px; overflow: auto; overscroll-behavior: contain; }
.pve-difficulty-row { padding: 11px; background: var(--dashboard-surface); }
.pve-mission-chain { min-height: 36px; }

.scroll-surface { scrollbar-width: thin; scrollbar-color: #a0b3cc var(--dashboard-surface-raised); }
.modal-open { overflow: hidden; }

@media (max-width: 1180px) {
  .topbar { grid-template-columns: auto 1fr auto; gap: 12px; padding-inline: 18px; }
  .brand small { display: none; }
  .tab-button { min-width: 118px; padding-inline: 11px; }
  .workspace { padding-inline: 18px; }
  .editor-header { align-items: flex-start; flex-direction: column; }
  .editor-actions { justify-content: flex-start; }
  .table-editor-toolbar { grid-template-columns: minmax(130px, .8fr) minmax(150px, 1fr) auto auto; }
  .table-structure-pill { display: none; }
  .table-row-fields { grid-template-columns: 1fr; }
  .function-card { grid-template-columns: 72px minmax(0, 1fr); }
  .function-card > .primary-button { grid-column: 1 / -1; width: 100%; }
  .game-mail-cart-row { grid-template-columns: 58px minmax(150px, 1fr) minmax(170px, .8fr) auto; }
  .pve-chapter-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .drop-catalog-manager, .pve-chapter-manager { grid-template-columns: 270px minmax(0, 1fr); }
  .drop-pool-fields { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.screen-preview-body { overflow: hidden; }
.screen-preview-toolbar { position: fixed; z-index: 50; top: 8px; left: 50%; display: flex; align-items: center; gap: 7px; padding: 7px; border: 1px solid var(--dashboard-border); border-radius: 13px; background: var(--dashboard-surface); box-shadow: none; transform: translateX(-50%); }
.screen-preview-toolbar strong { padding: 0 8px; color: var(--gold-300); font-size: 0.8125rem; white-space: nowrap; }
.screen-preview-toolbar button { min-height: 32px; padding: 0 10px; border: 1px solid var(--dashboard-border); border-radius: 8px; color: var(--text); background: var(--dashboard-surface); font-size: 0.8125rem; cursor: pointer; }

@media (max-width: 760px) {
  .modal-root { padding: 12px; }
  .modal-root[data-size="workspace"] { padding: 8px; }
  .modal-root[data-size="workspace"] .modal-card { width: calc(100vw - 16px); height: calc(100vh - 16px); }
  .modal-form-row { grid-template-columns: 1fr; }
  .game-mail-attachments > header { align-items: flex-start; flex-direction: column; }
  .game-mail-cart-actions { width: 100%; justify-content: space-between; }
  .game-mail-cart-row { grid-template-columns: 58px minmax(0, 1fr) auto; }
  .game-mail-cart-attributes { grid-column: 2 / -1; }
  .mail-item-picker-columns, .mail-item-picker-row { grid-template-columns: 62px 82px minmax(120px, .8fr) minmax(160px, 1.2fr); gap: 8px; padding-inline: 9px; min-width:466px; }
  .mail-item-picker-filters { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .mail-item-picker-filters .mail-item-catalog-field { width: 100%; }
  .remote-search-select-dropdown { min-width: 100%; }
  .mail-item-stat-grid { grid-template-columns: 1fr 1fr; }
  .drop-catalog-manager, .pve-chapter-manager { grid-template-columns: 230px minmax(520px, 1fr); }
}

/* Title Manager giữ ba workspace trong cùng modal Bootstrap: catalog có hai
   vùng cuộn độc lập, còn ownership và asset health không làm header/tab trôi. */
.title-admin { display: grid; width: min(94vw, 1480px); height: min(82vh, 860px); min-width: 0; min-height: 0; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; color: var(--text); background: var(--dashboard-surface); font-family: Inter, sans-serif; }
.title-admin-tabs { padding: 0 20px; border-bottom-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.title-admin-tabs .nav-link { padding: 13px 18px 11px; color: var(--muted); border: 0; border-bottom: 2px solid transparent; border-radius: 0; background: transparent; font-weight: 700; }
.title-admin-tabs .nav-link.active { color: var(--admin-primary-strong); border-bottom-color: var(--dashboard-border); background: var(--admin-hover); }
.title-admin-pane { min-width: 0; min-height: 0; }
.title-admin-catalog { display: grid; grid-template-columns: 350px minmax(0, 1fr); overflow: hidden; }
.title-admin-list { display: grid; min-width: 0; min-height: 0; grid-template-rows: auto auto minmax(0, 1fr); gap: 12px; padding: 16px; border: 0; border-right: 1px solid var(--dashboard-border); border-radius: 0; background: var(--dashboard-surface-raised); }
.title-admin-list > header, .title-admin-ownership-header, .title-admin-owned > header, .title-admin-grant > header { display: flex; align-items: center; justify-content: space-between; gap: 14px; }
.title-admin-list > header > div, .title-admin-ownership-header > div, .title-admin-owned > header > div, .title-admin-grant > header > div { display: grid; min-width: 0; gap: 3px; }
.title-admin-list > header strong, .title-admin-ownership-header strong { color: var(--text); font-size: 1.3125rem; }
.title-admin-list > header small, .title-admin-ownership-header small, .title-admin-owned > header small, .title-admin-grant > header small { color: var(--muted); }
.title-admin-filters { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.title-admin-filters input { grid-column: 1 / -1; }
.title-admin-list-scroll { display: grid; min-height: 0; align-content: start; gap: 8px; overflow: auto; padding-right: 5px; scrollbar-gutter: stable; }
.title-admin-list-item { display: grid; min-width: 0; grid-template-columns: 116px minmax(0, 1fr); align-items: center; gap: 9px; padding: 8px; color: inherit; text-align: left; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface-raised); }
.title-admin-list-item:hover { border-color: var(--dashboard-border); background: var(--admin-hover); }
.title-admin-list-item.selected { border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.title-admin-list-item.disabled { opacity: .55; }
.title-admin-list-item canvas { width: 112px; height: 40px; }
.title-admin-list-copy { display: grid; min-width: 0; gap: 4px; }
.title-admin-list-copy strong, .title-admin-list-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.title-admin-list-copy strong { color: var(--admin-primary-strong); }
.title-admin-list-copy small { color: var(--muted); font-size: 0.8125rem; }
.title-admin-editor { min-width: 0; min-height: 0; overflow: hidden; }
.title-admin-editor > form { display: grid; height: 100%; min-height: 0; align-content: start; gap: 14px; overflow: auto; padding: 18px 20px 22px; scrollbar-gutter: stable; }
.title-admin-empty, .title-admin-owned-empty { display: grid; min-height: 180px; place-content: center; color: var(--muted); text-align: center; }
.title-admin-editor-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 16px; border: 1px solid var(--dashboard-border); border-radius: 9px; background: var(--dashboard-surface-raised); }
.title-admin-editor-identity { display: grid; min-width: 0; grid-template-columns: 190px minmax(0, 1fr); align-items: center; column-gap: 12px; }
.title-admin-editor-identity canvas { width: 180px; height: 64px; grid-row: 1 / span 3; }
.title-admin-editor-identity strong { overflow: hidden; color: var(--admin-primary-strong); font-size: 1.4375rem; text-overflow: ellipsis; white-space: nowrap; }
.title-admin-editor-identity small { color: var(--muted); }
.title-admin-form-card { overflow: hidden; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.title-admin-form-card > header { padding: 12px 15px; color: var(--text); border-bottom: 1px solid var(--dashboard-border); background: var(--admin-hover); font-weight: 700; }
.title-admin-form-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; padding: 15px; }
.title-admin-form-grid .field:first-child { grid-column: span 2; }
.title-admin-form-grid textarea { min-height: 92px; resize: vertical; }
.title-admin-condition-empty { margin: 0; padding: 22px 15px; color: var(--muted); }
.title-admin-charm { display: grid; min-height: 0; grid-template-rows: auto minmax(0, 1fr); gap: 16px; overflow: hidden; padding: 18px 20px 22px; }
.title-admin-charm-header { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 16px 18px; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.title-admin-charm-header > div { display: grid; min-width: 0; gap: 3px; }
.title-admin-charm-header strong { color: var(--text); font-size: 1.375rem; }
.title-admin-charm-header small { max-width: 760px; color: var(--muted); line-height: 1.45; }
.title-admin-charm-header > .field { width: 260px; flex: 0 0 260px; }
.title-admin-charm-form { display: grid; min-width: 760px; min-height: 0; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; border: 1px solid var(--dashboard-border); border-radius: 9px; background: var(--dashboard-surface); }
.title-admin-charm-columns, .title-admin-charm-row { display: grid; grid-template-columns: 70px minmax(150px, 1.4fr) repeat(3, minmax(92px, 1fr)) minmax(120px, 1fr); align-items: center; gap: 10px; }
.title-admin-charm-columns { padding: 11px 14px; color: var(--muted); border-bottom: 1px solid var(--dashboard-border); background: var(--admin-hover); font-size: 0.8125rem; font-weight: 700; letter-spacing: .04em; }
.title-admin-charm-levels { display: grid; min-height: 0; align-content: start; overflow: auto; padding: 6px 8px 10px; scrollbar-gutter: stable; }
.title-admin-charm-row { min-height: 58px; padding: 8px 6px; border-bottom: 1px solid var(--dashboard-border); }
.title-admin-charm-row:last-child { border-bottom: 0; }
.title-admin-charm-row > strong { display: grid; width: 42px; height: 32px; place-items: center; justify-self: center; border: 1px solid var(--dashboard-border); border-radius: 7px; color: var(--admin-primary-strong); background: var(--admin-hover); font-size: 0.9375rem; }
.title-admin-charm-row .form-control { min-width: 0; }
.title-admin-charm-row .form-control:disabled { color: var(--muted); background: var(--dashboard-surface-raised); }
.title-admin-ownership { display: grid; min-height: 0; grid-template-rows: auto minmax(0, 1fr); gap: 16px; overflow: hidden; padding: 18px 20px 22px; }
.title-admin-ownership-header { padding-bottom: 14px; border-bottom: 1px solid var(--dashboard-border); }
.title-admin-ownership-header > .field { flex: 0 0 min(460px, 44%); }
.title-admin-ownership-grid { display: grid; min-height: 0; grid-template-columns: minmax(330px, .8fr) minmax(460px, 1.4fr); gap: 16px; }
.title-admin-ownership-tools { display: grid; min-height: 0; align-content: start; gap: 16px; overflow: auto; padding-right: 4px; scrollbar-gutter: stable; }
.title-admin-grant, .title-admin-owned { min-height: 0; padding: 15px; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.title-admin-grant-form { display: grid; gap: 13px; margin-top: 15px; }
.title-admin-grant-preview { display: grid; min-height: 78px; place-items: center; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.title-admin-grant-preview canvas { width: 180px; height: 64px; }
.title-admin-grant-summary { min-height: 42px; margin: 0; color: var(--muted); font-size: 0.875rem; line-height: 1.5; }
.title-admin-charm-role { padding: 15px; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.title-admin-charm-role > header > div { display: grid; gap: 3px; }
.title-admin-charm-role > header strong { color: var(--text); }
.title-admin-charm-role > header small { color: var(--muted); }
.title-admin-charm-role-form { display: grid; gap: 12px; margin-top: 14px; }
.title-admin-charm-role-summary { margin: 0; padding: 10px 12px; border: 1px solid var(--dashboard-border); border-radius: 7px; color: var(--admin-primary-strong); background: var(--dashboard-surface-raised); font-size: 0.875rem; font-weight: 700; }
.title-admin-owned { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 13px; }
.title-admin-owned-list { display: grid; min-height: 0; align-content: start; gap: 9px; overflow: auto; padding-right: 5px; scrollbar-gutter: stable; }
.title-admin-owned-card { display: grid; grid-template-columns: 150px minmax(0, 1fr) auto; align-items: center; gap: 11px; padding: 9px 11px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.title-admin-owned-card.expired { opacity: .62; }
.title-admin-owned-card canvas { width: 144px; height: 51px; }
.title-admin-owned-copy { display: grid; min-width: 0; gap: 4px; }
.title-admin-owned-copy strong { overflow: hidden; color: var(--admin-primary-strong); text-overflow: ellipsis; white-space: nowrap; }
.title-admin-owned-copy small { color: var(--muted); }
.title-admin-assets { display: grid; min-height: 0; grid-template-rows: auto auto minmax(0, 1fr); gap: 16px; overflow: hidden; padding: 18px 20px 22px; }
.title-admin-assets > header { display: grid; gap: 3px; }
.title-admin-assets > header strong { color: var(--text); font-size: 1.375rem; }
.title-admin-assets > header small { color: var(--muted); }
.title-admin-asset-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.title-admin-asset-summary .card { min-height: 84px; padding: 15px; color: var(--admin-primary-strong); white-space: pre-line; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); font-weight: 700; }
.title-admin-asset-summary .warning { color: var(--admin-warning); border-color: var(--dashboard-border); }
.title-admin-missing-grid { display: grid; min-height: 0; grid-template-columns: repeat(3, minmax(0, 1fr)); align-content: start; gap: 10px; overflow: auto; padding-right: 5px; scrollbar-gutter: stable; }
.title-admin-missing-card { display: grid; gap: 4px; padding: 12px 14px; border-color: var(--dashboard-border); background: var(--admin-danger-soft); }
.title-admin-missing-card strong { color: var(--admin-warning); }
.title-admin-missing-card small { color: var(--muted); }
@media (max-width: 1050px) {
  .title-admin { width: 94vw; height: auto; max-height: 90vh; overflow: auto; }
  .title-admin-catalog { min-height: 980px; grid-template-columns: 310px minmax(0, 1fr); }
  .title-admin-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .title-admin-charm { overflow: auto; }
  .title-admin-charm-header { align-items: stretch; flex-direction: column; }
  .title-admin-charm-header > .field { width: min(100%, 320px); flex-basis: auto; }
  .title-admin-ownership { min-height: 980px; }
  .title-admin-ownership-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .title-admin-catalog { min-height: 1320px; grid-template-columns: 1fr; grid-template-rows: 430px minmax(760px, auto); }
  .title-admin-list { border-right: 0; border-bottom: 1px solid var(--dashboard-border); }
  .title-admin-form-grid, .title-admin-asset-summary, .title-admin-missing-grid { grid-template-columns: 1fr; }
  .title-admin-form-grid .field:first-child { grid-column: auto; }
  .title-admin-editor-header, .title-admin-ownership-header { align-items: stretch; flex-direction: column; }
  .title-admin-editor-identity { grid-template-columns: 1fr; }
  .title-admin-editor-identity canvas { grid-row: auto; }
  .title-admin-ownership-header > .field { flex-basis: auto; }
  .title-admin-owned-card { grid-template-columns: 1fr; }
  .title-admin-charm { padding: 12px; }
  .title-admin-charm-form { overflow-x: auto; }
}

@media (max-height: 780px) {
  .pve-chapter-manager > main { display: block; overflow: auto; }
  .pve-chapter-manager form { min-height: 650px; height: auto; }
  .pve-difficulties { min-height: 260px; }
}
.realm-settlement-manager { display: grid; grid-template-rows: auto minmax(0, 1fr); width: 100%; min-width: 0; height: 100%; min-height: 0; gap: 16px; font-family: Inter, sans-serif; font-weight: 400; }
.realm-settlement-manager strong { font-weight: 700; }
.realm-policy-list { display: grid; min-width: 0; min-height: 0; align-content: start; gap: 14px; overflow: auto; padding-right: 6px; }
/* Card mặc định không có Realm ID: không dành cột 180px rồi để auto-placement
   nhét cả ba reward vào đó. Realm ID (nếu có) là một hàng riêng; hai nhóm dưới
   chia đều bề rộng và xuống hàng khi viewport hẹp. */
.realm-policy-card { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); min-width: 0; gap: 18px; padding: 16px; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); }
.realm-policy-card > header { grid-column: 1 / -1; display: flex; justify-content: space-between; align-items: center; }
.realm-policy-card > label { grid-column: 1 / -1; width: min(100%, 240px); }
.realm-policy-card label { display: grid; min-width: 0; align-content: start; gap: 8px; color: var(--text-muted); font-size: 0.875rem; }
.realm-policy-card input:not([type="checkbox"]) { box-sizing: border-box; width: 100%; min-width: 0; height: 40px; padding: 0 10px; border: 1px solid var(--dashboard-border); border-radius: 7px; font-size: 1rem; }
.realm-policy-card input:not([type="checkbox"]):focus-visible { outline: 2px solid #93c5fd; outline-offset: 2px; }
.realm-policy-rewards, .realm-policy-rank { display: grid; min-width: 0; align-content: start; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.realm-policy-rewards { grid-column: 1; grid-template-columns: repeat(auto-fit, minmax(min(100%, 132px), 1fr)); }
.realm-policy-rank { grid-column: 2; grid-template-columns: repeat(auto-fit, minmax(min(100%, 106px), 1fr)); }
/* Checkbox giữ đúng 22px theo contract chung; phần còn lại thuộc ô nhập số,
   không dùng cột auto theo intrinsic width của input rồi co cả field lại. */
.realm-policy-rewards label { grid-template-columns: 22px minmax(0, 1fr); align-items: center; }
.realm-policy-rewards label span { grid-column: 1 / -1; }
.realm-policy-card .realm-policy-rank input[type="checkbox"] { align-self: center; margin-block: 9px; }
@media (max-width: 960px) {
  .realm-policy-card { grid-template-columns: minmax(0, 1fr); }
  .realm-policy-rewards, .realm-policy-rank { grid-column: 1; }
  .realm-settlement-manager > .manager-editor-heading { flex-wrap: wrap; }
}
/* Realm catalog dùng cùng bảng JSON, chỉ đổi phần bố cục trong workspace này.
   Header/footer đứng yên; table viewport sở hữu cả scroll ngang lẫn dọc. */
.realm-catalog-manager { display: grid; grid-template-rows: auto auto minmax(0, 1fr); gap: 12px; width: 100%; height: 100%; min-width: 0; min-height: 0; }
.realm-catalog-manager, .realm-catalog-manager *, .realm-catalog-dialog, .realm-catalog-dialog * { font-family: Inter, sans-serif; font-weight: 400; }
.realm-catalog-manager strong, .realm-catalog-manager th, .realm-catalog-manager button, .realm-catalog-dialog strong, .realm-catalog-dialog button { font-weight: 700; }
.realm-catalog-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding: 16px; border: 1px solid var(--dashboard-border); border-radius: 10px; background: var(--dashboard-surface); }
.realm-catalog-heading > div { display: grid; gap: 5px; }
.realm-catalog-heading strong { font-size: 1.375rem; }
.realm-catalog-heading small, .realm-catalog-help { color: var(--muted); font-size: 0.875rem; }
.realm-catalog-heading small { overflow-wrap: anywhere; }
.realm-catalog-status { color: var(--admin-primary-strong); font-size: 0.875rem; }
.realm-catalog-help { margin: 0; line-height: 1.6; }
.realm-catalog-table { grid-template-rows: auto minmax(0, 1fr) auto; }
.realm-catalog-table .table-editor-toolbar { grid-template-columns: minmax(160px, 1fr) auto auto; }
.realm-catalog-table .table-collection-field, .realm-catalog-table .table-structure-pill { display: none; }
.realm-catalog-table .data-table th { min-width: 105px; }
.realm-catalog-table .data-table th:first-child { min-width: 48px; }
.realm-catalog-table .data-table th[title="name"], .realm-catalog-table .data-table th[title="msg"] { min-width: 220px; }
.realm-catalog-table .table-editor-footer { display: flex; flex-wrap: wrap; justify-content: space-between; min-height: 44px; }
.realm-catalog-table .table-column-notice:empty { display: none; }
.realm-catalog-dialog { min-height: 0; max-height: 100%; overflow: auto; }
@media (max-height: 680px) {
  .realm-catalog-manager { gap: 8px; }
  .realm-catalog-heading { padding: 8px 12px; }
  .realm-catalog-heading .manager-section-label { display: none; }
  .realm-catalog-heading strong { font-size: 1.125rem; }
}
@media (max-width: 640px) {
  .realm-catalog-table .table-editor-toolbar { grid-template-columns: minmax(0, 1fr) auto; }
  .realm-catalog-table .table-search-field { grid-column: 1 / -1; }
  .realm-catalog-heading { padding: 10px; }
}
.daily-checkin-admin {
  display: grid;
  align-content: start;
  gap: 20px;
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  padding: 2px 5px 20px 2px;
  overflow: auto;
  color: var(--text);
}
.daily-checkin-admin-header {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 28px;
  padding: 20px 22px;
  border: 1px solid var(--dashboard-border);
  border-radius: 12px;
  background: var(--dashboard-surface);
}
.daily-checkin-admin-heading { display: grid; gap: 5px; min-width: 0; }
.daily-checkin-admin-heading strong { color: var(--text); font-size: 1.5rem; font-weight: 700; }
.daily-checkin-admin-heading small { max-width: 760px; color: var(--muted); line-height: 1.5; }
.daily-checkin-makeup { flex: 0 0 260px; width: 260px; }
.daily-checkin-makeup .input-group-text { border-color: var(--dashboard-border); border-radius: 7px 0 0 7px; color: var(--admin-primary-strong); background: var(--admin-hover); }
.daily-checkin-makeup .form-control { border-radius: 0 7px 7px 0; }
.daily-checkin-admin-sections { display: grid; gap: 20px; min-width: 0; }
.daily-checkin-admin-panel {
  min-width: 0;
  padding: 0;
  border: 1px solid var(--dashboard-border);
  border-radius: 12px;
  background: var(--dashboard-surface);
  overflow: hidden;
}
.daily-checkin-admin-panel > header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  min-height: 76px;
  padding: 16px 20px;
  border-bottom: 1px solid var(--dashboard-border);
  background: var(--dashboard-surface-raised);
}
.daily-checkin-admin-panel > header > div { display: grid; gap: 3px; }
.daily-checkin-admin-panel h3 { margin: 0; color: var(--text); font-size: 1.1875rem; font-weight: 700; }
.daily-checkin-admin-panel p { margin: 0; color: var(--muted); font-size: 0.8125rem; }
.daily-checkin-admin-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 600px), 1fr));
  gap: 12px;
  padding: 16px;
}
.daily-checkin-admin-grid.is-goals { grid-template-columns: repeat(auto-fit, minmax(min(100%, 600px), 1fr)); }
.daily-checkin-admin-row {
  display: grid;
  grid-template-columns: 76px 132px minmax(200px, 1fr) 112px;
  align-items: start;
  gap: 14px;
  min-width: 0;
  min-height: 104px;
  padding: 14px;
  border: 1px solid var(--dashboard-border);
  border-radius: 10px;
  background: var(--dashboard-surface);
}
.daily-checkin-reward-identity {
  display: grid;
  align-content: center;
  align-self: stretch;
  gap: 4px;
  padding-right: 12px;
  border-right: 1px solid var(--dashboard-border);
}
.daily-checkin-reward-identity span { color: var(--admin-primary-strong); font-size: 0.8125rem; font-weight: 700; letter-spacing: .1em; }
.daily-checkin-reward-identity strong { color: var(--text); font-size: 1.25rem; font-weight: 700; }
.daily-checkin-admin-row .field { min-width: 0; }
.daily-checkin-admin-row input, .daily-checkin-admin-row select { width: 100%; min-width: 0; }
.daily-checkin-item-field .input-group { flex-wrap: nowrap; }
.daily-checkin-item-field .input-group > .form-control { width: 110px; min-width: 84px; border-radius: 7px 0 0 7px; }
.daily-checkin-item-field .btn { flex: 0 0 auto; min-height: 38px; border-radius: 0 7px 7px 0; white-space: nowrap; }
.daily-checkin-item-summary {
  display: block;
  min-width: 0;
  overflow: hidden;
  color: var(--muted);
  font-size: 0.8125rem;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.daily-checkin-quantity-field { grid-column: 4; }

@media (max-width: 820px) {
  .daily-checkin-admin-header { align-items: stretch; flex-direction: column; gap: 16px; }
  .daily-checkin-makeup { flex-basis: auto; width: min(100%, 320px); }
  .daily-checkin-admin-row { grid-template-columns: 72px minmax(220px, 1fr) 112px; }
  .daily-checkin-reward-identity { grid-row: 1 / span 2; }
  .daily-checkin-kind-field { grid-column: 2; }
  .daily-checkin-item-field { grid-column: 2 / -1; }
  .daily-checkin-quantity-field { grid-column: 3; }
}

@media (max-width: 560px) {
  .daily-checkin-admin-panel > header { align-items: flex-start; }
  .daily-checkin-admin-grid { padding: 10px; }
  .daily-checkin-admin-row { grid-template-columns: 1fr; }
  .daily-checkin-reward-identity,
  .daily-checkin-kind-field,
  .daily-checkin-item-field,
  .daily-checkin-quantity-field { grid-column: auto; grid-row: auto; }
  .daily-checkin-reward-identity { align-self: auto; padding: 0 0 10px; border-right: 0; border-bottom: 1px solid var(--dashboard-border); }
}

/* Shell Admin dùng token sáng chung; Bootstrap chỉ cung cấp layout/control CSS. */


html, body { background: var(--dashboard-canvas); }
body {
  color: var(--text);
  background: var(--dashboard-canvas);
  font-size: 1rem;
}

.app-shell {
  display: grid;
  grid-template-columns: 17.5rem minmax(0, 1fr);
  grid-template-rows: 1fr;
  height: 100%;
  background: var(--dashboard-canvas);
}

.sidebar {
  position: relative;
  z-index: 30;
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 8px;
  min-height: 0;
  padding: 1.5rem 1rem;
  border-right: 1px solid var(--dashboard-border);
  background: var(--dashboard-surface);
  box-shadow: none;
}

.sidebar-brand {
  min-height: 52px;
  margin-bottom: 22px;
  padding: 0 8px;
}

.brand-mark {
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 10px;
  color: var(--admin-on-accent);
  background: var(--admin-primary);
  box-shadow: none;
  font-size: 1rem;
  font-weight: 700;
}

.brand strong { color: var(--text); font-size: 1.125rem; font-weight: 700; }
.brand small { display: block; color: var(--muted); font-size: 0.8125rem; }
.sidebar-label {
  display: block;
  padding: 0 10px;
  color: var(--muted);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.tab-list {
  display: flex;
  align-items: stretch;
  gap: 4px;
  padding: 6px 0 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.tab-button.nav-link {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: center;
  width: 100%;
  min-width: 0;
  min-height: 2.875rem;
  height: auto;
  padding: 0 10px;
  border: 0;
  border-radius: 8px;
  color: var(--muted);
  background: transparent;
  font-size: .9375rem;
  font-weight: 700;
  text-align: left;
}

.tab-button.nav-link:hover,
.tab-button.nav-link:focus-visible { color: var(--text); background: var(--admin-hover); }
.tab-button.nav-link.active {
  color: var(--admin-on-accent);
  background: var(--admin-primary);
  box-shadow: none;
}

.sidebar-context {
  display: grid;
  gap: 6px;
  margin-top: auto;
  padding: 14px;
  border: 1px solid var(--dashboard-border) !important;
  border-radius: 10px;
  background: var(--dashboard-surface);
}
.sidebar-context .sidebar-label { padding: 0; }
.sidebar-context strong { color: var(--text); font-size: 0.875rem; }
.sidebar-context small { color: var(--muted); font-size: 0.8125rem; line-height: 1.5; }

.main-shell { display: grid; grid-template-rows: 4.5rem minmax(0, 1fr); min-width: 0; min-height: 0; }
.topbar {
  display: flex;
  grid-template-columns: none;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  min-height: 4.5rem;
  padding: 0 24px;
  border-bottom: 1px solid var(--dashboard-border);
  background: var(--dashboard-surface);
  box-shadow: none;
}
.topbar-heading { display: grid; gap: 2px; margin-right: auto; }
.topbar-heading strong { color: var(--text); font-size: 1.0625rem; font-weight: 700; }
.sidebar-toggle { display: none; width: 38px; height: 38px; padding: 0; }
.connection-pill { gap: 10px; color: var(--text); font-size: 0.875rem; font-weight: 700; }
.status-dot { width: 8px; height: 8px; background: var(--success); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.connection-logout { height: 32px; border-color: var(--dashboard-border); border-radius: 7px; color: var(--text); background: transparent; box-shadow: none; }

.workspace { min-height: 0; padding: 1.5rem 2rem; background: var(--dashboard-canvas); }
.manager-panel, .functions-panel, .audit-panel { gap: 18px; }
.section-heading { min-height: 58px; align-items: center; }
.section-heading h1 {
  margin: 3px 0 5px;
  color: var(--text);
  font-size: clamp(24px, 2vw, 32px);
  font-weight: 700;
  line-height: 1.15;
  text-shadow: none;
}
.section-heading p { color: var(--muted); font-size: 0.9375rem; }
.eyebrow, .panel-kicker, .manager-section-label {
  color: var(--admin-primary-strong);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: .11em;
}

.primary-button, .secondary-button, .danger-button, .modal-close,
.btn.primary-button, .btn.secondary-button, .btn.danger-button {
  min-height: var(--control-height);
  height: var(--control-height);
  padding: 0 14px;
  border-radius: var(--radius);
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1;
  box-shadow: none;
  transform: none;
}
.primary-button, .btn.primary-button { border: 1px solid var(--admin-primary); color: var(--admin-on-accent); background: var(--admin-primary); }
.secondary-button, .btn.secondary-button { border: 1px solid var(--dashboard-border); color: var(--text); background: var(--admin-hover); }
.danger-button, .btn.danger-button { border: 1px solid var(--danger); color: var(--danger); background: var(--admin-danger-soft); }
button:hover:not(:disabled), button:focus-visible:not(:disabled) { filter: none; }
.primary-button:hover:not(:disabled), .primary-button:focus-visible:not(:disabled) { border-color: var(--dashboard-border); color: var(--admin-on-accent); background: var(--admin-primary); }
.secondary-button:hover:not(:disabled), .secondary-button:focus-visible:not(:disabled) { border-color: var(--dashboard-border); color: var(--text); background: var(--admin-hover); }
.danger-button:hover:not(:disabled), .danger-button:focus-visible:not(:disabled) { border-color: var(--danger); color: var(--admin-on-accent); background: var(--danger-dark); }
button:focus-visible:not(:disabled) { outline: 3px solid #3b82f640; outline-offset: 2px; box-shadow: none; }
button:active:not(:disabled) { transform: none; }
button:disabled { cursor: not-allowed; opacity: .48; }

.summary-grid { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 14px; }
.summary-card {
  display: flex;
  min-height: 86px;
  flex-direction: row;
  align-items: center;
  gap: 13px;
  padding: 16px;
  border: 1px solid var(--dashboard-border);
  border-radius: 12px;
  background: var(--dashboard-surface);
  box-shadow: none;
}
.summary-card > span:last-child { display: grid; gap: 3px; }
.summary-icon {
  display: grid;
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  place-items: center;
  border-radius: 9px;
  color: var(--admin-primary-strong);
  background: var(--admin-primary-soft);
  font-size: 0.8125rem;
  font-weight: 700;
}
.summary-card small { color: var(--muted); font-size: 0.8125rem; font-weight: 700; letter-spacing: 0; text-transform: none; }
.summary-card strong { color: var(--text); font-size: 1.5rem; font-weight: 700; }

.manager-grid { grid-template-columns: 320px minmax(0, 1fr); gap: 16px; }
.panel, .card.panel {
  border: 1px solid var(--dashboard-border);
  border-radius: var(--panel-radius);
  background: var(--dashboard-surface);
  box-shadow: none;
}
.panel-header {
  min-height: 66px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--dashboard-border);
  background: transparent;
}
.panel-header h2 { color: var(--text); font-size: 1.125rem; font-weight: 700; }
.panel-badge, .function-contracts span {
  border: 1px solid var(--dashboard-border);
  border-radius: 999px;
  color: var(--muted);
  background: var(--dashboard-surface-raised);
  font-size: 0.8125rem;
  font-weight: 700;
}
.explorer-filters { gap: 11px; padding: 14px; border-bottom-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.field { gap: 6px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; }
.field input, .field select, .field textarea,
.form-control, .form-select {
  border: 1px solid var(--dashboard-border);
  border-radius: 8px;
  color: var(--text);
  background-color: var(--dashboard-surface);
  box-shadow: none;
}
.field input:focus, .field select:focus, .field textarea:focus,
.form-control:focus, .form-select:focus {
  border-color: var(--admin-primary);
  color: var(--text);
  background-color: var(--dashboard-surface);
  box-shadow: 0 0 0 3px rgb(36 91 216 / 15%);
}
.file-list { padding: 8px; }
.file-item {
  min-height: 58px;
  margin-bottom: 3px;
  padding: 9px 10px;
  border: 1px solid transparent;
  border-radius: 8px;
  color: var(--text);
  background: transparent;
}
.file-item:hover { border-color: var(--dashboard-border); background: var(--admin-hover); }
.file-item.selected { border-color: var(--dashboard-border); background: var(--admin-primary-soft); box-shadow: inset 3px 0 var(--admin-primary); }
.file-icon { border: 0; border-radius: 7px; color: var(--admin-primary-strong); background: var(--admin-primary-soft); box-shadow: none; font-size: 0.8125rem; }
.file-copy strong { color: var(--text); font-size: 0.875rem; }
.file-copy small, .file-size { color: var(--muted); font-size: 0.8125rem; }

.editor-header { min-height: 96px; padding: 16px; border-bottom-color: var(--dashboard-border); background: transparent; }
.editor-identity h2 { color: var(--text); font-size: 1.3125rem; font-weight: 700; }
.editor-identity p { color: var(--muted); }
.editor-view-switch { padding: 3px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.editor-view-switch button { min-height: 30px; border-radius: 6px; color: var(--muted); font-size: 0.8125rem; }
.editor-view-switch button.active { color: var(--admin-on-accent); background: var(--admin-primary); box-shadow: none; }
.editor-empty { color: var(--muted); }
.editor-empty strong { color: var(--text); }
.editor-empty p { color: var(--muted); }
.empty-orb { border: 1px solid var(--dashboard-border); color: var(--admin-primary-strong); background: var(--admin-hover); box-shadow: none; }
.editor-view-stack { background: var(--dashboard-surface); }
#json-editor { color: var(--admin-primary-strong); background: var(--dashboard-surface); caret-color: #60a5fa; }
.editor-statusbar { border-top-color: var(--dashboard-border); color: var(--muted); background: var(--dashboard-surface-raised); }
.validity-pill { border-color: var(--success); color: var(--success); background: var(--admin-success-soft); }
.validity-pill.invalid { border-color: var(--danger); color: var(--danger); background: var(--admin-danger-soft); }
.dirty-state.dirty { color: var(--admin-warning); }

.function-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); gap: 1.25rem; }
.function-card {
  grid-template-columns: 52px minmax(0, 1fr);
  grid-template-rows: minmax(min-content, 1fr) auto;
  align-items: start;
  min-height: 16rem;
  gap: 1rem;
  padding: 1.5rem;
}
.function-icon {
  width: 48px;
  height: 48px;
  border: 0;
  border-radius: 10px;
  color: var(--admin-primary-strong);
  background: var(--admin-primary-soft);
  box-shadow: none;
  font-size: 0.8125rem;
  font-weight: 700;
}
.function-copy { gap: 7px; }
.function-copy h2 { color: var(--text); font-size: 1.25rem; font-weight: 700; }
.function-copy p { color: var(--muted); font-size: 0.875rem; line-height: 1.55; }
.function-card > .primary-button { grid-column: 1 / -1; width: 100%; min-width: 0; }

.audit-card { overflow: hidden; }
.audit-table-header, .audit-row { grid-template-columns: 170px 150px 120px 100px minmax(220px, 1fr) 120px; }
.audit-table-header { color: var(--muted); background: var(--dashboard-surface-raised); }
.audit-row { border-bottom-color: var(--dashboard-border); color: var(--text); }
.audit-row:hover { background: var(--admin-hover); }
.audit-action { color: var(--admin-primary-strong); }

.modal-root {
  z-index: 1050;
  isolation: isolate;
  padding: 16px;
}
#secondary-modal-root { z-index: 1060; }
#secondary-child-modal-root { z-index: 1070; }
.modal-root > .modal-backdrop {
  z-index: 0;
  background: rgb(25 42 65 / 38%);
  backdrop-filter: blur(4px);
}
.modal-card {
  z-index: 1;
  border: 1px solid var(--dashboard-border);
  border-radius: 12px;
  background: var(--dashboard-surface);
  box-shadow: none;
}
.modal-header { min-height: 64px; padding: 14px 18px; border-bottom-color: var(--dashboard-border); background: var(--dashboard-surface); }
.modal-header h2 { color: var(--text); font-size: 1.25rem; font-weight: 700; }
.modal-close { width: 36px; height: 36px; padding: 0; border: 1px solid var(--dashboard-border); color: var(--muted); background: var(--admin-hover); box-shadow: none; }
.modal-body { background: var(--dashboard-surface); }
.modal-footer { min-height: 64px; border-top-color: var(--dashboard-border); background: var(--dashboard-surface); }
/* Modal sửa một ô co theo nội dung; không đổi geometry của workspace/bảng. */
.modal-root[data-size="table-cell"] { padding: 12px; }
.modal-root[data-size="table-cell"] .modal-card { width: min(520px, calc(100vw - 24px)); height: auto; max-height: calc(100dvh - 24px); font-family: Inter, sans-serif; font-weight: 400; }
.modal-root[data-size="table-cell"] .modal-card * { font-family: Inter, sans-serif; font-weight: 400; }
.modal-root[data-size="table-cell"] .modal-header { min-height: 60px; padding: 12px 16px; }
.modal-root[data-size="table-cell"] .modal-header > div { min-width: 0; }
.modal-root[data-size="table-cell"] .modal-header h2 { margin: 0; font-size: 1.25rem; font-weight: 700; overflow-wrap: anywhere; }
.modal-root[data-size="table-cell"] .panel-kicker { display: none; }
.modal-root[data-size="table-cell"] .modal-body { padding: 18px 16px; }
.modal-root[data-size="table-cell"] .modal-footer { min-height: 60px; padding: 10px 16px; gap: 8px; }
.modal-root[data-size="table-cell"] .modal-footer button { height: 38px; min-height: 38px; padding: 0 14px; font-weight: 700; }
.table-cell-form { margin: 0; }
.table-date-time-editor { min-width: 0; font-family: Inter, sans-serif; font-weight: 400; }
.table-date-time-editor > span { font-weight: 700; }
.table-date-time-editor input { width: 100%; min-width: 0; font-family: Inter, sans-serif; font-weight: 400; }
.table-date-time-editor small { font-weight: 400; line-height: 1.5; }
.table-cell-form .typed-value-editor { grid-template-columns: 112px minmax(0, 1fr); gap: 12px; }
.table-cell-form .typed-value-type, .table-cell-form .typed-value-field { display: grid; min-width: 0; gap: 6px; color: var(--muted); font-size: 0.875rem; }
.table-cell-form .typed-value-type span { text-transform: none; letter-spacing: normal; }
.table-cell-form .typed-value-control { min-width: 0; }
.table-cell-form input, .table-cell-form select { height: 40px; padding-inline: 10px; font-size: 1rem; }
.table-cell-form .typed-value-control textarea { height: clamp(120px, 30vh, 240px); min-height: 80px; max-height: 45vh; font: 400 1rem/1.5 Inter, sans-serif; }
@media (max-width: 440px) {
  .table-cell-form .typed-value-editor { grid-template-columns: minmax(0, 1fr); }
  .table-cell-form .typed-value-type { grid-template-columns: 64px minmax(0, 1fr); align-items: center; }
}
.modal-message, .game-mail-attachments, .mail-item-stat-section,
.backup-item, .mail-item-editor-summary { border-color: var(--dashboard-border); background: var(--admin-hover); }
.success-message { border-color: var(--success); background: var(--admin-success-soft); }
.error-message { border-color: var(--danger); background: var(--admin-danger-soft); }

.table-editor-toolbar, .table-editor-footer { border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.table-editor-viewport { border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.data-table th { color: var(--muted); background: var(--dashboard-surface-raised); }
.data-table td { border-color: var(--dashboard-border); color: var(--text); background: var(--dashboard-surface); }
.data-table tr:nth-child(even) td { background: var(--dashboard-surface-raised); }
.data-table tbody tr:hover td { background: var(--admin-hover); }
.table-cell-button, .table-page-button { border-color: var(--dashboard-border); color: var(--text); background: var(--dashboard-surface); }

.drop-catalog-manager > aside, .drop-catalog-manager > main,
.pve-chapter-manager > aside, .pve-chapter-manager > main,
.task-manager > aside, .task-manager > main,
.realm-policy-card {
  border-color: var(--dashboard-border);
  border-radius: 10px;
  background: var(--dashboard-surface);
}
.realm-settlement-manager > .manager-editor-heading {
  min-height: 78px;
  padding: 14px 16px;
  border: 1px solid var(--dashboard-border);
  border-radius: 10px;
  background: var(--dashboard-surface-raised);
}
.realm-settlement-manager > .manager-editor-heading > div { gap: 6px; }
.realm-settlement-manager > .manager-editor-heading small { line-height: 1.45; }
.realm-settlement-manager > .manager-editor-heading > button {
  flex: 0 0 auto;
  min-height: 36px;
  padding: 0 13px;
  border: 1px solid var(--dashboard-border);
  border-radius: 8px;
  color: var(--admin-on-accent);
  background: var(--admin-primary);
}
.drop-catalog-manager > aside > header, .drop-items-heading,
.pve-chapter-manager > aside > header, .pve-difficulties > header,
.task-manager > aside > header, .manager-editor-heading {
  border-color: var(--dashboard-border);
  background: var(--dashboard-surface-raised);
}
.drop-catalog-manager input, .drop-catalog-manager select,
.pve-chapter-manager input, .pve-chapter-manager select,
.task-manager input, .task-manager select,
.daily-checkin-admin input, .daily-checkin-admin select,
.realm-settlement-manager input, .realm-settlement-manager select,
.remote-search-select-trigger, .remote-search-select-search,
.typed-value-type select, .typed-value-control input, .typed-value-control select,
.typed-value-control textarea, .table-custom-column-name {
  border-color: var(--dashboard-border);
  border-radius: 7px;
  color: var(--text);
  background: var(--dashboard-surface);
  box-shadow: none;
}
.drop-pool-card, .pve-chapter-card, .task-manager-card,
.remote-search-select-option, .mail-item-picker-row {
  border-color: transparent;
  border-radius: 8px;
  color: var(--text);
  background: transparent;
}
.drop-pool-card:hover, .pve-chapter-card:hover, .task-manager-card:hover,
.remote-search-select-option:hover, .mail-item-picker-row:hover:not(:disabled) { background: var(--admin-hover); }
.drop-pool-card.selected, .pve-chapter-card.selected, .task-manager-card.selected,
.remote-search-select-option[aria-selected="true"], .mail-item-picker-row.selected {
  border-color: var(--dashboard-border);
  color: var(--text);
  background: var(--admin-primary-soft);
  box-shadow: inset 3px 0 var(--admin-primary);
}
.manager-status-pill { border-color: var(--success); color: var(--success); background: var(--admin-success-soft); }
.manager-status-pill.disabled { border-color: var(--danger); color: var(--danger); background: var(--admin-danger-soft); }
.manager-danger-zone { border-color: var(--danger); background: var(--admin-danger-soft); }
.task-manager-tabs { border-bottom-color: var(--dashboard-border); }
.task-manager-tabs button { border-radius: 7px 7px 0 0; color: var(--muted); background: transparent; }
.task-manager-tabs button.active { border-color: var(--admin-primary); color: var(--admin-primary-strong); background: var(--admin-primary-soft); }
.task-relation-header, .mail-item-picker-columns { color: var(--muted); background: var(--dashboard-surface-raised); }
.task-relation-row, .mail-item-picker-row { border-color: var(--dashboard-border); }
.drop-item-table, .task-condition-table, .task-reward-table,
.pve-difficulties, .remote-search-select-dropdown { border-color: var(--dashboard-border); background: var(--dashboard-surface); }

.scroll-surface { scrollbar-color: #a0b3cc var(--dashboard-surface-raised); }

/* PVE Chapter Manager uses the Bootstrap card/form/list-group contract. */
.pve-chapter-manager {
  display: grid;
  grid-template-columns: 330px minmax(0, 1fr);
  width: 100%;
  height: 100%;
  min-height: 0;
  gap: 16px;
  color: var(--text);
}
.pve-chapter-manager .manager-section-label,
.pve-chapter-manager .manager-status-pill { font-weight: 700; }
.pve-chapter-manager > .card,
.pve-chapter-manager .pve-chapter-overview,
.pve-chapter-manager .pve-chapter-metadata,
.pve-chapter-manager .pve-difficulties,
.pve-chapter-manager .pve-difficulty-row,
.pve-chapter-manager .pve-chapter-empty {
  border: 1px solid var(--dashboard-border);
  border-radius: 10px;
  color: var(--text);
  background: var(--dashboard-surface);
  box-shadow: none;
}
.pve-chapter-sidebar {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
  padding: 0;
  overflow: hidden;
}
.pve-chapter-sidebar-heading {
  display: flex;
  min-height: 76px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--dashboard-border);
  background: var(--dashboard-surface-raised);
}
.pve-chapter-sidebar-heading > div { display: grid; min-width: 0; gap: 5px; }
.pve-sidebar-title { display: flex; align-items: center; gap: 8px; }
.pve-sidebar-title strong { color: var(--text); font-size: 1.125rem; font-weight: 700; }
.pve-sidebar-title .badge { min-width: 24px; color: var(--admin-primary-strong); background: var(--admin-primary-soft); font-size: 0.8125rem; font-weight: 700; }
.pve-chapter-search { padding: 12px 14px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.pve-chapter-search .form-label,
.pve-chapter-field .form-label { margin: 0 0 6px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; }
.pve-chapter-manager .form-control,
.pve-chapter-manager .form-select {
  width: 100%;
  min-width: 0;
  min-height: 40px;
  border: 1px solid var(--dashboard-border);
  border-radius: 7px;
  color: var(--text);
  background-color: var(--dashboard-surface);
  box-shadow: none;
}
.pve-chapter-manager .form-control:focus,
.pve-chapter-manager .form-select:focus { border-color: var(--admin-primary); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.pve-chapter-manager .form-control:disabled,
.pve-chapter-manager .form-select:disabled { color: var(--muted); background: var(--dashboard-surface-raised); opacity: .78; }
.pve-chapter-list {
  display: block;
  min-height: 0;
  padding: 6px 0;
  overflow: auto;
  background: var(--dashboard-surface);
  overscroll-behavior: contain;
}
.pve-chapter-manager .pve-chapter-list button.pve-chapter-card:not(.danger-button) {
  display: grid;
  width: 100%;
  min-height: 88px;
  gap: 7px;
  margin: 0;
  padding: 11px 14px !important;
  border: 0;
  border-bottom: 1px solid var(--dashboard-border);
  border-radius: 0;
  color: var(--text);
  text-align: left;
  background: transparent;
  box-shadow: none;
}
.pve-chapter-manager .pve-chapter-list button.pve-chapter-card:hover:not(:disabled) { color: var(--text); background: var(--admin-hover); }
.pve-chapter-manager .pve-chapter-list button.pve-chapter-card.active,
.pve-chapter-manager .pve-chapter-list button.pve-chapter-card.selected {
  border-color: var(--dashboard-border);
  color: var(--text);
  background: var(--admin-primary-soft);
  box-shadow: inset 3px 0 var(--admin-primary);
}
.pve-chapter-card-heading { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; align-items: center; gap: 8px; min-width: 0; }
.pve-chapter-card-heading strong { overflow: hidden; color: var(--text); font-size: 0.875rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.pve-chapter-order { display: grid; width: 26px; height: 26px; place-items: center; border-radius: 7px; color: var(--admin-primary-strong) !important; background: var(--admin-primary-soft); font-size: 0.8125rem !important; font-weight: 700; }
.pve-chapter-state { padding: 3px 6px; border: 1px solid var(--dashboard-border); border-radius: 999px; color: var(--muted) !important; background: var(--dashboard-surface); font-size: 0.8125rem !important; font-weight: 700; }
.pve-chapter-state.open { border-color: var(--success); color: var(--success) !important; background: var(--admin-success-soft); }
.pve-chapter-card-meta { display: flex; min-width: 0; gap: 10px; padding-left: 34px; color: var(--muted) !important; font-size: 0.8125rem !important; }
.pve-chapter-card-meta > span { color: var(--muted) !important; font-size: 0.8125rem !important; }
.pve-chapter-card > small { padding-left: 34px; color: var(--muted) !important; font-size: 0.8125rem !important; }
.pve-chapter-list-empty { display: grid; min-height: 180px; place-items: center; padding: 20px; color: var(--muted); text-align: center; font-size: 0.8125rem; }
.pve-chapter-workspace {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-width: 0;
  min-height: 0;
  gap: 12px;
  padding: 0 !important;
  border: 0 !important;
  overflow: hidden !important;
  background: transparent !important;
}
.pve-chapter-alerts { display: grid; gap: 8px; }
.pve-chapter-alerts .alert { margin: 0; padding: 10px 12px; border-radius: 8px; font-size: 0.8125rem; line-height: 1.45; }
.pve-chapter-alerts .alert-warning { border-color: var(--dashboard-border); color: var(--admin-warning); background: var(--admin-warning-soft); }
.pve-chapter-alerts .alert-secondary { border-color: var(--dashboard-border); color: var(--text); background: var(--admin-hover); }
.pve-chapter-empty { display: grid; min-height: 100%; place-items: center; text-align: center; }
.pve-chapter-empty .card-body { display: grid; justify-items: center; gap: 9px; color: var(--muted); }
.pve-chapter-empty strong { color: var(--text); font-size: 1.1875rem; font-weight: 700; }
.pve-chapter-empty span:last-child { font-size: 0.8125rem; }
.pve-empty-icon { display: grid; width: 58px; height: 58px; place-items: center; border: 1px solid var(--dashboard-border); border-radius: 12px; color: var(--admin-primary-strong); background: var(--admin-primary-soft); font-size: 0.8125rem; font-weight: 700; }
.pve-chapter-manager form {
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr);
  min-height: 0;
  height: 100%;
  gap: 12px;
}
.pve-chapter-overview { overflow: hidden; }
.pve-chapter-overview .manager-editor-heading { min-height: 82px; padding: 14px 16px; border: 0; background: var(--dashboard-surface-raised); }
.pve-chapter-overview .manager-editor-heading strong { color: var(--text); font-size: 1.25rem; font-weight: 700; }
.pve-chapter-overview .manager-editor-heading small { color: var(--muted); line-height: 1.4; }
.pve-chapter-manager .manager-status-pill { border-radius: 999px; font-size: 0.8125rem; }
.pve-chapter-metadata,
.pve-difficulties { min-height: 0; overflow: hidden; }
.pve-section-heading {
  display: flex;
  min-height: 64px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 11px 14px;
  border-bottom: 1px solid var(--dashboard-border);
  background: var(--dashboard-surface-raised);
}
.pve-section-heading > div { display: grid; gap: 3px; }
.pve-section-heading strong { color: var(--text); font-size: 0.9375rem; font-weight: 700; }
.pve-section-heading small { color: var(--muted); font-size: 0.8125rem; }
.pve-chapter-fields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; padding: 14px; background: var(--dashboard-surface); }
.pve-chapter-field { display: grid; min-width: 0; align-content: end; }
.pve-chapter-open {
  display: grid !important;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 64px;
  margin: 0;
  padding: 10px 12px;
  border: 1px solid var(--dashboard-border);
  border-radius: 8px;
  background: var(--dashboard-surface);
}
.pve-chapter-open > span { display: grid; min-width: 0; gap: 2px; }
.pve-chapter-open strong { color: var(--text); font-size: 0.8125rem; font-weight: 700; }
.pve-chapter-open small { color: var(--muted); font-size: 0.8125rem; }
.pve-difficulties { display: grid; grid-template-rows: auto minmax(0, 1fr); height: auto; padding: 0; }
.pve-difficulty-list { display: flex; min-height: 0; flex-direction: column; align-items: stretch; gap: 14px; padding: 14px; overflow-x: hidden; overflow-y: auto; background: var(--dashboard-surface); overscroll-behavior: contain; scrollbar-gutter: stable; }
.pve-difficulty-row { display: grid; flex: 0 0 auto; min-height: 178px; padding: 0; overflow: hidden; }
.pve-difficulty-row > .card-header { display: flex; min-height: 52px; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 12px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.pve-difficulty-title { display: flex; align-items: center; gap: 9px; color: var(--muted); font-size: 0.8125rem; font-weight: 700; }
.pve-difficulty-title .form-control { width: 76px; min-height: 34px; height: 34px; padding: 0 8px; }
.pve-difficulty-content { display: grid; grid-template-rows: auto auto auto; gap: 10px; min-height: 124px; padding: 12px; background: var(--dashboard-surface-raised); }
.pve-mission-chain-heading { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.pve-mission-chain-heading strong { color: var(--text); font-size: 0.8125rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.pve-mission-chain-heading span { color: var(--muted); font-size: 0.8125rem; }
.pve-mission-chain { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); min-height: 44px; gap: 8px; }
.pve-mission-chip { display: grid; grid-template-columns: 26px minmax(0, 1fr) 28px; align-items: center; gap: 8px; min-width: 0; min-height: 52px; padding: 6px; border: 1px solid var(--dashboard-border); border-radius: 8px; color: var(--text); background: var(--dashboard-surface); }
.pve-mission-chip.missing { border-color: var(--dashboard-border); background: var(--admin-warning-soft); }
.pve-mission-order { display: grid; width: 26px; height: 26px; place-items: center; border-radius: 7px; color: var(--admin-primary-strong); background: var(--admin-primary-soft); font-size: 0.8125rem; font-weight: 700; }
.pve-mission-copy { display: grid; min-width: 0; gap: 2px; }
.pve-mission-copy strong,
.pve-mission-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pve-mission-copy strong { color: var(--text); font-size: 0.8125rem; font-weight: 700; }
.pve-mission-copy small { color: var(--muted); font-size: 0.8125rem; }
.pve-chapter-manager button.pve-mission-remove:not(.danger-button) { display: grid; width: 28px; min-height: 28px; place-items: center; padding: 0; border: 1px solid transparent; border-radius: 7px; color: var(--muted); background: transparent; box-shadow: none; }
.pve-chapter-manager button.pve-mission-remove:hover:not(:disabled) { border-color: var(--danger); color: var(--danger); background: var(--admin-danger-soft); }
.pve-mission-empty { display: grid; grid-column: 1 / -1; min-height: 54px; place-items: center; border: 1px dashed var(--dashboard-border); border-radius: 8px; color: var(--muted); font-size: 0.8125rem; }
.pve-mission-picker { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.pve-chapter-manager button.btn-primary:not(.danger-button) { min-height: 36px; padding: 0 12px; border: 1px solid var(--admin-primary); border-radius: 7px; color: var(--admin-on-accent); background: var(--admin-primary); box-shadow: none; font-size: 0.8125rem; font-weight: 700; }
.pve-chapter-manager button.btn-primary:hover:not(:disabled) { border-color: var(--admin-primary); background: var(--admin-primary); }
.pve-chapter-manager button.btn-outline-danger:not(.danger-button) { min-height: 34px; padding: 0 10px; border: 1px solid var(--danger); border-radius: 7px; color: var(--danger); background: transparent; box-shadow: none; font-size: 0.8125rem; font-weight: 700; }
.pve-chapter-manager button.btn-outline-danger:hover:not(:disabled) { color: var(--danger); background: var(--admin-danger-soft); }
.drop-catalog-manager button.btn-primary:not(.danger-button) { min-height: 36px; padding: 0 12px; border: 1px solid var(--admin-primary); border-radius: 7px; color: var(--admin-on-accent); background: var(--admin-primary); box-shadow: none; font-size: 0.8125rem; font-weight: 700; }
.drop-catalog-manager button.btn-primary:hover:not(:disabled) { border-color: var(--admin-primary); background: var(--admin-primary); }
.drop-catalog-manager button.btn-outline-danger:not(.danger-button) { min-height: 34px; padding: 0 10px; border: 1px solid var(--danger); border-radius: 7px; color: var(--danger); background: transparent; box-shadow: none; font-size: 0.8125rem; font-weight: 700; }
.drop-catalog-manager button.btn-outline-danger:hover:not(:disabled) { color: var(--danger); background: var(--admin-danger-soft); }
.screen-preview-toolbar {
  border-color: var(--dashboard-border);
  border-radius: 10px;
  background: var(--dashboard-surface);
  box-shadow: none;
}
.screen-preview-toolbar strong { color: var(--admin-primary-strong); }
.screen-preview-toolbar button { border-color: var(--dashboard-border); border-radius: 7px; color: var(--text); background: var(--admin-hover); }
.screen-preview-toolbar a { min-height: 32px; padding: 7px 10px; border: 1px solid var(--dashboard-border); border-radius: 7px; color: var(--text); background: var(--admin-hover); font-size: 0.8125rem; text-decoration: none; }
.screen-preview-toolbar a:hover, .screen-preview-toolbar a.active { border-color: var(--admin-primary); color: var(--admin-on-accent); background: var(--admin-primary); }
.admin-dashboard-preview > .app-shell { position: fixed; inset: 0; }
.admin-dashboard-preview > .admin-login-screen { position: fixed; inset: 0; }

/* Item Tooltip Manager chỉ dựng tối đa 100 row mỗi trang; vùng table và danh
   sách feature cuộn độc lập để modal header/footer luôn giữ nguyên vị trí. */
.item-tooltip-manager { display: grid; grid-template-columns: 265px minmax(0, 1fr); width: 100%; height: 100%; min-height: 0; gap: 14px; color: var(--text); font-family: Inter, sans-serif; }
.item-tooltip-manager > aside, .item-tooltip-manager > main { min-width: 0; min-height: 0; overflow: hidden; border: 1px solid var(--dashboard-border); border-radius: 10px; background: var(--dashboard-surface-raised); }
.item-tooltip-manager > aside { display: grid; grid-template-rows: auto minmax(0, 1fr); }
.item-tooltip-manager > aside > header { display: grid; gap: 3px; padding: 14px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface-raised); }
.item-tooltip-manager > aside > header strong { color: var(--text); font-size: 1.0625rem; }
.item-tooltip-manager > aside > header small { color: var(--muted); font-size: 0.8125rem; }
.item-tooltip-feature-list { min-height: 0; padding: 7px; overflow: auto; }
.item-tooltip-feature { position: relative; display: grid; width: 100%; min-height: 58px; margin: 0 0 5px; padding: 9px 48px 8px 10px; border: 1px solid transparent; border-radius: 8px; color: var(--text); text-align: left; background: transparent; box-shadow: none; font-family: Inter, sans-serif; cursor: pointer; }
.item-tooltip-feature:hover, .item-tooltip-feature.selected { border-color: var(--admin-primary); color: var(--text); background: var(--admin-primary-soft); }
.item-tooltip-feature span { overflow: hidden; font-size: 0.8125rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.item-tooltip-feature strong { position: absolute; top: 50%; right: 10px; color: var(--admin-primary-strong); font-size: 0.8125rem; transform: translateY(-50%); }
.item-tooltip-manager > main { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
.item-tooltip-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 18px; min-height: 76px; padding: 12px 14px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface-raised); }
.item-tooltip-toolbar > div:first-child { min-width: 0; }
.item-tooltip-toolbar h3 { overflow: hidden; margin: 2px 0; color: var(--text); font-size: 1.1875rem; text-overflow: ellipsis; white-space: nowrap; }
.item-tooltip-toolbar small { color: var(--muted); font-size: 0.8125rem; }
.item-tooltip-toolbar-actions { display: grid; grid-template-columns: minmax(210px, 320px) auto; gap: 8px; flex: 0 1 470px; }
.item-tooltip-toolbar-actions input, .item-tooltip-toolbar-actions button { min-height: 38px; font-family: Inter, sans-serif; }
.item-tooltip-table-scroll { min-width: 0; min-height: 0; overflow: auto; background: var(--dashboard-surface); }
.item-tooltip-table { width: max-content; min-width: 100%; border-collapse: separate; border-spacing: 0; font-size: 0.8125rem; }
.item-tooltip-table th, .item-tooltip-table td { min-width: 112px; max-width: 230px; height: 52px; padding: 7px 10px; overflow: hidden; border-right: 1px solid var(--dashboard-border); border-bottom: 1px solid var(--dashboard-border); color: var(--text); text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.item-tooltip-table th { position: sticky; z-index: 3; top: 0; height: 38px; color: var(--admin-primary-strong); background: var(--dashboard-surface-raised); font-size: 0.8125rem; letter-spacing: .04em; text-transform: uppercase; }
.item-tooltip-table tbody tr:hover td { background: var(--admin-primary-soft); }
.item-tooltip-table th:first-child, .item-tooltip-table td:first-child { position: sticky; z-index: 2; left: 0; background: var(--dashboard-surface-raised); }
.item-tooltip-table th:first-child { z-index: 4; background: var(--dashboard-surface-raised); }
.item-tooltip-table th:last-child, .item-tooltip-table td:last-child { min-width: 74px; width: 74px; }
.item-tooltip-table.random-rate-feature th:last-child, .item-tooltip-table.random-rate-feature td:last-child { min-width: 132px; width: 132px; }
.item-tooltip-item-cell { min-width: 220px !important; max-width: 220px !important; }
.item-tooltip-item-cell canvas { float: left; width: 44px; height: 44px; margin-right: 9px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.item-tooltip-item-cell canvas.missing { opacity: .3; }
.item-tooltip-item-cell > span { display: grid; gap: 3px; min-width: 0; padding-top: 5px; }
.item-tooltip-item-cell strong, .item-tooltip-item-cell small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.item-tooltip-item-cell strong { color: var(--text); font-size: 0.8125rem; }
.item-tooltip-item-cell small { color: var(--muted); font-size: 0.8125rem; }
.item-tooltip-edit { min-height: 30px; padding: 0 10px; font-size: 0.8125rem; }
.item-tooltip-row-actions { display: flex; align-items: center; gap: 5px; }
.item-tooltip-rate-cell { color: var(--success) !important; font-weight: 700; }
.item-tooltip-empty { display: grid; min-width: 100%; min-height: 100%; place-items: center; padding: 30px; color: var(--muted); text-align: center; }
.item-tooltip-empty.error { color: var(--danger); }
.item-tooltip-pagination { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 54px; padding: 8px 13px; border-top: 1px solid var(--dashboard-border); background: var(--dashboard-surface-raised); color: var(--muted); font-size: 0.8125rem; }
.item-tooltip-pagination > div { display: flex; align-items: center; gap: 9px; }
.item-tooltip-pagination button { min-height: 32px; padding: 0 10px; font-size: 0.8125rem; }
.item-tooltip-record-form { min-height: 100%; color: var(--text); font-family: Inter, sans-serif; }
.item-tooltip-record-identity { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; padding: 11px; border: 1px solid var(--dashboard-border); border-radius: 9px; background: var(--dashboard-surface-raised); }
.item-tooltip-record-identity canvas { width: 56px; height: 56px; border: 1px solid var(--dashboard-border); border-radius: 9px; background: var(--dashboard-surface); }
.item-tooltip-record-identity > span { display: grid; gap: 4px; }
.item-tooltip-record-identity strong { color: var(--text); font-size: 1rem; }
.item-tooltip-record-identity small { color: var(--muted); font-size: 0.8125rem; }
.item-tooltip-record-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
.item-tooltip-record-grid .field { display: grid; gap: 5px; min-width: 0; }
.item-tooltip-record-grid .field > span { color: var(--muted); font-size: 0.8125rem; font-weight: 700; text-transform: uppercase; }
.item-tooltip-record-grid input { min-width: 0; height: 40px; font-family: Inter, sans-serif; }
.item-tooltip-rate-editor { display: grid; align-content: start; gap: 12px; min-height: 100%; color: var(--text); font-family: Inter, sans-serif; }
.item-tooltip-rate-editor > header { display: grid; grid-template-columns: auto auto minmax(0, 1fr); align-items: baseline; gap: 8px 12px; padding: 12px 14px; border: 1px solid var(--dashboard-border); border-radius: 9px; background: var(--dashboard-surface-raised); }
.item-tooltip-rate-editor > header span { color: var(--muted); font-size: 0.8125rem; font-weight: 700; text-transform: uppercase; }
.item-tooltip-rate-editor > header strong { color: var(--text); font-size: 1.25rem; }
.item-tooltip-rate-editor > header small { color: var(--admin-primary-strong); font-size: 0.8125rem; }
.item-tooltip-rate-editor > section { overflow: hidden; border: 1px solid var(--dashboard-border); border-radius: 9px; background: var(--dashboard-surface-raised); }
.item-tooltip-rate-editor > section > header { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 10px; min-height: 48px; padding: 8px 12px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface-raised); }
.item-tooltip-rate-editor > section > header strong { color: var(--text); font-size: 0.9375rem; }
.item-tooltip-rate-editor > section > header button { min-height: 30px; padding: 0 10px; font-size: 0.8125rem; }
.item-tooltip-rate-total { color: var(--success); font-size: 0.8125rem; font-weight: 700; }
.item-tooltip-rate-total.invalid { color: var(--danger); }
.item-tooltip-rate-rows { display: grid; grid-template-columns: repeat(2, minmax(320px, 1fr)); gap: 1px; background: var(--dashboard-surface); }
.item-tooltip-rate-row { display: grid; grid-template-columns: 44px minmax(0, 1fr) 96px 14px; align-items: center; gap: 9px; min-width: 0; min-height: 66px; padding: 9px 11px; background: var(--dashboard-surface-raised); }
.item-tooltip-rate-row canvas { width: 44px; height: 44px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.item-tooltip-rate-row canvas.missing { opacity: .3; }
.item-tooltip-rate-row > span { display: grid; gap: 3px; min-width: 0; }
.item-tooltip-rate-row strong, .item-tooltip-rate-row small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.item-tooltip-rate-row strong { color: var(--text); font-size: 0.8125rem; }
.item-tooltip-rate-row small { color: var(--muted); font-size: 0.8125rem; }
.item-tooltip-rate-row input { min-width: 0; height: 36px; text-align: right; font-family: Inter, sans-serif; }
.item-tooltip-rate-row b { color: var(--admin-primary-strong); font-size: 0.8125rem; }

@media (max-width: 900px) {
  .item-tooltip-manager { grid-template-columns: minmax(0, 1fr); grid-template-rows: 150px minmax(0, 1fr); }
  .item-tooltip-manager > aside { grid-template-columns: 155px minmax(0, 1fr); grid-template-rows: minmax(0, 1fr); }
  .item-tooltip-manager > aside > header { align-content: center; border-right: 1px solid var(--dashboard-border); border-bottom: 0; }
  .item-tooltip-feature-list { display: flex; gap: 6px; overflow: auto hidden; }
  .item-tooltip-feature { flex: 0 0 180px; margin: 0; }
  .item-tooltip-toolbar { align-items: stretch; flex-direction: column; gap: 8px; }
  .item-tooltip-toolbar-actions { grid-template-columns: minmax(0, 1fr) auto; flex: none; }
  .item-tooltip-record-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .item-tooltip-rate-rows { grid-template-columns: 1fr; }
}

@media (max-width: 1280px) {
  .summary-grid { grid-template-columns: repeat(2, minmax(150px, 1fr)); }
  .manager-grid { grid-template-columns: 285px minmax(0, 1fr); }
  .pve-chapter-manager { grid-template-columns: 285px minmax(0, 1fr); }
  .pve-chapter-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 991.98px) {
  .app-shell { grid-template-columns: 1fr; }
  .sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    width: 260px;
    transform: translateX(-100%);
    transition: transform .2s ease;
    box-shadow: none;
  }
  .app-shell.sidebar-open .sidebar { transform: translateX(0); }
  .app-shell.sidebar-open::after { position: fixed; z-index: 20; inset: 0; content: ""; background: rgb(25 42 65 / 38%); }
  .sidebar-toggle { display: inline-flex; align-items: center; justify-content: center; }
  .workspace { padding: 18px; }
  .manager-grid { grid-template-columns: 280px minmax(620px, 1fr); overflow: auto; }
  .function-grid { grid-template-columns: repeat(2, minmax(300px, 1fr)); }
  .pve-chapter-manager { grid-template-columns: 260px minmax(650px, 1fr); overflow: auto; }
}

@media (max-width: 767.98px) {
  .topbar { padding: 0 14px; }
  .topbar-heading .eyebrow { display: none; }
  .connection-pill #admin-identity { display: none; }
  .workspace { padding: 14px; overflow: auto; }
  .manager-panel, .functions-panel, .audit-panel { height: auto; min-height: 100%; }
  .section-heading { align-items: flex-start; flex-direction: column; }
  .heading-actions { width: 100%; justify-content: stretch; }
  .heading-actions > button { flex: 1; }
  .summary-grid { grid-template-columns: 1fr 1fr; }
  .manager-grid { grid-template-columns: 1fr; overflow: visible; }
  .explorer-panel { min-height: 340px; }
  .editor-panel { min-height: 620px; }
  .function-grid { grid-template-columns: 1fr; overflow: visible; }
  .audit-card { min-width: 860px; }
  .audit-panel { overflow-x: auto; }
  .pve-chapter-manager { grid-template-columns: 1fr; grid-template-rows: 320px minmax(720px, auto); height: auto; overflow: auto; }
  .pve-chapter-sidebar { min-height: 320px; }
  .pve-chapter-workspace { min-height: 720px; overflow: visible !important; }
  .pve-chapter-fields { grid-template-columns: 1fr; }
  .pve-mission-chain { grid-template-columns: 1fr; }
  .pve-mission-picker { grid-template-columns: 1fr; }
}

@media (max-height: 780px) {
  .pve-chapter-workspace { overflow: auto !important; }
  .pve-chapter-manager form { min-height: 700px; height: auto; }
  .pve-difficulties { min-height: 300px; }
}
.event-manager {
  display: grid;
  /* Modal đã trừ header/footer; khung con chỉ chiếm vùng body còn lại,
     không áp chiều cao tối thiểu theo viewport làm cắt đáy các vùng cuộn. */
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
  grid-template-columns: 330px minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
  overflow: hidden;
  border: 1px solid var(--dashboard-border);
  border-radius: 10px;
  background: var(--dashboard-surface);
  font-family: Inter, sans-serif;
}
.event-manager-list {
  display: grid;
  min-width: 0;
  min-height: 0;
  grid-template-rows: auto auto minmax(0, 1fr);
  gap: 13px;
  overflow: hidden;
  padding: 18px 16px 14px;
  border-right: 1px solid var(--dashboard-border);
  background: var(--dashboard-surface);
}
.event-manager-list > header,
.event-manager-editor-heading,
.event-manager-milestones > header,
.event-manager-milestone-heading,
.event-manager-reward-heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.event-manager-list > header > div,
.event-manager-editor-heading > div:first-child,
.event-manager-milestones > header > div:first-child,
.event-manager-reward-heading > div {
  display: grid;
  gap: 3px;
}
.event-manager-list > header strong { font-size: 1.25rem; color: var(--text); }
.event-manager-list > header small { color: var(--muted); }
.event-manager-filters { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.event-manager-filters input { grid-column: 1 / -1; }
.event-manager-list-scroll {
  display: grid;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  align-content: start;
  gap: 7px;
  overflow-x: hidden;
  overflow-y: scroll;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding-right: 3px;
}
.event-manager-list-item {
  display: grid;
  gap: 7px;
  padding: 12px;
  color: var(--text);
  text-align: left;
  border: 1px solid var(--dashboard-border);
  border-radius: 8px;
  background: var(--dashboard-surface-raised);
  transition: border-color 140ms ease, background-color 140ms ease, transform 140ms ease;
}
.event-manager-list-item:hover { border-color: var(--dashboard-border); background: var(--admin-primary-soft); transform: translateX(2px); }
.event-manager-list-item.selected { border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.event-manager-list-item.disabled { opacity: .58; }
.event-manager-list-item.highlighted:not(.selected) { border-color: var(--dashboard-border); }
.event-manager-list-item-top { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 8px; }
.event-manager-list-item-top strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 1rem; }
.event-manager-state-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--success); }
.event-manager-state-dot.disabled { background: var(--dashboard-surface); }
.event-manager-list-item-meta { display: flex; min-width: 0; align-items: center; gap: 7px; color: var(--muted); }
.event-manager-list-item-meta small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.event-manager-list-category { padding: 2px 6px; border: 1px solid var(--dashboard-border); border-radius: 999px; color: var(--admin-primary-strong); background: var(--admin-primary-soft); }
.event-manager-workspace { min-width: 0; min-height: 0; background: var(--dashboard-surface); }
.event-manager-empty { display: grid; height: 100%; place-content: center; gap: 7px; color: var(--muted); text-align: center; }
.event-manager-empty strong { color: var(--text); font-size: 1.375rem; }
.event-manager-workspace > form { display: grid; height: 100%; min-height: 0; grid-template-rows: auto auto minmax(0, 1fr); }
.event-manager-editor-heading { min-height: 82px; padding: 15px 20px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.event-manager-editor-heading strong { max-width: 620px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); font-size: 1.375rem; }
.event-manager-editor-heading small { color: var(--muted); }
.event-manager-editor-status { display: flex; align-items: center; gap: 8px; }
.event-manager-category-pill,
.event-manager-reward-count {
  padding: 5px 9px;
  border: 1px solid var(--dashboard-border);
  border-radius: 999px;
  color: var(--admin-primary-strong);
  background: var(--admin-primary-soft);
  font-size: 0.8125rem;
  font-weight: 700;
  letter-spacing: .05em;
}
.event-manager-tabs { display: flex; gap: 2px; padding: 0 20px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.event-manager-tabs button { padding: 12px 16px 10px; color: var(--muted); border: 0; border-bottom: 2px solid transparent; background: transparent; font-weight: 700; }
.event-manager-tabs button.active { color: var(--admin-primary-strong); border-bottom-color: var(--dashboard-border); }
.event-manager-definition {
  height: 100%;
  min-height: 0;
  max-height: 100%;
  overflow-x: hidden;
  overflow-y: scroll;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding: 20px;
}
.event-manager-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.event-manager-field-wide { grid-column: span 2; }
.event-manager-grid textarea { min-height: 128px; resize: vertical; }
.event-manager-grid .field:has(input[type="checkbox"]) { justify-content: end; padding-bottom: 9px; }
.event-manager-schedule-card { display: grid; gap: 5px; margin-top: 18px; padding: 14px 16px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.event-manager-schedule-card strong { color: var(--text); }
.event-manager-milestones { display: grid; min-height: 0; grid-template-rows: auto minmax(0, 1fr); gap: 14px; overflow: hidden; padding: 18px 20px 20px; }
.event-manager-milestones > header strong { color: var(--text); }
.event-manager-milestones > header small { color: var(--muted); }
.event-manager-milestones > header .input-group { width: min(520px, 48%); }
.event-manager-milestone-list {
  display: grid;
  height: 100%;
  min-height: 0;
  max-height: 100%;
  align-content: start;
  gap: 13px;
  overflow-x: hidden;
  overflow-y: scroll;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  padding-right: 4px;
}
.event-manager-milestone-card { height: max-content; overflow: hidden; border: 1px solid var(--dashboard-border); border-radius: 9px; background: var(--dashboard-surface-raised); }
.event-manager-milestone-heading { padding: 12px 14px; border-bottom: 1px solid var(--dashboard-border); background: var(--admin-hover); }
.event-manager-milestone-heading > div { display: flex; min-width: 0; align-items: center; gap: 11px; }
.event-manager-milestone-index { display: grid; width: 39px; height: 39px; flex: 0 0 39px; place-items: center; border: 1px solid var(--dashboard-border); border-radius: 8px; color: var(--admin-primary-strong); background: var(--dashboard-surface); font-weight: 700; }
.event-manager-milestone-title { display: grid; min-width: 0; gap: 3px; }
.event-manager-milestone-title strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); }
.event-manager-milestone-title small { color: var(--muted); }
.event-manager-progress-source { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px 14px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.event-manager-progress-source > span { display: grid; min-width: 0; gap: 3px; }
.event-manager-progress-source strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--admin-primary-strong); }
.event-manager-progress-source small { color: var(--muted); }
.event-manager-progress-source .is-missing strong { color: var(--danger); }
.event-manager-reward-heading { padding: 12px 14px 9px; }
.event-manager-reward-heading > div strong { color: var(--text); }
.event-manager-reward-heading > div small { color: var(--muted); }
.event-manager-reward-heading .event-manager-reward-count { margin-left: auto; }
.event-manager-reward-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 0 14px 14px; }
.event-manager-reward-card { display: grid; min-width: 0; grid-template-rows: minmax(82px, auto) auto; overflow: hidden; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.event-manager-reward-identity { display: grid; min-width: 0; grid-template-columns: 68px minmax(0, 1fr); align-items: center; gap: 10px; padding: 9px; color: inherit; text-align: left; border: 0; background: transparent; }
.event-manager-reward-identity:hover { background: var(--admin-primary-soft); }
.event-manager-reward-icon { display: grid; width: 66px; height: 66px; place-items: center; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.event-manager-reward-icon canvas { width: 60px; height: 60px; }
.event-manager-reward-icon canvas.loading { opacity: .45; }
.event-manager-reward-icon canvas.missing { opacity: .2; }
.event-manager-reward-copy { display: grid; min-width: 0; gap: 5px; }
.event-manager-reward-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--admin-primary-strong); }
.event-manager-reward-copy small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--muted); }
.event-manager-reward-controls { display: grid; grid-template-columns: minmax(90px, 1fr) auto; align-items: end; gap: 8px; padding: 8px 9px; border-top: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.event-manager-reward-controls .field { gap: 4px; }
.event-manager-reward-controls .field > span { font-size: 0.8125rem; color: var(--muted); }
.event-manager-reward-remove { min-height: 38px; }

/* Museum giữ cùng contract Bootstrap của dashboard; layout hai cột chỉ dùng
   cho catalog lớn, còn mọi add/edit đều đi qua modal secondary dùng chung. */
.museum-admin { display: grid; height: 100%; min-height: 0; grid-template-rows: auto auto minmax(0, 1fr); gap: 12px; color: var(--text); }
.museum-admin-overview { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 14px 18px; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.museum-admin-overview > div:first-child { display: grid; gap: 3px; }
.museum-admin-overview strong { color: var(--text); font-size: 1.375rem; }
.museum-admin-overview small { color: var(--muted); }
.museum-admin-stats { display: flex; gap: 8px; }
.museum-admin-stats > span { display: grid; min-width: 90px; gap: 2px; padding: 8px 12px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface-raised); text-align: right; }
.museum-admin-stats b { color: var(--admin-primary-strong); font-size: 1.25rem; }
.museum-admin-stats small { font-size: 0.8125rem; text-transform: uppercase; }
.museum-admin-tabs { border-bottom-color: var(--dashboard-border); }
.museum-admin-tabs .nav-link { color: var(--muted); border-color: transparent; background: transparent; }
.museum-admin-tabs .nav-link.active { color: var(--admin-primary-strong); border-color: var(--dashboard-border) var(--dashboard-border) var(--dashboard-border); background: var(--dashboard-surface); }
.museum-admin-pane { display: grid; min-height: 0; grid-template-columns: 300px minmax(0, 1fr); gap: 12px; }
.museum-admin-pane[data-pane="levels"] { grid-template-columns: 1fr; overflow: hidden; border: 1px solid var(--dashboard-border); border-radius: 10px; background: var(--dashboard-surface); }
.museum-admin-list, .museum-admin-detail { min-width: 0; min-height: 0; overflow: hidden; border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.museum-admin-list { display: grid; grid-template-rows: auto auto minmax(0, 1fr); }
.museum-admin-pane[data-pane="gifts"] .museum-admin-list { grid-template-rows: auto minmax(0, 1fr); }
.museum-admin-list > header, .museum-admin-section-heading, .museum-admin-detail-heading, .museum-admin-items > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.museum-admin-list > header { padding: 12px; border-bottom: 1px solid var(--dashboard-border); }
.museum-admin-list > header > div, .museum-admin-detail-heading > div:first-child, .museum-admin-items > header > div { display: grid; min-width: 0; gap: 3px; }
.museum-admin-list > header small, .museum-admin-detail-heading small, .museum-admin-items > header small { color: var(--muted); }
.museum-admin-list > input { margin: 10px; width: calc(100% - 20px); }
.museum-admin-list > .scroll-surface { min-height: 0; overflow: auto; padding: 5px 8px 10px; }
.museum-admin-list-row { display: grid; width: 100%; gap: 4px; padding: 10px; color: var(--text); text-align: left; border: 1px solid transparent; border-radius: 7px; background: transparent; }
.museum-admin-list-row:hover { border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.museum-admin-list-row.selected { border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.museum-admin-list-row.disabled { opacity: .5; }
.museum-admin-list-row small { color: var(--muted); }
.museum-admin-detail { overflow: auto; }
.museum-admin-detail-heading { position: sticky; top: 0; z-index: 2; min-height: 78px; padding: 13px 16px; border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface-raised); }
.museum-admin-detail-heading > div:last-child { display: flex; gap: 8px; }
.museum-admin-detail-heading strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); font-size: 1.3125rem; }
.museum-admin-attributes { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px; padding: 14px 16px 4px; }
.museum-admin-attributes > span { display: grid; gap: 3px; padding: 9px 10px; border: 1px solid var(--dashboard-border); border-radius: 7px; background: var(--dashboard-surface-raised); }
.museum-admin-attributes small { color: var(--muted); }
.museum-admin-attributes strong { color: var(--admin-primary-strong); }
.museum-admin-items, .museum-admin-gift-rewards { display: grid; gap: 10px; padding: 14px 16px 18px; }
.museum-admin-items > div, .museum-admin-reward-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 9px; }
.museum-admin-item { display: grid; min-width: 0; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 7px; padding: 7px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface-raised); }
.museum-admin-item-identity { display: grid; min-width: 0; grid-template-columns: 54px minmax(0, 1fr); align-items: center; gap: 8px; padding: 0; color: inherit; text-align: left; border: 0; background: transparent; }
.museum-admin-item-identity canvas { width: 54px; height: 54px; border: 1px solid var(--dashboard-border); border-radius: 7px; background: var(--admin-hover); }
.museum-admin-item-identity > span { display: grid; min-width: 0; gap: 4px; }
.museum-admin-item-identity strong, .museum-admin-item-identity small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.museum-admin-item-identity strong { color: var(--admin-primary-strong); }
.museum-admin-item-identity small { color: var(--muted); }
.museum-admin-empty { display: grid; height: 100%; place-content: center; gap: 6px; color: var(--muted); text-align: center; }
.museum-admin-empty strong { color: var(--text); }
.museum-admin-empty-inline { grid-column: 1 / -1; padding: 24px; color: var(--muted); text-align: center; border: 1px dashed var(--dashboard-border); border-radius: 8px; }
.museum-admin-section-heading { padding: 12px 16px; border-bottom: 1px solid var(--dashboard-border); }
.museum-admin-section-heading > div { display: grid; gap: 3px; }
.museum-admin-section-heading small { color: var(--muted); }
.museum-admin-level-table { min-height: 0; overflow: auto; }
.museum-admin-level-head, .museum-admin-level-row { display: grid; grid-template-columns: 100px minmax(180px, 1fr) minmax(180px, 1fr) 100px; align-items: center; gap: 12px; padding: 9px 16px; white-space: pre-line; }
.museum-admin-level-head { position: sticky; top: 0; z-index: 1; color: var(--muted); border-bottom: 1px solid var(--dashboard-border); background: var(--dashboard-surface-raised); font-size: 0.8125rem; font-weight: 700; text-transform: uppercase; }
.museum-admin-level-row { border-bottom: 1px solid var(--dashboard-border); }
.museum-admin-level-row strong { color: var(--admin-primary-strong); }
.museum-admin-form { padding: 4px; }
.museum-admin-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.museum-admin-gift-rewards + .museum-admin-gift-rewards { border-top: 1px solid var(--dashboard-border); }
.museum-admin-gift-rewards > header { color: var(--text); font-weight: 700; }
.museum-admin-item > .field { grid-column: 1 / -1; }
.museum-admin-add-reward { min-height: 90px; border-style: dashed; }
@media (max-width: 980px) {
  .museum-admin-pane { grid-template-columns: 250px minmax(540px, 1fr); overflow: auto; }
  .museum-admin-items > div, .museum-admin-reward-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .museum-admin-stats { display: none; }
}
.event-manager-milestone-empty { display: grid; min-height: 220px; place-content: center; gap: 7px; color: var(--muted); text-align: center; border: 1px dashed var(--dashboard-border); border-radius: 9px; background: var(--dashboard-surface); }
.event-manager-milestone-empty strong { color: var(--text); }
@media (max-width: 1180px) {
  .event-manager { grid-template-columns: 290px minmax(0, 1fr); }
  .event-manager-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .event-manager-reward-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 820px) and (min-height: 600px) {
  .event-manager { grid-template-columns: 1fr; grid-template-rows: repeat(2, minmax(0, 1fr)); }
  .event-manager-list { border-right: 0; border-bottom: 1px solid var(--dashboard-border); }
  .event-manager-editor-heading { align-items: flex-start; }
  .event-manager-editor-status { flex-wrap: wrap; justify-content: flex-end; }
  .event-manager-milestones > header { align-items: flex-start; flex-direction: column; }
  .event-manager-milestones > header .input-group { width: 100%; }
  .event-manager-reward-grid { grid-template-columns: 1fr; }
}
/* Màn hình ngang thấp vẫn dành chỗ cho ít nhất một hàng catalog;
   chỉ thu gọn chrome của Event Manager, không đổi modal các chức năng khác. */
@media (max-height: 600px) {
  .modal-root[data-size="workspace"]:has(.event-manager) .modal-header { min-height: 44px; padding: 6px 14px; }
  .modal-root[data-size="workspace"]:has(.event-manager) .modal-header h2 { font-size: 1.1875rem; font-weight: 700; }
  .modal-root[data-size="workspace"]:has(.event-manager) .modal-header .panel-kicker { display: none; }
  .modal-root[data-size="workspace"]:has(.event-manager) .modal-body { padding: 8px 12px; }
  .modal-root[data-size="workspace"]:has(.event-manager) .modal-footer { min-height: 50px; padding: 5px 12px; }
  .event-manager-list { gap: 6px; padding: 8px; }
  .event-manager-list > header > div { grid-template-columns: auto auto; align-items: baseline; gap: 6px; }
  .event-manager-list > header .manager-section-label { display: none; }
}
/* Recharge Manager chia workspace thành overview, số liệu vận hành và catalog
   cuộn độc lập để header/footer modal luôn giữ nguyên khi catalog đạt 24 card. */
.recharge-admin { display: grid; height: 100%; min-height: 0; grid-template-rows: auto auto minmax(0, 1fr); gap: 12px; color: var(--text); }
.recharge-admin-overview, .recharge-admin-summary .card, .recharge-admin-catalog { min-width: 0; border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.recharge-admin-overview .card-body { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 20px; padding: 14px 18px; }
.recharge-admin-overview-copy { min-width: 0; }
.recharge-admin-overview-copy h3 { color: var(--text); }
.recharge-admin-toolbar-actions { display: grid; justify-items: end; gap: 8px; }
.recharge-admin-toolbar-actions .btn-group { flex-wrap: wrap; justify-content: flex-end; }
.recharge-admin-summary { margin: 0; }
.recharge-admin-summary > div { padding-top: 0; padding-bottom: 0; }
.recharge-admin-summary .card-body { display: grid; min-height: 92px; align-content: center; gap: 5px; padding: 12px 15px; }
.recharge-admin-summary-label { color: var(--muted); font-size: 0.8125rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.recharge-admin-summary-value { color: var(--admin-primary-strong); font-size: 1.5rem; line-height: 1; }
.recharge-admin-summary-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.recharge-admin-catalog { display: grid; min-height: 0; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; }
.recharge-admin-catalog > .card-header { display: flex; min-height: 61px; align-items: center; justify-content: space-between; gap: 16px; padding: 10px 15px; border-bottom-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.recharge-admin-catalog > .card-header h3 { color: var(--text); }
.recharge-admin-catalog > .card-header > div { min-width: 0; }
.recharge-admin-card-scroll { min-height: 0; overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.recharge-admin-card-scroll > .row { align-content: start; padding: 12px; }
.recharge-admin-card { min-height: 286px; overflow: hidden; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.recharge-admin-card > .card-body { grid-template-rows: auto auto minmax(0, 1fr) auto; }
.recharge-admin-card .panel-kicker { display: block; margin-bottom: .3rem; }
.recharge-admin-prices { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.recharge-admin-price { display: grid; min-width: 0; gap: 2px; padding: 9px 11px; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface); }
.recharge-admin-price strong { overflow: hidden; color: var(--text); font-size: 1.0625rem; text-overflow: ellipsis; white-space: nowrap; }
.recharge-admin-reward { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-content: center; align-items: center; gap: 3px 10px; border: 1px solid var(--dashboard-border); background: var(--dashboard-surface); }
.recharge-admin-reward > span:first-child { grid-column: 1 / -1; }
.recharge-admin-reward strong { color: var(--admin-primary-strong); }
.recharge-admin-reward small { grid-column: 1 / -1; }
.recharge-admin .min-w-0 { min-width: 0; }
@media (max-width: 991.98px) {
  .recharge-admin { overflow: auto; grid-template-rows: auto auto minmax(360px, 1fr); }
  .recharge-admin-overview .card-body { grid-template-columns: 1fr; }
  .recharge-admin-toolbar-actions { justify-items: start; }
  .recharge-admin-toolbar-actions .btn-group { justify-content: flex-start; }
}
@media (max-width: 575.98px) {
  .recharge-admin-prices { grid-template-columns: 1fr; }
  .recharge-admin-catalog > .card-header { align-items: flex-start; flex-direction: column; }
}

/* Guild Manager giữ header/footer modal cố định; từng nhóm dài cuộn độc lập và
   toàn bộ thao tác sửa cấu hình được chuyển sang secondary workspace. */
.guild-admin { display: grid; width: min(94vw, 1480px); height: min(82vh, 860px); min-width: 0; min-height: 0; grid-template-rows: auto auto minmax(0, 1fr); overflow: hidden; color: var(--text); background: var(--dashboard-surface); font-family: Inter, sans-serif; }
.guild-admin-header { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 24px; margin: 16px 18px 0; padding: 18px 20px; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.guild-admin-header h3 { margin: 3px 0 5px; color: var(--text); font-size: 1.5rem; font-weight: 700; }
.guild-admin-header p { max-width: 820px; margin: 0; color: var(--muted); line-height: 1.45; }
.guild-admin-health { display: grid; grid-template-columns: auto auto; justify-items: end; gap: 7px; }
.guild-admin-health strong { grid-column: 1 / -1; color: var(--muted); font-size: 0.875rem; font-weight: 400; }
.guild-admin-tabs { display: flex; min-width: 0; gap: 7px; overflow: auto hidden; padding: 14px 18px 10px; border-bottom: 1px solid var(--dashboard-border); scrollbar-width: thin; touch-action: pan-x; }
.guild-admin-tab { display: grid; min-width: 138px; flex: 0 0 auto; gap: 2px; padding: 10px 13px; color: var(--muted); text-align: left; border: 1px solid var(--dashboard-border); border-radius: 8px; background: var(--dashboard-surface-raised); }
.guild-admin-tab:hover { color: var(--text); border-color: var(--dashboard-border); background: var(--admin-primary-soft); }
.guild-admin-tab.active { color: var(--admin-primary-strong); border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.guild-admin-tab strong { font-size: 0.9375rem; font-weight: 700; }
.guild-admin-tab small { color: var(--muted); font-size: 0.8125rem; }
.guild-admin-tab.active small { color: var(--admin-primary-strong); }
.guild-admin-body { min-width: 0; min-height: 0; overflow: auto; padding: 18px; scrollbar-gutter: stable; touch-action: pan-y; }
.guild-admin-group-intro { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-bottom: 14px; }
.guild-admin-group-intro h4 { margin: 0 0 3px; color: var(--text); font-size: 1.3125rem; font-weight: 700; }
.guild-admin-group-intro p { margin: 0; color: var(--muted); }
.guild-admin-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 14px; padding-bottom: 8px; }
.guild-admin-card { min-width: 0; overflow: hidden; border-color: var(--dashboard-border); background: var(--dashboard-surface-raised); }
.guild-admin-card-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 13px 15px; border-bottom: 1px solid var(--dashboard-border); background: var(--admin-hover); }
.guild-admin-card-header > div { display: grid; min-width: 0; gap: 3px; }
.guild-admin-card-header h5 { margin: 0; overflow: hidden; color: var(--text); font-size: 1.125rem; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
.guild-admin-kv { display: grid; margin: 0; }
.guild-admin-kv-row { display: grid; grid-template-columns: minmax(130px, .8fr) minmax(0, 1.5fr); gap: 14px; min-height: 42px; align-items: center; padding: 9px 15px; border-bottom: 1px solid var(--dashboard-border); }
.guild-admin-kv-row:last-child { border-bottom: 0; }
.guild-admin-kv dt { color: var(--muted); font-size: 0.875rem; font-weight: 400; }
.guild-admin-kv dd { min-width: 0; margin: 0; overflow: hidden; color: var(--text); font-size: 0.9375rem; text-align: right; text-overflow: ellipsis; white-space: nowrap; }
.guild-admin-editor { display: grid; width: min(86vw, 1120px); height: min(68vh, 680px); min-height: 420px; grid-template-rows: auto minmax(0, 1fr) auto; gap: 12px; font-family: Inter, sans-serif; }
.guild-admin-json { min-width: 0; min-height: 0; resize: none; color: var(--admin-primary-strong); border-color: var(--dashboard-border); background: var(--dashboard-surface); font-family: Inter, sans-serif; font-size: 0.875rem; line-height: 1.5; tab-size: 2; }
.guild-admin-json:focus { color: var(--text); border-color: var(--dashboard-border); background: var(--dashboard-surface); box-shadow: 0 0 0 3px rgb(36 91 216 / 15%); }
.guild-admin-editor-status { padding: 9px 12px; font-size: 0.875rem; }
.is-drag-scrolling { cursor: grabbing; user-select: none; }
@media (max-width: 991.98px) {
  .guild-admin { width: min(98vw, 1480px); height: min(90vh, 900px); }
  .guild-admin-header { grid-template-columns: 1fr; gap: 12px; }
  .guild-admin-health { grid-template-columns: auto auto; justify-items: start; }
  .guild-admin-grid { grid-template-columns: 1fr; }
}
@media (max-width: 575.98px) {
  .guild-admin-kv-row { grid-template-columns: minmax(100px, .8fr) minmax(0, 1.3fr); }
  .guild-admin-header { margin: 10px 10px 0; padding: 14px; }
  .guild-admin-tabs, .guild-admin-body { padding-right: 10px; padding-left: 10px; }
}

.error-log-manager { display: grid; grid-template-rows: auto auto minmax(0, 1fr) auto; width: 100%; height: 100%; min-height: 0; color: var(--text); }
.error-log-header { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 18px; border-bottom: 1px solid var(--dashboard-border); }
.error-log-header h3 { margin: 5px 0; color: var(--text); font-size: 1.5625rem; font-weight: 700; }
.error-log-header p { margin: 0; color: var(--muted); }
.error-log-controls { display: grid; gap: 10px; justify-items: end; flex-shrink: 0; }
.error-log-controls strong { color: var(--admin-warning); font-size: 0.9375rem; }
.error-log-controls strong[data-enabled="true"] { color: var(--success); }
.error-log-filters { display: grid; grid-template-columns: minmax(180px, 1fr) 200px 190px auto; align-items: end; gap: 12px; padding: 16px 18px; }
.error-log-filters label { display: grid; gap: 6px; color: var(--muted); font-size: 0.875rem; }
.error-log-table-scroll { overflow: auto; min-height: 0; min-width: 0; margin: 0 18px; border: 1px solid var(--dashboard-border); border-radius: 8px; scrollbar-gutter: stable; }
.error-log-table { width: 100%; min-width: 900px; border-collapse: separate; border-spacing: 0; table-layout: fixed; font-size: 0.875rem; }
.error-log-table th { position: sticky; top: 0; z-index: 1; padding: 12px; color: var(--muted); text-align: left; background: var(--admin-hover); border-bottom: 1px solid var(--dashboard-border); }
.error-log-table th:nth-child(1) { width: 155px; }
.error-log-table th:nth-child(2) { width: 140px; }
.error-log-table th:nth-child(4) { width: 240px; }
.error-log-table th:nth-child(5) { width: 95px; }
.error-log-table td { padding: 12px; vertical-align: top; border-bottom: 1px solid var(--dashboard-border); overflow-wrap: anywhere; }
.error-log-table tr:hover td { background: var(--admin-hover); }
.error-log-message strong, .error-log-message small, .error-log-browser span, .error-log-browser small { display: block; }
.error-log-message strong { font-weight: 400; color: var(--text); }
.error-log-message small, .error-log-browser small { margin-top: 7px; color: var(--muted); }
.error-log-empty { padding: 35px 20px; text-align: center; color: var(--muted); }
.error-log-footer { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 18px; color: var(--muted); font-size: 0.875rem; }
.error-log-footer > div { display: flex; align-items: center; gap: 12px; flex-shrink: 0; }
.error-log-detail { max-height: 100%; overflow: auto; padding: 20px; }
.error-log-metadata { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 10px 20px; }
.error-log-metadata dt { color: var(--muted); font-weight: 400; }
.error-log-metadata dd { margin: 0; overflow-wrap: anywhere; }
.error-log-stack { white-space: pre-wrap; overflow-wrap: anywhere; font-family: Inter, sans-serif; font-size: 0.9375rem; line-height: 1.7; padding: 18px; color: var(--danger); background: var(--dashboard-surface-raised); border: 1px solid var(--dashboard-border); border-radius: 8px; }
/* Market chia vùng cuộn riêng cho bảng, giữ thao tác và phân trang cố định. */
.market-admin-manager { display:grid; grid-template-rows:auto auto minmax(0,1fr) auto; gap:16px; height:100%; min-height:0; color:var(--text); font-family: Inter, sans-serif; }
.market-admin-manager > header,.market-admin-manager > footer { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.market-admin-manager h3 { margin:4px 0; }
.market-admin-manager p { margin:0; color:var(--muted); font-size:0.9375rem; }
.market-admin-actions { display:flex; gap:8px; flex-wrap:wrap; }
.market-admin-scroll { min-height:0; overflow:auto; overscroll-behavior:contain; touch-action:none; }
.market-admin-scroll table { min-width:760px; margin:0; }
.market-admin-scroll td { vertical-align:middle; padding:12px; }
.market-admin-scroll th { position:sticky; top:0; z-index:1; }
.market-admin-item { display:flex; align-items:center; gap:12px; min-width:240px; }
.market-admin-item canvas { flex:none; width:54px; height:54px; }
.market-admin-item small { display:block; margin-top:4px; color:var(--muted); font-size:0.875rem; }
.market-admin-item strong { font-weight: 700; }
.market-admin-prices { min-width:220px; font-size:0.875rem; line-height:1.6; }
.market-admin-manager > footer { font-size:0.9375rem; }
.account-manager { display:flex; flex-direction:column; gap:18px; height:100%; min-height:0; font-family: Inter, sans-serif; }
.account-manager header, .account-manager footer, .account-manager form { display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.account-manager header p { margin:6px 0 0; }
.modal-root:has(.account-manager) > .modal-card > .modal-footer:empty { display:none; }
.account-manager p, .account-manager small { color:var(--muted); font-size:0.9375rem; }
.account-manager form label { flex:1; min-width:200px; }
.account-manager form { align-items:flex-end; }
.account-manager-scroll { flex:1; min-height:120px; overflow:auto; overscroll-behavior:contain; touch-action:none; }
.account-manager table { min-width:950px; margin:0; }
.account-manager td { padding:14px 12px; vertical-align:middle; }
.account-manager th { position:sticky; top:0; z-index:1; background:var(--bs-body-bg); white-space:nowrap; }
.account-manager td:nth-child(2) { min-width:240px; max-width:350px; overflow-wrap:anywhere; }
.account-manager td:not(:nth-child(2)) { white-space:nowrap; }
.account-manager small { display:block; margin-top:5px; }
.account-manager footer { font-size:0.9375rem; }
.account-staff-editor { display:grid; gap:18px; font-family: Inter, sans-serif; }
.account-staff-editor strong { overflow-wrap:anywhere; }
.account-staff-editor p { margin:0; color:var(--muted); font-size:0.9375rem; }
@media (max-width: 900px) {
  .error-log-header { padding: 12px; gap: 12px; }
  .error-log-filters { grid-template-columns: minmax(120px, 1fr) 170px; padding: 10px 12px; }
  .error-log-table-scroll { margin: 0 12px; }
  .error-log-footer { flex-wrap: wrap; padding: 10px 12px; gap: 8px; }
  .error-log-metadata { grid-template-columns: 110px minmax(0, 1fr); }
}

/* Picker dùng hai vùng cuộn độc lập: catalog giữ vị trí khi sửa draft bên phải. */
.game-item-catalog-picker { grid-template-rows: auto minmax(0, 1fr) auto; }
.game-item-picker-body { display: flex; gap: 14px; min-height: 0; min-width: 0; overflow: hidden; }
.game-item-picker-browser { display: grid; grid-template-rows: 36px minmax(0, 1fr); flex: 1; min-width: 0; min-height: 0; overflow: hidden; }
.game-item-picker-selection { display: flex; flex-direction: column; gap: 10px; width: 340px; flex: 0 0 340px; min-height: 0; padding: 14px; border: 1px solid var(--dashboard-border); border-radius: 14px; background: var(--dashboard-surface); overflow: hidden; }
.game-item-picker-selection[hidden] { display: none; }
.game-item-picker-selection > strong { color: var(--text); font-size: 1.0625rem; }
.game-item-picker-selection > small { color: var(--muted); font-size: 0.875rem; }
.game-item-picker-selected-list { flex: 1; min-height: 0; overflow: auto; touch-action: none; }
.game-item-picker-selected-list > p { color: var(--muted); font-size: 0.9375rem; }
.game-item-picker-selected-row { display: flex; align-items: stretch; gap: 6px; margin-bottom: 8px; }
/* Hàng có tên và thuộc tính nhiều dòng phải thoát chiều cao cố định của button
   chung; nút bỏ chọn giãn theo hàng để nội dung không tràn sang vật phẩm kế. */
.game-item-picker-selected-row > button { height: auto; min-height: 64px; padding: 10px; font-size: 0.875rem; line-height: 1.45; }
.game-item-picker-selected-row > button:not(.game-item-picker-selected-item) { flex: 0 0 40px; }
.game-item-picker-selected-item { display: block; flex: 1; min-width: 0; text-align: left; white-space: normal; overflow-wrap: anywhere; background: var(--dashboard-surface); }
.game-item-picker-selected-item > span { display: block; }
.game-item-picker-selected-item.active { border-color: var(--dashboard-border); background: var(--dashboard-surface); }
.game-item-picker-selected-item > small { display: block; margin-top: 6px; color: var(--muted); font-size: 0.875rem; }
/* Modal thuộc tính giữ action cố định, form cuộn riêng kể cả trên mobile ngang. */
.modal-root:has(.game-item-picker-attributes) .modal-card { width: min(760px, calc(100vw - 24px)); max-height: calc(100dvh - 24px); }
.modal-root:has(.game-item-picker-attributes) .modal-body { display: flex; min-height: 0; overflow: hidden; padding: 16px; }
.modal-root:has(.game-item-picker-attributes) .modal-footer { flex-wrap: wrap; gap: 8px; padding: 12px 16px; }
.modal-root:has(.game-item-picker-attributes) .modal-footer > button { min-height: 44px; height: auto; padding: 10px 14px; white-space: normal; font-size: 0.9375rem; }
.game-item-picker-attributes { flex: 1; min-width: 0; min-height: 0; margin: 0; overflow: auto; display: flex; flex-direction: column; gap: 16px; touch-action: none; overscroll-behavior: contain; }
.game-item-picker-attributes > * { flex-shrink: 0; }
.game-item-picker-editor-identity { display: flex; align-items: center; gap: 12px; }
.game-item-picker-editor-identity > canvas { width: 54px; height: 54px; flex-shrink: 0; }
.game-item-picker-editor-identity > strong { font-size: 1.125rem; overflow-wrap: anywhere; }
.game-item-picker-field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.game-item-picker-field-grid .field { min-width: 0; font-size: 0.875rem; gap: 6px; }
.game-item-picker-field-grid input:not([type="checkbox"]) { min-width: 0; width: 100%; height: 44px; border: 1px solid var(--dashboard-border); border-radius: 8px; padding: 8px; background: var(--dashboard-surface-raised); color: var(--text); }
.game-item-catalog-picker .mail-item-picker-row.selected::after { content: "✓"; color: var(--admin-primary-strong); font-size: 1.375rem; position: absolute; inset: 6px auto auto 6px; }
.game-item-catalog-picker .mail-item-picker-row { position: relative; }
.game-item-catalog-picker .mail-item-picker-status { text-align: left; font-size: 0.9375rem; white-space: normal; }
@media (max-width: 950px) {
  .game-item-picker-selection { width: 290px; flex-basis: 290px; padding: 10px; }
  .game-item-picker-body { gap: 8px; }
}
@media (max-width: 600px) {
  .game-item-picker-body { flex-direction: column; }
  .game-item-picker-browser { flex: 1 1 50%; min-height: 130px; }
  .game-item-picker-selection { width: 100%; flex: 1 1 45%; }
  .game-item-picker-selection > small { display: none; }
  .modal-root:has(.game-item-picker-attributes) .modal-footer > button { flex: 1 1 calc(50% - 8px); }
  .modal-root:has(.game-item-picker-attributes) .modal-footer > .primary-button { flex-basis: 100%; }
}
@media (max-height: 520px) {
  .modal-root[data-size="workspace"]:has(.game-item-catalog-picker) { padding: 6px; }
  .modal-root[data-size="workspace"]:has(.game-item-catalog-picker) .modal-card { width: calc(100vw - 12px); height: calc(100vh - 12px); }
  .modal-root[data-size="workspace"]:has(.game-item-catalog-picker) .modal-header { min-height: 44px; padding: 6px 14px; }
  .modal-root[data-size="workspace"]:has(.game-item-catalog-picker) .modal-header h2 { font-size: 1.1875rem; font-weight: 700; }
  .modal-root[data-size="workspace"]:has(.game-item-catalog-picker) .panel-kicker { display: none; }
  .modal-root[data-size="workspace"]:has(.game-item-catalog-picker) .modal-body { padding: 8px 12px; }
  .modal-root[data-size="workspace"]:has(.game-item-catalog-picker) .modal-footer { min-height: 50px; padding: 5px 12px; }
  .game-item-catalog-picker .mail-item-picker-filters { grid-template-columns: minmax(100px, .65fr) minmax(140px, 1.3fr) minmax(100px, .6fr) minmax(120px, 1fr); gap: 8px; }
  .game-item-catalog-picker .mail-item-catalog-field { width: 100%; }
  .game-item-catalog-picker .mail-item-picker-filters .field { gap: 3px; }
  .game-item-catalog-picker .mail-item-picker-filters input,
  .game-item-catalog-picker .mail-item-picker-filters select,
  .game-item-catalog-picker .remote-search-select-trigger { height: 36px; }
  .game-item-picker-selection { gap: 6px; padding: 8px; }
  .game-item-picker-selection > small { display: none; }
  .game-item-picker-selected-row > button { padding: 8px; }
  .game-item-picker-field-grid { gap: 8px; }
  .modal-root:has(.game-item-picker-attributes) { padding: 6px; }
  .modal-root:has(.game-item-picker-attributes) .modal-card { max-height: calc(100dvh - 12px); }
  .modal-root:has(.game-item-picker-attributes) .modal-header { min-height: 44px; padding: 6px 14px; }
  .modal-root:has(.game-item-picker-attributes) .panel-kicker { display: none; }
  .modal-root:has(.game-item-picker-attributes) .modal-body { padding: 10px 14px; }
  .modal-root:has(.game-item-picker-attributes) .modal-footer { padding: 6px 14px; }
}
/* Vùng picker chỉ dùng hai face Inter hiện hành, không kế thừa weight legacy. */
.modal-root:has(.game-item-catalog-picker, .game-item-picker-attributes) { font-family: Inter, sans-serif; font-weight: 400; }
.modal-root:has(.game-item-catalog-picker, .game-item-picker-attributes) :is(input, select, textarea, label, small, span, p) { font-family: Inter, sans-serif; font-weight: 400; }
.modal-root:has(.game-item-catalog-picker, .game-item-picker-attributes) :is(button, strong, h2) { font-family: Inter, sans-serif; font-weight: 700; }
.character-manager { display: flex; flex-direction: column; gap: 16px; height: min(760px, 76vh); min-height: 400px; }
.character-toolbar, .character-paging, .character-list-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.character-toolbar h3, .character-summary h3 { margin: 4px 0 8px; }
.character-toolbar > button { flex-shrink: 0; white-space: nowrap; }
.modal-root[data-size="workspace"] .modal-body:has(> .character-manager) { overflow: auto; }
.character-toolbar p, .character-summary p { margin: 0 0 6px; overflow-wrap: anywhere; }
.character-layout { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(250px, 30%) minmax(0, 1fr); gap: 18px; }
.character-directory, .character-detail { display: flex; flex-direction: column; min-height: 0; min-width: 0; gap: 12px; }
.character-role-list, .character-data-scroll { flex: 1; min-height: 0; overflow: auto; border: 1px solid var(--dashboard-border); border-radius: 10px; }
.character-role { display: flex; flex-direction: column; gap: 6px; width: 100%; height: auto; min-height: 80px; padding: 14px; text-align: left; border: 1px solid transparent; border-bottom-color: var(--dashboard-border); border-radius: 0; color: inherit; background: transparent; overflow-wrap: anywhere; }
.character-role span { font-size: 0.9375rem; }
.character-role.active, .character-record.is-selected { background: rgba(53, 136, 245, .14); border-color: var(--admin-primary); }
.character-summary { padding: 14px; background: rgba(53, 136, 245, .08); border-radius: 10px; }
.character-actions, .character-tabs, .character-delete-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.character-tabs .active { color: var(--admin-on-accent); background: var(--admin-primary); }
.character-list-toolbar { flex-wrap: wrap; }
.character-list-toolbar label { display: flex; align-items: center; gap: 8px; }
.character-record { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid transparent; border-bottom-color: var(--dashboard-border); }
.character-record-content { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; height: auto; min-height: 66px; padding: 4px; border: 0; background: transparent; color: inherit; text-align: left; white-space: normal; }
.character-record-content > span { display: flex; flex-direction: column; gap: 7px; overflow-wrap: anywhere; min-width: 0; }
.character-record-content canvas { width: 48px; height: 48px; flex: 0 0 48px; }
.character-record-content strong { font-weight: 700; }
.character-record-content span span, .character-status, .character-paging span { font-size: 0.9375rem; }
.character-status { margin: 0; min-height: 20px; }
.character-empty { padding: 20px; }
.character-edit-form { display: grid; gap: 16px; }
.character-edit-form input, .character-edit-form select { min-height: 48px; }
.character-edit-form p { margin: 4px 0 0; }
.character-record-json { max-height: 60vh; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; font-family: Inter, sans-serif; }
@media (max-width: 760px) {
  .character-manager { height: auto; min-height: 0; }
  .character-layout { grid-template-columns: minmax(0, 1fr); }
  .character-role-list { min-height: 180px; max-height: 240px; }
  .character-data-scroll { min-height: 260px; max-height: 420px; }
  .character-toolbar { align-items: flex-start; }
}

.player-log-manager { display:flex; flex-direction:column; gap:16px; min-height:0; height:100%; }
.player-log-toolbar,.player-log-actions,.player-log-paging { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.player-log-toolbar h3,.player-log-toolbar p { margin:4px 0; }
.player-log-filters { display:grid; grid-template-columns:1fr 140px 160px 1fr 1fr auto; align-items:end; gap:12px; }
.player-log-filters label { display:flex; flex-direction:column; gap:6px; min-width:0; }
.player-log-actions { justify-content:flex-start; }
.player-log-actions [data-selected] { margin-right:auto; }
.player-log-rows { flex:1; min-height:220px; overflow:auto; overscroll-behavior:contain; }
.player-log-row { display:flex; gap:14px; align-items:center; padding:12px 16px; margin:0 0 10px; min-height:102px; border:1px solid var(--border-color,var(--dashboard-border)); border-left:5px solid var(--dashboard-border); border-radius:10px; }
.player-log-row[data-category="gain"] { border-left-color:var(--dashboard-border); }.player-log-row[data-category="spend"] { border-left-color:var(--dashboard-border); }.player-log-row[data-category="exchange"] { border-left-color:var(--dashboard-border); }.player-log-row[data-category="equipment"] { border-left-color:var(--dashboard-border); }.player-log-row[data-category="mail"] { border-left-color:var(--dashboard-border); }.player-log-row[data-category="admin"] { border-left-color:var(--dashboard-border); }
.player-log-row.is-selected { background:var(--bs-primary-bg-subtle,var(--dashboard-surface)); }
.player-log-record { display:flex; flex:1; min-width:0; flex-direction:column; gap:7px; min-height:76px; background:transparent; border:0; box-shadow: none; color:inherit; padding:0; text-align:left; white-space:normal; overflow-wrap:anywhere; }
.player-log-meta { font-size:0.9375rem; opacity:.8; }.player-log-record strong { font-size:1.1875rem; }
.player-log-empty { padding:60px 20px; text-align:center; }
.player-log-detail { max-height:65vh; overflow:auto; }.player-log-change { white-space:pre-wrap; overflow-wrap:anywhere; padding:12px 0; border-bottom:1px solid var(--border-color,var(--dashboard-border)); }.player-log-event-id { overflow-wrap:anywhere; display:block; margin-top:16px; }
@media (max-width:1100px) { .player-log-filters { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media (max-width:650px) { .player-log-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }.player-log-rows { min-height:350px; } }

.modal-root[data-size="workspace"] .modal-body:has(> .player-log-manager) { overflow:auto; }
.modal-root:has(.player-log-manager) .modal-footer:empty { display:none; }
@media (max-height:600px) { .player-log-manager { min-height:560px; }.player-log-toolbar { flex-shrink:0; } }

/* Contract chung cho mọi checkbox, kể cả input được tạo động không có class
   Bootstrap. Đặt sau các field/manager để padding, background và focus của text
   input không che trạng thái. Checked/indeterminate là nguồn duy nhất cho dấu;
   focus chỉ thêm viền bên ngoài, không đổi nền hay chờ blur mới hiện dấu tích. */
:root input[type="checkbox"] {
  appearance: none;
  display: inline-block;
  box-sizing: border-box;
  flex: 0 0 auto;
  width: 22px;
  min-width: 22px;
  max-width: 22px;
  height: 22px;
  min-height: 22px;
  max-height: 22px;
  margin: 0;
  padding: 0;
  float: none;
  vertical-align: middle;
  border: 2px solid var(--dashboard-border);
  border-radius: 5px;
  background: var(--dashboard-surface) none center / 18px 18px no-repeat;
  box-shadow: none;
  outline: none;
  opacity: 1;
  cursor: pointer;
}
:root input[type="checkbox"]:checked,
:root input[type="checkbox"]:indeterminate {
  border-color: var(--admin-primary);
  background-color: var(--admin-primary);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3 8.5 6.5 12 13 4.5' fill='none' stroke='white' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
:root input[type="checkbox"]:indeterminate {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 8h8' stroke='white' stroke-width='2.2' stroke-linecap='round'/%3E%3C/svg%3E");
}
:root input[type="checkbox"]:hover:not(:disabled) { border-color: var(--dashboard-border); }
:root input[type="checkbox"]:focus { box-shadow: none; }
:root input[type="checkbox"]:focus-visible { outline: 2px solid #93c5fd; outline-offset: 3px; }
:root input[type="checkbox"]:disabled { cursor: not-allowed; opacity: .5; }
:root label:has(> input[type="checkbox"]) { cursor: pointer; }
:root label:has(> input[type="checkbox"]:disabled) { cursor: not-allowed; }

/* Giữ ngữ nghĩa công tắc ở PVE/Title/Error Logs: nút nằm trái khi tắt,
   nằm phải khi bật. Dùng cùng màu, focus và disabled của checkbox thường. */
:root :is(.form-switch input[type="checkbox"], input[type="checkbox"][role="switch"]) {
  width: 42px;
  min-width: 42px;
  max-width: 42px;
  border-radius: 999px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='%23536780'/%3E%3C/svg%3E");
  background-size: 16px 16px;
  background-position: left 1px center;
}
:root :is(.form-switch input[type="checkbox"], input[type="checkbox"][role="switch"]):checked {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='6' fill='white'/%3E%3C/svg%3E");
  background-position: right 1px center;
}

/* World Boss: body cuộn độc lập, footer luôn nằm ngoài vùng nội dung. */
.world-boss-admin{display:flex;flex-direction:column;height:100%;min-height:0;gap:8px}.world-boss-admin-scroll{flex:1;min-height:0;overflow:auto;padding:0 12px 24px 0}.world-boss-admin-line{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:8px 0}.world-boss-admin-line h3{margin-right:auto}.world-boss-admin-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;height:100%;min-height:0;overflow:auto;gap:16px;padding:0 8px 12px 0;font-family: Inter, sans-serif}.world-boss-admin-form .field{display:flex;flex-direction:column;min-width:0;gap:8px;font-weight: 700}.world-boss-admin-form .field small{font-weight:400}.world-boss-admin-rewards{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}.world-boss-admin-reward{display:flex;align-items:center;gap:8px;min-height:72px}.world-boss-admin-reward canvas{flex:0 0 54px}.world-boss-admin-reward span{flex:1;overflow-wrap:anywhere}
.modal-root[data-size="payment-settings"] .modal-card { width: min(1100px, calc(100vw - 32px)); height: calc(100vh - 32px); max-height: 800px; }
.modal-root[data-size="payment-settings"] .modal-body { display: flex; overflow: hidden; padding: 16px; }
.card-payment-settings { font-family: Inter, sans-serif; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: auto auto auto minmax(0, 1fr); gap: 10px 20px; width: 100%; min-height: 0; }
.card-payment-settings > .form-check { align-self: center; }
.card-payment-settings > .row, .card-payment-settings > p, .card-payment-settings-scroll { grid-column: 1 / -1; }
.card-payment-settings > .row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px 20px; margin: 0; }
.card-payment-settings > .row > label { width: 100%; margin: 0; padding: 0; }
.card-payment-settings-scroll { min-height: 0; overflow: auto; }
.card-payment-settings :is(th, td):first-child { width: 48px; text-align: center; }
.card-payment-settings th:nth-child(2) { width: 115px; }
.card-payment-settings td:nth-child(3) { width: 130px; }
.card-payment-settings td:nth-child(4) { min-width: 260px; }

/* Density chung: chữ lớn không kéo giãn canvas/icon dữ liệu và không phóng to
   bằng transform. Workspace cao theo viewport; chỉ phần nội dung được cuộn. */
.sidebar-brand { margin-bottom: 1rem; flex: 0 0 auto; }
.sidebar-context { flex: 0 0 auto; }
.sidebar .tab-list { flex: 1 1 auto; flex-wrap: nowrap; min-height: 0; overflow: hidden auto; overscroll-behavior: contain; touch-action: none; }
.sidebar .tab-button { flex: 0 0 auto; }
.brand-mark { color: var(--admin-on-accent); background: var(--admin-primary); }
.panel, .card.panel { box-shadow: var(--admin-shadow); }
.function-card { transition: border-color .15s ease, background-color .15s ease; }
.function-card:hover { border-color: #a8bedc; }
.function-grid { touch-action: pan-y; }
.event-manager-list-item.selected, .title-admin-list-item.selected, .museum-admin-list-row.selected {
  border-color: var(--admin-primary); background: var(--admin-primary-soft); box-shadow: inset 3px 0 var(--admin-primary);
}
.section-heading h1 { font-size: clamp(1.75rem, 2vw, 2.25rem); line-height: 1.25; }
.function-copy h2, .panel-header h2, .modal-header h2 { line-height: 1.35; }
.function-copy p { font-size: .9375rem; line-height: 1.6; }
.function-contracts { flex-wrap: wrap; }
.primary-button, .secondary-button, .danger-button, .btn.primary-button, .btn.secondary-button, .btn.danger-button {
  height: auto; min-height: var(--control-height); padding: .65rem 1rem; font-size: .9375rem; line-height: 1.35;
}
.modal-close { width: 2.75rem; height: 2.75rem; min-height: 2.75rem; flex: 0 0 auto; font-size: 1.375rem; }
.modal-card { width: min(42rem, calc(100vw - 2rem)); border-radius: .875rem; box-shadow: 0 20px 64px rgb(32 51 77 / 18%); }
.modal-root[data-size="workspace"] .modal-card { width: min(104rem, calc(100vw - 2rem)); height: calc(100dvh - 2rem); border-radius: .875rem; }
.modal-header, .modal-footer { padding: 1rem 1.25rem; min-height: 4.5rem; gap: 1rem; }
.modal-header > div { min-width: 0; }
.modal-header h2 { overflow-wrap: anywhere; }
.modal-root[data-size="table-cell"] .modal-card { width: min(34rem, calc(100vw - 1.5rem)); }
.modal-root[data-size="table-cell"] .modal-header h2 { font-size: 1.25rem; }
.modal-root[data-size="table-cell"] .modal-footer > button { min-height: 2.75rem; font-size: .9375rem; }
.field, .form-label, .table-cell-form .typed-value-type, .table-cell-form .typed-value-field { font-size: .875rem; line-height: 1.5; }
.field :is(input, select, textarea), .form-control, .form-select,
.typed-value-type select, .typed-value-control :is(input, select, textarea) { font-size: 1rem; min-height: 2.75rem; }
.typed-value-editor { grid-template-columns: 8rem minmax(0, 1fr); }
.table-row-field .typed-value-editor { grid-template-columns: 7rem minmax(0, 1fr); align-items: end; }
.table-cell-form .typed-value-editor { grid-template-columns: 7rem minmax(0, 1fr); }
.data-table { font-size: .9375rem; }
.data-table th { height: 2.875rem; padding-inline: .875rem; font-weight: 700; }
.data-table td { height: 3rem; }
.table-cell-button { font-size: inherit; min-height: 2.75rem; padding-inline: .875rem; }
.table-editor-toolbar, .table-editor-footer { gap: .75rem; flex-wrap: wrap; }
.table-page-button { min-height: 2.5rem; min-width: 2.5rem; }
.realm-policy-rewards { grid-template-columns: repeat(auto-fit, minmax(min(100%, 9rem), 1fr)); }
.realm-policy-rank { grid-template-columns: repeat(auto-fit, minmax(min(100%, 8rem), 1fr)); }
.realm-policy-card input:not([type="checkbox"]) { min-height: 2.75rem; font-size: 1rem; }
.remote-search-select-trigger, .remote-search-select-search { min-height: 2.75rem; }
.admin-login-intro { background: linear-gradient(140deg, #e3efff, #edf7ff 60%, #f4f8fc); }
.admin-login-intro::before { opacity: .1; }
.admin-login-intro::after { display: none; }
.admin-login-form-region { background: var(--dashboard-surface); }
.admin-login-form { width: min(100%, 29rem); }
.admin-login-message h1 { line-height: 1.08; letter-spacing: -.04em; }
.admin-login-form .form-control { height: 3.25rem; font-size: 1rem; }
.admin-login-form .btn.primary-button { height: auto; min-height: 3.25rem; }
.admin-login-seal { color: var(--admin-primary-strong); border-color: var(--dashboard-border); background: var(--admin-primary-soft); }
.admin-login-error { color: var(--danger) !important; }

/* Toolbar fixture có vùng riêng; không phủ header/navigation của UI cần đo. */
.admin-dashboard-preview .screen-preview-toolbar { inset: 0 0 auto; max-width: 100%; height: 3rem; justify-content: flex-start; overflow: auto hidden; border-radius: 0; transform: none; }
.admin-dashboard-preview .screen-preview-toolbar > * { flex: 0 0 auto; white-space: nowrap; }
.admin-dashboard-preview > .app-shell, .admin-dashboard-preview > .admin-login-screen { top: 3rem; height: calc(100% - 3rem); }
.admin-dashboard-preview .modal-root { top: 3rem; }
.admin-dashboard-preview .modal-root[data-size="workspace"] .modal-card { height: calc(100dvh - 5rem); }

@media (max-height: 800px) {
  .realm-catalog-heading { padding: .5rem .75rem; gap: .5rem; }
  .realm-catalog-heading .manager-section-label { display: none; }
  .realm-catalog-heading strong { font-size: 1.125rem; }
  .realm-catalog-help { font-size: .8125rem; line-height: 1.4; }
  .modal-root[data-size="workspace"] .modal-header, .modal-root[data-size="workspace"] .modal-footer { min-height: 3.75rem; padding-block: .625rem; }
}

@media (max-width: 991.98px) {
  .app-shell { grid-template-columns: minmax(0, 1fr); }
  .sidebar { width: min(19rem, 86vw); }
  .admin-dashboard-preview .sidebar { top: 3rem; }
  .workspace { padding: 1.25rem; }
  .function-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); }
}
@media (max-width: 600px) {
  .admin-login-screen { grid-auto-rows: max-content; align-content: start; }
  .admin-login-intro { gap: 0; padding: 1.25rem; }
  .admin-login-message { display: none; }
  .admin-login-form-region { padding: 1.75rem 1.25rem; }
  .workspace { padding: 1rem; }
  .topbar { gap: .5rem; }
  .connection-pill { gap: .375rem; }
  .modal-root { padding: .5rem; }
  .modal-root[data-size="workspace"] .modal-card { width: calc(100vw - 1rem); height: calc(100dvh - 1rem); }
  .modal-header, .modal-footer { padding: .75rem; }
  .modal-footer { flex-wrap: wrap; }
  .modal-root[data-size="workspace"] .modal-body { padding: .75rem; }
  .table-row-field .typed-value-editor { grid-template-columns: 6rem minmax(0, 1fr); }
  .function-card { padding: 1.125rem; }
}
@media (prefers-reduced-motion: reduce) {
  .function-card, .sidebar { transition: none; }
}

/* Lịch sử nạp: filter/footer cố định, chỉ bảng cuộn; modal dùng palette chung. */
.recharge-log-manager { display:flex; flex-direction:column; gap:16px; height:100%; min-height:0; font-family:Inter,sans-serif; }
.recharge-log-manager header, .recharge-log-manager footer { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.recharge-log-manager header p { margin:4px 0 0; color:var(--muted); font-size:.875rem; }
.recharge-log-manager form { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px 16px; }
.recharge-log-manager form .field { min-width:0; }
.recharge-log-manager form input, .recharge-log-manager form select { min-width:0; width:100%; }
.recharge-log-scroll { flex:1; min-height:160px; overflow:auto; overscroll-behavior:contain; }
.recharge-log-scroll table { min-width:1120px; margin:0; }
.recharge-log-scroll th { position:sticky; top:0; z-index:1; background:var(--bs-body-bg); white-space:nowrap; }
.recharge-log-scroll td { padding:12px; white-space:nowrap; }
.recharge-log-scroll small { display:block; color:var(--muted); margin-top:4px; }
.recharge-log-scroll button { font-size:.875rem; }
.recharge-log-scroll tr[data-status="succeeded"] td:last-child { color:var(--bs-success-text-emphasis); }
.recharge-log-scroll tr[data-status="failed"] td:last-child { color:var(--bs-danger-text-emphasis); }
.recharge-log-scroll > p { padding:24px; text-align:center; }
.recharge-log-detail { display:grid; grid-template-columns:auto minmax(0,1fr); gap:12px 24px; max-height:65vh; overflow:auto; }
.recharge-log-detail dd { margin:0; overflow-wrap:anywhere; }
.modal-root:has(.recharge-log-manager) > .modal-card > .modal-footer:empty { display:none; }
@media (max-width:1000px) { .recharge-log-manager form { grid-template-columns:repeat(2,minmax(0,1fr)); } }

/* Cây quyền co trong modal; chỉ thân cây cuộn, footer luôn nhìn thấy. */
.modal-root[data-size="permissions"] > .modal-card { width:min(920px,calc(100vw - 32px)); height:min(800px,calc(100dvh - 32px)); }
.modal-root[data-size="permissions"] .modal-body { overflow:hidden; min-height:0; display:flex; }
.account-permissions-editor { display:flex; flex-direction:column; gap:14px; min-height:0; width:100%; }
.account-permissions-editor header { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.account-permissions-editor header strong { overflow-wrap:anywhere; }
.account-permissions-editor header p,.permission-note { margin:5px 0 0; color:var(--muted); font-size:0.9375rem; }
.account-permissions-editor .panel-badge { flex-shrink:0; }
.permission-toolbar { display:flex; gap:8px; }
.permission-tree { flex:1; min-height:140px; overflow:auto; overscroll-behavior:contain; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; align-content:start; touch-action:none; }
.permission-group { min-width:0; margin:0; border:1px solid var(--dashboard-border); border-radius:10px; padding:10px; }
.permission-group-title,.permission-leaf { display:flex; align-items:center; gap:10px; min-height:40px; padding:7px 8px; cursor:pointer; }
.permission-group-title { border-bottom:1px solid var(--dashboard-border); margin-bottom:5px; }
.permission-leaf { padding-left:20px; border-radius:6px; }
.permission-leaf:has(input:checked) { background:var(--dashboard-surface-raised); }
.permission-leaf:has(input:disabled) { opacity:0.6; cursor:default; }
.permission-error { color:var(--bs-danger); margin:0; }
.account-actions .btn + .btn { margin-left:8px; }
.admin-password-form { display:grid; gap:18px; }
.admin-password-form p { margin:0; }
@media(max-width:650px) { .permission-tree { grid-template-columns:1fr; } .account-permissions-editor header { align-items:flex-start; flex-direction:column; gap:8px; } }
