/* T_TASTE_ADMIN_20261006 — 숨은 운영실. 줍고 관리자 표준의 구성을 취향판본 화면 언어(종이·잉크·와인 · 얇은 선 · 둥근 모서리 · Pretendard)로.
   도트 장식은 쓰지 않는다(데이터 화면 · 2026-10-05 디자인 결정). 모든 규칙은 #te-admin / .te-admin-gate 안에서만. */
html.te-admin-open, html.te-admin-open body { overflow: hidden; }

#te-admin, .te-admin-gate {
  --a-bg: #f6f4ef; --a-paper: var(--paper, #fffefa); --a-ink: var(--ink, #2e302b); --a-muted: var(--muted, #7c7c73);
  --a-line: var(--line, #e8e5dd); --a-wine: var(--wine, #822e47); --a-wine-dark: var(--wine-dark, #662139);
  --a-rose: var(--rose, #f4e9e9); --a-sage: var(--sage, #e8ede6); --a-ok: #2f6f52; --a-blue: #3b67c4; --a-amber: #b9771a;
  font-family: var(--sans, "Pretendard", "Noto Sans KR", "Malgun Gothic", sans-serif);
  color: var(--a-ink); font-size: 13px; line-height: 1.55; -webkit-font-smoothing: antialiased;
}
#te-admin *, .te-admin-gate * { box-sizing: border-box; }
#te-admin div, #te-admin p, #te-admin h1, #te-admin h2, #te-admin h3, #te-admin ul, #te-admin table { max-width: none; }

/* 확인 창 */
.te-admin-gate { position: fixed; inset: 0; z-index: 2147483001; display: grid; place-items: center; padding: 16px;
  background: rgba(46, 48, 43, .38); backdrop-filter: blur(2px); }
.te-admin-gate-card { width: min(360px, 100%); background: var(--a-paper); border: 1px solid var(--a-line); border-radius: 16px;
  padding: 28px 24px 20px; box-shadow: var(--shadow, 0 16px 40px #382f2510); text-align: center; }
.te-admin-gate-card img { display: block; margin: 0 auto 10px; }
.te-admin-gate-card h2 { margin: 0; font-size: 19px; font-weight: 600; letter-spacing: -.4px; }
.te-admin-gate-help { margin: 6px 0 16px; color: var(--a-muted); }
.te-admin-code { width: 100%; height: 50px; border: 1px solid var(--a-line); border-radius: 10px; background: #fff; text-align: center;
  font: 600 22px/1 ui-monospace, "SFMono-Regular", Consolas, monospace; letter-spacing: 12px; padding-left: 12px; color: var(--a-ink); }
.te-admin-code:focus { outline: 2px solid var(--a-wine); outline-offset: 1px; border-color: transparent; }
.te-admin-gate-msg { min-height: 20px; margin: 8px 0 4px; color: var(--a-wine); font-size: 12.5px; }
.te-admin-gate-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 6px; }
.te-admin-gate-card.shake { animation: te-admin-shake .28s ease-in-out; }
@keyframes te-admin-shake { 25% { transform: translateX(-5px); } 75% { transform: translateX(5px); } }
@media (prefers-reduced-motion: reduce) { .te-admin-gate-card.shake { animation: none; } }

/* 단추·칩 */
#te-admin .te-admin-btn, .te-admin-gate .te-admin-btn { height: 34px; padding: 0 14px; border: 1px solid var(--a-line); border-radius: 9px;
  background: var(--a-paper); color: var(--a-ink); font: inherit; font-weight: 500; cursor: pointer; white-space: nowrap; }
#te-admin .te-admin-btn:hover, .te-admin-gate .te-admin-btn:hover { border-color: #d6d1c5; background: #fbfaf6; }
#te-admin .te-admin-btn.primary, .te-admin-gate .te-admin-btn.primary { background: var(--a-wine); border-color: var(--a-wine); color: #fff; }
#te-admin .te-admin-btn.primary:hover, .te-admin-gate .te-admin-btn.primary:hover { background: var(--a-wine-dark); }
#te-admin .te-admin-btn:disabled, .te-admin-gate .te-admin-btn:disabled { opacity: .45; cursor: default; }
#te-admin .te-admin-btn.icon { width: 34px; padding: 0; font-size: 20px; line-height: 1; }
#te-admin :focus-visible, .te-admin-gate :focus-visible { outline: 2px solid var(--a-wine); outline-offset: 2px; }
#te-admin .te-admin-chip { display: inline-block; padding: 2px 8px; border-radius: 999px; background: #f1efe9; color: var(--a-muted); font-size: 11.5px; }
#te-admin .te-admin-chip.ok { background: var(--a-sage); color: var(--a-ok); }
#te-admin .te-admin-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 0; }

/* 셸 */
#te-admin { position: fixed; inset: 0; z-index: 2147483000; display: grid; grid-template-columns: 232px minmax(0, 1fr); background: var(--a-bg); }
#te-admin[hidden] { display: none; }
#te-admin .te-admin-nav { display: flex; flex-direction: column; gap: 18px; padding: 26px 16px 18px; background: #f1eee7; border-right: 1px solid var(--a-line); }
#te-admin .te-admin-brand { display: flex; align-items: center; gap: 10px; padding: 0 6px; font-size: 21px; font-weight: 600; letter-spacing: -.8px; }
#te-admin .te-admin-brand small { display: block; margin-top: 3px; font-size: 7.5px; font-weight: 500; letter-spacing: 2.2px; color: var(--a-muted); }
#te-admin .te-admin-nav ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 2px; }
#te-admin .te-admin-nav ul button { width: 100%; height: 40px; padding: 0 12px; border: 0; border-radius: 9px; background: transparent;
  color: var(--a-ink); font: inherit; font-size: 14px; text-align: left; cursor: pointer; }
