/* 운영자 관리 (1029, 일꾼 OPS). js/ops.js 전용. tokens.css 의 쓰는 값만 씁니다 */
.ops { min-width: 0; }
.ops-head .body-2 { margin: 4px 0 0; }
.ops-tabs { display: flex; gap: 4px; margin: 0 0 var(--sp-5); padding: 4px; background: var(--surface-sunken); border-radius: var(--r-md); overflow-x: auto; scrollbar-width: none; }
.ops-tabs::-webkit-scrollbar { display: none; }
.ops-tabs a { flex: 0 0 auto; padding: 8px 16px; border-radius: var(--r-sm); font-size: var(--fs-sm); font-weight: var(--fw-semibold); color: var(--text-2); text-decoration: none; white-space: nowrap; }
.ops-tabs a[aria-current] { background: var(--surface); color: var(--text); box-shadow: var(--shadow-1); }

.ops-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); gap: var(--sp-3); margin-bottom: var(--sp-4); }
.ops-stat { display: flex; flex-direction: column; gap: 4px; padding: var(--sp-4) var(--sp-5); background: var(--surface); border-radius: var(--r-lg); box-shadow: var(--shadow-1); color: var(--text); text-decoration: none; min-width: 0; border: 1px solid transparent; transition: border-color var(--dur-fast) var(--ease); }
a.ops-stat:hover { border-color: var(--line-strong); }
.ops-stat-l { font-size: var(--fs-sm); color: var(--text-2); font-weight: var(--fw-medium); }
.ops-stat-v { font-family: var(--font-num); font-size: var(--fs-xl); font-weight: var(--fw-bold); letter-spacing: var(--tracking-tight); overflow-wrap: anywhere; }
.ops-stat small { font-size: var(--fs-xs); color: var(--text-3); line-height: 1.45; }
.ops-stat.is-ok .ops-stat-v { color: var(--green-700); }
.ops-stat.is-bad .ops-stat-v { color: var(--danger-text); }
.ops-stat.is-brand .ops-stat-v { color: var(--brand-text); }

.ops-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-4); margin-bottom: var(--sp-4); }
.ops-two > .card + .card { margin-top: 0; }
.ops-card { padding: var(--sp-2) var(--sp-4) var(--sp-4); }
.ops-empty { padding: var(--sp-8) var(--sp-4); text-align: center; }
.ops-empty .btn { margin-top: var(--sp-3); }

.ops-bars { display: grid; grid-template-columns: repeat(14, minmax(0, 1fr)); gap: 4px; height: 160px; align-items: end; }
.ops-bar { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; gap: 4px; min-width: 0; }
.ops-bar i { display: block; width: 100%; max-width: 22px; min-height: 2px; background: var(--brand); border-radius: 4px 4px 0 0; }
.ops-bar-n { font-size: 11px; color: var(--text-2); font-family: var(--font-num); }
.ops-bar-d { font-size: 11px; color: var(--text-3); font-family: var(--font-num); }

.ops-list { list-style: none; margin: 0; padding: 0; }
.ops-list li { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-3) 0; border-bottom: 1px solid var(--line); flex-wrap: wrap; min-width: 0; }
.ops-list li:last-child { border-bottom: 0; }
.ops-list .grow { flex: 1 1 200px; min-width: 0; }
.ops-list .body-2 { margin: 4px 0 0; overflow-wrap: anywhere; }

.ops-tools { display: flex; gap: var(--sp-3); align-items: center; flex-wrap: wrap; margin-bottom: var(--sp-3); }
.ops-search { display: flex; gap: var(--sp-2); flex: 1 1 320px; min-width: 0; }
.ops-search .input { flex: 1; min-width: 0; }
.ops-exp { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.ops-pills { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: var(--sp-3); }
.ops-pill { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 14px; border-radius: var(--r-pill); background: var(--surface); border: 1px solid var(--line-strong); color: var(--text-2); font-size: var(--fs-sm); font-weight: var(--fw-semibold); text-decoration: none; cursor: pointer; font-family: inherit; }
.ops-pill span { font-family: var(--font-num); color: var(--text-3); font-weight: var(--fw-medium); }
.ops-pill[aria-current] { background: var(--ink); border-color: var(--ink); color: var(--text-on-ink); }
.ops-pill[aria-current] span { color: var(--text-on-ink); opacity: .75; }

.ops-tablewrap { overflow-x: auto; }
.ops-table { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.ops-table th { text-align: left; font-weight: var(--fw-semibold); color: var(--text-3); font-size: var(--fs-xs); padding: 10px 8px; border-bottom: 1px solid var(--line-strong); white-space: nowrap; }
.ops-table td { padding: 12px 8px; border-bottom: 1px solid var(--line); vertical-align: top; color: var(--text); }
.ops-table .n { text-align: right; font-family: var(--font-num); white-space: nowrap; }
.ops-table tr[data-ops-open] { cursor: pointer; }
.ops-table tbody tr[data-ops-open]:hover td { background: var(--surface-2); }
.ops-table tr[data-ops-open]:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
.ops-sub { display: block; color: var(--text-3); font-size: var(--fs-xs); margin-top: 2px; }
.ops-table code, .ops-kv code { font-size: var(--fs-xs); }
.ops-pager { display: flex; align-items: center; justify-content: center; gap: var(--sp-3); margin-top: var(--sp-3); text-align: center; }
.ops-link { background: none; border: 0; padding: 0; color: var(--brand-text); font: inherit; font-weight: var(--fw-semibold); cursor: pointer; text-align: left; }

.ops-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); }
.ops-row2 .field + .field { margin-top: 0; }
.ops-row2 + .field, .ops-row2 + .ops-row2 { margin-top: var(--sp-4); }
.ops-check { display: flex; align-items: center; gap: 8px; margin-top: var(--sp-3); font-size: var(--fs-sm); color: var(--text-2); }

