/* 운영 콘솔(/ops, 90번 §6) — Crest 시맨틱 토큰만. 흰 바탕, 카드는 안쪽 선 */
body.ops { margin: 0; background: var(--background-alternative); color: var(--label-normal); font-family: var(--font-sans); font-size: 15px; line-height: 1.5; }
.ops-top { display: flex; align-items: center; justify-content: space-between; gap: var(--space-12); padding: var(--space-12) var(--space-20); background: var(--background-normal); box-shadow: inset 0 -1px 0 var(--line-normal-alternative); }
.ops-title { font-weight: 700; color: var(--label-strong); text-decoration: none; }
.ops-me { color: var(--label-alternative); text-decoration: none; }
.ops-me:hover { color: var(--label-normal); }
.ops-who { display: flex; align-items: center; gap: var(--space-8); margin: 0; color: var(--label-alternative); font-size: 14px; }
.ops-main { max-width: 1040px; margin: 0 auto; padding: var(--space-24) var(--space-16) var(--space-48); }
.ops-main h1 { font-size: 22px; margin: 0 0 var(--space-12); color: var(--label-strong); display: flex; align-items: center; gap: var(--space-8); flex-wrap: wrap; }
.ops-main h2 { font-size: 17px; margin: 0 0 var(--space-8); color: var(--label-strong); }
.ops-card { background: var(--background-normal); border-radius: var(--radius-12); box-shadow: inset 0 0 0 1px var(--line-normal-alternative); padding: var(--space-20); margin: 0 0 var(--space-16); }
.ops-login { max-width: 380px; margin: var(--space-48) auto; }
.ops-login form { display: grid; gap: var(--space-12); }
.ops-login label { display: grid; gap: var(--space-4); font-size: 14px; color: var(--label-neutral); }
.ops-hint { color: var(--label-alternative); font-size: 14px; margin: 0 0 var(--space-12); }
.ops-input { box-sizing: border-box; height: 36px; padding: 0 var(--space-12); border: 0; border-radius: var(--radius-8); box-shadow: inset 0 0 0 1px var(--line-normal-neutral); background: var(--background-normal); color: var(--label-normal); font: inherit; min-width: 0; flex: 1; }
.ops-input:focus { outline: 2px solid var(--primary-normal); outline-offset: 1px; }
.ops-narrow { flex: 0 0 auto; width: 120px; }
.ops-row { display: flex; align-items: center; gap: var(--space-8); flex-wrap: wrap; margin: 0; }
.ops-table-wrap { overflow-x: auto; background: var(--background-normal); border-radius: var(--radius-12); box-shadow: inset 0 0 0 1px var(--line-normal-alternative); }
.ops-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.ops-table th, .ops-table td { text-align: left; padding: var(--space-12) var(--space-12); box-shadow: inset 0 -1px 0 var(--line-normal-alternative); vertical-align: middle; }
.ops-table th { color: var(--label-alternative); font-weight: 600; white-space: nowrap; }
.ops-table a { color: var(--primary-normal); text-decoration: none; font-weight: 600; }
.ops-state { font-size: 13px; font-weight: 600; padding: 2px var(--space-8); border-radius: var(--radius-6); background: var(--fill-normal); color: var(--label-neutral); }
.ops-state[data-state="active"] { color: var(--status-positive); }
.ops-state[data-state="suspended"] { color: var(--status-negative); }
.ops-state[data-state="off"] { color: var(--label-alternative); }
.ops-msg { padding: var(--space-12) var(--space-12); border-radius: var(--radius-8); background: var(--fill-normal); margin: 0 0 var(--space-16); }
.ops-msg-error { color: var(--status-negative); }
.ops-back a { color: var(--label-alternative); text-decoration: none; font-size: 14px; }
.ops-log { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-6); font-size: 14px; }
.ops-log time { color: var(--label-alternative); margin-right: var(--space-6); }
.ops-dev { position: fixed; right: var(--space-12); bottom: var(--space-12); font-size: 12px; font-weight: 700; color: var(--label-alternative); }
@media (max-width: 640px) {
  .ops-table thead { display: none; }
  .ops-table tr { display: grid; padding: var(--space-8) 0; box-shadow: inset 0 -1px 0 var(--line-normal-alternative); }
  .ops-table td { box-shadow: none; padding: var(--space-4) var(--space-12); }
  .ops-table td[data-label]::before { content: attr(data-label); color: var(--label-alternative); margin-right: var(--space-8); }
  .ops-cell-name { font-weight: 600; }
  .ops-narrow { width: 100%; }
}
/* 화이트라벨 로그인(90번 0-4) — 회사 이름·아이콘 */
.wl-brand { display: flex; align-items: center; gap: var(--space-8); margin: 0 0 var(--space-16); font-size: 17px; color: var(--label-strong); }
.wl-brand img { border-radius: var(--radius-8); object-fit: cover; }
.ops-sub { font-size: 15px; margin: var(--space-16) 0 var(--space-8); color: var(--label-strong); }
.ops-link { word-break: break-all; font-size: 13px; }