#te-admin .te-admin-nav ul button:hover { background: #ebe7de; }
#te-admin .te-admin-nav ul button[aria-current="page"] { background: var(--a-rose); color: var(--a-wine-dark); font-weight: 600; }
#te-admin .te-admin-nav-foot { margin-top: auto; display: grid; gap: 10px; }
#te-admin .te-admin-note { margin: 0; color: var(--a-muted); font-size: 11.5px; }
#te-admin .te-admin-main { min-width: 0; overflow: auto; }
#te-admin .te-admin-top { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: center; gap: 16px;
  min-height: 72px; padding: 14px 28px; background: rgba(246, 244, 239, .94); border-bottom: 1px solid var(--a-line); backdrop-filter: blur(6px); }
#te-admin .te-admin-title { margin: 0; font-size: 22px; font-weight: 600; letter-spacing: -.6px; }
#te-admin .te-admin-updated { margin: 2px 0 0; color: var(--a-muted); font-size: 12px; font-variant-numeric: tabular-nums; }
#te-admin .te-admin-top-actions { display: flex; gap: 8px; }
#te-admin .te-admin-content { padding: 24px 28px 48px; display: grid; gap: 16px; outline: 0; }

/* 카드·지표 */
#te-admin .te-admin-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; }
#te-admin .te-admin-kpi { background: var(--a-paper); border: 1px solid var(--a-line); border-radius: 12px; padding: 16px 18px; min-width: 0; }
#te-admin .te-admin-kpi h3 { margin: 0; color: var(--a-muted); font-size: 12.5px; font-weight: 500; }
#te-admin .te-admin-kpi strong { display: block; margin-top: 6px; font-size: 26px; font-weight: 600; letter-spacing: -.6px;
  font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