/* 자세히: PC 는 오른쪽 서랍, 폰은 한 화면 */
.ops-dim { position: fixed; inset: 0; background: rgba(15, 18, 22, .38); z-index: 60; }
.ops-dim.is-top { z-index: 70; }
.ops-drawer { position: fixed; top: 0; right: 0; bottom: 0; width: min(560px, 100%); background: var(--surface); box-shadow: var(--shadow-3); z-index: 61; overflow-y: auto; padding: var(--sp-5) var(--sp-6) var(--sp-10); overscroll-behavior: contain; }
.ops-drawer-head { display: flex; justify-content: flex-end; position: sticky; top: calc(-1 * var(--sp-5)); background: var(--surface); margin: calc(-1 * var(--sp-5)) calc(-1 * var(--sp-6)) var(--sp-2); padding: var(--sp-3) var(--sp-4); z-index: 1; }
.ops-mail { margin: 4px 0 0; font-weight: var(--fw-semibold); overflow-wrap: anywhere; }
.ops-kv { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-3) var(--sp-4); margin: var(--sp-5) 0; }
.ops-kv div { min-width: 0; }
.ops-kv dt { font-size: var(--fs-xs); color: var(--text-3); }
.ops-kv dd { margin: 2px 0 0; font-weight: var(--fw-semibold); overflow-wrap: anywhere; }
.ops-acts { display: flex; flex-wrap: wrap; gap: var(--sp-2); padding: var(--sp-4) 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.ops-acts .caption { width: 100%; margin: 0; }
.ops-warn { margin-top: var(--sp-3); padding: var(--sp-3) var(--sp-4); border-radius: var(--r-md); background: var(--danger-soft); color: var(--danger-text); font-size: var(--fs-sm); }
.ops-memo { width: 100%; margin-top: var(--sp-2); resize: vertical; }
.ops-drawer .h3.mt-6 { margin-top: var(--sp-6); margin-bottom: var(--sp-2); }

/* 확인 창 */
.ops-dlg { position: fixed; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(460px, calc(100% - 32px)); max-height: calc(100% - 32px); overflow-y: auto; background: var(--surface); border-radius: var(--r-xl); box-shadow: var(--shadow-3); padding: var(--sp-6); z-index: 71; }
.ops-dlg .body-2 { margin-bottom: 0; }
.ops-word { color: var(--danger-text); }
.ops-dlg-foot { display: flex; justify-content: flex-end; gap: var(--sp-2); margin-top: var(--sp-3); }
.ops-dlg .textarea { width: 100%; resize: vertical; }
.ops-dlg .btn:disabled { opacity: .45; cursor: not-allowed; }

@media (max-width: 1023px) { .ops-two { grid-template-columns: 1fr; } }
@media (max-width: 767px) {
  .ops-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-2); }
  .ops-stat { padding: var(--sp-3) var(--sp-4); }
  .ops-stat-v { font-size: var(--fs-lg); }
  .ops-card { padding: var(--sp-2) var(--sp-3) var(--sp-3); }
  .ops-search { flex-basis: 100%; }
  .ops-exp { width: 100%; }
  .ops-exp .btn { flex: 1 1 auto; }
  /* 표를 카드로 */
  .ops-tablewrap { overflow: visible; }
  .ops-table thead { display: none; }
  .ops-table, .ops-table tbody, .ops-table tr, .ops-table td { display: block; width: 100%; }
  .ops-table tr { padding: var(--sp-3) 0; border-bottom: 1px solid var(--line); }
  .ops-table td { display: flex; justify-content: space-between; gap: var(--sp-3); padding: 3px 0; border: 0; text-align: right; min-width: 0; overflow-wrap: anywhere; }
  .ops-table td::before { content: attr(data-l); color: var(--text-3); font-size: var(--fs-xs); flex: 0 0 auto; text-align: left; }
  .ops-table td.t { display: block; text-align: left; font-size: var(--fs-md); padding-bottom: 6px; }
  .ops-table td.t::before { display: none; }
  .ops-table td:empty { display: none; }
  .ops-table .ops-sub { display: inline; margin-left: 6px; }
  .ops-table td.t .ops-sub { display: block; margin-left: 0; }
  .ops-drawer { width: 100%; padding: var(--sp-4) var(--sp-4) calc(var(--tabbar-h) + var(--sp-8)); z-index: 61; }
  .ops-drawer-head { top: calc(-1 * var(--sp-4)); margin: calc(-1 * var(--sp-4)) calc(-1 * var(--sp-4)) var(--sp-2); }
  .ops-kv { grid-template-columns: 1fr 1fr; }
  .ops-row2 { grid-template-columns: 1fr; }
  .ops-row2 .field + .field { margin-top: var(--sp-4); }
  .ops-acts .btn { flex: 1 1 calc(50% - 8px); }
  .ops-bars { height: 120px; }
}