#te-admin .te-admin-kpi p { margin: 4px 0 0; color: var(--a-muted); font-size: 12px; }
#te-admin .te-admin-kpis.small .te-admin-kpi { padding: 12px 14px; }
#te-admin .te-admin-kpis.small .te-admin-kpi strong { font-size: 20px; }
#te-admin .te-admin-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 16px; align-items: start; }
#te-admin .te-admin-card { background: var(--a-paper); border: 1px solid var(--a-line); border-radius: 12px; padding: 18px 20px; min-width: 0; }
#te-admin .te-admin-card > h2 { margin: 0 0 14px; font-size: 15px; font-weight: 600; letter-spacing: -.3px; }
#te-admin .te-admin-empty { display: grid; justify-items: start; gap: 10px; padding: 18px; border: 1px dashed var(--a-line); border-radius: 10px;
  color: var(--a-muted); background: #fcfbf8; }
#te-admin .te-admin-empty p { margin: 0; }
#te-admin .te-admin-skeleton { display: grid; gap: 12px; }
#te-admin .te-admin-skeleton i { display: block; height: 92px; border-radius: 12px; background: linear-gradient(90deg, #efece5, #f7f5f0, #efece5);
  background-size: 200% 100%; animation: te-admin-wait 1.2s linear infinite; }
@keyframes te-admin-wait { to { background-position: -200% 0; } }
@media (prefers-reduced-motion: reduce) { #te-admin .te-admin-skeleton i { animation: none; } }

/* 막대 그래프(0 기준) · 구성 막대 */
#te-admin .te-admin-bars { margin: 0; }
#te-admin .te-admin-bars .te-admin-bars-max { color: var(--a-muted); font-size: 11.5px; margin-bottom: 6px; }
#te-admin .te-admin-bars-plot { height: 170px; display: flex; align-items: flex-end; gap: 3px; border-bottom: 1px solid #d9d4c8; }
#te-admin .te-admin-bars-plot i { flex: 1 1 0; min-width: 2px; border-radius: 3px 3px 0 0; background: var(--a-wine); opacity: .82; }
#te-admin .te-admin-bars-plot i:hover { opacity: 1; }
#te-admin .te-admin-bars-axis { display: flex; gap: 3px; margin-top: 6px; color: var(--a-muted); font-size: 11px; font-variant-numeric: tabular-nums; }
#te-admin .te-admin-bars-axis span { flex: 1 1 0; white-space: nowrap; overflow: visible; }
#te-admin .te-admin-split-bar { display: flex; height: 14px; border-radius: 7px; overflow: hidden; background: #f1efe9; }
#te-admin .te-admin-split ul { list-style: none; margin: 12px 0 14px; padding: 0; display: grid; gap: 6px; }
#te-admin .te-admin-split li { display: flex; align-items: center; gap: 8px; font-variant-numeric: tabular-nums; }
#te-admin .te-admin-split b { width: 10px; height: 10px; border-radius: 3px; }
#te-admin .c0 { background: var(--a-wine); } #te-admin .c1 { background: var(--a-blue); }
#te-admin .c2 { background: var(--a-amber); } #te-admin .c3 { background: var(--a-muted); }

/* 표 */
#te-admin .te-admin-toolbar { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
#te-admin .te-admin-search, #te-admin .te-admin-select { height: 34px; border: 1px solid var(--a-line); border-radius: 9px; background: var(--a-paper);
  padding: 0 12px; font: inherit; color: var(--a-ink); }
#te-admin .te-admin-search { flex: 1 1 260px; min-width: 0; }
#te-admin .te-admin-count { margin: 0 0 0 auto; color: var(--a-muted); }
#te-admin .te-admin-count strong { color: var(--a-ink); }
#te-admin .te-admin-table-wrap { overflow: auto; max-height: 640px; background: var(--a-paper); border: 1px solid var(--a-line); border-radius: 10px; }
#te-admin .te-admin-card .te-admin-table-wrap { max-height: 420px; }
#te-admin .te-admin-table { width: 100%; border-collapse: collapse; font-size: 12.5px; font-variant-numeric: tabular-nums; }
#te-admin .te-admin-table th { position: sticky; top: 0; z-index: 1; background: #f8f6f1; color: var(--a-muted); font-weight: 500; text-align: left;
  padding: 9px 12px; border-bottom: 1px solid var(--a-line); white-space: nowrap; }
#te-admin .te-admin-table td { padding: 10px 12px; border-bottom: 1px solid #f0ede6; vertical-align: middle; }
#te-admin .te-admin-table tr:last-child td { border-bottom: 0; }
#te-admin .te-admin-table tbody tr[tabindex] { cursor: pointer; }
#te-admin .te-admin-table tbody tr[tabindex]:hover { background: #fbf7f6; }
#te-admin .te-admin-who strong { display: block; font-weight: 600; }
#te-admin .te-admin-who small { color: var(--a-muted); }
#te-admin code { font: 11.5px ui-monospace, "SFMono-Regular", Consolas, monospace; color: var(--a-muted); }
#te-admin .te-admin-pager { display: flex; justify-content: center; align-items: center; gap: 12px; font-variant-numeric: tabular-nums; }

/* 오른쪽 상세 */
#te-admin .te-admin-panel { position: fixed; top: 0; right: 0; bottom: 0; width: min(440px, 100vw); z-index: 3; overflow: auto;
  background: var(--a-paper); border-left: 1px solid var(--a-line); box-shadow: -18px 0 40px #382f2514; padding: 22px 24px 28px; }
#te-admin .te-admin-panel[hidden] { display: none; }
#te-admin .te-admin-panel-head { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; margin-bottom: 14px; }
#te-admin .te-admin-panel h2 { margin: 0; font-size: 20px; font-weight: 600; letter-spacing: -.5px; overflow-wrap: anywhere; }
#te-admin .te-admin-panel-head p { margin: 2px 0 0; color: var(--a-muted); }
#te-admin .te-admin-panel dl { margin: 0 0 16px; }
#te-admin .te-admin-row { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 12px; padding: 10px 0; border-bottom: 1px solid #f0ede6; }
#te-admin .te-admin-row dt { color: var(--a-muted); }
#te-admin .te-admin-row dd { margin: 0; white-space: pre-line; overflow-wrap: anywhere; }

/* 좁은 화면: 메뉴를 위쪽 탭으로 */
@media (max-width: 900px) {
  #te-admin { grid-template-columns: 1fr; grid-template-rows: auto minmax(0, 1fr); }
  #te-admin .te-admin-nav { flex-direction: row; align-items: center; gap: 10px; padding: 10px 12px; border-right: 0; border-bottom: 1px solid var(--a-line);
    overflow-x: auto; }
  #te-admin .te-admin-brand { font-size: 17px; padding: 0; flex: 0 0 auto; }
  #te-admin .te-admin-brand img { width: 28px; height: 28px; }
  #te-admin .te-admin-brand small, #te-admin .te-admin-note { display: none; }
  #te-admin .te-admin-nav ul { display: flex; margin: 0; gap: 4px; flex: 0 0 auto; }
  #te-admin .te-admin-nav ul button { height: 34px; white-space: nowrap; font-size: 13px; }
  #te-admin .te-admin-nav-foot { margin: 0 0 0 auto; flex: 0 0 auto; }
  #te-admin .te-admin-top { padding: 10px 14px; min-height: 60px; }
  #te-admin .te-admin-title { font-size: 19px; }
  #te-admin .te-admin-content { padding: 14px 14px 32px; }
  #te-admin .te-admin-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  #te-admin .te-admin-kpi { padding: 12px 13px; }
  #te-admin .te-admin-kpi strong { font-size: 21px; }
  #te-admin .te-admin-grid { grid-template-columns: minmax(0, 1fr); }
  #te-admin .te-admin-count { margin-left: 0; width: 100%; }
  #te-admin .te-admin-panel { width: 100vw; border-left: 0; }
}
